@dereekb/dbx-components-mcp 13.11.14 → 13.11.16

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.
@@ -264,7 +264,7 @@
264
264
  "whatItFlags": "A composite index required by tagged factories is missing from the committed `firestore.indexes.json`.",
265
265
  "whenItApplies": "Every entry in the generated composite set that has no equal entry in the committed JSON.",
266
266
  "whenItDoesNotApply": "Factories tagged `@dbxModelFirebaseIndexManual` — their shapes are author-managed and excluded from drift.",
267
- "canonicalFix": "Run the `scan-model-firebase-indexes` / `generate-firestore-indexes` CLIs and commit the regenerated `firestore.indexes.json`."
267
+ "canonicalFix": "Run `dbx-cli-generate-firestore-indexes --component <dir>` (and the `scan-model-firebase-indexes` CLI if the manifest is also stale) and commit the regenerated `firestore.indexes.json`."
268
268
  },
269
269
  {
270
270
  "code": "MODEL_FIREBASE_INDEX_COMPOSITE_REMOVED",
@@ -286,6 +286,22 @@
286
286
  "whenItDoesNotApply": "Intentional aliases — they should target the same composite, in which case keep one factory.",
287
287
  "canonicalFix": "Pick distinct slugs (or distinct function names) so each factory is addressable."
288
288
  },
289
+ {
290
+ "code": "MODEL_FIREBASE_INDEX_EXCLUDED",
291
+ "source": "dbx_model_firebase_index_validate_app",
292
+ "severity": "warning",
293
+ "title": "A tagged factory carries `@dbxModelFirebaseIndexExclude` — its constraints are parsed but the analyzer suppresses composite + fieldOverride emission",
294
+ "whatItFlags": "A tagged factory carries `@dbxModelFirebaseIndexExclude` — its constraints are parsed but the analyzer suppresses composite + fieldOverride emission.",
295
+ "whenItApplies": "Every `@dbxModelFirebaseIndex`-tagged factory that also declares `@dbxModelFirebaseIndexExclude`. The warning fires on every scan so the deliberate exclusion stays auditable in CI logs.",
296
+ "whenItDoesNotApply": "Factories using `@dbxModelFirebaseIndexSkip` (silent — no warning emitted) or `@dbxModelFirebaseIndexManual` (composites are author-managed, no audit signal needed).",
297
+ "canonicalFix": "If the exclusion is no longer required, delete the `@dbxModelFirebaseIndexExclude` tag and let the analyzer emit the implied composite. If the factory should be permanently silent, switch to `@dbxModelFirebaseIndexSkip` and document the rationale next to the tag.",
298
+ "seeAlso": [
299
+ {
300
+ "kind": "tool",
301
+ "target": "dbx_model_firebase_index_validate_app"
302
+ }
303
+ ]
304
+ },
289
305
  {
290
306
  "code": "MODEL_FIREBASE_INDEX_FIELD_OVERRIDE_ADDED",
291
307
  "source": "dbx_model_firebase_index_validate_app",
@@ -395,6 +411,22 @@
395
411
  "whenItDoesNotApply": "Sequences with at most one direction per field.",
396
412
  "canonicalFix": "Pick one direction per field, or split into two factories — Firestore can only deploy one direction at a time per composite."
397
413
  },
414
+ {
415
+ "code": "MODEL_FIREBASE_INDEX_SPEC_FILES_ONLY_VIOLATION",
416
+ "source": "dbx_model_firebase_index_validate_app",
417
+ "severity": "error",
418
+ "title": "A factory tagged `@dbxModelFirebaseIndexSpecFilesOnly` is referenced from at least one non-spec file",
419
+ "whatItFlags": "A factory tagged `@dbxModelFirebaseIndexSpecFilesOnly` is referenced from at least one non-spec file.",
420
+ "whenItApplies": "Every `@dbxModelFirebaseIndexSpecFilesOnly` factory whose name appears in a `.ts` file under `apps/`, `components/`, or `packages/` that is NOT a `*.spec.ts` / `*.spec.tsx` file. The tag is a contract that the factory exists for tests only; a production caller breaks that contract and would leak a query shape the index generator deliberately skipped.",
421
+ "whenItDoesNotApply": "Spec-only factories whose references are confined to `*.spec.ts` / `*.spec.tsx` files (the intended state), or factories not tagged `@dbxModelFirebaseIndexSpecFilesOnly`.",
422
+ "canonicalFix": "Either move the production call-site into a tagged, non-spec-only factory (and update its callers), or remove the `@dbxModelFirebaseIndexSpecFilesOnly` tag and ensure the produced composite/fieldOverride is declared so the generator emits the required Firestore index.",
423
+ "seeAlso": [
424
+ {
425
+ "kind": "tool",
426
+ "target": "dbx_model_firebase_index_list_app"
427
+ }
428
+ ]
429
+ },
398
430
  {
399
431
  "code": "MODEL_FIREBASE_INDEX_TRANSITIVE_CYCLE",
400
432
  "source": "dbx_model_firebase_index_validate_app",
@@ -478,8 +510,8 @@
478
510
  "title": "A field uses the `array-contains-any` operator — index support is partial",
479
511
  "whatItFlags": "A field uses the `array-contains-any` operator — index support is partial.",
480
512
  "whenItApplies": "Every constraint sequence with at least one `array-contains-any` `where`.",
481
- "whenItDoesNotApply": "Queries using `array-contains` (singular) — those have full composite support.",
482
- "canonicalFix": "Confirm the deployed composite supports `array-contains-any` for the field set, or restructure to `array-contains` with a denormalised flag."
513
+ "whenItDoesNotApply": "Queries using `array-contains` (singular) — those have full composite support. Also suppressed when the factory is tagged `@dbxModelFirebaseIndexAllowArrayContainsAny`.",
514
+ "canonicalFix": "Confirm the deployed composite supports `array-contains-any` for the field set and add `@dbxModelFirebaseIndexAllowArrayContainsAny` to silence the advisory, or restructure to `array-contains` with a denormalised flag."
483
515
  },
484
516
  {
485
517
  "code": "MODEL_FIREBASE_INDEX_UNSUPPORTED_SCOPE",
@@ -491,6 +523,22 @@
491
523
  "whenItDoesNotApply": "Factories that omit the tag — scope falls back to COLLECTION_GROUP for nested models, COLLECTION for root models.",
492
524
  "canonicalFix": "Set the tag value to exactly `COLLECTION` or `COLLECTION_GROUP`."
493
525
  },
526
+ {
527
+ "code": "MODEL_FIREBASE_INDEX_UNUSED_FACTORY",
528
+ "source": "dbx_model_firebase_index_validate_app",
529
+ "severity": "warning",
530
+ "title": "A tagged factory has zero callers anywhere in the workspace",
531
+ "whatItFlags": "A tagged factory has zero callers anywhere in the workspace.",
532
+ "whenItApplies": "Every `@dbxModelFirebaseIndex`-tagged factory whose exported name does not appear in any `.ts` file under `apps/`, `components/`, or `packages/` (excluding `*.d.ts`, `node_modules/`, and build outputs). For regular factories only non-spec callers count toward \"used\" — a factory whose only references are inside `*.spec.ts` files still triggers this warning unless it is opted in via `@dbxModelFirebaseIndexSpecFilesOnly`. The check uses word-boundary text scanning so renames + stale exports surface here.",
533
+ "whenItDoesNotApply": "Factories marked `@dbxModelFirebaseIndexSkip` (the author already opted out of emission), `@dbxModelFirebaseIndexManual` (author-managed index, not necessarily wired through normal call sites), or `@dbxModelFirebaseIndexSpecFilesOnly` that have at least one `*.spec.ts` caller (the intended state for test-only helpers).",
534
+ "canonicalFix": "Either delete the factory (and its `*.query.ts` file if empty), wire up a production caller, or — if the factory is intentionally a `*.spec.ts`-only helper — tag it `@dbxModelFirebaseIndexSpecFilesOnly`. `@dbxModelFirebaseIndexSkip` still works for \"retain pending a future caller\".",
535
+ "seeAlso": [
536
+ {
537
+ "kind": "tool",
538
+ "target": "dbx_model_firebase_index_list_app"
539
+ }
540
+ ]
541
+ },
494
542
  {
495
543
  "code": "archetype-inconsistent",
496
544
  "source": "dbx_model_fixture_validate_app",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-components-mcp",
3
- "version": "13.11.14",
3
+ "version": "13.11.16",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "dbx-components-mcp": "dbx-components-mcp.js"
@@ -15,19 +15,19 @@
15
15
  "@angular/core": "21.2.11",
16
16
  "@angular/forms": "21.2.11",
17
17
  "@angular/material": "^21.2.9",
18
- "@dereekb/dbx-cli": "13.11.14",
19
- "@dereekb/dbx-core": "13.11.14",
20
- "@dereekb/dbx-firebase": "13.11.14",
21
- "@dereekb/dbx-form": "13.11.14",
22
- "@dereekb/dbx-web": "13.11.14",
23
- "@dereekb/firebase": "13.11.14",
24
- "@dereekb/firebase-server": "13.11.14",
25
- "@dereekb/rxjs": "13.11.14",
26
- "@dereekb/util": "13.11.14",
18
+ "@dereekb/dbx-cli": "13.11.16",
19
+ "@dereekb/dbx-core": "13.11.16",
20
+ "@dereekb/dbx-firebase": "13.11.16",
21
+ "@dereekb/dbx-form": "13.11.16",
22
+ "@dereekb/dbx-web": "13.11.16",
23
+ "@dereekb/firebase": "13.11.16",
24
+ "@dereekb/firebase-server": "13.11.16",
25
+ "@dereekb/rxjs": "13.11.16",
26
+ "@dereekb/util": "13.11.16",
27
27
  "@uirouter/angular": "21.0.0",
28
28
  "rxjs": "^7.8.2"
29
29
  },
30
30
  "devDependencies": {
31
- "@dereekb/model": "13.11.14"
31
+ "@dereekb/model": "13.11.16"
32
32
  }
33
33
  }