@w6w/cli 0.9.15 → 0.9.23
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.
- package/README.md +29 -14
- package/dist/bin/w6w.js +4 -0
- package/dist/bin/w6w.js.map +1 -1
- package/dist/mod.d.ts +20 -2
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +25 -13
- package/dist/mod.js.map +1 -1
- package/dist/src/args.d.ts +8 -1
- package/dist/src/args.d.ts.map +1 -1
- package/dist/src/args.js +15 -3
- package/dist/src/args.js.map +1 -1
- package/dist/src/client.d.ts +51 -4
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +83 -30
- package/dist/src/client.js.map +1 -1
- package/dist/src/commands/agents-studio.d.ts +24 -0
- package/dist/src/commands/agents-studio.d.ts.map +1 -0
- package/dist/src/commands/agents-studio.js +431 -0
- package/dist/src/commands/agents-studio.js.map +1 -0
- package/dist/src/commands/assets.d.ts +47 -0
- package/dist/src/commands/assets.d.ts.map +1 -0
- package/dist/src/commands/assets.js +412 -0
- package/dist/src/commands/assets.js.map +1 -0
- package/dist/src/commands/auth.d.ts +24 -0
- package/dist/src/commands/auth.d.ts.map +1 -0
- package/dist/src/commands/auth.js +112 -0
- package/dist/src/commands/auth.js.map +1 -0
- package/dist/src/commands/config.d.ts +21 -0
- package/dist/src/commands/config.d.ts.map +1 -0
- package/dist/src/commands/config.js +73 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/commands/connections.d.ts +1 -1
- package/dist/src/commands/connections.d.ts.map +1 -1
- package/dist/src/commands/connections.js +27 -2
- package/dist/src/commands/connections.js.map +1 -1
- package/dist/src/commands/index.d.ts +6 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +18 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/ls.d.ts +21 -0
- package/dist/src/commands/ls.d.ts.map +1 -0
- package/dist/src/commands/ls.js +53 -0
- package/dist/src/commands/ls.js.map +1 -0
- package/dist/src/commands/models.d.ts +16 -0
- package/dist/src/commands/models.d.ts.map +1 -0
- package/dist/src/commands/models.js +126 -0
- package/dist/src/commands/models.js.map +1 -0
- package/dist/src/commands/vars.d.ts.map +1 -1
- package/dist/src/commands/vars.js +2 -2
- package/dist/src/commands/vars.js.map +1 -1
- package/dist/src/config-store.d.ts +86 -0
- package/dist/src/config-store.d.ts.map +1 -0
- package/dist/src/config-store.js +129 -0
- package/dist/src/config-store.js.map +1 -0
- package/dist/src/help.generated.d.ts.map +1 -1
- package/dist/src/help.generated.js +2723 -105
- package/dist/src/help.generated.js.map +1 -1
- package/dist/src/store-fs.d.ts +34 -0
- package/dist/src/store-fs.d.ts.map +1 -0
- package/dist/src/store-fs.js +151 -0
- package/dist/src/store-fs.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -23,18 +23,32 @@ released together. A given version means the same set of operations in every lan
|
|
|
23
23
|
|
|
24
24
|
## Configuration
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
With nothing configured, `w6w` talks to **`https://api.w6w.io`**. Save a token once and later
|
|
27
|
+
commands use it:
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
```bash
|
|
30
|
+
printf '%s' "$W6W_TOKEN" | w6w auth login - # preferred: keeps the token out of shell history
|
|
31
|
+
w6w auth login <token> # also works, but the token lands in history and `ps`
|
|
32
|
+
w6w auth status # base URL, where it came from, masked token
|
|
33
|
+
w6w auth logout
|
|
34
|
+
w6w config get-base-url # effective base URL and its source
|
|
35
|
+
w6w config set-base-url https://w6w.example.com # save it (tokens are per host: auth login again)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The token is stored per user (`~/.config/w6w/config.json`, or `$XDG_CONFIG_HOME/w6w/…`;
|
|
39
|
+
`%APPDATA%\w6w\…` on Windows), mode `0600`, and **bound to the base URL it was saved for** — it is
|
|
40
|
+
never sent to another host. Two environment variables and two flags override it:
|
|
41
|
+
|
|
42
|
+
| Variable | Meaning | Required |
|
|
43
|
+
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
|
|
44
|
+
| `W6W_BASE_URL` | The **origin** of your w6w server, e.g. `https://api.example.com`. Defaults to `https://api.w6w.io`. The API is served at the root of that host, so nothing is appended — and a stale `/api` suffix from `0.1.x` must be dropped. | No |
|
|
45
|
+
| `W6W_TOKEN` | Your API token, sent as `Authorization: Bearer <token>` on every request. Not needed after `w6w auth login`. | No |
|
|
32
46
|
|
|
33
|
-
Both have a flag equivalent, and **a flag always wins over the environment
|
|
34
|
-
`--token <token>`.
|
|
47
|
+
Both have a flag equivalent, and **a flag always wins over the environment, which wins over the
|
|
48
|
+
stored config**: `--base-url <url>` and `--token <token>`.
|
|
35
49
|
|
|
36
50
|
```bash
|
|
37
|
-
export W6W_BASE_URL=https://api.example.com
|
|
51
|
+
export W6W_BASE_URL=https://api.example.com # only for a self-hosted server
|
|
38
52
|
export W6W_TOKEN=…
|
|
39
53
|
w6w workflows list
|
|
40
54
|
```
|
|
@@ -48,6 +62,7 @@ server reachable, which is exactly when people need them most.
|
|
|
48
62
|
w6w me # who am I, and which CLI version is this? (alias: info)
|
|
49
63
|
|
|
50
64
|
# Discover what you can run — a `conn_…`, `wf_…`, `fn_…` or `ep_…` id.
|
|
65
|
+
w6w ls workflows # also: ls integrations | functions | endpoints (endpoints is unstable)
|
|
51
66
|
w6w connections list # short forms: `w6w conn ls`, `w6w wf ls`, `w6w docs ls`
|
|
52
67
|
w6w workflows list
|
|
53
68
|
w6w functions list
|
|
@@ -108,12 +123,12 @@ root help and exits `0`.
|
|
|
108
123
|
|
|
109
124
|
## Exit codes
|
|
110
125
|
|
|
111
|
-
| Code | Meaning
|
|
112
|
-
| ---- |
|
|
113
|
-
| `0` | Success — including help, and including a _queued_ or _running_ workflow
|
|
114
|
-
| `1` | Usage or configuration error — unknown command, missing argument, bad flag or JSON, no
|
|
115
|
-
| `2` | API error — 4xx/5xx from the server, including auth failure, or the server could not be reached
|
|
116
|
-
| `3` | Run failure — `--wait` returned a run with status `failed`
|
|
126
|
+
| Code | Meaning |
|
|
127
|
+
| ---- | ------------------------------------------------------------------------------------------------------------------- |
|
|
128
|
+
| `0` | Success — including help, and including a _queued_ or _running_ workflow |
|
|
129
|
+
| `1` | Usage or configuration error — unknown command, missing argument, bad flag or JSON, no token, an empty `--base-url` |
|
|
130
|
+
| `2` | API error — 4xx/5xx from the server, including auth failure, or the server could not be reached |
|
|
131
|
+
| `3` | Run failure — `--wait` returned a run with status `failed` |
|
|
117
132
|
|
|
118
133
|
Code `3` exists so `w6w workflows run --wait` is usable in CI without parsing stdout. Keeping it
|
|
119
134
|
distinct from `2` matters: a failed workflow and an unreachable API demand opposite responses, and a
|
package/dist/bin/w6w.js
CHANGED
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
import { main } from "../mod.js";
|
|
22
22
|
import { COMMANDS } from "../src/commands/index.js";
|
|
23
23
|
import { systemRuntime } from "../src/runtime.js";
|
|
24
|
+
import { fsConfigStore, readStdin, stdinIsTerminal } from "../src/store-fs.js";
|
|
24
25
|
/**
|
|
25
26
|
* The commands this build can run.
|
|
26
27
|
*
|
|
@@ -53,6 +54,9 @@ const code = await main(runtime.args, runtime, {
|
|
|
53
54
|
env: runtime.env,
|
|
54
55
|
isTty: stdoutIsTerminal(),
|
|
55
56
|
commands,
|
|
57
|
+
// The only place the real file store and real stdin are constructed.
|
|
58
|
+
store: fsConfigStore(runtime.env),
|
|
59
|
+
stdin: { isTerminal: stdinIsTerminal, read: readStdin },
|
|
56
60
|
});
|
|
57
61
|
runtime.exit(code);
|
|
58
62
|
//# sourceMappingURL=w6w.js.map
|
package/dist/bin/w6w.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"w6w.js","sourceRoot":"","sources":["../../bin/w6w.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"w6w.js","sourceRoot":"","sources":["../../bin/w6w.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,QAAQ,GAAoB,QAAQ,CAAC;AAE3C;;;;;;;;;GASG;AACH,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,UAGZ,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,IAAI,IAAI,EAAE,UAAU;QAAE,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE;IAC7C,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,KAAK,EAAE,gBAAgB,EAAE;IACzB,QAAQ;IACR,qEAAqE;IACrE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,KAAK,EAAE,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE;CACxD,CAAC,CAAC;AACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/mod.d.ts
CHANGED
|
@@ -27,14 +27,17 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import type { Invocation } from "./src/args.ts";
|
|
29
29
|
import type { EnvReader } from "./src/client.ts";
|
|
30
|
+
import type { ConfigStore, StdinSource, StoredConfig } from "./src/config-store.ts";
|
|
30
31
|
import type { Output } from "./src/output.ts";
|
|
31
32
|
import type { HelpCommand } from "./src/help.generated.ts";
|
|
32
33
|
import type { CliIo } from "./src/runtime.ts";
|
|
33
34
|
import type { FetchLike, W6WClient } from "@w6w/sdk";
|
|
34
35
|
export { parse } from "./src/args.ts";
|
|
35
36
|
export type { FlagSpec, GlobalOptions, Invocation, ParseOptions, ParseResult } from "./src/args.ts";
|
|
36
|
-
export { createClient, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV } from "./src/client.ts";
|
|
37
|
-
export type { ClientOptions, EnvReader } from "./src/client.ts";
|
|
37
|
+
export { createClient, DEFAULT_BASE_URL, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV, resolveSettings, } from "./src/client.ts";
|
|
38
|
+
export type { ClientOptions, EnvReader, ResolvedSettings, Source } from "./src/client.ts";
|
|
39
|
+
export { configPath, loadConfig, NO_CONFIG, NO_STDIN, NO_STORE, parseConfig, serializeConfig, } from "./src/config-store.ts";
|
|
40
|
+
export type { ConfigStore, StdinSource, StoredConfig } from "./src/config-store.ts";
|
|
38
41
|
export { createOutput, ENV_NO_COLOR, useColor } from "./src/output.ts";
|
|
39
42
|
export type { Output, OutputOptions, Styles } from "./src/output.ts";
|
|
40
43
|
export { EXIT_API_ERROR, EXIT_RUN_FAILURE, EXIT_SUCCESS, EXIT_USAGE, exitCodeFor, } from "./src/exit.ts";
|
|
@@ -79,6 +82,14 @@ export interface CommandContext {
|
|
|
79
82
|
* @throws {ConfigError} When the base URL or token is missing or unusable.
|
|
80
83
|
*/
|
|
81
84
|
client(): W6WClient;
|
|
85
|
+
/** The environment seam this invocation runs with. */
|
|
86
|
+
readonly env: EnvReader;
|
|
87
|
+
/** The stored per-user config, read once before the handler runs (nothing stored by default). */
|
|
88
|
+
readonly stored: StoredConfig;
|
|
89
|
+
/** Where the config is persisted. Only the `auth` and `config` commands write through it. */
|
|
90
|
+
readonly store: ConfigStore;
|
|
91
|
+
/** Standard input, for `auth login -`. */
|
|
92
|
+
readonly stdin: StdinSource;
|
|
82
93
|
}
|
|
83
94
|
/**
|
|
84
95
|
* One command's implementation.
|
|
@@ -108,6 +119,13 @@ export interface CliOptions {
|
|
|
108
119
|
isTty?: boolean;
|
|
109
120
|
/** The commands that are wired up. Defaults to none. */
|
|
110
121
|
commands?: CommandRegistry;
|
|
122
|
+
/**
|
|
123
|
+
* The per-user config store. Defaults to {@linkcode NO_STORE}: nothing stored,
|
|
124
|
+
* no file I/O. Only `bin/w6w.ts` wires the real one.
|
|
125
|
+
*/
|
|
126
|
+
store?: ConfigStore;
|
|
127
|
+
/** Standard input. Defaults to {@linkcode NO_STDIN}: a terminal, never read. */
|
|
128
|
+
stdin?: StdinSource;
|
|
111
129
|
}
|
|
112
130
|
/**
|
|
113
131
|
* Runs a command line and returns its exit code. The whole CLI.
|
package/dist/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAU9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"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"}
|
package/dist/mod.js
CHANGED
|
@@ -27,12 +27,14 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import { GLOBAL_FLAG_SPECS, parse } from "./src/args.js";
|
|
29
29
|
import { createClient, NO_ENV } from "./src/client.js";
|
|
30
|
+
import { loadConfig, NO_STDIN, NO_STORE } from "./src/config-store.js";
|
|
30
31
|
import { createOutput } from "./src/output.js";
|
|
31
32
|
import { EXIT_SUCCESS, EXIT_USAGE, exitCodeFor } from "./src/exit.js";
|
|
32
33
|
import { renderCommandHelp, renderGroupHelp, renderHelp, renderRootHelp, resolve, } from "./src/help.js";
|
|
33
34
|
import { HELP_TREE } from "./src/help.generated.js";
|
|
34
35
|
export { parse } from "./src/args.js";
|
|
35
|
-
export { createClient, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV } from "./src/client.js";
|
|
36
|
+
export { createClient, DEFAULT_BASE_URL, ENV_BASE_URL, ENV_TOKEN, envValue, NO_ENV, resolveSettings, } from "./src/client.js";
|
|
37
|
+
export { configPath, loadConfig, NO_CONFIG, NO_STDIN, NO_STORE, parseConfig, serializeConfig, } from "./src/config-store.js";
|
|
36
38
|
export { createOutput, ENV_NO_COLOR, useColor } from "./src/output.js";
|
|
37
39
|
export { EXIT_API_ERROR, EXIT_RUN_FAILURE, EXIT_SUCCESS, EXIT_USAGE, exitCodeFor, } from "./src/exit.js";
|
|
38
40
|
export { renderCommandHelp, renderGroupHelp, renderHelp, renderRootHelp, resolve, } from "./src/help.js";
|
|
@@ -51,7 +53,7 @@ export { COMMAND_PATHS, EXIT_CODES, GLOBAL_FLAGS, HELP_TREE } from "./src/help.g
|
|
|
51
53
|
* The explicit `: string` annotation is required, not decorative: JSR publishes
|
|
52
54
|
* this file as TypeScript source and rejects inferred public types.
|
|
53
55
|
*/
|
|
54
|
-
export const VERSION = "0.9.
|
|
56
|
+
export const VERSION = "0.9.23";
|
|
55
57
|
/** `w6w help <command>` is accepted as an alias for `w6w <command> --help`. */
|
|
56
58
|
const HELP_COMMAND = "help";
|
|
57
59
|
/**
|
|
@@ -213,18 +215,28 @@ async function dispatch(routed, io, options) {
|
|
|
213
215
|
// Built on demand and remembered: a command that never asks for the API never
|
|
214
216
|
// needs a token, and one that asks twice gets one client, not two.
|
|
215
217
|
let client = null;
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
invocation: routed.invocation,
|
|
219
|
-
out,
|
|
220
|
-
client: () => {
|
|
221
|
-
if (client === null) {
|
|
222
|
-
client = createClient(globals, options.env ?? NO_ENV, { fetch: options.fetch });
|
|
223
|
-
}
|
|
224
|
-
return client;
|
|
225
|
-
},
|
|
226
|
-
};
|
|
218
|
+
const env = options.env ?? NO_ENV;
|
|
219
|
+
const store = options.store ?? NO_STORE;
|
|
227
220
|
try {
|
|
221
|
+
// Read once, before any handler: every dispatched command sees the same
|
|
222
|
+
// stored config, `createClient` stays synchronous, and a malformed file fails
|
|
223
|
+
// the command up front (help and `--version` never reach this point).
|
|
224
|
+
const stored = await loadConfig(store);
|
|
225
|
+
const context = {
|
|
226
|
+
command: routed.command,
|
|
227
|
+
invocation: routed.invocation,
|
|
228
|
+
out,
|
|
229
|
+
env,
|
|
230
|
+
stored,
|
|
231
|
+
store,
|
|
232
|
+
stdin: options.stdin ?? NO_STDIN,
|
|
233
|
+
client: () => {
|
|
234
|
+
if (client === null) {
|
|
235
|
+
client = createClient(globals, env, { fetch: options.fetch, stored });
|
|
236
|
+
}
|
|
237
|
+
return client;
|
|
238
|
+
},
|
|
239
|
+
};
|
|
228
240
|
return (await handler(context)) ?? EXIT_SUCCESS;
|
|
229
241
|
}
|
|
230
242
|
catch (error) {
|
package/dist/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,cAAc,EACd,OAAO,GACR,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAKpD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../mod.ts"],"names":[],"mappings":"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"}
|
package/dist/src/args.d.ts
CHANGED
|
@@ -50,6 +50,8 @@ export interface Invocation {
|
|
|
50
50
|
globals: GlobalOptions;
|
|
51
51
|
/** Non-global flags, keyed by camelCased name. Empty unless `flags` was passed. */
|
|
52
52
|
options: Record<string, string | boolean>;
|
|
53
|
+
/** Every value of a repeatable flag (see {@linkcode REPEATABLE_FLAGS}), in order, by camelCased name. */
|
|
54
|
+
lists?: Record<string, string[]>;
|
|
53
55
|
}
|
|
54
56
|
/** What `parse()` returns: a parsed command line, or a usage error to report. */
|
|
55
57
|
export type ParseResult = {
|
|
@@ -67,6 +69,11 @@ export interface ParseOptions {
|
|
|
67
69
|
/** The command paths that exist. Defaults to the generated contract's. */
|
|
68
70
|
commands?: readonly (readonly string[])[];
|
|
69
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Flags that may be given more than once. Their values accumulate in
|
|
74
|
+
* `Invocation.lists`; `options` still holds the last one, as for every flag.
|
|
75
|
+
*/
|
|
76
|
+
export declare const REPEATABLE_FLAGS: ReadonlySet<string>;
|
|
70
77
|
/**
|
|
71
78
|
* Short spellings for a group name — pure typing convenience, not a second
|
|
72
79
|
* command. `w6w conn list` and `w6w connections list` resolve to the exact same
|
|
@@ -87,7 +94,7 @@ export declare const SUBCOMMAND_ALIASES: Record<string, string>;
|
|
|
87
94
|
*
|
|
88
95
|
* Accepted forms: `--flag`, `--flag value`, `--flag=value`, a short alias
|
|
89
96
|
* (`-h`, `-v`), and `--` to end flag parsing. A repeated flag keeps the last
|
|
90
|
-
* value. An unknown flag, a missing value, or a value handed to a boolean flag
|
|
97
|
+
* value (a repeatable one also accumulates all of them). An unknown flag, a missing value, or a value handed to a boolean flag
|
|
91
98
|
* are all reported as usage errors.
|
|
92
99
|
*/
|
|
93
100
|
export declare function parse(argv: string[], options?: ParseOptions): ParseResult;
|
package/dist/src/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAIrC,CAAC;AAEJ,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,EAIrC,CAAC;AAEJ,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,0CAA0C;AAC1C,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,aAAa,CAAC;IACvB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC1C,yGAAyG;IACzG,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAClC;AAED,iFAAiF;AACjF,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACpC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEtD,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAuB,CAAC;AAmCzE;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAErD,CAAC;AAuBF;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,WAAW,CAmF7E"}
|
package/dist/src/args.js
CHANGED
|
@@ -26,6 +26,11 @@ export const GLOBAL_FLAG_SPECS = GLOBAL_FLAGS.map((flag) => ({
|
|
|
26
26
|
alias: flag.alias,
|
|
27
27
|
type: flag.type,
|
|
28
28
|
}));
|
|
29
|
+
/**
|
|
30
|
+
* Flags that may be given more than once. Their values accumulate in
|
|
31
|
+
* `Invocation.lists`; `options` still holds the last one, as for every flag.
|
|
32
|
+
*/
|
|
33
|
+
export const REPEATABLE_FLAGS = new Set(["--stop"]);
|
|
29
34
|
/** `--base-url` → `baseUrl`. */
|
|
30
35
|
function optionKey(flagName) {
|
|
31
36
|
return flagName.replace(/^--/, "").replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());
|
|
@@ -99,7 +104,7 @@ function normalizeAliases(operands) {
|
|
|
99
104
|
*
|
|
100
105
|
* Accepted forms: `--flag`, `--flag value`, `--flag=value`, a short alias
|
|
101
106
|
* (`-h`, `-v`), and `--` to end flag parsing. A repeated flag keeps the last
|
|
102
|
-
* value. An unknown flag, a missing value, or a value handed to a boolean flag
|
|
107
|
+
* value (a repeatable one also accumulates all of them). An unknown flag, a missing value, or a value handed to a boolean flag
|
|
103
108
|
* are all reported as usage errors.
|
|
104
109
|
*/
|
|
105
110
|
export function parse(argv, options = {}) {
|
|
@@ -108,6 +113,12 @@ export function parse(argv, options = {}) {
|
|
|
108
113
|
const byName = new Map(specs.map((spec) => [spec.name, spec]));
|
|
109
114
|
const byAlias = new Map(specs.filter((spec) => spec.alias).map((spec) => [spec.alias, spec]));
|
|
110
115
|
const values = {};
|
|
116
|
+
const lists = {};
|
|
117
|
+
const record = (name, value) => {
|
|
118
|
+
values[optionKey(name)] = value;
|
|
119
|
+
if (REPEATABLE_FLAGS.has(name))
|
|
120
|
+
(lists[optionKey(name)] ??= []).push(value);
|
|
121
|
+
};
|
|
111
122
|
const operands = [];
|
|
112
123
|
const fail = (message) => ({
|
|
113
124
|
ok: false,
|
|
@@ -137,14 +148,14 @@ export function parse(argv, options = {}) {
|
|
|
137
148
|
continue;
|
|
138
149
|
}
|
|
139
150
|
if (inlineValue !== null) {
|
|
140
|
-
|
|
151
|
+
record(spec.name, inlineValue);
|
|
141
152
|
continue;
|
|
142
153
|
}
|
|
143
154
|
const next = argv[i + 1];
|
|
144
155
|
if (next === undefined || (next.startsWith("-") && next !== "-")) {
|
|
145
156
|
return fail(`flag ${spec.name} requires a value`);
|
|
146
157
|
}
|
|
147
|
-
|
|
158
|
+
record(spec.name, next);
|
|
148
159
|
i++;
|
|
149
160
|
}
|
|
150
161
|
const { command, positionals } = splitCommand(normalizeAliases(operands), commands);
|
|
@@ -168,6 +179,7 @@ export function parse(argv, options = {}) {
|
|
|
168
179
|
help: values.help === true,
|
|
169
180
|
},
|
|
170
181
|
options: extras,
|
|
182
|
+
lists,
|
|
171
183
|
},
|
|
172
184
|
};
|
|
173
185
|
}
|
package/dist/src/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAY7E,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAe,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,KAAK,EAAE,IAAI,CAAC,KAAK;IACjB,IAAI,EAAE,IAAI,CAAC,IAAI;CAChB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/src/client.d.ts
CHANGED
|
@@ -9,9 +9,16 @@
|
|
|
9
9
|
* has a flag which outranks the environment variable.
|
|
10
10
|
*
|
|
11
11
|
* ```
|
|
12
|
-
* CLI flag (--base-url
|
|
12
|
+
* base URL CLI flag (--base-url) > W6W_BASE_URL > stored `baseUrl` > DEFAULT_BASE_URL
|
|
13
|
+
* token CLI flag (--token) > W6W_TOKEN > the stored token for the resolved base URL
|
|
13
14
|
* ```
|
|
14
15
|
*
|
|
16
|
+
* The stored tier is the per-user config `w6w auth login` writes (see
|
|
17
|
+
* `src/config-store.ts`). A stored token is **bound to the base URL it was saved
|
|
18
|
+
* for**: it is looked up by the canonical resolved base URL, exact match only, so
|
|
19
|
+
* pointing `--base-url` or `W6W_BASE_URL` at another host can never send it
|
|
20
|
+
* there. That is the trust boundary of this module.
|
|
21
|
+
*
|
|
15
22
|
* The resolved values are passed to the SDK **explicitly**, and the SDK is never
|
|
16
23
|
* left to read the environment on the CLI's behalf. That is a mechanism choice,
|
|
17
24
|
* not a stylistic one: the CLI has to be able to say *which* source it was
|
|
@@ -25,6 +32,11 @@
|
|
|
25
32
|
*/
|
|
26
33
|
import { type FetchLike, W6WClient } from "@w6w/sdk";
|
|
27
34
|
import type { GlobalOptions } from "./args.ts";
|
|
35
|
+
import { type StoredConfig } from "./config-store.ts";
|
|
36
|
+
/** The API every command targets unless told otherwise. Equals endpoints.json `defaultBaseUrl`. */
|
|
37
|
+
export declare const DEFAULT_BASE_URL = "https://api.w6w.io";
|
|
38
|
+
/** Where a resolved setting came from. */
|
|
39
|
+
export type Source = "flag" | "env" | "config" | "default";
|
|
28
40
|
/**
|
|
29
41
|
* Reads one environment variable, or `undefined` where the host has none.
|
|
30
42
|
*
|
|
@@ -43,8 +55,8 @@ export declare const NO_ENV: EnvReader;
|
|
|
43
55
|
* Read an environment variable, treating a blank value as **absent**.
|
|
44
56
|
*
|
|
45
57
|
* `W6W_BASE_URL=`, `W6W_BASE_URL=" "` and an unset `W6W_BASE_URL` are the same
|
|
46
|
-
* thing: all three fall through the precedence chain to the next source
|
|
47
|
-
*
|
|
58
|
+
* thing: all three fall through the precedence chain to the next source (the
|
|
59
|
+
* stored base URL, then the default).
|
|
48
60
|
*
|
|
49
61
|
* The check is a trim-and-emptiness test and deliberately **not** a nullish
|
|
50
62
|
* coalesce. `??` does not convert `""`, so a set-but-empty variable would
|
|
@@ -64,6 +76,17 @@ export declare const NO_ENV: EnvReader;
|
|
|
64
76
|
* @returns The value, or `undefined` when it is unset or blank.
|
|
65
77
|
*/
|
|
66
78
|
export declare function envValue(env: EnvReader, name: string): string | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Characters that cannot be carried in an HTTP header value: the C0 controls,
|
|
81
|
+
* `DEL`, and anything above the single-byte range.
|
|
82
|
+
*
|
|
83
|
+
* A token is normally opaque ASCII, so this rejects almost nothing real — except
|
|
84
|
+
* the one thing that happens constantly, which is a trailing newline on a token
|
|
85
|
+
* read out of a file (`W6W_TOKEN=$(cat token.txt)`). Left unchecked that reaches
|
|
86
|
+
* the header builder and comes back as a bare `TypeError` from outside anyone's
|
|
87
|
+
* error model: a stack trace, for a typo.
|
|
88
|
+
*/
|
|
89
|
+
export declare function isUnsendable(token: string): boolean;
|
|
67
90
|
/** Anything the caller wants to hand the client beyond the global flags. */
|
|
68
91
|
export interface ClientOptions {
|
|
69
92
|
/**
|
|
@@ -73,7 +96,31 @@ export interface ClientOptions {
|
|
|
73
96
|
fetch?: FetchLike;
|
|
74
97
|
/** Default project id for the project-scoped operations. */
|
|
75
98
|
project?: string;
|
|
99
|
+
/** The stored per-user config, already read. Defaults to nothing stored. */
|
|
100
|
+
stored?: StoredConfig;
|
|
101
|
+
}
|
|
102
|
+
/** The base URL and token one invocation resolves to, with where each came from. */
|
|
103
|
+
export interface ResolvedSettings {
|
|
104
|
+
/** Canonical (the SDK's join: trailing slashes stripped); also the `hosts` key. */
|
|
105
|
+
readonly baseUrl: string;
|
|
106
|
+
readonly baseUrlSource: Source;
|
|
107
|
+
/** Absent when no source holds a token for {@linkcode baseUrl}. */
|
|
108
|
+
readonly token?: string;
|
|
109
|
+
readonly tokenSource?: Source;
|
|
76
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* The one resolver. `createClient` and every `auth` command use it, so what
|
|
113
|
+
* `auth status` reports is what a command will do.
|
|
114
|
+
*
|
|
115
|
+
* Base URL: flag (given, even empty) > env (blank = absent) > stored `baseUrl` >
|
|
116
|
+
* {@linkcode DEFAULT_BASE_URL}, validated, then canonicalised once. Token: flag >
|
|
117
|
+
* env > `stored.hosts[<canonical base URL>]` — exact key only.
|
|
118
|
+
*
|
|
119
|
+
* @throws {ConfigError} When the base URL is blank-by-flag, relative, or not http(s),
|
|
120
|
+
* or a resolved token cannot be sent in a header. A *missing* token is not an
|
|
121
|
+
* error here; `createClient` raises that.
|
|
122
|
+
*/
|
|
123
|
+
export declare function resolveSettings(globals: GlobalOptions, env?: EnvReader, stored?: StoredConfig): ResolvedSettings;
|
|
77
124
|
/**
|
|
78
125
|
* Build the API client for one invocation.
|
|
79
126
|
*
|
|
@@ -83,7 +130,7 @@ export interface ClientOptions {
|
|
|
83
130
|
*
|
|
84
131
|
* @param globals - The parsed global flags.
|
|
85
132
|
* @param env - The environment seam. Defaults to an empty environment.
|
|
86
|
-
* @param options - Transport and
|
|
133
|
+
* @param options - Transport, default project and the stored config.
|
|
87
134
|
* @returns A configured client.
|
|
88
135
|
* @throws {ConfigError} When the base URL or token is missing or unusable — a usage error.
|
|
89
136
|
*/
|
package/dist/src/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAe,KAAK,SAAS,EAAe,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,mGAAmG;AACnG,eAAO,MAAM,gBAAgB,uBAAuB,CAAC;AAErD,0CAA0C;AAC1C,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAE7D,qFAAqF;AACrF,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,SAAS,cAAc,CAAC;AAErC,uFAAuF;AACvF,eAAO,MAAM,MAAM,EAAE,SAA2B,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIzE;AAqDD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnD;AAcD,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,SAAkB,EACvB,MAAM,GAAE,YAAwB,GAC/B,gBAAgB,CAgDlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,aAAa,EACtB,GAAG,GAAE,SAAkB,EACvB,OAAO,GAAE,aAAkB,GAC1B,SAAS,CAqBX"}
|