@prisma-next/adapter-sqlite 0.5.0-dev.6 → 0.5.0-dev.61

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 (45) hide show
  1. package/README.md +3 -3
  2. package/dist/{adapter-lwcslPF8.mjs → adapter-BUe-FzTA.mjs} +53 -60
  3. package/dist/adapter-BUe-FzTA.mjs.map +1 -0
  4. package/dist/{adapter-BG7_o_3h.d.mts → adapter-NSvNNHZP.d.mts} +9 -5
  5. package/dist/adapter-NSvNNHZP.d.mts.map +1 -0
  6. package/dist/adapter.d.mts +1 -2
  7. package/dist/adapter.mjs +1 -2
  8. package/dist/codec-types.d.mts +2 -40
  9. package/dist/codec-types.mjs +1 -3
  10. package/dist/column-types.d.mts +1 -5
  11. package/dist/column-types.d.mts.map +1 -1
  12. package/dist/column-types.mjs +2 -6
  13. package/dist/column-types.mjs.map +1 -1
  14. package/dist/control.d.mts +35 -3
  15. package/dist/control.d.mts.map +1 -1
  16. package/dist/control.mjs +415 -8
  17. package/dist/control.mjs.map +1 -1
  18. package/dist/{descriptor-meta-Bg-c1LmL.mjs → descriptor-meta-DYT9Gt_F.mjs} +1 -1
  19. package/dist/{descriptor-meta-Bg-c1LmL.mjs.map → descriptor-meta-DYT9Gt_F.mjs.map} +1 -1
  20. package/dist/runtime.d.mts +2 -3
  21. package/dist/runtime.d.mts.map +1 -1
  22. package/dist/runtime.mjs +19 -11
  23. package/dist/runtime.mjs.map +1 -1
  24. package/dist/{types-gAqc4ucF.d.mts → types-BFRXGAgd.d.mts} +1 -1
  25. package/dist/{types-gAqc4ucF.d.mts.map → types-BFRXGAgd.d.mts.map} +1 -1
  26. package/dist/types.d.mts +1 -1
  27. package/package.json +20 -16
  28. package/src/core/adapter.ts +87 -71
  29. package/src/core/column-types.ts +1 -7
  30. package/src/core/control-adapter.ts +279 -15
  31. package/src/core/control-mutation-defaults.ts +358 -0
  32. package/src/core/runtime-adapter.ts +19 -12
  33. package/src/exports/codec-types.ts +2 -6
  34. package/src/exports/column-types.ts +0 -1
  35. package/src/exports/control.ts +45 -1
  36. package/dist/adapter-BG7_o_3h.d.mts.map +0 -1
  37. package/dist/adapter-lwcslPF8.mjs.map +0 -1
  38. package/dist/codec-ids-o_Z8i4nt.mjs +0 -15
  39. package/dist/codec-ids-o_Z8i4nt.mjs.map +0 -1
  40. package/dist/codec-types.d.mts.map +0 -1
  41. package/dist/codecs-Bhz0W5Xm.mjs +0 -87
  42. package/dist/codecs-Bhz0W5Xm.mjs.map +0 -1
  43. package/src/core/codec-ids.ts +0 -14
  44. package/src/core/codecs.ts +0 -108
  45. package/src/core/sql-utils.ts +0 -35
package/dist/control.mjs CHANGED
@@ -1,17 +1,424 @@
1
- import { t as sqliteAdapterDescriptorMeta } from "./descriptor-meta-Bg-c1LmL.mjs";
1
+ import { n as renderLoweredSql } from "./adapter-BUe-FzTA.mjs";
2
+ import { t as sqliteAdapterDescriptorMeta } from "./descriptor-meta-DYT9Gt_F.mjs";
3
+ import { SqlEscapeError, escapeLiteral, quoteIdentifier } from "@prisma-next/target-sqlite/sql-utils";
4
+ import { SQLITE_BIGINT_CODEC_ID, SQLITE_BLOB_CODEC_ID, SQLITE_DATETIME_CODEC_ID, SQLITE_INTEGER_CODEC_ID, SQLITE_JSON_CODEC_ID, SQLITE_REAL_CODEC_ID, SQLITE_TEXT_CODEC_ID } from "@prisma-next/target-sqlite/codec-ids";
5
+ import { parseContractMarkerRow } from "@prisma-next/family-sql/verify";
6
+ import { parseSqliteDefault, parseSqliteDefault as parseSqliteDefault$1 } from "@prisma-next/target-sqlite/default-normalizer";
7
+ import { normalizeSqliteNativeType, normalizeSqliteNativeType as normalizeSqliteNativeType$1 } from "@prisma-next/target-sqlite/native-type-normalizer";
8
+ import { ifDefined } from "@prisma-next/utils/defined";
9
+ import { timestampNowControlDescriptor } from "@prisma-next/family-sql/control";
10
+ import { builtinGeneratorRegistryMetadata, resolveBuiltinGeneratedColumnDescriptor } from "@prisma-next/ids";
2
11
 
3
12
  //#region src/core/control-adapter.ts
4
- const sqliteControlAdapterDescriptor = {
5
- ...sqliteAdapterDescriptorMeta,
6
- create(_stack) {
13
+ var SqliteControlAdapter = class {
14
+ familyId = "sql";
15
+ targetId = "sqlite";
16
+ normalizeDefault = parseSqliteDefault$1;
17
+ normalizeNativeType = normalizeSqliteNativeType$1;
18
+ /**
19
+ * Lower a SQL query AST into a SQLite-flavored `{ sql, params }` payload.
20
+ *
21
+ * Delegates to the shared `renderLoweredSql` renderer so the control adapter
22
+ * emits byte-identical SQL to `SqliteAdapterImpl.lower()` for the same AST
23
+ * and contract. Used at migration plan/emit time (e.g. by `dataTransform`)
24
+ * without instantiating the runtime adapter.
25
+ */
26
+ lower(ast, context) {
27
+ return renderLoweredSql(ast, context.contract);
28
+ }
29
+ /**
30
+ * Reads the contract marker from `_prisma_marker`. Probes `sqlite_master`
31
+ * first so a fresh database (no marker table) returns `null` instead of a
32
+ * "no such table" error.
33
+ */
34
+ async readMarker(driver) {
35
+ if ((await driver.query(`SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?`, ["_prisma_marker"])).rows.length === 0) return null;
36
+ const row = (await driver.query(`SELECT
37
+ core_hash,
38
+ profile_hash,
39
+ contract_json,
40
+ canonical_version,
41
+ updated_at,
42
+ app_tag,
43
+ meta,
44
+ invariants
45
+ FROM _prisma_marker
46
+ WHERE id = ?`, [1])).rows[0];
47
+ if (!row) return null;
48
+ const invariants = typeof row.invariants === "string" ? JSON.parse(row.invariants) : row.invariants;
49
+ return parseContractMarkerRow({
50
+ ...row,
51
+ invariants
52
+ });
53
+ }
54
+ async introspect(driver, _contract) {
55
+ const tablesResult = await driver.query(`SELECT name FROM sqlite_master
56
+ WHERE type = 'table'
57
+ AND name NOT LIKE 'sqlite_%'
58
+ AND name NOT IN ('_prisma_marker', '_prisma_ledger')
59
+ ORDER BY name`);
60
+ const tables = {};
61
+ for (const tableRow of tablesResult.rows) {
62
+ const tableName = tableRow.name;
63
+ const columnsResult = await driver.query(`PRAGMA table_info("${escapePragmaArg(tableName)}")`);
64
+ const fkResult = await driver.query(`PRAGMA foreign_key_list("${escapePragmaArg(tableName)}")`);
65
+ const indexListResult = await driver.query(`PRAGMA index_list("${escapePragmaArg(tableName)}")`);
66
+ const columns = {};
67
+ const pkColumns = [];
68
+ for (const col of columnsResult.rows) {
69
+ columns[col.name] = {
70
+ name: col.name,
71
+ nativeType: col.type.toLowerCase(),
72
+ nullable: col.notnull === 0 && col.pk === 0,
73
+ ...ifDefined("default", col.dflt_value ?? void 0)
74
+ };
75
+ if (col.pk > 0) pkColumns.push({
76
+ name: col.name,
77
+ pk: col.pk
78
+ });
79
+ }
80
+ pkColumns.sort((a, b) => a.pk - b.pk);
81
+ const primaryKey = pkColumns.length > 0 ? { columns: pkColumns.map((c) => c.name) } : void 0;
82
+ const fkMap = /* @__PURE__ */ new Map();
83
+ for (const fk of fkResult.rows) {
84
+ const existing = fkMap.get(fk.id);
85
+ if (existing) {
86
+ existing.columns.push(fk.from);
87
+ existing.referencedColumns.push(fk.to);
88
+ } else fkMap.set(fk.id, {
89
+ columns: [fk.from],
90
+ referencedTable: fk.table,
91
+ referencedColumns: [fk.to],
92
+ onDelete: fk.on_delete,
93
+ onUpdate: fk.on_update
94
+ });
95
+ }
96
+ const foreignKeys = Array.from(fkMap.values()).map((fk) => ({
97
+ columns: Object.freeze([...fk.columns]),
98
+ referencedTable: fk.referencedTable,
99
+ referencedColumns: Object.freeze([...fk.referencedColumns]),
100
+ ...ifDefined("onDelete", mapSqliteReferentialAction(fk.onDelete)),
101
+ ...ifDefined("onUpdate", mapSqliteReferentialAction(fk.onUpdate))
102
+ }));
103
+ const uniques = [];
104
+ const indexes = [];
105
+ for (const idx of indexListResult.rows) {
106
+ const idxColumns = (await driver.query(`PRAGMA index_info("${escapePragmaArg(idx.name)}")`)).rows.sort((a, b) => a.seqno - b.seqno).map((r) => r.name);
107
+ if (idx.origin === "u") uniques.push({
108
+ columns: Object.freeze([...idxColumns]),
109
+ name: idx.name
110
+ });
111
+ else if (idx.origin === "c") indexes.push({
112
+ columns: Object.freeze([...idxColumns]),
113
+ name: idx.name,
114
+ unique: idx.unique === 1
115
+ });
116
+ }
117
+ tables[tableName] = {
118
+ name: tableName,
119
+ columns,
120
+ ...ifDefined("primaryKey", primaryKey),
121
+ foreignKeys,
122
+ uniques,
123
+ indexes
124
+ };
125
+ }
7
126
  return {
8
- familyId: "sql",
9
- targetId: "sqlite"
127
+ tables,
128
+ dependencies: []
10
129
  };
11
130
  }
12
131
  };
13
- var control_adapter_default = sqliteControlAdapterDescriptor;
132
+ function escapePragmaArg(name) {
133
+ return name.replace(/"/g, "\"\"");
134
+ }
135
+ const SQLITE_REFERENTIAL_ACTION_MAP = {
136
+ "NO ACTION": "noAction",
137
+ RESTRICT: "restrict",
138
+ CASCADE: "cascade",
139
+ "SET NULL": "setNull",
140
+ "SET DEFAULT": "setDefault"
141
+ };
142
+ function mapSqliteReferentialAction(rule) {
143
+ const mapped = SQLITE_REFERENTIAL_ACTION_MAP[rule.toUpperCase()];
144
+ if (mapped === void 0) throw new Error(`Unknown SQLite referential action rule: "${rule}". Expected one of: NO ACTION, RESTRICT, CASCADE, SET NULL, SET DEFAULT.`);
145
+ if (mapped === "noAction") return void 0;
146
+ return mapped;
147
+ }
148
+
149
+ //#endregion
150
+ //#region src/core/control-mutation-defaults.ts
151
+ function invalidArgumentDiagnostic(input) {
152
+ return {
153
+ ok: false,
154
+ diagnostic: {
155
+ code: "PSL_INVALID_DEFAULT_FUNCTION_ARGUMENT",
156
+ message: input.message,
157
+ sourceId: input.context.sourceId,
158
+ span: input.span
159
+ }
160
+ };
161
+ }
162
+ function executionGenerator(id, params) {
163
+ return {
164
+ ok: true,
165
+ value: {
166
+ kind: "execution",
167
+ generated: {
168
+ kind: "generator",
169
+ id,
170
+ ...params ? { params } : {}
171
+ }
172
+ }
173
+ };
174
+ }
175
+ function expectNoArgs(input) {
176
+ if (input.call.args.length === 0) return;
177
+ return invalidArgumentDiagnostic({
178
+ context: input.context,
179
+ span: input.call.span,
180
+ message: `Default function "${input.call.name}" does not accept arguments. Use ${input.usage}.`
181
+ });
182
+ }
183
+ function parseIntegerArgument(raw) {
184
+ const trimmed = raw.trim();
185
+ if (!/^-?\d+$/.test(trimmed)) return;
186
+ const value = Number(trimmed);
187
+ if (!Number.isInteger(value)) return;
188
+ return value;
189
+ }
190
+ function parseStringLiteral(raw) {
191
+ const match = raw.trim().match(/^(['"])(.*)\1$/s);
192
+ if (!match) return;
193
+ return match[2] ?? "";
194
+ }
195
+ function lowerAutoincrement(input) {
196
+ const maybeNoArgs = expectNoArgs({
197
+ call: input.call,
198
+ context: input.context,
199
+ usage: "`autoincrement()`"
200
+ });
201
+ if (maybeNoArgs) return maybeNoArgs;
202
+ return {
203
+ ok: true,
204
+ value: {
205
+ kind: "storage",
206
+ defaultValue: {
207
+ kind: "function",
208
+ expression: "autoincrement()"
209
+ }
210
+ }
211
+ };
212
+ }
213
+ function lowerNow(input) {
214
+ const maybeNoArgs = expectNoArgs({
215
+ call: input.call,
216
+ context: input.context,
217
+ usage: "`now()`"
218
+ });
219
+ if (maybeNoArgs) return maybeNoArgs;
220
+ return {
221
+ ok: true,
222
+ value: {
223
+ kind: "storage",
224
+ defaultValue: {
225
+ kind: "function",
226
+ expression: "now()"
227
+ }
228
+ }
229
+ };
230
+ }
231
+ function lowerUuid(input) {
232
+ if (input.call.args.length === 0) return executionGenerator("uuidv4");
233
+ if (input.call.args.length !== 1) return invalidArgumentDiagnostic({
234
+ context: input.context,
235
+ span: input.call.span,
236
+ message: "Default function \"uuid\" accepts at most one version argument: `uuid()`, `uuid(4)`, or `uuid(7)`."
237
+ });
238
+ const version = parseIntegerArgument(input.call.args[0]?.raw ?? "");
239
+ if (version === 4) return executionGenerator("uuidv4");
240
+ if (version === 7) return executionGenerator("uuidv7");
241
+ return invalidArgumentDiagnostic({
242
+ context: input.context,
243
+ span: input.call.args[0]?.span ?? input.call.span,
244
+ message: "Default function \"uuid\" supports only `uuid()`, `uuid(4)`, or `uuid(7)` in SQL PSL provider v1."
245
+ });
246
+ }
247
+ function lowerCuid(input) {
248
+ if (input.call.args.length === 0) return {
249
+ ok: false,
250
+ diagnostic: {
251
+ code: "PSL_UNKNOWN_DEFAULT_FUNCTION",
252
+ message: "Default function \"cuid()\" is not supported in SQL PSL provider v1. Use `cuid(2)` instead.",
253
+ sourceId: input.context.sourceId,
254
+ span: input.call.span
255
+ }
256
+ };
257
+ if (input.call.args.length !== 1) return invalidArgumentDiagnostic({
258
+ context: input.context,
259
+ span: input.call.span,
260
+ message: "Default function \"cuid\" accepts exactly one version argument: `cuid(2)`."
261
+ });
262
+ if (parseIntegerArgument(input.call.args[0]?.raw ?? "") === 2) return executionGenerator("cuid2");
263
+ return invalidArgumentDiagnostic({
264
+ context: input.context,
265
+ span: input.call.args[0]?.span ?? input.call.span,
266
+ message: "Default function \"cuid\" supports only `cuid(2)` in SQL PSL provider v1."
267
+ });
268
+ }
269
+ function lowerUlid(input) {
270
+ const maybeNoArgs = expectNoArgs({
271
+ call: input.call,
272
+ context: input.context,
273
+ usage: "`ulid()`"
274
+ });
275
+ if (maybeNoArgs) return maybeNoArgs;
276
+ return executionGenerator("ulid");
277
+ }
278
+ function lowerNanoid(input) {
279
+ if (input.call.args.length === 0) return executionGenerator("nanoid");
280
+ if (input.call.args.length !== 1) return invalidArgumentDiagnostic({
281
+ context: input.context,
282
+ span: input.call.span,
283
+ message: "Default function \"nanoid\" accepts at most one size argument: `nanoid()` or `nanoid(<2-255>)`."
284
+ });
285
+ const size = parseIntegerArgument(input.call.args[0]?.raw ?? "");
286
+ if (size !== void 0 && size >= 2 && size <= 255) return executionGenerator("nanoid", { size });
287
+ return invalidArgumentDiagnostic({
288
+ context: input.context,
289
+ span: input.call.args[0]?.span ?? input.call.span,
290
+ message: "Default function \"nanoid\" size argument must be an integer between 2 and 255."
291
+ });
292
+ }
293
+ /**
294
+ * SQLite spellings that all denote the same wall-clock-now value. Anything
295
+ * matching this set when passed through `dbgenerated("...")` is rewritten
296
+ * to the canonical `now()` form before entering the contract — symmetric
297
+ * with `parseSqliteDefault` on the introspection side, so the verifier
298
+ * compares canonical-vs-canonical and a contract using
299
+ * `dbgenerated("CURRENT_TIMESTAMP")` doesn't drift against the schema it
300
+ * just produced.
301
+ */
302
+ const NOW_SYNONYMS = new Set([
303
+ "current_timestamp",
304
+ "datetime('now')",
305
+ "datetime(\"now\")",
306
+ "now()"
307
+ ]);
308
+ function lowerDbgenerated(input) {
309
+ if (input.call.args.length !== 1) return invalidArgumentDiagnostic({
310
+ context: input.context,
311
+ span: input.call.span,
312
+ message: "Default function \"dbgenerated\" requires exactly one string argument: `dbgenerated(\"...\")`."
313
+ });
314
+ const rawExpression = parseStringLiteral(input.call.args[0]?.raw ?? "");
315
+ if (rawExpression === void 0) return invalidArgumentDiagnostic({
316
+ context: input.context,
317
+ span: input.call.args[0]?.span ?? input.call.span,
318
+ message: "Default function \"dbgenerated\" argument must be a string literal."
319
+ });
320
+ const trimmed = rawExpression.trim();
321
+ if (trimmed.length === 0) return invalidArgumentDiagnostic({
322
+ context: input.context,
323
+ span: input.call.args[0]?.span ?? input.call.span,
324
+ message: "Default function \"dbgenerated\" argument cannot be empty."
325
+ });
326
+ return {
327
+ ok: true,
328
+ value: {
329
+ kind: "storage",
330
+ defaultValue: {
331
+ kind: "function",
332
+ expression: NOW_SYNONYMS.has(trimmed.toLowerCase()) ? "now()" : trimmed
333
+ }
334
+ }
335
+ };
336
+ }
337
+ const sqliteDefaultFunctionRegistryEntries = [
338
+ ["autoincrement", {
339
+ lower: lowerAutoincrement,
340
+ usageSignatures: ["autoincrement()"]
341
+ }],
342
+ ["now", {
343
+ lower: lowerNow,
344
+ usageSignatures: ["now()"]
345
+ }],
346
+ ["uuid", {
347
+ lower: lowerUuid,
348
+ usageSignatures: [
349
+ "uuid()",
350
+ "uuid(4)",
351
+ "uuid(7)"
352
+ ]
353
+ }],
354
+ ["cuid", {
355
+ lower: lowerCuid,
356
+ usageSignatures: ["cuid(2)"]
357
+ }],
358
+ ["ulid", {
359
+ lower: lowerUlid,
360
+ usageSignatures: ["ulid()"]
361
+ }],
362
+ ["nanoid", {
363
+ lower: lowerNanoid,
364
+ usageSignatures: ["nanoid()", "nanoid(<2-255>)"]
365
+ }],
366
+ ["dbgenerated", {
367
+ lower: lowerDbgenerated,
368
+ usageSignatures: ["dbgenerated(\"...\")"]
369
+ }]
370
+ ];
371
+ const sqliteScalarTypeDescriptors = new Map([
372
+ ["String", SQLITE_TEXT_CODEC_ID],
373
+ ["Int", SQLITE_INTEGER_CODEC_ID],
374
+ ["BigInt", SQLITE_BIGINT_CODEC_ID],
375
+ ["Float", SQLITE_REAL_CODEC_ID],
376
+ ["Decimal", SQLITE_TEXT_CODEC_ID],
377
+ ["DateTime", SQLITE_DATETIME_CODEC_ID],
378
+ ["Json", SQLITE_JSON_CODEC_ID],
379
+ ["Bytes", SQLITE_BLOB_CODEC_ID]
380
+ ]);
381
+ function createSqliteDefaultFunctionRegistry() {
382
+ return new Map(sqliteDefaultFunctionRegistryEntries);
383
+ }
384
+ function createSqliteMutationDefaultGeneratorDescriptors() {
385
+ return [...builtinGeneratorRegistryMetadata.map(({ id, applicableCodecIds }) => ({
386
+ id,
387
+ applicableCodecIds,
388
+ resolveGeneratedColumnDescriptor: ({ generated }) => {
389
+ if (generated.kind !== "generator" || generated.id !== id) return;
390
+ const descriptor = resolveBuiltinGeneratedColumnDescriptor({
391
+ id,
392
+ ...generated.params ? { params: generated.params } : {}
393
+ });
394
+ return {
395
+ codecId: descriptor.type.codecId,
396
+ nativeType: descriptor.type.nativeType,
397
+ ...descriptor.type.typeRef ? { typeRef: descriptor.type.typeRef } : {},
398
+ ...descriptor.typeParams ? { typeParams: descriptor.typeParams } : {}
399
+ };
400
+ }
401
+ })), timestampNowControlDescriptor()];
402
+ }
403
+ function createSqliteScalarTypeDescriptors() {
404
+ return new Map(sqliteScalarTypeDescriptors);
405
+ }
406
+
407
+ //#endregion
408
+ //#region src/exports/control.ts
409
+ const sqliteAdapterDescriptor = {
410
+ ...sqliteAdapterDescriptorMeta,
411
+ scalarTypeDescriptors: createSqliteScalarTypeDescriptors(),
412
+ controlMutationDefaults: {
413
+ defaultFunctionRegistry: createSqliteDefaultFunctionRegistry(),
414
+ generatorDescriptors: createSqliteMutationDefaultGeneratorDescriptors()
415
+ },
416
+ create() {
417
+ return new SqliteControlAdapter();
418
+ }
419
+ };
420
+ var control_default = sqliteAdapterDescriptor;
14
421
 
15
422
  //#endregion
16
- export { control_adapter_default as default };
423
+ export { SqlEscapeError, SqliteControlAdapter, control_default as default, escapeLiteral, normalizeSqliteNativeType, parseSqliteDefault, quoteIdentifier };
17
424
  //# sourceMappingURL=control.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"control.mjs","names":["sqliteControlAdapterDescriptor: ControlAdapterDescriptor<\n 'sql',\n 'sqlite',\n ControlAdapterInstance<'sql', 'sqlite'>\n>"],"sources":["../src/core/control-adapter.ts"],"sourcesContent":["import type {\n ControlAdapterDescriptor,\n ControlAdapterInstance,\n} from '@prisma-next/framework-components/control';\nimport { sqliteAdapterDescriptorMeta } from './descriptor-meta';\n\nconst sqliteControlAdapterDescriptor: ControlAdapterDescriptor<\n 'sql',\n 'sqlite',\n ControlAdapterInstance<'sql', 'sqlite'>\n> = {\n ...sqliteAdapterDescriptorMeta,\n create(_stack): ControlAdapterInstance<'sql', 'sqlite'> {\n return { familyId: 'sql', targetId: 'sqlite' };\n },\n};\n\nexport default sqliteControlAdapterDescriptor;\n"],"mappings":";;;AAMA,MAAMA,iCAIF;CACF,GAAG;CACH,OAAO,QAAiD;AACtD,SAAO;GAAE,UAAU;GAAO,UAAU;GAAU;;CAEjD;AAED,8BAAe"}
1
+ {"version":3,"file":"control.mjs","names":["parseSqliteDefault","normalizeSqliteNativeType","tables: Record<string, SqlTableIR>","columns: Record<string, SqlColumnIR>","pkColumns: Array<{ name: string; pk: number }>","primaryKey: PrimaryKey | undefined","foreignKeys: readonly SqlForeignKeyIR[]","uniques: SqlUniqueIR[]","indexes: SqlIndexIR[]","SQLITE_REFERENTIAL_ACTION_MAP: Record<string, SqlReferentialAction>","sqliteAdapterDescriptor: SqlControlAdapterDescriptor<'sqlite'>"],"sources":["../src/core/control-adapter.ts","../src/core/control-mutation-defaults.ts","../src/exports/control.ts"],"sourcesContent":["import type { ContractMarkerRecord } from '@prisma-next/contract/types';\nimport type { SqlControlAdapter } from '@prisma-next/family-sql/control-adapter';\nimport { parseContractMarkerRow } from '@prisma-next/family-sql/verify';\nimport type { ControlDriverInstance } from '@prisma-next/framework-components/control';\nimport type {\n AnyQueryAst,\n LoweredStatement,\n LowererContext,\n} from '@prisma-next/sql-relational-core/ast';\nimport type {\n PrimaryKey,\n SqlColumnIR,\n SqlForeignKeyIR,\n SqlIndexIR,\n SqlReferentialAction,\n SqlSchemaIR,\n SqlTableIR,\n SqlUniqueIR,\n} from '@prisma-next/sql-schema-ir/types';\nimport { parseSqliteDefault } from '@prisma-next/target-sqlite/default-normalizer';\nimport { normalizeSqliteNativeType } from '@prisma-next/target-sqlite/native-type-normalizer';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { renderLoweredSql } from './adapter';\nimport type { SqliteContract } from './types';\n\n// PRAGMA result row types\ntype PragmaTableInfoRow = {\n cid: number;\n name: string;\n type: string;\n notnull: number;\n dflt_value: string | null;\n pk: number;\n};\n\ntype PragmaForeignKeyRow = {\n id: number;\n seq: number;\n table: string;\n from: string;\n to: string;\n on_update: string;\n on_delete: string;\n};\n\ntype PragmaIndexListRow = {\n seq: number;\n name: string;\n unique: number;\n origin: string;\n partial: number;\n};\n\ntype PragmaIndexInfoRow = {\n seqno: number;\n cid: number;\n name: string;\n};\n\ntype FkAccumulator = {\n columns: string[];\n referencedTable: string;\n referencedColumns: string[];\n onDelete: string;\n onUpdate: string;\n};\n\nexport class SqliteControlAdapter implements SqlControlAdapter<'sqlite'> {\n readonly familyId = 'sql' as const;\n readonly targetId = 'sqlite' as const;\n\n readonly normalizeDefault = parseSqliteDefault;\n readonly normalizeNativeType = normalizeSqliteNativeType;\n\n /**\n * Lower a SQL query AST into a SQLite-flavored `{ sql, params }` payload.\n *\n * Delegates to the shared `renderLoweredSql` renderer so the control adapter\n * emits byte-identical SQL to `SqliteAdapterImpl.lower()` for the same AST\n * and contract. Used at migration plan/emit time (e.g. by `dataTransform`)\n * without instantiating the runtime adapter.\n */\n lower(ast: AnyQueryAst, context: LowererContext<unknown>): LoweredStatement {\n return renderLoweredSql(ast, context.contract as SqliteContract);\n }\n\n /**\n * Reads the contract marker from `_prisma_marker`. Probes `sqlite_master`\n * first so a fresh database (no marker table) returns `null` instead of a\n * \"no such table\" error.\n */\n async readMarker(\n driver: ControlDriverInstance<'sql', 'sqlite'>,\n ): Promise<ContractMarkerRecord | null> {\n const exists = await driver.query(\n `SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?`,\n ['_prisma_marker'],\n );\n if (exists.rows.length === 0) {\n return null;\n }\n\n const result = await driver.query<{\n core_hash: string;\n profile_hash: string;\n contract_json: unknown | null;\n canonical_version: number | null;\n updated_at: Date | string;\n app_tag: string | null;\n meta: unknown | null;\n invariants: unknown;\n }>(\n `SELECT\n core_hash,\n profile_hash,\n contract_json,\n canonical_version,\n updated_at,\n app_tag,\n meta,\n invariants\n FROM _prisma_marker\n WHERE id = ?`,\n [1],\n );\n\n const row = result.rows[0];\n if (!row) return null;\n // SQLite stores arrays as JSON-encoded TEXT (no native array type), so\n // the driver returns `invariants` as a string. Decode before delegating\n // to the shared row schema, which expects `string[]`.\n const invariants =\n typeof row.invariants === 'string' ? (JSON.parse(row.invariants) as unknown) : row.invariants;\n return parseContractMarkerRow({ ...row, invariants });\n }\n\n async introspect(\n driver: ControlDriverInstance<'sql', 'sqlite'>,\n _contract?: unknown,\n ): Promise<SqlSchemaIR> {\n // Filter out runner-managed control tables (`_prisma_marker`,\n // `_prisma_ledger`) — they're an implementation detail of the migration\n // runner, not part of the user-authored contract, so they must not\n // appear in introspection output (otherwise strict schema verification\n // flags them as `extra_table`).\n const tablesResult = await driver.query<{ name: string }>(\n `SELECT name FROM sqlite_master\n WHERE type = 'table'\n AND name NOT LIKE 'sqlite_%'\n AND name NOT IN ('_prisma_marker', '_prisma_ledger')\n ORDER BY name`,\n );\n\n const tables: Record<string, SqlTableIR> = {};\n\n for (const tableRow of tablesResult.rows) {\n const tableName = tableRow.name;\n\n // SQLite's synchronous driver serializes reads — no benefit from Promise.all\n const columnsResult = await driver.query<PragmaTableInfoRow>(\n `PRAGMA table_info(\"${escapePragmaArg(tableName)}\")`,\n );\n const fkResult = await driver.query<PragmaForeignKeyRow>(\n `PRAGMA foreign_key_list(\"${escapePragmaArg(tableName)}\")`,\n );\n const indexListResult = await driver.query<PragmaIndexListRow>(\n `PRAGMA index_list(\"${escapePragmaArg(tableName)}\")`,\n );\n\n const columns: Record<string, SqlColumnIR> = {};\n const pkColumns: Array<{ name: string; pk: number }> = [];\n\n for (const col of columnsResult.rows) {\n columns[col.name] = {\n name: col.name,\n nativeType: col.type.toLowerCase(),\n nullable: col.notnull === 0 && col.pk === 0,\n ...ifDefined('default', col.dflt_value ?? undefined),\n };\n if (col.pk > 0) {\n pkColumns.push({ name: col.name, pk: col.pk });\n }\n }\n\n pkColumns.sort((a, b) => a.pk - b.pk);\n const primaryKey: PrimaryKey | undefined =\n pkColumns.length > 0 ? { columns: pkColumns.map((c) => c.name) } : undefined;\n\n const fkMap = new Map<number, FkAccumulator>();\n for (const fk of fkResult.rows) {\n const existing = fkMap.get(fk.id);\n if (existing) {\n existing.columns.push(fk.from);\n existing.referencedColumns.push(fk.to);\n } else {\n fkMap.set(fk.id, {\n columns: [fk.from],\n referencedTable: fk.table,\n referencedColumns: [fk.to],\n onDelete: fk.on_delete,\n onUpdate: fk.on_update,\n });\n }\n }\n const foreignKeys: readonly SqlForeignKeyIR[] = Array.from(fkMap.values()).map((fk) => ({\n columns: Object.freeze([...fk.columns]) as readonly string[],\n referencedTable: fk.referencedTable,\n referencedColumns: Object.freeze([...fk.referencedColumns]) as readonly string[],\n ...ifDefined('onDelete', mapSqliteReferentialAction(fk.onDelete)),\n ...ifDefined('onUpdate', mapSqliteReferentialAction(fk.onUpdate)),\n }));\n\n const uniques: SqlUniqueIR[] = [];\n const indexes: SqlIndexIR[] = [];\n\n for (const idx of indexListResult.rows) {\n // origin: 'c' = CREATE INDEX, 'u' = UNIQUE constraint, 'pk' = PRIMARY KEY\n const idxInfoResult = await driver.query<PragmaIndexInfoRow>(\n `PRAGMA index_info(\"${escapePragmaArg(idx.name)}\")`,\n );\n\n const idxColumns = idxInfoResult.rows.sort((a, b) => a.seqno - b.seqno).map((r) => r.name);\n\n if (idx.origin === 'u') {\n uniques.push({\n columns: Object.freeze([...idxColumns]) as readonly string[],\n name: idx.name,\n });\n } else if (idx.origin === 'c') {\n indexes.push({\n columns: Object.freeze([...idxColumns]) as readonly string[],\n name: idx.name,\n unique: idx.unique === 1,\n });\n }\n // Skip 'pk' origin — already captured in primaryKey\n }\n\n tables[tableName] = {\n name: tableName,\n columns,\n ...ifDefined('primaryKey', primaryKey),\n foreignKeys,\n uniques,\n indexes,\n };\n }\n\n return {\n tables,\n dependencies: [],\n };\n }\n}\n\n// PRAGMA queries use the function-argument form (`PRAGMA table_info(\"name\")`)\n// which doesn't support `?` placeholders — the argument is part of the\n// statement name, not a bound parameter. We quote-escape the table name instead.\nfunction escapePragmaArg(name: string): string {\n return name.replace(/\"/g, '\"\"');\n}\n\nconst SQLITE_REFERENTIAL_ACTION_MAP: Record<string, SqlReferentialAction> = {\n 'NO ACTION': 'noAction',\n RESTRICT: 'restrict',\n CASCADE: 'cascade',\n 'SET NULL': 'setNull',\n 'SET DEFAULT': 'setDefault',\n};\n\nfunction mapSqliteReferentialAction(rule: string): SqlReferentialAction | undefined {\n const normalized = rule.toUpperCase();\n const mapped = SQLITE_REFERENTIAL_ACTION_MAP[normalized];\n if (mapped === undefined) {\n throw new Error(\n `Unknown SQLite referential action rule: \"${rule}\". ` +\n 'Expected one of: NO ACTION, RESTRICT, CASCADE, SET NULL, SET DEFAULT.',\n );\n }\n if (mapped === 'noAction') return undefined;\n return mapped;\n}\n","import type { ExecutionMutationDefaultValue } from '@prisma-next/contract/types';\nimport { timestampNowControlDescriptor } from '@prisma-next/family-sql/control';\nimport type {\n ControlMutationDefaultEntry,\n MutationDefaultGeneratorDescriptor,\n} from '@prisma-next/framework-components/control';\nimport {\n builtinGeneratorRegistryMetadata,\n resolveBuiltinGeneratedColumnDescriptor,\n} from '@prisma-next/ids';\nimport type {\n DefaultFunctionLoweringContext,\n DefaultFunctionLoweringHandler,\n} from '@prisma-next/sql-contract-psl';\nimport {\n SQLITE_BIGINT_CODEC_ID,\n SQLITE_BLOB_CODEC_ID,\n SQLITE_DATETIME_CODEC_ID,\n SQLITE_INTEGER_CODEC_ID,\n SQLITE_JSON_CODEC_ID,\n SQLITE_REAL_CODEC_ID,\n SQLITE_TEXT_CODEC_ID,\n} from '@prisma-next/target-sqlite/codec-ids';\n\ntype LoweredDefaultResult = ReturnType<DefaultFunctionLoweringHandler>;\ntype ParsedDefaultFunctionCall = Parameters<DefaultFunctionLoweringHandler>[0]['call'];\n\nfunction invalidArgumentDiagnostic(input: {\n readonly context: DefaultFunctionLoweringContext;\n readonly span: ParsedDefaultFunctionCall['span'];\n readonly message: string;\n}): LoweredDefaultResult {\n return {\n ok: false,\n diagnostic: {\n code: 'PSL_INVALID_DEFAULT_FUNCTION_ARGUMENT',\n message: input.message,\n sourceId: input.context.sourceId,\n span: input.span,\n },\n };\n}\n\nfunction executionGenerator(\n id: ExecutionMutationDefaultValue['id'],\n params?: Record<string, unknown>,\n): LoweredDefaultResult {\n return {\n ok: true,\n value: {\n kind: 'execution',\n generated: {\n kind: 'generator',\n id,\n ...(params ? { params } : {}),\n },\n },\n };\n}\n\nfunction expectNoArgs(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n readonly usage: string;\n}): LoweredDefaultResult | undefined {\n if (input.call.args.length === 0) {\n return undefined;\n }\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.span,\n message: `Default function \"${input.call.name}\" does not accept arguments. Use ${input.usage}.`,\n });\n}\n\nfunction parseIntegerArgument(raw: string): number | undefined {\n const trimmed = raw.trim();\n if (!/^-?\\d+$/.test(trimmed)) {\n return undefined;\n }\n const value = Number(trimmed);\n if (!Number.isInteger(value)) {\n return undefined;\n }\n return value;\n}\n\nfunction parseStringLiteral(raw: string): string | undefined {\n const match = raw.trim().match(/^(['\"])(.*)\\1$/s);\n if (!match) {\n return undefined;\n }\n return match[2] ?? '';\n}\n\nfunction lowerAutoincrement(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n const maybeNoArgs = expectNoArgs({\n call: input.call,\n context: input.context,\n usage: '`autoincrement()`',\n });\n if (maybeNoArgs) {\n return maybeNoArgs;\n }\n return {\n ok: true,\n value: {\n kind: 'storage',\n defaultValue: {\n kind: 'function',\n expression: 'autoincrement()',\n },\n },\n };\n}\n\nfunction lowerNow(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n const maybeNoArgs = expectNoArgs({\n call: input.call,\n context: input.context,\n usage: '`now()`',\n });\n if (maybeNoArgs) {\n return maybeNoArgs;\n }\n return {\n ok: true,\n value: {\n kind: 'storage',\n defaultValue: {\n kind: 'function',\n expression: 'now()',\n },\n },\n };\n}\n\nfunction lowerUuid(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n if (input.call.args.length === 0) {\n return executionGenerator('uuidv4');\n }\n if (input.call.args.length !== 1) {\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.span,\n message:\n 'Default function \"uuid\" accepts at most one version argument: `uuid()`, `uuid(4)`, or `uuid(7)`.',\n });\n }\n const version = parseIntegerArgument(input.call.args[0]?.raw ?? '');\n if (version === 4) {\n return executionGenerator('uuidv4');\n }\n if (version === 7) {\n return executionGenerator('uuidv7');\n }\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.args[0]?.span ?? input.call.span,\n message:\n 'Default function \"uuid\" supports only `uuid()`, `uuid(4)`, or `uuid(7)` in SQL PSL provider v1.',\n });\n}\n\nfunction lowerCuid(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n if (input.call.args.length === 0) {\n return {\n ok: false,\n diagnostic: {\n code: 'PSL_UNKNOWN_DEFAULT_FUNCTION',\n message:\n 'Default function \"cuid()\" is not supported in SQL PSL provider v1. Use `cuid(2)` instead.',\n sourceId: input.context.sourceId,\n span: input.call.span,\n },\n };\n }\n if (input.call.args.length !== 1) {\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.span,\n message: 'Default function \"cuid\" accepts exactly one version argument: `cuid(2)`.',\n });\n }\n const version = parseIntegerArgument(input.call.args[0]?.raw ?? '');\n if (version === 2) {\n return executionGenerator('cuid2');\n }\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.args[0]?.span ?? input.call.span,\n message: 'Default function \"cuid\" supports only `cuid(2)` in SQL PSL provider v1.',\n });\n}\n\nfunction lowerUlid(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n const maybeNoArgs = expectNoArgs({\n call: input.call,\n context: input.context,\n usage: '`ulid()`',\n });\n if (maybeNoArgs) {\n return maybeNoArgs;\n }\n return executionGenerator('ulid');\n}\n\nfunction lowerNanoid(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n if (input.call.args.length === 0) {\n return executionGenerator('nanoid');\n }\n if (input.call.args.length !== 1) {\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.span,\n message:\n 'Default function \"nanoid\" accepts at most one size argument: `nanoid()` or `nanoid(<2-255>)`.',\n });\n }\n const size = parseIntegerArgument(input.call.args[0]?.raw ?? '');\n if (size !== undefined && size >= 2 && size <= 255) {\n return executionGenerator('nanoid', { size });\n }\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.args[0]?.span ?? input.call.span,\n message: 'Default function \"nanoid\" size argument must be an integer between 2 and 255.',\n });\n}\n\n/**\n * SQLite spellings that all denote the same wall-clock-now value. Anything\n * matching this set when passed through `dbgenerated(\"...\")` is rewritten\n * to the canonical `now()` form before entering the contract — symmetric\n * with `parseSqliteDefault` on the introspection side, so the verifier\n * compares canonical-vs-canonical and a contract using\n * `dbgenerated(\"CURRENT_TIMESTAMP\")` doesn't drift against the schema it\n * just produced.\n */\nconst NOW_SYNONYMS = new Set(['current_timestamp', \"datetime('now')\", 'datetime(\"now\")', 'now()']);\n\nfunction lowerDbgenerated(input: {\n readonly call: ParsedDefaultFunctionCall;\n readonly context: DefaultFunctionLoweringContext;\n}): LoweredDefaultResult {\n if (input.call.args.length !== 1) {\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.span,\n message:\n 'Default function \"dbgenerated\" requires exactly one string argument: `dbgenerated(\"...\")`.',\n });\n }\n const rawExpression = parseStringLiteral(input.call.args[0]?.raw ?? '');\n if (rawExpression === undefined) {\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.args[0]?.span ?? input.call.span,\n message: 'Default function \"dbgenerated\" argument must be a string literal.',\n });\n }\n const trimmed = rawExpression.trim();\n if (trimmed.length === 0) {\n return invalidArgumentDiagnostic({\n context: input.context,\n span: input.call.args[0]?.span ?? input.call.span,\n message: 'Default function \"dbgenerated\" argument cannot be empty.',\n });\n }\n const expression = NOW_SYNONYMS.has(trimmed.toLowerCase()) ? 'now()' : trimmed;\n return {\n ok: true,\n value: {\n kind: 'storage',\n defaultValue: {\n kind: 'function',\n expression,\n },\n },\n };\n}\n\nconst sqliteDefaultFunctionRegistryEntries = [\n ['autoincrement', { lower: lowerAutoincrement, usageSignatures: ['autoincrement()'] }],\n ['now', { lower: lowerNow, usageSignatures: ['now()'] }],\n ['uuid', { lower: lowerUuid, usageSignatures: ['uuid()', 'uuid(4)', 'uuid(7)'] }],\n ['cuid', { lower: lowerCuid, usageSignatures: ['cuid(2)'] }],\n ['ulid', { lower: lowerUlid, usageSignatures: ['ulid()'] }],\n ['nanoid', { lower: lowerNanoid, usageSignatures: ['nanoid()', 'nanoid(<2-255>)'] }],\n ['dbgenerated', { lower: lowerDbgenerated, usageSignatures: ['dbgenerated(\"...\")'] }],\n] satisfies ReadonlyArray<readonly [string, ControlMutationDefaultEntry]>;\n\nconst sqliteScalarTypeDescriptors = new Map<string, string>([\n ['String', SQLITE_TEXT_CODEC_ID],\n ['Int', SQLITE_INTEGER_CODEC_ID],\n ['BigInt', SQLITE_BIGINT_CODEC_ID],\n ['Float', SQLITE_REAL_CODEC_ID],\n ['Decimal', SQLITE_TEXT_CODEC_ID],\n ['DateTime', SQLITE_DATETIME_CODEC_ID],\n ['Json', SQLITE_JSON_CODEC_ID],\n ['Bytes', SQLITE_BLOB_CODEC_ID],\n]);\n\nexport function createSqliteDefaultFunctionRegistry(): ReadonlyMap<\n string,\n ControlMutationDefaultEntry\n> {\n return new Map(sqliteDefaultFunctionRegistryEntries);\n}\n\nexport function createSqliteMutationDefaultGeneratorDescriptors(): readonly MutationDefaultGeneratorDescriptor[] {\n return [\n ...builtinGeneratorRegistryMetadata.map(\n ({ id, applicableCodecIds }): MutationDefaultGeneratorDescriptor => ({\n id,\n applicableCodecIds,\n resolveGeneratedColumnDescriptor: ({ generated }) => {\n if (generated.kind !== 'generator' || generated.id !== id) {\n return undefined;\n }\n const descriptor = resolveBuiltinGeneratedColumnDescriptor({\n id,\n ...(generated.params ? { params: generated.params } : {}),\n });\n return {\n codecId: descriptor.type.codecId,\n nativeType: descriptor.type.nativeType,\n ...(descriptor.type.typeRef ? { typeRef: descriptor.type.typeRef } : {}),\n ...(descriptor.typeParams ? { typeParams: descriptor.typeParams } : {}),\n };\n },\n }),\n ),\n timestampNowControlDescriptor(),\n ];\n}\n\nexport function createSqliteScalarTypeDescriptors(): ReadonlyMap<string, string> {\n return new Map(sqliteScalarTypeDescriptors);\n}\n","import type { SqlControlAdapterDescriptor } from '@prisma-next/family-sql/control';\nimport type { SqlControlAdapter } from '@prisma-next/family-sql/control-adapter';\nimport { SqliteControlAdapter } from '../core/control-adapter';\nimport {\n createSqliteDefaultFunctionRegistry,\n createSqliteMutationDefaultGeneratorDescriptors,\n createSqliteScalarTypeDescriptors,\n} from '../core/control-mutation-defaults';\nimport { sqliteAdapterDescriptorMeta } from '../core/descriptor-meta';\n\nconst sqliteAdapterDescriptor: SqlControlAdapterDescriptor<'sqlite'> = {\n ...sqliteAdapterDescriptorMeta,\n scalarTypeDescriptors: createSqliteScalarTypeDescriptors(),\n controlMutationDefaults: {\n defaultFunctionRegistry: createSqliteDefaultFunctionRegistry(),\n generatorDescriptors: createSqliteMutationDefaultGeneratorDescriptors(),\n },\n create(): SqlControlAdapter<'sqlite'> {\n return new SqliteControlAdapter();\n },\n};\n\nexport default sqliteAdapterDescriptor;\n\n// `parseSqliteDefault`, `normalizeSqliteNativeType`, `quoteIdentifier`,\n// `escapeLiteral`, and `SqlEscapeError` live target-side (one-way\n// `adapter → target` edge, matching Postgres). Re-exported from the\n// adapter so consumers — both internal and downstream — see the same\n// adapter-shaped surface across SQL targets.\nexport { parseSqliteDefault } from '@prisma-next/target-sqlite/default-normalizer';\nexport { normalizeSqliteNativeType } from '@prisma-next/target-sqlite/native-type-normalizer';\nexport {\n escapeLiteral,\n quoteIdentifier,\n SqlEscapeError,\n} from '@prisma-next/target-sqlite/sql-utils';\n\n// `SqlControlAdapterDescriptor` is declared in two places in the codebase\n// (`family-sql/control-adapter` and `family-sql/migrations/types`); the\n// migrations-side declaration narrows `create()`'s return type to the base\n// `ControlAdapterInstance`, hiding `introspect`/`readMarker`. Until that's\n// reconciled upstream, downstream consumers (e2e harness, integration\n// tests) need direct access to the concrete class. Mirrors how Postgres'\n// own package tests import `PostgresControlAdapter` directly.\nexport { SqliteControlAdapter } from '../core/control-adapter';\n"],"mappings":"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"}
@@ -22,4 +22,4 @@ const sqliteAdapterDescriptorMeta = {
22
22
 
23
23
  //#endregion
24
24
  export { sqliteAdapterDescriptorMeta as t };
25
- //# sourceMappingURL=descriptor-meta-Bg-c1LmL.mjs.map
25
+ //# sourceMappingURL=descriptor-meta-DYT9Gt_F.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"descriptor-meta-Bg-c1LmL.mjs","names":[],"sources":["../src/core/descriptor-meta.ts"],"sourcesContent":["export const sqliteAdapterDescriptorMeta = {\n kind: 'adapter',\n familyId: 'sql',\n targetId: 'sqlite',\n id: 'sqlite',\n version: '0.0.1',\n capabilities: {\n sql: {\n orderBy: true,\n limit: true,\n lateral: false,\n jsonAgg: true,\n returning: true,\n enums: false,\n },\n },\n types: {\n codecTypes: {\n import: {\n package: '@prisma-next/adapter-sqlite/codec-types',\n named: 'CodecTypes',\n alias: 'SqliteTypes',\n },\n },\n },\n} as const;\n"],"mappings":";AAAA,MAAa,8BAA8B;CACzC,MAAM;CACN,UAAU;CACV,UAAU;CACV,IAAI;CACJ,SAAS;CACT,cAAc,EACZ,KAAK;EACH,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,WAAW;EACX,OAAO;EACR,EACF;CACD,OAAO,EACL,YAAY,EACV,QAAQ;EACN,SAAS;EACT,OAAO;EACP,OAAO;EACR,EACF,EACF;CACF"}
1
+ {"version":3,"file":"descriptor-meta-DYT9Gt_F.mjs","names":[],"sources":["../src/core/descriptor-meta.ts"],"sourcesContent":["export const sqliteAdapterDescriptorMeta = {\n kind: 'adapter',\n familyId: 'sql',\n targetId: 'sqlite',\n id: 'sqlite',\n version: '0.0.1',\n capabilities: {\n sql: {\n orderBy: true,\n limit: true,\n lateral: false,\n jsonAgg: true,\n returning: true,\n enums: false,\n },\n },\n types: {\n codecTypes: {\n import: {\n package: '@prisma-next/adapter-sqlite/codec-types',\n named: 'CodecTypes',\n alias: 'SqliteTypes',\n },\n },\n },\n} as const;\n"],"mappings":";AAAA,MAAa,8BAA8B;CACzC,MAAM;CACN,UAAU;CACV,UAAU;CACV,IAAI;CACJ,SAAS;CACT,cAAc,EACZ,KAAK;EACH,SAAS;EACT,OAAO;EACP,SAAS;EACT,SAAS;EACT,WAAW;EACX,OAAO;EACR,EACF;CACD,OAAO,EACL,YAAY,EACV,QAAQ;EACN,SAAS;EACT,OAAO;EACP,OAAO;EACR,EACF,EACF;CACF"}
@@ -1,7 +1,6 @@
1
- import "./types-gAqc4ucF.mjs";
2
- import { t as createSqliteAdapter } from "./adapter-BG7_o_3h.mjs";
3
- import { RuntimeAdapterInstance } from "@prisma-next/framework-components/execution";
1
+ import { t as createSqliteAdapter } from "./adapter-NSvNNHZP.mjs";
4
2
  import { SqlRuntimeAdapterDescriptor } from "@prisma-next/sql-runtime";
3
+ import { RuntimeAdapterInstance } from "@prisma-next/framework-components/execution";
5
4
 
6
5
  //#region src/core/runtime-adapter.d.ts
7
6
  type SqliteRuntimeAdapterInstance = RuntimeAdapterInstance<'sql', 'sqlite'> & ReturnType<typeof createSqliteAdapter>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/core/runtime-adapter.ts"],"sourcesContent":[],"mappings":";;;;;;KAQY,4BAAA,GAA+B,0CACzC,kBAAkB;cAUd,gCAAgC,sCAEpC"}
1
+ {"version":3,"file":"runtime.d.mts","names":[],"sources":["../src/core/runtime-adapter.ts"],"sourcesContent":[],"mappings":";;;;;KAUY,4BAAA,GAA+B,0CACzC,kBAAkB;cAgBd,gCAAgC,sCAEpC"}
package/dist/runtime.mjs CHANGED
@@ -1,19 +1,27 @@
1
- import { t as codecDefinitions } from "./codecs-Bhz0W5Xm.mjs";
2
- import { t as createSqliteAdapter } from "./adapter-lwcslPF8.mjs";
3
- import { t as sqliteAdapterDescriptorMeta } from "./descriptor-meta-Bg-c1LmL.mjs";
4
- import { createCodecRegistry } from "@prisma-next/sql-relational-core/ast";
1
+ import { t as createSqliteAdapter } from "./adapter-BUe-FzTA.mjs";
2
+ import { t as sqliteAdapterDescriptorMeta } from "./descriptor-meta-DYT9Gt_F.mjs";
3
+ import { builtinGeneratorIds } from "@prisma-next/ids";
4
+ import { timestampNowRuntimeGenerator } from "@prisma-next/family-sql/runtime";
5
+ import { generateId } from "@prisma-next/ids/runtime";
6
+ import { sqliteCodecRegistry } from "@prisma-next/target-sqlite/codecs";
5
7
 
6
8
  //#region src/core/runtime-adapter.ts
7
- function createSqliteCodecRegistry() {
8
- const registry = createCodecRegistry();
9
- for (const definition of Object.values(codecDefinitions)) registry.register(definition.codec);
10
- return registry;
9
+ function createSqliteMutationDefaultGenerators() {
10
+ return [...builtinGeneratorIds.map((id) => ({
11
+ id,
12
+ generate: (params) => {
13
+ return generateId(params ? {
14
+ id,
15
+ params
16
+ } : { id });
17
+ },
18
+ stability: "field"
19
+ })), timestampNowRuntimeGenerator()];
11
20
  }
12
21
  const sqliteRuntimeAdapterDescriptor = {
13
22
  ...sqliteAdapterDescriptorMeta,
14
- codecs: createSqliteCodecRegistry,
15
- parameterizedCodecs: () => [],
16
- mutationDefaultGenerators: () => [],
23
+ codecs: () => Array.from(sqliteCodecRegistry.values()),
24
+ mutationDefaultGenerators: createSqliteMutationDefaultGenerators,
17
25
  create(_stack) {
18
26
  return createSqliteAdapter();
19
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.mjs","names":["sqliteRuntimeAdapterDescriptor: SqlRuntimeAdapterDescriptor<\n 'sqlite',\n SqliteRuntimeAdapterInstance\n>"],"sources":["../src/core/runtime-adapter.ts"],"sourcesContent":["import type { RuntimeAdapterInstance } from '@prisma-next/framework-components/execution';\nimport type { CodecRegistry } from '@prisma-next/sql-relational-core/ast';\nimport { createCodecRegistry } from '@prisma-next/sql-relational-core/ast';\nimport type { SqlRuntimeAdapterDescriptor } from '@prisma-next/sql-runtime';\nimport { createSqliteAdapter } from './adapter';\nimport { codecDefinitions } from './codecs';\nimport { sqliteAdapterDescriptorMeta } from './descriptor-meta';\n\nexport type SqliteRuntimeAdapterInstance = RuntimeAdapterInstance<'sql', 'sqlite'> &\n ReturnType<typeof createSqliteAdapter>;\n\nfunction createSqliteCodecRegistry(): CodecRegistry {\n const registry = createCodecRegistry();\n for (const definition of Object.values(codecDefinitions)) {\n registry.register(definition.codec);\n }\n return registry;\n}\n\nconst sqliteRuntimeAdapterDescriptor: SqlRuntimeAdapterDescriptor<\n 'sqlite',\n SqliteRuntimeAdapterInstance\n> = {\n ...sqliteAdapterDescriptorMeta,\n codecs: createSqliteCodecRegistry,\n parameterizedCodecs: () => [],\n mutationDefaultGenerators: () => [],\n create(_stack): SqliteRuntimeAdapterInstance {\n return createSqliteAdapter();\n },\n};\n\nexport default sqliteRuntimeAdapterDescriptor;\n"],"mappings":";;;;;;AAWA,SAAS,4BAA2C;CAClD,MAAM,WAAW,qBAAqB;AACtC,MAAK,MAAM,cAAc,OAAO,OAAO,iBAAiB,CACtD,UAAS,SAAS,WAAW,MAAM;AAErC,QAAO;;AAGT,MAAMA,iCAGF;CACF,GAAG;CACH,QAAQ;CACR,2BAA2B,EAAE;CAC7B,iCAAiC,EAAE;CACnC,OAAO,QAAsC;AAC3C,SAAO,qBAAqB;;CAE/B;AAED,8BAAe"}
1
+ {"version":3,"file":"runtime.mjs","names":["sqliteRuntimeAdapterDescriptor: SqlRuntimeAdapterDescriptor<\n 'sqlite',\n SqliteRuntimeAdapterInstance\n>"],"sources":["../src/core/runtime-adapter.ts"],"sourcesContent":["import type { GeneratedValueSpec } from '@prisma-next/contract/types';\nimport { timestampNowRuntimeGenerator } from '@prisma-next/family-sql/runtime';\nimport type { RuntimeAdapterInstance } from '@prisma-next/framework-components/execution';\nimport { builtinGeneratorIds } from '@prisma-next/ids';\nimport { generateId } from '@prisma-next/ids/runtime';\nimport type { SqlRuntimeAdapterDescriptor } from '@prisma-next/sql-runtime';\nimport { sqliteCodecRegistry } from '@prisma-next/target-sqlite/codecs';\nimport { createSqliteAdapter } from './adapter';\nimport { sqliteAdapterDescriptorMeta } from './descriptor-meta';\n\nexport type SqliteRuntimeAdapterInstance = RuntimeAdapterInstance<'sql', 'sqlite'> &\n ReturnType<typeof createSqliteAdapter>;\n\nfunction createSqliteMutationDefaultGenerators() {\n return [\n ...builtinGeneratorIds.map((id) => ({\n id,\n generate: (params?: Record<string, unknown>) => {\n const spec: GeneratedValueSpec = params ? { id, params } : { id };\n return generateId(spec);\n },\n stability: 'field' as const,\n })),\n timestampNowRuntimeGenerator(),\n ];\n}\n\nconst sqliteRuntimeAdapterDescriptor: SqlRuntimeAdapterDescriptor<\n 'sqlite',\n SqliteRuntimeAdapterInstance\n> = {\n ...sqliteAdapterDescriptorMeta,\n codecs: () => Array.from(sqliteCodecRegistry.values()),\n mutationDefaultGenerators: createSqliteMutationDefaultGenerators,\n create(_stack): SqliteRuntimeAdapterInstance {\n return createSqliteAdapter();\n },\n};\n\nexport default sqliteRuntimeAdapterDescriptor;\n"],"mappings":";;;;;;;;AAaA,SAAS,wCAAwC;AAC/C,QAAO,CACL,GAAG,oBAAoB,KAAK,QAAQ;EAClC;EACA,WAAW,WAAqC;AAE9C,UAAO,WAD0B,SAAS;IAAE;IAAI;IAAQ,GAAG,EAAE,IAAI,CAC1C;;EAEzB,WAAW;EACZ,EAAE,EACH,8BAA8B,CAC/B;;AAGH,MAAMA,iCAGF;CACF,GAAG;CACH,cAAc,MAAM,KAAK,oBAAoB,QAAQ,CAAC;CACtD,2BAA2B;CAC3B,OAAO,QAAsC;AAC3C,SAAO,qBAAqB;;CAE/B;AAED,8BAAe"}
@@ -12,4 +12,4 @@ type SqliteContract = Contract<SqlStorage> & {
12
12
  type SqliteLoweredStatement = LoweredStatement;
13
13
  //#endregion
14
14
  export { SqliteContract as n, SqliteLoweredStatement as r, SqliteAdapterOptions as t };
15
- //# sourceMappingURL=types-gAqc4ucF.d.mts.map
15
+ //# sourceMappingURL=types-BFRXGAgd.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types-gAqc4ucF.d.mts","names":[],"sources":["../src/core/types.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,oBAAA;;AAAjB;AAIY,KAAA,cAAA,GAAiB,QAAS,CAAA,UAAT,CAAA,GAAA;EAEjB,SAAA,MAAA,EAAA,QAAsB;;KAAtB,sBAAA,GAAyB"}
1
+ {"version":3,"file":"types-BFRXGAgd.d.mts","names":[],"sources":["../src/core/types.ts"],"sourcesContent":[],"mappings":";;;;;UAIiB,oBAAA;;AAAjB;AAIY,KAAA,cAAA,GAAiB,QAAS,CAAA,UAAT,CAAA,GAAA;EAEjB,SAAA,MAAA,EAAA,QAAsB;;KAAtB,sBAAA,GAAyB"}
package/dist/types.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as SqliteContract, r as SqliteLoweredStatement } from "./types-gAqc4ucF.mjs";
1
+ import { n as SqliteContract, r as SqliteLoweredStatement } from "./types-BFRXGAgd.mjs";
2
2
  export { type SqliteContract, type SqliteLoweredStatement };