@x12i/catalox 2.6.0 → 3.0.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 (68) hide show
  1. package/README.md +48 -28
  2. package/dist/src/catalox/backup-data.d.ts +37 -0
  3. package/dist/src/catalox/backup-data.d.ts.map +1 -1
  4. package/dist/src/catalox/backup-data.js +95 -2
  5. package/dist/src/catalox/backup-data.js.map +1 -1
  6. package/dist/src/catalox/catalox-bound.d.ts +119 -0
  7. package/dist/src/catalox/catalox-bound.d.ts.map +1 -0
  8. package/dist/src/catalox/catalox-bound.js +166 -0
  9. package/dist/src/catalox/catalox-bound.js.map +1 -0
  10. package/dist/src/catalox/catalox-gcs-backup-export-manifest.d.ts +13 -0
  11. package/dist/src/catalox/catalox-gcs-backup-export-manifest.d.ts.map +1 -0
  12. package/dist/src/catalox/catalox-gcs-backup-export-manifest.js +82 -0
  13. package/dist/src/catalox/catalox-gcs-backup-export-manifest.js.map +1 -0
  14. package/dist/src/catalox/catalox.d.ts +27 -3
  15. package/dist/src/catalox/catalox.d.ts.map +1 -1
  16. package/dist/src/catalox/catalox.js +59 -9
  17. package/dist/src/catalox/catalox.js.map +1 -1
  18. package/dist/src/catalox/create-catalox.d.ts +22 -0
  19. package/dist/src/catalox/create-catalox.d.ts.map +1 -0
  20. package/dist/src/catalox/create-catalox.js +65 -0
  21. package/dist/src/catalox/create-catalox.js.map +1 -0
  22. package/dist/src/catalox/firestore-gcs-transfer.d.ts +4 -0
  23. package/dist/src/catalox/firestore-gcs-transfer.d.ts.map +1 -1
  24. package/dist/src/catalox/firestore-gcs-transfer.js +4 -3
  25. package/dist/src/catalox/firestore-gcs-transfer.js.map +1 -1
  26. package/dist/src/catalox/index.d.ts +7 -3
  27. package/dist/src/catalox/index.d.ts.map +1 -1
  28. package/dist/src/catalox/index.js +7 -3
  29. package/dist/src/catalox/index.js.map +1 -1
  30. package/dist/src/catalox/restore-firestore-backup-from-gcs.d.ts +21 -0
  31. package/dist/src/catalox/restore-firestore-backup-from-gcs.d.ts.map +1 -0
  32. package/dist/src/catalox/restore-firestore-backup-from-gcs.js +310 -0
  33. package/dist/src/catalox/restore-firestore-backup-from-gcs.js.map +1 -0
  34. package/dist/src/catalox/restore-firestore-backup.d.ts +17 -1
  35. package/dist/src/catalox/restore-firestore-backup.d.ts.map +1 -1
  36. package/dist/src/catalox/restore-firestore-backup.js +2 -1
  37. package/dist/src/catalox/restore-firestore-backup.js.map +1 -1
  38. package/dist/src/cli/index.js +97 -42
  39. package/dist/src/cli/index.js.map +1 -1
  40. package/dist/src/contracts/catalogs.d.ts +17 -0
  41. package/dist/src/contracts/catalogs.d.ts.map +1 -1
  42. package/dist/src/contracts/catalogs.js.map +1 -1
  43. package/dist/src/contracts/gcs-firestore-transfer.d.ts +14 -0
  44. package/dist/src/contracts/gcs-firestore-transfer.d.ts.map +1 -1
  45. package/dist/src/contracts/index.d.ts +3 -3
  46. package/dist/src/contracts/index.d.ts.map +1 -1
  47. package/dist/src/contracts/index.js.map +1 -1
  48. package/dist/src/contracts/restore.d.ts +57 -2
  49. package/dist/src/contracts/restore.d.ts.map +1 -1
  50. package/dist/src/embedder.d.ts +17 -0
  51. package/dist/src/embedder.d.ts.map +1 -0
  52. package/dist/src/embedder.js +17 -0
  53. package/dist/src/embedder.js.map +1 -0
  54. package/dist/src/index.d.ts +2 -15
  55. package/dist/src/index.d.ts.map +1 -1
  56. package/dist/src/index.js +2 -15
  57. package/dist/src/index.js.map +1 -1
  58. package/dist/src/operator.d.ts +24 -0
  59. package/dist/src/operator.d.ts.map +1 -0
  60. package/dist/src/operator.js +25 -0
  61. package/dist/src/operator.js.map +1 -0
  62. package/dist/test/integration/firestore.emulator.test.js +9 -28
  63. package/dist/test/integration/firestore.emulator.test.js.map +1 -1
  64. package/dist/test/unit/catalox-gcs-backup-export-manifest.test.d.ts +2 -0
  65. package/dist/test/unit/catalox-gcs-backup-export-manifest.test.d.ts.map +1 -0
  66. package/dist/test/unit/catalox-gcs-backup-export-manifest.test.js +20 -0
  67. package/dist/test/unit/catalox-gcs-backup-export-manifest.test.js.map +1 -0
  68. package/package.json +21 -5
@@ -0,0 +1,166 @@
1
+ /**
2
+ * {@link Catalox} with a fixed {@link CataloxContext}: every method omits the first `context` argument.
3
+ * Use {@link Catalox.withContext} or {@link bindCataloxContext}.
4
+ */
5
+ export class CataloxBound {
6
+ catalox;
7
+ context;
8
+ constructor(catalox, context) {
9
+ this.catalox = catalox;
10
+ this.context = context;
11
+ }
12
+ async buildCatalogListRenderMap(catalogId, options) {
13
+ return this.catalox.buildCatalogListRenderMap(this.context, catalogId, options);
14
+ }
15
+ async buildCatalogItemRenderMap(catalogId, itemId, options) {
16
+ return this.catalox.buildCatalogItemRenderMap(this.context, catalogId, itemId, options);
17
+ }
18
+ async listAppCatalogs(input) {
19
+ return this.catalox.listAppCatalogs(this.context, input);
20
+ }
21
+ async getCatalogDescriptor(catalogId) {
22
+ return this.catalox.getCatalogDescriptor(this.context, catalogId);
23
+ }
24
+ async getCatalogRendererSnippet(catalogId, role, mode) {
25
+ return this.catalox.getCatalogRendererSnippet(this.context, catalogId, role, mode);
26
+ }
27
+ async getAppCatalogBootstrap(appId) {
28
+ return this.catalox.getAppCatalogBootstrap(this.context, appId);
29
+ }
30
+ async listCatalogItems(catalogId, options) {
31
+ return this.catalox.listCatalogItems(this.context, catalogId, options);
32
+ }
33
+ async getCatalogItem(catalogId, itemId) {
34
+ return this.catalox.getCatalogItem(this.context, catalogId, itemId);
35
+ }
36
+ async validateCatalog(catalogId) {
37
+ return this.catalox.validateCatalog(this.context, catalogId);
38
+ }
39
+ async validateCatalogItem(catalogId, itemId) {
40
+ return this.catalox.validateCatalogItem(this.context, catalogId, itemId);
41
+ }
42
+ async getCatalogItemReferences(catalogId, itemId) {
43
+ return this.catalox.getCatalogItemReferences(this.context, catalogId, itemId);
44
+ }
45
+ async listCatalogReferences(catalogId) {
46
+ return this.catalox.listCatalogReferences(this.context, catalogId);
47
+ }
48
+ async getApp(appId) {
49
+ return this.catalox.getApp(this.context, appId);
50
+ }
51
+ async createCatalog(input) {
52
+ return this.catalox.createCatalog(this.context, input);
53
+ }
54
+ async updateCatalog(catalogId, patch) {
55
+ return this.catalox.updateCatalog(this.context, catalogId, patch);
56
+ }
57
+ async getCatalog(catalogId) {
58
+ return this.catalox.getCatalog(this.context, catalogId);
59
+ }
60
+ async listCatalogs(options) {
61
+ return this.catalox.listCatalogs(this.context, options);
62
+ }
63
+ async bindCatalogToApp(input) {
64
+ return this.catalox.bindCatalogToApp(this.context, input);
65
+ }
66
+ async unbindCatalogFromApp(appId, catalogId) {
67
+ return this.catalox.unbindCatalogFromApp(this.context, appId, catalogId);
68
+ }
69
+ async bindAppToStore(input) {
70
+ return this.catalox.bindAppToStore(this.context, input);
71
+ }
72
+ async unbindAppFromStore(storeId, appId) {
73
+ return this.catalox.unbindAppFromStore(this.context, storeId, appId);
74
+ }
75
+ async listAppsForStore(storeId) {
76
+ return this.catalox.listAppsForStore(this.context, storeId);
77
+ }
78
+ async ensureCatalog(catalog) {
79
+ return this.catalox.ensureCatalog(this.context, catalog);
80
+ }
81
+ async ensureBinding(input) {
82
+ return this.catalox.ensureBinding(this.context, input);
83
+ }
84
+ async createNativeCatalogItem(catalogId, input) {
85
+ return this.catalox.createNativeCatalogItem(this.context, catalogId, input);
86
+ }
87
+ async updateNativeCatalogItem(catalogId, itemId, patch) {
88
+ return this.catalox.updateNativeCatalogItem(this.context, catalogId, itemId, patch);
89
+ }
90
+ async deleteNativeCatalogItem(catalogId, itemId) {
91
+ return this.catalox.deleteNativeCatalogItem(this.context, catalogId, itemId);
92
+ }
93
+ async upsertNativeCatalogItem(catalogId, input) {
94
+ return this.catalox.upsertNativeCatalogItem(this.context, catalogId, input);
95
+ }
96
+ async batchUpsertNativeCatalogItems(catalogId, items) {
97
+ return this.catalox.batchUpsertNativeCatalogItems(this.context, catalogId, items);
98
+ }
99
+ importCatalogItemsFromJson(json) {
100
+ return this.catalox.importCatalogItemsFromJson(json);
101
+ }
102
+ exportCatalogItemsToJson(value, pretty = true) {
103
+ return this.catalox.exportCatalogItemsToJson(value, pretty);
104
+ }
105
+ async exportInventory(input = {}) {
106
+ return this.catalox.exportInventory(this.context, input);
107
+ }
108
+ async exportInventoryToJson(input = {}, pretty = true) {
109
+ return this.catalox.exportInventoryToJson(this.context, input, pretty);
110
+ }
111
+ async generateInventoryReport(input = {}) {
112
+ return this.catalox.generateInventoryReport(this.context, input);
113
+ }
114
+ async syncMappedCatalog(catalogId) {
115
+ return this.catalox.syncMappedCatalog(this.context, catalogId);
116
+ }
117
+ async backupData(input) {
118
+ return this.catalox.backupData(this.context, input);
119
+ }
120
+ async restoreFirestoreBackup(input) {
121
+ return this.catalox.restoreFirestoreBackup(this.context, input);
122
+ }
123
+ async undoFirestoreRestore(input) {
124
+ return this.catalox.undoFirestoreRestore(this.context, input);
125
+ }
126
+ async restoreFirestoreBackupFromGcs(input) {
127
+ return this.catalox.restoreFirestoreBackupFromGcs(this.context, input);
128
+ }
129
+ async pruneGcsBackupRuns(input) {
130
+ return this.catalox.pruneGcsBackupRuns(this.context, input);
131
+ }
132
+ async deleteCataloxGcsBackupRun(input) {
133
+ return this.catalox.deleteCataloxGcsBackupRun(this.context, input);
134
+ }
135
+ cataloxGcsBackupManifestToExportManifest(manifest, gcsRunFolder) {
136
+ return this.catalox.cataloxGcsBackupManifestToExportManifest(manifest, gcsRunFolder);
137
+ }
138
+ async reportNativeCatalogLayoutDiagnostics(input) {
139
+ return this.catalox.reportNativeCatalogLayoutDiagnostics(this.context, input);
140
+ }
141
+ async migrateNativeCatalogLayout(input) {
142
+ return this.catalox.migrateNativeCatalogLayout(this.context, input);
143
+ }
144
+ async exportFirestoreCollectionToGcs(input) {
145
+ return this.catalox.exportFirestoreCollectionToGcs(this.context, input);
146
+ }
147
+ async exportAllFirestoreCollectionsToGcs(input) {
148
+ return this.catalox.exportAllFirestoreCollectionsToGcs(this.context, input);
149
+ }
150
+ async restoreFirestoreCollectionFromGcs(input) {
151
+ return this.catalox.restoreFirestoreCollectionFromGcs(this.context, input);
152
+ }
153
+ async restoreAllFirestoreCollectionsFromGcsManifest(input) {
154
+ return this.catalox.restoreAllFirestoreCollectionsFromGcsManifest(this.context, input);
155
+ }
156
+ async compareFirestoreCollectionWithGcsNdjson(input) {
157
+ return this.catalox.compareFirestoreCollectionWithGcsNdjson(this.context, input);
158
+ }
159
+ async compareAllFirestoreCollectionsWithGcsManifest(input) {
160
+ return this.catalox.compareAllFirestoreCollectionsWithGcsManifest(this.context, input);
161
+ }
162
+ }
163
+ export function bindCataloxContext(catalox, context) {
164
+ return new CataloxBound(catalox, context);
165
+ }
166
+ //# sourceMappingURL=catalox-bound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-bound.js","sourceRoot":"","sources":["../../../src/catalox/catalox-bound.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CataloxGcsBackupManifestV1, FirestoreGcsExportManifestV1 } from "../contracts/gcs-firestore-transfer.js";
2
+ /**
3
+ * Build a **`catalox-firestore-export-manifest.json`**-compatible manifest that points at NDJSON objects
4
+ * produced by **`backupData` mode `gcs`**, so `restoreAllFirestoreCollectionsFromGcsManifest` (or CLI `import-gcs --restore-all`)
5
+ * can restore the same logical data without a dedicated code path.
6
+ *
7
+ * `gcsRunFolder` must match the backup run folder (e.g. `catalox-firestore-backups/2026_04_18T12_00_00Z`).
8
+ * Object paths in the result are **`{gcsRunFolder}/{relative}`** with slashes normalized.
9
+ */
10
+ export declare function cataloxGcsBackupManifestToFirestoreExportManifest(manifest: CataloxGcsBackupManifestV1, gcsRunFolder: string): FirestoreGcsExportManifestV1;
11
+ /** Object key for a synthetic export manifest next to a GCS Catalox backup run. */
12
+ export declare const CATALOX_GCS_BACKUP_AS_EXPORT_MANIFEST_OBJECT = "catalox-firestore-export-manifest.json";
13
+ //# sourceMappingURL=catalox-gcs-backup-export-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-gcs-backup-export-manifest.d.ts","sourceRoot":"","sources":["../../../src/catalox/catalox-gcs-backup-export-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAIvH;;;;;;;GAOG;AACH,wBAAgB,iDAAiD,CAC/D,QAAQ,EAAE,0BAA0B,EACpC,YAAY,EAAE,MAAM,GACnB,4BAA4B,CAqE9B;AAED,mFAAmF;AACnF,eAAO,MAAM,4CAA4C,2CAAiC,CAAC"}
@@ -0,0 +1,82 @@
1
+ import { BACKUP_METADATA_SOURCE_NAMES, firebaseNativeLogical } from "./backup-data.js";
2
+ import { CATALOX_FIRESTORE_GCS_MANIFEST } from "./firestore-gcs-transfer.js";
3
+ /**
4
+ * Build a **`catalox-firestore-export-manifest.json`**-compatible manifest that points at NDJSON objects
5
+ * produced by **`backupData` mode `gcs`**, so `restoreAllFirestoreCollectionsFromGcsManifest` (or CLI `import-gcs --restore-all`)
6
+ * can restore the same logical data without a dedicated code path.
7
+ *
8
+ * `gcsRunFolder` must match the backup run folder (e.g. `catalox-firestore-backups/2026_04_18T12_00_00Z`).
9
+ * Object paths in the result are **`{gcsRunFolder}/{relative}`** with slashes normalized.
10
+ */
11
+ export function cataloxGcsBackupManifestToFirestoreExportManifest(manifest, gcsRunFolder) {
12
+ const folder = gcsRunFolder.replace(/^\/+/, "").replace(/\/+$/, "");
13
+ const prefix = folder ? `${folder}/` : "";
14
+ const cw = manifest.collectionsWritten ?? [];
15
+ const counts = manifest.counts ?? {};
16
+ const entries = [];
17
+ for (const name of BACKUP_METADATA_SOURCE_NAMES) {
18
+ const rel = `metadata/${name}.ndjson`;
19
+ if (!cw.includes(rel))
20
+ continue;
21
+ entries.push({
22
+ firestorePath: name,
23
+ objectPath: `${prefix}${rel}`,
24
+ documentCount: Number(counts[`gcs:meta:${name}`] ?? 0),
25
+ });
26
+ }
27
+ const layouts = manifest.nativeItemSourceLayoutByCatalogId ?? {};
28
+ for (const catalogId of Object.keys(layouts)) {
29
+ const rel = `native/${firebaseNativeLogical(catalogId)}.ndjson`;
30
+ if (!cw.includes(rel))
31
+ continue;
32
+ const layout = layouts[catalogId];
33
+ const firestorePath = layout === "legacy" ? `catalogData/${catalogId}/items` : `catalogData-${catalogId}-items`;
34
+ entries.push({
35
+ firestorePath,
36
+ objectPath: `${prefix}${rel}`,
37
+ documentCount: Number(counts[`gcs:native:${firebaseNativeLogical(catalogId)}`] ?? 0),
38
+ });
39
+ }
40
+ for (const rel of cw) {
41
+ if (!rel.startsWith("snapshots/") || !rel.endsWith(".ndjson"))
42
+ continue;
43
+ const base = rel.slice("snapshots/".length, -".ndjson".length);
44
+ const snapPrefix = "catalogSnapshots--";
45
+ const runPrefix = "catalogSnapshotsRun--";
46
+ if (base.startsWith(snapPrefix) && !base.startsWith(runPrefix)) {
47
+ const catalogId = base.slice(snapPrefix.length);
48
+ const firestorePath = `catalogSnapshots/${catalogId}/items`;
49
+ entries.push({
50
+ firestorePath,
51
+ objectPath: `${prefix}${rel}`,
52
+ documentCount: Number(counts[`gcs:snapshot:catalogSnapshots--${catalogId}`] ?? 0),
53
+ });
54
+ continue;
55
+ }
56
+ if (base.startsWith(runPrefix)) {
57
+ const rest = base.slice(runPrefix.length);
58
+ const delim = rest.lastIndexOf("--");
59
+ if (delim === -1)
60
+ continue;
61
+ const catalogId = rest.slice(0, delim);
62
+ const runId = rest.slice(delim + 2);
63
+ const firestorePath = `catalogSnapshots/${catalogId}/runs/${runId}/items`;
64
+ entries.push({
65
+ firestorePath,
66
+ objectPath: `${prefix}${rel}`,
67
+ documentCount: Number(counts[`gcs:snapshotRun:catalogSnapshotsRun--${catalogId}--${runId}`] ?? 0),
68
+ });
69
+ }
70
+ }
71
+ return {
72
+ catalog: "catalox-firestore-gcs-export",
73
+ version: 1,
74
+ exportedAt: new Date().toISOString(),
75
+ gcsPrefix: prefix,
76
+ objectNamePostfix: "",
77
+ entries,
78
+ };
79
+ }
80
+ /** Object key for a synthetic export manifest next to a GCS Catalox backup run. */
81
+ export const CATALOX_GCS_BACKUP_AS_EXPORT_MANIFEST_OBJECT = CATALOX_FIRESTORE_GCS_MANIFEST;
82
+ //# sourceMappingURL=catalox-gcs-backup-export-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalox-gcs-backup-export-manifest.js","sourceRoot":"","sources":["../../../src/catalox/catalox-gcs-backup-export-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AppCatalogBootstrap, AppCatalogEntry, CatalogDescriptor, CatalogItemReference, CatalogItemValidationReport, CatalogListResult, CatalogQueryOptions, CatalogValidationReport, CreateCatalogInput, ExportInventoryData, ExportInventoryInput, InventoryReportData, InventoryReportInput, ItemId, StoreId, StoreAppBindingRecord, ListAppCatalogsInput, UnifiedCatalogItem, UpdateCatalogInput } from "../contracts/index.js";
1
+ import type { AppCatalogBootstrap, AppCatalogEntry, CatalogDescriptor, CatalogItemReference, CatalogItemValidationReport, CatalogGetItemResult, CatalogListResult, CatalogQueryOptions, CatalogValidationReport, CreateCatalogInput, ExportInventoryData, ExportInventoryInput, InventoryReportData, InventoryReportInput, ItemId, StoreId, StoreAppBindingRecord, ListAppCatalogsInput, UnifiedCatalogItem, UpdateCatalogInput } from "../contracts/index.js";
2
2
  import type { AppId, CatalogId } from "../contracts/ids.js";
3
3
  import { ApiCatalogAdapter } from "../adapters/api/api-adapter.js";
4
4
  import { MongoCatalogAdapter } from "../adapters/mongo/mongo-adapter.js";
@@ -22,9 +22,12 @@ import { StoreAppBindingStore } from "../firebase/store-app-binding-store.js";
22
22
  import type { BackupDataInput, BackupDataResult } from "../contracts/backup.js";
23
23
  import type { ExportAllFirestoreCollectionsToGcsInput, ExportAllFirestoreCollectionsToGcsResult, ExportFirestoreCollectionToGcsInput, ExportFirestoreCollectionToGcsResult, RestoreAllFirestoreCollectionsFromGcsInput, RestoreAllFirestoreCollectionsFromGcsResult, RestoreFirestoreCollectionFromGcsInput, RestoreFirestoreCollectionFromGcsResult } from "../contracts/gcs-firestore-transfer.js";
24
24
  import type { CompareAllFirestoreCollectionsWithGcsManifestInput, CompareAllFirestoreCollectionsWithGcsResult, CompareFirestoreCollectionWithGcsInput, CompareFirestoreCollectionWithGcsResult } from "../contracts/gcs-firestore-compare.js";
25
- import type { RestoreFirestoreBackupInput, RestoreFirestoreBackupResult, UndoFirestoreRestoreInput, UndoFirestoreRestoreResult } from "../contracts/restore.js";
25
+ import type { RestoreFirestoreBackupInput, RestoreFirestoreBackupResult, RestoreFirestoreBackupFromGcsInput, RestoreFirestoreBackupFromGcsResult, PruneGcsBackupRunsInput, PruneGcsBackupRunsResult, UndoFirestoreRestoreInput, UndoFirestoreRestoreResult } from "../contracts/restore.js";
26
+ import type { CataloxGcsBackupManifestV1, FirestoreGcsExportManifestV1 } from "../contracts/gcs-firestore-transfer.js";
27
+ import { runDeleteCataloxGcsBackupRun } from "./restore-firestore-backup-from-gcs.js";
26
28
  import { type MigrateNativeCatalogLayoutInput, type MigrateNativeCatalogLayoutResult } from "../migrations/migrate-native-catalog-layout.js";
27
29
  import { type NativeCatalogLayoutDiagnosticRow } from "./native-catalog-layout-diagnostics.js";
30
+ import { CataloxBound } from "./catalox-bound.js";
28
31
  export type CataloxDependencies = {
29
32
  apps: AppStore;
30
33
  catalogs: CatalogStore;
@@ -74,7 +77,7 @@ export declare class Catalox {
74
77
  getCatalogRendererSnippet(context: CataloxContext, catalogId: CatalogId, role: "core" | "list" | "grid" | "item" | "report" | "dashboard", mode?: "readonly" | "editable"): Promise<import("../contracts/renderer-snippets.js").CatalogRendererSnippetRecord | null>;
75
78
  getAppCatalogBootstrap(context: CataloxContext, appId?: AppId): Promise<AppCatalogBootstrap>;
76
79
  listCatalogItems(context: CataloxContext, catalogId: CatalogId, options?: CatalogQueryOptions): Promise<CatalogListResult>;
77
- getCatalogItem(context: CataloxContext, catalogId: CatalogId, itemId: ItemId): Promise<UnifiedCatalogItem | null>;
80
+ getCatalogItem(context: CataloxContext, catalogId: CatalogId, itemId: ItemId): Promise<CatalogGetItemResult>;
78
81
  validateCatalog(_context: CataloxContext, _catalogId: CatalogId): Promise<CatalogValidationReport>;
79
82
  validateCatalogItem(_context: CataloxContext, _catalogId: CatalogId, _itemId: ItemId): Promise<CatalogItemValidationReport>;
80
83
  getCatalogItemReferences(context: CataloxContext, catalogId: CatalogId, itemId: ItemId): Promise<CatalogItemReference[]>;
@@ -135,6 +138,23 @@ export declare class Catalox {
135
138
  restoreFirestoreBackup(_context: CataloxContext, input: RestoreFirestoreBackupInput): Promise<RestoreFirestoreBackupResult>;
136
139
  /** Revert a prior `restoreFirestoreBackup` using the manifest and `restoreSessionId__preRestore-*` collections. */
137
140
  undoFirestoreRestore(_context: CataloxContext, input: UndoFirestoreRestoreInput): Promise<UndoFirestoreRestoreResult>;
141
+ /**
142
+ * Restore live Firestore from one **`backupData` GCS** run (`metadata/`, `native/`, optional `snapshots/` NDJSON).
143
+ * Captures pre-restore copies to `{session}__preRestore-*` first; **`undoFirestoreRestore`** works the same as for `restoreFirestoreBackup`.
144
+ */
145
+ restoreFirestoreBackupFromGcs(_context: CataloxContext, input: RestoreFirestoreBackupFromGcsInput): Promise<RestoreFirestoreBackupFromGcsResult>;
146
+ /** Delete oldest GCS Catalox backup **run folders** (children of the base prefix) until `keepLast` newest remain. */
147
+ pruneGcsBackupRuns(_context: CataloxContext, input: PruneGcsBackupRunsInput): Promise<PruneGcsBackupRunsResult>;
148
+ /** Delete every object under one GCS backup run folder (operator cleanup). */
149
+ deleteCataloxGcsBackupRun(_context: CataloxContext, input: {
150
+ gcsBucket: string;
151
+ gcsRunFolder: string;
152
+ }): Promise<Awaited<ReturnType<typeof runDeleteCataloxGcsBackupRun>>>;
153
+ /**
154
+ * Map a **`catalox-backup-manifest.json`** payload into the **`catalox-firestore-export-manifest.json`** shape
155
+ * so `restoreAllFirestoreCollectionsFromGcsManifest` / CLI `import-gcs --restore-all` can consume the same NDJSON objects.
156
+ */
157
+ cataloxGcsBackupManifestToExportManifest(manifest: CataloxGcsBackupManifestV1, gcsRunFolder: string): FirestoreGcsExportManifestV1;
138
158
  /**
139
159
  * For each discovered native catalog: counts in legacy `catalogData/{id}/items` vs flat `catalogData-{id}-items`,
140
160
  * and the resolver layout. Use when the console still shows the **legacy** subcollection `items` under `catalogData/{catalogId}`.
@@ -159,5 +179,9 @@ export declare class Catalox {
159
179
  compareFirestoreCollectionWithGcsNdjson(_context: CataloxContext, input: Omit<CompareFirestoreCollectionWithGcsInput, "firestore">): Promise<CompareFirestoreCollectionWithGcsResult>;
160
180
  /** Run `compareFirestoreCollectionWithGcsNdjson` for every entry in an export manifest. */
161
181
  compareAllFirestoreCollectionsWithGcsManifest(_context: CataloxContext, input: Omit<CompareAllFirestoreCollectionsWithGcsManifestInput, "firestore">): Promise<CompareAllFirestoreCollectionsWithGcsResult>;
182
+ /**
183
+ * Fix {@link CataloxContext} for subsequent calls so embedders omit it on each method (no globals).
184
+ */
185
+ withContext(context: CataloxContext): CataloxBound;
162
186
  }
163
187
  //# sourceMappingURL=catalox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalox.d.ts","sourceRoot":"","sources":["../../../src/catalox/catalox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalox.d.ts","sourceRoot":"","sources":["../../../src/catalox/catalox.ts"],"names":[],"mappings":"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"}
@@ -25,12 +25,15 @@ import { RendererSnippetStore } from "../firebase/renderer-snippet-store.js";
25
25
  import { SnapshotStore } from "../firebase/snapshot-store.js";
26
26
  import { StoreAppBindingStore } from "../firebase/store-app-binding-store.js";
27
27
  import { nativeItemsCollectionId } from "../firebase/catalog-data-paths.js";
28
- import { runBackupData } from "./backup-data.js";
28
+ import { runBackupData, pruneGcsBackupRuns } from "./backup-data.js";
29
29
  import { runRestoreFirestoreBackup, runUndoFirestoreRestore } from "./restore-firestore-backup.js";
30
+ import { runRestoreFirestoreBackupFromGcs, runDeleteCataloxGcsBackupRun } from "./restore-firestore-backup-from-gcs.js";
31
+ import { cataloxGcsBackupManifestToFirestoreExportManifest } from "./catalox-gcs-backup-export-manifest.js";
30
32
  import { migrateNativeCatalogLayout as runMigrateNativeCatalogLayout, } from "../migrations/migrate-native-catalog-layout.js";
31
33
  import { reportNativeCatalogLayoutDiagnostics as runReportNativeCatalogLayoutDiagnostics, } from "./native-catalog-layout-diagnostics.js";
32
34
  import { exportAllFirestoreCollectionsToGcs, exportFirestoreCollectionToGcs, restoreAllFirestoreCollectionsFromGcsManifest, restoreFirestoreCollectionFromGcs, } from "./firestore-gcs-transfer.js";
33
35
  import { compareAllFirestoreCollectionsWithGcsManifest, compareFirestoreCollectionWithGcsNdjson, } from "./firestore-gcs-compare.js";
36
+ import { CataloxBound } from "./catalox-bound.js";
34
37
  export class Catalox {
35
38
  deps;
36
39
  constructor(deps) {
@@ -192,9 +195,13 @@ export class Catalox {
192
195
  }
193
196
  async buildCatalogItemRenderMap(context, catalogId, itemId, options) {
194
197
  const descriptor = await this.getCatalogDescriptor(context, catalogId);
195
- const item = await this.getCatalogItem(context, catalogId, itemId);
196
- if (!item)
198
+ const got = await this.getCatalogItem(context, catalogId, itemId);
199
+ if (got.outcome === "mapping_blocked") {
200
+ throw new CatalogAdapterError({ catalogId, reason: "mapping_validation_failed", issues: got.issues });
201
+ }
202
+ if (got.outcome === "not_found")
197
203
  throw new CatalogNotFoundError({ catalogId, itemId });
204
+ const item = got.item;
198
205
  const sources = this.gatherDescriptorSources(descriptor);
199
206
  const resolvedSources = {};
200
207
  if (options?.resolveSources !== false) {
@@ -373,7 +380,7 @@ export class Catalox {
373
380
  createdAt: r.createdAt,
374
381
  updatedAt: r.updatedAt,
375
382
  }));
376
- return { items };
383
+ return { listOutcome: "ok", items };
377
384
  }
378
385
  const def = await this.deps.definitions.get(catalogId);
379
386
  if (!def || def.type !== "mapped")
@@ -383,7 +390,7 @@ export class Catalox {
383
390
  throw new CatalogAdapterError({ catalogId, reason: "missing_mapping" });
384
391
  const mappingIssues = validateMappingSpec(mapping.mapping);
385
392
  if (mappingIssues.some((i) => i.severity === "error")) {
386
- return { items: [], issues: mappingIssues };
393
+ return { listOutcome: "mapping_blocked", items: [], issues: mappingIssues };
387
394
  }
388
395
  if (def.adapterType === "mongo") {
389
396
  if (!this.deps.mongoAdapter)
@@ -392,7 +399,9 @@ export class Catalox {
392
399
  if (!adapterConfig)
393
400
  throw new CatalogAdapterError({ catalogId, reason: "missing_adapter" });
394
401
  const result = await this.deps.mongoAdapter.listItems(context, catalogId, adapterConfig, { mapping: mapping.mapping, ...(mapping.options ? { options: mapping.options } : {}) }, listQueryOptions);
395
- return result.issues ? { items: result.items, issues: result.issues } : { items: result.items };
402
+ return result.issues?.length
403
+ ? { listOutcome: "ok", items: result.items, issues: result.issues }
404
+ : { listOutcome: "ok", items: result.items };
396
405
  }
397
406
  if (def.adapterType === "api") {
398
407
  if (!this.deps.apiAdapter)
@@ -402,6 +411,7 @@ export class Catalox {
402
411
  throw new CatalogAdapterError({ catalogId, reason: "missing_adapter" });
403
412
  const result = await this.deps.apiAdapter.listItems(context, catalogId, adapterConfig, { responseMapping: mapping.mapping, ...(mapping.options ? { options: mapping.options } : {}) }, listQueryOptions);
404
413
  return {
414
+ listOutcome: "ok",
405
415
  items: result.items,
406
416
  ...(result.nextCursor ? { nextCursor: result.nextCursor } : {}),
407
417
  ...(result.issues ? { issues: result.issues } : {}),
@@ -417,7 +427,7 @@ export class Catalox {
417
427
  if (catalog.sourceMode === "native") {
418
428
  const rec = await this.deps.nativeItems.get(catalogId, itemId);
419
429
  if (!rec)
420
- return null;
430
+ return { outcome: "not_found" };
421
431
  const base = {
422
432
  itemId: rec.itemId,
423
433
  catalogId: rec.catalogId,
@@ -429,15 +439,20 @@ export class Catalox {
429
439
  createdAt: rec.createdAt,
430
440
  updatedAt: rec.updatedAt,
431
441
  };
432
- return this.decorateItem(catalogId, base);
442
+ return { outcome: "found", item: await this.decorateItem(catalogId, base) };
433
443
  }
434
444
  // For mapped catalogs, use list path with filter if adapter supports.
435
445
  const result = await this.listCatalogItems(context, catalogId, {
436
446
  limit: 1,
437
447
  filter: { itemId },
438
448
  });
449
+ if (result.listOutcome === "mapping_blocked") {
450
+ return { outcome: "mapping_blocked", issues: result.issues ?? [] };
451
+ }
439
452
  const first = result.items[0];
440
- return first ? this.decorateItem(catalogId, first) : null;
453
+ if (!first)
454
+ return { outcome: "not_found" };
455
+ return { outcome: "found", item: await this.decorateItem(catalogId, first) };
441
456
  }
442
457
  async validateCatalog(_context, _catalogId) {
443
458
  return { isValid: true, issues: [] };
@@ -1056,6 +1071,35 @@ export class Catalox {
1056
1071
  catalogDataIndex: this.deps.catalogDataIndex,
1057
1072
  }, input);
1058
1073
  }
1074
+ /**
1075
+ * Restore live Firestore from one **`backupData` GCS** run (`metadata/`, `native/`, optional `snapshots/` NDJSON).
1076
+ * Captures pre-restore copies to `{session}__preRestore-*` first; **`undoFirestoreRestore`** works the same as for `restoreFirestoreBackup`.
1077
+ */
1078
+ async restoreFirestoreBackupFromGcs(_context, input) {
1079
+ return runRestoreFirestoreBackupFromGcs({
1080
+ firestoreStore: this.deps.firestoreStore,
1081
+ catalogs: this.deps.catalogs,
1082
+ bindings: this.deps.bindings,
1083
+ nativeItems: this.deps.nativeItems,
1084
+ definitions: this.deps.definitions,
1085
+ catalogDataIndex: this.deps.catalogDataIndex,
1086
+ }, input);
1087
+ }
1088
+ /** Delete oldest GCS Catalox backup **run folders** (children of the base prefix) until `keepLast` newest remain. */
1089
+ async pruneGcsBackupRuns(_context, input) {
1090
+ return pruneGcsBackupRuns(input);
1091
+ }
1092
+ /** Delete every object under one GCS backup run folder (operator cleanup). */
1093
+ async deleteCataloxGcsBackupRun(_context, input) {
1094
+ return runDeleteCataloxGcsBackupRun(input);
1095
+ }
1096
+ /**
1097
+ * Map a **`catalox-backup-manifest.json`** payload into the **`catalox-firestore-export-manifest.json`** shape
1098
+ * so `restoreAllFirestoreCollectionsFromGcsManifest` / CLI `import-gcs --restore-all` can consume the same NDJSON objects.
1099
+ */
1100
+ cataloxGcsBackupManifestToExportManifest(manifest, gcsRunFolder) {
1101
+ return cataloxGcsBackupManifestToFirestoreExportManifest(manifest, gcsRunFolder);
1102
+ }
1059
1103
  /**
1060
1104
  * For each discovered native catalog: counts in legacy `catalogData/{id}/items` vs flat `catalogData-{id}-items`,
1061
1105
  * and the resolver layout. Use when the console still shows the **legacy** subcollection `items` under `catalogData/{catalogId}`.
@@ -1122,6 +1166,12 @@ export class Catalox {
1122
1166
  firestore: this.deps.firestoreStore.firestore,
1123
1167
  });
1124
1168
  }
1169
+ /**
1170
+ * Fix {@link CataloxContext} for subsequent calls so embedders omit it on each method (no globals).
1171
+ */
1172
+ withContext(context) {
1173
+ return new CataloxBound(this, context);
1174
+ }
1125
1175
  }
1126
1176
  // (moved to `src/contracts/bootstrap.ts`)
1127
1177
  //# sourceMappingURL=catalox.js.map