@dotdo/pglite 0.1.0 → 0.1.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/dist/amcheck.tar.gz +0 -0
- package/dist/auth_delay.tar.gz +0 -0
- package/dist/auto_explain.tar.gz +0 -0
- package/dist/basebackup_to_shell.tar.gz +0 -0
- package/dist/basic_archive.tar.gz +0 -0
- package/dist/bloom.tar.gz +0 -0
- package/dist/btree_gin.tar.gz +0 -0
- package/dist/btree_gist.tar.gz +0 -0
- package/dist/{chunk-FY2WAP66.js → chunk-5U7S5PTI.js} +2 -2
- package/dist/chunk-5U7S5PTI.js.map +1 -0
- package/dist/{chunk-NS5M47NH.js → chunk-I55HERVV.js} +3 -3
- package/dist/chunk-I55HERVV.js.map +1 -0
- package/dist/{chunk-XGK36GMM.js → chunk-J77SUHST.js} +2 -2
- package/dist/chunk-J77SUHST.js.map +1 -0
- package/dist/citext.tar.gz +0 -0
- package/dist/contrib/amcheck.cjs +1 -1
- package/dist/contrib/amcheck.cjs.map +1 -1
- package/dist/contrib/amcheck.d.cts +10 -0
- package/dist/contrib/amcheck.d.ts +10 -0
- package/dist/contrib/amcheck.js +1 -1
- package/dist/contrib/amcheck.js.map +1 -1
- package/dist/contrib/auto_explain.cjs +1 -1
- package/dist/contrib/auto_explain.cjs.map +1 -1
- package/dist/contrib/auto_explain.d.cts +10 -0
- package/dist/contrib/auto_explain.d.ts +10 -0
- package/dist/contrib/auto_explain.js +1 -1
- package/dist/contrib/auto_explain.js.map +1 -1
- package/dist/contrib/bloom.cjs +1 -1
- package/dist/contrib/bloom.cjs.map +1 -1
- package/dist/contrib/bloom.d.cts +10 -0
- package/dist/contrib/bloom.d.ts +10 -0
- package/dist/contrib/bloom.js +1 -1
- package/dist/contrib/bloom.js.map +1 -1
- package/dist/contrib/btree_gin.cjs +1 -1
- package/dist/contrib/btree_gin.cjs.map +1 -1
- package/dist/contrib/btree_gin.d.cts +10 -0
- package/dist/contrib/btree_gin.d.ts +10 -0
- package/dist/contrib/btree_gin.js +1 -1
- package/dist/contrib/btree_gin.js.map +1 -1
- package/dist/contrib/btree_gist.cjs +1 -1
- package/dist/contrib/btree_gist.cjs.map +1 -1
- package/dist/contrib/btree_gist.d.cts +10 -0
- package/dist/contrib/btree_gist.d.ts +10 -0
- package/dist/contrib/btree_gist.js +1 -1
- package/dist/contrib/btree_gist.js.map +1 -1
- package/dist/contrib/citext.cjs +1 -1
- package/dist/contrib/citext.cjs.map +1 -1
- package/dist/contrib/citext.d.cts +10 -0
- package/dist/contrib/citext.d.ts +10 -0
- package/dist/contrib/citext.js +1 -1
- package/dist/contrib/citext.js.map +1 -1
- package/dist/contrib/cube.cjs +1 -1
- package/dist/contrib/cube.cjs.map +1 -1
- package/dist/contrib/cube.d.cts +10 -0
- package/dist/contrib/cube.d.ts +10 -0
- package/dist/contrib/cube.js +1 -1
- package/dist/contrib/cube.js.map +1 -1
- package/dist/contrib/dict_int.cjs +1 -1
- package/dist/contrib/dict_int.cjs.map +1 -1
- package/dist/contrib/dict_int.d.cts +10 -0
- package/dist/contrib/dict_int.d.ts +10 -0
- package/dist/contrib/dict_int.js +1 -1
- package/dist/contrib/dict_int.js.map +1 -1
- package/dist/contrib/dict_xsyn.cjs +1 -1
- package/dist/contrib/dict_xsyn.cjs.map +1 -1
- package/dist/contrib/dict_xsyn.d.cts +10 -0
- package/dist/contrib/dict_xsyn.d.ts +10 -0
- package/dist/contrib/dict_xsyn.js +1 -1
- package/dist/contrib/dict_xsyn.js.map +1 -1
- package/dist/contrib/earthdistance.cjs +1 -1
- package/dist/contrib/earthdistance.cjs.map +1 -1
- package/dist/contrib/earthdistance.d.cts +10 -0
- package/dist/contrib/earthdistance.d.ts +10 -0
- package/dist/contrib/earthdistance.js +1 -1
- package/dist/contrib/earthdistance.js.map +1 -1
- package/dist/contrib/file_fdw.cjs +1 -1
- package/dist/contrib/file_fdw.cjs.map +1 -1
- package/dist/contrib/file_fdw.d.cts +10 -0
- package/dist/contrib/file_fdw.d.ts +10 -0
- package/dist/contrib/file_fdw.js +1 -1
- package/dist/contrib/file_fdw.js.map +1 -1
- package/dist/contrib/fuzzystrmatch.cjs +1 -1
- package/dist/contrib/fuzzystrmatch.cjs.map +1 -1
- package/dist/contrib/fuzzystrmatch.d.cts +10 -0
- package/dist/contrib/fuzzystrmatch.d.ts +10 -0
- package/dist/contrib/fuzzystrmatch.js +1 -1
- package/dist/contrib/fuzzystrmatch.js.map +1 -1
- package/dist/contrib/hstore.cjs +1 -1
- package/dist/contrib/hstore.cjs.map +1 -1
- package/dist/contrib/hstore.d.cts +10 -0
- package/dist/contrib/hstore.d.ts +10 -0
- package/dist/contrib/hstore.js +1 -1
- package/dist/contrib/hstore.js.map +1 -1
- package/dist/contrib/intarray.cjs +1 -1
- package/dist/contrib/intarray.cjs.map +1 -1
- package/dist/contrib/intarray.d.cts +10 -0
- package/dist/contrib/intarray.d.ts +10 -0
- package/dist/contrib/intarray.js +1 -1
- package/dist/contrib/intarray.js.map +1 -1
- package/dist/contrib/isn.cjs +1 -1
- package/dist/contrib/isn.cjs.map +1 -1
- package/dist/contrib/isn.d.cts +10 -0
- package/dist/contrib/isn.d.ts +10 -0
- package/dist/contrib/isn.js +1 -1
- package/dist/contrib/isn.js.map +1 -1
- package/dist/contrib/lo.cjs +1 -1
- package/dist/contrib/lo.cjs.map +1 -1
- package/dist/contrib/lo.d.cts +10 -0
- package/dist/contrib/lo.d.ts +10 -0
- package/dist/contrib/lo.js +1 -1
- package/dist/contrib/lo.js.map +1 -1
- package/dist/contrib/ltree.cjs +1 -1
- package/dist/contrib/ltree.cjs.map +1 -1
- package/dist/contrib/ltree.d.cts +10 -0
- package/dist/contrib/ltree.d.ts +10 -0
- package/dist/contrib/ltree.js +1 -1
- package/dist/contrib/ltree.js.map +1 -1
- package/dist/contrib/pageinspect.cjs +1 -1
- package/dist/contrib/pageinspect.cjs.map +1 -1
- package/dist/contrib/pageinspect.d.cts +10 -0
- package/dist/contrib/pageinspect.d.ts +10 -0
- package/dist/contrib/pageinspect.js +1 -1
- package/dist/contrib/pageinspect.js.map +1 -1
- package/dist/contrib/pg_buffercache.cjs +1 -1
- package/dist/contrib/pg_buffercache.cjs.map +1 -1
- package/dist/contrib/pg_buffercache.d.cts +10 -0
- package/dist/contrib/pg_buffercache.d.ts +10 -0
- package/dist/contrib/pg_buffercache.js +1 -1
- package/dist/contrib/pg_buffercache.js.map +1 -1
- package/dist/contrib/pg_freespacemap.cjs +1 -1
- package/dist/contrib/pg_freespacemap.cjs.map +1 -1
- package/dist/contrib/pg_freespacemap.d.cts +10 -0
- package/dist/contrib/pg_freespacemap.d.ts +10 -0
- package/dist/contrib/pg_freespacemap.js +1 -1
- package/dist/contrib/pg_freespacemap.js.map +1 -1
- package/dist/contrib/pg_surgery.cjs +1 -1
- package/dist/contrib/pg_surgery.cjs.map +1 -1
- package/dist/contrib/pg_surgery.d.cts +10 -0
- package/dist/contrib/pg_surgery.d.ts +10 -0
- package/dist/contrib/pg_surgery.js +1 -1
- package/dist/contrib/pg_surgery.js.map +1 -1
- package/dist/contrib/pg_trgm.cjs +1 -1
- package/dist/contrib/pg_trgm.cjs.map +1 -1
- package/dist/contrib/pg_trgm.d.cts +10 -0
- package/dist/contrib/pg_trgm.d.ts +10 -0
- package/dist/contrib/pg_trgm.js +1 -1
- package/dist/contrib/pg_trgm.js.map +1 -1
- package/dist/contrib/pg_visibility.cjs +1 -1
- package/dist/contrib/pg_visibility.cjs.map +1 -1
- package/dist/contrib/pg_visibility.d.cts +10 -0
- package/dist/contrib/pg_visibility.d.ts +10 -0
- package/dist/contrib/pg_visibility.js +1 -1
- package/dist/contrib/pg_visibility.js.map +1 -1
- package/dist/contrib/pg_walinspect.cjs +1 -1
- package/dist/contrib/pg_walinspect.cjs.map +1 -1
- package/dist/contrib/pg_walinspect.d.cts +10 -0
- package/dist/contrib/pg_walinspect.d.ts +10 -0
- package/dist/contrib/pg_walinspect.js +1 -1
- package/dist/contrib/pg_walinspect.js.map +1 -1
- package/dist/contrib/pgcrypto.cjs +1 -1
- package/dist/contrib/pgcrypto.cjs.map +1 -1
- package/dist/contrib/pgcrypto.d.cts +10 -0
- package/dist/contrib/pgcrypto.d.ts +10 -0
- package/dist/contrib/pgcrypto.js +1 -1
- package/dist/contrib/pgcrypto.js.map +1 -1
- package/dist/contrib/seg.cjs +1 -1
- package/dist/contrib/seg.cjs.map +1 -1
- package/dist/contrib/seg.d.cts +10 -0
- package/dist/contrib/seg.d.ts +10 -0
- package/dist/contrib/seg.js +1 -1
- package/dist/contrib/seg.js.map +1 -1
- package/dist/contrib/tablefunc.cjs +1 -1
- package/dist/contrib/tablefunc.cjs.map +1 -1
- package/dist/contrib/tablefunc.d.cts +10 -0
- package/dist/contrib/tablefunc.d.ts +10 -0
- package/dist/contrib/tablefunc.js +1 -1
- package/dist/contrib/tablefunc.js.map +1 -1
- package/dist/contrib/tcn.cjs +1 -1
- package/dist/contrib/tcn.cjs.map +1 -1
- package/dist/contrib/tcn.d.cts +10 -0
- package/dist/contrib/tcn.d.ts +10 -0
- package/dist/contrib/tcn.js +1 -1
- package/dist/contrib/tcn.js.map +1 -1
- package/dist/contrib/tsm_system_rows.cjs +1 -1
- package/dist/contrib/tsm_system_rows.cjs.map +1 -1
- package/dist/contrib/tsm_system_rows.d.cts +10 -0
- package/dist/contrib/tsm_system_rows.d.ts +10 -0
- package/dist/contrib/tsm_system_rows.js +1 -1
- package/dist/contrib/tsm_system_rows.js.map +1 -1
- package/dist/contrib/tsm_system_time.cjs +1 -1
- package/dist/contrib/tsm_system_time.cjs.map +1 -1
- package/dist/contrib/tsm_system_time.d.cts +10 -0
- package/dist/contrib/tsm_system_time.d.ts +10 -0
- package/dist/contrib/tsm_system_time.js +1 -1
- package/dist/contrib/tsm_system_time.js.map +1 -1
- package/dist/contrib/unaccent.cjs +1 -1
- package/dist/contrib/unaccent.cjs.map +1 -1
- package/dist/contrib/unaccent.d.cts +10 -0
- package/dist/contrib/unaccent.d.ts +10 -0
- package/dist/contrib/unaccent.js +1 -1
- package/dist/contrib/unaccent.js.map +1 -1
- package/dist/contrib/uuid_ossp.cjs +1 -1
- package/dist/contrib/uuid_ossp.cjs.map +1 -1
- package/dist/contrib/uuid_ossp.d.cts +10 -0
- package/dist/contrib/uuid_ossp.d.ts +10 -0
- package/dist/contrib/uuid_ossp.js +1 -1
- package/dist/contrib/uuid_ossp.js.map +1 -1
- package/dist/cube.tar.gz +0 -0
- package/dist/dblink.tar.gz +0 -0
- package/dist/dict_int.tar.gz +0 -0
- package/dist/dict_xsyn.tar.gz +0 -0
- package/dist/earthdistance.tar.gz +0 -0
- package/dist/file_fdw.tar.gz +0 -0
- package/dist/fs/base.cjs +1 -1
- package/dist/fs/base.cjs.map +1 -1
- package/dist/fs/base.d.cts +1 -0
- package/dist/fs/base.d.ts +1 -0
- package/dist/fs/base.js +1 -1
- package/dist/fs/nodefs.cjs +1 -1
- package/dist/fs/nodefs.cjs.map +1 -1
- package/dist/fs/nodefs.d.cts +12 -0
- package/dist/fs/nodefs.d.ts +12 -0
- package/dist/fs/nodefs.js +1 -1
- package/dist/fs/opfs-ahp.cjs +3 -3
- package/dist/fs/opfs-ahp.cjs.map +1 -1
- package/dist/fs/opfs-ahp.d.cts +112 -0
- package/dist/fs/opfs-ahp.d.ts +112 -0
- package/dist/fs/opfs-ahp.js +1 -1
- package/dist/fuzzystrmatch.tar.gz +0 -0
- package/dist/hstore.tar.gz +0 -0
- package/dist/index.cjs +7 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +416 -0
- package/dist/index.d.ts +416 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/intagg.tar.gz +0 -0
- package/dist/intarray.tar.gz +0 -0
- package/dist/isn.tar.gz +0 -0
- package/dist/live/index.cjs +5 -5
- package/dist/live/index.cjs.map +1 -1
- package/dist/live/index.d.cts +149 -0
- package/dist/live/index.d.ts +149 -0
- package/dist/live/index.js +1 -1
- package/dist/live/index.js.map +1 -1
- package/dist/lo.tar.gz +0 -0
- package/dist/ltree.tar.gz +0 -0
- package/dist/oid2name.tar.gz +0 -0
- package/dist/pageinspect.tar.gz +0 -0
- package/dist/passwordcheck.tar.gz +0 -0
- package/dist/pg_buffercache.tar.gz +0 -0
- package/dist/pg_freespacemap.tar.gz +0 -0
- package/dist/pg_hashids/index.cjs +1 -1
- package/dist/pg_hashids/index.cjs.map +1 -1
- package/dist/pg_hashids/index.d.cts +11 -0
- package/dist/pg_hashids/index.d.ts +11 -0
- package/dist/pg_hashids/index.js +1 -1
- package/dist/pg_hashids/index.js.map +1 -1
- package/dist/pg_hashids.tar.gz +0 -0
- package/dist/pg_ivm/index.cjs +1 -1
- package/dist/pg_ivm/index.cjs.map +1 -1
- package/dist/pg_ivm/index.d.cts +11 -0
- package/dist/pg_ivm/index.d.ts +11 -0
- package/dist/pg_ivm/index.js +1 -1
- package/dist/pg_ivm/index.js.map +1 -1
- package/dist/pg_ivm.tar.gz +0 -0
- package/dist/pg_prewarm.tar.gz +0 -0
- package/dist/pg_stat_statements.tar.gz +0 -0
- package/dist/pg_surgery.tar.gz +0 -0
- package/dist/pg_textsearch.tar.gz +0 -0
- package/dist/pg_trgm.tar.gz +0 -0
- package/dist/pg_uuidv7/index.cjs +1 -1
- package/dist/pg_uuidv7/index.cjs.map +1 -1
- package/dist/pg_uuidv7/index.d.cts +11 -0
- package/dist/pg_uuidv7/index.d.ts +11 -0
- package/dist/pg_uuidv7/index.js +1 -1
- package/dist/pg_uuidv7/index.js.map +1 -1
- package/dist/pg_uuidv7.tar.gz +0 -0
- package/dist/pg_visibility.tar.gz +0 -0
- package/dist/pg_walinspect.tar.gz +0 -0
- package/dist/pgcrypto.tar.gz +0 -0
- package/dist/pglite-RfkRSGmH.d.cts +1507 -0
- package/dist/pglite-RfkRSGmH.d.ts +1507 -0
- package/dist/pglite.cjs +3 -3
- package/dist/pglite.data +0 -0
- package/dist/pglite.html +1 -0
- package/dist/pglite.js +16 -0
- package/dist/pglite.wasm +0 -0
- package/dist/pgrowlocks.tar.gz +0 -0
- package/dist/pgstattuple.tar.gz +0 -0
- package/dist/pgtap/index.cjs +1 -1
- package/dist/pgtap/index.cjs.map +1 -1
- package/dist/pgtap/index.d.cts +11 -0
- package/dist/pgtap/index.d.ts +11 -0
- package/dist/pgtap/index.js +1 -1
- package/dist/pgtap/index.js.map +1 -1
- package/dist/pgtap.tar.gz +0 -0
- package/dist/postgres_fdw.tar.gz +0 -0
- package/dist/seg.tar.gz +0 -0
- package/dist/spi.tar.gz +0 -0
- package/dist/tablefunc.tar.gz +0 -0
- package/dist/tcn.tar.gz +0 -0
- package/dist/templating.d.cts +69 -0
- package/dist/templating.d.ts +69 -0
- package/dist/test_decoding.tar.gz +0 -0
- package/dist/tsm_system_rows.tar.gz +0 -0
- package/dist/tsm_system_time.tar.gz +0 -0
- package/dist/unaccent.tar.gz +0 -0
- package/dist/uuid-ossp.tar.gz +0 -0
- package/dist/vacuumlo.tar.gz +0 -0
- package/dist/vector/index.cjs +1 -1
- package/dist/vector/index.cjs.map +1 -1
- package/dist/vector/index.d.cts +11 -0
- package/dist/vector/index.d.ts +11 -0
- package/dist/vector/index.js +1 -1
- package/dist/vector/index.js.map +1 -1
- package/dist/vector.tar.gz +0 -0
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.d.cts +115 -0
- package/dist/worker/index.d.ts +115 -0
- package/dist/worker/index.js +1 -1
- package/dist/worker/index.js.map +1 -1
- package/dist/xml2.tar.gz +0 -0
- package/package.json +1 -1
- package/dist/chunk-FY2WAP66.js.map +0 -1
- package/dist/chunk-NS5M47NH.js.map +0 -1
- package/dist/chunk-XGK36GMM.js.map +0 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { C as BaseFilesystem, b as PGlite, c as PostgresMod, G as FsStats } from '../pglite-RfkRSGmH.cjs';
|
|
2
|
+
|
|
3
|
+
interface OpfsAhpOptions {
|
|
4
|
+
initialPoolSize?: number;
|
|
5
|
+
maintainedPoolSize?: number;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface FileSystemSyncAccessHandle {
|
|
9
|
+
close(): void;
|
|
10
|
+
flush(): void;
|
|
11
|
+
getSize(): number;
|
|
12
|
+
read(buffer: ArrayBuffer, options: {
|
|
13
|
+
at: number;
|
|
14
|
+
}): number;
|
|
15
|
+
truncate(newSize: number): void;
|
|
16
|
+
write(buffer: ArrayBuffer, options: {
|
|
17
|
+
at: number;
|
|
18
|
+
}): number;
|
|
19
|
+
}
|
|
20
|
+
interface State {
|
|
21
|
+
root: DirectoryNode;
|
|
22
|
+
pool: PoolFilenames;
|
|
23
|
+
}
|
|
24
|
+
type PoolFilenames = Array<string>;
|
|
25
|
+
interface WALEntry {
|
|
26
|
+
opp: string;
|
|
27
|
+
args: any[];
|
|
28
|
+
}
|
|
29
|
+
type NodeType = 'file' | 'directory';
|
|
30
|
+
interface BaseNode {
|
|
31
|
+
type: NodeType;
|
|
32
|
+
lastModified: number;
|
|
33
|
+
mode: number;
|
|
34
|
+
}
|
|
35
|
+
interface FileNode extends BaseNode {
|
|
36
|
+
type: 'file';
|
|
37
|
+
backingFilename: string;
|
|
38
|
+
}
|
|
39
|
+
interface DirectoryNode extends BaseNode {
|
|
40
|
+
type: 'directory';
|
|
41
|
+
children: {
|
|
42
|
+
[filename: string]: Node;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
type Node = FileNode | DirectoryNode;
|
|
46
|
+
/**
|
|
47
|
+
* PGlite OPFS access handle pool filesystem.
|
|
48
|
+
* Opens a pool of sync access handles and then allocates them as needed.
|
|
49
|
+
*/
|
|
50
|
+
declare class OpfsAhpFS extends BaseFilesystem {
|
|
51
|
+
#private;
|
|
52
|
+
readonly dataDir: string;
|
|
53
|
+
readonly initialPoolSize: number;
|
|
54
|
+
readonly maintainedPoolSize: number;
|
|
55
|
+
state: State;
|
|
56
|
+
lastCheckpoint: number;
|
|
57
|
+
checkpointInterval: number;
|
|
58
|
+
poolCounter: number;
|
|
59
|
+
constructor(dataDir: string, { initialPoolSize, maintainedPoolSize, debug, }?: OpfsAhpOptions);
|
|
60
|
+
init(pg: PGlite, opts: Partial<PostgresMod>): Promise<{
|
|
61
|
+
emscriptenOpts: Partial<PostgresMod>;
|
|
62
|
+
}>;
|
|
63
|
+
syncToFs(relaxedDurability?: boolean): Promise<void>;
|
|
64
|
+
closeFs(): Promise<void>;
|
|
65
|
+
maintainPool(size?: number): Promise<void>;
|
|
66
|
+
_createPoolFileState(filename: string): void;
|
|
67
|
+
_deletePoolFileState(filename: string): void;
|
|
68
|
+
maybeCheckpointState(): Promise<void>;
|
|
69
|
+
checkpointState(): Promise<void>;
|
|
70
|
+
flush(): void;
|
|
71
|
+
chmod(path: string, mode: number): void;
|
|
72
|
+
_chmodState(path: string, mode: number): void;
|
|
73
|
+
close(fd: number): void;
|
|
74
|
+
fstat(fd: number): FsStats;
|
|
75
|
+
lstat(path: string): FsStats;
|
|
76
|
+
mkdir(path: string, options?: {
|
|
77
|
+
recursive?: boolean;
|
|
78
|
+
mode?: number;
|
|
79
|
+
}): void;
|
|
80
|
+
_mkdirState(path: string, options?: {
|
|
81
|
+
recursive?: boolean;
|
|
82
|
+
mode?: number;
|
|
83
|
+
}): void;
|
|
84
|
+
open(path: string, _flags?: string, _mode?: number): number;
|
|
85
|
+
readdir(path: string): string[];
|
|
86
|
+
read(fd: number, buffer: Uint8Array, // Buffer to read into
|
|
87
|
+
offset: number, // Offset in buffer to start writing to
|
|
88
|
+
length: number, // Number of bytes to read
|
|
89
|
+
position: number): number;
|
|
90
|
+
rename(oldPath: string, newPath: string): void;
|
|
91
|
+
_renameState(oldPath: string, newPath: string, doFileOps?: boolean): void;
|
|
92
|
+
rmdir(path: string): void;
|
|
93
|
+
_rmdirState(path: string): void;
|
|
94
|
+
truncate(path: string, len?: number): void;
|
|
95
|
+
unlink(path: string): void;
|
|
96
|
+
_unlinkState(path: string, doFileOps?: boolean): void;
|
|
97
|
+
utimes(path: string, atime: number, mtime: number): void;
|
|
98
|
+
_utimesState(path: string, _atime: number, mtime: number): void;
|
|
99
|
+
writeFile(path: string, data: string | Uint8Array, options?: {
|
|
100
|
+
encoding?: string;
|
|
101
|
+
mode?: number;
|
|
102
|
+
flag?: string;
|
|
103
|
+
}): void;
|
|
104
|
+
_createFileNodeState(path: string, node: FileNode): FileNode;
|
|
105
|
+
_setLastModifiedState(path: string, lastModified: number): void;
|
|
106
|
+
write(fd: number, buffer: Uint8Array, // Buffer to read from
|
|
107
|
+
offset: number, // Offset in buffer to start reading from
|
|
108
|
+
length: number, // Number of bytes to write
|
|
109
|
+
position: number): number;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { type DirectoryNode, type FileNode, type FileSystemSyncAccessHandle, type Node, type NodeType, OpfsAhpFS, type OpfsAhpOptions, type PoolFilenames, type State, type WALEntry };
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { C as BaseFilesystem, b as PGlite, c as PostgresMod, G as FsStats } from '../pglite-RfkRSGmH.js';
|
|
2
|
+
|
|
3
|
+
interface OpfsAhpOptions {
|
|
4
|
+
initialPoolSize?: number;
|
|
5
|
+
maintainedPoolSize?: number;
|
|
6
|
+
debug?: boolean;
|
|
7
|
+
}
|
|
8
|
+
interface FileSystemSyncAccessHandle {
|
|
9
|
+
close(): void;
|
|
10
|
+
flush(): void;
|
|
11
|
+
getSize(): number;
|
|
12
|
+
read(buffer: ArrayBuffer, options: {
|
|
13
|
+
at: number;
|
|
14
|
+
}): number;
|
|
15
|
+
truncate(newSize: number): void;
|
|
16
|
+
write(buffer: ArrayBuffer, options: {
|
|
17
|
+
at: number;
|
|
18
|
+
}): number;
|
|
19
|
+
}
|
|
20
|
+
interface State {
|
|
21
|
+
root: DirectoryNode;
|
|
22
|
+
pool: PoolFilenames;
|
|
23
|
+
}
|
|
24
|
+
type PoolFilenames = Array<string>;
|
|
25
|
+
interface WALEntry {
|
|
26
|
+
opp: string;
|
|
27
|
+
args: any[];
|
|
28
|
+
}
|
|
29
|
+
type NodeType = 'file' | 'directory';
|
|
30
|
+
interface BaseNode {
|
|
31
|
+
type: NodeType;
|
|
32
|
+
lastModified: number;
|
|
33
|
+
mode: number;
|
|
34
|
+
}
|
|
35
|
+
interface FileNode extends BaseNode {
|
|
36
|
+
type: 'file';
|
|
37
|
+
backingFilename: string;
|
|
38
|
+
}
|
|
39
|
+
interface DirectoryNode extends BaseNode {
|
|
40
|
+
type: 'directory';
|
|
41
|
+
children: {
|
|
42
|
+
[filename: string]: Node;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
type Node = FileNode | DirectoryNode;
|
|
46
|
+
/**
|
|
47
|
+
* PGlite OPFS access handle pool filesystem.
|
|
48
|
+
* Opens a pool of sync access handles and then allocates them as needed.
|
|
49
|
+
*/
|
|
50
|
+
declare class OpfsAhpFS extends BaseFilesystem {
|
|
51
|
+
#private;
|
|
52
|
+
readonly dataDir: string;
|
|
53
|
+
readonly initialPoolSize: number;
|
|
54
|
+
readonly maintainedPoolSize: number;
|
|
55
|
+
state: State;
|
|
56
|
+
lastCheckpoint: number;
|
|
57
|
+
checkpointInterval: number;
|
|
58
|
+
poolCounter: number;
|
|
59
|
+
constructor(dataDir: string, { initialPoolSize, maintainedPoolSize, debug, }?: OpfsAhpOptions);
|
|
60
|
+
init(pg: PGlite, opts: Partial<PostgresMod>): Promise<{
|
|
61
|
+
emscriptenOpts: Partial<PostgresMod>;
|
|
62
|
+
}>;
|
|
63
|
+
syncToFs(relaxedDurability?: boolean): Promise<void>;
|
|
64
|
+
closeFs(): Promise<void>;
|
|
65
|
+
maintainPool(size?: number): Promise<void>;
|
|
66
|
+
_createPoolFileState(filename: string): void;
|
|
67
|
+
_deletePoolFileState(filename: string): void;
|
|
68
|
+
maybeCheckpointState(): Promise<void>;
|
|
69
|
+
checkpointState(): Promise<void>;
|
|
70
|
+
flush(): void;
|
|
71
|
+
chmod(path: string, mode: number): void;
|
|
72
|
+
_chmodState(path: string, mode: number): void;
|
|
73
|
+
close(fd: number): void;
|
|
74
|
+
fstat(fd: number): FsStats;
|
|
75
|
+
lstat(path: string): FsStats;
|
|
76
|
+
mkdir(path: string, options?: {
|
|
77
|
+
recursive?: boolean;
|
|
78
|
+
mode?: number;
|
|
79
|
+
}): void;
|
|
80
|
+
_mkdirState(path: string, options?: {
|
|
81
|
+
recursive?: boolean;
|
|
82
|
+
mode?: number;
|
|
83
|
+
}): void;
|
|
84
|
+
open(path: string, _flags?: string, _mode?: number): number;
|
|
85
|
+
readdir(path: string): string[];
|
|
86
|
+
read(fd: number, buffer: Uint8Array, // Buffer to read into
|
|
87
|
+
offset: number, // Offset in buffer to start writing to
|
|
88
|
+
length: number, // Number of bytes to read
|
|
89
|
+
position: number): number;
|
|
90
|
+
rename(oldPath: string, newPath: string): void;
|
|
91
|
+
_renameState(oldPath: string, newPath: string, doFileOps?: boolean): void;
|
|
92
|
+
rmdir(path: string): void;
|
|
93
|
+
_rmdirState(path: string): void;
|
|
94
|
+
truncate(path: string, len?: number): void;
|
|
95
|
+
unlink(path: string): void;
|
|
96
|
+
_unlinkState(path: string, doFileOps?: boolean): void;
|
|
97
|
+
utimes(path: string, atime: number, mtime: number): void;
|
|
98
|
+
_utimesState(path: string, _atime: number, mtime: number): void;
|
|
99
|
+
writeFile(path: string, data: string | Uint8Array, options?: {
|
|
100
|
+
encoding?: string;
|
|
101
|
+
mode?: number;
|
|
102
|
+
flag?: string;
|
|
103
|
+
}): void;
|
|
104
|
+
_createFileNodeState(path: string, node: FileNode): FileNode;
|
|
105
|
+
_setLastModifiedState(path: string, lastModified: number): void;
|
|
106
|
+
write(fd: number, buffer: Uint8Array, // Buffer to read from
|
|
107
|
+
offset: number, // Offset in buffer to start reading from
|
|
108
|
+
length: number, // Number of bytes to write
|
|
109
|
+
position: number): number;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export { type DirectoryNode, type FileNode, type FileSystemSyncAccessHandle, type Node, type NodeType, OpfsAhpFS, type OpfsAhpOptions, type PoolFilenames, type State, type WALEntry };
|
package/dist/fs/opfs-ahp.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{f as R,g as z}from"../chunk-
|
|
1
|
+
import{f as R,g as z}from"../chunk-J77SUHST.js";import{e as s,f as g,g as O,h as n,i as _,j}from"../chunk-VCBR6USK.js";j();var $="state.txt",G="data",T={DIR:16384,FILE:32768},H,k,F,M,p,S,m,x,P,D,b,o,C,A,E,w,y,I,W,B,L=class extends R{constructor(e,{initialPoolSize:t=1e3,maintainedPoolSize:r=100,debug:i=!1}={}){super(e,{debug:i});g(this,o);g(this,H);g(this,k);g(this,F);g(this,M);g(this,p);g(this,S,new Map);g(this,m,new Map);g(this,x,0);g(this,P,new Map);g(this,D,new Map);this.lastCheckpoint=0;this.checkpointInterval=1e3*60;this.poolCounter=0;g(this,b,new Set);this.initialPoolSize=t,this.maintainedPoolSize=r}async init(e,t){return await n(this,o,C).call(this),super.init(e,t)}async syncToFs(e=!1){await this.maybeCheckpointState(),await this.maintainPool(),e||this.flush()}async closeFs(){for(let e of s(this,m).values())e.close();s(this,p).flush(),s(this,p).close(),this.pg.Module.FS.quit()}async maintainPool(e){e=e||this.maintainedPoolSize;let t=e-this.state.pool.length,r=[];for(let i=0;i<t;i++)r.push(new Promise(async c=>{++this.poolCounter;let a=`${(Date.now()-1704063600).toString(16).padStart(8,"0")}-${this.poolCounter.toString(16).padStart(8,"0")}`,h=await s(this,F).getFileHandle(a,{create:!0}),d=await h.createSyncAccessHandle();s(this,S).set(a,h),s(this,m).set(a,d),n(this,o,E).call(this,{opp:"createPoolFile",args:[a]}),this.state.pool.push(a),c()}));for(let i=0;i>t;i--)r.push(new Promise(async c=>{let a=this.state.pool.pop();n(this,o,E).call(this,{opp:"deletePoolFile",args:[a]});let h=s(this,S).get(a);s(this,m).get(a)?.close(),await s(this,F).removeEntry(h.name),s(this,S).delete(a),s(this,m).delete(a),c()}));await Promise.all(r)}_createPoolFileState(e){this.state.pool.push(e)}_deletePoolFileState(e){let t=this.state.pool.indexOf(e);t>-1&&this.state.pool.splice(t,1)}async maybeCheckpointState(){Date.now()-this.lastCheckpoint>this.checkpointInterval&&await this.checkpointState()}async checkpointState(){let e=new TextEncoder().encode(JSON.stringify(this.state));s(this,p).truncate(0),s(this,p).write(e.buffer,{at:0}),s(this,p).flush(),this.lastCheckpoint=Date.now()}flush(){for(let e of s(this,b))try{e.flush()}catch{}s(this,b).clear()}chmod(e,t){n(this,o,A).call(this,{opp:"chmod",args:[e,t]},()=>{this._chmodState(e,t)})}_chmodState(e,t){let r=n(this,o,y).call(this,e);r.mode=t}close(e){let t=n(this,o,I).call(this,e);s(this,P).delete(e),s(this,D).delete(t)}fstat(e){let t=n(this,o,I).call(this,e);return this.lstat(t)}lstat(e){let t=n(this,o,y).call(this,e),r=t.type==="file"?s(this,m).get(t.backingFilename).getSize():0,i=4096;return{dev:0,ino:0,mode:t.mode,nlink:1,uid:0,gid:0,rdev:0,size:r,blksize:i,blocks:Math.ceil(r/i),atime:t.lastModified,mtime:t.lastModified,ctime:t.lastModified}}mkdir(e,t){n(this,o,A).call(this,{opp:"mkdir",args:[e,t]},()=>{this._mkdirState(e,t)})}_mkdirState(e,t){let r=n(this,o,w).call(this,e),i=r.pop(),c=[],a=this.state.root;for(let d of r){if(c.push(e),!Object.prototype.hasOwnProperty.call(a.children,d))if(t?.recursive)this.mkdir(c.join("/"));else throw new f("ENOENT","No such file or directory");if(a.children[d].type!=="directory")throw new f("ENOTDIR","Not a directory");a=a.children[d]}if(Object.prototype.hasOwnProperty.call(a.children,i))throw new f("EEXIST","File exists");let h={type:"directory",lastModified:Date.now(),mode:t?.mode||T.DIR,children:{}};a.children[i]=h}open(e,t,r){if(n(this,o,y).call(this,e).type!=="file")throw new f("EISDIR","Is a directory");let c=n(this,o,W).call(this);return s(this,P).set(c,e),s(this,D).set(e,c),c}readdir(e){let t=n(this,o,y).call(this,e);if(t.type!=="directory")throw new f("ENOTDIR","Not a directory");return Object.keys(t.children)}read(e,t,r,i,c){let a=n(this,o,I).call(this,e),h=n(this,o,y).call(this,a);if(h.type!=="file")throw new f("EISDIR","Is a directory");return s(this,m).get(h.backingFilename).read(new Uint8Array(t.buffer,r,i).buffer,{at:c})}rename(e,t){n(this,o,A).call(this,{opp:"rename",args:[e,t]},()=>{this._renameState(e,t,!0)})}_renameState(e,t,r=!1){let i=n(this,o,w).call(this,e),c=i.pop(),a=n(this,o,y).call(this,i.join("/"));if(!Object.prototype.hasOwnProperty.call(a.children,c))throw new f("ENOENT","No such file or directory");let h=n(this,o,w).call(this,t),d=h.pop(),l=n(this,o,y).call(this,h.join("/"));if(r&&Object.prototype.hasOwnProperty.call(l.children,d)){let u=l.children[d];s(this,m).get(u.backingFilename).truncate(0),this.state.pool.push(u.backingFilename)}l.children[d]=a.children[c],delete a.children[c]}rmdir(e){n(this,o,A).call(this,{opp:"rmdir",args:[e]},()=>{this._rmdirState(e)})}_rmdirState(e){let t=n(this,o,w).call(this,e),r=t.pop(),i=n(this,o,y).call(this,t.join("/"));if(!Object.prototype.hasOwnProperty.call(i.children,r))throw new f("ENOENT","No such file or directory");let c=i.children[r];if(c.type!=="directory")throw new f("ENOTDIR","Not a directory");if(Object.keys(c.children).length>0)throw new f("ENOTEMPTY","Directory not empty");delete i.children[r]}truncate(e,t=0){let r=n(this,o,y).call(this,e);if(r.type!=="file")throw new f("EISDIR","Is a directory");let i=s(this,m).get(r.backingFilename);if(!i)throw new f("ENOENT","No such file or directory");i.truncate(t),s(this,b).add(i)}unlink(e){n(this,o,A).call(this,{opp:"unlink",args:[e]},()=>{this._unlinkState(e,!0)})}_unlinkState(e,t=!1){let r=n(this,o,w).call(this,e),i=r.pop(),c=n(this,o,y).call(this,r.join("/"));if(!Object.prototype.hasOwnProperty.call(c.children,i))throw new f("ENOENT","No such file or directory");let a=c.children[i];if(a.type!=="file")throw new f("EISDIR","Is a directory");if(delete c.children[i],t){let h=s(this,m).get(a.backingFilename);h?.truncate(0),s(this,b).add(h),s(this,D).has(e)&&(s(this,P).delete(s(this,D).get(e)),s(this,D).delete(e))}this.state.pool.push(a.backingFilename)}utimes(e,t,r){n(this,o,A).call(this,{opp:"utimes",args:[e,t,r]},()=>{this._utimesState(e,t,r)})}_utimesState(e,t,r){let i=n(this,o,y).call(this,e);i.lastModified=r}writeFile(e,t,r){let i=n(this,o,w).call(this,e),c=i.pop(),a=n(this,o,y).call(this,i.join("/"));if(Object.prototype.hasOwnProperty.call(a.children,c)){let l=a.children[c];l.lastModified=Date.now(),n(this,o,E).call(this,{opp:"setLastModified",args:[e,l.lastModified]})}else{if(this.state.pool.length===0)throw new Error("No more file handles available in the pool");let l={type:"file",lastModified:Date.now(),mode:r?.mode||T.FILE,backingFilename:this.state.pool.pop()};a.children[c]=l,n(this,o,E).call(this,{opp:"createFileNode",args:[e,l]})}let h=a.children[c],d=s(this,m).get(h.backingFilename);t.length>0&&(d.write((typeof t=="string"?new TextEncoder().encode(t):new Uint8Array(t)).buffer,{at:0}),e.startsWith("/pg_wal")&&s(this,b).add(d))}_createFileNodeState(e,t){let r=n(this,o,w).call(this,e),i=r.pop(),c=n(this,o,y).call(this,r.join("/"));c.children[i]=t;let a=this.state.pool.indexOf(t.backingFilename);return a>-1&&this.state.pool.splice(a,1),t}_setLastModifiedState(e,t){let r=n(this,o,y).call(this,e);r.lastModified=t}write(e,t,r,i,c){let a=n(this,o,I).call(this,e),h=n(this,o,y).call(this,a);if(h.type!=="file")throw new f("EISDIR","Is a directory");let d=s(this,m).get(h.backingFilename);if(!d)throw new f("EBADF","Bad file descriptor");let l=d.write(new Uint8Array(t.buffer,r,i).buffer,{at:c});return a.startsWith("/pg_wal")&&s(this,b).add(d),l}};H=new WeakMap,k=new WeakMap,F=new WeakMap,M=new WeakMap,p=new WeakMap,S=new WeakMap,m=new WeakMap,x=new WeakMap,P=new WeakMap,D=new WeakMap,b=new WeakMap,o=new WeakSet,C=async function(){O(this,H,await navigator.storage.getDirectory()),O(this,k,await n(this,o,B).call(this,this.dataDir,{create:!0})),O(this,F,await n(this,o,B).call(this,G,{from:s(this,k),create:!0})),O(this,M,await s(this,k).getFileHandle($,{create:!0})),O(this,p,await s(this,M).createSyncAccessHandle());let e=new ArrayBuffer(s(this,p).getSize());s(this,p).read(e,{at:0});let t,r=new TextDecoder().decode(e).split(`
|
|
2
2
|
`),i=!1;try{t=JSON.parse(r[0])}catch{t={root:{type:"directory",lastModified:Date.now(),mode:T.DIR,children:{}},pool:[]},s(this,p).truncate(0),s(this,p).write(new TextEncoder().encode(JSON.stringify(t)).buffer,{at:0}),i=!0}this.state=t;let c=r.slice(1).filter(Boolean).map(l=>JSON.parse(l));for(let l of c){let u=`_${l.opp}State`;if(typeof this[u]=="function")try{this[u].bind(this)(...l.args)}catch(N){console.warn("Error applying OPFS AHP WAL entry",l,N)}}let a=[],h=async l=>{if(l.type==="file")try{let u=await s(this,F).getFileHandle(l.backingFilename),N=await u.createSyncAccessHandle();s(this,S).set(l.backingFilename,u),s(this,m).set(l.backingFilename,N)}catch(u){console.error("Error opening file handle for node",l,u)}else for(let u of Object.values(l.children))a.push(h(u))};await h(this.state.root);let d=[];for(let l of this.state.pool)d.push(new Promise(async u=>{s(this,S).has(l)&&console.warn("File handle already exists for pool file",l);let N=await s(this,F).getFileHandle(l),U=await N.createSyncAccessHandle();s(this,S).set(l,N),s(this,m).set(l,U),u()}));await Promise.all([...a,...d]),await this.maintainPool(i?this.initialPoolSize:this.maintainedPoolSize)},A=function(e,t){let r=n(this,o,E).call(this,e);try{t()}catch(i){throw s(this,p).truncate(r),i}},E=function(e){let t=JSON.stringify(e),r=new TextEncoder().encode(`
|
|
3
3
|
${t}`),i=s(this,p).getSize();return s(this,p).write(r.buffer,{at:i}),s(this,b).add(s(this,p)),i},w=function(e){return e.split("/").filter(Boolean)},y=function(e,t){let r=n(this,o,w).call(this,e),i=t||this.state.root;for(let c of r){if(i.type!=="directory")throw new f("ENOTDIR","Not a directory");if(!Object.prototype.hasOwnProperty.call(i.children,c))throw new f("ENOENT","No such file or directory");i=i.children[c]}return i},I=function(e){let t=s(this,P).get(e);if(!t)throw new f("EBADF","Bad file descriptor");return t},W=function(){let e=++_(this,x)._;for(;s(this,P).has(e);)_(this,x)._++;return e},B=async function(e,t){let r=n(this,o,w).call(this,e),i=t?.from||s(this,H);for(let c of r)i=await i.getDirectoryHandle(c,{create:t?.create});return i};var f=class extends Error{constructor(v,e){super(e),typeof v=="number"?this.code=v:typeof v=="string"&&(this.code=z[v])}};export{L as OpfsAhpFS};
|
|
4
4
|
//# sourceMappingURL=opfs-ahp.js.map
|
|
Binary file
|
|
Binary file
|