@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.
Files changed (327) hide show
  1. package/dist/amcheck.tar.gz +0 -0
  2. package/dist/auth_delay.tar.gz +0 -0
  3. package/dist/auto_explain.tar.gz +0 -0
  4. package/dist/basebackup_to_shell.tar.gz +0 -0
  5. package/dist/basic_archive.tar.gz +0 -0
  6. package/dist/bloom.tar.gz +0 -0
  7. package/dist/btree_gin.tar.gz +0 -0
  8. package/dist/btree_gist.tar.gz +0 -0
  9. package/dist/{chunk-FY2WAP66.js → chunk-5U7S5PTI.js} +2 -2
  10. package/dist/chunk-5U7S5PTI.js.map +1 -0
  11. package/dist/{chunk-NS5M47NH.js → chunk-I55HERVV.js} +3 -3
  12. package/dist/chunk-I55HERVV.js.map +1 -0
  13. package/dist/{chunk-XGK36GMM.js → chunk-J77SUHST.js} +2 -2
  14. package/dist/chunk-J77SUHST.js.map +1 -0
  15. package/dist/citext.tar.gz +0 -0
  16. package/dist/contrib/amcheck.cjs +1 -1
  17. package/dist/contrib/amcheck.cjs.map +1 -1
  18. package/dist/contrib/amcheck.d.cts +10 -0
  19. package/dist/contrib/amcheck.d.ts +10 -0
  20. package/dist/contrib/amcheck.js +1 -1
  21. package/dist/contrib/amcheck.js.map +1 -1
  22. package/dist/contrib/auto_explain.cjs +1 -1
  23. package/dist/contrib/auto_explain.cjs.map +1 -1
  24. package/dist/contrib/auto_explain.d.cts +10 -0
  25. package/dist/contrib/auto_explain.d.ts +10 -0
  26. package/dist/contrib/auto_explain.js +1 -1
  27. package/dist/contrib/auto_explain.js.map +1 -1
  28. package/dist/contrib/bloom.cjs +1 -1
  29. package/dist/contrib/bloom.cjs.map +1 -1
  30. package/dist/contrib/bloom.d.cts +10 -0
  31. package/dist/contrib/bloom.d.ts +10 -0
  32. package/dist/contrib/bloom.js +1 -1
  33. package/dist/contrib/bloom.js.map +1 -1
  34. package/dist/contrib/btree_gin.cjs +1 -1
  35. package/dist/contrib/btree_gin.cjs.map +1 -1
  36. package/dist/contrib/btree_gin.d.cts +10 -0
  37. package/dist/contrib/btree_gin.d.ts +10 -0
  38. package/dist/contrib/btree_gin.js +1 -1
  39. package/dist/contrib/btree_gin.js.map +1 -1
  40. package/dist/contrib/btree_gist.cjs +1 -1
  41. package/dist/contrib/btree_gist.cjs.map +1 -1
  42. package/dist/contrib/btree_gist.d.cts +10 -0
  43. package/dist/contrib/btree_gist.d.ts +10 -0
  44. package/dist/contrib/btree_gist.js +1 -1
  45. package/dist/contrib/btree_gist.js.map +1 -1
  46. package/dist/contrib/citext.cjs +1 -1
  47. package/dist/contrib/citext.cjs.map +1 -1
  48. package/dist/contrib/citext.d.cts +10 -0
  49. package/dist/contrib/citext.d.ts +10 -0
  50. package/dist/contrib/citext.js +1 -1
  51. package/dist/contrib/citext.js.map +1 -1
  52. package/dist/contrib/cube.cjs +1 -1
  53. package/dist/contrib/cube.cjs.map +1 -1
  54. package/dist/contrib/cube.d.cts +10 -0
  55. package/dist/contrib/cube.d.ts +10 -0
  56. package/dist/contrib/cube.js +1 -1
  57. package/dist/contrib/cube.js.map +1 -1
  58. package/dist/contrib/dict_int.cjs +1 -1
  59. package/dist/contrib/dict_int.cjs.map +1 -1
  60. package/dist/contrib/dict_int.d.cts +10 -0
  61. package/dist/contrib/dict_int.d.ts +10 -0
  62. package/dist/contrib/dict_int.js +1 -1
  63. package/dist/contrib/dict_int.js.map +1 -1
  64. package/dist/contrib/dict_xsyn.cjs +1 -1
  65. package/dist/contrib/dict_xsyn.cjs.map +1 -1
  66. package/dist/contrib/dict_xsyn.d.cts +10 -0
  67. package/dist/contrib/dict_xsyn.d.ts +10 -0
  68. package/dist/contrib/dict_xsyn.js +1 -1
  69. package/dist/contrib/dict_xsyn.js.map +1 -1
  70. package/dist/contrib/earthdistance.cjs +1 -1
  71. package/dist/contrib/earthdistance.cjs.map +1 -1
  72. package/dist/contrib/earthdistance.d.cts +10 -0
  73. package/dist/contrib/earthdistance.d.ts +10 -0
  74. package/dist/contrib/earthdistance.js +1 -1
  75. package/dist/contrib/earthdistance.js.map +1 -1
  76. package/dist/contrib/file_fdw.cjs +1 -1
  77. package/dist/contrib/file_fdw.cjs.map +1 -1
  78. package/dist/contrib/file_fdw.d.cts +10 -0
  79. package/dist/contrib/file_fdw.d.ts +10 -0
  80. package/dist/contrib/file_fdw.js +1 -1
  81. package/dist/contrib/file_fdw.js.map +1 -1
  82. package/dist/contrib/fuzzystrmatch.cjs +1 -1
  83. package/dist/contrib/fuzzystrmatch.cjs.map +1 -1
  84. package/dist/contrib/fuzzystrmatch.d.cts +10 -0
  85. package/dist/contrib/fuzzystrmatch.d.ts +10 -0
  86. package/dist/contrib/fuzzystrmatch.js +1 -1
  87. package/dist/contrib/fuzzystrmatch.js.map +1 -1
  88. package/dist/contrib/hstore.cjs +1 -1
  89. package/dist/contrib/hstore.cjs.map +1 -1
  90. package/dist/contrib/hstore.d.cts +10 -0
  91. package/dist/contrib/hstore.d.ts +10 -0
  92. package/dist/contrib/hstore.js +1 -1
  93. package/dist/contrib/hstore.js.map +1 -1
  94. package/dist/contrib/intarray.cjs +1 -1
  95. package/dist/contrib/intarray.cjs.map +1 -1
  96. package/dist/contrib/intarray.d.cts +10 -0
  97. package/dist/contrib/intarray.d.ts +10 -0
  98. package/dist/contrib/intarray.js +1 -1
  99. package/dist/contrib/intarray.js.map +1 -1
  100. package/dist/contrib/isn.cjs +1 -1
  101. package/dist/contrib/isn.cjs.map +1 -1
  102. package/dist/contrib/isn.d.cts +10 -0
  103. package/dist/contrib/isn.d.ts +10 -0
  104. package/dist/contrib/isn.js +1 -1
  105. package/dist/contrib/isn.js.map +1 -1
  106. package/dist/contrib/lo.cjs +1 -1
  107. package/dist/contrib/lo.cjs.map +1 -1
  108. package/dist/contrib/lo.d.cts +10 -0
  109. package/dist/contrib/lo.d.ts +10 -0
  110. package/dist/contrib/lo.js +1 -1
  111. package/dist/contrib/lo.js.map +1 -1
  112. package/dist/contrib/ltree.cjs +1 -1
  113. package/dist/contrib/ltree.cjs.map +1 -1
  114. package/dist/contrib/ltree.d.cts +10 -0
  115. package/dist/contrib/ltree.d.ts +10 -0
  116. package/dist/contrib/ltree.js +1 -1
  117. package/dist/contrib/ltree.js.map +1 -1
  118. package/dist/contrib/pageinspect.cjs +1 -1
  119. package/dist/contrib/pageinspect.cjs.map +1 -1
  120. package/dist/contrib/pageinspect.d.cts +10 -0
  121. package/dist/contrib/pageinspect.d.ts +10 -0
  122. package/dist/contrib/pageinspect.js +1 -1
  123. package/dist/contrib/pageinspect.js.map +1 -1
  124. package/dist/contrib/pg_buffercache.cjs +1 -1
  125. package/dist/contrib/pg_buffercache.cjs.map +1 -1
  126. package/dist/contrib/pg_buffercache.d.cts +10 -0
  127. package/dist/contrib/pg_buffercache.d.ts +10 -0
  128. package/dist/contrib/pg_buffercache.js +1 -1
  129. package/dist/contrib/pg_buffercache.js.map +1 -1
  130. package/dist/contrib/pg_freespacemap.cjs +1 -1
  131. package/dist/contrib/pg_freespacemap.cjs.map +1 -1
  132. package/dist/contrib/pg_freespacemap.d.cts +10 -0
  133. package/dist/contrib/pg_freespacemap.d.ts +10 -0
  134. package/dist/contrib/pg_freespacemap.js +1 -1
  135. package/dist/contrib/pg_freespacemap.js.map +1 -1
  136. package/dist/contrib/pg_surgery.cjs +1 -1
  137. package/dist/contrib/pg_surgery.cjs.map +1 -1
  138. package/dist/contrib/pg_surgery.d.cts +10 -0
  139. package/dist/contrib/pg_surgery.d.ts +10 -0
  140. package/dist/contrib/pg_surgery.js +1 -1
  141. package/dist/contrib/pg_surgery.js.map +1 -1
  142. package/dist/contrib/pg_trgm.cjs +1 -1
  143. package/dist/contrib/pg_trgm.cjs.map +1 -1
  144. package/dist/contrib/pg_trgm.d.cts +10 -0
  145. package/dist/contrib/pg_trgm.d.ts +10 -0
  146. package/dist/contrib/pg_trgm.js +1 -1
  147. package/dist/contrib/pg_trgm.js.map +1 -1
  148. package/dist/contrib/pg_visibility.cjs +1 -1
  149. package/dist/contrib/pg_visibility.cjs.map +1 -1
  150. package/dist/contrib/pg_visibility.d.cts +10 -0
  151. package/dist/contrib/pg_visibility.d.ts +10 -0
  152. package/dist/contrib/pg_visibility.js +1 -1
  153. package/dist/contrib/pg_visibility.js.map +1 -1
  154. package/dist/contrib/pg_walinspect.cjs +1 -1
  155. package/dist/contrib/pg_walinspect.cjs.map +1 -1
  156. package/dist/contrib/pg_walinspect.d.cts +10 -0
  157. package/dist/contrib/pg_walinspect.d.ts +10 -0
  158. package/dist/contrib/pg_walinspect.js +1 -1
  159. package/dist/contrib/pg_walinspect.js.map +1 -1
  160. package/dist/contrib/pgcrypto.cjs +1 -1
  161. package/dist/contrib/pgcrypto.cjs.map +1 -1
  162. package/dist/contrib/pgcrypto.d.cts +10 -0
  163. package/dist/contrib/pgcrypto.d.ts +10 -0
  164. package/dist/contrib/pgcrypto.js +1 -1
  165. package/dist/contrib/pgcrypto.js.map +1 -1
  166. package/dist/contrib/seg.cjs +1 -1
  167. package/dist/contrib/seg.cjs.map +1 -1
  168. package/dist/contrib/seg.d.cts +10 -0
  169. package/dist/contrib/seg.d.ts +10 -0
  170. package/dist/contrib/seg.js +1 -1
  171. package/dist/contrib/seg.js.map +1 -1
  172. package/dist/contrib/tablefunc.cjs +1 -1
  173. package/dist/contrib/tablefunc.cjs.map +1 -1
  174. package/dist/contrib/tablefunc.d.cts +10 -0
  175. package/dist/contrib/tablefunc.d.ts +10 -0
  176. package/dist/contrib/tablefunc.js +1 -1
  177. package/dist/contrib/tablefunc.js.map +1 -1
  178. package/dist/contrib/tcn.cjs +1 -1
  179. package/dist/contrib/tcn.cjs.map +1 -1
  180. package/dist/contrib/tcn.d.cts +10 -0
  181. package/dist/contrib/tcn.d.ts +10 -0
  182. package/dist/contrib/tcn.js +1 -1
  183. package/dist/contrib/tcn.js.map +1 -1
  184. package/dist/contrib/tsm_system_rows.cjs +1 -1
  185. package/dist/contrib/tsm_system_rows.cjs.map +1 -1
  186. package/dist/contrib/tsm_system_rows.d.cts +10 -0
  187. package/dist/contrib/tsm_system_rows.d.ts +10 -0
  188. package/dist/contrib/tsm_system_rows.js +1 -1
  189. package/dist/contrib/tsm_system_rows.js.map +1 -1
  190. package/dist/contrib/tsm_system_time.cjs +1 -1
  191. package/dist/contrib/tsm_system_time.cjs.map +1 -1
  192. package/dist/contrib/tsm_system_time.d.cts +10 -0
  193. package/dist/contrib/tsm_system_time.d.ts +10 -0
  194. package/dist/contrib/tsm_system_time.js +1 -1
  195. package/dist/contrib/tsm_system_time.js.map +1 -1
  196. package/dist/contrib/unaccent.cjs +1 -1
  197. package/dist/contrib/unaccent.cjs.map +1 -1
  198. package/dist/contrib/unaccent.d.cts +10 -0
  199. package/dist/contrib/unaccent.d.ts +10 -0
  200. package/dist/contrib/unaccent.js +1 -1
  201. package/dist/contrib/unaccent.js.map +1 -1
  202. package/dist/contrib/uuid_ossp.cjs +1 -1
  203. package/dist/contrib/uuid_ossp.cjs.map +1 -1
  204. package/dist/contrib/uuid_ossp.d.cts +10 -0
  205. package/dist/contrib/uuid_ossp.d.ts +10 -0
  206. package/dist/contrib/uuid_ossp.js +1 -1
  207. package/dist/contrib/uuid_ossp.js.map +1 -1
  208. package/dist/cube.tar.gz +0 -0
  209. package/dist/dblink.tar.gz +0 -0
  210. package/dist/dict_int.tar.gz +0 -0
  211. package/dist/dict_xsyn.tar.gz +0 -0
  212. package/dist/earthdistance.tar.gz +0 -0
  213. package/dist/file_fdw.tar.gz +0 -0
  214. package/dist/fs/base.cjs +1 -1
  215. package/dist/fs/base.cjs.map +1 -1
  216. package/dist/fs/base.d.cts +1 -0
  217. package/dist/fs/base.d.ts +1 -0
  218. package/dist/fs/base.js +1 -1
  219. package/dist/fs/nodefs.cjs +1 -1
  220. package/dist/fs/nodefs.cjs.map +1 -1
  221. package/dist/fs/nodefs.d.cts +12 -0
  222. package/dist/fs/nodefs.d.ts +12 -0
  223. package/dist/fs/nodefs.js +1 -1
  224. package/dist/fs/opfs-ahp.cjs +3 -3
  225. package/dist/fs/opfs-ahp.cjs.map +1 -1
  226. package/dist/fs/opfs-ahp.d.cts +112 -0
  227. package/dist/fs/opfs-ahp.d.ts +112 -0
  228. package/dist/fs/opfs-ahp.js +1 -1
  229. package/dist/fuzzystrmatch.tar.gz +0 -0
  230. package/dist/hstore.tar.gz +0 -0
  231. package/dist/index.cjs +7 -7
  232. package/dist/index.cjs.map +1 -1
  233. package/dist/index.d.cts +416 -0
  234. package/dist/index.d.ts +416 -0
  235. package/dist/index.js +4 -4
  236. package/dist/index.js.map +1 -1
  237. package/dist/intagg.tar.gz +0 -0
  238. package/dist/intarray.tar.gz +0 -0
  239. package/dist/isn.tar.gz +0 -0
  240. package/dist/live/index.cjs +5 -5
  241. package/dist/live/index.cjs.map +1 -1
  242. package/dist/live/index.d.cts +149 -0
  243. package/dist/live/index.d.ts +149 -0
  244. package/dist/live/index.js +1 -1
  245. package/dist/live/index.js.map +1 -1
  246. package/dist/lo.tar.gz +0 -0
  247. package/dist/ltree.tar.gz +0 -0
  248. package/dist/oid2name.tar.gz +0 -0
  249. package/dist/pageinspect.tar.gz +0 -0
  250. package/dist/passwordcheck.tar.gz +0 -0
  251. package/dist/pg_buffercache.tar.gz +0 -0
  252. package/dist/pg_freespacemap.tar.gz +0 -0
  253. package/dist/pg_hashids/index.cjs +1 -1
  254. package/dist/pg_hashids/index.cjs.map +1 -1
  255. package/dist/pg_hashids/index.d.cts +11 -0
  256. package/dist/pg_hashids/index.d.ts +11 -0
  257. package/dist/pg_hashids/index.js +1 -1
  258. package/dist/pg_hashids/index.js.map +1 -1
  259. package/dist/pg_hashids.tar.gz +0 -0
  260. package/dist/pg_ivm/index.cjs +1 -1
  261. package/dist/pg_ivm/index.cjs.map +1 -1
  262. package/dist/pg_ivm/index.d.cts +11 -0
  263. package/dist/pg_ivm/index.d.ts +11 -0
  264. package/dist/pg_ivm/index.js +1 -1
  265. package/dist/pg_ivm/index.js.map +1 -1
  266. package/dist/pg_ivm.tar.gz +0 -0
  267. package/dist/pg_prewarm.tar.gz +0 -0
  268. package/dist/pg_stat_statements.tar.gz +0 -0
  269. package/dist/pg_surgery.tar.gz +0 -0
  270. package/dist/pg_textsearch.tar.gz +0 -0
  271. package/dist/pg_trgm.tar.gz +0 -0
  272. package/dist/pg_uuidv7/index.cjs +1 -1
  273. package/dist/pg_uuidv7/index.cjs.map +1 -1
  274. package/dist/pg_uuidv7/index.d.cts +11 -0
  275. package/dist/pg_uuidv7/index.d.ts +11 -0
  276. package/dist/pg_uuidv7/index.js +1 -1
  277. package/dist/pg_uuidv7/index.js.map +1 -1
  278. package/dist/pg_uuidv7.tar.gz +0 -0
  279. package/dist/pg_visibility.tar.gz +0 -0
  280. package/dist/pg_walinspect.tar.gz +0 -0
  281. package/dist/pgcrypto.tar.gz +0 -0
  282. package/dist/pglite-RfkRSGmH.d.cts +1507 -0
  283. package/dist/pglite-RfkRSGmH.d.ts +1507 -0
  284. package/dist/pglite.cjs +3 -3
  285. package/dist/pglite.data +0 -0
  286. package/dist/pglite.html +1 -0
  287. package/dist/pglite.js +16 -0
  288. package/dist/pglite.wasm +0 -0
  289. package/dist/pgrowlocks.tar.gz +0 -0
  290. package/dist/pgstattuple.tar.gz +0 -0
  291. package/dist/pgtap/index.cjs +1 -1
  292. package/dist/pgtap/index.cjs.map +1 -1
  293. package/dist/pgtap/index.d.cts +11 -0
  294. package/dist/pgtap/index.d.ts +11 -0
  295. package/dist/pgtap/index.js +1 -1
  296. package/dist/pgtap/index.js.map +1 -1
  297. package/dist/pgtap.tar.gz +0 -0
  298. package/dist/postgres_fdw.tar.gz +0 -0
  299. package/dist/seg.tar.gz +0 -0
  300. package/dist/spi.tar.gz +0 -0
  301. package/dist/tablefunc.tar.gz +0 -0
  302. package/dist/tcn.tar.gz +0 -0
  303. package/dist/templating.d.cts +69 -0
  304. package/dist/templating.d.ts +69 -0
  305. package/dist/test_decoding.tar.gz +0 -0
  306. package/dist/tsm_system_rows.tar.gz +0 -0
  307. package/dist/tsm_system_time.tar.gz +0 -0
  308. package/dist/unaccent.tar.gz +0 -0
  309. package/dist/uuid-ossp.tar.gz +0 -0
  310. package/dist/vacuumlo.tar.gz +0 -0
  311. package/dist/vector/index.cjs +1 -1
  312. package/dist/vector/index.cjs.map +1 -1
  313. package/dist/vector/index.d.cts +11 -0
  314. package/dist/vector/index.d.ts +11 -0
  315. package/dist/vector/index.js +1 -1
  316. package/dist/vector/index.js.map +1 -1
  317. package/dist/vector.tar.gz +0 -0
  318. package/dist/worker/index.cjs.map +1 -1
  319. package/dist/worker/index.d.cts +115 -0
  320. package/dist/worker/index.d.ts +115 -0
  321. package/dist/worker/index.js +1 -1
  322. package/dist/worker/index.js.map +1 -1
  323. package/dist/xml2.tar.gz +0 -0
  324. package/package.json +1 -1
  325. package/dist/chunk-FY2WAP66.js.map +0 -1
  326. package/dist/chunk-NS5M47NH.js.map +0 -1
  327. 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 };
@@ -1,4 +1,4 @@
1
- import{f as R,g as z}from"../chunk-XGK36GMM.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(`
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