@dereekb/dbx-cli 14.0.0 → 14.0.1

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.
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli/eslint",
3
- "version": "14.0.0",
3
+ "version": "14.0.1",
4
4
  "type": "module",
5
5
  "peerDependencies": {
6
- "@dereekb/dbx-cli": "14.0.0",
7
- "@dereekb/util": "14.0.0",
6
+ "@dereekb/dbx-cli": "14.0.1",
7
+ "@dereekb/util": "14.0.1",
8
8
  "@typescript-eslint/utils": "8.69.0",
9
9
  "typescript": "6.0.3"
10
10
  },
@@ -11,8 +11,8 @@ var compareStrings = (a, b) => a.localeCompare(b);
11
11
 
12
12
  // packages/dbx-cli/src/lib/scan-helpers/emit-generated-ts.ts
13
13
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
14
- import { dirname } from "node:path";
15
- import { format, resolveConfig } from "prettier";
14
+ import { dirname, join, parse } from "node:path";
15
+ import { format } from "oxfmt";
16
16
  // @__NO_SIDE_EFFECTS__
17
17
  function renderGroupedImportLines(imports) {
18
18
  const importsByPackage = /* @__PURE__ */ new Map();
@@ -27,9 +27,36 @@ function renderGroupedImportLines(imports) {
27
27
  return `import { ${sortedNames} } from '${pkg}';`;
28
28
  });
29
29
  }
30
+ var OXFMT_CONFIG_FILENAME = ".oxfmtrc.json";
31
+ var OXFMT_NON_FORMAT_CONFIG_KEYS = ["$schema", "ignorePatterns"];
32
+ function resolveOxfmtConfig(fromFile) {
33
+ const { root } = parse(fromFile);
34
+ let directory = dirname(fromFile);
35
+ let config = {};
36
+ for (; ; ) {
37
+ const candidate = join(directory, OXFMT_CONFIG_FILENAME);
38
+ if (existsSync(candidate)) {
39
+ const parsed = JSON.parse(readFileSync(candidate, "utf8"));
40
+ for (const key of OXFMT_NON_FORMAT_CONFIG_KEYS) {
41
+ delete parsed[key];
42
+ }
43
+ config = parsed;
44
+ break;
45
+ }
46
+ if (directory === root) {
47
+ break;
48
+ }
49
+ directory = dirname(directory);
50
+ }
51
+ return config;
52
+ }
30
53
  async function formatGeneratedTs(source, outputFile) {
31
- const config = await resolveConfig(outputFile);
32
- return format(source, { ...config, filepath: outputFile });
54
+ const config = resolveOxfmtConfig(outputFile);
55
+ const { code, errors } = await format(outputFile, source, config);
56
+ if (errors.length > 0) {
57
+ throw new Error(`formatGeneratedTs(): oxfmt failed to format "${outputFile}": ${errors.map((x) => x.message).join(", ")}`);
58
+ }
59
+ return code;
33
60
  }
34
61
  function writeGeneratedTsFile(input) {
35
62
  const { outputFile, contents } = input;
@@ -111,14 +138,14 @@ function collectImportSpecifierMap(sourceFile) {
111
138
 
112
139
  // packages/dbx-cli/firebase-api-manifest/src/generate-api-manifest/resolve-package.ts
113
140
  import { existsSync as existsSync2, readFileSync as readFileSync3 } from "node:fs";
114
- import { dirname as dirname2, isAbsolute, join, relative, resolve } from "node:path";
141
+ import { dirname as dirname2, isAbsolute, join as join2, relative, resolve } from "node:path";
115
142
  var _pathsCache;
116
143
  function loadTsconfigPaths(workspaceRoot) {
117
144
  let result;
118
145
  if (_pathsCache) {
119
146
  result = _pathsCache;
120
147
  } else {
121
- const tsconfigPath = join(workspaceRoot, "tsconfig.base.json");
148
+ const tsconfigPath = join2(workspaceRoot, "tsconfig.base.json");
122
149
  const raw = readFileSync3(tsconfigPath, "utf8");
123
150
  const cleaned = stripJsonComments(raw);
124
151
  const tsconfig = JSON.parse(cleaned);
@@ -157,8 +184,8 @@ function locatePackageInNodeModules(input) {
157
184
  let current = dirname2(importingFile);
158
185
  let result;
159
186
  while (!result && current && current !== dirname2(current)) {
160
- const candidateRoot = join(current, "node_modules", moduleSpecifier);
161
- const pkgJson = join(candidateRoot, "package.json");
187
+ const candidateRoot = join2(current, "node_modules", moduleSpecifier);
188
+ const pkgJson = join2(candidateRoot, "package.json");
162
189
  if (existsSync2(pkgJson)) {
163
190
  try {
164
191
  const pkg = JSON.parse(readFileSync3(pkgJson, "utf8"));
@@ -176,9 +203,9 @@ function locatePackageForPath(workspaceRoot, startPath) {
176
203
  let current = startPath;
177
204
  let result;
178
205
  while (!result && current && current !== workspaceRoot && current !== dirname2(current)) {
179
- if (existsSync2(join(current, "package.json"))) {
206
+ if (existsSync2(join2(current, "package.json"))) {
180
207
  try {
181
- const pkg = JSON.parse(readFileSync3(join(current, "package.json"), "utf8"));
208
+ const pkg = JSON.parse(readFileSync3(join2(current, "package.json"), "utf8"));
182
209
  if (pkg.name) {
183
210
  result = { packageName: pkg.name, packageRoot: current };
184
211
  }
@@ -198,7 +225,7 @@ function stripJsonComments(text) {
198
225
 
199
226
  // packages/dbx-cli/firebase-api-manifest/src/generate-api-manifest/find-api-files.ts
200
227
  import { readdirSync, readFileSync as readFileSync5, statSync as statSync2 } from "node:fs";
201
- import { join as join3 } from "node:path";
228
+ import { join as join4 } from "node:path";
202
229
 
203
230
  // packages/dbx-cli/manifest-extract/src/lib/extract-crud.ts
204
231
  import { Node as Node2, Project as Project2 } from "ts-morph";
@@ -588,14 +615,14 @@ function identifierName(node) {
588
615
 
589
616
  // packages/dbx-cli/src/lib/scan-helpers/exported-from-package.ts
590
617
  import { existsSync as existsSync3, readFileSync as readFileSync4, statSync } from "node:fs";
591
- import { dirname as dirname3, isAbsolute as isAbsolute2, join as join2, resolve as resolve2 } from "node:path";
618
+ import { dirname as dirname3, isAbsolute as isAbsolute2, join as join3, resolve as resolve2 } from "node:path";
592
619
  function isExportedFromPackage(input) {
593
620
  const { packageRoot, identifier } = input;
594
621
  const indexPath = locateBarrelEntry(packageRoot);
595
622
  return indexPath ? findIdentifierInBarrelChain(indexPath, identifier, /* @__PURE__ */ new Set()) : false;
596
623
  }
597
624
  function locateBarrelEntry(packageRoot) {
598
- const candidates = [join2(packageRoot, "src", "index.ts"), join2(packageRoot, "src", "index.d.ts"), join2(packageRoot, "index.d.ts"), join2(packageRoot, "index.ts")];
625
+ const candidates = [join3(packageRoot, "src", "index.ts"), join3(packageRoot, "src", "index.d.ts"), join3(packageRoot, "index.d.ts"), join3(packageRoot, "index.ts")];
599
626
  return candidates.find((candidate) => existsSync3(candidate));
600
627
  }
601
628
  var EXPORT_DECL_PATTERNS = [/export\s+(?:declare\s+)?const\s+IDENT\b/, /export\s+(?:declare\s+)?function\s+IDENT\b/, /export\s*\{[^}]*\bIDENT\b[^}]*\}/];
@@ -677,11 +704,11 @@ function resolveExistingTsPath(probe) {
677
704
  if (stat.isFile()) {
678
705
  result = probe;
679
706
  } else if (stat.isDirectory()) {
680
- const sourceIndex = join2(probe, "index.ts");
707
+ const sourceIndex = join3(probe, "index.ts");
681
708
  if (existsSync3(sourceIndex)) {
682
709
  result = sourceIndex;
683
710
  } else {
684
- const declarationIndex = join2(probe, "index.d.ts");
711
+ const declarationIndex = join3(probe, "index.d.ts");
685
712
  if (existsSync3(declarationIndex)) {
686
713
  result = declarationIndex;
687
714
  }
@@ -1148,7 +1175,7 @@ function firstParagraph(text) {
1148
1175
 
1149
1176
  // packages/dbx-cli/firebase-api-manifest/src/generate-api-manifest/find-api-files.ts
1150
1177
  function findApiFiles(packageRoot) {
1151
- const libRoot = join3(packageRoot, "src", "lib");
1178
+ const libRoot = join4(packageRoot, "src", "lib");
1152
1179
  const out = [];
1153
1180
  if (safeIsDirectory(libRoot)) {
1154
1181
  const seenClassNames = /* @__PURE__ */ new Set();
@@ -1166,7 +1193,7 @@ function findApiFiles(packageRoot) {
1166
1193
  function* walkApiFiles(dir) {
1167
1194
  for (const entry of readdirSync(dir).sort()) {
1168
1195
  if (entry === "node_modules" || entry === "dist") continue;
1169
- const p = join3(dir, entry);
1196
+ const p = join4(dir, entry);
1170
1197
  const stat = statSync2(p);
1171
1198
  if (stat.isDirectory()) {
1172
1199
  yield* walkApiFiles(p);
@@ -1191,9 +1218,9 @@ function safeIsDirectory(p) {
1191
1218
 
1192
1219
  // packages/dbx-cli/firebase-api-manifest/src/generate-api-manifest/find-model-files.ts
1193
1220
  import { readdirSync as readdirSync2, readFileSync as readFileSync6, statSync as statSync3 } from "node:fs";
1194
- import { join as join4 } from "node:path";
1221
+ import { join as join5 } from "node:path";
1195
1222
  function findModelFiles(packageRoot) {
1196
- const libRoot = join4(packageRoot, "src", "lib");
1223
+ const libRoot = join5(packageRoot, "src", "lib");
1197
1224
  const out = [];
1198
1225
  if (safeIsDirectory2(libRoot)) {
1199
1226
  for (const filePath of walkSourceFiles(libRoot)) {
@@ -1215,7 +1242,7 @@ function hasExtractedArtifact(extraction) {
1215
1242
  function* walkSourceFiles(dir) {
1216
1243
  for (const entry of readdirSync2(dir).sort()) {
1217
1244
  if (entry === "node_modules" || entry === "dist") continue;
1218
- const p = join4(dir, entry);
1245
+ const p = join5(dir, entry);
1219
1246
  const stat = statSync3(p);
1220
1247
  if (stat.isDirectory()) {
1221
1248
  yield* walkSourceFiles(p);
@@ -1723,16 +1750,16 @@ function renderModelField(field, emitConverters) {
1723
1750
  // packages/dbx-cli/firebase-api-manifest/package.json
1724
1751
  var package_default = {
1725
1752
  name: "@dereekb/dbx-cli-firebase-api-manifest",
1726
- version: "14.0.0",
1753
+ version: "14.0.1",
1727
1754
  private: true,
1728
1755
  type: "module",
1729
1756
  devDependencies: {
1730
1757
  "ts-morph": "^28.0.0"
1731
1758
  },
1732
1759
  peerDependencies: {
1733
- "@dereekb/dbx-cli": "14.0.0",
1734
- "@dereekb/util": "14.0.0",
1735
- prettier: "3.9.6"
1760
+ "@dereekb/dbx-cli": "14.0.1",
1761
+ "@dereekb/util": "14.0.1",
1762
+ oxfmt: "^0.66.0"
1736
1763
  }
1737
1764
  };
1738
1765
 
@@ -1826,7 +1853,18 @@ async function main() {
1826
1853
  const modelEntries = flags.emitModels ? assembleModels({ extractions: modelSources }) : [];
1827
1854
  const filteredModelEntries = flags.only ? modelEntries.filter((m) => flags.only?.has(m.modelType)) : modelEntries;
1828
1855
  const enumEntries = flags.emitModels ? collectModelEnums({ extractions: modelSources, models: filteredModelEntries }) : {};
1829
- const formatted = await renderManifest({ outputFile, entries: collected, projectName, namespace, modelEntries: filteredModelEntries, modelNamespace: deriveModelNamespace(flags.project), enumEntries, enumNamespace: deriveEnumNamespace(flags.project), emitConverters: flags.emitModelConverters, generatorVersion: package_default.version });
1856
+ const formatted = await renderManifest({
1857
+ outputFile,
1858
+ entries: collected,
1859
+ projectName,
1860
+ namespace,
1861
+ modelEntries: filteredModelEntries,
1862
+ modelNamespace: deriveModelNamespace(flags.project),
1863
+ enumEntries,
1864
+ enumNamespace: deriveEnumNamespace(flags.project),
1865
+ emitConverters: flags.emitModelConverters,
1866
+ generatorVersion: package_default.version
1867
+ });
1830
1868
  const outcome = writeGeneratedTsFile({ outputFile, contents: formatted });
1831
1869
  console.log(`[${outcome}] ${relative2(WORKSPACE_ROOT, outputFile)}`);
1832
1870
  const groupCount = packageCache.size === 0 ? 0 : new Set(collected.map((c) => c.entry.groupName)).size;
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-firebase-api-manifest",
3
- "version": "14.0.0",
3
+ "version": "14.0.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "devDependencies": {
7
7
  "ts-morph": "^28.0.0"
8
8
  },
9
9
  "peerDependencies": {
10
- "@dereekb/dbx-cli": "14.0.0",
11
- "@dereekb/util": "14.0.0",
12
- "prettier": "3.9.6"
10
+ "@dereekb/dbx-cli": "14.0.1",
11
+ "@dereekb/util": "14.0.1",
12
+ "oxfmt": "^0.66.0"
13
13
  }
14
14
  }
@@ -9,15 +9,15 @@ import { isAbsolute as isAbsolute2, relative as relative2, resolve as resolve3 }
9
9
  // packages/dbx-cli/firestore-query-manifest/package.json
10
10
  var package_default = {
11
11
  name: "@dereekb/dbx-cli-firestore-query-manifest",
12
- version: "14.0.0",
12
+ version: "14.0.1",
13
13
  private: true,
14
14
  type: "module",
15
15
  devDependencies: {
16
16
  eslint: "10.9.1"
17
17
  },
18
18
  peerDependencies: {
19
- "@dereekb/dbx-cli": "14.0.0",
20
- "@dereekb/util": "14.0.0"
19
+ "@dereekb/dbx-cli": "14.0.1",
20
+ "@dereekb/util": "14.0.1"
21
21
  }
22
22
  };
23
23
 
@@ -26,8 +26,8 @@ var compareStrings = (a, b) => a.localeCompare(b);
26
26
 
27
27
  // packages/dbx-cli/src/lib/scan-helpers/emit-generated-ts.ts
28
28
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
29
- import { dirname } from "node:path";
30
- import { format, resolveConfig } from "prettier";
29
+ import { dirname, join, parse } from "node:path";
30
+ import { format } from "oxfmt";
31
31
  // @__NO_SIDE_EFFECTS__
32
32
  function renderGroupedImportLines(imports) {
33
33
  const importsByPackage = /* @__PURE__ */ new Map();
@@ -42,9 +42,36 @@ function renderGroupedImportLines(imports) {
42
42
  return `import { ${sortedNames} } from '${pkg}';`;
43
43
  });
44
44
  }
45
+ var OXFMT_CONFIG_FILENAME = ".oxfmtrc.json";
46
+ var OXFMT_NON_FORMAT_CONFIG_KEYS = ["$schema", "ignorePatterns"];
47
+ function resolveOxfmtConfig(fromFile) {
48
+ const { root } = parse(fromFile);
49
+ let directory = dirname(fromFile);
50
+ let config = {};
51
+ for (; ; ) {
52
+ const candidate = join(directory, OXFMT_CONFIG_FILENAME);
53
+ if (existsSync(candidate)) {
54
+ const parsed = JSON.parse(readFileSync(candidate, "utf8"));
55
+ for (const key of OXFMT_NON_FORMAT_CONFIG_KEYS) {
56
+ delete parsed[key];
57
+ }
58
+ config = parsed;
59
+ break;
60
+ }
61
+ if (directory === root) {
62
+ break;
63
+ }
64
+ directory = dirname(directory);
65
+ }
66
+ return config;
67
+ }
45
68
  async function formatGeneratedTs(source, outputFile) {
46
- const config = await resolveConfig(outputFile);
47
- return format(source, { ...config, filepath: outputFile });
69
+ const config = resolveOxfmtConfig(outputFile);
70
+ const { code, errors } = await format(outputFile, source, config);
71
+ if (errors.length > 0) {
72
+ throw new Error(`formatGeneratedTs(): oxfmt failed to format "${outputFile}": ${errors.map((x) => x.message).join(", ")}`);
73
+ }
74
+ return code;
48
75
  }
49
76
  function writeGeneratedTsFile(input) {
50
77
  const { outputFile, contents } = input;
@@ -299,14 +326,14 @@ function parentPathsForCollection(scan, collection) {
299
326
 
300
327
  // packages/dbx-cli/src/lib/scan-helpers/exported-from-package.ts
301
328
  import { existsSync as existsSync2, readFileSync as readFileSync2, statSync } from "node:fs";
302
- import { dirname as dirname2, isAbsolute, join, resolve } from "node:path";
329
+ import { dirname as dirname2, isAbsolute, join as join2, resolve } from "node:path";
303
330
  function isExportedFromPackage(input) {
304
331
  const { packageRoot, identifier } = input;
305
332
  const indexPath = locateBarrelEntry(packageRoot);
306
333
  return indexPath ? findIdentifierInBarrelChain(indexPath, identifier, /* @__PURE__ */ new Set()) : false;
307
334
  }
308
335
  function locateBarrelEntry(packageRoot) {
309
- const candidates = [join(packageRoot, "src", "index.ts"), join(packageRoot, "src", "index.d.ts"), join(packageRoot, "index.d.ts"), join(packageRoot, "index.ts")];
336
+ const candidates = [join2(packageRoot, "src", "index.ts"), join2(packageRoot, "src", "index.d.ts"), join2(packageRoot, "index.d.ts"), join2(packageRoot, "index.ts")];
310
337
  return candidates.find((candidate) => existsSync2(candidate));
311
338
  }
312
339
  var EXPORT_DECL_PATTERNS = [/export\s+(?:declare\s+)?const\s+IDENT\b/, /export\s+(?:declare\s+)?function\s+IDENT\b/, /export\s*\{[^}]*\bIDENT\b[^}]*\}/];
@@ -388,11 +415,11 @@ function resolveExistingTsPath(probe) {
388
415
  if (stat.isFile()) {
389
416
  result = probe;
390
417
  } else if (stat.isDirectory()) {
391
- const sourceIndex = join(probe, "index.ts");
418
+ const sourceIndex = join2(probe, "index.ts");
392
419
  if (existsSync2(sourceIndex)) {
393
420
  result = sourceIndex;
394
421
  } else {
395
- const declarationIndex = join(probe, "index.d.ts");
422
+ const declarationIndex = join2(probe, "index.d.ts");
396
423
  if (existsSync2(declarationIndex)) {
397
424
  result = declarationIndex;
398
425
  }
@@ -469,7 +496,12 @@ function renderEntry({ entry, bound }) {
469
496
  return ` { ${fields.filter(Boolean).join(", ")} }`;
470
497
  }
471
498
  function renderRules(rules) {
472
- const parts = [`list: ${JSON.stringify(rules.list)}`, `collectionGroup: ${rules.collectionGroup ? "true" : "false"}`, rules.reason ? `reason: ${JSON.stringify(rules.reason)}` : void 0, rules.parentPaths && rules.parentPaths.length > 0 ? `parentPaths: ${JSON.stringify(rules.parentPaths)}` : void 0];
499
+ const parts = [
500
+ `list: ${JSON.stringify(rules.list)}`,
501
+ `collectionGroup: ${rules.collectionGroup ? "true" : "false"}`,
502
+ rules.reason ? `reason: ${JSON.stringify(rules.reason)}` : void 0,
503
+ rules.parentPaths && rules.parentPaths.length > 0 ? `parentPaths: ${JSON.stringify(rules.parentPaths)}` : void 0
504
+ ];
473
505
  return `{ ${parts.filter(Boolean).join(", ")} }`;
474
506
  }
475
507
  function renderParams(params) {
@@ -1532,7 +1564,7 @@ function tryTransitiveResolution(input) {
1532
1564
  const calleeLine = resolved.decl.getStartLineNumber();
1533
1565
  warnings.push({ kind: "unannotated-query-helper", severity: "warning", name: factoryName, callee: calleeName, calleeFilePath, calleeLine, filePath, line: call.getStartLineNumber() });
1534
1566
  }
1535
- const nextVisited = /* @__PURE__ */ new Set([...visited, calleeKey]);
1567
+ const nextVisited = new Set(visited).add(calleeKey);
1536
1568
  walkBodyInto({
1537
1569
  decl: resolved.decl,
1538
1570
  factoryName,
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-firestore-query-manifest",
3
- "version": "14.0.0",
3
+ "version": "14.0.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "devDependencies": {
7
7
  "eslint": "10.9.1"
8
8
  },
9
9
  "peerDependencies": {
10
- "@dereekb/dbx-cli": "14.0.0",
11
- "@dereekb/util": "14.0.0"
10
+ "@dereekb/dbx-cli": "14.0.1",
11
+ "@dereekb/util": "14.0.1"
12
12
  }
13
13
  }
@@ -5,14 +5,14 @@ const require = __createRequire(import.meta.url);
5
5
  // packages/dbx-cli/generate-firestore-indexes/package.json
6
6
  var package_default = {
7
7
  name: "@dereekb/dbx-cli-generate-firestore-indexes",
8
- version: "14.0.0",
8
+ version: "14.0.1",
9
9
  private: true,
10
10
  type: "module",
11
11
  devDependencies: {
12
12
  eslint: "10.9.1"
13
13
  },
14
14
  peerDependencies: {
15
- "@dereekb/dbx-cli": "14.0.0"
15
+ "@dereekb/dbx-cli": "14.0.1"
16
16
  }
17
17
  };
18
18
 
@@ -1298,7 +1298,7 @@ function tryTransitiveResolution(input) {
1298
1298
  const calleeLine = resolved.decl.getStartLineNumber();
1299
1299
  warnings.push({ kind: "unannotated-query-helper", severity: "warning", name: factoryName, callee: calleeName, calleeFilePath, calleeLine, filePath, line: call.getStartLineNumber() });
1300
1300
  }
1301
- const nextVisited = /* @__PURE__ */ new Set([...visited, calleeKey]);
1301
+ const nextVisited = new Set(visited).add(calleeKey);
1302
1302
  walkBodyInto({
1303
1303
  decl: resolved.decl,
1304
1304
  factoryName,
@@ -2278,13 +2278,21 @@ function formatBuildFailure(outcome) {
2278
2278
  }
2279
2279
  function formatWriteSummary(input) {
2280
2280
  const { outputPath, diff, generatedComposites, generatedFieldOverrides } = input;
2281
- const lines = [`generate-firestore-indexes: wrote ${outputPath}`, ` composites: ${generatedComposites} (added ${diff.added.length}, removed ${diff.removed.length}, unchanged ${diff.unchanged.length})`, ` fieldOverrides: ${generatedFieldOverrides} (added ${diff.fieldOverridesAdded.length}, removed ${diff.fieldOverridesRemoved.length}, unchanged ${diff.fieldOverridesUnchanged.length})`];
2281
+ const lines = [
2282
+ `generate-firestore-indexes: wrote ${outputPath}`,
2283
+ ` composites: ${generatedComposites} (added ${diff.added.length}, removed ${diff.removed.length}, unchanged ${diff.unchanged.length})`,
2284
+ ` fieldOverrides: ${generatedFieldOverrides} (added ${diff.fieldOverridesAdded.length}, removed ${diff.fieldOverridesRemoved.length}, unchanged ${diff.fieldOverridesUnchanged.length})`
2285
+ ];
2282
2286
  return appendDiffSection(lines, diff).join("\n");
2283
2287
  }
2284
2288
  function formatCheckSummary(input) {
2285
2289
  const { drift, outputPath, diff, generatedComposites, generatedFieldOverrides } = input;
2286
2290
  const headline = drift ? `generate-firestore-indexes: drift detected against ${outputPath}` : `generate-firestore-indexes: in sync (${outputPath})`;
2287
- const lines = [headline, ` composites: ${generatedComposites} (added ${diff.added.length}, removed ${diff.removed.length}, unchanged ${diff.unchanged.length})`, ` fieldOverrides: ${generatedFieldOverrides} (added ${diff.fieldOverridesAdded.length}, removed ${diff.fieldOverridesRemoved.length}, unchanged ${diff.fieldOverridesUnchanged.length})`];
2291
+ const lines = [
2292
+ headline,
2293
+ ` composites: ${generatedComposites} (added ${diff.added.length}, removed ${diff.removed.length}, unchanged ${diff.unchanged.length})`,
2294
+ ` fieldOverrides: ${generatedFieldOverrides} (added ${diff.fieldOverridesAdded.length}, removed ${diff.fieldOverridesRemoved.length}, unchanged ${diff.fieldOverridesUnchanged.length})`
2295
+ ];
2288
2296
  return appendDiffSection(lines, diff).join("\n");
2289
2297
  }
2290
2298
  function appendDiffSection(lines, diff) {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-generate-firestore-indexes",
3
- "version": "14.0.0",
3
+ "version": "14.0.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "devDependencies": {
7
7
  "eslint": "10.9.1"
8
8
  },
9
9
  "peerDependencies": {
10
- "@dereekb/dbx-cli": "14.0.0"
10
+ "@dereekb/dbx-cli": "14.0.1"
11
11
  }
12
12
  }
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-generate-mcp-manifest",
3
- "version": "14.0.0",
3
+ "version": "14.0.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "peerDependencies": {
7
- "@dereekb/dbx-cli": "14.0.0",
8
- "@dereekb/model": "14.0.0",
7
+ "@dereekb/dbx-cli": "14.0.1",
8
+ "@dereekb/model": "14.0.1",
9
9
  "arktype": "^2.2.0",
10
10
  "jiti": "2.7.0"
11
11
  }
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-generate-route-manifest",
3
- "version": "14.0.0",
3
+ "version": "14.0.1",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "peerDependencies": {
7
- "@dereekb/dbx-cli": "14.0.0",
7
+ "@dereekb/dbx-cli": "14.0.1",
8
8
  "ts-morph": "^28.0.0"
9
9
  }
10
10
  }