@x12i/catalox 2.3.0 → 2.5.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 (106) hide show
  1. package/README.md +60 -7
  2. package/dist/src/catalox/backup-data.d.ts +40 -0
  3. package/dist/src/catalox/backup-data.d.ts.map +1 -0
  4. package/dist/src/catalox/backup-data.js +522 -0
  5. package/dist/src/catalox/backup-data.js.map +1 -0
  6. package/dist/src/catalox/catalox.d.ts +42 -0
  7. package/dist/src/catalox/catalox.d.ts.map +1 -1
  8. package/dist/src/catalox/catalox.js +127 -7
  9. package/dist/src/catalox/catalox.js.map +1 -1
  10. package/dist/src/catalox/firestore-gcs-compare.d.ts +15 -0
  11. package/dist/src/catalox/firestore-gcs-compare.d.ts.map +1 -0
  12. package/dist/src/catalox/firestore-gcs-compare.js +221 -0
  13. package/dist/src/catalox/firestore-gcs-compare.js.map +1 -0
  14. package/dist/src/catalox/firestore-gcs-transfer.d.ts +24 -0
  15. package/dist/src/catalox/firestore-gcs-transfer.d.ts.map +1 -0
  16. package/dist/src/catalox/firestore-gcs-transfer.js +346 -0
  17. package/dist/src/catalox/firestore-gcs-transfer.js.map +1 -0
  18. package/dist/src/catalox/index.d.ts +5 -0
  19. package/dist/src/catalox/index.d.ts.map +1 -1
  20. package/dist/src/catalox/index.js +5 -0
  21. package/dist/src/catalox/index.js.map +1 -1
  22. package/dist/src/catalox/native-catalog-layout-diagnostics.d.ts +29 -0
  23. package/dist/src/catalox/native-catalog-layout-diagnostics.d.ts.map +1 -0
  24. package/dist/src/catalox/native-catalog-layout-diagnostics.js +55 -0
  25. package/dist/src/catalox/native-catalog-layout-diagnostics.js.map +1 -0
  26. package/dist/src/catalox/restore-firestore-backup.d.ts +13 -0
  27. package/dist/src/catalox/restore-firestore-backup.d.ts.map +1 -0
  28. package/dist/src/catalox/restore-firestore-backup.js +326 -0
  29. package/dist/src/catalox/restore-firestore-backup.js.map +1 -0
  30. package/dist/src/cli/index.js +312 -1
  31. package/dist/src/cli/index.js.map +1 -1
  32. package/dist/src/contracts/backup.d.ts +36 -0
  33. package/dist/src/contracts/backup.d.ts.map +1 -0
  34. package/dist/src/contracts/backup.js +2 -0
  35. package/dist/src/contracts/backup.js.map +1 -0
  36. package/dist/src/contracts/catalog-data-index.d.ts +13 -0
  37. package/dist/src/contracts/catalog-data-index.d.ts.map +1 -0
  38. package/dist/src/contracts/catalog-data-index.js +2 -0
  39. package/dist/src/contracts/catalog-data-index.js.map +1 -0
  40. package/dist/src/contracts/catalogs.d.ts +8 -1
  41. package/dist/src/contracts/catalogs.d.ts.map +1 -1
  42. package/dist/src/contracts/catalogs.js +18 -1
  43. package/dist/src/contracts/catalogs.js.map +1 -1
  44. package/dist/src/contracts/gcs-firestore-compare.d.ts +64 -0
  45. package/dist/src/contracts/gcs-firestore-compare.d.ts.map +1 -0
  46. package/dist/src/contracts/gcs-firestore-compare.js +2 -0
  47. package/dist/src/contracts/gcs-firestore-compare.js.map +1 -0
  48. package/dist/src/contracts/gcs-firestore-transfer.d.ts +94 -0
  49. package/dist/src/contracts/gcs-firestore-transfer.d.ts.map +1 -0
  50. package/dist/src/contracts/gcs-firestore-transfer.js +2 -0
  51. package/dist/src/contracts/gcs-firestore-transfer.js.map +1 -0
  52. package/dist/src/contracts/index.d.ts +6 -0
  53. package/dist/src/contracts/index.d.ts.map +1 -1
  54. package/dist/src/contracts/index.js +1 -0
  55. package/dist/src/contracts/index.js.map +1 -1
  56. package/dist/src/contracts/restore.d.ts +44 -0
  57. package/dist/src/contracts/restore.d.ts.map +1 -0
  58. package/dist/src/contracts/restore.js +2 -0
  59. package/dist/src/contracts/restore.js.map +1 -0
  60. package/dist/src/firebase/catalog-data-index-store.d.ts +14 -0
  61. package/dist/src/firebase/catalog-data-index-store.d.ts.map +1 -0
  62. package/dist/src/firebase/catalog-data-index-store.js +33 -0
  63. package/dist/src/firebase/catalog-data-index-store.js.map +1 -0
  64. package/dist/src/firebase/catalog-data-paths.d.ts +14 -0
  65. package/dist/src/firebase/catalog-data-paths.d.ts.map +1 -0
  66. package/dist/src/firebase/catalog-data-paths.js +31 -0
  67. package/dist/src/firebase/catalog-data-paths.js.map +1 -0
  68. package/dist/src/firebase/index.d.ts +2 -0
  69. package/dist/src/firebase/index.d.ts.map +1 -1
  70. package/dist/src/firebase/index.js +2 -0
  71. package/dist/src/firebase/index.js.map +1 -1
  72. package/dist/src/firebase/native-item-store.d.ts +11 -1
  73. package/dist/src/firebase/native-item-store.d.ts.map +1 -1
  74. package/dist/src/firebase/native-item-store.js +51 -16
  75. package/dist/src/firebase/native-item-store.js.map +1 -1
  76. package/dist/src/migrations/index.d.ts +1 -0
  77. package/dist/src/migrations/index.d.ts.map +1 -1
  78. package/dist/src/migrations/index.js +1 -0
  79. package/dist/src/migrations/index.js.map +1 -1
  80. package/dist/src/migrations/migrate-native-catalog-layout.d.ts +51 -0
  81. package/dist/src/migrations/migrate-native-catalog-layout.d.ts.map +1 -0
  82. package/dist/src/migrations/migrate-native-catalog-layout.js +224 -0
  83. package/dist/src/migrations/migrate-native-catalog-layout.js.map +1 -0
  84. package/dist/test/integration/firestore.emulator.test.js +10 -2
  85. package/dist/test/integration/firestore.emulator.test.js.map +1 -1
  86. package/dist/test/unit/backup-timestamp.test.d.ts +2 -0
  87. package/dist/test/unit/backup-timestamp.test.d.ts.map +1 -0
  88. package/dist/test/unit/backup-timestamp.test.js +11 -0
  89. package/dist/test/unit/backup-timestamp.test.js.map +1 -0
  90. package/dist/test/unit/compact-catalog-filter.test.d.ts +2 -0
  91. package/dist/test/unit/compact-catalog-filter.test.d.ts.map +1 -0
  92. package/dist/test/unit/compact-catalog-filter.test.js +18 -0
  93. package/dist/test/unit/compact-catalog-filter.test.js.map +1 -0
  94. package/dist/test/unit/gcs-firestore-compare.test.d.ts +2 -0
  95. package/dist/test/unit/gcs-firestore-compare.test.d.ts.map +1 -0
  96. package/dist/test/unit/gcs-firestore-compare.test.js +14 -0
  97. package/dist/test/unit/gcs-firestore-compare.test.js.map +1 -0
  98. package/dist/test/unit/gcs-firestore-paths.test.d.ts +2 -0
  99. package/dist/test/unit/gcs-firestore-paths.test.d.ts.map +1 -0
  100. package/dist/test/unit/gcs-firestore-paths.test.js +16 -0
  101. package/dist/test/unit/gcs-firestore-paths.test.js.map +1 -0
  102. package/dist/test/unit/resolve-native-items-layout.test.d.ts +2 -0
  103. package/dist/test/unit/resolve-native-items-layout.test.d.ts.map +1 -0
  104. package/dist/test/unit/resolve-native-items-layout.test.js +50 -0
  105. package/dist/test/unit/resolve-native-items-layout.test.js.map +1 -0
  106. package/package.json +5 -1
package/README.md CHANGED
@@ -8,6 +8,7 @@ Catalox is a **data-tier** package for managing **app-scoped catalogs** in Fireb
8
8
  - **Mapped catalogs** (items normalized from MongoDB or APIs)
9
9
  - **References + validation contracts** (standardized cross-catalog shapes)
10
10
  - **Seed/import/export + batch upsert** workflows for native catalogs
11
+ - **Optional GCS tools** — NDJSON export/import of Firestore collections to a bucket, **compare** live data vs bucket snapshots, and matching CLI commands (`firestore export-gcs`, `import-gcs`, `compare-gcs`; see [`docs/firestore-gcs-export.md`](docs/firestore-gcs-export.md))
11
12
 
12
13
  Catalox **does not** own UI, workflow orchestration, remote execution, artifact blobs, or secret storage.
13
14
 
@@ -20,6 +21,8 @@ This repo is currently set up as a workspace package.
20
21
 
21
22
  `@x12i/helpers` is a **required dependency** (installed as `@x12i/helpers@^1.2.0`).
22
23
 
24
+ **Direct dependency:** `@google-cloud/storage` is declared for GCS export/import/compare; it uses the same **Application Default Credentials** pattern as Firestore Admin (bucket IAM required).
25
+
23
26
  ## Configuration (real connections)
24
27
 
25
28
  Catalox is a library: you provide initialized clients + runtime env. For a **full list of environment variables**, CLI vs library behavior, and integration-test requirements, see [`docs/environment.md`](docs/environment.md).
@@ -51,6 +54,10 @@ initializeApp({ credential: applicationDefault() });
51
54
  const firestore = getFirestore();
52
55
  ```
53
56
 
57
+ ### Google Cloud Storage (optional export / import / compare)
58
+
59
+ When you use **`catalox firestore export-gcs`**, **`import-gcs`**, **`compare-gcs`**, or the matching **`Catalox`** methods, the runtime needs a GCS bucket and a credential that can **read/write objects** there (typically the same service account as Firestore, with **Storage** roles on that bucket). See [`docs/firestore-gcs-export.md`](docs/firestore-gcs-export.md) and [`docs/environment.md`](docs/environment.md).
60
+
54
61
  ### Mongo (mapped catalogs)
55
62
 
56
63
  For Mongo-mapped catalogs, provide:
@@ -82,13 +89,34 @@ The `catalox` binary loads `.env` via `dotenv`. Use **`CATALOX_*`** for **Catalo
82
89
  - **`CATALOX_USER_ID`** — Optional user id / actor for authz-sensitive CLI paths.
83
90
  - **`CATALOX_MONGO_URI`** — If set, enables the Mongo catalog adapter in the CLI (see `createCatalox()` in `src/cli/index.ts`).
84
91
 
92
+ **Running commands from this repository:** the shell command `catalox` is only on your `PATH` if the package is installed globally (`npm i -g @x12i/catalox`) or linked (`npm link` from this repo). Otherwise, after `npm run build`, use:
93
+
94
+ ```bash
95
+ npm run cli -- firestore report-native-layout --app "narrix"
96
+ # same as: node dist/src/cli/index.js firestore report-native-layout --app "narrix"
97
+ ```
98
+
99
+ #### `firestore` CLI quick reference
100
+
101
+ | Command | Purpose |
102
+ |---------|---------|
103
+ | `firestore backup` | Mirror metadata + native rows to Mongo or `backup-*` collections in Firestore ([`docs/backup.md`](docs/backup.md)). |
104
+ | `firestore restore-backup` / `undo-restore-backup` | Restore from `backup-*` with undo sidecars ([`docs/restore-firestore-backup.md`](docs/restore-firestore-backup.md)). |
105
+ | `firestore report-native-layout` | Legacy vs flat native layout diagnostics. |
106
+ | `firestore migrate-native-catalog-data` | Legacy `catalogData/{id}/items` → flat `catalogData-{id}-items` ([`docs/migration-native-catalog-data.md`](docs/migration-native-catalog-data.md)). |
107
+ | `firestore export-gcs` / `import-gcs` | NDJSON per collection + optional manifest ([`docs/firestore-gcs-export.md`](docs/firestore-gcs-export.md)). |
108
+ | `firestore compare-gcs` | Diff live Firestore vs bucket NDJSON (single collection or manifest). |
109
+
85
110
  ## Firestore data model (logical collections)
86
111
 
112
+ For a **full layout** (subcollections, document id conventions, snapshot runs, and query notes), see [`docs/firestore-data-model.md`](docs/firestore-data-model.md). For **native** catalogs specifically (per-catalog `catalogData-*-items`, layout resolution, `listCatalogItems`, filters, troubleshooting), see [`docs/native-catalog-storage-and-api.md`](docs/native-catalog-storage-and-api.md).
113
+
87
114
  Metadata:
88
115
 
89
116
  - `apps/{appId}`
90
117
  - `catalogs/{catalogId}`
91
118
  - `catalogBindings/{bindingId}` (many-to-many app↔catalog)
119
+ - `storeAppBindings/{bindingId}` (store↔app, multi-app export/report)
92
120
  - `catalogDefinitions/{catalogId}` (native vs mapped specifics)
93
121
  - `catalogAdapters/{adapterId}` (mongo/api adapter definitions)
94
122
  - `catalogMappings/{mappingId}` (field mapping specs)
@@ -98,16 +126,24 @@ Metadata:
98
126
 
99
127
  Data:
100
128
 
101
- - `catalogData/{catalogId}/items/{itemId}` (native items)
129
+ - `catalogData-{catalogId}-items/{itemId}` (native item rows; top-level collection per catalog)
130
+ - `catalogData/{catalogId}` (index and metadata for that catalog’s native storage; not item payloads)
102
131
  - `catalogSnapshots/{catalogId}/items/{itemId}` (mapped snapshot mode)
103
132
 
133
+ Backups (optional operator feature):
134
+
135
+ - `backup-*` and `{timestamp}__backup-*` (Firebase mode, same database)
136
+ - Mongo database `catalox-backups` (Mongo mode)
137
+
138
+ See [`docs/backup.md`](docs/backup.md) for `backupData` / CLI backup, [`docs/restore-firestore-backup.md`](docs/restore-firestore-backup.md) for restoring Firebase mirrors to live data with undo, [`docs/migration-native-catalog-data.md`](docs/migration-native-catalog-data.md) for moving legacy native rows into `catalogData-{catalogId}-items`, and [`docs/firestore-native-layout-vs-backup.md`](docs/firestore-native-layout-vs-backup.md) for how live paths differ from `backup-*` mirrors and what `backupData` reports in `nativeItemSourceLayoutByCatalogId`. For **how native storage, layout resolution, `listCatalogItems`, and filters work together**, read [`docs/native-catalog-storage-and-api.md`](docs/native-catalog-storage-and-api.md). For **NDJSON export/import of Firestore collections to a GCS bucket** (single collection, all roots, optional recursive subcollections, manifest restore) and **compare live data vs bucket NDJSON** (`firestore compare-gcs`), see [`docs/firestore-gcs-export.md`](docs/firestore-gcs-export.md) and CLI `firestore export-gcs` / `firestore import-gcs` / `firestore compare-gcs`. If the console still shows **`catalogData/{catalogId}/items`**, run **`catalox firestore report-native-layout`** then **`catalox firestore migrate-native-catalog-data`** (backup + copy to flat; optional `--delete-legacy` after you trust backups).
139
+
104
140
  ## Core usage (generic from `appId`)
105
141
 
106
142
  ### Create stores and `Catalox`
107
143
 
108
144
  ```ts
109
145
  import { FirestoreStore } from "@x12i/catalox";
110
- import { AppStore, CatalogStore, BindingStore, DefinitionStore, MappingStore, DescriptorStore, ReferenceStore, NativeItemStore, SnapshotStore, AdapterStore } from "@x12i/catalox";
146
+ import { AppStore, CatalogStore, BindingStore, DefinitionStore, MappingStore, DescriptorStore, ReferenceStore, NativeItemStore, CatalogDataIndexStore, SnapshotStore, AdapterStore } from "@x12i/catalox";
111
147
  import { AuthorizationService, Catalox } from "@x12i/catalox";
112
148
 
113
149
  // firebase-admin initialization is up to the consumer
@@ -116,18 +152,21 @@ import { getFirestore } from "firebase-admin/firestore";
116
152
  const firestore = getFirestore();
117
153
  const store = new FirestoreStore({ firestore });
118
154
 
155
+ const bindings = new BindingStore(store);
119
156
  const deps = {
120
157
  apps: new AppStore(store),
121
158
  catalogs: new CatalogStore(store),
122
- bindings: new BindingStore(store),
159
+ bindings,
123
160
  definitions: new DefinitionStore(store),
124
161
  mappings: new MappingStore(store),
125
162
  descriptors: new DescriptorStore(store),
126
163
  references: new ReferenceStore(store),
127
164
  nativeItems: new NativeItemStore(store),
165
+ catalogDataIndex: new CatalogDataIndexStore(store),
128
166
  snapshots: new SnapshotStore(store),
129
167
  adapters: new AdapterStore(store),
130
- authz: new AuthorizationService(new BindingStore(store)),
168
+ firestoreStore: store,
169
+ authz: new AuthorizationService(bindings),
131
170
  };
132
171
 
133
172
  const catalox = new Catalox(deps);
@@ -320,7 +359,7 @@ await catalox.createCatalog(ctx, {
320
359
  catalogId: "signals",
321
360
  name: "Signals",
322
361
  sourceMode: "native",
323
- native: { type: "native", firestoreCollectionPath: "catalogData/signals/items" },
362
+ native: { type: "native" },
324
363
  });
325
364
  ```
326
365
 
@@ -412,7 +451,7 @@ const res = await catalox.listCatalogItems({ appId: "myAppId" }, "signals", {
412
451
  });
413
452
  ```
414
453
 
415
- Filtering is performed on `indexed.<field>` in stored native records (payload remains in `data`).
454
+ Filtering is performed on `indexed.<field>` in stored native records (payload remains in `data`). **Blank filter values** (`""`, whitespace-only strings, `null`, `undefined`) are **not** sent as Firestore constraints so empty UI fields do not zero out lists; see [`docs/native-catalog-storage-and-api.md`](docs/native-catalog-storage-and-api.md) and **`compactCatalogFilter`** in the published API.
416
455
 
417
456
  ### Canonical `indexed` rule (native catalogs)
418
457
 
@@ -441,6 +480,10 @@ Validation APIs exist with standardized contracts, but **current behavior is min
441
480
  - `validateCatalog(...)` and `validateCatalogItem(...)` currently return `{ isValid: true, issues: [] }`.
442
481
  - Upstream domain validation is expected to be layered on in later work while keeping the response contract stable.
443
482
 
483
+ ## Publishing
484
+
485
+ From a clean tree, **`npm publish`** runs **`prepublishOnly`**, which executes **`npm run build`** then **`npm test`** (unit tests). Ensure `dist/` is build output only; the published tarball includes **`dist`**, **`README.md`**, and **`LICENSE`** per `package.json` **`files`**.
486
+
444
487
  ## Tests
445
488
 
446
489
  Unit tests (default):
@@ -464,9 +507,19 @@ Integration tests are **live-only** (no mocks, no emulators). They require:
464
507
  ### Live test safety (read before running)
465
508
 
466
509
  - **Never run against production credentials/projects.** Use a dedicated Firebase project for tests.
467
- - **Touched collections**: `apps`, `catalogs`, `catalogBindings`, `catalogDefinitions`, `catalogDescriptors`, and `catalogData/{catalogId}/items/...`.
510
+ - **Touched collections**: `apps`, `catalogs`, `catalogBindings`, `catalogDefinitions`, `catalogDescriptors`, `catalogData/{catalogId}`, and `catalogData-{catalogId}-items/...`. The **`catalox firestore restore-backup`** / **`undo-restore-backup`** commands additionally write `backup-restoreSessions` and `{restoreSessionId}__preRestore-*` sidecar collections (see [`docs/restore-firestore-backup.md`](docs/restore-firestore-backup.md)).
468
511
  - **Cleanup**: tests do best-effort deletes of the docs they created, but do not guarantee full teardown.
469
512
 
513
+ ## Changelog
514
+
515
+ ### 2.5.0
516
+
517
+ - **GCS:** NDJSON export/import for one or many Firestore collections (`exportFirestoreCollectionToGcs`, `exportAllFirestoreCollectionsToGcs`, restore helpers, CLI `firestore export-gcs` / `import-gcs`). Optional **`gcsPrefix`** and **`objectNamePostfix`** on object keys; manifest-driven restore-all.
518
+ - **GCS:** Compare live collections to bucket NDJSON — identical / changed / only-in-Firestore / only-in-bucket (`compareFirestoreCollectionWithGcsNdjson`, manifest mode, CLI `firestore compare-gcs`). Helpers **`normalizeForCompare`**, **`dataFingerprint`** exported for tooling.
519
+ - **Native:** `listCatalogItems` compacts inert filter entries before Firestore queries; `NativeItemStore.list` can re-resolve flat vs legacy layout after an unconstrained empty first page.
520
+ - **Docs:** [`docs/native-catalog-storage-and-api.md`](docs/native-catalog-storage-and-api.md), [`docs/firestore-gcs-export.md`](docs/firestore-gcs-export.md); README and environment docs updated for GCS.
521
+ - **Dependency:** `@google-cloud/storage` (^7.19).
522
+
470
523
  ## Boundaries (important)
471
524
 
472
525
  - **Secrets**: do not store secret material (API keys, cloud creds) in Catalox. Store only non-secret refs like `credentialsRef`.
@@ -0,0 +1,40 @@
1
+ import { type Firestore } from "firebase-admin/firestore";
2
+ import { type Db } from "mongodb";
3
+ import type { CatalogId } from "../contracts/ids.js";
4
+ import type { BackupDataInput, BackupDataResult } from "../contracts/backup.js";
5
+ import type { CatalogRecord } from "../contracts/catalogs.js";
6
+ import { CatalogStore } from "../firebase/catalog-store.js";
7
+ import { BindingStore } from "../firebase/binding-store.js";
8
+ import { FirestoreStore } from "../firebase/firestore-store.js";
9
+ export declare const BACKUP_METADATA_SOURCE_NAMES: readonly ["apps", "catalogs", "catalogBindings", "storeAppBindings", "catalogDefinitions", "catalogDescriptors", "catalogMappings", "catalogAdapters", "catalogReferences", "catalogData"];
10
+ export type BackupDataDeps = {
11
+ firestoreStore: FirestoreStore;
12
+ catalogs: CatalogStore;
13
+ bindings: BindingStore;
14
+ };
15
+ export declare function formatBackupTimestamp(versionOverride?: string, d?: Date): string;
16
+ /** Latest Firebase backup mirror collection id for a logical source (e.g. `apps`, `catalogData--{id}`). */
17
+ export declare function firebaseLatestName(logical: string): string;
18
+ /** Versioned Firebase backup collection id. */
19
+ export declare function firebaseVersionedName(ts: string, logical: string): string;
20
+ export declare function firebaseNativeLogical(catalogId: string): string;
21
+ export declare function firebaseSnapshotLogical(catalogId: string): string;
22
+ export declare function firebaseSnapshotRunLogical(catalogId: string, runId: string): string;
23
+ export declare function paginatedCopyFirestoreToFirestore(fs: Firestore, sourceCollectionPath: string, destCollectionPath: string, counts: Record<string, number>, countKey: string): Promise<void>;
24
+ export declare function deleteAllDocsInFirestoreCollection(fs: Firestore, collectionPath: string): Promise<void>;
25
+ export declare function discoverNativeCatalogIds(fs: Firestore, catalogs: CatalogRecord[], opts: {
26
+ bindings: BindingStore;
27
+ catalogIds?: CatalogId[];
28
+ appId?: string;
29
+ }): Promise<CatalogId[]>;
30
+ /** Delete Mongo `backupRuns` documents with createdAt older than cutoff ISO string. */
31
+ export declare function pruneMongoBackupRuns(db: Db, createdBeforeIso: string): Promise<number>;
32
+ /**
33
+ * Delete documents in oldest Firestore versioned backup collections matching `{ts}__backup-*`
34
+ * until at most `keepLast` such collections remain.
35
+ */
36
+ export declare function pruneFirebaseVersionedBackups(firestore: Firestore, keepLast: number): Promise<{
37
+ deleted: string[];
38
+ }>;
39
+ export declare function runBackupData(deps: BackupDataDeps, input: BackupDataInput): Promise<BackupDataResult>;
40
+ //# sourceMappingURL=backup-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-data.d.ts","sourceRoot":"","sources":["../../../src/catalox/backup-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAe,KAAK,EAAE,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAmB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAWhE,eAAO,MAAM,4BAA4B,4LAY/B,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,OAAa,GAAG,MAAM,CAMtF;AAMD,2GAA2G;AAC3G,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,+CAA+C;AAC/C,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AA0BD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAsB,iCAAiC,CACrD,EAAE,EAAE,SAAS,EACb,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,wBAAsB,kCAAkC,CAAC,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7G;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,SAAS,EAAE,CAAC,CAwBtB;AA0PD,uFAAuF;AACvF,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5F;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAchC;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,gBAAgB,CAAC,CA+K3B"}