flatsql 3.11.0 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +61 -795
  2. package/bin/flatsql.mjs +76 -0
  3. package/cpp/README.md +18 -0
  4. package/cpp/include/flatsql/flatsql.h +162 -0
  5. package/cpp/include/flatsql/flatsql_io.h +159 -0
  6. package/docs/API-3.12.md +114 -0
  7. package/package.json +28 -123
  8. package/wasm/flatsql.wasm +0 -0
  9. package/wasm/index.d.ts +61 -548
  10. package/wasm/index.js +280 -1281
  11. package/wasm/integrity.json +6 -26
  12. package/wasm/runtime/LICENSE.sdk.txt +190 -0
  13. package/wasm/runtime/NOTICE.txt +2 -0
  14. package/wasm/runtime/browser-guest.mjs +1 -0
  15. package/wasm/runtime/browser-host.mjs +1 -0
  16. package/wasm/runtime/node-guest.mjs +2 -0
  17. package/wasm/runtime/node-host.mjs +5 -0
  18. package/wasm/runtime/opfsIoWorker.mjs +1 -0
  19. package/wasm/runtime/wasiThreadBrowserWorker.mjs +1 -0
  20. package/dist/artifacts/index.d.ts +0 -3
  21. package/dist/artifacts/index.d.ts.map +0 -1
  22. package/dist/artifacts/index.js +0 -3
  23. package/dist/artifacts/index.js.map +0 -1
  24. package/dist/artifacts/transport.d.ts +0 -5
  25. package/dist/artifacts/transport.d.ts.map +0 -1
  26. package/dist/artifacts/transport.js +0 -45
  27. package/dist/artifacts/transport.js.map +0 -1
  28. package/dist/artifacts/types.d.ts +0 -34
  29. package/dist/artifacts/types.d.ts.map +0 -1
  30. package/dist/artifacts/types.js +0 -2
  31. package/dist/artifacts/types.js.map +0 -1
  32. package/dist/btree/btree.d.ts +0 -34
  33. package/dist/btree/btree.d.ts.map +0 -1
  34. package/dist/btree/btree.js +0 -234
  35. package/dist/btree/btree.js.map +0 -1
  36. package/dist/btree/index.d.ts +0 -3
  37. package/dist/btree/index.d.ts.map +0 -1
  38. package/dist/btree/index.js +0 -3
  39. package/dist/btree/index.js.map +0 -1
  40. package/dist/btree/types.d.ts +0 -36
  41. package/dist/btree/types.d.ts.map +0 -1
  42. package/dist/btree/types.js +0 -55
  43. package/dist/btree/types.js.map +0 -1
  44. package/dist/cluster/index.d.ts +0 -11
  45. package/dist/cluster/index.d.ts.map +0 -1
  46. package/dist/cluster/index.js +0 -59
  47. package/dist/cluster/index.js.map +0 -1
  48. package/dist/response/artifact.d.ts +0 -4
  49. package/dist/response/artifact.d.ts.map +0 -1
  50. package/dist/response/artifact.js +0 -102
  51. package/dist/response/artifact.js.map +0 -1
  52. package/dist/response/cache-key.d.ts +0 -6
  53. package/dist/response/cache-key.d.ts.map +0 -1
  54. package/dist/response/cache-key.js +0 -114
  55. package/dist/response/cache-key.js.map +0 -1
  56. package/dist/response/index.d.ts +0 -5
  57. package/dist/response/index.d.ts.map +0 -1
  58. package/dist/response/index.js +0 -5
  59. package/dist/response/index.js.map +0 -1
  60. package/dist/response/memory-cache.d.ts +0 -17
  61. package/dist/response/memory-cache.d.ts.map +0 -1
  62. package/dist/response/memory-cache.js +0 -76
  63. package/dist/response/memory-cache.js.map +0 -1
  64. package/dist/response/types.d.ts +0 -57
  65. package/dist/response/types.d.ts.map +0 -1
  66. package/dist/response/types.js +0 -2
  67. package/dist/response/types.js.map +0 -1
  68. package/dist/schema/index.d.ts +0 -3
  69. package/dist/schema/index.d.ts.map +0 -1
  70. package/dist/schema/index.js +0 -3
  71. package/dist/schema/index.js.map +0 -1
  72. package/dist/schema/parser.d.ts +0 -25
  73. package/dist/schema/parser.d.ts.map +0 -1
  74. package/dist/schema/parser.js +0 -474
  75. package/dist/schema/parser.js.map +0 -1
  76. package/dist/schema/types.d.ts +0 -33
  77. package/dist/schema/types.d.ts.map +0 -1
  78. package/dist/schema/types.js +0 -29
  79. package/dist/schema/types.js.map +0 -1
  80. package/dist/standalone/index.d.ts +0 -3
  81. package/dist/standalone/index.d.ts.map +0 -1
  82. package/dist/standalone/index.js +0 -3
  83. package/dist/standalone/index.js.map +0 -1
  84. package/dist/standalone/process-client.d.ts +0 -85
  85. package/dist/standalone/process-client.d.ts.map +0 -1
  86. package/dist/standalone/process-client.js +0 -537
  87. package/dist/standalone/process-client.js.map +0 -1
  88. package/dist/standalone/wasmedge-runner.d.ts +0 -19
  89. package/dist/standalone/wasmedge-runner.d.ts.map +0 -1
  90. package/dist/standalone/wasmedge-runner.js +0 -108
  91. package/dist/standalone/wasmedge-runner.js.map +0 -1
  92. package/dist/storage/index.d.ts +0 -3
  93. package/dist/storage/index.d.ts.map +0 -1
  94. package/dist/storage/index.js +0 -3
  95. package/dist/storage/index.js.map +0 -1
  96. package/dist/storage/stacked-flatbuffers.d.ts +0 -38
  97. package/dist/storage/stacked-flatbuffers.d.ts.map +0 -1
  98. package/dist/storage/stacked-flatbuffers.js +0 -253
  99. package/dist/storage/stacked-flatbuffers.js.map +0 -1
  100. package/dist/storage/types.d.ts +0 -23
  101. package/dist/storage/types.d.ts.map +0 -1
  102. package/dist/storage/types.js +0 -27
  103. package/dist/storage/types.js.map +0 -1
  104. package/dist/stress/aggregate.d.ts +0 -3
  105. package/dist/stress/aggregate.d.ts.map +0 -1
  106. package/dist/stress/aggregate.js +0 -61
  107. package/dist/stress/aggregate.js.map +0 -1
  108. package/dist/stress/docker-compose.d.ts +0 -17
  109. package/dist/stress/docker-compose.d.ts.map +0 -1
  110. package/dist/stress/docker-compose.js +0 -156
  111. package/dist/stress/docker-compose.js.map +0 -1
  112. package/dist/stress/index.d.ts +0 -10
  113. package/dist/stress/index.d.ts.map +0 -1
  114. package/dist/stress/index.js +0 -10
  115. package/dist/stress/index.js.map +0 -1
  116. package/dist/stress/metrics.d.ts +0 -3
  117. package/dist/stress/metrics.d.ts.map +0 -1
  118. package/dist/stress/metrics.js +0 -83
  119. package/dist/stress/metrics.js.map +0 -1
  120. package/dist/stress/native-publish-event-workload.d.ts +0 -3
  121. package/dist/stress/native-publish-event-workload.d.ts.map +0 -1
  122. package/dist/stress/native-publish-event-workload.js +0 -465
  123. package/dist/stress/native-publish-event-workload.js.map +0 -1
  124. package/dist/stress/production-gate.d.ts +0 -4
  125. package/dist/stress/production-gate.d.ts.map +0 -1
  126. package/dist/stress/production-gate.js +0 -12
  127. package/dist/stress/production-gate.js.map +0 -1
  128. package/dist/stress/report.d.ts +0 -3
  129. package/dist/stress/report.d.ts.map +0 -1
  130. package/dist/stress/report.js +0 -174
  131. package/dist/stress/report.js.map +0 -1
  132. package/dist/stress/sds-discovery.d.ts +0 -4
  133. package/dist/stress/sds-discovery.d.ts.map +0 -1
  134. package/dist/stress/sds-discovery.js +0 -40
  135. package/dist/stress/sds-discovery.js.map +0 -1
  136. package/dist/stress/smoke-runner.d.ts +0 -3
  137. package/dist/stress/smoke-runner.d.ts.map +0 -1
  138. package/dist/stress/smoke-runner.js +0 -64
  139. package/dist/stress/smoke-runner.js.map +0 -1
  140. package/dist/stress/types.d.ts +0 -219
  141. package/dist/stress/types.d.ts.map +0 -1
  142. package/dist/stress/types.js +0 -2
  143. package/dist/stress/types.js.map +0 -1
  144. package/dist/stress/workload.d.ts +0 -6
  145. package/dist/stress/workload.d.ts.map +0 -1
  146. package/dist/stress/workload.js +0 -144
  147. package/dist/stress/workload.js.map +0 -1
  148. package/docs/PARTITION-STORE-WASM.md +0 -338
  149. package/docs/PARTITION-STORE.md +0 -2380
  150. package/docs/agents/response-artifacts.md +0 -65
  151. package/docs/response-artifacts.md +0 -86
  152. package/scripts/stress-docker.sh +0 -279
  153. package/sdm/flatsql-spatial.wasm +0 -0
  154. package/sdm/index.d.ts +0 -88
  155. package/sdm/index.js +0 -253
  156. package/sdm/manifest.json +0 -402
  157. package/stress/docker/Dockerfile +0 -11
  158. package/stress/docker/docker-compose.yml +0 -51
  159. package/stress/sds/aggregate.mjs +0 -97
  160. package/stress/sds/run.mjs +0 -105
  161. package/stress/sds/write-compose.mjs +0 -96
  162. package/wasm/flatsql-client.js +0 -280
  163. package/wasm/flatsql-io.d.ts +0 -97
  164. package/wasm/flatsql-io.js +0 -621
  165. package/wasm/flatsql-p4-threads.wasm +0 -0
  166. package/wasm/flatsql-ps-threads.wasm +0 -0
  167. package/wasm/flatsql-wasi-noeh.wasm +0 -0
  168. package/wasm/flatsql-wasi.wasm +0 -0
  169. package/wasm/flatsql.js +0 -2
  170. package/wasm/flatsql.worker.js +0 -209
  171. package/wasm/native/flatsql_wasmedge_runner.cpp +0 -858
  172. package/wasm/ps-node-fault.d.mts +0 -23
  173. package/wasm/ps-node-fault.mjs +0 -381
  174. package/wasm/ps-node-guest.mjs +0 -173
  175. package/wasm/ps-node-host.d.mts +0 -95
  176. package/wasm/ps-node-host.mjs +0 -476
  177. package/wasm/ps-node-imports.mjs +0 -847
  178. package/wasm/ps.d.ts +0 -21
  179. package/wasm/ps.js +0 -75
  180. package/wasm/wasi.d.ts +0 -11
  181. package/wasm/wasi.js +0 -51
@@ -1,33 +1,13 @@
1
1
  {
2
2
  "algorithm": "sha384",
3
- "hash": "lo5Z9SZ5dLzJokhZpE5G9thCtbsEToamsnqkcquS7lz5EwR+jtVx8MeGKFbQe3iB",
4
- "sri": "sha384-lo5Z9SZ5dLzJokhZpE5G9thCtbsEToamsnqkcquS7lz5EwR+jtVx8MeGKFbQe3iB",
5
- "size": 2332160,
3
+ "hash": "AuSJGOUjIHQ52PWTwHZZ2buUedVPxgkSbw2nrEMQhg/90O3WnOtmuQ1bbzLN4rXc",
4
+ "sri": "sha384-AuSJGOUjIHQ52PWTwHZZ2buUedVPxgkSbw2nrEMQhg/90O3WnOtmuQ1bbzLN4rXc",
5
+ "size": 3715989,
6
6
  "files": {
7
- "flatsql-p4-threads.wasm": {
8
- "sha256": "56b242de531a657714141583f0ed378335049cc6a94c28930e0f85a2d7297477",
9
- "sri": "sha384-5n15mndPLu4Nl68m5LiZVLnopDGeJaIhO9PFaf94IaUL1xxP11ylXueXffRM88MX",
10
- "size": 3615814
11
- },
12
- "flatsql-ps-threads.wasm": {
13
- "sha256": "aa1ed58de773347c478215a763328f2aca9bca795c0944a85247e53b2433736a",
14
- "sri": "sha384-ZTcxIdR1ya/icHbvLaKv9rOjJcsXQ0NXXN3BQOuIwk86iF73DqqQM8vz9PtNmpqq",
15
- "size": 2680218
16
- },
17
- "flatsql-wasi-noeh.wasm": {
18
- "sha256": "48dbf9473b5a4a506b0b42e5a1a66a6d5d2ff8173d6dbfef0cd59dfe4b24af86",
19
- "sri": "sha384-ohr1g+djwFDAMymrT5Q/ojNp27OKhe7manAdOBPVE7Bc4wwLmy06+TvNxKWxiYg+",
20
- "size": 2241020
21
- },
22
- "flatsql-wasi.wasm": {
23
- "sha256": "d0bc62d6d73f0af2a521d45345f8f066742f9f24df7b39fe5d332d18fecfc54c",
24
- "sri": "sha384-Gh5r7/pAFDJOyoqVLKCxZ2h9Ov9o9ijfGLBCkjxDpsVTijhRa9KdbWMPJm9lNHjF",
25
- "size": 2335758
26
- },
27
7
  "flatsql.wasm": {
28
- "sha256": "891325ef63b3af716ac57cab8b0f5562a19a1f847acddba6ab720e64bdd72cda",
29
- "sri": "sha384-lo5Z9SZ5dLzJokhZpE5G9thCtbsEToamsnqkcquS7lz5EwR+jtVx8MeGKFbQe3iB",
30
- "size": 2332160
8
+ "sha256": "e28b8cde71f2fcac5493bc2263f3c24ed0449dee03faac1e9386471d0ebf5e6f",
9
+ "sri": "sha384-AuSJGOUjIHQ52PWTwHZZ2buUedVPxgkSbw2nrEMQhg/90O3WnOtmuQ1bbzLN4rXc",
10
+ "size": 3715989
31
11
  }
32
12
  }
33
13
  }
@@ -0,0 +1,190 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to the Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by the Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding any notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ Copyright 2024 Edgesource Corporation
179
+
180
+ Licensed under the Apache License, Version 2.0 (the "License");
181
+ you may not use this file except in compliance with the License.
182
+ You may obtain a copy of the License at
183
+
184
+ http://www.apache.org/licenses/LICENSE-2.0
185
+
186
+ Unless required by applicable law or agreed to in writing, software
187
+ distributed under the License is distributed on an "AS IS" BASIS,
188
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
189
+ See the License for the specific language governing permissions and
190
+ limitations under the License.
@@ -0,0 +1,2 @@
1
+ Generic host adapters bundled from space-data-module-sdk 0.8.24 (Apache-2.0).
2
+ https://github.com/DigitalArsenal/space-data-module-sdk
@@ -0,0 +1 @@
1
+ var be=class extends Error{constructor(t){super(`WASI exit with code ${t}`),this.name="WasiExitError",this.code=t}};function it({args:e=[],env:t={},stdinBytes:r=[],maxOutputBytes:n=16*1024*1024}={}){let o=new Uint8Array(r),a=new Uint8Array(new SharedArrayBuffer(o.length));return a.set(o),{args:e,env:t,input:a,control:new Int32Array(new SharedArrayBuffer(5*4)),stdout:new Uint8Array(new SharedArrayBuffer(n)),stderr:new Uint8Array(new SharedArrayBuffer(n))}}function _r(e,t,r,n){for(;;){let o=Atomics.load(e,t);if(r>n-o)return-1;if(Atomics.compareExchange(e,t,o,o+r)===o)return o}}function ct(e={}){let t=e.processState,r=t?.args??e.args??[],n=t?.env??e.env??{},o=t?.input??new Uint8Array(e.stdinBytes??[]),a=e.logOutput===!0,u=e.performance??globalThis.performance??{now:()=>Date.now(),timeOrigin:0},d=e.crypto??globalThis.crypto??null,m=[],y=[],S=0,F=null;function E(l){F=l}function A(){return F}function I(){return new Uint8Array(F.buffer)}function i(){return new DataView(F.buffer)}let c=Object.entries(n).map(([l,w])=>`${l}=${w}`).map(l=>new TextEncoder().encode(l)),p=r.map(l=>new TextEncoder().encode(l));function h(l,w,R){let B;if(l===0)B=BigInt(Math.round((u.timeOrigin+u.now())*1e6));else if(l===1)B=BigInt(Math.round(u.now()*1e6));else return 28;return i().setBigUint64(R,B,!0),0}function f(l,w,R,B){if(l!==1&&l!==2)return 8;let T=l===1?m:y,b=0,Z=i(),te=I();for(let P=0;P<R;P++){let H=w+P*8,v=Z.getUint32(H,!0),C=Z.getUint32(H+4,!0);if(t){let z=l===1?t.stdout:t.stderr,at=_r(t.control,l,C,z.length);if(at<0)return 51;z.set(te.subarray(v,v+C),at)}else T.push(te.slice(v,v+C));b+=C}return Z.setUint32(B,b,!0),0}function O(l,w,R,B){if(l!==0)return i().setUint32(B,0,!0),8;let T=i(),b=I(),Z=0;for(let te=0;te<R;te+=1){let P=w+te*8,H=T.getUint32(P,!0),v=T.getUint32(P+4,!0),C,z;if(t)do C=Atomics.load(t.control,0),z=Math.min(v,o.length-C);while(Atomics.compareExchange(t.control,0,C,C+z)!==C);else C=S,z=Math.min(v,o.length-C),S+=z;if(z===0){if(C>=o.length)break;continue}b.set(o.subarray(C,C+z),H),Z+=z}return T.setUint32(B,Z,!0),0}function N(l){return l<=2?0:8}function G(l,w,R,B){return l<=2?70:8}function U(l,w){if(l>2)return 8;let R=i();return R.setUint8(w,2),R.setUint16(w+2,0,!0),R.setBigUint64(w+8,0n,!0),R.setBigUint64(w+16,0n,!0),0}function me(l,w){return l<=2?0:8}function Ne(l,w){return 8}function fe(l,w,R){return 8}function ee(){return 8}function ue(l,w){let R=i();R.setUint32(l,c.length,!0);let B=0;for(let T of c)B+=T.length+1;return R.setUint32(w,B,!0),0}function ne(l,w){let R=i(),B=I(),T=w;for(let b=0;b<c.length;b++)R.setUint32(l+b*4,T,!0),B.set(c[b],T),T+=c[b].length,B[T]=0,T+=1;return 0}function Ce(l,w){let R=i();R.setUint32(l,p.length,!0);let B=0;for(let T of p)B+=T.length+1;return R.setUint32(w,B,!0),0}function Fe(l,w){let R=i(),B=I(),T=w;for(let b=0;b<p.length;b++)R.setUint32(l+b*4,T,!0),B.set(p[b],T),T+=p[b].length,B[T]=0,T+=1;return 0}function st(l,w){return d?.getRandomValues?(d.getRandomValues(I().subarray(l,l+w)),0):52}function L(l){throw t&&(Atomics.store(t.control,4,l),Atomics.store(t.control,3,1)),a&&D(),new be(l)}function g(){return 0}function D(){if(m.length>0){let l=x(m);if(a){let w=new TextDecoder().decode(l);w&&console.log(w)}m.length=0}if(y.length>0){let l=x(y);if(a){let w=new TextDecoder().decode(l);w&&console.warn(w)}y.length=0}}function x(l){let w=0;for(let T of l)w+=T.length;let R=new Uint8Array(w),B=0;for(let T of l)R.set(T,B),B+=T.length;return R}return{imports:{wasi_snapshot_preview1:{clock_time_get:h,fd_write:f,fd_read:O,fd_close:N,fd_seek:G,fd_fdstat_get:U,fd_fdstat_set_flags:me,fd_prestat_get:Ne,fd_prestat_dir_name:fe,path_open:ee,environ_sizes_get:ue,environ_get:ne,args_sizes_get:Ce,args_get:Fe,random_get:st,proc_exit:L,sched_yield:g}},setMemory:E,getMemory:A,flushOutput:D,get stdout(){return t?t.stdout.slice(0,Atomics.load(t.control,1)):x(m)},get stderr(){return t?t.stderr.slice(0,Atomics.load(t.control,2)):x(y)}}}var we="node:";var pr=typeof process<"u"&&!!process.release&&process.release.name==="node",ye="wasiThreadBrowserWorker.mjs",lt=(()=>{try{return new URL(`./${ye}`,import.meta.url)}catch{return null}})(),hr=null;function Er(e){let t=String(e);return t.endsWith("/")?t:`${t}/`}function Ar({browserWorkerUrl:e,browserWorkerBaseUrl:t}={}){if(e)return String(e);let r=t?Er(t):hr;if(r){let n=typeof globalThis<"u"&&globalThis.location&&typeof globalThis.location.href=="string"?globalThis.location.href:void 0;return n?new URL(`${r}${ye}`,n).href:`${r}${ye}`}if(!lt)throw new de("(no packaged anchor: this host source was bundled without import.meta.url)");return String(lt)}var de=class extends Error{constructor(t,r){super(`[wasi-thread] pooled browser worker asset is unreachable at ${t}. The anchor must name a directory that serves BOTH ${ye} and wasiThreadWorkerRuntime.js. When this host source is bundled, pass browserWorkerBaseUrl / browserWorkerUrl to createWasiThreadSpawn (or call setBrowserWasiThreadWorkerBase) \u2014 import.meta.url anchors to the bundle, not to the package layout.`),this.name="WasiThreadWorkerUnreachableError",this.workerUrl=String(t),r!==void 0&&(this.cause=r)}};var Sr=1500;function mr(e,{wasmModule:t,memory:r,hostcallChannel:n,processState:o,extraImports:a,timeoutMs:u,partial:d,onExit:m,onGuestError:y,onWorkerError:S}){return new Promise(F=>{let E=e.length,A=!1,I=[],i=new WeakSet,s=new Set,c=new Set,p=(f,O={})=>{if(!A){A=!0;for(let N of I)clearTimeout(N);F({ok:f,unreachable:!1,error:null,readyWorkers:e.filter(N=>s.has(N)),failed:e.filter(N=>c.has(N)),...O})}},h=(f,O)=>{s.has(f)||c.has(f)||((O?s:c).add(f),E-=1,d?E===0&&p(s.size>0):O?E===0&&p(!0):p(!1))};e.forEach((f,O)=>{let N=setTimeout(()=>h(f,!1),u);I.push(N),f.onmessage=G=>{let U=G.data||{};i.add(f),U.t==="ready"?(clearTimeout(N),U.ok!==!0&&U.error&&console.error("[wasi-thread] pooled worker not ready:",U.error),h(f,U.ok===!0)):U.t==="exit"?m(f,U.tid):U.t==="error"&&(console.error("[wasi-thread] pooled worker guest error:",U.error),y?.(U.tid??null,U.error))},f.onerror=G=>{if(clearTimeout(N),console.error("[wasi-thread] pooled worker error:",G?.message??G),A){S?.(f,G);return}if(!i.has(f)){p(!1,{unreachable:!0,error:G});return}h(f,!1)},f.postMessage({t:"probe",wasmModule:t,memory:r,hostcallChannel:n??null,processState:o,extraImports:a??[],workerIndex:O})})})}function wr(e){return typeof SharedArrayBuffer=="function"&&!!e&&e.buffer instanceof SharedArrayBuffer}function yr(){return typeof navigator<"u"&&Number.isFinite(navigator.hardwareConcurrency)?navigator.hardwareConcurrency:typeof self<"u"&&self.navigator&&Number.isFinite(self.navigator.hardwareConcurrency)?self.navigator.hardwareConcurrency:1}function Ir(e){for(let t of e??[])if(typeof t=="function")throw new TypeError('createWasiThreadSpawn extraImports must be structured-cloneable descriptors (e.g. { provider: "flatsql-io", instanceId, channels }) or { moduleUrl } entries: a function cannot cross into a worker thread.')}function De({poolSize:e,onSpawnDeclined:t}){let r={poolSize:e,armed:0,failedToArm:0,spawned:0,declined:0,declinedByReason:{},lastDeclineReason:null};return{ledger:r,decline(n){if(r.declined+=1,r.declinedByReason[n]=(r.declinedByReason[n]??0)+1,r.lastDeclineReason=n,typeof t=="function")try{t({reason:n,poolSize:e,declined:r.declined})}catch{}return-1}}}function Me(e,t,r,n){if(typeof e=="function")try{e(t??null,r??null,n)}catch{}}async function ft({wasmModule:e,memory:t,requestedThreads:r,poolSize:n,extraImports:o,instanceId:a,onGuestError:u,onSpawnDeclined:d,probeTimeoutMs:m,hostcallChannel:y,processState:S,requiresHostcalls:F=!1,enableBrowserThreads:E,browserWorkerBaseUrl:A,browserWorkerUrl:I,browserWorkerType:i="module"}={}){let s=0,c=0,p=Number.isFinite(n);if(p&&(n<0||Math.floor(n)!==n))throw new RangeError("poolSize must be a non-negative integer.");if(Ir(o),F&&!y){let{ledger:L,decline:g}=De({poolSize:p?n:0,onSpawnDeclined:d});return{threadSpawn:()=>g("hostcall-channel-missing"),activeThreadCount:()=>0,spawnCount:()=>0,distinctOsThreadCount:()=>0,spawnReport:()=>({...L,active:0}),async terminateAll(){}}}if(pr){let L=new Set,g=new Set,{ledger:D,decline:x}=De({poolSize:p?n:null,onSpawnDeclined:d}),R=(await import(we+"worker_threads")).Worker,B=new URL("./wasiThreadWorker.mjs",import.meta.url),T=globalThis.process.execArgv,b=["--input-type","--eval","-e","--print","-p"],Z=T.some(P=>P.startsWith("--input-type"))?T.filter((P,H,v)=>!b.some(C=>P===C||P.startsWith(`${C}=`))&&!(H>0&&b.includes(v[H-1]))):void 0;return{threadSpawn:P=>{if(p&&L.size>=n)return x("pool-exhausted");let H=s+=1;try{let v=new R(B,{execArgv:Z,workerData:{wasmModule:e,memory:t,tid:H,startArg:P,hostcallChannel:y??null,processState:S,extraImports:o??[],workerIndex:H-1}});return typeof v.threadId=="number"&&g.add(v.threadId),v.on("error",C=>{console.error("[wasi-thread] worker error:",C),Me(u,a,H,C)}),v.once("exit",()=>L.delete(v)),L.add(v),c+=1,D.spawned+=1,H}catch{return x("worker-create-failed")}},activeThreadCount:()=>L.size,spawnCount:()=>c,distinctOsThreadCount:()=>g.size,spawnReport:()=>({...D,active:L.size}),async terminateAll(){for(let P of L)try{await P.terminate?.()}catch{}L.clear()}}}let h=[],f=new Map,O=[],N=!0,U=(E??globalThis.__SDM_ENABLE_BROWSER_WASI_THREADS__===!0)===!0&&globalThis.crossOriginIsolated===!0&&wr(t),me=yr(),Ne=Number.isFinite(r)?Math.floor(r):me,fe=U?p?n:Math.max(0,Math.min(Math.floor(me)-1,Ne)):0,{ledger:ee,decline:ue}=De({poolSize:p?n:fe,onSpawnDeclined:d}),ne=U?null:"threads-unavailable",Ce=(L,g)=>{g!=null&&f.delete(g),!N&&O.includes(L)&&!h.includes(L)&&h.push(L)},Fe=(L,g)=>{let D=null;for(let[w,R]of f)R===L&&(D=w,f.delete(w));let x=O.indexOf(L);x>=0&&O.splice(x,1);let l=h.indexOf(L);l>=0&&h.splice(l,1),Me(u,a,D,g)};if(fe>0){let L=Ar({browserWorkerUrl:I,browserWorkerBaseUrl:A}),g=[];try{for(let x=0;x<fe;x+=1)g.push(i==="classic"?new Worker(L):new Worker(L,{type:"module"}))}catch(x){for(let l of g)try{l.terminate()}catch{}throw new de(L,x)}let D=await mr(g,{wasmModule:e,memory:t,hostcallChannel:y,processState:S,extraImports:o,timeoutMs:Number.isFinite(m)&&m>0?m:Sr,partial:p,onExit:Ce,onGuestError:(x,l)=>Me(u,a,x,l),onWorkerError:Fe});if(D.unreachable){for(let x of g)try{x.terminate()}catch{}throw new de(L,D.error)}if(D.ok){N=!1;let x=p?D.readyWorkers:g;for(let l of x)O.push(l),h.push(l);for(let l of g)if(!x.includes(l))try{l.terminate()}catch{}ee.armed=x.length,ee.failedToArm=g.length-x.length}else{for(let x of g)try{x.terminate()}catch{}ee.failedToArm=g.length,ne="pool-not-armed"}}else U&&(ne="pool-empty");return{threadSpawn:L=>{if(N)return ue(ne??"pool-disabled");let g=h.pop();if(!g)return ue("pool-exhausted");let D=s+=1;f.set(D,g);try{g.postMessage({t:"run",tid:D,startArg:L})}catch{return f.delete(D),h.push(g),ue("dispatch-failed")}return c+=1,ee.spawned+=1,D},activeThreadCount:()=>f.size,spawnCount:()=>c,distinctOsThreadCount:()=>O.length,spawnReport:()=>({...ee,active:f.size,idle:h.length}),async terminateAll(){N=!0,ne="terminated";for(let L of O)try{L.terminate()}catch{}O.length=0,h.length=0,f.clear()}}}var ln=Object.freeze({READ:1,WRITE:2,CREATE:4,EXCL:8,TRUNC:16,DELETE_ON_CLOSE:32,PROBE:64,UNLINK:128,CREATE_PARENTS:256,UNLINK_IF_UNUSED:512,OPEN_DEFERRED:1024}),fn=Object.freeze({OK:0,GENERIC:-1,NOENT:-2,ACCESS:-3,IO:-4,NOSPACE:-5,BADHANDLE:-6,BUSY:-7});var un=Object.freeze(["flatsql_io_open","flatsql_io_read","flatsql_io_write","flatsql_io_truncate","flatsql_io_sync","flatsql_io_size","flatsql_io_close"]),oe=4096;var dn=typeof TextDecoder=="function"?new TextDecoder("utf-8",{fatal:!0}):null;function ut(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e[r],t=Math.imul(t,16777619);return t>>>0}var pt=1330201683,ht=1,Et=0,At=1,St=2,mt=3,wt=4,he=5,He=6,$e=7;var Or=9,Oe=10,yt=11;var It=13,qe=64,Ue=qe*4;var Ot=1;var Rr=3;var Ve=1,Rt=0,Tt=1,ze=2,ie=3,J=32767,K=0,Lt=1,ke=2,gt=3,xt=4,Bt=5,Nt=6,Ct=7,Ft=8,bt=9,ve=10,Ye=11,Dt=12,Mt=13,Ut=8,Ge=9,Ie=128,Qe=0,Tr=1,Ke=2,kt=3,vt=4,Lr=0,gr=1,xr=0,Qt=1,Pt=1,se=2,pe=3,Wt=4,Ht=5,$t=6,qt=7,Br=64,Nr=64*1024,Cr=64,Pe=250,Fr=20;function dt(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function We(e,t){return Math.ceil(e/t)*t}function Vt(e){if(typeof SharedArrayBuffer!="function"||!(e instanceof SharedArrayBuffer))throw new TypeError("The SAB I/O channel requires a SharedArrayBuffer (cross-origin isolation in browsers).")}function zt(e={}){if(typeof SharedArrayBuffer!="function")throw new Error("SharedArrayBuffer is unavailable; the I/O channel requires it (browsers additionally require cross-origin isolation: COOP+COEP).");let t=Number.isInteger(e.slots)?e.slots:Br,r=Number.isInteger(e.dataBytes)?e.dataBytes:Nr,n=Number.isInteger(e.maxInstances)?e.maxInstances:Cr;if(t<1||t>4096)throw new RangeError("slots must be an integer in 1..4096.");if(r<oe||r%8!==0)throw new RangeError(`dataBytes must be a multiple of 8 and at least ${oe}.`);if(n<1||n>J)throw new RangeError(`maxInstances must be in 1..${J}.`);let o=We(Ie+r,64),a=We(Ue+n*4,64),u=new SharedArrayBuffer(a+t*o),d=new Int32Array(u,0,qe);return d[Et]=pt,d[At]=ht,d[St]=t,d[mt]=o,d[wt]=n,d[yt]=r,d[It]=Math.random()*2147483647|0||1,u}function re(e){Vt(e);let t=new Int32Array(e,0,qe);if(t[Et]!==pt||t[At]!==ht)throw new TypeError("Not a SAB I/O channel buffer (bad magic or version).");let r=t[St],n=t[mt],o=t[wt],a=t[yt],u=We(Ue+o*4,64),d=new Int32Array(e,Ue,o),m=[];for(let y=0;y<r;y+=1){let S=u+y*n;m.push({index:y,base:S,i32:new Int32Array(e,S,Ie/4),f64:new Float64Array(e,S,Ie/8),data:new Uint8Array(e,S+Ie,a)})}return{buffer:e,header:t,instances:d,slots:m,slotCount:r,slotBytes:n,dataBytes:a,maxInstances:o,channelId:t[It]}}function Xe(e){return`sdm-sab-io-doorbell-${e}`}function br(e){return`sdm-sab-io-done-${e}`}function Dr(e,t){Atomics.add(e.header,he,1),Atomics.notify(e.header,he),Atomics.load(e.header,$e)===Ve&&t()?.postMessage(0)}function Mr(e){let t=null;return{get(){return!t&&typeof BroadcastChannel=="function"&&(t=new BroadcastChannel(e)),t},close(){t?.close(),t=null}}}var Ur=typeof TextEncoder=="function"?new TextEncoder:null;function kr(){return(Math.random()*2147483646|0)+1}function vr(e,t){let r=(Atomics.add(e.header,Or,1)>>>0)%e.slotCount;for(let n=0;n<e.slotCount;n+=1){let o=e.slots[(r+n)%e.slotCount];if(Atomics.compareExchange(o.i32,K,Qe,Tr)===Qe)return Atomics.store(o.i32,Lt,t),o}return null}function _t(e,t){Atomics.store(t.i32,Lt,0),Atomics.store(t.i32,K,Qe),Atomics.add(e.header,Oe,1),Atomics.notify(e.header,Oe)}function Qr(e,t,r){let n=e.i32;n[xt]=t,n[Bt]=r.instanceId??J,n[Nt]=r.handle??-1,n[Ct]=r.flags??0,n[Ft]=r.ptr??0,n[bt]=r.len??0,n[Mt]=r.dataInSlot?Qt:xr,n[Ye]=0,e.f64[Ut]=r.offset??0,e.f64[Ge]=0,r.path?(e.data.set(r.path,0),n[ve]=r.path.length):n[ve]=0}function Pr(e){return Atomics.load(e.i32,Ye)}function Yt(e={}){Vt(e.buffer);let t=re(e.buffer),r=Number.isInteger(e.instanceId)?e.instanceId:J;if(r!==J&&(r<0||r>=t.maxInstances))throw new RangeError(`instanceId ${r} is outside 0..${t.maxInstances-1}.`);let n=typeof e.getMemory=="function"?e.getMemory:()=>null,o=Number.isFinite(e.spinMicros)?Math.max(0,e.spinMicros):Fr,a=kr(),u=Mr(Xe(t.channelId)),d=0;function m(){for(;;){let i=Atomics.load(t.header,Oe),s=vr(t,a);if(s)return s;Atomics.wait(t.header,Oe,i,Pe)}}function y(i,s,c){let p=Atomics.load(i.i32,ke)+1|0||1;Qr(i,s,c),Atomics.store(i.i32,Dt,Lr),Atomics.store(i.i32,ke,p),Atomics.store(i.i32,K,Ke),Dr(t,u.get);let h=o>0?dt()+o/1e3:0;for(;;){let f=Atomics.load(i.i32,K);if(f===vt&&Atomics.load(i.i32,gt)===p)break;h>0&&dt()<h||Atomics.wait(i.i32,K,f,Pe)}return d+=1,{status:Pr(i),result:i.f64[Ge]}}function S(i,s){let c=m();try{return y(c,i,s)}finally{_t(t,c)}}function F(){return r!==J&&Atomics.load(t.instances,r)===Tt}function E(){if(r===J)return!1;let i=Atomics.load(t.instances,r);return i===ze||i===ie}function A(i,s,c,p){let h=0;for(;h<c.length;){let f=Math.min(t.dataBytes,c.length-h),O=m(),N;try{i===pe&&O.data.set(c.subarray(h,h+f),0),N=y(O,i,{instanceId:r,dataInSlot:!0,handle:s,ptr:0,len:f,offset:p+h}).status,i===se&&N>0&&c.set(O.data.subarray(0,N),h)}finally{_t(t,O)}if(N<0)return h>0&&i===se?h:N;if(h+=N,N<f)break}return h}function I(i,s){let c=n(),p=c?.buffer??c;return!p||i<0||s<0||i+s>p.byteLength?null:new Uint8Array(p,i,s)}return{instanceId:r,get requests(){return d},open(i,s){let c=typeof i=="string"?Ur.encode(i):i;return!(c instanceof Uint8Array)||c.length===0?-1:c.length>Math.min(t.dataBytes,oe)?-1:S(Pt,{instanceId:r,flags:s|0,path:c}).status},read(i,s,c,p){if(c===0)return 0;if(F())return S(se,{instanceId:r,handle:i,ptr:s,len:c,offset:p}).status;let h=I(s,c);return h?A(se,i,h,p):E()?-3:-1},write(i,s,c,p){if(c===0)return 0;if(F())return S(pe,{instanceId:r,handle:i,ptr:s,len:c,offset:p}).status;let h=I(s,c);return h?A(pe,i,h,p):E()?-3:-1},readInto(i,s,c){return s.length===0?0:A(se,i,s,c)},writeFrom(i,s,c){return s.length===0?0:A(pe,i,s,c)},truncate(i,s){return S(Wt,{instanceId:r,handle:i,offset:s}).status},sync(i){return S(Ht,{instanceId:r,handle:i}).status},size(i){let{status:s,result:c}=S($t,{instanceId:r,handle:i});return s<0?s:c},close(i){return S(qt,{instanceId:r,handle:i}).status},release(){u.close()}}}async function Gt(e,t,{pollMs:r=5}={}){let n=re(e);if(t<0||t>=n.maxInstances)throw new RangeError(`instanceId ${t} is outside 0..${n.maxInstances-1}.`);if(Atomics.store(n.instances,t,ze),Atomics.add(n.header,he,1),Atomics.notify(n.header,he),Atomics.load(n.header,$e)===Ve){let o=typeof BroadcastChannel=="function"?new BroadcastChannel(Xe(n.channelId)):null;o?.postMessage(0),o?.close()}for(;;){let o=Atomics.load(n.instances,t);if(o===ie)return;if(Atomics.load(n.header,He)!==Ot){Atomics.store(n.instances,t,ie);return}if(typeof Atomics.waitAsync=="function"){let a=Atomics.waitAsync(n.instances,t,o,Pe);a.async&&await a.value}else await new Promise(a=>setTimeout(a,r))}}function Kt(e,t){let r=re(e);Atomics.store(r.instances,t,Rt)}function Xt(e,t=-4){let r=re(e);Atomics.store(r.header,He,Rr);let n=0;for(let o of r.slots){let a=Atomics.load(o.i32,K);(a===Ke||a===kt)&&(Zt(r,o,t,0),n+=1)}return n}var _e=null;function Wr(e){return typeof BroadcastChannel!="function"?null:((!_e||_e.id!==e.channelId)&&(_e?.channel.close(),_e={id:e.channelId,channel:new BroadcastChannel(br(e.channelId))}),_e.channel)}function Zt(e,t,r,n=0){t.f64[Ge]=n,Atomics.store(t.i32,Ye,r|0),Atomics.store(t.i32,gt,Atomics.load(t.i32,ke)),Atomics.store(t.i32,K,vt),Atomics.notify(t.i32,K),Atomics.load(t.i32,Dt)===gr&&Wr(e)?.postMessage(t.index)}var Hr=typeof TextEncoder=="function"?new TextEncoder:null;function $r(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e[r],t=Math.imul(t,16777619);return t|0}var Jt=new WeakMap;function jt(e){let t=Jt.get(e);if(t)return t;let r=new Int32Array(e,0,16);if(r[0]!==1380795475||r[1]!==1)throw new TypeError("Not a SAB I/O mirror buffer.");let n=r[2],o=r[3],a=r[4],u=16*4,d=u+n*32,m=d+n*a;return t={entries:n,entryBytes:o,maxPathBytes:a,i32:new Int32Array(e,u,n*32/4),f64:new Float64Array(e,u,n*32/8),paths:new Uint8Array(e,d,n*a),data:new Uint8Array(e,m,n*o)},Jt.set(e,t),t}function qr(e){return typeof e=="string"?Hr.encode(e):e}function Vr(e,t,r){let n=t*8;if(Atomics.load(e.i32,n+3)!==r.length)return!1;let o=t*e.maxPathBytes;for(let a=0;a<r.length;a+=1)if(e.paths[o+a]!==r[a])return!1;return!0}function zr(e,t,r){let n=(r>>>0)%e.entries;for(let o=0;o<e.entries;o+=1){let a=n*8,u=Atomics.load(e.i32,a+0);if(u===0)return-1;if((u===2||u===3)&&Atomics.load(e.i32,a+2)===r&&Vr(e,n,t))return n;n=(n+1)%e.entries}return-1}function er(e,t){let r=jt(e),n=qr(t);if(n.length>r.maxPathBytes)return-1;let o=zr(r,n,$r(n));return o<0?-1:Atomics.load(r.i32,o*(32/4)+0)===2?o:-1}function tr(e,t,r,n){let o=jt(e),a=t*(32/4),u=t*(32/8)+3,d=t*o.entryBytes;for(let m=0;m<64;m+=1){let y=Atomics.load(o.i32,a+1);if(y&1)continue;if(Atomics.load(o.i32,a+0)!==2)return-1;let S=o.f64[u],F=Atomics.load(o.i32,a+4),E;if(n>=S)E=0;else{let A=Math.min(r.length,S-n);n+A>F?E=-1:(r.set(o.data.subarray(d+n,d+n+A),0),E=A)}if(Atomics.load(o.i32,a+1)===y)return E}return-1}function rr(e=["/h.fsh"]){let t=Array.from(e,String);return r=>{let n=String(r);for(let o of t)if(n.endsWith(o)||n===o.replace(/^\//,""))return!0;return!1}}var Yr="flatsql-io",j=Object.freeze({open:1,read:2,write:3,truncate:4,sync:5,size:6,close:7,mirrorRead:8}),nr=24,or=16777215;function Ze(){return typeof performance<"u"&&performance.now?performance.now()*1e3:Date.now()*1e3}function Gr(e){if(!e?.buffer)return null;let t=new Int32Array(e.buffer,0,4),r=t[1],n=new Float64Array(e.buffer,16,r),o=new Uint8Array(e.buffer,16+r*8,r);return(a,u)=>{let d=Atomics.add(t,0,1);d<r&&(n[d]=Ze()-u,o[d]=a)}}function Kr(e,t,r){if(!e||r<=0||r>oe||t<0)return null;let n=e.buffer??e;return t+r>n.byteLength?null:new Uint8Array(n,t,r).slice()}function Xr(e={}){let t=e.getMemory;if(typeof t!="function")throw new TypeError("createFlatsqlIoImports requires getMemory().");let r=Array.isArray(e.provider)?e.provider:[e.provider];if(r.length===0||r.some(E=>!E||typeof E.open!="function"))throw new TypeError("createFlatsqlIoImports requires at least one provider.");if(r.length>127)throw new RangeError("At most 127 providers can be routed.");let n=r.length>1,o=Gr(e.trace),a=e.mirror?.buffer??null,u=a?rr(e.mirror.suffixes??["/h.fsh"]):null,d=new Map,m=new TextDecoder;function y(E){if(!n)return{provider:r[0],local:E};let A=E>>>nr,I=r[A];return I?{provider:I,local:E&or}:null}function S(E,A,I){let i=o?Ze():0,s;try{s=I()}catch{s=A}return o&&o(E,i),s}return{env:{flatsql_io_open(E,A,I){return S(j.open,-1,()=>{let i=Kr(t(),E,A);if(!i)return-1;let s=n?ut(i)%r.length:0,c=r[s].open(i,I|0);if(c<0)return c;if(n&&c>or)return-4;let p=n?s<<nr|c:c;if(u){let h=m.decode(i);u(h)&&d.set(p,h)}return p})},flatsql_io_read(E,A,I,i){if(a&&d.has(E)){let s=o?Ze():0;try{let c=t(),p=c.buffer??c;if(A>=0&&I>=0&&A+I<=p.byteLength){let h=er(a,d.get(E));if(h>=0){let f=tr(a,h,new Uint8Array(p,A,I),i);if(f>=0)return o&&o(j.mirrorRead,s),f}}}catch{}}return S(j.read,-4,()=>{let s=y(E);return s?s.provider.read(s.local,A,I,i):-6})},flatsql_io_write(E,A,I,i){return S(j.write,-4,()=>{let s=y(E);return s?s.provider.write(s.local,A,I,i):-6})},flatsql_io_truncate(E,A){return S(j.truncate,-4,()=>{let I=y(E);return I?I.provider.truncate(I.local,A):-6})},flatsql_io_sync(E){return S(j.sync,-4,()=>{let A=y(E);return A?A.provider.sync(A.local):-6})},flatsql_io_size(E){return S(j.size,-4,()=>{let A=y(E);return A?A.provider.size(A.local):-6})},flatsql_io_close(E){return S(j.close,-4,()=>{d.delete(E);let A=y(E);return A?A.provider.close(A.local):-6})}}}}function Zr(e,{getMemory:t}){let r=Array.isArray(e.channels)?e.channels:[e.channel??e.buffer];if(r.length===0||r.some(a=>!(a instanceof SharedArrayBuffer)))throw new TypeError("A flatsql-io descriptor needs channels: SharedArrayBuffer[].");let n=r.map(a=>Yt({buffer:a,instanceId:e.instanceId,getMemory:t}));return{imports:Xr({getMemory:t,provider:n,mirror:e.mirror,trace:e.trace}),close(){for(let a of n)a.release()}}}function sr(e,t){let r=[],n=[];for(let o of e??[]){let a;if(typeof o=="function")a=o(t);else if(o&&o.provider===Yr)a=Zr(o,t);else if(o&&typeof o.factory=="function")a=o.factory({...t,config:o.config});else throw new TypeError(`Unresolvable extraImports entry ${JSON.stringify(o?.provider??o?.moduleUrl??typeof o)}; pass a factory function, a { provider: "flatsql-io" } descriptor, or (module workers) a { moduleUrl } descriptor.`);a&&a.imports&&typeof a.close=="function"?(r.push(a.imports),n.push(a.close)):a&&r.push(a)}return{fragments:r,close(){for(let o of n)try{o()}catch{}}}}function ar(e,t){for(let r of t)for(let[n,o]of Object.entries(r??{}))e[n]={...e[n]??{},...o};return e}var Dn=256*1024;var Mn=263;var jr=typeof process<"u"&&!!process.release&&process.release.name==="node",lr="opfsIoWorker.mjs",xe=class extends Error{constructor(t,r){super(t),this.name="FlatsqlIoWorkerStartError",r!==void 0&&(this.cause=r)}};async function en({workerUrl:e,workerType:t}){if(jr){let n=we+"worker_threads",{Worker:o}=await import(n),a=e??new URL(`./${lr}`,import.meta.url),u=new o(a);return{raw:u,post:(d,m)=>u.postMessage(d,m),onMessage:d=>u.on("message",d),onError:d=>{u.on("error",d),u.on("exit",m=>d(new Error(`I/O worker exited with code ${m}`),!0))},terminate:()=>u.terminate()}}let r;if(e)r=t==="classic"?new Worker(e):new Worker(e,{type:"module"});else{let n;try{n=new URL(`./${lr}`,import.meta.url)}catch(o){throw new xe('No packaged I/O worker anchor (this source was bundled without import.meta.url): pass workerUrl, e.g. hostWorkerBundleUrl("flatsql-io") with workerType "classic".',o)}r=new Worker(n,{type:"module"})}return{raw:r,post:(n,o)=>r.postMessage(n,o??[]),onMessage:n=>{r.onmessage=o=>n(o.data)},onError:n=>{r.onerror=o=>{o?.preventDefault?.(),n(new Error(o?.message??"I/O worker error"),!1)},r.onmessageerror=()=>n(new Error("I/O worker message error"),!1)},terminate:()=>r.terminate()}}async function fr(e={}){let t=e.buffer??zt(e.channel??{}),r=re(t),n=new Map,o=new Map,a=1,u=null,d=null,m=!1,y=!1,S=0,F={t:"init",buffer:t,backend:e.backend??"opfs",role:e.role??"writer",chunkBytes:e.chunkBytes,doorbell:e.doorbell??"auto",mirror:e.mirror??null,rootDirectory:e.rootDirectory,handleMode:e.handleMode,memoryMaxBytes:e.memoryMaxBytes,openDelay:e.openDelay??null,lock:e.lock??null,busyRetry:e.busyRetry??null};function E(s){let c=a++;return new Promise(p=>{o.set(c,p),u.post({...s,id:c})})}async function A(){let s=await en(e);u=s,m=!1;let c,p=new Promise(f=>{c=f});s.onMessage(f=>{if(!(!f||u!==s)){if(f.t==="ready"){c(f);return}if(f.t==="attached"){let O=o.get(`attach:${f.instanceId}`);o.delete(`attach:${f.instanceId}`),O?.(f.ok);return}if(f.id!==void 0&&o.has(f.id)){let O=o.get(f.id);o.delete(f.id),O(f)}}}),s.onError((f,O)=>{if(!(y||u!==s)){if(!d){c({ok:!1,error:String(f?.message??f)});return}i(f,O)}}),s.post(F);let h=await p;if(!h.ok){try{s.terminate()}catch{}let f=new xe(`I/O worker failed to start: ${h.error}`);throw f.lockUnavailable=h.lockUnavailable===!0,f}d=h.info;for(let[f,O]of n)await I(f,O);return d}function I(s,c){return new Promise(p=>{o.set(`attach:${s}`,p),u.post({t:"attach",instanceId:s,memory:c})})}function i(s){if(m)return;m=!0;try{u.terminate()}catch{}let c=Xt(t,-4);for(let h of o.values())h({ok:!1,dead:!0});o.clear();let p=e.restart===!0;try{e.onError?.(s,{restarted:p,failedRequests:c})}catch{}p&&(S+=1,d=null,A().catch(h=>{try{e.onError?.(h,{restarted:!1,failedRequests:0})}catch{}}))}return await A(),{buffer:t,get info(){return d},get dead(){return m},get restarts(){return S},get worker(){return u?.raw??null},async attachMemory(s,c){return Atomics.load(r.instances,s)===ie&&Kt(t,s),n.set(s,c),I(s,c)},detachMemory(s){n.delete(s),u.post({t:"detach",instanceId:s})},async revoke(s){n.delete(s),await Gt(t,s)},async preopen(s,c){return(await E({t:"preopen",paths:s,flags:c})).statuses??s.map(()=>-4)},releasePreopen(s){u.post({t:"release-preopen",paths:s})},async stats(){return E({t:"stats"})},async reset(){await E({t:"reset"})},async clear(){return E({t:"clear"})},async stop(){y=!0,m||await E({t:"stop"});try{await u.terminate()}catch{}},kill(){i(new Error("I/O worker killed"),!0)}}}var Se=3,M=Se|4,$=new TextEncoder,tt=new TextDecoder;function tn(e,t){let r=new Uint8Array(e),n=t>>>0||1;for(let o=0;o<e;o+=1)n^=n<<13,n^=n>>>17,n^=n<<5,r[o]=n&255;return r}function rn(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(e[r]!==t[r])return!1;return!0}var rt=class extends Error{};function X(e,t){if(!e)throw new rt(t)}function _(e,t,r){X(e===t,`${r}: expected ${t}, got ${e}`)}function Q(e,t){X(Number.isInteger(e)&&e>=0,`${t}: expected a handle, got ${e}`)}var Yn=Object.freeze([{name:"open without CREATE on a missing file is NOENT",async run(e,t){_(await e.open(`${t}/missing.bin`,Se),-2,"open")}},{name:"create, write, size, short read at EOF, read past EOF",async run(e,t){let r=await e.open(`${t}/a.bin`,M);Q(r,"open"),_(await e.writeFrom(r,$.encode("hello"),0),5,"write"),_(await e.size(r),5,"size");let n=new Uint8Array(10);_(await e.readInto(r,n,0),5,"short read"),X(tt.decode(n.subarray(0,5))==="hello","short read bytes"),_(await e.readInto(r,new Uint8Array(4),5),0,"read at EOF"),_(await e.readInto(r,new Uint8Array(4),100),0,"read past EOF"),_(await e.close(r),0,"close")}},{name:"a write past EOF extends the file and the gap reads as zeros",async run(e,t){let r=await e.open(`${t}/sparse.bin`,M);Q(r,"open"),_(await e.writeFrom(r,$.encode("ab"),0),2,"write head"),_(await e.writeFrom(r,$.encode("z"),100),1,"write past EOF"),_(await e.size(r),101,"size");let n=new Uint8Array(98);n.fill(238),_(await e.readInto(r,n,2),98,"read gap"),X(n.every(o=>o===0),"gap is zeros"),_(await e.close(r),0,"close")}},{name:"truncate shrinks and grows; grown bytes read as zeros",async run(e,t){let r=await e.open(`${t}/t.bin`,M);Q(r,"open"),await e.writeFrom(r,$.encode("abcdefgh"),0),_(await e.truncate(r,3),0,"truncate down"),_(await e.size(r),3,"size after shrink"),_(await e.truncate(r,10),0,"truncate up"),_(await e.size(r),10,"size after grow");let n=new Uint8Array(10);_(await e.readInto(r,n,0),10,"read"),X(tt.decode(n.subarray(0,3))==="abc","kept prefix"),X(n.subarray(3).every(o=>o===0),"grown tail is zeros"),_(await e.sync(r),0,"sync"),_(await e.close(r),0,"close")}},{name:"closed and bogus handles are BADHANDLE",async run(e,t){let r=await e.open(`${t}/c.bin`,M);Q(r,"open"),_(await e.close(r),0,"close"),_(await e.close(r),-6,"close again"),_(await e.readInto(r,new Uint8Array(1),0),-6,"read"),_(await e.size(8388352),-6,"bogus size")}},{name:"PROBE reports existence without a handle",async run(e,t){let r=await e.open(`${t}/p.bin`,M);Q(r,"open"),await e.close(r),_(await e.open(`${t}/p.bin`,64),0,"probe existing"),_(await e.open(`${t}/nope.bin`,64),-2,"probe missing")}},{name:"EXCL on an existing file is GENERIC; TRUNC empties it",async run(e,t){let r=await e.open(`${t}/x.bin`,M);Q(r,"open"),await e.writeFrom(r,$.encode("data"),0),await e.close(r),_(await e.open(`${t}/x.bin`,M|8),-1,"EXCL");let n=await e.open(`${t}/x.bin`,Se|16);Q(n,"TRUNC open"),_(await e.size(n),0,"size after TRUNC"),await e.close(n)}},{name:"CREATE under a missing directory is NOENT; CREATE_PARENTS makes it",async run(e,t){_(await e.open(`${t}/p/00000001/h.fsh`,M),-2,"no parents");let r=await e.open(`${t}/p/00000001/h.fsh`,M|256);Q(r,"CREATE_PARENTS"),_(await e.writeFrom(r,$.encode("head"),0),4,"write"),await e.close(r),_(await e.open(`${t}/p/00000001/h.fsh`,64),0,"probe")}},{name:"UNLINK_IF_UNUSED is BUSY while a handle is open; UNLINK removes",async run(e,t){let r=await e.open(`${t}/u.bin`,M);Q(r,"open"),_(await e.open(`${t}/u.bin`,512),-7,"unlink while open"),await e.close(r),_(await e.open(`${t}/u.bin`,512),0,"unlink unused"),_(await e.open(`${t}/u.bin`,64),-2,"gone"),_(await e.open(`${t}/u.bin`,128),-2,"unlink missing");let n=await e.open(`${t}/v.bin`,M);await e.close(n),_(await e.open(`${t}/v.bin`,128),0,"plain unlink")}},{name:"DELETE_ON_CLOSE drops the file with its last handle",async run(e,t){let r=await e.open(`${t}/tmp.bin`,M|32);Q(r,"open"),await e.writeFrom(r,$.encode("scratch"),0),_(await e.close(r),0,"close"),_(await e.open(`${t}/tmp.bin`,64),-2,"probe")}},{name:"paths are confined below the root",async run(e,t){_(await e.open(`${t}/../../escape.bin`,M),-3,".."),_(await e.open("",M),-1,"empty path")}},{name:"access modes: read-only handles refuse writes, write-only refuse reads",async run(e,t){let r=await e.open(`${t}/m.bin`,M);await e.writeFrom(r,$.encode("mode"),0),await e.close(r);let n=await e.open(`${t}/m.bin`,1);Q(n,"read-only open"),_(await e.writeFrom(n,$.encode("x"),0),-4,"write on RO"),_(await e.truncate(n,0),-4,"truncate on RO"),await e.close(n);let o=await e.open(`${t}/m.bin`,2);Q(o,"write-only open"),_(await e.readInto(o,new Uint8Array(2),0),-4,"read on WO"),await e.close(o)}},{name:"OPEN_DEFERRED: a failed open surfaces at open or at first use",async run(e,t){let r=await e.open(`${t}/deferred-missing.bin`,Se|1024);r<0?_(r,-2,"sync host"):(_(await e.readInto(r,new Uint8Array(1),0),-2,"first use"),_(await e.close(r),0,"close failed deferred"));let n=await e.open(`${t}/deferred.bin`,M|1024);Q(n,"deferred create"),_(await e.writeFrom(n,$.encode("later"),0),5,"write after deferred"),_(await e.size(n),5,"size"),await e.close(n)}},{name:"two handles on one path see each other's writes",async run(e,t){let r=await e.open(`${t}/shared.bin`,M),n=await e.open(`${t}/shared.bin`,Se);Q(r,"a"),Q(n,"b"),await e.writeFrom(r,$.encode("from-a"),0);let o=new Uint8Array(6);_(await e.readInto(n,o,0),6,"read via b"),X(tt.decode(o)==="from-a","b sees a"),await e.writeFrom(n,$.encode("B"),0);let a=new Uint8Array(1);await e.readInto(r,a,0),X(a[0]===66,"a sees b"),await e.close(r),await e.close(n)}},{name:"1 MiB round trip across chunk boundaries at an unaligned offset",async run(e,t){let r=await e.open(`${t}/big.bin`,M);Q(r,"open");let n=tn(1024*1024+17,2654435769);_(await e.writeFrom(r,n,4093),n.length,"write"),_(await e.size(r),4093+n.length,"size");let o=new Uint8Array(n.length);_(await e.readInto(r,o,4093),n.length,"read"),X(rn(o,n),"bytes round trip"),await e.close(r)}}]);var V,le,Be,nt,ot,ur=e=>postMessage({fatal:String(e?.stack??e)});async function nn(e,t){let r=await WebAssembly.compile(e);V=new WebAssembly.Memory({initial:512,maximum:t.maximumPages??8192,shared:!0});let n=it({env:{}});Be=await fr({backend:t.backend??"opfs",rootDirectory:t.root??"flatsql",workerUrl:t.ioWorkerUrl,onError:ur,lock:t.backend==="memory"?void 0:{name:`flatsql/${t.root??"flatsql"}`,ifAvailable:!0}}),await Be.attachMemory(0,V);let o=[{provider:"flatsql-io",instanceId:0,channels:[Be.buffer]}],a=ct({processState:n});a.setMemory(V),ot=sr(o,{getMemory:()=>V,memory:V});let u=ar({...a.imports,env:{memory:V},wasi:{}},ot.fragments),d=()=>-1;u.wasi["thread-spawn"]=S=>d(S),le=await WebAssembly.instantiate(r,u),le.exports._initialize();let m=[],y=(t.maximumPages??8192)*65536;for(let S=2**30;S>=2**20&&m.length<64;){let F=V.buffer.byteLength+S+1048576<=y?le.exports.flatsql_alloc(S):0;F?m.push(F):S/=2}for(let S of m)le.exports.flatsql_free(S);return nt=await ft({wasmModule:r,memory:V,processState:n,poolSize:t.poolSize,extraImports:o,instanceId:0,enableBrowserThreads:!0,browserWorkerUrl:t.threadWorkerUrl,onGuestError:(S,F,E)=>ur(E)}),d=nt.threadSpawn,V}async function dr(){await nt?.terminateAll(),ot?.close(),await Be?.stop()}onmessage=async({data:e})=>{try{let t;if(e.op==="init")try{t=await nn(e.bytes,e.options)}catch(r){throw await dr(),r}else if(e.op==="call")t=le.exports[e.fn](...e.args);else if(e.op==="write"){if(t=le.exports.flatsql_alloc(Math.max(1,e.bytes.length)),!t)throw new Error("FlatSQL allocation failed");new Uint8Array(V.buffer).set(e.bytes,t)}else if(e.op==="read")t=new Uint8Array(V.buffer).slice(e.ptr,e.ptr+e.len);else if(e.op==="close")await dr();else throw new Error("Unknown FlatSQL worker operation");postMessage({id:e.id,value:t})}catch(t){postMessage({id:e.id,error:String(t?.stack??t)})}};
@@ -0,0 +1 @@
1
+ async function d(w,o={}){if(!globalThis.crossOriginIsolated||typeof SharedArrayBuffer!="function")throw new Error("FlatSQL requires cross-origin isolation (COOP/COEP) for shared WASM memory");let t=new Worker(o.workerUrl??new URL("./browser-guest.mjs",import.meta.url),{type:"module"}),f=0,n=null,a=new Map,s=e=>{n=e;for(let{reject:r}of a.values())r(e);a.clear()};t.onerror=e=>s(new Error(e.message||"FlatSQL worker failed")),t.onmessageerror=()=>s(new Error("FlatSQL worker message failed"));let i=e=>new Promise((r,l)=>{if(n)return l(n);let m=++f,u=setTimeout(()=>{s(new Error("FlatSQL worker request timed out")),t.terminate()},3e4);a.set(m,{resolve:c=>{clearTimeout(u),r(c)},reject:c=>{clearTimeout(u),l(c)}});try{t.postMessage({...e,id:m})}catch(c){a.get(m).reject(c),a.delete(m)}});t.onmessage=({data:e})=>{if(e.fatal){s(new Error(e.fatal));return}let r=a.get(e.id);r&&(a.delete(e.id),e.error?r.reject(new Error(e.error)):r.resolve(e.value))};try{return{memory:await i({op:"init",bytes:w,options:{maximumPages:o.maximumPages,root:o.root,backend:o.backend,poolSize:(o.writers??1)*2+(o.readers??1)+6,threadWorkerUrl:o.threadWorkerUrl?String(o.threadWorkerUrl):void 0,ioWorkerUrl:o.ioWorkerUrl?String(o.ioWorkerUrl):void 0}}),call:(r,...l)=>i({op:"call",fn:r,args:l}),write:r=>i({op:"write",bytes:r}),read:(r,l)=>i({op:"read",ptr:r,len:l}),faulted:()=>!!n,async close(){try{n||await i({op:"close"})}finally{t.terminate(),s(new Error("FlatSQL closed"))}}}}catch(e){throw t.terminate(),e}}export{d as createBrowserInstance};
@@ -0,0 +1,2 @@
1
+ import{parentPort as tt,threadId as gn,workerData as hr}from"node:worker_threads";import{writeSync as xn}from"node:fs";import g from"node:fs";import ze from"node:path";import{randomFillSync as Jr}from"node:crypto";import{threadId as jr}from"node:worker_threads";var Cn=Object.freeze({READ:1,WRITE:2,CREATE:4,EXCL:8,TRUNC:16,DELETE_ON_CLOSE:32,PROBE:64,UNLINK:128,CREATE_PARENTS:256,UNLINK_IF_UNUSED:512,OPEN_DEFERRED:1024}),Bn=Object.freeze({OK:0,GENERIC:-1,NOENT:-2,ACCESS:-3,IO:-4,NOSPACE:-5,BADHANDLE:-6,BUSY:-7});var Dn=Object.freeze(["flatsql_io_open","flatsql_io_read","flatsql_io_write","flatsql_io_truncate","flatsql_io_sync","flatsql_io_size","flatsql_io_close"]),Ge=4096;function Ir(e,{during:r}={}){if(!e)return-1;let t=typeof e.code=="string"?e.code:null;if(t)switch(t){case"ENOENT":case"ENOTDIR":return-2;case"EACCES":case"EPERM":case"EROFS":return-3;case"ENOSPC":case"EDQUOT":return-5;case"EBADF":return-4;case"EEXIST":return-1;case"EBUSY":case"ETXTBSY":return-7;case"ENAMETOOLONG":case"EINVAL":return-1;default:return-4}switch(e.name){case"NotFoundError":return-2;case"NoModificationAllowedError":return-7;case"InvalidStateError":return r==="open"?-7:-6;case"QuotaExceededError":return-5;case"TypeMismatchError":case"SecurityError":case"NotAllowedError":return-3;case"InvalidModificationError":return-7;case"TypeError":case"RangeError":return-1;default:return-4}}function le(e,r){return e&&typeof e.status=="number"&&e.status<0?e.status:Ir(e,r)}function rt(e){if(typeof e!="string"||e.length===0||e.includes("\0"))return-1;let r=[];for(let t of e.split("/"))if(!(t===""||t===".")){if(t==="..")return-3;r.push(t)}return r.length===0?-1:r}var Ut=typeof TextDecoder=="function"?new TextDecoder("utf-8",{fatal:!0}):null;function nt(e){if(!Ut||e.length===0||e.length>Ge)return-1;let r=e.buffer instanceof ArrayBuffer?e:new Uint8Array(e);try{return Ut.decode(r)}catch{return-1}}function Mt(e){let r=2166136261;for(let t=0;t<e.length;t+=1)r^=e[t],r=Math.imul(r,16777619);return r>>>0}var yr=64,Mn=yr*4;var Pn=64*1024;var kn=typeof TextEncoder=="function"?new TextEncoder:null;var Or=typeof TextEncoder=="function"?new TextEncoder:null;function wr(e){let r=2166136261;for(let t=0;t<e.length;t+=1)r^=e[t],r=Math.imul(r,16777619);return r|0}var Pt=new WeakMap;function kt(e){let r=Pt.get(e);if(r)return r;let t=new Int32Array(e,0,16);if(t[0]!==1380795475||t[1]!==1)throw new TypeError("Not a SAB I/O mirror buffer.");let s=t[2],l=t[3],A=t[4],m=16*4,E=m+s*32,R=E+s*A;return r={entries:s,entryBytes:l,maxPathBytes:A,i32:new Int32Array(e,m,s*32/4),f64:new Float64Array(e,m,s*32/8),paths:new Uint8Array(e,E,s*A),data:new Uint8Array(e,R,s*l)},Pt.set(e,r),r}function Tr(e){return typeof e=="string"?Or.encode(e):e}function Rr(e,r,t){let s=r*8;if(Atomics.load(e.i32,s+3)!==t.length)return!1;let l=r*e.maxPathBytes;for(let A=0;A<t.length;A+=1)if(e.paths[l+A]!==t[A])return!1;return!0}function Lr(e,r,t){let s=(t>>>0)%e.entries;for(let l=0;l<e.entries;l+=1){let A=s*8,m=Atomics.load(e.i32,A+0);if(m===0)return-1;if((m===2||m===3)&&Atomics.load(e.i32,A+2)===t&&Rr(e,s,r))return s;s=(s+1)%e.entries}return-1}function Qt(e,r){let t=kt(e),s=Tr(r);if(s.length>t.maxPathBytes)return-1;let l=Lr(t,s,wr(s));return l<0?-1:Atomics.load(t.i32,l*(32/4)+0)===2?l:-1}function Ht(e,r,t,s){let l=kt(e),A=r*(32/4),m=r*(32/8)+3,E=r*l.entryBytes;for(let R=0;R<64;R+=1){let O=Atomics.load(l.i32,A+1);if(O&1)continue;if(Atomics.load(l.i32,A+0)!==2)return-1;let w=l.f64[m],x=Atomics.load(l.i32,A+4),S;if(s>=w)S=0;else{let L=Math.min(t.length,w-s);s+L>x?S=-1:(t.set(l.data.subarray(E+s,E+s+L),0),S=L)}if(Atomics.load(l.i32,A+1)===O)return S}return-1}function vt(e=["/h.fsh"]){let r=Array.from(e,String);return t=>{let s=String(t);for(let l of r)if(s.endsWith(l)||s===l.replace(/^\//,""))return!0;return!1}}var ue=Object.freeze({open:1,read:2,write:3,truncate:4,sync:5,size:6,close:7,mirrorRead:8}),Wt=24,Gt=16777215;function ot(){return typeof performance<"u"&&performance.now?performance.now()*1e3:Date.now()*1e3}function Nr(e){if(!e?.buffer)return null;let r=new Int32Array(e.buffer,0,4),t=r[1],s=new Float64Array(e.buffer,16,t),l=new Uint8Array(e.buffer,16+t*8,t);return(A,m)=>{let E=Atomics.add(r,0,1);E<t&&(s[E]=ot()-m,l[E]=A)}}function gr(e,r,t){if(!e||t<=0||t>Ge||r<0)return null;let s=e.buffer??e;return r+t>s.byteLength?null:new Uint8Array(s,r,t).slice()}function st(e={}){let r=e.getMemory;if(typeof r!="function")throw new TypeError("createFlatsqlIoImports requires getMemory().");let t=Array.isArray(e.provider)?e.provider:[e.provider];if(t.length===0||t.some(S=>!S||typeof S.open!="function"))throw new TypeError("createFlatsqlIoImports requires at least one provider.");if(t.length>127)throw new RangeError("At most 127 providers can be routed.");let s=t.length>1,l=Nr(e.trace),A=e.mirror?.buffer??null,m=A?vt(e.mirror.suffixes??["/h.fsh"]):null,E=new Map,R=new TextDecoder;function O(S){if(!s)return{provider:t[0],local:S};let L=S>>>Wt,I=t[L];return I?{provider:I,local:S&Gt}:null}function w(S,L,I){let D=l?ot():0,F;try{F=I()}catch{F=L}return l&&l(S,D),F}return{env:{flatsql_io_open(S,L,I){return w(ue.open,-1,()=>{let D=gr(r(),S,L);if(!D)return-1;let F=s?Mt(D)%t.length:0,q=t[F].open(D,I|0);if(q<0)return q;if(s&&q>Gt)return-4;let H=s?F<<Wt|q:q;if(m){let re=R.decode(D);m(re)&&E.set(H,re)}return H})},flatsql_io_read(S,L,I,D){if(A&&E.has(S)){let F=l?ot():0;try{let q=r(),H=q.buffer??q;if(L>=0&&I>=0&&L+I<=H.byteLength){let re=Qt(A,E.get(S));if(re>=0){let te=Ht(A,re,new Uint8Array(H,L,I),D);if(te>=0)return l&&l(ue.mirrorRead,F),te}}}catch{}}return w(ue.read,-4,()=>{let F=O(S);return F?F.provider.read(F.local,L,I,D):-6})},flatsql_io_write(S,L,I,D){return w(ue.write,-4,()=>{let F=O(S);return F?F.provider.write(F.local,L,I,D):-6})},flatsql_io_truncate(S,L){return w(ue.truncate,-4,()=>{let I=O(S);return I?I.provider.truncate(I.local,L):-6})},flatsql_io_sync(S){return w(ue.sync,-4,()=>{let L=O(S);return L?L.provider.sync(L.local):-6})},flatsql_io_size(S){return w(ue.size,-4,()=>{let L=O(S);return L?L.provider.size(L.local):-6})},flatsql_io_close(S){return w(ue.close,-4,()=>{E.delete(S);let L=O(S);return L?L.provider.close(L.local):-6})}}}}var bo=256*1024;var Uo=263;var Zo=typeof process<"u"&&!!process.release&&process.release.name==="node";var De=3,P=De|4,K=new TextEncoder,ct=new TextDecoder;function Br(e,r){let t=new Uint8Array(e),s=r>>>0||1;for(let l=0;l<e;l+=1)s^=s<<13,s^=s>>>17,s^=s<<5,t[l]=s&255;return t}function Dr(e,r){if(e.length!==r.length)return!1;for(let t=0;t<e.length;t+=1)if(e[t]!==r[t])return!1;return!0}var it=class extends Error{};function se(e,r){if(!e)throw new it(r)}function y(e,r,t){se(e===r,`${t}: expected ${r}, got ${e}`)}function v(e,r){se(Number.isInteger(e)&&e>=0,`${r}: expected a handle, got ${e}`)}var es=Object.freeze([{name:"open without CREATE on a missing file is NOENT",async run(e,r){y(await e.open(`${r}/missing.bin`,De),-2,"open")}},{name:"create, write, size, short read at EOF, read past EOF",async run(e,r){let t=await e.open(`${r}/a.bin`,P);v(t,"open"),y(await e.writeFrom(t,K.encode("hello"),0),5,"write"),y(await e.size(t),5,"size");let s=new Uint8Array(10);y(await e.readInto(t,s,0),5,"short read"),se(ct.decode(s.subarray(0,5))==="hello","short read bytes"),y(await e.readInto(t,new Uint8Array(4),5),0,"read at EOF"),y(await e.readInto(t,new Uint8Array(4),100),0,"read past EOF"),y(await e.close(t),0,"close")}},{name:"a write past EOF extends the file and the gap reads as zeros",async run(e,r){let t=await e.open(`${r}/sparse.bin`,P);v(t,"open"),y(await e.writeFrom(t,K.encode("ab"),0),2,"write head"),y(await e.writeFrom(t,K.encode("z"),100),1,"write past EOF"),y(await e.size(t),101,"size");let s=new Uint8Array(98);s.fill(238),y(await e.readInto(t,s,2),98,"read gap"),se(s.every(l=>l===0),"gap is zeros"),y(await e.close(t),0,"close")}},{name:"truncate shrinks and grows; grown bytes read as zeros",async run(e,r){let t=await e.open(`${r}/t.bin`,P);v(t,"open"),await e.writeFrom(t,K.encode("abcdefgh"),0),y(await e.truncate(t,3),0,"truncate down"),y(await e.size(t),3,"size after shrink"),y(await e.truncate(t,10),0,"truncate up"),y(await e.size(t),10,"size after grow");let s=new Uint8Array(10);y(await e.readInto(t,s,0),10,"read"),se(ct.decode(s.subarray(0,3))==="abc","kept prefix"),se(s.subarray(3).every(l=>l===0),"grown tail is zeros"),y(await e.sync(t),0,"sync"),y(await e.close(t),0,"close")}},{name:"closed and bogus handles are BADHANDLE",async run(e,r){let t=await e.open(`${r}/c.bin`,P);v(t,"open"),y(await e.close(t),0,"close"),y(await e.close(t),-6,"close again"),y(await e.readInto(t,new Uint8Array(1),0),-6,"read"),y(await e.size(8388352),-6,"bogus size")}},{name:"PROBE reports existence without a handle",async run(e,r){let t=await e.open(`${r}/p.bin`,P);v(t,"open"),await e.close(t),y(await e.open(`${r}/p.bin`,64),0,"probe existing"),y(await e.open(`${r}/nope.bin`,64),-2,"probe missing")}},{name:"EXCL on an existing file is GENERIC; TRUNC empties it",async run(e,r){let t=await e.open(`${r}/x.bin`,P);v(t,"open"),await e.writeFrom(t,K.encode("data"),0),await e.close(t),y(await e.open(`${r}/x.bin`,P|8),-1,"EXCL");let s=await e.open(`${r}/x.bin`,De|16);v(s,"TRUNC open"),y(await e.size(s),0,"size after TRUNC"),await e.close(s)}},{name:"CREATE under a missing directory is NOENT; CREATE_PARENTS makes it",async run(e,r){y(await e.open(`${r}/p/00000001/h.fsh`,P),-2,"no parents");let t=await e.open(`${r}/p/00000001/h.fsh`,P|256);v(t,"CREATE_PARENTS"),y(await e.writeFrom(t,K.encode("head"),0),4,"write"),await e.close(t),y(await e.open(`${r}/p/00000001/h.fsh`,64),0,"probe")}},{name:"UNLINK_IF_UNUSED is BUSY while a handle is open; UNLINK removes",async run(e,r){let t=await e.open(`${r}/u.bin`,P);v(t,"open"),y(await e.open(`${r}/u.bin`,512),-7,"unlink while open"),await e.close(t),y(await e.open(`${r}/u.bin`,512),0,"unlink unused"),y(await e.open(`${r}/u.bin`,64),-2,"gone"),y(await e.open(`${r}/u.bin`,128),-2,"unlink missing");let s=await e.open(`${r}/v.bin`,P);await e.close(s),y(await e.open(`${r}/v.bin`,128),0,"plain unlink")}},{name:"DELETE_ON_CLOSE drops the file with its last handle",async run(e,r){let t=await e.open(`${r}/tmp.bin`,P|32);v(t,"open"),await e.writeFrom(t,K.encode("scratch"),0),y(await e.close(t),0,"close"),y(await e.open(`${r}/tmp.bin`,64),-2,"probe")}},{name:"paths are confined below the root",async run(e,r){y(await e.open(`${r}/../../escape.bin`,P),-3,".."),y(await e.open("",P),-1,"empty path")}},{name:"access modes: read-only handles refuse writes, write-only refuse reads",async run(e,r){let t=await e.open(`${r}/m.bin`,P);await e.writeFrom(t,K.encode("mode"),0),await e.close(t);let s=await e.open(`${r}/m.bin`,1);v(s,"read-only open"),y(await e.writeFrom(s,K.encode("x"),0),-4,"write on RO"),y(await e.truncate(s,0),-4,"truncate on RO"),await e.close(s);let l=await e.open(`${r}/m.bin`,2);v(l,"write-only open"),y(await e.readInto(l,new Uint8Array(2),0),-4,"read on WO"),await e.close(l)}},{name:"OPEN_DEFERRED: a failed open surfaces at open or at first use",async run(e,r){let t=await e.open(`${r}/deferred-missing.bin`,De|1024);t<0?y(t,-2,"sync host"):(y(await e.readInto(t,new Uint8Array(1),0),-2,"first use"),y(await e.close(t),0,"close failed deferred"));let s=await e.open(`${r}/deferred.bin`,P|1024);v(s,"deferred create"),y(await e.writeFrom(s,K.encode("later"),0),5,"write after deferred"),y(await e.size(s),5,"size"),await e.close(s)}},{name:"two handles on one path see each other's writes",async run(e,r){let t=await e.open(`${r}/shared.bin`,P),s=await e.open(`${r}/shared.bin`,De);v(t,"a"),v(s,"b"),await e.writeFrom(t,K.encode("from-a"),0);let l=new Uint8Array(6);y(await e.readInto(s,l,0),6,"read via b"),se(ct.decode(l)==="from-a","b sees a"),await e.writeFrom(s,K.encode("B"),0);let A=new Uint8Array(1);await e.readInto(t,A,0),se(A[0]===66,"a sees b"),await e.close(t),await e.close(s)}},{name:"1 MiB round trip across chunk boundaries at an unaligned offset",async run(e,r){let t=await e.open(`${r}/big.bin`,P);v(t,"open");let s=Br(1024*1024+17,2654435769);y(await e.writeFrom(t,s,4093),s.length,"write"),y(await e.size(t),4093+s.length,"size");let l=new Uint8Array(s.length);y(await e.readInto(t,l,4093),s.length,"read"),se(Dr(l,s),"bytes round trip"),await e.close(t)}}]);import B from"node:fs";import X from"node:path";var br=1179534419,Ur=1,Vt=16,ut=8,ae=0,be=1,qe=2,lt=3,Mr=4,Ye=0,$t=1,pe=2,Pr=3;var kr=1,Qr=-1;function Hr(e){let r=new Int32Array(e,0,Vt);if(r[0]!==br||r[1]!==Ur)throw new TypeError("Not a Node sync-fs flatsql_io handle table.");let t=r[2],s=r[3],l=r[4],A=Vt*4,m=new Int32Array(e,A,l*2);A+=l*8;let E=new Int32Array(e,A,t*ut);A+=t*ut*4;let R=new Uint8Array(e,A,t*s);return{header:r,maxHandles:t,maxPathBytes:s,maxInstances:l,instances:m,slots:E,paths:R}}function ft(e){let r=-1;try{r=B.openSync(e,"r"),B.fsyncSync(r)}catch(t){if(!["EINVAL","ENOTSUP","EISDIR","EBADF","EPERM","EACCES"].includes(t?.code))throw t}finally{r>=0&&B.closeSync(r)}}function qt(e={}){if(typeof e.root!="string"||e.root.length===0)throw new TypeError("createNodeSyncFsIo requires a root directory.");let r=Hr(e.table),t=X.resolve(e.root),s=t;try{s=B.realpathSync(t)}catch{}let l=Number.isInteger(e.instanceId)?e.instanceId:Qr,A=typeof e.getMemory=="function"?e.getMemory:()=>null,m=typeof e.interpose=="function"?e.interpose:(n,o,c)=>o(...c),E=new Map,R=new TextEncoder,O=(n,o,...c)=>m(n,o,c);function w(n,o){return n===o||n.startsWith(o+X.sep)}function x(n){let o=X.join(t,n);if(!w(o,t))return-3;let c=X.dirname(o);for(;;)try{let d=B.realpathSync(c);if(!w(d,s)&&!w(d,t))return-3;break}catch{let d=X.dirname(c);if(d===c)break;c=d}return o}function S(){return l<0?!0:(Atomics.add(r.instances,l*2+1,1),Atomics.load(r.instances,l*2)===kr?(L(),!1):!0)}function L(){l<0||(Atomics.sub(r.instances,l*2+1,1),Atomics.notify(r.instances,l*2+1))}function I(n){return n*ut}function D(n){let o=Atomics.load(r.slots,I(n)+lt),c=n*r.maxPathBytes;return new TextDecoder().decode(r.paths.slice(c,c+o))}function F(n,o){if(Atomics.load(r.slots,I(n)+lt)!==o.length)return!1;let c=n*r.maxPathBytes;for(let d=0;d<o.length;d+=1)if(r.paths[c+d]!==o[d])return!1;return!0}function q(n){for(let o=0;o<r.maxHandles;o+=1){let c=Atomics.load(r.slots,I(o)+ae);if((c===pe||c===$t)&&F(o,n))return!0}return!1}function H(n,o){let c=(Atomics.add(r.header,5,1)>>>0)%r.maxHandles;for(let d=0;d<r.maxHandles;d+=1){let p=(c+d)%r.maxHandles,T=I(p);if(Atomics.compareExchange(r.slots,T+ae,Ye,$t)===Ye){let h=Atomics.load(r.slots,T+be)+1&255;return r.paths.set(n,p*r.maxPathBytes),Atomics.store(r.slots,T+lt,n.length),Atomics.store(r.slots,T+qe,o),Atomics.store(r.slots,T+Mr,l),Atomics.store(r.slots,T+be,h),{slot:p,gen:h}}}return null}function re(){for(let[n,o]of E){let c=I(n);if(Atomics.load(r.slots,c+ae)!==pe||Atomics.load(r.slots,c+be)!==o.gen){try{B.closeSync(o.fd)}catch{}E.delete(n)}}}function te(n,o){let c=B.constants,d=c.O_RDONLY;return n&2&&(d=n&1?c.O_RDWR:c.O_WRONLY),o||(n&4&&(d|=c.O_CREAT),n&8&&(d|=c.O_EXCL),n&16&&(d|=c.O_TRUNC)),d}function ie(n){if(!Number.isInteger(n)||n<0)return-6;let o=n>>>8,c=n&255;if(o>=r.maxHandles)return-6;let d=I(o),p=E.get(o);if(Atomics.load(r.slots,d+ae)!==pe||Atomics.load(r.slots,d+be)!==c){if(p&&p.gen===c){try{B.closeSync(p.fd)}catch{}E.delete(o)}return-6}if(p&&p.gen===c)return p.fd;if(p){try{B.closeSync(p.fd)}catch{}E.delete(o)}let T=X.join(t,D(o)),h=Atomics.load(r.slots,d+qe);try{let N=O("open",B.openSync,T,te(h,!0),384);return E.set(o,{gen:c,fd:N}),N}catch(N){return le(N)}}function ve(n){return Atomics.load(r.slots,I(n>>>8)+qe)}function C(n){let o=X.dirname(n),c=[],d=o;for(;!B.existsSync(d);){c.unshift(d);let p=X.dirname(d);if(p===d)break;d=p}for(let p of c){if(!w(p,t))throw Object.assign(new Error("escape"),{code:"EACCES"});try{O("mkdir",B.mkdirSync,p,448)}catch(T){if(T?.code!=="EEXIST")throw T}O("syncdir",ft,X.dirname(p))}}function bt(n,o){let c=nt(n);if(typeof c!="string")return c;let d=rt(c);if(!Array.isArray(d))return d;let p=d.join("/"),T=R.encode(p);if(T.length>r.maxPathBytes)return-1;let h=x(p);if(typeof h!="string")return h;if(o&64)try{return O("stat",B.statSync,h),0}catch{return-2}if(o&640){if(o&512&&q(T))return-7;try{return O("unlink",B.unlinkSync,h),O("syncdir",ft,X.dirname(h)),0}catch(k){return le(k)}}re();let N=!1;try{o&4&&o&256&&C(h),o&4&&o&256&&(N=!B.existsSync(h))}catch(k){return le(k)}let b=H(T,o);if(!b)return-1;let Y;try{Y=O("open",B.openSync,h,te(o,!1),384),N&&O("syncdir",ft,X.dirname(h))}catch(k){return Y!==void 0&&B.closeSync(Y),Atomics.store(r.slots,I(b.slot)+ae,Ye),le(k)}return E.set(b.slot,{gen:b.gen,fd:Y}),Atomics.store(r.slots,I(b.slot)+ae,pe),b.slot<<8|b.gen}function a(n){if(!S())return-3;try{return n()}catch(o){return le(o)}finally{L()}}function i(n,o){let c=A(),d=c?.buffer??c;return!d||n<0||o<0||n+o>d.byteLength?null:new Uint8Array(d,n,o)}function f(n,o,c){let d=ie(n);if(d<0)return d;let p=0;for(;p<o.length;){let T=O("read",B.readSync,d,o,p,o.length-p,c+p);if(T===0)break;p+=T}return p}function _(n,o,c){let d=ie(n);if(d<0)return d;if(!(ve(n)&2))return-4;let p=0;for(;p<o.length;)p+=O("write",B.writeSync,d,o,p,o.length-p,c+p);return p}return{kind:"node-sync-fs",instanceId:l,root:t,open(n,o){let c=typeof n=="string"?R.encode(n):n;return a(()=>bt(c,o|0))},read(n,o,c,d){return a(()=>{if(c===0)return 0;let p=i(o,c);return p?f(n,p,d):-1})},write(n,o,c,d){return a(()=>{if(c===0)return 0;let p=i(o,c);return p?_(n,p,d):-1})},readInto(n,o,c){return a(()=>f(n,o,c))},writeFrom(n,o,c){return a(()=>_(n,o,c))},truncate(n,o){return a(()=>{let c=ie(n);return c<0?c:ve(n)&2?(O("truncate",B.ftruncateSync,c,o),0):-4})},sync(n){return a(()=>{let o=ie(n);return o<0?o:(O("sync",B.fdatasyncSync,o),0)})},size(n){return a(()=>{let o=ie(n);return o<0?o:O("size",B.fstatSync,o).size})},close(n){try{if(!Number.isInteger(n)||n<0)return-6;let o=n>>>8,c=n&255;if(o>=r.maxHandles)return-6;let d=I(o);if(Atomics.load(r.slots,d+be)!==c)return-6;if(Atomics.compareExchange(r.slots,d+ae,pe,Pr)!==pe)return-6;let p=Atomics.load(r.slots,d+qe),T=D(o),h=E.get(o);if(h){E.delete(o);try{O("close",B.closeSync,h.fd)}catch{}}if(Atomics.store(r.slots,d+ae,Ye),p&32)try{O("unlink",B.unlinkSync,X.join(t,T))}catch{}return 0}catch(o){return le(o)}},closeLocalFds(){for(let n of E.values())try{B.closeSync(n.fd)}catch{}E.clear()},liveHandles(){let n=0;for(let o=0;o<r.maxHandles;o+=1)Atomics.load(r.slots,I(o)+ae)===pe&&(n+=1);return n},localFdCount(){return E.size}}}import Ue from"node:fs";import Yt from"node:path";var j=4096,vr=1179864148,Wr=0,Gr=1,Jt=2,Vr=3,$r=4,qr=5,Yr=6,zr=7,zt=16,U=8,Se=0,jt=1,ce=2,ge=3,St=4,dt=0,_t=1,er=2,Me=1,At=2,xe=1024,Ee=4,Kr=e=>{let r=2166136261;for(let t=0;t<e.length;t+=1)r^=e.charCodeAt(t),r=Math.imul(r,16777619)>>>0;return r};function Xr(e){let r=new Int32Array(e,0,zt);if(r[Wr]!==vr)throw new TypeError("not a fault overlay");let t=r[Vr],s=r[$r],l=zt*4,A=new Int32Array(e,l,t*U);l+=t*U*4;let m=new Float64Array(e,l,t);l+=t*8;let E=new Uint8Array(e,l,t*xe);l+=t*xe;let R=new Int32Array(e,l,s*Ee);l+=s*Ee*4;let O=new Uint8Array(e,l,s*j);return{h:r,maxFiles:t,maxPages:s,files:A,syncedSize:m,paths:E,pages:R,images:O}}function Le(e,r){let t=r*U+jt;for(;Atomics.compareExchange(e.files,t,0,1)!==0;)Atomics.wait(e.files,t,1,1)}function Ne(e,r){let t=r*U+jt;Atomics.store(e.files,t,0),Atomics.notify(e.files,t,1)}function tr(e,r){let t=e.files[r*U+St];return Buffer.from(e.paths.slice(r*xe,r*xe+t)).toString("utf8")}function Kt(e,r,t){let s=Buffer.from(r);if(s.length>xe)return-1;let l=Kr(r)%e.maxFiles;for(let A=0;A<e.maxFiles;A+=1,l=(l+1)%e.maxFiles){let m=l*U,E=Atomics.load(e.files,m+Se);if(E===dt){if(!t)return-1;if(Atomics.compareExchange(e.files,m+Se,dt,_t)===dt)return e.paths.set(s,l*xe),e.files[m+St]=s.length,e.files[m+ce]=0,e.files[m+ge]=-1,Atomics.store(e.files,m+Se,er),Atomics.notify(e.files,m+Se),l;E=Atomics.load(e.files,m+Se)}for(;E===_t;)Atomics.wait(e.files,m+Se,_t,1),E=Atomics.load(e.files,m+Se);if(e.files[m+St]===s.length&&tr(e,l)===r)return l}return Atomics.store(e.h,Jt,1),-1}function rr(e){return Ue.fstatSync(e).size}function Xt(e,r,t){let s=r*U+ce;e.files[s]&Me||(e.syncedSize[r]=rr(t),e.files[s]|=Me)}function Zt(e,r,t,s){if(s*j>=e.syncedSize[r])return!0;for(let R=e.files[r*U+ge];R>=0;R=e.pages[R*Ee+3])if(e.pages[R*Ee+1]===s)return!0;let l=Atomics.add(e.h,qr,1);if(l>=e.maxPages)return Atomics.store(e.h,Jt,1),!1;let A=e.images.subarray(l*j,(l+1)*j),m=Buffer.alloc(j),E=Ue.readSync(t,m,0,j,s*j);return A.set(m),e.pages[l*Ee]=r,e.pages[l*Ee+1]=s,e.pages[l*Ee+2]=E,e.pages[l*Ee+3]=e.files[r*U+ge],e.files[r*U+ge]=l,!0}function Zr(){return Object.assign(new Error("fault overlay frozen"),{code:"EIO"})}function nr(e,r){let t=Xr(e),s=new Map,l=new Set(["write","truncate","mkdir","unlink"]);return(A,m,E)=>{if(Atomics.load(t.h,Gr)&&(l.has(A)||A==="sync"||A==="syncdir"||A==="open"&&E[1]&Ue.constants.O_CREAT))throw Zr();if(A==="open"){let R=E[0],O=(E[1]&Ue.constants.O_CREAT)!==0,w=O?Ue.existsSync(R):!0,x=m(...E),S=Kt(t,R,!0);return S>=0&&(s.set(x,S),O&&!w&&(Le(t,S),t.files[S*U+ce]=(t.files[S*U+ce]|At)&~Me,t.syncedSize[S]=0,t.files[S*U+ce]|=Me,Ne(t,S))),x}if(A==="close")return s.delete(E[0]),m(...E);if(A==="write"){let[R,O,w,x,S]=E,L=s.get(R);if(L===void 0)return m(...E);Le(t,L);try{Xt(t,L,R);let I=Math.floor(S/j),D=Math.floor((S+x-1)/j);for(let F=I;F<=D;F+=1)Zt(t,L,R,F);return Atomics.add(t.h,Yr,1),m(R,O,w,x,S)}finally{Ne(t,L)}}if(A==="truncate"){let[R,O]=E,w=s.get(R);if(w===void 0)return m(...E);Le(t,w);try{Xt(t,w,R);let x=rr(R);for(let S=Math.floor(O/j);S*j<x;S+=1)Zt(t,w,R,S);return m(...E)}finally{Ne(t,w)}}if(A==="sync"){let[R]=E,O=s.get(R),w=m(...E);return O!==void 0&&(Le(t,O),t.files[O*U+ge]=-1,t.files[O*U+ce]&=~Me,Ne(t,O),Atomics.add(t.h,zr,1)),w}if(A==="syncdir"){let R=m(...E),O=Yt.resolve(E[0]);for(let w=0;w<t.maxFiles;w+=1)Atomics.load(t.files,w*U+Se)===er&&t.files[w*U+ce]&At&&Yt.dirname(tr(t,w))===O&&(Le(t,w),t.files[w*U+ce]&=~At,Ne(t,w));return R}if(A==="unlink"){let R=E[0],O=m(...E),w=Kt(t,R,!1);return w>=0&&(Le(t,w),t.files[w*U+ce]=0,t.files[w*U+ge]=-1,Ne(t,w)),O}return m(...E)}}var u=Object.freeze({SUCCESS:0,TOOBIG:1,ACCES:2,AGAIN:6,BADF:8,EXIST:20,INVAL:28,IO:29,ISDIR:31,LOOP:32,MFILE:33,NAMETOOLONG:37,NOENT:44,NOSPC:51,NOSYS:52,NOTDIR:54,NOTEMPTY:55,NOTSUP:58,PERM:63,SPIPE:70,XDEV:75,NOTCAPABLE:76}),en={ENOENT:u.NOENT,EEXIST:u.EXIST,ENOTDIR:u.NOTDIR,EISDIR:u.ISDIR,ENOTEMPTY:u.NOTEMPTY,EACCES:u.ACCES,EPERM:u.PERM,EBADF:u.BADF,EINVAL:u.INVAL,ENOSPC:u.NOSPC,EMFILE:u.MFILE,ELOOP:u.LOOP,ENAMETOOLONG:u.NAMETOOLONG,EXDEV:u.XDEV,EIO:u.IO,EAGAIN:u.AGAIN,ENOTSUP:u.NOTSUP,E2BIG:u.TOOBIG},tn=e=>en[e?.code]??u.IO,$=Object.freeze({UNKNOWN:0,CHAR:2,DIR:3,FILE:4,SYMLINK:7}),Et=1,rn=2,or=4,sr=8,pt=1,nn=1n<<1n,on=1n<<6n,ar=(1n<<30n)-1n,sn=1,an=0,cn=1,ln=2,cr=0,fn=1,un=2,dn=3,Ze=8,Pe=0,ir=1,lr=2,mt=3,Ke=4,ht=0,fr=1,Xe=2,me=1,ee=2,It=3,Fe=4,he=1024;function _n(e){let r=new Int32Array(e,0,4)[0],t=16,s=new Int32Array(e,t,r*Ze);t+=r*Ze*4;let l=new Float64Array(e,t,r);t+=r*8;let A=new Uint8Array(e,t,r*he);return{maxFds:r,words:s,positions:l,paths:A}}function yt(){return process.hrtime.bigint()}function ur(){return BigInt(Math.round((performance.timeOrigin+performance.now())*1e6))}var ke=0,je=1,Ot=2,An=3,dr=4,Sn=5,En=6,Ar=7,pn=16,mn=65536;function wt(e){let r=new Int32Array(e),t=Atomics.add(r,An,1)+1;for(;;){let l=Atomics.load(r,dr);if(t<=l||Atomics.compareExchange(r,dr,l,t)===l)break}Atomics.add(r,Sn,1);let s=Atomics.add(r,En,1);return s<mn&&Atomics.store(r,pn+s,jr),r}var Ce=class extends Error{constructor(r){super(`WASI exit with code ${r}`),this.name="WasiExitError",this.code=r}};function hn(e,r){let t=_n(e.fdTable),s=new Int32Array(e.control),l=new TextEncoder,A=(e.args??[]).map(a=>l.encode(a)),m=Object.entries(e.env??{}).map(([a,i])=>l.encode(`${a}=${i}`)),E=Number.isInteger(e.stdoutFd)?e.stdoutFd:1,R=Number.isInteger(e.stderrFd)?e.stderrFd:2,O=new Int32Array(new SharedArrayBuffer(4)),w=null;e.deterministic?.randomSeed!==void 0&&(w=new BigUint64Array(e.deterministic.randomState));let x=()=>new Uint8Array(r().buffer),S=()=>new DataView(r().buffer),L=(a,i)=>Buffer.from(x().slice(a,a+i)).toString("utf8");function I(a){if(!Number.isInteger(a)||a<0||a>=t.maxFds)return null;let i=a*Ze;return Atomics.load(t.words,i+Pe)!==Xe?null:{fd:a,base:i,kind:t.words[i+ir],osFd:t.words[i+lr]}}function D(a){let i=t.words[a.base+mt],f=t.paths.slice(a.fd*he,a.fd*he+i);if(a.kind===Fe){let _=f.indexOf(0);return Buffer.from(f.subarray(_+1)).toString("utf8")}return Buffer.from(f).toString("utf8")}function F(a){let i=t.words[a.base+mt],f=t.paths.subarray(a.fd*he,a.fd*he+i);return Buffer.from(f.slice(0,f.indexOf(0)))}function q(a,i,f,_){let n=Buffer.from(f);if(n.length>he)return-u.NAMETOOLONG;let o=3+new Int32Array(e.fdTable,0,4)[1];for(let c=o;c<t.maxFds;c+=1){let d=c*Ze;if(Atomics.compareExchange(t.words,d+Pe,ht,fr)===ht)return t.paths.set(n,c*he),t.words[d+mt]=n.length,t.words[d+ir]=a,t.words[d+lr]=i,t.words[d+Ke]=_?1:0,t.positions[c]=0,Atomics.store(t.words,d+Pe,Xe),c}return-u.MFILE}function H(a,i,f){let _=I(a);if(!_)return{errno:u.BADF};if(_.kind!==It&&_.kind!==Fe)return{errno:u.NOTDIR};let n=L(i,f);if(n.includes("\0"))return{errno:u.INVAL};let o=D(_),c=ze.resolve(o,n),d=re(o);return d!=="/"&&c!==d&&!c.startsWith(d+ze.sep)?{errno:u.NOTCAPABLE}:{full:c}}function re(a){let i=null,f=new Int32Array(e.fdTable,0,4)[1];for(let _=0;_<f;_+=1){let n=D(I(3+_));(n==="/"||a===n||a.startsWith(n+ze.sep))&&(!i||n.length>i.length)&&(i=n)}return i??"/"}function te(a,i){let f=S(),_=[];for(let n=0;n<i;n+=1)_.push([f.getUint32(a+n*8,!0),f.getUint32(a+n*8+4,!0)]);return _}function ie(a,i){let f=S(),_=i.isDirectory()?$.DIR:i.isFile()?$.FILE:i.isSymbolicLink()?$.SYMLINK:i.isCharacterDevice()?$.CHAR:$.UNKNOWN;f.setBigUint64(a,BigInt(i.dev),!0),f.setBigUint64(a+8,BigInt(i.ino),!0),f.setUint8(a+16,_),f.setBigUint64(a+24,BigInt(i.nlink),!0),f.setBigUint64(a+32,BigInt(i.size),!0),f.setBigUint64(a+40,i.atimeNs??BigInt(Math.round(i.atimeMs*1e6)),!0),f.setBigUint64(a+48,i.mtimeNs??BigInt(Math.round(i.mtimeMs*1e6)),!0),f.setBigUint64(a+56,i.ctimeNs??BigInt(Math.round(i.ctimeMs*1e6)),!0)}function ve(a){return a.kind===me?a.fd===1?E:a.fd===2?R:-1:a.osFd}let C=a=>(...i)=>{try{return a(...i)}catch(f){if(f instanceof Ce)throw f;return tn(f)}};return{args_sizes_get(a,i){let f=S();return f.setUint32(a,A.length,!0),f.setUint32(i,A.reduce((_,n)=>_+n.length+1,0),!0),u.SUCCESS},args_get(a,i){let f=S(),_=x(),n=i;return A.forEach((o,c)=>{f.setUint32(a+c*4,n,!0),_.set(o,n),_[n+o.length]=0,n+=o.length+1}),u.SUCCESS},environ_sizes_get(a,i){let f=S();return f.setUint32(a,m.length,!0),f.setUint32(i,m.reduce((_,n)=>_+n.length+1,0),!0),u.SUCCESS},environ_get(a,i){let f=S(),_=x(),n=i;return m.forEach((o,c)=>{f.setUint32(a+c*4,n,!0),_.set(o,n),_[n+o.length]=0,n+=o.length+1}),u.SUCCESS},clock_res_get(a,i){return S().setBigUint64(i,1000n,!0),u.SUCCESS},clock_time_get(a,i,f){let _;if(a===cr)_=ur();else if(a===fn||a===un||a===dn)_=yt();else return u.INVAL;return S().setBigUint64(f,_,!0),u.SUCCESS},fd_advise:()=>u.SUCCESS,fd_allocate:C((a,i,f)=>{let _=I(a);if(!_||_.kind!==ee)return u.BADF;let n=Number(i+f);return g.fstatSync(_.osFd).size<n&&g.ftruncateSync(_.osFd,n),u.SUCCESS}),fd_close:C(a=>{let i=I(a);if(!i)return u.BADF;if(i.kind===me||i.kind===Fe)return u.SUCCESS;if(Atomics.compareExchange(t.words,i.base+Pe,Xe,fr)!==Xe)return u.BADF;try{i.osFd>=0&&g.closeSync(i.osFd)}finally{Atomics.store(t.words,i.base+Pe,ht)}return u.SUCCESS}),fd_datasync:C(a=>{let i=I(a);return i?(i.osFd>=0&&i.kind===ee&&g.fdatasyncSync(i.osFd),u.SUCCESS):u.BADF}),fd_sync:C(a=>{let i=I(a);return i?(i.osFd>=0&&i.kind===ee&&g.fsyncSync(i.osFd),u.SUCCESS):u.BADF}),fd_fdstat_get:C((a,i)=>{let f=I(a);if(!f)return u.BADF;let _=S(),n=f.kind===me?$.CHAR:f.kind===ee?$.FILE:$.DIR;return _.setUint8(i,n),_.setUint16(i+2,t.words[f.base+Ke]?pt:0,!0),_.setBigUint64(i+8,ar,!0),_.setBigUint64(i+16,ar,!0),u.SUCCESS}),fd_fdstat_set_flags:C((a,i)=>{let f=I(a);return f?(t.words[f.base+Ke]=i&pt?1:0,u.SUCCESS):u.BADF}),fd_filestat_get:C((a,i)=>{let f=I(a);if(!f)return u.BADF;if(f.kind===me)return S().setUint8(i+16,$.CHAR),u.SUCCESS;let _=f.osFd>=0?g.fstatSync(f.osFd,{bigint:!0}):g.statSync(D(f),{bigint:!0});return ie(i,_),u.SUCCESS}),fd_filestat_set_size:C((a,i)=>{let f=I(a);return!f||f.kind!==ee?u.BADF:(g.ftruncateSync(f.osFd,Number(i)),u.SUCCESS)}),fd_filestat_set_times:()=>u.SUCCESS,fd_pread:C((a,i,f,_,n)=>{let o=I(a);if(!o||o.kind!==ee)return u.BADF;let c=Number(_),d=0;for(let[p,T]of te(i,f)){let h=Buffer.alloc(T),N=g.readSync(o.osFd,h,0,T,c);if(x().set(h.subarray(0,N),p),d+=N,c+=N,N<T)break}return S().setUint32(n,d,!0),u.SUCCESS}),fd_pwrite:C((a,i,f,_,n)=>{let o=I(a);if(!o||o.kind!==ee)return u.BADF;let c=Number(_),d=0;for(let[p,T]of te(i,f)){let h=g.writeSync(o.osFd,Buffer.from(x().slice(p,p+T)),0,T,c);d+=h,c+=h}return S().setUint32(n,d,!0),u.SUCCESS}),fd_read:C((a,i,f,_)=>{let n=I(a);if(!n)return u.BADF;if(n.kind===me)return S().setUint32(_,0,!0),a===0?u.SUCCESS:u.BADF;if(n.kind!==ee)return u.ISDIR;let o=0;for(let[c,d]of te(i,f)){let p=Buffer.alloc(d),T=t.positions[a],h=g.readSync(n.osFd,p,0,d,T);if(t.positions[a]=T+h,x().set(p.subarray(0,h),c),o+=h,h<d)break}return S().setUint32(_,o,!0),u.SUCCESS}),fd_write:C((a,i,f,_)=>{let n=I(a);if(!n)return u.BADF;let o=ve(n);if(o<0)return u.BADF;let c=0;for(let[d,p]of te(i,f)){if(p===0)continue;let T=Buffer.from(x().slice(d,d+p));if(n.kind===me){let b=0;for(;b<p;)b+=g.writeSync(o,T,b,p-b);c+=p;continue}let h=t.words[n.base+Ke]?g.fstatSync(o).size:t.positions[a],N=g.writeSync(o,T,0,p,h);t.positions[a]=h+N,c+=N}return S().setUint32(_,c,!0),u.SUCCESS}),fd_prestat_get(a,i){let f=I(a);if(!f||f.kind!==Fe)return u.BADF;let _=S();return _.setUint8(i,0),_.setUint32(i+4,F(f).length,!0),u.SUCCESS},fd_prestat_dir_name(a,i,f){let _=I(a);if(!_||_.kind!==Fe)return u.BADF;let n=F(_);return x().set(n.subarray(0,f),i),u.SUCCESS},fd_readdir:C((a,i,f,_,n)=>{let o=I(a);if(!o||o.kind!==It&&o.kind!==Fe)return u.BADF;let c=D(o),d=[".","..",...g.readdirSync(c)],p=S(),T=x(),h=0;for(let N=Number(_);N<d.length;N+=1){let b=Buffer.from(d[N]),Y=$.UNKNOWN,k=0n;try{let We=g.lstatSync(ze.join(c,d[N]),{bigint:!0});Y=We.isDirectory()?$.DIR:We.isFile()?$.FILE:We.isSymbolicLink()?$.SYMLINK:$.UNKNOWN,k=We.ino}catch{}let Z=new Uint8Array(24),ne=new DataView(Z.buffer);ne.setBigUint64(0,BigInt(N+1),!0),ne.setBigUint64(8,k,!0),ne.setUint32(16,b.length,!0),ne.setUint8(20,Y);let G=Buffer.concat([Buffer.from(Z),b]),J=f-h;if(J<=0||(T.set(G.subarray(0,Math.min(J,G.length)),i+h),h+=Math.min(J,G.length),G.length>J))break}return p.setUint32(n,h,!0),u.SUCCESS}),fd_renumber:()=>u.NOTSUP,fd_seek:C((a,i,f,_)=>{let n=I(a);if(!n)return u.BADF;if(n.kind===me)return u.SPIPE;if(n.kind!==ee)return u.ISDIR;let o=Number(i),c;if(f===an)c=o;else if(f===cn)c=t.positions[a]+o;else if(f===ln)c=g.fstatSync(n.osFd).size+o;else return u.INVAL;return c<0?u.INVAL:(t.positions[a]=c,S().setBigUint64(_,BigInt(c),!0),u.SUCCESS)}),fd_tell:C((a,i)=>{let f=I(a);return!f||f.kind!==ee?u.BADF:(S().setBigUint64(i,BigInt(t.positions[a]),!0),u.SUCCESS)}),path_create_directory:C((a,i,f)=>{let _=H(a,i,f);return _.errno?_.errno:(g.mkdirSync(_.full),u.SUCCESS)}),path_filestat_get:C((a,i,f,_,n)=>{let o=H(a,f,_);if(o.errno)return o.errno;let c=i&sn?g.statSync(o.full,{bigint:!0}):g.lstatSync(o.full,{bigint:!0});return ie(n,c),u.SUCCESS}),path_filestat_set_times:()=>u.SUCCESS,path_link:()=>u.NOTSUP,path_open:C((a,i,f,_,n,o,c,d,p)=>{let T=H(a,f,_);if(T.errno)return T.errno;let h=null;try{h=g.statSync(T.full)}catch(J){if(J?.code!=="ENOENT"||!(n&Et))throw J}if(h&&n&Et&&n&or)return u.EXIST;if(n&rn||h&&h.isDirectory()){if(h&&!h.isDirectory())return u.NOTDIR;if(!h)return u.NOENT;let J=q(It,-1,T.full,!1);return J<0?-J:(S().setUint32(p,J,!0),u.SUCCESS)}let N=BigInt.asUintN(64,BigInt(o)),b=(N&nn)!==0n,Y=(N&on)!==0n||(n&sr)!==0,k=g.constants,Z=Y?b?k.O_RDWR:k.O_WRONLY:k.O_RDONLY;n&Et&&(Z|=k.O_CREAT),n&or&&(Z|=k.O_EXCL),n&sr&&(Z|=k.O_TRUNC);let ne=g.openSync(T.full,Z,420),G=q(ee,ne,T.full,(d&pt)!==0);return G<0?(g.closeSync(ne),-G):(S().setUint32(p,G,!0),u.SUCCESS)}),path_readlink:C((a,i,f,_,n,o)=>{let c=H(a,i,f);if(c.errno)return c.errno;let d=Buffer.from(g.readlinkSync(c.full)),p=Math.min(n,d.length);return x().set(d.subarray(0,p),_),S().setUint32(o,p,!0),u.SUCCESS}),path_remove_directory:C((a,i,f)=>{let _=H(a,i,f);return _.errno?_.errno:(g.rmdirSync(_.full),u.SUCCESS)}),path_rename:C((a,i,f,_,n,o)=>{let c=H(a,i,f);if(c.errno)return c.errno;let d=H(_,n,o);return d.errno?d.errno:(g.renameSync(c.full,d.full),u.SUCCESS)}),path_symlink:()=>u.NOTSUP,path_unlink_file:C((a,i,f)=>{let _=H(a,i,f);return _.errno?_.errno:g.lstatSync(_.full).isDirectory()?u.ISDIR:(g.unlinkSync(_.full),u.SUCCESS)}),poll_oneoff:C((a,i,f,_)=>{let n=S(),o=yt(),c=null,d=[];for(let h=0;h<f;h+=1){let N=a+h*48,b=n.getBigUint64(N,!0),Y=n.getUint8(N+8);if(Y===0){let k=n.getUint32(N+16,!0),Z=n.getBigUint64(N+24,!0),ne=n.getUint16(N+40,!0)&1,G;ne?G=k===cr?o+(Z-ur()):Z:G=o+Z,d.push({userdata:b,tag:Y,deadline:G}),(c===null||G<c)&&(c=G)}else d.push({userdata:b,tag:Y,deadline:o}),c=o}if(c!==null&&c>o){let h=Number(c-o)/1e6;Atomics.wait(O,0,0,h)}let p=yt(),T=0;for(let h of d){if(h.deadline>p)continue;let N=i+T*32;n.setBigUint64(N,h.userdata,!0),n.setUint16(N+8,0,!0),n.setUint8(N+10,h.tag),n.setBigUint64(N+16,0n,!0),n.setUint16(N+24,0,!0),T+=1}return n.setUint32(_,T,!0),u.SUCCESS}),proc_exit(a){throw Atomics.compareExchange(s,ke,0,1)===0&&Atomics.store(s,je,a),Atomics.notify(s,ke),new Ce(a)},proc_raise:()=>u.NOSYS,random_get(a,i){let f=new Uint8Array(i);if(w)for(let _=0;_<i;_+=8){let n;for(;;){let c=Atomics.load(w,0);if(n=c,n^=n>>12n,n^=n<<25n&0xffffffffffffffffn,n^=n>>27n,Atomics.compareExchange(w,0,c,n)===c)break}let o=n*0x2545f4914f6cdd1dn&0xffffffffffffffffn;for(let c=0;c<8&&_+c<i;c+=1)f[_+c]=Number(o&0xffn),o>>=8n}else Jr(f);return x().set(f,a),u.SUCCESS},sched_yield:()=>u.SUCCESS,sock_accept:()=>u.NOSYS,sock_recv:()=>u.NOSYS,sock_send:()=>u.NOSYS,sock_shutdown:()=>u.NOSYS}}function In(e,r){let t=e.fault?nr(e.fault,e.ioRoot):void 0,s=qt({root:e.ioRoot,table:e.ioTable,instanceId:e.instanceId,getMemory:r,interpose:t});return{imports:st({getMemory:r,provider:s}),close:()=>s.closeLocalFds()}}function Sr(e,r){let t=hn(e,r),s=In(e,r);return{imports:{wasi_snapshot_preview1:t,env:{...s.imports.env}},close:s.close}}var yn=0,On=1,_r=2,wn=3,et=4,Tt=5,Tn=6,Rn=7,Qe=8,Rt=16,Lt=4;var Je=2,Ln=3,Nt=4,Er=5,pr=6,Nn=(1<<29)-1;function mr(e,r=6e4){let t=new Int32Array(e),s=t[yn];return l=>{let A=Atomics.add(t,wn,1);if(A>Nn)return-6;let m=performance.now()+r,E=-1/0;for(;;){let R=Math.min(Atomics.load(t,On),s);for(let x=0;x<R;x+=1){let S=Rt+x*Lt;if(Atomics.compareExchange(t,S,Je,Ln)===Je)return Atomics.store(t,S+1,A),Atomics.store(t,S+2,l),Atomics.store(t,S,Nt),Atomics.notify(t,S),Atomics.add(t,Tn,1),A}let O=performance.now();if(R<s&&O-E>50&&(Atomics.add(t,_r,1),Atomics.notify(t,_r),E=O),O>m)return Atomics.add(t,Rn,1),-6;let w=Atomics.load(t,Qe);Atomics.wait(t,Qe,w,5)}}}var{mode:Bt,wasmModule:gt,memory:He,cfg:ye}=hr,Ie=Bt==="pool"?new Int32Array(ye.control):wt(ye.control),W=new Int32Array(ye.pool),Dt=Sr(ye,()=>He),xt={...Dt.imports,env:{...Dt.imports.env,memory:He},wasi:{"thread-spawn":mr(ye.pool,ye.spawnWaitMs)}},Ft=e=>e instanceof Ce||e?.name==="WasiExitError";function Ct(e){Atomics.compareExchange(Ie,ke,0,1)===0&&Atomics.store(Ie,je,e),Atomics.notify(Ie,ke)}function Fn(e,r){try{xn(2,`[node-host] guest thread ${e} trapped: ${r?.stack??r}
2
+ `)}catch{}Atomics.store(Ie,Ar,e),Atomics.store(Ie,Ot,1),Atomics.notify(Ie,Ot)}if(Bt==="pool"){let e=Rt+hr.slot*Lt;Atomics.store(W,e+3,gn);let r=!1;for(;;){for(Atomics.store(W,e,Je),Atomics.add(W,Qe,1),Atomics.notify(W,Qe);;){let A=Atomics.load(W,e);if(A===Nt)break;Atomics.wait(W,e,A,1e3)}let t=Atomics.load(W,e+1),s=Atomics.load(W,e+2);r||(wt(ye.control),r=!0),Atomics.store(W,e,Er);let l=Atomics.add(W,et,1)+1;for(;;){let A=Atomics.load(W,Tt);if(l<=A||Atomics.compareExchange(W,Tt,A,l)===A)break}try{new WebAssembly.Instance(gt,xt).exports.wasi_thread_start(t,s)}catch(A){Atomics.sub(W,et,1),Atomics.store(W,e,pr),Ft(A)?Ct(A.code):Fn(t,A);break}Atomics.sub(W,et,1)}Dt.close()}else if(Bt==="command"){let e=new WebAssembly.Instance(gt,xt),r=0,t=null;try{e.exports._start()}catch(s){Ft(s)?r=s.code:(r=134,t=String(s?.stack??s))}Ct(r),tt.postMessage({t:"done",code:Atomics.load(Ie,je),error:t})}else{let e=new WebAssembly.Instance(gt,xt);e.exports._initialize?.();let r=()=>new Uint8Array(He.buffer);tt.on("message",t=>{let s=(l,A)=>tt.postMessage({t:"reply",id:t.id,value:l,error:A?String(A?.stack??A):null});try{if(t.op==="call"){let l=e.exports[t.fn];if(typeof l!="function")throw new Error(`no export ${t.fn}`);s(l(...t.args??[]))}else if(t.op==="write"){let l=t.bytes.length,A=e.exports.flatsql_alloc(Math.max(l,1));if(!A)throw new Error("flatsql_alloc failed");r().set(t.bytes,A),s(A)}else if(t.op==="read")s(r().slice(t.ptr,t.ptr+t.len));else if(t.op==="growHeap"){let{flatsql_alloc:l,flatsql_free:A}=e.exports,m=[];for(let E=2**30;E>=2**20&&m.length<64;){let R=He.buffer.byteLength+E+1048576<=t.limitBytes?l(E):0;if(!R){E/=2;continue}m.push(R)}for(let E of m)A(E);s(He.buffer.byteLength)}else throw new Error(`unknown op ${t.op}`)}catch(l){Ft(l)&&Ct(l.code),s(void 0,l)}}),tt.postMessage({t:"ready"})}
@@ -0,0 +1,5 @@
1
+ import U from"node:fs";import Je from"node:os";import C from"node:path";import{fileURLToPath as Oe}from"node:url";import{Worker as we}from"node:worker_threads";import Lt from"node:fs";import Nt from"node:path";var nt=Object.freeze({READ:1,WRITE:2,CREATE:4,EXCL:8,TRUNC:16,DELETE_ON_CLOSE:32,PROBE:64,UNLINK:128,CREATE_PARENTS:256,UNLINK_IF_UNUSED:512,OPEN_DEFERRED:1024}),ot=Object.freeze({OK:0,GENERIC:-1,NOENT:-2,ACCESS:-3,IO:-4,NOSPACE:-5,BADHANDLE:-6,BUSY:-7});var st=Object.freeze(["flatsql_io_open","flatsql_io_read","flatsql_io_write","flatsql_io_truncate","flatsql_io_sync","flatsql_io_size","flatsql_io_close"]);var at=typeof TextDecoder=="function"?new TextDecoder("utf-8",{fatal:!0}):null;var Fe=64,lt=Fe*4;var ft=64*1024;var ut=typeof TextEncoder=="function"?new TextEncoder:null;var _t=typeof TextEncoder=="function"?new TextEncoder:null;var Ot=Object.freeze({open:1,read:2,write:3,truncate:4,sync:5,size:6,close:7,mirrorRead:8});var Me=1179534419,Ue=1,ne=16,Pe=8;function oe(e={}){let t=e.maxHandles??4096,r=e.maxPathBytes??1024,n=e.maxInstances??64;if(!Number.isInteger(t)||t<1||t>1<<23)throw new RangeError("maxHandles must be in 1..2^23.");let s=ne*4+n*8+t*Pe*4+t*r,a=new SharedArrayBuffer(s),i=new Int32Array(a,0,ne);return i[0]=Me,i[1]=Ue,i[2]=t,i[3]=r,i[4]=n,a}import cn from"node:fs";import Ge from"node:path";import{randomFillSync as un}from"node:crypto";import{threadId as _n}from"node:worker_threads";var hr=256*1024;var yr=263;var Ur=typeof process<"u"&&!!process.release&&process.release.name==="node";var W=3,_=W|4,y=new TextEncoder,X=new TextDecoder;function He(e,t){let r=new Uint8Array(e),n=t>>>0||1;for(let s=0;s<e;s+=1)n^=n<<13,n^=n>>>17,n^=n<<5,r[s]=n&255;return r}function We(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r+=1)if(e[r]!==t[r])return!1;return!0}var Z=class extends Error{};function g(e,t){if(!e)throw new Z(t)}function o(e,t,r){g(e===t,`${r}: expected ${t}, got ${e}`)}function A(e,t){g(Number.isInteger(e)&&e>=0,`${t}: expected a handle, got ${e}`)}var Qr=Object.freeze([{name:"open without CREATE on a missing file is NOENT",async run(e,t){o(await e.open(`${t}/missing.bin`,W),-2,"open")}},{name:"create, write, size, short read at EOF, read past EOF",async run(e,t){let r=await e.open(`${t}/a.bin`,_);A(r,"open"),o(await e.writeFrom(r,y.encode("hello"),0),5,"write"),o(await e.size(r),5,"size");let n=new Uint8Array(10);o(await e.readInto(r,n,0),5,"short read"),g(X.decode(n.subarray(0,5))==="hello","short read bytes"),o(await e.readInto(r,new Uint8Array(4),5),0,"read at EOF"),o(await e.readInto(r,new Uint8Array(4),100),0,"read past EOF"),o(await e.close(r),0,"close")}},{name:"a write past EOF extends the file and the gap reads as zeros",async run(e,t){let r=await e.open(`${t}/sparse.bin`,_);A(r,"open"),o(await e.writeFrom(r,y.encode("ab"),0),2,"write head"),o(await e.writeFrom(r,y.encode("z"),100),1,"write past EOF"),o(await e.size(r),101,"size");let n=new Uint8Array(98);n.fill(238),o(await e.readInto(r,n,2),98,"read gap"),g(n.every(s=>s===0),"gap is zeros"),o(await e.close(r),0,"close")}},{name:"truncate shrinks and grows; grown bytes read as zeros",async run(e,t){let r=await e.open(`${t}/t.bin`,_);A(r,"open"),await e.writeFrom(r,y.encode("abcdefgh"),0),o(await e.truncate(r,3),0,"truncate down"),o(await e.size(r),3,"size after shrink"),o(await e.truncate(r,10),0,"truncate up"),o(await e.size(r),10,"size after grow");let n=new Uint8Array(10);o(await e.readInto(r,n,0),10,"read"),g(X.decode(n.subarray(0,3))==="abc","kept prefix"),g(n.subarray(3).every(s=>s===0),"grown tail is zeros"),o(await e.sync(r),0,"sync"),o(await e.close(r),0,"close")}},{name:"closed and bogus handles are BADHANDLE",async run(e,t){let r=await e.open(`${t}/c.bin`,_);A(r,"open"),o(await e.close(r),0,"close"),o(await e.close(r),-6,"close again"),o(await e.readInto(r,new Uint8Array(1),0),-6,"read"),o(await e.size(8388352),-6,"bogus size")}},{name:"PROBE reports existence without a handle",async run(e,t){let r=await e.open(`${t}/p.bin`,_);A(r,"open"),await e.close(r),o(await e.open(`${t}/p.bin`,64),0,"probe existing"),o(await e.open(`${t}/nope.bin`,64),-2,"probe missing")}},{name:"EXCL on an existing file is GENERIC; TRUNC empties it",async run(e,t){let r=await e.open(`${t}/x.bin`,_);A(r,"open"),await e.writeFrom(r,y.encode("data"),0),await e.close(r),o(await e.open(`${t}/x.bin`,_|8),-1,"EXCL");let n=await e.open(`${t}/x.bin`,W|16);A(n,"TRUNC open"),o(await e.size(n),0,"size after TRUNC"),await e.close(n)}},{name:"CREATE under a missing directory is NOENT; CREATE_PARENTS makes it",async run(e,t){o(await e.open(`${t}/p/00000001/h.fsh`,_),-2,"no parents");let r=await e.open(`${t}/p/00000001/h.fsh`,_|256);A(r,"CREATE_PARENTS"),o(await e.writeFrom(r,y.encode("head"),0),4,"write"),await e.close(r),o(await e.open(`${t}/p/00000001/h.fsh`,64),0,"probe")}},{name:"UNLINK_IF_UNUSED is BUSY while a handle is open; UNLINK removes",async run(e,t){let r=await e.open(`${t}/u.bin`,_);A(r,"open"),o(await e.open(`${t}/u.bin`,512),-7,"unlink while open"),await e.close(r),o(await e.open(`${t}/u.bin`,512),0,"unlink unused"),o(await e.open(`${t}/u.bin`,64),-2,"gone"),o(await e.open(`${t}/u.bin`,128),-2,"unlink missing");let n=await e.open(`${t}/v.bin`,_);await e.close(n),o(await e.open(`${t}/v.bin`,128),0,"plain unlink")}},{name:"DELETE_ON_CLOSE drops the file with its last handle",async run(e,t){let r=await e.open(`${t}/tmp.bin`,_|32);A(r,"open"),await e.writeFrom(r,y.encode("scratch"),0),o(await e.close(r),0,"close"),o(await e.open(`${t}/tmp.bin`,64),-2,"probe")}},{name:"paths are confined below the root",async run(e,t){o(await e.open(`${t}/../../escape.bin`,_),-3,".."),o(await e.open("",_),-1,"empty path")}},{name:"access modes: read-only handles refuse writes, write-only refuse reads",async run(e,t){let r=await e.open(`${t}/m.bin`,_);await e.writeFrom(r,y.encode("mode"),0),await e.close(r);let n=await e.open(`${t}/m.bin`,1);A(n,"read-only open"),o(await e.writeFrom(n,y.encode("x"),0),-4,"write on RO"),o(await e.truncate(n,0),-4,"truncate on RO"),await e.close(n);let s=await e.open(`${t}/m.bin`,2);A(s,"write-only open"),o(await e.readInto(s,new Uint8Array(2),0),-4,"read on WO"),await e.close(s)}},{name:"OPEN_DEFERRED: a failed open surfaces at open or at first use",async run(e,t){let r=await e.open(`${t}/deferred-missing.bin`,W|1024);r<0?o(r,-2,"sync host"):(o(await e.readInto(r,new Uint8Array(1),0),-2,"first use"),o(await e.close(r),0,"close failed deferred"));let n=await e.open(`${t}/deferred.bin`,_|1024);A(n,"deferred create"),o(await e.writeFrom(n,y.encode("later"),0),5,"write after deferred"),o(await e.size(n),5,"size"),await e.close(n)}},{name:"two handles on one path see each other's writes",async run(e,t){let r=await e.open(`${t}/shared.bin`,_),n=await e.open(`${t}/shared.bin`,W);A(r,"a"),A(n,"b"),await e.writeFrom(r,y.encode("from-a"),0);let s=new Uint8Array(6);o(await e.readInto(n,s,0),6,"read via b"),g(X.decode(s)==="from-a","b sees a"),await e.writeFrom(n,y.encode("B"),0);let a=new Uint8Array(1);await e.readInto(r,a,0),g(a[0]===66,"a sees b"),await e.close(r),await e.close(n)}},{name:"1 MiB round trip across chunk boundaries at an unaligned offset",async run(e,t){let r=await e.open(`${t}/big.bin`,_);A(r,"open");let n=He(1024*1024+17,2654435769);o(await e.writeFrom(r,n,4093),n.length,"write"),o(await e.size(r),4093+n.length,"size");let s=new Uint8Array(n.length);o(await e.readInto(r,s,4093),n.length,"read"),g(We(s,n),"bytes round trip"),await e.close(r)}}]);import en from"node:fs";import rn from"node:path";var m=Object.freeze({SUCCESS:0,TOOBIG:1,ACCES:2,AGAIN:6,BADF:8,EXIST:20,INVAL:28,IO:29,ISDIR:31,LOOP:32,MFILE:33,NAMETOOLONG:37,NOENT:44,NOSPC:51,NOSYS:52,NOTDIR:54,NOTEMPTY:55,NOTSUP:58,PERM:63,SPIPE:70,XDEV:75,NOTCAPABLE:76}),En={ENOENT:m.NOENT,EEXIST:m.EXIST,ENOTDIR:m.NOTDIR,EISDIR:m.ISDIR,ENOTEMPTY:m.NOTEMPTY,EACCES:m.ACCES,EPERM:m.PERM,EBADF:m.BADF,EINVAL:m.INVAL,ENOSPC:m.NOSPC,EMFILE:m.MFILE,ELOOP:m.LOOP,ENAMETOOLONG:m.NAMETOOLONG,EXDEV:m.XDEV,EIO:m.IO,EAGAIN:m.AGAIN,ENOTSUP:m.NOTSUP,E2BIG:m.TOOBIG};var pn=Object.freeze({UNKNOWN:0,CHAR:2,DIR:3,FILE:4,SYMLINK:7});var hn=1n<<1n,yn=1n<<6n,wn=(1n<<30n)-1n;var R=8,se=0,ae=1,ie=2,$e=3;var ce=2,Ve=1;var qe=4,M=1024;function le({preopens:e=[],maxFds:t=1024}={}){let r=t*R,n=new SharedArrayBuffer(16+r*4+t*8+t*M),s=new Int32Array(n,0,4);s[0]=t,s[1]=e.length;let a=Ye(n);for(let i=0;i<3;i+=1)a.words[i*R+ae]=Ve,a.words[i*R+ie]=i,a.words[i*R+se]=ce;return e.forEach((i,f)=>{let d=3+f,c=Buffer.from(Ge.resolve(i.host)),h=Buffer.from(i.guest);if(c.length+h.length+1>M)throw new RangeError("preopen path too long");a.paths.set(h,d*M),a.paths[d*M+h.length]=0,a.paths.set(c,d*M+h.length+1),a.words[d*R+ae]=qe,a.words[d*R+ie]=-1,a.words[d*R+$e]=h.length+1+c.length,a.words[d*R+se]=ce}),n}function Ye(e){let t=new Int32Array(e,0,4)[0],r=16,n=new Int32Array(e,r,t*R);r+=t*R*4;let s=new Float64Array(e,r,t);r+=t*8;let a=new Uint8Array(e,r,t*M);return{maxFds:t,words:n,positions:s,paths:a}}var fe=0,ue=1,de=2;var _e=5,me=6,J=7,j=16,ee=65536;function Se(){return new SharedArrayBuffer((j+ee)*4)}var ze=0,te=1,Ae=2,Ke=3,Ee=4,pe=5,re=6,he=7;var Xe=16,Ze=4;var In=(1<<29)-1;function ye(e){let t=new SharedArrayBuffer((Xe+e*Ze)*4),r=new Int32Array(t);return r[ze]=e,r[Ke]=1,t}var Ie=new URL("./node-guest.mjs",import.meta.url);function je(e){let t=e instanceof Uint8Array?e:new Uint8Array(e),r=8,n=()=>{let a=0,i=0;for(;;){let f=t[r++];if(a+=(f&127)*2**i,i+=7,!(f&128))return a}},s=()=>{let a=n(),i=Buffer.from(t.subarray(r,r+a)).toString("utf8");return r+=a,i};for(;r<t.length;){let a=t[r++],i=n(),f=r+i;if(a===2){let d=n();for(let c=0;c<d;c+=1){let h=s(),L=s(),O=t[r++];if(O===0)n();else if(O===1){r+=1;let T=n();n(),T&1&&n()}else if(O===2){let T=n(),l=n(),u=T&1?n():void 0;return{module:h,name:L,initial:l,maximum:u,shared:(T&2)!==0}}else if(O===3)r+=2;else throw new Error(`unknown import kind ${O}`)}return null}r=f}return null}function Te(e){if(e.root)return U.mkdirSync(e.root,{recursive:!0}),{root:C.resolve(e.root),cleanup:()=>{}};let t=U.mkdtempSync(C.join(Je.tmpdir(),"flatsql-node-"));return{root:t,cleanup:()=>{e.keepRoot||U.rmSync(t,{recursive:!0,force:!0})}}}function Re(e,t){U.mkdirSync(C.join(t,"tmp"),{recursive:!0});let r=[{guest:"/",host:t},...e.mounts??[]],n=null;if(e.deterministic){let s=new SharedArrayBuffer(8);new BigUint64Array(s)[0]=BigInt(e.deterministic.randomSeed??0x9e3779b97f4a7c15n)|1n,n={randomSeed:String(e.deterministic.randomSeed??0),randomState:s}}return{args:e.args??[],env:{TMPDIR:"/tmp",...e.env??{}},fdTable:le({preopens:r}),control:Se(),pool:ye(e.maxThreads??512),spawnWaitMs:e.spawnWaitMs??6e4,ioRoot:t,ioTable:oe({maxHandles:e.maxHandles??16384}),instanceId:e.instanceId??0,fault:e.fault?.buffer??null,stdoutFd:e.stdoutFd,stderrFd:e.stderrFd,deterministic:n}}async function Le(e){if(e instanceof WebAssembly.Module)return{module:e,bytes:null};let t=typeof e=="string"?U.readFileSync(e):new Uint8Array(e);return{module:await WebAssembly.compile(t),bytes:t}}function ge(e,t){let r=je(e);if(!r||r.module!=="env"||r.name!=="memory"||!r.shared)throw new Error("the module must import a shared env.memory");let n=Math.max(r.initial,t.initialPages??0),s=Math.min(r.maximum??65536,t.maximumPages??65536),a=new WebAssembly.Memory({initial:n,maximum:s,shared:!0});return Ne.set(a,s*65536),a}var Ne=new WeakMap;function et(e,t){let r=Ne.get(e)??e.buffer.byteLength,n=t.heapBytes??1/0;return Math.min(r,2**32-16*2**20,e.buffer.byteLength+n)}var V=class{constructor(t,r,n,s){this.module=t,this.memory=r,this.cfg=n,this.control=new Int32Array(n.control),this.pool=new Int32Array(n.pool),this.cap=this.pool[0],this.workers=new Set,this.listeners=new Set,this.stopped=!1,this.poolErrors=[],this.memoryAtFirstThread=0;let a=Math.min(s.warmThreads??16,this.cap);for(let i=0;i<a;i+=1)this.startPoolWorker();this.timer=setInterval(()=>this.tick(),2)}startPoolWorker(){let t=Atomics.add(this.pool,te,1);if(t>=this.cap){Atomics.sub(this.pool,te,1);return}let r=new we(Ie,{execArgv:process.execArgv.filter(n=>!n.startsWith("--input-type")),workerData:{mode:"pool",slot:t,wasmModule:this.module,memory:this.memory,cfg:this.cfg}});r.on("error",n=>this.poolErrors.push(String(n?.stack??n))),r.once("exit",()=>this.workers.delete(r)),this.workers.add(r)}tick(){if(this.stopped)return;let t=Atomics.exchange(this.pool,Ae,0);for(let r=0;r<t;r+=1)this.startPoolWorker();!this.memoryAtFirstThread&&Atomics.load(this.pool,re)>0&&(this.memoryAtFirstThread=this.memory.buffer.byteLength);for(let r of this.listeners)r()}startGuest(t){let r=new we(Ie,{execArgv:process.execArgv.filter(n=>!n.startsWith("--input-type")),workerData:{mode:t,wasmModule:this.module,memory:this.memory,cfg:this.cfg}});return this.workers.add(r),r.once("exit",()=>this.workers.delete(r)),r}exited(){return Atomics.load(this.control,fe)!==0}faulted(){return Atomics.load(this.control,de)!==0}report(){let t=this.control,r=Math.min(Atomics.load(t,me),ee),n=new Set;for(let s=0;s<r;s+=1)n.add(Atomics.load(t,j+s));return{guestThreadsSpawned:Atomics.load(this.pool,re),maxConcurrentGuestThreads:Atomics.load(this.pool,pe)+1,runningGuestThreads:Atomics.load(this.pool,Ee),spawnsDeclined:Atomics.load(this.pool,he),workerThreads:Atomics.load(t,_e),distinctWorkerThreadIds:n.size,memoryBytes:this.memory.buffer.byteLength,memoryGrownWhileThreadsRan:this.memoryAtFirstThread?Math.max(0,this.memory.buffer.byteLength-this.memoryAtFirstThread):0}}async stop(){this.stopped=!0,clearInterval(this.timer),await Promise.all([...this.workers].map(t=>t.terminate().catch(()=>{}))),this.workers.clear()}};async function tt(e,t={}){let{module:r,bytes:n}=await Le(e),s=ge(n??t.bytes,t),a=typeof e=="string"?C.basename(e):"command.wasm",i=Te(t),f=Re({...t,args:[a,...t.args??[]]},i.root),d=performance.now(),c=new V(r,s,f,t),h=c.startGuest("command"),L=await new Promise(T=>{let l=!1,u=[],E=p=>{if(!l){l=!0;for(let S of u)clearTimeout(S);c.listeners.clear(),T(p)}},w={exitCode:0,killed:!1,timedOut:!1,fault:!1,error:null};h.on("message",p=>{p.t==="done"&&E({...w,exitCode:p.code,error:p.error,fault:p.error!==null})}),h.on("error",p=>E({...w,exitCode:134,error:String(p?.stack??p),fault:!0})),h.on("exit",p=>E({...w,exitCode:p||134,error:`guest worker exited (${p})`,fault:!0})),c.listeners.add(()=>{c.faulted()?E({...w,exitCode:134,error:`guest thread ${Atomics.load(c.control,J)} trapped`,fault:!0}):c.exited()&&u.push(setTimeout(()=>E({...w,exitCode:Atomics.load(c.control,ue)}),100))}),t.timeoutMs&&u.push(setTimeout(()=>E({...w,exitCode:124,timedOut:!0,error:`timed out after ${t.timeoutMs} ms`}),t.timeoutMs)),t.killAfterMs!==void 0&&u.push(setTimeout(()=>{t.beforeKill?.(),E({...w,exitCode:137,killed:!0})},t.killAfterMs))}),O=c.report();return await c.stop(),i.cleanup(),{...L,elapsedMs:performance.now()-d,threads:O,root:i.root,poolErrors:c.poolErrors}}async function Cn(e,t={}){let{module:r,bytes:n}=await Le(e),s=ge(n??t.bytes,t),a=Te(t),i=Re(t,a.root),f=new V(r,s,i,t),d=f.startGuest("reactor"),c=new Map,h=1,L=null,O=l=>{L=l;for(let u of c.values())u.reject(l);c.clear()};f.listeners.add(()=>{!L&&f.faulted()&&O(new Error(`guest thread ${Atomics.load(f.control,J)} trapped`))}),await new Promise((l,u)=>{let E=setTimeout(()=>u(new Error("FlatSQL guest startup timed out")),3e4),w=()=>{clearTimeout(E),l()},p=S=>{clearTimeout(E),O(S),u(S)};d.once("exit",S=>p(new Error(`FlatSQL guest exited (${S})`))),d.on("message",S=>{if(S.t==="ready")w();else if(S.t==="reply"){let q=c.get(S.id);if(c.delete(S.id),!q)return;S.error?q.reject(new Error(S.error)):q.resolve(S.value)}}),d.on("error",S=>{p(S)})}).catch(async l=>{throw await f.stop(),a.cleanup(),l}),t.growHeap!==!1&&await new Promise((l,u)=>{let E=h++;c.set(E,{resolve:l,reject:u}),d.postMessage({op:"growHeap",limitBytes:et(s,t),id:E})});let T=l=>{if(L)return Promise.reject(L);let u=h++;return new Promise((E,w)=>{c.set(u,{resolve:E,reject:w}),d.postMessage({...l,id:u})})};return{memory:s,root:a.root,call:(l,...u)=>T({op:"call",fn:l,args:u}),write:l=>T({op:"write",bytes:l instanceof Uint8Array?l:new Uint8Array(l)}),read:(l,u)=>T({op:"read",ptr:l,len:u}),threads:()=>f.report(),faulted:()=>!!L||f.faulted(),async close(){await f.stop(),a.cleanup()}}}var rt=process.argv[1]&&C.resolve(process.argv[1])===Oe(import.meta.url);if(rt){let[e,...t]=process.argv.slice(2);e||(process.stderr.write(`usage: node wasm/node-host.mjs <command.wasm> [args...]
2
+ `),process.exit(2));let r={};for(let[f,d]of Object.entries(process.env))(f.startsWith("FLATSQL_PS_")||f.startsWith("PS_"))&&(r[f]=d);let n=Number(process.env.FLATSQL_PS_TIMEOUT_MS??0)||void 0,s=C.resolve(C.dirname(Oe(import.meta.url)),".."),a=await tt(e,{args:t,env:r,timeoutMs:n,root:process.env.FLATSQL_PS_ROOT||void 0,keepRoot:process.env.FLATSQL_PS_KEEP_ROOT==="1",mounts:[{guest:s,host:s}]}),i=a.threads;process.env.FLATSQL_PS_REPORT&&U.writeFileSync(process.env.FLATSQL_PS_REPORT,`${JSON.stringify({...a,root:void 0})}
3
+ `),process.stderr.write(`node-host: exit ${a.exitCode}${a.error?` (${a.error})`:""}; guest threads spawned ${i.guestThreadsSpawned}, max concurrent ${i.maxConcurrentGuestThreads} on ${i.distinctWorkerThreadIds} distinct worker threads${i.spawnsDeclined?`, ${i.spawnsDeclined} spawns declined`:""}; memory ${(i.memoryBytes/2**20).toFixed(0)} MiB; ${(a.elapsedMs/1e3).toFixed(1)} s
4
+ `),i.memoryGrownWhileThreadsRan&&process.stderr.write(`node-host: WARNING memory grew ${(i.memoryGrownWhileThreadsRan/2**20).toFixed(0)} MiB while guest threads ran (V8 can trap a thread on memory another thread grew; grow the heap before threads start)
5
+ `),process.exit(a.exitCode)}export{Cn as createNodeInstance,je as importedMemoryLimits,tt as runCommand};
@@ -0,0 +1 @@
1
+ var Nn=Object.freeze({READ:1,WRITE:2,CREATE:4,EXCL:8,TRUNC:16,DELETE_ON_CLOSE:32,PROBE:64,UNLINK:128,CREATE_PARENTS:256,UNLINK_IF_UNUSED:512,OPEN_DEFERRED:1024}),Cn=Object.freeze({OK:0,GENERIC:-1,NOENT:-2,ACCESS:-3,IO:-4,NOSPACE:-5,BADHANDLE:-6,BUSY:-7});var Fn=Object.freeze(["flatsql_io_open","flatsql_io_read","flatsql_io_write","flatsql_io_truncate","flatsql_io_sync","flatsql_io_size","flatsql_io_close"]),Ye=4096;function vt(t,{during:n}={}){if(!t)return-1;let r=typeof t.code=="string"?t.code:null;if(r)switch(r){case"ENOENT":case"ENOTDIR":return-2;case"EACCES":case"EPERM":case"EROFS":return-3;case"ENOSPC":case"EDQUOT":return-5;case"EBADF":return-4;case"EEXIST":return-1;case"EBUSY":case"ETXTBSY":return-7;case"ENAMETOOLONG":case"EINVAL":return-1;default:return-4}switch(t.name){case"NotFoundError":return-2;case"NoModificationAllowedError":return-7;case"InvalidStateError":return n==="open"?-7:-6;case"QuotaExceededError":return-5;case"TypeMismatchError":case"SecurityError":case"NotAllowedError":return-3;case"InvalidModificationError":return-7;case"TypeError":case"RangeError":return-1;default:return-4}}var N=class extends Error{constructor(n,r){super(r??`flatsql_io status ${n}`),this.name="FlatsqlIoStatusError",this.status=n}};function V(t,n){return t&&typeof t.status=="number"&&t.status<0?t.status:vt(t,n)}function oe(t){if(typeof t!="string"||t.length===0||t.includes("\0"))return-1;let n=[];for(let r of t.split("/"))if(!(r===""||r===".")){if(r==="..")return-3;n.push(r)}return n.length===0?-1:n}var Ve=typeof TextDecoder=="function"?new TextDecoder("utf-8",{fatal:!0}):null;function Ge(t){if(!Ve||t.length===0||t.length>Ye)return-1;let n=t.buffer instanceof ArrayBuffer?t:new Uint8Array(t);try{return Ve.decode(n)}catch{return-1}}var Vt=1330201683,Yt=1,Gt=0,qt=1,Wt=2,$t=3,Kt=4,H=5,Ie=6,We=7,$e=8;var Xt=11,Ke=12,zt=13,Xe=64,qe=Xe*4;var ze=1,Ze=2;var se=0,Oe=1,Je=0,ae=1,ie=2,ce=3,je=32767,G=0;var Zt=2,Jt=3,et=4,tt=5,nt=6,rt=7,ot=8,st=9,at=10,jt=11,en=12,it=13,ct=8,tn=9,de=128;var _e=2,_t=3,nn=4;var rn=1;var ft=1,pe=1,fe=2,he=3,Re=4,Te=5,me=6,Le=7;var Mn=64*1024;function on(t,n){return Math.ceil(t/n)*n}function sn(t){if(typeof SharedArrayBuffer!="function"||!(t instanceof SharedArrayBuffer))throw new TypeError("The SAB I/O channel requires a SharedArrayBuffer (cross-origin isolation in browsers).")}function lt(t){sn(t);let n=new Int32Array(t,0,Xe);if(n[Gt]!==Vt||n[qt]!==Yt)throw new TypeError("Not a SAB I/O channel buffer (bad magic or version).");let r=n[Wt],s=n[$t],f=n[Kt],a=n[Xt],l=on(qe+f*4,64),L=new Int32Array(t,qe,f),S=[];for(let p=0;p<r;p+=1){let T=l+p*s;S.push({index:p,base:T,i32:new Int32Array(t,T,de/4),f64:new Float64Array(t,T,de/8),data:new Uint8Array(t,T+de,a)})}return{buffer:t,header:n,instances:L,slots:S,slotCount:r,slotBytes:s,dataBytes:a,maxInstances:f,channelId:n[zt]}}function ut(t){return`sdm-sab-io-doorbell-${t}`}function an(t){return`sdm-sab-io-done-${t}`}var Qn=typeof TextEncoder=="function"?new TextEncoder:null;var Y=null;function cn(t){return typeof BroadcastChannel!="function"?null:((!Y||Y.id!==t.channelId)&&(Y?.channel.close(),Y={id:t.channelId,channel:new BroadcastChannel(an(t.channelId))}),Y.channel)}function Et(t,n,r,s=0){n.f64[tn]=s,Atomics.store(n.i32,jt,r|0),Atomics.store(n.i32,Jt,Atomics.load(n.i32,Zt)),Atomics.store(n.i32,G,nn),Atomics.notify(n.i32,G),Atomics.load(n.i32,en)===rn&&cn(t)?.postMessage(n.index)}var _n=typeof TextEncoder=="function"?new TextEncoder:null;function St(t){let n=2166136261;for(let r=0;r<t.length;r+=1)n^=t[r],n=Math.imul(n,16777619);return n|0}var At=new WeakMap;function ye(t){let n=At.get(t);if(n)return n;let r=new Int32Array(t,0,16);if(r[0]!==1380795475||r[1]!==1)throw new TypeError("Not a SAB I/O mirror buffer.");let s=r[2],f=r[3],a=r[4],l=16*4,L=l+s*32,S=L+s*a;return n={entries:s,entryBytes:f,maxPathBytes:a,i32:new Int32Array(t,l,s*32/4),f64:new Float64Array(t,l,s*32/8),paths:new Uint8Array(t,L,s*a),data:new Uint8Array(t,S,s*f)},At.set(t,n),n}function dt(t){return ye(t).entryBytes}function It(t){return typeof t=="string"?_n.encode(t):t}function fn(t,n,r){let s=n*8;if(Atomics.load(t.i32,s+3)!==r.length)return!1;let f=n*t.maxPathBytes;for(let a=0;a<r.length;a+=1)if(t.paths[f+a]!==r[a])return!1;return!0}function Ot(t,n,r){let s=(r>>>0)%t.entries;for(let f=0;f<t.entries;f+=1){let a=s*8,l=Atomics.load(t.i32,a+0);if(l===0)return-1;if((l===2||l===3)&&Atomics.load(t.i32,a+2)===r&&fn(t,s,n))return s;s=(s+1)%t.entries}return-1}function ln(t,n,r){let s=(r>>>0)%t.entries;for(let f=0;f<t.entries;f+=1){let a=s*8;if(Atomics.compareExchange(t.i32,a+0,0,1)===0)return t.paths.set(n,s*t.maxPathBytes),Atomics.store(t.i32,a+3,n.length),Atomics.store(t.i32,a+2,r),Atomics.store(t.i32,a+4,0),t.f64[s*(32/8)+3]=0,Atomics.store(t.i32,a+0,3),s;s=(s+1)%t.entries}return-1}function W(t,n,r,s,{truncateTo:f}={}){let a=ye(t),l=It(n);if(l.length>a.maxPathBytes)return!1;let L=St(l),S=Ot(a,l,L);if(S<0&&(S=ln(a,l,L)),S<0)return!1;let p=S*(32/4),T=S*(32/8)+3,A=S*a.entryBytes,c=Atomics.load(a.i32,p+0)===2;Atomics.add(a.i32,p+1,1);let E=c?a.f64[T]:0,d=c?Atomics.load(a.i32,p+4):0;if(c||a.data.fill(0,A,A+a.entryBytes),s.length>0&&r<a.entryBytes){let m=Math.min(a.entryBytes,r+s.length);r>d&&a.data.fill(0,A+d,A+r),a.data.set(s.subarray(0,m-r),A+r)}return s.length>0&&(E=Math.max(E,r+s.length)),f!==void 0&&(f<d&&a.data.fill(0,A+f,A+d),E=f),d=Math.min(E,a.entryBytes),a.f64[T]=E,Atomics.store(a.i32,p+4,d),Atomics.store(a.i32,p+0,2),Atomics.add(a.i32,p+1,1),!0}function we(t,n){let r=ye(t),s=It(n);if(s.length>r.maxPathBytes)return;let f=Ot(r,s,St(s));if(f<0)return;let a=f*(32/4);Atomics.add(r.i32,a+1,1),Atomics.store(r.i32,a+0,3),Atomics.store(r.i32,a+4,0),r.f64[f*(32/8)+3]=0,Atomics.add(r.i32,a+1,1)}function pt(t=["/h.fsh"]){let n=Array.from(t,String);return r=>{let s=String(r);for(let f of n)if(s.endsWith(f)||s===f.replace(/^\//,""))return!0;return!1}}var Ce=256*1024,dn=50,In=8,Tt=250,mt=16777215,R=0,xe=1,Lt=2;function le(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function On(){if(typeof MessageChannel=="function"){let t=new MessageChannel,n=[];return t.port1.onmessage=()=>n.shift()?.(),t.port1.unref?.(),t.port2.unref?.(),()=>new Promise(r=>{n.push(r),t.port2.postMessage(0)})}return()=>new Promise(t=>setTimeout(t,0))}function yt(t={}){let n=lt(t.buffer),r=t.backend;if(!r||typeof r.openFile!="function")throw new TypeError("createFlatsqlIoServer requires a backend with openFile().");let s=Number.isInteger(t.chunkBytes)&&t.chunkBytes>0?t.chunkBytes:Ce,f=t.doorbell??"auto",a=f==="message"||f==="auto"&&typeof Atomics.waitAsync!="function"?Oe:se,l=t.mirror??null,L=Number.isFinite(t.spinMicros)?Math.max(0,t.spinMicros):dn,S=typeof t.onEvent=="function"?t.onEvent:null,p=On(),T=new Map,A=new Map,c=new Map,E=new Map,d=new Map,m=[],y=new Set,x=1,F=!1,g=null,D=null,U=null,J=null,j=!1,w={served:0,opens:0,deferredOpens:0,parked:0,chunks:0,busy:0,revoked:0,sharedViewsRejected:!1,maxReady:0};function v(e){if(S)try{S(e)}catch{}}function ee(){if(a===se)Atomics.add(n.header,H,1),Atomics.notify(n.header,H);else{let e=D;D=null,e?.()}}async function Ft(e){if(a===se){let o=Atomics.waitAsync(n.header,H,e,Tt);o.async&&await o.value;return}Atomics.load(n.header,H)===e&&await new Promise(o=>{let _=setTimeout(()=>{D===u&&(D=null),o()},Tt),u=()=>{clearTimeout(_),o()};D=u})}function Ae(e,o){let u=(d.get(e)??Promise.resolve()).then(o,o),i=u.then(()=>{},()=>{});return d.set(e,i),i.then(()=>{d.get(e)===i&&d.delete(e)}),u}function gt(){for(let e=0;e<mt;e+=1){let o=x;if(x=x>=mt?1:x+1,!c.has(o))return o}return-1}function te(e,o,_){let u=gt();if(u<0)return-1;let i=(_&2)!==0,O={id:u,entry:e,instanceId:o,canWrite:i,canRead:!i||(_&1)!==0};c.set(u,O),e.refs+=1,_&32&&(e.deleteOnClose=!0);let I=E.get(o);return I||(I=new Set,E.set(o,I)),I.add(u),u}function ne(e){if(!(e.refs>0||e.pins>0)){if(A.get(e.path)===e&&A.delete(e.path),e.file){try{e.file.close()}catch{}e.file=null}e.deleteOnClose&&e.openStatus===0&&Ae(e.path,async()=>{try{await r.remove(e.path,e.components)}catch{}l&&l.write!==!1&&we(l.buffer,e.path)})}}function De(e){c.delete(e.id)&&(E.get(e.instanceId)?.delete(e.id),e.entry.refs-=1,ne(e.entry))}function Dt(e){return e===je?ae:e<0||e>=n.maxInstances?-1:Atomics.load(n.instances,e)}function Se(e){let o=Dt(e);return o===ie||o===ce}function Me(e){let{slot:o,ptr:_,len:u}=e;if(u<0||_<0)return null;if(e.dataMode===ft)return _+u>o.data.length?null:o.data.subarray(_,_+u);let i=T.get(e.instanceId),O=i?.buffer??i;return!O||_+u>O.byteLength?null:new Uint8Array(O,_,u)}function Qe(e){return(!J||J.length<e)&&(J=new Uint8Array(Math.max(e,s))),J.subarray(0,e)}function Pe(e,o,_){if(!j)try{return e.read(o,{at:_})}catch(O){if(!(O instanceof TypeError)||!(o.buffer instanceof SharedArrayBuffer))throw O;j=!0,w.sharedViewsRejected=!0,v({type:"shared-views-rejected"})}let u=Qe(o.length),i=e.read(u,{at:_});return o.set(u.subarray(0,i),0),i}function Mt(e,o,_){if(!j)try{return e.write(o,{at:_})}catch(i){if(!(i instanceof TypeError)||!(o.buffer instanceof SharedArrayBuffer))throw i;j=!0,w.sharedViewsRejected=!0,v({type:"shared-views-rejected"})}let u=Qe(o.length);return u.set(o,0),e.write(u,{at:_})}function h(e,o,_=0){y.delete(e.slot.index),w.served+=1,Atomics.add(n.header,Ke,1),Et(n,e.slot,o,_)}function Qt(e){let o=e.i32;return{slot:e,op:o[et],instanceId:o[tt],handleId:o[nt],flags:o[rt],ptr:o[ot],len:o[st],dataMode:o[it],pathLen:o[at],offset:e.f64[ct],done:0,phase:0}}function He(){let e=0;for(let o of n.slots)y.has(o.index)||Atomics.load(o.i32,G)===_e&&Atomics.compareExchange(o.i32,G,_e,_t)===_e&&(y.add(o.index),m.push(Qt(o)),e+=1);return m.length>w.maxReady&&(w.maxReady=m.length),e}function Ue(){for(let e=0;e<n.maxInstances;e+=1){if(Atomics.load(n.instances,e)!==ie)continue;let o=E.get(e);if(o){for(let _ of Array.from(o)){let u=c.get(_);u&&De(u)}E.delete(e)}T.delete(e),w.revoked+=1,Atomics.store(n.instances,e,ce),Atomics.notify(n.instances,e),v({type:"revoked",instanceId:e})}}function re(e,o){return w.parked+=1,o.waiters.push(e),Lt}function ke(e,o,_){if(e.opening=null,e.openStatus=o,e.file=_??null,o===0&&l&&l.write!==!1&&l.match(e.path)&&e.file)try{let i=e.file.getSize(),O=new Uint8Array(Math.min(i,dt(l.buffer)));O.length>0&&Pe(e.file,O,0),W(l.buffer,e.path,0,O,{truncateTo:i})}catch{}let u=e.waiters;e.waiters=[];for(let i of u)i.op===pe&&i.phase===1&&i.entry===e&&(o<0?i.result=o:Se(i.instanceId)?i.result=-3:i.result=te(e,i.instanceId,i.flags),i.phase=2),m.push(i);o<0&&e.refs===0&&e.pins===0&&A.get(e.path)===e?A.delete(e.path):o===0&&e.refs===0&&e.pins===0&&ne(e),ee()}function be(e,o){w.opens+=1,e.opening=Ae(e.path,async()=>{try{let _=await r.openFile(e.path,e.components,o);ke(e,0,_)}catch(_){ke(e,V(_,{during:"open"}),null)}})}function Pt(e){if(e.phase===2)return h(e,e.result),R;if(Se(e.instanceId))return h(e,-3),R;if(e.path===void 0){let I=e.slot.data.slice(0,Math.max(0,e.pathLen)),Q=Ge(I);if(typeof Q!="string")return h(e,Q),R;let P=oe(Q);if(!Array.isArray(P))return h(e,P),R;e.path=P.join("/"),e.components=P}let{path:o,components:_,flags:u}=e,i=A.get(o);if(u&704)return i?.opening?re(e,i):u&64?i&&i.openStatus===0?(h(e,0),R):ve(e,async()=>await r.exists(o,_)?0:-2):i&&i.refs>0?(w.busy+=1,h(e,-7),R):(i&&i.pins>0&&(i.pins=0,ne(i)),ve(e,async()=>(await r.remove(o,_),l&&l.write!==!1&&we(l.buffer,o),0)));if(i){if(i.opening){if(u&1024){w.deferredOpens+=1;let I=te(i,e.instanceId,u);return h(e,I),R}return re(e,i)}if(i.openStatus===0){if(u&8)return h(e,-1),R;if(u&16&&u&2)try{i.file.truncate(0),l&&l.write!==!1&&l.match(o)&&W(l.buffer,o,0,new Uint8Array(0),{truncateTo:0})}catch(Q){return h(e,V(Q)),R}let I=te(i,e.instanceId,u);return h(e,I),R}A.get(o)===i&&A.delete(o)}let O={path:o,components:_,file:null,opening:null,openStatus:0,refs:0,pins:0,deleteOnClose:!1,waiters:[]};if(A.set(o,O),be(O,u),u&1024){w.deferredOpens+=1;let I=te(O,e.instanceId,u);return h(e,I),R}return e.phase=1,e.entry=O,re(e,O)}function ve(e,o){return e.phase=2,Ae(e.path,async()=>{try{e.result=await o()}catch(_){e.result=V(_)}m.push(e),ee()}),w.parked+=1,Lt}function Ht(e){if(Se(e.instanceId))return h(e,-3),R;let o=c.get(e.handleId);if(!o)return h(e,-6),R;let _=o.entry;if(_.opening)return re(e,_);if(e.op===Le)return De(o),h(e,0),R;if(_.openStatus<0||!_.file)return h(e,_.openStatus<0?_.openStatus:-6),R;let u=_.file;try{switch(e.op){case fe:{if(!o.canRead)return h(e,-4),R;let i=Me(e);if(!i)return h(e,-1),R;let O=Math.min(s,e.len-e.done),I=Pe(u,i.subarray(e.done,e.done+O),e.offset+e.done);return w.chunks+=1,e.done+=I,I<O||e.done>=e.len?(h(e,e.done),R):xe}case he:{if(!o.canWrite)return h(e,-4),R;let i=Me(e);if(!i)return h(e,-1),R;let O=Math.min(s,e.len-e.done),I=i.subarray(e.done,e.done+O),Q=e.offset+e.done,P=Mt(u,I,Q);return w.chunks+=1,l&&l.write!==!1&&l.match(_.path)&&W(l.buffer,_.path,Q,I.subarray(0,P)),e.done+=P,P<O||e.done>=e.len?(h(e,e.done),R):xe}case Re:return o.canWrite?(u.truncate(e.offset),l&&l.write!==!1&&l.match(_.path)&&W(l.buffer,_.path,0,new Uint8Array(0),{truncateTo:e.offset}),h(e,0),R):(h(e,-4),R);case Te:return u.flush(),h(e,0),R;case me:return h(e,0,u.getSize()),R;default:return h(e,-1),R}}catch(i){let O=V(i);return h(e,e.done>0&&e.op===fe?e.done:O),R}}function Ut(e){try{return e.op===pe?Pt(e):e.op===fe||e.op===he||e.op===Re||e.op===Te||e.op===me||e.op===Le?Ht(e):(h(e,-1),R)}catch(o){return v({type:"step-error",error:o}),h(e,-4),R}}function kt(){let e=le();for(;m.length>0;){let o=m.shift();if(Ut(o)===xe&&m.push(o),Ue(),He(),le()-e>In)return!1}return!0}async function bt(){for(Atomics.store(n.header,We,a),Atomics.add(n.header,$e,1),Atomics.store(n.header,Ie,ze);F;){let e=Atomics.load(n.header,H);Ue(),He();let o=kt();if(!F)break;if(!o||m.length>0){await p();continue}if(L>0){let _=le()+L/1e3;for(;le()<_&&Atomics.load(n.header,H)===e;);if(Atomics.load(n.header,H)!==e)continue}await Ft(e)}}return{doorbellMode:a,stats:w,start(){return F||(F=!0,a===Oe&&typeof BroadcastChannel=="function"&&(U=new BroadcastChannel(ut(n.channelId)),U.onmessage=()=>{let e=D;D=null,e?.()}),g=bt().catch(e=>{throw v({type:"loop-error",error:e}),e})),g},async stop(){F=!1,ee();try{await g}catch{}U?.close(),U=null;for(let e of A.values())try{e.file?.close()}catch{}A.clear(),c.clear(),E.clear(),Atomics.store(n.header,Ie,Ze)},attachMemory(e,o){if(!Number.isInteger(e)||e<0||e>=n.maxInstances)return!1;let _=Atomics.load(n.instances,e);return _===ie||_===ce?!1:(T.set(e,o),Atomics.store(n.instances,e,ae),!0)},detachMemory(e){T.delete(e),Atomics.load(n.instances,e)===ae&&Atomics.store(n.instances,e,Je)},async preopen(e,o=7){let _=await Promise.all(e.map(async u=>{let i=oe(String(u));if(!Array.isArray(i))return i;let O=i.join("/"),I=A.get(O);return I||(I={path:O,components:i,file:null,opening:null,openStatus:0,refs:0,pins:0,deleteOnClose:!1,waiters:[]},A.set(O,I),be(I,o&-1025)),I.pins+=1,I.opening&&await I.opening,I.openStatus<0?(I.pins=Math.max(0,I.pins-1),I.openStatus):0}));return ee(),_},releasePreopen(e){for(let o of e){let _=oe(String(o));if(!Array.isArray(_))continue;let u=A.get(_.join("/"));u&&u.pins>0&&(u.pins-=1,ne(u))}},inventory(){return{files:Array.from(A.values()).map(e=>({path:e.path,refs:e.refs,pins:e.pins,opening:!!e.opening,openStatus:e.openStatus})),handles:c.size}}}}var vn=263;var Fe=class{constructor(){this.bytes=new Uint8Array(0),this.length=0}ensureCapacity(n,r){if(n<=this.bytes.length)return;let s=Math.max(64,this.bytes.length);for(;s<n;)s*=2;r.reserve(s-this.bytes.length);let f=new Uint8Array(s);f.set(this.bytes.subarray(0,this.length)),this.bytes=f}};function wt(t={}){let n=Number.isFinite(t.maxBytes)?t.maxBytes:1/0,r=new Map,s=new Set([""]),f=0,a={reserve(S){if(f+S>n)throw new N(-5,"memory store budget exhausted");f+=S},release(S){f=Math.max(0,f-S)}};function l(S){return S.slice(0,-1).join("/")}function L(S){let p=!1,T=()=>{if(p){let c=new Error("handle closed");throw c.name="InvalidStateError",c}let A=r.get(S);if(!A){let c=new Error("file removed");throw c.name="NotFoundError",c}return A};return{read(A,{at:c=0}={}){let E=T();if(c>=E.length)return 0;let d=Math.min(A.length,E.length-c);return A.set(E.bytes.subarray(c,c+d),0),d},write(A,{at:c=0}={}){let E=T(),d=c+A.length;return E.ensureCapacity(d,a),c>E.length&&E.bytes.fill(0,E.length,c),E.bytes.set(A,c),d>E.length&&(E.length=d),A.length},truncate(A){let c=T();A>c.length&&(c.ensureCapacity(A,a),c.bytes.fill(0,c.length,A)),c.length=A},flush(){T()},getSize(){return T().length},close(){p=!0}}}return{kind:"memory",openFile(S,p,T){let A=l(p);if(!s.has(A)){if(!(T&256)||!(T&4))throw new N(-2,`no directory ${A}`);for(let E=1;E<p.length;E+=1)s.add(p.slice(0,E).join("/"))}if(s.has(S))throw new N(-3,`${S} is a directory`);let c=r.get(S);if(c&&T&8)throw new N(-1,`${S} exists`);if(c)T&16&&(c.length=0);else{if(!(T&4))throw new N(-2,`no file ${S}`);c=new Fe,r.set(S,c)}return L(S)},exists(S){return r.has(S)||s.has(S)},remove(S){let p=r.get(S);if(!p)throw new N(-2,`no file ${S}`);a.release(p.bytes.length),r.delete(S)},reset(){r.clear(),s.clear(),s.add(""),f=0},usage(){return{files:r.size,allocatedBytes:f}},list(){return Array.from(r.keys()).sort()}}}var Ee="readwrite-unsafe";function hn(t){let n=new Error(t);return n.name="NotFoundError",n}function Bt(t){return new Promise(n=>setTimeout(n,t))}async function Rn(t,n=".sdm-mode-probe"){let r=null,s=null;try{let f=await t.getFileHandle(n,{create:!0});return r=await f.createSyncAccessHandle({mode:Ee}),r.mode!==Ee?{supported:!1,detail:"mode option ignored"}:(s=await f.createSyncAccessHandle({mode:Ee}),{supported:!0,detail:"two readwrite-unsafe handles"})}catch(f){return{supported:!1,detail:`${f?.name??"Error"}: ${f?.message??f}`}}finally{try{s?.close()}catch{}try{r?.close()}catch{}try{await t.removeEntry(n)}catch{}}}async function Tn(t,n=".sdm-view-probe"){let r=null;try{r=await(await t.getFileHandle(n,{create:!0})).createSyncAccessHandle();let f=new Uint8Array(new SharedArrayBuffer(16));f.fill(90);let a=r.write(f,{at:0}),l=new Uint8Array(new SharedArrayBuffer(16)),L=r.read(l,{at:0});return a===16&&L===16&&l[15]===90}catch{return!1}finally{try{r?.close()}catch{}try{await t.removeEntry(n)}catch{}}}function xt(t={}){let n=t.root??null,r=!1,s=null,f=t.handleMode??"auto",a=typeof t.openDelayMs=="function"?t.openDelayMs:null,l=new Map,L={attempts:Math.max(0,t.busyRetry?.attempts??0),baseMs:Math.max(1,t.busyRetry?.baseMs??10)};async function S(c){for(let E=0;;E+=1)try{return r?await c.createSyncAccessHandle({mode:Ee}):await c.createSyncAccessHandle()}catch(d){if(!(d?.name==="NoModificationAllowedError"||d?.name==="InvalidStateError")||E>=L.attempts)throw d;await Bt(L.baseMs*2**Math.min(E,8))}}async function p(){if(!n){if(typeof navigator>"u"||!navigator.storage?.getDirectory)throw new N(-1,"OPFS is unavailable here");if(n=await navigator.storage.getDirectory(),t.rootDirectory)for(let E of String(t.rootDirectory).split("/").filter(Boolean))n=await n.getDirectoryHandle(E,{create:!0})}let c=await Rn(n);if(s=await Tn(n),f==="shared"&&!c.supported)throw new N(-1,`shared OPFS handle modes are unsupported here (${c.detail})`);return r=f!=="exclusive"&&c.supported,l.set("",n),{sharedModes:r,sharedModesDetail:c.detail,sharedViews:s}}async function T(c,E){let d=c.join("/"),m=l.get(d);if(m)return m;let y=n,x="";for(let F of c){x=x?`${x}/${F}`:F;let g=l.get(x);if(g){y=g;continue}y=await y.getDirectoryHandle(F,{create:E}),l.set(x,y)}return y}async function A(c,E){try{return await c.getFileHandle(E)}catch(d){if(d?.name==="NotFoundError")return null;throw d}}return{kind:"opfs",init:p,get sharedModes(){return r},get sharedViews(){return s},async openFile(c,E,d){if(n||await p(),a){let U=a(c);U>0&&await Bt(U)}let m=(d&4)!==0,y=m&&(d&256)!==0,x=await T(E.slice(0,-1),y),F=E[E.length-1],g=null;if(d&8&&await A(x,F))throw new N(-1,`${c} exists`);g=await x.getFileHandle(F,{create:m});let D=await S(g);return d&16&&D.truncate(0),D},async exists(c,E){n||await p();let d;try{d=await T(E.slice(0,-1),!1)}catch(y){if(y?.name==="NotFoundError"||y?.name==="TypeMismatchError")return!1;throw y}let m=E[E.length-1];if(await A(d,m))return!0;try{return await d.getDirectoryHandle(m),!0}catch{return!1}},async remove(c,E){n||await p();let d;try{d=await T(E.slice(0,-1),!1)}catch(m){throw m?.name==="TypeMismatchError"?hn(c):m}await d.removeEntry(E[E.length-1])},async clear(){n||await p();for await(let c of n.keys())await n.removeEntry(c,{recursive:!0});l.clear(),l.set("",n)}}}var Nt="node:";var mn=typeof process<"u"&&!!process.release&&process.release.name==="node",B=null,M=null,Z=null;function Ln({name:t,ifAvailable:n=!1}){return typeof navigator>"u"||!navigator.locks?Promise.reject(new Error("Web Locks are unavailable in this context")):new Promise((r,s)=>{navigator.locks.request(t,{mode:"exclusive",ifAvailable:n},f=>{if(!f){r(!1);return}return r(!0),new Promise(a=>{Z=a})}).catch(s)})}function ge(t){return`${t?.name??"Error"}: ${t?.message??String(t)}`}function yn(t){if(!t||!t.pattern||!(t.ms>0))return;let n=new RegExp(t.pattern);return r=>n.test(r)?t.ms:0}async function wn(t,n){let r=t.role==="reader"?"reader":"writer";if(t.lock?.name&&!await Ln(t.lock)){let l=new Error(`the store lock ${t.lock.name} is held by another context`);throw l.name="LockUnavailableError",l}t.backend==="memory"?M=wt({maxBytes:t.memoryMaxBytes}):M=xt({rootDirectory:t.rootDirectory,handleMode:t.handleMode??"auto",openDelayMs:yn(t.openDelay),busyRetry:t.busyRetry??void 0});let s={backend:M.kind,role:r,lock:t.lock?.name??null};M.init&&Object.assign(s,await M.init());let f=t.mirror?.buffer?{buffer:t.mirror.buffer,match:pt(t.mirror.suffixes??["/h.fsh"]),write:t.mirror.write??r==="writer"}:null;return B=yt({buffer:t.buffer,backend:M,chunkBytes:t.chunkBytes??Ce,doorbell:t.doorbell??"auto",mirror:f,onEvent(a){(a.type==="loop-error"||a.type==="step-error")&&n({t:"event",event:{type:a.type,error:ge(a.error)}})}}),s.doorbellMode=B.doorbellMode===1?"message":"atomics",B.start().catch(a=>{setTimeout(()=>{throw a},0)}),s}async function Ct(t,n){switch(t?.t){case"init":try{let r=await wn(t,n);n({t:"ready",ok:!0,info:r})}catch(r){Z?.(),Z=null,n({t:"ready",ok:!1,error:ge(r),lockUnavailable:r?.name==="LockUnavailableError"})}return;case"attach":n({t:"attached",instanceId:t.instanceId,ok:!!B?.attachMemory(t.instanceId,t.memory)});return;case"detach":B?.detachMemory(t.instanceId);return;case"preopen":{let r=B?await B.preopen(t.paths??[],t.flags):[];n({t:"preopened",id:t.id,statuses:r});return}case"release-preopen":B?.releasePreopen(t.paths??[]);return;case"stats":n({t:"stats",id:t.id,stats:B?{...B.stats}:null,inventory:B?B.inventory():null,usage:M?.usage?M.usage():null});return;case"reset":M?.reset?.(),n({t:"reset",id:t.id});return;case"clear":try{await M?.clear?.(),n({t:"cleared",id:t.id,ok:!0})}catch(r){n({t:"cleared",id:t.id,ok:!1,error:ge(r)})}return;case"stop":await B?.stop(),B=null,Z?.(),Z=null,n({t:"stopped",id:t.id});return;default:}}function Bn(){let t=n=>self.postMessage(n);self.onmessage=n=>{Ct(n.data,t)}}async function xn(){let t=Nt+"worker_threads",{parentPort:n}=await import(t);if(!n)return;let r=s=>n.postMessage(s);n.on("message",s=>{Ct(s,r)})}mn?xn():typeof self<"u"&&typeof self.postMessage=="function"&&typeof window>"u"&&Bn();
@@ -0,0 +1 @@
1
+ var ct=new TextDecoder,it=new TextEncoder,J="$bin";function at(e){return e instanceof Uint8Array||e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function ut(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function z(e,t){if(e==null)return e??null;if(at(e)){let r=t.length;return t.push(ut(e)),{[J]:r}}return e instanceof Date?e.toISOString():typeof e=="bigint"?e.toString():Array.isArray(e)?e.map(r=>z(r,t)):typeof e=="object"?Object.fromEntries(Object.entries(e).filter(([,r])=>r!==void 0).map(([r,n])=>[r,z(n,t)])):e}function P(e,t){if(e==null)return e;if(Array.isArray(e))return e.map(r=>P(r,t));if(typeof e=="object"){let r=Object.keys(e);if(r.length===1&&r[0]===J){let n=e[J];if(!Number.isInteger(n)||n<0||n>=t.length)throw new RangeError(`Hostcall envelope references missing binary segment ${n}.`);return t[n]}return Object.fromEntries(r.map(n=>[n,P(e[n],t)]))}return e}function ee(e,t=[]){let r=it.encode(JSON.stringify(e??null)),n=4+r.length+4;for(let E of t)n+=4+E.length;let o=new Uint8Array(n),c=new DataView(o.buffer),a=0;c.setUint32(a,r.length,!0),a+=4,o.set(r,a),a+=r.length,c.setUint32(a,t.length,!0),a+=4;for(let E of t)c.setUint32(a,E.length,!0),a+=4,o.set(E,a),a+=E.length;return o}function W(e){if(!(e instanceof Uint8Array))throw new TypeError("Hostcall envelope must be a Uint8Array.");if(e.length<8)throw new RangeError("Hostcall envelope is truncated.");let t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=0,n=t.getUint32(r,!0);if(r+=4,r+n+4>e.length)throw new RangeError("Hostcall envelope meta exceeds envelope bounds.");let o=JSON.parse(ct.decode(e.subarray(r,r+n)));r+=n;let c=t.getUint32(r,!0);r+=4;let a=[];for(let E=0;E<c;E+=1){if(r+4>e.length)throw new RangeError("Hostcall envelope segment table is truncated.");let d=t.getUint32(r,!0);if(r+=4,r+d>e.length)throw new RangeError("Hostcall envelope segment exceeds envelope bounds.");a.push(e.subarray(r,r+d)),r+=d}return{meta:o,segments:a}}function fe(e){let{meta:t,segments:r}=W(e);return P(t,r)}var lt=new TextDecoder,re="space_data_module_host",v=0,te=1,Br=Object.freeze(["host.runtimeTarget","host.listCapabilities","host.listSupportedCapabilities","host.listOperations","host.hasCapability","clock.now","clock.monotonicNow","clock.nowIso","random.bytes","schedule.parse","schedule.matches","schedule.next","filesystem.resolvePath"]);function ft(e,t){let r=String(e??"").trim();if(!r)throw new TypeError(`${t} is required.`);return r}function Ae(e){if(typeof e!="function")throw new TypeError("getMemory must be a function returning WebAssembly.Memory.");let t=e();if(!t||typeof t!="object"||!("buffer"in t))throw new TypeError("getMemory must return a WebAssembly.Memory-like object.");let r=t.buffer;if(!(r instanceof ArrayBuffer||r instanceof SharedArrayBuffer))throw new TypeError("Hostcall memory buffer must be an ArrayBuffer or SharedArrayBuffer.");return r}function _e(e,t,r,n){if(!Number.isInteger(t)||t<0)throw new RangeError(`${n} pointer must be a non-negative integer.`);if(!Number.isInteger(r)||r<0)throw new RangeError(`${n} length must be a non-negative integer.`);let o=Ae(e);if(t+r>o.byteLength)throw new RangeError(`${n} range exceeds guest memory bounds.`);return new Uint8Array(o,t,r)}function _t(e,t,r,n){if(!Number.isInteger(t)||t<0)throw new RangeError("Response pointer must be a non-negative integer.");if(!Number.isInteger(n)||n<0)throw new RangeError("Response max length must be a non-negative integer.");let o=r instanceof Uint8Array?r:new Uint8Array(r),c=Ae(e),a=Math.min(o.length,n);if(t+a>c.byteLength)throw new RangeError("Response range exceeds guest memory bounds.");return new Uint8Array(c,t,a).set(o.subarray(0,a)),a}function Et(e){if(e.length===0)return null;let{meta:t,segments:r}=W(e);return P(t,r)}function Ee(e,t=null){return{name:e?.name??"Error",message:e?.message??String(e),code:e?.code??null,operation:e?.operation??t,capability:e?.capability??null}}function At(e){return e!==null&&typeof e=="object"&&typeof e.then=="function"}function de(e={}){let t=e.dispatch;if(typeof t!="function")throw new TypeError("createHostcallBridge requires a dispatch function.");let r=e.getMemory,n=ft(e.moduleName??re,"Hostcall import module name"),o=Number.isInteger(e.maxRequestBytes)?e.maxRequestBytes:16*1024*1024,c=Number.isInteger(e.maxResponseBytes)?e.maxResponseBytes:64*1024*1024,a=v,E={ok:!0,result:null},d=ee(E,[]);function p(s,i){let u=[],m=z(i,u),S=ee(m,u);if(S.length>c)throw new Error(`Hostcall response exceeds ${c} byte limit.`);a=s,E=i,d=S}function A(s,i,u,m){try{if(m>o)throw new Error(`Hostcall request exceeds ${o} byte limit.`);let S=lt.decode(_e(r,s,i,"Operation")),w=Et(_e(r,u,m,"Payload")),L=t(S,w);if(At(L))throw new Error(`Operation "${S}" returned a Promise. The synchronous hostcall ABI only supports synchronous operations.`);return p(v,{ok:!0,result:L===void 0?null:L}),v}catch(S){try{p(te,{ok:!1,error:Ee(S)})}catch(w){p(te,{ok:!1,error:Ee(w)})}return te}}function T(){return d.length}function f(s,i){return _t(r,s,d,i)}function _(){return p(v,{ok:!0,result:null}),v}function h(){return a}return{moduleName:n,imports:{[n]:{call:A,response_len:T,read_response:f,clear_response:_,last_status_code:h}},getLastEnvelope(){return structuredClone(E)},getLastResponseBytes(){return new Uint8Array(d)},getLastResponseEnvelope(){let{meta:s,segments:i}=W(d);return P(s,i)}}}var Cr=Object.freeze({READ:1,WRITE:2,CREATE:4,EXCL:8,TRUNC:16,DELETE_ON_CLOSE:32,PROBE:64,UNLINK:128,CREATE_PARENTS:256,UNLINK_IF_UNUSED:512,OPEN_DEFERRED:1024}),Nr=Object.freeze({OK:0,GENERIC:-1,NOENT:-2,ACCESS:-3,IO:-4,NOSPACE:-5,BADHANDLE:-6,BUSY:-7});var Dr=Object.freeze(["flatsql_io_open","flatsql_io_read","flatsql_io_write","flatsql_io_truncate","flatsql_io_sync","flatsql_io_size","flatsql_io_close"]),j=4096;var Fr=typeof TextDecoder=="function"?new TextDecoder("utf-8",{fatal:!0}):null;function Se(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e[r],t=Math.imul(t,16777619);return t>>>0}var dt=1330201683,St=1,pt=0,yt=1,mt=2,ht=3,Rt=4,ye=5;var Ot=7;var It=9,Z=10,Tt=11;var gt=13,ge=64,me=ge*4;var wt=1;var xt=1,Lt=2,Bt=3,k=32767,V=0,we=1,he=2,bt=3,Ct=4,Nt=5,Dt=6,Ft=7,Mt=8,Ht=9,Re=10,xe=11,Ut=12,Pt=13,Qt=8,Le=9,ne=128,oe=0,vt=1,qt=2;var kt=4,Vt=0;var Yt=0,Gt=1,$t=1,q=2,X=3,Kt=4,zt=5,Wt=6,jt=7;var Ur=64*1024;var Oe=250,Xt=20;function Ie(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function Zt(e,t){return Math.ceil(e/t)*t}function Be(e){if(typeof SharedArrayBuffer!="function"||!(e instanceof SharedArrayBuffer))throw new TypeError("The SAB I/O channel requires a SharedArrayBuffer (cross-origin isolation in browsers).")}function Jt(e){Be(e);let t=new Int32Array(e,0,ge);if(t[pt]!==dt||t[yt]!==St)throw new TypeError("Not a SAB I/O channel buffer (bad magic or version).");let r=t[mt],n=t[ht],o=t[Rt],c=t[Tt],a=Zt(me+o*4,64),E=new Int32Array(e,me,o),d=[];for(let p=0;p<r;p+=1){let A=a+p*n;d.push({index:p,base:A,i32:new Int32Array(e,A,ne/4),f64:new Float64Array(e,A,ne/8),data:new Uint8Array(e,A+ne,c)})}return{buffer:e,header:t,instances:E,slots:d,slotCount:r,slotBytes:n,dataBytes:c,maxInstances:o,channelId:t[gt]}}function er(e){return`sdm-sab-io-doorbell-${e}`}function tr(e,t){Atomics.add(e.header,ye,1),Atomics.notify(e.header,ye),Atomics.load(e.header,Ot)===wt&&t()?.postMessage(0)}function rr(e){let t=null;return{get(){return!t&&typeof BroadcastChannel=="function"&&(t=new BroadcastChannel(e)),t},close(){t?.close(),t=null}}}var nr=typeof TextEncoder=="function"?new TextEncoder:null;function or(){return(Math.random()*2147483646|0)+1}function sr(e,t){let r=(Atomics.add(e.header,It,1)>>>0)%e.slotCount;for(let n=0;n<e.slotCount;n+=1){let o=e.slots[(r+n)%e.slotCount];if(Atomics.compareExchange(o.i32,V,oe,vt)===oe)return Atomics.store(o.i32,we,t),o}return null}function Te(e,t){Atomics.store(t.i32,we,0),Atomics.store(t.i32,V,oe),Atomics.add(e.header,Z,1),Atomics.notify(e.header,Z)}function cr(e,t,r){let n=e.i32;n[Ct]=t,n[Nt]=r.instanceId??k,n[Dt]=r.handle??-1,n[Ft]=r.flags??0,n[Mt]=r.ptr??0,n[Ht]=r.len??0,n[Pt]=r.dataInSlot?Gt:Yt,n[xe]=0,e.f64[Qt]=r.offset??0,e.f64[Le]=0,r.path?(e.data.set(r.path,0),n[Re]=r.path.length):n[Re]=0}function ir(e){return Atomics.load(e.i32,xe)}function be(e={}){Be(e.buffer);let t=Jt(e.buffer),r=Number.isInteger(e.instanceId)?e.instanceId:k;if(r!==k&&(r<0||r>=t.maxInstances))throw new RangeError(`instanceId ${r} is outside 0..${t.maxInstances-1}.`);let n=typeof e.getMemory=="function"?e.getMemory:()=>null,o=Number.isFinite(e.spinMicros)?Math.max(0,e.spinMicros):Xt,c=or(),a=rr(er(t.channelId)),E=0;function d(){for(;;){let s=Atomics.load(t.header,Z),i=sr(t,c);if(i)return i;Atomics.wait(t.header,Z,s,Oe)}}function p(s,i,u){let m=Atomics.load(s.i32,he)+1|0||1;cr(s,i,u),Atomics.store(s.i32,Ut,Vt),Atomics.store(s.i32,he,m),Atomics.store(s.i32,V,qt),tr(t,a.get);let S=o>0?Ie()+o/1e3:0;for(;;){let w=Atomics.load(s.i32,V);if(w===kt&&Atomics.load(s.i32,bt)===m)break;S>0&&Ie()<S||Atomics.wait(s.i32,V,w,Oe)}return E+=1,{status:ir(s),result:s.f64[Le]}}function A(s,i){let u=d();try{return p(u,s,i)}finally{Te(t,u)}}function T(){return r!==k&&Atomics.load(t.instances,r)===xt}function f(){if(r===k)return!1;let s=Atomics.load(t.instances,r);return s===Lt||s===Bt}function _(s,i,u,m){let S=0;for(;S<u.length;){let w=Math.min(t.dataBytes,u.length-S),L=d(),b;try{s===X&&L.data.set(u.subarray(S,S+w),0),b=p(L,s,{instanceId:r,dataInSlot:!0,handle:i,ptr:0,len:w,offset:m+S}).status,s===q&&b>0&&u.set(L.data.subarray(0,b),S)}finally{Te(t,L)}if(b<0)return S>0&&s===q?S:b;if(S+=b,b<w)break}return S}function h(s,i){let u=n(),m=u?.buffer??u;return!m||s<0||i<0||s+i>m.byteLength?null:new Uint8Array(m,s,i)}return{instanceId:r,get requests(){return E},open(s,i){let u=typeof s=="string"?nr.encode(s):s;return!(u instanceof Uint8Array)||u.length===0?-1:u.length>Math.min(t.dataBytes,j)?-1:A($t,{instanceId:r,flags:i|0,path:u}).status},read(s,i,u,m){if(u===0)return 0;if(T())return A(q,{instanceId:r,handle:s,ptr:i,len:u,offset:m}).status;let S=h(i,u);return S?_(q,s,S,m):f()?-3:-1},write(s,i,u,m){if(u===0)return 0;if(T())return A(X,{instanceId:r,handle:s,ptr:i,len:u,offset:m}).status;let S=h(i,u);return S?_(X,s,S,m):f()?-3:-1},readInto(s,i,u){return i.length===0?0:_(q,s,i,u)},writeFrom(s,i,u){return i.length===0?0:_(X,s,i,u)},truncate(s,i){return A(Kt,{instanceId:r,handle:s,offset:i}).status},sync(s){return A(zt,{instanceId:r,handle:s}).status},size(s){let{status:i,result:u}=A(Wt,{instanceId:r,handle:s});return i<0?i:u},close(s){return A(jt,{instanceId:r,handle:s}).status},release(){a.close()}}}var ar=typeof TextEncoder=="function"?new TextEncoder:null;function ur(e){let t=2166136261;for(let r=0;r<e.length;r+=1)t^=e[r],t=Math.imul(t,16777619);return t|0}var Ce=new WeakMap;function Ne(e){let t=Ce.get(e);if(t)return t;let r=new Int32Array(e,0,16);if(r[0]!==1380795475||r[1]!==1)throw new TypeError("Not a SAB I/O mirror buffer.");let n=r[2],o=r[3],c=r[4],a=16*4,E=a+n*32,d=E+n*c;return t={entries:n,entryBytes:o,maxPathBytes:c,i32:new Int32Array(e,a,n*32/4),f64:new Float64Array(e,a,n*32/8),paths:new Uint8Array(e,E,n*c),data:new Uint8Array(e,d,n*o)},Ce.set(e,t),t}function lr(e){return typeof e=="string"?ar.encode(e):e}function fr(e,t,r){let n=t*8;if(Atomics.load(e.i32,n+3)!==r.length)return!1;let o=t*e.maxPathBytes;for(let c=0;c<r.length;c+=1)if(e.paths[o+c]!==r[c])return!1;return!0}function _r(e,t,r){let n=(r>>>0)%e.entries;for(let o=0;o<e.entries;o+=1){let c=n*8,a=Atomics.load(e.i32,c+0);if(a===0)return-1;if((a===2||a===3)&&Atomics.load(e.i32,c+2)===r&&fr(e,n,t))return n;n=(n+1)%e.entries}return-1}function De(e,t){let r=Ne(e),n=lr(t);if(n.length>r.maxPathBytes)return-1;let o=_r(r,n,ur(n));return o<0?-1:Atomics.load(r.i32,o*(32/4)+0)===2?o:-1}function Fe(e,t,r,n){let o=Ne(e),c=t*(32/4),a=t*(32/8)+3,E=t*o.entryBytes;for(let d=0;d<64;d+=1){let p=Atomics.load(o.i32,c+1);if(p&1)continue;if(Atomics.load(o.i32,c+0)!==2)return-1;let A=o.f64[a],T=Atomics.load(o.i32,c+4),f;if(n>=A)f=0;else{let _=Math.min(r.length,A-n);n+_>T?f=-1:(r.set(o.data.subarray(E+n,E+n+_),0),f=_)}if(Atomics.load(o.i32,c+1)===p)return f}return-1}function Me(e=["/h.fsh"]){let t=Array.from(e,String);return r=>{let n=String(r);for(let o of t)if(n.endsWith(o)||n===o.replace(/^\//,""))return!0;return!1}}var Er="flatsql-io",N=Object.freeze({open:1,read:2,write:3,truncate:4,sync:5,size:6,close:7,mirrorRead:8}),He=24,Ue=16777215;function se(){return typeof performance<"u"&&performance.now?performance.now()*1e3:Date.now()*1e3}function Ar(e){if(!e?.buffer)return null;let t=new Int32Array(e.buffer,0,4),r=t[1],n=new Float64Array(e.buffer,16,r),o=new Uint8Array(e.buffer,16+r*8,r);return(c,a)=>{let E=Atomics.add(t,0,1);E<r&&(n[E]=se()-a,o[E]=c)}}function dr(e,t,r){if(!e||r<=0||r>j||t<0)return null;let n=e.buffer??e;return t+r>n.byteLength?null:new Uint8Array(n,t,r).slice()}function Sr(e={}){let t=e.getMemory;if(typeof t!="function")throw new TypeError("createFlatsqlIoImports requires getMemory().");let r=Array.isArray(e.provider)?e.provider:[e.provider];if(r.length===0||r.some(f=>!f||typeof f.open!="function"))throw new TypeError("createFlatsqlIoImports requires at least one provider.");if(r.length>127)throw new RangeError("At most 127 providers can be routed.");let n=r.length>1,o=Ar(e.trace),c=e.mirror?.buffer??null,a=c?Me(e.mirror.suffixes??["/h.fsh"]):null,E=new Map,d=new TextDecoder;function p(f){if(!n)return{provider:r[0],local:f};let _=f>>>He,h=r[_];return h?{provider:h,local:f&Ue}:null}function A(f,_,h){let s=o?se():0,i;try{i=h()}catch{i=_}return o&&o(f,s),i}return{env:{flatsql_io_open(f,_,h){return A(N.open,-1,()=>{let s=dr(t(),f,_);if(!s)return-1;let i=n?Se(s)%r.length:0,u=r[i].open(s,h|0);if(u<0)return u;if(n&&u>Ue)return-4;let m=n?i<<He|u:u;if(a){let S=d.decode(s);a(S)&&E.set(m,S)}return m})},flatsql_io_read(f,_,h,s){if(c&&E.has(f)){let i=o?se():0;try{let u=t(),m=u.buffer??u;if(_>=0&&h>=0&&_+h<=m.byteLength){let S=De(c,E.get(f));if(S>=0){let w=Fe(c,S,new Uint8Array(m,_,h),s);if(w>=0)return o&&o(N.mirrorRead,i),w}}}catch{}}return A(N.read,-4,()=>{let i=p(f);return i?i.provider.read(i.local,_,h,s):-6})},flatsql_io_write(f,_,h,s){return A(N.write,-4,()=>{let i=p(f);return i?i.provider.write(i.local,_,h,s):-6})},flatsql_io_truncate(f,_){return A(N.truncate,-4,()=>{let h=p(f);return h?h.provider.truncate(h.local,_):-6})},flatsql_io_sync(f){return A(N.sync,-4,()=>{let _=p(f);return _?_.provider.sync(_.local):-6})},flatsql_io_size(f){return A(N.size,-4,()=>{let _=p(f);return _?_.provider.size(_.local):-6})},flatsql_io_close(f){return A(N.close,-4,()=>{E.delete(f);let _=p(f);return _?_.provider.close(_.local):-6})}}}}function pr(e,{getMemory:t}){let r=Array.isArray(e.channels)?e.channels:[e.channel??e.buffer];if(r.length===0||r.some(c=>!(c instanceof SharedArrayBuffer)))throw new TypeError("A flatsql-io descriptor needs channels: SharedArrayBuffer[].");let n=r.map(c=>be({buffer:c,instanceId:e.instanceId,getMemory:t}));return{imports:Sr({getMemory:t,provider:n,mirror:e.mirror,trace:e.trace}),close(){for(let c of n)c.release()}}}function Pe(e,t){let r=[],n=[];for(let o of e??[]){let c;if(typeof o=="function")c=o(t);else if(o&&o.provider===Er)c=pr(o,t);else if(o&&typeof o.factory=="function")c=o.factory({...t,config:o.config});else throw new TypeError(`Unresolvable extraImports entry ${JSON.stringify(o?.provider??o?.moduleUrl??typeof o)}; pass a factory function, a { provider: "flatsql-io" } descriptor, or (module workers) a { moduleUrl } descriptor.`);c&&c.imports&&typeof c.close=="function"?(r.push(c.imports),n.push(c.close)):c&&r.push(c)}return{fragments:r,close(){for(let o of n)try{o()}catch{}}}}function Qe(e,t){for(let r of t)for(let[n,o]of Object.entries(r??{}))e[n]={...e[n]??{},...o};return e}var Y=0,yr=1,mr=2,qe=4,ce=0,ve=1;var hr=0;var ie=qe*4,Rr=4*1024*1024;function Or(e){if(typeof SharedArrayBuffer!="function"||!(e instanceof SharedArrayBuffer))throw new TypeError("SAB hostcall channel requires a SharedArrayBuffer (cross-origin isolation in browsers).")}function ke(e={}){if(typeof SharedArrayBuffer!="function")throw new Error("SharedArrayBuffer is unavailable; the async hostcall bridge requires it (browsers additionally require cross-origin isolation: COOP+COEP).");let t=Number.isInteger(e.maxResponseBytes)?e.maxResponseBytes:Rr;if(t<=0)throw new RangeError("maxResponseBytes must be a positive integer.");return new SharedArrayBuffer(ie+t)}function Ve(e={}){Or(e.buffer);let t=e.postRequest;if(typeof t!="function")throw new TypeError("createSabHostcallClientDispatch requires a postRequest function.");let r=Number.isFinite(e.timeoutMs)&&e.timeoutMs>0?e.timeoutMs:12e4,n=new Int32Array(e.buffer,0,qe),o=e.buffer.byteLength-ie;return function(a,E=null){if(Atomics.store(n,Y,ve),t({operation:a,params:E}),Atomics.wait(n,Y,ve,r)==="timed-out")throw Atomics.store(n,Y,ce),new Error(`Hostcall "${a}" timed out after ${r}ms waiting for the controlling thread.`);let p=Atomics.load(n,yr),A=Atomics.load(n,mr);if(A<0||A>o)throw Atomics.store(n,Y,ce),new RangeError(`Hostcall "${a}" response length ${A} exceeds channel capacity ${o}.`);let T=new Uint8Array(A);T.set(new Uint8Array(e.buffer,ie,A)),Atomics.store(n,Y,ce);let f=fe(T);if(p!==hr){let _=new Error(f?.message??`Hostcall "${a}" failed on the host thread.`);throw _.name=f?.name??"Error",_.code=f?.code??null,_.operation=f?.operation??a,_.capability=f?.capability??null,_}return f}}var ae=class extends Error{constructor(t){super(`WASI exit with code ${t}`),this.name="WasiExitError",this.code=t}};function Ir(e,t,r,n){for(;;){let o=Atomics.load(e,t);if(r>n-o)return-1;if(Atomics.compareExchange(e,t,o,o+r)===o)return o}}function Ye(e={}){let t=e.processState,r=t?.args??e.args??[],n=t?.env??e.env??{},o=t?.input??new Uint8Array(e.stdinBytes??[]),c=e.logOutput===!0,a=e.performance??globalThis.performance??{now:()=>Date.now(),timeOrigin:0},E=e.crypto??globalThis.crypto??null,d=[],p=[],A=0,T=null;function f(l){T=l}function _(){return T}function h(){return new Uint8Array(T.buffer)}function s(){return new DataView(T.buffer)}let u=Object.entries(n).map(([l,y])=>`${l}=${y}`).map(l=>new TextEncoder().encode(l)),m=r.map(l=>new TextEncoder().encode(l));function S(l,y,O){let I;if(l===0)I=BigInt(Math.round((a.timeOrigin+a.now())*1e6));else if(l===1)I=BigInt(Math.round(a.now()*1e6));else return 28;return s().setBigUint64(O,I,!0),0}function w(l,y,O,I){if(l!==1&&l!==2)return 8;let R=l===1?d:p,g=0,M=s(),H=h();for(let U=0;U<O;U++){let K=y+U*8,D=M.getUint32(K,!0),x=M.getUint32(K+4,!0);if(t){let B=l===1?t.stdout:t.stderr,le=Ir(t.control,l,x,B.length);if(le<0)return 51;B.set(H.subarray(D,D+x),le)}else R.push(H.slice(D,D+x));g+=x}return M.setUint32(I,g,!0),0}function L(l,y,O,I){if(l!==0)return s().setUint32(I,0,!0),8;let R=s(),g=h(),M=0;for(let H=0;H<O;H+=1){let U=y+H*8,K=R.getUint32(U,!0),D=R.getUint32(U+4,!0),x,B;if(t)do x=Atomics.load(t.control,0),B=Math.min(D,o.length-x);while(Atomics.compareExchange(t.control,0,x,x+B)!==x);else x=A,B=Math.min(D,o.length-x),A+=B;if(B===0){if(x>=o.length)break;continue}g.set(o.subarray(x,x+B),K),M+=B}return R.setUint32(I,M,!0),0}function b(l){return l<=2?0:8}function Ke(l,y,O,I){return l<=2?70:8}function ze(l,y){if(l>2)return 8;let O=s();return O.setUint8(y,2),O.setUint16(y+2,0,!0),O.setBigUint64(y+8,0n,!0),O.setBigUint64(y+16,0n,!0),0}function We(l,y){return l<=2?0:8}function je(l,y){return 8}function Xe(l,y,O){return 8}function Ze(){return 8}function Je(l,y){let O=s();O.setUint32(l,u.length,!0);let I=0;for(let R of u)I+=R.length+1;return O.setUint32(y,I,!0),0}function et(l,y){let O=s(),I=h(),R=y;for(let g=0;g<u.length;g++)O.setUint32(l+g*4,R,!0),I.set(u[g],R),R+=u[g].length,I[R]=0,R+=1;return 0}function tt(l,y){let O=s();O.setUint32(l,m.length,!0);let I=0;for(let R of m)I+=R.length+1;return O.setUint32(y,I,!0),0}function rt(l,y){let O=s(),I=h(),R=y;for(let g=0;g<m.length;g++)O.setUint32(l+g*4,R,!0),I.set(m[g],R),R+=m[g].length,I[R]=0,R+=1;return 0}function nt(l,y){return E?.getRandomValues?(E.getRandomValues(h().subarray(l,l+y)),0):52}function ot(l){throw t&&(Atomics.store(t.control,4,l),Atomics.store(t.control,3,1)),c&&ue(),new ae(l)}function st(){return 0}function ue(){if(d.length>0){let l=$(d);if(c){let y=new TextDecoder().decode(l);y&&console.log(y)}d.length=0}if(p.length>0){let l=$(p);if(c){let y=new TextDecoder().decode(l);y&&console.warn(y)}p.length=0}}function $(l){let y=0;for(let R of l)y+=R.length;let O=new Uint8Array(y),I=0;for(let R of l)O.set(R,I),I+=R.length;return O}return{imports:{wasi_snapshot_preview1:{clock_time_get:S,fd_write:w,fd_read:L,fd_close:b,fd_seek:Ke,fd_fdstat_get:ze,fd_fdstat_set_flags:We,fd_prestat_get:je,fd_prestat_dir_name:Xe,path_open:Ze,environ_sizes_get:Je,environ_get:et,args_sizes_get:tt,args_get:rt,random_get:nt,proc_exit:ot,sched_yield:st}},setMemory:f,getMemory:_,flushOutput:ue,get stdout(){return t?t.stdout.slice(0,Atomics.load(t.control,1)):$(d)},get stderr(){return t?t.stderr.slice(0,Atomics.load(t.control,2)):$(p)}}}var Tr="sdm.thread-hostcall";function gr(e){return WebAssembly.Module.imports(e).some(t=>t.module===re)}function wr(e){if(!e||typeof e!="object")throw new Error("A threaded guest that imports space_data_module_host requires an owning hostcall channel.");let t=String(e.channelName??"").trim(),r=String(e.token??"").trim();if(!t||!r)throw new Error("The owning thread-hostcall channel name and token are required.");if(typeof BroadcastChannel!="function")throw new Error("BroadcastChannel is required for nested pthread hostcalls.");let n=ke({maxResponseBytes:e.maxResponseBytes}),o=new BroadcastChannel(t),c=1;return{dispatch:Ve({buffer:n,timeoutMs:e.timeoutMs,postRequest(E){o.postMessage({type:Tr,token:r,requestId:c++,buffer:n,...E})}}),close(){o.close()}}}function Ge({wasmModule:e,memory:t,hostcallChannel:r,processState:n,extraImports:o,workerIndex:c,tid:a}={}){let E=Ye({processState:n});E.setMemory(t);let d=null,p=null,A={...E.imports,env:{memory:t},wasi:{"thread-spawn":()=>-1}};if(gr(e)){p=wr(r);let f=de({dispatch:p.dispatch,getMemory:()=>d?.exports?.memory??t});Object.assign(A,f.imports)}let T=Pe(o,{memory:t,getMemory:()=>d?.exports?.memory??t,workerIndex:c??null,tid:a??null});return Qe(A,T.fragments),A.env.memory=t,{imports:A,instantiate(){return d=new WebAssembly.Instance(e,A),E.setMemory(d.exports.memory??t),d},close(){p?.close(),T.close()}}}async function $e(e){let t=[];for(let r of e??[])if(r&&typeof r.moduleUrl=="string"){let o=(await import(r.moduleUrl))[r.exportName??"default"];if(typeof o!="function")throw new TypeError(`extraImports module ${r.moduleUrl} exports no factory "${r.exportName??"default"}".`);t.push({factory:o,config:r.config??null})}else t.push(r);return t}var G=null;self.onmessage=async e=>{let t=e.data??{};if(t.t==="probe"){try{let r=await $e(t.extraImports??[]);G=Ge({wasmModule:t.wasmModule,memory:t.memory,hostcallChannel:t.hostcallChannel??null,processState:t.processState,extraImports:r,workerIndex:t.workerIndex}),G.instantiate(),self.postMessage({t:"ready",ok:!0})}catch(r){G?.close(),G=null,self.postMessage({t:"ready",ok:!1,error:String(r?.message??r)})}return}if(t.t==="run"){try{G.instantiate().exports.wasi_thread_start(t.tid,t.startArg)}catch(r){r&&r.name==="WasiExitError"||(console.error(`[wasi-thread] guest thread ${t.tid} trapped:`,r),self.postMessage({t:"error",tid:t.tid,error:String(r?.message??r)}))}self.postMessage({t:"exit",tid:t.tid})}};
@@ -1,3 +0,0 @@
1
- export * from './types.js';
2
- export * from './transport.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/artifacts/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}