@typed-sql/sqlite 2.0.0-rc.1 → 2.1.0-rc.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +3 -3
  3. package/dist/packages/sqlite/src/capabilities.d.ts +18 -0
  4. package/dist/packages/sqlite/src/capabilities.d.ts.map +1 -0
  5. package/dist/packages/sqlite/src/capabilities.js +155 -0
  6. package/dist/packages/sqlite/src/capabilities.js.map +1 -0
  7. package/dist/packages/sqlite/src/catalog/coercions.d.ts +6 -0
  8. package/dist/packages/sqlite/src/catalog/coercions.d.ts.map +1 -0
  9. package/dist/packages/sqlite/src/catalog/coercions.js +41 -0
  10. package/dist/packages/sqlite/src/catalog/coercions.js.map +1 -0
  11. package/dist/packages/sqlite/src/catalog/date-time.d.ts +5 -0
  12. package/dist/packages/sqlite/src/catalog/date-time.d.ts.map +1 -0
  13. package/dist/packages/sqlite/src/catalog/date-time.js +20 -0
  14. package/dist/packages/sqlite/src/catalog/date-time.js.map +1 -0
  15. package/dist/packages/sqlite/src/catalog/extensions.d.ts +5 -0
  16. package/dist/packages/sqlite/src/catalog/extensions.d.ts.map +1 -0
  17. package/dist/packages/sqlite/src/catalog/extensions.js +65 -0
  18. package/dist/packages/sqlite/src/catalog/extensions.js.map +1 -0
  19. package/dist/packages/sqlite/src/catalog/functions.d.ts +57 -0
  20. package/dist/packages/sqlite/src/catalog/functions.d.ts.map +1 -0
  21. package/dist/packages/sqlite/src/catalog/functions.js +165 -0
  22. package/dist/packages/sqlite/src/catalog/functions.js.map +1 -0
  23. package/dist/packages/sqlite/src/catalog/index.d.ts +8 -0
  24. package/dist/packages/sqlite/src/catalog/index.d.ts.map +1 -0
  25. package/dist/packages/sqlite/src/catalog/index.js +8 -0
  26. package/dist/packages/sqlite/src/catalog/index.js.map +1 -0
  27. package/dist/packages/sqlite/src/catalog/json.d.ts +5 -0
  28. package/dist/packages/sqlite/src/catalog/json.d.ts.map +1 -0
  29. package/dist/packages/sqlite/src/catalog/json.js +146 -0
  30. package/dist/packages/sqlite/src/catalog/json.js.map +1 -0
  31. package/dist/packages/sqlite/src/catalog/math.d.ts +4 -0
  32. package/dist/packages/sqlite/src/catalog/math.d.ts.map +1 -0
  33. package/dist/packages/sqlite/src/catalog/math.js +44 -0
  34. package/dist/packages/sqlite/src/catalog/math.js.map +1 -0
  35. package/dist/packages/sqlite/src/catalog/operators.d.ts +10 -0
  36. package/dist/packages/sqlite/src/catalog/operators.d.ts.map +1 -0
  37. package/dist/packages/sqlite/src/catalog/operators.js +52 -0
  38. package/dist/packages/sqlite/src/catalog/operators.js.map +1 -0
  39. package/dist/packages/sqlite/src/index.d.ts +5 -2
  40. package/dist/packages/sqlite/src/index.d.ts.map +1 -1
  41. package/dist/packages/sqlite/src/index.js +15 -16
  42. package/dist/packages/sqlite/src/index.js.map +1 -1
  43. package/dist/packages/sqlite/src/node-sqlite.d.ts +18 -3
  44. package/dist/packages/sqlite/src/node-sqlite.d.ts.map +1 -1
  45. package/dist/packages/sqlite/src/node-sqlite.js +136 -25
  46. package/dist/packages/sqlite/src/node-sqlite.js.map +1 -1
  47. package/dist/packages/sqlite/src/parser/index.d.ts +8 -0
  48. package/dist/packages/sqlite/src/parser/index.d.ts.map +1 -0
  49. package/dist/packages/sqlite/src/parser/index.js +4 -0
  50. package/dist/packages/sqlite/src/parser/index.js.map +1 -0
  51. package/dist/packages/sqlite/src/parser/parser.d.ts +14 -0
  52. package/dist/packages/sqlite/src/parser/parser.d.ts.map +1 -0
  53. package/dist/packages/sqlite/src/parser/parser.js +1122 -0
  54. package/dist/packages/sqlite/src/parser/parser.js.map +1 -0
  55. package/dist/packages/sqlite/src/parser/tokenizer.d.ts +14 -0
  56. package/dist/packages/sqlite/src/parser/tokenizer.d.ts.map +1 -0
  57. package/dist/packages/sqlite/src/parser/tokenizer.js +375 -0
  58. package/dist/packages/sqlite/src/parser/tokenizer.js.map +1 -0
  59. package/dist/packages/sqlite/src/parser/types.d.ts +313 -0
  60. package/dist/packages/sqlite/src/parser/types.d.ts.map +1 -0
  61. package/dist/packages/sqlite/src/parser/types.js +9 -0
  62. package/dist/packages/sqlite/src/parser/types.js.map +1 -0
  63. package/dist/packages/sqlite/src/parser/walk.d.ts +13 -0
  64. package/dist/packages/sqlite/src/parser/walk.d.ts.map +1 -0
  65. package/dist/packages/sqlite/src/parser/walk.js +180 -0
  66. package/dist/packages/sqlite/src/parser/walk.js.map +1 -0
  67. package/dist/packages/sqlite/src/prepared.d.ts +4 -3
  68. package/dist/packages/sqlite/src/prepared.d.ts.map +1 -1
  69. package/dist/packages/sqlite/src/prepared.js +7 -14
  70. package/dist/packages/sqlite/src/prepared.js.map +1 -1
  71. package/dist/packages/sqlite/src/provider.d.ts +27 -5
  72. package/dist/packages/sqlite/src/provider.d.ts.map +1 -1
  73. package/dist/packages/sqlite/src/provider.js +345 -14
  74. package/dist/packages/sqlite/src/provider.js.map +1 -1
  75. package/dist/packages/sqlite/src/resolver.d.ts +1 -1
  76. package/dist/packages/sqlite/src/resolver.d.ts.map +1 -1
  77. package/dist/packages/sqlite/src/resolver.js +989 -124
  78. package/dist/packages/sqlite/src/resolver.js.map +1 -1
  79. package/dist/packages/sqlite/src/runtime.d.ts +2 -0
  80. package/dist/packages/sqlite/src/runtime.d.ts.map +1 -1
  81. package/dist/packages/sqlite/src/runtime.js +1 -1
  82. package/dist/packages/sqlite/src/runtime.js.map +1 -1
  83. package/dist/packages/sqlite/src/schema-sql.d.ts +8 -0
  84. package/dist/packages/sqlite/src/schema-sql.d.ts.map +1 -0
  85. package/dist/packages/sqlite/src/schema-sql.js +157 -0
  86. package/dist/packages/sqlite/src/schema-sql.js.map +1 -0
  87. package/dist/packages/sqlite/src/semantics.d.ts +1 -1
  88. package/dist/packages/sqlite/src/semantics.d.ts.map +1 -1
  89. package/dist/packages/sqlite/src/semantics.js +44 -6
  90. package/dist/packages/sqlite/src/semantics.js.map +1 -1
  91. package/dist/packages/sqlite/src/snapshot.d.ts +10 -4
  92. package/dist/packages/sqlite/src/snapshot.d.ts.map +1 -1
  93. package/dist/packages/sqlite/src/snapshot.js +136 -3
  94. package/dist/packages/sqlite/src/snapshot.js.map +1 -1
  95. package/dist/packages/sqlite/src/support.d.ts +19 -0
  96. package/dist/packages/sqlite/src/support.d.ts.map +1 -0
  97. package/dist/packages/sqlite/src/support.js +59 -0
  98. package/dist/packages/sqlite/src/support.js.map +1 -0
  99. package/dist/packages/sqlite/src/type-policy.d.ts +3 -2
  100. package/dist/packages/sqlite/src/type-policy.d.ts.map +1 -1
  101. package/dist/packages/sqlite/src/type-policy.js +2 -12
  102. package/dist/packages/sqlite/src/type-policy.js.map +1 -1
  103. package/package.json +8 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,80 @@
1
1
  # @typed-sql/sqlite
2
2
 
3
+ ## 2.1.0-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Publish the coherent 2.1.0-rc.1 release-candidate train.
8
+
9
+ ## 2.1.0-rc.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 1c64475: Add the grammar-neutral parser toolkit and move first-party parsing, ASTs, tokenization, and walking into each grammar package. The historical multi-dialect AST parser is isolated as a deprecated typed-sql 2.x compatibility surface for removal in 3.0.
14
+ - e433feb: Allow non-empty arrays of typed SQL fragments to be interpolated directly as homogeneous,
15
+ comma-separated structure. Add fail-closed compiler analysis for direct map callbacks and fragment
16
+ literals, cardinality-independent artifacts, bounded prepared-cardinality caches, shared grammar
17
+ conformance, and runtime limits while preserving ordinary arrays as single bound values.
18
+ - 1c64475: Add canonical schema snapshot format 2 with isolated v1/v2 codecs, conservative v1 upgrades,
19
+ neutral relation/constraint/index/type/routine evidence, and complete provider introspection.
20
+ Resolvers now consume structural write and routine evidence, while drift, compatibility, manifests,
21
+ verification proofs, and plan artifacts bind to the schema format and canonical hash.
22
+ - 1c64475: Add versioned and compile-option-aware SQLite JSON, JSONB, date/time, math, and optional-extension
23
+ catalogs. Support JSON table-valued functions and an explicit application registry that preserves
24
+ scalar, aggregate, and window routine kinds in schema snapshot v2.
25
+ - 1c64475: Harden the optional Node SQLite adapter with connection-time SQLite version and compile-option
26
+ evidence, fail-closed generated-snapshot compatibility checks, policy-aligned storage codecs, and
27
+ schema-aware bounded statement-cache invalidation. The adapter's supported Node.js matrix is now
28
+ declared consistently as Node 22.13+, 24, and 26.
29
+ - 1c64475: Complete SQLite schema-v2 evidence for rowid aliases, STRICT and `WITHOUT ROWID` tables, generated
30
+ and hidden columns, virtual and shadow tables, checks, indexes, collations, triggers, and attached
31
+ databases. Preserve SQLite's primary-key nullability rules and use rowid evidence during query and
32
+ write analysis.
33
+ - 1c64475: Graduate the SQLite grammar and optional `node:sqlite` adapter to the stable release track. The
34
+ stable contract covers SQLite 3.39.0 through 3.53.4, keeps unknown newer libraries conservative,
35
+ and verifies the adapter on Node 22.13+, 24, and 26 while leaving the driver-neutral grammar usable
36
+ on typed-sql's general Node.js range.
37
+ - 1c64475: Resolve SQLite core built-ins, operators, coercions, arities, nullability, and in-band function
38
+ release boundaries from SQLite-owned catalog data. Add a stable diagnostic for invalid SQLite
39
+ built-in invocations and fail closed when version-gated functions lack usable server evidence.
40
+
41
+ ### Patch Changes
42
+
43
+ - 1c64475: Add deterministic versioned dialect capability states backed by normalized server versions,
44
+ settings, extensions, and compile options. Query manifests now invalidate on capability changes and
45
+ record evidence for capabilities each query uses, while the CLI exposes a human-readable capability
46
+ report. The boolean capability map remains available as an additive migration bridge.
47
+ - Updated dependencies [58bd4d1]
48
+ - Updated dependencies [58aa9ef]
49
+ - Updated dependencies [1c64475]
50
+ - Updated dependencies [65b662f]
51
+ - Updated dependencies [e433feb]
52
+ - Updated dependencies [0efc90c]
53
+ - Updated dependencies [ff0e3bb]
54
+ - Updated dependencies [6f5b977]
55
+ - Updated dependencies [1c64475]
56
+ - Updated dependencies [1c64475]
57
+ - Updated dependencies [1c64475]
58
+ - Updated dependencies [1c64475]
59
+ - @typed-sql/core@2.1.0-rc.0
60
+ - @typed-sql/ast@2.1.0-rc.0
61
+ - @typed-sql/schema@2.1.0-rc.0
62
+
63
+ ## 2.0.0
64
+
65
+ ### Major Changes
66
+
67
+ - Graduate the SQLite grammar and optional `node:sqlite` adapter to the stable release track with a
68
+ documented SQLite 3.39.0–3.53.4 language baseline, fail-closed version and compile-option gates,
69
+ snapshot v2 evidence, and runtime compatibility checks.
70
+
71
+ ## 2.0.0-rc.2
72
+
73
+ ### Patch Changes
74
+
75
+ - Align the experimental SQLite package with the stable 2.0.0 core, AST, and schema packages so npm
76
+ consumers retain one coherent set of branded query and fragment types.
77
+
3
78
  ## 2.0.0-rc.1
4
79
 
5
80
  ### Patch Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @typed-sql/sqlite
2
2
 
3
- The preview SQLite grammar for typed-sql. It provides sound inference for SQLite's dynamic type
3
+ The stable SQLite grammar for typed-sql. It provides sound inference for SQLite's dynamic type
4
4
  system, schema introspection, and an optional application-owned `node:sqlite` adapter.
5
5
 
6
6
  ```sh
@@ -28,7 +28,7 @@ only when the application selects that adapter. STRICT tables receive precise de
28
28
  ordinary SQLite tables use a storage-class union because their declared affinity does not constrain
29
29
  the values they may contain.
30
30
 
31
- SQLite support remains on the experimental release track while its grammar and adapter contracts
32
- are exercised by early adopters.
31
+ The package is on the stable release track. The grammar follows typed-sql's general Node.js range;
32
+ the optional adapter checks its narrower supported Node and bundled-SQLite matrix when loaded.
33
33
 
34
34
  MIT © typed-sql contributors
@@ -0,0 +1,18 @@
1
+ import { type DialectCapabilityStates, type DialectServerEvidence } from "@typed-sql/core";
2
+ import type { SqliteSchemaSnapshot } from "./snapshot.js";
3
+ export declare const SQLITE_CAPABILITIES: Readonly<{
4
+ aggregateFilter: true;
5
+ arrays: false;
6
+ distinctOn: false;
7
+ fullJoins: true;
8
+ lockingReads: false;
9
+ recursiveCtes: true;
10
+ returning: true;
11
+ setOperations: true;
12
+ strictTables: true;
13
+ }>;
14
+ export declare function assertSqliteServerEvidence(server: DialectServerEvidence): void;
15
+ export declare function sqliteServerEvidence(version: string, compileOptions?: readonly string[]): DialectServerEvidence;
16
+ export declare function resolveSqliteCapabilities(snapshot: SqliteSchemaSnapshot): DialectCapabilityStates;
17
+ export { parseSqliteVersion } from "./support.js";
18
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAG3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAU1D,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAC;AAiBH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAO9E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,GAAE,SAAS,MAAM,EAAO,GAAG,qBAAqB,CAUnH;AAwGD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,uBAAuB,CASjG;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { defineDialectCapabilityStates, defineDialectServerEvidence, } from "@typed-sql/core";
2
+ import { compareSqliteVersions, parseSqliteVersion, SQLITE_LANGUAGE_SUPPORT, sqliteVersionSupport, } from "./support.js";
3
+ import { SQLITE_DIALECT_VERSION } from "./version.js";
4
+ export const SQLITE_CAPABILITIES = Object.freeze({
5
+ aggregateFilter: true,
6
+ arrays: false,
7
+ distinctOn: false,
8
+ fullJoins: true,
9
+ lockingReads: false,
10
+ recursiveCtes: true,
11
+ returning: true,
12
+ setOperations: true,
13
+ strictTables: true,
14
+ });
15
+ const versionGates = Object.freeze({
16
+ aggregateFilter: "3.30.0",
17
+ fullJoins: "3.39.0",
18
+ recursiveCtes: "3.8.3",
19
+ returning: "3.35.0",
20
+ strictTables: "3.37.0",
21
+ });
22
+ const unsupportedReasons = Object.freeze({
23
+ arrays: "SQLite has no native SQL array constructor or array value type.",
24
+ distinctOn: "SQLite does not implement DISTINCT ON.",
25
+ lockingReads: "SQLite does not implement row-level SELECT locking clauses.",
26
+ });
27
+ export function assertSqliteServerEvidence(server) {
28
+ if (Object.keys(server.settings).length > 0) {
29
+ throw new TypeError("SQLite server evidence does not allow semantic settings");
30
+ }
31
+ if (server.features.some((feature) => !/^[A-Z][A-Z0-9_]*(?:=.*)?$/u.test(feature))) {
32
+ throw new TypeError("SQLite server features must be normalized compile options");
33
+ }
34
+ }
35
+ export function sqliteServerEvidence(version, compileOptions = []) {
36
+ const parsed = parseSqliteVersion(version);
37
+ if (parsed === undefined)
38
+ throw new TypeError(`Cannot normalize SQLite version ${JSON.stringify(version)}`);
39
+ return defineDialectServerEvidence({
40
+ product: "sqlite",
41
+ version,
42
+ versionKey: parsed.join("."),
43
+ features: [...compileOptions],
44
+ settings: {},
45
+ });
46
+ }
47
+ function grammarEvidence() {
48
+ return Object.freeze({ kind: "grammar", key: "grammarVersion", value: SQLITE_DIALECT_VERSION });
49
+ }
50
+ function serverVersion(snapshot) {
51
+ const text = snapshot.server?.versionKey ?? snapshot.version;
52
+ if (text === undefined)
53
+ return { text: "missing" };
54
+ const parsed = parseSqliteVersion(text);
55
+ return { text, ...(parsed === undefined ? {} : { parsed }) };
56
+ }
57
+ function serverFeatureEvidence(snapshot) {
58
+ return (snapshot.server?.features ?? []).map((feature) => ({
59
+ kind: "feature",
60
+ key: feature,
61
+ value: "present",
62
+ }));
63
+ }
64
+ function capabilityState(capability, snapshot) {
65
+ const grammar = grammarEvidence();
66
+ const server = snapshot.server;
67
+ if (server !== undefined && server.product !== "sqlite") {
68
+ return {
69
+ level: "unsupported",
70
+ reason: `${server.product} is not SQLite server evidence.`,
71
+ diagnostic: "TSQ403",
72
+ evidence: [grammar, { kind: "server-version", key: server.product, value: server.versionKey }],
73
+ };
74
+ }
75
+ if (!SQLITE_CAPABILITIES[capability]) {
76
+ return {
77
+ level: "unsupported",
78
+ reason: unsupportedReasons[capability] ?? "The SQLite grammar does not implement this feature.",
79
+ diagnostic: "TSQ401",
80
+ evidence: [grammar],
81
+ };
82
+ }
83
+ const minimum = versionGates[capability];
84
+ const actual = serverVersion(snapshot);
85
+ const evidence = [grammar, ...serverFeatureEvidence(snapshot)];
86
+ if (actual.text !== "missing")
87
+ evidence.push({ kind: "server-version", key: "sqlite", value: actual.text });
88
+ if (actual.parsed === undefined) {
89
+ return {
90
+ level: "conservative",
91
+ reason: "Exact support requires normalized SQLite server-version evidence.",
92
+ ...(minimum === undefined ? {} : { since: minimum }),
93
+ diagnostic: "TSQ402",
94
+ evidence,
95
+ };
96
+ }
97
+ const support = sqliteVersionSupport(snapshot.server?.version ?? snapshot.version ?? actual.text);
98
+ if (support === "prerelease") {
99
+ return {
100
+ level: "conservative",
101
+ reason: "Pre-release SQLite versions require an explicit canary support policy.",
102
+ ...(minimum === undefined ? {} : { since: minimum }),
103
+ diagnostic: "TSQ403",
104
+ evidence,
105
+ };
106
+ }
107
+ if (capability === "aggregateFilter" && snapshot.server?.features.includes("OMIT_WINDOWFUNC") === true) {
108
+ return {
109
+ level: "unsupported",
110
+ reason: "The SQLite library was compiled with OMIT_WINDOWFUNC, which removes aggregate FILTER syntax.",
111
+ ...(minimum === undefined ? {} : { since: minimum }),
112
+ diagnostic: "TSQ406",
113
+ evidence,
114
+ };
115
+ }
116
+ if (minimum !== undefined && compareSqliteVersions(actual.parsed, parseSqliteVersion(minimum)) < 0) {
117
+ return {
118
+ level: "unsupported",
119
+ reason: `SQLite ${minimum} or newer is required for this feature.`,
120
+ since: minimum,
121
+ diagnostic: "TSQ404",
122
+ evidence,
123
+ };
124
+ }
125
+ if (support === "below-supported" || support === "newer-than-tested") {
126
+ return {
127
+ level: "conservative",
128
+ reason: support === "below-supported"
129
+ ? `SQLite ${SQLITE_LANGUAGE_SUPPORT.minimum} is the minimum fully supported language baseline.`
130
+ : `SQLite ${actual.text} is newer than the tested ${SQLITE_LANGUAGE_SUPPORT.maximum} ceiling.`,
131
+ ...(minimum === undefined ? {} : { since: minimum }),
132
+ diagnostic: "TSQ403",
133
+ evidence,
134
+ };
135
+ }
136
+ return {
137
+ level: "exact",
138
+ reason: minimum === undefined
139
+ ? "The selected SQLite version is within the tested language support band."
140
+ : `The selected SQLite version satisfies the ${minimum} feature boundary.`,
141
+ ...(minimum === undefined ? {} : { since: minimum }),
142
+ evidence,
143
+ };
144
+ }
145
+ export function resolveSqliteCapabilities(snapshot) {
146
+ if (snapshot.server !== undefined)
147
+ assertSqliteServerEvidence(snapshot.server);
148
+ const states = Object.fromEntries(Object.keys(SQLITE_CAPABILITIES).map((capability) => [
149
+ capability,
150
+ capabilityState(capability, snapshot),
151
+ ]));
152
+ return defineDialectCapabilityStates(states, Object.keys(SQLITE_CAPABILITIES));
153
+ }
154
+ export { parseSqliteVersion } from "./support.js";
155
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../../src/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type SqliteAffinity = "integer" | "text" | "blob" | "real" | "numeric";
2
+ export declare function sqliteAffinity(databaseType: string): SqliteAffinity;
3
+ export declare function normalizeSqliteDatabaseType(databaseType: string): string;
4
+ export declare function isSqliteNumericDatabaseType(databaseType: string | undefined): boolean;
5
+ export declare function sqliteNumericOperands(left: string | undefined, right: string | undefined): boolean;
6
+ //# sourceMappingURL=coercions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coercions.d.ts","sourceRoot":"","sources":["../../../../../src/catalog/coercions.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9E,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAOnE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAMxE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErF;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAElG"}
@@ -0,0 +1,41 @@
1
+ const SQLITE_NUMERIC_DATABASE_TYPES = Object.freeze(new Set([
2
+ "tinyint",
3
+ "smallint",
4
+ "mediumint",
5
+ "int",
6
+ "integer",
7
+ "bigint",
8
+ "decimal",
9
+ "numeric",
10
+ "float",
11
+ "double",
12
+ "real",
13
+ "bit",
14
+ "year",
15
+ ]));
16
+ export function sqliteAffinity(databaseType) {
17
+ const type = databaseType.trim().toUpperCase();
18
+ if (type.includes("INT"))
19
+ return "integer";
20
+ if (type.includes("CHAR") || type.includes("CLOB") || type.includes("TEXT"))
21
+ return "text";
22
+ if (type.length === 0 || type.includes("BLOB"))
23
+ return "blob";
24
+ if (type.includes("REAL") || type.includes("FLOA") || type.includes("DOUB"))
25
+ return "real";
26
+ return "numeric";
27
+ }
28
+ export function normalizeSqliteDatabaseType(databaseType) {
29
+ return databaseType
30
+ .trim()
31
+ .toLowerCase()
32
+ .replace(/\s+unsigned$/u, "")
33
+ .replace(/\(.*/u, "");
34
+ }
35
+ export function isSqliteNumericDatabaseType(databaseType) {
36
+ return databaseType !== undefined && SQLITE_NUMERIC_DATABASE_TYPES.has(normalizeSqliteDatabaseType(databaseType));
37
+ }
38
+ export function sqliteNumericOperands(left, right) {
39
+ return isSqliteNumericDatabaseType(left) && isSqliteNumericDatabaseType(right);
40
+ }
41
+ //# sourceMappingURL=coercions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coercions.js","sourceRoot":"","sources":["../../../../../src/catalog/coercions.ts"],"names":[],"mappings":"AAAA,MAAM,6BAA6B,GAAG,MAAM,CAAC,MAAM,CACjD,IAAI,GAAG,CAAC;IACN,SAAS;IACT,UAAU;IACV,WAAW;IACX,KAAK;IACL,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;IACT,OAAO;IACP,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC,CACH,CAAC;AAIF,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3F,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC3F,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAoB;IAC9D,OAAO,YAAY;SAChB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,YAAgC;IAC1E,OAAO,YAAY,KAAK,SAAS,IAAI,6BAA6B,CAAC,GAAG,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC,CAAC;AACpH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB,EAAE,KAAyB;IACvF,OAAO,2BAA2B,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,KAAK,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SqliteBuiltinDefinition } from "./functions.js";
2
+ /** SQLite date/time functions. Text modifiers are interpreted by the resolver. */
3
+ export declare const SQLITE_DATE_TIME_FUNCTIONS: readonly SqliteBuiltinDefinition[];
4
+ export declare const SQLITE_CURRENT_TIME_KEYWORDS: Readonly<Set<string>>;
5
+ //# sourceMappingURL=date-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-time.d.ts","sourceRoot":"","sources":["../../../../../src/catalog/date-time.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAI9D,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,EAAE,SAAS,uBAAuB,EAevE,CAAC;AAEH,eAAO,MAAM,4BAA4B,uBAExC,CAAC"}
@@ -0,0 +1,20 @@
1
+ const unlimited = Number.POSITIVE_INFINITY;
2
+ /** SQLite date/time functions. Text modifiers are interpreted by the resolver. */
3
+ export const SQLITE_DATE_TIME_FUNCTIONS = Object.freeze([
4
+ { name: "DATE", kind: "scalar", arguments: [0, unlimited], result: "text-always-nullable", volatility: "stable" },
5
+ { name: "TIME", kind: "scalar", arguments: [0, unlimited], result: "text-always-nullable", volatility: "stable" },
6
+ { name: "DATETIME", kind: "scalar", arguments: [0, unlimited], result: "text-always-nullable", volatility: "stable" },
7
+ { name: "JULIANDAY", kind: "scalar", arguments: [0, unlimited], result: "real-nullable", volatility: "stable" },
8
+ { name: "UNIXEPOCH", kind: "scalar", arguments: [0, unlimited], result: "unixepoch", volatility: "stable" },
9
+ { name: "STRFTIME", kind: "scalar", arguments: [1, unlimited], result: "text-always-nullable", volatility: "stable" },
10
+ {
11
+ name: "TIMEDIFF",
12
+ kind: "scalar",
13
+ arguments: [2, 2],
14
+ result: "text-always-nullable",
15
+ availableSince: "3.43.0",
16
+ volatility: "stable",
17
+ },
18
+ ]);
19
+ export const SQLITE_CURRENT_TIME_KEYWORDS = Object.freeze(new Set(["CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP"]));
20
+ //# sourceMappingURL=date-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-time.js","sourceRoot":"","sources":["../../../../../src/catalog/date-time.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAE3C,kFAAkF;AAClF,MAAM,CAAC,MAAM,0BAA0B,GAAuC,MAAM,CAAC,MAAM,CAAC;IAC1F,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE;IACjH,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE;IACjH,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE;IACrH,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC/G,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC3G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE;IACrH;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,sBAAsB;QAC9B,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CACvD,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAC/D,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { SqliteBuiltinDefinition, SqliteTableFunctionDefinition } from "./functions.js";
2
+ /** Optional families whose availability is established by compile-option evidence. */
3
+ export declare const SQLITE_EXTENSION_FUNCTIONS: readonly SqliteBuiltinDefinition[];
4
+ export declare const SQLITE_EXTENSION_TABLE_FUNCTIONS: readonly SqliteTableFunctionDefinition[];
5
+ //# sourceMappingURL=extensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../../../src/catalog/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAE7F,sFAAsF;AACtF,eAAO,MAAM,0BAA0B,EAAE,SAAS,uBAAuB,EAqDvE,CAAC;AAEH,eAAO,MAAM,gCAAgC,EAAE,SAAS,6BAA6B,EAQnF,CAAC"}
@@ -0,0 +1,65 @@
1
+ /** Optional families whose availability is established by compile-option evidence. */
2
+ export const SQLITE_EXTENSION_FUNCTIONS = Object.freeze([
3
+ {
4
+ name: "SOUNDEX",
5
+ kind: "scalar",
6
+ arguments: [1, 1],
7
+ result: "text-nullable",
8
+ requiredCompileOption: "SOUNDEX",
9
+ volatility: "immutable",
10
+ },
11
+ {
12
+ name: "SQLITE_OFFSET",
13
+ kind: "scalar",
14
+ arguments: [1, 1],
15
+ result: "integer-always-nullable",
16
+ requiredCompileOption: "ENABLE_OFFSET_SQL_FUNC",
17
+ volatility: "stable",
18
+ },
19
+ {
20
+ name: "MEDIAN",
21
+ kind: "aggregate",
22
+ arguments: [1, 1],
23
+ result: "real-nullable",
24
+ availableSince: "3.51.0",
25
+ requiredCompileOption: "ENABLE_PERCENTILE",
26
+ volatility: "immutable",
27
+ },
28
+ {
29
+ name: "PERCENTILE",
30
+ kind: "aggregate",
31
+ arguments: [2, 2],
32
+ result: "real-nullable",
33
+ availableSince: "3.51.0",
34
+ requiredCompileOption: "ENABLE_PERCENTILE",
35
+ volatility: "immutable",
36
+ },
37
+ {
38
+ name: "PERCENTILE_CONT",
39
+ kind: "aggregate",
40
+ arguments: [2, 2],
41
+ result: "real-nullable",
42
+ availableSince: "3.51.0",
43
+ requiredCompileOption: "ENABLE_PERCENTILE",
44
+ volatility: "immutable",
45
+ },
46
+ {
47
+ name: "PERCENTILE_DISC",
48
+ kind: "aggregate",
49
+ arguments: [2, 2],
50
+ result: "real-nullable",
51
+ availableSince: "3.51.0",
52
+ requiredCompileOption: "ENABLE_PERCENTILE",
53
+ volatility: "immutable",
54
+ },
55
+ ]);
56
+ export const SQLITE_EXTENSION_TABLE_FUNCTIONS = Object.freeze([
57
+ {
58
+ name: "CARRAY",
59
+ arguments: [1, 3],
60
+ result: "carray",
61
+ availableSince: "3.51.0",
62
+ requiredCompileOption: "ENABLE_CARRAY",
63
+ },
64
+ ]);
65
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../../src/catalog/extensions.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,CAAC,MAAM,0BAA0B,GAAuC,MAAM,CAAC,MAAM,CAAC;IAC1F;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,eAAe;QACvB,qBAAqB,EAAE,SAAS;QAChC,UAAU,EAAE,WAAW;KACxB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,yBAAyB;QACjC,qBAAqB,EAAE,wBAAwB;QAC/C,UAAU,EAAE,QAAQ;KACrB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,mBAAmB;QAC1C,UAAU,EAAE,WAAW;KACxB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,mBAAmB;QAC1C,UAAU,EAAE,WAAW;KACxB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,mBAAmB;QAC1C,UAAU,EAAE,WAAW;KACxB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,eAAe;QACvB,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,mBAAmB;QAC1C,UAAU,EAAE,WAAW;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAA6C,MAAM,CAAC,MAAM,CAAC;IACtG;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,EAAE,QAAQ;QAChB,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,eAAe;KACvC;CACF,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ export type SqliteBuiltinKind = "aggregate" | "scalar" | "window";
2
+ export type SqliteBuiltinResult = "coalesce" | "blob" | "blob-nullable" | "concat" | "concat-ws" | "first-argument" | "first-argument-nullable" | "flexible-nullable" | "iif" | "integer" | "integer-always-nullable" | "integer-nullable" | "json-extract" | "jsonb-extract" | "lag-lead" | "nullif" | "numeric-from-arguments" | "numeric-nullable" | "real" | "real-nullable" | "text" | "text-always-nullable" | "text-nullable" | "unixepoch" | "unknown-nullable";
3
+ export interface SqliteBuiltinDefinition {
4
+ readonly name: string;
5
+ readonly kind: SqliteBuiltinKind;
6
+ readonly arguments: readonly [minimum: number, maximum: number];
7
+ readonly result: SqliteBuiltinResult;
8
+ readonly availableSince?: string;
9
+ readonly argumentPattern?: "even" | "odd";
10
+ readonly omittedByCompileOption?: string;
11
+ readonly requiredCompileOption?: string;
12
+ readonly resolvable?: boolean;
13
+ readonly volatility?: "immutable" | "stable" | "volatile";
14
+ }
15
+ export interface SqliteTableFunctionDefinition {
16
+ readonly name: string;
17
+ readonly arguments: readonly [minimum: number, maximum: number];
18
+ readonly availableSince: string;
19
+ readonly omittedByCompileOption?: string;
20
+ readonly requiredCompileOption?: string;
21
+ readonly result: "carray" | "json" | "jsonb";
22
+ }
23
+ /**
24
+ * Reviewed SQLite core catalog for the supported language band. JSON, date/time,
25
+ * math, and loadable-extension families are expanded by their dedicated catalog
26
+ * modules; classification-only rows keep structural validation fail-closed.
27
+ */
28
+ export declare const SQLITE_BUILTIN_FUNCTIONS: readonly SqliteBuiltinDefinition[];
29
+ export type SqliteBuiltinResolution = {
30
+ readonly status: "exact";
31
+ readonly definition: SqliteBuiltinDefinition;
32
+ } | {
33
+ readonly status: "arity";
34
+ readonly definitions: readonly SqliteBuiltinDefinition[];
35
+ } | {
36
+ readonly status: "compile-evidence-required";
37
+ readonly option: string;
38
+ } | {
39
+ readonly status: "compile-option-unavailable";
40
+ readonly option: string;
41
+ } | {
42
+ readonly status: "evidence-required";
43
+ readonly since: string;
44
+ } | {
45
+ readonly status: "outside-supported-version";
46
+ readonly version: string;
47
+ } | {
48
+ readonly status: "unavailable";
49
+ readonly since: string;
50
+ } | {
51
+ readonly status: "unknown";
52
+ };
53
+ export declare function resolveSqliteBuiltin(functionName: string, arity: number, version: string | undefined, features?: readonly string[]): SqliteBuiltinResolution;
54
+ export declare function isSqliteAggregateFunction(functionName: string): boolean;
55
+ export declare function isSqliteWindowFunction(functionName: string): boolean;
56
+ export declare function sqliteBuiltinVolatility(functionName: string): SqliteBuiltinDefinition["volatility"] | undefined;
57
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../../../src/catalog/functions.ts"],"names":[],"mappings":"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"}