@dereekb/dbx-cli 13.14.0 → 13.16.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/index.esm.js CHANGED
@@ -349,11 +349,17 @@ function _ts_generator$1f(thisArg, body) {
349
349
  /client_secret[=:]\s*\S+/gi,
350
350
  /id_token[=:]\s*\S+/gi
351
351
  ];
352
+ /**
353
+ * Default per-request HTTP timeout in milliseconds, applied when no explicit `--timeout` is set.
354
+ *
355
+ * Without a default, the HTTP layer's `fetch` waits indefinitely on an unresponsive server, which
356
+ * surfaces as a CLI (or CI test) that hangs forever rather than failing with a clear error.
357
+ */ var DEFAULT_CLI_HTTP_TIMEOUT_MS = 60000;
352
358
  var _outputOptions = {};
353
359
  var _secretPatterns = _to_consumable_array$Z(DEFAULT_CLI_SECRET_PATTERNS);
354
360
  var _errorMapper;
355
361
  var _verbose = false;
356
- var _timeoutMs;
362
+ var _timeoutMs = DEFAULT_CLI_HTTP_TIMEOUT_MS;
357
363
  /**
358
364
  * Configures output options from parsed CLI arguments.
359
365
  *
@@ -408,7 +414,8 @@ var _timeoutMs;
408
414
  * @returns The fetch Response.
409
415
  */ function tracedFetch(fetcher, input, init) {
410
416
  return _async_to_generator$1f(function() {
411
- var _ref, fetchImpl, timeoutMs, method, url, controller, timeoutHandle, finalInit, localController, e;
417
+ var _ref, fetchImpl, timeoutMs, method, url, controller, timeoutHandle, finalInit, // Don't let the abort timer itself keep the Node event loop (or a test worker) alive.
418
+ _timeoutHandle_unref, localController, e;
412
419
  return _ts_generator$1f(this, function(_state) {
413
420
  switch(_state.label){
414
421
  case 0:
@@ -424,12 +431,13 @@ var _timeoutMs;
424
431
  }
425
432
  verboseLog("".concat(method, " ").concat(url));
426
433
  finalInit = init;
427
- if (timeoutMs != null && (init === null || init === void 0 ? void 0 : init.signal) == null) {
434
+ if (timeoutMs != null && timeoutMs > 0 && (init === null || init === void 0 ? void 0 : init.signal) == null) {
428
435
  localController = new AbortController();
429
436
  controller = localController;
430
437
  timeoutHandle = setTimeout(function() {
431
438
  return localController.abort();
432
439
  }, timeoutMs);
440
+ (_timeoutHandle_unref = timeoutHandle.unref) === null || _timeoutHandle_unref === void 0 ? void 0 : _timeoutHandle_unref.call(timeoutHandle);
433
441
  finalInit = _object_spread_props$t(_object_spread$L({}, init), {
434
442
  signal: localController.signal
435
443
  });
@@ -476,12 +484,13 @@ var _timeoutMs;
476
484
  /**
477
485
  * Sets the process-wide HTTP timeout (in milliseconds) honored by the HTTP layer.
478
486
  *
479
- * Pass `undefined` to clear. The HTTP helpers thread this into an `AbortController`
480
- * so individual `fetch` calls cancel after the configured duration.
487
+ * The HTTP helpers thread a positive value into an `AbortController` so individual `fetch` calls
488
+ * cancel after the configured duration. `undefined` falls back to {@link DEFAULT_CLI_HTTP_TIMEOUT_MS};
489
+ * `0` (or a negative value) disables the timeout entirely (the request waits indefinitely).
481
490
  *
482
- * @param ms - Timeout in ms, or `undefined` to clear.
491
+ * @param ms - Timeout in ms, `0`/negative to disable, or `undefined` to fall back to the default.
483
492
  */ function setCliTimeoutMs(ms) {
484
- _timeoutMs = ms;
493
+ _timeoutMs = ms === undefined ? DEFAULT_CLI_HTTP_TIMEOUT_MS : ms;
485
494
  }
486
495
  /**
487
496
  * @returns The current process-wide HTTP timeout in ms, or `undefined` when unset.
@@ -7053,11 +7062,11 @@ function resolveAuthSetupPrompt(input) {
7053
7062
  tokenType: tokenResponse.token_type,
7054
7063
  scope: tokenResponse.scope,
7055
7064
  expiresAt: expiresAt
7056
- }, sessionExpiresAt != null ? {
7065
+ }, sessionExpiresAt == null ? {} : {
7057
7066
  sessionExpiresAt: sessionExpiresAt
7058
- } : {}, rotationDisabled != null ? {
7067
+ }, rotationDisabled == null ? {} : {
7059
7068
  rotationDisabled: rotationDisabled
7060
- } : {});
7069
+ });
7061
7070
  return [
7062
7071
  4,
7063
7072
  tokens.set(envName, entry)
@@ -9277,14 +9286,15 @@ function _ts_generator$_(thisArg, body) {
9277
9286
  });
9278
9287
  return function(argv) {
9279
9288
  return _async_to_generator$_(function() {
9280
- var _argv__, command, _ref, _ref1, envName, env, entry, _readEnvTokenEntry, _refreshed_refresh_token, _refreshed_token_type, _refreshed_scope, _refreshed_expires_in, meta, suppliedRefreshToken, refreshed, e;
9289
+ var _argv__, command, _ref, envName, env, entry, e;
9281
9290
  return _ts_generator$_(this, function(_state) {
9282
9291
  switch(_state.label){
9283
9292
  case 0:
9284
9293
  // Configure verbose/timeout as early as possible so HTTP calls made from this very
9285
9294
  // middleware (OIDC discovery + token refresh) honor the flags.
9286
9295
  setCliVerbose(Boolean(argv.verbose));
9287
- setCliTimeoutMs(typeof argv.timeout === 'number' && argv.timeout > 0 ? argv.timeout * 1000 : undefined);
9296
+ // No `--timeout` flag undefined the default timeout applies. `--timeout 0` disables it.
9297
+ setCliTimeoutMs(typeof argv.timeout === 'number' ? argv.timeout * 1000 : undefined);
9288
9298
  command = (_argv__ = argv._) === null || _argv__ === void 0 ? void 0 : _argv__[0];
9289
9299
  if (typeof command === 'string' && input.skipCommands.has(command)) {
9290
9300
  return [
@@ -9295,9 +9305,9 @@ function _ts_generator$_(thisArg, body) {
9295
9305
  case 1:
9296
9306
  _state.trys.push([
9297
9307
  1,
9298
- 9,
9308
+ 4,
9299
9309
  ,
9300
- 10
9310
+ 5
9301
9311
  ]);
9302
9312
  return [
9303
9313
  4,
@@ -9310,86 +9320,18 @@ function _ts_generator$_(thisArg, body) {
9310
9320
  })
9311
9321
  ];
9312
9322
  case 2:
9313
- _ref1 = _state.sent(), envName = _ref1.envName, env = _ref1.env;
9323
+ _ref = _state.sent(), envName = _ref.envName, env = _ref.env;
9314
9324
  return [
9315
9325
  4,
9316
- tokens.get(envName)
9317
- ];
9318
- case 3:
9319
- entry = (_ref = _state.sent()) !== null && _ref !== void 0 ? _ref : undefined;
9320
- if (!entry) {
9321
- entry = (_readEnvTokenEntry = readEnvTokenEntry({
9322
- cliName: input.cliName
9323
- })) !== null && _readEnvTokenEntry !== void 0 ? _readEnvTokenEntry : undefined;
9324
- }
9325
- if (!(entry === null || entry === void 0 ? void 0 : entry.accessToken) && !(entry === null || entry === void 0 ? void 0 : entry.refreshToken)) {
9326
- throw new CliError({
9327
- message: 'No tokens for env "'.concat(envName, '". Run `').concat(input.cliName, " auth login --env ").concat(envName, "`."),
9328
- code: 'NOT_LOGGED_IN'
9329
- });
9330
- }
9331
- if (!(!entry.accessToken || isTokenExpired(entry))) return [
9332
- 3,
9333
- 8
9334
- ];
9335
- if (!entry.refreshToken) {
9336
- throw new CliError({
9337
- message: 'Token for env "'.concat(envName, '" is expired and no refresh token is cached. Re-login.'),
9338
- code: 'TOKEN_EXPIRED',
9339
- suggestion: "Run `".concat(input.cliName, " auth login --env ").concat(envName, "`.")
9340
- });
9341
- }
9342
- return [
9343
- 4,
9344
- discoverOidcMetadata({
9345
- issuer: env.oidcIssuer,
9346
- fallbackBaseUrl: env.apiBaseUrl
9347
- })
9348
- ];
9349
- case 4:
9350
- meta = _state.sent();
9351
- suppliedRefreshToken = entry.refreshToken;
9352
- return [
9353
- 4,
9354
- refreshAccessToken({
9355
- tokenEndpoint: meta.token_endpoint,
9356
- clientId: env.clientId,
9357
- clientSecret: env.clientSecret,
9358
- refreshToken: suppliedRefreshToken
9326
+ resolveAccessTokenEntry({
9327
+ cliName: input.cliName,
9328
+ envName: envName,
9329
+ env: env,
9330
+ tokens: tokens
9359
9331
  })
9360
9332
  ];
9361
- case 5:
9362
- refreshed = _state.sent();
9363
- entry = _object_spread_props$l(_object_spread$A({}, entry), {
9364
- accessToken: refreshed.access_token,
9365
- refreshToken: (_refreshed_refresh_token = refreshed.refresh_token) !== null && _refreshed_refresh_token !== void 0 ? _refreshed_refresh_token : entry.refreshToken,
9366
- tokenType: (_refreshed_token_type = refreshed.token_type) !== null && _refreshed_token_type !== void 0 ? _refreshed_token_type : entry.tokenType,
9367
- scope: (_refreshed_scope = refreshed.scope) !== null && _refreshed_scope !== void 0 ? _refreshed_scope : entry.scope,
9368
- expiresAt: Date.now() + ((_refreshed_expires_in = refreshed.expires_in) !== null && _refreshed_expires_in !== void 0 ? _refreshed_expires_in : 0) * 1000
9369
- });
9370
- if (!entry.fromEnv) return [
9371
- 3,
9372
- 6
9373
- ];
9374
- // Service tokens do not rotate, so a one-shot env-sourced invocation is durable without
9375
- // persisting. If a *rotating* refresh token was supplied, the rotation is lost on exit —
9376
- // warn that env credentials should be non-rotating service tokens.
9377
- if (refreshed.refresh_token != null && refreshed.refresh_token !== suppliedRefreshToken) {
9378
- process.stderr.write('Warning: the refresh token supplied via environment rotated on use; the rotated token cannot be persisted for a one-shot invocation. Use a non-rotating service token (auth login --service-token).\n');
9379
- }
9380
- return [
9381
- 3,
9382
- 8
9383
- ];
9384
- case 6:
9385
- return [
9386
- 4,
9387
- tokens.set(envName, entry)
9388
- ];
9389
- case 7:
9390
- _state.sent();
9391
- _state.label = 8;
9392
- case 8:
9333
+ case 3:
9334
+ entry = _state.sent();
9393
9335
  setCliContext(createCliContext({
9394
9336
  cliName: input.cliName,
9395
9337
  envName: envName,
@@ -9399,17 +9341,17 @@ function _ts_generator$_(thisArg, body) {
9399
9341
  }));
9400
9342
  return [
9401
9343
  3,
9402
- 10
9344
+ 5
9403
9345
  ];
9404
- case 9:
9346
+ case 4:
9405
9347
  e = _state.sent();
9406
9348
  outputError(e);
9407
9349
  process.exit(CLI_EXIT_CODE_AUTH);
9408
9350
  return [
9409
9351
  3,
9410
- 10
9352
+ 5
9411
9353
  ];
9412
- case 10:
9354
+ case 5:
9413
9355
  return [
9414
9356
  2
9415
9357
  ];
@@ -9418,6 +9360,146 @@ function _ts_generator$_(thisArg, body) {
9418
9360
  })();
9419
9361
  };
9420
9362
  }
9363
+ /**
9364
+ * Resolves the access-token entry for an env: prefers the cached token, falls
9365
+ * back to an env-supplied token, requires at least one token to be present,
9366
+ * and refreshes when the access token is missing or expired.
9367
+ *
9368
+ * @param input - The CLI name, resolved env, env name, and token cache store.
9369
+ * @returns The resolved (and refreshed when necessary) token entry.
9370
+ * @throws {CliError} When no tokens are available for the env.
9371
+ */ function resolveAccessTokenEntry(input) {
9372
+ return _async_to_generator$_(function() {
9373
+ var _ref, cliName, envName, env, tokens, entry, _readEnvTokenEntry;
9374
+ return _ts_generator$_(this, function(_state) {
9375
+ switch(_state.label){
9376
+ case 0:
9377
+ cliName = input.cliName, envName = input.envName, env = input.env, tokens = input.tokens;
9378
+ return [
9379
+ 4,
9380
+ tokens.get(envName)
9381
+ ];
9382
+ case 1:
9383
+ entry = (_ref = _state.sent()) !== null && _ref !== void 0 ? _ref : undefined;
9384
+ if (!entry) {
9385
+ entry = (_readEnvTokenEntry = readEnvTokenEntry({
9386
+ cliName: cliName
9387
+ })) !== null && _readEnvTokenEntry !== void 0 ? _readEnvTokenEntry : undefined;
9388
+ }
9389
+ if (!(entry === null || entry === void 0 ? void 0 : entry.accessToken) && !(entry === null || entry === void 0 ? void 0 : entry.refreshToken)) {
9390
+ throw new CliError({
9391
+ message: 'No tokens for env "'.concat(envName, '". Run `').concat(cliName, " auth login --env ").concat(envName, "`."),
9392
+ code: 'NOT_LOGGED_IN'
9393
+ });
9394
+ }
9395
+ if (!(!entry.accessToken || isTokenExpired(entry))) return [
9396
+ 3,
9397
+ 3
9398
+ ];
9399
+ return [
9400
+ 4,
9401
+ refreshTokenEntry({
9402
+ cliName: cliName,
9403
+ envName: envName,
9404
+ env: env,
9405
+ tokens: tokens,
9406
+ entry: entry
9407
+ })
9408
+ ];
9409
+ case 2:
9410
+ entry = _state.sent();
9411
+ _state.label = 3;
9412
+ case 3:
9413
+ return [
9414
+ 2,
9415
+ entry
9416
+ ];
9417
+ }
9418
+ });
9419
+ })();
9420
+ }
9421
+ /**
9422
+ * Refreshes an absent/expired access token via OIDC. Cache-sourced entries are
9423
+ * persisted; env-sourced service tokens are durable for the one-shot
9424
+ * invocation and not written back (and a rotated env refresh token is warned
9425
+ * about, since it cannot be persisted).
9426
+ *
9427
+ * @param input - The CLI name, env, env name, token store, and the entry to refresh.
9428
+ * @returns The refreshed token entry.
9429
+ * @throws {CliError} When the entry is expired and has no refresh token.
9430
+ */ function refreshTokenEntry(input) {
9431
+ return _async_to_generator$_(function() {
9432
+ var _refreshed_refresh_token, _refreshed_token_type, _refreshed_scope, _refreshed_expires_in, cliName, envName, env, tokens, entry, meta, suppliedRefreshToken, refreshed, updated;
9433
+ return _ts_generator$_(this, function(_state) {
9434
+ switch(_state.label){
9435
+ case 0:
9436
+ cliName = input.cliName, envName = input.envName, env = input.env, tokens = input.tokens, entry = input.entry;
9437
+ if (!entry.refreshToken) {
9438
+ throw new CliError({
9439
+ message: 'Token for env "'.concat(envName, '" is expired and no refresh token is cached. Re-login.'),
9440
+ code: 'TOKEN_EXPIRED',
9441
+ suggestion: "Run `".concat(cliName, " auth login --env ").concat(envName, "`.")
9442
+ });
9443
+ }
9444
+ return [
9445
+ 4,
9446
+ discoverOidcMetadata({
9447
+ issuer: env.oidcIssuer,
9448
+ fallbackBaseUrl: env.apiBaseUrl
9449
+ })
9450
+ ];
9451
+ case 1:
9452
+ meta = _state.sent();
9453
+ suppliedRefreshToken = entry.refreshToken;
9454
+ return [
9455
+ 4,
9456
+ refreshAccessToken({
9457
+ tokenEndpoint: meta.token_endpoint,
9458
+ clientId: env.clientId,
9459
+ clientSecret: env.clientSecret,
9460
+ refreshToken: suppliedRefreshToken
9461
+ })
9462
+ ];
9463
+ case 2:
9464
+ refreshed = _state.sent();
9465
+ updated = _object_spread_props$l(_object_spread$A({}, entry), {
9466
+ accessToken: refreshed.access_token,
9467
+ refreshToken: (_refreshed_refresh_token = refreshed.refresh_token) !== null && _refreshed_refresh_token !== void 0 ? _refreshed_refresh_token : entry.refreshToken,
9468
+ tokenType: (_refreshed_token_type = refreshed.token_type) !== null && _refreshed_token_type !== void 0 ? _refreshed_token_type : entry.tokenType,
9469
+ scope: (_refreshed_scope = refreshed.scope) !== null && _refreshed_scope !== void 0 ? _refreshed_scope : entry.scope,
9470
+ expiresAt: Date.now() + ((_refreshed_expires_in = refreshed.expires_in) !== null && _refreshed_expires_in !== void 0 ? _refreshed_expires_in : 0) * 1000
9471
+ });
9472
+ if (!updated.fromEnv) return [
9473
+ 3,
9474
+ 3
9475
+ ];
9476
+ // Service tokens do not rotate, so a one-shot env-sourced invocation is durable without
9477
+ // persisting. If a *rotating* refresh token was supplied, the rotation is lost on exit —
9478
+ // warn that env credentials should be non-rotating service tokens.
9479
+ if (refreshed.refresh_token != null && refreshed.refresh_token !== suppliedRefreshToken) {
9480
+ process.stderr.write('Warning: the refresh token supplied via environment rotated on use; the rotated token cannot be persisted for a one-shot invocation. Use a non-rotating service token (auth login --service-token).\n');
9481
+ }
9482
+ return [
9483
+ 3,
9484
+ 5
9485
+ ];
9486
+ case 3:
9487
+ return [
9488
+ 4,
9489
+ tokens.set(envName, updated)
9490
+ ];
9491
+ case 4:
9492
+ _state.sent();
9493
+ _state.label = 5;
9494
+ case 5:
9495
+ return [
9496
+ 2,
9497
+ updated
9498
+ ];
9499
+ }
9500
+ });
9501
+ })();
9502
+ }
9421
9503
  /**
9422
9504
  * Test-only middleware that skips OIDC discovery, disk token loading, and token refresh, attaching
9423
9505
  * a pre-built {@link CliContext} directly via {@link setCliContext}.
@@ -9670,7 +9752,8 @@ function _ts_generator$Z(thisArg, body) {
9670
9752
  // (auth, env, doctor, output) — which bypass the auth middleware via skipCommands —
9671
9753
  // still respect `--verbose` and `--timeout`.
9672
9754
  setCliVerbose(Boolean(argv.verbose));
9673
- setCliTimeoutMs(typeof argv.timeout === 'number' && argv.timeout > 0 ? argv.timeout * 1000 : undefined);
9755
+ // No `--timeout` flag undefined the default timeout applies. `--timeout 0` disables it.
9756
+ setCliTimeoutMs(typeof argv.timeout === 'number' ? argv.timeout * 1000 : undefined);
9674
9757
  commandPath = argv._ ? argv._.map(String) : [];
9675
9758
  topCommand = commandPath[0];
9676
9759
  setDumpDir = argv.setDumpDir;
@@ -10448,7 +10531,7 @@ function _ts_generator$X(thisArg, body) {
10448
10531
  }).option('timeout', {
10449
10532
  type: 'number',
10450
10533
  global: true,
10451
- describe: 'Per-HTTP-request timeout in seconds (aborts via AbortController)'
10534
+ describe: 'Per-HTTP-request timeout in seconds (default 60; 0 disables; aborts via AbortController)'
10452
10535
  }).option('data-help', {
10453
10536
  type: 'string',
10454
10537
  choices: [
@@ -11269,6 +11352,7 @@ function hideGlobalOptions(yargs, names) {
11269
11352
  * @returns Multi-section epilogue string, or `undefined` when the entry has no
11270
11353
  * metadata worth surfacing.
11271
11354
  */ function buildEntryEpilogue(entry, context) {
11355
+ var _sections, _sections1;
11272
11356
  var dataHelpFormat = context.dataHelpFormat, helpMode = context.helpMode;
11273
11357
  var showAction = helpMode === 'action' || helpMode === 'both';
11274
11358
  var showParams = helpMode === 'params' || helpMode === 'both';
@@ -11277,31 +11361,67 @@ function hideGlobalOptions(yargs, names) {
11277
11361
  var actionSection = buildActionSection(entry);
11278
11362
  if (actionSection) sections.push(actionSection);
11279
11363
  }
11280
- var schemaSections = [];
11281
- if (showParams) {
11282
- var _sections;
11283
- var paramsSection = buildParamsSection(entry);
11284
- if (paramsSection) sections.push(paramsSection);
11285
- schemaSections = renderParamsSchemaSections(entry, dataHelpFormat);
11286
- (_sections = sections).push.apply(_sections, _to_consumable_array$P(schemaSections));
11287
- var resultSection = buildResultSection(entry);
11288
- if (resultSection) {
11289
- sections.push(resultSection);
11290
- } else if (entry.resultTypeName) {
11291
- sections.push("Result: ".concat(entry.resultTypeName));
11292
- }
11293
- }
11364
+ var params = showParams ? collectParamsSections(entry, dataHelpFormat) : {
11365
+ sections: [],
11366
+ schemaCount: 0
11367
+ };
11368
+ (_sections = sections).push.apply(_sections, _to_consumable_array$P(params.sections));
11294
11369
  if (entry.sourceFile) {
11295
11370
  sections.push("Source: ".concat(entry.sourceFile));
11296
11371
  }
11297
- if (showParams && schemaSections.length > 0 && dataHelpFormat !== 'both') {
11372
+ (_sections1 = sections).push.apply(_sections1, _to_consumable_array$P(collectHelpHints({
11373
+ entry: entry,
11374
+ helpMode: helpMode,
11375
+ dataHelpFormat: dataHelpFormat,
11376
+ showParams: showParams,
11377
+ schemaCount: params.schemaCount
11378
+ })));
11379
+ return sections.length > 0 ? sections.join('\n\n') : undefined;
11380
+ }
11381
+ /**
11382
+ * Collects the params-side help sections (params interface, schema renders,
11383
+ * result) for an entry, reporting how many schema sections were produced so
11384
+ * the caller can decide whether to surface the schema-format hint.
11385
+ *
11386
+ * @param entry - The manifest entry being documented.
11387
+ * @param dataHelpFormat - The requested schema render format.
11388
+ * @returns The ordered sections and the number of schema sections produced.
11389
+ */ function collectParamsSections(entry, dataHelpFormat) {
11390
+ var _sections;
11391
+ var sections = [];
11392
+ var paramsSection = buildParamsSection(entry);
11393
+ if (paramsSection) sections.push(paramsSection);
11394
+ var schemaSections = renderParamsSchemaSections(entry, dataHelpFormat);
11395
+ (_sections = sections).push.apply(_sections, _to_consumable_array$P(schemaSections));
11396
+ var resultSection = buildResultSection(entry);
11397
+ if (resultSection) {
11398
+ sections.push(resultSection);
11399
+ } else if (entry.resultTypeName) {
11400
+ sections.push("Result: ".concat(entry.resultTypeName));
11401
+ }
11402
+ return {
11403
+ sections: sections,
11404
+ schemaCount: schemaSections.length
11405
+ };
11406
+ }
11407
+ /**
11408
+ * Builds the trailing `--help` hint lines: how to switch the schema format,
11409
+ * and (in `both` mode, when there is something to focus on) how to narrow the
11410
+ * help to a single section.
11411
+ *
11412
+ * @param input - The entry, help mode, schema format, params visibility, and schema-section count.
11413
+ * @returns The hint lines (possibly empty).
11414
+ */ function collectHelpHints(input) {
11415
+ var entry = input.entry, helpMode = input.helpMode, dataHelpFormat = input.dataHelpFormat, showParams = input.showParams, schemaCount = input.schemaCount;
11416
+ var hints = [];
11417
+ if (showParams && schemaCount > 0 && dataHelpFormat !== 'both') {
11298
11418
  var other = dataHelpFormat === 'jsonschema' ? 'arktype' : 'jsonschema';
11299
- sections.push("(Pass --data-help=".concat(other, " or --data-help=both to switch the schema format above.)"));
11419
+ hints.push("(Pass --data-help=".concat(other, " or --data-help=both to switch the schema format above.)"));
11300
11420
  }
11301
11421
  if (helpMode === 'both' && (entry.description || entry.paramsTypeDescription || entry.paramsFields && entry.paramsFields.length > 0)) {
11302
- sections.push("(Pass --help-mode=action or --help-mode=params to focus this help on a single section.)");
11422
+ hints.push("(Pass --help-mode=action or --help-mode=params to focus this help on a single section.)");
11303
11423
  }
11304
- return sections.length > 0 ? sections.join('\n\n') : undefined;
11424
+ return hints;
11305
11425
  }
11306
11426
  function buildActionSection(entry) {
11307
11427
  return entry.description ? "About:\n".concat(indentLines(entry.description, ' ')) : undefined;
@@ -11317,31 +11437,8 @@ function buildParamsSection(entry) {
11317
11437
  lines.push(indentLines(entry.paramsTypeDescription, ' '));
11318
11438
  }
11319
11439
  if (entry.paramsFields && entry.paramsFields.length > 0) {
11320
- lines.push('', 'Fields:');
11321
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
11322
- try {
11323
- for(var _iterator = entry.paramsFields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
11324
- var field = _step.value;
11325
- var header = " - ".concat(field.name, ": ").concat(field.typeText);
11326
- lines.push(header);
11327
- if (field.description) {
11328
- lines.push(indentLines(field.description, ' '));
11329
- }
11330
- }
11331
- } catch (err) {
11332
- _didIteratorError = true;
11333
- _iteratorError = err;
11334
- } finally{
11335
- try {
11336
- if (!_iteratorNormalCompletion && _iterator.return != null) {
11337
- _iterator.return();
11338
- }
11339
- } finally{
11340
- if (_didIteratorError) {
11341
- throw _iteratorError;
11342
- }
11343
- }
11344
- }
11440
+ var _lines;
11441
+ (_lines = lines).push.apply(_lines, _to_consumable_array$P(buildFieldLines(entry.paramsFields)));
11345
11442
  }
11346
11443
  result = lines.join('\n');
11347
11444
  }
@@ -11358,36 +11455,49 @@ function buildResultSection(entry) {
11358
11455
  lines.push(indentLines(entry.resultTypeDescription, ' '));
11359
11456
  }
11360
11457
  if (entry.resultFields && entry.resultFields.length > 0) {
11361
- lines.push('', 'Fields:');
11362
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
11363
- try {
11364
- for(var _iterator = entry.resultFields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
11365
- var field = _step.value;
11366
- var header = " - ".concat(field.name, ": ").concat(field.typeText);
11367
- lines.push(header);
11368
- if (field.description) {
11369
- lines.push(indentLines(field.description, ' '));
11370
- }
11371
- }
11372
- } catch (err) {
11373
- _didIteratorError = true;
11374
- _iteratorError = err;
11375
- } finally{
11376
- try {
11377
- if (!_iteratorNormalCompletion && _iterator.return != null) {
11378
- _iterator.return();
11379
- }
11380
- } finally{
11381
- if (_didIteratorError) {
11382
- throw _iteratorError;
11383
- }
11384
- }
11385
- }
11458
+ var _lines;
11459
+ (_lines = lines).push.apply(_lines, _to_consumable_array$P(buildFieldLines(entry.resultFields)));
11386
11460
  }
11387
11461
  result = lines.join('\n');
11388
11462
  }
11389
11463
  return result;
11390
11464
  }
11465
+ /**
11466
+ * Renders the `Fields:` block shared by the params and result help sections —
11467
+ * one `- name: type` header per field, with its indented description below.
11468
+ *
11469
+ * @param fields - The manifest fields to render.
11470
+ * @returns The lines for the fields block, beginning with a blank line and the `Fields:` header.
11471
+ */ function buildFieldLines(fields) {
11472
+ var lines = [
11473
+ '',
11474
+ 'Fields:'
11475
+ ];
11476
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
11477
+ try {
11478
+ for(var _iterator = fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
11479
+ var field = _step.value;
11480
+ lines.push(" - ".concat(field.name, ": ").concat(field.typeText));
11481
+ if (field.description) {
11482
+ lines.push(indentLines(field.description, ' '));
11483
+ }
11484
+ }
11485
+ } catch (err) {
11486
+ _didIteratorError = true;
11487
+ _iteratorError = err;
11488
+ } finally{
11489
+ try {
11490
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
11491
+ _iterator.return();
11492
+ }
11493
+ } finally{
11494
+ if (_didIteratorError) {
11495
+ throw _iteratorError;
11496
+ }
11497
+ }
11498
+ }
11499
+ return lines;
11500
+ }
11391
11501
  function indentLines(text, indent) {
11392
11502
  return text.split('\n').map(function(line) {
11393
11503
  return "".concat(indent).concat(line);
@@ -11396,25 +11506,38 @@ function indentLines(text, indent) {
11396
11506
  function renderParamsSchemaSections(entry, dataHelpFormat) {
11397
11507
  var sections = [];
11398
11508
  if (entry.paramsValidator) {
11399
- if (dataHelpFormat === 'jsonschema' || dataHelpFormat === 'both') {
11400
- var jsonSchemaSection = renderJsonSchemaSection(entry);
11401
- if (jsonSchemaSection) {
11402
- sections.push(jsonSchemaSection);
11403
- }
11509
+ sections = collectSchemaSections(entry, dataHelpFormat);
11510
+ }
11511
+ return sections;
11512
+ }
11513
+ /**
11514
+ * Renders the requested params-schema sections (JSON Schema and/or arktype),
11515
+ * with a last-ditch arktype-expression fallback when the requested format
11516
+ * produced nothing usable. Assumes the entry has a bound params validator.
11517
+ *
11518
+ * @param entry - The manifest entry whose params validator is rendered.
11519
+ * @param dataHelpFormat - The requested schema render format.
11520
+ * @returns The rendered schema sections (possibly empty).
11521
+ */ function collectSchemaSections(entry, dataHelpFormat) {
11522
+ var sections = [];
11523
+ if (dataHelpFormat === 'jsonschema' || dataHelpFormat === 'both') {
11524
+ var jsonSchemaSection = renderJsonSchemaSection(entry);
11525
+ if (jsonSchemaSection) {
11526
+ sections.push(jsonSchemaSection);
11404
11527
  }
11405
- if (dataHelpFormat === 'arktype' || dataHelpFormat === 'both') {
11406
- var arktypeSection = renderArktypeExpressionSection(entry);
11407
- if (arktypeSection) {
11408
- sections.push(arktypeSection);
11409
- }
11528
+ }
11529
+ if (dataHelpFormat === 'arktype' || dataHelpFormat === 'both') {
11530
+ var arktypeSection = renderArktypeExpressionSection(entry);
11531
+ if (arktypeSection) {
11532
+ sections.push(arktypeSection);
11410
11533
  }
11411
- if (sections.length === 0) {
11412
- // Last-ditch fallback when the requested format produced nothing usable
11413
- // (e.g. arktype was requested but the bound validator has no expression).
11414
- var expression = readArktypeExpression(entry);
11415
- if (expression) {
11416
- sections.push("Params Schema (arktype): ".concat(expression));
11417
- }
11534
+ }
11535
+ if (sections.length === 0) {
11536
+ // Last-ditch fallback when the requested format produced nothing usable
11537
+ // (e.g. arktype was requested but the bound validator has no expression).
11538
+ var expression = readArktypeExpression(entry);
11539
+ if (expression) {
11540
+ sections.push("Params Schema (arktype): ".concat(expression));
11418
11541
  }
11419
11542
  }
11420
11543
  return sections;
@@ -19788,28 +19911,50 @@ function buildModelEntry(args) {
19788
19911
  sourceFile: input.sourceFile,
19789
19912
  fields: fields,
19790
19913
  enums: relevantEnums.map(function(e) {
19791
- return _object_spread$u({
19792
- name: e.name,
19793
- values: e.values.map(function(v) {
19794
- return v.description ? {
19795
- name: v.name,
19796
- value: v.value,
19797
- description: v.description
19798
- } : {
19799
- name: v.name,
19800
- value: v.value
19801
- };
19802
- })
19803
- }, e.description ? {
19804
- description: e.description
19805
- } : {});
19914
+ return buildModelEnumEntry(e);
19806
19915
  }),
19807
19916
  detectionHints: detectionHints
19808
19917
  }), groupName ? {
19809
19918
  modelGroup: groupName
19810
19919
  } : {}, collectionKind ? {
19811
19920
  collectionKind: collectionKind
19812
- } : {}, markers.userKeyedById ? {
19921
+ } : {}, buildModelMarkerFlags(markers), buildModelArchetypeFields(archetypeInfo), compositeKey ? {
19922
+ compositeKey: compositeKey
19923
+ } : {}, iface.tags.dbxModelRead ? {
19924
+ read: iface.tags.dbxModelRead
19925
+ } : {});
19926
+ }
19927
+ /**
19928
+ * Projects one extracted enum into the manifest enum shape, omitting empty
19929
+ * value/enum descriptions.
19930
+ *
19931
+ * @param e - The extracted enum.
19932
+ * @returns The manifest enum entry.
19933
+ */ function buildModelEnumEntry(e) {
19934
+ return _object_spread$u({
19935
+ name: e.name,
19936
+ values: e.values.map(function(v) {
19937
+ return v.description ? {
19938
+ name: v.name,
19939
+ value: v.value,
19940
+ description: v.description
19941
+ } : {
19942
+ name: v.name,
19943
+ value: v.value
19944
+ };
19945
+ })
19946
+ }, e.description ? {
19947
+ description: e.description
19948
+ } : {});
19949
+ }
19950
+ /**
19951
+ * Builds the optional keyed-by/aggregation marker flags portion of a model
19952
+ * entry, including each flag only when set.
19953
+ *
19954
+ * @param markers - The computed marker flags.
19955
+ * @returns A partial model entry with only the active marker fields.
19956
+ */ function buildModelMarkerFlags(markers) {
19957
+ return _object_spread$u({}, markers.userKeyedById ? {
19813
19958
  userKeyedById: true
19814
19959
  } : {}, markers.hasUserUidField ? {
19815
19960
  hasUserUidField: true
@@ -19825,14 +19970,19 @@ function buildModelEntry(args) {
19825
19970
  organizationalGroupRoot: true
19826
19971
  } : {}, markers.aggregatesFromNonEmpty ? {
19827
19972
  aggregatesFrom: markers.aggregatesFrom
19828
- } : {}, archetypeInfo.archetypes.length > 0 ? {
19973
+ } : {});
19974
+ }
19975
+ /**
19976
+ * Builds the optional archetype portion of a model entry, including the
19977
+ * archetype list and per-slug axes only when present.
19978
+ *
19979
+ * @param archetypeInfo - The computed archetype info.
19980
+ * @returns A partial model entry with only the present archetype fields.
19981
+ */ function buildModelArchetypeFields(archetypeInfo) {
19982
+ return _object_spread$u({}, archetypeInfo.archetypes.length > 0 ? {
19829
19983
  archetypes: archetypeInfo.archetypes
19830
19984
  } : {}, archetypeInfo.archetypeAxesBySlug ? {
19831
19985
  archetypeAxesBySlug: archetypeInfo.archetypeAxesBySlug
19832
- } : {}, compositeKey ? {
19833
- compositeKey: compositeKey
19834
- } : {}, iface.tags.dbxModelRead ? {
19835
- read: iface.tags.dbxModelRead
19836
19986
  } : {});
19837
19987
  }
19838
19988
  function filterRelevantEnums(fields, enums) {
@@ -20882,25 +21032,8 @@ var COMPOSITE_KEY_MODEL_NAME_RE = /^[A-Za-z][A-Za-z0-9_$]*$/;
20882
21032
  var key = token.slice(0, eq).trim();
20883
21033
  var v = token.slice(eq + 1).trim();
20884
21034
  if (key === 'from') {
20885
- if (v === '*') {
20886
- fromValue = '*';
20887
- } else if (v.length > 0) {
20888
- // Tolerate the wildcard mixed with concrete entries here; the
20889
- // validator emits MODEL_COMPOSITE_KEY_WILDCARD_MIXED when it sees both.
20890
- var parts = v.split(',').map(function(p) {
20891
- return p.trim();
20892
- }).filter(function(p) {
20893
- return p.length > 0;
20894
- });
20895
- if (parts.includes('*')) {
20896
- // Preserve the literal list so the validator can flag the mix.
20897
- fromValue = parts;
20898
- } else {
20899
- fromValue = parts.filter(function(p) {
20900
- return COMPOSITE_KEY_MODEL_NAME_RE.test(p);
20901
- });
20902
- }
20903
- }
21035
+ var parsedFrom = parseCompositeKeyFromValue(v);
21036
+ if (parsedFrom !== undefined) fromValue = parsedFrom;
20904
21037
  } else if (key === 'encoding' && (v === 'two-way' || v === 'one-way')) encoding = v;
20905
21038
  }
20906
21039
  } catch (err) {
@@ -20922,6 +21055,32 @@ var COMPOSITE_KEY_MODEL_NAME_RE = /^[A-Za-z][A-Za-z0-9_$]*$/;
20922
21055
  encoding: encoding
20923
21056
  };
20924
21057
  }
21058
+ /**
21059
+ * Parses the `from=` value of a `@dbxModelCompositeKey` tag into the wildcard
21060
+ * `'*'` or a concrete model-name list. Returns `undefined` for an empty value
21061
+ * so the caller leaves any previously-parsed `from` untouched.
21062
+ *
21063
+ * @param v - The raw text after `from=`.
21064
+ * @returns `'*'`, the parsed model-name list, or `undefined` when the value is empty.
21065
+ */ function parseCompositeKeyFromValue(v) {
21066
+ var result;
21067
+ if (v === '*') {
21068
+ result = '*';
21069
+ } else if (v.length > 0) {
21070
+ // Tolerate the wildcard mixed with concrete entries here; the validator
21071
+ // emits MODEL_COMPOSITE_KEY_WILDCARD_MIXED when it sees both.
21072
+ var parts = v.split(',').map(function(p) {
21073
+ return p.trim();
21074
+ }).filter(function(p) {
21075
+ return p.length > 0;
21076
+ });
21077
+ // Preserve the literal list (incl. `*`) so the validator can flag the mix.
21078
+ result = parts.includes('*') ? parts : parts.filter(function(p) {
21079
+ return COMPOSITE_KEY_MODEL_NAME_RE.test(p);
21080
+ });
21081
+ }
21082
+ return result;
21083
+ }
20925
21084
  function takeFirstTagText(current, tag) {
20926
21085
  var _tag_getCommentText;
20927
21086
  if (current !== undefined) return current;
@@ -30963,14 +31122,7 @@ var EMPTY_ROLE_CONST_RESOLUTION = {
30963
31122
  */ function resolveRoleConstByName(name, ctx) {
30964
31123
  var result;
30965
31124
  var scalar = ctx.knownRoles.get(name);
30966
- if (scalar !== undefined) {
30967
- result = {
30968
- roles: [
30969
- scalar
30970
- ],
30971
- unresolved: []
30972
- };
30973
- } else {
31125
+ if (scalar === undefined) {
30974
31126
  var arrayExpr = ctx.localArrayRoles.get(name);
30975
31127
  if (arrayExpr === undefined) {
30976
31128
  result = {
@@ -30988,6 +31140,13 @@ var EMPTY_ROLE_CONST_RESOLUTION = {
30988
31140
  seen: nextSeen
30989
31141
  }));
30990
31142
  }
31143
+ } else {
31144
+ result = {
31145
+ roles: [
31146
+ scalar
31147
+ ],
31148
+ unresolved: []
31149
+ };
30991
31150
  }
30992
31151
  return result;
30993
31152
  }
@@ -42792,7 +42951,7 @@ var DEFAULT_EXCLUDE = [
42792
42951
  * @returns Map keyed by entry slug → reference count + locations.
42793
42952
  */ function scanFactoryReferences(input) {
42794
42953
  return _async_to_generator$z(function() {
42795
- var projectRoot, entries, _input_include, include, _input_exclude, exclude, _input_readFile, readFile, _input_globber, globber, result, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, namesBySlug, declFilePathsBySlug, declFilePaths, filePaths, combinedPattern, sitesBySlug, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, entry1, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, relPath, absolutePath, err, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, _step_value, slug, sites, specCount, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, site;
42954
+ var projectRoot, entries, _input_include, include, _input_exclude, exclude, _input_readFile, readFile, _input_globber, globber, result, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, namesBySlug, declFilePathsBySlug, declFilePaths, filePaths, combinedPattern, sitesBySlug, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value, slug, sites;
42796
42955
  return _ts_generator$z(this, function(_state) {
42797
42956
  switch(_state.label){
42798
42957
  case 0:
@@ -42825,7 +42984,7 @@ var DEFAULT_EXCLUDE = [
42825
42984
  }
42826
42985
  if (!(entries.length > 0)) return [
42827
42986
  3,
42828
- 10
42987
+ 3
42829
42988
  ];
42830
42989
  namesBySlug = buildNameLookup(entries);
42831
42990
  declFilePathsBySlug = buildDeclFilePathLookup(entries);
@@ -42843,14 +43002,27 @@ var DEFAULT_EXCLUDE = [
42843
43002
  combinedPattern = buildCombinedRegex(Array.from(namesBySlug.values()));
42844
43003
  if (!(combinedPattern !== undefined)) return [
42845
43004
  3,
42846
- 10
43005
+ 3
42847
43006
  ];
42848
- sitesBySlug = new Map();
43007
+ return [
43008
+ 4,
43009
+ collectReferenceSites({
43010
+ entries: entries,
43011
+ filePaths: filePaths,
43012
+ projectRoot: projectRoot,
43013
+ declFilePaths: declFilePaths,
43014
+ readFile: readFile,
43015
+ combinedPattern: combinedPattern,
43016
+ namesBySlug: namesBySlug
43017
+ })
43018
+ ];
43019
+ case 2:
43020
+ sitesBySlug = _state.sent();
42849
43021
  _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
42850
43022
  try {
42851
- for(_iterator1 = entries[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
42852
- entry1 = _step1.value;
42853
- sitesBySlug.set(entry1.slug, []);
43023
+ for(_iterator1 = sitesBySlug[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
43024
+ _step_value = _sliced_to_array$2(_step1.value, 2), slug = _step_value[0], sites = _step_value[1];
43025
+ result.set(slug, tallyReferenceSites(sites));
42854
43026
  }
42855
43027
  } catch (err) {
42856
43028
  _didIteratorError1 = true;
@@ -42866,30 +43038,72 @@ var DEFAULT_EXCLUDE = [
42866
43038
  }
42867
43039
  }
42868
43040
  }
42869
- _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
42870
- _state.label = 2;
42871
- case 2:
42872
- _state.trys.push([
43041
+ _state.label = 3;
43042
+ case 3:
43043
+ return [
42873
43044
  2,
43045
+ result
43046
+ ];
43047
+ }
43048
+ });
43049
+ })();
43050
+ }
43051
+ /**
43052
+ * Seeds an empty site list per entry slug, then scans every non-declaration
43053
+ * file for factory references, accumulating the hits per slug.
43054
+ *
43055
+ * @param input - The entries, globbed file paths, project root, declaration-file guard set, reader, combined pattern, and name lookup.
43056
+ * @returns The reference sites discovered, keyed by entry slug.
43057
+ */ function collectReferenceSites(input) {
43058
+ return _async_to_generator$z(function() {
43059
+ var entries, filePaths, projectRoot, declFilePaths, readFile, combinedPattern, namesBySlug, sitesBySlug, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, relPath, absolutePath, err;
43060
+ return _ts_generator$z(this, function(_state) {
43061
+ switch(_state.label){
43062
+ case 0:
43063
+ entries = input.entries, filePaths = input.filePaths, projectRoot = input.projectRoot, declFilePaths = input.declFilePaths, readFile = input.readFile, combinedPattern = input.combinedPattern, namesBySlug = input.namesBySlug;
43064
+ sitesBySlug = new Map();
43065
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
43066
+ try {
43067
+ for(_iterator = entries[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
43068
+ entry = _step.value;
43069
+ sitesBySlug.set(entry.slug, []);
43070
+ }
43071
+ } catch (err) {
43072
+ _didIteratorError = true;
43073
+ _iteratorError = err;
43074
+ } finally{
43075
+ try {
43076
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
43077
+ _iterator.return();
43078
+ }
43079
+ } finally{
43080
+ if (_didIteratorError) {
43081
+ throw _iteratorError;
43082
+ }
43083
+ }
43084
+ }
43085
+ _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
43086
+ _state.label = 1;
43087
+ case 1:
43088
+ _state.trys.push([
43089
+ 1,
43090
+ 6,
42874
43091
  7,
42875
- 8,
42876
- 9
43092
+ 8
42877
43093
  ]);
42878
- _iterator2 = filePaths[Symbol.iterator]();
42879
- _state.label = 3;
42880
- case 3:
42881
- if (!!(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done)) return [
43094
+ _iterator1 = filePaths[Symbol.iterator]();
43095
+ _state.label = 2;
43096
+ case 2:
43097
+ if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
42882
43098
  3,
42883
- 6
43099
+ 5
42884
43100
  ];
42885
- relPath = _step2.value;
43101
+ relPath = _step1.value;
42886
43102
  absolutePath = resolve(projectRoot, relPath);
42887
- if (declFilePaths.has(absolutePath)) {
42888
- return [
42889
- 3,
42890
- 5
42891
- ];
42892
- }
43103
+ if (!!declFilePaths.has(absolutePath)) return [
43104
+ 3,
43105
+ 4
43106
+ ];
42893
43107
  return [
42894
43108
  4,
42895
43109
  scanOneFile({
@@ -42901,100 +43115,87 @@ var DEFAULT_EXCLUDE = [
42901
43115
  sitesBySlug: sitesBySlug
42902
43116
  })
42903
43117
  ];
42904
- case 4:
43118
+ case 3:
42905
43119
  _state.sent();
42906
- _state.label = 5;
42907
- case 5:
42908
- _iteratorNormalCompletion2 = true;
43120
+ _state.label = 4;
43121
+ case 4:
43122
+ _iteratorNormalCompletion1 = true;
42909
43123
  return [
42910
43124
  3,
42911
- 3
43125
+ 2
42912
43126
  ];
42913
- case 6:
43127
+ case 5:
42914
43128
  return [
42915
43129
  3,
42916
- 9
43130
+ 8
42917
43131
  ];
42918
- case 7:
43132
+ case 6:
42919
43133
  err = _state.sent();
42920
- _didIteratorError2 = true;
42921
- _iteratorError2 = err;
43134
+ _didIteratorError1 = true;
43135
+ _iteratorError1 = err;
42922
43136
  return [
42923
43137
  3,
42924
- 9
43138
+ 8
42925
43139
  ];
42926
- case 8:
43140
+ case 7:
42927
43141
  try {
42928
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
42929
- _iterator2.return();
43142
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
43143
+ _iterator1.return();
42930
43144
  }
42931
43145
  } finally{
42932
- if (_didIteratorError2) {
42933
- throw _iteratorError2;
43146
+ if (_didIteratorError1) {
43147
+ throw _iteratorError1;
42934
43148
  }
42935
43149
  }
42936
43150
  return [
42937
43151
  7
42938
43152
  ];
42939
- case 9:
42940
- _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined;
42941
- try {
42942
- for(_iterator3 = sitesBySlug[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true){
42943
- _step_value = _sliced_to_array$2(_step3.value, 2), slug = _step_value[0], sites = _step_value[1];
42944
- specCount = 0;
42945
- _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = undefined;
42946
- try {
42947
- for(_iterator4 = sites[Symbol.iterator](); !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true){
42948
- site = _step4.value;
42949
- if (site.isSpec) {
42950
- specCount += 1;
42951
- }
42952
- }
42953
- } catch (err) {
42954
- _didIteratorError4 = true;
42955
- _iteratorError4 = err;
42956
- } finally{
42957
- try {
42958
- if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
42959
- _iterator4.return();
42960
- }
42961
- } finally{
42962
- if (_didIteratorError4) {
42963
- throw _iteratorError4;
42964
- }
42965
- }
42966
- }
42967
- result.set(slug, {
42968
- count: sites.length,
42969
- productionCount: sites.length - specCount,
42970
- specCount: specCount,
42971
- referencedBy: sites
42972
- });
42973
- }
42974
- } catch (err) {
42975
- _didIteratorError3 = true;
42976
- _iteratorError3 = err;
42977
- } finally{
42978
- try {
42979
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
42980
- _iterator3.return();
42981
- }
42982
- } finally{
42983
- if (_didIteratorError3) {
42984
- throw _iteratorError3;
42985
- }
42986
- }
42987
- }
42988
- _state.label = 10;
42989
- case 10:
43153
+ case 8:
42990
43154
  return [
42991
43155
  2,
42992
- result
43156
+ sitesBySlug
42993
43157
  ];
42994
43158
  }
42995
43159
  });
42996
43160
  })();
42997
43161
  }
43162
+ /**
43163
+ * Tallies one slug's reference sites into a {@link FactoryReferenceCount},
43164
+ * splitting production callers from spec-only callers.
43165
+ *
43166
+ * @param sites - The reference sites found for one factory.
43167
+ * @returns The total/production/spec counts plus the sites themselves.
43168
+ */ function tallyReferenceSites(sites) {
43169
+ var specCount = 0;
43170
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
43171
+ try {
43172
+ for(var _iterator = sites[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
43173
+ var site = _step.value;
43174
+ if (site.isSpec) {
43175
+ specCount += 1;
43176
+ }
43177
+ }
43178
+ } catch (err) {
43179
+ _didIteratorError = true;
43180
+ _iteratorError = err;
43181
+ } finally{
43182
+ try {
43183
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
43184
+ _iterator.return();
43185
+ }
43186
+ } finally{
43187
+ if (_didIteratorError) {
43188
+ throw _iteratorError;
43189
+ }
43190
+ }
43191
+ }
43192
+ return {
43193
+ count: sites.length,
43194
+ productionCount: sites.length - specCount,
43195
+ specCount: specCount,
43196
+ referencedBy: sites
43197
+ };
43198
+ }
42998
43199
  /**
42999
43200
  * Returns true when the supplied workspace-relative subpath looks like a
43000
43201
  * Vitest/Jest spec file. The scanner uses this to tag each
@@ -43149,7 +43350,7 @@ function buildCombinedRegex(names) {
43149
43350
  return result;
43150
43351
  }
43151
43352
  function escapeRegex(value) {
43152
- return value.replace(/[.*+?^${}()|[\]\\]/g, String.raw(_templateObject()));
43353
+ return value.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw(_templateObject()));
43153
43354
  }
43154
43355
  function computeLineOffsets(contents) {
43155
43356
  var offsets = [
@@ -51657,10 +51858,9 @@ function collectExternalCssUtilitySources(configResult) {
51657
51858
  try {
51658
51859
  for(var _iterator = ((_ref = cluster === null || cluster === void 0 ? void 0 : cluster.sources) !== null && _ref !== void 0 ? _ref : [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
51659
51860
  var source = _step.value;
51660
- var absolute = isAbsolute(source) ? source : resolve(baseDir, source);
51661
51861
  externalSources.push({
51662
51862
  origin: 'external',
51663
- path: absolute
51863
+ path: toAbsolutePath$1(baseDir, source)
51664
51864
  });
51665
51865
  }
51666
51866
  } catch (err) {
@@ -51683,10 +51883,9 @@ function collectExternalCssUtilitySources(configResult) {
51683
51883
  var scan = _step1.value;
51684
51884
  var out = scan.out;
51685
51885
  if (typeof out === 'string' && out.length > 0) {
51686
- var absolute1 = isAbsolute(out) ? out : resolve(baseDir, out);
51687
51886
  externalSources.push({
51688
51887
  origin: 'external',
51689
- path: absolute1
51888
+ path: toAbsolutePath$1(baseDir, out)
51690
51889
  });
51691
51890
  }
51692
51891
  }
@@ -51707,6 +51906,16 @@ function collectExternalCssUtilitySources(configResult) {
51707
51906
  }
51708
51907
  return externalSources;
51709
51908
  }
51909
+ /**
51910
+ * Resolves `value` against `baseDir` when it is relative, leaving an
51911
+ * already-absolute path untouched (so its original spelling is preserved).
51912
+ *
51913
+ * @param baseDir - Directory a relative `value` is resolved against.
51914
+ * @param value - An absolute or relative path.
51915
+ * @returns The absolute path.
51916
+ */ function toAbsolutePath$1(baseDir, value) {
51917
+ return isAbsolute(value) ? value : resolve(baseDir, value);
51918
+ }
51710
51919
  /**
51711
51920
  * Re-exported so callers can build a deterministic test fixture pointing
51712
51921
  * at the package's bundled manifests without touching `import.meta.url`.
@@ -55359,10 +55568,9 @@ function collectExternalTokenSources(configResult) {
55359
55568
  try {
55360
55569
  for(var _iterator = ((_ref = tokensCluster === null || tokensCluster === void 0 ? void 0 : tokensCluster.sources) !== null && _ref !== void 0 ? _ref : [])[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
55361
55570
  var source = _step.value;
55362
- var absolute = isAbsolute(source) ? source : resolve(baseDir, source);
55363
55571
  externalSources.push({
55364
55572
  origin: 'external',
55365
- path: absolute
55573
+ path: toAbsolutePath(baseDir, source)
55366
55574
  });
55367
55575
  }
55368
55576
  } catch (err) {
@@ -55385,10 +55593,9 @@ function collectExternalTokenSources(configResult) {
55385
55593
  var scan = _step1.value;
55386
55594
  var out = scan.out;
55387
55595
  if (typeof out === 'string' && out.length > 0) {
55388
- var absolute1 = isAbsolute(out) ? out : resolve(baseDir, out);
55389
55596
  externalSources.push({
55390
55597
  origin: 'external',
55391
- path: absolute1
55598
+ path: toAbsolutePath(baseDir, out)
55392
55599
  });
55393
55600
  }
55394
55601
  }
@@ -55409,6 +55616,16 @@ function collectExternalTokenSources(configResult) {
55409
55616
  }
55410
55617
  return externalSources;
55411
55618
  }
55619
+ /**
55620
+ * Resolves `value` against `baseDir` when it is relative, leaving an
55621
+ * already-absolute path untouched (so its original spelling is preserved).
55622
+ *
55623
+ * @param baseDir - Directory a relative `value` is resolved against.
55624
+ * @param value - An absolute or relative path.
55625
+ * @returns The absolute path.
55626
+ */ function toAbsolutePath(baseDir, value) {
55627
+ return isAbsolute(value) ? value : resolve(baseDir, value);
55628
+ }
55412
55629
  /**
55413
55630
  * Re-exported so callers can build a deterministic test fixture pointing at
55414
55631
  * the package's bundled manifests without touching `import.meta.url`.
@@ -56891,4 +57108,4 @@ function printPaginatedOutput(input) {
56891
57108
  })();
56892
57109
  }
56893
57110
 
56894
- export { ACTIONS_SCAN_CONFIG_FILENAME, ACTION_ENTRY_ROLES, ACTION_ROLE_ORDER, ActionDirectiveEntry, ActionEntry, ActionInputEntry, ActionManifest, ActionOutputEntry, ActionStateEntry, ActionStoreEntry, ActionStoreMethodEntry, ActionStoreObservableEntry, ActionsScanConfig, ActionsScanSection, BUILTIN_AUTH_CLAIMS, BUILTIN_AUTH_ROLES, BUILTIN_AUTH_SCOPES, CALL_MODEL_API_PATH, CALL_PASSTHROUGH_COMMAND, CLI_EXIT_CODE_AUTH, CLI_EXIT_CODE_HANDLER, CORE_TOPICS, CORE_TOPICS_SET, CSS_UTILITIES_SCAN_CONFIG_FILENAME, CSS_UTILITY_ROLES, CSS_UTILITY_SCOPES, CliError, CssUtilitiesScanConfig, CssUtilitiesScanSection, CssUtilityDeclaration, CssUtilityEntry, CssUtilityManifest, DBX_ACTION_STATE_VALUES, DBX_DOCS_UI_EXAMPLES_SCAN_CONFIG_FILENAME, DBX_DOCS_UI_EXAMPLE_USE_KINDS, DEFAULT_ACTIONS_SCAN_OUT_PATH, DEFAULT_ACTION_COMMAND_NAME, DEFAULT_CLI_OIDC_SCOPES, DEFAULT_CLI_REDIRECT_URI, DEFAULT_CLI_SECRET_PATTERNS, DEFAULT_CSS_UTILITIES_SCAN_OUT_PATH, DEFAULT_DBX_DOCS_UI_EXAMPLES_SCAN_OUT_PATH, DEFAULT_FILTERS_SCAN_OUT_PATH, DEFAULT_FORGE_FIELDS_SCAN_OUT_PATH, DEFAULT_MANIFEST_HELP_DATA_FORMAT, DEFAULT_MANIFEST_HELP_MODE, DEFAULT_MANIFEST_MODEL_COMMAND_NAME, DEFAULT_MODEL_DECODE_COMMAND_NAME, DEFAULT_MODEL_INFO_COMMAND_NAME, DEFAULT_MODEL_SNAPSHOT_FIELDS_SCAN_OUT_PATH, DEFAULT_PIPES_SCAN_OUT_PATH, DEFAULT_SCAN_OUT_PATH, DEFAULT_SPECIFIER_KEY, DEFAULT_UI_COMPONENTS_SCAN_OUT_PATH, DEFAULT_UTILS_SCAN_OUT_PATH, DOWNSTREAM_CLUSTERS, DUMP_MERGE_MODES, DUMP_OUTPUT_MODES, DbxDocsUiExampleEntry, DbxDocsUiExampleManifest, DbxDocsUiExampleUseEntry, DbxDocsUiExamplesScanConfig, DbxDocsUiExamplesScanSection, DbxMcpConfig, EMPTY_ACTION_REGISTRY, EMPTY_AUTH_REGISTRY, EMPTY_CSS_UTILITY_REGISTRY, EMPTY_DBX_DOCS_UI_EXAMPLES_REGISTRY, EMPTY_FILTER_REGISTRY, EMPTY_FORGE_FIELD_REGISTRY, EMPTY_MODEL_SNAPSHOT_FIELD_REGISTRY, EMPTY_PIPE_REGISTRY, EMPTY_SEMANTIC_TYPE_REGISTRY, EMPTY_TOKEN_REGISTRY, EMPTY_UI_COMPONENT_REGISTRY, EMPTY_UTIL_REGISTRY, ExtractedDbxDocsUiExampleEntrySchema, ExtractedEntrySchema, ExtractedForgeFieldEntrySchema, ExtractedUiEntrySchema, FILTERS_SCAN_CONFIG_FILENAME, FILTER_KINDS, FILTER_KIND_ORDER, FIREBASE_MODELS, FIREBASE_MODEL_GROUPS, FORGE_FIELDS_SCAN_CONFIG_FILENAME, FORGE_FIELD_ARRAY_OUTPUTS, FORGE_FIELD_COMPOSITE_SUFFIXES, FORGE_FIELD_TIERS, FORGE_FIELD_WRAPPER_PATTERNS, FORM_FIELDS, FORM_TIER_ORDER, FilterDirectiveEntry, FilterEntry, FilterInputEntry, FilterManifest, FilterPatternEntry, FiltersScanConfig, FiltersScanSection, ForgeFieldEntry, ForgeFieldManifest, ForgeFieldPropertyEntry, ForgeFieldsScanConfig, ForgeFieldsScanSection, GET_COMMAND, GET_MANY_COMMAND, MAX_MODEL_ACCESS_MULTI_READ_KEYS, MCP_CALL_TYPE_ABBREVIATIONS, MCP_MANIFEST_VERSION, MCP_TOOL_NAME_MAX_LENGTH, MCP_TOOL_NAME_WARN_LENGTH, MODEL_ARCHETYPES, MODEL_ARCHETYPE_ADDON_SLUGS, MODEL_ARCHETYPE_SYNC_MODES, MODEL_SNAPSHOT_FIELDS_SCAN_CONFIG_FILENAME, MODEL_SNAPSHOT_FIELD_KINDS, MODEL_WRITE_OIDC_SCOPES, MULTIPLE_PAGES_OUTPUT_MODES, ModelSnapshotFieldEntry, ModelSnapshotFieldManifest, ModelSnapshotFieldParamEntry, ModelSnapshotFieldsScanConfig, ModelSnapshotFieldsScanSection, PIPES_SCAN_CONFIG_FILENAME, PIPE_CATEGORIES, PIPE_CATEGORY_ORDER, PIPE_PURITIES, PROMPT_CANCELLED_ERROR_CODE, PipeArgEntry, PipeEntry, PipeManifest, PipesScanConfig, PipesScanSection, RESERVED_MODEL_FOLDERS, SCAN_CONFIG_FILENAME$1 as SCAN_CONFIG_FILENAME, SERVICE_TOKEN_REQUIRED_OIDC_SCOPES, STANDARD_GLOBAL_OPTION_NAMES, SemanticTypeEntry, SemanticTypeManifest, SemanticTypeScanConfig, TOKEN_ROLES, TOKEN_SOURCES, TokenDefaults, TokenEntry, TokenManifest, UI_COMPONENTS_SCAN_CONFIG_FILENAME, UI_COMPONENT_CATEGORIES, UI_COMPONENT_KINDS, UTILS_SCAN_CONFIG_FILENAME, UTIL_KINDS, UiComponentEntry, UiComponentInputEntry, UiComponentManifest, UiComponentOutputEntry, UiComponentsScanConfig, UiComponentsScanSection, UtilEntry, UtilManifest, UtilParamEntry, UtilsScanConfig, UtilsScanSection, WORKSPACE_AUTH_APPS, WORKSPACE_AUTH_CLAIMS, WORKSPACE_FACTORY_SCAN_EXCLUDE, WORKSPACE_FACTORY_SCAN_INCLUDE, abbreviateMcpCallType, applyEnvVarOverrides, buildActionCommands, buildActionsManifest, buildAuthorizationUrl, buildCliPaths, buildCssUtilitiesManifest, buildDbxDocsUiExamplesManifest, buildDisambiguatedMcpToolName, buildDispatcherCreditByName, buildDumpFilePath, buildErrorOutput, buildFiltersManifest, buildForgeFieldsManifest, buildManifest, buildManifestCommands, buildMcpToolName, buildModelDecodeCommand, buildModelInfoCommand, buildModelSnapshotFieldsManifest, buildOidcDiscoveryCandidates, buildPipesManifest, buildScanProject, buildUiComponentsManifest, buildUtilsManifest, callModelOverHttp, clearDownstreamCatalogCache, collectClassPropertiesWithInheritance, configureCliErrorMapper, configureCliSecretPatterns, configureOutputOptions, createActionCommand, createActionRegistry, createActionRegistryFromEntries, createAuthCommand, createAuthMiddleware, createAuthRegistryFromEntries, createCallModelCommand, createCli, createCliContext, createCliTokenCacheStore, createContextSlot, createCssUtilityRegistry, createCssUtilityRegistryFromEntries, createDbxDocsUiExamplesRegistry, createDbxDocsUiExamplesRegistryFromEntries, createDoctorCommand, createEnvCommand, createFilterRegistry, createFilterRegistryFromEntries, createForgeFieldRegistry, createForgeFieldRegistryFromEntries, createModelSnapshotFieldRegistry, createModelSnapshotFieldRegistryFromEntries, createOutputCommand, createOutputMiddleware, createPassthroughAuthMiddleware, createPipeRegistry, createPipeRegistryFromEntries, createSemanticTypeRegistry, createSemanticTypeRegistryFromEntries, createTokenRegistry, createTokenRegistryFromEntries, createUiComponentRegistry, createUiComponentRegistryFromEntries, createUtilRegistry, createUtilRegistryFromEntries, decodeFirestoreModelKey, defaultDoctorChecks, defaultGlobber, defaultReadFile, deriveOptionalFromName, detectDataHelpFormat, detectHelpMode, discoverDownstreamFirebasePackages, discoverDownstreamPackages, discoverOidcMetadata, dumpTimestamp, exchangeAuthorizationCode, expandModelKeys, extractActionEntries, extractAngularInputs, extractAngularOutputs, extractAuthEntries, extractCssUtilityEntries, extractDbxDocsUiExampleEntries, extractEntries, extractFilterEntries, extractForgeFieldEntries, extractModelSnapshotFieldEntries, extractModels, extractPipeEntries, extractUiEntries, extractUtilEntries, fetchSessionInfo, fetchUserInfo, filterReadOnlyModelScopes, findAndLoadConfig, findCliEnvDefault, findCliModelManifestEntry, flattenList, generateOAuthState, generatePkceMaterial, getBundledManifestsDirectory, getCliContext, getCliEnvVarName, getCliTimeoutMs, getDefaultBundledActionManifestPaths, getDefaultBundledCssUtilityManifestPaths, getDefaultBundledDbxDocsUiExamplesManifestPaths, getDefaultBundledFilterManifestPaths, getDefaultBundledForgeFieldManifestPaths, getDefaultBundledManifestPaths, getDefaultBundledModelFirebaseIndexManifestPaths, getDefaultBundledModelSnapshotFieldManifestPaths, getDefaultBundledPipeManifestPaths, getDefaultBundledTokenManifestPaths, getDefaultBundledUiManifestPaths, getDefaultBundledUtilManifestPaths, getDownstreamCatalog, getFirebaseBucketKeyedByIdModels, getFirebaseDistrictKeyedByIdModels, getFirebaseExternalIdKeyedByIdModels, getFirebaseModel, getFirebaseModelByPrefix, getFirebaseModelGroup, getFirebaseModelGroups, getFirebaseModels, getFirebaseModelsByArchetype, getFirebasePrefixCatalog, getFirebaseRegionKeyedByIdModels, getFirebaseSubcollectionsOf, getFirebaseUserKeyedByIdModels, getFirebaseUserRelatedModels, getModelArchetypeBySlug, getModelArchetypesByAxisValue, getModelArchetypesByCollectionKind, getModelArchetypesBySyncMode, getModelOverHttp, getMultipleModelsOverHttp, getMultipleModelsOverHttpChunked, getOutputOptions, globToRegex, isCliEnvConfigComplete, isCliVerbose, isCoreTopic, isStdinSentinel, isTokenExpired, isVisibleProperty, iterateDbxCliCallModel, loadActionManifests, loadActionRegistry, loadAuthRegistry, loadCliConfig, loadCssUtilityRegistry, loadDbxDocsUiExamplesManifests, loadDbxDocsUiExamplesRegistry, loadFilterManifests, loadFilterRegistry, loadForgeFieldManifests, loadForgeFieldRegistry, loadModelFirebaseIndexManifests, loadModelFirebaseIndexRegistry, loadModelSnapshotFieldManifests, loadModelSnapshotFieldRegistry, loadPackageName, loadPipeManifests, loadPipeRegistry, loadScanSection, loadSemanticTypeManifests, loadSemanticTypeRegistry, loadTokenManifests, loadTokenRegistry, loadUiComponentManifests, loadUiComponentRegistry, loadUtilManifests, loadUtilRegistry, maskEnv, maskSecret, mcpManifestKey, mergeCliConfig, mergeCliEnvWithDefault, mergeOutputConfig, openStreamingDump, outputError, outputResult, packageNameToSlug, parseAnnotation, parseDeclarations$1 as parseDeclarations, parseGetArgs, parseGetManyArgs, parsePastedRedirect, parseScanArgs, pickFields, promptLine, readAllStdin, readDirectiveDecorator, readEnvTokenEntry, readPropertyDescription, readSelector, readStdinTokens, readStringProperty, refreshAccessToken, renderDecodedKey, renderModelManifestEntry, renderModelManifestFields, renderModelManifestList, requireCliContext, resolveActiveEnvName, resolveCliEnv, resolveCliEnvOrThrow, resolveCliModel, resolveDemoClaimsPath, resolveExplicitFirebasePackages, resolveModelArchetype, resolveOutputConfig, resolvePerModelGetKey, revokeToken, runActionsScanCli, runCli, runCssUtilitiesScanCli, runDbxDocsUiExamplesScanCli, runFiltersScanCli, runForgeFieldsScanCli, runModelFirebaseIndexScanCli, runModelSnapshotFieldsScanCli, runPaginatedList, runPipesScanCli, runScanCli, runScanCliBase, runUiComponentsScanCli, runUtilsScanCli, sanitizeString, saveCliConfig, scanFactoryReferences, serializeActionManifest, serializeCssUtilityManifest, serializeDbxDocsUiExamplesManifest, serializeFilterManifest, serializeForgeFieldManifest, serializeManifest, serializeModelSnapshotFieldsManifest, serializePipeManifest, serializeUiComponentManifest, serializeUtilManifest, setCliContext, setCliTimeoutMs, setCliVerbose, splitListTagText$1 as splitListTagText, toActionEntryInfo, toFilterEntryInfo, toFormFieldInfo, tracedFetch, unwrapFenced, validateMcpToolName, verboseLog, withCallModelArgs, withEnv, withMultiplePages, withOutput, withServiceTokenScopes, wrapCommandHandler, wrapSyncCommandHandler };
57111
+ export { ACTIONS_SCAN_CONFIG_FILENAME, ACTION_ENTRY_ROLES, ACTION_ROLE_ORDER, ActionDirectiveEntry, ActionEntry, ActionInputEntry, ActionManifest, ActionOutputEntry, ActionStateEntry, ActionStoreEntry, ActionStoreMethodEntry, ActionStoreObservableEntry, ActionsScanConfig, ActionsScanSection, BUILTIN_AUTH_CLAIMS, BUILTIN_AUTH_ROLES, BUILTIN_AUTH_SCOPES, CALL_MODEL_API_PATH, CALL_PASSTHROUGH_COMMAND, CLI_EXIT_CODE_AUTH, CLI_EXIT_CODE_HANDLER, CORE_TOPICS, CORE_TOPICS_SET, CSS_UTILITIES_SCAN_CONFIG_FILENAME, CSS_UTILITY_ROLES, CSS_UTILITY_SCOPES, CliError, CssUtilitiesScanConfig, CssUtilitiesScanSection, CssUtilityDeclaration, CssUtilityEntry, CssUtilityManifest, DBX_ACTION_STATE_VALUES, DBX_DOCS_UI_EXAMPLES_SCAN_CONFIG_FILENAME, DBX_DOCS_UI_EXAMPLE_USE_KINDS, DEFAULT_ACTIONS_SCAN_OUT_PATH, DEFAULT_ACTION_COMMAND_NAME, DEFAULT_CLI_HTTP_TIMEOUT_MS, DEFAULT_CLI_OIDC_SCOPES, DEFAULT_CLI_REDIRECT_URI, DEFAULT_CLI_SECRET_PATTERNS, DEFAULT_CSS_UTILITIES_SCAN_OUT_PATH, DEFAULT_DBX_DOCS_UI_EXAMPLES_SCAN_OUT_PATH, DEFAULT_FILTERS_SCAN_OUT_PATH, DEFAULT_FORGE_FIELDS_SCAN_OUT_PATH, DEFAULT_MANIFEST_HELP_DATA_FORMAT, DEFAULT_MANIFEST_HELP_MODE, DEFAULT_MANIFEST_MODEL_COMMAND_NAME, DEFAULT_MODEL_DECODE_COMMAND_NAME, DEFAULT_MODEL_INFO_COMMAND_NAME, DEFAULT_MODEL_SNAPSHOT_FIELDS_SCAN_OUT_PATH, DEFAULT_PIPES_SCAN_OUT_PATH, DEFAULT_SCAN_OUT_PATH, DEFAULT_SPECIFIER_KEY, DEFAULT_UI_COMPONENTS_SCAN_OUT_PATH, DEFAULT_UTILS_SCAN_OUT_PATH, DOWNSTREAM_CLUSTERS, DUMP_MERGE_MODES, DUMP_OUTPUT_MODES, DbxDocsUiExampleEntry, DbxDocsUiExampleManifest, DbxDocsUiExampleUseEntry, DbxDocsUiExamplesScanConfig, DbxDocsUiExamplesScanSection, DbxMcpConfig, EMPTY_ACTION_REGISTRY, EMPTY_AUTH_REGISTRY, EMPTY_CSS_UTILITY_REGISTRY, EMPTY_DBX_DOCS_UI_EXAMPLES_REGISTRY, EMPTY_FILTER_REGISTRY, EMPTY_FORGE_FIELD_REGISTRY, EMPTY_MODEL_SNAPSHOT_FIELD_REGISTRY, EMPTY_PIPE_REGISTRY, EMPTY_SEMANTIC_TYPE_REGISTRY, EMPTY_TOKEN_REGISTRY, EMPTY_UI_COMPONENT_REGISTRY, EMPTY_UTIL_REGISTRY, ExtractedDbxDocsUiExampleEntrySchema, ExtractedEntrySchema, ExtractedForgeFieldEntrySchema, ExtractedUiEntrySchema, FILTERS_SCAN_CONFIG_FILENAME, FILTER_KINDS, FILTER_KIND_ORDER, FIREBASE_MODELS, FIREBASE_MODEL_GROUPS, FORGE_FIELDS_SCAN_CONFIG_FILENAME, FORGE_FIELD_ARRAY_OUTPUTS, FORGE_FIELD_COMPOSITE_SUFFIXES, FORGE_FIELD_TIERS, FORGE_FIELD_WRAPPER_PATTERNS, FORM_FIELDS, FORM_TIER_ORDER, FilterDirectiveEntry, FilterEntry, FilterInputEntry, FilterManifest, FilterPatternEntry, FiltersScanConfig, FiltersScanSection, ForgeFieldEntry, ForgeFieldManifest, ForgeFieldPropertyEntry, ForgeFieldsScanConfig, ForgeFieldsScanSection, GET_COMMAND, GET_MANY_COMMAND, MAX_MODEL_ACCESS_MULTI_READ_KEYS, MCP_CALL_TYPE_ABBREVIATIONS, MCP_MANIFEST_VERSION, MCP_TOOL_NAME_MAX_LENGTH, MCP_TOOL_NAME_WARN_LENGTH, MODEL_ARCHETYPES, MODEL_ARCHETYPE_ADDON_SLUGS, MODEL_ARCHETYPE_SYNC_MODES, MODEL_SNAPSHOT_FIELDS_SCAN_CONFIG_FILENAME, MODEL_SNAPSHOT_FIELD_KINDS, MODEL_WRITE_OIDC_SCOPES, MULTIPLE_PAGES_OUTPUT_MODES, ModelSnapshotFieldEntry, ModelSnapshotFieldManifest, ModelSnapshotFieldParamEntry, ModelSnapshotFieldsScanConfig, ModelSnapshotFieldsScanSection, PIPES_SCAN_CONFIG_FILENAME, PIPE_CATEGORIES, PIPE_CATEGORY_ORDER, PIPE_PURITIES, PROMPT_CANCELLED_ERROR_CODE, PipeArgEntry, PipeEntry, PipeManifest, PipesScanConfig, PipesScanSection, RESERVED_MODEL_FOLDERS, SCAN_CONFIG_FILENAME$1 as SCAN_CONFIG_FILENAME, SERVICE_TOKEN_REQUIRED_OIDC_SCOPES, STANDARD_GLOBAL_OPTION_NAMES, SemanticTypeEntry, SemanticTypeManifest, SemanticTypeScanConfig, TOKEN_ROLES, TOKEN_SOURCES, TokenDefaults, TokenEntry, TokenManifest, UI_COMPONENTS_SCAN_CONFIG_FILENAME, UI_COMPONENT_CATEGORIES, UI_COMPONENT_KINDS, UTILS_SCAN_CONFIG_FILENAME, UTIL_KINDS, UiComponentEntry, UiComponentInputEntry, UiComponentManifest, UiComponentOutputEntry, UiComponentsScanConfig, UiComponentsScanSection, UtilEntry, UtilManifest, UtilParamEntry, UtilsScanConfig, UtilsScanSection, WORKSPACE_AUTH_APPS, WORKSPACE_AUTH_CLAIMS, WORKSPACE_FACTORY_SCAN_EXCLUDE, WORKSPACE_FACTORY_SCAN_INCLUDE, abbreviateMcpCallType, applyEnvVarOverrides, buildActionCommands, buildActionsManifest, buildAuthorizationUrl, buildCliPaths, buildCssUtilitiesManifest, buildDbxDocsUiExamplesManifest, buildDisambiguatedMcpToolName, buildDispatcherCreditByName, buildDumpFilePath, buildErrorOutput, buildFiltersManifest, buildForgeFieldsManifest, buildManifest, buildManifestCommands, buildMcpToolName, buildModelDecodeCommand, buildModelInfoCommand, buildModelSnapshotFieldsManifest, buildOidcDiscoveryCandidates, buildPipesManifest, buildScanProject, buildUiComponentsManifest, buildUtilsManifest, callModelOverHttp, clearDownstreamCatalogCache, collectClassPropertiesWithInheritance, configureCliErrorMapper, configureCliSecretPatterns, configureOutputOptions, createActionCommand, createActionRegistry, createActionRegistryFromEntries, createAuthCommand, createAuthMiddleware, createAuthRegistryFromEntries, createCallModelCommand, createCli, createCliContext, createCliTokenCacheStore, createContextSlot, createCssUtilityRegistry, createCssUtilityRegistryFromEntries, createDbxDocsUiExamplesRegistry, createDbxDocsUiExamplesRegistryFromEntries, createDoctorCommand, createEnvCommand, createFilterRegistry, createFilterRegistryFromEntries, createForgeFieldRegistry, createForgeFieldRegistryFromEntries, createModelSnapshotFieldRegistry, createModelSnapshotFieldRegistryFromEntries, createOutputCommand, createOutputMiddleware, createPassthroughAuthMiddleware, createPipeRegistry, createPipeRegistryFromEntries, createSemanticTypeRegistry, createSemanticTypeRegistryFromEntries, createTokenRegistry, createTokenRegistryFromEntries, createUiComponentRegistry, createUiComponentRegistryFromEntries, createUtilRegistry, createUtilRegistryFromEntries, decodeFirestoreModelKey, defaultDoctorChecks, defaultGlobber, defaultReadFile, deriveOptionalFromName, detectDataHelpFormat, detectHelpMode, discoverDownstreamFirebasePackages, discoverDownstreamPackages, discoverOidcMetadata, dumpTimestamp, exchangeAuthorizationCode, expandModelKeys, extractActionEntries, extractAngularInputs, extractAngularOutputs, extractAuthEntries, extractCssUtilityEntries, extractDbxDocsUiExampleEntries, extractEntries, extractFilterEntries, extractForgeFieldEntries, extractModelSnapshotFieldEntries, extractModels, extractPipeEntries, extractUiEntries, extractUtilEntries, fetchSessionInfo, fetchUserInfo, filterReadOnlyModelScopes, findAndLoadConfig, findCliEnvDefault, findCliModelManifestEntry, flattenList, generateOAuthState, generatePkceMaterial, getBundledManifestsDirectory, getCliContext, getCliEnvVarName, getCliTimeoutMs, getDefaultBundledActionManifestPaths, getDefaultBundledCssUtilityManifestPaths, getDefaultBundledDbxDocsUiExamplesManifestPaths, getDefaultBundledFilterManifestPaths, getDefaultBundledForgeFieldManifestPaths, getDefaultBundledManifestPaths, getDefaultBundledModelFirebaseIndexManifestPaths, getDefaultBundledModelSnapshotFieldManifestPaths, getDefaultBundledPipeManifestPaths, getDefaultBundledTokenManifestPaths, getDefaultBundledUiManifestPaths, getDefaultBundledUtilManifestPaths, getDownstreamCatalog, getFirebaseBucketKeyedByIdModels, getFirebaseDistrictKeyedByIdModels, getFirebaseExternalIdKeyedByIdModels, getFirebaseModel, getFirebaseModelByPrefix, getFirebaseModelGroup, getFirebaseModelGroups, getFirebaseModels, getFirebaseModelsByArchetype, getFirebasePrefixCatalog, getFirebaseRegionKeyedByIdModels, getFirebaseSubcollectionsOf, getFirebaseUserKeyedByIdModels, getFirebaseUserRelatedModels, getModelArchetypeBySlug, getModelArchetypesByAxisValue, getModelArchetypesByCollectionKind, getModelArchetypesBySyncMode, getModelOverHttp, getMultipleModelsOverHttp, getMultipleModelsOverHttpChunked, getOutputOptions, globToRegex, isCliEnvConfigComplete, isCliVerbose, isCoreTopic, isStdinSentinel, isTokenExpired, isVisibleProperty, iterateDbxCliCallModel, loadActionManifests, loadActionRegistry, loadAuthRegistry, loadCliConfig, loadCssUtilityRegistry, loadDbxDocsUiExamplesManifests, loadDbxDocsUiExamplesRegistry, loadFilterManifests, loadFilterRegistry, loadForgeFieldManifests, loadForgeFieldRegistry, loadModelFirebaseIndexManifests, loadModelFirebaseIndexRegistry, loadModelSnapshotFieldManifests, loadModelSnapshotFieldRegistry, loadPackageName, loadPipeManifests, loadPipeRegistry, loadScanSection, loadSemanticTypeManifests, loadSemanticTypeRegistry, loadTokenManifests, loadTokenRegistry, loadUiComponentManifests, loadUiComponentRegistry, loadUtilManifests, loadUtilRegistry, maskEnv, maskSecret, mcpManifestKey, mergeCliConfig, mergeCliEnvWithDefault, mergeOutputConfig, openStreamingDump, outputError, outputResult, packageNameToSlug, parseAnnotation, parseDeclarations$1 as parseDeclarations, parseGetArgs, parseGetManyArgs, parsePastedRedirect, parseScanArgs, pickFields, promptLine, readAllStdin, readDirectiveDecorator, readEnvTokenEntry, readPropertyDescription, readSelector, readStdinTokens, readStringProperty, refreshAccessToken, renderDecodedKey, renderModelManifestEntry, renderModelManifestFields, renderModelManifestList, requireCliContext, resolveActiveEnvName, resolveCliEnv, resolveCliEnvOrThrow, resolveCliModel, resolveDemoClaimsPath, resolveExplicitFirebasePackages, resolveModelArchetype, resolveOutputConfig, resolvePerModelGetKey, revokeToken, runActionsScanCli, runCli, runCssUtilitiesScanCli, runDbxDocsUiExamplesScanCli, runFiltersScanCli, runForgeFieldsScanCli, runModelFirebaseIndexScanCli, runModelSnapshotFieldsScanCli, runPaginatedList, runPipesScanCli, runScanCli, runScanCliBase, runUiComponentsScanCli, runUtilsScanCli, sanitizeString, saveCliConfig, scanFactoryReferences, serializeActionManifest, serializeCssUtilityManifest, serializeDbxDocsUiExamplesManifest, serializeFilterManifest, serializeForgeFieldManifest, serializeManifest, serializeModelSnapshotFieldsManifest, serializePipeManifest, serializeUiComponentManifest, serializeUtilManifest, setCliContext, setCliTimeoutMs, setCliVerbose, splitListTagText$1 as splitListTagText, toActionEntryInfo, toFilterEntryInfo, toFormFieldInfo, tracedFetch, unwrapFenced, validateMcpToolName, verboseLog, withCallModelArgs, withEnv, withMultiplePages, withOutput, withServiceTokenScopes, wrapCommandHandler, wrapSyncCommandHandler };