@dxos/cli 0.8.1 → 0.8.2-main.12df754

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/src/commands/debug/generate.js +2 -2
  2. package/dist/src/commands/debug/generate.js.map +1 -1
  3. package/dist/src/commands/function/upload.d.ts +7 -2
  4. package/dist/src/commands/function/upload.d.ts.map +1 -1
  5. package/dist/src/commands/function/upload.js +104 -97
  6. package/dist/src/commands/function/upload.js.map +1 -1
  7. package/dist/src/commands/function/watch.d.ts +29 -0
  8. package/dist/src/commands/function/watch.d.ts.map +1 -0
  9. package/dist/src/commands/function/watch.js +130 -0
  10. package/dist/src/commands/function/watch.js.map +1 -0
  11. package/dist/src/commands/halo/credential/list.d.ts +1 -0
  12. package/dist/src/commands/halo/credential/list.d.ts.map +1 -1
  13. package/dist/src/commands/halo/credential/list.js +25 -16
  14. package/dist/src/commands/halo/credential/list.js.map +1 -1
  15. package/dist/src/commands/space/list.d.ts +1 -0
  16. package/dist/src/commands/space/list.d.ts.map +1 -1
  17. package/dist/src/commands/space/list.js +7 -3
  18. package/dist/src/commands/space/list.js.map +1 -1
  19. package/dist/src/components/SpaceTable.d.ts.map +1 -1
  20. package/dist/src/components/SpaceTable.js +7 -4
  21. package/dist/src/components/SpaceTable.js.map +1 -1
  22. package/dist/src/help.d.ts.map +1 -1
  23. package/dist/src/help.js +6 -1
  24. package/dist/src/help.js.map +1 -1
  25. package/dist/src/util/function/bundle.d.ts +5 -0
  26. package/dist/src/util/function/bundle.d.ts.map +1 -0
  27. package/dist/src/util/function/bundle.js +13 -0
  28. package/dist/src/util/function/bundle.js.map +1 -0
  29. package/dist/src/util/function/index.d.ts +3 -0
  30. package/dist/src/util/function/index.d.ts.map +1 -0
  31. package/dist/src/util/function/index.js +6 -0
  32. package/dist/src/util/function/index.js.map +1 -0
  33. package/dist/src/util/function/lookup.d.ts +19 -0
  34. package/dist/src/util/function/lookup.d.ts.map +1 -0
  35. package/dist/src/util/function/lookup.js +14 -0
  36. package/dist/src/util/function/lookup.js.map +1 -0
  37. package/dist/src/util/index.d.ts +1 -0
  38. package/dist/src/util/index.d.ts.map +1 -1
  39. package/dist/src/util/index.js +1 -0
  40. package/dist/src/util/index.js.map +1 -1
  41. package/oclif.manifest.json +325 -187
  42. package/package.json +25 -25
@@ -4,7 +4,7 @@
4
4
  import { Flags } from '@oclif/core';
5
5
  import { sleep } from '@dxos/async';
6
6
  import { ARG_SPACE_KEYS } from '@dxos/cli-base';
7
- import { create } from '@dxos/client/echo';
7
+ import { live } from '@dxos/client/echo';
8
8
  import { faker } from '@dxos/random';
9
9
  import { BaseCommand } from '../../base';
10
10
  // TODO(burdon): Testing plugin (vs. debug)?
@@ -22,7 +22,7 @@ class Generate extends BaseCommand {
22
22
  var _a;
23
23
  const space = await this.getSpace(client, this.args.key);
24
24
  for (let i = 0; i < this.flags.objects; i++) {
25
- space === null || space === void 0 ? void 0 : space.db.add(create({ type, title: faker.lorem.word() }));
25
+ space === null || space === void 0 ? void 0 : space.db.add(live({ type, title: faker.lorem.word() }));
26
26
  await space.db.flush();
27
27
  await pause();
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/commands/debug/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../src/commands/debug/generate.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,9 @@ export default class Upload extends BaseCommand<typeof Upload> {
5
5
  static flags: {
6
6
  name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
7
  version: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
- spaceKey: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- objectId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ composerScript: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
9
  functionId: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ spaceKey: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
12
  verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
13
  'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -23,6 +23,11 @@ export default class Upload extends BaseCommand<typeof Upload> {
23
23
  file: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
24
24
  };
25
25
  run(): Promise<any>;
26
+ private _loadScript;
27
+ private _loadFunctionObject;
28
+ private _upload;
29
+ private _updateFunctionObject;
30
+ private _updateComposerScript;
26
31
  private _getNextVersion;
27
32
  }
28
33
  //# sourceMappingURL=upload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../src/commands/function/upload.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,OAAgB,cAAc,UAAQ;IACtC,OAAgB,WAAW,SAA2B;IAEtD,OAAgB,KAAK;;;;;;;;;;;;;;;;MAUnB;IAEF,OAAgB,IAAI;;MAElB;IAEI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YA+GX,eAAe;CAW9B"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../../src/commands/function/upload.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKzC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC5D,OAAgB,cAAc,UAAQ;IACtC,OAAgB,WAAW,SAA2B;IAEtD,OAAgB,KAAK;;;;;;;;;;;;;;;;MAOnB;IAEF,OAAgB,IAAI;;MAElB;IAEI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YAwBX,WAAW;YAgBX,mBAAmB;YAcnB,OAAO;IAsBrB,OAAO,CAAC,qBAAqB;YAgBf,qBAAqB;YA6BrB,eAAe;CAW9B"}
@@ -3,117 +3,117 @@
3
3
  //
4
4
  import { Args, Flags } from '@oclif/core';
5
5
  import fs from 'node:fs';
6
+ import { basename } from 'node:path';
7
+ import path from 'path';
6
8
  import { asyncTimeout } from '@dxos/async';
7
- import { Filter, loadObjectReferences, makeRef } from '@dxos/client/echo';
8
- import { create, getMeta } from '@dxos/client/echo';
9
- import { getUserFunctionUrlInMetadata, incrementSemverPatch, setUserFunctionUrlInMetadata, uploadWorkerFunction, FunctionType, ScriptType, } from '@dxos/functions';
9
+ import { CollectionType } from '@dxos/cli-composer';
10
+ import { makeRef } from '@dxos/client/echo';
11
+ import { live, getMeta } from '@dxos/client/echo';
12
+ import { incrementSemverPatch, setUserFunctionUrlInMetadata, uploadWorkerFunction, makeFunctionUrl, FunctionType, ScriptType, } from '@dxos/functions';
10
13
  import { invariant } from '@dxos/invariant';
11
14
  import { TextType } from '@dxos/schema';
12
15
  import { BaseCommand } from '../../base';
16
+ import { bundleScript, findFunctionByDeploymentId } from '../../util';
13
17
  // TODO: move to cli-composer
14
18
  class Upload extends BaseCommand {
15
19
  async run() {
16
- let scriptContent;
20
+ const { scriptFileContent, bundledScript } = await this._loadScript();
21
+ return this.execWithSpace(async ({ client, space }) => {
22
+ client.addTypes([FunctionType]);
23
+ const identity = client.halo.identity.get();
24
+ invariant(identity, 'Identity not available');
25
+ const existingFunctionObject = await this._loadFunctionObject(space);
26
+ const uploadResult = await this._upload(client, space, existingFunctionObject, bundledScript);
27
+ const functionObject = this._updateFunctionObject(space, existingFunctionObject, uploadResult);
28
+ if (this.flags.composerScript) {
29
+ await this._updateComposerScript(client, space, functionObject, basename(this.args.file), scriptFileContent);
30
+ }
31
+ }, { spaceKeys: this.flags.spaceKey ? [this.flags.spaceKey] : undefined });
32
+ }
33
+ async _loadScript() {
34
+ var _a, _b;
35
+ let scriptFileContent;
17
36
  try {
18
- scriptContent = fs.readFileSync(this.args.file, 'utf8');
37
+ scriptFileContent = fs.readFileSync(this.args.file, 'utf8');
19
38
  }
20
39
  catch (err) {
21
40
  this.error(`Error reading file ${this.args.file}: ${err.message}`);
22
41
  }
23
- const handleUpload = async ({ client, space }) => {
24
- invariant(space, 'Has to provide a space');
25
- client.addTypes([ScriptType, TextType]);
26
- const identity = client.halo.identity.get();
27
- invariant(identity, 'Identity not available');
28
- let existingFunctionId;
29
- let existingObject;
30
- let functionUrlFromExistingObject;
31
- if (this.flags.functionId) {
32
- existingFunctionId = this.flags.functionId;
33
- }
34
- // Find existing object and functionId in metadata if it exists
35
- if (this.flags.objectId) {
36
- const qr = await space.db.query(Filter.schema(ScriptType)).run();
37
- existingObject = qr.objects.find((o) => o.id === this.flags.objectId);
38
- if (!existingObject) {
39
- this.error(`Object not found: ${this.flags.spaceKey}/${this.flags.objectId}`);
40
- }
41
- functionUrlFromExistingObject = await getUserFunctionUrlInMetadata(getMeta(existingObject));
42
- if (functionUrlFromExistingObject) {
43
- existingFunctionId = functionUrlFromExistingObject.split('/').at(-1);
44
- if (existingFunctionId !== this.flags.functionId) {
45
- this.warn(`provided functionId ${this.flags.functionId} does not match existing functionId ${existingFunctionId}, using existing functionId`);
46
- }
47
- }
48
- if (this.flags.verbose) {
49
- this.log(`Uploading to existing FunctionId ${existingFunctionId} read from ${this.flags.spaceKey}/${this.flags.objectId}`);
50
- }
51
- }
52
- let result;
53
- try {
54
- result = await asyncTimeout(uploadWorkerFunction({
55
- client,
56
- spaceId: space.id,
57
- version: await this._getNextVersion(space, existingFunctionId),
58
- functionId: existingFunctionId,
59
- name: this.flags.name,
60
- source: scriptContent,
61
- }), 5000);
62
- invariant(result.functionId, 'Upload failed.');
63
- this.log(`Uploaded function: ${result.functionId}`);
64
- }
65
- catch (err) {
66
- this.error(err.message);
67
- }
68
- // If we haven't been provided an ECHO space/object, we're done.
69
- if (!space) {
70
- return;
71
- }
72
- if (existingObject) {
73
- // Update existing object
74
- await loadObjectReferences(existingObject, (obj) => obj.source);
75
- if (!existingObject.source) {
76
- this.error('Object source not found');
77
- }
78
- existingObject.source.target.content = scriptContent;
79
- if (this.flags.verbose) {
80
- this.log(`Updated source in ${this.flags.spaceKey}/${this.flags.objectId} (${existingObject.source.target.id})`);
81
- }
82
- if (!functionUrlFromExistingObject) {
83
- setUserFunctionUrlInMetadata(getMeta(existingObject), `/${space.id}/${result.functionId}`);
84
- }
85
- else {
86
- if (existingFunctionId !== result.functionId) {
87
- this.error('functionId mismatch');
88
- }
89
- }
42
+ const bundleResult = await bundleScript(scriptFileContent);
43
+ if (bundleResult.error || !bundleResult.bundle) {
44
+ this.error(`Error bundling script ${this.args.file}: ${(_b = (_a = bundleResult.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : 'empty output'}`);
45
+ }
46
+ return { scriptFileContent, bundledScript: bundleResult.bundle };
47
+ }
48
+ async _loadFunctionObject(space) {
49
+ const matchingFunction = await findFunctionByDeploymentId(space, this.flags.functionId);
50
+ if (this.flags.functionId && !matchingFunction) {
51
+ this.warn(`Function ECHO object not found for ${this.flags.functionId}`);
52
+ }
53
+ if (this.flags.verbose && matchingFunction) {
54
+ this.log(`Function ECHO object found, ID: ${matchingFunction.id}`);
55
+ }
56
+ return matchingFunction;
57
+ }
58
+ async _upload(client, space, functionObject, bundledSource) {
59
+ let result;
60
+ try {
61
+ result = await asyncTimeout(uploadWorkerFunction({
62
+ client,
63
+ spaceId: space.id,
64
+ version: await this._getNextVersion(functionObject),
65
+ functionId: this.flags.functionId,
66
+ name: this.flags.name,
67
+ source: bundledSource,
68
+ }), 10000);
69
+ invariant(result.functionId, 'Upload failed.');
70
+ this.log(`Uploaded function ${result.functionId}, version ${result.version}`);
71
+ return result;
72
+ }
73
+ catch (err) {
74
+ this.error(err.message);
75
+ }
76
+ }
77
+ _updateFunctionObject(space, existingObject, uploadResult) {
78
+ var _a;
79
+ let functionObject = existingObject;
80
+ if (!functionObject) {
81
+ const name = path.basename(this.args.file, path.extname(this.args.file));
82
+ functionObject = space.db.add(live(FunctionType, { name, version: uploadResult.version }));
83
+ }
84
+ functionObject.name = (_a = this.flags.name) !== null && _a !== void 0 ? _a : functionObject.name;
85
+ functionObject.version = uploadResult.version;
86
+ setUserFunctionUrlInMetadata(getMeta(functionObject), makeFunctionUrl(space.id, uploadResult));
87
+ return functionObject;
88
+ }
89
+ async _updateComposerScript(client, space, functionObject, scriptFileName, scriptFileContent) {
90
+ var _a;
91
+ client.addTypes([ScriptType, TextType]);
92
+ if (functionObject.source) {
93
+ const script = await functionObject.source.load();
94
+ const source = await script.source.load();
95
+ source.content = scriptFileContent;
96
+ if (this.flags.verbose) {
97
+ this.log(`Updated source of ${script.id}`);
90
98
  }
91
- else {
92
- // Create new object
93
- // TODO: make object navigable in Composer.
94
- const sourceObj = space.db.add(create(TextType, { content: scriptContent }));
95
- const obj = space.db.add(create(ScriptType, { name: this.flags.name, source: makeRef(sourceObj) }));
96
- setUserFunctionUrlInMetadata(getMeta(obj), result.functionId);
97
- if (this.flags.verbose) {
98
- this.log(`Created object: ${this.flags.spaceKey}/${obj.id}`);
99
- }
99
+ }
100
+ else {
101
+ const sourceObj = space.db.add(live(TextType, { content: scriptFileContent }));
102
+ const obj = space.db.add(live(ScriptType, { name: (_a = this.flags.name) !== null && _a !== void 0 ? _a : scriptFileName, source: makeRef(sourceObj) }));
103
+ functionObject.source = makeRef(obj);
104
+ await makeObjectNavigableInComposer(client, space, obj);
105
+ if (this.flags.verbose) {
106
+ this.log(`Created object, ID: ${obj.id}`);
100
107
  }
101
- };
102
- if (this.flags.spaceKey) {
103
- return await this.execWithSpace(async ({ client, space }) => await handleUpload({ client, space }), {
104
- spaceKeys: [this.flags.spaceKey],
105
- });
106
108
  }
107
- return await this.execWithClient(async ({ client }) => await handleUpload({ client }));
108
109
  }
109
- async _getNextVersion(space, functionId) {
110
- var _a, _b;
110
+ async _getNextVersion(functionObject) {
111
+ var _a;
111
112
  if (this.flags.version) {
112
113
  return this.flags.version;
113
114
  }
114
- if (functionId) {
115
- const { objects } = await space.db.query(Filter.schema(FunctionType, { id: functionId })).run();
116
- return incrementSemverPatch((_b = (_a = objects[0]) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : '0.0.0');
115
+ if (functionObject) {
116
+ return incrementSemverPatch((_a = functionObject === null || functionObject === void 0 ? void 0 : functionObject.version) !== null && _a !== void 0 ? _a : '0.0.0');
117
117
  }
118
118
  return '0.0.1';
119
119
  }
@@ -124,15 +124,22 @@ Upload.flags = {
124
124
  ...BaseCommand.flags,
125
125
  name: Flags.string({ description: 'Function name.' }),
126
126
  version: Flags.string({ description: 'Function version.' }),
127
+ composerScript: Flags.boolean({ description: 'Loads the script into composer.' }),
128
+ functionId: Flags.string({ description: 'Existing UserFunction ID to update.' }),
127
129
  spaceKey: Flags.string({ description: 'Space key to create/update Script source in.' }),
128
- objectId: Flags.string({ description: 'Existing Script Object ID to update.' }),
129
- functionId: Flags.string({
130
- description: 'Existing UserFunction ID to update.',
131
- conflict: ['objectId', 'spaceKey'],
132
- }),
133
130
  };
134
131
  Upload.args = {
135
132
  file: Args.string({ required: true }),
136
133
  };
137
134
  export default Upload;
135
+ const makeObjectNavigableInComposer = async (client, space, obj) => {
136
+ const collection = space.properties['dxos.org/type/Collection'];
137
+ if (collection) {
138
+ client.addTypes([CollectionType]);
139
+ const composerCollection = await collection.load();
140
+ if (composerCollection) {
141
+ composerCollection.objects.push(makeRef(obj));
142
+ }
143
+ }
144
+ };
138
145
  //# sourceMappingURL=upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/function/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../../src/commands/function/upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { BaseCommand } from '../../base';
2
+ export default class Watch extends BaseCommand<typeof Watch> {
3
+ static enableJsonFlag: boolean;
4
+ static description: string;
5
+ static flags: {
6
+ functionId: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ spaceKey: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
9
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ profile: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
+ config: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
13
+ timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
14
+ target: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ agent: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ 'json-log': import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ 'json-logfile': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
18
+ };
19
+ static args: {
20
+ file: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
21
+ };
22
+ run(): Promise<any>;
23
+ private _loadFunctionObject;
24
+ private _isRuntimeReady;
25
+ private _uploadSource;
26
+ private _logWithTime;
27
+ private _printUploadInstruction;
28
+ }
29
+ //# sourceMappingURL=watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../../src/commands/function/watch.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMzC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC1D,OAAgB,cAAc,UAAQ;IACtC,OAAgB,WAAW,SAAwC;IAEnE,OAAgB,KAAK;;;;;;;;;;;;;MAInB;IAEF,OAAgB,IAAI;;MAElB;IAEI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;YAgDX,mBAAmB;YAkBnB,eAAe;YA6Bf,aAAa;IAe3B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,uBAAuB;CAIhC"}
@@ -0,0 +1,130 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+ import { Args, Flags } from '@oclif/core';
5
+ import fs from 'fs';
6
+ import { debounce, Trigger } from '@dxos/async';
7
+ import { FunctionType, ScriptType } from '@dxos/functions/types';
8
+ import { TextType } from '@dxos/schema';
9
+ import { BaseCommand } from '../../base';
10
+ import { bundleScript } from '../../util';
11
+ import { findFunctionByDeploymentId } from '../../util/function/lookup';
12
+ const LOCAL_FUNCTIONS_RUNTIME_URL = 'http://127.0.0.1:3123';
13
+ class Watch extends BaseCommand {
14
+ async run() {
15
+ return this.execWithSpace(async ({ client, space }) => {
16
+ client.addTypes([TextType, ScriptType, FunctionType]);
17
+ const { scriptContent } = await this._loadFunctionObject(space);
18
+ this._logWithTime(`Watching for changes in ${this.args.file}`);
19
+ const updateSource = debounce(async () => {
20
+ const readinessCheckResult = await this._isRuntimeReady();
21
+ if (!readinessCheckResult.ready) {
22
+ this._logWithTime(`Functions runtime readiness check failed: ${readinessCheckResult.reason}`);
23
+ return;
24
+ }
25
+ const source = fs.readFileSync(this.args.file, 'utf-8');
26
+ const bundleResult = await bundleScript(source);
27
+ if (!bundleResult.bundle) {
28
+ this._logWithTime('Source bundling failed, waiting for new changes...');
29
+ return;
30
+ }
31
+ const updateResult = await this._uploadSource(bundleResult.bundle);
32
+ if (updateResult.success) {
33
+ if (scriptContent) {
34
+ scriptContent.content = source;
35
+ }
36
+ this._logWithTime('Worker source updated');
37
+ }
38
+ else {
39
+ this._logWithTime(`Failed to update worker source, reason: ${updateResult.reason}`);
40
+ }
41
+ }, 2000);
42
+ const trigger = new Trigger();
43
+ fs.watch(this.args.file, (event) => {
44
+ if (event === 'rename') {
45
+ trigger.wake();
46
+ }
47
+ else {
48
+ updateSource();
49
+ }
50
+ });
51
+ await trigger.wait();
52
+ });
53
+ }
54
+ async _loadFunctionObject(space) {
55
+ const matchingFunction = await findFunctionByDeploymentId(space, this.flags.functionId);
56
+ if (!matchingFunction) {
57
+ this.log(`Function with id ${this.flags.functionId} not found in space ${space.id}.`);
58
+ this._printUploadInstruction();
59
+ this.exit();
60
+ }
61
+ if (!matchingFunction.source) {
62
+ return { functionObject: matchingFunction };
63
+ }
64
+ const script = await matchingFunction.source.load();
65
+ const content = await script.source.load();
66
+ return { functionObject: matchingFunction, scriptContent: content };
67
+ }
68
+ async _isRuntimeReady() {
69
+ var _a, _b;
70
+ try {
71
+ const result = await fetch(`${LOCAL_FUNCTIONS_RUNTIME_URL}/sanity`);
72
+ if (result.status !== 200) {
73
+ this.log(`Function runtime sanity check failed: ${result.statusText}`);
74
+ }
75
+ }
76
+ catch (err) {
77
+ return { ready: false, reason: `Functions runtime not running, expected on ${LOCAL_FUNCTIONS_RUNTIME_URL}` };
78
+ }
79
+ try {
80
+ const functionId = this.flags.functionId;
81
+ const result = await fetch(`${LOCAL_FUNCTIONS_RUNTIME_URL}/workers/${functionId}/versions`);
82
+ if (result.status !== 200) {
83
+ return { ready: false, reason: `Deployment status check failed: ${result.statusText}` };
84
+ }
85
+ const bodyJson = await result.json();
86
+ if (!((_a = bodyJson.versions) === null || _a === void 0 ? void 0 : _a.length)) {
87
+ return { ready: false, reason: `Function with id ${functionId} is not deployed.` };
88
+ }
89
+ return { ready: true };
90
+ }
91
+ catch (err) {
92
+ return { ready: false, reason: `Deployment status check failed, reason: ${(_b = err.message) !== null && _b !== void 0 ? _b : 'unknown'}` };
93
+ }
94
+ }
95
+ async _uploadSource(bundledScript) {
96
+ var _a;
97
+ try {
98
+ const result = await fetch(`${LOCAL_FUNCTIONS_RUNTIME_URL}/workers/${this.flags.functionId}/source`, {
99
+ method: 'PUT',
100
+ body: Buffer.from(bundledScript),
101
+ });
102
+ if (result.status !== 200) {
103
+ return { success: false, reason: result.statusText };
104
+ }
105
+ return { success: true };
106
+ }
107
+ catch (err) {
108
+ return { success: false, reason: (_a = err.message) !== null && _a !== void 0 ? _a : 'unknown' };
109
+ }
110
+ }
111
+ _logWithTime(message) {
112
+ this.log(`[${new Date().toTimeString().split(' ')[0]}] ${message}`);
113
+ }
114
+ _printUploadInstruction() {
115
+ const message = ['Try running:', '', 'dx function upload scriptFilePath'].join('\n');
116
+ this.log(message);
117
+ }
118
+ }
119
+ Watch.enableJsonFlag = true;
120
+ Watch.description = 'Hot reload script on file changes.';
121
+ Watch.flags = {
122
+ ...BaseCommand.flags,
123
+ functionId: Flags.string({ description: 'Existing UserFunction ID to update.', required: true }),
124
+ spaceKey: Flags.string({ description: 'Space key to create/update Script source in.' }),
125
+ };
126
+ Watch.args = {
127
+ file: Args.string({ required: true }),
128
+ };
129
+ export default Watch;
130
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../../src/commands/function/watch.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export default class List extends BaseCommand<typeof List> {
6
6
  type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
7
  timeout: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
8
8
  delay: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
9
+ space: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
10
  extended: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
11
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
12
  verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/commands/halo/credential/list.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,OAAgB,cAAc,UAAQ;IACtC,OAAgB,WAAW,SAA4B;IACvD,OAAgB,KAAK;;;;yBARX,wBAAwB;;;;;;;;;;MAsBhC;IAEI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;CA2B1B"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../../src/commands/halo/credential/list.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACxD,OAAgB,cAAc,UAAQ;IACtC,OAAgB,WAAW,SAA4B;IACvD,OAAgB,KAAK;;;;;yBATX,wBAAwB;;;;;;;;;;MA0BhC;IAEI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;CAkC1B"}
@@ -3,27 +3,33 @@
3
3
  //
4
4
  import { Flags } from '@oclif/core';
5
5
  import { sleep, Trigger } from '@dxos/async';
6
- import { printCredentials, mapCredentials, TABLE_FLAGS } from '@dxos/cli-base';
6
+ import { mapCredentials, printCredentials, TABLE_FLAGS } from '@dxos/cli-base';
7
7
  import { BaseCommand } from '../../../base';
8
8
  class List extends BaseCommand {
9
9
  async run() {
10
10
  return await this.execWithClient(async ({ client }) => {
11
- const identity = client.halo.identity;
12
- if (!identity) {
13
- this.catch('Profile not initialized.');
14
- }
15
- // Wait for at least one credential before returning a result.
16
- const trigger = new Trigger();
17
- client.halo.credentials.subscribe((credentials) => {
18
- if (credentials.length > 0) {
19
- trigger.wake();
11
+ let credentials;
12
+ if (!this.flags.space) {
13
+ const identity = client.halo.identity;
14
+ if (!identity) {
15
+ this.catch('Profile not initialized.');
20
16
  }
21
- });
22
- await trigger.wait({ timeout: this.flags.timeout });
23
- // Even if we wait for a single credential, we're still likely to miss credentials unless we wait some more.
24
- await sleep(this.flags.delay);
25
- const credentials = client.halo.queryCredentials({ type: this.flags.type });
26
- console.log(credentials);
17
+ // Wait for at least one credential before returning a result.
18
+ const trigger = new Trigger();
19
+ client.halo.credentials.subscribe((credentials) => {
20
+ if (credentials.length > 0) {
21
+ trigger.wake();
22
+ }
23
+ });
24
+ await trigger.wait({ timeout: this.flags.timeout });
25
+ // Even if we wait for a single credential, we're still likely to miss credentials unless we wait some more.
26
+ await sleep(this.flags.delay);
27
+ credentials = client.halo.queryCredentials({ type: this.flags.type });
28
+ }
29
+ else {
30
+ const space = await this.getSpaceById(client, this.flags.space, { wait: false });
31
+ credentials = await space.internal.getCredentials();
32
+ }
27
33
  if (this.flags.json) {
28
34
  return mapCredentials(credentials);
29
35
  }
@@ -49,6 +55,9 @@ List.flags = {
49
55
  description: 'Delay in milliseconds before listing.',
50
56
  default: 250,
51
57
  }),
58
+ space: Flags.string({
59
+ description: 'Space ID of the space to show credentials from. By default, shows halo credentials.',
60
+ }),
52
61
  };
53
62
  export default List;
54
63
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/halo/credential/list.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAqB,IAAK,SAAQ,WAAwB;IAmBxD,KAAK,CAAC,GAAG;QACP,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACzC,CAAC;YAED,8DAA8D;YAC9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;gBAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAEpD,4GAA4G;YAC5G,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AA5Ce,mBAAc,GAAG,IAAI,CAAC;AACtB,gBAAW,GAAG,wBAAwB,CAAC;AACvC,UAAK,GAAG;IACtB,GAAG,WAAW,CAAC,KAAK;IACpB,GAAG,WAAW;IACd,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM;KACpB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,GAAG;KACb,CAAC;IACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,GAAG;KACb,CAAC;CACH,CAAC;eAjBiB,IAAI"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/halo/credential/list.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;AAEF,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAqB,IAAK,SAAQ,WAAwB;IAsBxD,KAAK,CAAC,GAAG;QACP,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpD,IAAI,WAAyB,CAAC;YAE9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBACzC,CAAC;gBAED,8DAA8D;gBAC9D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;oBAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,OAAO,CAAC,IAAI,EAAE,CAAC;oBACjB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEpD,4GAA4G;gBAC5G,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC9B,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjF,WAAW,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACtD,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAtDe,mBAAc,GAAG,IAAI,CAAC;AACtB,gBAAW,GAAG,wBAAwB,CAAC;AACvC,UAAK,GAAG;IACtB,GAAG,WAAW,CAAC,KAAK;IACpB,GAAG,WAAW;IACd,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM;KACpB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,0EAA0E;QACvF,OAAO,EAAE,GAAG;KACb,CAAC;IACF,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,uCAAuC;QACpD,OAAO,EAAE,GAAG;KACb,CAAC;IACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;QAClB,WAAW,EAAE,qFAAqF;KACnG,CAAC;CACH,CAAC;eApBiB,IAAI"}