qubu 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{canonical-BbnqavJm.mjs → canonical-BXUguqfo.mjs} +23 -23
- package/dist/codegen.d.mts +25 -33
- package/dist/codegen.mjs +38 -45
- package/dist/column-hqKr7-1I.mjs +620 -0
- package/dist/{complete-D5Djh-zo.mjs → complete-WYyVozgK.mjs} +50 -50
- package/dist/{complete-types-BavBtv8J.d.mts → complete-types-IjEn5VPN.d.mts} +56 -56
- package/dist/core.d.mts +2 -2
- package/dist/core.mjs +4 -4
- package/dist/ddl.d.mts +12 -12
- package/dist/ddl.mjs +13 -14
- package/dist/{dialect-b2-Z6uBF.mjs → dialect-wUKrnPMB.mjs} +2 -2
- package/dist/diff.d.mts +1 -1
- package/dist/diff.mjs +6 -7
- package/dist/{index-DH0qV6aS.d.mts → index-1DpA3mUh.d.mts} +20 -20
- package/dist/{index-D3ZOwPT-.d.mts → index-CPvfEheG.d.mts} +13 -15
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +94 -95
- package/dist/introspection.d.mts +8 -8
- package/dist/introspection.mjs +29 -30
- package/dist/{json-CUZlv4HT.mjs → json-Db7XRD91.mjs} +2 -2
- package/dist/migration.d.mts +20 -21
- package/dist/migration.mjs +5 -6
- package/dist/{mysql-CKEKGnj4.mjs → mysql-B_cYzzX2.mjs} +237 -7
- package/dist/mysql.d.mts +1 -1
- package/dist/mysql.mjs +3 -3
- package/dist/{on-conflict-4MOBl51J.mjs → on-conflict-hfPW0KmQ.mjs} +3 -4
- package/dist/postgres.d.mts +5 -5
- package/dist/postgres.mjs +6 -6
- package/dist/{registry-CXV8u7Pt.mjs → registry-BRMLYwDp.mjs} +26 -29
- package/dist/{relational-DuQ9IHSb.mjs → relational-BZ3WDPzC.mjs} +2 -2
- package/dist/schema.d.mts +1 -1
- package/dist/schema.mjs +5 -6
- package/dist/{snapshot-DJpfmxhQ.mjs → snapshot-C-W65HEd.mjs} +5 -5
- package/dist/snapshot.d.mts +3 -3
- package/dist/snapshot.mjs +5 -7
- package/dist/{source-DGO3DRgg.mjs → source-BcS2AsIg.mjs} +6 -8
- package/dist/{serialize-CFtYYAdk.mjs → sqlite-Cg0nwYEH.mjs} +326 -12
- package/dist/sqlite.d.mts +2 -2
- package/dist/sqlite.mjs +2 -2
- package/dist/{standard-BTVYKh_F.mjs → standard-DfcZEVOj.mjs} +1 -1
- package/dist/{table-D6rcs8SB.mjs → table-Bp5irMSj.mjs} +2 -3
- package/dist/{types-Deo_q43Y.d.mts → types-BK1COGZe.d.mts} +1113 -1128
- package/dist/{types-g-vVvj1B.mjs → types-JM3FcAnX.mjs} +7 -8
- package/dist/{types-CSNJTYaM.d.mts → types-JSZHpUEj.d.mts} +83 -84
- package/dist/{value-b6OFZXVS.mjs → value-Bi71Agyf.mjs} +1 -1
- package/dist/vite/ambient.d.ts +309 -340
- package/dist/vite.d.mts +5 -6
- package/dist/vite.mjs +3 -4
- package/docs/dialects-and-execution.md +45 -55
- package/docs/getting-started.md +4 -4
- package/docs/guides/better-auth.md +57 -0
- package/docs/guides/compose-queries.md +24 -67
- package/docs/guides/drizzle.md +23 -23
- package/docs/guides/extensions/dialects.md +4 -4
- package/docs/guides/extensions/sources-and-clauses.md +15 -15
- package/docs/guides/extensions/typed-expressions.md +13 -17
- package/docs/guides/extensions/unsafe-syntax.md +3 -3
- package/docs/guides/json.md +7 -7
- package/docs/guides/mutations.md +14 -21
- package/docs/guides/select/conditions.md +6 -8
- package/docs/guides/select/grouping-and-windows.md +4 -15
- package/docs/guides/select/ordering-and-pagination.md +6 -19
- package/docs/guides/select/overview.md +12 -26
- package/docs/guides/sql-templates.md +20 -24
- package/docs/guides/vite-plugin.md +9 -13
- package/docs/index.md +5 -7
- package/docs/query-model/fragments.md +4 -15
- package/docs/query-model/result-shapes.md +11 -14
- package/docs/query-model/source-scope.md +31 -49
- package/docs/reference/mysql-snapshot.md +2 -5
- package/docs/reference/postgres-snapshot.md +3 -3
- package/docs/reference/sqlite-snapshot.md +2 -5
- package/docs/reference/supported-surface.md +26 -26
- package/docs/schema/catalog-model.md +2 -5
- package/docs/schema/code-generation.md +18 -18
- package/docs/schema/columns-and-writes.md +17 -25
- package/docs/schema/constraints-and-indexes.md +36 -52
- package/docs/schema/ddl-emission.md +6 -6
- package/docs/schema/diff.md +5 -5
- package/docs/schema/introspection.md +7 -7
- package/docs/schema/migration-plans.md +9 -9
- package/docs/schema/snapshots.md +3 -3
- package/docs/schema/storage-and-schema-sql.md +11 -11
- package/docs/schema/tables-and-names.md +11 -14
- package/docs/sql-semantic-types.md +10 -10
- package/docs/troubleshooting.md +10 -10
- package/package.json +21 -33
- package/skills/qubu/agents/openai.yaml +3 -3
- package/dist/column-D-8OqGuV.mjs +0 -328
- package/dist/column-LV7oGQde.mjs +0 -296
- package/dist/drizzle-mysql.d.mts +0 -24
- package/dist/drizzle-mysql.mjs +0 -72
- package/dist/drizzle-postgres.d.mts +0 -24
- package/dist/drizzle-postgres.mjs +0 -73
- package/dist/drizzle-sqlite.d.mts +0 -57
- package/dist/drizzle-sqlite.mjs +0 -108
- package/dist/drizzle.d.mts +0 -13
- package/dist/drizzle.mjs +0 -2
- package/dist/errors-BGCoLe_r.mjs +0 -14
- package/dist/postgres-BK2APkKP.mjs +0 -236
- package/dist/runtime-Cn_Xgzta.mjs +0 -193
- package/dist/sqlite-CrsK0Fza.mjs +0 -320
- package/dist/types-DZsueVoI.d.mts +0 -45
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as canonicalJson } from "./canonical-
|
|
1
|
+
import { n as canonicalJson } from "./canonical-BXUguqfo.mjs";
|
|
2
2
|
//#region src/snapshot/complete-types.ts
|
|
3
3
|
/** The stable envelope tag shared by Snapshot v1 and the complete model. */
|
|
4
4
|
const completeSchemaSnapshotFormat = "qubu-schema";
|
|
@@ -139,7 +139,7 @@ function validateCompleteSnapshot(value, diagnostics) {
|
|
|
139
139
|
const opaqueObjects = validateObjects(value.opaqueObjects, ["opaqueObjects"], diagnostics, validateOpaqueObject);
|
|
140
140
|
const comments = validateObjects(value.comments, ["comments"], diagnostics, validateComment);
|
|
141
141
|
const ownership = validateObjects(value.ownership, ["ownership"], diagnostics, validateOwnership);
|
|
142
|
-
if (dialect === void 0 || namingPolicy === void 0 || namespace === void 0 || capabilities === void 0 || tables === void 0 || views === void 0 || sequences === void 0 || enums === void 0 || domains === void 0 || collations === void 0 || triggers === void 0 || routines === void 0 || partitions === void 0 || policies === void 0 || extensions === void 0 || deferredObjects === void 0 || opaqueObjects === void 0 || comments === void 0 || ownership === void 0) return
|
|
142
|
+
if (dialect === void 0 || namingPolicy === void 0 || namespace === void 0 || capabilities === void 0 || tables === void 0 || views === void 0 || sequences === void 0 || enums === void 0 || domains === void 0 || collations === void 0 || triggers === void 0 || routines === void 0 || partitions === void 0 || policies === void 0 || extensions === void 0 || deferredObjects === void 0 || opaqueObjects === void 0 || comments === void 0 || ownership === void 0) return;
|
|
143
143
|
const snapshot = {
|
|
144
144
|
format: completeSchemaSnapshotFormat,
|
|
145
145
|
version: 2,
|
|
@@ -177,7 +177,7 @@ function validateDialect(value, path, diagnostics) {
|
|
|
177
177
|
const version = integerValue(value.version, [...path, "version"], diagnostics);
|
|
178
178
|
if (version !== void 0 && version < 1) diagnostics.push(issue("invalid-snapshot", "Dialect version must be positive", [...path, "version"]));
|
|
179
179
|
if (version !== void 0 && version > 1) diagnostics.push(issue("future-version", `Unsupported dialect version: ${version}`, [...path, "version"]));
|
|
180
|
-
if (name === void 0 || version === void 0) return
|
|
180
|
+
if (name === void 0 || version === void 0) return;
|
|
181
181
|
return {
|
|
182
182
|
name,
|
|
183
183
|
version
|
|
@@ -252,7 +252,7 @@ function validateCapabilities(value, path, diagnostics) {
|
|
|
252
252
|
const visibility = value.visibility;
|
|
253
253
|
if (visibility !== "complete" && visibility !== "limited" && visibility !== "unknown") diagnostics.push(issue("invalid-snapshot", "Capability visibility is invalid", [...path, "visibility"]));
|
|
254
254
|
for (const key of required) if (typeof value[key] !== "boolean" && key !== "checkConstraintEnforcement" && key !== "visibility") diagnostics.push(issue("invalid-snapshot", "Capability must be boolean", [...path, key]));
|
|
255
|
-
if (diagnostics.some((diagnostic) => diagnostic.path.length === path.length + 1 && diagnostic.path.slice(0, path.length).every((part, i) => part === path[i]))) return
|
|
255
|
+
if (diagnostics.some((diagnostic) => diagnostic.path.length === path.length + 1 && diagnostic.path.slice(0, path.length).every((part, i) => part === path[i]))) return;
|
|
256
256
|
return result;
|
|
257
257
|
}
|
|
258
258
|
function validateObjects(value, path, diagnostics, validate) {
|
|
@@ -313,11 +313,11 @@ function validateTable(value, path, diagnostics) {
|
|
|
313
313
|
"constraints",
|
|
314
314
|
"indexes"
|
|
315
315
|
]);
|
|
316
|
-
if (!isRecord(value) || base === void 0) return
|
|
316
|
+
if (!isRecord(value) || base === void 0) return;
|
|
317
317
|
const columns = validateObjects(value.columns, [...path, "columns"], diagnostics, validateColumn);
|
|
318
318
|
const constraints = validateObjects(value.constraints, [...path, "constraints"], diagnostics, validateConstraint);
|
|
319
319
|
const indexes = validateObjects(value.indexes, [...path, "indexes"], diagnostics, validateIndex);
|
|
320
|
-
if (columns === void 0 || constraints === void 0 || indexes === void 0) return
|
|
320
|
+
if (columns === void 0 || constraints === void 0 || indexes === void 0) return;
|
|
321
321
|
return {
|
|
322
322
|
kind: "table",
|
|
323
323
|
id: base.id,
|
|
@@ -340,7 +340,7 @@ function validateColumn(value, path, diagnostics) {
|
|
|
340
340
|
"identity",
|
|
341
341
|
"onUpdate"
|
|
342
342
|
]);
|
|
343
|
-
if (!isRecord(value) || base === void 0) return
|
|
343
|
+
if (!isRecord(value) || base === void 0) return;
|
|
344
344
|
const ordinalPosition = integerValue(value.ordinalPosition, [...path, "ordinalPosition"], diagnostics);
|
|
345
345
|
const nullable = booleanValue(value.nullable, [...path, "nullable"], diagnostics);
|
|
346
346
|
const hasDefault = booleanValue(value.hasDefault, [...path, "hasDefault"], diagnostics);
|
|
@@ -350,7 +350,7 @@ function validateColumn(value, path, diagnostics) {
|
|
|
350
350
|
const generatedColumn = value.generatedColumn === void 0 ? void 0 : validateGenerated(value.generatedColumn, [...path, "generatedColumn"], diagnostics);
|
|
351
351
|
const identity = value.identity === void 0 ? void 0 : validateIdentity(value.identity, [...path, "identity"], diagnostics);
|
|
352
352
|
const onUpdate = value.onUpdate === void 0 ? void 0 : validateExpression(value.onUpdate, [...path, "onUpdate"], diagnostics);
|
|
353
|
-
if (ordinalPosition === void 0 || nullable === void 0 || hasDefault === void 0 || generated === void 0) return
|
|
353
|
+
if (ordinalPosition === void 0 || nullable === void 0 || hasDefault === void 0 || generated === void 0) return;
|
|
354
354
|
return {
|
|
355
355
|
kind: "column",
|
|
356
356
|
id: base.id,
|
|
@@ -395,12 +395,12 @@ function validateConstraint(value, path, diagnostics) {
|
|
|
395
395
|
"initially",
|
|
396
396
|
"validated"
|
|
397
397
|
]);
|
|
398
|
-
if (base === void 0) return
|
|
398
|
+
if (base === void 0) return;
|
|
399
399
|
if (kind === "check") {
|
|
400
400
|
const expression = validateExpression(value.expression, [...path, "expression"], diagnostics);
|
|
401
401
|
const timing = validateTiming(value, path, diagnostics);
|
|
402
402
|
const validated = optionalBoolean(value.validated, [...path, "validated"], diagnostics);
|
|
403
|
-
if (expression === void 0) return
|
|
403
|
+
if (expression === void 0) return;
|
|
404
404
|
return {
|
|
405
405
|
kind: "check",
|
|
406
406
|
id: base.id,
|
|
@@ -419,7 +419,7 @@ function validateConstraint(value, path, diagnostics) {
|
|
|
419
419
|
const match = validateMatch(value.match, [...path, "match"], diagnostics);
|
|
420
420
|
const timing = validateTiming(value, path, diagnostics);
|
|
421
421
|
const validated = optionalBoolean(value.validated, [...path, "validated"], diagnostics);
|
|
422
|
-
if (columns === void 0 || target === void 0) return
|
|
422
|
+
if (columns === void 0 || target === void 0) return;
|
|
423
423
|
return {
|
|
424
424
|
kind: "foreign-key",
|
|
425
425
|
id: base.id,
|
|
@@ -443,7 +443,7 @@ function validateConstraint(value, path, diagnostics) {
|
|
|
443
443
|
const backingIndex = value.backingIndex === void 0 ? void 0 : validateObjectReference(value.backingIndex, [...path, "backingIndex"], diagnostics);
|
|
444
444
|
const timing = validateTiming(value, path, diagnostics);
|
|
445
445
|
const validated = optionalBoolean(value.validated, [...path, "validated"], diagnostics);
|
|
446
|
-
if (columns === void 0) return
|
|
446
|
+
if (columns === void 0) return;
|
|
447
447
|
if (kind === "unique-constraint" && nulls === void 0) {
|
|
448
448
|
diagnostics.push(issue("invalid-snapshot", "Unique constraints require nulls semantics", [...path, "nulls"]));
|
|
449
449
|
return;
|
|
@@ -470,7 +470,7 @@ function validateIndex(value, path, diagnostics) {
|
|
|
470
470
|
"backingConstraint",
|
|
471
471
|
"method"
|
|
472
472
|
]);
|
|
473
|
-
if (!isRecord(value) || base === void 0) return
|
|
473
|
+
if (!isRecord(value) || base === void 0) return;
|
|
474
474
|
const terms = validateArray(value.terms, [...path, "terms"], diagnostics, validateIndexTerm);
|
|
475
475
|
if (terms !== void 0) validateSortedPositions(terms, [...path, "terms"], diagnostics);
|
|
476
476
|
const unique = booleanValue(value.unique, [...path, "unique"], diagnostics);
|
|
@@ -479,7 +479,7 @@ function validateIndex(value, path, diagnostics) {
|
|
|
479
479
|
const includedColumns = value.includedColumns === void 0 ? void 0 : validateIds(value.includedColumns, [...path, "includedColumns"], diagnostics, false);
|
|
480
480
|
const backingConstraint = value.backingConstraint === void 0 ? void 0 : validateObjectReference(value.backingConstraint, [...path, "backingConstraint"], diagnostics);
|
|
481
481
|
const method = value.method === void 0 ? void 0 : stringValue(value.method, [...path, "method"], diagnostics, true);
|
|
482
|
-
if (terms === void 0 || unique === void 0 || candidateKey === void 0) return
|
|
482
|
+
if (terms === void 0 || unique === void 0 || candidateKey === void 0) return;
|
|
483
483
|
return {
|
|
484
484
|
kind: "index",
|
|
485
485
|
id: base.id,
|
|
@@ -520,7 +520,7 @@ function validateIndexTerm(value, path, diagnostics) {
|
|
|
520
520
|
if (kind === "column") {
|
|
521
521
|
const column = stringValue(value.column, [...path, "column"], diagnostics, true);
|
|
522
522
|
const prefixLength = value.prefixLength === void 0 ? void 0 : validateValueFact(value.prefixLength, [...path, "prefixLength"], diagnostics);
|
|
523
|
-
if (column === void 0 || position === void 0) return
|
|
523
|
+
if (column === void 0 || position === void 0) return;
|
|
524
524
|
return {
|
|
525
525
|
kind: "column",
|
|
526
526
|
column,
|
|
@@ -533,7 +533,7 @@ function validateIndexTerm(value, path, diagnostics) {
|
|
|
533
533
|
}
|
|
534
534
|
if (kind === "expression") {
|
|
535
535
|
const expression = validateExpression(value.expression, [...path, "expression"], diagnostics);
|
|
536
|
-
if (expression === void 0 || position === void 0) return
|
|
536
|
+
if (expression === void 0 || position === void 0) return;
|
|
537
537
|
return {
|
|
538
538
|
kind: "expression",
|
|
539
539
|
expression,
|
|
@@ -554,14 +554,14 @@ function validateView(value, path, diagnostics) {
|
|
|
554
554
|
"securityBarrier",
|
|
555
555
|
"securityInvoker"
|
|
556
556
|
]);
|
|
557
|
-
if (!isRecord(value) || base === void 0) return
|
|
557
|
+
if (!isRecord(value) || base === void 0) return;
|
|
558
558
|
const columns = validateObjects(value.columns, [...path, "columns"], diagnostics, validateColumn);
|
|
559
559
|
const definition = validateExpression(value.definition, [...path, "definition"], diagnostics);
|
|
560
560
|
const dependencies = value.dependencies === void 0 ? void 0 : validateReferences(value.dependencies, [...path, "dependencies"], diagnostics);
|
|
561
561
|
const checkOption = validateCheckOption(value.checkOption, [...path, "checkOption"], diagnostics);
|
|
562
562
|
const securityBarrier = optionalBoolean(value.securityBarrier, [...path, "securityBarrier"], diagnostics);
|
|
563
563
|
const securityInvoker = optionalBoolean(value.securityInvoker, [...path, "securityInvoker"], diagnostics);
|
|
564
|
-
if (columns === void 0 || definition === void 0) return
|
|
564
|
+
if (columns === void 0 || definition === void 0) return;
|
|
565
565
|
return {
|
|
566
566
|
kind: value.kind,
|
|
567
567
|
id: base.id,
|
|
@@ -587,7 +587,7 @@ function validateSequence(value, path, diagnostics) {
|
|
|
587
587
|
"ownedBy",
|
|
588
588
|
"identity"
|
|
589
589
|
]);
|
|
590
|
-
if (!isRecord(value) || base === void 0) return
|
|
590
|
+
if (!isRecord(value) || base === void 0) return;
|
|
591
591
|
const storage = value.storage === void 0 ? void 0 : validateStorage(value.storage, [...path, "storage"], diagnostics);
|
|
592
592
|
const start = value.start === void 0 ? void 0 : validateValueFact(value.start, [...path, "start"], diagnostics);
|
|
593
593
|
const increment = value.increment === void 0 ? void 0 : validateValueFact(value.increment, [...path, "increment"], diagnostics);
|
|
@@ -615,9 +615,9 @@ function validateSequence(value, path, diagnostics) {
|
|
|
615
615
|
}
|
|
616
616
|
function validateEnum(value, path, diagnostics) {
|
|
617
617
|
const base = validateBase(value, path, "enum", void 0, diagnostics, ["values"]);
|
|
618
|
-
if (!isRecord(value) || base === void 0) return
|
|
618
|
+
if (!isRecord(value) || base === void 0) return;
|
|
619
619
|
const values = validateArray(value.values, [...path, "values"], diagnostics, validateEnumValue);
|
|
620
|
-
if (values === void 0) return
|
|
620
|
+
if (values === void 0) return;
|
|
621
621
|
let previous = -1;
|
|
622
622
|
for (const [index, item] of values.entries()) {
|
|
623
623
|
if (item.ordinalPosition <= previous) diagnostics.push(issue("non-canonical", "Enum labels must be sorted by ordinal position", [
|
|
@@ -662,12 +662,12 @@ function validateDomain(value, path, diagnostics) {
|
|
|
662
662
|
"default",
|
|
663
663
|
"constraints"
|
|
664
664
|
]);
|
|
665
|
-
if (!isRecord(value) || base === void 0) return
|
|
665
|
+
if (!isRecord(value) || base === void 0) return;
|
|
666
666
|
const storage = validateStorage(value.storage, [...path, "storage"], diagnostics);
|
|
667
667
|
const nullable = optionalBoolean(value.nullable, [...path, "nullable"], diagnostics);
|
|
668
668
|
const defaultValue = value.default === void 0 ? void 0 : validateValueFact(value.default, [...path, "default"], diagnostics);
|
|
669
669
|
const constraints = value.constraints === void 0 ? void 0 : validateArray(value.constraints, [...path, "constraints"], diagnostics, validateCheckConstraint);
|
|
670
|
-
if (storage === void 0) return
|
|
670
|
+
if (storage === void 0) return;
|
|
671
671
|
return {
|
|
672
672
|
kind: "domain",
|
|
673
673
|
id: base.id,
|
|
@@ -694,7 +694,7 @@ function validateCollation(value, path, diagnostics) {
|
|
|
694
694
|
"deterministic",
|
|
695
695
|
"version"
|
|
696
696
|
]);
|
|
697
|
-
if (!isRecord(value) || base === void 0) return
|
|
697
|
+
if (!isRecord(value) || base === void 0) return;
|
|
698
698
|
const provider = value.provider === void 0 ? void 0 : stringValue(value.provider, [...path, "provider"], diagnostics, true);
|
|
699
699
|
const locale = value.locale === void 0 ? void 0 : stringValue(value.locale, [...path, "locale"], diagnostics);
|
|
700
700
|
const deterministic = optionalBoolean(value.deterministic, [...path, "deterministic"], diagnostics);
|
|
@@ -720,7 +720,7 @@ function validateTrigger(value, path, diagnostics) {
|
|
|
720
720
|
"body",
|
|
721
721
|
"enabled"
|
|
722
722
|
]);
|
|
723
|
-
if (!isRecord(value) || base === void 0) return
|
|
723
|
+
if (!isRecord(value) || base === void 0) return;
|
|
724
724
|
const table = validateObjectReference(value.table, [...path, "table"], diagnostics);
|
|
725
725
|
const timing = validateTimingKind(value.timing, [...path, "timing"], diagnostics);
|
|
726
726
|
const events = validateEvents(value.events, [...path, "events"], diagnostics);
|
|
@@ -728,7 +728,7 @@ function validateTrigger(value, path, diagnostics) {
|
|
|
728
728
|
const condition = value.condition === void 0 ? void 0 : validateExpression(value.condition, [...path, "condition"], diagnostics);
|
|
729
729
|
const body = validateExpression(value.body, [...path, "body"], diagnostics);
|
|
730
730
|
const enabled = optionalBoolean(value.enabled, [...path, "enabled"], diagnostics);
|
|
731
|
-
if (table === void 0 || timing === void 0 || events === void 0 || body === void 0) return
|
|
731
|
+
if (table === void 0 || timing === void 0 || events === void 0 || body === void 0) return;
|
|
732
732
|
return {
|
|
733
733
|
kind: "trigger",
|
|
734
734
|
id: base.id,
|
|
@@ -755,7 +755,7 @@ function validateRoutine(value, path, diagnostics) {
|
|
|
755
755
|
"security",
|
|
756
756
|
"dependencies"
|
|
757
757
|
]);
|
|
758
|
-
if (!isRecord(value) || base === void 0) return
|
|
758
|
+
if (!isRecord(value) || base === void 0) return;
|
|
759
759
|
const routineKind = validateRoutineKind(value.routineKind, [...path, "routineKind"], diagnostics);
|
|
760
760
|
const parameters = validateArray(value.parameters, [...path, "parameters"], diagnostics, validateRoutineParameter);
|
|
761
761
|
if (parameters !== void 0) validateSortedPositions(parameters, [...path, "parameters"], diagnostics);
|
|
@@ -780,7 +780,7 @@ function validateRoutine(value, path, diagnostics) {
|
|
|
780
780
|
"unknown"
|
|
781
781
|
], [...path, "security"], diagnostics);
|
|
782
782
|
const dependencies = value.dependencies === void 0 ? void 0 : validateReferences(value.dependencies, [...path, "dependencies"], diagnostics);
|
|
783
|
-
if (routineKind === void 0 || parameters === void 0) return
|
|
783
|
+
if (routineKind === void 0 || parameters === void 0) return;
|
|
784
784
|
return {
|
|
785
785
|
kind: "routine",
|
|
786
786
|
id: base.id,
|
|
@@ -840,7 +840,7 @@ function validatePartition(value, path, diagnostics) {
|
|
|
840
840
|
"bound",
|
|
841
841
|
"default"
|
|
842
842
|
]);
|
|
843
|
-
if (!isRecord(value) || base === void 0) return
|
|
843
|
+
if (!isRecord(value) || base === void 0) return;
|
|
844
844
|
const parent = validateObjectReference(value.parent, [...path, "parent"], diagnostics);
|
|
845
845
|
const strategy = validateChoice(value.strategy, [
|
|
846
846
|
"range",
|
|
@@ -852,7 +852,7 @@ function validatePartition(value, path, diagnostics) {
|
|
|
852
852
|
const keyColumns = value.keyColumns === void 0 ? void 0 : validateIds(value.keyColumns, [...path, "keyColumns"], diagnostics, false);
|
|
853
853
|
const bound = value.bound === void 0 ? void 0 : validateExpression(value.bound, [...path, "bound"], diagnostics);
|
|
854
854
|
const defaultValue = optionalBoolean(value.default, [...path, "default"], diagnostics);
|
|
855
|
-
if (parent === void 0 || strategy === void 0) return
|
|
855
|
+
if (parent === void 0 || strategy === void 0) return;
|
|
856
856
|
return {
|
|
857
857
|
kind: "partition",
|
|
858
858
|
id: base.id,
|
|
@@ -874,7 +874,7 @@ function validatePolicy(value, path, diagnostics) {
|
|
|
874
874
|
"using",
|
|
875
875
|
"check"
|
|
876
876
|
]);
|
|
877
|
-
if (!isRecord(value) || base === void 0) return
|
|
877
|
+
if (!isRecord(value) || base === void 0) return;
|
|
878
878
|
const table = validateObjectReference(value.table, [...path, "table"], diagnostics);
|
|
879
879
|
const command = validateChoice(value.command, [
|
|
880
880
|
"all",
|
|
@@ -888,7 +888,7 @@ function validatePolicy(value, path, diagnostics) {
|
|
|
888
888
|
const permissive = optionalBoolean(value.permissive, [...path, "permissive"], diagnostics);
|
|
889
889
|
const using = value.using === void 0 ? void 0 : validateExpression(value.using, [...path, "using"], diagnostics);
|
|
890
890
|
const check = value.check === void 0 ? void 0 : validateExpression(value.check, [...path, "check"], diagnostics);
|
|
891
|
-
if (table === void 0 || command === void 0) return
|
|
891
|
+
if (table === void 0 || command === void 0) return;
|
|
892
892
|
return {
|
|
893
893
|
kind: "policy",
|
|
894
894
|
id: base.id,
|
|
@@ -910,13 +910,13 @@ function validateExtensionObject(value, path, diagnostics) {
|
|
|
910
910
|
"data",
|
|
911
911
|
"configuration"
|
|
912
912
|
]);
|
|
913
|
-
if (!isRecord(value) || base === void 0) return
|
|
913
|
+
if (!isRecord(value) || base === void 0) return;
|
|
914
914
|
const extensionName = stringValue(value.extensionName, [...path, "extensionName"], diagnostics, true);
|
|
915
915
|
const extensionVersion = value.extensionVersion === void 0 ? void 0 : stringValue(value.extensionVersion, [...path, "extensionVersion"], diagnostics);
|
|
916
916
|
const schema = value.schema === void 0 ? void 0 : stringValue(value.schema, [...path, "schema"], diagnostics, true);
|
|
917
917
|
const data = validateJsonValue(value.data, [...path, "data"], diagnostics);
|
|
918
918
|
const configuration = value.configuration === void 0 ? void 0 : validateJsonValue(value.configuration, [...path, "configuration"], diagnostics);
|
|
919
|
-
if (extensionName === void 0 || data === void 0) return
|
|
919
|
+
if (extensionName === void 0 || data === void 0) return;
|
|
920
920
|
return {
|
|
921
921
|
kind: "extension",
|
|
922
922
|
id: base.id,
|
|
@@ -935,11 +935,11 @@ function validateDeferredObject(value, path, diagnostics) {
|
|
|
935
935
|
"reason",
|
|
936
936
|
"data"
|
|
937
937
|
]);
|
|
938
|
-
if (!isRecord(value) || base === void 0) return
|
|
938
|
+
if (!isRecord(value) || base === void 0) return;
|
|
939
939
|
const objectKind = stringValue(value.objectKind, [...path, "objectKind"], diagnostics, true);
|
|
940
940
|
const reason = value.reason === void 0 ? void 0 : stringValue(value.reason, [...path, "reason"], diagnostics);
|
|
941
941
|
const data = value.data === void 0 ? void 0 : validateJsonValue(value.data, [...path, "data"], diagnostics);
|
|
942
|
-
if (objectKind === void 0) return
|
|
942
|
+
if (objectKind === void 0) return;
|
|
943
943
|
return {
|
|
944
944
|
kind: "deferred-object",
|
|
945
945
|
id: base.id,
|
|
@@ -956,11 +956,11 @@ function validateOpaqueObject(value, path, diagnostics) {
|
|
|
956
956
|
"data",
|
|
957
957
|
"sql"
|
|
958
958
|
]);
|
|
959
|
-
if (!isRecord(value) || base === void 0) return
|
|
959
|
+
if (!isRecord(value) || base === void 0) return;
|
|
960
960
|
const objectKind = stringValue(value.objectKind, [...path, "objectKind"], diagnostics, true);
|
|
961
961
|
const data = validateJsonValue(value.data, [...path, "data"], diagnostics);
|
|
962
962
|
const sql = value.sql === void 0 ? void 0 : validateExpression(value.sql, [...path, "sql"], diagnostics);
|
|
963
|
-
if (objectKind === void 0 || data === void 0) return
|
|
963
|
+
if (objectKind === void 0 || data === void 0) return;
|
|
964
964
|
return {
|
|
965
965
|
kind: "opaque-object",
|
|
966
966
|
id: base.id,
|
|
@@ -973,10 +973,10 @@ function validateOpaqueObject(value, path, diagnostics) {
|
|
|
973
973
|
}
|
|
974
974
|
function validateComment(value, path, diagnostics) {
|
|
975
975
|
const base = validateBase(value, path, "comment", void 0, diagnostics, ["object", "text"]);
|
|
976
|
-
if (!isRecord(value) || base === void 0) return
|
|
976
|
+
if (!isRecord(value) || base === void 0) return;
|
|
977
977
|
const object = validateObjectReference(value.object, [...path, "object"], diagnostics);
|
|
978
978
|
const text = stringValue(value.text, [...path, "text"], diagnostics);
|
|
979
|
-
if (object === void 0 || text === void 0) return
|
|
979
|
+
if (object === void 0 || text === void 0) return;
|
|
980
980
|
return {
|
|
981
981
|
kind: "comment",
|
|
982
982
|
id: base.id,
|
|
@@ -988,10 +988,10 @@ function validateComment(value, path, diagnostics) {
|
|
|
988
988
|
}
|
|
989
989
|
function validateOwnership(value, path, diagnostics) {
|
|
990
990
|
const base = validateBase(value, path, "ownership", void 0, diagnostics, ["object", "owner"]);
|
|
991
|
-
if (!isRecord(value) || base === void 0) return
|
|
991
|
+
if (!isRecord(value) || base === void 0) return;
|
|
992
992
|
const object = validateObjectReference(value.object, [...path, "object"], diagnostics);
|
|
993
993
|
const owner = stringValue(value.owner, [...path, "owner"], diagnostics, true);
|
|
994
|
-
if (object === void 0 || owner === void 0) return
|
|
994
|
+
if (object === void 0 || owner === void 0) return;
|
|
995
995
|
return {
|
|
996
996
|
kind: "ownership",
|
|
997
997
|
id: base.id,
|
|
@@ -1030,7 +1030,7 @@ function validateStorage(value, path, diagnostics) {
|
|
|
1030
1030
|
"real",
|
|
1031
1031
|
"text"
|
|
1032
1032
|
], [...path, "affinity"], diagnostics);
|
|
1033
|
-
if (dialect === void 0 || type === void 0) return
|
|
1033
|
+
if (dialect === void 0 || type === void 0) return;
|
|
1034
1034
|
return {
|
|
1035
1035
|
kind: "native",
|
|
1036
1036
|
dialect,
|
|
@@ -1113,7 +1113,7 @@ function validateIdentity(value, path, diagnostics) {
|
|
|
1113
1113
|
const generation = validateChoice(value.generation, ["always", "by-default"], [...path, "generation"], diagnostics);
|
|
1114
1114
|
const options = validateValueFactRecord(value.options, [...path, "options"], diagnostics);
|
|
1115
1115
|
const metadata = validateObjectMetadata(value, path, void 0, diagnostics);
|
|
1116
|
-
if (generation === void 0 || options === void 0 || value.kind !== "identity") return
|
|
1116
|
+
if (generation === void 0 || options === void 0 || value.kind !== "identity") return;
|
|
1117
1117
|
return {
|
|
1118
1118
|
kind: "identity",
|
|
1119
1119
|
generation,
|
|
@@ -1139,7 +1139,7 @@ function validateExpression(value, path, diagnostics) {
|
|
|
1139
1139
|
if (sql !== void 0 && sql !== sql.replace(/\r\n?/g, "\n")) diagnostics.push(issue("non-canonical", "Expression SQL must use LF line endings", [...path, "sql"]));
|
|
1140
1140
|
if (expressionKind === "unsafe" && dialect === void 0) diagnostics.push(issue("invalid-snapshot", "Unsafe expressions must carry a dialect tag", [...path, "dialect"]));
|
|
1141
1141
|
if (expressionKind !== void 0 && expressionKind !== "unsafe" && dialect !== void 0) diagnostics.push(issue("invalid-snapshot", "Only unsafe expressions may carry a dialect tag", [...path, "dialect"]));
|
|
1142
|
-
if (expressionKind === void 0 || sql === void 0 || value.kind !== "expression") return
|
|
1142
|
+
if (expressionKind === void 0 || sql === void 0 || value.kind !== "expression") return;
|
|
1143
1143
|
return {
|
|
1144
1144
|
kind: "expression",
|
|
1145
1145
|
expressionKind,
|
|
@@ -1230,7 +1230,7 @@ function validateProvenance(value, path, dialect, diagnostics) {
|
|
|
1230
1230
|
const sourceDialect = stringValue(value.dialect, [...path, "dialect"], diagnostics, true);
|
|
1231
1231
|
const sourcePath = value.path === void 0 ? void 0 : validatePath(value.path, [...path, "path"], diagnostics);
|
|
1232
1232
|
if (dialect !== void 0 && sourceDialect !== void 0 && sourceDialect !== dialect) diagnostics.push(issue("dialect-mismatch", `Provenance belongs to "${sourceDialect}" but snapshot dialect is "${dialect}"`, [...path, "dialect"]));
|
|
1233
|
-
if (kind === void 0 || sourceDialect === void 0) return
|
|
1233
|
+
if (kind === void 0 || sourceDialect === void 0) return;
|
|
1234
1234
|
return {
|
|
1235
1235
|
kind,
|
|
1236
1236
|
dialect: sourceDialect,
|
|
@@ -1276,7 +1276,7 @@ function validateExtension(value, path, dialect, diagnostics) {
|
|
|
1276
1276
|
if (version !== void 0 && version < 1) diagnostics.push(issue("invalid-snapshot", "Dialect extension version must be positive", [...path, "version"]));
|
|
1277
1277
|
if (version !== void 0 && version > 1) diagnostics.push(issue("future-version", `Unsupported dialect extension version: ${version}`, [...path, "version"]));
|
|
1278
1278
|
if (dialect !== void 0 && extensionDialect !== void 0 && extensionDialect !== dialect) diagnostics.push(issue("dialect-mismatch", `Dialect extension belongs to "${extensionDialect}" but snapshot dialect is "${dialect}"`, [...path, "dialect"]));
|
|
1279
|
-
if (extensionDialect === void 0 || version === void 0 || data === void 0) return
|
|
1279
|
+
if (extensionDialect === void 0 || version === void 0 || data === void 0) return;
|
|
1280
1280
|
return {
|
|
1281
1281
|
dialect: extensionDialect,
|
|
1282
1282
|
version,
|
|
@@ -1362,7 +1362,7 @@ function validateForeignKeyTarget(value, path, diagnostics) {
|
|
|
1362
1362
|
}
|
|
1363
1363
|
function validateIds(value, path, diagnostics, nonEmpty = true) {
|
|
1364
1364
|
const result = validateStrings(value, path, diagnostics, nonEmpty);
|
|
1365
|
-
if (result === void 0) return
|
|
1365
|
+
if (result === void 0) return;
|
|
1366
1366
|
const seen = /* @__PURE__ */ new Set();
|
|
1367
1367
|
for (const [index, id] of result.entries()) {
|
|
1368
1368
|
if (seen.has(id)) diagnostics.push(issue("non-canonical", "References cannot contain duplicate IDs", [...path, index]));
|
|
@@ -1457,7 +1457,7 @@ function validateRoutineKind(value, path, diagnostics) {
|
|
|
1457
1457
|
}
|
|
1458
1458
|
function validateEvents(value, path, diagnostics) {
|
|
1459
1459
|
const events = validateStrings(value, path, diagnostics, true);
|
|
1460
|
-
if (events === void 0) return
|
|
1460
|
+
if (events === void 0) return;
|
|
1461
1461
|
const allowed = /* @__PURE__ */ new Set([
|
|
1462
1462
|
"insert",
|
|
1463
1463
|
"update",
|
|
@@ -1481,7 +1481,7 @@ function validatePath(value, path, diagnostics) {
|
|
|
1481
1481
|
return result;
|
|
1482
1482
|
}
|
|
1483
1483
|
function validateChoice(value, choices, path, diagnostics) {
|
|
1484
|
-
if (value === void 0) return
|
|
1484
|
+
if (value === void 0) return;
|
|
1485
1485
|
if (choices.includes(value)) return value;
|
|
1486
1486
|
diagnostics.push(issue("invalid-snapshot", `Value must be one of ${choices.join(", ")}`, path));
|
|
1487
1487
|
}
|