primitive-admin 1.0.52 → 1.0.54
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/README.md +38 -10
- package/dist/bin/primitive.js +6 -0
- package/dist/bin/primitive.js.map +1 -1
- package/dist/src/commands/auth.js +16 -6
- package/dist/src/commands/auth.js.map +1 -1
- package/dist/src/commands/blob-buckets.js +84 -7
- package/dist/src/commands/blob-buckets.js.map +1 -1
- package/dist/src/commands/catalog.js +3 -3
- package/dist/src/commands/catalog.js.map +1 -1
- package/dist/src/commands/collections.js +12 -9
- package/dist/src/commands/collections.js.map +1 -1
- package/dist/src/commands/database-types.js +11 -1
- package/dist/src/commands/database-types.js.map +1 -1
- package/dist/src/commands/databases.js +197 -74
- package/dist/src/commands/databases.js.map +1 -1
- package/dist/src/commands/group-type-configs.js +1 -9
- package/dist/src/commands/group-type-configs.js.map +1 -1
- package/dist/src/commands/groups.js +12 -6
- package/dist/src/commands/groups.js.map +1 -1
- package/dist/src/commands/guides.d.ts +161 -0
- package/dist/src/commands/guides.js +502 -84
- package/dist/src/commands/guides.js.map +1 -1
- package/dist/src/commands/init.js +77 -45
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/integrations.js +2 -2
- package/dist/src/commands/integrations.js.map +1 -1
- package/dist/src/commands/metadata.d.ts +2 -0
- package/dist/src/commands/metadata.js +344 -0
- package/dist/src/commands/metadata.js.map +1 -0
- package/dist/src/commands/prompts.js +2 -2
- package/dist/src/commands/prompts.js.map +1 -1
- package/dist/src/commands/rule-sets.d.ts +1 -0
- package/dist/src/commands/rule-sets.js +25 -3
- package/dist/src/commands/rule-sets.js.map +1 -1
- package/dist/src/commands/scripts.d.ts +2 -0
- package/dist/src/commands/scripts.js +667 -0
- package/dist/src/commands/scripts.js.map +1 -0
- package/dist/src/commands/sync.d.ts +212 -16
- package/dist/src/commands/sync.js +1688 -287
- package/dist/src/commands/sync.js.map +1 -1
- package/dist/src/commands/vars.d.ts +8 -0
- package/dist/src/commands/vars.js +110 -0
- package/dist/src/commands/vars.js.map +1 -0
- package/dist/src/commands/webhooks.js +17 -3
- package/dist/src/commands/webhooks.js.map +1 -1
- package/dist/src/commands/workflows.d.ts +30 -0
- package/dist/src/commands/workflows.js +651 -52
- package/dist/src/commands/workflows.js.map +1 -1
- package/dist/src/lib/api-client.d.ts +123 -19
- package/dist/src/lib/api-client.js +128 -4
- package/dist/src/lib/api-client.js.map +1 -1
- package/dist/src/lib/batch.d.ts +26 -0
- package/dist/src/lib/batch.js +32 -0
- package/dist/src/lib/batch.js.map +1 -0
- package/dist/src/lib/block-layout.d.ts +160 -0
- package/dist/src/lib/block-layout.js +451 -0
- package/dist/src/lib/block-layout.js.map +1 -0
- package/dist/src/lib/codegen-shared/generatedFiles.d.ts +61 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js +127 -0
- package/dist/src/lib/codegen-shared/generatedFiles.js.map +1 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.d.ts +68 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js +168 -0
- package/dist/src/lib/codegen-shared/resolveCodegenSourceDir.js.map +1 -0
- package/dist/src/lib/config-toml.d.ts +10 -0
- package/dist/src/lib/config-toml.js +42 -0
- package/dist/src/lib/config-toml.js.map +1 -0
- package/dist/src/lib/config.d.ts +16 -0
- package/dist/src/lib/config.js +41 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/constants.d.ts +9 -0
- package/dist/src/lib/constants.js +9 -0
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/csv.d.ts +1 -2
- package/dist/src/lib/csv.js +3 -8
- package/dist/src/lib/csv.js.map +1 -1
- package/dist/src/lib/db-codegen/dbGenerator.d.ts +35 -7
- package/dist/src/lib/db-codegen/dbGenerator.js +384 -125
- package/dist/src/lib/db-codegen/dbGenerator.js.map +1 -1
- package/dist/src/lib/db-codegen/dbNaming.d.ts +29 -0
- package/dist/src/lib/db-codegen/dbNaming.js +58 -0
- package/dist/src/lib/db-codegen/dbNaming.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTemplates.d.ts +114 -5
- package/dist/src/lib/db-codegen/dbTemplates.js +163 -16
- package/dist/src/lib/db-codegen/dbTemplates.js.map +1 -1
- package/dist/src/lib/db-codegen/dbTsTypes.d.ts +7 -3
- package/dist/src/lib/db-codegen/dbTsTypes.js +23 -1
- package/dist/src/lib/db-codegen/dbTsTypes.js.map +1 -1
- package/dist/src/lib/generated-allowlist.js +52 -0
- package/dist/src/lib/generated-allowlist.js.map +1 -1
- package/dist/src/lib/init-config.d.ts +13 -0
- package/dist/src/lib/init-config.js +21 -2
- package/dist/src/lib/init-config.js.map +1 -1
- package/dist/src/lib/output.d.ts +42 -5
- package/dist/src/lib/output.js +70 -4
- package/dist/src/lib/output.js.map +1 -1
- package/dist/src/lib/query-operators.d.ts +43 -0
- package/dist/src/lib/query-operators.js +80 -0
- package/dist/src/lib/query-operators.js.map +1 -0
- package/dist/src/lib/template.d.ts +9 -5
- package/dist/src/lib/template.js +58 -45
- package/dist/src/lib/template.js.map +1 -1
- package/dist/src/lib/toml-database-config.d.ts +10 -19
- package/dist/src/lib/toml-database-config.js +28 -59
- package/dist/src/lib/toml-database-config.js.map +1 -1
- package/dist/src/lib/toml-metadata-config.d.ts +147 -0
- package/dist/src/lib/toml-metadata-config.js +463 -0
- package/dist/src/lib/toml-metadata-config.js.map +1 -0
- package/dist/src/lib/toml-native-form.d.ts +46 -0
- package/dist/src/lib/toml-native-form.js +78 -0
- package/dist/src/lib/toml-native-form.js.map +1 -0
- package/dist/src/lib/toml-params-validator.d.ts +34 -0
- package/dist/src/lib/toml-params-validator.js +118 -3
- package/dist/src/lib/toml-params-validator.js.map +1 -1
- package/dist/src/lib/workflow-apply.d.ts +86 -0
- package/dist/src/lib/workflow-apply.js +127 -0
- package/dist/src/lib/workflow-apply.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.d.ts +129 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js +269 -0
- package/dist/src/lib/workflow-codegen/generated-schema-descriptor.js.map +1 -0
- package/dist/src/lib/workflow-codegen/generator.d.ts +74 -0
- package/dist/src/lib/workflow-codegen/generator.js +215 -0
- package/dist/src/lib/workflow-codegen/generator.js.map +1 -0
- package/dist/src/lib/workflow-codegen/naming.d.ts +33 -0
- package/dist/src/lib/workflow-codegen/naming.js +81 -0
- package/dist/src/lib/workflow-codegen/naming.js.map +1 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.d.ts +64 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js +282 -0
- package/dist/src/lib/workflow-codegen/schemaToTs.js.map +1 -0
- package/dist/src/lib/workflow-fragments.js +3 -3
- package/dist/src/lib/workflow-fragments.js.map +1 -1
- package/dist/src/lib/workflow-payload.d.ts +68 -0
- package/dist/src/lib/workflow-payload.js +150 -0
- package/dist/src/lib/workflow-payload.js.map +1 -0
- package/dist/src/lib/workflow-toml-validator.d.ts +1 -1
- package/dist/src/lib/workflow-toml-validator.js +37 -1
- package/dist/src/lib/workflow-toml-validator.js.map +1 -1
- package/dist/src/types/index.d.ts +11 -0
- package/dist/src/validators.d.ts +4 -3
- package/dist/src/validators.js +6 -5
- package/dist/src/validators.js.map +1 -1
- package/package.json +5 -3
|
@@ -13,18 +13,30 @@
|
|
|
13
13
|
* - The banner + fingerprint header pattern and stale-output cleanup.
|
|
14
14
|
*
|
|
15
15
|
* Adds the OPERATIONS half (op-params interfaces + per-op result aliases)
|
|
16
|
-
* that codegen-v2 has no analog for.
|
|
17
|
-
* the
|
|
16
|
+
* that codegen-v2 has no analog for. A result alias is derived from `op.type`
|
|
17
|
+
* and, where the shape is derivable, the op's parsed `definition`: a query op's
|
|
18
|
+
* `projection` (#1439), a mutation op's step kinds (#1438), and a pipeline op's
|
|
19
|
+
* `return` step (#1437). This file resolves those into the small descriptors
|
|
20
|
+
* the templates consume; the templates stay pure string-emitters.
|
|
18
21
|
*/
|
|
19
22
|
import * as path from "path";
|
|
20
|
-
import {
|
|
21
|
-
import * as TOML from "@iarna/toml";
|
|
23
|
+
import { parseConfigToml, stringifyConfigToml } from "../config-toml.js";
|
|
22
24
|
import { loadSchemaFromTomlString } from "js-bao";
|
|
23
25
|
import { parseDatabaseTypeToml } from "../../commands/sync.js";
|
|
26
|
+
import { writeOrCheckGeneratedFiles, } from "../codegen-shared/generatedFiles.js";
|
|
24
27
|
import { fingerprintToml } from "./dbFingerprint.js";
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
28
|
+
import { tsTypeForDbFieldType } from "./dbTsTypes.js";
|
|
29
|
+
import { resolveRecordInterfaceName, opParamsInterfaceName, opResultAliasName, opsFactoryName, opPropertyKey, } from "./dbNaming.js";
|
|
30
|
+
import { renderHeader, renderRecordInterface, renderOpParamsInterface, renderOpResultAlias, renderOpsFactory, RESULT_ALIASES_BLOCK, } from "./dbTemplates.js";
|
|
27
31
|
const GENERATED_FILE_SUFFIX = ".generated.ts";
|
|
32
|
+
/**
|
|
33
|
+
* Op-param types that declare a scalar value (#1488). A param carrying one of
|
|
34
|
+
* these explicit declarations is validated by the runtime as that scalar, so
|
|
35
|
+
* array-element inference must not rewrite it to an array type in the generated
|
|
36
|
+
* interface. Keep in step with the runtime's scalar coercion list
|
|
37
|
+
* (`MODEL_PARAM_SCALAR_TYPES` in `database-operations-controller.ts`).
|
|
38
|
+
*/
|
|
39
|
+
const SCALAR_PARAM_TYPES = new Set(["string", "number", "boolean", "integer"]);
|
|
28
40
|
/**
|
|
29
41
|
* Render the in-memory `.generated.ts` content for a single database-type
|
|
30
42
|
* TOML. Exported so tests can assert on the rendered string directly.
|
|
@@ -35,11 +47,11 @@ export function renderDbTypeFile(input) {
|
|
|
35
47
|
// Parse the raw TOML once for the [type] / [[operations]] data, and route
|
|
36
48
|
// the [models.*] subtree through the shared js-bao loader (same path the
|
|
37
49
|
// server uses to validate the schema).
|
|
38
|
-
const tomlData =
|
|
50
|
+
const tomlData = parseConfigToml(tomlContent);
|
|
39
51
|
const { typeConfig, operations } = parseDatabaseTypeToml(tomlData);
|
|
40
52
|
// 1. Record interfaces (read shape) from [models.*].
|
|
41
53
|
const schemas = tomlData.models
|
|
42
|
-
? loadSchemaFromTomlString(
|
|
54
|
+
? loadSchemaFromTomlString(stringifyConfigToml({ models: tomlData.models }), {
|
|
43
55
|
strict: false,
|
|
44
56
|
})
|
|
45
57
|
: [];
|
|
@@ -51,6 +63,22 @@ export function renderDbTypeFile(input) {
|
|
|
51
63
|
const inferredRequired = inferRequiredRecordFields(operations);
|
|
52
64
|
// model name → resolved record interface name (used by query result aliases).
|
|
53
65
|
const recordInterfaceByModel = {};
|
|
66
|
+
// model name → the field names that appear on its record interface (declared
|
|
67
|
+
// fields + server-stamped fields). Used to guard projection `Pick`
|
|
68
|
+
// against keys that are not members of the interface (#1439).
|
|
69
|
+
const recordFieldsByModel = new Map();
|
|
70
|
+
// model name → declared field name → field type. Feeds the `$in`/`$nin`
|
|
71
|
+
// array-param element-type inference (#1488) below.
|
|
72
|
+
const fieldTypesByModel = new Map();
|
|
73
|
+
for (const schema of schemas) {
|
|
74
|
+
const ftypes = new Map();
|
|
75
|
+
for (const [fname, fopts] of Object.entries(schema.fields)) {
|
|
76
|
+
const t = fopts?.type;
|
|
77
|
+
if (typeof t === "string")
|
|
78
|
+
ftypes.set(fname, t);
|
|
79
|
+
}
|
|
80
|
+
fieldTypesByModel.set(schema.name, ftypes);
|
|
81
|
+
}
|
|
54
82
|
const seenInterfaceNames = new Map(); // interfaceName → modelName
|
|
55
83
|
for (const schema of schemas) {
|
|
56
84
|
const ifaceName = resolveRecordInterfaceName(schema.name, schema.options?.className);
|
|
@@ -62,6 +90,10 @@ export function renderDbTypeFile(input) {
|
|
|
62
90
|
}
|
|
63
91
|
seenInterfaceNames.set(ifaceName, schema.name);
|
|
64
92
|
recordInterfaceByModel[schema.name] = ifaceName;
|
|
93
|
+
const memberNames = new Set(Object.keys(schema.fields));
|
|
94
|
+
for (const stamped of stampedFields)
|
|
95
|
+
memberNames.add(stamped);
|
|
96
|
+
recordFieldsByModel.set(schema.name, memberNames);
|
|
65
97
|
}
|
|
66
98
|
const blocks = [];
|
|
67
99
|
blocks.push(renderHeader(fingerprint));
|
|
@@ -92,26 +124,166 @@ export function renderDbTypeFile(input) {
|
|
|
92
124
|
const sortedOps = [...operations]
|
|
93
125
|
.filter((op) => op && typeof op.name === "string")
|
|
94
126
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
127
|
+
// Descriptors for the typed-ops factory (#1441), collected in the same
|
|
128
|
+
// name-sorted order so the factory's methods are deterministic.
|
|
129
|
+
const factoryOps = [];
|
|
95
130
|
for (const op of sortedOps) {
|
|
96
|
-
const
|
|
131
|
+
const inferredArrays = inferArrayParamElementTypes(op, fieldTypesByModel);
|
|
132
|
+
const params = paramsToFields(op.params, inferredArrays);
|
|
97
133
|
blocks.push(renderOpParamsInterface({
|
|
98
134
|
interfaceName: opParamsInterfaceName(op.name),
|
|
99
135
|
opName: op.name,
|
|
100
136
|
params,
|
|
101
137
|
}));
|
|
138
|
+
factoryOps.push({
|
|
139
|
+
propertyKey: opPropertyKey(op.name),
|
|
140
|
+
opName: op.name,
|
|
141
|
+
paramsInterfaceName: opParamsInterfaceName(op.name),
|
|
142
|
+
resultAliasName: opResultAliasName(op.name),
|
|
143
|
+
hasParams: params.length > 0,
|
|
144
|
+
});
|
|
102
145
|
const recordInterfaceName = op.type === "query" && op.modelName
|
|
103
146
|
? recordInterfaceByModel[op.modelName] ?? null
|
|
104
147
|
: null;
|
|
148
|
+
// Query ops: narrow the record type by the op's static projection (#1439).
|
|
149
|
+
const projection = op.type === "query"
|
|
150
|
+
? classifyProjection(op.definition?.projection, (op.modelName && recordFieldsByModel.get(op.modelName)) ||
|
|
151
|
+
new Set())
|
|
152
|
+
: undefined;
|
|
153
|
+
// Pipeline ops: resolve the `return`-step result shape (#1437).
|
|
154
|
+
const pipelineReturn = op.type === "pipeline"
|
|
155
|
+
? resolvePipelineReturn(op.definition, recordInterfaceByModel, recordFieldsByModel)
|
|
156
|
+
: undefined;
|
|
105
157
|
blocks.push(renderOpResultAlias({
|
|
106
158
|
aliasName: opResultAliasName(op.name),
|
|
107
159
|
opName: op.name,
|
|
108
160
|
opType: op.type,
|
|
109
161
|
recordInterfaceName,
|
|
162
|
+
projection,
|
|
163
|
+
pipelineReturn,
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
// Typed-ops factory (#1441): one method per op pairing `<Op>Params` in with
|
|
167
|
+
// `<Op>Result` out. Omitted entirely for a type with no operations.
|
|
168
|
+
if (factoryOps.length > 0) {
|
|
169
|
+
blocks.push(renderOpsFactory({
|
|
170
|
+
factoryName: opsFactoryName(input.databaseType),
|
|
171
|
+
databaseType: input.databaseType,
|
|
172
|
+
ops: factoryOps,
|
|
110
173
|
}));
|
|
111
174
|
}
|
|
112
175
|
// Single trailing newline; blocks separated by a blank line.
|
|
113
176
|
return blocks.join("\n\n") + "\n";
|
|
114
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* Classify a query op's static `projection` into how it narrows the record type
|
|
180
|
+
* (#1439). Kept private to the generator: the returned `{ kind, fields }` shape
|
|
181
|
+
* is what the template needs, and the field-guard / `id`-folding / sorting live
|
|
182
|
+
* here so the template stays a pure string-emitter.
|
|
183
|
+
*
|
|
184
|
+
* `recordFieldNames` is the set of members on the record interface (declared +
|
|
185
|
+
* stamped). A projected key that is not a member (a nested `"a.b"` path, or a
|
|
186
|
+
* field absent from the schema) makes the whole projection fall back to
|
|
187
|
+
* `Partial<M>` rather than emit an invalid `Pick`. Reused for a pipeline
|
|
188
|
+
* op's returning `query` step (#1437).
|
|
189
|
+
*
|
|
190
|
+
* Rules (projection values are validated server-side to be `1` or `0`, mixing
|
|
191
|
+
* rejected — codegen runs pre-push, so it still guards):
|
|
192
|
+
* - absent / not an object / empty `{}` → `full` (whole record `M`).
|
|
193
|
+
* - all `1` (inclusion), keys all known → `pick` (with `id` folded in,
|
|
194
|
+
* since inclusion always retains
|
|
195
|
+
* `id` at runtime).
|
|
196
|
+
* - all `0` (exclusion), keys all known → `partial`. The DO runtime does
|
|
197
|
+
* not strip excluded fields yet, so
|
|
198
|
+
* an `Omit` would hide fields that
|
|
199
|
+
* are still returned (#1439/Codex-P2).
|
|
200
|
+
* - mixed / dynamic / non-`1|0` / unknown key → `partial` (honest fallback).
|
|
201
|
+
*/
|
|
202
|
+
function classifyProjection(projection, recordFieldNames) {
|
|
203
|
+
if (!projection ||
|
|
204
|
+
typeof projection !== "object" ||
|
|
205
|
+
Array.isArray(projection)) {
|
|
206
|
+
return { kind: "full" };
|
|
207
|
+
}
|
|
208
|
+
const entries = Object.entries(projection);
|
|
209
|
+
if (entries.length === 0)
|
|
210
|
+
return { kind: "full" };
|
|
211
|
+
let allInclude = true;
|
|
212
|
+
let allExclude = true;
|
|
213
|
+
const included = [];
|
|
214
|
+
const excluded = [];
|
|
215
|
+
for (const [field, val] of entries) {
|
|
216
|
+
if (val === 1) {
|
|
217
|
+
included.push(field);
|
|
218
|
+
allExclude = false;
|
|
219
|
+
}
|
|
220
|
+
else if (val === 0) {
|
|
221
|
+
excluded.push(field);
|
|
222
|
+
allInclude = false;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// A dynamic (`$params.x`) or otherwise non-`1|0` value — can't resolve
|
|
226
|
+
// statically. Fall back rather than emit garbage.
|
|
227
|
+
allInclude = false;
|
|
228
|
+
allExclude = false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (allInclude && included.length > 0) {
|
|
232
|
+
if (!included.every((f) => recordFieldNames.has(f)))
|
|
233
|
+
return { kind: "partial" };
|
|
234
|
+
// Inclusion always retains `id` at runtime (the DO unshifts it), so fold it
|
|
235
|
+
// into the union when the model has an `id` field.
|
|
236
|
+
const fields = new Set(included);
|
|
237
|
+
if (recordFieldNames.has("id"))
|
|
238
|
+
fields.add("id");
|
|
239
|
+
return { kind: "pick", fields: [...fields].sort() };
|
|
240
|
+
}
|
|
241
|
+
if (allExclude && excluded.length > 0) {
|
|
242
|
+
// Exclusion projection (e.g. `{ secret: 0 }`). The DO query runtime does
|
|
243
|
+
// NOT actually strip excluded fields today: `JsonQueryTranslator` selects
|
|
244
|
+
// `_data` for excludes and `_handleQuery` merges the full row via
|
|
245
|
+
// `_parseRow`, so the excluded field is still present in the response.
|
|
246
|
+
// Emitting `Omit<M, ...>` would hide fields that ARE returned and break
|
|
247
|
+
// existing TS callers after regeneration, so type these as `Partial<M>`
|
|
248
|
+
// until the runtime filters them (#1439 / Codex-P2).
|
|
249
|
+
return { kind: "partial" };
|
|
250
|
+
}
|
|
251
|
+
return { kind: "partial" };
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Resolve a pipeline op's `return`-step result shape (#1437). The runtime
|
|
255
|
+
* flattens a returning pipeline to the returned step's shape, so codegen types
|
|
256
|
+
* it as that step's result. `return: "all"`, no `return`, or any step the
|
|
257
|
+
* generator can't resolve fall back to `opaque` → the generic `PipelineResult`.
|
|
258
|
+
* Never throws — one odd op must not break codegen for the whole file.
|
|
259
|
+
*/
|
|
260
|
+
function resolvePipelineReturn(definition, recordInterfaceByModel, recordFieldsByModel) {
|
|
261
|
+
if (!definition || typeof definition !== "object")
|
|
262
|
+
return { kind: "opaque" };
|
|
263
|
+
const def = definition;
|
|
264
|
+
const ret = def.return ?? "all";
|
|
265
|
+
if (ret === "all" || typeof ret !== "string")
|
|
266
|
+
return { kind: "opaque" };
|
|
267
|
+
if (!Array.isArray(def.steps))
|
|
268
|
+
return { kind: "opaque" };
|
|
269
|
+
const step = def.steps.find((s) => s && typeof s === "object" && s.name === ret);
|
|
270
|
+
if (!step)
|
|
271
|
+
return { kind: "opaque" };
|
|
272
|
+
if (step.type === "query") {
|
|
273
|
+
const modelName = typeof step.modelName === "string" ? step.modelName : undefined;
|
|
274
|
+
const recordInterfaceName = modelName
|
|
275
|
+
? recordInterfaceByModel[modelName] ?? null
|
|
276
|
+
: null;
|
|
277
|
+
const fieldNames = (modelName && recordFieldsByModel.get(modelName)) || new Set();
|
|
278
|
+
const projection = classifyProjection(step.projection, fieldNames);
|
|
279
|
+
return { kind: "query", recordInterfaceName, projection };
|
|
280
|
+
}
|
|
281
|
+
if (step.type === "count")
|
|
282
|
+
return { kind: "count" };
|
|
283
|
+
if (step.type === "aggregate")
|
|
284
|
+
return { kind: "aggregate" };
|
|
285
|
+
return { kind: "opaque" };
|
|
286
|
+
}
|
|
115
287
|
/**
|
|
116
288
|
* Collect the server-stamped field names from the parsed [type] config:
|
|
117
289
|
* timestamps (`create`/`update` field names) + auto-populated field names
|
|
@@ -136,26 +308,203 @@ function collectStampedFields(typeConfig) {
|
|
|
136
308
|
return [...new Set(names)];
|
|
137
309
|
}
|
|
138
310
|
/**
|
|
139
|
-
* Convert the normalized op `params` map
|
|
140
|
-
*
|
|
141
|
-
* output. A string param's
|
|
142
|
-
* render a string-literal
|
|
311
|
+
* Convert the normalized op `params` map
|
|
312
|
+
* (`{ name: { type, required, enum?, items? } }`) into a sorted list of
|
|
313
|
+
* `ParamField`. Sorted by name for deterministic output. A string param's
|
|
314
|
+
* `enum` (#861) is carried through so the emitter can render a string-literal
|
|
315
|
+
* union.
|
|
316
|
+
*
|
|
317
|
+
* `inferredArrayElements` (#1488, Phase 1) maps a param bound to a `$in`/`$nin`
|
|
318
|
+
* filter operator to its inferred scalar element TS type (or the `"unknown"`
|
|
319
|
+
* sentinel → `unknown[]`). Inference only ever NARROWS a param the emitter
|
|
320
|
+
* would otherwise widen: an explicit `type = "array"` declaration (Phase 2)
|
|
321
|
+
* always wins, and a param absent from the map keeps its declared-type mapping.
|
|
143
322
|
*/
|
|
144
|
-
function paramsToFields(params) {
|
|
323
|
+
function paramsToFields(params, inferredArrayElements) {
|
|
145
324
|
if (!params || typeof params !== "object")
|
|
146
325
|
return [];
|
|
147
326
|
return Object.entries(params)
|
|
148
|
-
.map(([name, def]) =>
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
//
|
|
155
|
-
|
|
156
|
-
|
|
327
|
+
.map(([name, def]) => {
|
|
328
|
+
const rawType = def?.type;
|
|
329
|
+
const declaredType = rawType ?? "object";
|
|
330
|
+
const declaredItems = def?.items;
|
|
331
|
+
let type = declaredType;
|
|
332
|
+
let items = declaredItems;
|
|
333
|
+
// Apply inference only to untyped/`object` params — the declaration is
|
|
334
|
+
// otherwise authoritative (behavior 8). A param explicitly declared as a
|
|
335
|
+
// scalar (`string`/`number`/`boolean`/`integer`) is validated by runtime
|
|
336
|
+
// `execute` against that scalar type; a param declared with a model type
|
|
337
|
+
// is treated as model-typed by the runtime `coerceParam`, which rejects
|
|
338
|
+
// arrays with "must be an object"; and an explicit `array` already has its
|
|
339
|
+
// element type. Rewriting any of those to an inferred array would emit a
|
|
340
|
+
// type the server is guaranteed to reject. Only untyped/`object` params
|
|
341
|
+
// (which the emitter would otherwise widen to `Record<string, unknown>`)
|
|
342
|
+
// are eligible. Since `declaredType = rawType ?? "object"`, `=== "object"`
|
|
343
|
+
// matches both a missing `type` and an explicit `object` declaration.
|
|
344
|
+
const inferred = inferredArrayElements?.get(name);
|
|
345
|
+
if (declaredType === "object" && inferred !== undefined) {
|
|
346
|
+
type = "array";
|
|
347
|
+
// The `"unknown"` sentinel means "array, element unresolved": leave
|
|
348
|
+
// `items` undefined so the emitter renders `unknown[]`.
|
|
349
|
+
items = inferred === "unknown" ? undefined : inferred;
|
|
350
|
+
}
|
|
351
|
+
return {
|
|
352
|
+
name,
|
|
353
|
+
type,
|
|
354
|
+
required: def?.required === true,
|
|
355
|
+
// Allowed-value set for a string param → string-literal union (#861).
|
|
356
|
+
// `normalizeOperationFromToml` preserves `enum` upstream via its
|
|
357
|
+
// `...rest` spread; carry it through here so it reaches the emitter.
|
|
358
|
+
enum: def?.enum,
|
|
359
|
+
items,
|
|
360
|
+
};
|
|
361
|
+
})
|
|
157
362
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
158
363
|
}
|
|
364
|
+
/**
|
|
365
|
+
* Infer the scalar element TS type for op params consumed by a `$in`/`$nin`
|
|
366
|
+
* filter operator (#1488, Phase 1). Codegen-only: a param compared with
|
|
367
|
+
* `$in`/`$nin` against a model field is definitionally an array, so the
|
|
368
|
+
* typed-ops factory (#1441) should emit `<elem>[]` rather than widening an
|
|
369
|
+
* untyped/object param to `Record<string, unknown>` (which `string[]` is not
|
|
370
|
+
* assignable to).
|
|
371
|
+
*
|
|
372
|
+
* Kept a small local helper next to {@link inferRequiredRecordFields} rather
|
|
373
|
+
* than a shared cross-runtime analysis pass (sponsor decision on #1488).
|
|
374
|
+
*
|
|
375
|
+
* Returns a map of param name → element TS type. The `"unknown"` sentinel means
|
|
376
|
+
* "emit `unknown[]`" — used when the compared field is missing from the model
|
|
377
|
+
* schema (or the op has no resolvable model), when the same param is bound to
|
|
378
|
+
* fields of differing element types, or when the param is also used as a scalar
|
|
379
|
+
* elsewhere (conservative widen, mirroring #845's disagreement rule / #1488
|
|
380
|
+
* Fork 4). A param absent from the map is not consumed by any array operator
|
|
381
|
+
* and keeps its declared-type mapping (inference never widens such a param).
|
|
382
|
+
*/
|
|
383
|
+
export function inferArrayParamElementTypes(op, fieldTypesByModel) {
|
|
384
|
+
const result = new Map();
|
|
385
|
+
if (!op || typeof op !== "object")
|
|
386
|
+
return result;
|
|
387
|
+
const def = op.definition;
|
|
388
|
+
if (!def || typeof def !== "object")
|
|
389
|
+
return result;
|
|
390
|
+
// Element TS types seen for each param via `$in`/`$nin` (deduped). A param
|
|
391
|
+
// also seen as a scalar reference is widened to `unknown[]`.
|
|
392
|
+
const arrayElems = new Map();
|
|
393
|
+
const scalarRefs = new Set();
|
|
394
|
+
const addArrayElem = (param, elem) => {
|
|
395
|
+
let s = arrayElems.get(param);
|
|
396
|
+
if (!s) {
|
|
397
|
+
s = new Set();
|
|
398
|
+
arrayElems.set(param, s);
|
|
399
|
+
}
|
|
400
|
+
s.add(elem);
|
|
401
|
+
};
|
|
402
|
+
// A bare `$params.<name>` string → the param name, else null.
|
|
403
|
+
const paramRef = (v) => {
|
|
404
|
+
if (typeof v !== "string")
|
|
405
|
+
return null;
|
|
406
|
+
const m = v.match(/^\$params\.([A-Za-z0-9_]+)$/);
|
|
407
|
+
return m ? m[1] : null;
|
|
408
|
+
};
|
|
409
|
+
// Scalar element TS type for `field` of the current model, or `"unknown"`.
|
|
410
|
+
// A `stringset` field's ELEMENT is a string (#1488, e7) — do NOT reuse
|
|
411
|
+
// `tsTypeForDbFieldType`, which maps `stringset → string[]` and would emit
|
|
412
|
+
// `string[][]` for the param.
|
|
413
|
+
const elemTypeForField = (field, fields) => {
|
|
414
|
+
const ftype = fields?.get(field);
|
|
415
|
+
if (ftype === undefined)
|
|
416
|
+
return "unknown"; // missing field / no schema (e2)
|
|
417
|
+
if (ftype === "stringset")
|
|
418
|
+
return "string";
|
|
419
|
+
const ts = tsTypeForDbFieldType(ftype);
|
|
420
|
+
return ts === "string" || ts === "number" || ts === "boolean"
|
|
421
|
+
? ts
|
|
422
|
+
: "unknown";
|
|
423
|
+
};
|
|
424
|
+
const modelFields = (name) => typeof name === "string" ? fieldTypesByModel.get(name) : undefined;
|
|
425
|
+
// Walk a filter object, resolving field conditions against `fields`.
|
|
426
|
+
const walkFilter = (filter, fields) => {
|
|
427
|
+
if (!filter || typeof filter !== "object" || Array.isArray(filter))
|
|
428
|
+
return;
|
|
429
|
+
for (const [key, value] of Object.entries(filter)) {
|
|
430
|
+
if (key === "$and" || key === "$or") {
|
|
431
|
+
if (Array.isArray(value)) {
|
|
432
|
+
for (const sub of value)
|
|
433
|
+
walkFilter(sub, fields);
|
|
434
|
+
}
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
// `$not` is a logical operator too, but (unlike `$and`/`$or`) it wraps a
|
|
438
|
+
// SINGLE nested condition object rather than an array — recurse into it so
|
|
439
|
+
// an `$in`/`$nin` inside a negated filter still infers its element type.
|
|
440
|
+
// Mirrors the operation grammar walker in
|
|
441
|
+
// `src/app-api/services/walk-operation.ts` (`walkFilterFields`), which
|
|
442
|
+
// treats `$and`/`$or`/`$not` as the recursing logical operators; the two
|
|
443
|
+
// walk the same op-definition filter grammar and must agree.
|
|
444
|
+
if (key === "$not") {
|
|
445
|
+
walkFilter(value, fields);
|
|
446
|
+
continue;
|
|
447
|
+
}
|
|
448
|
+
// Field condition: `key` is a field name; `value` is a scalar (shorthand
|
|
449
|
+
// equality) or an operator map (`{ $in: ..., $eq: ... }`).
|
|
450
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
451
|
+
for (const [operator, opVal] of Object.entries(value)) {
|
|
452
|
+
const p = paramRef(opVal);
|
|
453
|
+
if (!p)
|
|
454
|
+
continue;
|
|
455
|
+
if (operator === "$in" || operator === "$nin") {
|
|
456
|
+
addArrayElem(p, elemTypeForField(key, fields));
|
|
457
|
+
}
|
|
458
|
+
else {
|
|
459
|
+
// A scalar operator ($eq/$ne/$gt/…) binds a scalar param.
|
|
460
|
+
scalarRefs.add(p);
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
else {
|
|
465
|
+
const p = paramRef(value);
|
|
466
|
+
if (p)
|
|
467
|
+
scalarRefs.add(p);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
// Top-level query filter.
|
|
472
|
+
walkFilter(def.filter, modelFields(op.modelName));
|
|
473
|
+
// `applyToQuery` ops hold their matching query under `definition.source`
|
|
474
|
+
// (`source.filter`), which resolves against the op's own model unless the
|
|
475
|
+
// source names a different one. Without this walk, an `$in`/`$nin` against an
|
|
476
|
+
// object/untyped param inside `source.filter` stays widened to
|
|
477
|
+
// `Record<string, unknown>` — the original array-param bug (#1488).
|
|
478
|
+
if (def.source && typeof def.source === "object") {
|
|
479
|
+
walkFilter(def.source.filter, modelFields(def.source.modelName ?? op.modelName));
|
|
480
|
+
}
|
|
481
|
+
// Mutation inner operations — each may carry its own filter + modelName.
|
|
482
|
+
if (Array.isArray(def.operations)) {
|
|
483
|
+
for (const inner of def.operations) {
|
|
484
|
+
if (inner && typeof inner === "object") {
|
|
485
|
+
walkFilter(inner.filter, modelFields(inner.modelName ?? op.modelName));
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
// Pipeline steps — each may carry its own filter + modelName.
|
|
490
|
+
if (Array.isArray(def.steps)) {
|
|
491
|
+
for (const step of def.steps) {
|
|
492
|
+
if (step && typeof step === "object") {
|
|
493
|
+
walkFilter(step.filter, modelFields(step.modelName ?? op.modelName));
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
for (const [param, elems] of arrayElems) {
|
|
498
|
+
if (scalarRefs.has(param) || elems.size !== 1) {
|
|
499
|
+
// Used as both array and scalar, or bound to differing element types.
|
|
500
|
+
result.set(param, "unknown");
|
|
501
|
+
}
|
|
502
|
+
else {
|
|
503
|
+
result.set(param, [...elems][0]);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
return result;
|
|
507
|
+
}
|
|
159
508
|
/**
|
|
160
509
|
* Infer which record fields are always supplied at create time, by reading the
|
|
161
510
|
* `save` operation params (issue #842).
|
|
@@ -257,7 +606,9 @@ export function inferRequiredRecordFields(operations) {
|
|
|
257
606
|
return result;
|
|
258
607
|
}
|
|
259
608
|
/**
|
|
260
|
-
* Run codegen end-to-end across one or more database-type TOML inputs.
|
|
609
|
+
* Run codegen end-to-end across one or more database-type TOML inputs. The
|
|
610
|
+
* disk lifecycle (write / `--check` / stale cleanup) is delegated to the
|
|
611
|
+
* shared `writeOrCheckGeneratedFiles` (shared with `workflows codegen`).
|
|
261
612
|
*/
|
|
262
613
|
export async function generateDbTypes(options) {
|
|
263
614
|
const outAbs = path.resolve(options.outputDir);
|
|
@@ -266,106 +617,14 @@ export async function generateDbTypes(options) {
|
|
|
266
617
|
const filePath = path.join(outAbs, `${input.databaseType}${GENERATED_FILE_SUFFIX}`);
|
|
267
618
|
filesToWrite.set(filePath, renderDbTypeFile(input));
|
|
268
619
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
}
|
|
279
|
-
writtenFiles.sort();
|
|
280
|
-
deletedFiles.sort();
|
|
281
|
-
return { writtenFiles, deletedFiles, mismatches: [] };
|
|
282
|
-
}
|
|
283
|
-
async function runCheck(outAbs, filesToWrite, singleType) {
|
|
284
|
-
const mismatches = [];
|
|
285
|
-
for (const [filePath, expected] of filesToWrite) {
|
|
286
|
-
let actual;
|
|
287
|
-
try {
|
|
288
|
-
actual = await fsp.readFile(filePath, "utf-8");
|
|
289
|
-
}
|
|
290
|
-
catch (err) {
|
|
291
|
-
if (err && err.code === "ENOENT") {
|
|
292
|
-
actual = null;
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
throw err;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
if (actual === null) {
|
|
299
|
-
mismatches.push({ filePath, reason: "missing" });
|
|
300
|
-
}
|
|
301
|
-
else if (actual !== expected) {
|
|
302
|
-
mismatches.push({ filePath, reason: "differs" });
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
// Stale on-disk generated files the generator wouldn't produce also count
|
|
306
|
-
// as a mismatch (so CI catches dropped database types). Skip this when the
|
|
307
|
-
// run was filtered to a single type: `filesToWrite` is then a partial set,
|
|
308
|
-
// so sibling types' files are not "stale" — they just weren't in scope.
|
|
309
|
-
if (!singleType && (await dirExists(outAbs))) {
|
|
310
|
-
const onDisk = await listOwnedGeneratedFiles(outAbs);
|
|
311
|
-
const expectedPaths = new Set(filesToWrite.keys());
|
|
312
|
-
for (const filePath of onDisk) {
|
|
313
|
-
if (!expectedPaths.has(filePath)) {
|
|
314
|
-
mismatches.push({ filePath, reason: "stale" });
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
return {
|
|
319
|
-
writtenFiles: [...filesToWrite.keys()].sort(),
|
|
320
|
-
deletedFiles: [],
|
|
321
|
-
mismatches,
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
async function cleanupGeneratedOutputs(outDir, filesToWrite, singleType) {
|
|
325
|
-
// A single-type filter run only owns its own file(s); the `filesToWrite`
|
|
326
|
-
// set does not represent the full set of generated files. Skip orphan
|
|
327
|
-
// cleanup so sibling types' `*.generated.ts` are not silently destroyed.
|
|
328
|
-
// Full cleanup only happens on the unfiltered "generate all" run.
|
|
329
|
-
if (singleType)
|
|
330
|
-
return [];
|
|
331
|
-
const onDisk = await listOwnedGeneratedFiles(outDir);
|
|
332
|
-
const expectedPaths = new Set(filesToWrite.keys());
|
|
333
|
-
const deleted = [];
|
|
334
|
-
for (const filePath of onDisk) {
|
|
335
|
-
if (!expectedPaths.has(filePath)) {
|
|
336
|
-
await fsp.unlink(filePath);
|
|
337
|
-
deleted.push(filePath);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
return deleted;
|
|
341
|
-
}
|
|
342
|
-
/**
|
|
343
|
-
* List only the files in `outDir` that the generator owns: any file ending
|
|
344
|
-
* in `.generated.ts`. Hand-written files are never touched.
|
|
345
|
-
*/
|
|
346
|
-
async function listOwnedGeneratedFiles(outDir) {
|
|
347
|
-
if (!(await dirExists(outDir)))
|
|
348
|
-
return [];
|
|
349
|
-
const entries = await fsp.readdir(outDir, { withFileTypes: true });
|
|
350
|
-
const owned = [];
|
|
351
|
-
for (const entry of entries) {
|
|
352
|
-
if (!entry.isFile())
|
|
353
|
-
continue;
|
|
354
|
-
if (entry.name.endsWith(GENERATED_FILE_SUFFIX)) {
|
|
355
|
-
owned.push(path.join(outDir, entry.name));
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
return owned;
|
|
359
|
-
}
|
|
360
|
-
async function dirExists(dir) {
|
|
361
|
-
try {
|
|
362
|
-
const stat = await fsp.stat(dir);
|
|
363
|
-
return stat.isDirectory();
|
|
364
|
-
}
|
|
365
|
-
catch (err) {
|
|
366
|
-
if (err && err.code === "ENOENT")
|
|
367
|
-
return false;
|
|
368
|
-
throw err;
|
|
369
|
-
}
|
|
620
|
+
return await writeOrCheckGeneratedFiles({
|
|
621
|
+
outputDir: outAbs,
|
|
622
|
+
filesToWrite,
|
|
623
|
+
check: options.check,
|
|
624
|
+
// A single-type filter run owns only a subset of the generated files, so
|
|
625
|
+
// orphan cleanup / stale detection must be scoped to the filtered file.
|
|
626
|
+
fullOwnership: options.singleType !== true,
|
|
627
|
+
generatedSuffix: GENERATED_FILE_SUFFIX,
|
|
628
|
+
});
|
|
370
629
|
}
|
|
371
630
|
//# sourceMappingURL=dbGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbGenerator.js","sourceRoot":"","sources":["../../../../src/lib/db-codegen/dbGenerator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dbGenerator.js","sourceRoot":"","sources":["../../../../src/lib/db-codegen/dbGenerator.ts"],"names":[],"mappings":"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"}
|