@nebulr-group/bridge-cli 0.1.3 → 0.4.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +26 -4
  2. package/dist/auth/loopback.d.ts.map +1 -1
  3. package/dist/auth/loopback.js +8 -0
  4. package/dist/auth/loopback.js.map +1 -1
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +4 -0
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/app.command.d.ts.map +1 -1
  9. package/dist/commands/app.command.js +2 -0
  10. package/dist/commands/app.command.js.map +1 -1
  11. package/dist/commands/auth/login.command.d.ts +12 -0
  12. package/dist/commands/auth/login.command.d.ts.map +1 -1
  13. package/dist/commands/auth/login.command.js +2 -1
  14. package/dist/commands/auth/login.command.js.map +1 -1
  15. package/dist/commands/flag-init.command.d.ts +13 -0
  16. package/dist/commands/flag-init.command.d.ts.map +1 -0
  17. package/dist/commands/flag-init.command.js +353 -0
  18. package/dist/commands/flag-init.command.js.map +1 -0
  19. package/dist/commands/flag.command.d.ts +92 -0
  20. package/dist/commands/flag.command.d.ts.map +1 -1
  21. package/dist/commands/flag.command.js +784 -25
  22. package/dist/commands/flag.command.js.map +1 -1
  23. package/dist/commands/guide.command.d.ts +21 -0
  24. package/dist/commands/guide.command.d.ts.map +1 -1
  25. package/dist/commands/guide.command.js +326 -18
  26. package/dist/commands/guide.command.js.map +1 -1
  27. package/dist/commands/integrate.command.js +3 -3
  28. package/dist/commands/integrate.command.js.map +1 -1
  29. package/dist/commands/ops.command.d.ts +17 -0
  30. package/dist/commands/ops.command.d.ts.map +1 -0
  31. package/dist/commands/ops.command.js +129 -0
  32. package/dist/commands/ops.command.js.map +1 -0
  33. package/dist/commands/plan.command.d.ts +31 -0
  34. package/dist/commands/plan.command.d.ts.map +1 -1
  35. package/dist/commands/plan.command.js +182 -1
  36. package/dist/commands/plan.command.js.map +1 -1
  37. package/dist/commands/stripe.command.d.ts +3 -0
  38. package/dist/commands/stripe.command.d.ts.map +1 -0
  39. package/dist/commands/stripe.command.js +43 -0
  40. package/dist/commands/stripe.command.js.map +1 -0
  41. package/dist/output.d.ts +8 -0
  42. package/dist/output.d.ts.map +1 -1
  43. package/dist/output.js +10 -0
  44. package/dist/output.js.map +1 -1
  45. package/dist/prompts/architecture.md +560 -0
  46. package/dist/prompts/auth-master-integration-prompt.md +251 -0
  47. package/dist/prompts/billing/master.md +269 -0
  48. package/dist/prompts/flags/master.md +215 -0
  49. package/dist/prompts/integration-success.md +107 -0
  50. package/package.json +4 -3
package/README.md CHANGED
@@ -154,6 +154,15 @@ bridge branding update --bg-color "#ffffff" --text-color "#000000"
154
154
  bridge plan list
155
155
  bridge plan create --key pro --name "Pro Plan"
156
156
  bridge plan update --key pro --name "Pro Plan v2"
157
+
158
+ # Prices — a plan can have several (one per currency + interval). Idempotent.
159
+ bridge plan price set pro --amount 29 --currency usd --interval month
160
+ bridge plan price set pro --amount 290 --currency usd --interval year
161
+ bridge plan price rm pro --interval year
162
+
163
+ # Usage quotas (hard | metered caps)
164
+ bridge plan quota set pro --metric ai_completions --limit 1000 --policy hard
165
+ bridge plan quota rm pro --metric ai_completions
157
166
  ```
158
167
 
159
168
  ### API Tokens
@@ -191,14 +200,27 @@ bridge info roles
191
200
 
192
201
  ### Integration Guides
193
202
 
203
+ Three master prompts orchestrate the per-framework guides:
204
+
205
+ ```bash
206
+ bridge guide # Bridge Auth master prompt (auth, RBAC, tenants)
207
+ bridge guide flags # Feature Flags 2.0 master prompt
208
+ bridge guide billing # Billing 2.0 master prompt (subscriptions, quotas, webhooks)
209
+ ```
210
+
211
+ Per-framework guides:
212
+
194
213
  ```bash
195
214
  bridge guide list
196
- bridge guide react
197
- bridge guide nextjs
198
- bridge guide express
199
- bridge guide custom
215
+ bridge guide <framework> # auth guide (svelte | react | nextjs | angular | nestjs | express)
216
+ bridge guide <framework> sdk-auth # in-app auth UI (frontend frameworks only)
217
+ bridge guide flags --framework <name> # flags-specific guide
218
+ bridge guide billing --framework <name> # billing-specific guide
219
+ bridge guide custom # REST API fallback for any language
200
220
  ```
201
221
 
222
+ `bridge guide flags` and `bridge guide billing` auto-detect the framework from `package.json` when `--framework` is omitted — they fall back to the generic master prompt if no framework signal is found.
223
+
202
224
  ## Output Format
203
225
 
204
226
  **Success:**
@@ -1 +1 @@
1
- {"version":3,"file":"loopback.d.ts","sourceRoot":"","sources":["../../src/auth/loopback.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC,2EAA2E;IAC3E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAyHD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAUA;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC3C,aAAa,EAAE,MAAM,GACpB,cAAc,CAkBhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAiGtF;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C"}
1
+ {"version":3,"file":"loopback.d.ts","sourceRoot":"","sources":["../../src/auth/loopback.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAChC,2EAA2E;IAC3E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAyHD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAUA;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC3C,aAAa,EAAE,MAAM,GACpB,cAAc,CAkBhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyGtF;AAED,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAK1C"}
@@ -203,16 +203,20 @@ export async function startLoopback(opts) {
203
203
  // staying on 127.0.0.1 — branded UX.
204
204
  res.statusCode = 302;
205
205
  res.setHeader('Location', successRedirectUrl);
206
+ res.setHeader('Connection', 'close');
206
207
  res.end(() => {
207
208
  server.close();
209
+ server.closeAllConnections();
208
210
  });
209
211
  }
210
212
  else {
211
213
  res.statusCode = 200;
212
214
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
215
+ res.setHeader('Connection', 'close');
213
216
  res.end(successHtml, () => {
214
217
  // Close listener AFTER the response flushes so the user actually sees the page.
215
218
  server.close();
219
+ server.closeAllConnections();
216
220
  });
217
221
  }
218
222
  resolveResult(verified);
@@ -221,8 +225,10 @@ export async function startLoopback(opts) {
221
225
  const msg = err instanceof Error ? err.message : String(err);
222
226
  res.statusCode = 400;
223
227
  res.setHeader('Content-Type', 'text/html; charset=utf-8');
228
+ res.setHeader('Connection', 'close');
224
229
  res.end(FAILURE_HTML(msg), () => {
225
230
  server.close();
231
+ server.closeAllConnections();
226
232
  });
227
233
  rejectResult(err instanceof Error ? err : new Error(msg));
228
234
  }
@@ -241,6 +247,7 @@ export async function startLoopback(opts) {
241
247
  const timeoutHandle = setTimeout(() => {
242
248
  rejectResult(new LoopbackError(`Timed out waiting for the browser callback after ${Math.round(timeoutMs / 1000)}s.`, 'timeout'));
243
249
  server.close();
250
+ server.closeAllConnections();
244
251
  }, timeoutMs);
245
252
  // Don't keep the process alive for the timeout once the server closes.
246
253
  timeoutHandle.unref?.();
@@ -254,6 +261,7 @@ export async function startLoopback(opts) {
254
261
  close: () => {
255
262
  try {
256
263
  server.close();
264
+ server.closeAllConnections();
257
265
  }
258
266
  catch {
259
267
  // server already closed; ignore.
@@ -1 +1 @@
1
- {"version":3,"file":"loopback.js","sourceRoot":"","sources":["../../src/auth/loopback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loopback.js","sourceRoot":"","sources":["../../src/auth/loopback.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,OAAO,SAAgB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,OAAO,SAAgB,CAAC"}
package/dist/cli.js CHANGED
@@ -15,6 +15,8 @@ import { registerEventCommands } from './commands/event.command.js';
15
15
  import { registerSetupCommands } from './commands/setup.command.js';
16
16
  import { registerInfoCommands } from './commands/info.command.js';
17
17
  import { registerGuideCommands } from './commands/guide.command.js';
18
+ import { registerOpsCommands } from './commands/ops.command.js';
19
+ import { registerStripeCommands } from './commands/stripe.command.js';
18
20
  // Read version from package.json so `bridge --version` never drifts from the
19
21
  // published package. dist/cli.js lives at <pkg>/dist/cli.js, so `../package.json`
20
22
  // resolves to the package root in both the published tarball and during dev.
@@ -38,4 +40,6 @@ registerEventCommands(program);
38
40
  registerSetupCommands(program);
39
41
  registerInfoCommands(program);
40
42
  registerGuideCommands(program);
43
+ registerOpsCommands(program);
44
+ registerStripeCommands(program);
41
45
  //# 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,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,6EAA6E;AAC7E,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACpF,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAwB,CAAC;AAErF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,6EAA6E;AAC7E,kFAAkF;AAClF,6EAA6E;AAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AACpF,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAwB,CAAC;AAErF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.command.d.ts","sourceRoot":"","sources":["../../src/commands/app.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC1D"}
1
+ {"version":3,"file":"app.command.d.ts","sourceRoot":"","sources":["../../src/commands/app.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2C1D"}
@@ -22,6 +22,7 @@ export function registerAppCommands(program) {
22
22
  .option('--mfa-enabled <bool>', 'Enable MFA', parseBool)
23
23
  .option('--passkeys-enabled <bool>', 'Enable passkeys', parseBool)
24
24
  .option('--magic-link-enabled <bool>', 'Enable magic links', parseBool)
25
+ .option('--payments-auto-redirect <bool>', 'Force new users to pick a plan before entering the app (billing paywall)', parseBool)
25
26
  .option('--redirect-uris <uris>', 'Comma-separated list of allowed OAuth callback URIs', parseList)
26
27
  .option('--allowed-origins <origins>', 'Comma-separated list of allowed CORS origins', parseList)
27
28
  .option('--default-callback-uri <uri>', 'Default OAuth callback URI')
@@ -36,6 +37,7 @@ export function registerAppCommands(program) {
36
37
  mfaEnabled: opts.mfaEnabled,
37
38
  passkeysEnabled: opts.passkeysEnabled,
38
39
  magicLinkEnabled: opts.magicLinkEnabled,
40
+ paymentsAutoRedirect: opts.paymentsAutoRedirect,
39
41
  redirectUris: opts.redirectUris,
40
42
  allowedOrigins: opts.allowedOrigins,
41
43
  defaultCallbackUri: opts.defaultCallbackUri,
@@ -1 +1 @@
1
- {"version":3,"file":"app.command.js","sourceRoot":"","sources":["../../src/commands/app.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.command.js","sourceRoot":"","sources":["../../src/commands/app.command.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,17 @@
16
16
  * `BRIDGE_AUTH_BASE_URL` → consent screen host
17
17
  */
18
18
  import type { Command } from 'commander';
19
+ interface LoginOptions {
20
+ app?: string;
21
+ label?: string;
22
+ /**
23
+ * commander's `--no-browser` flag sets `browser=false` (default `true`).
24
+ * We read this as `opts.browser === false` → use --no-browser path.
25
+ */
26
+ browser?: boolean;
27
+ reauth?: boolean;
28
+ }
29
+ export { runLogin };
19
30
  export declare function registerAuthLoginCommand(auth: Command): void;
31
+ declare function runLogin(opts: LoginOptions): Promise<void>;
20
32
  //# sourceMappingURL=login.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.command.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBzC,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAmB5D"}
1
+ {"version":3,"file":"login.command.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/login.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAmB5D;AAED,iBAAe,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqGzD"}
@@ -6,6 +6,7 @@ import { openBrowser } from '../../auth/browser-open.js';
6
6
  import { createCliApiClient, CliAuthApiError } from '../../auth/api-client.js';
7
7
  const DEFAULT_API_BASE_URL = 'https://api.thebridge.dev';
8
8
  const DEFAULT_AUTH_BASE_URL = 'https://auth.thebridge.dev';
9
+ export { runLogin };
9
10
  export function registerAuthLoginCommand(auth) {
10
11
  auth
11
12
  .command('login')
@@ -71,7 +72,7 @@ async function runLogin(opts) {
71
72
  `Open this URL manually:\n ${authorizeUrl}\n`);
72
73
  }
73
74
  else {
74
- stdout.write('Opened your browser. Waiting for authorization...\n');
75
+ stdout.write('Your browser just opened — complete the login there. Waiting...\n');
75
76
  }
76
77
  }
77
78
  // 4. Await the callback. Translate cancel/CSRF/timeout into friendly errors.
@@ -1 +1 @@
1
- {"version":3,"file":"login.command.js","sourceRoot":"","sources":["../../../src/commands/auth/login.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.command.js","sourceRoot":"","sources":["../../../src/commands/auth/login.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Command } from 'commander';
2
+ export type FlagsFramework = 'svelte' | 'react' | 'nextjs' | 'angular' | 'nestjs' | 'express' | 'unknown';
3
+ export declare function registerFlagInitCommand(flagParent: Command): void;
4
+ export declare function detectFramework(cwd: string): Promise<FlagsFramework>;
5
+ interface SnippetCtx {
6
+ appId: string;
7
+ baseUrl: string;
8
+ }
9
+ export declare function renderSnippet(framework: FlagsFramework, ctx: SnippetCtx): string;
10
+ /** Probe whether a path exists (used by tests). */
11
+ export declare function pathExists(path: string): Promise<boolean>;
12
+ export {};
13
+ //# sourceMappingURL=flag-init.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flag-init.command.d.ts","sourceRoot":"","sources":["../../src/commands/flag-init.command.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,CA+DjE;AAID,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwB1E;AAID,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAsOhF;AA2BD,mDAAmD;AACnD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/D"}
@@ -0,0 +1,353 @@
1
+ // TBP-198 — Flags-only integration scaffold.
2
+ //
3
+ // `bridge flag init` (alias for the eventual `bridge init --flags-only`).
4
+ // Detects the project framework from package.json and prints:
5
+ // - The appropriate `bridge.flag(...)` setup snippet for the framework
6
+ // - A `bridge-flags.config.json` next to package.json with appId + baseUrl
7
+ // + suggested provider config
8
+ //
9
+ // The command is deliberately NON-destructive: it never overwrites source
10
+ // files. The "scaffold" is text output (snippet + config file) for the agent
11
+ // or the developer to apply.
12
+ import { readFile, writeFile, access } from 'node:fs/promises';
13
+ import { join } from 'node:path';
14
+ import { getManagementClient, DEFAULT_BASE_URL } from '../config.js';
15
+ import { outputSuccess, outputError } from '../output.js';
16
+ import { readCredentials } from '../credentials.js';
17
+ export function registerFlagInitCommand(flagParent) {
18
+ flagParent
19
+ .command('init')
20
+ .description('Scaffold a flags-only Bridge integration (no auth setup) — detects framework, prints setup snippet, writes bridge-flags.config.json')
21
+ .option('--framework <name>', 'Override framework detection: svelte | react | nextjs | angular | nestjs | express')
22
+ .option('--cwd <path>', 'Project directory (defaults to current)', process.cwd())
23
+ .option('--no-config', 'Skip writing bridge-flags.config.json')
24
+ .option('--base-url <url>', 'Override the base URL written to config')
25
+ .action(async (opts) => {
26
+ try {
27
+ const cwd = opts.cwd;
28
+ const framework = opts.framework ?? (await detectFramework(cwd));
29
+ const client = getManagementClient();
30
+ const app = (await client.app.get());
31
+ const appId = app.id ?? '';
32
+ const appName = app.name ?? '';
33
+ const baseUrl = opts.baseUrl ??
34
+ // Pull the credentials file's baseUrl when available; falls back to
35
+ // the public default. (BRIDGE_BASE_URL is honored by getManagementClient
36
+ // already; we don't re-read it here to avoid divergence.)
37
+ readCredentials()?.baseUrl ??
38
+ DEFAULT_BASE_URL;
39
+ const snippet = renderSnippet(framework, { appId, baseUrl });
40
+ let configPath;
41
+ if (opts.config !== false) {
42
+ configPath = join(cwd, 'bridge-flags.config.json');
43
+ await writeFile(configPath, JSON.stringify({
44
+ appId,
45
+ appName,
46
+ baseUrl,
47
+ framework,
48
+ provider: suggestedProviderConfig(framework),
49
+ }, null, 2) + '\n', 'utf8');
50
+ }
51
+ outputSuccess({
52
+ framework,
53
+ app: { id: appId, name: appName },
54
+ baseUrl,
55
+ configFile: configPath,
56
+ nextSteps: nextStepsFor(framework),
57
+ snippet,
58
+ });
59
+ }
60
+ catch (err) {
61
+ outputError(err);
62
+ }
63
+ });
64
+ }
65
+ // ── Framework detection ─────────────────────────────────────────────────────
66
+ export async function detectFramework(cwd) {
67
+ const pkgPath = join(cwd, 'package.json');
68
+ let pkgRaw;
69
+ try {
70
+ pkgRaw = await readFile(pkgPath, 'utf8');
71
+ }
72
+ catch {
73
+ return 'unknown';
74
+ }
75
+ let pkg;
76
+ try {
77
+ pkg = JSON.parse(pkgRaw);
78
+ }
79
+ catch {
80
+ return 'unknown';
81
+ }
82
+ const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
83
+ // Order matters: Next.js + React is detected as Next.js.
84
+ if ('next' in deps)
85
+ return 'nextjs';
86
+ if ('@sveltejs/kit' in deps || 'svelte' in deps)
87
+ return 'svelte';
88
+ if ('@nestjs/core' in deps)
89
+ return 'nestjs';
90
+ if ('@angular/core' in deps)
91
+ return 'angular';
92
+ if ('react' in deps)
93
+ return 'react';
94
+ if ('express' in deps)
95
+ return 'express';
96
+ return 'unknown';
97
+ }
98
+ export function renderSnippet(framework, ctx) {
99
+ const pkgFor = {
100
+ svelte: '@nebulr-group/bridge-svelte/flags',
101
+ react: '@nebulr-group/bridge-react/flags',
102
+ nextjs: '@nebulr-group/bridge-nextjs/flags',
103
+ angular: '@nebulr-group/bridge-angular/flags',
104
+ nestjs: '@nebulr-group/bridge-nestjs/flags',
105
+ express: '@nebulr-group/bridge-express/flags',
106
+ };
107
+ if (framework === 'unknown') {
108
+ return [
109
+ `# Bridge Flags — generic setup`,
110
+ ``,
111
+ `Couldn't auto-detect your framework. Use the core SDK directly:`,
112
+ ``,
113
+ '```ts',
114
+ `import { BridgeFlags } from '@nebulr-group/bridge-auth-core';`,
115
+ ``,
116
+ `export const bridge = new BridgeFlags();`,
117
+ `bridge.setContext({ identity: 'user-id', attributes: { /* ... */ } });`,
118
+ ``,
119
+ `// Read a flag — type is inferred from defaultValue.`,
120
+ `const newDashboard = bridge.flag('new-dashboard', false);`,
121
+ '```',
122
+ ``,
123
+ `Then point the SDK at appId=${ctx.appId} via ${ctx.baseUrl}/cloud-views/flags.`,
124
+ ].join('\n');
125
+ }
126
+ const pkg = pkgFor[framework];
127
+ // Per-framework idiomatic snippet.
128
+ switch (framework) {
129
+ case 'svelte':
130
+ return [
131
+ '# Bridge Flags — SvelteKit (flags-only)',
132
+ '',
133
+ `1. Install:`,
134
+ ' ```bash',
135
+ ' bun add @nebulr-group/bridge-svelte',
136
+ ' ```',
137
+ '',
138
+ '2. In `src/routes/+layout.ts`:',
139
+ ' ```ts',
140
+ ` import { BridgeFlags } from '${pkg}';`,
141
+ '',
142
+ ' export const bridge = new BridgeFlags();',
143
+ ` bridge.configure({ appId: '${ctx.appId}', baseUrl: '${ctx.baseUrl}' });`,
144
+ ' ```',
145
+ '',
146
+ '3. Use anywhere:',
147
+ ' ```ts',
148
+ ' const enabled = bridge.flag("new-dashboard", false);',
149
+ ' ```',
150
+ ].join('\n');
151
+ case 'react':
152
+ return [
153
+ '# Bridge Flags — React (flags-only)',
154
+ '',
155
+ `1. Install:`,
156
+ ' ```bash',
157
+ ' bun add @nebulr-group/bridge-react',
158
+ ' ```',
159
+ '',
160
+ '2. In `src/main.tsx`:',
161
+ ' ```tsx',
162
+ ` import { BridgeFlagsProvider } from '${pkg}';`,
163
+ '',
164
+ ' <BridgeFlagsProvider',
165
+ ` appId="${ctx.appId}"`,
166
+ ` baseUrl="${ctx.baseUrl}"`,
167
+ ' >',
168
+ ' <App />',
169
+ ' </BridgeFlagsProvider>',
170
+ ' ```',
171
+ '',
172
+ '3. Use the hook in any component:',
173
+ ' ```tsx',
174
+ ` import { useFlag } from '${pkg}';`,
175
+ '',
176
+ ' function NewDashboard() {',
177
+ ' const enabled = useFlag("new-dashboard", false);',
178
+ ' return enabled ? <V2 /> : <V1 />;',
179
+ ' }',
180
+ ' ```',
181
+ ].join('\n');
182
+ case 'nextjs':
183
+ return [
184
+ '# Bridge Flags — Next.js (flags-only)',
185
+ '',
186
+ `1. Install:`,
187
+ ' ```bash',
188
+ ' bun add @nebulr-group/bridge-nextjs',
189
+ ' ```',
190
+ '',
191
+ '2. Client side — `app/providers.tsx`:',
192
+ ' ```tsx',
193
+ ` "use client";`,
194
+ ` import { BridgeFlagsProvider } from '${pkg}';`,
195
+ '',
196
+ ' export function Providers({ children }: { children: React.ReactNode }) {',
197
+ ' return (',
198
+ ' <BridgeFlagsProvider',
199
+ ` appId="${ctx.appId}"`,
200
+ ` baseUrl="${ctx.baseUrl}"`,
201
+ ' >',
202
+ ' {children}',
203
+ ' </BridgeFlagsProvider>',
204
+ ' );',
205
+ ' }',
206
+ ' ```',
207
+ '',
208
+ '3. Server side — anywhere in a Server Component / Route Handler:',
209
+ ' ```ts',
210
+ ` import { getServerBridgeFlags } from '${pkg}/server';`,
211
+ ' const bridge = await getServerBridgeFlags({',
212
+ ` appId: '${ctx.appId}',`,
213
+ ` baseUrl: '${ctx.baseUrl}',`,
214
+ ' });',
215
+ ' const enabled = bridge.flag("new-dashboard", false);',
216
+ ' ```',
217
+ ].join('\n');
218
+ case 'angular':
219
+ return [
220
+ '# Bridge Flags — Angular (flags-only)',
221
+ '',
222
+ `1. Install:`,
223
+ ' ```bash',
224
+ ' bun add @nebulr-group/bridge-angular',
225
+ ' ```',
226
+ '',
227
+ '2. In `app.config.ts`:',
228
+ ' ```ts',
229
+ ` import { provideBridgeFlags } from '${pkg}';`,
230
+ '',
231
+ ' export const appConfig: ApplicationConfig = {',
232
+ ' providers: [',
233
+ ' provideBridgeFlags({',
234
+ ` appId: '${ctx.appId}',`,
235
+ ` baseUrl: '${ctx.baseUrl}',`,
236
+ ' }),',
237
+ ' ],',
238
+ ' };',
239
+ ' ```',
240
+ '',
241
+ '3. Inject the service:',
242
+ ' ```ts',
243
+ ` import { BridgeFlagsService } from '${pkg}';`,
244
+ '',
245
+ ' constructor(private flags: BridgeFlagsService) {}',
246
+ '',
247
+ ' newDashboard = this.flags.flag("new-dashboard", false);',
248
+ ' ```',
249
+ ].join('\n');
250
+ case 'nestjs':
251
+ return [
252
+ '# Bridge Flags — NestJS (flags-only, backend mode)',
253
+ '',
254
+ `1. Install:`,
255
+ ' ```bash',
256
+ ' bun add @nebulr-group/bridge-nestjs',
257
+ ' ```',
258
+ '',
259
+ '2. Import the module in `app.module.ts`:',
260
+ ' ```ts',
261
+ ` import { BridgeFlagsModule } from '${pkg}';`,
262
+ '',
263
+ ' @Module({',
264
+ ' imports: [',
265
+ ' BridgeFlagsModule.forRoot({',
266
+ ` appId: '${ctx.appId}',`,
267
+ ` baseUrl: '${ctx.baseUrl}',`,
268
+ ' mode: "backend",',
269
+ ' }),',
270
+ ' ],',
271
+ ' })',
272
+ ' export class AppModule {}',
273
+ ' ```',
274
+ '',
275
+ '3. Inject in any service / controller:',
276
+ ' ```ts',
277
+ ` import { BridgeFlagsService } from '${pkg}';`,
278
+ '',
279
+ ' constructor(private flags: BridgeFlagsService) {}',
280
+ '',
281
+ ' async handleRequest(req) {',
282
+ ' const enabled = this.flags.flag("new-checkout", false, {',
283
+ ' identity: req.user?.id,',
284
+ ' attributes: { plan: req.user?.plan },',
285
+ ' });',
286
+ ' }',
287
+ ' ```',
288
+ ].join('\n');
289
+ case 'express':
290
+ return [
291
+ '# Bridge Flags — Express (flags-only, backend mode)',
292
+ '',
293
+ `1. Install:`,
294
+ ' ```bash',
295
+ ' bun add @nebulr-group/bridge-express',
296
+ ' ```',
297
+ '',
298
+ '2. At app bootstrap:',
299
+ ' ```ts',
300
+ ` import { createBridgeFlags } from '${pkg}';`,
301
+ '',
302
+ ' const bridge = createBridgeFlags({',
303
+ ` appId: '${ctx.appId}',`,
304
+ ` baseUrl: '${ctx.baseUrl}',`,
305
+ ' mode: "backend",',
306
+ ' });',
307
+ '',
308
+ ' app.use(bridge.middleware());',
309
+ ' ```',
310
+ '',
311
+ '3. In a handler:',
312
+ ' ```ts',
313
+ ' app.get("/", (req, res) => {',
314
+ ' const enabled = req.bridge.flag("new-home", false);',
315
+ ' res.send(enabled ? "v2" : "v1");',
316
+ ' });',
317
+ ' ```',
318
+ ].join('\n');
319
+ }
320
+ }
321
+ // ── Provider config + next-steps blurbs ─────────────────────────────────────
322
+ function suggestedProviderConfig(framework) {
323
+ if (framework === 'nestjs' || framework === 'express') {
324
+ return { mode: 'backend', telemetry: { enabled: true, flushIntervalMs: 5000 } };
325
+ }
326
+ return { mode: 'frontend', telemetry: { enabled: true, flushIntervalMs: 5000 } };
327
+ }
328
+ function nextStepsFor(framework) {
329
+ const base = [
330
+ 'Apply the printed snippet to the file noted above.',
331
+ 'Run `bridge guide flags' + (framework !== 'unknown' ? ` --framework ${framework}` : '') + '` for the full integration prompt.',
332
+ 'Create your first flag: `bridge flag create --key hello-flag --state on --value-type boolean --on-value true --off-value false`',
333
+ 'Eval it locally: `bridge flag eval hello-flag --identity demo-user`',
334
+ ];
335
+ if (framework === 'unknown') {
336
+ return [
337
+ 'Could not auto-detect your framework — pass --framework <name> to scope the snippet.',
338
+ ...base,
339
+ ];
340
+ }
341
+ return base;
342
+ }
343
+ /** Probe whether a path exists (used by tests). */
344
+ export async function pathExists(path) {
345
+ try {
346
+ await access(path);
347
+ return true;
348
+ }
349
+ catch {
350
+ return false;
351
+ }
352
+ }
353
+ //# sourceMappingURL=flag-init.command.js.map