@statewalker/webrun-files-sqlite 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +212 -0
- package/dist/blocks/byte-reader.d.ts +19 -0
- package/dist/blocks/byte-reader.d.ts.map +1 -0
- package/dist/blocks/sha256.d.ts +11 -0
- package/dist/blocks/sha256.d.ts.map +1 -0
- package/dist/blocks/sqlite-files-api.d.ts +61 -0
- package/dist/blocks/sqlite-files-api.d.ts.map +1 -0
- package/dist/blocks/stream-codec.d.ts +40 -0
- package/dist/blocks/stream-codec.d.ts.map +1 -0
- package/dist/bytes.d.ts +3 -0
- package/dist/bytes.d.ts.map +1 -0
- package/dist/cjs/index.cjs +1264 -0
- package/dist/codec.d.ts +47 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/drivers.d.ts +73 -0
- package/dist/drivers.d.ts.map +1 -0
- package/dist/esm/index.js +1253 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/sql.types.d.ts +25 -0
- package/dist/sql.types.d.ts.map +1 -0
- package/dist/sqlar-files-api.d.ts +52 -0
- package/dist/sqlar-files-api.d.ts.map +1 -0
- package/package.json +52 -0
- package/src/blocks/byte-reader.ts +64 -0
- package/src/blocks/sha256.ts +116 -0
- package/src/blocks/sqlite-files-api.ts +587 -0
- package/src/blocks/stream-codec.ts +132 -0
- package/src/bytes.ts +8 -0
- package/src/codec.ts +88 -0
- package/src/drivers.ts +133 -0
- package/src/index.ts +25 -0
- package/src/sql.types.ts +25 -0
- package/src/sqlar-files-api.ts +413 -0
package/dist/codec.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLAR compression.
|
|
3
|
+
*
|
|
4
|
+
* The format mandates zlib-wrapped Deflate (RFC 1950, the `78 xx` header) —
|
|
5
|
+
* what zlib's `compress()` writes. Every codec here writes exactly that, so an
|
|
6
|
+
* archive written by one is read by any other, and by other SQLAR tools.
|
|
7
|
+
*/
|
|
8
|
+
export interface Codec {
|
|
9
|
+
name: string;
|
|
10
|
+
/**
|
|
11
|
+
* Inputs shorter than this are stored plaintext without a deflate attempt:
|
|
12
|
+
* deflating a short input makes it longer.
|
|
13
|
+
*/
|
|
14
|
+
minSize: number;
|
|
15
|
+
deflate(bytes: Uint8Array): Uint8Array | Promise<Uint8Array>;
|
|
16
|
+
inflate(data: Uint8Array): Uint8Array | Promise<Uint8Array>;
|
|
17
|
+
}
|
|
18
|
+
/** Compression Streams — browsers, Node, Workers. No dependency. */
|
|
19
|
+
export declare function webCodec(opts?: {
|
|
20
|
+
minSize?: number;
|
|
21
|
+
}): Codec;
|
|
22
|
+
/** The part of the `pako` module this codec uses. */
|
|
23
|
+
export interface PakoModule {
|
|
24
|
+
deflate(data: Uint8Array, opts?: {
|
|
25
|
+
level?: number;
|
|
26
|
+
}): Uint8Array;
|
|
27
|
+
inflate(data: Uint8Array): Uint8Array;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* pako — synchronous, for runtimes without a usable CompressionStream. The
|
|
31
|
+
* module is injected so this package does not depend on it:
|
|
32
|
+
*
|
|
33
|
+
* import * as pako from "pako";
|
|
34
|
+
* new SqlarFilesApi(driver, { codec: pakoCodec(pako) });
|
|
35
|
+
*/
|
|
36
|
+
export declare function pakoCodec(pako: PakoModule, opts?: {
|
|
37
|
+
minSize?: number;
|
|
38
|
+
level?: number;
|
|
39
|
+
}): Codec;
|
|
40
|
+
/**
|
|
41
|
+
* No compression — still a valid archive. Reading a compressed row through it
|
|
42
|
+
* throws rather than returning deflate bytes as file content.
|
|
43
|
+
*/
|
|
44
|
+
export declare function rawCodec(): Codec;
|
|
45
|
+
/** webCodec where CompressionStream exists, rawCodec elsewhere. */
|
|
46
|
+
export declare function defaultCodec(): Codec;
|
|
47
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7D;AAID,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,KAAK,CAW/D;AAED,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,UAAU,CAAC;IACjE,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;CACvC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,KAAK,CASP;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,KAAK,CAShC;AAED,mEAAmE;AACnE,wBAAgB,YAAY,IAAI,KAAK,CAEpC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { SqlDriver, SqlStatement } from "./sql.types.js";
|
|
2
|
+
/** The subset of node:sqlite's `DatabaseSync` this driver uses. */
|
|
3
|
+
export interface NodeSqliteDatabase {
|
|
4
|
+
exec(sql: string): void;
|
|
5
|
+
prepare(sql: string): {
|
|
6
|
+
all(...params: never[]): unknown[];
|
|
7
|
+
run(...params: never[]): {
|
|
8
|
+
changes: number | bigint;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/** node:sqlite — local development, tests and any Node deployment. */
|
|
13
|
+
export declare class NodeSqlDriver implements SqlDriver {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(db: NodeSqliteDatabase);
|
|
16
|
+
all<T>(sql: string, ...params: unknown[]): T[];
|
|
17
|
+
run(sql: string, ...params: unknown[]): void;
|
|
18
|
+
/** Synchronous from BEGIN to COMMIT, so no other call can interleave on the connection. */
|
|
19
|
+
transaction(statements: SqlStatement[]): number[];
|
|
20
|
+
}
|
|
21
|
+
/** The subset of a Durable Object's `ctx.storage` this driver uses. */
|
|
22
|
+
export interface DoStorage {
|
|
23
|
+
sql: {
|
|
24
|
+
exec(query: string, ...bindings: unknown[]): {
|
|
25
|
+
toArray(): unknown[];
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
transactionSync<T>(fn: () => T): T;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Durable Object SQLite storage: pass `ctx.storage`. Synchronous; BLOBs come
|
|
32
|
+
* back as ArrayBuffer. Transactions use `transactionSync`, since `sql.exec`
|
|
33
|
+
* rejects `BEGIN`.
|
|
34
|
+
*/
|
|
35
|
+
export declare class DoSqlDriver implements SqlDriver {
|
|
36
|
+
#private;
|
|
37
|
+
constructor(storage: DoStorage);
|
|
38
|
+
all<T>(sql: string, ...params: unknown[]): T[];
|
|
39
|
+
run(sql: string, ...params: unknown[]): void;
|
|
40
|
+
/**
|
|
41
|
+
* Counts come from SQLite's `changes()` on the same connection, not from the
|
|
42
|
+
* cursor's `rowsWritten`, which also counts every index row a write touches.
|
|
43
|
+
*/
|
|
44
|
+
transaction(statements: SqlStatement[]): number[];
|
|
45
|
+
}
|
|
46
|
+
/** The subset of a `D1Database` this driver uses. */
|
|
47
|
+
export interface D1Database {
|
|
48
|
+
prepare(query: string): D1PreparedStatement;
|
|
49
|
+
batch(statements: D1BoundStatement[]): Promise<{
|
|
50
|
+
meta: {
|
|
51
|
+
changes: number;
|
|
52
|
+
};
|
|
53
|
+
}[]>;
|
|
54
|
+
}
|
|
55
|
+
interface D1PreparedStatement {
|
|
56
|
+
bind(...values: unknown[]): D1BoundStatement;
|
|
57
|
+
}
|
|
58
|
+
interface D1BoundStatement {
|
|
59
|
+
all(): Promise<{
|
|
60
|
+
results: unknown[];
|
|
61
|
+
}>;
|
|
62
|
+
run(): Promise<unknown>;
|
|
63
|
+
}
|
|
64
|
+
/** Cloudflare D1. Asynchronous; BLOBs come back as number[]; transactions are `batch()`. */
|
|
65
|
+
export declare class D1SqlDriver implements SqlDriver {
|
|
66
|
+
#private;
|
|
67
|
+
constructor(db: D1Database);
|
|
68
|
+
all<T>(sql: string, ...params: unknown[]): Promise<T[]>;
|
|
69
|
+
run(sql: string, ...params: unknown[]): Promise<void>;
|
|
70
|
+
transaction(statements: SqlStatement[]): Promise<number[]>;
|
|
71
|
+
}
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=drivers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../src/drivers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9D,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;QACnC,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG;YAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACvD,CAAC;CACH;AAED,sEAAsE;AACtE,qBAAa,aAAc,YAAW,SAAS;;IAG7C,YAAY,EAAE,EAAE,kBAAkB,EAEjC;IAED,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAE7C;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAE3C;IAED,2FAA2F;IAC3F,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAYhD;CACF;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE;QACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG;YAAE,OAAO,IAAI,OAAO,EAAE,CAAA;SAAE,CAAC;KACvE,CAAC;IACF,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,qBAAa,WAAY,YAAW,SAAS;;IAG3C,YAAY,OAAO,EAAE,SAAS,EAE7B;IAED,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAE7C;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAG3C;IAED;;;OAGG;IACH,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAQhD;CACF;AAED,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC5C,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,CAAC,CAAC;CACjF;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;CAC9C;AAED,UAAU,gBAAgB;IACxB,GAAG,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IACvC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACzB;AAED,4FAA4F;AAC5F,qBAAa,WAAY,YAAW,SAAS;;IAG3C,YAAY,EAAE,EAAE,UAAU,EAEzB;IAEK,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAM5D;IAEK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1D;IAEK,WAAW,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAM/D;CACF"}
|