@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
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/utils.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/constants.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/types.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/tar.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/untar.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/index.js","../../src/fs/nodefs.ts","../../src/fs/base.ts","../../src/fs/tarUtils.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","'use strict';\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\nvar undefined = (function(undefined) {\n return undefined;\n})();\n\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nfunction isString(value) {\n return (typeof value == 'string') ||\n (Object.prototype.toString.call(value) == '[object String]');\n}\n\nfunction isDateTime(value) {\n return (Object.prototype.toString.call(value) == '[object Date]');\n}\n\nfunction isObject(value) {\n return (value !== null) && (typeof value == 'object');\n}\n\nfunction isFunction(value) {\n return typeof value == 'function';\n}\n\nfunction isLength(value) {\n return (typeof value == 'number') &&\n (value > -1) && (value % 1 == 0) &&\n (value <= MAX_SAFE_INTEGER);\n}\n\nfunction isArray(value) {\n return Object.prototype.toString.call(value) == '[object Array]';\n}\n\nfunction isArrayLike(value) {\n return isObject(value) && !isFunction(value) && isLength(value.length);\n}\n\nfunction isArrayBuffer(value) {\n return Object.prototype.toString.call(value) == '[object ArrayBuffer]';\n}\n\nfunction map(array, iteratee) {\n return Array.prototype.map.call(array, iteratee);\n}\n\nfunction find(array, iteratee) {\n var result = undefined;\n\n if (isFunction(iteratee)) {\n Array.prototype.every.call(array, function(item, index, array) {\n var found = iteratee(item, index, array);\n if (found) {\n result = item;\n }\n return !found; // continue if not found\n });\n }\n\n return result;\n}\n\nfunction extend(target /* ...sources */) {\n return Object.assign.apply(null, arguments);\n}\n\nfunction toUint8Array(value) {\n var i;\n var length;\n var result;\n\n if (isString(value)) {\n length = value.length;\n result = new Uint8Array(length);\n for (i = 0; i < length; i++) {\n result[i] = value.charCodeAt(i) & 0xFF;\n }\n return result;\n }\n\n if (isArrayBuffer(value)) {\n return new Uint8Array(value);\n }\n\n if (isObject(value) && isArrayBuffer(value.buffer)) {\n return new Uint8Array(value.buffer);\n }\n\n if (isArrayLike(value)) {\n return new Uint8Array(value);\n }\n\n if (isObject(value) && isFunction(value.toString)) {\n return toUint8Array(value.toString());\n }\n\n return new Uint8Array();\n}\n\nmodule.exports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\n\nmodule.exports.isUndefined = isUndefined;\nmodule.exports.isString = isString;\nmodule.exports.isObject = isObject;\nmodule.exports.isDateTime = isDateTime;\nmodule.exports.isFunction = isFunction;\nmodule.exports.isArray = isArray;\nmodule.exports.isArrayLike = isArrayLike;\nmodule.exports.isArrayBuffer = isArrayBuffer;\nmodule.exports.map = map;\nmodule.exports.find = find;\nmodule.exports.extend = extend;\nmodule.exports.toUint8Array = toUint8Array;\n","'use strict';\n\nvar NULL_CHAR = '\\u0000';\n\nmodule.exports = {\n /* eslint-disable key-spacing */\n\n NULL_CHAR: NULL_CHAR,\n\n TMAGIC: 'ustar' + NULL_CHAR + '00', // 'ustar', NULL, '00'\n OLDGNU_MAGIC: 'ustar ' + NULL_CHAR, // 'ustar ', NULL\n\n // Values used in typeflag field.\n REGTYPE: 0, // regular file\n LNKTYPE: 1, // link\n SYMTYPE: 2, // reserved\n CHRTYPE: 3, // character special\n BLKTYPE: 4, // block special\n DIRTYPE: 5, // directory\n FIFOTYPE: 6, // FIFO special\n CONTTYPE: 7, // reserved\n\n // Bits used in the mode field, values in octal.\n TSUID: parseInt('4000', 8), // set UID on execution\n TSGID: parseInt('2000', 8), // set GID on execution\n TSVTX: parseInt('1000', 8), // reserved\n\n // file permissions\n TUREAD: parseInt('0400', 8), // read by owner\n TUWRITE: parseInt('0200', 8), // write by owner\n TUEXEC: parseInt('0100', 8), // execute/search by owner\n TGREAD: parseInt('0040', 8), // read by group\n TGWRITE: parseInt('0020', 8), // write by group\n TGEXEC: parseInt('0010', 8), // execute/search by group\n TOREAD: parseInt('0004', 8), // read by other\n TOWRITE: parseInt('0002', 8), // write by other\n TOEXEC: parseInt('0001', 8), // execute/search by other\n\n TPERMALL: parseInt('0777', 8), // rwxrwxrwx\n TPERMMASK: parseInt('0777', 8) // permissions bitmask\n\n /* eslint-enable key-spacing */\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar constants = require('./constants');\n\nvar recordSize = 512;\nvar defaultFileMode = constants.TPERMALL; // rwxrwxrwx\nvar defaultUid = 0; // root\nvar defaultGid = 0; // root\n\n/*\n struct posix_header { // byte offset\n char name[100]; // 0\n char mode[8]; // 100\n char uid[8]; // 108\n char gid[8]; // 116\n char size[12]; // 124\n char mtime[12]; // 136\n char chksum[8]; // 148\n char typeflag; // 156\n char linkname[100]; // 157\n char magic[6]; // 257\n char version[2]; // 263\n char uname[32]; // 265\n char gname[32]; // 297\n char devmajor[8]; // 329\n char devminor[8]; // 337\n char prefix[131]; // 345\n char atime[12]; // 476\n char ctime[12]; // 488\n };\n */\n\nvar posixHeader = [\n // <field name>, <size>, <offset>, <used>, <format>, <parse>, [ <check> ]\n ['name', 100, 0, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['mode', 8, 100, function(file, field) {\n var mode = file[field[0]] || defaultFileMode;\n mode = mode & constants.TPERMMASK;\n return formatTarNumber(mode, field[1], defaultFileMode);\n }, function(buffer, offset, field) {\n var result = parseTarNumber(buffer.slice(offset, offset + field[1]));\n result &= constants.TPERMMASK;\n return result;\n }],\n ['uid', 8, 108, function(file, field) {\n return formatTarNumber(file[field[0]], field[1], defaultUid);\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['gid', 8, 116, function(file, field) {\n return formatTarNumber(file[field[0]], field[1], defaultGid);\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['size', 12, 124, function(file, field) {\n return formatTarNumber(file.data.length, field[1]);\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['modifyTime', 12, 136, function(file, field) {\n return formatTarDateTime(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarDateTime(buffer.slice(offset, offset + field[1]));\n }],\n ['checksum', 8, 148, function(file, field) {\n return ' '; // placeholder\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['type', 1, 156, function(file, field) {\n // get last octal digit; 0 - regular file\n return '' + ((parseInt(file[field[0]], 10) || 0) % 8);\n }, function(buffer, offset, field) {\n return (parseInt(String.fromCharCode(buffer[offset]), 10) || 0) % 8;\n }],\n ['linkName', 100, 157, function(file, field) {\n return ''; // only regular files are supported\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['ustar', 8, 257, function(file, field) {\n return constants.TMAGIC; // magic + version\n }, function(buffer, offset, field) {\n return fixUstarMagic(\n parseTarString(buffer.slice(offset, offset + field[1]), true)\n );\n }, function(file, field) {\n return (file[field[0]] == constants.TMAGIC) ||\n (file[field[0]] == constants.OLDGNU_MAGIC);\n }],\n ['owner', 32, 265, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['group', 32, 297, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['majorNumber', 8, 329, function(file, field) {\n return ''; // only regular files are supported\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['minorNumber', 8, 337, function(file, field) {\n return ''; // only regular files are supported\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['prefix', 131, 345, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['accessTime', 12, 476, function(file, field) {\n return formatTarDateTime(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarDateTime(buffer.slice(offset, offset + field[1]));\n }],\n ['createTime', 12, 488, function(file, field) {\n return formatTarDateTime(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarDateTime(buffer.slice(offset, offset + field[1]));\n }]\n];\n\nvar effectiveHeaderSize = (function(header) {\n var last = header[header.length - 1];\n return last[2] + last[1]; // offset + size\n})(posixHeader);\n\nfunction fixUstarMagic(value) {\n if (value.length == 8) {\n var chars = value.split('');\n\n if (chars[5] == constants.NULL_CHAR) {\n // TMAGIC ?\n if ((chars[6] == ' ') || (chars[6] == constants.NULL_CHAR)) {\n chars[6] = '0';\n }\n if ((chars[7] == ' ') || (chars[7] == constants.NULL_CHAR)) {\n chars[7] = '0';\n }\n chars = chars.join('');\n return chars == constants.TMAGIC ? chars : value;\n } else if (chars[7] == constants.NULL_CHAR) {\n // OLDGNU_MAGIC ?\n if (chars[5] == constants.NULL_CHAR) {\n chars[5] = ' ';\n }\n if (chars[6] == constants.NULL_CHAR) {\n chars[6] = ' ';\n }\n return chars == constants.OLDGNU_MAGIC ? chars : value;\n }\n }\n return value;\n}\n\nfunction formatTarString(value, length) {\n length -= 1; // preserve space for trailing null-char\n if (utils.isUndefined(value)) {\n value = '';\n }\n value = ('' + value).substr(0, length);\n return value + constants.NULL_CHAR;\n}\n\nfunction formatTarNumber(value, length, defaultValue) {\n defaultValue = parseInt(defaultValue) || 0;\n length -= 1; // preserve space for trailing null-char\n value = (parseInt(value) || defaultValue)\n .toString(8).substr(-length, length);\n while (value.length < length) {\n value = '0' + value;\n }\n return value + constants.NULL_CHAR;\n}\n\nfunction formatTarDateTime(value, length) {\n if (utils.isDateTime(value)) {\n value = Math.floor(1 * value / 1000);\n } else {\n value = parseInt(value, 10);\n if (isFinite(value)) {\n if (value <= 0) {\n return '';\n }\n } else {\n value = Math.floor(1 * new Date() / 1000);\n }\n }\n return formatTarNumber(value, length, 0);\n}\n\nfunction parseTarString(bytes, returnUnprocessed) {\n var result = String.fromCharCode.apply(null, bytes);\n if (returnUnprocessed) {\n return result;\n }\n var index = result.indexOf(constants.NULL_CHAR);\n return index >= 0 ? result.substr(0, index) : result;\n}\n\nfunction parseTarNumber(bytes) {\n var result = String.fromCharCode.apply(null, bytes);\n return parseInt(result.replace(/^0+$/g, ''), 8) || 0;\n}\n\nfunction parseTarDateTime(bytes) {\n if ((bytes.length == 0) || (bytes[0] == 0)) {\n return null;\n }\n return new Date(1000 * parseTarNumber(bytes));\n}\n\nfunction calculateChecksum(buffer, offset, skipChecksum) {\n var from = parseInt(offset, 10) || 0;\n var to = Math.min(from + effectiveHeaderSize, buffer.length);\n var result = 0;\n\n // When calculating checksum, `checksum` field should be\n // threat as filled with space char (byte 32)\n var skipFrom = 0;\n var skipTo = 0;\n if (skipChecksum) {\n posixHeader.every(function(field) {\n if (field[0] == 'checksum') {\n skipFrom = from + field[2];\n skipTo = skipFrom + field[1];\n return false;\n }\n return true;\n });\n }\n\n var whitespace = ' '.charCodeAt(0);\n for (var i = from; i < to; i++) {\n // 262144 = 8^6 - 6 octal digits - maximum possible value for checksum;\n // wrap to avoid numeric overflow\n var byte = (i >= skipFrom) && (i < skipTo) ? whitespace : buffer[i];\n result = (result + byte) % 262144;\n }\n return result;\n}\n\nmodule.exports.recordSize = recordSize;\nmodule.exports.defaultFileMode = defaultFileMode;\nmodule.exports.defaultUid = defaultUid;\nmodule.exports.defaultGid = defaultGid;\nmodule.exports.posixHeader = posixHeader;\nmodule.exports.effectiveHeaderSize = effectiveHeaderSize;\n\nmodule.exports.calculateChecksum = calculateChecksum;\nmodule.exports.formatTarString = formatTarString;\nmodule.exports.formatTarNumber = formatTarNumber;\nmodule.exports.formatTarDateTime = formatTarDateTime;\nmodule.exports.parseTarString = parseTarString;\nmodule.exports.parseTarNumber = parseTarNumber;\nmodule.exports.parseTarDateTime = parseTarDateTime;\n\n","'use strict';\n\nvar constants = require('./constants');\nvar utils = require('./utils');\nvar types = require('./types');\n\nfunction headerSize(file) {\n // header has fixed size\n return types.recordSize;\n}\n\nfunction dataSize(file) {\n // align to record boundary\n return Math.ceil(file.data.length / types.recordSize) * types.recordSize;\n}\n\nfunction allocateBuffer(files) {\n var totalSize = 0;\n\n // Calculate space that will be used by each file\n files.forEach(function(file) {\n totalSize += headerSize(file) + dataSize(file);\n });\n\n // TAR must end with two empty records\n totalSize += types.recordSize * 2;\n\n // Array SHOULD be initialized with zeros:\n // from TypedArray constructor docs:\n // > When creating a TypedArray instance (i.e. instance of Int8Array\n // > or similar), an array buffer is created internally\n // from ArrayBuffer constructor docs:\n // > A new ArrayBuffer object of the specified size.\n // > Its contents are initialized to 0.\n return new Uint8Array(totalSize);\n}\n\nfunction writeHeader(buffer, file, offset) {\n offset = parseInt(offset) || 0;\n\n var currentOffset = offset;\n types.posixHeader.forEach(function(field) {\n var value = field[3](file, field);\n var length = value.length;\n for (var i = 0; i < length; i += 1) {\n buffer[currentOffset + i] = value.charCodeAt(i) & 0xFF;\n }\n currentOffset += field[1]; // move to the next field\n });\n\n var field = utils.find(types.posixHeader, function(field) {\n return field[0] == 'checksum';\n });\n\n if (field) {\n // Patch checksum field\n var checksum = types.calculateChecksum(buffer, offset, true);\n var value = types.formatTarNumber(checksum, field[1] - 2) +\n constants.NULL_CHAR + ' ';\n currentOffset = offset + field[2];\n for (var i = 0; i < value.length; i += 1) {\n // put bytes\n buffer[currentOffset] = value.charCodeAt(i) & 0xFF;\n currentOffset++;\n }\n }\n\n return offset + headerSize(file);\n}\n\nfunction writeData(buffer, file, offset) {\n offset = parseInt(offset, 10) || 0;\n buffer.set(file.data, offset);\n return offset + dataSize(file);\n}\n\nfunction tar(files) {\n files = utils.map(files, function(file) {\n return utils.extend({}, file, {\n data: utils.toUint8Array(file.data)\n });\n });\n\n var buffer = allocateBuffer(files);\n\n var offset = 0;\n files.forEach(function(file) {\n offset = writeHeader(buffer, file, offset);\n offset = writeData(buffer, file, offset);\n });\n\n return buffer;\n}\n\nmodule.exports.tar = tar;\n","'use strict';\n\nvar constants = require('./constants');\nvar utils = require('./utils');\nvar types = require('./types');\n\nvar defaultOptions = {\n extractData: true,\n checkHeader: true,\n checkChecksum: true,\n checkFileSize: true\n};\n\nvar excludeFields = {\n size: true,\n checksum: true,\n ustar: true\n};\n\nvar messages = {\n unexpectedEndOfFile: 'Unexpected end of file.',\n fileCorrupted: 'File is corrupted.',\n checksumCheckFailed: 'Checksum check failed.'\n};\n\nfunction headerSize(header) {\n // header has fixed size\n return types.recordSize;\n}\n\nfunction dataSize(size) {\n // align to record boundary\n return Math.ceil(size / types.recordSize) * types.recordSize;\n}\n\nfunction isEndOfFile(buffer, offset) {\n var from = offset;\n var to = Math.min(buffer.length, offset + types.recordSize * 2);\n for (var i = from; i < to; i++) {\n if (buffer[i] != 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction readHeader(buffer, offset, options) {\n if (buffer.length - offset < types.recordSize) {\n if (options.checkFileSize) {\n throw new Error(messages.unexpectedEndOfFile);\n }\n return null;\n }\n\n offset = parseInt(offset) || 0;\n\n var result = {};\n var currentOffset = offset;\n types.posixHeader.forEach(function(field) {\n result[field[0]] = field[4](buffer, currentOffset, field);\n currentOffset += field[1];\n });\n\n if (result.type != 0) { // only regular files can have data\n result.size = 0;\n }\n\n if (options.checkHeader) {\n types.posixHeader.forEach(function(field) {\n if (utils.isFunction(field[5]) && !field[5](result, field)) {\n var error = new Error(messages.fileCorrupted);\n error.data = {\n offset: offset + field[2],\n field: field[0]\n };\n throw error;\n }\n });\n }\n\n if (options.checkChecksum) {\n var checksum = types.calculateChecksum(buffer, offset, true);\n if (checksum != result.checksum) {\n var error = new Error(messages.checksumCheckFailed);\n error.data = {\n offset: offset,\n header: result,\n checksum: checksum\n };\n throw error;\n }\n }\n\n return result;\n}\n\nfunction readData(buffer, offset, header, options) {\n if (!options.extractData) {\n return null;\n }\n\n if (header.size <= 0) {\n return new Uint8Array();\n }\n return buffer.slice(offset, offset + header.size);\n}\n\nfunction createFile(header, data) {\n var result = {};\n types.posixHeader.forEach(function(field) {\n var name = field[0];\n if (!excludeFields[name]) {\n result[name] = header[name];\n }\n });\n\n result.isOldGNUFormat = header.ustar == constants.OLDGNU_MAGIC;\n\n if (data) {\n result.data = data;\n }\n\n return result;\n}\n\nfunction untar(buffer, options) {\n options = utils.extend({}, defaultOptions, options);\n\n var result = [];\n var offset = 0;\n var size = buffer.length;\n\n while (size - offset >= types.recordSize) {\n buffer = utils.toUint8Array(buffer);\n var header = readHeader(buffer, offset, options);\n if (!header) {\n break;\n }\n offset += headerSize(header);\n\n var data = readData(buffer, offset, header, options);\n result.push(createFile(header, data));\n offset += dataSize(header.size);\n\n if (isEndOfFile(buffer, offset)) {\n break;\n }\n }\n\n return result;\n}\n\nmodule.exports.untar = untar;\n","'use strict';\n\n// http://www.gnu.org/software/tar/manual/html_node/Standard.html\n\nvar utils = require('./lib/utils');\nvar constants = require('./lib/constants');\nvar tar = require('./lib/tar');\nvar untar = require('./lib/untar');\n\nutils.extend(module.exports, tar, untar, constants);\n","import * as fs from 'fs'\nimport * as path from 'path'\nimport { EmscriptenBuiltinFilesystem, PGDATA } from './base.js'\nimport type { PostgresMod } from '../postgresMod.js'\nimport { PGlite } from '../pglite.js'\n\nexport class NodeFS extends EmscriptenBuiltinFilesystem {\n protected rootDir: string\n\n constructor(dataDir: string) {\n super(dataDir)\n this.rootDir = path.resolve(dataDir)\n if (!fs.existsSync(path.join(this.rootDir))) {\n fs.mkdirSync(this.rootDir)\n }\n }\n\n async init(pg: PGlite, opts: Partial<PostgresMod>) {\n this.pg = pg\n const options: Partial<PostgresMod> = {\n ...opts,\n preRun: [\n ...(opts.preRun || []),\n (mod: PostgresMod) => {\n const nodefs = mod.FS.filesystems.NODEFS\n mod.FS.mkdir(PGDATA)\n mod.FS.mount(nodefs, { root: this.rootDir }, PGDATA)\n },\n ],\n }\n return { emscriptenOpts: options }\n }\n\n async closeFs(): Promise<void> {\n this.pg!.Module.FS.quit()\n }\n}\n","import type { PostgresMod } from '../postgresMod.js'\nimport type { PGlite } from '../pglite.js'\nimport { dumpTar, type DumpTarCompressionOptions } from './tarUtils.js'\n\nexport const WASM_PREFIX = '/tmp/pglite'\nexport const PGDATA = WASM_PREFIX + '/' + 'base'\n\nexport type FsType = 'nodefs' | 'idbfs' | 'memoryfs' | 'opfs-ahp'\n\n/**\n * Filesystem interface.\n * All virtual filesystems that are compatible with PGlite must implement\n * this interface.\n */\nexport interface Filesystem {\n /**\n * Initiate the filesystem and return the options to pass to the emscripten module.\n */\n init(\n pg: PGlite,\n emscriptenOptions: Partial<PostgresMod>,\n ): Promise<{ emscriptenOpts: Partial<PostgresMod> }>\n\n /**\n * Sync the filesystem to any underlying storage.\n */\n syncToFs(relaxedDurability?: boolean): Promise<void>\n\n /**\n * Sync the filesystem from any underlying storage.\n */\n initialSyncFs(): Promise<void>\n\n /**\n * Dump the PGDATA dir from the filesystem to a gzipped tarball.\n */\n dumpTar(\n dbname: string,\n compression?: DumpTarCompressionOptions,\n ): Promise<File | Blob>\n\n /**\n * Close the filesystem.\n */\n closeFs(): Promise<void>\n}\n\n/**\n * Base class for all emscripten built-in filesystems.\n */\nexport class EmscriptenBuiltinFilesystem implements Filesystem {\n protected dataDir?: string\n protected pg?: PGlite\n\n constructor(dataDir?: string) {\n this.dataDir = dataDir\n }\n\n async init(pg: PGlite, emscriptenOptions: Partial<PostgresMod>) {\n this.pg = pg\n return { emscriptenOpts: emscriptenOptions }\n }\n\n async syncToFs(_relaxedDurability?: boolean) {}\n\n async initialSyncFs() {}\n\n async closeFs() {}\n\n async dumpTar(dbname: string, compression?: DumpTarCompressionOptions) {\n return dumpTar(this.pg!.Module.FS, PGDATA, dbname, compression)\n }\n}\n\n/**\n * Abstract base class for all custom virtual filesystems.\n * Each custom filesystem needs to implement an interface similar to the NodeJS FS API.\n */\nexport abstract class BaseFilesystem implements Filesystem {\n protected dataDir?: string\n protected pg?: PGlite\n readonly debug: boolean\n\n constructor(dataDir?: string, { debug = false }: { debug?: boolean } = {}) {\n this.dataDir = dataDir\n this.debug = debug\n }\n\n async syncToFs(_relaxedDurability?: boolean) {}\n\n async initialSyncFs() {}\n\n async closeFs() {}\n\n async dumpTar(dbname: string, compression?: DumpTarCompressionOptions) {\n return dumpTar(this.pg!.Module.FS, PGDATA, dbname, compression)\n }\n\n async init(pg: PGlite, emscriptenOptions: Partial<PostgresMod>) {\n this.pg = pg\n const options: Partial<PostgresMod> = {\n ...emscriptenOptions,\n preRun: [\n ...(emscriptenOptions.preRun || []),\n (mod: PostgresMod) => {\n const EMFS = createEmscriptenFS(mod, this)\n mod.FS.mkdir(PGDATA)\n mod.FS.mount(EMFS, {}, PGDATA)\n },\n ],\n }\n return { emscriptenOpts: options }\n }\n\n // Filesystem API\n\n abstract chmod(path: string, mode: number): void\n abstract close(fd: number): void\n abstract fstat(fd: number): FsStats\n abstract lstat(path: string): FsStats\n abstract mkdir(\n path: string,\n options?: { recursive?: boolean; mode?: number },\n ): void\n abstract open(path: string, flags?: string, mode?: number): number\n abstract readdir(path: string): string[]\n abstract read(\n fd: number,\n buffer: Uint8Array, // Buffer to read into\n offset: number, // Offset in buffer to start writing to\n length: number, // Number of bytes to read\n position: number, // Position in file to read from\n ): number\n abstract rename(oldPath: string, newPath: string): void\n abstract rmdir(path: string): void\n abstract truncate(\n path: string,\n len: number, // Length to truncate to - defaults to 0\n ): void\n abstract unlink(path: string): void\n abstract utimes(path: string, atime: number, mtime: number): void\n abstract writeFile(\n path: string,\n data: string | Uint8Array,\n options?: { encoding?: string; mode?: number; flag?: string },\n ): void\n abstract write(\n fd: number,\n buffer: Uint8Array, // Buffer to read from\n offset: number, // Offset in buffer to start reading from\n length: number, // Number of bytes to write\n position: number, // Position in file to write to\n ): number\n}\n\nexport type FsStats = {\n dev: number\n ino: number\n mode: number\n nlink: number\n uid: number\n gid: number\n rdev: number\n size: number\n blksize: number\n blocks: number\n atime: number\n mtime: number\n ctime: number\n}\n\n// Emscripten types that are not properly typed in @types/emscripten\ntype EmscriptenDeviceSpec = number | undefined\n\ntype EmscriptenFileSystem = Emscripten.FileSystemType & {\n createNode: (\n parent: FSNode | null,\n name: string,\n mode: number,\n dev?: EmscriptenDeviceSpec,\n ) => FSNode\n node_ops: FS.NodeOps\n stream_ops: FS.StreamOps & {\n dup: (stream: FSStream) => void\n mmap: (\n stream: FSStream,\n length: number,\n position: number,\n prot: number,\n flags: number,\n ) => { ptr: number; allocated: boolean }\n msync: (\n stream: FSStream,\n buffer: Uint8Array,\n offset: number,\n length: number,\n mmapFlags: number,\n ) => number\n }\n} & Record<string, unknown>\n\ntype FSNode = FS.FSNode & {\n node_ops: FS.NodeOps\n stream_ops: FS.StreamOps\n}\n\ntype FSStream = FS.FSStream & {\n node: FSNode\n shared: {\n refcount: number\n }\n}\n\ntype FSMount = FS.Mount & {\n opts: {\n root: string\n }\n}\n\ntype EmscriptenFS = PostgresMod['FS'] & {\n createNode: (\n parent: FSNode | null,\n name: string,\n mode: number,\n dev?: EmscriptenDeviceSpec,\n ) => FSNode\n}\n\nexport const ERRNO_CODES = {\n EBADF: 8,\n EBADFD: 127,\n EEXIST: 20,\n EINVAL: 28,\n EISDIR: 31,\n ENODEV: 43,\n ENOENT: 44,\n ENOTDIR: 54,\n ENOTEMPTY: 55,\n} as const\n\ninterface FsError extends Error {\n code?: number\n}\n\n/**\n * Create an emscripten filesystem that uses the BaseFilesystem.\n * @param Module The emscripten module\n * @param baseFS The BaseFilesystem implementation\n * @returns The emscripten filesystem\n */\nconst createEmscriptenFS = (Module: PostgresMod, baseFS: BaseFilesystem) => {\n const FS = Module.FS as EmscriptenFS\n const log = baseFS.debug ? console.log : null\n const EMFS = {\n tryFSOperation<T>(f: () => T): T {\n try {\n return f()\n } catch (e: unknown) {\n const fsError = e as FsError\n if (!fsError.code) throw e\n if (fsError.code === ERRNO_CODES.EINVAL)\n throw new FS.ErrnoError(ERRNO_CODES.EINVAL)\n throw new FS.ErrnoError(fsError.code)\n }\n },\n mount(_mount: FSMount): FSNode {\n return EMFS.createNode(null, '/', 16384 | 511, 0)\n },\n syncfs(\n _mount: FS.Mount,\n _populate: boolean,\n _done: (err?: number | null) => unknown,\n ): void {\n // noop\n },\n createNode(\n parent: FSNode | null,\n name: string,\n mode: number,\n _dev?: EmscriptenDeviceSpec,\n ): FSNode {\n if (!FS.isDir(mode) && !FS.isFile(mode)) {\n throw new FS.ErrnoError(28)\n }\n const node = FS.createNode(parent, name, mode)\n node.node_ops = EMFS.node_ops\n node.stream_ops = EMFS.stream_ops\n return node\n },\n getMode: function (path: string): number {\n log?.('getMode', path)\n return EMFS.tryFSOperation(() => {\n const stats = baseFS.lstat(path)\n return stats.mode\n })\n },\n realPath: function (node: FSNode): string {\n const parts: string[] = []\n while (node.parent !== node) {\n parts.push(node.name)\n node = node.parent as FSNode\n }\n parts.push((node.mount as FSMount).opts.root)\n parts.reverse()\n return parts.join('/')\n },\n node_ops: {\n getattr(node: FSNode): FS.Stats {\n log?.('getattr', EMFS.realPath(node))\n const path = EMFS.realPath(node)\n return EMFS.tryFSOperation(() => {\n const stats = baseFS.lstat(path)\n return {\n ...stats,\n dev: 0,\n ino: node.id,\n nlink: 1,\n rdev: node.rdev,\n atime: new Date(stats.atime),\n mtime: new Date(stats.mtime),\n ctime: new Date(stats.ctime),\n }\n })\n },\n setattr(node: FSNode, attr: FS.Stats): void {\n log?.('setattr', EMFS.realPath(node), attr)\n const path = EMFS.realPath(node)\n EMFS.tryFSOperation(() => {\n if (attr.mode !== undefined) {\n baseFS.chmod(path, attr.mode)\n }\n if (attr.size !== undefined) {\n baseFS.truncate(path, attr.size)\n }\n if (attr.timestamp !== undefined) {\n baseFS.utimes(path, attr.timestamp, attr.timestamp)\n }\n if (attr.size !== undefined) {\n baseFS.truncate(path, attr.size)\n }\n })\n },\n lookup(parent: FSNode, name: string): FSNode {\n log?.('lookup', EMFS.realPath(parent), name)\n const path = [EMFS.realPath(parent), name].join('/')\n const mode = EMFS.getMode(path)\n return EMFS.createNode(parent, name, mode)\n },\n mknod(parent: FSNode, name: string, mode: number, dev: unknown): FSNode {\n log?.('mknod', EMFS.realPath(parent), name, mode, dev)\n const node = EMFS.createNode(parent, name, mode, dev as EmscriptenDeviceSpec)\n // create the backing node for this in the fs root as well\n const path = EMFS.realPath(node)\n return EMFS.tryFSOperation(() => {\n if (FS.isDir(node.mode)) {\n baseFS.mkdir(path, { mode })\n } else {\n baseFS.writeFile(path, '', { mode })\n }\n return node\n })\n },\n rename(oldNode: FSNode, newDir: FSNode, newName: string): void {\n log?.('rename', EMFS.realPath(oldNode), EMFS.realPath(newDir), newName)\n const oldPath = EMFS.realPath(oldNode)\n const newPath = [EMFS.realPath(newDir), newName].join('/')\n EMFS.tryFSOperation(() => {\n baseFS.rename(oldPath, newPath)\n })\n oldNode.name = newName\n },\n unlink(parent: FSNode, name: string): void {\n log?.('unlink', EMFS.realPath(parent), name)\n const path = [EMFS.realPath(parent), name].join('/')\n try {\n baseFS.unlink(path)\n } catch (_e: unknown) {\n // no-op\n }\n },\n rmdir(parent: FSNode, name: string): void {\n log?.('rmdir', EMFS.realPath(parent), name)\n const path = [EMFS.realPath(parent), name].join('/')\n return EMFS.tryFSOperation(() => {\n baseFS.rmdir(path)\n })\n },\n readdir(node: FSNode): string[] {\n log?.('readdir', EMFS.realPath(node))\n const path = EMFS.realPath(node)\n return EMFS.tryFSOperation(() => {\n return baseFS.readdir(path)\n })\n },\n symlink(parent: FSNode, newName: string, oldPath: string): void {\n log?.('symlink', EMFS.realPath(parent), newName, oldPath)\n // This is not supported by EMFS\n throw new FS.ErrnoError(63)\n },\n readlink(node: FSNode): string {\n log?.('readlink', EMFS.realPath(node))\n // This is not supported by EMFS\n throw new FS.ErrnoError(63)\n },\n },\n stream_ops: {\n open(stream: FSStream): void {\n log?.('open stream', EMFS.realPath(stream.node))\n const path = EMFS.realPath(stream.node)\n return EMFS.tryFSOperation(() => {\n if (FS.isFile(stream.node.mode)) {\n stream.shared.refcount = 1\n stream.nfd = baseFS.open(path)\n }\n })\n },\n close(stream: FSStream): void {\n log?.('close stream', EMFS.realPath(stream.node))\n return EMFS.tryFSOperation(() => {\n if (\n FS.isFile(stream.node.mode) &&\n stream.nfd &&\n --stream.shared.refcount === 0\n ) {\n baseFS.close(stream.nfd)\n }\n })\n },\n dup(stream: FSStream) {\n log?.('dup stream', EMFS.realPath(stream.node))\n stream.shared.refcount++\n },\n read(\n stream: FSStream, // Stream to read from\n buffer: Uint8Array, // Buffer to read into - Wrong type in @types/emscripten\n offset: number, // Offset in buffer to start writing to\n length: number, // Number of bytes to read\n position: number, // Position in file to read from\n ): number {\n log?.(\n 'read stream',\n EMFS.realPath(stream.node),\n offset,\n length,\n position,\n )\n if (length === 0) return 0\n const ret = EMFS.tryFSOperation(() =>\n baseFS.read(\n stream.nfd!,\n buffer as unknown as Uint8Array,\n offset,\n length,\n position,\n ),\n )\n return ret\n },\n write(\n stream: FSStream, // Stream to write to\n buffer: Uint8Array, // Buffer to read from - Wrong type in @types/emscripten\n offset: number, // Offset in buffer to start writing from\n length: number, // Number of bytes to write\n position: number, // Position in file to write to\n ): number {\n log?.(\n 'write stream',\n EMFS.realPath(stream.node),\n offset,\n length,\n position,\n )\n return EMFS.tryFSOperation(() =>\n baseFS.write(\n stream.nfd!,\n buffer.buffer as unknown as Uint8Array,\n offset,\n length,\n position,\n ),\n )\n },\n llseek(stream: FSStream, offset: number, whence: number): number {\n log?.('llseek stream', EMFS.realPath(stream.node), offset, whence)\n let position = offset\n if (whence === 1) {\n position += stream.position\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n EMFS.tryFSOperation(() => {\n const stat = baseFS.fstat(stream.nfd!)\n position += stat.size\n })\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28)\n }\n return position\n },\n mmap(\n stream: FSStream,\n length: number,\n position: number,\n prot: number,\n flags: number,\n ) {\n log?.(\n 'mmap stream',\n EMFS.realPath(stream.node),\n length,\n position,\n prot,\n flags,\n )\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(ERRNO_CODES.ENODEV)\n }\n\n const ModuleWithMmap = Module as PostgresMod & { mmapAlloc: (size: number) => number }\n const ptr = ModuleWithMmap.mmapAlloc(length)\n\n EMFS.stream_ops.read(\n stream,\n Module.HEAP8 as unknown as Uint8Array,\n ptr,\n length,\n position,\n )\n return { ptr, allocated: true }\n },\n msync(\n stream: FSStream,\n buffer: Uint8Array,\n offset: number,\n length: number,\n mmapFlags: number,\n ) {\n log?.(\n 'msync stream',\n EMFS.realPath(stream.node),\n offset,\n length,\n mmapFlags,\n )\n EMFS.stream_ops.write(stream, buffer, 0, length, offset)\n return 0\n },\n },\n } satisfies EmscriptenFileSystem\n return EMFS\n}\n","import { tar, untar, type TarFile, REGTYPE, DIRTYPE } from 'tinytar'\nimport type { FS } from '../postgresMod.js'\n\nexport type DumpTarCompressionOptions = 'none' | 'gzip' | 'auto'\n\nexport async function dumpTar(\n FS: FS,\n pgDataDir: string,\n dbname: string = 'pgdata',\n compression: DumpTarCompressionOptions = 'auto',\n): Promise<File | Blob> {\n const tarball = createTarball(FS, pgDataDir)\n const [compressed, zipped] = await maybeZip(tarball, compression)\n const filename = dbname + (zipped ? '.tar.gz' : '.tar')\n const type = zipped ? 'application/x-gzip' : 'application/x-tar'\n if (typeof File !== 'undefined') {\n return new File([compressed.buffer as ArrayBuffer], filename, {\n type,\n })\n } else {\n return new Blob([compressed.buffer as ArrayBuffer], {\n type,\n })\n }\n}\n\nconst compressedMimeTypes = [\n 'application/x-gtar',\n 'application/x-tar+gzip',\n 'application/x-gzip',\n 'application/gzip',\n]\n\nexport async function loadTar(\n FS: FS,\n file: File | Blob,\n pgDataDir: string,\n): Promise<void> {\n let tarball: Uint8Array<ArrayBuffer> = new Uint8Array(await file.arrayBuffer())\n const filename =\n typeof File !== 'undefined' && file instanceof File ? file.name : undefined\n const compressed =\n compressedMimeTypes.includes(file.type) ||\n filename?.endsWith('.tgz') ||\n filename?.endsWith('.tar.gz')\n if (compressed) {\n tarball = await unzip(tarball) as Uint8Array<ArrayBuffer>\n }\n\n let files\n try {\n files = untar(tarball)\n } catch (e) {\n if (e instanceof Error && e.message.includes('File is corrupted')) {\n // The file may be compressed, but had the wrong mime type, try unzipping it\n tarball = await unzip(tarball) as Uint8Array<ArrayBuffer>\n files = untar(tarball)\n } else {\n throw e\n }\n }\n\n for (const file of files) {\n const filePath = pgDataDir + file.name\n\n // Ensure the directory structure exists\n const dirPath = filePath.split('/').slice(0, -1)\n for (let i = 1; i <= dirPath.length; i++) {\n const dir = dirPath.slice(0, i).join('/')\n if (!FS.analyzePath(dir).exists) {\n FS.mkdir(dir)\n }\n }\n\n // Write the file or directory\n if (file.type === REGTYPE) {\n FS.writeFile(filePath, file.data)\n FS.utime(\n filePath,\n dateToUnixTimestamp(file.modifyTime),\n dateToUnixTimestamp(file.modifyTime),\n )\n } else if (file.type === DIRTYPE) {\n FS.mkdir(filePath)\n }\n }\n}\n\nfunction readDirectory(FS: FS, path: string) {\n const files: TarFile[] = []\n\n const traverseDirectory = (currentPath: string) => {\n const entries = FS.readdir(currentPath)\n entries.forEach((entry) => {\n if (entry === '.' || entry === '..') {\n return\n }\n const fullPath = currentPath + '/' + entry\n const stats = FS.stat(fullPath)\n const data = FS.isFile(stats.mode)\n ? FS.readFile(fullPath, { encoding: 'binary' })\n : new Uint8Array(0)\n files.push({\n name: fullPath.substring(path.length), // remove the root path\n mode: stats.mode,\n size: stats.size,\n type: FS.isFile(stats.mode) ? REGTYPE : DIRTYPE,\n modifyTime: stats.mtime,\n data,\n })\n if (FS.isDir(stats.mode)) {\n traverseDirectory(fullPath)\n }\n })\n }\n\n traverseDirectory(path)\n return files\n}\n\nexport function createTarball(FS: FS, directoryPath: string) {\n const files = readDirectory(FS, directoryPath)\n const tarball = tar(files)\n return tarball\n}\n\nexport async function maybeZip(\n file: Uint8Array,\n compression: DumpTarCompressionOptions = 'auto',\n): Promise<[Uint8Array, boolean]> {\n if (compression === 'none') {\n return [file, false]\n } else if (typeof CompressionStream !== 'undefined') {\n return [await zipBrowser(file), true]\n } else if (\n typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node\n ) {\n return [await zipNode(file), true]\n } else if (compression === 'auto') {\n return [file, false]\n } else {\n throw new Error('Compression not supported in this environment')\n }\n}\n\nexport async function zipBrowser(file: Uint8Array): Promise<Uint8Array> {\n const cs = new CompressionStream('gzip')\n const writer = cs.writable.getWriter()\n const reader = cs.readable.getReader()\n\n writer.write(file.buffer as ArrayBuffer)\n writer.close()\n\n const chunks: Uint8Array[] = []\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) break\n if (value) chunks.push(value)\n }\n\n const compressed = new Uint8Array(\n chunks.reduce((acc, chunk) => acc + chunk.length, 0),\n )\n let offset = 0\n chunks.forEach((chunk) => {\n compressed.set(chunk, offset)\n offset += chunk.length\n })\n\n return compressed\n}\n\nexport async function zipNode(file: Uint8Array): Promise<Uint8Array> {\n const { promisify } = await import('util')\n const { gzip } = await import('zlib')\n const gzipPromise = promisify(gzip)\n return await gzipPromise(file)\n}\n\nexport async function unzip(file: Uint8Array): Promise<Uint8Array> {\n if (typeof CompressionStream !== 'undefined') {\n return await unzipBrowser(file)\n } else if (\n typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node\n ) {\n return await unzipNode(file)\n } else {\n throw new Error('Unsupported environment for decompression')\n }\n}\n\nexport async function unzipBrowser(file: Uint8Array): Promise<Uint8Array> {\n const ds = new DecompressionStream('gzip')\n const writer = ds.writable.getWriter()\n const reader = ds.readable.getReader()\n\n writer.write(file.buffer as ArrayBuffer)\n writer.close()\n\n const chunks: Uint8Array[] = []\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) break\n if (value) chunks.push(value)\n }\n\n const decompressed = new Uint8Array(\n chunks.reduce((acc, chunk) => acc + chunk.length, 0),\n )\n let offset = 0\n chunks.forEach((chunk) => {\n decompressed.set(chunk, offset)\n offset += chunk.length\n })\n\n return decompressed\n}\n\nexport async function unzipNode(file: Uint8Array): Promise<Uint8Array> {\n const { promisify } = await import('util')\n const { gunzip } = await import('zlib')\n const gunzipPromise = promisify(gunzip)\n return await gunzipPromise(file)\n}\n\nfunction dateToUnixTimestamp(date: Date | number | undefined): number {\n if (!date) {\n return Math.floor(Date.now() / 1000)\n } else {\n return typeof date === 'number' ? date : Math.floor(date.getTime() / 1000)\n }\n}\n"],"mappings":"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","names":["init_cjs_shims","__esmMin","require_utils","__commonJSMin","exports","module","init_cjs_shims","MAX_SAFE_INTEGER","undefined","isUndefined","value","isString","isDateTime","isObject","isFunction","isLength","isArray","isArrayLike","isArrayBuffer","map","array","iteratee","find","result","item","index","found","extend","target","toUint8Array","i","length","require_constants","__commonJSMin","exports","module","init_cjs_shims","NULL_CHAR","require_types","__commonJSMin","exports","module","init_cjs_shims","utils","constants","recordSize","defaultFileMode","defaultUid","defaultGid","posixHeader","file","field","formatTarString","buffer","offset","parseTarString","mode","formatTarNumber","result","parseTarNumber","formatTarDateTime","parseTarDateTime","fixUstarMagic","effectiveHeaderSize","header","last","value","chars","length","defaultValue","bytes","returnUnprocessed","index","calculateChecksum","skipChecksum","from","to","skipFrom","skipTo","whitespace","i","byte","require_tar","__commonJSMin","exports","module","init_cjs_shims","constants","utils","types","headerSize","file","dataSize","allocateBuffer","files","totalSize","writeHeader","buffer","offset","currentOffset","field","value","length","i","checksum","writeData","tar","require_untar","__commonJSMin","exports","module","init_cjs_shims","constants","utils","types","defaultOptions","excludeFields","messages","headerSize","header","dataSize","size","isEndOfFile","buffer","offset","from","to","readHeader","options","result","currentOffset","field","error","checksum","readData","createFile","data","name","untar","require_tinytar","__commonJSMin","exports","module","init_cjs_shims","utils","constants","tar","untar","nodefs_exports","__export","NodeFS","__toCommonJS","init_cjs_shims","fs","path","init_cjs_shims","init_cjs_shims","import_tinytar","dumpTar","FS","pgDataDir","dbname","compression","tarball","createTarball","compressed","zipped","maybeZip","filename","type","readDirectory","FS","path","files","traverseDirectory","currentPath","entry","fullPath","stats","data","createTarball","directoryPath","maybeZip","file","compression","zipBrowser","zipNode","cs","writer","reader","chunks","value","done","compressed","acc","chunk","offset","promisify","gzip","WASM_PREFIX","PGDATA","EmscriptenBuiltinFilesystem","dataDir","pg","emscriptenOptions","_relaxedDurability","dbname","compression","dumpTar","NodeFS","EmscriptenBuiltinFilesystem","dataDir","pg","opts","mod","nodefs","PGDATA"]}
1
+ {"version":3,"sources":["../../../../../../node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3_yaml@2.8.2/node_modules/tsup/assets/cjs_shims.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/utils.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/constants.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/types.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/tar.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/lib/untar.js","../../../../../../node_modules/.pnpm/tinytar@0.1.0/node_modules/tinytar/index.js","../../src/fs/nodefs.ts","../../src/fs/base.ts","../../src/fs/tarUtils.ts"],"sourcesContent":["// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","'use strict';\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\nvar undefined = (function(undefined) {\n return undefined;\n})();\n\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nfunction isString(value) {\n return (typeof value == 'string') ||\n (Object.prototype.toString.call(value) == '[object String]');\n}\n\nfunction isDateTime(value) {\n return (Object.prototype.toString.call(value) == '[object Date]');\n}\n\nfunction isObject(value) {\n return (value !== null) && (typeof value == 'object');\n}\n\nfunction isFunction(value) {\n return typeof value == 'function';\n}\n\nfunction isLength(value) {\n return (typeof value == 'number') &&\n (value > -1) && (value % 1 == 0) &&\n (value <= MAX_SAFE_INTEGER);\n}\n\nfunction isArray(value) {\n return Object.prototype.toString.call(value) == '[object Array]';\n}\n\nfunction isArrayLike(value) {\n return isObject(value) && !isFunction(value) && isLength(value.length);\n}\n\nfunction isArrayBuffer(value) {\n return Object.prototype.toString.call(value) == '[object ArrayBuffer]';\n}\n\nfunction map(array, iteratee) {\n return Array.prototype.map.call(array, iteratee);\n}\n\nfunction find(array, iteratee) {\n var result = undefined;\n\n if (isFunction(iteratee)) {\n Array.prototype.every.call(array, function(item, index, array) {\n var found = iteratee(item, index, array);\n if (found) {\n result = item;\n }\n return !found; // continue if not found\n });\n }\n\n return result;\n}\n\nfunction extend(target /* ...sources */) {\n return Object.assign.apply(null, arguments);\n}\n\nfunction toUint8Array(value) {\n var i;\n var length;\n var result;\n\n if (isString(value)) {\n length = value.length;\n result = new Uint8Array(length);\n for (i = 0; i < length; i++) {\n result[i] = value.charCodeAt(i) & 0xFF;\n }\n return result;\n }\n\n if (isArrayBuffer(value)) {\n return new Uint8Array(value);\n }\n\n if (isObject(value) && isArrayBuffer(value.buffer)) {\n return new Uint8Array(value.buffer);\n }\n\n if (isArrayLike(value)) {\n return new Uint8Array(value);\n }\n\n if (isObject(value) && isFunction(value.toString)) {\n return toUint8Array(value.toString());\n }\n\n return new Uint8Array();\n}\n\nmodule.exports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\n\nmodule.exports.isUndefined = isUndefined;\nmodule.exports.isString = isString;\nmodule.exports.isObject = isObject;\nmodule.exports.isDateTime = isDateTime;\nmodule.exports.isFunction = isFunction;\nmodule.exports.isArray = isArray;\nmodule.exports.isArrayLike = isArrayLike;\nmodule.exports.isArrayBuffer = isArrayBuffer;\nmodule.exports.map = map;\nmodule.exports.find = find;\nmodule.exports.extend = extend;\nmodule.exports.toUint8Array = toUint8Array;\n","'use strict';\n\nvar NULL_CHAR = '\\u0000';\n\nmodule.exports = {\n /* eslint-disable key-spacing */\n\n NULL_CHAR: NULL_CHAR,\n\n TMAGIC: 'ustar' + NULL_CHAR + '00', // 'ustar', NULL, '00'\n OLDGNU_MAGIC: 'ustar ' + NULL_CHAR, // 'ustar ', NULL\n\n // Values used in typeflag field.\n REGTYPE: 0, // regular file\n LNKTYPE: 1, // link\n SYMTYPE: 2, // reserved\n CHRTYPE: 3, // character special\n BLKTYPE: 4, // block special\n DIRTYPE: 5, // directory\n FIFOTYPE: 6, // FIFO special\n CONTTYPE: 7, // reserved\n\n // Bits used in the mode field, values in octal.\n TSUID: parseInt('4000', 8), // set UID on execution\n TSGID: parseInt('2000', 8), // set GID on execution\n TSVTX: parseInt('1000', 8), // reserved\n\n // file permissions\n TUREAD: parseInt('0400', 8), // read by owner\n TUWRITE: parseInt('0200', 8), // write by owner\n TUEXEC: parseInt('0100', 8), // execute/search by owner\n TGREAD: parseInt('0040', 8), // read by group\n TGWRITE: parseInt('0020', 8), // write by group\n TGEXEC: parseInt('0010', 8), // execute/search by group\n TOREAD: parseInt('0004', 8), // read by other\n TOWRITE: parseInt('0002', 8), // write by other\n TOEXEC: parseInt('0001', 8), // execute/search by other\n\n TPERMALL: parseInt('0777', 8), // rwxrwxrwx\n TPERMMASK: parseInt('0777', 8) // permissions bitmask\n\n /* eslint-enable key-spacing */\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar constants = require('./constants');\n\nvar recordSize = 512;\nvar defaultFileMode = constants.TPERMALL; // rwxrwxrwx\nvar defaultUid = 0; // root\nvar defaultGid = 0; // root\n\n/*\n struct posix_header { // byte offset\n char name[100]; // 0\n char mode[8]; // 100\n char uid[8]; // 108\n char gid[8]; // 116\n char size[12]; // 124\n char mtime[12]; // 136\n char chksum[8]; // 148\n char typeflag; // 156\n char linkname[100]; // 157\n char magic[6]; // 257\n char version[2]; // 263\n char uname[32]; // 265\n char gname[32]; // 297\n char devmajor[8]; // 329\n char devminor[8]; // 337\n char prefix[131]; // 345\n char atime[12]; // 476\n char ctime[12]; // 488\n };\n */\n\nvar posixHeader = [\n // <field name>, <size>, <offset>, <used>, <format>, <parse>, [ <check> ]\n ['name', 100, 0, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['mode', 8, 100, function(file, field) {\n var mode = file[field[0]] || defaultFileMode;\n mode = mode & constants.TPERMMASK;\n return formatTarNumber(mode, field[1], defaultFileMode);\n }, function(buffer, offset, field) {\n var result = parseTarNumber(buffer.slice(offset, offset + field[1]));\n result &= constants.TPERMMASK;\n return result;\n }],\n ['uid', 8, 108, function(file, field) {\n return formatTarNumber(file[field[0]], field[1], defaultUid);\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['gid', 8, 116, function(file, field) {\n return formatTarNumber(file[field[0]], field[1], defaultGid);\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['size', 12, 124, function(file, field) {\n return formatTarNumber(file.data.length, field[1]);\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['modifyTime', 12, 136, function(file, field) {\n return formatTarDateTime(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarDateTime(buffer.slice(offset, offset + field[1]));\n }],\n ['checksum', 8, 148, function(file, field) {\n return ' '; // placeholder\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['type', 1, 156, function(file, field) {\n // get last octal digit; 0 - regular file\n return '' + ((parseInt(file[field[0]], 10) || 0) % 8);\n }, function(buffer, offset, field) {\n return (parseInt(String.fromCharCode(buffer[offset]), 10) || 0) % 8;\n }],\n ['linkName', 100, 157, function(file, field) {\n return ''; // only regular files are supported\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['ustar', 8, 257, function(file, field) {\n return constants.TMAGIC; // magic + version\n }, function(buffer, offset, field) {\n return fixUstarMagic(\n parseTarString(buffer.slice(offset, offset + field[1]), true)\n );\n }, function(file, field) {\n return (file[field[0]] == constants.TMAGIC) ||\n (file[field[0]] == constants.OLDGNU_MAGIC);\n }],\n ['owner', 32, 265, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['group', 32, 297, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['majorNumber', 8, 329, function(file, field) {\n return ''; // only regular files are supported\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['minorNumber', 8, 337, function(file, field) {\n return ''; // only regular files are supported\n }, function(buffer, offset, field) {\n return parseTarNumber(buffer.slice(offset, offset + field[1]));\n }],\n ['prefix', 131, 345, function(file, field) {\n return formatTarString(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarString(buffer.slice(offset, offset + field[1]));\n }],\n ['accessTime', 12, 476, function(file, field) {\n return formatTarDateTime(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarDateTime(buffer.slice(offset, offset + field[1]));\n }],\n ['createTime', 12, 488, function(file, field) {\n return formatTarDateTime(file[field[0]], field[1]);\n }, function(buffer, offset, field) {\n return parseTarDateTime(buffer.slice(offset, offset + field[1]));\n }]\n];\n\nvar effectiveHeaderSize = (function(header) {\n var last = header[header.length - 1];\n return last[2] + last[1]; // offset + size\n})(posixHeader);\n\nfunction fixUstarMagic(value) {\n if (value.length == 8) {\n var chars = value.split('');\n\n if (chars[5] == constants.NULL_CHAR) {\n // TMAGIC ?\n if ((chars[6] == ' ') || (chars[6] == constants.NULL_CHAR)) {\n chars[6] = '0';\n }\n if ((chars[7] == ' ') || (chars[7] == constants.NULL_CHAR)) {\n chars[7] = '0';\n }\n chars = chars.join('');\n return chars == constants.TMAGIC ? chars : value;\n } else if (chars[7] == constants.NULL_CHAR) {\n // OLDGNU_MAGIC ?\n if (chars[5] == constants.NULL_CHAR) {\n chars[5] = ' ';\n }\n if (chars[6] == constants.NULL_CHAR) {\n chars[6] = ' ';\n }\n return chars == constants.OLDGNU_MAGIC ? chars : value;\n }\n }\n return value;\n}\n\nfunction formatTarString(value, length) {\n length -= 1; // preserve space for trailing null-char\n if (utils.isUndefined(value)) {\n value = '';\n }\n value = ('' + value).substr(0, length);\n return value + constants.NULL_CHAR;\n}\n\nfunction formatTarNumber(value, length, defaultValue) {\n defaultValue = parseInt(defaultValue) || 0;\n length -= 1; // preserve space for trailing null-char\n value = (parseInt(value) || defaultValue)\n .toString(8).substr(-length, length);\n while (value.length < length) {\n value = '0' + value;\n }\n return value + constants.NULL_CHAR;\n}\n\nfunction formatTarDateTime(value, length) {\n if (utils.isDateTime(value)) {\n value = Math.floor(1 * value / 1000);\n } else {\n value = parseInt(value, 10);\n if (isFinite(value)) {\n if (value <= 0) {\n return '';\n }\n } else {\n value = Math.floor(1 * new Date() / 1000);\n }\n }\n return formatTarNumber(value, length, 0);\n}\n\nfunction parseTarString(bytes, returnUnprocessed) {\n var result = String.fromCharCode.apply(null, bytes);\n if (returnUnprocessed) {\n return result;\n }\n var index = result.indexOf(constants.NULL_CHAR);\n return index >= 0 ? result.substr(0, index) : result;\n}\n\nfunction parseTarNumber(bytes) {\n var result = String.fromCharCode.apply(null, bytes);\n return parseInt(result.replace(/^0+$/g, ''), 8) || 0;\n}\n\nfunction parseTarDateTime(bytes) {\n if ((bytes.length == 0) || (bytes[0] == 0)) {\n return null;\n }\n return new Date(1000 * parseTarNumber(bytes));\n}\n\nfunction calculateChecksum(buffer, offset, skipChecksum) {\n var from = parseInt(offset, 10) || 0;\n var to = Math.min(from + effectiveHeaderSize, buffer.length);\n var result = 0;\n\n // When calculating checksum, `checksum` field should be\n // threat as filled with space char (byte 32)\n var skipFrom = 0;\n var skipTo = 0;\n if (skipChecksum) {\n posixHeader.every(function(field) {\n if (field[0] == 'checksum') {\n skipFrom = from + field[2];\n skipTo = skipFrom + field[1];\n return false;\n }\n return true;\n });\n }\n\n var whitespace = ' '.charCodeAt(0);\n for (var i = from; i < to; i++) {\n // 262144 = 8^6 - 6 octal digits - maximum possible value for checksum;\n // wrap to avoid numeric overflow\n var byte = (i >= skipFrom) && (i < skipTo) ? whitespace : buffer[i];\n result = (result + byte) % 262144;\n }\n return result;\n}\n\nmodule.exports.recordSize = recordSize;\nmodule.exports.defaultFileMode = defaultFileMode;\nmodule.exports.defaultUid = defaultUid;\nmodule.exports.defaultGid = defaultGid;\nmodule.exports.posixHeader = posixHeader;\nmodule.exports.effectiveHeaderSize = effectiveHeaderSize;\n\nmodule.exports.calculateChecksum = calculateChecksum;\nmodule.exports.formatTarString = formatTarString;\nmodule.exports.formatTarNumber = formatTarNumber;\nmodule.exports.formatTarDateTime = formatTarDateTime;\nmodule.exports.parseTarString = parseTarString;\nmodule.exports.parseTarNumber = parseTarNumber;\nmodule.exports.parseTarDateTime = parseTarDateTime;\n\n","'use strict';\n\nvar constants = require('./constants');\nvar utils = require('./utils');\nvar types = require('./types');\n\nfunction headerSize(file) {\n // header has fixed size\n return types.recordSize;\n}\n\nfunction dataSize(file) {\n // align to record boundary\n return Math.ceil(file.data.length / types.recordSize) * types.recordSize;\n}\n\nfunction allocateBuffer(files) {\n var totalSize = 0;\n\n // Calculate space that will be used by each file\n files.forEach(function(file) {\n totalSize += headerSize(file) + dataSize(file);\n });\n\n // TAR must end with two empty records\n totalSize += types.recordSize * 2;\n\n // Array SHOULD be initialized with zeros:\n // from TypedArray constructor docs:\n // > When creating a TypedArray instance (i.e. instance of Int8Array\n // > or similar), an array buffer is created internally\n // from ArrayBuffer constructor docs:\n // > A new ArrayBuffer object of the specified size.\n // > Its contents are initialized to 0.\n return new Uint8Array(totalSize);\n}\n\nfunction writeHeader(buffer, file, offset) {\n offset = parseInt(offset) || 0;\n\n var currentOffset = offset;\n types.posixHeader.forEach(function(field) {\n var value = field[3](file, field);\n var length = value.length;\n for (var i = 0; i < length; i += 1) {\n buffer[currentOffset + i] = value.charCodeAt(i) & 0xFF;\n }\n currentOffset += field[1]; // move to the next field\n });\n\n var field = utils.find(types.posixHeader, function(field) {\n return field[0] == 'checksum';\n });\n\n if (field) {\n // Patch checksum field\n var checksum = types.calculateChecksum(buffer, offset, true);\n var value = types.formatTarNumber(checksum, field[1] - 2) +\n constants.NULL_CHAR + ' ';\n currentOffset = offset + field[2];\n for (var i = 0; i < value.length; i += 1) {\n // put bytes\n buffer[currentOffset] = value.charCodeAt(i) & 0xFF;\n currentOffset++;\n }\n }\n\n return offset + headerSize(file);\n}\n\nfunction writeData(buffer, file, offset) {\n offset = parseInt(offset, 10) || 0;\n buffer.set(file.data, offset);\n return offset + dataSize(file);\n}\n\nfunction tar(files) {\n files = utils.map(files, function(file) {\n return utils.extend({}, file, {\n data: utils.toUint8Array(file.data)\n });\n });\n\n var buffer = allocateBuffer(files);\n\n var offset = 0;\n files.forEach(function(file) {\n offset = writeHeader(buffer, file, offset);\n offset = writeData(buffer, file, offset);\n });\n\n return buffer;\n}\n\nmodule.exports.tar = tar;\n","'use strict';\n\nvar constants = require('./constants');\nvar utils = require('./utils');\nvar types = require('./types');\n\nvar defaultOptions = {\n extractData: true,\n checkHeader: true,\n checkChecksum: true,\n checkFileSize: true\n};\n\nvar excludeFields = {\n size: true,\n checksum: true,\n ustar: true\n};\n\nvar messages = {\n unexpectedEndOfFile: 'Unexpected end of file.',\n fileCorrupted: 'File is corrupted.',\n checksumCheckFailed: 'Checksum check failed.'\n};\n\nfunction headerSize(header) {\n // header has fixed size\n return types.recordSize;\n}\n\nfunction dataSize(size) {\n // align to record boundary\n return Math.ceil(size / types.recordSize) * types.recordSize;\n}\n\nfunction isEndOfFile(buffer, offset) {\n var from = offset;\n var to = Math.min(buffer.length, offset + types.recordSize * 2);\n for (var i = from; i < to; i++) {\n if (buffer[i] != 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction readHeader(buffer, offset, options) {\n if (buffer.length - offset < types.recordSize) {\n if (options.checkFileSize) {\n throw new Error(messages.unexpectedEndOfFile);\n }\n return null;\n }\n\n offset = parseInt(offset) || 0;\n\n var result = {};\n var currentOffset = offset;\n types.posixHeader.forEach(function(field) {\n result[field[0]] = field[4](buffer, currentOffset, field);\n currentOffset += field[1];\n });\n\n if (result.type != 0) { // only regular files can have data\n result.size = 0;\n }\n\n if (options.checkHeader) {\n types.posixHeader.forEach(function(field) {\n if (utils.isFunction(field[5]) && !field[5](result, field)) {\n var error = new Error(messages.fileCorrupted);\n error.data = {\n offset: offset + field[2],\n field: field[0]\n };\n throw error;\n }\n });\n }\n\n if (options.checkChecksum) {\n var checksum = types.calculateChecksum(buffer, offset, true);\n if (checksum != result.checksum) {\n var error = new Error(messages.checksumCheckFailed);\n error.data = {\n offset: offset,\n header: result,\n checksum: checksum\n };\n throw error;\n }\n }\n\n return result;\n}\n\nfunction readData(buffer, offset, header, options) {\n if (!options.extractData) {\n return null;\n }\n\n if (header.size <= 0) {\n return new Uint8Array();\n }\n return buffer.slice(offset, offset + header.size);\n}\n\nfunction createFile(header, data) {\n var result = {};\n types.posixHeader.forEach(function(field) {\n var name = field[0];\n if (!excludeFields[name]) {\n result[name] = header[name];\n }\n });\n\n result.isOldGNUFormat = header.ustar == constants.OLDGNU_MAGIC;\n\n if (data) {\n result.data = data;\n }\n\n return result;\n}\n\nfunction untar(buffer, options) {\n options = utils.extend({}, defaultOptions, options);\n\n var result = [];\n var offset = 0;\n var size = buffer.length;\n\n while (size - offset >= types.recordSize) {\n buffer = utils.toUint8Array(buffer);\n var header = readHeader(buffer, offset, options);\n if (!header) {\n break;\n }\n offset += headerSize(header);\n\n var data = readData(buffer, offset, header, options);\n result.push(createFile(header, data));\n offset += dataSize(header.size);\n\n if (isEndOfFile(buffer, offset)) {\n break;\n }\n }\n\n return result;\n}\n\nmodule.exports.untar = untar;\n","'use strict';\n\n// http://www.gnu.org/software/tar/manual/html_node/Standard.html\n\nvar utils = require('./lib/utils');\nvar constants = require('./lib/constants');\nvar tar = require('./lib/tar');\nvar untar = require('./lib/untar');\n\nutils.extend(module.exports, tar, untar, constants);\n","import * as fs from 'fs'\nimport * as path from 'path'\nimport { EmscriptenBuiltinFilesystem, PGDATA } from './base.js'\nimport type { PostgresMod } from '../postgresMod.js'\nimport { PGlite } from '../pglite.js'\n\nexport class NodeFS extends EmscriptenBuiltinFilesystem {\n protected rootDir: string\n\n constructor(dataDir: string) {\n super(dataDir)\n this.rootDir = path.resolve(dataDir)\n if (!fs.existsSync(path.join(this.rootDir))) {\n fs.mkdirSync(this.rootDir)\n }\n }\n\n async init(pg: PGlite, opts: Partial<PostgresMod>) {\n this.pg = pg\n const options: Partial<PostgresMod> = {\n ...opts,\n preRun: [\n ...(opts.preRun || []),\n (mod: PostgresMod) => {\n const nodefs = mod.FS.filesystems.NODEFS\n mod.FS.mkdir(PGDATA)\n mod.FS.mount(nodefs, { root: this.rootDir }, PGDATA)\n },\n ],\n }\n return { emscriptenOpts: options }\n }\n\n async closeFs(): Promise<void> {\n this.pg!.Module.FS.quit()\n }\n}\n","import type { PostgresMod } from '../postgresMod.js'\nimport type { PGlite } from '../pglite.js'\nimport { dumpTar, type DumpTarCompressionOptions } from './tarUtils.js'\n\nexport const WASM_PREFIX = '/tmp/pglite'\nexport const PGDATA = WASM_PREFIX + '/' + 'base'\n\nexport type FsType = 'nodefs' | 'idbfs' | 'memoryfs' | 'opfs-ahp'\n\n/**\n * Filesystem interface.\n * All virtual filesystems that are compatible with PGlite must implement\n * this interface.\n */\nexport interface Filesystem {\n /**\n * Initiate the filesystem and return the options to pass to the emscripten module.\n */\n init(\n pg: PGlite,\n emscriptenOptions: Partial<PostgresMod>,\n ): Promise<{ emscriptenOpts: Partial<PostgresMod> }>\n\n /**\n * Sync the filesystem to any underlying storage.\n */\n syncToFs(relaxedDurability?: boolean): Promise<void>\n\n /**\n * Sync the filesystem from any underlying storage.\n */\n initialSyncFs(): Promise<void>\n\n /**\n * Dump the PGDATA dir from the filesystem to a gzipped tarball.\n */\n dumpTar(\n dbname: string,\n compression?: DumpTarCompressionOptions,\n ): Promise<File | Blob>\n\n /**\n * Close the filesystem.\n */\n closeFs(): Promise<void>\n}\n\n/**\n * Base class for all emscripten built-in filesystems.\n */\nexport class EmscriptenBuiltinFilesystem implements Filesystem {\n protected dataDir?: string\n protected pg?: PGlite\n\n constructor(dataDir?: string) {\n this.dataDir = dataDir\n }\n\n async init(pg: PGlite, emscriptenOptions: Partial<PostgresMod>) {\n this.pg = pg\n return { emscriptenOpts: emscriptenOptions }\n }\n\n async syncToFs(_relaxedDurability?: boolean) {}\n\n async initialSyncFs() {}\n\n async closeFs() {}\n\n async dumpTar(dbname: string, compression?: DumpTarCompressionOptions) {\n return dumpTar(this.pg!.Module.FS, PGDATA, dbname, compression)\n }\n}\n\n/**\n * Abstract base class for all custom virtual filesystems.\n * Each custom filesystem needs to implement an interface similar to the NodeJS FS API.\n */\nexport abstract class BaseFilesystem implements Filesystem {\n protected dataDir?: string\n protected pg?: PGlite\n readonly debug: boolean\n\n constructor(dataDir?: string, { debug = false }: { debug?: boolean } = {}) {\n this.dataDir = dataDir\n this.debug = debug\n }\n\n async syncToFs(_relaxedDurability?: boolean) {}\n\n async initialSyncFs() {}\n\n async closeFs() {}\n\n async dumpTar(dbname: string, compression?: DumpTarCompressionOptions) {\n return dumpTar(this.pg!.Module.FS, PGDATA, dbname, compression)\n }\n\n async init(pg: PGlite, emscriptenOptions: Partial<PostgresMod>) {\n this.pg = pg\n const options: Partial<PostgresMod> = {\n ...emscriptenOptions,\n preRun: [\n ...(emscriptenOptions.preRun || []),\n (mod: PostgresMod) => {\n const EMFS = createEmscriptenFS(mod, this)\n mod.FS.mkdir(PGDATA)\n // Type assertion needed: @types/emscripten has incorrect syncfs signature\n mod.FS.mount(EMFS as unknown as Emscripten.FileSystemType, {}, PGDATA)\n },\n ],\n }\n return { emscriptenOpts: options }\n }\n\n // Filesystem API\n\n abstract chmod(path: string, mode: number): void\n abstract close(fd: number): void\n abstract fstat(fd: number): FsStats\n abstract lstat(path: string): FsStats\n abstract mkdir(\n path: string,\n options?: { recursive?: boolean; mode?: number },\n ): void\n abstract open(path: string, flags?: string, mode?: number): number\n abstract readdir(path: string): string[]\n abstract read(\n fd: number,\n buffer: Uint8Array, // Buffer to read into\n offset: number, // Offset in buffer to start writing to\n length: number, // Number of bytes to read\n position: number, // Position in file to read from\n ): number\n abstract rename(oldPath: string, newPath: string): void\n abstract rmdir(path: string): void\n abstract truncate(\n path: string,\n len: number, // Length to truncate to - defaults to 0\n ): void\n abstract unlink(path: string): void\n abstract utimes(path: string, atime: number, mtime: number): void\n abstract writeFile(\n path: string,\n data: string | Uint8Array,\n options?: { encoding?: string; mode?: number; flag?: string },\n ): void\n abstract write(\n fd: number,\n buffer: Uint8Array, // Buffer to read from\n offset: number, // Offset in buffer to start reading from\n length: number, // Number of bytes to write\n position: number, // Position in file to write to\n ): number\n}\n\nexport type FsStats = {\n dev: number\n ino: number\n mode: number\n nlink: number\n uid: number\n gid: number\n rdev: number\n size: number\n blksize: number\n blocks: number\n atime: number\n mtime: number\n ctime: number\n}\n\n// Emscripten types that are not properly typed in @types/emscripten\ntype EmscriptenDeviceSpec = number | undefined\n\ntype EmscriptenFileSystem = Omit<Emscripten.FileSystemType, 'syncfs'> & {\n // Override syncfs signature - @types/emscripten has wrong type (expects function, but Emscripten uses boolean)\n syncfs: (\n mount: FS.Mount,\n populate: boolean,\n done: (err?: number | null) => unknown,\n ) => void\n createNode: (\n parent: FSNode | null,\n name: string,\n mode: number,\n dev?: EmscriptenDeviceSpec,\n ) => FSNode\n node_ops: FS.NodeOps\n stream_ops: FS.StreamOps & {\n dup: (stream: FSStream) => void\n mmap: (\n stream: FSStream,\n length: number,\n position: number,\n prot: number,\n flags: number,\n ) => { ptr: number; allocated: boolean }\n msync: (\n stream: FSStream,\n buffer: Uint8Array,\n offset: number,\n length: number,\n mmapFlags: number,\n ) => number\n }\n} & Record<string, unknown>\n\ntype FSNode = FS.FSNode & {\n node_ops: FS.NodeOps\n stream_ops: FS.StreamOps\n}\n\ntype FSStream = FS.FSStream & {\n node: FSNode\n shared: {\n refcount: number\n }\n}\n\ntype FSMount = FS.Mount & {\n opts: {\n root: string\n }\n}\n\ntype EmscriptenFS = PostgresMod['FS'] & {\n createNode: (\n parent: FSNode | null,\n name: string,\n mode: number,\n dev?: EmscriptenDeviceSpec,\n ) => FSNode\n}\n\nexport const ERRNO_CODES = {\n EBADF: 8,\n EBADFD: 127,\n EEXIST: 20,\n EINVAL: 28,\n EISDIR: 31,\n ENODEV: 43,\n ENOENT: 44,\n ENOTDIR: 54,\n ENOTEMPTY: 55,\n} as const\n\ninterface FsError extends Error {\n code?: number\n}\n\n/**\n * Create an emscripten filesystem that uses the BaseFilesystem.\n * @param Module The emscripten module\n * @param baseFS The BaseFilesystem implementation\n * @returns The emscripten filesystem\n */\nconst createEmscriptenFS = (Module: PostgresMod, baseFS: BaseFilesystem) => {\n const FS = Module.FS as EmscriptenFS\n const log = baseFS.debug ? console.log : null\n const EMFS = {\n tryFSOperation<T>(f: () => T): T {\n try {\n return f()\n } catch (e: unknown) {\n const fsError = e as FsError\n if (!fsError.code) throw e\n if (fsError.code === ERRNO_CODES.EINVAL)\n throw new FS.ErrnoError(ERRNO_CODES.EINVAL)\n throw new FS.ErrnoError(fsError.code)\n }\n },\n mount(_mount: FSMount): FSNode {\n return EMFS.createNode(null, '/', 16384 | 511, 0)\n },\n syncfs(\n _mount: FS.Mount,\n _populate: boolean,\n _done: (err?: number | null) => unknown,\n ): void {\n // noop\n },\n createNode(\n parent: FSNode | null,\n name: string,\n mode: number,\n _dev?: EmscriptenDeviceSpec,\n ): FSNode {\n if (!FS.isDir(mode) && !FS.isFile(mode)) {\n throw new FS.ErrnoError(28)\n }\n const node = FS.createNode(parent, name, mode)\n node.node_ops = EMFS.node_ops\n node.stream_ops = EMFS.stream_ops\n return node\n },\n getMode: function (path: string): number {\n log?.('getMode', path)\n return EMFS.tryFSOperation(() => {\n const stats = baseFS.lstat(path)\n return stats.mode\n })\n },\n realPath: function (node: FSNode): string {\n const parts: string[] = []\n while (node.parent !== node) {\n parts.push(node.name)\n node = node.parent as FSNode\n }\n parts.push((node.mount as FSMount).opts.root)\n parts.reverse()\n return parts.join('/')\n },\n node_ops: {\n getattr(node: FSNode): FS.Stats {\n log?.('getattr', EMFS.realPath(node))\n const path = EMFS.realPath(node)\n return EMFS.tryFSOperation(() => {\n const stats = baseFS.lstat(path)\n return {\n ...stats,\n dev: 0,\n ino: node.id,\n nlink: 1,\n rdev: node.rdev,\n atime: new Date(stats.atime),\n mtime: new Date(stats.mtime),\n ctime: new Date(stats.ctime),\n }\n })\n },\n setattr(node: FSNode, attr: FS.Stats): void {\n log?.('setattr', EMFS.realPath(node), attr)\n const path = EMFS.realPath(node)\n EMFS.tryFSOperation(() => {\n if (attr.mode !== undefined) {\n baseFS.chmod(path, attr.mode)\n }\n if (attr.size !== undefined) {\n baseFS.truncate(path, attr.size)\n }\n if (attr.timestamp !== undefined) {\n baseFS.utimes(path, attr.timestamp, attr.timestamp)\n }\n if (attr.size !== undefined) {\n baseFS.truncate(path, attr.size)\n }\n })\n },\n lookup(parent: FSNode, name: string): FSNode {\n log?.('lookup', EMFS.realPath(parent), name)\n const path = [EMFS.realPath(parent), name].join('/')\n const mode = EMFS.getMode(path)\n return EMFS.createNode(parent, name, mode)\n },\n mknod(parent: FSNode, name: string, mode: number, dev: unknown): FSNode {\n log?.('mknod', EMFS.realPath(parent), name, mode, dev)\n const node = EMFS.createNode(parent, name, mode, dev as EmscriptenDeviceSpec)\n // create the backing node for this in the fs root as well\n const path = EMFS.realPath(node)\n return EMFS.tryFSOperation(() => {\n if (FS.isDir(node.mode)) {\n baseFS.mkdir(path, { mode })\n } else {\n baseFS.writeFile(path, '', { mode })\n }\n return node\n })\n },\n rename(oldNode: FSNode, newDir: FSNode, newName: string): void {\n log?.('rename', EMFS.realPath(oldNode), EMFS.realPath(newDir), newName)\n const oldPath = EMFS.realPath(oldNode)\n const newPath = [EMFS.realPath(newDir), newName].join('/')\n EMFS.tryFSOperation(() => {\n baseFS.rename(oldPath, newPath)\n })\n oldNode.name = newName\n },\n unlink(parent: FSNode, name: string): void {\n log?.('unlink', EMFS.realPath(parent), name)\n const path = [EMFS.realPath(parent), name].join('/')\n try {\n baseFS.unlink(path)\n } catch (_e: unknown) {\n // no-op\n }\n },\n rmdir(parent: FSNode, name: string): void {\n log?.('rmdir', EMFS.realPath(parent), name)\n const path = [EMFS.realPath(parent), name].join('/')\n return EMFS.tryFSOperation(() => {\n baseFS.rmdir(path)\n })\n },\n readdir(node: FSNode): string[] {\n log?.('readdir', EMFS.realPath(node))\n const path = EMFS.realPath(node)\n return EMFS.tryFSOperation(() => {\n return baseFS.readdir(path)\n })\n },\n symlink(parent: FSNode, newName: string, oldPath: string): void {\n log?.('symlink', EMFS.realPath(parent), newName, oldPath)\n // This is not supported by EMFS\n throw new FS.ErrnoError(63)\n },\n readlink(node: FSNode): string {\n log?.('readlink', EMFS.realPath(node))\n // This is not supported by EMFS\n throw new FS.ErrnoError(63)\n },\n },\n stream_ops: {\n open(stream: FSStream): void {\n log?.('open stream', EMFS.realPath(stream.node))\n const path = EMFS.realPath(stream.node)\n return EMFS.tryFSOperation(() => {\n if (FS.isFile(stream.node.mode)) {\n stream.shared.refcount = 1\n stream.nfd = baseFS.open(path)\n }\n })\n },\n close(stream: FSStream): void {\n log?.('close stream', EMFS.realPath(stream.node))\n return EMFS.tryFSOperation(() => {\n if (\n FS.isFile(stream.node.mode) &&\n stream.nfd &&\n --stream.shared.refcount === 0\n ) {\n baseFS.close(stream.nfd)\n }\n })\n },\n dup(stream: FSStream) {\n log?.('dup stream', EMFS.realPath(stream.node))\n stream.shared.refcount++\n },\n read(\n stream: FSStream, // Stream to read from\n buffer: Uint8Array, // Buffer to read into - Wrong type in @types/emscripten\n offset: number, // Offset in buffer to start writing to\n length: number, // Number of bytes to read\n position: number, // Position in file to read from\n ): number {\n log?.(\n 'read stream',\n EMFS.realPath(stream.node),\n offset,\n length,\n position,\n )\n if (length === 0) return 0\n const ret = EMFS.tryFSOperation(() =>\n baseFS.read(\n stream.nfd!,\n buffer as unknown as Uint8Array,\n offset,\n length,\n position,\n ),\n )\n return ret\n },\n write(\n stream: FSStream, // Stream to write to\n buffer: Uint8Array, // Buffer to read from - Wrong type in @types/emscripten\n offset: number, // Offset in buffer to start writing from\n length: number, // Number of bytes to write\n position: number, // Position in file to write to\n ): number {\n log?.(\n 'write stream',\n EMFS.realPath(stream.node),\n offset,\n length,\n position,\n )\n return EMFS.tryFSOperation(() =>\n baseFS.write(\n stream.nfd!,\n buffer.buffer as unknown as Uint8Array,\n offset,\n length,\n position,\n ),\n )\n },\n llseek(stream: FSStream, offset: number, whence: number): number {\n log?.('llseek stream', EMFS.realPath(stream.node), offset, whence)\n let position = offset\n if (whence === 1) {\n position += stream.position\n } else if (whence === 2) {\n if (FS.isFile(stream.node.mode)) {\n EMFS.tryFSOperation(() => {\n const stat = baseFS.fstat(stream.nfd!)\n position += stat.size\n })\n }\n }\n if (position < 0) {\n throw new FS.ErrnoError(28)\n }\n return position\n },\n mmap(\n stream: FSStream,\n length: number,\n position: number,\n prot: number,\n flags: number,\n ) {\n log?.(\n 'mmap stream',\n EMFS.realPath(stream.node),\n length,\n position,\n prot,\n flags,\n )\n if (!FS.isFile(stream.node.mode)) {\n throw new FS.ErrnoError(ERRNO_CODES.ENODEV)\n }\n\n const ModuleWithMmap = Module as PostgresMod & { mmapAlloc: (size: number) => number }\n const ptr = ModuleWithMmap.mmapAlloc(length)\n\n EMFS.stream_ops.read(\n stream,\n Module.HEAP8 as unknown as Uint8Array,\n ptr,\n length,\n position,\n )\n return { ptr, allocated: true }\n },\n msync(\n stream: FSStream,\n buffer: Uint8Array,\n offset: number,\n length: number,\n mmapFlags: number,\n ) {\n log?.(\n 'msync stream',\n EMFS.realPath(stream.node),\n offset,\n length,\n mmapFlags,\n )\n EMFS.stream_ops.write(stream, buffer, 0, length, offset)\n return 0\n },\n },\n } satisfies EmscriptenFileSystem\n return EMFS\n}\n","import { tar, untar, type TarFile, REGTYPE, DIRTYPE } from 'tinytar'\nimport type { FS } from '../postgresMod.js'\n\nexport type DumpTarCompressionOptions = 'none' | 'gzip' | 'auto'\n\nexport async function dumpTar(\n FS: FS,\n pgDataDir: string,\n dbname: string = 'pgdata',\n compression: DumpTarCompressionOptions = 'auto',\n): Promise<File | Blob> {\n const tarball = createTarball(FS, pgDataDir)\n const [compressed, zipped] = await maybeZip(tarball, compression)\n const filename = dbname + (zipped ? '.tar.gz' : '.tar')\n const type = zipped ? 'application/x-gzip' : 'application/x-tar'\n if (typeof File !== 'undefined') {\n return new File([compressed.buffer as ArrayBuffer], filename, {\n type,\n })\n } else {\n return new Blob([compressed.buffer as ArrayBuffer], {\n type,\n })\n }\n}\n\nconst compressedMimeTypes = [\n 'application/x-gtar',\n 'application/x-tar+gzip',\n 'application/x-gzip',\n 'application/gzip',\n]\n\nexport async function loadTar(\n FS: FS,\n file: File | Blob,\n pgDataDir: string,\n): Promise<void> {\n let tarball: Uint8Array = new Uint8Array(await file.arrayBuffer())\n const filename =\n typeof File !== 'undefined' && file instanceof File ? file.name : undefined\n const compressed =\n compressedMimeTypes.includes(file.type) ||\n filename?.endsWith('.tgz') ||\n filename?.endsWith('.tar.gz')\n if (compressed) {\n tarball = await unzip(tarball) as Uint8Array\n }\n\n let files\n try {\n files = untar(tarball)\n } catch (e) {\n if (e instanceof Error && e.message.includes('File is corrupted')) {\n // The file may be compressed, but had the wrong mime type, try unzipping it\n tarball = await unzip(tarball) as Uint8Array\n files = untar(tarball)\n } else {\n throw e\n }\n }\n\n for (const file of files) {\n const filePath = pgDataDir + file.name\n\n // Ensure the directory structure exists\n const dirPath = filePath.split('/').slice(0, -1)\n for (let i = 1; i <= dirPath.length; i++) {\n const dir = dirPath.slice(0, i).join('/')\n if (!FS.analyzePath(dir).exists) {\n FS.mkdir(dir)\n }\n }\n\n // Write the file or directory\n if (file.type === REGTYPE) {\n FS.writeFile(filePath, file.data)\n FS.utime(\n filePath,\n dateToUnixTimestamp(file.modifyTime),\n dateToUnixTimestamp(file.modifyTime),\n )\n } else if (file.type === DIRTYPE) {\n FS.mkdir(filePath)\n }\n }\n}\n\nfunction readDirectory(FS: FS, path: string) {\n const files: TarFile[] = []\n\n const traverseDirectory = (currentPath: string) => {\n const entries = FS.readdir(currentPath)\n entries.forEach((entry) => {\n if (entry === '.' || entry === '..') {\n return\n }\n const fullPath = currentPath + '/' + entry\n const stats = FS.stat(fullPath)\n const data = FS.isFile(stats.mode)\n ? FS.readFile(fullPath, { encoding: 'binary' })\n : new Uint8Array(0)\n files.push({\n name: fullPath.substring(path.length), // remove the root path\n mode: stats.mode,\n size: stats.size,\n type: FS.isFile(stats.mode) ? REGTYPE : DIRTYPE,\n modifyTime: stats.mtime,\n data,\n })\n if (FS.isDir(stats.mode)) {\n traverseDirectory(fullPath)\n }\n })\n }\n\n traverseDirectory(path)\n return files\n}\n\nexport function createTarball(FS: FS, directoryPath: string) {\n const files = readDirectory(FS, directoryPath)\n const tarball = tar(files)\n return tarball\n}\n\nexport async function maybeZip(\n file: Uint8Array,\n compression: DumpTarCompressionOptions = 'auto',\n): Promise<[Uint8Array, boolean]> {\n if (compression === 'none') {\n return [file, false]\n } else if (typeof CompressionStream !== 'undefined') {\n return [await zipBrowser(file), true]\n } else if (\n typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node\n ) {\n return [await zipNode(file), true]\n } else if (compression === 'auto') {\n return [file, false]\n } else {\n throw new Error('Compression not supported in this environment')\n }\n}\n\nexport async function zipBrowser(file: Uint8Array): Promise<Uint8Array> {\n const cs = new CompressionStream('gzip')\n const writer = cs.writable.getWriter()\n const reader = cs.readable.getReader()\n\n writer.write(file.buffer as ArrayBuffer)\n writer.close()\n\n const chunks: Uint8Array[] = []\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) break\n if (value) chunks.push(value)\n }\n\n const compressed = new Uint8Array(\n chunks.reduce((acc, chunk) => acc + chunk.length, 0),\n )\n let offset = 0\n chunks.forEach((chunk) => {\n compressed.set(chunk, offset)\n offset += chunk.length\n })\n\n return compressed\n}\n\nexport async function zipNode(file: Uint8Array): Promise<Uint8Array> {\n const { promisify } = await import('util')\n const { gzip } = await import('zlib')\n const gzipPromise = promisify(gzip)\n return await gzipPromise(file)\n}\n\nexport async function unzip(file: Uint8Array): Promise<Uint8Array> {\n if (typeof CompressionStream !== 'undefined') {\n return await unzipBrowser(file)\n } else if (\n typeof process !== 'undefined' &&\n process.versions &&\n process.versions.node\n ) {\n return await unzipNode(file)\n } else {\n throw new Error('Unsupported environment for decompression')\n }\n}\n\nexport async function unzipBrowser(file: Uint8Array): Promise<Uint8Array> {\n const ds = new DecompressionStream('gzip')\n const writer = ds.writable.getWriter()\n const reader = ds.readable.getReader()\n\n writer.write(file.buffer as ArrayBuffer)\n writer.close()\n\n const chunks: Uint8Array[] = []\n\n while (true) {\n const { value, done } = await reader.read()\n if (done) break\n if (value) chunks.push(value)\n }\n\n const decompressed = new Uint8Array(\n chunks.reduce((acc, chunk) => acc + chunk.length, 0),\n )\n let offset = 0\n chunks.forEach((chunk) => {\n decompressed.set(chunk, offset)\n offset += chunk.length\n })\n\n return decompressed\n}\n\nexport async function unzipNode(file: Uint8Array): Promise<Uint8Array> {\n const { promisify } = await import('util')\n const { gunzip } = await import('zlib')\n const gunzipPromise = promisify(gunzip)\n return await gunzipPromise(file)\n}\n\nfunction dateToUnixTimestamp(date: Date | number | undefined): number {\n if (!date) {\n return Math.floor(Date.now() / 1000)\n } else {\n return typeof date === 'number' ? date : Math.floor(date.getTime() / 1000)\n }\n}\n"],"mappings":"oqBAAA,IAAAA,EAAAC,GAAA,oBCAA,IAAAC,EAAAC,EAAA,CAAAC,GAAAC,IAAA,cAAAC,IAEA,IAAIC,EAAmB,iBAEnBC,GAAa,SAASA,EAAW,CACnC,OAAOA,CACT,GAAG,EAEH,SAASC,GAAYC,EAAO,CAC1B,OAAOA,IAAUF,CACnB,CAEA,SAASG,EAASD,EAAO,CACvB,OAAQ,OAAOA,GAAS,UACrB,OAAO,UAAU,SAAS,KAAKA,CAAK,GAAK,iBAC9C,CAEA,SAASE,GAAWF,EAAO,CACzB,OAAQ,OAAO,UAAU,SAAS,KAAKA,CAAK,GAAK,eACnD,CAEA,SAASG,EAASH,EAAO,CACvB,OAAQA,IAAU,MAAU,OAAOA,GAAS,QAC9C,CAEA,SAASI,EAAWJ,EAAO,CACzB,OAAO,OAAOA,GAAS,UACzB,CAEA,SAASK,GAASL,EAAO,CACvB,OAAQ,OAAOA,GAAS,UACrBA,EAAQ,IAAQA,EAAQ,GAAK,GAC7BA,GAASH,CACd,CAEA,SAASS,GAAQN,EAAO,CACtB,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAK,GAAK,gBAClD,CAEA,SAASO,EAAYP,EAAO,CAC1B,OAAOG,EAASH,CAAK,GAAK,CAACI,EAAWJ,CAAK,GAAKK,GAASL,EAAM,MAAM,CACvE,CAEA,SAASQ,EAAcR,EAAO,CAC5B,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAK,GAAK,sBAClD,CAEA,SAASS,GAAIC,EAAOC,EAAU,CAC5B,OAAO,MAAM,UAAU,IAAI,KAAKD,EAAOC,CAAQ,CACjD,CAEA,SAASC,GAAKF,EAAOC,EAAU,CAC7B,IAAIE,EAASf,EAEb,OAAIM,EAAWO,CAAQ,GACrB,MAAM,UAAU,MAAM,KAAKD,EAAO,SAASI,EAAMC,EAAOL,EAAO,CAC7D,IAAIM,EAAQL,EAASG,EAAMC,EAAOL,CAAK,EACvC,OAAIM,IACFH,EAASC,GAEJ,CAACE,CACV,CAAC,EAGIH,CACT,CAEA,SAASI,GAAOC,EAAyB,CACvC,OAAO,OAAO,OAAO,MAAM,KAAM,SAAS,CAC5C,CAEA,SAASC,EAAanB,EAAO,CAC3B,IAAIoB,EACAC,EACAR,EAEJ,GAAIZ,EAASD,CAAK,EAAG,CAGnB,IAFAqB,EAASrB,EAAM,OACfa,EAAS,IAAI,WAAWQ,CAAM,EACzBD,EAAI,EAAGA,EAAIC,EAAQD,IACtBP,EAAOO,CAAC,EAAIpB,EAAM,WAAWoB,CAAC,EAAI,IAEpC,OAAOP,CACT,CAEA,OAAIL,EAAcR,CAAK,EACd,IAAI,WAAWA,CAAK,EAGzBG,EAASH,CAAK,GAAKQ,EAAcR,EAAM,MAAM,EACxC,IAAI,WAAWA,EAAM,MAAM,EAGhCO,EAAYP,CAAK,EACZ,IAAI,WAAWA,CAAK,EAGzBG,EAASH,CAAK,GAAKI,EAAWJ,EAAM,QAAQ,EACvCmB,EAAanB,EAAM,SAAS,CAAC,EAG/B,IAAI,UACb,CAEAL,EAAO,QAAQ,iBAAmBE,EAElCF,EAAO,QAAQ,YAAcI,GAC7BJ,EAAO,QAAQ,SAAWM,EAC1BN,EAAO,QAAQ,SAAWQ,EAC1BR,EAAO,QAAQ,WAAaO,GAC5BP,EAAO,QAAQ,WAAaS,EAC5BT,EAAO,QAAQ,QAAUW,GACzBX,EAAO,QAAQ,YAAcY,EAC7BZ,EAAO,QAAQ,cAAgBa,EAC/Bb,EAAO,QAAQ,IAAMc,GACrBd,EAAO,QAAQ,KAAOiB,GACtBjB,EAAO,QAAQ,OAASsB,GACxBtB,EAAO,QAAQ,aAAewB,ICrH9B,IAAAG,EAAAC,EAAA,CAAAC,GAAAC,IAAA,cAAAC,IAEA,IAAIC,EAAY,KAEhBF,EAAO,QAAU,CAGf,UAAWE,EAEX,OAAQ,QAAUA,EAAY,KAC9B,aAAc,UAAYA,EAG1B,QAAU,EACV,QAAU,EACV,QAAU,EACV,QAAU,EACV,QAAU,EACV,QAAU,EACV,SAAU,EACV,SAAU,EAGV,MAAO,SAAS,OAAQ,CAAC,EACzB,MAAO,SAAS,OAAQ,CAAC,EACzB,MAAO,SAAS,OAAQ,CAAC,EAGzB,OAAS,SAAS,OAAQ,CAAC,EAC3B,QAAS,SAAS,OAAQ,CAAC,EAC3B,OAAS,SAAS,OAAQ,CAAC,EAC3B,OAAS,SAAS,OAAQ,CAAC,EAC3B,QAAS,SAAS,OAAQ,CAAC,EAC3B,OAAS,SAAS,OAAQ,CAAC,EAC3B,OAAS,SAAS,OAAQ,CAAC,EAC3B,QAAS,SAAS,OAAQ,CAAC,EAC3B,OAAS,SAAS,OAAQ,CAAC,EAE3B,SAAW,SAAS,OAAQ,CAAC,EAC7B,UAAW,SAAS,OAAQ,CAAC,CAG/B,IC1CA,IAAAC,EAAAC,EAAA,CAAAC,GAAAC,IAAA,cAAAC,IAEA,IAAIC,EAAQ,IACRC,EAAY,IAEZC,GAAa,IACbC,EAAkBF,EAAU,SAC5BG,GAAa,EACbC,GAAa,EAyBbC,EAAc,CAEhB,CAAC,OAAQ,IAAK,EAAG,SAASC,EAAMC,EAAO,CACrC,OAAOC,EAAgBF,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACjD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOI,EAAeF,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,OAAQ,EAAG,IAAK,SAASD,EAAMC,EAAO,CACrC,IAAIK,EAAON,EAAKC,EAAM,CAAC,CAAC,GAAKL,EAC7B,OAAAU,EAAOA,EAAOZ,EAAU,UACjBa,EAAgBD,EAAML,EAAM,CAAC,EAAGL,CAAe,CACxD,EAAG,SAASO,EAAQC,EAAQH,EAAO,CACjC,IAAIO,EAASC,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,EACnE,OAAAO,GAAUd,EAAU,UACbc,CACT,CAAC,EACD,CAAC,MAAO,EAAG,IAAK,SAASR,EAAMC,EAAO,CACpC,OAAOM,EAAgBP,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,EAAGJ,EAAU,CAC7D,EAAG,SAASM,EAAQC,EAAQH,EAAO,CACjC,OAAOQ,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,MAAO,EAAG,IAAK,SAASD,EAAMC,EAAO,CACpC,OAAOM,EAAgBP,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,EAAGH,EAAU,CAC7D,EAAG,SAASK,EAAQC,EAAQH,EAAO,CACjC,OAAOQ,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,OAAQ,GAAI,IAAK,SAASD,EAAMC,EAAO,CACtC,OAAOM,EAAgBP,EAAK,KAAK,OAAQC,EAAM,CAAC,CAAC,CACnD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOQ,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,aAAc,GAAI,IAAK,SAASD,EAAMC,EAAO,CAC5C,OAAOS,EAAkBV,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACnD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOU,EAAiBR,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CACjE,CAAC,EACD,CAAC,WAAY,EAAG,IAAK,SAASD,EAAMC,EAAO,CACzC,MAAO,UACT,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOQ,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,OAAQ,EAAG,IAAK,SAASD,EAAMC,EAAO,CAErC,MAAO,IAAO,SAASD,EAAKC,EAAM,CAAC,CAAC,EAAG,EAAE,GAAK,GAAK,CACrD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAQ,SAAS,OAAO,aAAaE,EAAOC,CAAM,CAAC,EAAG,EAAE,GAAK,GAAK,CACpE,CAAC,EACD,CAAC,WAAY,IAAK,IAAK,SAASJ,EAAMC,EAAO,CAC3C,MAAO,EACT,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOI,EAAeF,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,QAAS,EAAG,IAAK,SAASD,EAAMC,EAAO,CACtC,OAAOP,EAAU,MACnB,EAAG,SAASS,EAAQC,EAAQH,EAAO,CACjC,OAAOW,GACLP,EAAeF,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,EAAG,EAAI,CAC9D,CACF,EAAG,SAASD,EAAMC,EAAO,CACvB,OAAQD,EAAKC,EAAM,CAAC,CAAC,GAAKP,EAAU,QACjCM,EAAKC,EAAM,CAAC,CAAC,GAAKP,EAAU,YACjC,CAAC,EACD,CAAC,QAAS,GAAI,IAAK,SAASM,EAAMC,EAAO,CACvC,OAAOC,EAAgBF,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACjD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOI,EAAeF,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,QAAS,GAAI,IAAK,SAASD,EAAMC,EAAO,CACvC,OAAOC,EAAgBF,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACjD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOI,EAAeF,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,cAAe,EAAG,IAAK,SAASD,EAAMC,EAAO,CAC5C,MAAO,EACT,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOQ,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,cAAe,EAAG,IAAK,SAASD,EAAMC,EAAO,CAC5C,MAAO,EACT,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOQ,EAAeN,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,SAAU,IAAK,IAAK,SAASD,EAAMC,EAAO,CACzC,OAAOC,EAAgBF,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACjD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOI,EAAeF,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CAC/D,CAAC,EACD,CAAC,aAAc,GAAI,IAAK,SAASD,EAAMC,EAAO,CAC5C,OAAOS,EAAkBV,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACnD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOU,EAAiBR,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CACjE,CAAC,EACD,CAAC,aAAc,GAAI,IAAK,SAASD,EAAMC,EAAO,CAC5C,OAAOS,EAAkBV,EAAKC,EAAM,CAAC,CAAC,EAAGA,EAAM,CAAC,CAAC,CACnD,EAAG,SAASE,EAAQC,EAAQH,EAAO,CACjC,OAAOU,EAAiBR,EAAO,MAAMC,EAAQA,EAASH,EAAM,CAAC,CAAC,CAAC,CACjE,CAAC,CACH,EAEIY,IAAuB,SAASC,EAAQ,CAC1C,IAAIC,EAAOD,EAAOA,EAAO,OAAS,CAAC,EACnC,OAAOC,EAAK,CAAC,EAAIA,EAAK,CAAC,CACzB,GAAGhB,CAAW,EAEd,SAASa,GAAcI,EAAO,CAC5B,GAAIA,EAAM,QAAU,EAAG,CACrB,IAAIC,EAAQD,EAAM,MAAM,EAAE,EAE1B,GAAIC,EAAM,CAAC,GAAKvB,EAAU,UAExB,OAAKuB,EAAM,CAAC,GAAK,KAASA,EAAM,CAAC,GAAKvB,EAAU,aAC9CuB,EAAM,CAAC,EAAI,MAERA,EAAM,CAAC,GAAK,KAASA,EAAM,CAAC,GAAKvB,EAAU,aAC9CuB,EAAM,CAAC,EAAI,KAEbA,EAAQA,EAAM,KAAK,EAAE,EACdA,GAASvB,EAAU,OAASuB,EAAQD,EACtC,GAAIC,EAAM,CAAC,GAAKvB,EAAU,UAE/B,OAAIuB,EAAM,CAAC,GAAKvB,EAAU,YACxBuB,EAAM,CAAC,EAAI,KAETA,EAAM,CAAC,GAAKvB,EAAU,YACxBuB,EAAM,CAAC,EAAI,KAENA,GAASvB,EAAU,aAAeuB,EAAQD,CAErD,CACA,OAAOA,CACT,CAEA,SAASd,EAAgBc,EAAOE,EAAQ,CACtC,OAAAA,GAAU,EACNzB,EAAM,YAAYuB,CAAK,IACzBA,EAAQ,IAEVA,GAAS,GAAKA,GAAO,OAAO,EAAGE,CAAM,EAC9BF,EAAQtB,EAAU,SAC3B,CAEA,SAASa,EAAgBS,EAAOE,EAAQC,EAAc,CAKpD,IAJAA,EAAe,SAASA,CAAY,GAAK,EACzCD,GAAU,EACVF,GAAS,SAASA,CAAK,GAAKG,GACzB,SAAS,CAAC,EAAE,OAAO,CAACD,EAAQA,CAAM,EAC9BF,EAAM,OAASE,GACpBF,EAAQ,IAAMA,EAEhB,OAAOA,EAAQtB,EAAU,SAC3B,CAEA,SAASgB,EAAkBM,EAAOE,EAAQ,CACxC,GAAIzB,EAAM,WAAWuB,CAAK,EACxBA,EAAQ,KAAK,MAAM,EAAIA,EAAQ,GAAI,UAEnCA,EAAQ,SAASA,EAAO,EAAE,EACtB,SAASA,CAAK,GAChB,GAAIA,GAAS,EACX,MAAO,QAGTA,EAAQ,KAAK,MAAM,EAAI,IAAI,KAAS,GAAI,EAG5C,OAAOT,EAAgBS,EAAOE,EAAQ,CAAC,CACzC,CAEA,SAASb,EAAee,EAAOC,EAAmB,CAChD,IAAIb,EAAS,OAAO,aAAa,MAAM,KAAMY,CAAK,EAClD,GAAIC,EACF,OAAOb,EAET,IAAIc,EAAQd,EAAO,QAAQd,EAAU,SAAS,EAC9C,OAAO4B,GAAS,EAAId,EAAO,OAAO,EAAGc,CAAK,EAAId,CAChD,CAEA,SAASC,EAAeW,EAAO,CAC7B,IAAIZ,EAAS,OAAO,aAAa,MAAM,KAAMY,CAAK,EAClD,OAAO,SAASZ,EAAO,QAAQ,QAAS,EAAE,EAAG,CAAC,GAAK,CACrD,CAEA,SAASG,EAAiBS,EAAO,CAC/B,OAAKA,EAAM,QAAU,GAAOA,EAAM,CAAC,GAAK,EAC/B,KAEF,IAAI,KAAK,IAAOX,EAAeW,CAAK,CAAC,CAC9C,CAEA,SAASG,GAAkBpB,EAAQC,EAAQoB,EAAc,CACvD,IAAIC,EAAO,SAASrB,EAAQ,EAAE,GAAK,EAC/BsB,EAAK,KAAK,IAAID,EAAOZ,GAAqBV,EAAO,MAAM,EACvDK,EAAS,EAITmB,EAAW,EACXC,EAAS,EACTJ,GACFzB,EAAY,MAAM,SAASE,EAAO,CAChC,OAAIA,EAAM,CAAC,GAAK,YACd0B,EAAWF,EAAOxB,EAAM,CAAC,EACzB2B,EAASD,EAAW1B,EAAM,CAAC,EACpB,IAEF,EACT,CAAC,EAIH,QADI4B,EAAa,GACRC,EAAIL,EAAMK,EAAIJ,EAAII,IAAK,CAG9B,IAAIC,EAAQD,GAAKH,GAAcG,EAAIF,EAAUC,EAAa1B,EAAO2B,CAAC,EAClEtB,GAAUA,EAASuB,GAAQ,MAC7B,CACA,OAAOvB,CACT,CAEAjB,EAAO,QAAQ,WAAaI,GAC5BJ,EAAO,QAAQ,gBAAkBK,EACjCL,EAAO,QAAQ,WAAaM,GAC5BN,EAAO,QAAQ,WAAaO,GAC5BP,EAAO,QAAQ,YAAcQ,EAC7BR,EAAO,QAAQ,oBAAsBsB,GAErCtB,EAAO,QAAQ,kBAAoBgC,GACnChC,EAAO,QAAQ,gBAAkBW,EACjCX,EAAO,QAAQ,gBAAkBgB,EACjChB,EAAO,QAAQ,kBAAoBmB,EACnCnB,EAAO,QAAQ,eAAiBc,EAChCd,EAAO,QAAQ,eAAiBkB,EAChClB,EAAO,QAAQ,iBAAmBoB,ICzQlC,IAAAqB,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAEA,IAAIC,GAAY,IACZC,EAAQ,IACRC,EAAQ,IAEZ,SAASC,GAAWC,EAAM,CAExB,OAAOF,EAAM,UACf,CAEA,SAASG,GAASD,EAAM,CAEtB,OAAO,KAAK,KAAKA,EAAK,KAAK,OAASF,EAAM,UAAU,EAAIA,EAAM,UAChE,CAEA,SAASI,GAAeC,EAAO,CAC7B,IAAIC,EAAY,EAGhB,OAAAD,EAAM,QAAQ,SAASH,EAAM,CAC3BI,GAAaL,GAAWC,CAAI,EAAIC,GAASD,CAAI,CAC/C,CAAC,EAGDI,GAAaN,EAAM,WAAa,EASzB,IAAI,WAAWM,CAAS,CACjC,CAEA,SAASC,GAAYC,EAAQN,EAAMO,EAAQ,CACzCA,EAAS,SAASA,CAAM,GAAK,EAE7B,IAAIC,EAAgBD,EACpBT,EAAM,YAAY,QAAQ,SAASW,EAAO,CAGxC,QAFIC,EAAQD,EAAM,CAAC,EAAET,EAAMS,CAAK,EAC5BE,EAASD,EAAM,OACVE,EAAI,EAAGA,EAAID,EAAQC,GAAK,EAC/BN,EAAOE,EAAgBI,CAAC,EAAIF,EAAM,WAAWE,CAAC,EAAI,IAEpDJ,GAAiBC,EAAM,CAAC,CAC1B,CAAC,EAED,IAAIA,EAAQZ,EAAM,KAAKC,EAAM,YAAa,SAASW,EAAO,CACxD,OAAOA,EAAM,CAAC,GAAK,UACrB,CAAC,EAED,GAAIA,EAAO,CAET,IAAII,EAAWf,EAAM,kBAAkBQ,EAAQC,EAAQ,EAAI,EACvDG,EAAQZ,EAAM,gBAAgBe,EAAUJ,EAAM,CAAC,EAAI,CAAC,EACtDb,GAAU,UAAY,IACxBY,EAAgBD,EAASE,EAAM,CAAC,EAChC,QAASG,EAAI,EAAGA,EAAIF,EAAM,OAAQE,GAAK,EAErCN,EAAOE,CAAa,EAAIE,EAAM,WAAWE,CAAC,EAAI,IAC9CJ,GAEJ,CAEA,OAAOD,EAASR,GAAWC,CAAI,CACjC,CAEA,SAASc,GAAUR,EAAQN,EAAMO,EAAQ,CACvC,OAAAA,EAAS,SAASA,EAAQ,EAAE,GAAK,EACjCD,EAAO,IAAIN,EAAK,KAAMO,CAAM,EACrBA,EAASN,GAASD,CAAI,CAC/B,CAEA,SAASe,GAAIZ,EAAO,CAClBA,EAAQN,EAAM,IAAIM,EAAO,SAASH,EAAM,CACtC,OAAOH,EAAM,OAAO,CAAC,EAAGG,EAAM,CAC5B,KAAMH,EAAM,aAAaG,EAAK,IAAI,CACpC,CAAC,CACH,CAAC,EAED,IAAIM,EAASJ,GAAeC,CAAK,EAE7BI,EAAS,EACb,OAAAJ,EAAM,QAAQ,SAASH,EAAM,CAC3BO,EAASF,GAAYC,EAAQN,EAAMO,CAAM,EACzCA,EAASO,GAAUR,EAAQN,EAAMO,CAAM,CACzC,CAAC,EAEMD,CACT,CAEAZ,GAAO,QAAQ,IAAMqB,KC9FrB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAEA,IAAIC,GAAY,IACZC,EAAQ,IACRC,EAAQ,IAERC,GAAiB,CACnB,YAAa,GACb,YAAa,GACb,cAAe,GACf,cAAe,EACjB,EAEIC,GAAgB,CAClB,KAAM,GACN,SAAU,GACV,MAAO,EACT,EAEIC,EAAW,CACb,oBAAqB,0BACrB,cAAe,qBACf,oBAAqB,wBACvB,EAEA,SAASC,GAAWC,EAAQ,CAE1B,OAAOL,EAAM,UACf,CAEA,SAASM,GAASC,EAAM,CAEtB,OAAO,KAAK,KAAKA,EAAOP,EAAM,UAAU,EAAIA,EAAM,UACpD,CAEA,SAASQ,GAAYC,EAAQC,EAAQ,CAGnC,QAFIC,EAAOD,EACPE,EAAK,KAAK,IAAIH,EAAO,OAAQC,EAASV,EAAM,WAAa,CAAC,EACrD,EAAIW,EAAM,EAAIC,EAAI,IACzB,GAAIH,EAAO,CAAC,GAAK,EACf,MAAO,GAGX,MAAO,EACT,CAEA,SAASI,GAAWJ,EAAQC,EAAQI,EAAS,CAC3C,GAAIL,EAAO,OAASC,EAASV,EAAM,WAAY,CAC7C,GAAIc,EAAQ,cACV,MAAM,IAAI,MAAMX,EAAS,mBAAmB,EAE9C,OAAO,IACT,CAEAO,EAAS,SAASA,CAAM,GAAK,EAE7B,IAAIK,EAAS,CAAC,EACVC,EAAgBN,EAuBpB,GAtBAV,EAAM,YAAY,QAAQ,SAASiB,EAAO,CACxCF,EAAOE,EAAM,CAAC,CAAC,EAAIA,EAAM,CAAC,EAAER,EAAQO,EAAeC,CAAK,EACxDD,GAAiBC,EAAM,CAAC,CAC1B,CAAC,EAEGF,EAAO,MAAQ,IACjBA,EAAO,KAAO,GAGZD,EAAQ,aACVd,EAAM,YAAY,QAAQ,SAASiB,EAAO,CACxC,GAAIlB,EAAM,WAAWkB,EAAM,CAAC,CAAC,GAAK,CAACA,EAAM,CAAC,EAAEF,EAAQE,CAAK,EAAG,CAC1D,IAAIC,EAAQ,IAAI,MAAMf,EAAS,aAAa,EAC5C,MAAAe,EAAM,KAAO,CACX,OAAQR,EAASO,EAAM,CAAC,EACxB,MAAOA,EAAM,CAAC,CAChB,EACMC,CACR,CACF,CAAC,EAGCJ,EAAQ,cAAe,CACzB,IAAIK,EAAWnB,EAAM,kBAAkBS,EAAQC,EAAQ,EAAI,EAC3D,GAAIS,GAAYJ,EAAO,SAAU,CAC/B,IAAIG,EAAQ,IAAI,MAAMf,EAAS,mBAAmB,EAClD,MAAAe,EAAM,KAAO,CACX,OAAQR,EACR,OAAQK,EACR,SAAUI,CACZ,EACMD,CACR,CACF,CAEA,OAAOH,CACT,CAEA,SAASK,GAASX,EAAQC,EAAQL,EAAQS,EAAS,CACjD,OAAKA,EAAQ,YAITT,EAAO,MAAQ,EACV,IAAI,WAENI,EAAO,MAAMC,EAAQA,EAASL,EAAO,IAAI,EANvC,IAOX,CAEA,SAASgB,GAAWhB,EAAQiB,EAAM,CAChC,IAAIP,EAAS,CAAC,EACd,OAAAf,EAAM,YAAY,QAAQ,SAASiB,EAAO,CACxC,IAAIM,EAAON,EAAM,CAAC,EACbf,GAAcqB,CAAI,IACrBR,EAAOQ,CAAI,EAAIlB,EAAOkB,CAAI,EAE9B,CAAC,EAEDR,EAAO,eAAiBV,EAAO,OAASP,GAAU,aAE9CwB,IACFP,EAAO,KAAOO,GAGTP,CACT,CAEA,SAASS,GAAMf,EAAQK,EAAS,CAC9BA,EAAUf,EAAM,OAAO,CAAC,EAAGE,GAAgBa,CAAO,EAMlD,QAJIC,EAAS,CAAC,EACVL,EAAS,EACTH,EAAOE,EAAO,OAEXF,EAAOG,GAAUV,EAAM,YAAY,CACxCS,EAASV,EAAM,aAAaU,CAAM,EAClC,IAAIJ,EAASQ,GAAWJ,EAAQC,EAAQI,CAAO,EAC/C,GAAI,CAACT,EACH,MAEFK,GAAUN,GAAWC,CAAM,EAE3B,IAAIiB,EAAOF,GAASX,EAAQC,EAAQL,EAAQS,CAAO,EAInD,GAHAC,EAAO,KAAKM,GAAWhB,EAAQiB,CAAI,CAAC,EACpCZ,GAAUJ,GAASD,EAAO,IAAI,EAE1BG,GAAYC,EAAQC,CAAM,EAC5B,KAEJ,CAEA,OAAOK,CACT,CAEAnB,GAAO,QAAQ,MAAQ4B,KCxJvB,IAAAC,GAAAC,EAAA,CAAAC,GAAAC,KAAA,cAAAC,IAIA,IAAIC,GAAQ,IACRC,GAAY,IACZC,GAAM,KACNC,GAAQ,KAEZH,GAAM,OAAOF,GAAO,QAASI,GAAKC,GAAOF,EAAS,ICTlD,IAAAG,GAAA,GAAAC,GAAAD,GAAA,YAAAE,IAAA,eAAAC,GAAAH,IAAAI,IAAA,IAAAC,EAAoB,mBACpBC,EAAsB,qBCDtBC,ICAAC,IAAA,IAAAC,EAA2D,UAK3D,eAAsBC,GACpBC,EACAC,EACAC,EAAiB,SACjBC,EAAyC,OACnB,CACtB,IAAMC,EAAUC,GAAcL,EAAIC,CAAS,EACrC,CAACK,EAAYC,CAAM,EAAI,MAAMC,GAASJ,EAASD,CAAW,EAC1DM,EAAWP,GAAUK,EAAS,UAAY,QAC1CG,EAAOH,EAAS,qBAAuB,oBAC7C,OAAI,OAAO,KAAS,IACX,IAAI,KAAK,CAACD,EAAW,MAAqB,EAAGG,EAAU,CAC5D,KAAAC,CACF,CAAC,EAEM,IAAI,KAAK,CAACJ,EAAW,MAAqB,EAAG,CAClD,KAAAI,CACF,CAAC,CAEL,CAgEA,SAASC,GAAcC,EAAQC,EAAc,CAC3C,IAAMC,EAAmB,CAAC,EAEpBC,EAAqBC,GAAwB,CACjCJ,EAAG,QAAQI,CAAW,EAC9B,QAASC,GAAU,CACzB,GAAIA,IAAU,KAAOA,IAAU,KAC7B,OAEF,IAAMC,EAAWF,EAAc,IAAMC,EAC/BE,EAAQP,EAAG,KAAKM,CAAQ,EACxBE,EAAOR,EAAG,OAAOO,EAAM,IAAI,EAC7BP,EAAG,SAASM,EAAU,CAAE,SAAU,QAAS,CAAC,EAC5C,IAAI,WAAW,CAAC,EACpBJ,EAAM,KAAK,CACT,KAAMI,EAAS,UAAUL,EAAK,MAAM,EACpC,KAAMM,EAAM,KACZ,KAAMA,EAAM,KACZ,KAAMP,EAAG,OAAOO,EAAM,IAAI,EAAI,UAAU,UACxC,WAAYA,EAAM,MAClB,KAAAC,CACF,CAAC,EACGR,EAAG,MAAMO,EAAM,IAAI,GACrBJ,EAAkBG,CAAQ,CAE9B,CAAC,CACH,EAEA,OAAAH,EAAkBF,CAAI,EACfC,CACT,CAEO,SAASO,GAAcT,EAAQU,EAAuB,CAC3D,IAAMR,EAAQH,GAAcC,EAAIU,CAAa,EAE7C,SADgB,OAAIR,CAAK,CAE3B,CAEA,eAAsBS,GACpBC,EACAC,EAAyC,OACT,CAChC,GAAIA,IAAgB,OAClB,MAAO,CAACD,EAAM,EAAK,EACd,GAAI,OAAO,kBAAsB,IACtC,MAAO,CAAC,MAAME,GAAWF,CAAI,EAAG,EAAI,EAC/B,GACL,OAAO,QAAY,KACnB,QAAQ,UACR,QAAQ,SAAS,KAEjB,MAAO,CAAC,MAAMG,GAAQH,CAAI,EAAG,EAAI,EAC5B,GAAIC,IAAgB,OACzB,MAAO,CAACD,EAAM,EAAK,EAEnB,MAAM,IAAI,MAAM,+CAA+C,CAEnE,CAEA,eAAsBE,GAAWF,EAAuC,CACtE,IAAMI,EAAK,IAAI,kBAAkB,MAAM,EACjCC,EAASD,EAAG,SAAS,UAAU,EAC/BE,EAASF,EAAG,SAAS,UAAU,EAErCC,EAAO,MAAML,EAAK,MAAqB,EACvCK,EAAO,MAAM,EAEb,IAAME,EAAuB,CAAC,EAE9B,OAAa,CACX,GAAM,CAAE,MAAAC,EAAO,KAAAC,CAAK,EAAI,MAAMH,EAAO,KAAK,EAC1C,GAAIG,EAAM,MACND,GAAOD,EAAO,KAAKC,CAAK,CAC9B,CAEA,IAAME,EAAa,IAAI,WACrBH,EAAO,OAAO,CAACI,EAAKC,IAAUD,EAAMC,EAAM,OAAQ,CAAC,CACrD,EACIC,EAAS,EACb,OAAAN,EAAO,QAASK,GAAU,CACxBF,EAAW,IAAIE,EAAOC,CAAM,EAC5BA,GAAUD,EAAM,MAClB,CAAC,EAEMF,CACT,CAEA,eAAsBP,GAAQH,EAAuC,CACnE,GAAM,CAAE,UAAAc,CAAU,EAAI,KAAM,QAAO,MAAM,EACnC,CAAE,KAAAC,CAAK,EAAI,KAAM,QAAO,MAAM,EAEpC,OAAO,MADaD,EAAUC,CAAI,EACTf,CAAI,CAC/B,CDhLO,IAAMgB,GAAc,cACdC,EAASD,GAAc,QA6CvBE,EAAN,KAAwD,CAI7D,YAAYC,EAAkB,CAC5B,KAAK,QAAUA,CACjB,CAEA,MAAM,KAAKC,EAAYC,EAAyC,CAC9D,YAAK,GAAKD,EACH,CAAE,eAAgBC,CAAkB,CAC7C,CAEA,MAAM,SAASC,EAA8B,CAAC,CAE9C,MAAM,eAAgB,CAAC,CAEvB,MAAM,SAAU,CAAC,CAEjB,MAAM,QAAQC,EAAgBC,EAAyC,CACrE,OAAOC,GAAQ,KAAK,GAAI,OAAO,GAAIR,EAAQM,EAAQC,CAAW,CAChE,CACF,EDlEO,IAAME,EAAN,cAAqBC,CAA4B,CAGtD,YAAYC,EAAiB,CAC3B,MAAMA,CAAO,EACb,KAAK,QAAe,UAAQA,CAAO,EAC3B,aAAgB,OAAK,KAAK,OAAO,CAAC,GACrC,YAAU,KAAK,OAAO,CAE7B,CAEA,MAAM,KAAKC,EAAYC,EAA4B,CACjD,YAAK,GAAKD,EAYH,CAAE,eAX6B,CACpC,GAAGC,EACH,OAAQ,CACN,GAAIA,EAAK,QAAU,CAAC,EACnBC,GAAqB,CACpB,IAAMC,EAASD,EAAI,GAAG,YAAY,OAClCA,EAAI,GAAG,MAAME,CAAM,EACnBF,EAAI,GAAG,MAAMC,EAAQ,CAAE,KAAM,KAAK,OAAQ,EAAGC,CAAM,CACrD,CACF,CACF,CACiC,CACnC,CAEA,MAAM,SAAyB,CAC7B,KAAK,GAAI,OAAO,GAAG,KAAK,CAC1B,CACF","names":["init_cjs_shims","__esmMin","require_utils","__commonJSMin","exports","module","init_cjs_shims","MAX_SAFE_INTEGER","undefined","isUndefined","value","isString","isDateTime","isObject","isFunction","isLength","isArray","isArrayLike","isArrayBuffer","map","array","iteratee","find","result","item","index","found","extend","target","toUint8Array","i","length","require_constants","__commonJSMin","exports","module","init_cjs_shims","NULL_CHAR","require_types","__commonJSMin","exports","module","init_cjs_shims","utils","constants","recordSize","defaultFileMode","defaultUid","defaultGid","posixHeader","file","field","formatTarString","buffer","offset","parseTarString","mode","formatTarNumber","result","parseTarNumber","formatTarDateTime","parseTarDateTime","fixUstarMagic","effectiveHeaderSize","header","last","value","chars","length","defaultValue","bytes","returnUnprocessed","index","calculateChecksum","skipChecksum","from","to","skipFrom","skipTo","whitespace","i","byte","require_tar","__commonJSMin","exports","module","init_cjs_shims","constants","utils","types","headerSize","file","dataSize","allocateBuffer","files","totalSize","writeHeader","buffer","offset","currentOffset","field","value","length","i","checksum","writeData","tar","require_untar","__commonJSMin","exports","module","init_cjs_shims","constants","utils","types","defaultOptions","excludeFields","messages","headerSize","header","dataSize","size","isEndOfFile","buffer","offset","from","to","readHeader","options","result","currentOffset","field","error","checksum","readData","createFile","data","name","untar","require_tinytar","__commonJSMin","exports","module","init_cjs_shims","utils","constants","tar","untar","nodefs_exports","__export","NodeFS","__toCommonJS","init_cjs_shims","fs","path","init_cjs_shims","init_cjs_shims","import_tinytar","dumpTar","FS","pgDataDir","dbname","compression","tarball","createTarball","compressed","zipped","maybeZip","filename","type","readDirectory","FS","path","files","traverseDirectory","currentPath","entry","fullPath","stats","data","createTarball","directoryPath","maybeZip","file","compression","zipBrowser","zipNode","cs","writer","reader","chunks","value","done","compressed","acc","chunk","offset","promisify","gzip","WASM_PREFIX","PGDATA","EmscriptenBuiltinFilesystem","dataDir","pg","emscriptenOptions","_relaxedDurability","dbname","compression","dumpTar","NodeFS","EmscriptenBuiltinFilesystem","dataDir","pg","opts","mod","nodefs","PGDATA"]}
@@ -0,0 +1,12 @@
1
+ import { E as EmscriptenBuiltinFilesystem, b as PGlite, c as PostgresMod } from '../pglite-RfkRSGmH.cjs';
2
+
3
+ declare class NodeFS extends EmscriptenBuiltinFilesystem {
4
+ protected rootDir: string;
5
+ constructor(dataDir: string);
6
+ init(pg: PGlite, opts: Partial<PostgresMod>): Promise<{
7
+ emscriptenOpts: Partial<PostgresMod>;
8
+ }>;
9
+ closeFs(): Promise<void>;
10
+ }
11
+
12
+ export { NodeFS };
@@ -0,0 +1,12 @@
1
+ import { E as EmscriptenBuiltinFilesystem, b as PGlite, c as PostgresMod } from '../pglite-RfkRSGmH.js';
2
+
3
+ declare class NodeFS extends EmscriptenBuiltinFilesystem {
4
+ protected rootDir: string;
5
+ constructor(dataDir: string);
6
+ init(pg: PGlite, opts: Partial<PostgresMod>): Promise<{
7
+ emscriptenOpts: Partial<PostgresMod>;
8
+ }>;
9
+ closeFs(): Promise<void>;
10
+ }
11
+
12
+ export { NodeFS };
package/dist/fs/nodefs.js CHANGED
@@ -1,2 +1,2 @@
1
- import{d as i,e as p}from"../chunk-XGK36GMM.js";import{j as n}from"../chunk-VCBR6USK.js";n();import*as s from"fs";import*as o from"path";var m=class extends p{constructor(t){super(t),this.rootDir=o.resolve(t),s.existsSync(o.join(this.rootDir))||s.mkdirSync(this.rootDir)}async init(t,e){return this.pg=t,{emscriptenOpts:{...e,preRun:[...e.preRun||[],r=>{let c=r.FS.filesystems.NODEFS;r.FS.mkdir(i),r.FS.mount(c,{root:this.rootDir},i)}]}}}async closeFs(){this.pg.Module.FS.quit()}};export{m as NodeFS};
1
+ import{d as i,e as p}from"../chunk-J77SUHST.js";import{j as n}from"../chunk-VCBR6USK.js";n();import*as s from"fs";import*as o from"path";var m=class extends p{constructor(t){super(t),this.rootDir=o.resolve(t),s.existsSync(o.join(this.rootDir))||s.mkdirSync(this.rootDir)}async init(t,e){return this.pg=t,{emscriptenOpts:{...e,preRun:[...e.preRun||[],r=>{let c=r.FS.filesystems.NODEFS;r.FS.mkdir(i),r.FS.mount(c,{root:this.rootDir},i)}]}}}async closeFs(){this.pg.Module.FS.quit()}};export{m as NodeFS};
2
2
  //# sourceMappingURL=nodefs.js.map
@@ -1,4 +1,4 @@
1
- "use strict";var je=Object.create;var V=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames;var qe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var Se=e=>{throw TypeError(e)};var Xe=(e,t)=>()=>(e&&(t=e(e=0)),t);var H=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Je=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},be=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of We(t))!Ye.call(e,o)&&o!==r&&V(e,o,{get:()=>t[o],enumerable:!(n=Ge(t,o))||n.enumerable});return e};var ie=(e,t,r)=>(r=e!=null?je(qe(e)):{},be(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e)),$e=e=>be(V({},"__esModule",{value:!0}),e);var oe=(e,t,r)=>t.has(e)||Se("Cannot "+r);var u=(e,t,r)=>(oe(e,t,"read from private field"),r?r.call(e):t.get(e)),P=(e,t,r)=>t.has(e)?Se("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),z=(e,t,r,n)=>(oe(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),p=(e,t,r)=>(oe(e,t,"access private method"),r);var se=(e,t,r,n)=>({set _(o){z(e,t,o,r)},get _(){return u(e,t,n)}});var y=Xe(()=>{"use strict"});var G=H((_t,F)=>{"use strict";y();var we=9007199254740991,Fe=(function(e){return e})();function Ke(e){return e===Fe}function Ae(e){return typeof e=="string"||Object.prototype.toString.call(e)=="[object String]"}function Ve(e){return Object.prototype.toString.call(e)=="[object Date]"}function Z(e){return e!==null&&typeof e=="object"}function Q(e){return typeof e=="function"}function Ze(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=we}function Qe(e){return Object.prototype.toString.call(e)=="[object Array]"}function Pe(e){return Z(e)&&!Q(e)&&Ze(e.length)}function ae(e){return Object.prototype.toString.call(e)=="[object ArrayBuffer]"}function et(e,t){return Array.prototype.map.call(e,t)}function tt(e,t){var r=Fe;return Q(t)&&Array.prototype.every.call(e,function(n,o,i){var a=t(n,o,i);return a&&(r=n),!a}),r}function rt(e){return Object.assign.apply(null,arguments)}function Ee(e){var t,r,n;if(Ae(e)){for(r=e.length,n=new Uint8Array(r),t=0;t<r;t++)n[t]=e.charCodeAt(t)&255;return n}return ae(e)?new Uint8Array(e):Z(e)&&ae(e.buffer)?new Uint8Array(e.buffer):Pe(e)?new Uint8Array(e):Z(e)&&Q(e.toString)?Ee(e.toString()):new Uint8Array}F.exports.MAX_SAFE_INTEGER=we;F.exports.isUndefined=Ke;F.exports.isString=Ae;F.exports.isObject=Z;F.exports.isDateTime=Ve;F.exports.isFunction=Q;F.exports.isArray=Qe;F.exports.isArrayLike=Pe;F.exports.isArrayBuffer=ae;F.exports.map=et;F.exports.find=tt;F.exports.extend=rt;F.exports.toUint8Array=Ee});var W=H((Ht,Ne)=>{"use strict";y();var ce="\0";Ne.exports={NULL_CHAR:ce,TMAGIC:"ustar"+ce+"00",OLDGNU_MAGIC:"ustar "+ce,REGTYPE:0,LNKTYPE:1,SYMTYPE:2,CHRTYPE:3,BLKTYPE:4,DIRTYPE:5,FIFOTYPE:6,CONTTYPE:7,TSUID:parseInt("4000",8),TSGID:parseInt("2000",8),TSVTX:parseInt("1000",8),TUREAD:parseInt("0400",8),TUWRITE:parseInt("0200",8),TUEXEC:parseInt("0100",8),TGREAD:parseInt("0040",8),TGWRITE:parseInt("0020",8),TGEXEC:parseInt("0010",8),TOREAD:parseInt("0004",8),TOWRITE:parseInt("0002",8),TOEXEC:parseInt("0001",8),TPERMALL:parseInt("0777",8),TPERMMASK:parseInt("0777",8)}});var le=H((Bt,A)=>{"use strict";y();var Te=G(),g=W(),nt=512,ue=g.TPERMALL,ve=0,De=0,de=[["name",100,0,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["mode",8,100,function(e,t){var r=e[t[0]]||ue;return r=r&g.TPERMMASK,L(r,t[1],ue)},function(e,t,r){var n=v(e.slice(t,t+r[1]));return n&=g.TPERMMASK,n}],["uid",8,108,function(e,t){return L(e[t[0]],t[1],ve)},function(e,t,r){return v(e.slice(t,t+r[1]))}],["gid",8,116,function(e,t){return L(e[t[0]],t[1],De)},function(e,t,r){return v(e.slice(t,t+r[1]))}],["size",12,124,function(e,t){return L(e.data.length,t[1])},function(e,t,r){return v(e.slice(t,t+r[1]))}],["modifyTime",12,136,function(e,t){return ee(e[t[0]],t[1])},function(e,t,r){return te(e.slice(t,t+r[1]))}],["checksum",8,148,function(e,t){return" "},function(e,t,r){return v(e.slice(t,t+r[1]))}],["type",1,156,function(e,t){return""+(parseInt(e[t[0]],10)||0)%8},function(e,t,r){return(parseInt(String.fromCharCode(e[t]),10)||0)%8}],["linkName",100,157,function(e,t){return""},function(e,t,r){return C(e.slice(t,t+r[1]))}],["ustar",8,257,function(e,t){return g.TMAGIC},function(e,t,r){return it(C(e.slice(t,t+r[1]),!0))},function(e,t){return e[t[0]]==g.TMAGIC||e[t[0]]==g.OLDGNU_MAGIC}],["owner",32,265,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["group",32,297,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["majorNumber",8,329,function(e,t){return""},function(e,t,r){return v(e.slice(t,t+r[1]))}],["minorNumber",8,337,function(e,t){return""},function(e,t,r){return v(e.slice(t,t+r[1]))}],["prefix",131,345,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["accessTime",12,476,function(e,t){return ee(e[t[0]],t[1])},function(e,t,r){return te(e.slice(t,t+r[1]))}],["createTime",12,488,function(e,t){return ee(e[t[0]],t[1])},function(e,t,r){return te(e.slice(t,t+r[1]))}]],xe=(function(e){var t=e[e.length-1];return t[2]+t[1]})(de);function it(e){if(e.length==8){var t=e.split("");if(t[5]==g.NULL_CHAR)return(t[6]==" "||t[6]==g.NULL_CHAR)&&(t[6]="0"),(t[7]==" "||t[7]==g.NULL_CHAR)&&(t[7]="0"),t=t.join(""),t==g.TMAGIC?t:e;if(t[7]==g.NULL_CHAR)return t[5]==g.NULL_CHAR&&(t[5]=" "),t[6]==g.NULL_CHAR&&(t[6]=" "),t==g.OLDGNU_MAGIC?t:e}return e}function q(e,t){return t-=1,Te.isUndefined(e)&&(e=""),e=(""+e).substr(0,t),e+g.NULL_CHAR}function L(e,t,r){for(r=parseInt(r)||0,t-=1,e=(parseInt(e)||r).toString(8).substr(-t,t);e.length<t;)e="0"+e;return e+g.NULL_CHAR}function ee(e,t){if(Te.isDateTime(e))e=Math.floor(1*e/1e3);else if(e=parseInt(e,10),isFinite(e)){if(e<=0)return""}else e=Math.floor(1*new Date/1e3);return L(e,t,0)}function C(e,t){var r=String.fromCharCode.apply(null,e);if(t)return r;var n=r.indexOf(g.NULL_CHAR);return n>=0?r.substr(0,n):r}function v(e){var t=String.fromCharCode.apply(null,e);return parseInt(t.replace(/^0+$/g,""),8)||0}function te(e){return e.length==0||e[0]==0?null:new Date(1e3*v(e))}function ot(e,t,r){var n=parseInt(t,10)||0,o=Math.min(n+xe,e.length),i=0,a=0,s=0;r&&de.every(function(f){return f[0]=="checksum"?(a=n+f[2],s=a+f[1],!1):!0});for(var c=32,d=n;d<o;d++){var m=d>=a&&d<s?c:e[d];i=(i+m)%262144}return i}A.exports.recordSize=nt;A.exports.defaultFileMode=ue;A.exports.defaultUid=ve;A.exports.defaultGid=De;A.exports.posixHeader=de;A.exports.effectiveHeaderSize=xe;A.exports.calculateChecksum=ot;A.exports.formatTarString=q;A.exports.formatTarNumber=L;A.exports.formatTarDateTime=ee;A.exports.parseTarString=C;A.exports.parseTarNumber=v;A.exports.parseTarDateTime=te});var Me=H((Gt,Ie)=>{"use strict";y();var st=W(),re=G(),O=le();function ke(e){return O.recordSize}function Oe(e){return Math.ceil(e.data.length/O.recordSize)*O.recordSize}function at(e){var t=0;return e.forEach(function(r){t+=ke(r)+Oe(r)}),t+=O.recordSize*2,new Uint8Array(t)}function ct(e,t,r){r=parseInt(r)||0;var n=r;O.posixHeader.forEach(function(c){for(var d=c[3](t,c),m=d.length,f=0;f<m;f+=1)e[n+f]=d.charCodeAt(f)&255;n+=c[1]});var o=re.find(O.posixHeader,function(c){return c[0]=="checksum"});if(o){var i=O.calculateChecksum(e,r,!0),a=O.formatTarNumber(i,o[1]-2)+st.NULL_CHAR+" ";n=r+o[2];for(var s=0;s<a.length;s+=1)e[n]=a.charCodeAt(s)&255,n++}return r+ke(t)}function ut(e,t,r){return r=parseInt(r,10)||0,e.set(t.data,r),r+Oe(t)}function dt(e){e=re.map(e,function(n){return re.extend({},n,{data:re.toUint8Array(n.data)})});var t=at(e),r=0;return e.forEach(function(n){r=ct(t,n,r),r=ut(t,n,r)}),t}Ie.exports.tar=dt});var ze=H((qt,Ue)=>{"use strict";y();var lt=W(),me=G(),E=le(),pt={extractData:!0,checkHeader:!0,checkChecksum:!0,checkFileSize:!0},mt={size:!0,checksum:!0,ustar:!0},pe={unexpectedEndOfFile:"Unexpected end of file.",fileCorrupted:"File is corrupted.",checksumCheckFailed:"Checksum check failed."};function ft(e){return E.recordSize}function ht(e){return Math.ceil(e/E.recordSize)*E.recordSize}function yt(e,t){for(var r=t,n=Math.min(e.length,t+E.recordSize*2),o=r;o<n;o++)if(e[o]!=0)return!1;return!0}function gt(e,t,r){if(e.length-t<E.recordSize){if(r.checkFileSize)throw new Error(pe.unexpectedEndOfFile);return null}t=parseInt(t)||0;var n={},o=t;if(E.posixHeader.forEach(function(s){n[s[0]]=s[4](e,o,s),o+=s[1]}),n.type!=0&&(n.size=0),r.checkHeader&&E.posixHeader.forEach(function(s){if(me.isFunction(s[5])&&!s[5](n,s)){var c=new Error(pe.fileCorrupted);throw c.data={offset:t+s[2],field:s[0]},c}}),r.checkChecksum){var i=E.calculateChecksum(e,t,!0);if(i!=n.checksum){var a=new Error(pe.checksumCheckFailed);throw a.data={offset:t,header:n,checksum:i},a}}return n}function St(e,t,r,n){return n.extractData?r.size<=0?new Uint8Array:e.slice(t,t+r.size):null}function bt(e,t){var r={};return E.posixHeader.forEach(function(n){var o=n[0];mt[o]||(r[o]=e[o])}),r.isOldGNUFormat=e.ustar==lt.OLDGNU_MAGIC,t&&(r.data=t),r}function wt(e,t){t=me.extend({},pt,t);for(var r=[],n=0,o=e.length;o-n>=E.recordSize;){e=me.toUint8Array(e);var i=gt(e,n,t);if(!i)break;n+=ft(i);var a=St(e,n,i,t);if(r.push(bt(i,a)),n+=ht(i.size),yt(e,n))break}return r}Ue.exports.untar=wt});var _e=H((Xt,Ce)=>{"use strict";y();var Ft=G(),At=W(),Pt=Me(),Et=ze();Ft.extend(Ce.exports,Pt,Et,At)});var Ut={};Je(Ut,{OpfsAhpFS:()=>ye});module.exports=$e(Ut);y();y();y();var _=ie(_e(),1);async function Re(e,t,r="pgdata",n="auto"){let o=Tt(e,t),[i,a]=await vt(o,n),s=r+(a?".tar.gz":".tar"),c=a?"application/x-gzip":"application/x-tar";return typeof File<"u"?new File([i.buffer],s,{type:c}):new Blob([i.buffer],{type:c})}function Nt(e,t){let r=[],n=o=>{e.readdir(o).forEach(a=>{if(a==="."||a==="..")return;let s=o+"/"+a,c=e.stat(s),d=e.isFile(c.mode)?e.readFile(s,{encoding:"binary"}):new Uint8Array(0);r.push({name:s.substring(t.length),mode:c.mode,size:c.size,type:e.isFile(c.mode)?_.REGTYPE:_.DIRTYPE,modifyTime:c.mtime,data:d}),e.isDir(c.mode)&&n(s)})};return n(t),r}function Tt(e,t){let r=Nt(e,t);return(0,_.tar)(r)}async function vt(e,t="auto"){if(t==="none")return[e,!1];if(typeof CompressionStream<"u")return[await Dt(e),!0];if(typeof process<"u"&&process.versions&&process.versions.node)return[await xt(e),!0];if(t==="auto")return[e,!1];throw new Error("Compression not supported in this environment")}async function Dt(e){let t=new CompressionStream("gzip"),r=t.writable.getWriter(),n=t.readable.getReader();r.write(e.buffer),r.close();let o=[];for(;;){let{value:s,done:c}=await n.read();if(c)break;s&&o.push(s)}let i=new Uint8Array(o.reduce((s,c)=>s+c.length,0)),a=0;return o.forEach(s=>{i.set(s,a),a+=s.length}),i}async function xt(e){let{promisify:t}=await import("util"),{gzip:r}=await import("zlib");return await t(r)(e)}var kt="/tmp/pglite",fe=kt+"/base";var ne=class{constructor(t,{debug:r=!1}={}){this.dataDir=t,this.debug=r}async syncToFs(t){}async initialSyncFs(){}async closeFs(){}async dumpTar(t,r){return Re(this.pg.Module.FS,fe,t,r)}async init(t,r){return this.pg=t,{emscriptenOpts:{...r,preRun:[...r.preRun||[],o=>{let i=Ot(o,this);o.FS.mkdir(fe),o.FS.mount(i,{},fe)}]}}}},Y={EBADF:8,EBADFD:127,EEXIST:20,EINVAL:28,EISDIR:31,ENODEV:43,ENOENT:44,ENOTDIR:54,ENOTEMPTY:55},Ot=(e,t)=>{let r=e.FS,n=t.debug?console.log:null,o={tryFSOperation(i){try{return i()}catch(a){let s=a;throw s.code?s.code===Y.EINVAL?new r.ErrnoError(Y.EINVAL):new r.ErrnoError(s.code):a}},mount(i){return o.createNode(null,"/",16895,0)},syncfs(i,a,s){},createNode(i,a,s,c){if(!r.isDir(s)&&!r.isFile(s))throw new r.ErrnoError(28);let d=r.createNode(i,a,s);return d.node_ops=o.node_ops,d.stream_ops=o.stream_ops,d},getMode:function(i){return n?.("getMode",i),o.tryFSOperation(()=>t.lstat(i).mode)},realPath:function(i){let a=[];for(;i.parent!==i;)a.push(i.name),i=i.parent;return a.push(i.mount.opts.root),a.reverse(),a.join("/")},node_ops:{getattr(i){n?.("getattr",o.realPath(i));let a=o.realPath(i);return o.tryFSOperation(()=>{let s=t.lstat(a);return{...s,dev:0,ino:i.id,nlink:1,rdev:i.rdev,atime:new Date(s.atime),mtime:new Date(s.mtime),ctime:new Date(s.ctime)}})},setattr(i,a){n?.("setattr",o.realPath(i),a);let s=o.realPath(i);o.tryFSOperation(()=>{a.mode!==void 0&&t.chmod(s,a.mode),a.size!==void 0&&t.truncate(s,a.size),a.timestamp!==void 0&&t.utimes(s,a.timestamp,a.timestamp),a.size!==void 0&&t.truncate(s,a.size)})},lookup(i,a){n?.("lookup",o.realPath(i),a);let s=[o.realPath(i),a].join("/"),c=o.getMode(s);return o.createNode(i,a,c)},mknod(i,a,s,c){n?.("mknod",o.realPath(i),a,s,c);let d=o.createNode(i,a,s,c),m=o.realPath(d);return o.tryFSOperation(()=>(r.isDir(d.mode)?t.mkdir(m,{mode:s}):t.writeFile(m,"",{mode:s}),d))},rename(i,a,s){n?.("rename",o.realPath(i),o.realPath(a),s);let c=o.realPath(i),d=[o.realPath(a),s].join("/");o.tryFSOperation(()=>{t.rename(c,d)}),i.name=s},unlink(i,a){n?.("unlink",o.realPath(i),a);let s=[o.realPath(i),a].join("/");try{t.unlink(s)}catch{}},rmdir(i,a){n?.("rmdir",o.realPath(i),a);let s=[o.realPath(i),a].join("/");return o.tryFSOperation(()=>{t.rmdir(s)})},readdir(i){n?.("readdir",o.realPath(i));let a=o.realPath(i);return o.tryFSOperation(()=>t.readdir(a))},symlink(i,a,s){throw n?.("symlink",o.realPath(i),a,s),new r.ErrnoError(63)},readlink(i){throw n?.("readlink",o.realPath(i)),new r.ErrnoError(63)}},stream_ops:{open(i){n?.("open stream",o.realPath(i.node));let a=o.realPath(i.node);return o.tryFSOperation(()=>{r.isFile(i.node.mode)&&(i.shared.refcount=1,i.nfd=t.open(a))})},close(i){return n?.("close stream",o.realPath(i.node)),o.tryFSOperation(()=>{r.isFile(i.node.mode)&&i.nfd&&--i.shared.refcount===0&&t.close(i.nfd)})},dup(i){n?.("dup stream",o.realPath(i.node)),i.shared.refcount++},read(i,a,s,c,d){return n?.("read stream",o.realPath(i.node),s,c,d),c===0?0:o.tryFSOperation(()=>t.read(i.nfd,a,s,c,d))},write(i,a,s,c,d){return n?.("write stream",o.realPath(i.node),s,c,d),o.tryFSOperation(()=>t.write(i.nfd,a.buffer,s,c,d))},llseek(i,a,s){n?.("llseek stream",o.realPath(i.node),a,s);let c=a;if(s===1?c+=i.position:s===2&&r.isFile(i.node.mode)&&o.tryFSOperation(()=>{let d=t.fstat(i.nfd);c+=d.size}),c<0)throw new r.ErrnoError(28);return c},mmap(i,a,s,c,d){if(n?.("mmap stream",o.realPath(i.node),a,s,c,d),!r.isFile(i.node.mode))throw new r.ErrnoError(Y.ENODEV);let f=e.mmapAlloc(a);return o.stream_ops.read(i,e.HEAP8,f,a,s),{ptr:f,allocated:!0}},msync(i,a,s,c,d){return n?.("msync stream",o.realPath(i.node),s,c,d),o.stream_ops.write(i,a,0,c,s),0}}};return o};var It="state.txt",Mt="data",he={DIR:16384,FILE:32768},J,j,I,$,S,D,w,K,M,U,T,l,He,R,B,N,b,X,Le,ge,ye=class extends ne{constructor(r,{initialPoolSize:n=1e3,maintainedPoolSize:o=100,debug:i=!1}={}){super(r,{debug:i});P(this,l);P(this,J);P(this,j);P(this,I);P(this,$);P(this,S);P(this,D,new Map);P(this,w,new Map);P(this,K,0);P(this,M,new Map);P(this,U,new Map);this.lastCheckpoint=0;this.checkpointInterval=1e3*60;this.poolCounter=0;P(this,T,new Set);this.initialPoolSize=n,this.maintainedPoolSize=o}async init(r,n){return await p(this,l,He).call(this),super.init(r,n)}async syncToFs(r=!1){await this.maybeCheckpointState(),await this.maintainPool(),r||this.flush()}async closeFs(){for(let r of u(this,w).values())r.close();u(this,S).flush(),u(this,S).close(),this.pg.Module.FS.quit()}async maintainPool(r){r=r||this.maintainedPoolSize;let n=r-this.state.pool.length,o=[];for(let i=0;i<n;i++)o.push(new Promise(async a=>{++this.poolCounter;let s=`${(Date.now()-1704063600).toString(16).padStart(8,"0")}-${this.poolCounter.toString(16).padStart(8,"0")}`,c=await u(this,I).getFileHandle(s,{create:!0}),d=await c.createSyncAccessHandle();u(this,D).set(s,c),u(this,w).set(s,d),p(this,l,B).call(this,{opp:"createPoolFile",args:[s]}),this.state.pool.push(s),a()}));for(let i=0;i>n;i--)o.push(new Promise(async a=>{let s=this.state.pool.pop();p(this,l,B).call(this,{opp:"deletePoolFile",args:[s]});let c=u(this,D).get(s);u(this,w).get(s)?.close(),await u(this,I).removeEntry(c.name),u(this,D).delete(s),u(this,w).delete(s),a()}));await Promise.all(o)}_createPoolFileState(r){this.state.pool.push(r)}_deletePoolFileState(r){let n=this.state.pool.indexOf(r);n>-1&&this.state.pool.splice(n,1)}async maybeCheckpointState(){Date.now()-this.lastCheckpoint>this.checkpointInterval&&await this.checkpointState()}async checkpointState(){let r=new TextEncoder().encode(JSON.stringify(this.state));u(this,S).truncate(0),u(this,S).write(r.buffer,{at:0}),u(this,S).flush(),this.lastCheckpoint=Date.now()}flush(){for(let r of u(this,T))try{r.flush()}catch{}u(this,T).clear()}chmod(r,n){p(this,l,R).call(this,{opp:"chmod",args:[r,n]},()=>{this._chmodState(r,n)})}_chmodState(r,n){let o=p(this,l,b).call(this,r);o.mode=n}close(r){let n=p(this,l,X).call(this,r);u(this,M).delete(r),u(this,U).delete(n)}fstat(r){let n=p(this,l,X).call(this,r);return this.lstat(n)}lstat(r){let n=p(this,l,b).call(this,r),o=n.type==="file"?u(this,w).get(n.backingFilename).getSize():0,i=4096;return{dev:0,ino:0,mode:n.mode,nlink:1,uid:0,gid:0,rdev:0,size:o,blksize:i,blocks:Math.ceil(o/i),atime:n.lastModified,mtime:n.lastModified,ctime:n.lastModified}}mkdir(r,n){p(this,l,R).call(this,{opp:"mkdir",args:[r,n]},()=>{this._mkdirState(r,n)})}_mkdirState(r,n){let o=p(this,l,N).call(this,r),i=o.pop(),a=[],s=this.state.root;for(let d of o){if(a.push(r),!Object.prototype.hasOwnProperty.call(s.children,d))if(n?.recursive)this.mkdir(a.join("/"));else throw new h("ENOENT","No such file or directory");if(s.children[d].type!=="directory")throw new h("ENOTDIR","Not a directory");s=s.children[d]}if(Object.prototype.hasOwnProperty.call(s.children,i))throw new h("EEXIST","File exists");let c={type:"directory",lastModified:Date.now(),mode:n?.mode||he.DIR,children:{}};s.children[i]=c}open(r,n,o){if(p(this,l,b).call(this,r).type!=="file")throw new h("EISDIR","Is a directory");let a=p(this,l,Le).call(this);return u(this,M).set(a,r),u(this,U).set(r,a),a}readdir(r){let n=p(this,l,b).call(this,r);if(n.type!=="directory")throw new h("ENOTDIR","Not a directory");return Object.keys(n.children)}read(r,n,o,i,a){let s=p(this,l,X).call(this,r),c=p(this,l,b).call(this,s);if(c.type!=="file")throw new h("EISDIR","Is a directory");return u(this,w).get(c.backingFilename).read(new Uint8Array(n.buffer,o,i).buffer,{at:a})}rename(r,n){p(this,l,R).call(this,{opp:"rename",args:[r,n]},()=>{this._renameState(r,n,!0)})}_renameState(r,n,o=!1){let i=p(this,l,N).call(this,r),a=i.pop(),s=p(this,l,b).call(this,i.join("/"));if(!Object.prototype.hasOwnProperty.call(s.children,a))throw new h("ENOENT","No such file or directory");let c=p(this,l,N).call(this,n),d=c.pop(),m=p(this,l,b).call(this,c.join("/"));if(o&&Object.prototype.hasOwnProperty.call(m.children,d)){let f=m.children[d];u(this,w).get(f.backingFilename).truncate(0),this.state.pool.push(f.backingFilename)}m.children[d]=s.children[a],delete s.children[a]}rmdir(r){p(this,l,R).call(this,{opp:"rmdir",args:[r]},()=>{this._rmdirState(r)})}_rmdirState(r){let n=p(this,l,N).call(this,r),o=n.pop(),i=p(this,l,b).call(this,n.join("/"));if(!Object.prototype.hasOwnProperty.call(i.children,o))throw new h("ENOENT","No such file or directory");let a=i.children[o];if(a.type!=="directory")throw new h("ENOTDIR","Not a directory");if(Object.keys(a.children).length>0)throw new h("ENOTEMPTY","Directory not empty");delete i.children[o]}truncate(r,n=0){let o=p(this,l,b).call(this,r);if(o.type!=="file")throw new h("EISDIR","Is a directory");let i=u(this,w).get(o.backingFilename);if(!i)throw new h("ENOENT","No such file or directory");i.truncate(n),u(this,T).add(i)}unlink(r){p(this,l,R).call(this,{opp:"unlink",args:[r]},()=>{this._unlinkState(r,!0)})}_unlinkState(r,n=!1){let o=p(this,l,N).call(this,r),i=o.pop(),a=p(this,l,b).call(this,o.join("/"));if(!Object.prototype.hasOwnProperty.call(a.children,i))throw new h("ENOENT","No such file or directory");let s=a.children[i];if(s.type!=="file")throw new h("EISDIR","Is a directory");if(delete a.children[i],n){let c=u(this,w).get(s.backingFilename);c?.truncate(0),u(this,T).add(c),u(this,U).has(r)&&(u(this,M).delete(u(this,U).get(r)),u(this,U).delete(r))}this.state.pool.push(s.backingFilename)}utimes(r,n,o){p(this,l,R).call(this,{opp:"utimes",args:[r,n,o]},()=>{this._utimesState(r,n,o)})}_utimesState(r,n,o){let i=p(this,l,b).call(this,r);i.lastModified=o}writeFile(r,n,o){let i=p(this,l,N).call(this,r),a=i.pop(),s=p(this,l,b).call(this,i.join("/"));if(Object.prototype.hasOwnProperty.call(s.children,a)){let m=s.children[a];m.lastModified=Date.now(),p(this,l,B).call(this,{opp:"setLastModified",args:[r,m.lastModified]})}else{if(this.state.pool.length===0)throw new Error("No more file handles available in the pool");let m={type:"file",lastModified:Date.now(),mode:o?.mode||he.FILE,backingFilename:this.state.pool.pop()};s.children[a]=m,p(this,l,B).call(this,{opp:"createFileNode",args:[r,m]})}let c=s.children[a],d=u(this,w).get(c.backingFilename);n.length>0&&(d.write((typeof n=="string"?new TextEncoder().encode(n):new Uint8Array(n)).buffer,{at:0}),r.startsWith("/pg_wal")&&u(this,T).add(d))}_createFileNodeState(r,n){let o=p(this,l,N).call(this,r),i=o.pop(),a=p(this,l,b).call(this,o.join("/"));a.children[i]=n;let s=this.state.pool.indexOf(n.backingFilename);return s>-1&&this.state.pool.splice(s,1),n}_setLastModifiedState(r,n){let o=p(this,l,b).call(this,r);o.lastModified=n}write(r,n,o,i,a){let s=p(this,l,X).call(this,r),c=p(this,l,b).call(this,s);if(c.type!=="file")throw new h("EISDIR","Is a directory");let d=u(this,w).get(c.backingFilename);if(!d)throw new h("EBADF","Bad file descriptor");let m=d.write(new Uint8Array(n.buffer,o,i).buffer,{at:a});return s.startsWith("/pg_wal")&&u(this,T).add(d),m}};J=new WeakMap,j=new WeakMap,I=new WeakMap,$=new WeakMap,S=new WeakMap,D=new WeakMap,w=new WeakMap,K=new WeakMap,M=new WeakMap,U=new WeakMap,T=new WeakMap,l=new WeakSet,He=async function(){z(this,J,await navigator.storage.getDirectory()),z(this,j,await p(this,l,ge).call(this,this.dataDir,{create:!0})),z(this,I,await p(this,l,ge).call(this,Mt,{from:u(this,j),create:!0})),z(this,$,await u(this,j).getFileHandle(It,{create:!0})),z(this,S,await u(this,$).createSyncAccessHandle());let r=new ArrayBuffer(u(this,S).getSize());u(this,S).read(r,{at:0});let n,o=new TextDecoder().decode(r).split(`
2
- `),i=!1;try{n=JSON.parse(o[0])}catch{n={root:{type:"directory",lastModified:Date.now(),mode:he.DIR,children:{}},pool:[]},u(this,S).truncate(0),u(this,S).write(new TextEncoder().encode(JSON.stringify(n)).buffer,{at:0}),i=!0}this.state=n;let a=o.slice(1).filter(Boolean).map(m=>JSON.parse(m));for(let m of a){let f=`_${m.opp}State`;if(typeof this[f]=="function")try{this[f].bind(this)(...m.args)}catch(x){console.warn("Error applying OPFS AHP WAL entry",m,x)}}let s=[],c=async m=>{if(m.type==="file")try{let f=await u(this,I).getFileHandle(m.backingFilename),x=await f.createSyncAccessHandle();u(this,D).set(m.backingFilename,f),u(this,w).set(m.backingFilename,x)}catch(f){console.error("Error opening file handle for node",m,f)}else for(let f of Object.values(m.children))s.push(c(f))};await c(this.state.root);let d=[];for(let m of this.state.pool)d.push(new Promise(async f=>{u(this,D).has(m)&&console.warn("File handle already exists for pool file",m);let x=await u(this,I).getFileHandle(m),Be=await x.createSyncAccessHandle();u(this,D).set(m,x),u(this,w).set(m,Be),f()}));await Promise.all([...s,...d]),await this.maintainPool(i?this.initialPoolSize:this.maintainedPoolSize)},R=function(r,n){let o=p(this,l,B).call(this,r);try{n()}catch(i){throw u(this,S).truncate(o),i}},B=function(r){let n=JSON.stringify(r),o=new TextEncoder().encode(`
3
- ${n}`),i=u(this,S).getSize();return u(this,S).write(o.buffer,{at:i}),u(this,T).add(u(this,S)),i},N=function(r){return r.split("/").filter(Boolean)},b=function(r,n){let o=p(this,l,N).call(this,r),i=n||this.state.root;for(let a of o){if(i.type!=="directory")throw new h("ENOTDIR","Not a directory");if(!Object.prototype.hasOwnProperty.call(i.children,a))throw new h("ENOENT","No such file or directory");i=i.children[a]}return i},X=function(r){let n=u(this,M).get(r);if(!n)throw new h("EBADF","Bad file descriptor");return n},Le=function(){let r=++se(this,K)._;for(;u(this,M).has(r);)se(this,K)._++;return r},ge=async function(r,n){let o=p(this,l,N).call(this,r),i=n?.from||u(this,J);for(let a of o)i=await i.getDirectoryHandle(a,{create:n?.create});return i};var h=class extends Error{constructor(t,r){super(r),typeof t=="number"?this.code=t:typeof t=="string"&&(this.code=Y[t])}};0&&(module.exports={OpfsAhpFS});
1
+ "use strict";var Be=Object.create;var V=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var We=Object.getOwnPropertyNames;var qe=Object.getPrototypeOf,Ye=Object.prototype.hasOwnProperty;var Se=e=>{throw TypeError(e)};var Xe=(e,t)=>()=>(e&&(t=e(e=0)),t);var H=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Je=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},be=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of We(t))!Ye.call(e,o)&&o!==r&&V(e,o,{get:()=>t[o],enumerable:!(n=Ge(t,o))||n.enumerable});return e};var ie=(e,t,r)=>(r=e!=null?Be(qe(e)):{},be(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e)),$e=e=>be(V({},"__esModule",{value:!0}),e);var oe=(e,t,r)=>t.has(e)||Se("Cannot "+r);var u=(e,t,r)=>(oe(e,t,"read from private field"),r?r.call(e):t.get(e)),A=(e,t,r)=>t.has(e)?Se("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),z=(e,t,r,n)=>(oe(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),p=(e,t,r)=>(oe(e,t,"access private method"),r);var se=(e,t,r,n)=>({set _(o){z(e,t,o,r)},get _(){return u(e,t,n)}});var y=Xe(()=>{"use strict"});var G=H((_t,F)=>{"use strict";y();var we=9007199254740991,Fe=(function(e){return e})();function Ke(e){return e===Fe}function Pe(e){return typeof e=="string"||Object.prototype.toString.call(e)=="[object String]"}function Ve(e){return Object.prototype.toString.call(e)=="[object Date]"}function Z(e){return e!==null&&typeof e=="object"}function Q(e){return typeof e=="function"}function Ze(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=we}function Qe(e){return Object.prototype.toString.call(e)=="[object Array]"}function Ae(e){return Z(e)&&!Q(e)&&Ze(e.length)}function ae(e){return Object.prototype.toString.call(e)=="[object ArrayBuffer]"}function et(e,t){return Array.prototype.map.call(e,t)}function tt(e,t){var r=Fe;return Q(t)&&Array.prototype.every.call(e,function(n,o,i){var a=t(n,o,i);return a&&(r=n),!a}),r}function rt(e){return Object.assign.apply(null,arguments)}function Ee(e){var t,r,n;if(Pe(e)){for(r=e.length,n=new Uint8Array(r),t=0;t<r;t++)n[t]=e.charCodeAt(t)&255;return n}return ae(e)?new Uint8Array(e):Z(e)&&ae(e.buffer)?new Uint8Array(e.buffer):Ae(e)?new Uint8Array(e):Z(e)&&Q(e.toString)?Ee(e.toString()):new Uint8Array}F.exports.MAX_SAFE_INTEGER=we;F.exports.isUndefined=Ke;F.exports.isString=Pe;F.exports.isObject=Z;F.exports.isDateTime=Ve;F.exports.isFunction=Q;F.exports.isArray=Qe;F.exports.isArrayLike=Ae;F.exports.isArrayBuffer=ae;F.exports.map=et;F.exports.find=tt;F.exports.extend=rt;F.exports.toUint8Array=Ee});var W=H((Ht,Ne)=>{"use strict";y();var ce="\0";Ne.exports={NULL_CHAR:ce,TMAGIC:"ustar"+ce+"00",OLDGNU_MAGIC:"ustar "+ce,REGTYPE:0,LNKTYPE:1,SYMTYPE:2,CHRTYPE:3,BLKTYPE:4,DIRTYPE:5,FIFOTYPE:6,CONTTYPE:7,TSUID:parseInt("4000",8),TSGID:parseInt("2000",8),TSVTX:parseInt("1000",8),TUREAD:parseInt("0400",8),TUWRITE:parseInt("0200",8),TUEXEC:parseInt("0100",8),TGREAD:parseInt("0040",8),TGWRITE:parseInt("0020",8),TGEXEC:parseInt("0010",8),TOREAD:parseInt("0004",8),TOWRITE:parseInt("0002",8),TOEXEC:parseInt("0001",8),TPERMALL:parseInt("0777",8),TPERMMASK:parseInt("0777",8)}});var le=H((jt,P)=>{"use strict";y();var Te=G(),g=W(),nt=512,ue=g.TPERMALL,ve=0,De=0,de=[["name",100,0,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["mode",8,100,function(e,t){var r=e[t[0]]||ue;return r=r&g.TPERMMASK,L(r,t[1],ue)},function(e,t,r){var n=v(e.slice(t,t+r[1]));return n&=g.TPERMMASK,n}],["uid",8,108,function(e,t){return L(e[t[0]],t[1],ve)},function(e,t,r){return v(e.slice(t,t+r[1]))}],["gid",8,116,function(e,t){return L(e[t[0]],t[1],De)},function(e,t,r){return v(e.slice(t,t+r[1]))}],["size",12,124,function(e,t){return L(e.data.length,t[1])},function(e,t,r){return v(e.slice(t,t+r[1]))}],["modifyTime",12,136,function(e,t){return ee(e[t[0]],t[1])},function(e,t,r){return te(e.slice(t,t+r[1]))}],["checksum",8,148,function(e,t){return" "},function(e,t,r){return v(e.slice(t,t+r[1]))}],["type",1,156,function(e,t){return""+(parseInt(e[t[0]],10)||0)%8},function(e,t,r){return(parseInt(String.fromCharCode(e[t]),10)||0)%8}],["linkName",100,157,function(e,t){return""},function(e,t,r){return C(e.slice(t,t+r[1]))}],["ustar",8,257,function(e,t){return g.TMAGIC},function(e,t,r){return it(C(e.slice(t,t+r[1]),!0))},function(e,t){return e[t[0]]==g.TMAGIC||e[t[0]]==g.OLDGNU_MAGIC}],["owner",32,265,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["group",32,297,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["majorNumber",8,329,function(e,t){return""},function(e,t,r){return v(e.slice(t,t+r[1]))}],["minorNumber",8,337,function(e,t){return""},function(e,t,r){return v(e.slice(t,t+r[1]))}],["prefix",131,345,function(e,t){return q(e[t[0]],t[1])},function(e,t,r){return C(e.slice(t,t+r[1]))}],["accessTime",12,476,function(e,t){return ee(e[t[0]],t[1])},function(e,t,r){return te(e.slice(t,t+r[1]))}],["createTime",12,488,function(e,t){return ee(e[t[0]],t[1])},function(e,t,r){return te(e.slice(t,t+r[1]))}]],xe=(function(e){var t=e[e.length-1];return t[2]+t[1]})(de);function it(e){if(e.length==8){var t=e.split("");if(t[5]==g.NULL_CHAR)return(t[6]==" "||t[6]==g.NULL_CHAR)&&(t[6]="0"),(t[7]==" "||t[7]==g.NULL_CHAR)&&(t[7]="0"),t=t.join(""),t==g.TMAGIC?t:e;if(t[7]==g.NULL_CHAR)return t[5]==g.NULL_CHAR&&(t[5]=" "),t[6]==g.NULL_CHAR&&(t[6]=" "),t==g.OLDGNU_MAGIC?t:e}return e}function q(e,t){return t-=1,Te.isUndefined(e)&&(e=""),e=(""+e).substr(0,t),e+g.NULL_CHAR}function L(e,t,r){for(r=parseInt(r)||0,t-=1,e=(parseInt(e)||r).toString(8).substr(-t,t);e.length<t;)e="0"+e;return e+g.NULL_CHAR}function ee(e,t){if(Te.isDateTime(e))e=Math.floor(1*e/1e3);else if(e=parseInt(e,10),isFinite(e)){if(e<=0)return""}else e=Math.floor(1*new Date/1e3);return L(e,t,0)}function C(e,t){var r=String.fromCharCode.apply(null,e);if(t)return r;var n=r.indexOf(g.NULL_CHAR);return n>=0?r.substr(0,n):r}function v(e){var t=String.fromCharCode.apply(null,e);return parseInt(t.replace(/^0+$/g,""),8)||0}function te(e){return e.length==0||e[0]==0?null:new Date(1e3*v(e))}function ot(e,t,r){var n=parseInt(t,10)||0,o=Math.min(n+xe,e.length),i=0,a=0,s=0;r&&de.every(function(f){return f[0]=="checksum"?(a=n+f[2],s=a+f[1],!1):!0});for(var c=32,d=n;d<o;d++){var m=d>=a&&d<s?c:e[d];i=(i+m)%262144}return i}P.exports.recordSize=nt;P.exports.defaultFileMode=ue;P.exports.defaultUid=ve;P.exports.defaultGid=De;P.exports.posixHeader=de;P.exports.effectiveHeaderSize=xe;P.exports.calculateChecksum=ot;P.exports.formatTarString=q;P.exports.formatTarNumber=L;P.exports.formatTarDateTime=ee;P.exports.parseTarString=C;P.exports.parseTarNumber=v;P.exports.parseTarDateTime=te});var Ie=H((Gt,Me)=>{"use strict";y();var st=W(),re=G(),O=le();function ke(e){return O.recordSize}function Oe(e){return Math.ceil(e.data.length/O.recordSize)*O.recordSize}function at(e){var t=0;return e.forEach(function(r){t+=ke(r)+Oe(r)}),t+=O.recordSize*2,new Uint8Array(t)}function ct(e,t,r){r=parseInt(r)||0;var n=r;O.posixHeader.forEach(function(c){for(var d=c[3](t,c),m=d.length,f=0;f<m;f+=1)e[n+f]=d.charCodeAt(f)&255;n+=c[1]});var o=re.find(O.posixHeader,function(c){return c[0]=="checksum"});if(o){var i=O.calculateChecksum(e,r,!0),a=O.formatTarNumber(i,o[1]-2)+st.NULL_CHAR+" ";n=r+o[2];for(var s=0;s<a.length;s+=1)e[n]=a.charCodeAt(s)&255,n++}return r+ke(t)}function ut(e,t,r){return r=parseInt(r,10)||0,e.set(t.data,r),r+Oe(t)}function dt(e){e=re.map(e,function(n){return re.extend({},n,{data:re.toUint8Array(n.data)})});var t=at(e),r=0;return e.forEach(function(n){r=ct(t,n,r),r=ut(t,n,r)}),t}Me.exports.tar=dt});var ze=H((qt,Ue)=>{"use strict";y();var lt=W(),me=G(),E=le(),pt={extractData:!0,checkHeader:!0,checkChecksum:!0,checkFileSize:!0},mt={size:!0,checksum:!0,ustar:!0},pe={unexpectedEndOfFile:"Unexpected end of file.",fileCorrupted:"File is corrupted.",checksumCheckFailed:"Checksum check failed."};function ft(e){return E.recordSize}function ht(e){return Math.ceil(e/E.recordSize)*E.recordSize}function yt(e,t){for(var r=t,n=Math.min(e.length,t+E.recordSize*2),o=r;o<n;o++)if(e[o]!=0)return!1;return!0}function gt(e,t,r){if(e.length-t<E.recordSize){if(r.checkFileSize)throw new Error(pe.unexpectedEndOfFile);return null}t=parseInt(t)||0;var n={},o=t;if(E.posixHeader.forEach(function(s){n[s[0]]=s[4](e,o,s),o+=s[1]}),n.type!=0&&(n.size=0),r.checkHeader&&E.posixHeader.forEach(function(s){if(me.isFunction(s[5])&&!s[5](n,s)){var c=new Error(pe.fileCorrupted);throw c.data={offset:t+s[2],field:s[0]},c}}),r.checkChecksum){var i=E.calculateChecksum(e,t,!0);if(i!=n.checksum){var a=new Error(pe.checksumCheckFailed);throw a.data={offset:t,header:n,checksum:i},a}}return n}function St(e,t,r,n){return n.extractData?r.size<=0?new Uint8Array:e.slice(t,t+r.size):null}function bt(e,t){var r={};return E.posixHeader.forEach(function(n){var o=n[0];mt[o]||(r[o]=e[o])}),r.isOldGNUFormat=e.ustar==lt.OLDGNU_MAGIC,t&&(r.data=t),r}function wt(e,t){t=me.extend({},pt,t);for(var r=[],n=0,o=e.length;o-n>=E.recordSize;){e=me.toUint8Array(e);var i=gt(e,n,t);if(!i)break;n+=ft(i);var a=St(e,n,i,t);if(r.push(bt(i,a)),n+=ht(i.size),yt(e,n))break}return r}Ue.exports.untar=wt});var _e=H((Xt,Ce)=>{"use strict";y();var Ft=G(),Pt=W(),At=Ie(),Et=ze();Ft.extend(Ce.exports,At,Et,Pt)});var Ut={};Je(Ut,{OpfsAhpFS:()=>ye});module.exports=$e(Ut);y();y();y();var _=ie(_e(),1);async function Re(e,t,r="pgdata",n="auto"){let o=Tt(e,t),[i,a]=await vt(o,n),s=r+(a?".tar.gz":".tar"),c=a?"application/x-gzip":"application/x-tar";return typeof File<"u"?new File([i.buffer],s,{type:c}):new Blob([i.buffer],{type:c})}function Nt(e,t){let r=[],n=o=>{e.readdir(o).forEach(a=>{if(a==="."||a==="..")return;let s=o+"/"+a,c=e.stat(s),d=e.isFile(c.mode)?e.readFile(s,{encoding:"binary"}):new Uint8Array(0);r.push({name:s.substring(t.length),mode:c.mode,size:c.size,type:e.isFile(c.mode)?_.REGTYPE:_.DIRTYPE,modifyTime:c.mtime,data:d}),e.isDir(c.mode)&&n(s)})};return n(t),r}function Tt(e,t){let r=Nt(e,t);return(0,_.tar)(r)}async function vt(e,t="auto"){if(t==="none")return[e,!1];if(typeof CompressionStream<"u")return[await Dt(e),!0];if(typeof process<"u"&&process.versions&&process.versions.node)return[await xt(e),!0];if(t==="auto")return[e,!1];throw new Error("Compression not supported in this environment")}async function Dt(e){let t=new CompressionStream("gzip"),r=t.writable.getWriter(),n=t.readable.getReader();r.write(e.buffer),r.close();let o=[];for(;;){let{value:s,done:c}=await n.read();if(c)break;s&&o.push(s)}let i=new Uint8Array(o.reduce((s,c)=>s+c.length,0)),a=0;return o.forEach(s=>{i.set(s,a),a+=s.length}),i}async function xt(e){let{promisify:t}=await import("util"),{gzip:r}=await import("zlib");return await t(r)(e)}var kt="/tmp/pglite",fe=kt+"/base";var ne=class{constructor(t,{debug:r=!1}={}){this.dataDir=t,this.debug=r}async syncToFs(t){}async initialSyncFs(){}async closeFs(){}async dumpTar(t,r){return Re(this.pg.Module.FS,fe,t,r)}async init(t,r){return this.pg=t,{emscriptenOpts:{...r,preRun:[...r.preRun||[],o=>{let i=Ot(o,this);o.FS.mkdir(fe),o.FS.mount(i,{},fe)}]}}}},Y={EBADF:8,EBADFD:127,EEXIST:20,EINVAL:28,EISDIR:31,ENODEV:43,ENOENT:44,ENOTDIR:54,ENOTEMPTY:55},Ot=(e,t)=>{let r=e.FS,n=t.debug?console.log:null,o={tryFSOperation(i){try{return i()}catch(a){let s=a;throw s.code?s.code===Y.EINVAL?new r.ErrnoError(Y.EINVAL):new r.ErrnoError(s.code):a}},mount(i){return o.createNode(null,"/",16895,0)},syncfs(i,a,s){},createNode(i,a,s,c){if(!r.isDir(s)&&!r.isFile(s))throw new r.ErrnoError(28);let d=r.createNode(i,a,s);return d.node_ops=o.node_ops,d.stream_ops=o.stream_ops,d},getMode:function(i){return n?.("getMode",i),o.tryFSOperation(()=>t.lstat(i).mode)},realPath:function(i){let a=[];for(;i.parent!==i;)a.push(i.name),i=i.parent;return a.push(i.mount.opts.root),a.reverse(),a.join("/")},node_ops:{getattr(i){n?.("getattr",o.realPath(i));let a=o.realPath(i);return o.tryFSOperation(()=>{let s=t.lstat(a);return{...s,dev:0,ino:i.id,nlink:1,rdev:i.rdev,atime:new Date(s.atime),mtime:new Date(s.mtime),ctime:new Date(s.ctime)}})},setattr(i,a){n?.("setattr",o.realPath(i),a);let s=o.realPath(i);o.tryFSOperation(()=>{a.mode!==void 0&&t.chmod(s,a.mode),a.size!==void 0&&t.truncate(s,a.size),a.timestamp!==void 0&&t.utimes(s,a.timestamp,a.timestamp),a.size!==void 0&&t.truncate(s,a.size)})},lookup(i,a){n?.("lookup",o.realPath(i),a);let s=[o.realPath(i),a].join("/"),c=o.getMode(s);return o.createNode(i,a,c)},mknod(i,a,s,c){n?.("mknod",o.realPath(i),a,s,c);let d=o.createNode(i,a,s,c),m=o.realPath(d);return o.tryFSOperation(()=>(r.isDir(d.mode)?t.mkdir(m,{mode:s}):t.writeFile(m,"",{mode:s}),d))},rename(i,a,s){n?.("rename",o.realPath(i),o.realPath(a),s);let c=o.realPath(i),d=[o.realPath(a),s].join("/");o.tryFSOperation(()=>{t.rename(c,d)}),i.name=s},unlink(i,a){n?.("unlink",o.realPath(i),a);let s=[o.realPath(i),a].join("/");try{t.unlink(s)}catch{}},rmdir(i,a){n?.("rmdir",o.realPath(i),a);let s=[o.realPath(i),a].join("/");return o.tryFSOperation(()=>{t.rmdir(s)})},readdir(i){n?.("readdir",o.realPath(i));let a=o.realPath(i);return o.tryFSOperation(()=>t.readdir(a))},symlink(i,a,s){throw n?.("symlink",o.realPath(i),a,s),new r.ErrnoError(63)},readlink(i){throw n?.("readlink",o.realPath(i)),new r.ErrnoError(63)}},stream_ops:{open(i){n?.("open stream",o.realPath(i.node));let a=o.realPath(i.node);return o.tryFSOperation(()=>{r.isFile(i.node.mode)&&(i.shared.refcount=1,i.nfd=t.open(a))})},close(i){return n?.("close stream",o.realPath(i.node)),o.tryFSOperation(()=>{r.isFile(i.node.mode)&&i.nfd&&--i.shared.refcount===0&&t.close(i.nfd)})},dup(i){n?.("dup stream",o.realPath(i.node)),i.shared.refcount++},read(i,a,s,c,d){return n?.("read stream",o.realPath(i.node),s,c,d),c===0?0:o.tryFSOperation(()=>t.read(i.nfd,a,s,c,d))},write(i,a,s,c,d){return n?.("write stream",o.realPath(i.node),s,c,d),o.tryFSOperation(()=>t.write(i.nfd,a.buffer,s,c,d))},llseek(i,a,s){n?.("llseek stream",o.realPath(i.node),a,s);let c=a;if(s===1?c+=i.position:s===2&&r.isFile(i.node.mode)&&o.tryFSOperation(()=>{let d=t.fstat(i.nfd);c+=d.size}),c<0)throw new r.ErrnoError(28);return c},mmap(i,a,s,c,d){if(n?.("mmap stream",o.realPath(i.node),a,s,c,d),!r.isFile(i.node.mode))throw new r.ErrnoError(Y.ENODEV);let f=e.mmapAlloc(a);return o.stream_ops.read(i,e.HEAP8,f,a,s),{ptr:f,allocated:!0}},msync(i,a,s,c,d){return n?.("msync stream",o.realPath(i.node),s,c,d),o.stream_ops.write(i,a,0,c,s),0}}};return o};var Mt="state.txt",It="data",he={DIR:16384,FILE:32768},J,B,M,$,S,D,w,K,I,U,T,l,He,R,j,N,b,X,Le,ge,ye=class extends ne{constructor(r,{initialPoolSize:n=1e3,maintainedPoolSize:o=100,debug:i=!1}={}){super(r,{debug:i});A(this,l);A(this,J);A(this,B);A(this,M);A(this,$);A(this,S);A(this,D,new Map);A(this,w,new Map);A(this,K,0);A(this,I,new Map);A(this,U,new Map);this.lastCheckpoint=0;this.checkpointInterval=1e3*60;this.poolCounter=0;A(this,T,new Set);this.initialPoolSize=n,this.maintainedPoolSize=o}async init(r,n){return await p(this,l,He).call(this),super.init(r,n)}async syncToFs(r=!1){await this.maybeCheckpointState(),await this.maintainPool(),r||this.flush()}async closeFs(){for(let r of u(this,w).values())r.close();u(this,S).flush(),u(this,S).close(),this.pg.Module.FS.quit()}async maintainPool(r){r=r||this.maintainedPoolSize;let n=r-this.state.pool.length,o=[];for(let i=0;i<n;i++)o.push(new Promise(async a=>{++this.poolCounter;let s=`${(Date.now()-1704063600).toString(16).padStart(8,"0")}-${this.poolCounter.toString(16).padStart(8,"0")}`,c=await u(this,M).getFileHandle(s,{create:!0}),d=await c.createSyncAccessHandle();u(this,D).set(s,c),u(this,w).set(s,d),p(this,l,j).call(this,{opp:"createPoolFile",args:[s]}),this.state.pool.push(s),a()}));for(let i=0;i>n;i--)o.push(new Promise(async a=>{let s=this.state.pool.pop();p(this,l,j).call(this,{opp:"deletePoolFile",args:[s]});let c=u(this,D).get(s);u(this,w).get(s)?.close(),await u(this,M).removeEntry(c.name),u(this,D).delete(s),u(this,w).delete(s),a()}));await Promise.all(o)}_createPoolFileState(r){this.state.pool.push(r)}_deletePoolFileState(r){let n=this.state.pool.indexOf(r);n>-1&&this.state.pool.splice(n,1)}async maybeCheckpointState(){Date.now()-this.lastCheckpoint>this.checkpointInterval&&await this.checkpointState()}async checkpointState(){let r=new TextEncoder().encode(JSON.stringify(this.state));u(this,S).truncate(0),u(this,S).write(r.buffer,{at:0}),u(this,S).flush(),this.lastCheckpoint=Date.now()}flush(){for(let r of u(this,T))try{r.flush()}catch{}u(this,T).clear()}chmod(r,n){p(this,l,R).call(this,{opp:"chmod",args:[r,n]},()=>{this._chmodState(r,n)})}_chmodState(r,n){let o=p(this,l,b).call(this,r);o.mode=n}close(r){let n=p(this,l,X).call(this,r);u(this,I).delete(r),u(this,U).delete(n)}fstat(r){let n=p(this,l,X).call(this,r);return this.lstat(n)}lstat(r){let n=p(this,l,b).call(this,r),o=n.type==="file"?u(this,w).get(n.backingFilename).getSize():0,i=4096;return{dev:0,ino:0,mode:n.mode,nlink:1,uid:0,gid:0,rdev:0,size:o,blksize:i,blocks:Math.ceil(o/i),atime:n.lastModified,mtime:n.lastModified,ctime:n.lastModified}}mkdir(r,n){p(this,l,R).call(this,{opp:"mkdir",args:[r,n]},()=>{this._mkdirState(r,n)})}_mkdirState(r,n){let o=p(this,l,N).call(this,r),i=o.pop(),a=[],s=this.state.root;for(let d of o){if(a.push(r),!Object.prototype.hasOwnProperty.call(s.children,d))if(n?.recursive)this.mkdir(a.join("/"));else throw new h("ENOENT","No such file or directory");if(s.children[d].type!=="directory")throw new h("ENOTDIR","Not a directory");s=s.children[d]}if(Object.prototype.hasOwnProperty.call(s.children,i))throw new h("EEXIST","File exists");let c={type:"directory",lastModified:Date.now(),mode:n?.mode||he.DIR,children:{}};s.children[i]=c}open(r,n,o){if(p(this,l,b).call(this,r).type!=="file")throw new h("EISDIR","Is a directory");let a=p(this,l,Le).call(this);return u(this,I).set(a,r),u(this,U).set(r,a),a}readdir(r){let n=p(this,l,b).call(this,r);if(n.type!=="directory")throw new h("ENOTDIR","Not a directory");return Object.keys(n.children)}read(r,n,o,i,a){let s=p(this,l,X).call(this,r),c=p(this,l,b).call(this,s);if(c.type!=="file")throw new h("EISDIR","Is a directory");return u(this,w).get(c.backingFilename).read(new Uint8Array(n.buffer,o,i).buffer,{at:a})}rename(r,n){p(this,l,R).call(this,{opp:"rename",args:[r,n]},()=>{this._renameState(r,n,!0)})}_renameState(r,n,o=!1){let i=p(this,l,N).call(this,r),a=i.pop(),s=p(this,l,b).call(this,i.join("/"));if(!Object.prototype.hasOwnProperty.call(s.children,a))throw new h("ENOENT","No such file or directory");let c=p(this,l,N).call(this,n),d=c.pop(),m=p(this,l,b).call(this,c.join("/"));if(o&&Object.prototype.hasOwnProperty.call(m.children,d)){let f=m.children[d];u(this,w).get(f.backingFilename).truncate(0),this.state.pool.push(f.backingFilename)}m.children[d]=s.children[a],delete s.children[a]}rmdir(r){p(this,l,R).call(this,{opp:"rmdir",args:[r]},()=>{this._rmdirState(r)})}_rmdirState(r){let n=p(this,l,N).call(this,r),o=n.pop(),i=p(this,l,b).call(this,n.join("/"));if(!Object.prototype.hasOwnProperty.call(i.children,o))throw new h("ENOENT","No such file or directory");let a=i.children[o];if(a.type!=="directory")throw new h("ENOTDIR","Not a directory");if(Object.keys(a.children).length>0)throw new h("ENOTEMPTY","Directory not empty");delete i.children[o]}truncate(r,n=0){let o=p(this,l,b).call(this,r);if(o.type!=="file")throw new h("EISDIR","Is a directory");let i=u(this,w).get(o.backingFilename);if(!i)throw new h("ENOENT","No such file or directory");i.truncate(n),u(this,T).add(i)}unlink(r){p(this,l,R).call(this,{opp:"unlink",args:[r]},()=>{this._unlinkState(r,!0)})}_unlinkState(r,n=!1){let o=p(this,l,N).call(this,r),i=o.pop(),a=p(this,l,b).call(this,o.join("/"));if(!Object.prototype.hasOwnProperty.call(a.children,i))throw new h("ENOENT","No such file or directory");let s=a.children[i];if(s.type!=="file")throw new h("EISDIR","Is a directory");if(delete a.children[i],n){let c=u(this,w).get(s.backingFilename);c?.truncate(0),u(this,T).add(c),u(this,U).has(r)&&(u(this,I).delete(u(this,U).get(r)),u(this,U).delete(r))}this.state.pool.push(s.backingFilename)}utimes(r,n,o){p(this,l,R).call(this,{opp:"utimes",args:[r,n,o]},()=>{this._utimesState(r,n,o)})}_utimesState(r,n,o){let i=p(this,l,b).call(this,r);i.lastModified=o}writeFile(r,n,o){let i=p(this,l,N).call(this,r),a=i.pop(),s=p(this,l,b).call(this,i.join("/"));if(Object.prototype.hasOwnProperty.call(s.children,a)){let m=s.children[a];m.lastModified=Date.now(),p(this,l,j).call(this,{opp:"setLastModified",args:[r,m.lastModified]})}else{if(this.state.pool.length===0)throw new Error("No more file handles available in the pool");let m={type:"file",lastModified:Date.now(),mode:o?.mode||he.FILE,backingFilename:this.state.pool.pop()};s.children[a]=m,p(this,l,j).call(this,{opp:"createFileNode",args:[r,m]})}let c=s.children[a],d=u(this,w).get(c.backingFilename);n.length>0&&(d.write((typeof n=="string"?new TextEncoder().encode(n):new Uint8Array(n)).buffer,{at:0}),r.startsWith("/pg_wal")&&u(this,T).add(d))}_createFileNodeState(r,n){let o=p(this,l,N).call(this,r),i=o.pop(),a=p(this,l,b).call(this,o.join("/"));a.children[i]=n;let s=this.state.pool.indexOf(n.backingFilename);return s>-1&&this.state.pool.splice(s,1),n}_setLastModifiedState(r,n){let o=p(this,l,b).call(this,r);o.lastModified=n}write(r,n,o,i,a){let s=p(this,l,X).call(this,r),c=p(this,l,b).call(this,s);if(c.type!=="file")throw new h("EISDIR","Is a directory");let d=u(this,w).get(c.backingFilename);if(!d)throw new h("EBADF","Bad file descriptor");let m=d.write(new Uint8Array(n.buffer,o,i).buffer,{at:a});return s.startsWith("/pg_wal")&&u(this,T).add(d),m}};J=new WeakMap,B=new WeakMap,M=new WeakMap,$=new WeakMap,S=new WeakMap,D=new WeakMap,w=new WeakMap,K=new WeakMap,I=new WeakMap,U=new WeakMap,T=new WeakMap,l=new WeakSet,He=async function(){z(this,J,await navigator.storage.getDirectory()),z(this,B,await p(this,l,ge).call(this,this.dataDir,{create:!0})),z(this,M,await p(this,l,ge).call(this,It,{from:u(this,B),create:!0})),z(this,$,await u(this,B).getFileHandle(Mt,{create:!0})),z(this,S,await u(this,$).createSyncAccessHandle());let r=new ArrayBuffer(u(this,S).getSize());u(this,S).read(r,{at:0});let n,o=new TextDecoder().decode(r).split(`
2
+ `),i=!1;try{n=JSON.parse(o[0])}catch{n={root:{type:"directory",lastModified:Date.now(),mode:he.DIR,children:{}},pool:[]},u(this,S).truncate(0),u(this,S).write(new TextEncoder().encode(JSON.stringify(n)).buffer,{at:0}),i=!0}this.state=n;let a=o.slice(1).filter(Boolean).map(m=>JSON.parse(m));for(let m of a){let f=`_${m.opp}State`;if(typeof this[f]=="function")try{this[f].bind(this)(...m.args)}catch(x){console.warn("Error applying OPFS AHP WAL entry",m,x)}}let s=[],c=async m=>{if(m.type==="file")try{let f=await u(this,M).getFileHandle(m.backingFilename),x=await f.createSyncAccessHandle();u(this,D).set(m.backingFilename,f),u(this,w).set(m.backingFilename,x)}catch(f){console.error("Error opening file handle for node",m,f)}else for(let f of Object.values(m.children))s.push(c(f))};await c(this.state.root);let d=[];for(let m of this.state.pool)d.push(new Promise(async f=>{u(this,D).has(m)&&console.warn("File handle already exists for pool file",m);let x=await u(this,M).getFileHandle(m),je=await x.createSyncAccessHandle();u(this,D).set(m,x),u(this,w).set(m,je),f()}));await Promise.all([...s,...d]),await this.maintainPool(i?this.initialPoolSize:this.maintainedPoolSize)},R=function(r,n){let o=p(this,l,j).call(this,r);try{n()}catch(i){throw u(this,S).truncate(o),i}},j=function(r){let n=JSON.stringify(r),o=new TextEncoder().encode(`
3
+ ${n}`),i=u(this,S).getSize();return u(this,S).write(o.buffer,{at:i}),u(this,T).add(u(this,S)),i},N=function(r){return r.split("/").filter(Boolean)},b=function(r,n){let o=p(this,l,N).call(this,r),i=n||this.state.root;for(let a of o){if(i.type!=="directory")throw new h("ENOTDIR","Not a directory");if(!Object.prototype.hasOwnProperty.call(i.children,a))throw new h("ENOENT","No such file or directory");i=i.children[a]}return i},X=function(r){let n=u(this,I).get(r);if(!n)throw new h("EBADF","Bad file descriptor");return n},Le=function(){let r=++se(this,K)._;for(;u(this,I).has(r);)se(this,K)._++;return r},ge=async function(r,n){let o=p(this,l,N).call(this,r),i=n?.from||u(this,J);for(let a of o)i=await i.getDirectoryHandle(a,{create:n?.create});return i};var h=class extends Error{constructor(t,r){super(r),typeof t=="number"?this.code=t:typeof t=="string"&&(this.code=Y[t])}};0&&(module.exports={OpfsAhpFS});
4
4
  //# sourceMappingURL=opfs-ahp.cjs.map