@omgbase/oqx 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -15
- package/dist/adapters/indexed.d.ts +11 -0
- package/dist/adapters/indexed.d.ts.map +1 -0
- package/dist/adapters/indexed.js +57 -0
- package/dist/adapters/indexed.js.map +1 -0
- package/dist/adapters/sqlite.d.ts +23 -0
- package/dist/adapters/sqlite.d.ts.map +1 -0
- package/dist/adapters/sqlite.js +113 -0
- package/dist/adapters/sqlite.js.map +1 -0
- package/dist/ast.d.ts +121 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +7 -0
- package/dist/ast.js.map +1 -0
- package/dist/context.d.ts +38 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +47 -0
- package/dist/context.js.map +1 -0
- package/dist/engine.d.ts +49 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +437 -0
- package/dist/engine.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +13 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer.d.ts +17 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +187 -0
- package/dist/lexer.js.map +1 -0
- package/dist/parser.d.ts +6 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +584 -0
- package/dist/parser.js.map +1 -0
- package/dist/plan.d.ts +21 -0
- package/dist/plan.d.ts.map +1 -0
- package/dist/plan.js +56 -0
- package/dist/plan.js.map +1 -0
- package/dist/planner.d.ts +24 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +27 -0
- package/dist/planner.js.map +1 -0
- package/dist/semantics.d.ts +22 -0
- package/dist/semantics.d.ts.map +1 -0
- package/dist/semantics.js +142 -0
- package/dist/semantics.js.map +1 -0
- package/package.json +16 -6
- package/src/engine.ts +78 -26
package/dist/lexer.js
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// OQX structural lexer for the generic kernel.
|
|
2
|
+
//
|
|
3
|
+
// Unlike the reference lexer (which slices raw source for the CEL layer), this
|
|
4
|
+
// one fully tokenizes: the parser builds an evaluable expression AST directly
|
|
5
|
+
// from the token stream, so there is no source-slicing seam.
|
|
6
|
+
//
|
|
7
|
+
// Tagged-template bindings are lexed as first-class tokens. Each template string
|
|
8
|
+
// FRAGMENT is lexed independently and a synthetic `binding` token is injected
|
|
9
|
+
// between adjacent fragments. A binding therefore can never span a token or
|
|
10
|
+
// alter the grammar — the prepared-statement / injection-safe property the
|
|
11
|
+
// host-bindings design note calls for. (A consequence: `${x}` inside a string
|
|
12
|
+
// literal does not interpolate — that fragment would be an unterminated string —
|
|
13
|
+
// which is exactly the desired "interpolation is a value, never source text".)
|
|
14
|
+
import { OqxError } from "./errors.js";
|
|
15
|
+
const KEYWORDS = new Set(["from", "where", "select"]);
|
|
16
|
+
// Multi-char operators, longest first (the scanner tries these before singles).
|
|
17
|
+
const MULTI_OPS = ["==", "!=", "<=", ">=", "&&", "||"];
|
|
18
|
+
const SINGLE_OPS = new Set(["<", ">", "!", "+", "-", "*", "/", "%"]);
|
|
19
|
+
const isIdentStart = (c) => /[A-Za-z_$]/.test(c);
|
|
20
|
+
const isIdentPart = (c) => /[A-Za-z0-9_$]/.test(c);
|
|
21
|
+
const isDigit = (c) => c >= "0" && c <= "9";
|
|
22
|
+
/** Lex a tagged-template call: the cooked string fragments and the count of
|
|
23
|
+
* interpolated values. Emits a single flat token stream with `binding` tokens
|
|
24
|
+
* (index 0..values-1) between fragments, terminated by `eof`. */
|
|
25
|
+
export function lexTemplate(fragments, values) {
|
|
26
|
+
const tokens = [];
|
|
27
|
+
let base = 0; // running offset across fragments + rendered `${…}` markers
|
|
28
|
+
for (let f = 0; f < fragments.length; f++) {
|
|
29
|
+
lexFragment(fragments[f], base, tokens);
|
|
30
|
+
base += fragments[f].length;
|
|
31
|
+
if (f < fragments.length - 1) {
|
|
32
|
+
// account for the value's rendered width in the display source (see rawSource)
|
|
33
|
+
const marker = `\${${f}}`;
|
|
34
|
+
tokens.push({ type: "binding", value: marker, pos: base, index: f });
|
|
35
|
+
base += marker.length;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (values !== fragments.length - 1) {
|
|
39
|
+
throw new OqxError(`template arity mismatch: ${fragments.length} fragments, ${values} values`, "lex");
|
|
40
|
+
}
|
|
41
|
+
tokens.push({ type: "eof", value: "", pos: base });
|
|
42
|
+
return tokens;
|
|
43
|
+
}
|
|
44
|
+
/** Lex a plain string (no bindings) — used by the string entry point. */
|
|
45
|
+
export function lexString(src) {
|
|
46
|
+
const tokens = [];
|
|
47
|
+
lexFragment(src, 0, tokens);
|
|
48
|
+
tokens.push({ type: "eof", value: "", pos: src.length });
|
|
49
|
+
return tokens;
|
|
50
|
+
}
|
|
51
|
+
function lexFragment(src, base, out) {
|
|
52
|
+
let i = 0;
|
|
53
|
+
const n = src.length;
|
|
54
|
+
const push = (type, value, at) => {
|
|
55
|
+
out.push({ type, value, pos: base + at });
|
|
56
|
+
};
|
|
57
|
+
while (i < n) {
|
|
58
|
+
const c = src[i];
|
|
59
|
+
if (c === " " || c === "\t" || c === "\n" || c === "\r") {
|
|
60
|
+
i++;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (c === "(") {
|
|
64
|
+
push("lparen", c, i);
|
|
65
|
+
i++;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (c === ")") {
|
|
69
|
+
push("rparen", c, i);
|
|
70
|
+
i++;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (c === "{") {
|
|
74
|
+
push("lbrace", c, i);
|
|
75
|
+
i++;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (c === "}") {
|
|
79
|
+
push("rbrace", c, i);
|
|
80
|
+
i++;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (c === ",") {
|
|
84
|
+
push("comma", c, i);
|
|
85
|
+
i++;
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (c === ":") {
|
|
89
|
+
push("colon", c, i);
|
|
90
|
+
i++;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (c === "^") {
|
|
94
|
+
push("caret", c, i);
|
|
95
|
+
i++;
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// `.` is a dot only when not the leading part of a number (.5) — but OQX has
|
|
99
|
+
// no leading-dot numerals, so a bare `.` is always navigation.
|
|
100
|
+
if (c === "." && !isDigit(src[i + 1] ?? "")) {
|
|
101
|
+
push("dot", c, i);
|
|
102
|
+
i++;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
// string literal — decode into its VALUE (quotes stripped, escapes resolved).
|
|
106
|
+
if (c === '"' || c === "'") {
|
|
107
|
+
const quote = c;
|
|
108
|
+
const start = i;
|
|
109
|
+
i++;
|
|
110
|
+
let sval = "";
|
|
111
|
+
while (i < n && src[i] !== quote) {
|
|
112
|
+
if (src[i] === "\\") {
|
|
113
|
+
i++;
|
|
114
|
+
sval += unescape(src[i]);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
sval += src[i];
|
|
118
|
+
}
|
|
119
|
+
i++;
|
|
120
|
+
}
|
|
121
|
+
if (i >= n)
|
|
122
|
+
throw new OqxError(`unterminated string literal at ${base + start}`, "lex");
|
|
123
|
+
i++; // closing quote
|
|
124
|
+
out.push({ type: "string", value: sval, pos: base + start });
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
// number (integer or decimal, optional exponent)
|
|
128
|
+
if (isDigit(c) || (c === "." && isDigit(src[i + 1] ?? ""))) {
|
|
129
|
+
const start = i;
|
|
130
|
+
while (i < n && isDigit(src[i]))
|
|
131
|
+
i++;
|
|
132
|
+
if (src[i] === ".") {
|
|
133
|
+
i++;
|
|
134
|
+
while (i < n && isDigit(src[i]))
|
|
135
|
+
i++;
|
|
136
|
+
}
|
|
137
|
+
if (src[i] === "e" || src[i] === "E") {
|
|
138
|
+
i++;
|
|
139
|
+
if (src[i] === "+" || src[i] === "-")
|
|
140
|
+
i++;
|
|
141
|
+
while (i < n && isDigit(src[i]))
|
|
142
|
+
i++;
|
|
143
|
+
}
|
|
144
|
+
push("number", src.slice(start, i), start);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// operators (multi-char first)
|
|
148
|
+
const two = src.slice(i, i + 2);
|
|
149
|
+
if (MULTI_OPS.includes(two)) {
|
|
150
|
+
push("op", two, i);
|
|
151
|
+
i += 2;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (SINGLE_OPS.has(c)) {
|
|
155
|
+
push("op", c, i);
|
|
156
|
+
i++;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
// identifier / keyword
|
|
160
|
+
if (isIdentStart(c)) {
|
|
161
|
+
const start = i;
|
|
162
|
+
i++;
|
|
163
|
+
while (i < n && isIdentPart(src[i]))
|
|
164
|
+
i++;
|
|
165
|
+
const word = src.slice(start, i);
|
|
166
|
+
push(KEYWORDS.has(word) ? "kw" : "ident", word, start);
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
throw new OqxError(`unexpected character ${JSON.stringify(c)} at ${base + i}`, "lex");
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
function unescape(c) {
|
|
173
|
+
switch (c) {
|
|
174
|
+
case "n": return "\n";
|
|
175
|
+
case "t": return "\t";
|
|
176
|
+
case "r": return "\r";
|
|
177
|
+
case "0": return "\0";
|
|
178
|
+
case undefined: return "";
|
|
179
|
+
default: return c; // \\, \", \', \/, and anything else → the literal char
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** A human-readable reconstruction of the query source, with `${N}` markers where
|
|
183
|
+
* bindings were, for error messages. */
|
|
184
|
+
export function rawSource(fragments) {
|
|
185
|
+
return fragments.map((s, i) => (i < fragments.length - 1 ? `${s}\${${i}}` : s)).join("");
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=lexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Query } from "./ast.js";
|
|
2
|
+
/** Parse a tagged-template call into a Query. */
|
|
3
|
+
export declare function parseTemplate(fragments: readonly string[], values: number): Query;
|
|
4
|
+
/** Parse a plain query string (no bindings) into a Query. */
|
|
5
|
+
export declare function parseString(src: string): Query;
|
|
6
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,KAAK,EACN,MAAM,UAAU,CAAC;AAQlB,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAEjF;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAE9C"}
|