@typed-sql/compiler 1.0.0-beta.1 → 1.0.0-beta.2

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../../src/structural.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,cAAc,CAAC;AAGtE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,SAAS;QAC3B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;QAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,EAAE,CAAC;CACL;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,yBAAyB,EAAE,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AA6C/F;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EACrB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,EACtC,eAAe,EAAE,MAAM,GACtB,mBAAmB,GAAG,SAAS,CAsGjC;AAsDD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,SAAS;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAAE,GACxF,MAAM,CAkBR"}
@@ -0,0 +1,225 @@
1
+ import { extractStructuralOperand, parseStructuralInterpolation } from "./scanner.js";
2
+ function variantCount(conditionCount, maximum) {
3
+ let count = 1;
4
+ for (let index = 0; index < conditionCount; index += 1) {
5
+ if (count > maximum / 2)
6
+ return maximum + 1;
7
+ count *= 2;
8
+ }
9
+ return count;
10
+ }
11
+ function withParameterOffset(query, offset, placeholder) {
12
+ if (offset === 0 || query.parameterCount === 0)
13
+ return query;
14
+ const sqlChunks = [];
15
+ const offsetChunks = [];
16
+ let cursor = 0;
17
+ for (const interpolation of query.interpolations) {
18
+ sqlChunks.push(query.sql.slice(cursor, interpolation.sqlStart));
19
+ offsetChunks.push(query.sqlOffsetMap.slice(cursor, interpolation.sqlStart));
20
+ const marker = placeholder(offset + interpolation.index);
21
+ sqlChunks.push(marker);
22
+ offsetChunks.push(Array.from({ length: marker.length }, () => interpolation.sourceStart));
23
+ cursor = interpolation.sqlEnd;
24
+ }
25
+ sqlChunks.push(query.sql.slice(cursor));
26
+ offsetChunks.push(query.sqlOffsetMap.slice(cursor));
27
+ return { ...query, sql: sqlChunks.join(""), sqlOffsetMap: offsetChunks.flat() };
28
+ }
29
+ /**
30
+ * Expands TypeScript-level SQL structure without interpreting SQL. Every completed statement is
31
+ * still resolved exclusively by the configured dialect plugin.
32
+ */
33
+ export function expandStructuralQuery(source, query, placeholder, maximumVariants) {
34
+ const parsed = query.interpolations.map((interpolation) => parseStructuralInterpolation(source, interpolation, query.tagName));
35
+ if (!parsed.some((value) => value !== undefined))
36
+ return undefined;
37
+ const conditions = new Set(parsed.flatMap((value) => (value?.condition === undefined ? [] : [value.condition])));
38
+ const possibleVariants = variantCount(conditions.size, maximumVariants);
39
+ if (possibleVariants > maximumVariants) {
40
+ return { kind: "limit", conditionCount: conditions.size, variantCount: possibleVariants };
41
+ }
42
+ const localFragments = new Map();
43
+ const register = (operand) => {
44
+ if (operand?.kind !== "fragment" || localFragments.has(operand.start))
45
+ return;
46
+ const fragment = extractStructuralOperand(source, operand, query.tagName, placeholder, 0);
47
+ if (fragment !== undefined)
48
+ localFragments.set(operand.start, fragment);
49
+ };
50
+ for (const structural of parsed) {
51
+ register(structural?.truthy);
52
+ register(structural?.falsy);
53
+ }
54
+ const offsetFragments = new Map();
55
+ const fragmentAt = (operand, offset) => {
56
+ const local = localFragments.get(operand.start);
57
+ if (local === undefined)
58
+ return undefined;
59
+ const key = `${operand.start}:${offset}`;
60
+ const cached = offsetFragments.get(key);
61
+ if (cached !== undefined)
62
+ return cached;
63
+ const adjusted = withParameterOffset(local, offset, placeholder);
64
+ offsetFragments.set(key, adjusted);
65
+ return adjusted;
66
+ };
67
+ let states = [
68
+ {
69
+ sqlChunks: [],
70
+ offsetChunks: [],
71
+ count: 0,
72
+ cursor: 0,
73
+ choices: new Map(),
74
+ fragments: [],
75
+ },
76
+ ];
77
+ const appendOperand = (state, operand) => {
78
+ if (operand.kind === "empty")
79
+ return state;
80
+ const fragment = fragmentAt(operand, state.count);
81
+ if (fragment === undefined)
82
+ return state;
83
+ return {
84
+ ...state,
85
+ sqlChunks: [...state.sqlChunks, fragment.sql],
86
+ offsetChunks: [...state.offsetChunks, fragment.sqlOffsetMap],
87
+ count: state.count + fragment.parameterCount,
88
+ fragments: [...state.fragments, { query: fragment, parameterOffset: state.count }],
89
+ };
90
+ };
91
+ query.interpolations.forEach((interpolation, interpolationIndex) => {
92
+ const structural = parsed[interpolationIndex];
93
+ const next = [];
94
+ for (const state of states) {
95
+ const base = {
96
+ ...state,
97
+ sqlChunks: [...state.sqlChunks, query.sql.slice(state.cursor, interpolation.sqlStart)],
98
+ offsetChunks: [...state.offsetChunks, query.sqlOffsetMap.slice(state.cursor, interpolation.sqlStart)],
99
+ cursor: interpolation.sqlEnd,
100
+ };
101
+ if (structural === undefined) {
102
+ const marker = placeholder(base.count + 1);
103
+ next.push({
104
+ ...base,
105
+ sqlChunks: [...base.sqlChunks, marker],
106
+ offsetChunks: [...base.offsetChunks, Array.from({ length: marker.length }, () => interpolation.sourceStart)],
107
+ count: base.count + 1,
108
+ });
109
+ }
110
+ else if (structural.condition === undefined || structural.falsy === undefined) {
111
+ next.push(appendOperand(base, structural.truthy));
112
+ }
113
+ else {
114
+ const known = base.choices.get(structural.condition);
115
+ for (const enabled of known === undefined ? [true, false] : [known]) {
116
+ const choices = new Map(base.choices);
117
+ choices.set(structural.condition, enabled);
118
+ next.push(appendOperand({ ...base, choices }, enabled ? structural.truthy : structural.falsy));
119
+ }
120
+ }
121
+ }
122
+ states = next;
123
+ });
124
+ return {
125
+ kind: "variants",
126
+ variants: states.map((state) => ({
127
+ query: {
128
+ ...query,
129
+ sql: [...state.sqlChunks, query.sql.slice(state.cursor)].join(""),
130
+ sqlOffsetMap: [...state.offsetChunks, query.sqlOffsetMap.slice(state.cursor)].flat(),
131
+ parameterCount: state.count,
132
+ },
133
+ choices: state.choices,
134
+ fragments: state.fragments,
135
+ })),
136
+ };
137
+ }
138
+ function typeAnnotationBefore(source, position, binding) {
139
+ const prefix = source.slice(0, position);
140
+ const parameter = new RegExp(`\\b${binding}\\s*:\\s*`, "gu");
141
+ let type;
142
+ for (let match = parameter.exec(prefix); match !== null; match = parameter.exec(prefix)) {
143
+ const start = parameter.lastIndex;
144
+ let index = start;
145
+ let round = 0;
146
+ let square = 0;
147
+ let curly = 0;
148
+ let angle = 0;
149
+ while (index < prefix.length) {
150
+ const char = prefix[index];
151
+ if (char === '"' || char === "'") {
152
+ const quote = char;
153
+ index += 1;
154
+ while (index < prefix.length && prefix[index] !== quote) {
155
+ index += prefix[index] === "\\" ? 2 : 1;
156
+ }
157
+ }
158
+ else if (char === "(")
159
+ round += 1;
160
+ else if (char === ")") {
161
+ if (round === 0 && square === 0 && curly === 0 && angle === 0)
162
+ break;
163
+ round -= 1;
164
+ }
165
+ else if (char === "[")
166
+ square += 1;
167
+ else if (char === "]")
168
+ square -= 1;
169
+ else if (char === "{")
170
+ curly += 1;
171
+ else if (char === "}")
172
+ curly -= 1;
173
+ else if (char === "<")
174
+ angle += 1;
175
+ else if (char === ">" && angle > 0)
176
+ angle -= 1;
177
+ else if ((char === "," || char === "=") && round === 0 && square === 0 && curly === 0 && angle === 0)
178
+ break;
179
+ index += 1;
180
+ }
181
+ const candidate = prefix.slice(start, index).trim();
182
+ if (candidate.length > 0)
183
+ type = candidate;
184
+ }
185
+ return type;
186
+ }
187
+ function conditionType(source, position, condition) {
188
+ const property = /^([A-Za-z_$][\w$]*)(?:\.([A-Za-z_$][\w$]*)|\[(["'])([^"']+)\3\])$/u.exec(condition);
189
+ if (property === null)
190
+ return undefined;
191
+ const type = typeAnnotationBefore(source, position, property[1]);
192
+ const key = property[2] ?? property[4];
193
+ if (type === undefined || key === undefined)
194
+ return undefined;
195
+ const owner = /^[A-Za-z_$][\w$]*$/u.test(type) ? type : `(${type})`;
196
+ return `${owner}[${JSON.stringify(key)}]`;
197
+ }
198
+ function parenthesizeConditional(type) {
199
+ return type.includes(" extends ") ? `(${type})` : type;
200
+ }
201
+ export function structuralRowType(source, original, rows) {
202
+ const resolve = (candidates, remaining) => {
203
+ const unique = [...new Set(candidates.map((item) => item.row))];
204
+ if (unique.length === 1)
205
+ return unique[0];
206
+ const [condition, ...rest] = remaining;
207
+ if (condition === undefined)
208
+ return unique.join(" | ");
209
+ const type = conditionType(source, original.range.start, condition);
210
+ if (type === undefined)
211
+ return resolve(candidates, rest);
212
+ const truthy = candidates.filter((item) => item.choices.get(condition) === true);
213
+ const falsy = candidates.filter((item) => item.choices.get(condition) === false);
214
+ if (truthy.length === 0 || falsy.length === 0)
215
+ return resolve(candidates, rest);
216
+ const truthyType = resolve(truthy, rest);
217
+ const falsyType = resolve(falsy, rest);
218
+ if (truthyType === falsyType)
219
+ return truthyType;
220
+ return `${type} extends true ? ${parenthesizeConditional(truthyType)} : ${type} extends false ? ${parenthesizeConditional(falsyType)} : ${parenthesizeConditional(truthyType)} | ${parenthesizeConditional(falsyType)}`;
221
+ };
222
+ const conditions = [...new Set(rows.flatMap((item) => [...item.choices.keys()]))];
223
+ return resolve(rows, conditions);
224
+ }
225
+ //# sourceMappingURL=structural.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural.js","sourceRoot":"","sources":["../../../../src/structural.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed-sql/compiler",
3
- "version": "1.0.0-beta.1",
3
+ "version": "1.0.0-beta.2",
4
4
  "description": "Dialect-neutral TypeScript source extraction and typed SQL compilation.",
5
5
  "license": "MIT",
6
6
  "author": "Lojhan",
@@ -27,16 +27,20 @@
27
27
  "publishConfig": {
28
28
  "access": "public"
29
29
  },
30
+ "typedSql": {
31
+ "releaseTrack": "stable"
32
+ },
30
33
  "sideEffects": false,
31
34
  "type": "module",
32
35
  "exports": {
33
36
  ".": "./dist/packages/compiler/src/index.js"
34
37
  },
35
38
  "dependencies": {
36
- "@typed-sql/core": "1.0.0-beta.1"
39
+ "@typed-sql/core": "1.0.0-beta.2"
37
40
  },
38
41
  "scripts": {
39
42
  "test": "poku test --reporter=compact --enforce",
43
+ "test:soundness": "poku test/soundness.test.ts --reporter=compact --enforce",
40
44
  "coverage": "poku test --coverage=@pokujs/c8 --coverageConfig=.c8rc.json --reporter=compact --enforce"
41
45
  }
42
46
  }