@fireproof/core 0.19.8-dev-alldocs-export → 0.19.8-dev-getid
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/{chunk-DG6XSV44.js → chunk-BNL4PVBF.js} +25 -81
- package/chunk-BNL4PVBF.js.map +1 -0
- package/{chunk-OWQAHX2V.js → chunk-JW2QT6BF.js} +24 -4
- package/chunk-JW2QT6BF.js.map +1 -0
- package/index.cjs +444 -1300
- package/index.cjs.map +1 -1
- package/index.d.cts +156 -167
- package/index.d.ts +156 -167
- package/index.global.js +1037 -1214
- package/index.global.js.map +1 -1
- package/index.js +65 -59
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/metafile-iife.json +1 -1
- package/node-sys-container-MIEX6ELJ.js +29 -0
- package/node-sys-container-MIEX6ELJ.js.map +1 -0
- package/package.json +3 -2
- package/{store-file-WD746RSY.js → store-file-VJ6BI4II.js} +6 -8
- package/{store-file-WD746RSY.js.map → store-file-VJ6BI4II.js.map} +1 -1
- package/{chunk-5UFCF36O.js → store-indexdb-WLRSICCB.js} +7 -17
- package/store-indexdb-WLRSICCB.js.map +1 -0
- package/tests/fireproof/config.test.ts +14 -70
- package/tests/fireproof/database.test.ts +4 -4
- package/tests/fireproof/fireproof.test.ts +5 -5
- package/tests/fireproof/hello.test.ts +2 -2
- package/chunk-5UFCF36O.js.map +0 -1
- package/chunk-DG6XSV44.js.map +0 -1
- package/chunk-OWQAHX2V.js.map +0 -1
- package/chunk-PRQHQG4I.js +0 -39
- package/chunk-PRQHQG4I.js.map +0 -1
- package/chunk-VZGT7ZYP.js +0 -22
- package/chunk-VZGT7ZYP.js.map +0 -1
- package/node-sys-container-TTGEC66A.js +0 -29
- package/node-sys-container-TTGEC66A.js.map +0 -1
- package/sqlite-data-store-MA55LVQE.js +0 -120
- package/sqlite-data-store-MA55LVQE.js.map +0 -1
- package/sqlite-meta-store-UNQKVYRM.js +0 -137
- package/sqlite-meta-store-UNQKVYRM.js.map +0 -1
- package/sqlite-wal-store-KVUOC4PO.js +0 -123
- package/sqlite-wal-store-KVUOC4PO.js.map +0 -1
- package/store-indexdb-NG45BU3Q.js +0 -20
- package/store-indexdb-NG45BU3Q.js.map +0 -1
- package/store-sql-QVFNIGND.js +0 -344
- package/store-sql-QVFNIGND.js.map +0 -1
package/chunk-VZGT7ZYP.js
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
// src/blockstore/gateway.ts
|
2
|
-
import { Result } from "@adviser/cement";
|
3
|
-
var NotFoundError = class extends Error {
|
4
|
-
constructor() {
|
5
|
-
super(...arguments);
|
6
|
-
this.code = "ENOENT";
|
7
|
-
}
|
8
|
-
};
|
9
|
-
function isNotFoundError(e) {
|
10
|
-
if (Result.Is(e)) {
|
11
|
-
if (e.isOk()) return false;
|
12
|
-
e = e.Err();
|
13
|
-
}
|
14
|
-
if (e.code === "ENOENT") return true;
|
15
|
-
return false;
|
16
|
-
}
|
17
|
-
|
18
|
-
export {
|
19
|
-
NotFoundError,
|
20
|
-
isNotFoundError
|
21
|
-
};
|
22
|
-
//# sourceMappingURL=chunk-VZGT7ZYP.js.map
|
package/chunk-VZGT7ZYP.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/blockstore/gateway.ts"],"sourcesContent":["import { Result } from \"@adviser/cement\";\n\nexport interface GatewayOpts {\n readonly gateway: Gateway;\n}\n\nexport class NotFoundError extends Error {\n readonly code = \"ENOENT\";\n}\n\nexport function isNotFoundError(e: Error | Result<unknown> | unknown): e is NotFoundError {\n if (Result.Is(e)) {\n if (e.isOk()) return false;\n e = e.Err();\n }\n if ((e as NotFoundError).code === \"ENOENT\") return true;\n return false;\n}\n\nexport type GetResult = Result<Uint8Array, NotFoundError | Error>;\nexport type VoidResult = Result<void>;\n\nexport interface Gateway {\n // all the methods never throw!\n // an error is reported as a Result\n buildUrl(baseUrl: URL, key: string): Promise<Result<URL>>;\n // start updates URL --> hate this side effect\n start(baseUrl: URL): Promise<VoidResult>;\n close(baseUrl: URL): Promise<VoidResult>;\n destroy(baseUrl: URL): Promise<VoidResult>;\n put(url: URL, body: Uint8Array): Promise<VoidResult>;\n // get could return a NotFoundError if the key is not found\n get(url: URL): Promise<GetResult>;\n delete(url: URL): Promise<VoidResult>;\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAMhB,IAAM,gBAAN,cAA4B,MAAM;AAAA,EAAlC;AAAA;AACL,SAAS,OAAO;AAAA;AAClB;AAEO,SAAS,gBAAgB,GAA0D;AACxF,MAAI,OAAO,GAAG,CAAC,GAAG;AAChB,QAAI,EAAE,KAAK,EAAG,QAAO;AACrB,QAAI,EAAE,IAAI;AAAA,EACZ;AACA,MAAK,EAAoB,SAAS,SAAU,QAAO;AACnD,SAAO;AACT;","names":[]}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
join
|
3
|
-
} from "./chunk-OWQAHX2V.js";
|
4
|
-
|
5
|
-
// src/runtime/node-sys-container.ts
|
6
|
-
async function createNodeSysContainer() {
|
7
|
-
const nodePath = "node:path";
|
8
|
-
const nodeOS = "node:os";
|
9
|
-
const nodeURL = "node:url";
|
10
|
-
const nodeFS = "node:fs";
|
11
|
-
const fs = (await import(nodeFS)).promises;
|
12
|
-
const path = await import(nodePath);
|
13
|
-
return {
|
14
|
-
state: "node",
|
15
|
-
...path,
|
16
|
-
...await import(nodeOS),
|
17
|
-
...await import(nodeURL),
|
18
|
-
...fs,
|
19
|
-
join,
|
20
|
-
stat: fs.stat,
|
21
|
-
readdir: fs.readdir,
|
22
|
-
readfile: fs.readFile,
|
23
|
-
writefile: fs.writeFile
|
24
|
-
};
|
25
|
-
}
|
26
|
-
export {
|
27
|
-
createNodeSysContainer
|
28
|
-
};
|
29
|
-
//# sourceMappingURL=node-sys-container-TTGEC66A.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/node-sys-container.ts"],"sourcesContent":["import { type NodeMap, join } from \"./sys-container.js\";\n\nexport async function createNodeSysContainer(): Promise<NodeMap> {\n const nodePath = \"node:path\";\n const nodeOS = \"node:os\";\n const nodeURL = \"node:url\";\n const nodeFS = \"node:fs\";\n const fs = (await import(nodeFS)).promises;\n // const assert = \"assert\";\n const path = await import(nodePath);\n return {\n state: \"node\",\n ...path,\n ...(await import(nodeOS)),\n ...(await import(nodeURL)),\n ...fs,\n join,\n stat: fs.stat as NodeMap[\"stat\"],\n readdir: fs.readdir as NodeMap[\"readdir\"],\n readfile: fs.readFile as NodeMap[\"readfile\"],\n writefile: fs.writeFile as NodeMap[\"writefile\"],\n };\n}\n"],"mappings":";;;;;AAEA,eAAsB,yBAA2C;AAC/D,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,UAAU;AAChB,QAAM,SAAS;AACf,QAAM,MAAM,MAAM,OAAO,SAAS;AAElC,QAAM,OAAO,MAAM,OAAO;AAC1B,SAAO;AAAA,IACL,OAAO;AAAA,IACP,GAAG;AAAA,IACH,GAAI,MAAM,OAAO;AAAA,IACjB,GAAI,MAAM,OAAO;AAAA,IACjB,GAAG;AAAA,IACH;AAAA,IACA,MAAM,GAAG;AAAA,IACT,SAAS,GAAG;AAAA,IACZ,UAAU,GAAG;AAAA,IACb,WAAW,GAAG;AAAA,EAChB;AACF;","names":[]}
|
@@ -1,120 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
ensureSQLiteVersion
|
3
|
-
} from "./chunk-PRQHQG4I.js";
|
4
|
-
import {
|
5
|
-
ensureLogger,
|
6
|
-
exception2Result,
|
7
|
-
getStore
|
8
|
-
} from "./chunk-DG6XSV44.js";
|
9
|
-
import "./chunk-OWQAHX2V.js";
|
10
|
-
|
11
|
-
// src/runtime/store-sql/v0.19-sqlite/sqlite-data-store.ts
|
12
|
-
import { KeyedResolvOnce, Result } from "@adviser/cement";
|
13
|
-
var DataSQLRecordBuilder = class _DataSQLRecordBuilder {
|
14
|
-
constructor(dataRecord) {
|
15
|
-
this.dataRecord = dataRecord;
|
16
|
-
}
|
17
|
-
static fromUploadParams(data, params) {
|
18
|
-
return new _DataSQLRecordBuilder({
|
19
|
-
name: params.name,
|
20
|
-
car: params.car,
|
21
|
-
data,
|
22
|
-
updated_at: /* @__PURE__ */ new Date()
|
23
|
-
});
|
24
|
-
}
|
25
|
-
build() {
|
26
|
-
return this.dataRecord;
|
27
|
-
}
|
28
|
-
};
|
29
|
-
var V0_18_0SQLiteDataStore = class {
|
30
|
-
constructor(dbConn) {
|
31
|
-
this.dbConn = dbConn;
|
32
|
-
this.logger = ensureLogger(dbConn.opts, "SQLiteDataStore");
|
33
|
-
this.logger.Debug().Msg("constructor");
|
34
|
-
}
|
35
|
-
table(url) {
|
36
|
-
return getStore(url, this.logger, (...x) => x.join("_"));
|
37
|
-
}
|
38
|
-
#createTable = new KeyedResolvOnce();
|
39
|
-
async createTable(url) {
|
40
|
-
return this.#createTable.get(this.table(url)).once(async (table) => {
|
41
|
-
await this.dbConn.client.prepare(
|
42
|
-
`CREATE TABLE IF NOT EXISTS ${table} (
|
43
|
-
name TEXT NOT NULL,
|
44
|
-
car TEXT PRIMARY KEY,
|
45
|
-
data BLOB NOT NULL,
|
46
|
-
updated_at TEXT NOT NULL)`
|
47
|
-
).run();
|
48
|
-
});
|
49
|
-
}
|
50
|
-
#insertStmt = new KeyedResolvOnce();
|
51
|
-
async insertStmt(url) {
|
52
|
-
return this.#insertStmt.get(this.table(url)).once(async (table) => {
|
53
|
-
await this.createTable(url);
|
54
|
-
return this.dbConn.client.prepare(`
|
55
|
-
insert into ${table}
|
56
|
-
(name, car, data, updated_at) values (?, ?, ?, ?)
|
57
|
-
ON CONFLICT(car) DO UPDATE SET updated_at=?`);
|
58
|
-
});
|
59
|
-
}
|
60
|
-
#selectStmt = new KeyedResolvOnce();
|
61
|
-
async selectStmt(url) {
|
62
|
-
return this.#selectStmt.get(this.table(url)).once(async (table) => {
|
63
|
-
await this.createTable(url);
|
64
|
-
return this.dbConn.client.prepare(`select name, car, data, updated_at from ${table} where car = ?`);
|
65
|
-
});
|
66
|
-
}
|
67
|
-
#deleteStmt = new KeyedResolvOnce();
|
68
|
-
async deleteStmt(url) {
|
69
|
-
return this.#deleteStmt.get(this.table(url)).once(async (table) => {
|
70
|
-
await this.createTable(url);
|
71
|
-
return this.dbConn.client.prepare(`delete from ${table} where car = ?`);
|
72
|
-
});
|
73
|
-
}
|
74
|
-
async start(url) {
|
75
|
-
this.logger.Debug().Msg("start-connect");
|
76
|
-
await this.dbConn.connect();
|
77
|
-
this.logger.Debug().Msg("start-connected");
|
78
|
-
await ensureSQLiteVersion(url, this.dbConn);
|
79
|
-
this.logger.Debug().Msg("start-set-version");
|
80
|
-
}
|
81
|
-
async insert(url, ose) {
|
82
|
-
this.logger.Debug().Str("name", ose.name).Str("car", ose.car).Uint64("data-len", ose.data.length).Msg("insert");
|
83
|
-
const updated_at = ose.updated_at.toISOString();
|
84
|
-
return this.insertStmt(url).then((i) => i.run(ose.name, ose.car, Buffer.from(ose.data), updated_at, updated_at));
|
85
|
-
}
|
86
|
-
async select(url, car) {
|
87
|
-
this.logger.Debug().Str("car", car).Msg("select");
|
88
|
-
return (await this.selectStmt(url).then((i) => i.all(car))).map((irow) => {
|
89
|
-
const row = irow;
|
90
|
-
return {
|
91
|
-
name: row.name,
|
92
|
-
car: row.car,
|
93
|
-
data: Uint8Array.from(row.data),
|
94
|
-
updated_at: new Date(row.updated_at)
|
95
|
-
};
|
96
|
-
});
|
97
|
-
}
|
98
|
-
async delete(url, car) {
|
99
|
-
this.logger.Debug().Str("car", car).Msg("delete");
|
100
|
-
const ret = await this.deleteStmt(url).then((i) => i.run(car));
|
101
|
-
return ret;
|
102
|
-
}
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
104
|
-
async close(url) {
|
105
|
-
this.logger.Debug().Msg("close");
|
106
|
-
return Result.Ok(void 0);
|
107
|
-
}
|
108
|
-
async destroy(url) {
|
109
|
-
return exception2Result(async () => {
|
110
|
-
this.logger.Debug().Msg("destroy");
|
111
|
-
await this.createTable(url);
|
112
|
-
await this.dbConn.client.prepare(`delete from ${this.table(url)}`).run();
|
113
|
-
});
|
114
|
-
}
|
115
|
-
};
|
116
|
-
export {
|
117
|
-
DataSQLRecordBuilder,
|
118
|
-
V0_18_0SQLiteDataStore
|
119
|
-
};
|
120
|
-
//# sourceMappingURL=sqlite-data-store-MA55LVQE.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/store-sql/v0.19-sqlite/sqlite-data-store.ts"],"sourcesContent":["import type { RunResult, Statement } from \"better-sqlite3\";\nimport { DBConnection, DataRecord, DataSQLStore } from \"../types.js\";\nimport { SQLiteConnection } from \"../sqlite-adapter-better-sqlite3.js\";\nimport { KeyedResolvOnce, Logger, Result } from \"@adviser/cement\";\nimport { UploadDataFnParams } from \"../../../blockstore/types.js\";\nimport { ensureSQLiteVersion } from \"./sqlite-ensure-version.js\";\nimport { ensureLogger, exception2Result, getStore } from \"../../../utils.js\";\n\nexport class DataSQLRecordBuilder {\n readonly dataRecord: DataRecord;\n constructor(dataRecord: DataRecord) {\n this.dataRecord = dataRecord;\n }\n\n static fromUploadParams(data: Uint8Array, params: UploadDataFnParams): DataSQLRecordBuilder {\n return new DataSQLRecordBuilder({\n name: params.name,\n car: params.car,\n data: data,\n updated_at: new Date(),\n });\n }\n\n build(): DataRecord {\n return this.dataRecord;\n }\n}\n\ninterface SQLiteDataRecord {\n name: string;\n car: string;\n data: Buffer;\n updated_at: string;\n}\n\nexport class V0_18_0SQLiteDataStore implements DataSQLStore {\n readonly dbConn: SQLiteConnection;\n readonly logger: Logger;\n constructor(dbConn: DBConnection) {\n this.dbConn = dbConn as SQLiteConnection;\n this.logger = ensureLogger(dbConn.opts, \"SQLiteDataStore\");\n this.logger.Debug().Msg(\"constructor\");\n }\n\n table(url: URL): string {\n return getStore(url, this.logger, (...x: string[]) => x.join(\"_\"));\n }\n\n readonly #createTable = new KeyedResolvOnce();\n async createTable(url: URL) {\n return this.#createTable.get(this.table(url)).once(async (table) => {\n await this.dbConn.client\n .prepare(\n `CREATE TABLE IF NOT EXISTS ${table} (\n name TEXT NOT NULL,\n car TEXT PRIMARY KEY,\n data BLOB NOT NULL,\n updated_at TEXT NOT NULL)`,\n )\n .run();\n });\n }\n\n readonly #insertStmt = new KeyedResolvOnce<Statement>();\n private async insertStmt(url: URL) {\n return this.#insertStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`\n insert into ${table}\n (name, car, data, updated_at) values (?, ?, ?, ?)\n ON CONFLICT(car) DO UPDATE SET updated_at=?`);\n });\n }\n\n readonly #selectStmt = new KeyedResolvOnce<Statement>();\n private async selectStmt(url: URL) {\n return this.#selectStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`select name, car, data, updated_at from ${table} where car = ?`);\n });\n }\n\n readonly #deleteStmt = new KeyedResolvOnce<Statement>();\n private async deleteStmt(url: URL) {\n return this.#deleteStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`delete from ${table} where car = ?`);\n });\n }\n\n async start(url: URL): Promise<void> {\n this.logger.Debug().Msg(\"start-connect\");\n await this.dbConn.connect();\n this.logger.Debug().Msg(\"start-connected\");\n await ensureSQLiteVersion(url, this.dbConn);\n this.logger.Debug().Msg(\"start-set-version\");\n }\n\n async insert(url: URL, ose: DataRecord): Promise<RunResult> {\n this.logger.Debug().Str(\"name\", ose.name).Str(\"car\", ose.car).Uint64(\"data-len\", ose.data.length).Msg(\"insert\");\n const updated_at = ose.updated_at.toISOString();\n return this.insertStmt(url).then((i) => i.run(ose.name, ose.car, Buffer.from(ose.data), updated_at, updated_at));\n }\n\n async select(url: URL, car: string): Promise<DataRecord[]> {\n this.logger.Debug().Str(\"car\", car).Msg(\"select\");\n return (await this.selectStmt(url).then((i) => i.all(car))).map((irow) => {\n const row = irow as SQLiteDataRecord;\n return {\n name: row.name,\n car: row.car,\n data: Uint8Array.from(row.data),\n updated_at: new Date(row.updated_at),\n };\n });\n }\n\n async delete(url: URL, car: string): Promise<RunResult> {\n this.logger.Debug().Str(\"car\", car).Msg(\"delete\");\n const ret = await this.deleteStmt(url).then((i) => i.run(car));\n // await this.select(car);\n return ret;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async close(url: URL): Promise<Result<void>> {\n this.logger.Debug().Msg(\"close\");\n return Result.Ok(undefined);\n // await this.dbConn.close();\n }\n\n async destroy(url: URL): Promise<Result<void>> {\n return exception2Result(async () => {\n this.logger.Debug().Msg(\"destroy\");\n await this.createTable(url);\n await this.dbConn.client.prepare(`delete from ${this.table(url)}`).run();\n });\n }\n}\n"],"mappings":"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","names":[]}
|
@@ -1,137 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
ensureSQLiteVersion
|
3
|
-
} from "./chunk-PRQHQG4I.js";
|
4
|
-
import {
|
5
|
-
ensureLogger,
|
6
|
-
exception2Result,
|
7
|
-
getStore
|
8
|
-
} from "./chunk-DG6XSV44.js";
|
9
|
-
import "./chunk-OWQAHX2V.js";
|
10
|
-
|
11
|
-
// src/runtime/store-sql/v0.19-sqlite/sqlite-meta-store.ts
|
12
|
-
import { KeyedResolvOnce, Result } from "@adviser/cement";
|
13
|
-
var MetaSQLRecordBuilder = class _MetaSQLRecordBuilder {
|
14
|
-
constructor(record, textEncoder) {
|
15
|
-
this.record = record;
|
16
|
-
this.textEncoder = textEncoder;
|
17
|
-
}
|
18
|
-
static fromUploadMetaFnParams(data, params, textEncoder) {
|
19
|
-
return new _MetaSQLRecordBuilder(
|
20
|
-
{
|
21
|
-
name: params.name,
|
22
|
-
branch: params.branch,
|
23
|
-
meta: data,
|
24
|
-
updated_at: /* @__PURE__ */ new Date()
|
25
|
-
},
|
26
|
-
textEncoder
|
27
|
-
);
|
28
|
-
}
|
29
|
-
static fromBytes(str, name, branch, textEncoder) {
|
30
|
-
return new _MetaSQLRecordBuilder(
|
31
|
-
{
|
32
|
-
name,
|
33
|
-
branch,
|
34
|
-
meta: textEncoder.encode(str),
|
35
|
-
updated_at: /* @__PURE__ */ new Date()
|
36
|
-
},
|
37
|
-
textEncoder
|
38
|
-
);
|
39
|
-
}
|
40
|
-
build() {
|
41
|
-
return this.record;
|
42
|
-
}
|
43
|
-
};
|
44
|
-
var V0_18_0SQLiteMetaStore = class {
|
45
|
-
constructor(dbConn) {
|
46
|
-
this.dbConn = dbConn;
|
47
|
-
this.logger = ensureLogger(dbConn.opts, "SQLiteMetaStore");
|
48
|
-
this.logger.Debug().Msg("constructor");
|
49
|
-
}
|
50
|
-
async start(url) {
|
51
|
-
this.logger.Debug().Url(url).Msg("starting");
|
52
|
-
await this.dbConn.connect();
|
53
|
-
await ensureSQLiteVersion(url, this.dbConn);
|
54
|
-
this.logger.Debug().Url(url).Msg("started");
|
55
|
-
}
|
56
|
-
table(url) {
|
57
|
-
return getStore(url, this.logger, (...x) => x.join("_"));
|
58
|
-
}
|
59
|
-
#createTable = new KeyedResolvOnce();
|
60
|
-
async createTable(url) {
|
61
|
-
return this.#createTable.get(this.table(url)).once(async (table) => {
|
62
|
-
await this.dbConn.client.prepare(
|
63
|
-
`CREATE TABLE IF NOT EXISTS ${table} (
|
64
|
-
name TEXT not null,
|
65
|
-
branch TEXT not null,
|
66
|
-
meta BLOB NOT NULL,
|
67
|
-
updated_at TEXT NOT NULL,
|
68
|
-
PRIMARY KEY (name, branch)
|
69
|
-
)`
|
70
|
-
).run();
|
71
|
-
});
|
72
|
-
}
|
73
|
-
#insertStmt = new KeyedResolvOnce();
|
74
|
-
async insertStmt(url) {
|
75
|
-
return this.#insertStmt.get(this.table(url)).once(async (table) => {
|
76
|
-
await this.createTable(url);
|
77
|
-
return this.dbConn.client.prepare(`insert into ${table}
|
78
|
-
(name, branch, meta, updated_at)
|
79
|
-
values (?, ?, ?, ?)
|
80
|
-
ON CONFLICT(name, branch) DO UPDATE SET meta=?, updated_at=?
|
81
|
-
`);
|
82
|
-
});
|
83
|
-
}
|
84
|
-
#selectStmt = new KeyedResolvOnce();
|
85
|
-
async selectStmt(url) {
|
86
|
-
return this.#selectStmt.get(this.table(url)).once(async (table) => {
|
87
|
-
await this.createTable(url);
|
88
|
-
return this.dbConn.client.prepare(`select name, branch, meta, updated_at from ${table} where name = ? and branch = ?`);
|
89
|
-
});
|
90
|
-
}
|
91
|
-
#deleteStmt = new KeyedResolvOnce();
|
92
|
-
async deleteStmt(url) {
|
93
|
-
return this.#deleteStmt.get(this.table(url)).once(async (table) => {
|
94
|
-
await this.createTable(url);
|
95
|
-
return this.dbConn.client.prepare(`delete from ${table} where name = ? and branch = ?`);
|
96
|
-
});
|
97
|
-
}
|
98
|
-
async insert(url, ose) {
|
99
|
-
this.logger.Debug().Str("name", ose.name).Str("branch", ose.branch).Uint64("data-len", ose.meta.length).Msg("insert");
|
100
|
-
const bufMeta = Buffer.from(ose.meta);
|
101
|
-
return this.insertStmt(url).then(
|
102
|
-
(i) => i.run(ose.name, ose.branch, bufMeta, ose.updated_at.toISOString(), bufMeta, ose.updated_at.toISOString())
|
103
|
-
);
|
104
|
-
}
|
105
|
-
async select(url, key) {
|
106
|
-
this.logger.Debug().Str("name", key.name).Str("branch", key.branch).Msg("select");
|
107
|
-
return (await this.selectStmt(url).then((i) => i.all(key.name, key.branch))).map((irow) => {
|
108
|
-
const row = irow;
|
109
|
-
return {
|
110
|
-
name: row.name,
|
111
|
-
branch: row.branch,
|
112
|
-
meta: Uint8Array.from(row.meta),
|
113
|
-
updated_at: new Date(row.updated_at)
|
114
|
-
};
|
115
|
-
});
|
116
|
-
}
|
117
|
-
async delete(url, key) {
|
118
|
-
this.logger.Debug().Str("name", key.name).Str("branch", key.branch).Msg("delete");
|
119
|
-
return this.deleteStmt(url).then((i) => i.run(key.name, key.branch));
|
120
|
-
}
|
121
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
122
|
-
async close(url) {
|
123
|
-
this.logger.Debug().Msg("close");
|
124
|
-
return Result.Ok(void 0);
|
125
|
-
}
|
126
|
-
async destroy(url) {
|
127
|
-
return exception2Result(async () => {
|
128
|
-
this.logger.Debug().Msg("destroy");
|
129
|
-
await this.dbConn.client.prepare(`delete from ${this.table(url)}`).run();
|
130
|
-
});
|
131
|
-
}
|
132
|
-
};
|
133
|
-
export {
|
134
|
-
MetaSQLRecordBuilder,
|
135
|
-
V0_18_0SQLiteMetaStore
|
136
|
-
};
|
137
|
-
//# sourceMappingURL=sqlite-meta-store-UNQKVYRM.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/store-sql/v0.19-sqlite/sqlite-meta-store.ts"],"sourcesContent":["import type { RunResult, Statement } from \"better-sqlite3\";\nimport { DBConnection, MetaRecord, MetaRecordKey, MetaSQLStore } from \"../types.js\";\nimport { SQLiteConnection } from \"../sqlite-adapter-better-sqlite3.js\";\nimport { KeyedResolvOnce, Logger, Result } from \"@adviser/cement\";\nimport { UploadMetaFnParams } from \"../../../blockstore/types.js\";\nimport { ensureSQLiteVersion } from \"./sqlite-ensure-version.js\";\nimport { ensureLogger, exception2Result, getStore } from \"../../../utils.js\";\n\nexport class MetaSQLRecordBuilder {\n readonly record: MetaRecord;\n readonly textEncoder: TextEncoder;\n\n constructor(record: MetaRecord, textEncoder: TextEncoder) {\n this.record = record;\n this.textEncoder = textEncoder;\n }\n\n static fromUploadMetaFnParams(data: Uint8Array, params: UploadMetaFnParams, textEncoder: TextEncoder): MetaSQLRecordBuilder {\n return new MetaSQLRecordBuilder(\n {\n name: params.name,\n branch: params.branch,\n meta: data,\n updated_at: new Date(),\n },\n textEncoder,\n );\n }\n\n static fromBytes(str: string, name: string, branch: string, textEncoder: TextEncoder): MetaSQLRecordBuilder {\n return new MetaSQLRecordBuilder(\n {\n name: name,\n branch: branch,\n meta: textEncoder.encode(str),\n updated_at: new Date(),\n },\n textEncoder,\n );\n }\n\n build(): MetaRecord {\n return this.record;\n }\n}\n\ninterface SQLiteMetaRecord {\n name: string;\n branch: string;\n meta: Buffer;\n updated_at: string;\n}\n\nexport class V0_18_0SQLiteMetaStore implements MetaSQLStore {\n readonly dbConn: SQLiteConnection;\n readonly logger: Logger;\n constructor(dbConn: DBConnection) {\n this.dbConn = dbConn as SQLiteConnection;\n this.logger = ensureLogger(dbConn.opts, \"SQLiteMetaStore\");\n this.logger.Debug().Msg(\"constructor\");\n }\n async start(url: URL): Promise<void> {\n this.logger.Debug().Url(url).Msg(\"starting\");\n await this.dbConn.connect();\n await ensureSQLiteVersion(url, this.dbConn);\n this.logger.Debug().Url(url).Msg(\"started\");\n }\n\n table(url: URL): string {\n return getStore(url, this.logger, (...x: string[]) => x.join(\"_\"));\n }\n\n readonly #createTable = new KeyedResolvOnce();\n async createTable(url: URL) {\n return this.#createTable.get(this.table(url)).once(async (table) => {\n await this.dbConn.client\n .prepare(\n `CREATE TABLE IF NOT EXISTS ${table} (\n name TEXT not null,\n branch TEXT not null,\n meta BLOB NOT NULL,\n updated_at TEXT NOT NULL,\n PRIMARY KEY (name, branch)\n )`,\n )\n .run();\n });\n }\n\n readonly #insertStmt = new KeyedResolvOnce<Statement>();\n private async insertStmt(url: URL) {\n return this.#insertStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`insert into ${table}\n (name, branch, meta, updated_at)\n values (?, ?, ?, ?)\n ON CONFLICT(name, branch) DO UPDATE SET meta=?, updated_at=?\n `);\n });\n }\n\n readonly #selectStmt = new KeyedResolvOnce<Statement>();\n private async selectStmt(url: URL) {\n return this.#selectStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`select name, branch, meta, updated_at from ${table} where name = ? and branch = ?`);\n });\n }\n\n readonly #deleteStmt = new KeyedResolvOnce<Statement>();\n private async deleteStmt(url: URL) {\n return this.#deleteStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`delete from ${table} where name = ? and branch = ?`);\n });\n }\n\n async insert(url: URL, ose: MetaRecord): Promise<RunResult> {\n this.logger.Debug().Str(\"name\", ose.name).Str(\"branch\", ose.branch).Uint64(\"data-len\", ose.meta.length).Msg(\"insert\");\n const bufMeta = Buffer.from(ose.meta);\n return this.insertStmt(url).then((i) =>\n i.run(ose.name, ose.branch, bufMeta, ose.updated_at.toISOString(), bufMeta, ose.updated_at.toISOString()),\n );\n }\n async select(url: URL, key: MetaRecordKey): Promise<MetaRecord[]> {\n this.logger.Debug().Str(\"name\", key.name).Str(\"branch\", key.branch).Msg(\"select\");\n return (await this.selectStmt(url).then((i) => i.all(key.name, key.branch))).map((irow) => {\n const row = irow as SQLiteMetaRecord;\n return {\n name: row.name,\n branch: row.branch,\n meta: Uint8Array.from(row.meta),\n updated_at: new Date(row.updated_at),\n };\n });\n }\n\n async delete(url: URL, key: MetaRecordKey): Promise<RunResult> {\n this.logger.Debug().Str(\"name\", key.name).Str(\"branch\", key.branch).Msg(\"delete\");\n return this.deleteStmt(url).then((i) => i.run(key.name, key.branch));\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async close(url: URL): Promise<Result<void>> {\n this.logger.Debug().Msg(\"close\");\n // await this.dbConn.close();\n return Result.Ok(undefined);\n }\n async destroy(url: URL): Promise<Result<void>> {\n return exception2Result(async () => {\n this.logger.Debug().Msg(\"destroy\");\n await this.dbConn.client.prepare(`delete from ${this.table(url)}`).run();\n });\n }\n}\n"],"mappings":"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","names":[]}
|
@@ -1,123 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
ensureSQLiteVersion
|
3
|
-
} from "./chunk-PRQHQG4I.js";
|
4
|
-
import {
|
5
|
-
ensureLogger,
|
6
|
-
exception2Result,
|
7
|
-
getStore
|
8
|
-
} from "./chunk-DG6XSV44.js";
|
9
|
-
import "./chunk-OWQAHX2V.js";
|
10
|
-
|
11
|
-
// src/runtime/store-sql/v0.19-sqlite/sqlite-wal-store.ts
|
12
|
-
import { KeyedResolvOnce, Result } from "@adviser/cement";
|
13
|
-
var WalSQLRecordBuilder = class _WalSQLRecordBuilder {
|
14
|
-
#record;
|
15
|
-
constructor(record) {
|
16
|
-
this.#record = record;
|
17
|
-
}
|
18
|
-
static fromRecord(record) {
|
19
|
-
return new _WalSQLRecordBuilder(record);
|
20
|
-
}
|
21
|
-
build() {
|
22
|
-
return this.#record;
|
23
|
-
}
|
24
|
-
};
|
25
|
-
var V0_18_0SQLiteWalStore = class {
|
26
|
-
constructor(dbConn) {
|
27
|
-
this.dbConn = dbConn;
|
28
|
-
this.textEncoder = dbConn.opts.textEncoder;
|
29
|
-
this.logger = ensureLogger(dbConn.opts, "SQLiteWalStore");
|
30
|
-
this.logger.Debug().Msg("constructor");
|
31
|
-
}
|
32
|
-
async start(url) {
|
33
|
-
this.logger.Debug().Msg("start");
|
34
|
-
await this.dbConn.connect();
|
35
|
-
await ensureSQLiteVersion(url, this.dbConn);
|
36
|
-
}
|
37
|
-
table(url) {
|
38
|
-
return getStore(url, this.logger, (...x) => x.join("_"));
|
39
|
-
}
|
40
|
-
#createTable = new KeyedResolvOnce();
|
41
|
-
async createTable(url) {
|
42
|
-
return this.#createTable.get(this.table(url)).once(async (table) => {
|
43
|
-
await this.dbConn.client.prepare(
|
44
|
-
`CREATE TABLE IF NOT EXISTS ${table} (
|
45
|
-
name TEXT not null,
|
46
|
-
branch TEXT not null,
|
47
|
-
state BLOB NOT NULL,
|
48
|
-
updated_at TEXT NOT NULL,
|
49
|
-
PRIMARY KEY (name, branch)
|
50
|
-
)`
|
51
|
-
).run();
|
52
|
-
});
|
53
|
-
}
|
54
|
-
#insertStmt = new KeyedResolvOnce();
|
55
|
-
async insertStmt(url) {
|
56
|
-
return this.#insertStmt.get(this.table(url)).once(async (table) => {
|
57
|
-
await this.createTable(url);
|
58
|
-
return this.dbConn.client.prepare(`insert into ${table}
|
59
|
-
(name, branch, state, updated_at)
|
60
|
-
values (?, ?, ?, ?)
|
61
|
-
ON CONFLICT(name, branch) DO UPDATE SET state=?, updated_at=?
|
62
|
-
`);
|
63
|
-
});
|
64
|
-
}
|
65
|
-
#selectStmt = new KeyedResolvOnce();
|
66
|
-
async selectStmt(url) {
|
67
|
-
return this.#selectStmt.get(this.table(url)).once(async (table) => {
|
68
|
-
await this.createTable(url);
|
69
|
-
return this.dbConn.client.prepare(
|
70
|
-
`select name, branch, state, updated_at from ${table}
|
71
|
-
where name = ? and branch = ?`
|
72
|
-
);
|
73
|
-
});
|
74
|
-
}
|
75
|
-
#deleteStmt = new KeyedResolvOnce();
|
76
|
-
async deleteStmt(url) {
|
77
|
-
return this.#deleteStmt.get(this.table(url)).once(async (table) => {
|
78
|
-
await this.createTable(url);
|
79
|
-
return this.dbConn.client.prepare(`delete from ${table} where name = ? and branch = ?`);
|
80
|
-
});
|
81
|
-
}
|
82
|
-
async insert(url, ose) {
|
83
|
-
const wal = WalSQLRecordBuilder.fromRecord(ose).build();
|
84
|
-
const bufState = Buffer.from(this.textEncoder.encode(JSON.stringify(wal.state)));
|
85
|
-
return this.insertStmt(url).then(
|
86
|
-
(i) => i.run(ose.name, ose.branch, bufState, wal.updated_at.toISOString(), bufState, wal.updated_at.toISOString())
|
87
|
-
);
|
88
|
-
}
|
89
|
-
async select(url, key) {
|
90
|
-
const res = (await this.selectStmt(url).then((i) => i.all(key.name, key.branch))).map((irow) => {
|
91
|
-
const row = irow;
|
92
|
-
return {
|
93
|
-
name: row.name,
|
94
|
-
branch: row.branch,
|
95
|
-
state: Uint8Array.from(row.state),
|
96
|
-
updated_at: new Date(row.updated_at)
|
97
|
-
};
|
98
|
-
});
|
99
|
-
this.logger.Debug().Str("name", key.name).Str("branch", key.branch).Uint64("res", res.length).Msg("select");
|
100
|
-
return res;
|
101
|
-
}
|
102
|
-
async delete(url, key) {
|
103
|
-
this.logger.Debug().Str("name", key.name).Str("branch", key.branch).Msg("delete");
|
104
|
-
return this.deleteStmt(url).then((i) => i.run(key.name, key.branch));
|
105
|
-
}
|
106
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
107
|
-
async close(url) {
|
108
|
-
this.logger.Debug().Msg("close");
|
109
|
-
return Result.Ok(void 0);
|
110
|
-
}
|
111
|
-
async destroy(url) {
|
112
|
-
return exception2Result(async () => {
|
113
|
-
this.logger.Debug().Msg("destroy");
|
114
|
-
await this.createTable(url);
|
115
|
-
await this.dbConn.client.prepare(`delete from ${this.table(url)}`).run();
|
116
|
-
});
|
117
|
-
}
|
118
|
-
};
|
119
|
-
export {
|
120
|
-
V0_18_0SQLiteWalStore,
|
121
|
-
WalSQLRecordBuilder
|
122
|
-
};
|
123
|
-
//# sourceMappingURL=sqlite-wal-store-KVUOC4PO.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/store-sql/v0.19-sqlite/sqlite-wal-store.ts"],"sourcesContent":["import type { RunResult, Statement } from \"better-sqlite3\";\nimport { DBConnection, WalKey, WalRecord, WalSQLStore } from \"../types.js\";\nimport { SQLiteConnection } from \"../sqlite-adapter-better-sqlite3.js\";\nimport { KeyedResolvOnce, Logger, Result } from \"@adviser/cement\";\nimport { ensureSQLiteVersion } from \"./sqlite-ensure-version.js\";\nimport { ensureLogger, exception2Result, getStore } from \"../../../utils.js\";\n\nexport class WalSQLRecordBuilder {\n readonly #record: WalRecord;\n\n constructor(record: WalRecord) {\n this.#record = record;\n }\n\n static fromRecord(record: WalRecord): WalSQLRecordBuilder {\n return new WalSQLRecordBuilder(record);\n }\n\n build(): WalRecord {\n return this.#record;\n }\n}\n\ninterface SQLiteWalRecord {\n readonly name: string;\n readonly branch: string;\n readonly state: Buffer;\n readonly updated_at: string;\n}\n\nexport class V0_18_0SQLiteWalStore implements WalSQLStore {\n readonly dbConn: SQLiteConnection;\n readonly logger: Logger;\n readonly textEncoder: TextEncoder;\n constructor(dbConn: DBConnection) {\n this.dbConn = dbConn as SQLiteConnection;\n this.textEncoder = dbConn.opts.textEncoder;\n this.logger = ensureLogger(dbConn.opts, \"SQLiteWalStore\");\n this.logger.Debug().Msg(\"constructor\");\n }\n async start(url: URL): Promise<void> {\n this.logger.Debug().Msg(\"start\");\n await this.dbConn.connect();\n await ensureSQLiteVersion(url, this.dbConn);\n\n // this._insertStmt =\n // this._selectStmt = this.dbConn.client.prepare(\n // `select name, branch, state, updated_at from ${this.table} where name = ? and branch = ?`,\n // );\n // this._deleteStmt = this.dbConn.client.prepare(`delete from ${this.table} where name = ? and branch = ?`);\n }\n\n table(url: URL): string {\n return getStore(url, this.logger, (...x: string[]) => x.join(\"_\"));\n }\n\n readonly #createTable = new KeyedResolvOnce();\n async createTable(url: URL) {\n return this.#createTable.get(this.table(url)).once(async (table) => {\n await this.dbConn.client\n .prepare(\n `CREATE TABLE IF NOT EXISTS ${table} (\n name TEXT not null,\n branch TEXT not null,\n state BLOB NOT NULL,\n updated_at TEXT NOT NULL,\n PRIMARY KEY (name, branch)\n )`,\n )\n .run();\n });\n }\n\n readonly #insertStmt = new KeyedResolvOnce<Statement>();\n private async insertStmt(url: URL) {\n return this.#insertStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`insert into ${table}\n (name, branch, state, updated_at)\n values (?, ?, ?, ?)\n ON CONFLICT(name, branch) DO UPDATE SET state=?, updated_at=?\n `);\n });\n }\n\n readonly #selectStmt = new KeyedResolvOnce<Statement>();\n private async selectStmt(url: URL) {\n return this.#selectStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(\n `select name, branch, state, updated_at from ${table}\n where name = ? and branch = ?`,\n );\n });\n }\n\n readonly #deleteStmt = new KeyedResolvOnce<Statement>();\n private async deleteStmt(url: URL) {\n return this.#deleteStmt.get(this.table(url)).once(async (table) => {\n await this.createTable(url);\n return this.dbConn.client.prepare(`delete from ${table} where name = ? and branch = ?`);\n });\n }\n async insert(url: URL, ose: WalRecord): Promise<RunResult> {\n const wal = WalSQLRecordBuilder.fromRecord(ose).build();\n const bufState = Buffer.from(this.textEncoder.encode(JSON.stringify(wal.state)));\n return this.insertStmt(url).then((i) =>\n i.run(ose.name, ose.branch, bufState, wal.updated_at.toISOString(), bufState, wal.updated_at.toISOString()),\n );\n }\n async select(url: URL, key: WalKey): Promise<WalRecord[]> {\n const res = (await this.selectStmt(url).then((i) => i.all(key.name, key.branch))).map((irow) => {\n const row = irow as SQLiteWalRecord;\n return {\n name: row.name,\n branch: row.branch,\n state: Uint8Array.from(row.state),\n updated_at: new Date(row.updated_at),\n };\n });\n this.logger.Debug().Str(\"name\", key.name).Str(\"branch\", key.branch).Uint64(\"res\", res.length).Msg(\"select\");\n return res;\n }\n async delete(url: URL, key: WalKey): Promise<RunResult> {\n this.logger.Debug().Str(\"name\", key.name).Str(\"branch\", key.branch).Msg(\"delete\");\n return this.deleteStmt(url).then((i) => i.run(key.name, key.branch));\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async close(url: URL): Promise<Result<void>> {\n this.logger.Debug().Msg(\"close\");\n return Result.Ok(undefined);\n // await this.dbConn.close();\n }\n async destroy(url: URL): Promise<Result<void>> {\n return exception2Result(async () => {\n this.logger.Debug().Msg(\"destroy\");\n await this.createTable(url);\n await this.dbConn.client.prepare(`delete from ${this.table(url)}`).run();\n });\n }\n}\n"],"mappings":"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","names":[]}
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
IndexDBDataGateway,
|
3
|
-
IndexDBMetaGateway,
|
4
|
-
IndexDBTestStore,
|
5
|
-
IndexDBWalGateway,
|
6
|
-
getIndexDBName,
|
7
|
-
guardVersion
|
8
|
-
} from "./chunk-5UFCF36O.js";
|
9
|
-
import "./chunk-VZGT7ZYP.js";
|
10
|
-
import "./chunk-DG6XSV44.js";
|
11
|
-
import "./chunk-OWQAHX2V.js";
|
12
|
-
export {
|
13
|
-
IndexDBDataGateway,
|
14
|
-
IndexDBMetaGateway,
|
15
|
-
IndexDBTestStore,
|
16
|
-
IndexDBWalGateway,
|
17
|
-
getIndexDBName,
|
18
|
-
guardVersion
|
19
|
-
};
|
20
|
-
//# sourceMappingURL=store-indexdb-NG45BU3Q.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|