@peerbit/indexer-sqlite3 0.0.1-cccc078

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 (63) hide show
  1. package/README.md +111 -0
  2. package/dist/benchmark/index.d.ts +2 -0
  3. package/dist/benchmark/index.d.ts.map +1 -0
  4. package/dist/benchmark/index.js +6 -0
  5. package/dist/benchmark/index.js.map +1 -0
  6. package/dist/peerbit/sqlite3-bundler-friendly.mjs +14481 -0
  7. package/dist/peerbit/sqlite3-node.mjs +12561 -0
  8. package/dist/peerbit/sqlite3-opfs-async-proxy.js +826 -0
  9. package/dist/peerbit/sqlite3-worker1-bundler-friendly.mjs +35 -0
  10. package/dist/peerbit/sqlite3-worker1-promiser.js +193 -0
  11. package/dist/peerbit/sqlite3-worker1-promiser.mjs +187 -0
  12. package/dist/peerbit/sqlite3-worker1.js +46 -0
  13. package/dist/peerbit/sqlite3.js +14520 -0
  14. package/dist/peerbit/sqlite3.min.js +21695 -0
  15. package/dist/peerbit/sqlite3.mjs +14483 -0
  16. package/dist/peerbit/sqlite3.wasm +0 -0
  17. package/dist/peerbit/sqlite3.worker.min.js +17995 -0
  18. package/dist/src/engine.d.ts +90 -0
  19. package/dist/src/engine.d.ts.map +1 -0
  20. package/dist/src/engine.js +414 -0
  21. package/dist/src/engine.js.map +1 -0
  22. package/dist/src/index.d.ts +5 -0
  23. package/dist/src/index.d.ts.map +1 -0
  24. package/dist/src/index.js +15 -0
  25. package/dist/src/index.js.map +1 -0
  26. package/dist/src/schema.d.ts +73 -0
  27. package/dist/src/schema.d.ts.map +1 -0
  28. package/dist/src/schema.js +1075 -0
  29. package/dist/src/schema.js.map +1 -0
  30. package/dist/src/sqlite3-messages.worker.d.ts +86 -0
  31. package/dist/src/sqlite3-messages.worker.d.ts.map +1 -0
  32. package/dist/src/sqlite3-messages.worker.js +9 -0
  33. package/dist/src/sqlite3-messages.worker.js.map +1 -0
  34. package/dist/src/sqlite3.browser.d.ts +4 -0
  35. package/dist/src/sqlite3.browser.d.ts.map +1 -0
  36. package/dist/src/sqlite3.browser.js +181 -0
  37. package/dist/src/sqlite3.browser.js.map +1 -0
  38. package/dist/src/sqlite3.d.ts +4 -0
  39. package/dist/src/sqlite3.d.ts.map +1 -0
  40. package/dist/src/sqlite3.js +51 -0
  41. package/dist/src/sqlite3.js.map +1 -0
  42. package/dist/src/sqlite3.wasm.d.ts +30 -0
  43. package/dist/src/sqlite3.wasm.d.ts.map +1 -0
  44. package/dist/src/sqlite3.wasm.js +180 -0
  45. package/dist/src/sqlite3.wasm.js.map +1 -0
  46. package/dist/src/sqlite3.worker.d.ts +2 -0
  47. package/dist/src/sqlite3.worker.d.ts.map +1 -0
  48. package/dist/src/sqlite3.worker.js +105 -0
  49. package/dist/src/sqlite3.worker.js.map +1 -0
  50. package/dist/src/types.d.ts +23 -0
  51. package/dist/src/types.d.ts.map +1 -0
  52. package/dist/src/types.js +2 -0
  53. package/dist/src/types.js.map +1 -0
  54. package/package.json +80 -0
  55. package/src/engine.ts +639 -0
  56. package/src/index.ts +16 -0
  57. package/src/schema.ts +1607 -0
  58. package/src/sqlite3-messages.worker.ts +123 -0
  59. package/src/sqlite3.browser.ts +245 -0
  60. package/src/sqlite3.ts +56 -0
  61. package/src/sqlite3.wasm.ts +211 -0
  62. package/src/sqlite3.worker.ts +109 -0
  63. package/src/types.ts +39 -0
@@ -0,0 +1,90 @@
1
+ import { type AbstractType } from "@dao-xyz/borsh";
2
+ import type { CloseIteratorRequest, CollectNextRequest, Index, IndexEngineInitProperties, IndexedResult, IndexedResults, SearchRequest, Shape } from "@peerbit/indexer-interface";
3
+ import * as types from "@peerbit/indexer-interface";
4
+ import { type Table } from "./schema.js";
5
+ import type { Database, Statement } from "./types.js";
6
+ export declare class SQLLiteIndex<T extends Record<string, any>> implements Index<T, any> {
7
+ readonly properties: {
8
+ scope: string[];
9
+ db: Database;
10
+ schema: AbstractType<any>;
11
+ start?: () => Promise<void> | void;
12
+ stop?: () => Promise<void> | void;
13
+ };
14
+ primaryKeyArr: string[];
15
+ primaryKeyString: string;
16
+ putStatement: Map<string, Statement>;
17
+ replaceStatement: Map<string, Statement>;
18
+ resolveChildrenStatement: Map<string, Statement>;
19
+ private scopeString?;
20
+ private _rootTables;
21
+ private _tables;
22
+ private _cursor;
23
+ iteratorTimeout: number;
24
+ closed: boolean;
25
+ id: string;
26
+ constructor(properties: {
27
+ scope: string[];
28
+ db: Database;
29
+ schema: AbstractType<any>;
30
+ start?: () => Promise<void> | void;
31
+ stop?: () => Promise<void> | void;
32
+ }, options?: {
33
+ iteratorTimeout?: number;
34
+ });
35
+ get tables(): Map<string, Table>;
36
+ get rootTables(): Table[];
37
+ get cursor(): Map<string, {
38
+ kept: number;
39
+ fetch: (amount: number) => Promise<{
40
+ results: IndexedResult[];
41
+ kept: number;
42
+ }>;
43
+ fetchStatement: Statement;
44
+ timeout: ReturnType<typeof setTimeout>;
45
+ }>;
46
+ init(properties: IndexEngineInitProperties<T, any>): this;
47
+ start(): Promise<void>;
48
+ private clearStatements;
49
+ stop(): Promise<void>;
50
+ drop(): Promise<void>;
51
+ private resolveDependencies;
52
+ get(id: types.IdKey, options?: {
53
+ shape: Shape;
54
+ }): Promise<IndexedResult<T> | undefined>;
55
+ put(value: T, _id?: any): Promise<void>;
56
+ query(request: SearchRequest, options?: {
57
+ shape: Shape;
58
+ }): Promise<IndexedResults<T>>;
59
+ next(query: CollectNextRequest): Promise<IndexedResults<T>>;
60
+ close(query: CloseIteratorRequest): void | Promise<void>;
61
+ private clearupIterator;
62
+ getSize(): Promise<number>;
63
+ del(query: types.DeleteRequest): Promise<types.IdKey[]>;
64
+ sum(query: types.SumRequest): Promise<number | bigint>;
65
+ count(request: types.CountRequest): Promise<number>;
66
+ getPending(cursorId: string): number | undefined;
67
+ get cursorCount(): number;
68
+ }
69
+ export declare class SQLiteIndices implements types.Indices {
70
+ readonly properties: {
71
+ scope?: string[];
72
+ db: Database;
73
+ parent?: SQLiteIndices;
74
+ };
75
+ private _scope;
76
+ private scopes;
77
+ private indices;
78
+ private closed;
79
+ constructor(properties: {
80
+ scope?: string[];
81
+ db: Database;
82
+ parent?: SQLiteIndices;
83
+ });
84
+ init<T extends Record<string, any>, NestedType>(properties: IndexEngineInitProperties<T, NestedType>): Promise<Index<T, NestedType>>;
85
+ scope(name: string): Promise<types.Indices>;
86
+ start(): Promise<void>;
87
+ stop(): Promise<void>;
88
+ drop(): Promise<void>;
89
+ }
90
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAA+B,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EACX,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,EACL,yBAAyB,EACzB,aAAa,EACb,cAAc,EACd,aAAa,EACb,KAAK,EACL,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EACN,KAAK,KAAK,EAgBV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAMtD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACtD,YAAW,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;IA4BvB,QAAQ,CAAC,UAAU,EAAE;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,EAAE,EAAE,QAAQ,CAAC;QACb,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAClC;IAhCF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAWb;IAEF,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAQ;IAEvB,EAAE,EAAE,MAAM,CAAC;gBAED,UAAU,EAAE;QACpB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,EAAE,EAAE,QAAQ,CAAC;QACb,MAAM,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAClC,EACD,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;IAWvC,IAAI,MAAM,uBAKT;IAED,IAAI,UAAU,YAKb;IAED,IAAI,MAAM;cA/CF,MAAM;eACL,CACN,MAAM,EAAE,MAAM,KACV,OAAO,CAAC;YAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;wBACxC,SAAS;iBAEhB,UAAU,CAAC,OAAO,UAAU,CAAC;OA8CvC;IAED,IAAI,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC;IA6B5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAmFd,eAAe;IAsBvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAerB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBb,mBAAmB;IAS3B,GAAG,CACR,EAAE,EAAE,KAAK,CAAC,KAAK,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GACxB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAyBlC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCvC,KAAK,CACV,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GACxB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IA8F7B,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAU3D,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAI1C,eAAe;IAYvB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IAY1B,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAgBvD,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAiBtD,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAazD,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQhD,IAAI,WAAW,IAAI,MAAM,CAExB;CACD;AAED,qBAAa,aAAc,YAAW,KAAK,CAAC,OAAO;IAOjD,QAAQ,CAAC,UAAU,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,EAAE,EAAE,QAAQ,CAAC;QACb,MAAM,CAAC,EAAE,aAAa,CAAC;KACvB;IAVF,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,MAAM,CAAQ;gBAGZ,UAAU,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,EAAE,EAAE,QAAQ,CAAC;QACb,MAAM,CAAC,EAAE,aAAa,CAAC;KACvB;IAOI,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EACnD,UAAU,EAAE,yBAAyB,CAAC,CAAC,EAAE,UAAU,CAAC,GAClD,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAoB1B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAgB3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAerB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW3B"}
@@ -0,0 +1,414 @@
1
+ import { getSchema } from "@dao-xyz/borsh";
2
+ import * as types from "@peerbit/indexer-interface";
3
+ import { v4 as uuid } from "uuid";
4
+ import { buildJoin, convertCountRequestToQuery, convertDeleteRequestToQuery, convertSearchRequestToQuery,
5
+ /* getTableName, */
6
+ convertSumRequestToQuery, escapeColumnName, getInlineTableFieldName, getSQLTable, getTablePrefixedField, insert, resolveInstanceFromValue, resolveTable, selectAllFields, selectChildren, } from "./schema.js";
7
+ const escapePathToSQLName = (path) => {
8
+ return path.map((x) => x.replace(/[^a-zA-Z0-9]/g, "_"));
9
+ };
10
+ export class SQLLiteIndex {
11
+ properties;
12
+ primaryKeyArr;
13
+ primaryKeyString;
14
+ putStatement;
15
+ replaceStatement;
16
+ resolveChildrenStatement;
17
+ scopeString;
18
+ _rootTables;
19
+ _tables;
20
+ _cursor; // TODO choose limit better
21
+ iteratorTimeout;
22
+ closed = true;
23
+ id;
24
+ constructor(properties, options) {
25
+ this.properties = properties;
26
+ this.closed = true;
27
+ this.id = uuid();
28
+ this.scopeString =
29
+ properties.scope.length > 0
30
+ ? "_" + escapePathToSQLName(properties.scope).join("_")
31
+ : undefined;
32
+ this.iteratorTimeout = options?.iteratorTimeout || 60e3;
33
+ }
34
+ get tables() {
35
+ if (this.closed) {
36
+ throw new Error("Not started");
37
+ }
38
+ return this._tables;
39
+ }
40
+ get rootTables() {
41
+ if (this.closed) {
42
+ throw new Error("Not started");
43
+ }
44
+ return this._rootTables;
45
+ }
46
+ get cursor() {
47
+ if (this.closed) {
48
+ throw new Error("Not started");
49
+ }
50
+ return this._cursor;
51
+ }
52
+ init(properties) {
53
+ if (properties.indexBy) {
54
+ this.primaryKeyArr = Array.isArray(properties.indexBy)
55
+ ? properties.indexBy
56
+ : [properties.indexBy];
57
+ }
58
+ else {
59
+ const indexBy = types.getIdProperty(properties.schema);
60
+ if (!indexBy) {
61
+ throw new Error("No indexBy property defined nor schema has a property decorated with `id()`");
62
+ }
63
+ this.primaryKeyArr = indexBy;
64
+ }
65
+ if (!this.properties.schema) {
66
+ throw new Error("Missing schema");
67
+ }
68
+ this.primaryKeyString = getInlineTableFieldName(this.primaryKeyArr.slice(0, this.primaryKeyArr.length - 1), this.primaryKeyArr[this.primaryKeyArr.length - 1]);
69
+ return this;
70
+ }
71
+ async start() {
72
+ if (this.closed === false) {
73
+ return;
74
+ }
75
+ if (this.primaryKeyArr == null || this.primaryKeyArr.length === 0) {
76
+ throw new Error("Not initialized");
77
+ }
78
+ await this.properties.start?.();
79
+ this.putStatement = new Map();
80
+ this.replaceStatement = new Map();
81
+ this.resolveChildrenStatement = new Map();
82
+ this._tables = new Map();
83
+ this._cursor = new Map();
84
+ const tables = getSQLTable(this.properties.schema, this.scopeString ? [this.scopeString] : [], getInlineTableFieldName(this.primaryKeyArr.slice(0, -1), this.primaryKeyArr[this.primaryKeyArr.length - 1]), // TODO fix this, should be array
85
+ false, undefined, false);
86
+ this._rootTables = tables.filter((x) => x.parent == null);
87
+ if (this._rootTables.length > 1) {
88
+ throw new Error("Multiple root tables not supported (yet)");
89
+ }
90
+ const allTables = tables;
91
+ for (const table of allTables) {
92
+ this._tables.set(table.name, table);
93
+ for (const child of table.children) {
94
+ allTables.push(child);
95
+ }
96
+ if (table.inline) {
97
+ // this table does not 'really' exist as a separate table
98
+ // but its fields are in the root table
99
+ continue;
100
+ }
101
+ const sqlCreateTable = `create table if not exists ${table.name} (${[...table.fields, ...table.constraints].map((s) => s.definition).join(", ")}) strict`;
102
+ const sqlCreateIndex = `create index if not exists ${table.name}_index on ${table.name} (${table.fields.map((field) => escapeColumnName(field.name)).join(", ")})`;
103
+ this.properties.db.exec(sqlCreateTable);
104
+ this.properties.db.exec(sqlCreateIndex);
105
+ // put and return the id
106
+ let sqlPut = `insert into ${table.name} (${table.fields.map((field) => escapeColumnName(field.name)).join(", ")}) VALUES (${table.fields.map((_x) => "?").join(", ")}) RETURNING ${table.primary};`;
107
+ // insert or replace with id already defined
108
+ let sqlReplace = `insert or replace into ${table.name} (${table.fields.map((field) => escapeColumnName(field.name)).join(", ")}) VALUES (${table.fields.map((_x) => "?").join(", ")});`;
109
+ this.putStatement.set(table.name, await this.properties.db.prepare(sqlPut));
110
+ this.replaceStatement.set(table.name, await this.properties.db.prepare(sqlReplace));
111
+ if (table.parent) {
112
+ this.resolveChildrenStatement.set(table.name, await this.properties.db.prepare(selectChildren(table)));
113
+ }
114
+ }
115
+ this.closed = false;
116
+ }
117
+ async clearStatements() {
118
+ if ((await this.properties.db.status()) === "closed") {
119
+ // TODO this should never be true, but if we remove this statement the tests faiL for browser tests?
120
+ return;
121
+ }
122
+ for (const [_k, v] of this.putStatement) {
123
+ await v.finalize?.();
124
+ }
125
+ for (const [_k, v] of this.replaceStatement) {
126
+ await v.finalize?.();
127
+ }
128
+ for (const [_k, v] of this.resolveChildrenStatement) {
129
+ await v.finalize?.();
130
+ }
131
+ this.putStatement.clear();
132
+ this.replaceStatement.clear();
133
+ this.resolveChildrenStatement.clear();
134
+ }
135
+ async stop() {
136
+ if (this.closed) {
137
+ return;
138
+ }
139
+ this.closed = true;
140
+ await this.clearStatements();
141
+ this._tables.clear();
142
+ for (const [k, _v] of this._cursor) {
143
+ await this.clearupIterator(k);
144
+ }
145
+ }
146
+ async drop() {
147
+ this.closed = true;
148
+ await this.clearStatements();
149
+ // drop root table and cascade
150
+ // drop table faster by dropping constraints first
151
+ for (const table of this._rootTables) {
152
+ await this.properties.db.exec(`drop table if exists ${table.name}`);
153
+ }
154
+ this._tables.clear();
155
+ for (const [k, _v] of this._cursor) {
156
+ await this.clearupIterator(k);
157
+ }
158
+ }
159
+ async resolveDependencies(parentId, table) {
160
+ const stmt = this.resolveChildrenStatement.get(table.name);
161
+ const results = await stmt.all([parentId]);
162
+ await stmt.reset?.();
163
+ return results;
164
+ }
165
+ async get(id, options) {
166
+ for (const table of this._rootTables) {
167
+ const { join: joinMap, query } = selectAllFields(table, options?.shape);
168
+ const sql = `${query} ${buildJoin(joinMap, true)} where ${this.primaryKeyString} = ? `;
169
+ const stmt = await this.properties.db.prepare(sql);
170
+ const rows = await stmt.get([id.key]);
171
+ await stmt.finalize?.();
172
+ if (!rows) {
173
+ continue;
174
+ }
175
+ return {
176
+ value: (await resolveInstanceFromValue(rows, this.tables, table, this.resolveDependencies.bind(this), true, options?.shape)),
177
+ id,
178
+ };
179
+ }
180
+ return undefined;
181
+ }
182
+ async put(value, _id) {
183
+ const classOfValue = value.constructor;
184
+ return insert(async (values, table) => {
185
+ const preId = values[table.primaryIndex];
186
+ if (preId != null) {
187
+ const statement = this.replaceStatement.get(table.name);
188
+ await statement.run(values.map((x) => (typeof x === "boolean" ? (x ? 1 : 0) : x)));
189
+ await statement.reset?.();
190
+ return preId;
191
+ }
192
+ else {
193
+ const statement = this.putStatement.get(table.name);
194
+ const out = await statement.get(values.map((x) => (typeof x === "boolean" ? (x ? 1 : 0) : x)));
195
+ await statement.reset?.();
196
+ // TODO types
197
+ return out[table.primary];
198
+ }
199
+ }, value, this.tables, resolveTable(this.scopeString ? [this.scopeString] : [], this.tables, classOfValue, true), getSchema(classOfValue).fields, (_fn) => {
200
+ throw new Error("Unexpected");
201
+ });
202
+ }
203
+ async query(request, options) {
204
+ // create a sql statement where the offset and the limit id dynamic and can be updated
205
+ // TODO don't use offset but sort and limit 'next' calls by the last value of the sort
206
+ let sqlFetch = convertSearchRequestToQuery(request, this.tables, this._rootTables, options?.shape);
207
+ const stmt = await this.properties.db.prepare(sqlFetch);
208
+ /* const totalCountKey = "count"; */
209
+ /* const sqlTotalCount = convertCountRequestToQuery(new types.CountRequest({ query: request.query }), this.tables, this.tables.get(this.rootTableName)!)
210
+ const countStmt = await this.properties.db.prepare(sqlTotalCount); */
211
+ let offset = 0;
212
+ let first = false;
213
+ const fetch = async (amount) => {
214
+ if (!first) {
215
+ stmt.reset?.();
216
+ /* countStmt.reset?.(); */
217
+ // Bump timeout timer
218
+ clearTimeout(iterator.timeout);
219
+ iterator.timeout = setTimeout(() => this.clearupIterator(request.idString), this.iteratorTimeout);
220
+ }
221
+ first = true;
222
+ const offsetStart = offset;
223
+ const allResults = await stmt.all([
224
+ amount,
225
+ offsetStart,
226
+ ]);
227
+ let results = await Promise.all(allResults.map(async (row) => {
228
+ let selectedTable = this._rootTables.find((table) => row[getTablePrefixedField(table, this.primaryKeyString)] != null);
229
+ const value = await resolveInstanceFromValue(row, this.tables, selectedTable, this.resolveDependencies.bind(this), true, options?.shape);
230
+ return {
231
+ value,
232
+ id: types.toId(row[getTablePrefixedField(selectedTable, this.primaryKeyString)]),
233
+ };
234
+ }));
235
+ offset += amount;
236
+ if (results.length > 0) {
237
+ const totalCount = await this.count(new types.CountRequest({ query: request.query })); /* (await countStmt.get())[totalCountKey] as number; */
238
+ iterator.kept = totalCount - results.length - offsetStart;
239
+ }
240
+ else {
241
+ iterator.kept = 0;
242
+ }
243
+ if (iterator.kept === 0) {
244
+ await this.clearupIterator(request.idString);
245
+ clearTimeout(iterator.timeout);
246
+ }
247
+ return { results, kept: iterator.kept };
248
+ };
249
+ const iterator = {
250
+ kept: 0,
251
+ fetch,
252
+ fetchStatement: stmt,
253
+ /* countStatement: countStmt, */
254
+ timeout: setTimeout(() => this.clearupIterator(request.idString), this.iteratorTimeout),
255
+ };
256
+ this.cursor.set(request.idString, iterator);
257
+ return fetch(request.fetch);
258
+ }
259
+ next(query) {
260
+ const cache = this.cursor.get(query.idString);
261
+ if (!cache) {
262
+ throw new Error("No cursor found with id: " + query.idString);
263
+ }
264
+ // reuse statement
265
+ return cache.fetch(query.amount);
266
+ }
267
+ close(query) {
268
+ return this.clearupIterator(query.idString);
269
+ }
270
+ async clearupIterator(id) {
271
+ const cache = this._cursor.get(id);
272
+ if (!cache) {
273
+ return; // already cleared
274
+ }
275
+ clearTimeout(cache.timeout);
276
+ /* cache.countStatement.finalize?.(); */
277
+ await cache.fetchStatement.finalize?.();
278
+ this._cursor.delete(id);
279
+ }
280
+ async getSize() {
281
+ if (this.tables.size === 0) {
282
+ return 0;
283
+ }
284
+ /* const stmt = await this.properties.db.prepare(`select count(*) as total from ${this.rootTableName}`);
285
+ const result = await stmt.get()
286
+ stmt.finalize?.();
287
+ return result.total as number */
288
+ return this.count(new types.CountRequest({ query: {} }));
289
+ }
290
+ async del(query) {
291
+ let ret = [];
292
+ for (const table of this._rootTables) {
293
+ const stmt = await this.properties.db.prepare(convertDeleteRequestToQuery(query, this.tables, table));
294
+ const results = await stmt.all([]);
295
+ await stmt.finalize?.();
296
+ // TODO types
297
+ for (const result of results) {
298
+ ret.push(types.toId(result[table.primary]));
299
+ }
300
+ }
301
+ return ret;
302
+ }
303
+ async sum(query) {
304
+ let ret = undefined;
305
+ for (const table of this._rootTables) {
306
+ const stmt = await this.properties.db.prepare(convertSumRequestToQuery(query, this.tables, table));
307
+ const result = await stmt.get();
308
+ await stmt.finalize?.();
309
+ if (ret == null) {
310
+ ret = result.sum;
311
+ }
312
+ else {
313
+ ret += result.sum;
314
+ }
315
+ }
316
+ return ret != null ? ret : 0;
317
+ }
318
+ async count(request) {
319
+ let ret = 0;
320
+ for (const table of this._rootTables) {
321
+ const stmt = await this.properties.db.prepare(convertCountRequestToQuery(request, this.tables, table));
322
+ const result = await stmt.get();
323
+ await stmt.finalize?.();
324
+ ret += Number(result.count);
325
+ }
326
+ return ret;
327
+ }
328
+ getPending(cursorId) {
329
+ const cursor = this.cursor.get(cursorId);
330
+ if (!cursor) {
331
+ return;
332
+ }
333
+ return cursor.kept;
334
+ }
335
+ get cursorCount() {
336
+ return this.cursor.size;
337
+ }
338
+ }
339
+ export class SQLiteIndices {
340
+ properties;
341
+ _scope;
342
+ scopes;
343
+ indices;
344
+ closed = true;
345
+ constructor(properties) {
346
+ this.properties = properties;
347
+ this._scope = properties.scope || [];
348
+ this.scopes = new Map();
349
+ this.indices = [];
350
+ }
351
+ async init(properties) {
352
+ const existing = this.indices.find((x) => x.schema === properties.schema);
353
+ if (existing) {
354
+ return existing.index;
355
+ }
356
+ const index = new SQLLiteIndex({
357
+ db: this.properties.db,
358
+ schema: properties.schema,
359
+ scope: this._scope,
360
+ });
361
+ await index.init(properties);
362
+ this.indices.push({ schema: properties.schema, index });
363
+ if (!this.closed) {
364
+ await index.start();
365
+ }
366
+ return index;
367
+ }
368
+ async scope(name) {
369
+ if (!this.scopes.has(name)) {
370
+ const scope = new SQLiteIndices({
371
+ scope: [...this._scope, name],
372
+ db: this.properties.db,
373
+ parent: this,
374
+ });
375
+ if (!this.closed) {
376
+ await scope.start();
377
+ }
378
+ this.scopes.set(name, scope);
379
+ }
380
+ return this.scopes.get(name);
381
+ }
382
+ async start() {
383
+ this.closed = false;
384
+ await this.properties.db.open(); // TODO only open if parent is not defined ? or this method will not be the opposite of close
385
+ for (const scope of this.scopes.values()) {
386
+ await scope.start();
387
+ }
388
+ for (const index of this.indices) {
389
+ await index.index.start();
390
+ }
391
+ }
392
+ async stop() {
393
+ this.closed = true;
394
+ for (const scope of this.scopes.values()) {
395
+ await scope.stop();
396
+ }
397
+ for (const index of this.indices) {
398
+ await index.index.stop();
399
+ }
400
+ if (!this.properties.parent) {
401
+ await this.properties.db.close();
402
+ }
403
+ }
404
+ async drop() {
405
+ for (const scope of this.scopes.values()) {
406
+ await scope.drop();
407
+ }
408
+ for (const index of this.indices) {
409
+ await index.index.drop();
410
+ }
411
+ this.scopes.clear();
412
+ }
413
+ }
414
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { SQLLiteIndex, SQLiteIndices } from "./engine.js";
2
+ export declare const encodeName: (name: string) => string;
3
+ declare const create: (directory?: string) => Promise<SQLiteIndices>;
4
+ export { create, SQLiteIndices, SQLLiteIndex };
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG1D,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,MAIzC,CAAC;AAEF,QAAA,MAAM,MAAM,eAAsB,MAAM,KAAG,OAAO,CAAC,aAAa,CAG/D,CAAC;AACF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { BinaryWriter } from "@dao-xyz/borsh";
2
+ import { sha256Sync, toBase58 } from "@peerbit/crypto";
3
+ import { SQLLiteIndex, SQLiteIndices } from "./engine.js";
4
+ import { create as sqlite3 } from "./sqlite3.js";
5
+ export const encodeName = (name) => {
6
+ const writer = new BinaryWriter();
7
+ writer.string(name);
8
+ return toBase58(sha256Sync(writer.finalize()));
9
+ };
10
+ const create = async (directory) => {
11
+ const db = await sqlite3(directory);
12
+ return new SQLiteIndices({ db });
13
+ };
14
+ export { create, SQLiteIndices, SQLLiteIndex };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,KAAK,EAAE,SAAkB,EAA0B,EAAE;IACnE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,IAAI,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC;AACF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { type AbstractType, type Constructor, type Field, type FieldType } from "@dao-xyz/borsh";
2
+ import * as types from "@peerbit/indexer-interface";
3
+ export type SQLLiteValue = string | number | null | bigint | Uint8Array | Int8Array | ArrayBuffer;
4
+ export type BindableValue = string | bigint | number | Uint8Array | Int8Array | ArrayBuffer | null;
5
+ export declare const convertToSQLType: (value: boolean | bigint | string | number | Uint8Array, type?: FieldType) => BindableValue;
6
+ export declare const escapeColumnName: (name: string) => string;
7
+ export declare const convertFromSQLType: (value: boolean | bigint | string | number | Uint8Array, type?: FieldType) => any;
8
+ export declare const toSQLType: (type: FieldType, isOptional?: boolean) => string;
9
+ type SQLField = {
10
+ name: string;
11
+ key: string;
12
+ definition: string;
13
+ type: string;
14
+ isPrimary: boolean;
15
+ from: Field | undefined;
16
+ path: string[];
17
+ describesExistenceOfAnother?: string;
18
+ };
19
+ type SQLConstraint = {
20
+ name: string;
21
+ definition: string;
22
+ };
23
+ export interface Table {
24
+ name: string;
25
+ ctor: Constructor<any>;
26
+ primary: string | false;
27
+ primaryIndex: number;
28
+ path: string[];
29
+ parentPath: string[] | undefined;
30
+ fields: SQLField[];
31
+ constraints: SQLConstraint[];
32
+ children: Table[];
33
+ inline: boolean;
34
+ parent: Table | undefined;
35
+ referencedInArray: boolean;
36
+ isSimpleValue: boolean;
37
+ }
38
+ export declare const getSQLTable: (ctor: AbstractType<any>, path: string[], primary: string | false, inline: boolean, addJoinField: ((fields: SQLField[], constraints: SQLConstraint[]) => void) | undefined, fromOptionalField?: boolean) => Table[];
39
+ export declare const getTableName: (path: string[], clazz: string | Constructor<any>) => string;
40
+ export declare const CHILD_TABLE_ID = "__id";
41
+ export declare const ARRAY_INDEX_COLUMN = "__index";
42
+ export declare const PARENT_TABLE_ID = "__parent_id";
43
+ export declare const getSQLFields: (tableName: string, path: string[], ctor: Constructor<any>, primary: string | false, addJoinFieldFromParent?: (fields: SQLField[], constraints: SQLConstraint[]) => void, tables?: Table[], isOptional?: boolean) => {
44
+ fields: SQLField[];
45
+ constraints: SQLConstraint[];
46
+ dependencies: Table[];
47
+ };
48
+ export declare const resolveTable: <B extends boolean, R = B extends true ? Table : Table>(key: string[], tables: Map<string, Table>, clazz: string | Constructor<any>, throwOnMissing: B) => R;
49
+ export declare const insert: (insertFn: (values: any[], table: Table) => Promise<any> | any, obj: Record<string, any>, tables: Map<string, Table>, table: Table, fields: Field[], handleNestedCallback?: (cb: (parentId: any) => Promise<void>) => void, parentId?: any, index?: number) => Promise<void>;
50
+ export declare const getTablePrefixedField: (table: Table, key: string, skipPrefix?: boolean) => string;
51
+ export declare const getTableNameFromPrefixedField: (prefixedField: string) => string;
52
+ export declare const getInlineTableFieldName: (path: string[] | undefined, key: string) => string;
53
+ export declare const selectChildren: (childrenTable: Table) => string;
54
+ export declare const selectAllFields: (table: Table, shape: types.Shape | undefined) => {
55
+ query: string;
56
+ join: Map<string, JoinTable>;
57
+ };
58
+ export declare const resolveInstanceFromValue: <T>(fromTablePrefixedValues: Record<string, any>, tables: Map<string, Table>, table: Table, resolveChildren: (parentId: any, table: Table) => Promise<any[]>, tablePrefixed: boolean, shape: types.Shape | undefined) => Promise<T>;
59
+ export declare const fromRowToObj: (row: any, ctor: Constructor<any>) => any;
60
+ export declare const convertDeleteRequestToQuery: (request: types.DeleteRequest, tables: Map<string, Table>, table: Table) => string;
61
+ export declare const convertSumRequestToQuery: (request: types.SumRequest, tables: Map<string, Table>, table: Table) => string;
62
+ export declare const convertCountRequestToQuery: (request: types.CountRequest, tables: Map<string, Table>, table: Table) => string;
63
+ export declare const convertSearchRequestToQuery: (request: types.SearchRequest, tables: Map<string, Table>, rootTables: Table[], shape: types.Shape | undefined) => string;
64
+ export declare const buildJoin: (joinBuilder: Map<string, JoinTable>, resolveAllColumns: boolean) => string;
65
+ export declare const convertQueryToSQLQuery: (query: types.Query, tables: Map<string, Table>, table: Table, joinBuilder: Map<string, JoinTable>, path?: string[], tableAlias?: string | undefined) => {
66
+ where: string;
67
+ };
68
+ type JoinTable = {
69
+ table: Table;
70
+ as: string;
71
+ };
72
+ export {};
73
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}