rado 0.2.30 → 0.2.32

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 (72) hide show
  1. package/dist/define/Column.d.ts +3 -3
  2. package/dist/define/Column.js +13 -14
  3. package/dist/define/Expr.d.ts +10 -10
  4. package/dist/define/Expr.js +3 -4
  5. package/dist/define/Fields.d.ts +1 -1
  6. package/dist/define/Functions.d.ts +1 -1
  7. package/dist/define/Functions.js +1 -2
  8. package/dist/define/Index.d.ts +1 -1
  9. package/dist/define/Index.js +2 -3
  10. package/dist/define/Ops.d.ts +11 -11
  11. package/dist/define/Ops.js +3 -4
  12. package/dist/define/OrderBy.d.ts +1 -1
  13. package/dist/define/OrderBy.js +0 -1
  14. package/dist/define/Param.js +0 -1
  15. package/dist/define/Query.d.ts +9 -9
  16. package/dist/define/Query.js +3 -4
  17. package/dist/define/Schema.d.ts +3 -3
  18. package/dist/define/Schema.js +0 -1
  19. package/dist/define/Selection.d.ts +3 -3
  20. package/dist/define/Selection.js +0 -1
  21. package/dist/define/Sql.d.ts +1 -1
  22. package/dist/define/Sql.js +0 -1
  23. package/dist/define/Table.d.ts +9 -9
  24. package/dist/define/Table.js +3 -4
  25. package/dist/define/Target.d.ts +3 -3
  26. package/dist/define/Target.js +0 -1
  27. package/dist/define/VirtualTable.d.ts +11 -11
  28. package/dist/define/VirtualTable.js +1 -2
  29. package/dist/define/query/Batch.d.ts +1 -1
  30. package/dist/define/query/Batch.js +2 -3
  31. package/dist/define/query/CreateTable.d.ts +2 -2
  32. package/dist/define/query/CreateTable.js +2 -3
  33. package/dist/define/query/Delete.d.ts +2 -2
  34. package/dist/define/query/Delete.js +2 -3
  35. package/dist/define/query/Insert.d.ts +5 -5
  36. package/dist/define/query/Insert.js +6 -7
  37. package/dist/define/query/Select.d.ts +31 -31
  38. package/dist/define/query/Select.js +28 -31
  39. package/dist/define/query/TableSelect.d.ts +11 -11
  40. package/dist/define/query/TableSelect.js +3 -4
  41. package/dist/define/query/Union.d.ts +9 -9
  42. package/dist/define/query/Union.js +7 -8
  43. package/dist/define/query/Update.d.ts +3 -3
  44. package/dist/define/query/Update.js +2 -3
  45. package/dist/driver/better-sqlite3.d.ts +4 -4
  46. package/dist/driver/better-sqlite3.js +4 -5
  47. package/dist/driver/bun-sqlite.d.ts +4 -4
  48. package/dist/driver/bun-sqlite.js +6 -7
  49. package/dist/driver/sql.js.d.ts +4 -4
  50. package/dist/driver/sql.js.js +4 -5
  51. package/dist/driver/sqlite3.d.ts +5 -5
  52. package/dist/driver/sqlite3.js +4 -5
  53. package/dist/index.d.ts +21 -21
  54. package/dist/index.js +0 -1
  55. package/dist/lib/Driver.d.ts +10 -10
  56. package/dist/lib/Driver.js +10 -11
  57. package/dist/lib/Formatter.d.ts +8 -8
  58. package/dist/lib/Formatter.js +11 -8
  59. package/dist/lib/SqlError.js +2 -3
  60. package/dist/lib/Statement.d.ts +2 -2
  61. package/dist/lib/Statement.js +6 -7
  62. package/dist/sqlite/SqliteFormatter.d.ts +3 -3
  63. package/dist/sqlite/SqliteFormatter.js +8 -9
  64. package/dist/sqlite/SqliteFunctions.d.ts +3 -3
  65. package/dist/sqlite/SqliteFunctions.js +2 -3
  66. package/dist/sqlite/SqliteSchema.d.ts +3 -3
  67. package/dist/sqlite/SqliteSchema.js +0 -1
  68. package/dist/sqlite.d.ts +2 -2
  69. package/dist/sqlite.js +0 -1
  70. package/dist/util/Alias.js +0 -1
  71. package/dist/util/Callable.js +3 -4
  72. package/package.json +16 -5
package/dist/index.js CHANGED
@@ -1,4 +1,3 @@
1
- // src/index.ts
2
1
  export * from "./define/Column.js";
3
2
  export * from "./define/Expr.js";
4
3
  export * from "./define/Functions.js";
@@ -1,11 +1,11 @@
1
- import { Expr } from '../define/Expr';
2
- import { Query, QueryData } from '../define/Query';
3
- import { SchemaInstructions } from '../define/Schema';
4
- import { Table } from '../define/Table';
5
- import { SelectMultiple } from '../define/query/Select';
6
- import { Callable } from '../util/Callable';
7
- import { Formatter } from './Formatter';
8
- import { Statement } from './Statement';
1
+ import { Expr } from '../define/Expr.js';
2
+ import { Query, QueryData } from '../define/Query.js';
3
+ import { SchemaInstructions } from '../define/Schema.js';
4
+ import { Table } from '../define/Table.js';
5
+ import { Select } from '../define/query/Select.js';
6
+ import { Callable } from '../util/Callable.js';
7
+ import { Formatter } from './Formatter.js';
8
+ import { Statement } from './Statement.js';
9
9
  declare abstract class DriverBase extends Callable {
10
10
  formatter: Formatter;
11
11
  constructor(formatter: Formatter);
@@ -31,7 +31,7 @@ declare abstract class SyncDriver extends DriverBase {
31
31
  prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Query<R>): (...params: ParamTypes<T>) => R;
32
32
  migrateSchema(...tables: Array<Table<any>>): unknown;
33
33
  executeQuery(query: QueryData, stmt?: SyncPreparedStatement, params?: Array<any>): unknown;
34
- iterate<T>(cursor: SelectMultiple<T>): Iterable<T>;
34
+ iterate<T>(cursor: Select<T>): Iterable<T>;
35
35
  transaction<T>(run: (query: SyncDriver) => T): T;
36
36
  toAsync(): SyncWrapper;
37
37
  }
@@ -58,7 +58,7 @@ declare abstract class AsyncDriver extends DriverBase {
58
58
  prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Query<R>): (...params: ParamTypes<T>) => Promise<R>;
59
59
  migrateSchema(...tables: Array<Table<any>>): Promise<unknown>;
60
60
  executeQuery(query: QueryData, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<unknown>;
61
- iterate<T>(cursor: SelectMultiple<T>): AsyncIterable<T>;
61
+ iterate<T>(cursor: Select<T>): AsyncIterable<T>;
62
62
  transaction<T>(run: (query: AsyncDriver) => T): Promise<T>;
63
63
  }
64
64
  declare class SyncWrapper extends AsyncDriver {
@@ -1,4 +1,3 @@
1
- // src/lib/Driver.ts
2
1
  import { Expr, ExprData } from "../define/Expr.js";
3
2
  import { ParamData } from "../define/Param.js";
4
3
  import { Query, QueryData, QueryType } from "../define/Query.js";
@@ -8,7 +7,7 @@ import { Callable } from "../util/Callable.js";
8
7
  function isTemplateStringsArray(input) {
9
8
  return Boolean(Array.isArray(input) && input.raw);
10
9
  }
11
- var DriverBase = class extends Callable {
10
+ class DriverBase extends Callable {
12
11
  constructor(formatter) {
13
12
  super((...args) => {
14
13
  const [input, ...rest] = args;
@@ -39,8 +38,8 @@ var DriverBase = class extends Callable {
39
38
  new QueryData.Raw({ strings, params, expectedReturn })
40
39
  );
41
40
  }
42
- };
43
- var SyncDriver = class extends DriverBase {
41
+ }
42
+ class SyncDriver extends DriverBase {
44
43
  transactionId;
45
44
  constructor(formatter) {
46
45
  super(formatter);
@@ -153,8 +152,8 @@ var SyncDriver = class extends DriverBase {
153
152
  toAsync() {
154
153
  return new SyncWrapper(this);
155
154
  }
156
- };
157
- var AsyncDriver = class extends DriverBase {
155
+ }
156
+ class AsyncDriver extends DriverBase {
158
157
  transactionId;
159
158
  constructor(formatter) {
160
159
  super(formatter);
@@ -269,8 +268,8 @@ var AsyncDriver = class extends DriverBase {
269
268
  await release();
270
269
  }
271
270
  }
272
- };
273
- var SyncPreparedStatementWrapper = class {
271
+ }
272
+ class SyncPreparedStatementWrapper {
274
273
  constructor(stmt) {
275
274
  this.stmt = stmt;
276
275
  }
@@ -290,8 +289,8 @@ var SyncPreparedStatementWrapper = class {
290
289
  async execute(params) {
291
290
  return this.stmt.execute(params);
292
291
  }
293
- };
294
- var SyncWrapper = class extends AsyncDriver {
292
+ }
293
+ class SyncWrapper extends AsyncDriver {
295
294
  constructor(sync) {
296
295
  super(sync.formatter);
297
296
  this.sync = sync;
@@ -317,7 +316,7 @@ var SyncWrapper = class extends AsyncDriver {
317
316
  this.lock = Promise.resolve(this.lock).then(() => trigger);
318
317
  return [connection, release];
319
318
  }
320
- };
319
+ }
321
320
  var Driver;
322
321
  ((Driver2) => {
323
322
  Driver2.Sync = SyncDriver;
@@ -1,10 +1,10 @@
1
- import { ColumnData, ColumnType } from '../define/Column';
2
- import { ExprData } from '../define/Expr';
3
- import { OrderBy } from '../define/OrderBy';
4
- import { QueryData } from '../define/Query';
5
- import { Target } from '../define/Target';
6
- import { Sanitizer } from './Sanitizer';
7
- import { Statement, StatementOptions } from './Statement';
1
+ import { ColumnData, ColumnType } from '../define/Column.js';
2
+ import { ExprData } from '../define/Expr.js';
3
+ import { OrderBy } from '../define/OrderBy.js';
4
+ import { QueryData } from '../define/Query.js';
5
+ import { Target } from '../define/Target.js';
6
+ import { Sanitizer } from './Sanitizer.js';
7
+ import { Statement, StatementOptions } from './Statement.js';
8
8
  export interface FormatContext {
9
9
  stmt: Statement;
10
10
  nameResult?: string;
@@ -53,7 +53,7 @@ export declare abstract class Formatter implements Sanitizer {
53
53
  formatSelect({ topLevel, ...ctx }: FormatContext, query: QueryData.Select): Statement;
54
54
  formatUnion(ctx: FormatContext, { a, operator, b }: QueryData.Union): Statement;
55
55
  formatInsert(ctx: FormatContext, query: QueryData.Insert): Statement;
56
- formatUpdate(ctx: FormatContext, query: QueryData.Update): Statement;
56
+ formatUpdate({ topLevel, ...ctx }: FormatContext, query: QueryData.Update): Statement;
57
57
  formatDelete(ctx: FormatContext, query: QueryData.Delete): Statement;
58
58
  formatCreateTable(ctx: FormatContext, query: QueryData.CreateTable): Statement;
59
59
  formatCreateIndex(ctx: FormatContext, query: QueryData.CreateIndex): Statement;
@@ -1,4 +1,3 @@
1
- // src/lib/Formatter.ts
2
1
  import { ColumnType } from "../define/Column.js";
3
2
  import { BinOpType, Expr, ExprData, ExprType, UnOpType } from "../define/Expr.js";
4
3
  import { OrderDirection } from "../define/OrderBy.js";
@@ -6,7 +5,7 @@ import { ParamType } from "../define/Param.js";
6
5
  import { QueryData, QueryType } from "../define/Query.js";
7
6
  import { Target, TargetType } from "../define/Target.js";
8
7
  import { Statement } from "./Statement.js";
9
- var binOps = {
8
+ const binOps = {
10
9
  [BinOpType.Add]: "+",
11
10
  [BinOpType.Subt]: "-",
12
11
  [BinOpType.Mult]: "*",
@@ -27,11 +26,11 @@ var binOps = {
27
26
  [BinOpType.NotIn]: "NOT IN",
28
27
  [BinOpType.Concat]: "||"
29
28
  };
30
- var joins = {
29
+ const joins = {
31
30
  left: "LEFT",
32
31
  inner: "INNER"
33
32
  };
34
- var unions = {
33
+ const unions = {
35
34
  [QueryData.UnionOperation.Union]: "UNION",
36
35
  [QueryData.UnionOperation.UnionAll]: "UNION ALL",
37
36
  [QueryData.UnionOperation.Intersect]: "INTERSECT",
@@ -42,7 +41,7 @@ function formatAsResultObject(stmt, mkSubject) {
42
41
  mkSubject();
43
42
  stmt.raw(")");
44
43
  }
45
- var Formatter = class {
44
+ class Formatter {
46
45
  constructor() {
47
46
  }
48
47
  compile(query, options) {
@@ -158,18 +157,22 @@ var Formatter = class {
158
157
  }
159
158
  return stmt;
160
159
  }
161
- formatUpdate(ctx, query) {
160
+ formatUpdate({ topLevel, ...ctx }, query) {
162
161
  const { stmt } = ctx;
163
162
  const data = query.set || {};
164
163
  stmt.add("UPDATE").addIdentifier(query.table.name).add("SET").space();
165
164
  const keys = Object.keys(data).filter((key) => query.table.columns[key]);
166
165
  for (const key of stmt.separate(keys)) {
166
+ const column = query.table.columns[key];
167
167
  stmt.identifier(key).add("=").space();
168
168
  let input = data[key];
169
169
  if (Expr.hasExpr(input))
170
170
  input = input[Expr.ToExpr]();
171
171
  if (Expr.isExpr(input))
172
- this.formatExprJson(ctx, ExprData.create(data[key]));
172
+ this.formatExpr(
173
+ { ...ctx, formatAsJson: column.type === ColumnType.Json },
174
+ ExprData.create(data[key])
175
+ );
173
176
  else
174
177
  this.formatValue({ ...ctx, formatAsInsert: true }, input);
175
178
  }
@@ -791,7 +794,7 @@ var Formatter = class {
791
794
  throw new Error("todo");
792
795
  }
793
796
  }
794
- };
797
+ }
795
798
  export {
796
799
  Formatter
797
800
  };
@@ -1,11 +1,10 @@
1
- // src/lib/SqlError.ts
2
- var SqlError = class extends Error {
1
+ class SqlError extends Error {
3
2
  constructor(cause, sql) {
4
3
  super(`${sql}
5
4
  \u2502
6
5
  \u2514\u2500\u2500\u2500\u2500 ${cause}`, { cause });
7
6
  }
8
- };
7
+ }
9
8
  export {
10
9
  SqlError
11
10
  };
@@ -1,5 +1,5 @@
1
- import { ParamData } from '../define/Param';
2
- import { Sanitizer } from './Sanitizer';
1
+ import { ParamData } from '../define/Param.js';
2
+ import { Sanitizer } from './Sanitizer.js';
3
3
  export interface StatementOptions {
4
4
  skipNewlines?: boolean;
5
5
  }
@@ -1,10 +1,9 @@
1
- // src/lib/Statement.ts
2
1
  import { ParamData, ParamType } from "../define/Param.js";
3
- var SEPARATE = ", ";
4
- var WHITESPACE = " ";
5
- var NEWLINE = "\n";
6
- var INSERT_PARAM = "?";
7
- var Statement = class {
2
+ const SEPARATE = ", ";
3
+ const WHITESPACE = " ";
4
+ const NEWLINE = "\n";
5
+ const INSERT_PARAM = "?";
6
+ class Statement {
8
7
  constructor(sanitizer, options = {}) {
9
8
  this.sanitizer = sanitizer;
10
9
  this.options = options;
@@ -102,7 +101,7 @@ var Statement = class {
102
101
  toString() {
103
102
  return this.sql;
104
103
  }
105
- };
104
+ }
106
105
  export {
107
106
  Statement
108
107
  };
@@ -1,6 +1,6 @@
1
- import { ExprData } from '../define/Expr';
2
- import { FormatContext, Formatter } from '../lib/Formatter';
3
- import { Statement } from '../lib/Statement';
1
+ import { ExprData } from '../define/Expr.js';
2
+ import { FormatContext, Formatter } from '../lib/Formatter.js';
3
+ import { Statement } from '../lib/Statement.js';
4
4
  export declare class SqliteFormatter extends Formatter {
5
5
  formatParamValue(paramValue: any): any;
6
6
  escapeValue(value: any): string;
@@ -1,12 +1,11 @@
1
- // src/sqlite/SqliteFormatter.ts
2
1
  import { Formatter } from "../lib/Formatter.js";
3
- var BACKTICK = "`";
4
- var ESCAPE_BACKTICK = "``";
5
- var SINGLE_QUOTE = "'";
6
- var ESCAPE_SINGLE_QUOTE = "''";
7
- var MATCH_BACKTICK = /`/g;
8
- var MATCH_SINGLE_QUOTE = /'/g;
9
- var SqliteFormatter = class extends Formatter {
2
+ const BACKTICK = "`";
3
+ const ESCAPE_BACKTICK = "``";
4
+ const SINGLE_QUOTE = "'";
5
+ const ESCAPE_SINGLE_QUOTE = "''";
6
+ const MATCH_BACKTICK = /`/g;
7
+ const MATCH_SINGLE_QUOTE = /'/g;
8
+ class SqliteFormatter extends Formatter {
10
9
  formatParamValue(paramValue) {
11
10
  if (paramValue === null || paramValue === void 0)
12
11
  return null;
@@ -60,7 +59,7 @@ var SqliteFormatter = class extends Formatter {
60
59
  return super.formatCall(ctx, expr);
61
60
  }
62
61
  }
63
- };
62
+ }
64
63
  export {
65
64
  SqliteFormatter
66
65
  };
@@ -1,6 +1,6 @@
1
- import { EV, Expr } from '../define/Expr';
2
- import { Query } from '../define/Query';
3
- import { Table } from '../define/Table';
1
+ import { EV, Expr } from '../define/Expr.js';
2
+ import { Query } from '../define/Query.js';
3
+ import { Table } from '../define/Table.js';
4
4
  export declare const SqliteFunctions: SqliteFunctions;
5
5
  export type SqliteFunctions = {
6
6
  /** The count(X) function returns a count of the number of times that X is not NULL in a group. The count(*) function (with no arguments) returns the total number of rows in the group. */
@@ -1,7 +1,6 @@
1
- // src/sqlite/SqliteFunctions.ts
2
1
  import { Functions } from "../define/Functions.js";
3
- var SqliteFunctions = Functions;
4
- var {
2
+ const SqliteFunctions = Functions;
3
+ const {
5
4
  count,
6
5
  iif,
7
6
  exists,
@@ -1,6 +1,6 @@
1
- import { Expr } from '../define/Expr';
2
- import { Query } from '../define/Query';
3
- import { SchemaInstructions } from '../define/Schema';
1
+ import { Expr } from '../define/Expr.js';
2
+ import { Query } from '../define/Query.js';
3
+ import { SchemaInstructions } from '../define/Schema.js';
4
4
  export declare namespace SqliteSchema {
5
5
  type Column = {
6
6
  cid: number;
@@ -1,4 +1,3 @@
1
- // src/sqlite/SqliteSchema.ts
2
1
  import { sql } from "../define/Sql.js";
3
2
  import { Statement } from "../lib/Statement.js";
4
3
  import { SqliteFormatter } from "./SqliteFormatter.js";
package/dist/sqlite.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './sqlite/SqliteFormatter';
2
- export * from './sqlite/SqliteFunctions';
1
+ export * from './sqlite/SqliteFormatter.js';
2
+ export * from './sqlite/SqliteFunctions.js';
package/dist/sqlite.js CHANGED
@@ -1,3 +1,2 @@
1
- // src/sqlite.ts
2
1
  export * from "./sqlite/SqliteFormatter.js";
3
2
  export * from "./sqlite/SqliteFunctions.js";
@@ -1,4 +1,3 @@
1
- // src/util/Alias.ts
2
1
  function randomAlias() {
3
2
  return `__${Math.random().toString(36).slice(2, 9)}`;
4
3
  }
@@ -1,10 +1,9 @@
1
- // src/util/Callable.ts
2
- var { setPrototypeOf } = Object;
3
- var Callable = class {
1
+ const { setPrototypeOf } = Object;
2
+ class Callable {
4
3
  constructor(fn) {
5
4
  return setPrototypeOf(fn, new.target.prototype);
6
5
  }
7
- };
6
+ }
8
7
  export {
9
8
  Callable
10
9
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rado",
3
- "version": "0.2.30",
3
+ "version": "0.2.32",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,12 +12,23 @@
12
12
  },
13
13
  "typesVersions": {
14
14
  "*": {
15
+ "driver/*": [
16
+ "dist/driver/*.d.ts"
17
+ ],
18
+ "lib/*": [
19
+ "dist/lib/*.d.ts"
20
+ ],
15
21
  "driver/bun:sqlite": [
16
- "./dist/driver/bun-sqlite.d.ts"
22
+ "dist/driver/bun-sqlite.d.ts"
23
+ ],
24
+ "define/*": [
25
+ "dist/define/*.d.ts"
26
+ ],
27
+ "sqlite/*": [
28
+ "dist/sqlite/*.d.ts"
17
29
  ],
18
- "*": [
19
- "./dist/*",
20
- "./dist/index.d.ts"
30
+ "sqlite": [
31
+ "dist/sqlite.d.ts"
21
32
  ]
22
33
  }
23
34
  },