@livestore/sqlite-wasm 0.0.0-snapshot-1d99fea7d2ce2c7a5d9ed0a3752f8a7bda6bc3db → 0.3.0-dev.1
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.
- package/.netlify/state.json +3 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/browser/mod.d.ts +7 -7
- package/dist/browser/mod.d.ts.map +1 -1
- package/dist/browser/mod.js +4 -4
- package/dist/browser/mod.js.map +1 -1
- package/dist/index_.d.ts +1 -1
- package/dist/index_.d.ts.map +1 -1
- package/dist/index_.js +1 -1
- package/dist/index_.js.map +1 -1
- package/dist/make-sync-db.d.ts +11 -0
- package/dist/make-sync-db.d.ts.map +1 -0
- package/dist/{make-sqlite-db.js → make-sync-db.js} +11 -16
- package/dist/make-sync-db.js.map +1 -0
- package/dist/node/mod.d.ts +7 -7
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +5 -5
- package/dist/node/mod.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/mod.ts +14 -10
- package/src/index_.ts +1 -1
- package/src/{make-sqlite-db.ts → make-sync-db.ts} +16 -23
- package/src/node/mod.ts +19 -10
- package/dist/make-sqlite-db.d.ts +0 -11
- package/dist/make-sqlite-db.d.ts.map +0 -1
- package/dist/make-sqlite-db.js.map +0 -1
package/dist/browser/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MakeSynchronousDatabase, PersistenceInfo, SynchronousDatabase } from '@livestore/common';
|
|
2
2
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js';
|
|
3
3
|
import type { AccessHandlePoolVFS } from './opfs/AccessHandlePoolVFS.js';
|
|
4
4
|
export * from './opfs/opfs-sah-pool.js';
|
|
@@ -8,7 +8,7 @@ export type WebDatabaseMetadataInMemory = {
|
|
|
8
8
|
dbPointer: number;
|
|
9
9
|
persistenceInfo: PersistenceInfo;
|
|
10
10
|
deleteDb: () => void;
|
|
11
|
-
configureDb: (db:
|
|
11
|
+
configureDb: (db: SynchronousDatabase) => void;
|
|
12
12
|
};
|
|
13
13
|
export type WebDatabaseMetadataOpfs = {
|
|
14
14
|
_tag: 'opfs';
|
|
@@ -20,24 +20,24 @@ export type WebDatabaseMetadataOpfs = {
|
|
|
20
20
|
opfsFileName: string;
|
|
21
21
|
}>;
|
|
22
22
|
deleteDb: () => void;
|
|
23
|
-
configureDb: (db:
|
|
23
|
+
configureDb: (db: SynchronousDatabase) => void;
|
|
24
24
|
};
|
|
25
25
|
export type WebDatabaseMetadata = WebDatabaseMetadataInMemory | WebDatabaseMetadataOpfs;
|
|
26
26
|
export type WebDatabaseInputInMemory = {
|
|
27
27
|
_tag: 'in-memory';
|
|
28
|
-
configureDb?: (db:
|
|
28
|
+
configureDb?: (db: SynchronousDatabase) => void;
|
|
29
29
|
};
|
|
30
30
|
export type WebDatabaseInputOpfs = {
|
|
31
31
|
_tag: 'opfs';
|
|
32
32
|
/** Filename of the database file (only used when exporting/downloading the database) */
|
|
33
33
|
fileName: string;
|
|
34
34
|
opfsDirectory: string;
|
|
35
|
-
configureDb?: (db:
|
|
35
|
+
configureDb?: (db: SynchronousDatabase) => void;
|
|
36
36
|
};
|
|
37
37
|
export type WebDatabaseInput = WebDatabaseInputInMemory | WebDatabaseInputOpfs;
|
|
38
|
-
export declare const
|
|
38
|
+
export declare const syncDbFactory: ({ sqlite3, }: {
|
|
39
39
|
sqlite3: SQLiteAPI;
|
|
40
|
-
}) =>
|
|
40
|
+
}) => MakeSynchronousDatabase<{
|
|
41
41
|
dbPointer: number;
|
|
42
42
|
persistenceInfo: PersistenceInfo;
|
|
43
43
|
}, WebDatabaseInput, WebDatabaseMetadata>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEtG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAGxE,cAAc,yBAAyB,CAAA;AAEvC,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,SAAS,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,mBAAmB,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAA;QACrB,mCAAmC;QACnC,YAAY,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;IACF,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,2BAA2B,GAAG,uBAAuB,CAAA;AAEvF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GAAG,oBAAoB,CAAA;AAE9E,eAAO,MAAM,aAAa,iBAGrB;IACD,OAAO,EAAE,SAAS,CAAA;CACnB,KAAG,uBAAuB,CACzB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,EACvD,gBAAgB,EAChB,mBAAmB,CAsDjB,CAAA"}
|
package/dist/browser/mod.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Effect, Hash } from '@livestore/utils/effect';
|
|
2
2
|
import { makeInMemoryDb } from '../in-memory-vfs.js';
|
|
3
|
-
import {
|
|
3
|
+
import { makeSynchronousDatabase } from '../make-sync-db.js';
|
|
4
4
|
import { makeOpfsDb } from './opfs/index.js';
|
|
5
5
|
export * from './opfs/opfs-sah-pool.js';
|
|
6
|
-
export const
|
|
6
|
+
export const syncDbFactory = ({ sqlite3, }) => (input) => Effect.gen(function* () {
|
|
7
7
|
if (input._tag === 'in-memory') {
|
|
8
8
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3);
|
|
9
|
-
return
|
|
9
|
+
return makeSynchronousDatabase({
|
|
10
10
|
sqlite3,
|
|
11
11
|
metadata: {
|
|
12
12
|
_tag: 'in-memory',
|
|
@@ -32,7 +32,7 @@ export const sqliteDbFactory = ({ sqlite3, }) => (input) => Effect.gen(function*
|
|
|
32
32
|
directory: input.opfsDirectory,
|
|
33
33
|
fileName: dbFilename,
|
|
34
34
|
});
|
|
35
|
-
return
|
|
35
|
+
return makeSynchronousDatabase({
|
|
36
36
|
sqlite3,
|
|
37
37
|
metadata: {
|
|
38
38
|
_tag: 'opfs',
|
package/dist/browser/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,cAAc,yBAAyB,CAAA;AAyCvC,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,EACC,OAAO,GAGR,EAIC,EAAE,CACJ,CAAC,KAAuB,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QAClD,OAAO,uBAAuB,CAA8B;YAC1D,OAAO;YACP,QAAQ,EAAE;gBACR,IAAI,EAAE,WAAW;gBACjB,GAAG;gBACH,SAAS;gBACT,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC5C,eAAe,EAAE;oBACf,QAAQ,EAAE,UAAU;iBACrB;aACF;SACF,CAAQ,CAAA;IACX,CAAC;IAED,wCAAwC;IACxC,MAAM,sBAAsB,GAAG,EAAE,CAAA;IAEjC,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACnD,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CACtB,yBAAyB,KAAK,CAAC,QAAQ,UAAU,sBAAsB,eAAe,KAAK,CAAC,QAAQ,CAAC,MAAM,cAAc,CAC1H,CAAA;QACD,UAAU,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAA;IACvD,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;QAC3C,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,aAAa;QAC9B,QAAQ,EAAE,UAAU;KACrB,CAAC,CAAA;IAEF,OAAO,uBAAuB,CAA0B;QACtD,OAAO;QACP,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,SAAS;YACT,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YAC5C,eAAe,EAAE;gBACf,QAAQ,EAAE,UAAU;gBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC;aAC9C;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/index_.d.ts
CHANGED
package/dist/index_.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index_.d.ts","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index_.d.ts","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA"}
|
package/dist/index_.js
CHANGED
package/dist/index_.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index_.js","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,
|
|
1
|
+
{"version":3,"file":"index_.js","sourceRoot":"","sources":["../src/index_.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PersistenceInfo, SynchronousDatabase } from '@livestore/common';
|
|
2
|
+
export declare const makeSynchronousDatabase: <TMetadata extends {
|
|
3
|
+
dbPointer: number;
|
|
4
|
+
persistenceInfo: PersistenceInfo;
|
|
5
|
+
deleteDb: () => void;
|
|
6
|
+
configureDb: (db: SynchronousDatabase<TMetadata>) => void;
|
|
7
|
+
}>({ sqlite3, metadata, }: {
|
|
8
|
+
sqlite3: SQLiteAPI;
|
|
9
|
+
metadata: TMetadata;
|
|
10
|
+
}) => SynchronousDatabase<TMetadata>;
|
|
11
|
+
//# sourceMappingURL=make-sync-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-sync-db.d.ts","sourceRoot":"","sources":["../src/make-sync-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,mBAAmB,EAEpB,MAAM,mBAAmB,CAAA;AAM1B,eAAO,MAAM,uBAAuB,GAClC,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC1D,0BAIA;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,mBAAmB,CAAC,SAAS,CA2LhC,CAAA"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { SqliteError } from '@livestore/common';
|
|
2
2
|
import * as SqliteConstants from '@livestore/wa-sqlite/src/sqlite-constants.js';
|
|
3
3
|
import { makeInMemoryDb } from './in-memory-vfs.js';
|
|
4
|
-
export const
|
|
4
|
+
export const makeSynchronousDatabase = ({ sqlite3, metadata, }) => {
|
|
5
5
|
const preparedStmts = [];
|
|
6
6
|
const { dbPointer } = metadata;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
_tag: 'SqliteDb',
|
|
7
|
+
const syncDb = {
|
|
8
|
+
_tag: 'SynchronousDatabase',
|
|
10
9
|
metadata,
|
|
11
10
|
prepare: (queryStr) => {
|
|
12
11
|
try {
|
|
@@ -98,32 +97,28 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
98
97
|
},
|
|
99
98
|
export: () => sqlite3.serialize(dbPointer, 'main'),
|
|
100
99
|
execute: (queryStr, bindValues, options) => {
|
|
101
|
-
const stmt =
|
|
100
|
+
const stmt = syncDb.prepare(queryStr);
|
|
102
101
|
stmt.execute(bindValues, options);
|
|
103
102
|
stmt.finalize();
|
|
104
103
|
},
|
|
105
104
|
select: (queryStr, bindValues) => {
|
|
106
|
-
const stmt =
|
|
105
|
+
const stmt = syncDb.prepare(queryStr);
|
|
107
106
|
const results = stmt.select(bindValues);
|
|
108
107
|
stmt.finalize();
|
|
109
108
|
return results;
|
|
110
109
|
},
|
|
111
110
|
destroy: () => {
|
|
112
|
-
|
|
111
|
+
syncDb.close();
|
|
113
112
|
metadata.deleteDb();
|
|
114
113
|
// if (metadata._tag === 'opfs') {
|
|
115
114
|
// metadata.vfs.resetAccessHandle(metadata.fileName)
|
|
116
115
|
// }
|
|
117
116
|
},
|
|
118
117
|
close: () => {
|
|
119
|
-
if (isClosed) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
118
|
for (const stmt of preparedStmts) {
|
|
123
119
|
stmt.finalize();
|
|
124
120
|
}
|
|
125
121
|
sqlite3.close(dbPointer);
|
|
126
|
-
isClosed = true;
|
|
127
122
|
},
|
|
128
123
|
import: (source) => {
|
|
129
124
|
// https://www.sqlite.org/c3ref/c_deserialize_freeonclose.html
|
|
@@ -147,7 +142,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
147
142
|
else {
|
|
148
143
|
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
149
144
|
}
|
|
150
|
-
metadata.configureDb(
|
|
145
|
+
metadata.configureDb(syncDb);
|
|
151
146
|
},
|
|
152
147
|
session: () => {
|
|
153
148
|
const sessionPointer = sqlite3.session_create(dbPointer, 'main');
|
|
@@ -166,7 +161,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
166
161
|
const changeset = {
|
|
167
162
|
invert: () => {
|
|
168
163
|
const inverted = sqlite3.changeset_invert(data);
|
|
169
|
-
return
|
|
164
|
+
return syncDb.makeChangeset(inverted);
|
|
170
165
|
},
|
|
171
166
|
apply: () => {
|
|
172
167
|
sqlite3.changeset_apply(dbPointer, data);
|
|
@@ -175,7 +170,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
175
170
|
return changeset;
|
|
176
171
|
},
|
|
177
172
|
};
|
|
178
|
-
metadata.configureDb(
|
|
179
|
-
return
|
|
173
|
+
metadata.configureDb(syncDb);
|
|
174
|
+
return syncDb;
|
|
180
175
|
};
|
|
181
|
-
//# sourceMappingURL=make-
|
|
176
|
+
//# sourceMappingURL=make-sync-db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"make-sync-db.js","sourceRoot":"","sources":["../src/make-sync-db.ts"],"names":[],"mappings":"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"}
|
package/dist/node/mod.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MakeSynchronousDatabase, type PersistenceInfo, type SynchronousDatabase } from '@livestore/common';
|
|
2
2
|
import { Effect, FileSystem } from '@livestore/utils/effect';
|
|
3
3
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js';
|
|
4
4
|
import { NodeFS } from './NodeFS.js';
|
|
@@ -8,7 +8,7 @@ export type NodeDatabaseMetadataInMemory = {
|
|
|
8
8
|
dbPointer: number;
|
|
9
9
|
persistenceInfo: PersistenceInfo;
|
|
10
10
|
deleteDb: () => void;
|
|
11
|
-
configureDb: (db:
|
|
11
|
+
configureDb: (db: SynchronousDatabase) => void;
|
|
12
12
|
};
|
|
13
13
|
export type NodeDatabaseMetadataFs = {
|
|
14
14
|
_tag: 'fs';
|
|
@@ -18,23 +18,23 @@ export type NodeDatabaseMetadataFs = {
|
|
|
18
18
|
directory: string;
|
|
19
19
|
}>;
|
|
20
20
|
deleteDb: () => void;
|
|
21
|
-
configureDb: (db:
|
|
21
|
+
configureDb: (db: SynchronousDatabase) => void;
|
|
22
22
|
};
|
|
23
23
|
export type NodeDatabaseMetadata = NodeDatabaseMetadataInMemory | NodeDatabaseMetadataFs;
|
|
24
24
|
export type NodeDatabaseInputInMemory = {
|
|
25
25
|
_tag: 'in-memory';
|
|
26
|
-
configureDb?: (db:
|
|
26
|
+
configureDb?: (db: SynchronousDatabase) => void;
|
|
27
27
|
};
|
|
28
28
|
export type NodeDatabaseInputFs = {
|
|
29
29
|
_tag: 'fs';
|
|
30
30
|
directory: string;
|
|
31
31
|
fileName: string;
|
|
32
|
-
configureDb?: (db:
|
|
32
|
+
configureDb?: (db: SynchronousDatabase) => void;
|
|
33
33
|
};
|
|
34
34
|
export type NodeDatabaseInput = NodeDatabaseInputInMemory | NodeDatabaseInputFs;
|
|
35
|
-
export declare const
|
|
35
|
+
export declare const syncDbFactory: ({ sqlite3, }: {
|
|
36
36
|
sqlite3: SQLiteAPI;
|
|
37
|
-
}) => Effect.Effect<
|
|
37
|
+
}) => Effect.Effect<MakeSynchronousDatabase<{
|
|
38
38
|
dbPointer: number;
|
|
39
39
|
persistenceInfo: PersistenceInfo;
|
|
40
40
|
}, NodeDatabaseInput, NodeDatabaseMetadata>, never, FileSystem.FileSystem>;
|
package/dist/node/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,SAAS,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,GAAG,sBAAsB,CAAA;AAExF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,IAAI,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,mBAAmB,CAAA;AAE/E,eAAO,MAAM,aAAa,iBAEvB;IACD,OAAO,EAAE,SAAS,CAAA;CACnB,KAAG,MAAM,CAAC,MAAM,CACf,uBAAuB,CACrB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,EACvD,iBAAiB,EACjB,oBAAoB,CACrB,EACD,KAAK,EACL,UAAU,CAAC,UAAU,CA0CpB,CAAA"}
|
package/dist/node/mod.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import { UnexpectedError } from '@livestore/common';
|
|
2
|
+
import { UnexpectedError, } from '@livestore/common';
|
|
3
3
|
import { Effect, FileSystem } from '@livestore/utils/effect';
|
|
4
4
|
import { makeInMemoryDb } from '../in-memory-vfs.js';
|
|
5
|
-
import {
|
|
5
|
+
import { makeSynchronousDatabase } from '../make-sync-db.js';
|
|
6
6
|
import { NodeFS } from './NodeFS.js';
|
|
7
|
-
export const
|
|
7
|
+
export const syncDbFactory = ({ sqlite3, }) => Effect.andThen(FileSystem.FileSystem, (fs) => (input) => Effect.gen(function* () {
|
|
8
8
|
if (input._tag === 'in-memory') {
|
|
9
9
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3);
|
|
10
|
-
return
|
|
10
|
+
return makeSynchronousDatabase({
|
|
11
11
|
sqlite3,
|
|
12
12
|
metadata: {
|
|
13
13
|
_tag: 'in-memory',
|
|
@@ -26,7 +26,7 @@ export const sqliteDbFactory = ({ sqlite3, }) => Effect.andThen(FileSystem.FileS
|
|
|
26
26
|
fs,
|
|
27
27
|
});
|
|
28
28
|
const filePath = path.join(input.directory, input.fileName);
|
|
29
|
-
return
|
|
29
|
+
return makeSynchronousDatabase({
|
|
30
30
|
sqlite3,
|
|
31
31
|
metadata: {
|
|
32
32
|
_tag: 'fs',
|
package/dist/node/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/sqlite-wasm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-dev.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@livestore/wa-sqlite": "1.0.3-dev.7",
|
|
26
|
-
"@livestore/common": "0.
|
|
27
|
-
"@livestore/utils": "0.
|
|
26
|
+
"@livestore/common": "0.3.0-dev.1",
|
|
27
|
+
"@livestore/utils": "0.3.0-dev.1"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@types/
|
|
31
|
-
"@types/
|
|
30
|
+
"@types/node": "22.10.5",
|
|
31
|
+
"@types/chrome": "^0.0.279",
|
|
32
32
|
"@types/wicg-file-system-access": "^2023.10.5"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
package/src/browser/mod.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MakeSynchronousDatabase, PersistenceInfo, SynchronousDatabase } from '@livestore/common'
|
|
2
2
|
import { Effect, Hash } from '@livestore/utils/effect'
|
|
3
3
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js'
|
|
4
4
|
|
|
5
5
|
import { makeInMemoryDb } from '../in-memory-vfs.js'
|
|
6
|
-
import {
|
|
6
|
+
import { makeSynchronousDatabase } from '../make-sync-db.js'
|
|
7
7
|
import type { AccessHandlePoolVFS } from './opfs/AccessHandlePoolVFS.js'
|
|
8
8
|
import { makeOpfsDb } from './opfs/index.js'
|
|
9
9
|
|
|
@@ -15,7 +15,7 @@ export type WebDatabaseMetadataInMemory = {
|
|
|
15
15
|
dbPointer: number
|
|
16
16
|
persistenceInfo: PersistenceInfo
|
|
17
17
|
deleteDb: () => void
|
|
18
|
-
configureDb: (db:
|
|
18
|
+
configureDb: (db: SynchronousDatabase) => void
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export type WebDatabaseMetadataOpfs = {
|
|
@@ -28,14 +28,14 @@ export type WebDatabaseMetadataOpfs = {
|
|
|
28
28
|
opfsFileName: string
|
|
29
29
|
}>
|
|
30
30
|
deleteDb: () => void
|
|
31
|
-
configureDb: (db:
|
|
31
|
+
configureDb: (db: SynchronousDatabase) => void
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
export type WebDatabaseMetadata = WebDatabaseMetadataInMemory | WebDatabaseMetadataOpfs
|
|
35
35
|
|
|
36
36
|
export type WebDatabaseInputInMemory = {
|
|
37
37
|
_tag: 'in-memory'
|
|
38
|
-
configureDb?: (db:
|
|
38
|
+
configureDb?: (db: SynchronousDatabase) => void
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
export type WebDatabaseInputOpfs = {
|
|
@@ -43,22 +43,26 @@ export type WebDatabaseInputOpfs = {
|
|
|
43
43
|
/** Filename of the database file (only used when exporting/downloading the database) */
|
|
44
44
|
fileName: string
|
|
45
45
|
opfsDirectory: string
|
|
46
|
-
configureDb?: (db:
|
|
46
|
+
configureDb?: (db: SynchronousDatabase) => void
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
export type WebDatabaseInput = WebDatabaseInputInMemory | WebDatabaseInputOpfs
|
|
50
50
|
|
|
51
|
-
export const
|
|
51
|
+
export const syncDbFactory =
|
|
52
52
|
({
|
|
53
53
|
sqlite3,
|
|
54
54
|
}: {
|
|
55
55
|
sqlite3: SQLiteAPI
|
|
56
|
-
}):
|
|
56
|
+
}): MakeSynchronousDatabase<
|
|
57
|
+
{ dbPointer: number; persistenceInfo: PersistenceInfo },
|
|
58
|
+
WebDatabaseInput,
|
|
59
|
+
WebDatabaseMetadata
|
|
60
|
+
> =>
|
|
57
61
|
(input: WebDatabaseInput) =>
|
|
58
62
|
Effect.gen(function* () {
|
|
59
63
|
if (input._tag === 'in-memory') {
|
|
60
64
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3)
|
|
61
|
-
return
|
|
65
|
+
return makeSynchronousDatabase<WebDatabaseMetadataInMemory>({
|
|
62
66
|
sqlite3,
|
|
63
67
|
metadata: {
|
|
64
68
|
_tag: 'in-memory',
|
|
@@ -91,7 +95,7 @@ export const sqliteDbFactory =
|
|
|
91
95
|
fileName: dbFilename,
|
|
92
96
|
})
|
|
93
97
|
|
|
94
|
-
return
|
|
98
|
+
return makeSynchronousDatabase<WebDatabaseMetadataOpfs>({
|
|
95
99
|
sqlite3,
|
|
96
100
|
metadata: {
|
|
97
101
|
_tag: 'opfs',
|
package/src/index_.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from '@livestore/wa-sqlite'
|
|
2
|
-
export * from './make-
|
|
2
|
+
export * from './make-sync-db.js'
|
|
@@ -2,20 +2,20 @@ import type {
|
|
|
2
2
|
PersistenceInfo,
|
|
3
3
|
PreparedBindValues,
|
|
4
4
|
PreparedStatement,
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
SynchronousDatabase,
|
|
6
|
+
SynchronousDatabaseChangeset,
|
|
7
7
|
} from '@livestore/common'
|
|
8
8
|
import { SqliteError } from '@livestore/common'
|
|
9
9
|
import * as SqliteConstants from '@livestore/wa-sqlite/src/sqlite-constants.js'
|
|
10
10
|
|
|
11
11
|
import { makeInMemoryDb } from './in-memory-vfs.js'
|
|
12
12
|
|
|
13
|
-
export const
|
|
13
|
+
export const makeSynchronousDatabase = <
|
|
14
14
|
TMetadata extends {
|
|
15
15
|
dbPointer: number
|
|
16
16
|
persistenceInfo: PersistenceInfo
|
|
17
17
|
deleteDb: () => void
|
|
18
|
-
configureDb: (db:
|
|
18
|
+
configureDb: (db: SynchronousDatabase<TMetadata>) => void
|
|
19
19
|
},
|
|
20
20
|
>({
|
|
21
21
|
sqlite3,
|
|
@@ -23,14 +23,12 @@ export const makeSqliteDb = <
|
|
|
23
23
|
}: {
|
|
24
24
|
sqlite3: SQLiteAPI
|
|
25
25
|
metadata: TMetadata
|
|
26
|
-
}):
|
|
26
|
+
}): SynchronousDatabase<TMetadata> => {
|
|
27
27
|
const preparedStmts: PreparedStatement[] = []
|
|
28
28
|
const { dbPointer } = metadata
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const sqliteDb: SqliteDb<TMetadata> = {
|
|
33
|
-
_tag: 'SqliteDb',
|
|
30
|
+
const syncDb: SynchronousDatabase<TMetadata> = {
|
|
31
|
+
_tag: 'SynchronousDatabase',
|
|
34
32
|
metadata,
|
|
35
33
|
prepare: (queryStr) => {
|
|
36
34
|
try {
|
|
@@ -131,18 +129,18 @@ export const makeSqliteDb = <
|
|
|
131
129
|
},
|
|
132
130
|
export: () => sqlite3.serialize(dbPointer, 'main'),
|
|
133
131
|
execute: (queryStr, bindValues, options) => {
|
|
134
|
-
const stmt =
|
|
132
|
+
const stmt = syncDb.prepare(queryStr)
|
|
135
133
|
stmt.execute(bindValues, options)
|
|
136
134
|
stmt.finalize()
|
|
137
135
|
},
|
|
138
136
|
select: (queryStr, bindValues) => {
|
|
139
|
-
const stmt =
|
|
137
|
+
const stmt = syncDb.prepare(queryStr)
|
|
140
138
|
const results = stmt.select(bindValues)
|
|
141
139
|
stmt.finalize()
|
|
142
140
|
return results as ReadonlyArray<any>
|
|
143
141
|
},
|
|
144
142
|
destroy: () => {
|
|
145
|
-
|
|
143
|
+
syncDb.close()
|
|
146
144
|
|
|
147
145
|
metadata.deleteDb()
|
|
148
146
|
// if (metadata._tag === 'opfs') {
|
|
@@ -150,15 +148,10 @@ export const makeSqliteDb = <
|
|
|
150
148
|
// }
|
|
151
149
|
},
|
|
152
150
|
close: () => {
|
|
153
|
-
if (isClosed) {
|
|
154
|
-
return
|
|
155
|
-
}
|
|
156
|
-
|
|
157
151
|
for (const stmt of preparedStmts) {
|
|
158
152
|
stmt.finalize()
|
|
159
153
|
}
|
|
160
154
|
sqlite3.close(dbPointer)
|
|
161
|
-
isClosed = true
|
|
162
155
|
},
|
|
163
156
|
import: (source) => {
|
|
164
157
|
// https://www.sqlite.org/c3ref/c_deserialize_freeonclose.html
|
|
@@ -183,7 +176,7 @@ export const makeSqliteDb = <
|
|
|
183
176
|
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main')
|
|
184
177
|
}
|
|
185
178
|
|
|
186
|
-
metadata.configureDb(
|
|
179
|
+
metadata.configureDb(syncDb)
|
|
187
180
|
},
|
|
188
181
|
session: () => {
|
|
189
182
|
const sessionPointer = sqlite3.session_create(dbPointer, 'main')
|
|
@@ -203,18 +196,18 @@ export const makeSqliteDb = <
|
|
|
203
196
|
const changeset = {
|
|
204
197
|
invert: () => {
|
|
205
198
|
const inverted = sqlite3.changeset_invert(data)
|
|
206
|
-
return
|
|
199
|
+
return syncDb.makeChangeset(inverted)
|
|
207
200
|
},
|
|
208
201
|
apply: () => {
|
|
209
202
|
sqlite3.changeset_apply(dbPointer, data)
|
|
210
203
|
},
|
|
211
|
-
} satisfies
|
|
204
|
+
} satisfies SynchronousDatabaseChangeset
|
|
212
205
|
|
|
213
206
|
return changeset
|
|
214
207
|
},
|
|
215
|
-
} satisfies
|
|
208
|
+
} satisfies SynchronousDatabase<TMetadata>
|
|
216
209
|
|
|
217
|
-
metadata.configureDb(
|
|
210
|
+
metadata.configureDb(syncDb)
|
|
218
211
|
|
|
219
|
-
return
|
|
212
|
+
return syncDb
|
|
220
213
|
}
|
package/src/node/mod.ts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import path from 'node:path'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
type MakeSynchronousDatabase,
|
|
5
|
+
type PersistenceInfo,
|
|
6
|
+
type SynchronousDatabase,
|
|
7
|
+
UnexpectedError,
|
|
8
|
+
} from '@livestore/common'
|
|
4
9
|
import { Effect, FileSystem } from '@livestore/utils/effect'
|
|
5
10
|
import type * as WaSqlite from '@livestore/wa-sqlite'
|
|
6
11
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js'
|
|
7
12
|
|
|
8
13
|
import { makeInMemoryDb } from '../in-memory-vfs.js'
|
|
9
|
-
import {
|
|
14
|
+
import { makeSynchronousDatabase } from '../make-sync-db.js'
|
|
10
15
|
import { NodeFS } from './NodeFS.js'
|
|
11
16
|
|
|
12
17
|
export type NodeDatabaseMetadataInMemory = {
|
|
@@ -15,7 +20,7 @@ export type NodeDatabaseMetadataInMemory = {
|
|
|
15
20
|
dbPointer: number
|
|
16
21
|
persistenceInfo: PersistenceInfo
|
|
17
22
|
deleteDb: () => void
|
|
18
|
-
configureDb: (db:
|
|
23
|
+
configureDb: (db: SynchronousDatabase) => void
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
export type NodeDatabaseMetadataFs = {
|
|
@@ -24,31 +29,35 @@ export type NodeDatabaseMetadataFs = {
|
|
|
24
29
|
dbPointer: number
|
|
25
30
|
persistenceInfo: PersistenceInfo<{ directory: string }>
|
|
26
31
|
deleteDb: () => void
|
|
27
|
-
configureDb: (db:
|
|
32
|
+
configureDb: (db: SynchronousDatabase) => void
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
export type NodeDatabaseMetadata = NodeDatabaseMetadataInMemory | NodeDatabaseMetadataFs
|
|
31
36
|
|
|
32
37
|
export type NodeDatabaseInputInMemory = {
|
|
33
38
|
_tag: 'in-memory'
|
|
34
|
-
configureDb?: (db:
|
|
39
|
+
configureDb?: (db: SynchronousDatabase) => void
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
export type NodeDatabaseInputFs = {
|
|
38
43
|
_tag: 'fs'
|
|
39
44
|
directory: string
|
|
40
45
|
fileName: string
|
|
41
|
-
configureDb?: (db:
|
|
46
|
+
configureDb?: (db: SynchronousDatabase) => void
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
export type NodeDatabaseInput = NodeDatabaseInputInMemory | NodeDatabaseInputFs
|
|
45
50
|
|
|
46
|
-
export const
|
|
51
|
+
export const syncDbFactory = ({
|
|
47
52
|
sqlite3,
|
|
48
53
|
}: {
|
|
49
54
|
sqlite3: SQLiteAPI
|
|
50
55
|
}): Effect.Effect<
|
|
51
|
-
|
|
56
|
+
MakeSynchronousDatabase<
|
|
57
|
+
{ dbPointer: number; persistenceInfo: PersistenceInfo },
|
|
58
|
+
NodeDatabaseInput,
|
|
59
|
+
NodeDatabaseMetadata
|
|
60
|
+
>,
|
|
52
61
|
never,
|
|
53
62
|
FileSystem.FileSystem
|
|
54
63
|
> =>
|
|
@@ -58,7 +67,7 @@ export const sqliteDbFactory = ({
|
|
|
58
67
|
Effect.gen(function* () {
|
|
59
68
|
if (input._tag === 'in-memory') {
|
|
60
69
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3)
|
|
61
|
-
return
|
|
70
|
+
return makeSynchronousDatabase<NodeDatabaseMetadataInMemory>({
|
|
62
71
|
sqlite3,
|
|
63
72
|
metadata: {
|
|
64
73
|
_tag: 'in-memory',
|
|
@@ -80,7 +89,7 @@ export const sqliteDbFactory = ({
|
|
|
80
89
|
|
|
81
90
|
const filePath = path.join(input.directory, input.fileName)
|
|
82
91
|
|
|
83
|
-
return
|
|
92
|
+
return makeSynchronousDatabase<NodeDatabaseMetadataFs>({
|
|
84
93
|
sqlite3,
|
|
85
94
|
metadata: {
|
|
86
95
|
_tag: 'fs',
|
package/dist/make-sqlite-db.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { PersistenceInfo, SqliteDb } from '@livestore/common';
|
|
2
|
-
export declare const makeSqliteDb: <TMetadata extends {
|
|
3
|
-
dbPointer: number;
|
|
4
|
-
persistenceInfo: PersistenceInfo;
|
|
5
|
-
deleteDb: () => void;
|
|
6
|
-
configureDb: (db: SqliteDb<TMetadata>) => void;
|
|
7
|
-
}>({ sqlite3, metadata, }: {
|
|
8
|
-
sqlite3: SQLiteAPI;
|
|
9
|
-
metadata: TMetadata;
|
|
10
|
-
}) => SqliteDb<TMetadata>;
|
|
11
|
-
//# sourceMappingURL=make-sqlite-db.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,QAAQ,EAET,MAAM,mBAAmB,CAAA;AAM1B,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC/C,0BAIA;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,QAAQ,CAAC,SAAS,CAkMrB,CAAA"}
|