@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.
- package/eslint/package.json +3 -3
- package/firebase-api-manifest/main.js +48 -6
- package/firebase-api-manifest/package.json +3 -3
- package/firestore-query-manifest/main.js +3 -3
- package/firestore-query-manifest/package.json +3 -3
- package/generate-firestore-indexes/main.js +2 -2
- package/generate-firestore-indexes/package.json +2 -2
- package/generate-mcp-manifest/main.js +2 -1
- package/generate-mcp-manifest/package.json +3 -3
- package/generate-route-manifest/package.json +2 -2
- package/index.esm.js +210 -68
- package/lint-cache/package.json +2 -2
- package/manifest-extract/index.esm.js +113 -0
- package/manifest-extract/package.json +10 -10
- package/manifest-extract/src/lib/types.d.ts +21 -0
- package/model-test/package.json +2 -2
- package/package.json +7 -7
- package/route/package.json +8 -8
- package/src/lib/manifest/build-model-decode-command.d.ts +68 -5
- package/src/lib/manifest/types.d.ts +36 -0
- package/test/package.json +10 -10
- package/validate/package.json +3 -3
package/eslint/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dereekb/dbx-cli/eslint",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.6.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"peerDependencies": {
|
|
7
|
-
"@dereekb/dbx-cli": "14.
|
|
8
|
-
"@dereekb/util": "14.
|
|
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.
|
|
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.
|
|
1869
|
-
"@dereekb/util": "14.
|
|
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.
|
|
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.
|
|
9
|
-
"@dereekb/util": "14.
|
|
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.
|
|
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.
|
|
21
|
-
"@dereekb/util": "14.
|
|
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.
|
|
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.
|
|
12
|
-
"@dereekb/util": "14.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
9
|
-
"@dereekb/model": "14.
|
|
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.
|
|
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.
|
|
8
|
+
"@dereekb/dbx-cli": "14.6.0",
|
|
9
9
|
"ts-morph": "^28.0.0"
|
|
10
10
|
}
|
|
11
11
|
}
|