@nebulr-group/bridge-cli 0.6.6 → 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 -304
- 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
package/dist/gate-rules.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-rules.d.ts","sourceRoot":"","sources":["../src/gate-rules.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gate-rules.d.ts","sourceRoot":"","sources":["../src/gate-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,cAAc,GAAG,WAAW,GAAG,aAAa,CAAC;AAE3F,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AA2B7D,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;CAC7C,CAAC;AAKF,eAAO,MAAM,WAAW,EAAE,SAAS,EA8ClC,CAAC;AAIF,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB5E;AAED,eAAO,MAAM,iBAAiB,UAAoE,CAAC;AACnG,eAAO,MAAM,YAAY,aAGvB,CAAC;AAEH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIrD;AAID,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAgCjD,CAAC;AAOF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAsBlE"}
|
package/dist/gate-rules.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* is a flag. Its rule says why (a privilege, a plan feature, a rollout); app
|
|
2
|
+
* The rule for app code: every gate in app code is a flag. Its rule says why (a privilege, a plan feature, a rollout); app
|
|
4
3
|
* code never reads a role, a privilege list, the plan or a plan feature to
|
|
5
4
|
* decide what someone may see or do. Numbers (plan limits) and permission on
|
|
6
5
|
* one specific record are not gates.
|
|
@@ -55,13 +54,13 @@ export const CODE_CHECKS = [
|
|
|
55
54
|
{ kind: 'plan-feature', pattern: /<Entitled\b[^>]*?\bto=(.*)/, instead: (m) => planFeatureInstead(leadingLiteral(m[1])) },
|
|
56
55
|
{ kind: 'plan-feature', pattern: /\bentitlements\s*\??\.\s*can\s*\((.*)/, instead: (m) => planFeatureInstead(leadingLiteral(m[1])) },
|
|
57
56
|
{ kind: 'plan-feature', pattern: /@RequireEntitlement\s*\((.*)/, instead: (m) => planFeatureInstead(leadingLiteral(m[1])) },
|
|
58
|
-
// Express twin of `@RequireEntitlement` (bridge-express 0.7
|
|
57
|
+
// Express twin of `@RequireEntitlement` (bridge-express 0.7).
|
|
59
58
|
{ kind: 'plan-feature', pattern: /\brequireEntitlement\s*\((.*)/, instead: (m) => planFeatureInstead(leadingLiteral(m[1])) },
|
|
60
59
|
// Plan names compared
|
|
61
60
|
{ kind: 'plan-name', pattern: /\bplan(?:Key|Name|Slug|Id)?\s*(?:===|!==|==|!=)\s*['"`]/i, instead: () => PLAN_NAME_INSTEAD },
|
|
62
61
|
{ kind: 'plan-name', pattern: /\.plan(?:\??\.(?:key|slug|name|id))?\s*(?:===|!==|==|!=)\s*['"`]/, instead: () => PLAN_NAME_INSTEAD },
|
|
63
62
|
{ kind: 'plan-name', pattern: /\bis(?:Pro|Free|Enterprise|Team|Business|Premium)(?:Plan|User)?\b\s*[(=]/, instead: () => PLAN_NAME_INSTEAD },
|
|
64
|
-
// bridge-express 0.7
|
|
63
|
+
// bridge-express 0.7 removed `protect({ role | plans | entitlement | entitlements })`;
|
|
65
64
|
// each now fails at startup. `plans: [` is caught by the rule below.
|
|
66
65
|
{
|
|
67
66
|
kind: 'removed-api',
|
|
@@ -145,7 +144,7 @@ export const DOC_FORBIDDEN = [
|
|
|
145
144
|
/\b(?:browser|frontend|client)(?:[- ](?:only|side))?\b[^.\n]{0,40}\b(?:won't|will not|does not|doesn't|cannot|can't|can not) (?:work|enforce|be trusted)/i,
|
|
146
145
|
],
|
|
147
146
|
['browser counting said not production-ready', /\b(?:browser|frontend|client)\b[^.\n]{0,60}\bnot (?:production|prod)[- ](?:ready|grade)/i],
|
|
148
|
-
//
|
|
147
|
+
// `contains` on privileges is exact membership; advice written around the old substring match is stale.
|
|
149
148
|
['privileges said to match as text', /\b(?:matched|matches|match) (?:privilege keys )?as text\b|\bno other (?:privilege )?key contains\b/i],
|
|
150
149
|
];
|
|
151
150
|
/** A sentence that tells the reader NOT to do the forbidden thing. */
|
package/dist/gate-rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate-rules.js","sourceRoot":"","sources":["../src/gate-rules.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gate-rules.js","sourceRoot":"","sources":["../src/gate-rules.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's operations as a library: every command is a plain function over
|
|
3
|
+
* one client, so another front end (an MCP server, a script) can call the
|
|
4
|
+
* same operations with the same pinned endpoints.
|
|
5
|
+
*/
|
|
6
|
+
export { BridgeClient } from './client.js';
|
|
7
|
+
export type { CallOptions, KeyCallOptions } from './client.js';
|
|
8
|
+
export { discover, readMetadata } from './core/discovery.js';
|
|
9
|
+
export type { Discovery } from './core/discovery.js';
|
|
10
|
+
export { CliError, isCliError } from './core/errors.js';
|
|
11
|
+
export type { CliErrorKind } from './core/errors.js';
|
|
12
|
+
export { API_VERSION, ROUTES, contractPath } from './core/routes.js';
|
|
13
|
+
export type { Route, RouteName } from './core/routes.js';
|
|
14
|
+
export { Sessions } from './auth/session.js';
|
|
15
|
+
export { chooseStore, FileStore } from './auth/store.js';
|
|
16
|
+
export type { SessionStore, StoredSession } from './auth/store.js';
|
|
17
|
+
export { signInWithBrowser, signInWithPassword } from './auth/sign-in.js';
|
|
18
|
+
export { apps } from './api/apps.js';
|
|
19
|
+
export { keys, withAppKey } from './api/keys.js';
|
|
20
|
+
export { plans, products, metrics, taxes, billingSettings, connection } from './api/billing.js';
|
|
21
|
+
export { flags, parseCondition } from './api/flags.js';
|
|
22
|
+
export { roles, privileges, workspaces, members } from './api/accounts.js';
|
|
23
|
+
export { buildProgram } from './program.js';
|
|
4
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The CLI's operations as a library: every command is a plain function over
|
|
3
|
+
* one client, so another front end (an MCP server, a script) can call the
|
|
4
|
+
* same operations with the same pinned endpoints.
|
|
5
|
+
*/
|
|
6
|
+
export { BridgeClient } from './client.js';
|
|
7
|
+
export { discover, readMetadata } from './core/discovery.js';
|
|
8
|
+
export { CliError, isCliError } from './core/errors.js';
|
|
9
|
+
export { API_VERSION, ROUTES, contractPath } from './core/routes.js';
|
|
10
|
+
export { Sessions } from './auth/session.js';
|
|
11
|
+
export { chooseStore, FileStore } from './auth/store.js';
|
|
12
|
+
export { signInWithBrowser, signInWithPassword } from './auth/sign-in.js';
|
|
13
|
+
export { apps } from './api/apps.js';
|
|
14
|
+
export { keys, withAppKey } from './api/keys.js';
|
|
15
|
+
export { plans, products, metrics, taxes, billingSettings, connection } from './api/billing.js';
|
|
16
|
+
export { flags, parseCondition } from './api/flags.js';
|
|
17
|
+
export { roles, privileges, workspaces, members } from './api/accounts.js';
|
|
18
|
+
export { buildProgram } from './program.js';
|
|
4
19
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/io.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a command's output goes. Results are JSON on stdout,
|
|
3
|
+
* `{ "success": true, "data": … }`, so scripts and coding agents can read
|
|
4
|
+
* them; errors are JSON on stderr, `{ "success": false, "error": … }`;
|
|
5
|
+
* messages for the person at the terminal go to stderr as plain text.
|
|
6
|
+
*/
|
|
7
|
+
export interface Io {
|
|
8
|
+
result(data: unknown): void;
|
|
9
|
+
/** Plain text on stdout, for reports meant to be read as they are. */
|
|
10
|
+
text(content: string): void;
|
|
11
|
+
info(message: string): void;
|
|
12
|
+
error(error: unknown): void;
|
|
13
|
+
readonly interactive: boolean;
|
|
14
|
+
ask(question: string): Promise<string>;
|
|
15
|
+
askHidden(question: string): Promise<string>;
|
|
16
|
+
readStdin(): Promise<string>;
|
|
17
|
+
setExitCode(code: number): void;
|
|
18
|
+
}
|
|
19
|
+
export declare function errorBody(error: unknown): Record<string, unknown>;
|
|
20
|
+
export declare const processIo: Io;
|
|
21
|
+
//# sourceMappingURL=io.d.ts.map
|
package/dist/io.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,WAAW,EAAE;IACjB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,sEAAsE;IACtE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWjE;AAwBD,eAAO,MAAM,SAAS,EAAE,EAmBvB,CAAC"}
|
package/dist/io.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline';
|
|
2
|
+
import { CliError, exitCodeOf, isCliError } from './core/errors.js';
|
|
3
|
+
export function errorBody(error) {
|
|
4
|
+
if (isCliError(error)) {
|
|
5
|
+
return {
|
|
6
|
+
code: error.kind,
|
|
7
|
+
message: error.message,
|
|
8
|
+
...(error.status === undefined ? {} : { status: error.status }),
|
|
9
|
+
...(error.hint === undefined ? {} : { hint: error.hint }),
|
|
10
|
+
...(error.details === undefined ? {} : { details: error.details }),
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return { code: 'error', message: error instanceof Error ? error.message : String(error) };
|
|
14
|
+
}
|
|
15
|
+
function question(prompt, hidden) {
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr, terminal: true });
|
|
18
|
+
if (hidden) {
|
|
19
|
+
// Echo nothing of what is typed after the prompt.
|
|
20
|
+
const write = rl._writeToOutput;
|
|
21
|
+
rl._writeToOutput = (s) => {
|
|
22
|
+
if (s.startsWith(prompt))
|
|
23
|
+
write.call(rl, prompt);
|
|
24
|
+
else if (s.includes('\n') || s.includes('\r'))
|
|
25
|
+
write.call(rl, '\n');
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
rl.on('SIGINT', () => {
|
|
29
|
+
rl.close();
|
|
30
|
+
reject(new CliError('cancelled', 'Cancelled.'));
|
|
31
|
+
});
|
|
32
|
+
rl.question(prompt, (answer) => {
|
|
33
|
+
rl.close();
|
|
34
|
+
resolve(answer);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
export const processIo = {
|
|
39
|
+
result: (data) => process.stdout.write(JSON.stringify({ success: true, data }, null, 2) + '\n'),
|
|
40
|
+
text: (content) => process.stdout.write(content.endsWith('\n') ? content : `${content}\n`),
|
|
41
|
+
info: (message) => process.stderr.write(`${message}\n`),
|
|
42
|
+
error: (error) => {
|
|
43
|
+
process.stderr.write(JSON.stringify({ success: false, error: errorBody(error) }, null, 2) + '\n');
|
|
44
|
+
process.exitCode = exitCodeOf(error);
|
|
45
|
+
},
|
|
46
|
+
interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY),
|
|
47
|
+
ask: (prompt) => question(prompt, false),
|
|
48
|
+
askHidden: (prompt) => question(prompt, true),
|
|
49
|
+
readStdin: async () => {
|
|
50
|
+
const chunks = [];
|
|
51
|
+
for await (const chunk of process.stdin)
|
|
52
|
+
chunks.push(chunk);
|
|
53
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
54
|
+
},
|
|
55
|
+
setExitCode: (code) => {
|
|
56
|
+
process.exitCode = code;
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=io.js.map
|
package/dist/io.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":"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"}
|
package/dist/money.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Price, UsagePrice } from './api/billing.js';
|
|
2
|
+
/**
|
|
3
|
+
* Prices are written the way people say them ("19.99 EUR/month") and sent
|
|
4
|
+
* the way Bridge keeps them: whole minor units (1999), and per-unit usage
|
|
5
|
+
* prices as minor units in text ("0.25" for 0.0025 EUR a unit).
|
|
6
|
+
*/
|
|
7
|
+
export declare const INTERVALS: readonly ["day", "week", "month", "year"];
|
|
8
|
+
export type Interval = (typeof INTERVALS)[number];
|
|
9
|
+
/** How many minor units a currency has: 2 for EUR, 0 for JPY, 3 for KWD. */
|
|
10
|
+
export declare function currencyDigits(currency: string): number;
|
|
11
|
+
/** An amount in major units as whole minor units; refused when it has more decimals than the currency. */
|
|
12
|
+
export declare function toMinor(amount: string, currency: string): number;
|
|
13
|
+
/** "<CURRENCY>/<interval>" or "<CURRENCY>" for a one-time price. */
|
|
14
|
+
export declare function parseCurrencyInterval(text: string): {
|
|
15
|
+
currency: string;
|
|
16
|
+
interval: Interval | null;
|
|
17
|
+
};
|
|
18
|
+
/** "19.99 EUR/month", "190 EUR/year", or "49 EUR" for a one-time price. */
|
|
19
|
+
export declare function parsePrice(text: string): Price;
|
|
20
|
+
/**
|
|
21
|
+
* A per-unit usage price on one of the plan's prices:
|
|
22
|
+
* "<metric> <amount per unit> <CURRENCY>[/<interval>] [included <n>]",
|
|
23
|
+
* such as "api.calls 0.002 EUR/month included 10000".
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseUsagePrice(text: string): {
|
|
26
|
+
usage: UsagePrice;
|
|
27
|
+
currency: string;
|
|
28
|
+
interval: Interval | null | undefined;
|
|
29
|
+
};
|
|
30
|
+
/** Puts usage prices on the prices they name: by currency, and by interval when one is named. */
|
|
31
|
+
export declare function attachUsage(prices: Price[], usages: ReturnType<typeof parseUsagePrice>[]): Price[];
|
|
32
|
+
/** "analytics" or "analytics=Advanced analytics". */
|
|
33
|
+
export declare function parseFeature(text: string): {
|
|
34
|
+
key: string;
|
|
35
|
+
name?: string;
|
|
36
|
+
};
|
|
37
|
+
/** "api.calls=10000" or "seats=unlimited". */
|
|
38
|
+
export declare function parseLimit(text: string): {
|
|
39
|
+
metric: string;
|
|
40
|
+
limit: number | null;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=money.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1D;;;;GAIG;AACH,eAAO,MAAM,SAAS,2CAA4C,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAElD,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvD;AAmBD,0GAA0G;AAC1G,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIhE;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,CAOnG;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAK9C;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,CAe5H;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,CAUlG;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAIzE;AAED,8CAA8C;AAC9C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAOjF"}
|
package/dist/money.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { CliError } from './core/errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Prices are written the way people say them ("19.99 EUR/month") and sent
|
|
4
|
+
* the way Bridge keeps them: whole minor units (1999), and per-unit usage
|
|
5
|
+
* prices as minor units in text ("0.25" for 0.0025 EUR a unit).
|
|
6
|
+
*/
|
|
7
|
+
export const INTERVALS = ['day', 'week', 'month', 'year'];
|
|
8
|
+
/** How many minor units a currency has: 2 for EUR, 0 for JPY, 3 for KWD. */
|
|
9
|
+
export function currencyDigits(currency) {
|
|
10
|
+
try {
|
|
11
|
+
return new Intl.NumberFormat('en', { style: 'currency', currency }).resolvedOptions().maximumFractionDigits ?? 2;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
throw new CliError('invalid', `${currency} is not a currency code, such as EUR or USD.`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function currencyOf(text) {
|
|
18
|
+
const code = text.toUpperCase();
|
|
19
|
+
if (!/^[A-Z]{3}$/.test(code))
|
|
20
|
+
throw new CliError('invalid', `${text} is not a three-letter currency code, such as EUR.`);
|
|
21
|
+
currencyDigits(code);
|
|
22
|
+
return code;
|
|
23
|
+
}
|
|
24
|
+
/** "19.99" in EUR → "1999", "0.0025" in EUR → "0.25": the decimal point moved by the currency's digits, with no rounding. */
|
|
25
|
+
function shift(amount, digits) {
|
|
26
|
+
if (!/^\d+(\.\d+)?$/.test(amount))
|
|
27
|
+
throw new CliError('invalid', `${amount} is not an amount, such as 19.99.`);
|
|
28
|
+
const [whole, fraction = ''] = amount.split('.');
|
|
29
|
+
const padded = fraction.padEnd(digits, '0');
|
|
30
|
+
const head = (whole + padded.slice(0, digits)).replace(/^0+(?=\d)/, '');
|
|
31
|
+
const tail = padded.slice(digits).replace(/0+$/, '');
|
|
32
|
+
return tail === '' ? head : `${head}.${tail}`;
|
|
33
|
+
}
|
|
34
|
+
/** An amount in major units as whole minor units; refused when it has more decimals than the currency. */
|
|
35
|
+
export function toMinor(amount, currency) {
|
|
36
|
+
const shifted = shift(amount, currencyDigits(currency));
|
|
37
|
+
if (shifted.includes('.'))
|
|
38
|
+
throw new CliError('invalid', `${amount} ${currency} has more decimals than ${currency} has.`);
|
|
39
|
+
return Number(shifted);
|
|
40
|
+
}
|
|
41
|
+
/** "<CURRENCY>/<interval>" or "<CURRENCY>" for a one-time price. */
|
|
42
|
+
export function parseCurrencyInterval(text) {
|
|
43
|
+
const [code, every] = text.split('/');
|
|
44
|
+
const interval = every === undefined ? null : every.toLowerCase();
|
|
45
|
+
if (interval !== null && !INTERVALS.includes(interval)) {
|
|
46
|
+
throw new CliError('invalid', `${every} is not an interval: ${INTERVALS.join(', ')}.`);
|
|
47
|
+
}
|
|
48
|
+
return { currency: currencyOf(code), interval: interval };
|
|
49
|
+
}
|
|
50
|
+
/** "19.99 EUR/month", "190 EUR/year", or "49 EUR" for a one-time price. */
|
|
51
|
+
export function parsePrice(text) {
|
|
52
|
+
const match = /^\s*(\S+)\s+(\S+)\s*$/.exec(text);
|
|
53
|
+
if (!match)
|
|
54
|
+
throw new CliError('invalid', `A price is "<amount> <CURRENCY>/<interval>", such as "19.99 EUR/month": ${text}`);
|
|
55
|
+
const { currency, interval } = parseCurrencyInterval(match[2]);
|
|
56
|
+
return { currency, interval, amount: toMinor(match[1], currency) };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A per-unit usage price on one of the plan's prices:
|
|
60
|
+
* "<metric> <amount per unit> <CURRENCY>[/<interval>] [included <n>]",
|
|
61
|
+
* such as "api.calls 0.002 EUR/month included 10000".
|
|
62
|
+
*/
|
|
63
|
+
export function parseUsagePrice(text) {
|
|
64
|
+
const words = text.trim().split(/\s+/);
|
|
65
|
+
const [metric, amount, at, word, count] = words;
|
|
66
|
+
if (metric === undefined || amount === undefined || at === undefined || words.length > 5 || (word !== undefined && (word !== 'included' || count === undefined))) {
|
|
67
|
+
throw new CliError('invalid', `A usage price is "<metric> <amount per unit> <CURRENCY>/<interval> [included <n>]", such as "api.calls 0.002 EUR/month included 10000": ${text}`);
|
|
68
|
+
}
|
|
69
|
+
const hasInterval = at.includes('/');
|
|
70
|
+
const { currency, interval } = parseCurrencyInterval(at);
|
|
71
|
+
let included;
|
|
72
|
+
if (count !== undefined) {
|
|
73
|
+
included = Number(count);
|
|
74
|
+
if (!Number.isSafeInteger(included) || included < 0)
|
|
75
|
+
throw new CliError('invalid', `included is a whole number: ${count}`);
|
|
76
|
+
}
|
|
77
|
+
const unitAmount = shift(amount, currencyDigits(currency));
|
|
78
|
+
return { usage: { metric, unitAmount, ...(included === undefined ? {} : { included }) }, currency, interval: hasInterval ? interval : undefined };
|
|
79
|
+
}
|
|
80
|
+
/** Puts usage prices on the prices they name: by currency, and by interval when one is named. */
|
|
81
|
+
export function attachUsage(prices, usages) {
|
|
82
|
+
const out = prices.map((price) => ({ ...price, ...(price.usage === undefined ? {} : { usage: [...price.usage] }) }));
|
|
83
|
+
for (const { usage, currency, interval } of usages) {
|
|
84
|
+
const targets = out.filter((price) => price.currency === currency && (interval === undefined || price.interval === interval) && price.interval !== null);
|
|
85
|
+
if (targets.length === 0) {
|
|
86
|
+
throw new CliError('invalid', `The plan has no recurring ${currency}${interval ? `/${interval}` : ''} price for the usage price on ${usage.metric}.`);
|
|
87
|
+
}
|
|
88
|
+
for (const price of targets)
|
|
89
|
+
price.usage = [...(price.usage ?? []).filter((each) => each.metric !== usage.metric), usage];
|
|
90
|
+
}
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
/** "analytics" or "analytics=Advanced analytics". */
|
|
94
|
+
export function parseFeature(text) {
|
|
95
|
+
const [key, ...rest] = text.split('=');
|
|
96
|
+
if (!key)
|
|
97
|
+
throw new CliError('invalid', `A feature is "<key>" or "<key>=<name>": ${text}`);
|
|
98
|
+
return rest.length === 0 ? { key } : { key, name: rest.join('=') };
|
|
99
|
+
}
|
|
100
|
+
/** "api.calls=10000" or "seats=unlimited". */
|
|
101
|
+
export function parseLimit(text) {
|
|
102
|
+
const [metric, value] = text.split('=');
|
|
103
|
+
if (!metric || value === undefined)
|
|
104
|
+
throw new CliError('invalid', `A limit is "<metric>=<n>" or "<metric>=unlimited": ${text}`);
|
|
105
|
+
if (value === 'unlimited')
|
|
106
|
+
return { metric, limit: null };
|
|
107
|
+
const limit = Number(value);
|
|
108
|
+
if (!Number.isSafeInteger(limit) || limit < 0)
|
|
109
|
+
throw new CliError('invalid', `A limit is a whole number or "unlimited": ${text}`);
|
|
110
|
+
return { metric, limit };
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=money.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"money.js","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"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"}
|
package/dist/program.d.ts
CHANGED
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { Deps } from './commands/context.js';
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* Kept apart from `cli.ts` (which reads the package version through
|
|
6
|
-
* `import.meta`) so tests can build the real command tree. The prompts test
|
|
7
|
-
* checks every `bridge …` command the guides name against it (TBP-706).
|
|
4
|
+
* The whole command tree. Kept apart from `cli.ts` (which reads the package
|
|
5
|
+
* version) so tests build the real tree with fake dependencies.
|
|
8
6
|
*/
|
|
9
|
-
export declare function
|
|
10
|
-
/** Raised after the error was already printed, to stop the action running. */
|
|
11
|
-
export declare class AppContextAbort extends Error {
|
|
12
|
-
constructor();
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Global options and the hook that applies them before every action.
|
|
16
|
-
*
|
|
17
|
-
* `--profile` (TBP-628) picks WHICH stored login; `--app` (TBP-769) picks the
|
|
18
|
-
* app WITHIN that login, like the MCP tools' `app` argument.
|
|
19
|
-
*
|
|
20
|
-
* The `--app` name collision: `bridge auth login` has its own `--app` (pin the
|
|
21
|
-
* home app on the consent screen). commander lets the program-level option
|
|
22
|
-
* consume the flag wherever it appears, so login would never see it. The hook
|
|
23
|
-
* therefore hands the value back to any command that declares its own `--app`
|
|
24
|
-
* and, for that command, does not treat it as an app selection.
|
|
25
|
-
*/
|
|
26
|
-
export declare function registerGlobalOptions(program: Command): void;
|
|
7
|
+
export declare function buildProgram(deps: Deps, version?: string): Command;
|
|
27
8
|
//# sourceMappingURL=program.d.ts.map
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAKlD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,SAAU,GAAG,OAAO,CAkBnE"}
|
package/dist/program.js
CHANGED
|
@@ -1,121 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { registerAccountCommands } from './commands/accounts.command.js';
|
|
3
3
|
import { registerAppCommands } from './commands/app.command.js';
|
|
4
|
-
import { registerTenantCommands } from './commands/tenant.command.js';
|
|
5
|
-
import { registerUserCommands } from './commands/user.command.js';
|
|
6
|
-
import { registerRoleCommands } from './commands/role.command.js';
|
|
7
|
-
import { registerPrivilegeCommands } from './commands/privilege.command.js';
|
|
8
|
-
import { registerFlagCommands } from './commands/flag.command.js';
|
|
9
4
|
import { registerAuthCommands } from './commands/auth.command.js';
|
|
10
|
-
import {
|
|
11
|
-
import { registerPlanCommands } from './commands/plan.command.js';
|
|
12
|
-
import { registerTokenCommands } from './commands/token.command.js';
|
|
13
|
-
import { registerEventCommands } from './commands/event.command.js';
|
|
14
|
-
import { registerSetupCommands } from './commands/setup.command.js';
|
|
15
|
-
import { registerInfoCommands } from './commands/info.command.js';
|
|
16
|
-
import { registerGuideCommands } from './commands/guide.command.js';
|
|
17
|
-
import { registerOpsCommands } from './commands/ops.command.js';
|
|
18
|
-
import { registerStripeCommands } from './commands/stripe.command.js';
|
|
19
|
-
import { registerIntegrationCommands } from './commands/integration.command.js';
|
|
5
|
+
import { registerBillingCommands } from './commands/billing.command.js';
|
|
20
6
|
import { registerCheckCommands } from './commands/check.command.js';
|
|
7
|
+
import { registerFlagCommands } from './commands/flag.command.js';
|
|
8
|
+
import { registerKeyCommands } from './commands/key.command.js';
|
|
9
|
+
import { registerPlanCommands } from './commands/plan.command.js';
|
|
21
10
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* Kept apart from `cli.ts` (which reads the package version through
|
|
25
|
-
* `import.meta`) so tests can build the real command tree. The prompts test
|
|
26
|
-
* checks every `bridge …` command the guides name against it (TBP-706).
|
|
27
|
-
*/
|
|
28
|
-
export function registerCommands(program) {
|
|
29
|
-
registerAppCommands(program);
|
|
30
|
-
registerTenantCommands(program);
|
|
31
|
-
registerUserCommands(program);
|
|
32
|
-
registerRoleCommands(program);
|
|
33
|
-
registerPrivilegeCommands(program);
|
|
34
|
-
registerFlagCommands(program);
|
|
35
|
-
registerAuthCommands(program);
|
|
36
|
-
registerBrandingCommands(program);
|
|
37
|
-
registerPlanCommands(program);
|
|
38
|
-
registerTokenCommands(program);
|
|
39
|
-
registerEventCommands(program);
|
|
40
|
-
registerSetupCommands(program);
|
|
41
|
-
registerInfoCommands(program);
|
|
42
|
-
registerGuideCommands(program);
|
|
43
|
-
registerOpsCommands(program);
|
|
44
|
-
registerStripeCommands(program);
|
|
45
|
-
// After setup + event: adds `setup status` and `event auth-attempts` to those groups (TBP-541).
|
|
46
|
-
registerIntegrationCommands(program);
|
|
47
|
-
// TBP-705 — `bridge check gates`, the last verification step of every guide.
|
|
48
|
-
registerCheckCommands(program);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Commands that never act on an app through the management API, so the
|
|
52
|
-
* `--app` / `currentApp` context is not resolved for them (no network call,
|
|
53
|
-
* and `bridge guide` keeps working offline). Matched on the command path.
|
|
54
|
-
*/
|
|
55
|
-
const NO_APP_CONTEXT = [
|
|
56
|
-
'auth login',
|
|
57
|
-
'auth logout',
|
|
58
|
-
'auth status',
|
|
59
|
-
'auth use',
|
|
60
|
-
'app list',
|
|
61
|
-
'app use',
|
|
62
|
-
'app create',
|
|
63
|
-
'guide',
|
|
64
|
-
'ops',
|
|
65
|
-
'check',
|
|
66
|
-
];
|
|
67
|
-
function commandPath(cmd) {
|
|
68
|
-
const names = [];
|
|
69
|
-
for (let c = cmd; c && c.parent; c = c.parent)
|
|
70
|
-
names.unshift(c.name());
|
|
71
|
-
return names.join(' ');
|
|
72
|
-
}
|
|
73
|
-
/** Raised after the error was already printed, to stop the action running. */
|
|
74
|
-
export class AppContextAbort extends Error {
|
|
75
|
-
constructor() {
|
|
76
|
-
super('app context could not be resolved');
|
|
77
|
-
this.name = 'AppContextAbort';
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Global options and the hook that applies them before every action.
|
|
82
|
-
*
|
|
83
|
-
* `--profile` (TBP-628) picks WHICH stored login; `--app` (TBP-769) picks the
|
|
84
|
-
* app WITHIN that login, like the MCP tools' `app` argument.
|
|
85
|
-
*
|
|
86
|
-
* The `--app` name collision: `bridge auth login` has its own `--app` (pin the
|
|
87
|
-
* home app on the consent screen). commander lets the program-level option
|
|
88
|
-
* consume the flag wherever it appears, so login would never see it. The hook
|
|
89
|
-
* therefore hands the value back to any command that declares its own `--app`
|
|
90
|
-
* and, for that command, does not treat it as an app selection.
|
|
11
|
+
* The whole command tree. Kept apart from `cli.ts` (which reads the package
|
|
12
|
+
* version) so tests build the real tree with fake dependencies.
|
|
91
13
|
*/
|
|
92
|
-
export function
|
|
14
|
+
export function buildProgram(deps, version = '0.0.0') {
|
|
15
|
+
const program = new Command();
|
|
93
16
|
program
|
|
94
|
-
.
|
|
95
|
-
.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const path = commandPath(actionCommand);
|
|
110
|
-
if (NO_APP_CONTEXT.some((p) => path === p || path.startsWith(`${p} `)))
|
|
111
|
-
return;
|
|
112
|
-
try {
|
|
113
|
-
await prepareAppContext();
|
|
114
|
-
}
|
|
115
|
-
catch (err) {
|
|
116
|
-
outputError(err);
|
|
117
|
-
throw new AppContextAbort();
|
|
118
|
-
}
|
|
119
|
-
});
|
|
17
|
+
.name('bridge')
|
|
18
|
+
.description('Set up your app on Bridge from the terminal: sign-in, apps and their addresses, keys, plans, Stripe and flags.')
|
|
19
|
+
.version(version)
|
|
20
|
+
.option('--issuer <url>', 'The Bridge App\'s issuer (env: BRIDGE_ISSUER; saved at sign-in)')
|
|
21
|
+
.option('--app <id>', 'The app to act on (env: BRIDGE_APP; default: the one chosen with `bridge app use`)')
|
|
22
|
+
.showHelpAfterError();
|
|
23
|
+
registerAuthCommands(program, deps);
|
|
24
|
+
registerAppCommands(program, deps);
|
|
25
|
+
registerKeyCommands(program, deps);
|
|
26
|
+
registerPlanCommands(program, deps);
|
|
27
|
+
registerBillingCommands(program, deps);
|
|
28
|
+
registerFlagCommands(program, deps);
|
|
29
|
+
registerAccountCommands(program, deps);
|
|
30
|
+
registerCheckCommands(program, deps);
|
|
31
|
+
return program;
|
|
120
32
|
}
|
|
121
33
|
//# sourceMappingURL=program.js.map
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,OAAO,GAAG,OAAO;IACxD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,gHAAgH,CAAC;SAC7H,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,gBAAgB,EAAE,iEAAiE,CAAC;SAC3F,MAAM,CAAC,YAAY,EAAE,oFAAoF,CAAC;SAC1G,kBAAkB,EAAE,CAAC;IACxB,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC;AACjB,CAAC"}
|