@dereekb/dbx-cli 14.5.1 → 14.6.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.
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli/eslint",
3
- "version": "14.5.1",
3
+ "version": "14.6.0",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "peerDependencies": {
7
- "@dereekb/dbx-cli": "14.5.1",
8
- "@dereekb/util": "14.5.1",
7
+ "@dereekb/dbx-cli": "14.6.0",
8
+ "@dereekb/util": "14.6.0",
9
9
  "@typescript-eslint/utils": "8.69.0",
10
10
  "typescript": "6.0.3"
11
11
  },
@@ -728,6 +728,7 @@ var SERVICE_FACTORY_TAG = "dbxModelServiceFactory";
728
728
  var MCP_TOOL_NAME_SEGMENT_TAG = "dbxModelMcpToolNameSegment";
729
729
  var MODEL_TYPE_VALUE_PATTERN = /^[a-z][A-Za-z0-9_$]*$/;
730
730
  var TOOL_NAME_SEGMENT_PATTERN = /^[A-Za-z][A-Za-z0-9_$]*$/;
731
+ var COMPOSITE_KEY_MODEL_NAME_PATTERN = /^[A-Za-z][A-Za-z0-9_$]*$/;
731
732
  var IDENTITY_FN = "firestoreModelIdentity";
732
733
  var IDENTITY_TYPE = "FirestoreModelIdentity";
733
734
  var ROOT_IDENTITY_TYPE = "RootFirestoreModelIdentity";
@@ -844,6 +845,7 @@ function buildInterface(decl) {
844
845
  const dbxModelRead = readDbxModelReadTag(jsDocs);
845
846
  const dbxModelServerOnly = jsDocsHaveTag(jsDocs, "dbxModelServerOnly");
846
847
  const mcpToolNameSegment = readMcpToolNameSegmentTag(jsDocs);
848
+ const compositeKey = readDbxModelCompositeKeyTag(jsDocs);
847
849
  const extendsNames = decl.getExtends().map(resolveExtendsName);
848
850
  const props = [];
849
851
  for (const prop of decl.getProperties()) {
@@ -869,7 +871,8 @@ function buildInterface(decl) {
869
871
  props,
870
872
  ...dbxModelRead === void 0 ? {} : { dbxModelRead },
871
873
  ...dbxModelServerOnly ? { dbxModelServerOnly: true } : {},
872
- ...mcpToolNameSegment === void 0 ? {} : { mcpToolNameSegment }
874
+ ...mcpToolNameSegment === void 0 ? {} : { mcpToolNameSegment },
875
+ ...compositeKey === void 0 ? {} : { compositeKey }
873
876
  };
874
877
  }
875
878
  function readMcpToolNameSegmentTag(jsDocs) {
@@ -904,6 +907,43 @@ function readDbxModelReadTag(jsDocs) {
904
907
  }
905
908
  return result;
906
909
  }
910
+ function readDbxModelCompositeKeyTag(jsDocs) {
911
+ let result;
912
+ for (const doc of jsDocs) {
913
+ for (const tag of doc.getTags()) {
914
+ if (tag.getTagName() !== "dbxModelCompositeKey") continue;
915
+ if (result !== void 0) continue;
916
+ result = parseCompositeKeyTagValue(tag.getCommentText() ?? "");
917
+ }
918
+ }
919
+ return result;
920
+ }
921
+ function parseCompositeKeyTagValue(raw) {
922
+ let from;
923
+ let encoding;
924
+ for (const token of raw.trim().split(/\s+/)) {
925
+ const eq = token.indexOf("=");
926
+ if (eq <= 0) continue;
927
+ const key = token.slice(0, eq);
928
+ const value = token.slice(eq + 1);
929
+ if (key === "from") {
930
+ from = parseCompositeKeyFromValue(value);
931
+ } else if (key === "encoding" && (value === "one-way" || value === "two-way")) {
932
+ encoding = value;
933
+ }
934
+ }
935
+ return from !== void 0 && encoding !== void 0 ? { from, encoding } : void 0;
936
+ }
937
+ function parseCompositeKeyFromValue(value) {
938
+ let result;
939
+ if (value === "*") {
940
+ result = "*";
941
+ } else {
942
+ const names = value.split(",").map((x) => x.trim()).filter((x) => COMPOSITE_KEY_MODEL_NAME_PATTERN.test(x));
943
+ result = names.length > 0 ? names : void 0;
944
+ }
945
+ return result;
946
+ }
907
947
  function readServiceFactories(sourceFile) {
908
948
  const out = [];
909
949
  for (const statement of sourceFile.getVariableStatements()) {
@@ -1541,7 +1581,8 @@ function buildManifestEntry(input) {
1541
1581
  ...iface.mcpToolNameSegment ? { mcpToolNameSegment: iface.mcpToolNameSegment } : {},
1542
1582
  ...iface.dbxModelRead ? { read: iface.dbxModelRead } : {},
1543
1583
  ...iface.dbxModelServerOnly ? { serverOnly: true } : {},
1544
- ...serviceFactory ? { serviceFactory } : {}
1584
+ ...serviceFactory ? { serviceFactory } : {},
1585
+ ...iface.compositeKey ? { compositeKey: iface.compositeKey } : {}
1545
1586
  };
1546
1587
  }
1547
1588
  function resolveSingleItemDocumentId(single, registries) {
@@ -1809,7 +1850,8 @@ function renderModelEntry(entry, emitConverters) {
1809
1850
  entry.mcpToolNameSegment ? `mcpToolNameSegment: ${JSON.stringify(entry.mcpToolNameSegment)}` : void 0,
1810
1851
  entry.read ? `read: ${JSON.stringify(entry.read)}` : void 0,
1811
1852
  entry.serverOnly ? "serverOnly: true" : void 0,
1812
- entry.serviceFactory ? `serviceFactory: { exportName: ${JSON.stringify(entry.serviceFactory.exportName)}, sourceFile: ${JSON.stringify(entry.serviceFactory.sourceFile)} }` : void 0
1853
+ entry.serviceFactory ? `serviceFactory: { exportName: ${JSON.stringify(entry.serviceFactory.exportName)}, sourceFile: ${JSON.stringify(entry.serviceFactory.sourceFile)} }` : void 0,
1854
+ entry.compositeKey ? `compositeKey: { from: ${JSON.stringify(entry.compositeKey.from)}, encoding: ${JSON.stringify(entry.compositeKey.encoding)} }` : void 0
1813
1855
  ];
1814
1856
  return ` { ${fields.filter(Boolean).join(", ")} }`;
1815
1857
  }
@@ -1860,13 +1902,13 @@ function renderModelField(field, emitConverters) {
1860
1902
  // packages/dbx-cli/firebase-api-manifest/package.json
1861
1903
  var package_default = {
1862
1904
  name: "@dereekb/dbx-cli-firebase-api-manifest",
1863
- version: "14.5.1",
1905
+ version: "14.6.0",
1864
1906
  sideEffects: false,
1865
1907
  private: true,
1866
1908
  type: "module",
1867
1909
  peerDependencies: {
1868
- "@dereekb/dbx-cli": "14.5.1",
1869
- "@dereekb/util": "14.5.1",
1910
+ "@dereekb/dbx-cli": "14.6.0",
1911
+ "@dereekb/util": "14.6.0",
1870
1912
  oxfmt: "^0.66.0",
1871
1913
  "ts-morph": "^28.0.0"
1872
1914
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-firebase-api-manifest",
3
- "version": "14.5.1",
3
+ "version": "14.6.0",
4
4
  "sideEffects": false,
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "peerDependencies": {
8
- "@dereekb/dbx-cli": "14.5.1",
9
- "@dereekb/util": "14.5.1",
8
+ "@dereekb/dbx-cli": "14.6.0",
9
+ "@dereekb/util": "14.6.0",
10
10
  "oxfmt": "^0.66.0",
11
11
  "ts-morph": "^28.0.0"
12
12
  }
@@ -9,7 +9,7 @@ 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.5.1",
12
+ version: "14.6.0",
13
13
  sideEffects: false,
14
14
  private: true,
15
15
  type: "module",
@@ -17,8 +17,8 @@ var package_default = {
17
17
  eslint: "10.9.1"
18
18
  },
19
19
  peerDependencies: {
20
- "@dereekb/dbx-cli": "14.5.1",
21
- "@dereekb/util": "14.5.1"
20
+ "@dereekb/dbx-cli": "14.6.0",
21
+ "@dereekb/util": "14.6.0"
22
22
  }
23
23
  };
24
24
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-firestore-query-manifest",
3
- "version": "14.5.1",
3
+ "version": "14.6.0",
4
4
  "sideEffects": false,
5
5
  "private": true,
6
6
  "type": "module",
@@ -8,7 +8,7 @@
8
8
  "eslint": "10.9.1"
9
9
  },
10
10
  "peerDependencies": {
11
- "@dereekb/dbx-cli": "14.5.1",
12
- "@dereekb/util": "14.5.1"
11
+ "@dereekb/dbx-cli": "14.6.0",
12
+ "@dereekb/util": "14.6.0"
13
13
  }
14
14
  }
@@ -5,7 +5,7 @@ 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.5.1",
8
+ version: "14.6.0",
9
9
  sideEffects: false,
10
10
  private: true,
11
11
  type: "module",
@@ -13,7 +13,7 @@ var package_default = {
13
13
  eslint: "10.9.1"
14
14
  },
15
15
  peerDependencies: {
16
- "@dereekb/dbx-cli": "14.5.1"
16
+ "@dereekb/dbx-cli": "14.6.0"
17
17
  }
18
18
  };
19
19
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-generate-firestore-indexes",
3
- "version": "14.5.1",
3
+ "version": "14.6.0",
4
4
  "sideEffects": false,
5
5
  "private": true,
6
6
  "type": "module",
@@ -8,6 +8,6 @@
8
8
  "eslint": "10.9.1"
9
9
  },
10
10
  "peerDependencies": {
11
- "@dereekb/dbx-cli": "14.5.1"
11
+ "@dereekb/dbx-cli": "14.6.0"
12
12
  }
13
13
  }
@@ -1138,7 +1138,8 @@ function projectModelEntry(entry) {
1138
1138
  ...entry.mcpToolNameSegment == null ? {} : { mcpToolNameSegment: entry.mcpToolNameSegment },
1139
1139
  ...entry.read == null ? {} : { read: entry.read },
1140
1140
  ...entry.serverOnly == null ? {} : { serverOnly: entry.serverOnly },
1141
- ...entry.serviceFactory == null ? {} : { serviceFactory: entry.serviceFactory }
1141
+ ...entry.serviceFactory == null ? {} : { serviceFactory: entry.serviceFactory },
1142
+ ...entry.compositeKey == null ? {} : { compositeKey: entry.compositeKey }
1142
1143
  };
1143
1144
  return projected;
1144
1145
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-generate-mcp-manifest",
3
- "version": "14.5.1",
3
+ "version": "14.6.0",
4
4
  "sideEffects": false,
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "peerDependencies": {
8
- "@dereekb/dbx-cli": "14.5.1",
9
- "@dereekb/model": "14.5.1",
8
+ "@dereekb/dbx-cli": "14.6.0",
9
+ "@dereekb/model": "14.6.0",
10
10
  "arktype": "^2.2.0",
11
11
  "jiti": "2.7.0"
12
12
  }
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@dereekb/dbx-cli-generate-route-manifest",
3
- "version": "14.5.1",
3
+ "version": "14.6.0",
4
4
  "sideEffects": false,
5
5
  "private": true,
6
6
  "type": "module",
7
7
  "peerDependencies": {
8
- "@dereekb/dbx-cli": "14.5.1",
8
+ "@dereekb/dbx-cli": "14.6.0",
9
9
  "ts-morph": "^28.0.0"
10
10
  }
11
11
  }