@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.
@@ -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;