@crvouga/sqlite-mem 1.1.0 → 1.1.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.
- package/README.md +3 -1
- package/dist/ast/nodes.d.ts +9 -1
- package/dist/executor/pragma-engine.d.ts +6 -0
- package/dist/functions/table-valued.d.ts +5 -0
- package/dist/index.js +103 -4
- package/dist/index.js.map +2 -2
- package/dist/lexer/tokenize.d.ts +1 -1
- package/dist/unstable.js +23 -0
- package/dist/unstable.js.map +2 -2
- package/package.json +1 -1
package/dist/lexer/tokenize.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Lexer token kind: keywords, literals, operators, and punctuation. */
|
|
2
|
-
export type TokenKind = "EOF" | "IDENT" | "STRING" | "NUMBER" | "BLOB" | "PARAM_POS" | "PARAM_NAMED" | "DOT" | "COMMA" | "SEMI" | "LPAREN" | "RPAREN" | "PLUS" | "MINUS" | "STAR" | "SLASH" | "PERCENT" | "EQ" | "EQEQ" | "NE" | "LT" | "LE" | "GT" | "GE" | "CONCAT" | "AMP" | "PIPE" | "LSHIFT" | "RSHIFT" | "JSON_ARROW" | "JSON_ARROW2" | "TILDE" | "ABORT" | "ACTION" | "ADD" | "AFTER" | "ALL" | "ALTER" | "ANALYZE" | "AND" | "AS" | "ASC" | "ATTACH" | "AUTOINCREMENT" | "BEFORE" | "BEGIN" | "BETWEEN" | "BY" | "CASCADE" | "CASE" | "CAST" | "CHECK" | "COLLATE" | "COLUMN" | "COMMIT" | "CONFLICT" | "CONSTRAINT" | "CREATE" | "CROSS" | "CURRENT" | "CURRENT_DATE" | "CURRENT_TIME" | "CURRENT_TIMESTAMP" | "DATABASE" | "DEFAULT" | "DEFERRABLE" | "DEFERRED" | "DELETE" | "DESC" | "DETACH" | "DISTINCT" | "DO" | "DROP" | "EACH" | "ELSE" | "END" | "ESCAPE" | "EXCEPT" | "EXCLUDE" | "EXCLUSIVE" | "EXISTS" | "EXPLAIN" | "FAIL" | "FILTER" | "FIRST" | "FOLLOWING" | "FOR" | "FOREIGN" | "FROM" | "FULL" | "GENERATED" | "GLOB" | "GROUP" | "GROUPS" | "HAVING" | "IF" | "IGNORE" | "IMMEDIATE" | "IN" | "INDEX" | "INDEXED" | "INITIALLY" | "INNER" | "INSERT" | "INSTEAD" | "INTERSECT" | "INTO" | "IS" | "ISNULL" | "JOIN" | "KEY" | "LAST" | "LEFT" | "LIKE" | "LIMIT" | "MATCH" | "MATERIALIZED" | "NATURAL" | "NO" | "NOT" | "NOTHING" | "NOTNULL" | "NULL" | "NULLS" | "OF" | "OFFSET" | "ON" | "OR" | "ORDER" | "OTHERS" | "OUTER" | "OVER" | "PARTITION" | "PLAN" | "PRAGMA" | "PRECEDING" | "PRIMARY" | "QUERY" | "RAISE" | "RANGE" | "RECURSIVE" | "REFERENCES" | "REGEXP" | "REINDEX" | "RELEASE" | "RENAME" | "REPLACE" | "RESTRICT" | "RETURNING" | "RIGHT" | "ROLLBACK" | "ROW" | "ROWS" | "SAVEPOINT" | "SELECT" | "SET" | "TABLE" | "TEMP" | "TEMPORARY" | "THEN" | "TIES" | "TO" | "TRANSACTION" | "TRIGGER" | "UNBOUNDED" | "UNION" | "UNIQUE" | "UPDATE" | "USING" | "VACUUM" | "VALUES" | "VIEW" | "VIRTUAL" | "WHEN" | "WHERE" | "WINDOW" | "WITH" | "WITHOUT";
|
|
2
|
+
export type TokenKind = "EOF" | "IDENT" | "STRING" | "NUMBER" | "BLOB" | "PARAM_POS" | "PARAM_NAMED" | "DOT" | "COMMA" | "SEMI" | "LPAREN" | "RPAREN" | "PLUS" | "MINUS" | "STAR" | "SLASH" | "PERCENT" | "EQ" | "EQEQ" | "NE" | "LT" | "LE" | "GT" | "GE" | "CONCAT" | "AMP" | "PIPE" | "LSHIFT" | "RSHIFT" | "JSON_ARROW" | "JSON_ARROW2" | "TILDE" | "ABORT" | "ACTION" | "ADD" | "AFTER" | "ALL" | "ALTER" | "ANALYZE" | "AND" | "AS" | "ASC" | "ATTACH" | "AUTOINCREMENT" | "BEFORE" | "BEGIN" | "BETWEEN" | "BY" | "CASCADE" | "CASE" | "CAST" | "CHECK" | "COLLATE" | "COLUMN" | "COMMIT" | "CONFLICT" | "CONSTRAINT" | "CREATE" | "CROSS" | "CURRENT" | "CURRENT_DATE" | "CURRENT_TIME" | "CURRENT_TIMESTAMP" | "DATABASE" | "DEFAULT" | "DEFERRABLE" | "DEFERRED" | "DELETE" | "DESC" | "DETACH" | "DISTINCT" | "DO" | "DROP" | "EACH" | "ELSE" | "END" | "ESCAPE" | "EXCEPT" | "EXCLUDE" | "EXCLUSIVE" | "EXISTS" | "EXPLAIN" | "FAIL" | "FILTER" | "FIRST" | "FOLLOWING" | "FOR" | "FOREIGN" | "FROM" | "FULL" | "FALSE" | "GENERATED" | "GLOB" | "GROUP" | "GROUPS" | "HAVING" | "IF" | "IGNORE" | "IMMEDIATE" | "IN" | "INDEX" | "INDEXED" | "INITIALLY" | "INNER" | "INSERT" | "INSTEAD" | "INTERSECT" | "INTO" | "IS" | "ISNULL" | "JOIN" | "KEY" | "LAST" | "LEFT" | "LIKE" | "LIMIT" | "MATCH" | "MATERIALIZED" | "NATURAL" | "NO" | "NOT" | "NOTHING" | "NOTNULL" | "NULL" | "NULLS" | "OF" | "OFFSET" | "ON" | "OR" | "ORDER" | "OTHERS" | "OUTER" | "OVER" | "PARTITION" | "PLAN" | "PRAGMA" | "PRECEDING" | "PRIMARY" | "QUERY" | "RAISE" | "RANGE" | "RECURSIVE" | "REFERENCES" | "REGEXP" | "REINDEX" | "RELEASE" | "RENAME" | "REPLACE" | "RESTRICT" | "RETURNING" | "RIGHT" | "ROLLBACK" | "ROW" | "ROWS" | "SAVEPOINT" | "SELECT" | "SET" | "TABLE" | "TEMP" | "TEMPORARY" | "THEN" | "TIES" | "TO" | "TRANSACTION" | "TRIGGER" | "TRUE" | "UNBOUNDED" | "UNION" | "UNIQUE" | "UPDATE" | "USING" | "VACUUM" | "VALUES" | "VIEW" | "VIRTUAL" | "WHEN" | "WHERE" | "WINDOW" | "WITH" | "WITHOUT";
|
|
3
3
|
/** A single lexer token from {@link tokenize}. */
|
|
4
4
|
export interface Token {
|
|
5
5
|
kind: TokenKind;
|
package/dist/unstable.js
CHANGED
|
@@ -3024,6 +3024,8 @@ function explicitCollation(expr) {
|
|
|
3024
3024
|
case "unary":
|
|
3025
3025
|
case "cast":
|
|
3026
3026
|
return explicitCollation(expr.expr);
|
|
3027
|
+
case "is_bool":
|
|
3028
|
+
return explicitCollation(expr.expr);
|
|
3027
3029
|
case "binary":
|
|
3028
3030
|
return explicitCollation(expr.left) ?? explicitCollation(expr.right);
|
|
3029
3031
|
case "between":
|
|
@@ -3054,6 +3056,8 @@ function inheritedCollation(expr, ctx) {
|
|
|
3054
3056
|
case "unary":
|
|
3055
3057
|
case "cast":
|
|
3056
3058
|
return inheritedCollation(expr.expr, ctx);
|
|
3059
|
+
case "is_bool":
|
|
3060
|
+
return inheritedCollation(expr.expr, ctx);
|
|
3057
3061
|
default:
|
|
3058
3062
|
return null;
|
|
3059
3063
|
}
|
|
@@ -3099,6 +3103,13 @@ function evalExpr(expr, ctx) {
|
|
|
3099
3103
|
if (expr.op === "-") return asNumber(-numberValue(value));
|
|
3100
3104
|
return ~integerValue(value);
|
|
3101
3105
|
}
|
|
3106
|
+
case "is_bool": {
|
|
3107
|
+
const truth = isTruthySql(evalExpr(expr.expr, ctx));
|
|
3108
|
+
if (!expr.not && expr.sense) return booleanValue(truth === true);
|
|
3109
|
+
if (!expr.not && !expr.sense) return booleanValue(truth === false);
|
|
3110
|
+
if (expr.not && expr.sense) return booleanValue(truth !== true);
|
|
3111
|
+
return booleanValue(truth !== false);
|
|
3112
|
+
}
|
|
3102
3113
|
case "binary":
|
|
3103
3114
|
return evalBinary(expr.op, expr.left, expr.right, ctx);
|
|
3104
3115
|
case "between": {
|
|
@@ -3277,6 +3288,7 @@ var KEYWORDS = {
|
|
|
3277
3288
|
FOREIGN: "FOREIGN",
|
|
3278
3289
|
FROM: "FROM",
|
|
3279
3290
|
FULL: "FULL",
|
|
3291
|
+
FALSE: "FALSE",
|
|
3280
3292
|
GENERATED: "GENERATED",
|
|
3281
3293
|
GLOB: "GLOB",
|
|
3282
3294
|
GROUP: "GROUP",
|
|
@@ -3351,6 +3363,7 @@ var KEYWORDS = {
|
|
|
3351
3363
|
TO: "TO",
|
|
3352
3364
|
TRANSACTION: "TRANSACTION",
|
|
3353
3365
|
TRIGGER: "TRIGGER",
|
|
3366
|
+
TRUE: "TRUE",
|
|
3354
3367
|
UNBOUNDED: "UNBOUNDED",
|
|
3355
3368
|
UNION: "UNION",
|
|
3356
3369
|
UNIQUE: "UNIQUE",
|
|
@@ -3705,6 +3718,7 @@ var IDENT_KEYWORDS = /* @__PURE__ */ new Set([
|
|
|
3705
3718
|
"FOREIGN",
|
|
3706
3719
|
"FROM",
|
|
3707
3720
|
"FULL",
|
|
3721
|
+
"FALSE",
|
|
3708
3722
|
"GENERATED",
|
|
3709
3723
|
"GLOB",
|
|
3710
3724
|
"GROUP",
|
|
@@ -3779,6 +3793,7 @@ var IDENT_KEYWORDS = /* @__PURE__ */ new Set([
|
|
|
3779
3793
|
"TO",
|
|
3780
3794
|
"TRANSACTION",
|
|
3781
3795
|
"TRIGGER",
|
|
3796
|
+
"TRUE",
|
|
3782
3797
|
"UNBOUNDED",
|
|
3783
3798
|
"UNION",
|
|
3784
3799
|
"UNIQUE",
|
|
@@ -5125,6 +5140,14 @@ var Parser = class {
|
|
|
5125
5140
|
continue;
|
|
5126
5141
|
}
|
|
5127
5142
|
const not = this.match("NOT");
|
|
5143
|
+
if (this.match("TRUE")) {
|
|
5144
|
+
left = { type: "is_bool", expr: left, not, sense: true };
|
|
5145
|
+
continue;
|
|
5146
|
+
}
|
|
5147
|
+
if (this.match("FALSE")) {
|
|
5148
|
+
left = { type: "is_bool", expr: left, not, sense: false };
|
|
5149
|
+
continue;
|
|
5150
|
+
}
|
|
5128
5151
|
const right2 = this.parseIsRhs();
|
|
5129
5152
|
left = { type: "binary", op: not ? "IS NOT" : "IS", left, right: right2 };
|
|
5130
5153
|
continue;
|