@symbiote-native/sqlite 0.1.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.
Files changed (128) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +283 -0
  3. package/build/angular/index.d.ts +2 -0
  4. package/build/angular/index.js +2 -0
  5. package/build/angular/sqlite.service.d.ts +41 -0
  6. package/build/angular/sqlite.service.js +127 -0
  7. package/build/core/index.d.ts +10 -0
  8. package/build/core/index.js +6 -0
  9. package/build/core/native-database.d.ts +65 -0
  10. package/build/core/native-database.js +13 -0
  11. package/build/core/native-module.d.ts +25 -0
  12. package/build/core/native-module.js +17 -0
  13. package/build/core/native-session.d.ts +20 -0
  14. package/build/core/native-session.js +1 -0
  15. package/build/core/native-statement.d.ts +45 -0
  16. package/build/core/native-statement.js +6 -0
  17. package/build/core/param-utils.d.ts +28 -0
  18. package/build/core/param-utils.js +126 -0
  19. package/build/core/path-utils.d.ts +6 -0
  20. package/build/core/path-utils.js +29 -0
  21. package/build/core/query-utils.d.ts +17 -0
  22. package/build/core/query-utils.js +37 -0
  23. package/build/core/sqlite-database.d.ts +246 -0
  24. package/build/core/sqlite-database.js +427 -0
  25. package/build/core/sqlite-session.d.ts +84 -0
  26. package/build/core/sqlite-session.js +121 -0
  27. package/build/core/sqlite-statement.d.ts +96 -0
  28. package/build/core/sqlite-statement.js +321 -0
  29. package/build/core/sqlite-tagged-query.d.ts +73 -0
  30. package/build/core/sqlite-tagged-query.js +119 -0
  31. package/build/core/storage.d.ts +107 -0
  32. package/build/core/storage.js +382 -0
  33. package/build/core/types.d.ts +30 -0
  34. package/build/core/types.js +1 -0
  35. package/build/react/index.d.ts +2 -0
  36. package/build/react/index.js +2 -0
  37. package/build/react/sqlite-context.d.ts +25 -0
  38. package/build/react/sqlite-context.js +129 -0
  39. package/build/solid/index.d.ts +2 -0
  40. package/build/solid/index.js +2 -0
  41. package/build/solid/sqlite-context.d.ts +23 -0
  42. package/build/solid/sqlite-context.js +106 -0
  43. package/build/svelte/SQLiteProvider.svelte +88 -0
  44. package/build/svelte/SQLiteProvider.svelte.d.ts +13 -0
  45. package/build/svelte/index.d.ts +3 -0
  46. package/build/svelte/index.js +5 -0
  47. package/build/svelte/sqlite-context.d.ts +11 -0
  48. package/build/svelte/sqlite-context.js +23 -0
  49. package/build/vue/index.d.ts +2 -0
  50. package/build/vue/index.js +2 -0
  51. package/build/vue/sqlite-context.d.ts +21 -0
  52. package/build/vue/sqlite-context.js +69 -0
  53. package/build-ngc/angular/index.d.ts +2 -0
  54. package/build-ngc/angular/index.js +3 -0
  55. package/build-ngc/angular/index.js.map +1 -0
  56. package/build-ngc/angular/sqlite.service.d.ts +44 -0
  57. package/build-ngc/angular/sqlite.service.js +85 -0
  58. package/build-ngc/angular/sqlite.service.js.map +1 -0
  59. package/build-ngc/core/index.d.ts +10 -0
  60. package/build-ngc/core/index.js +7 -0
  61. package/build-ngc/core/index.js.map +1 -0
  62. package/build-ngc/core/native-database.d.ts +65 -0
  63. package/build-ngc/core/native-database.js +14 -0
  64. package/build-ngc/core/native-database.js.map +1 -0
  65. package/build-ngc/core/native-module.d.ts +25 -0
  66. package/build-ngc/core/native-module.js +18 -0
  67. package/build-ngc/core/native-module.js.map +1 -0
  68. package/build-ngc/core/native-session.d.ts +20 -0
  69. package/build-ngc/core/native-session.js +2 -0
  70. package/build-ngc/core/native-session.js.map +1 -0
  71. package/build-ngc/core/native-statement.d.ts +45 -0
  72. package/build-ngc/core/native-statement.js +7 -0
  73. package/build-ngc/core/native-statement.js.map +1 -0
  74. package/build-ngc/core/param-utils.d.ts +28 -0
  75. package/build-ngc/core/param-utils.js +127 -0
  76. package/build-ngc/core/param-utils.js.map +1 -0
  77. package/build-ngc/core/path-utils.d.ts +6 -0
  78. package/build-ngc/core/path-utils.js +30 -0
  79. package/build-ngc/core/path-utils.js.map +1 -0
  80. package/build-ngc/core/query-utils.d.ts +17 -0
  81. package/build-ngc/core/query-utils.js +38 -0
  82. package/build-ngc/core/query-utils.js.map +1 -0
  83. package/build-ngc/core/sqlite-database.d.ts +246 -0
  84. package/build-ngc/core/sqlite-database.js +428 -0
  85. package/build-ngc/core/sqlite-database.js.map +1 -0
  86. package/build-ngc/core/sqlite-session.d.ts +84 -0
  87. package/build-ngc/core/sqlite-session.js +122 -0
  88. package/build-ngc/core/sqlite-session.js.map +1 -0
  89. package/build-ngc/core/sqlite-statement.d.ts +96 -0
  90. package/build-ngc/core/sqlite-statement.js +322 -0
  91. package/build-ngc/core/sqlite-statement.js.map +1 -0
  92. package/build-ngc/core/sqlite-tagged-query.d.ts +73 -0
  93. package/build-ngc/core/sqlite-tagged-query.js +120 -0
  94. package/build-ngc/core/sqlite-tagged-query.js.map +1 -0
  95. package/build-ngc/core/storage.d.ts +107 -0
  96. package/build-ngc/core/storage.js +383 -0
  97. package/build-ngc/core/storage.js.map +1 -0
  98. package/build-ngc/core/types.d.ts +30 -0
  99. package/build-ngc/core/types.js +2 -0
  100. package/build-ngc/core/types.js.map +1 -0
  101. package/native-link.json +12 -0
  102. package/package.json +141 -0
  103. package/src/angular/index.ts +2 -0
  104. package/src/angular/sqlite.service.ts +114 -0
  105. package/src/core/index.ts +40 -0
  106. package/src/core/native-database.ts +118 -0
  107. package/src/core/native-module.ts +57 -0
  108. package/src/core/native-session.ts +64 -0
  109. package/src/core/native-statement.ts +85 -0
  110. package/src/core/param-utils.ts +163 -0
  111. package/src/core/path-utils.ts +38 -0
  112. package/src/core/query-utils.ts +45 -0
  113. package/src/core/sqlite-database.ts +676 -0
  114. package/src/core/sqlite-session.ts +165 -0
  115. package/src/core/sqlite-statement.ts +578 -0
  116. package/src/core/sqlite-tagged-query.ts +160 -0
  117. package/src/core/storage.ts +492 -0
  118. package/src/core/types.ts +33 -0
  119. package/src/react/index.ts +2 -0
  120. package/src/react/sqlite-context.tsx +244 -0
  121. package/src/solid/index.ts +2 -0
  122. package/src/solid/sqlite-context.ts +156 -0
  123. package/src/svelte/SQLiteProvider.svelte +88 -0
  124. package/src/svelte/index.ts +6 -0
  125. package/src/svelte/sqlite-context.ts +32 -0
  126. package/src/svelte/svelte-compile.test-helper.ts +135 -0
  127. package/src/vue/index.ts +2 -0
  128. package/src/vue/sqlite-context.ts +105 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-database.js","sourceRoot":"","sources":["../../src/core/sqlite-database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type { NativeDatabase } from './native-database';
2
+ import type { NativeSession, IChangeset } from './native-session';
3
+ export type { IChangeset };
4
+ /**
5
+ * An instance of the SQLite session extension.
6
+ * @see [Session Extension](https://www.sqlite.org/sessionintro.html)
7
+ */
8
+ export declare class SQLiteSession {
9
+ private readonly nativeDatabase;
10
+ private readonly nativeSession;
11
+ constructor(nativeDatabase: NativeDatabase, nativeSession: NativeSession);
12
+ /**
13
+ * Attaches a table to the session.
14
+ * @see [`sqlite3session_attach`](https://www.sqlite.org/session/sqlite3session_attach.html)
15
+ * @param table The table to attach. `null` attaches all tables.
16
+ */
17
+ attachAsync(table: string | null): Promise<void>;
18
+ /**
19
+ * Enables or disables the session.
20
+ * @see [`sqlite3session_enable`](https://www.sqlite.org/session/sqlite3session_enable.html)
21
+ */
22
+ enableAsync(enabled: boolean): Promise<void>;
23
+ /**
24
+ * Closes the session.
25
+ * @see [`sqlite3session_delete`](https://www.sqlite.org/session/sqlite3session_delete.html)
26
+ */
27
+ closeAsync(): Promise<void>;
28
+ /**
29
+ * Creates a changeset.
30
+ * @see [`sqlite3session_changeset`](https://www.sqlite.org/session/sqlite3session_changeset.html)
31
+ */
32
+ createChangesetAsync(): Promise<IChangeset>;
33
+ /**
34
+ * Creates an inverted changeset — shorthand for `createChangesetAsync()` +
35
+ * `invertChangesetAsync()`.
36
+ */
37
+ createInvertedChangesetAsync(): Promise<IChangeset>;
38
+ /**
39
+ * Applies a changeset.
40
+ * @see [`sqlite3changeset_apply`](https://www.sqlite.org/session/sqlite3changeset_apply.html)
41
+ */
42
+ applyChangesetAsync(changeset: IChangeset): Promise<void>;
43
+ /**
44
+ * Inverts a changeset.
45
+ * @see [`sqlite3changeset_invert`](https://www.sqlite.org/session/sqlite3changeset_invert.html)
46
+ */
47
+ invertChangesetAsync(changeset: IChangeset): Promise<IChangeset>;
48
+ /**
49
+ * Attaches a table to the session.
50
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
51
+ */
52
+ attachSync(table: string | null): void;
53
+ /**
54
+ * Enables or disables the session.
55
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
56
+ */
57
+ enableSync(enabled: boolean): void;
58
+ /**
59
+ * Closes the session.
60
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
61
+ */
62
+ closeSync(): void;
63
+ /**
64
+ * Creates a changeset.
65
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
66
+ */
67
+ createChangesetSync(): IChangeset;
68
+ /**
69
+ * Creates an inverted changeset — shorthand for `createChangesetSync()` +
70
+ * `invertChangesetSync()`.
71
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
72
+ */
73
+ createInvertedChangesetSync(): IChangeset;
74
+ /**
75
+ * Applies a changeset.
76
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
77
+ */
78
+ applyChangesetSync(changeset: IChangeset): void;
79
+ /**
80
+ * Inverts a changeset.
81
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
82
+ */
83
+ invertChangesetSync(changeset: IChangeset): IChangeset;
84
+ }
@@ -0,0 +1,122 @@
1
+ /**
2
+ * An instance of the SQLite session extension.
3
+ * @see [Session Extension](https://www.sqlite.org/sessionintro.html)
4
+ */
5
+ export class SQLiteSession {
6
+ nativeDatabase;
7
+ nativeSession;
8
+ constructor(nativeDatabase, nativeSession) {
9
+ this.nativeDatabase = nativeDatabase;
10
+ this.nativeSession = nativeSession;
11
+ }
12
+ //#region Asynchronous API
13
+ /**
14
+ * Attaches a table to the session.
15
+ * @see [`sqlite3session_attach`](https://www.sqlite.org/session/sqlite3session_attach.html)
16
+ * @param table The table to attach. `null` attaches all tables.
17
+ */
18
+ attachAsync(table) {
19
+ return this.nativeSession.attachAsync(this.nativeDatabase, table);
20
+ }
21
+ /**
22
+ * Enables or disables the session.
23
+ * @see [`sqlite3session_enable`](https://www.sqlite.org/session/sqlite3session_enable.html)
24
+ */
25
+ enableAsync(enabled) {
26
+ return this.nativeSession.enableAsync(this.nativeDatabase, enabled);
27
+ }
28
+ /**
29
+ * Closes the session.
30
+ * @see [`sqlite3session_delete`](https://www.sqlite.org/session/sqlite3session_delete.html)
31
+ */
32
+ closeAsync() {
33
+ return this.nativeSession.closeAsync(this.nativeDatabase);
34
+ }
35
+ /**
36
+ * Creates a changeset.
37
+ * @see [`sqlite3session_changeset`](https://www.sqlite.org/session/sqlite3session_changeset.html)
38
+ */
39
+ async createChangesetAsync() {
40
+ const changesetBuffer = await this.nativeSession.createChangesetAsync(this.nativeDatabase);
41
+ return new Uint8Array(changesetBuffer);
42
+ }
43
+ /**
44
+ * Creates an inverted changeset — shorthand for `createChangesetAsync()` +
45
+ * `invertChangesetAsync()`.
46
+ */
47
+ async createInvertedChangesetAsync() {
48
+ const changesetBuffer = await this.nativeSession.createInvertedChangesetAsync(this.nativeDatabase);
49
+ return new Uint8Array(changesetBuffer);
50
+ }
51
+ /**
52
+ * Applies a changeset.
53
+ * @see [`sqlite3changeset_apply`](https://www.sqlite.org/session/sqlite3changeset_apply.html)
54
+ */
55
+ applyChangesetAsync(changeset) {
56
+ return this.nativeSession.applyChangesetAsync(this.nativeDatabase, changeset);
57
+ }
58
+ /**
59
+ * Inverts a changeset.
60
+ * @see [`sqlite3changeset_invert`](https://www.sqlite.org/session/sqlite3changeset_invert.html)
61
+ */
62
+ async invertChangesetAsync(changeset) {
63
+ const changesetBuffer = await this.nativeSession.invertChangesetAsync(this.nativeDatabase, changeset);
64
+ return new Uint8Array(changesetBuffer);
65
+ }
66
+ //#endregion
67
+ //#region Synchronous API
68
+ /**
69
+ * Attaches a table to the session.
70
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
71
+ */
72
+ attachSync(table) {
73
+ this.nativeSession.attachSync(this.nativeDatabase, table);
74
+ }
75
+ /**
76
+ * Enables or disables the session.
77
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
78
+ */
79
+ enableSync(enabled) {
80
+ this.nativeSession.enableSync(this.nativeDatabase, enabled);
81
+ }
82
+ /**
83
+ * Closes the session.
84
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
85
+ */
86
+ closeSync() {
87
+ this.nativeSession.closeSync(this.nativeDatabase);
88
+ }
89
+ /**
90
+ * Creates a changeset.
91
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
92
+ */
93
+ createChangesetSync() {
94
+ const changesetBuffer = this.nativeSession.createChangesetSync(this.nativeDatabase);
95
+ return new Uint8Array(changesetBuffer);
96
+ }
97
+ /**
98
+ * Creates an inverted changeset — shorthand for `createChangesetSync()` +
99
+ * `invertChangesetSync()`.
100
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
101
+ */
102
+ createInvertedChangesetSync() {
103
+ const changesetBuffer = this.nativeSession.createInvertedChangesetSync(this.nativeDatabase);
104
+ return new Uint8Array(changesetBuffer);
105
+ }
106
+ /**
107
+ * Applies a changeset.
108
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
109
+ */
110
+ applyChangesetSync(changeset) {
111
+ this.nativeSession.applyChangesetSync(this.nativeDatabase, changeset);
112
+ }
113
+ /**
114
+ * Inverts a changeset.
115
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
116
+ */
117
+ invertChangesetSync(changeset) {
118
+ const changesetBuffer = this.nativeSession.invertChangesetSync(this.nativeDatabase, changeset);
119
+ return new Uint8Array(changesetBuffer);
120
+ }
121
+ }
122
+ //# sourceMappingURL=sqlite-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-session.js","sourceRoot":"","sources":["../../src/core/sqlite-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import type { NativeDatabase } from './native-database';
2
+ import type { NativeStatement, ISQLiteBindParams, ISQLiteVariadicBindParams } from './native-statement';
3
+ export type { ISQLiteBindParams, ISQLiteBindValue, ISQLiteRunResult, ISQLiteVariadicBindParams, } from './native-statement';
4
+ type IValuesOf<T extends object> = T[keyof T][];
5
+ /**
6
+ * A prepared statement returned by `SQLiteDatabase.prepareAsync()`/`prepareSync()`, bound with
7
+ * parameters and executed.
8
+ */
9
+ export declare class SQLiteStatement {
10
+ private readonly nativeDatabase;
11
+ private readonly nativeStatement;
12
+ constructor(nativeDatabase: NativeDatabase, nativeStatement: NativeStatement);
13
+ /** Runs the prepared statement and returns an `ISQLiteExecuteAsyncResult`. */
14
+ executeAsync<T>(params: ISQLiteBindParams): Promise<ISQLiteExecuteAsyncResult<T>>;
15
+ /** @hidden */
16
+ executeAsync<T>(...params: ISQLiteVariadicBindParams): Promise<ISQLiteExecuteAsyncResult<T>>;
17
+ /**
18
+ * Like `executeAsync()` but returns the raw value-array result instead of row objects.
19
+ * @hidden Advanced use only.
20
+ */
21
+ executeForRawResultAsync<T extends object>(params: ISQLiteBindParams): Promise<ISQLiteExecuteAsyncResult<IValuesOf<T>>>;
22
+ /** @hidden */
23
+ executeForRawResultAsync<T extends object>(...params: ISQLiteVariadicBindParams): Promise<ISQLiteExecuteAsyncResult<IValuesOf<T>>>;
24
+ /** Gets the column names of the prepared statement. */
25
+ getColumnNamesAsync(): Promise<string[]>;
26
+ /**
27
+ * Finalizes the prepared statement — calls
28
+ * [`sqlite3_finalize()`](https://www.sqlite.org/c3ref/finalize.html) under the hood.
29
+ * Accessing a finalized statement afterward throws. `expo-sqlite` finalizes any orphaned
30
+ * statement automatically when its database closes, but finalize as soon as you no longer
31
+ * need one — wrap the call in `try...finally` so it runs even if an earlier step throws.
32
+ */
33
+ finalizeAsync(): Promise<void>;
34
+ /**
35
+ * Runs the prepared statement and returns an `ISQLiteExecuteSyncResult`.
36
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
37
+ */
38
+ executeSync<T>(params: ISQLiteBindParams): ISQLiteExecuteSyncResult<T>;
39
+ /** @hidden */
40
+ executeSync<T>(...params: ISQLiteVariadicBindParams): ISQLiteExecuteSyncResult<T>;
41
+ /**
42
+ * Like `executeSync()` but returns the raw value-array result instead of row objects.
43
+ * @hidden Advanced use only.
44
+ */
45
+ executeForRawResultSync<T extends object>(params: ISQLiteBindParams): ISQLiteExecuteSyncResult<IValuesOf<T>>;
46
+ /** @hidden */
47
+ executeForRawResultSync<T extends object>(...params: ISQLiteVariadicBindParams): ISQLiteExecuteSyncResult<IValuesOf<T>>;
48
+ /** Gets the column names of the prepared statement. */
49
+ getColumnNamesSync(): string[];
50
+ /**
51
+ * Finalizes the prepared statement synchronously.
52
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
53
+ */
54
+ finalizeSync(): void;
55
+ }
56
+ /** A result returned by `SQLiteStatement.executeAsync()`. */
57
+ export type ISQLiteExecuteAsyncResult<T> = AsyncIterableIterator<T> & {
58
+ /** The last inserted row ID, from `sqlite3_last_insert_rowid()`. */
59
+ readonly lastInsertRowId: number;
60
+ /** The number of rows affected, from `sqlite3_changes()`. */
61
+ readonly changes: number;
62
+ /**
63
+ * Gets the first row of the result set. Requires the cursor to be in its initial state —
64
+ * call `resetAsync()` first if rows have already been retrieved, or this throws.
65
+ */
66
+ getFirstAsync(): Promise<T | null>;
67
+ /**
68
+ * Gets all rows of the result set. Requires the cursor to be in its initial state — call
69
+ * `resetAsync()` first if rows have already been retrieved, or this throws.
70
+ */
71
+ getAllAsync(): Promise<T[]>;
72
+ /** Resets the prepared statement's cursor — calls `sqlite3_reset()` under the hood. */
73
+ resetAsync(): Promise<void>;
74
+ };
75
+ /**
76
+ * A result returned by `SQLiteStatement.executeSync()`.
77
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
78
+ */
79
+ export type ISQLiteExecuteSyncResult<T> = IterableIterator<T> & {
80
+ /** The last inserted row ID, from `sqlite3_last_insert_rowid()`. */
81
+ readonly lastInsertRowId: number;
82
+ /** The number of rows affected, from `sqlite3_changes()`. */
83
+ readonly changes: number;
84
+ /**
85
+ * Gets the first row of the result set. Requires the cursor to be in its initial state — call
86
+ * `resetSync()` first if rows have already been retrieved, or this throws.
87
+ */
88
+ getFirstSync(): T | null;
89
+ /**
90
+ * Gets all rows of the result set. Requires the cursor to be in its initial state — call
91
+ * `resetSync()` first if rows have already been retrieved, or this throws.
92
+ */
93
+ getAllSync(): T[];
94
+ /** Resets the prepared statement's cursor — calls `sqlite3_reset()` under the hood. */
95
+ resetSync(): void;
96
+ };
@@ -0,0 +1,322 @@
1
+ import { composeRow, composeRows, normalizeParams } from './param-utils';
2
+ /**
3
+ * A prepared statement returned by `SQLiteDatabase.prepareAsync()`/`prepareSync()`, bound with
4
+ * parameters and executed.
5
+ */
6
+ export class SQLiteStatement {
7
+ nativeDatabase;
8
+ nativeStatement;
9
+ constructor(nativeDatabase, nativeStatement) {
10
+ this.nativeDatabase = nativeDatabase;
11
+ this.nativeStatement = nativeStatement;
12
+ }
13
+ async executeAsync(...params) {
14
+ const { lastInsertRowId, changes, firstRowValues } = await this.nativeStatement.runAsync(this.nativeDatabase, ...normalizeParams(...params));
15
+ return createSQLiteExecuteAsyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, { rawResult: false, lastInsertRowId, changes });
16
+ }
17
+ async executeForRawResultAsync(...params) {
18
+ const { lastInsertRowId, changes, firstRowValues } = await this.nativeStatement.runAsync(this.nativeDatabase, ...normalizeParams(...params));
19
+ return createSQLiteExecuteAsyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, { rawResult: true, lastInsertRowId, changes });
20
+ }
21
+ /** Gets the column names of the prepared statement. */
22
+ getColumnNamesAsync() {
23
+ return this.nativeStatement.getColumnNamesAsync();
24
+ }
25
+ /**
26
+ * Finalizes the prepared statement — calls
27
+ * [`sqlite3_finalize()`](https://www.sqlite.org/c3ref/finalize.html) under the hood.
28
+ * Accessing a finalized statement afterward throws. `expo-sqlite` finalizes any orphaned
29
+ * statement automatically when its database closes, but finalize as soon as you no longer
30
+ * need one — wrap the call in `try...finally` so it runs even if an earlier step throws.
31
+ */
32
+ async finalizeAsync() {
33
+ await this.nativeStatement.finalizeAsync(this.nativeDatabase);
34
+ }
35
+ executeSync(...params) {
36
+ const { lastInsertRowId, changes, firstRowValues } = this.nativeStatement.runSync(this.nativeDatabase, ...normalizeParams(...params));
37
+ return createSQLiteExecuteSyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, { rawResult: false, lastInsertRowId, changes });
38
+ }
39
+ executeForRawResultSync(...params) {
40
+ const { lastInsertRowId, changes, firstRowValues } = this.nativeStatement.runSync(this.nativeDatabase, ...normalizeParams(...params));
41
+ return createSQLiteExecuteSyncResult(this.nativeDatabase, this.nativeStatement, firstRowValues, { rawResult: true, lastInsertRowId, changes });
42
+ }
43
+ /** Gets the column names of the prepared statement. */
44
+ getColumnNamesSync() {
45
+ return this.nativeStatement.getColumnNamesSync();
46
+ }
47
+ /**
48
+ * Finalizes the prepared statement synchronously.
49
+ * > **Note:** Running heavy tasks with this function can block the JavaScript thread.
50
+ */
51
+ finalizeSync() {
52
+ this.nativeStatement.finalizeSync(this.nativeDatabase);
53
+ }
54
+ }
55
+ /**
56
+ * Creates the `ISQLiteExecuteAsyncResult` — an async generator with the extra fields/methods
57
+ * attached via `Object.defineProperties`, since Hermes does not support `Symbol.asyncIterator`
58
+ * on a plain object literal.
59
+ */
60
+ async function createSQLiteExecuteAsyncResult(database, statement, firstRowValues, options) {
61
+ const instance = new SQLiteExecuteAsyncResultImpl(database, statement, firstRowValues ? processNativeRow(firstRowValues) : null, options);
62
+ const generator = instance.generatorAsync();
63
+ Object.defineProperties(generator, {
64
+ lastInsertRowId: {
65
+ value: options.lastInsertRowId,
66
+ enumerable: true,
67
+ writable: false,
68
+ configurable: true,
69
+ },
70
+ changes: {
71
+ value: options.changes,
72
+ enumerable: true,
73
+ writable: false,
74
+ configurable: true,
75
+ },
76
+ getFirstAsync: {
77
+ value: instance.getFirstAsync.bind(instance),
78
+ enumerable: true,
79
+ writable: false,
80
+ configurable: true,
81
+ },
82
+ getAllAsync: {
83
+ value: instance.getAllAsync.bind(instance),
84
+ enumerable: true,
85
+ writable: false,
86
+ configurable: true,
87
+ },
88
+ resetAsync: {
89
+ value: instance.resetAsync.bind(instance),
90
+ enumerable: true,
91
+ writable: false,
92
+ configurable: true,
93
+ },
94
+ });
95
+ // I/O edge: the generator is given the four extra members above at runtime via
96
+ // `Object.defineProperties` — nothing narrower can describe that to the type checker.
97
+ return generator;
98
+ }
99
+ /** Creates the `ISQLiteExecuteSyncResult`. */
100
+ function createSQLiteExecuteSyncResult(database, statement, firstRowValues, options) {
101
+ const instance = new SQLiteExecuteSyncResultImpl(database, statement, firstRowValues ? processNativeRow(firstRowValues) : firstRowValues, options);
102
+ const generator = instance.generatorSync();
103
+ Object.defineProperties(generator, {
104
+ lastInsertRowId: {
105
+ value: options.lastInsertRowId,
106
+ enumerable: true,
107
+ writable: false,
108
+ configurable: true,
109
+ },
110
+ changes: {
111
+ value: options.changes,
112
+ enumerable: true,
113
+ writable: false,
114
+ configurable: true,
115
+ },
116
+ getFirstSync: {
117
+ value: instance.getFirstSync.bind(instance),
118
+ enumerable: true,
119
+ writable: false,
120
+ configurable: true,
121
+ },
122
+ getAllSync: {
123
+ value: instance.getAllSync.bind(instance),
124
+ enumerable: true,
125
+ writable: false,
126
+ configurable: true,
127
+ },
128
+ resetSync: {
129
+ value: instance.resetSync.bind(instance),
130
+ enumerable: true,
131
+ writable: false,
132
+ configurable: true,
133
+ },
134
+ });
135
+ // I/O edge: see createSQLiteExecuteAsyncResult above.
136
+ return generator;
137
+ }
138
+ class SQLiteExecuteAsyncResultImpl {
139
+ database;
140
+ statement;
141
+ firstRowValues;
142
+ options;
143
+ columnNames = null;
144
+ isStepCalled = false;
145
+ constructor(database, statement, firstRowValues, options) {
146
+ this.database = database;
147
+ this.statement = statement;
148
+ this.firstRowValues = firstRowValues;
149
+ this.options = options;
150
+ }
151
+ async getFirstAsync() {
152
+ if (this.isStepCalled) {
153
+ throw new Error('The SQLite cursor has been shifted and is unable to retrieve the first row without being reset. Invoke `resetAsync()` to reset the cursor first if you want to retrieve the first row.');
154
+ }
155
+ this.isStepCalled = true;
156
+ const columnNames = await this.getColumnNamesAsync();
157
+ const firstRowValues = this.popFirstRowValues();
158
+ if (firstRowValues != null) {
159
+ return composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);
160
+ }
161
+ const firstRow = await this.statement.stepAsync(this.database);
162
+ return firstRow != null
163
+ ? composeRowIfNeeded(this.options.rawResult, columnNames, processNativeRow(firstRow))
164
+ : null;
165
+ }
166
+ async getAllAsync() {
167
+ if (this.isStepCalled) {
168
+ throw new Error('The SQLite cursor has been shifted and is unable to retrieve all rows without being reset. Invoke `resetAsync()` to reset the cursor first if you want to retrieve all rows.');
169
+ }
170
+ this.isStepCalled = true;
171
+ const firstRowValues = this.popFirstRowValues();
172
+ if (firstRowValues == null) {
173
+ // An empty first row means this SQL was a write operation — calling getAllAsync() again
174
+ // would write a second time.
175
+ return [];
176
+ }
177
+ const columnNames = await this.getColumnNamesAsync();
178
+ const nativeRows = await this.statement.getAllAsync(this.database);
179
+ const allRows = processNativeRows(nativeRows);
180
+ if (firstRowValues.length > 0) {
181
+ return composeRowsIfNeeded(this.options.rawResult, columnNames, [
182
+ firstRowValues,
183
+ ...allRows,
184
+ ]);
185
+ }
186
+ return composeRowsIfNeeded(this.options.rawResult, columnNames, allRows);
187
+ }
188
+ async *generatorAsync() {
189
+ this.isStepCalled = true;
190
+ const columnNames = await this.getColumnNamesAsync();
191
+ const firstRowValues = this.popFirstRowValues();
192
+ if (firstRowValues != null) {
193
+ yield composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);
194
+ }
195
+ let result;
196
+ do {
197
+ result = await this.statement.stepAsync(this.database);
198
+ if (result != null) {
199
+ yield composeRowIfNeeded(this.options.rawResult, columnNames, processNativeRow(result));
200
+ }
201
+ } while (result != null);
202
+ }
203
+ resetAsync() {
204
+ const result = this.statement.resetAsync(this.database);
205
+ this.isStepCalled = false;
206
+ return result;
207
+ }
208
+ popFirstRowValues() {
209
+ if (this.firstRowValues != null) {
210
+ const firstRowValues = this.firstRowValues;
211
+ this.firstRowValues = null;
212
+ return firstRowValues.length > 0 ? firstRowValues : null;
213
+ }
214
+ return null;
215
+ }
216
+ async getColumnNamesAsync() {
217
+ if (this.columnNames == null) {
218
+ this.columnNames = await this.statement.getColumnNamesAsync();
219
+ }
220
+ return this.columnNames;
221
+ }
222
+ }
223
+ class SQLiteExecuteSyncResultImpl {
224
+ database;
225
+ statement;
226
+ firstRowValues;
227
+ options;
228
+ columnNames = null;
229
+ isStepCalled = false;
230
+ constructor(database, statement, firstRowValues, options) {
231
+ this.database = database;
232
+ this.statement = statement;
233
+ this.firstRowValues = firstRowValues;
234
+ this.options = options;
235
+ }
236
+ getFirstSync() {
237
+ if (this.isStepCalled) {
238
+ throw new Error('The SQLite cursor has been shifted and is unable to retrieve the first row without being reset. Invoke `resetSync()` to reset the cursor first if you want to retrieve the first row.');
239
+ }
240
+ const columnNames = this.getColumnNamesSync();
241
+ const firstRowValues = this.popFirstRowValues();
242
+ if (firstRowValues != null) {
243
+ return composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);
244
+ }
245
+ const firstRow = this.statement.stepSync(this.database);
246
+ return firstRow != null
247
+ ? composeRowIfNeeded(this.options.rawResult, columnNames, processNativeRow(firstRow))
248
+ : null;
249
+ }
250
+ getAllSync() {
251
+ if (this.isStepCalled) {
252
+ throw new Error('The SQLite cursor has been shifted and is unable to retrieve all rows without being reset. Invoke `resetSync()` to reset the cursor first if you want to retrieve all rows.');
253
+ }
254
+ const firstRowValues = this.popFirstRowValues();
255
+ if (firstRowValues == null) {
256
+ return [];
257
+ }
258
+ const columnNames = this.getColumnNamesSync();
259
+ const nativeRows = this.statement.getAllSync(this.database);
260
+ const allRows = processNativeRows(nativeRows);
261
+ if (firstRowValues.length > 0) {
262
+ return composeRowsIfNeeded(this.options.rawResult, columnNames, [
263
+ firstRowValues,
264
+ ...allRows,
265
+ ]);
266
+ }
267
+ return composeRowsIfNeeded(this.options.rawResult, columnNames, allRows);
268
+ }
269
+ *generatorSync() {
270
+ const columnNames = this.getColumnNamesSync();
271
+ const firstRowValues = this.popFirstRowValues();
272
+ if (firstRowValues != null) {
273
+ yield composeRowIfNeeded(this.options.rawResult, columnNames, firstRowValues);
274
+ }
275
+ let result;
276
+ do {
277
+ result = this.statement.stepSync(this.database);
278
+ if (result != null) {
279
+ yield composeRowIfNeeded(this.options.rawResult, columnNames, processNativeRow(result));
280
+ }
281
+ } while (result != null);
282
+ }
283
+ resetSync() {
284
+ const result = this.statement.resetSync(this.database);
285
+ this.isStepCalled = false;
286
+ return result;
287
+ }
288
+ popFirstRowValues() {
289
+ if (this.firstRowValues != null) {
290
+ const firstRowValues = this.firstRowValues;
291
+ this.firstRowValues = null;
292
+ return firstRowValues.length > 0 ? firstRowValues : null;
293
+ }
294
+ return null;
295
+ }
296
+ getColumnNamesSync() {
297
+ if (this.columnNames == null) {
298
+ this.columnNames = this.statement.getColumnNamesSync();
299
+ }
300
+ return this.columnNames;
301
+ }
302
+ }
303
+ function composeRowIfNeeded(rawResult, columnNames, columnValues) {
304
+ // I/O edge: `rawResult` selects between two shapes of T (a row object, or `IValuesOf<T>`) that
305
+ // only the caller's own generic parameter distinguishes — see the two call sites above.
306
+ return rawResult
307
+ ? columnValues
308
+ : composeRow(columnNames, columnValues);
309
+ }
310
+ function composeRowsIfNeeded(rawResult, columnNames, columnValuesList) {
311
+ return rawResult
312
+ ? columnValuesList
313
+ : composeRows(columnNames, columnValuesList);
314
+ }
315
+ function processNativeRow(nativeRow) {
316
+ return nativeRow.map(column => column instanceof ArrayBuffer ? new Uint8Array(column) : column);
317
+ }
318
+ function processNativeRows(nativeRows) {
319
+ return nativeRows.map(processNativeRow);
320
+ }
321
+ //#endregion
322
+ //# sourceMappingURL=sqlite-statement.js.map