@nebulr-group/bridge-cli 0.6.5 → 1.0.0-alpha.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.
- package/README.md +93 -460
- package/dist/api/accounts.d.ts +69 -0
- package/dist/api/accounts.d.ts.map +1 -0
- package/dist/api/accounts.js +42 -0
- package/dist/api/accounts.js.map +1 -0
- package/dist/api/apps.d.ts +50 -0
- package/dist/api/apps.d.ts.map +1 -0
- package/dist/api/apps.js +62 -0
- package/dist/api/apps.js.map +1 -0
- package/dist/api/billing.d.ts +131 -0
- package/dist/api/billing.d.ts.map +1 -0
- package/dist/api/billing.js +42 -0
- package/dist/api/billing.js.map +1 -0
- package/dist/api/flags.d.ts +73 -0
- package/dist/api/flags.d.ts.map +1 -0
- package/dist/api/flags.js +108 -0
- package/dist/api/flags.js.map +1 -0
- package/dist/api/keys.d.ts +48 -0
- package/dist/api/keys.d.ts.map +1 -0
- package/dist/api/keys.js +87 -0
- package/dist/api/keys.js.map +1 -0
- package/dist/auth/browser-open.d.ts +21 -4
- package/dist/auth/browser-open.d.ts.map +1 -1
- package/dist/auth/browser-open.js +45 -65
- package/dist/auth/browser-open.js.map +1 -1
- package/dist/auth/lock.d.ts +8 -0
- package/dist/auth/lock.d.ts.map +1 -0
- package/dist/auth/lock.js +43 -0
- package/dist/auth/lock.js.map +1 -0
- package/dist/auth/loopback.d.ts +8 -12
- package/dist/auth/loopback.d.ts.map +1 -1
- package/dist/auth/loopback.js +40 -45
- package/dist/auth/loopback.js.map +1 -1
- package/dist/auth/session.d.ts +61 -0
- package/dist/auth/session.d.ts.map +1 -0
- package/dist/auth/session.js +142 -0
- package/dist/auth/session.js.map +1 -0
- package/dist/auth/sign-in.d.ts +67 -0
- package/dist/auth/sign-in.d.ts.map +1 -0
- package/dist/auth/sign-in.js +113 -0
- package/dist/auth/sign-in.js.map +1 -0
- package/dist/auth/store.d.ts +89 -0
- package/dist/auth/store.d.ts.map +1 -0
- package/dist/auth/store.js +214 -0
- package/dist/auth/store.js.map +1 -0
- package/dist/bin.js +0 -2
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +1 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -17
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +31 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +67 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/accounts.command.d.ts +4 -0
- package/dist/commands/accounts.command.d.ts.map +1 -0
- package/dist/commands/accounts.command.js +116 -0
- package/dist/commands/accounts.command.js.map +1 -0
- package/dist/commands/app.command.d.ts +3 -2
- package/dist/commands/app.command.d.ts.map +1 -1
- package/dist/commands/app.command.js +132 -233
- package/dist/commands/app.command.js.map +1 -1
- package/dist/commands/auth.command.d.ts +2 -12
- package/dist/commands/auth.command.d.ts.map +1 -1
- package/dist/commands/auth.command.js +147 -20
- package/dist/commands/auth.command.js.map +1 -1
- package/dist/commands/billing.command.d.ts +4 -0
- package/dist/commands/billing.command.d.ts.map +1 -0
- package/dist/commands/billing.command.js +185 -0
- package/dist/commands/billing.command.js.map +1 -0
- package/dist/commands/check.command.d.ts +2 -1
- package/dist/commands/check.command.d.ts.map +1 -1
- package/dist/commands/check.command.js +11 -14
- package/dist/commands/check.command.js.map +1 -1
- package/dist/commands/context.d.ts +58 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +78 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/flag.command.d.ts +3 -62
- package/dist/commands/flag.command.d.ts.map +1 -1
- package/dist/commands/flag.command.js +181 -864
- package/dist/commands/flag.command.js.map +1 -1
- package/dist/commands/key.command.d.ts +4 -0
- package/dist/commands/key.command.d.ts.map +1 -0
- package/dist/commands/key.command.js +44 -0
- package/dist/commands/key.command.js.map +1 -0
- package/dist/commands/plan.command.d.ts +3 -203
- package/dist/commands/plan.command.d.ts.map +1 -1
- package/dist/commands/plan.command.js +200 -759
- package/dist/commands/plan.command.js.map +1 -1
- package/dist/config.d.ts +19 -101
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +51 -364
- package/dist/config.js.map +1 -1
- package/dist/core/discovery.d.ts +27 -0
- package/dist/core/discovery.d.ts.map +1 -0
- package/dist/core/discovery.js +97 -0
- package/dist/core/discovery.js.map +1 -0
- package/dist/core/errors.d.ts +26 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +33 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/http.d.ts +23 -0
- package/dist/core/http.d.ts.map +1 -0
- package/dist/core/http.js +153 -0
- package/dist/core/http.js.map +1 -0
- package/dist/core/private-files.d.ts +6 -0
- package/dist/core/private-files.d.ts.map +1 -0
- package/dist/core/private-files.js +96 -0
- package/dist/core/private-files.js.map +1 -0
- package/dist/core/routes.d.ts +94 -0
- package/dist/core/routes.d.ts.map +1 -0
- package/dist/core/routes.js +91 -0
- package/dist/core/routes.js.map +1 -0
- package/dist/core/urls.d.ts +15 -0
- package/dist/core/urls.d.ts.map +1 -0
- package/dist/core/urls.js +55 -0
- package/dist/core/urls.js.map +1 -0
- package/dist/gate-rules.d.ts +1 -2
- package/dist/gate-rules.d.ts.map +1 -1
- package/dist/gate-rules.js +4 -5
- package/dist/gate-rules.js.map +1 -1
- package/dist/index.d.ts +23 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -3
- package/dist/index.js.map +1 -1
- package/dist/io.d.ts +21 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +59 -0
- package/dist/io.js.map +1 -0
- package/dist/money.d.ts +42 -0
- package/dist/money.d.ts.map +1 -0
- package/dist/money.js +112 -0
- package/dist/money.js.map +1 -0
- package/dist/program.d.ts +5 -24
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +25 -113
- package/dist/program.js.map +1 -1
- package/package.json +7 -8
- package/dist/auth/api-client.d.ts +0 -50
- package/dist/auth/api-client.d.ts.map +0 -1
- package/dist/auth/api-client.js +0 -109
- package/dist/auth/api-client.js.map +0 -1
- package/dist/auth/relative-time.d.ts +0 -2
- package/dist/auth/relative-time.d.ts.map +0 -1
- package/dist/auth/relative-time.js +0 -27
- package/dist/auth/relative-time.js.map +0 -1
- package/dist/auth/scopes.d.ts +0 -30
- package/dist/auth/scopes.d.ts.map +0 -1
- package/dist/auth/scopes.js +0 -39
- package/dist/auth/scopes.js.map +0 -1
- package/dist/auth/workspace-client.d.ts +0 -70
- package/dist/auth/workspace-client.d.ts.map +0 -1
- package/dist/auth/workspace-client.js +0 -105
- package/dist/auth/workspace-client.js.map +0 -1
- package/dist/commands/auth/config.command.d.ts +0 -8
- package/dist/commands/auth/config.command.d.ts.map +0 -1
- package/dist/commands/auth/config.command.js +0 -60
- package/dist/commands/auth/config.command.js.map +0 -1
- package/dist/commands/auth/login.command.d.ts +0 -46
- package/dist/commands/auth/login.command.d.ts.map +0 -1
- package/dist/commands/auth/login.command.js +0 -166
- package/dist/commands/auth/login.command.js.map +0 -1
- package/dist/commands/auth/logout.command.d.ts +0 -21
- package/dist/commands/auth/logout.command.d.ts.map +0 -1
- package/dist/commands/auth/logout.command.js +0 -97
- package/dist/commands/auth/logout.command.js.map +0 -1
- package/dist/commands/auth/methods.command.d.ts +0 -68
- package/dist/commands/auth/methods.command.d.ts.map +0 -1
- package/dist/commands/auth/methods.command.js +0 -91
- package/dist/commands/auth/methods.command.js.map +0 -1
- package/dist/commands/auth/status.command.d.ts +0 -18
- package/dist/commands/auth/status.command.d.ts.map +0 -1
- package/dist/commands/auth/status.command.js +0 -104
- package/dist/commands/auth/status.command.js.map +0 -1
- package/dist/commands/auth/use.command.d.ts +0 -17
- package/dist/commands/auth/use.command.d.ts.map +0 -1
- package/dist/commands/auth/use.command.js +0 -47
- package/dist/commands/auth/use.command.js.map +0 -1
- package/dist/commands/branding.command.d.ts +0 -3
- package/dist/commands/branding.command.d.ts.map +0 -1
- package/dist/commands/branding.command.js +0 -42
- package/dist/commands/branding.command.js.map +0 -1
- package/dist/commands/event.command.d.ts +0 -3
- package/dist/commands/event.command.d.ts.map +0 -1
- package/dist/commands/event.command.js +0 -27
- package/dist/commands/event.command.js.map +0 -1
- package/dist/commands/flag-init.command.d.ts +0 -13
- package/dist/commands/flag-init.command.d.ts.map +0 -1
- package/dist/commands/flag-init.command.js +0 -463
- package/dist/commands/flag-init.command.js.map +0 -1
- package/dist/commands/guide.command.d.ts +0 -61
- package/dist/commands/guide.command.d.ts.map +0 -1
- package/dist/commands/guide.command.js +0 -655
- package/dist/commands/guide.command.js.map +0 -1
- package/dist/commands/info.command.d.ts +0 -3
- package/dist/commands/info.command.d.ts.map +0 -1
- package/dist/commands/info.command.js +0 -70
- package/dist/commands/info.command.js.map +0 -1
- package/dist/commands/integration.command.d.ts +0 -35
- package/dist/commands/integration.command.d.ts.map +0 -1
- package/dist/commands/integration.command.js +0 -290
- package/dist/commands/integration.command.js.map +0 -1
- package/dist/commands/journeys.d.ts +0 -43
- package/dist/commands/journeys.d.ts.map +0 -1
- package/dist/commands/journeys.js +0 -221
- package/dist/commands/journeys.js.map +0 -1
- package/dist/commands/ops.command.d.ts +0 -17
- package/dist/commands/ops.command.d.ts.map +0 -1
- package/dist/commands/ops.command.js +0 -129
- package/dist/commands/ops.command.js.map +0 -1
- package/dist/commands/privilege.command.d.ts +0 -16
- package/dist/commands/privilege.command.d.ts.map +0 -1
- package/dist/commands/privilege.command.js +0 -86
- package/dist/commands/privilege.command.js.map +0 -1
- package/dist/commands/role.command.d.ts +0 -3
- package/dist/commands/role.command.d.ts.map +0 -1
- package/dist/commands/role.command.js +0 -101
- package/dist/commands/role.command.js.map +0 -1
- package/dist/commands/runtime-dir.d.ts +0 -16
- package/dist/commands/runtime-dir.d.ts.map +0 -1
- package/dist/commands/runtime-dir.js +0 -18
- package/dist/commands/runtime-dir.js.map +0 -1
- package/dist/commands/setup.command.d.ts +0 -63
- package/dist/commands/setup.command.d.ts.map +0 -1
- package/dist/commands/setup.command.js +0 -148
- package/dist/commands/setup.command.js.map +0 -1
- package/dist/commands/stripe.command.d.ts +0 -29
- package/dist/commands/stripe.command.d.ts.map +0 -1
- package/dist/commands/stripe.command.js +0 -99
- package/dist/commands/stripe.command.js.map +0 -1
- package/dist/commands/tenant.command.d.ts +0 -3
- package/dist/commands/tenant.command.d.ts.map +0 -1
- package/dist/commands/tenant.command.js +0 -135
- package/dist/commands/tenant.command.js.map +0 -1
- package/dist/commands/token.command.d.ts +0 -3
- package/dist/commands/token.command.d.ts.map +0 -1
- package/dist/commands/token.command.js +0 -54
- package/dist/commands/token.command.js.map +0 -1
- package/dist/commands/user.command.d.ts +0 -3
- package/dist/commands/user.command.d.ts.map +0 -1
- package/dist/commands/user.command.js +0 -117
- package/dist/commands/user.command.js.map +0 -1
- package/dist/credentials.d.ts +0 -141
- package/dist/credentials.d.ts.map +0 -1
- package/dist/credentials.js +0 -348
- package/dist/credentials.js.map +0 -1
- package/dist/flag-coherence.d.ts +0 -42
- package/dist/flag-coherence.d.ts.map +0 -1
- package/dist/flag-coherence.js +0 -103
- package/dist/flag-coherence.js.map +0 -1
- package/dist/output.d.ts +0 -17
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js +0 -107
- package/dist/output.js.map +0 -1
- package/dist/preview.d.ts +0 -9
- package/dist/preview.d.ts.map +0 -1
- package/dist/preview.js +0 -63
- package/dist/preview.js.map +0 -1
- package/dist/product-decisions.d.ts +0 -40
- package/dist/product-decisions.d.ts.map +0 -1
- package/dist/product-decisions.js +0 -52
- package/dist/product-decisions.js.map +0 -1
- package/dist/prompt-urls.d.ts +0 -31
- package/dist/prompt-urls.d.ts.map +0 -1
- package/dist/prompt-urls.js +0 -35
- package/dist/prompt-urls.js.map +0 -1
- package/dist/prompts/auth-master-integration-prompt.md +0 -255
- package/dist/prompts/billing/master.md +0 -332
- package/dist/prompts/decisions/feature-control.md +0 -131
- package/dist/prompts/decisions/going-live.md +0 -60
- package/dist/prompts/decisions/login.md +0 -71
- package/dist/prompts/decisions/look-and-feel.md +0 -68
- package/dist/prompts/decisions/payments.md +0 -97
- package/dist/prompts/decisions/roles.md +0 -78
- package/dist/prompts/decisions/teams.md +0 -61
- package/dist/prompts/fit-together.md +0 -97
- package/dist/prompts/flags/master.md +0 -220
- package/dist/prompts/guide-coverage.json +0 -17
- package/dist/prompts/integration-success.md +0 -106
- package/dist/prompts/mcp-tools.json +0 -90
- package/dist/prompts/mechanisms.md +0 -298
- package/dist/prompts/orientation.md +0 -42
- package/dist/prompts/product-decisions.json +0 -338
- package/dist/resolve.d.ts +0 -110
- package/dist/resolve.d.ts.map +0 -1
- package/dist/resolve.js +0 -260
- package/dist/resolve.js.map +0 -1
- package/dist/shape.d.ts +0 -25
- package/dist/shape.d.ts.map +0 -1
- package/dist/shape.js +0 -74
- package/dist/shape.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sign-in.js","sourceRoot":"","sources":["../../src/auth/sign-in.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where the developer's session is kept between commands: the operating
|
|
3
|
+
* system's keychain when there is one, else a file only its owner can read
|
|
4
|
+
* (mode 0600, in a 0700 directory). One session per issuer.
|
|
5
|
+
*/
|
|
6
|
+
export interface StoredSession {
|
|
7
|
+
readonly issuer: string;
|
|
8
|
+
/** The app the issuer signs in to (the Bridge App). */
|
|
9
|
+
readonly appId: string;
|
|
10
|
+
readonly accessToken: string;
|
|
11
|
+
/** When the access token expires, in ms since the epoch. */
|
|
12
|
+
readonly accessTokenExpiresAt: number;
|
|
13
|
+
readonly refreshToken: string | null;
|
|
14
|
+
/** The workspace the tokens are for, when they are for one. */
|
|
15
|
+
readonly workspace: string | null;
|
|
16
|
+
readonly signedInAt: number;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionStore {
|
|
19
|
+
/** `keychain` or `file`, and where. */
|
|
20
|
+
describe(): string;
|
|
21
|
+
read(issuer: string): Promise<StoredSession | null>;
|
|
22
|
+
write(session: StoredSession): Promise<void>;
|
|
23
|
+
remove(issuer: string): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export interface RunResult {
|
|
26
|
+
readonly code: number;
|
|
27
|
+
readonly stdout: string;
|
|
28
|
+
readonly stderr: string;
|
|
29
|
+
}
|
|
30
|
+
/** Runs a program with the given standard input. Secrets go on stdin, never in arguments. */
|
|
31
|
+
export type Runner = (command: string, args: readonly string[], input?: string) => Promise<RunResult>;
|
|
32
|
+
export declare const runProgram: Runner;
|
|
33
|
+
/** Sessions in `<dir>/sessions.json`, readable only by its owner (see `private-files`). */
|
|
34
|
+
export declare class FileStore implements SessionStore {
|
|
35
|
+
private readonly dir;
|
|
36
|
+
constructor(dir: string);
|
|
37
|
+
describe(): string;
|
|
38
|
+
private all;
|
|
39
|
+
private save;
|
|
40
|
+
read(issuer: string): Promise<StoredSession | null>;
|
|
41
|
+
write(session: StoredSession): Promise<void>;
|
|
42
|
+
remove(issuer: string): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
/** macOS: the login keychain, through `security`. */
|
|
45
|
+
export declare class MacKeychainStore implements SessionStore {
|
|
46
|
+
private readonly run;
|
|
47
|
+
constructor(run: Runner);
|
|
48
|
+
describe(): string;
|
|
49
|
+
read(issuer: string): Promise<StoredSession | null>;
|
|
50
|
+
write(session: StoredSession): Promise<void>;
|
|
51
|
+
remove(issuer: string): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/** Linux: the Secret Service (GNOME Keyring, KWallet), through `secret-tool`. */
|
|
54
|
+
export declare class SecretToolStore implements SessionStore {
|
|
55
|
+
private readonly run;
|
|
56
|
+
constructor(run: Runner);
|
|
57
|
+
describe(): string;
|
|
58
|
+
read(issuer: string): Promise<StoredSession | null>;
|
|
59
|
+
write(session: StoredSession): Promise<void>;
|
|
60
|
+
remove(issuer: string): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The keychain first, the file when the keychain cannot keep it. A session
|
|
64
|
+
* is read from wherever it is, and removed from both.
|
|
65
|
+
*/
|
|
66
|
+
export declare class KeychainWithFileStore implements SessionStore {
|
|
67
|
+
private readonly keychain;
|
|
68
|
+
private readonly file;
|
|
69
|
+
private readonly warn;
|
|
70
|
+
constructor(keychain: SessionStore, file: FileStore, warn: (message: string) => void);
|
|
71
|
+
describe(): string;
|
|
72
|
+
read(issuer: string): Promise<StoredSession | null>;
|
|
73
|
+
write(session: StoredSession): Promise<void>;
|
|
74
|
+
remove(issuer: string): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
export interface StoreOptions {
|
|
77
|
+
readonly dir: string;
|
|
78
|
+
readonly env: NodeJS.ProcessEnv;
|
|
79
|
+
readonly platform?: NodeJS.Platform;
|
|
80
|
+
readonly run?: Runner;
|
|
81
|
+
readonly warn?: (message: string) => void;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The store to use. `BRIDGE_TOKEN_STORE=file` forces the file (headless
|
|
85
|
+
* machines, CI); `keychain` forces the keychain; by default the keychain is
|
|
86
|
+
* used when this machine has one.
|
|
87
|
+
*/
|
|
88
|
+
export declare function chooseStore(options: StoreOptions): SessionStore;
|
|
89
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { delimiter, join } from 'node:path';
|
|
4
|
+
import { CliError } from '../core/errors.js';
|
|
5
|
+
import { readPrivateFile, removePrivateFile, writePrivateFile } from '../core/private-files.js';
|
|
6
|
+
export const runProgram = (command, args, input) => new Promise((resolve) => {
|
|
7
|
+
let stdout = '';
|
|
8
|
+
let stderr = '';
|
|
9
|
+
let child;
|
|
10
|
+
try {
|
|
11
|
+
child = spawn(command, [...args], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
resolve({ code: 127, stdout: '', stderr: error instanceof Error ? error.message : String(error) });
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
child.stdout.on('data', (chunk) => (stdout += chunk.toString('utf8')));
|
|
18
|
+
child.stderr.on('data', (chunk) => (stderr += chunk.toString('utf8')));
|
|
19
|
+
child.on('error', (error) => resolve({ code: 127, stdout, stderr: error.message }));
|
|
20
|
+
child.on('close', (code) => resolve({ code: code ?? 1, stdout, stderr }));
|
|
21
|
+
child.stdin.end(input ?? '');
|
|
22
|
+
});
|
|
23
|
+
function isSession(value) {
|
|
24
|
+
if (typeof value !== 'object' || value === null)
|
|
25
|
+
return false;
|
|
26
|
+
const s = value;
|
|
27
|
+
return typeof s['issuer'] === 'string' && typeof s['appId'] === 'string' && typeof s['accessToken'] === 'string' && typeof s['accessTokenExpiresAt'] === 'number';
|
|
28
|
+
}
|
|
29
|
+
// ── File ─────────────────────────────────────────────────────────────────────
|
|
30
|
+
const FILE = 'sessions.json';
|
|
31
|
+
/** Sessions in `<dir>/sessions.json`, readable only by its owner (see `private-files`). */
|
|
32
|
+
export class FileStore {
|
|
33
|
+
dir;
|
|
34
|
+
constructor(dir) {
|
|
35
|
+
this.dir = dir;
|
|
36
|
+
}
|
|
37
|
+
describe() {
|
|
38
|
+
return `file ${join(this.dir, FILE)}`;
|
|
39
|
+
}
|
|
40
|
+
async all() {
|
|
41
|
+
const raw = await readPrivateFile(this.dir, FILE);
|
|
42
|
+
if (raw === null)
|
|
43
|
+
return {};
|
|
44
|
+
try {
|
|
45
|
+
const parsed = JSON.parse(raw);
|
|
46
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
47
|
+
return {};
|
|
48
|
+
return Object.fromEntries(Object.entries(parsed).filter((entry) => isSession(entry[1])));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async save(all) {
|
|
55
|
+
await writePrivateFile(this.dir, FILE, JSON.stringify(all, null, 2) + '\n');
|
|
56
|
+
}
|
|
57
|
+
async read(issuer) {
|
|
58
|
+
return (await this.all())[issuer] ?? null;
|
|
59
|
+
}
|
|
60
|
+
async write(session) {
|
|
61
|
+
const all = await this.all();
|
|
62
|
+
all[session.issuer] = session;
|
|
63
|
+
await this.save(all);
|
|
64
|
+
}
|
|
65
|
+
async remove(issuer) {
|
|
66
|
+
const all = await this.all();
|
|
67
|
+
if (!(issuer in all))
|
|
68
|
+
return;
|
|
69
|
+
delete all[issuer];
|
|
70
|
+
if (Object.keys(all).length === 0) {
|
|
71
|
+
await removePrivateFile(this.dir, FILE);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
await this.save(all);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// ── Keychain ─────────────────────────────────────────────────────────────────
|
|
78
|
+
const SERVICE = 'bridge-cli';
|
|
79
|
+
/** The session as one base64 text, so it passes through a keychain tool with no quoting. */
|
|
80
|
+
function encode(session) {
|
|
81
|
+
return Buffer.from(JSON.stringify(session), 'utf8').toString('base64');
|
|
82
|
+
}
|
|
83
|
+
function decode(text) {
|
|
84
|
+
try {
|
|
85
|
+
const parsed = JSON.parse(Buffer.from(text.trim(), 'base64').toString('utf8'));
|
|
86
|
+
return isSession(parsed) ? parsed : null;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** The account name a session is kept under: the issuer, which a URL parser has already encoded. */
|
|
93
|
+
function account(issuer) {
|
|
94
|
+
if (/["'\\\s]/.test(issuer))
|
|
95
|
+
throw new CliError('misconfigured', 'The issuer has characters a keychain entry cannot be named with.');
|
|
96
|
+
return issuer;
|
|
97
|
+
}
|
|
98
|
+
/** macOS: the login keychain, through `security`. */
|
|
99
|
+
export class MacKeychainStore {
|
|
100
|
+
run;
|
|
101
|
+
constructor(run) {
|
|
102
|
+
this.run = run;
|
|
103
|
+
}
|
|
104
|
+
describe() {
|
|
105
|
+
return 'macOS keychain';
|
|
106
|
+
}
|
|
107
|
+
async read(issuer) {
|
|
108
|
+
const found = await this.run('security', ['find-generic-password', '-s', SERVICE, '-a', account(issuer), '-w']);
|
|
109
|
+
return found.code === 0 ? decode(found.stdout) : null;
|
|
110
|
+
}
|
|
111
|
+
async write(session) {
|
|
112
|
+
// `security -i` reads the command from stdin, so the secret never shows in the process list.
|
|
113
|
+
const line = `add-generic-password -U -s ${SERVICE} -a "${account(session.issuer)}" -l "Bridge CLI session" -w "${encode(session)}"\n`;
|
|
114
|
+
const done = await this.run('security', ['-i'], line);
|
|
115
|
+
if (done.code !== 0 || /error/i.test(done.stderr))
|
|
116
|
+
throw new Error(`The keychain refused the session: ${done.stderr.trim()}`);
|
|
117
|
+
}
|
|
118
|
+
async remove(issuer) {
|
|
119
|
+
await this.run('security', ['delete-generic-password', '-s', SERVICE, '-a', account(issuer)]);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/** Linux: the Secret Service (GNOME Keyring, KWallet), through `secret-tool`. */
|
|
123
|
+
export class SecretToolStore {
|
|
124
|
+
run;
|
|
125
|
+
constructor(run) {
|
|
126
|
+
this.run = run;
|
|
127
|
+
}
|
|
128
|
+
describe() {
|
|
129
|
+
return 'Secret Service keyring';
|
|
130
|
+
}
|
|
131
|
+
async read(issuer) {
|
|
132
|
+
const found = await this.run('secret-tool', ['lookup', 'service', SERVICE, 'account', account(issuer)]);
|
|
133
|
+
return found.code === 0 ? decode(found.stdout) : null;
|
|
134
|
+
}
|
|
135
|
+
async write(session) {
|
|
136
|
+
const done = await this.run('secret-tool', ['store', '--label=Bridge CLI session', 'service', SERVICE, 'account', account(session.issuer)], encode(session));
|
|
137
|
+
if (done.code !== 0)
|
|
138
|
+
throw new Error(`The keyring refused the session: ${done.stderr.trim()}`);
|
|
139
|
+
}
|
|
140
|
+
async remove(issuer) {
|
|
141
|
+
await this.run('secret-tool', ['clear', 'service', SERVICE, 'account', account(issuer)]);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* The keychain first, the file when the keychain cannot keep it. A session
|
|
146
|
+
* is read from wherever it is, and removed from both.
|
|
147
|
+
*/
|
|
148
|
+
export class KeychainWithFileStore {
|
|
149
|
+
keychain;
|
|
150
|
+
file;
|
|
151
|
+
warn;
|
|
152
|
+
constructor(keychain, file, warn) {
|
|
153
|
+
this.keychain = keychain;
|
|
154
|
+
this.file = file;
|
|
155
|
+
this.warn = warn;
|
|
156
|
+
}
|
|
157
|
+
describe() {
|
|
158
|
+
return this.keychain.describe();
|
|
159
|
+
}
|
|
160
|
+
async read(issuer) {
|
|
161
|
+
return (await this.keychain.read(issuer)) ?? (await this.file.read(issuer));
|
|
162
|
+
}
|
|
163
|
+
async write(session) {
|
|
164
|
+
try {
|
|
165
|
+
await this.keychain.write(session);
|
|
166
|
+
// Read it back: a keychain tool that cut a long entry short must not leave a session that cannot be read.
|
|
167
|
+
const back = await this.keychain.read(session.issuer);
|
|
168
|
+
if (back === null || JSON.stringify(back) !== JSON.stringify(session)) {
|
|
169
|
+
await this.keychain.remove(session.issuer).catch(() => undefined);
|
|
170
|
+
throw new Error('The keychain did not keep the session whole.');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
this.warn(`${error instanceof Error ? error.message : String(error)} Keeping it in ${this.file.describe()} instead.`);
|
|
175
|
+
await this.file.write(session);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
await this.file.remove(session.issuer);
|
|
179
|
+
}
|
|
180
|
+
async remove(issuer) {
|
|
181
|
+
await this.keychain.remove(issuer);
|
|
182
|
+
await this.file.remove(issuer);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function onPath(program, env) {
|
|
186
|
+
return (env['PATH'] ?? '').split(delimiter).some((dir) => dir !== '' && existsSync(join(dir, program)));
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* The store to use. `BRIDGE_TOKEN_STORE=file` forces the file (headless
|
|
190
|
+
* machines, CI); `keychain` forces the keychain; by default the keychain is
|
|
191
|
+
* used when this machine has one.
|
|
192
|
+
*/
|
|
193
|
+
export function chooseStore(options) {
|
|
194
|
+
const platform = options.platform ?? process.platform;
|
|
195
|
+
const run = options.run ?? runProgram;
|
|
196
|
+
const warn = options.warn ?? ((message) => process.stderr.write(`${message}\n`));
|
|
197
|
+
const file = new FileStore(options.dir);
|
|
198
|
+
const wanted = (options.env['BRIDGE_TOKEN_STORE'] ?? 'auto').toLowerCase();
|
|
199
|
+
if (wanted === 'file')
|
|
200
|
+
return file;
|
|
201
|
+
let keychain = null;
|
|
202
|
+
if (platform === 'darwin' && (wanted === 'keychain' || existsSync('/usr/bin/security')))
|
|
203
|
+
keychain = new MacKeychainStore(run);
|
|
204
|
+
if (platform === 'linux' && (wanted === 'keychain' || (onPath('secret-tool', options.env) && options.env['DBUS_SESSION_BUS_ADDRESS']))) {
|
|
205
|
+
keychain = new SecretToolStore(run);
|
|
206
|
+
}
|
|
207
|
+
if (keychain === null) {
|
|
208
|
+
if (wanted === 'keychain')
|
|
209
|
+
throw new CliError('misconfigured', 'This machine has no keychain the CLI can use.', { hint: 'Unset BRIDGE_TOKEN_STORE, or set it to file.' });
|
|
210
|
+
return file;
|
|
211
|
+
}
|
|
212
|
+
return new KeychainWithFileStore(keychain, file, warn);
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/auth/store.ts"],"names":[],"mappings":"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"}
|
package/dist/bin.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { program } from './cli.js';
|
|
3
3
|
program.parseAsync(process.argv).catch(() => {
|
|
4
|
-
// Keep a more specific code already set (e.g. 3 for a config error printed
|
|
5
|
-
// by the preAction hook before it aborted the action).
|
|
6
4
|
if (!process.exitCode)
|
|
7
5
|
process.exitCode = 1;
|
|
8
6
|
});
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;IAC1C,
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;IAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC"}
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,OAAO,6BAQnB,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { fileURLToPath } from 'node:url';
|
|
3
2
|
import { dirname, join } from 'node:path';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
const
|
|
10
|
-
const { version } = JSON.parse(readFileSync(
|
|
11
|
-
export const program =
|
|
12
|
-
|
|
13
|
-
.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
// within that login), plus the preAction hook that applies them.
|
|
18
|
-
registerGlobalOptions(program);
|
|
19
|
-
registerCommands(program);
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { openBrowser } from './auth/browser-open.js';
|
|
5
|
+
import { processIo } from './io.js';
|
|
6
|
+
import { buildProgram } from './program.js';
|
|
7
|
+
// dist/cli.js sits at <package>/dist/cli.js, so the version is in ../package.json.
|
|
8
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const { version } = JSON.parse(readFileSync(join(here, '..', 'package.json'), 'utf8'));
|
|
10
|
+
export const program = buildProgram({
|
|
11
|
+
fetch: (input, init) => fetch(input, init),
|
|
12
|
+
env: process.env,
|
|
13
|
+
io: processIo,
|
|
14
|
+
openBrowser,
|
|
15
|
+
}, version);
|
|
20
16
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,mFAAmF;AACnF,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAE9G,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CACjC;IACE,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC;IAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,EAAE,EAAE,SAAS;IACb,WAAW;CACZ,EACD,OAAO,CACR,CAAC"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Sessions } from './auth/session.js';
|
|
2
|
+
import type { Discovery } from './core/discovery.js';
|
|
3
|
+
import { type Fetch, type HttpResponse } from './core/http.js';
|
|
4
|
+
import { type RouteName } from './core/routes.js';
|
|
5
|
+
export interface CallOptions {
|
|
6
|
+
readonly params?: Readonly<Record<string, string>>;
|
|
7
|
+
readonly query?: Readonly<Record<string, string | undefined>>;
|
|
8
|
+
readonly body?: unknown;
|
|
9
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
10
|
+
}
|
|
11
|
+
export interface KeyCallOptions extends CallOptions {
|
|
12
|
+
/** For routes that act in one workspace of the app. */
|
|
13
|
+
readonly workspace?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Calls Bridge's version 2 API for the signed-in developer. Every call is a
|
|
17
|
+
* named route from {@link ROUTES}; its address is the microservice's base
|
|
18
|
+
* from the issuer's metadata plus the route's path.
|
|
19
|
+
*/
|
|
20
|
+
export declare class BridgeClient {
|
|
21
|
+
readonly discovery: Discovery;
|
|
22
|
+
private readonly fetchFn;
|
|
23
|
+
readonly sessions: Sessions;
|
|
24
|
+
constructor(discovery: Discovery, fetchFn: Fetch, sessions: Sessions);
|
|
25
|
+
url(name: RouteName, params?: Readonly<Record<string, string>>, query?: Readonly<Record<string, string | undefined>>): string;
|
|
26
|
+
/** A call with the developer's token. Renewed first when it is about to expire, and once more if Bridge refuses it. */
|
|
27
|
+
person<T = unknown>(name: RouteName, options?: CallOptions): Promise<HttpResponse<T>>;
|
|
28
|
+
/** A call with an app key, for the routes version 2 offers only to the app's own server. */
|
|
29
|
+
withKey<T = unknown>(name: RouteName, key: string, options?: KeyCallOptions): Promise<HttpResponse<T>>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAQ,KAAK,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,uDAAuD;IACvD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAErB,QAAQ,CAAC,SAAS,EAAE,SAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ;gBAFlB,SAAS,EAAE,SAAS,EACZ,OAAO,EAAE,KAAK,EACtB,QAAQ,EAAE,QAAQ;IAG7B,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EAAE,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAM,GAAG,MAAM;IAOrI,uHAAuH;IACjH,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAkB/F,4FAA4F;IACtF,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAiBjH"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { CliError } from './core/errors.js';
|
|
2
|
+
import { call } from './core/http.js';
|
|
3
|
+
import { ROUTES } from './core/routes.js';
|
|
4
|
+
import { fillPath } from './core/urls.js';
|
|
5
|
+
/**
|
|
6
|
+
* Calls Bridge's version 2 API for the signed-in developer. Every call is a
|
|
7
|
+
* named route from {@link ROUTES}; its address is the microservice's base
|
|
8
|
+
* from the issuer's metadata plus the route's path.
|
|
9
|
+
*/
|
|
10
|
+
export class BridgeClient {
|
|
11
|
+
discovery;
|
|
12
|
+
fetchFn;
|
|
13
|
+
sessions;
|
|
14
|
+
constructor(discovery, fetchFn, sessions) {
|
|
15
|
+
this.discovery = discovery;
|
|
16
|
+
this.fetchFn = fetchFn;
|
|
17
|
+
this.sessions = sessions;
|
|
18
|
+
}
|
|
19
|
+
url(name, params = {}, query = {}) {
|
|
20
|
+
const route = ROUTES[name];
|
|
21
|
+
const url = new URL(this.discovery.bases[route.service] + fillPath(route.path, { issuerApp: this.discovery.appId, ...params }));
|
|
22
|
+
for (const [key, value] of Object.entries(query))
|
|
23
|
+
if (value !== undefined)
|
|
24
|
+
url.searchParams.set(key, value);
|
|
25
|
+
return url.toString();
|
|
26
|
+
}
|
|
27
|
+
/** A call with the developer's token. Renewed first when it is about to expire, and once more if Bridge refuses it. */
|
|
28
|
+
async person(name, options = {}) {
|
|
29
|
+
const route = ROUTES[name];
|
|
30
|
+
if (route.auth !== 'person')
|
|
31
|
+
throw new Error(`${name} does not take the developer's token.`);
|
|
32
|
+
const send = (token) => call(this.fetchFn, {
|
|
33
|
+
method: route.method,
|
|
34
|
+
url: this.url(name, options.params, options.query),
|
|
35
|
+
headers: { ...options.headers, authorization: `Bearer ${token}` },
|
|
36
|
+
body: options.body,
|
|
37
|
+
});
|
|
38
|
+
try {
|
|
39
|
+
return await send(await this.sessions.accessToken(this.discovery));
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (!(error instanceof CliError) || error.status !== 401 || error.kind === 'reauthenticate')
|
|
43
|
+
throw error;
|
|
44
|
+
return send(await this.sessions.accessToken(this.discovery, { force: true }));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** A call with an app key, for the routes version 2 offers only to the app's own server. */
|
|
48
|
+
async withKey(name, key, options = {}) {
|
|
49
|
+
const route = ROUTES[name];
|
|
50
|
+
if (route.auth !== 'app-key')
|
|
51
|
+
throw new Error(`${name} does not take an app key.`);
|
|
52
|
+
if ('workspace' in route && options.workspace === undefined) {
|
|
53
|
+
throw new CliError('invalid', 'Name the workspace with --workspace <id> (`bridge workspace list` shows them).');
|
|
54
|
+
}
|
|
55
|
+
return call(this.fetchFn, {
|
|
56
|
+
method: route.method,
|
|
57
|
+
url: this.url(name, options.params, options.query),
|
|
58
|
+
headers: {
|
|
59
|
+
...options.headers,
|
|
60
|
+
'x-api-key': key,
|
|
61
|
+
...(options.workspace === undefined ? {} : { 'bridge-workspace': options.workspace }),
|
|
62
|
+
},
|
|
63
|
+
body: options.body,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.command.d.ts","sourceRoot":"","sources":["../../src/commands/accounts.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAiC,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AAuBxE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAqH1E"}
|