@interop/did-cli 0.12.0 → 0.14.0

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 (82) hide show
  1. package/CHANGELOG.md +131 -6
  2. package/README.md +184 -18
  3. package/dist/commands/did/create.d.ts +22 -0
  4. package/dist/commands/did/create.d.ts.map +1 -1
  5. package/dist/commands/did/create.js +6 -27
  6. package/dist/commands/did/create.js.map +1 -1
  7. package/dist/commands/did/service.d.ts +19 -4
  8. package/dist/commands/did/service.d.ts.map +1 -1
  9. package/dist/commands/did/service.js +46 -45
  10. package/dist/commands/did/service.js.map +1 -1
  11. package/dist/commands/did/webvh-update.d.ts +72 -9
  12. package/dist/commands/did/webvh-update.d.ts.map +1 -1
  13. package/dist/commands/did/webvh-update.js +177 -61
  14. package/dist/commands/did/webvh-update.js.map +1 -1
  15. package/dist/commands/did.d.ts.map +1 -1
  16. package/dist/commands/did.js +10 -1
  17. package/dist/commands/did.js.map +1 -1
  18. package/dist/commands/key.d.ts +2 -16
  19. package/dist/commands/key.d.ts.map +1 -1
  20. package/dist/commands/key.js +64 -11
  21. package/dist/commands/key.js.map +1 -1
  22. package/dist/commands/was/request-grant.d.ts +37 -0
  23. package/dist/commands/was/request-grant.d.ts.map +1 -0
  24. package/dist/commands/was/request-grant.js +248 -0
  25. package/dist/commands/was/request-grant.js.map +1 -0
  26. package/dist/commands/was/resource.d.ts +21 -7
  27. package/dist/commands/was/resource.d.ts.map +1 -1
  28. package/dist/commands/was/resource.js +40 -15
  29. package/dist/commands/was/resource.js.map +1 -1
  30. package/dist/commands/was/shared.d.ts +43 -3
  31. package/dist/commands/was/shared.d.ts.map +1 -1
  32. package/dist/commands/was/shared.js +82 -4
  33. package/dist/commands/was/shared.js.map +1 -1
  34. package/dist/commands/was/shell/completer.d.ts +24 -0
  35. package/dist/commands/was/shell/completer.d.ts.map +1 -0
  36. package/dist/commands/was/shell/completer.js +99 -0
  37. package/dist/commands/was/shell/completer.js.map +1 -0
  38. package/dist/commands/was/shell/dispatcher.d.ts +27 -0
  39. package/dist/commands/was/shell/dispatcher.d.ts.map +1 -0
  40. package/dist/commands/was/shell/dispatcher.js +227 -0
  41. package/dist/commands/was/shell/dispatcher.js.map +1 -0
  42. package/dist/commands/was/shell/session.d.ts +37 -0
  43. package/dist/commands/was/shell/session.d.ts.map +1 -0
  44. package/dist/commands/was/shell/session.js +67 -0
  45. package/dist/commands/was/shell/session.js.map +1 -0
  46. package/dist/commands/was/shell/tokenize.d.ts +19 -0
  47. package/dist/commands/was/shell/tokenize.d.ts.map +1 -0
  48. package/dist/commands/was/shell/tokenize.js +77 -0
  49. package/dist/commands/was/shell/tokenize.js.map +1 -0
  50. package/dist/commands/was/shell.d.ts +30 -0
  51. package/dist/commands/was/shell.d.ts.map +1 -0
  52. package/dist/commands/was/shell.js +170 -0
  53. package/dist/commands/was/shell.js.map +1 -0
  54. package/dist/commands/was/tree.d.ts +6 -1
  55. package/dist/commands/was/tree.d.ts.map +1 -1
  56. package/dist/commands/was/tree.js +12 -5
  57. package/dist/commands/was/tree.js.map +1 -1
  58. package/dist/commands/was.d.ts.map +1 -1
  59. package/dist/commands/was.js +31 -1
  60. package/dist/commands/was.js.map +1 -1
  61. package/dist/keys/seed.d.ts +21 -0
  62. package/dist/keys/seed.d.ts.map +1 -0
  63. package/dist/keys/seed.js +41 -0
  64. package/dist/keys/seed.js.map +1 -0
  65. package/dist/keys/webvh-signer.d.ts +18 -13
  66. package/dist/keys/webvh-signer.d.ts.map +1 -1
  67. package/dist/keys/webvh-signer.js +5 -20
  68. package/dist/keys/webvh-signer.js.map +1 -1
  69. package/dist/meta.js +1 -1
  70. package/dist/meta.js.map +1 -1
  71. package/dist/storage.d.ts.map +1 -1
  72. package/dist/storage.js +57 -10
  73. package/dist/storage.js.map +1 -1
  74. package/dist/was/address.d.ts +24 -0
  75. package/dist/was/address.d.ts.map +1 -1
  76. package/dist/was/address.js +49 -3
  77. package/dist/was/address.js.map +1 -1
  78. package/dist/was/request-grant.d.ts +144 -0
  79. package/dist/was/request-grant.d.ts.map +1 -0
  80. package/dist/was/request-grant.js +249 -0
  81. package/dist/was/request-grant.js.map +1 -0
  82. package/package.json +22 -20
@@ -2,34 +2,49 @@
2
2
  * `was resource` run functions: add (server-generated id), put (upsert at a
3
3
  * known id), get (JSON or binary), list, delete, and the resource-metadata
4
4
  * verbs `meta get` / `meta put`. Each addressing-capable verb accepts either
5
- * a path or a `--capability` targeting the resource or its collection.
5
+ * a path or a `--capability` targeting the resource or its collection. A
6
+ * collection capability names its resource with `--resource <id>`, which is
7
+ * how a grant scoped to a whole collection is invoked at one resource.
6
8
  */
7
9
  import { readFile } from 'node:fs/promises';
8
10
  import { resolveCapabilityTarget } from '../../was/capability.js';
9
11
  import { readPayload, writeResourceOutput } from '../../was/io.js';
10
- import { assertOneAddressing, printResourceListing, reportDeleted, reportError, reportNotFound, resolveCollectionTarget, resolveResourceTarget, wasUrl } from './shared.js';
12
+ import { assertOneAddressing, printResourceListing, reportDeleted, reportError, reportNotFound, resolveCollectionTarget, resolveResourceTarget, wasUrl, withResourceId } from './shared.js';
11
13
  /**
12
14
  * Resolves a single resource handle and its URL from either a path address
13
- * or a `--capability` targeting a resource -- the shared addressing logic of
14
- * the resource verbs that operate on one resource (`put`, `get`, `meta`).
15
+ * or a `--capability` -- the shared addressing logic of the resource verbs
16
+ * that operate on one resource (`put`, `get`, `meta`).
17
+ *
18
+ * The capability may target the resource itself, or the collection holding
19
+ * it together with `--resource <id>`. The second form is what a grant scoped
20
+ * to a whole collection needs: the id is chosen by the caller (unlike `add`,
21
+ * where the server picks it), and the resource handle inherits the
22
+ * collection's bound capability, so the write is still an invocation of the
23
+ * received grant.
15
24
  *
16
25
  * @param options {object}
17
26
  * @param [options.address] {string} The resource address.
18
27
  * @param [options.capability] {string} A capability reference instead of
19
28
  * a path.
29
+ * @param [options.resource] {string} The resource id beneath a collection
30
+ * capability.
20
31
  * @param options.verb {string} The verb name, for the capability-depth
21
32
  * error message.
22
33
  * @param [options.server] {string} The server base URL.
23
34
  * @param [options.did] {string} The signing DID or stored-DID handle.
24
35
  * @returns {Promise<{resource: Resource, url: string}>}
25
36
  */
26
- async function resolveResourceHandle({ address, capability, verb, server, did }) {
27
- assertOneAddressing({ address, capability });
37
+ async function resolveResourceHandle({ address, capability, resource: resourceId, verb, server, did }) {
38
+ assertOneAddressing({ address, capability, resource: resourceId });
28
39
  if (capability) {
29
- const resolved = await resolveCapabilityTarget({ ref: capability, did });
40
+ const resolved = withResourceId({
41
+ resolved: await resolveCapabilityTarget({ ref: capability, did }),
42
+ resourceId
43
+ });
30
44
  if (resolved.depth !== 'resource') {
31
45
  throw new Error(`The capability targets a ${resolved.depth}; ` +
32
- `${verb} needs a resource capability.`);
46
+ `${verb} needs a resource capability, or a collection capability ` +
47
+ 'with --resource <id>.');
33
48
  }
34
49
  return { resource: resolved.handle, url: resolved.url };
35
50
  }
@@ -108,13 +123,15 @@ export async function runResourceAdd(options) {
108
123
  }
109
124
  /**
110
125
  * Creates or replaces a resource at a known id (upsert) and prints
111
- * `{ id, url }`. The resource comes from a path or a `--capability`
112
- * targeting one.
126
+ * `{ id, url }`. The resource comes from a path, a `--capability`
127
+ * targeting one, or a collection `--capability` plus `--resource <id>`.
113
128
  *
114
129
  * @param options {object}
115
130
  * @param [options.address] {string} The resource address.
116
131
  * @param [options.capability] {string} A capability reference instead of
117
132
  * a path.
133
+ * @param [options.resource] {string} The resource id beneath a collection
134
+ * capability.
118
135
  * @param [options.file] {string} The payload file; stdin when omitted.
119
136
  * @param [options.contentType] {string} Explicit payload content type.
120
137
  * @param [options.server] {string} The server base URL.
@@ -145,13 +162,15 @@ export async function runResourcePut(options) {
145
162
  }
146
163
  /**
147
164
  * Reads a resource: JSON pretty-printed to stdout, binary written raw
148
- * (`--output` for files). The resource comes from a path or a
149
- * `--capability` targeting one.
165
+ * (`--output` for files). The resource comes from a path, a `--capability`
166
+ * targeting one, or a collection `--capability` plus `--resource <id>`.
150
167
  *
151
168
  * @param options {object}
152
169
  * @param [options.address] {string} The resource address.
153
170
  * @param [options.capability] {string} A capability reference instead of
154
171
  * a path.
172
+ * @param [options.resource] {string} The resource id beneath a collection
173
+ * capability.
155
174
  * @param [options.output] {string} The output file path; stdout when
156
175
  * omitted.
157
176
  * @param [options.server] {string} The server base URL.
@@ -178,12 +197,15 @@ export async function runResourceGet(options) {
178
197
  /**
179
198
  * Reads a resource's metadata object (server-managed `contentType` / `size` /
180
199
  * timestamps plus the user-writable `custom`) and pretty-prints it. The
181
- * resource comes from a path or a `--capability` targeting one.
200
+ * resource comes from a path, a `--capability` targeting one, or a
201
+ * collection `--capability` plus `--resource <id>`.
182
202
  *
183
203
  * @param options {object}
184
204
  * @param [options.address] {string} The resource address.
185
205
  * @param [options.capability] {string} A capability reference instead of
186
206
  * a path.
207
+ * @param [options.resource] {string} The resource id beneath a collection
208
+ * capability.
187
209
  * @param [options.server] {string} The server base URL.
188
210
  * @param [options.did] {string} The signing DID or stored-DID handle.
189
211
  * @returns {Promise<number>} The process exit code.
@@ -259,13 +281,16 @@ async function parseCustomJson(input) {
259
281
  * Updates a resource's user-writable metadata and prints the resulting
260
282
  * metadata. `--name`/`--tag` are read-modify-write sugar that preserve the
261
283
  * other field; giving both, or `--json`, is a full `custom` replacement so
262
- * any omitted property is cleared. The resource comes from a path or a
263
- * `--capability` targeting one.
284
+ * any omitted property is cleared. The resource comes from a path, a
285
+ * `--capability` targeting one, or a collection `--capability` plus
286
+ * `--resource <id>`.
264
287
  *
265
288
  * @param options {object}
266
289
  * @param [options.address] {string} The resource address.
267
290
  * @param [options.capability] {string} A capability reference instead of
268
291
  * a path.
292
+ * @param [options.resource] {string} The resource id beneath a collection
293
+ * capability.
269
294
  * @param [options.name] {string} The resource's display name.
270
295
  * @param options.tag {string[]} Repeatable `key=value` tag pairs.
271
296
  * @param [options.json] {string} Full `custom` JSON (inline or a file
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/commands/was/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/commands/was/resource.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,27 @@
1
1
  import { Option } from 'commander';
2
2
  import { type Collection, type CollectionsList, type Resource, type CollectionResourcesList, type Space } from '@interop/was-client';
3
+ import type { ResolvedCapabilityTarget } from '../../was/capability.js';
3
4
  import { type ResolvedWasTarget } from '../../was/client.js';
5
+ /**
6
+ * Installs (or clears) the exit reporter used by `runAndExit`. With a reporter
7
+ * set, `runAndExit` never touches `process.exit`; call with no argument to
8
+ * restore the default process-exiting behavior.
9
+ *
10
+ * @param [reporter] {(code: number) => void}
11
+ * @returns {void}
12
+ */
13
+ export declare function setRunAndExitReporter(reporter?: (code: number) => void): void;
4
14
  /**
5
15
  * Awaits a command's run function and exits the process with its code when
6
- * non-zero -- the shared tail of every `was` command action.
16
+ * non-zero -- the shared tail of every `was` command action. When an exit
17
+ * reporter is installed (the interactive shell), the code is handed to the
18
+ * reporter instead, so a command failure returns control to the REPL loop
19
+ * rather than exiting the process.
20
+ *
21
+ * A run function normally reports its own errors and returns a code; an
22
+ * error that escapes anyway is caught here and reported as a one-line
23
+ * message with exit code 1, instead of surfacing as an unhandled rejection
24
+ * with a raw stack trace (which would also bypass the shell's reporter).
7
25
  *
8
26
  * @param run {Promise<number>}
9
27
  * @returns {Promise<void>}
@@ -20,20 +38,42 @@ export declare function runAndExit(run: Promise<number>): Promise<void>;
20
38
  export declare function serverOption(): Option;
21
39
  export declare function didOption(): Option;
22
40
  export declare function capabilityOption(): Option;
41
+ export declare function resourceIdOption(): Option;
23
42
  export declare function contentTypeOption(): Option;
24
43
  /**
25
44
  * Guards a run function against receiving both path- and capability-based
26
- * addressing (or neither).
45
+ * addressing (or neither). `--resource <id>` is part of capability
46
+ * addressing -- it names a resource beneath a collection capability -- so it
47
+ * is rejected first when no capability anchors it, whether or not a path was
48
+ * also given.
27
49
  *
28
50
  * @param options {object}
29
51
  * @param [options.address] {string}
30
52
  * @param [options.capability] {string}
53
+ * @param [options.resource] {string} The `--resource` value.
31
54
  * @returns {void}
32
55
  */
33
- export declare function assertOneAddressing({ address, capability }: {
56
+ export declare function assertOneAddressing({ address, capability, resource }: {
34
57
  address?: string;
35
58
  capability?: string;
59
+ resource?: string;
36
60
  }): void;
61
+ /**
62
+ * Applies `--resource <id>` to a resolved capability target, returning the
63
+ * target unchanged when no id was given. The id names a resource beneath a
64
+ * collection capability, and the resource handle hangs off that capability's
65
+ * collection handle, so it inherits the bound capability and the request
66
+ * stays an invocation of the received grant.
67
+ *
68
+ * @param options {object}
69
+ * @param options.resolved {ResolvedCapabilityTarget}
70
+ * @param [options.resourceId] {string} The `--resource` value.
71
+ * @returns {ResolvedCapabilityTarget}
72
+ */
73
+ export declare function withResourceId({ resolved, resourceId }: {
74
+ resolved: ResolvedCapabilityTarget;
75
+ resourceId?: string;
76
+ }): ResolvedCapabilityTarget;
37
77
  /**
38
78
  * Builds the canonical URL of a space, collection, or resource on its
39
79
  * server, for messages and output.
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/was/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/commands/was/shared.ts"],"names":[],"mappings":"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"}
@@ -10,15 +10,52 @@ import { WasError } from '@interop/was-client';
10
10
  import { parseWasAddress } from '../../was/address.js';
11
11
  import { resolveWasTarget } from '../../was/client.js';
12
12
  import { renderTable } from '../../table.js';
13
+ /**
14
+ * The active exit reporter, if any. When set (by the interactive shell),
15
+ * `runAndExit` reports the exit code through it instead of calling
16
+ * `process.exit`, keeping the tree shell-safe (no `runXxx` ever calls
17
+ * `process.exit`). Mirrors the `setWasClientFactory` seam convention.
18
+ */
19
+ let exitReporter;
20
+ /**
21
+ * Installs (or clears) the exit reporter used by `runAndExit`. With a reporter
22
+ * set, `runAndExit` never touches `process.exit`; call with no argument to
23
+ * restore the default process-exiting behavior.
24
+ *
25
+ * @param [reporter] {(code: number) => void}
26
+ * @returns {void}
27
+ */
28
+ export function setRunAndExitReporter(reporter) {
29
+ exitReporter = reporter;
30
+ }
13
31
  /**
14
32
  * Awaits a command's run function and exits the process with its code when
15
- * non-zero -- the shared tail of every `was` command action.
33
+ * non-zero -- the shared tail of every `was` command action. When an exit
34
+ * reporter is installed (the interactive shell), the code is handed to the
35
+ * reporter instead, so a command failure returns control to the REPL loop
36
+ * rather than exiting the process.
37
+ *
38
+ * A run function normally reports its own errors and returns a code; an
39
+ * error that escapes anyway is caught here and reported as a one-line
40
+ * message with exit code 1, instead of surfacing as an unhandled rejection
41
+ * with a raw stack trace (which would also bypass the shell's reporter).
16
42
  *
17
43
  * @param run {Promise<number>}
18
44
  * @returns {Promise<void>}
19
45
  */
20
46
  export async function runAndExit(run) {
21
- const code = await run;
47
+ let code;
48
+ try {
49
+ code = await run;
50
+ }
51
+ catch (err) {
52
+ console.error(err instanceof Error ? err.message : String(err));
53
+ code = 1;
54
+ }
55
+ if (exitReporter) {
56
+ exitReporter(code);
57
+ return;
58
+ }
22
59
  if (code !== 0) {
23
60
  process.exit(code);
24
61
  }
@@ -41,19 +78,30 @@ export function capabilityOption() {
41
78
  return new Option('--capability <ref>', 'a received capability (encoded string, JSON file, or stored zcap ' +
42
79
  'id/handle) instead of a path');
43
80
  }
81
+ export function resourceIdOption() {
82
+ return new Option('--resource <id>', 'the resource id to operate on beneath a collection --capability');
83
+ }
44
84
  export function contentTypeOption() {
45
85
  return new Option('--content-type <type>', 'send the payload as-is with this content type (skips JSON detection)');
46
86
  }
47
87
  /**
48
88
  * Guards a run function against receiving both path- and capability-based
49
- * addressing (or neither).
89
+ * addressing (or neither). `--resource <id>` is part of capability
90
+ * addressing -- it names a resource beneath a collection capability -- so it
91
+ * is rejected first when no capability anchors it, whether or not a path was
92
+ * also given.
50
93
  *
51
94
  * @param options {object}
52
95
  * @param [options.address] {string}
53
96
  * @param [options.capability] {string}
97
+ * @param [options.resource] {string} The `--resource` value.
54
98
  * @returns {void}
55
99
  */
56
- export function assertOneAddressing({ address, capability }) {
100
+ export function assertOneAddressing({ address, capability, resource }) {
101
+ if (resource !== undefined && !capability) {
102
+ throw new Error('--resource names a resource beneath a collection --capability; ' +
103
+ 'a path already names one.');
104
+ }
57
105
  if (address && capability) {
58
106
  throw new Error('Provide either a path or --capability, not both.');
59
107
  }
@@ -61,6 +109,36 @@ export function assertOneAddressing({ address, capability }) {
61
109
  throw new Error('Provide a path or --capability.');
62
110
  }
63
111
  }
112
+ /**
113
+ * Applies `--resource <id>` to a resolved capability target, returning the
114
+ * target unchanged when no id was given. The id names a resource beneath a
115
+ * collection capability, and the resource handle hangs off that capability's
116
+ * collection handle, so it inherits the bound capability and the request
117
+ * stays an invocation of the received grant.
118
+ *
119
+ * @param options {object}
120
+ * @param options.resolved {ResolvedCapabilityTarget}
121
+ * @param [options.resourceId] {string} The `--resource` value.
122
+ * @returns {ResolvedCapabilityTarget}
123
+ */
124
+ export function withResourceId({ resolved, resourceId }) {
125
+ if (resourceId === undefined) {
126
+ return resolved;
127
+ }
128
+ if (resolved.depth === 'resource') {
129
+ throw new Error('The capability already targets a resource; drop --resource.');
130
+ }
131
+ if (resolved.depth !== 'collection') {
132
+ throw new Error('--resource names a resource beneath a collection capability; ' +
133
+ `this one targets a ${resolved.depth}.`);
134
+ }
135
+ return {
136
+ ...resolved,
137
+ depth: 'resource',
138
+ handle: resolved.handle.resource(resourceId),
139
+ url: `${resolved.url.replace(/\/$/, '')}/${encodeURIComponent(resourceId)}`
140
+ };
141
+ }
64
142
  /**
65
143
  * Builds the canonical URL of a space, collection, or resource on its
66
144
  * server, for messages and output.
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/was/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/commands/was/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Tab-completion for the interactive shell's readline interface. Completes the
3
+ * first word (builtins plus top-level subcommand names and aliases), the
4
+ * subcommand after a command group (`space`, `collection`, `resource`,
5
+ * `resource-meta`, `policy`), and -- at the root working directory -- the first
6
+ * path segment of a path verb from the local space registry (handles and ids).
7
+ * Network-backed completion (collection/resource listings) is deferred.
8
+ */
9
+ import type { Command } from 'commander';
10
+ import type { ShellSession } from './session.js';
11
+ /**
12
+ * Builds the readline completer function bound to the command tree and shell
13
+ * session.
14
+ *
15
+ * @param options {object}
16
+ * @param options.tree {Command} The `was` command tree.
17
+ * @param options.session {ShellSession}
18
+ * @returns {(line: string) => Promise<[string[], string]>}
19
+ */
20
+ export declare function makeShellCompleter({ tree, session }: {
21
+ tree: Command;
22
+ session: ShellSession;
23
+ }): (line: string) => Promise<[string[], string]>;
24
+ //# sourceMappingURL=completer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completer.d.ts","sourceRoot":"","sources":["../../../../src/commands/was/shell/completer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAkFhD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,OAAO,EACR,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,YAAY,CAAA;CACtB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,CA6BhD"}
@@ -0,0 +1,99 @@
1
+ import { listSpaceRecords } from '../../../was/registry.js';
2
+ /** The shell builtins, offered as first-word completions. */
3
+ const BUILTINS = ['cd', 'use', 'pwd', 'connect', 'did', 'help', 'exit', 'quit'];
4
+ /** Top-level verbs that take a WAS path as their first positional argument. */
5
+ const PATH_VERBS = new Set([
6
+ 'ls',
7
+ 'get',
8
+ 'put',
9
+ 'rm',
10
+ 'publish',
11
+ 'unpublish',
12
+ 'grant'
13
+ ]);
14
+ /**
15
+ * Collects a command's own name plus its aliases.
16
+ *
17
+ * @param command {Command}
18
+ * @returns {string[]}
19
+ */
20
+ function namesOf(command) {
21
+ return [command.name(), ...command.aliases()];
22
+ }
23
+ /**
24
+ * Finds a direct subcommand of a command by name or alias.
25
+ *
26
+ * @param options {object}
27
+ * @param options.parent {Command}
28
+ * @param options.name {string}
29
+ * @returns {Command | undefined}
30
+ */
31
+ function findSubcommand({ parent, name }) {
32
+ return parent.commands.find(command => namesOf(command).includes(name));
33
+ }
34
+ /**
35
+ * Narrows a candidate list to those starting with the word being edited,
36
+ * falling back to the full list when nothing matches (so a bare Tab lists
37
+ * everything).
38
+ *
39
+ * @param options {object}
40
+ * @param options.candidates {string[]}
41
+ * @param options.editing {string}
42
+ * @returns {string[]}
43
+ */
44
+ function filterHits({ candidates, editing }) {
45
+ const hits = candidates.filter(candidate => candidate.startsWith(editing));
46
+ return hits.length > 0 ? hits : candidates;
47
+ }
48
+ /**
49
+ * Lists the registry space completions (handles and space ids).
50
+ *
51
+ * @returns {Promise<string[]>}
52
+ */
53
+ async function spaceCompletions() {
54
+ const records = await listSpaceRecords();
55
+ const out = [];
56
+ for (const { record, meta } of records) {
57
+ if (meta?.handle) {
58
+ out.push(meta.handle);
59
+ }
60
+ out.push(record.id);
61
+ }
62
+ return out;
63
+ }
64
+ /**
65
+ * Builds the readline completer function bound to the command tree and shell
66
+ * session.
67
+ *
68
+ * @param options {object}
69
+ * @param options.tree {Command} The `was` command tree.
70
+ * @param options.session {ShellSession}
71
+ * @returns {(line: string) => Promise<[string[], string]>}
72
+ */
73
+ export function makeShellCompleter({ tree, session }) {
74
+ return async function completer(line) {
75
+ const words = line.split(/\s+/);
76
+ const editing = words[words.length - 1] ?? '';
77
+ if (words.length <= 1) {
78
+ const candidates = [...BUILTINS, ...tree.commands.flatMap(namesOf)].sort();
79
+ return [filterHits({ candidates, editing }), editing];
80
+ }
81
+ const first = words[0];
82
+ if (words.length === 2) {
83
+ const group = findSubcommand({ parent: tree, name: first });
84
+ if (group && group.commands.length > 0) {
85
+ const candidates = group.commands.flatMap(namesOf).sort();
86
+ return [filterHits({ candidates, editing }), editing];
87
+ }
88
+ if (session.cwd.length === 0 && PATH_VERBS.has(first)) {
89
+ const candidates = (await spaceCompletions()).sort();
90
+ return [
91
+ candidates.filter(candidate => candidate.startsWith(editing)),
92
+ editing
93
+ ];
94
+ }
95
+ }
96
+ return [[], editing];
97
+ };
98
+ }
99
+ //# sourceMappingURL=completer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completer.js","sourceRoot":"","sources":["../../../../src/commands/was/shell/completer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The interactive shell's per-line dispatcher: tokenizes a line, handles the
3
+ * builtins (`cd`/`use`, `pwd`, `connect`, `did`, `help`, `exit`/`quit`, blank
4
+ * and `#`-comment lines, and a rejected nested `shell`), guards stdin-payload
5
+ * commands that would fight readline for stdin, then hands the rest to the
6
+ * shared command tree via `parseAsync`. Command errors are reported by the
7
+ * commands themselves (and swallowed as `CommanderError`s here), so a bad line
8
+ * never stops the loop.
9
+ */
10
+ import { Command } from 'commander';
11
+ import { type ShellSession } from './session.js';
12
+ /**
13
+ * Builds the per-line dispatch function bound to the command tree. The
14
+ * returned function reports `'exit'` when the loop should stop.
15
+ *
16
+ * @param options {object}
17
+ * @param options.tree {Command}
18
+ * @returns {(options: {line: string, session: ShellSession, output: NodeJS.WritableStream}) => Promise<'exit' | void>}
19
+ */
20
+ export declare function makeWasShellDispatcher({ tree }: {
21
+ tree: Command;
22
+ }): (options: {
23
+ line: string;
24
+ session: ShellSession;
25
+ output: NodeJS.WritableStream;
26
+ }) => Promise<'exit' | void>;
27
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../../src/commands/was/shell/dispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAA;AAEnD,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAuK7E;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACL,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;CACd,GAAG,CAAC,OAAO,EAAE;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAA;CAC9B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgF3B"}