rado 0.1.62 → 0.1.63

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 (148) hide show
  1. package/dist/define/Column.d.ts +58 -58
  2. package/dist/define/Cursor.d.ts +87 -87
  3. package/dist/define/Expr.d.ts +172 -172
  4. package/dist/define/Fields.d.ts +13 -13
  5. package/dist/define/Functions.d.ts +5 -5
  6. package/dist/define/Id.d.ts +3 -3
  7. package/dist/define/Index.d.ts +17 -17
  8. package/dist/define/Ops.d.ts +7 -7
  9. package/dist/define/OrderBy.d.ts +9 -9
  10. package/dist/define/Param.d.ts +15 -15
  11. package/dist/define/Query.d.ts +109 -109
  12. package/dist/define/Schema.d.ts +18 -18
  13. package/dist/define/Selection.d.ts +20 -20
  14. package/dist/define/Table.d.ts +62 -62
  15. package/dist/define/Target.d.ts +38 -38
  16. package/dist/define/Update.d.ts +4 -4
  17. package/dist/driver/better-sqlite3.d.ts +15 -15
  18. package/dist/driver/bun-sqlite.d.ts +18 -18
  19. package/dist/driver/sql.js.d.ts +15 -15
  20. package/dist/driver/sqlite3.d.ts +18 -18
  21. package/dist/index.d.ts +21 -21
  22. package/dist/lib/Driver.d.ts +110 -110
  23. package/dist/lib/Formatter.d.ts +81 -81
  24. package/dist/lib/Formatter.js +3 -3
  25. package/dist/lib/Sanitizer.d.ts +5 -5
  26. package/dist/lib/SqlError.d.ts +3 -3
  27. package/dist/lib/Statement.d.ts +33 -33
  28. package/dist/sqlite/SqliteFormatter.d.ts +11 -11
  29. package/dist/sqlite/SqliteFunctions.d.ts +165 -165
  30. package/dist/sqlite/SqliteSchema.d.ts +25 -25
  31. package/dist/sqlite.d.ts +2 -2
  32. package/package.json +60 -60
  33. package/dist/CPU.20230126.092143.12244.0.001.cpuprofile +0 -1
  34. package/dist/Column.d.ts +0 -54
  35. package/dist/Column.js +0 -63
  36. package/dist/Cursor.d.ts +0 -77
  37. package/dist/Cursor.js +0 -221
  38. package/dist/Driver.d.ts +0 -89
  39. package/dist/Driver.js +0 -262
  40. package/dist/Expr.d.ts +0 -149
  41. package/dist/Expr.js +0 -284
  42. package/dist/Fields.d.ts +0 -11
  43. package/dist/Fields.js +0 -0
  44. package/dist/Formatter.d.ts +0 -55
  45. package/dist/Formatter.js +0 -496
  46. package/dist/Functions.d.ts +0 -7
  47. package/dist/Functions.js +0 -11
  48. package/dist/Id.d.ts +0 -3
  49. package/dist/Id.js +0 -0
  50. package/dist/Ops.d.ts +0 -8
  51. package/dist/Ops.js +0 -45
  52. package/dist/OrderBy.d.ts +0 -9
  53. package/dist/OrderBy.js +0 -9
  54. package/dist/Param.d.ts +0 -15
  55. package/dist/Param.js +0 -18
  56. package/dist/Query.d.ts +0 -107
  57. package/dist/Query.js +0 -74
  58. package/dist/Sanitizer.d.ts +0 -4
  59. package/dist/Sanitizer.js +0 -0
  60. package/dist/Schema.d.ts +0 -23
  61. package/dist/Schema.js +0 -60
  62. package/dist/Selection.d.ts +0 -20
  63. package/dist/Selection.js +0 -7
  64. package/dist/Statement.d.ts +0 -57
  65. package/dist/Statement.js +0 -184
  66. package/dist/Table.d.ts +0 -56
  67. package/dist/Table.js +0 -104
  68. package/dist/Target.d.ts +0 -30
  69. package/dist/Target.js +0 -37
  70. package/dist/Update.d.ts +0 -4
  71. package/dist/Update.js +0 -0
  72. package/dist/lib/Column.d.ts +0 -57
  73. package/dist/lib/Column.js +0 -63
  74. package/dist/lib/Cursor.d.ts +0 -79
  75. package/dist/lib/Cursor.js +0 -231
  76. package/dist/lib/Expr.d.ts +0 -154
  77. package/dist/lib/Expr.js +0 -284
  78. package/dist/lib/Fields.d.ts +0 -13
  79. package/dist/lib/Fields.js +0 -0
  80. package/dist/lib/Functions.d.ts +0 -5
  81. package/dist/lib/Functions.js +0 -11
  82. package/dist/lib/Id.d.ts +0 -3
  83. package/dist/lib/Id.js +0 -0
  84. package/dist/lib/Index.d.ts +0 -17
  85. package/dist/lib/Index.js +0 -20
  86. package/dist/lib/Ops.d.ts +0 -8
  87. package/dist/lib/Ops.js +0 -45
  88. package/dist/lib/OrderBy.d.ts +0 -9
  89. package/dist/lib/OrderBy.js +0 -9
  90. package/dist/lib/Param.d.ts +0 -20
  91. package/dist/lib/Param.js +0 -27
  92. package/dist/lib/Query.d.ts +0 -109
  93. package/dist/lib/Query.js +0 -74
  94. package/dist/lib/Schema.d.ts +0 -18
  95. package/dist/lib/Schema.js +0 -67
  96. package/dist/lib/Selection.d.ts +0 -20
  97. package/dist/lib/Selection.js +0 -7
  98. package/dist/lib/Table.d.ts +0 -62
  99. package/dist/lib/Table.js +0 -130
  100. package/dist/lib/Target.d.ts +0 -30
  101. package/dist/lib/Target.js +0 -37
  102. package/dist/lib/Update.d.ts +0 -4
  103. package/dist/lib/Update.js +0 -0
  104. package/dist/sqlite/index.d.ts +0 -2
  105. package/dist/sqlite/index.js +0 -3
  106. package/dist/src/driver/better-sqlite3.js +0 -49
  107. package/dist/src/driver/sql.js.js +0 -66
  108. package/dist/src/driver/sqlite3.js +0 -87
  109. package/dist/src/index.js +0 -24
  110. package/dist/src/lib/Column.js +0 -63
  111. package/dist/src/lib/Cursor.js +0 -231
  112. package/dist/src/lib/Driver.js +0 -316
  113. package/dist/src/lib/Expr.js +0 -284
  114. package/dist/src/lib/Fields.js +0 -0
  115. package/dist/src/lib/Formatter.js +0 -625
  116. package/dist/src/lib/Functions.js +0 -11
  117. package/dist/src/lib/Id.js +0 -0
  118. package/dist/src/lib/Index.js +0 -20
  119. package/dist/src/lib/Ops.js +0 -45
  120. package/dist/src/lib/OrderBy.js +0 -9
  121. package/dist/src/lib/Param.js +0 -27
  122. package/dist/src/lib/Query.js +0 -74
  123. package/dist/src/lib/Sanitizer.js +0 -0
  124. package/dist/src/lib/Schema.js +0 -67
  125. package/dist/src/lib/Selection.js +0 -7
  126. package/dist/src/lib/Statement.js +0 -103
  127. package/dist/src/lib/Table.js +0 -130
  128. package/dist/src/lib/Target.js +0 -37
  129. package/dist/src/lib/Update.js +0 -0
  130. package/dist/src/sqlite/SqliteFormatter.js +0 -67
  131. package/dist/src/sqlite/SqliteFunctions.js +0 -146
  132. package/dist/src/sqlite/SqliteSchema.js +0 -47
  133. package/dist/src/sqlite.js +0 -3
  134. package/dist/test/DbSuite.js +0 -28
  135. package/dist/test/TSTestTypes.js +0 -6
  136. package/dist/test/TestBasic.js +0 -172
  137. package/dist/test/TestExtend.js +0 -68
  138. package/dist/test/TestFts5.js +0 -34
  139. package/dist/test/TestFunctions.js +0 -28
  140. package/dist/test/TestJoins.js +0 -34
  141. package/dist/test/TestJson.js +0 -33
  142. package/dist/test/TestPrepare.js +0 -27
  143. package/dist/test/TestRawSql.js +0 -31
  144. package/dist/test/TestSchema.js +0 -69
  145. package/dist/test/TestSubQueries.js +0 -79
  146. package/dist/test/TestTransaction.js +0 -54
  147. package/dist/test/TestUpdate.js +0 -95
  148. package/dist/test/index.js +0 -14
@@ -1,4 +1,4 @@
1
- import type { EV } from './Expr';
2
- export type Update<Row> = Partial<{
3
- [K in keyof Row]: EV<Row[K]>;
4
- }>;
1
+ import type { EV } from './Expr';
2
+ export type Update<Row> = Partial<{
3
+ [K in keyof Row]: EV<Row[K]>;
4
+ }>;
@@ -1,15 +1,15 @@
1
- import type { Database } from 'better-sqlite3';
2
- import { SchemaInstructions } from '../define/Schema';
3
- import { Driver } from '../lib/Driver';
4
- import { Statement } from '../lib/Statement';
5
- import { SqliteSchema } from '../sqlite/SqliteSchema';
6
- export declare class BetterSqlite3Driver extends Driver.Sync {
7
- db: Database;
8
- tableData: (tableName: string) => Array<SqliteSchema.Column>;
9
- indexData: (tableName: string) => Array<SqliteSchema.Index>;
10
- constructor(db: Database);
11
- prepareStatement(stmt: Statement): Driver.Sync.PreparedStatement;
12
- schemaInstructions(tableName: string): SchemaInstructions | undefined;
13
- export(): Uint8Array;
14
- }
15
- export declare function connect(db: Database): BetterSqlite3Driver;
1
+ import type { Database } from 'better-sqlite3';
2
+ import { SchemaInstructions } from '../define/Schema';
3
+ import { Driver } from '../lib/Driver';
4
+ import { Statement } from '../lib/Statement';
5
+ import { SqliteSchema } from '../sqlite/SqliteSchema';
6
+ export declare class BetterSqlite3Driver extends Driver.Sync {
7
+ db: Database;
8
+ tableData: (tableName: string) => Array<SqliteSchema.Column>;
9
+ indexData: (tableName: string) => Array<SqliteSchema.Index>;
10
+ constructor(db: Database);
11
+ prepareStatement(stmt: Statement): Driver.Sync.PreparedStatement;
12
+ schemaInstructions(tableName: string): SchemaInstructions | undefined;
13
+ export(): Uint8Array;
14
+ }
15
+ export declare function connect(db: Database): BetterSqlite3Driver;
@@ -1,18 +1,18 @@
1
- /// <reference types="bun-types" />
2
- import type { Database } from 'bun:sqlite';
3
- import { SchemaInstructions } from '../define/Schema';
4
- import { Driver } from '../lib/Driver';
5
- import { Statement } from '../lib/Statement';
6
- import { SqliteSchema } from '../sqlite/SqliteSchema';
7
- export declare class BunSqliteDriver extends Driver.Sync {
8
- db: Database;
9
- tableData: (tableName: string) => Array<SqliteSchema.Column>;
10
- indexData: (tableName: string) => Array<SqliteSchema.Index>;
11
- lastChanges: () => {
12
- rowsAffected: number;
13
- };
14
- constructor(db: Database);
15
- prepareStatement(stmt: Statement): Driver.Sync.PreparedStatement;
16
- schemaInstructions(tableName: string): SchemaInstructions | undefined;
17
- }
18
- export declare function connect(db: Database): BunSqliteDriver;
1
+ /// <reference types="bun-types" />
2
+ import type { Database } from 'bun:sqlite';
3
+ import { SchemaInstructions } from '../define/Schema';
4
+ import { Driver } from '../lib/Driver';
5
+ import { Statement } from '../lib/Statement';
6
+ import { SqliteSchema } from '../sqlite/SqliteSchema';
7
+ export declare class BunSqliteDriver extends Driver.Sync {
8
+ db: Database;
9
+ tableData: (tableName: string) => Array<SqliteSchema.Column>;
10
+ indexData: (tableName: string) => Array<SqliteSchema.Index>;
11
+ lastChanges: () => {
12
+ rowsAffected: number;
13
+ };
14
+ constructor(db: Database);
15
+ prepareStatement(stmt: Statement): Driver.Sync.PreparedStatement;
16
+ schemaInstructions(tableName: string): SchemaInstructions | undefined;
17
+ }
18
+ export declare function connect(db: Database): BunSqliteDriver;
@@ -1,15 +1,15 @@
1
- import type { Database } from 'sql.js';
2
- import { SchemaInstructions } from '../define/Schema';
3
- import { Driver } from '../lib/Driver';
4
- import { Statement } from '../lib/Statement';
5
- import { SqliteSchema } from '../sqlite/SqliteSchema';
6
- export declare class SqlJsDriver extends Driver.Sync {
7
- db: Database;
8
- tableData: (tableName: string) => Array<SqliteSchema.Column>;
9
- indexData: (tableName: string) => Array<SqliteSchema.Index>;
10
- constructor(db: Database);
11
- prepareStatement(stmt: Statement, discardAfter: boolean): Driver.Sync.PreparedStatement;
12
- schemaInstructions(tableName: string): SchemaInstructions | undefined;
13
- export(): Uint8Array;
14
- }
15
- export declare function connect(db: Database): SqlJsDriver;
1
+ import type { Database } from 'sql.js';
2
+ import { SchemaInstructions } from '../define/Schema';
3
+ import { Driver } from '../lib/Driver';
4
+ import { Statement } from '../lib/Statement';
5
+ import { SqliteSchema } from '../sqlite/SqliteSchema';
6
+ export declare class SqlJsDriver extends Driver.Sync {
7
+ db: Database;
8
+ tableData: (tableName: string) => Array<SqliteSchema.Column>;
9
+ indexData: (tableName: string) => Array<SqliteSchema.Index>;
10
+ constructor(db: Database);
11
+ prepareStatement(stmt: Statement, discardAfter: boolean): Driver.Sync.PreparedStatement;
12
+ schemaInstructions(tableName: string): SchemaInstructions | undefined;
13
+ export(): Uint8Array;
14
+ }
15
+ export declare function connect(db: Database): SqlJsDriver;
@@ -1,18 +1,18 @@
1
- import type { Database } from 'sqlite3';
2
- import { Query } from '../define/Query';
3
- import { SchemaInstructions } from '../define/Schema';
4
- import { Driver } from '../lib/Driver';
5
- import { Statement } from '../lib/Statement';
6
- import { SqliteSchema } from '../sqlite/SqliteSchema';
7
- export declare class Sqlite3Driver extends Driver.Async {
8
- private db;
9
- lock: Promise<void> | undefined;
10
- tableData: (tableName: string) => Promise<Array<SqliteSchema.Column>>;
11
- indexData: (tableName: string) => Promise<Array<SqliteSchema.Index>>;
12
- constructor(db: Database);
13
- executeQuery<T>(query: Query<T>, stmt?: Driver.Async.PreparedStatement, params?: any[] | undefined): Promise<T>;
14
- prepareStatement(stmt: Statement): Driver.Async.PreparedStatement;
15
- schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
16
- isolate(): [connection: Driver.Async, release: () => Promise<void>];
17
- }
18
- export declare function connect(db: Database): Sqlite3Driver;
1
+ import type { Database } from 'sqlite3';
2
+ import { Query } from '../define/Query';
3
+ import { SchemaInstructions } from '../define/Schema';
4
+ import { Driver } from '../lib/Driver';
5
+ import { Statement } from '../lib/Statement';
6
+ import { SqliteSchema } from '../sqlite/SqliteSchema';
7
+ export declare class Sqlite3Driver extends Driver.Async {
8
+ private db;
9
+ lock: Promise<void> | undefined;
10
+ tableData: (tableName: string) => Promise<Array<SqliteSchema.Column>>;
11
+ indexData: (tableName: string) => Promise<Array<SqliteSchema.Index>>;
12
+ constructor(db: Database);
13
+ executeQuery<T>(query: Query<T>, stmt?: Driver.Async.PreparedStatement, params?: any[] | undefined): Promise<T>;
14
+ prepareStatement(stmt: Statement): Driver.Async.PreparedStatement;
15
+ schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
16
+ isolate(): [connection: Driver.Async, release: () => Promise<void>];
17
+ }
18
+ export declare function connect(db: Database): Sqlite3Driver;
package/dist/index.d.ts CHANGED
@@ -1,21 +1,21 @@
1
- export * from './define/Column';
2
- export * from './define/Cursor';
3
- export * from './define/Expr';
4
- export * from './define/Fields';
5
- export * from './define/Functions';
6
- export * from './define/Id';
7
- export * from './define/Index';
8
- export * from './define/Ops';
9
- export * from './define/OrderBy';
10
- export * from './define/Param';
11
- export * from './define/Query';
12
- export * from './define/Schema';
13
- export * from './define/Selection';
14
- export * from './define/Table';
15
- export * from './define/Target';
16
- export * from './define/Update';
17
- export type { Driver } from './lib/Driver';
18
- export type { FormatContext, Formatter } from './lib/Formatter';
19
- export type { Sanitizer } from './lib/Sanitizer';
20
- export * from './lib/SqlError';
21
- export type { Statement } from './lib/Statement';
1
+ export * from './define/Column';
2
+ export * from './define/Cursor';
3
+ export * from './define/Expr';
4
+ export * from './define/Fields';
5
+ export * from './define/Functions';
6
+ export * from './define/Id';
7
+ export * from './define/Index';
8
+ export * from './define/Ops';
9
+ export * from './define/OrderBy';
10
+ export * from './define/Param';
11
+ export * from './define/Query';
12
+ export * from './define/Schema';
13
+ export * from './define/Selection';
14
+ export * from './define/Table';
15
+ export * from './define/Target';
16
+ export * from './define/Update';
17
+ export type { Driver } from './lib/Driver';
18
+ export type { FormatContext, Formatter } from './lib/Formatter';
19
+ export type { Sanitizer } from './lib/Sanitizer';
20
+ export * from './lib/SqlError';
21
+ export type { Statement } from './lib/Statement';
@@ -1,110 +1,110 @@
1
- import { Cursor } from '../define/Cursor';
2
- import { Expr } from '../define/Expr';
3
- import { Query } from '../define/Query';
4
- import { SchemaInstructions } from '../define/Schema';
5
- import { Table } from '../define/Table';
6
- import { Formatter } from './Formatter';
7
- import { Statement } from './Statement';
8
- declare class Callable extends Function {
9
- constructor(fn: Function);
10
- }
11
- declare abstract class DriverBase extends Callable {
12
- formatter: Formatter;
13
- constructor(formatter: Formatter);
14
- compile<T extends Array<Expr<any>>, R>(create: (...params: T) => Cursor<R>): [Query<T>, Statement];
15
- all(...args: Array<any>): any;
16
- get(...args: Array<any>): any;
17
- sql(strings: TemplateStringsArray, ...params: Array<any>): Cursor<unknown>;
18
- executeTemplate(expectedReturn: Query.RawReturn, strings: TemplateStringsArray, ...params: Array<any>): any;
19
- abstract executeQuery(query: Query<any>): any;
20
- }
21
- type ParamTypes<Params extends [...any[]]> = {
22
- [K in keyof Params]: Params[K] extends Expr<infer T> ? T : never;
23
- } & {
24
- length: Params['length'];
25
- };
26
- interface SyncDriver {
27
- <T>(query: Cursor<T>): T;
28
- <T>(...queries: Array<Cursor<any>>): T;
29
- (strings: TemplateStringsArray, ...values: any[]): any;
30
- }
31
- declare abstract class SyncDriver extends DriverBase {
32
- transactionId: number;
33
- abstract prepareStatement(stmt: Statement, discardAfter: boolean): SyncPreparedStatement;
34
- abstract schemaInstructions(tableName: string): SchemaInstructions | undefined;
35
- prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Cursor<R>): (...params: ParamTypes<T>) => R;
36
- migrateSchema(...tables: Array<Table<any>>): unknown;
37
- executeQuery<T>(query: Query<T>, stmt?: SyncPreparedStatement, params?: Array<any>): T;
38
- all<T>(cursor: Cursor.SelectSingle<T>): Array<T>;
39
- all<T>(cursor: Cursor<T>): T;
40
- all<T>(strings: TemplateStringsArray, ...params: Array<any>): Array<T>;
41
- get<T>(cursor: Cursor.SelectMultiple<T>): T | null;
42
- get<T>(cursor: Cursor<T>): T;
43
- get<T>(strings: TemplateStringsArray, ...params: Array<any>): T;
44
- iterate<T>(cursor: Cursor.SelectMultiple<T>): Iterable<T>;
45
- transaction<T>(run: (query: SyncDriver) => T): T;
46
- toAsync(): SyncWrapper;
47
- }
48
- interface SyncPreparedStatement {
49
- run(params?: Array<any>): {
50
- rowsAffected: number;
51
- };
52
- iterate<T>(params?: Array<any>): Iterable<T>;
53
- all<T>(params?: Array<any>): Array<T>;
54
- get<T>(params?: Array<any>): T;
55
- execute(params?: Array<any>): void;
56
- }
57
- interface AsyncDriver {
58
- <T>(query: Cursor<T>): Promise<T>;
59
- <T>(...queries: Array<Cursor<any>>): Promise<T>;
60
- (strings: TemplateStringsArray, ...values: any[]): Promise<any>;
61
- }
62
- declare abstract class AsyncDriver extends DriverBase {
63
- transactionId: number;
64
- abstract isolate(): [connection: AsyncDriver, release: () => Promise<void>];
65
- abstract prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
66
- abstract schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
67
- prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Cursor<R>): (...params: ParamTypes<T>) => Promise<R>;
68
- migrateSchema(...tables: Array<Table<any>>): Promise<unknown>;
69
- executeQuery<T>(query: Query<T>, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<T>;
70
- all<T>(cursor: Cursor.SelectSingle<T>): Promise<Array<T>>;
71
- all<T>(cursor: Cursor<T>): Promise<T>;
72
- all<T>(strings: TemplateStringsArray, ...params: Array<any>): Promise<Array<T>>;
73
- get<T>(cursor: Cursor.SelectMultiple<T>): Promise<T | null>;
74
- get<T>(cursor: Cursor<T>): Promise<T>;
75
- get<T>(strings: TemplateStringsArray, ...params: Array<any>): Promise<T>;
76
- iterate<T>(cursor: Cursor.SelectMultiple<T>): AsyncIterable<T>;
77
- transaction<T>(run: (query: AsyncDriver) => T): Promise<T>;
78
- }
79
- declare class SyncWrapper extends AsyncDriver {
80
- private sync;
81
- lock: Promise<void> | undefined;
82
- constructor(sync: SyncDriver);
83
- executeQuery<T>(query: Query<T>, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<T>;
84
- prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
85
- schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
86
- isolate(): [connection: AsyncDriver, release: () => Promise<void>];
87
- }
88
- interface AsyncPreparedStatement {
89
- run(params?: Array<any>): Promise<{
90
- rowsAffected: number;
91
- }>;
92
- iterate<T>(params?: Array<any>): AsyncIterable<T>;
93
- all<T>(params?: Array<any>): Promise<Array<T>>;
94
- get<T>(params?: Array<any>): Promise<T>;
95
- execute(params?: Array<any>): Promise<void>;
96
- }
97
- export type Driver = SyncDriver | AsyncDriver;
98
- export declare namespace Driver {
99
- type Sync = SyncDriver;
100
- const Sync: typeof SyncDriver;
101
- namespace Sync {
102
- type PreparedStatement = SyncPreparedStatement;
103
- }
104
- type Async = AsyncDriver;
105
- const Async: typeof AsyncDriver;
106
- namespace Async {
107
- type PreparedStatement = AsyncPreparedStatement;
108
- }
109
- }
110
- export {};
1
+ import { Cursor } from '../define/Cursor';
2
+ import { Expr } from '../define/Expr';
3
+ import { Query } from '../define/Query';
4
+ import { SchemaInstructions } from '../define/Schema';
5
+ import { Table } from '../define/Table';
6
+ import { Formatter } from './Formatter';
7
+ import { Statement } from './Statement';
8
+ declare class Callable extends Function {
9
+ constructor(fn: Function);
10
+ }
11
+ declare abstract class DriverBase extends Callable {
12
+ formatter: Formatter;
13
+ constructor(formatter: Formatter);
14
+ compile<T extends Array<Expr<any>>, R>(create: (...params: T) => Cursor<R>): [Query<T>, Statement];
15
+ all(...args: Array<any>): any;
16
+ get(...args: Array<any>): any;
17
+ sql(strings: TemplateStringsArray, ...params: Array<any>): Cursor<unknown>;
18
+ executeTemplate(expectedReturn: Query.RawReturn, strings: TemplateStringsArray, ...params: Array<any>): any;
19
+ abstract executeQuery(query: Query<any>): any;
20
+ }
21
+ type ParamTypes<Params extends [...any[]]> = {
22
+ [K in keyof Params]: Params[K] extends Expr<infer T> ? T : never;
23
+ } & {
24
+ length: Params['length'];
25
+ };
26
+ interface SyncDriver {
27
+ <T>(query: Cursor<T>): T;
28
+ <T>(...queries: Array<Cursor<any>>): T;
29
+ (strings: TemplateStringsArray, ...values: any[]): any;
30
+ }
31
+ declare abstract class SyncDriver extends DriverBase {
32
+ transactionId: number;
33
+ abstract prepareStatement(stmt: Statement, discardAfter: boolean): SyncPreparedStatement;
34
+ abstract schemaInstructions(tableName: string): SchemaInstructions | undefined;
35
+ prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Cursor<R>): (...params: ParamTypes<T>) => R;
36
+ migrateSchema(...tables: Array<Table<any>>): unknown;
37
+ executeQuery<T>(query: Query<T>, stmt?: SyncPreparedStatement, params?: Array<any>): T;
38
+ all<T>(cursor: Cursor.SelectSingle<T>): Array<T>;
39
+ all<T>(cursor: Cursor<T>): T;
40
+ all<T>(strings: TemplateStringsArray, ...params: Array<any>): Array<T>;
41
+ get<T>(cursor: Cursor.SelectMultiple<T>): T | null;
42
+ get<T>(cursor: Cursor<T>): T;
43
+ get<T>(strings: TemplateStringsArray, ...params: Array<any>): T;
44
+ iterate<T>(cursor: Cursor.SelectMultiple<T>): Iterable<T>;
45
+ transaction<T>(run: (query: SyncDriver) => T): T;
46
+ toAsync(): SyncWrapper;
47
+ }
48
+ interface SyncPreparedStatement {
49
+ run(params?: Array<any>): {
50
+ rowsAffected: number;
51
+ };
52
+ iterate<T>(params?: Array<any>): Iterable<T>;
53
+ all<T>(params?: Array<any>): Array<T>;
54
+ get<T>(params?: Array<any>): T;
55
+ execute(params?: Array<any>): void;
56
+ }
57
+ interface AsyncDriver {
58
+ <T>(query: Cursor<T>): Promise<T>;
59
+ <T>(...queries: Array<Cursor<any>>): Promise<T>;
60
+ (strings: TemplateStringsArray, ...values: any[]): Promise<any>;
61
+ }
62
+ declare abstract class AsyncDriver extends DriverBase {
63
+ transactionId: number;
64
+ abstract isolate(): [connection: AsyncDriver, release: () => Promise<void>];
65
+ abstract prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
66
+ abstract schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
67
+ prepare<T extends Array<Expr<any>>, R>(create: (...params: T) => Cursor<R>): (...params: ParamTypes<T>) => Promise<R>;
68
+ migrateSchema(...tables: Array<Table<any>>): Promise<unknown>;
69
+ executeQuery<T>(query: Query<T>, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<T>;
70
+ all<T>(cursor: Cursor.SelectSingle<T>): Promise<Array<T>>;
71
+ all<T>(cursor: Cursor<T>): Promise<T>;
72
+ all<T>(strings: TemplateStringsArray, ...params: Array<any>): Promise<Array<T>>;
73
+ get<T>(cursor: Cursor.SelectMultiple<T>): Promise<T | null>;
74
+ get<T>(cursor: Cursor<T>): Promise<T>;
75
+ get<T>(strings: TemplateStringsArray, ...params: Array<any>): Promise<T>;
76
+ iterate<T>(cursor: Cursor.SelectMultiple<T>): AsyncIterable<T>;
77
+ transaction<T>(run: (query: AsyncDriver) => T): Promise<T>;
78
+ }
79
+ declare class SyncWrapper extends AsyncDriver {
80
+ private sync;
81
+ lock: Promise<void> | undefined;
82
+ constructor(sync: SyncDriver);
83
+ executeQuery<T>(query: Query<T>, stmt?: AsyncPreparedStatement, params?: Array<any>): Promise<T>;
84
+ prepareStatement(stmt: Statement, discardAfter: boolean): AsyncPreparedStatement;
85
+ schemaInstructions(tableName: string): Promise<SchemaInstructions | undefined>;
86
+ isolate(): [connection: AsyncDriver, release: () => Promise<void>];
87
+ }
88
+ interface AsyncPreparedStatement {
89
+ run(params?: Array<any>): Promise<{
90
+ rowsAffected: number;
91
+ }>;
92
+ iterate<T>(params?: Array<any>): AsyncIterable<T>;
93
+ all<T>(params?: Array<any>): Promise<Array<T>>;
94
+ get<T>(params?: Array<any>): Promise<T>;
95
+ execute(params?: Array<any>): Promise<void>;
96
+ }
97
+ export type Driver = SyncDriver | AsyncDriver;
98
+ export declare namespace Driver {
99
+ type Sync = SyncDriver;
100
+ const Sync: typeof SyncDriver;
101
+ namespace Sync {
102
+ type PreparedStatement = SyncPreparedStatement;
103
+ }
104
+ type Async = AsyncDriver;
105
+ const Async: typeof AsyncDriver;
106
+ namespace Async {
107
+ type PreparedStatement = AsyncPreparedStatement;
108
+ }
109
+ }
110
+ export {};
@@ -1,81 +1,81 @@
1
- import { ColumnData, ColumnType } from '../define/Column';
2
- import { ExprData } from '../define/Expr';
3
- import { OrderBy } from '../define/OrderBy';
4
- import { Query } from '../define/Query';
5
- import { Target } from '../define/Target';
6
- import { Sanitizer } from './Sanitizer';
7
- import { Statement, StatementOptions } from './Statement';
8
- export interface FormatContext {
9
- stmt: Statement;
10
- nameResult?: string;
11
- /** Skip prefixing fields with their table name */
12
- skipTableName?: boolean;
13
- /**
14
- * In SQLite table names are used as expressions in the FTS5 plugin.
15
- * To distinguish between formatting a row of the table and just the table name
16
- * this flag can be used.
17
- **/
18
- tableAsExpr?: boolean;
19
- /** Inline all parameters */
20
- forceInline?: boolean;
21
- formatAsJson?: boolean;
22
- formatAsInsert?: boolean;
23
- formatAsIn?: boolean;
24
- topLevel?: boolean;
25
- }
26
- type FormatSubject = (stmt: Statement, mkSubject: () => void) => void;
27
- export interface CompileOptions extends Partial<FormatContext>, StatementOptions {
28
- }
29
- export declare abstract class Formatter implements Sanitizer {
30
- constructor();
31
- abstract escapeValue(value: any): string;
32
- abstract escapeIdentifier(ident: string): string;
33
- abstract formatParamValue(paramValue: any): any;
34
- abstract formatAccess(ctx: FormatContext, mkSubject: () => void, field: string): Statement;
35
- compile<T>(query: Query<T>, options?: CompileOptions): Statement;
36
- createContext(options?: CompileOptions): {
37
- stmt: Statement;
38
- nameResult?: string | undefined;
39
- skipTableName?: boolean | undefined;
40
- tableAsExpr?: boolean | undefined;
41
- forceInline?: boolean | undefined;
42
- formatAsJson?: boolean | undefined;
43
- formatAsInsert?: boolean | undefined;
44
- formatAsIn?: boolean | undefined;
45
- topLevel?: boolean | undefined;
46
- skipNewlines?: boolean | undefined;
47
- };
48
- format<T>(ctx: FormatContext, query: Query<T>): Statement;
49
- formatSelect({ topLevel, ...ctx }: FormatContext, query: Query.Select): Statement;
50
- formatInsert(ctx: FormatContext, query: Query.Insert): Statement;
51
- formatUpdate(ctx: FormatContext, query: Query.Update): Statement;
52
- formatDelete(ctx: FormatContext, query: Query.Delete): Statement;
53
- formatCreateTable(ctx: FormatContext, query: Query.CreateTable): Statement;
54
- formatCreateIndex(ctx: FormatContext, query: Query.CreateIndex): Statement;
55
- formatDropIndex(ctx: FormatContext, query: Query.DropIndex): Statement;
56
- formatAlterTable(ctx: FormatContext, query: Query.AlterTable): Statement;
57
- formatTransaction(ctx: FormatContext, { op, id }: Query.Transaction): Statement;
58
- formatBatch(ctx: FormatContext, { queries }: Query.Batch): Statement;
59
- formatRaw(ctx: FormatContext, { strings, params }: Query.Raw): Statement;
60
- formatColumn(ctx: FormatContext, column: ColumnData): Statement;
61
- formatContraintReference(ctx: FormatContext, reference: ExprData): Statement;
62
- formatType(ctx: FormatContext, type: ColumnType): Statement;
63
- formatInsertRow(ctx: FormatContext, columns: Record<string, ColumnData>, row: Record<string, any>): Statement;
64
- formatColumnValue(ctx: FormatContext, column: ColumnData, columnValue: any): Statement;
65
- formatTarget(ctx: FormatContext, target: Target): Statement;
66
- formatWhere({ topLevel, ...ctx }: FormatContext, expr: ExprData | undefined): Statement;
67
- formatHaving({ topLevel, ...ctx }: FormatContext, expr: ExprData | undefined): Statement;
68
- formatGroupBy(ctx: FormatContext, groupBy: Array<ExprData> | undefined): Statement;
69
- formatOrderBy(ctx: FormatContext, orderBy: Array<OrderBy> | undefined): Statement;
70
- formatLimit(ctx: FormatContext, { limit, offset, singleResult }: Query.QueryBase): Statement;
71
- formatSelection(ctx: FormatContext, selection: ExprData, formatSubject?: FormatSubject): Statement;
72
- formatExprJson(ctx: FormatContext, expr: ExprData): Statement;
73
- formatExprValue(ctx: FormatContext, expr: ExprData): Statement;
74
- retrieveField(expr: ExprData, field: string): ExprData | undefined;
75
- formatField(ctx: FormatContext, expr: ExprData, field: string): Statement;
76
- formatString(ctx: FormatContext, input: string): Statement;
77
- formatInlineValue(ctx: FormatContext, rawValue: any): Statement;
78
- formatValue(ctx: FormatContext, rawValue: any): Statement;
79
- formatExpr({ formatAsIn, ...ctx }: FormatContext, expr: ExprData): Statement;
80
- }
81
- export {};
1
+ import { ColumnData, ColumnType } from '../define/Column';
2
+ import { ExprData } from '../define/Expr';
3
+ import { OrderBy } from '../define/OrderBy';
4
+ import { Query } from '../define/Query';
5
+ import { Target } from '../define/Target';
6
+ import { Sanitizer } from './Sanitizer';
7
+ import { Statement, StatementOptions } from './Statement';
8
+ export interface FormatContext {
9
+ stmt: Statement;
10
+ nameResult?: string;
11
+ /** Skip prefixing fields with their table name */
12
+ skipTableName?: boolean;
13
+ /**
14
+ * In SQLite table names are used as expressions in the FTS5 plugin.
15
+ * To distinguish between formatting a row of the table and just the table name
16
+ * this flag can be used.
17
+ **/
18
+ tableAsExpr?: boolean;
19
+ /** Inline all parameters */
20
+ forceInline?: boolean;
21
+ formatAsJson?: boolean;
22
+ formatAsInsert?: boolean;
23
+ formatAsIn?: boolean;
24
+ topLevel?: boolean;
25
+ }
26
+ type FormatSubject = (stmt: Statement, mkSubject: () => void) => void;
27
+ export interface CompileOptions extends Partial<FormatContext>, StatementOptions {
28
+ }
29
+ export declare abstract class Formatter implements Sanitizer {
30
+ constructor();
31
+ abstract escapeValue(value: any): string;
32
+ abstract escapeIdentifier(ident: string): string;
33
+ abstract formatParamValue(paramValue: any): any;
34
+ abstract formatAccess(ctx: FormatContext, mkSubject: () => void, field: string): Statement;
35
+ compile<T>(query: Query<T>, options?: CompileOptions): Statement;
36
+ createContext(options?: CompileOptions): {
37
+ stmt: Statement;
38
+ nameResult?: string | undefined;
39
+ skipTableName?: boolean | undefined;
40
+ tableAsExpr?: boolean | undefined;
41
+ forceInline?: boolean | undefined;
42
+ formatAsJson?: boolean | undefined;
43
+ formatAsInsert?: boolean | undefined;
44
+ formatAsIn?: boolean | undefined;
45
+ topLevel?: boolean | undefined;
46
+ skipNewlines?: boolean | undefined;
47
+ };
48
+ format<T>(ctx: FormatContext, query: Query<T>): Statement;
49
+ formatSelect({ topLevel, ...ctx }: FormatContext, query: Query.Select): Statement;
50
+ formatInsert(ctx: FormatContext, query: Query.Insert): Statement;
51
+ formatUpdate(ctx: FormatContext, query: Query.Update): Statement;
52
+ formatDelete(ctx: FormatContext, query: Query.Delete): Statement;
53
+ formatCreateTable(ctx: FormatContext, query: Query.CreateTable): Statement;
54
+ formatCreateIndex(ctx: FormatContext, query: Query.CreateIndex): Statement;
55
+ formatDropIndex(ctx: FormatContext, query: Query.DropIndex): Statement;
56
+ formatAlterTable(ctx: FormatContext, query: Query.AlterTable): Statement;
57
+ formatTransaction(ctx: FormatContext, { op, id }: Query.Transaction): Statement;
58
+ formatBatch(ctx: FormatContext, { queries }: Query.Batch): Statement;
59
+ formatRaw(ctx: FormatContext, { strings, params }: Query.Raw): Statement;
60
+ formatColumn(ctx: FormatContext, column: ColumnData): Statement;
61
+ formatContraintReference(ctx: FormatContext, reference: ExprData): Statement;
62
+ formatType(ctx: FormatContext, type: ColumnType): Statement;
63
+ formatInsertRow(ctx: FormatContext, columns: Record<string, ColumnData>, row: Record<string, any>): Statement;
64
+ formatColumnValue(ctx: FormatContext, column: ColumnData, columnValue: any): Statement;
65
+ formatTarget(ctx: FormatContext, target: Target): Statement;
66
+ formatWhere({ topLevel, ...ctx }: FormatContext, expr: ExprData | undefined): Statement;
67
+ formatHaving({ topLevel, ...ctx }: FormatContext, expr: ExprData | undefined): Statement;
68
+ formatGroupBy(ctx: FormatContext, groupBy: Array<ExprData> | undefined): Statement;
69
+ formatOrderBy(ctx: FormatContext, orderBy: Array<OrderBy> | undefined): Statement;
70
+ formatLimit(ctx: FormatContext, { limit, offset, singleResult }: Query.QueryBase): Statement;
71
+ formatSelection(ctx: FormatContext, selection: ExprData, formatSubject?: FormatSubject): Statement;
72
+ formatExprJson(ctx: FormatContext, expr: ExprData): Statement;
73
+ formatExprValue(ctx: FormatContext, expr: ExprData): Statement;
74
+ retrieveField(expr: ExprData, field: string): ExprData | undefined;
75
+ formatField(ctx: FormatContext, expr: ExprData, field: string): Statement;
76
+ formatString(ctx: FormatContext, input: string): Statement;
77
+ formatInlineValue(ctx: FormatContext, rawValue: any): Statement;
78
+ formatValue(ctx: FormatContext, rawValue: any): Statement;
79
+ formatExpr({ formatAsIn, ...ctx }: FormatContext, expr: ExprData): Statement;
80
+ }
81
+ export {};
@@ -410,7 +410,7 @@ var Formatter = class {
410
410
  if (formatSubject)
411
411
  formatSubject(stmt, mkSubject);
412
412
  else
413
- mkSubject();
413
+ this.formatExpr(ctx, selection);
414
414
  stmt.add("AS").addIdentifier("result");
415
415
  return stmt;
416
416
  }
@@ -624,7 +624,7 @@ var Formatter = class {
624
624
  stmt.raw("SELECT json_group_array(json(result)) FROM ").openParenthesis();
625
625
  }
626
626
  stmt.raw("SELECT value AS result").add("FROM json_each").openParenthesis();
627
- this.formatExprJson(ctx, target.expr);
627
+ this.formatExpr(ctx, target.expr);
628
628
  stmt.closeParenthesis();
629
629
  if (target.alias)
630
630
  stmt.add("AS").addIdentifier(target.alias);
@@ -647,7 +647,7 @@ var Formatter = class {
647
647
  stmt.raw("SELECT json_group_array(json(result)) FROM ").openParenthesis();
648
648
  }
649
649
  stmt.raw("SELECT").space();
650
- this.formatExprJson(ctx, result).add("AS result").add("FROM json_each").openParenthesis();
650
+ this.formatExpr(ctx, result).add("AS result").add("FROM json_each").openParenthesis();
651
651
  this.formatExprJson(ctx, target.expr);
652
652
  stmt.closeParenthesis();
653
653
  if (target.alias)
@@ -1,5 +1,5 @@
1
- export interface Sanitizer {
2
- escapeValue(value: any): string;
3
- escapeIdentifier(ident: string): string;
4
- formatParamValue(paramValue: any): any;
5
- }
1
+ export interface Sanitizer {
2
+ escapeValue(value: any): string;
3
+ escapeIdentifier(ident: string): string;
4
+ formatParamValue(paramValue: any): any;
5
+ }
@@ -1,3 +1,3 @@
1
- export declare class SqlError extends Error {
2
- constructor(cause: Error, sql: string);
3
- }
1
+ export declare class SqlError extends Error {
2
+ constructor(cause: Error, sql: string);
3
+ }