@zappdev/cli 0.1.1 → 0.2.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 (662) hide show
  1. package/README.md +24 -21
  2. package/dist/zapp-cli.js +38 -3
  3. package/native/src/app/app.zc +30 -7
  4. package/native/src/cli/node_modules/@esbuild/darwin-arm64/README.md +3 -0
  5. package/native/src/cli/node_modules/@esbuild/darwin-arm64/bin/esbuild +0 -0
  6. package/native/src/cli/node_modules/@esbuild/darwin-arm64/package.json +20 -0
  7. package/native/src/cli/node_modules/@types/bun/LICENSE +21 -0
  8. package/native/src/cli/node_modules/@types/bun/README.md +20 -0
  9. package/native/src/cli/node_modules/@types/bun/index.d.ts +1 -0
  10. package/native/src/cli/node_modules/@types/bun/package.json +53 -0
  11. package/native/src/cli/node_modules/@types/node/LICENSE +21 -0
  12. package/native/src/cli/node_modules/@types/node/README.md +15 -0
  13. package/native/src/cli/node_modules/@types/node/assert/strict.d.ts +111 -0
  14. package/native/src/cli/node_modules/@types/node/assert.d.ts +1078 -0
  15. package/native/src/cli/node_modules/@types/node/async_hooks.d.ts +603 -0
  16. package/native/src/cli/node_modules/@types/node/buffer.buffer.d.ts +472 -0
  17. package/native/src/cli/node_modules/@types/node/buffer.d.ts +1934 -0
  18. package/native/src/cli/node_modules/@types/node/child_process.d.ts +1476 -0
  19. package/native/src/cli/node_modules/@types/node/cluster.d.ts +578 -0
  20. package/native/src/cli/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
  21. package/native/src/cli/node_modules/@types/node/compatibility/index.d.ts +9 -0
  22. package/native/src/cli/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
  23. package/native/src/cli/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
  24. package/native/src/cli/node_modules/@types/node/console.d.ts +452 -0
  25. package/native/src/cli/node_modules/@types/node/constants.d.ts +21 -0
  26. package/native/src/cli/node_modules/@types/node/crypto.d.ts +4545 -0
  27. package/native/src/cli/node_modules/@types/node/dgram.d.ts +600 -0
  28. package/native/src/cli/node_modules/@types/node/diagnostics_channel.d.ts +578 -0
  29. package/native/src/cli/node_modules/@types/node/dns/promises.d.ts +503 -0
  30. package/native/src/cli/node_modules/@types/node/dns.d.ts +923 -0
  31. package/native/src/cli/node_modules/@types/node/domain.d.ts +170 -0
  32. package/native/src/cli/node_modules/@types/node/events.d.ts +976 -0
  33. package/native/src/cli/node_modules/@types/node/fs/promises.d.ts +1295 -0
  34. package/native/src/cli/node_modules/@types/node/fs.d.ts +4461 -0
  35. package/native/src/cli/node_modules/@types/node/globals.d.ts +172 -0
  36. package/native/src/cli/node_modules/@types/node/globals.typedarray.d.ts +38 -0
  37. package/native/src/cli/node_modules/@types/node/http.d.ts +2089 -0
  38. package/native/src/cli/node_modules/@types/node/http2.d.ts +2644 -0
  39. package/native/src/cli/node_modules/@types/node/https.d.ts +579 -0
  40. package/native/src/cli/node_modules/@types/node/index.d.ts +97 -0
  41. package/native/src/cli/node_modules/@types/node/inspector.d.ts +253 -0
  42. package/native/src/cli/node_modules/@types/node/inspector.generated.d.ts +4052 -0
  43. package/native/src/cli/node_modules/@types/node/module.d.ts +891 -0
  44. package/native/src/cli/node_modules/@types/node/net.d.ts +1057 -0
  45. package/native/src/cli/node_modules/@types/node/os.d.ts +506 -0
  46. package/native/src/cli/node_modules/@types/node/package.json +145 -0
  47. package/native/src/cli/node_modules/@types/node/path.d.ts +200 -0
  48. package/native/src/cli/node_modules/@types/node/perf_hooks.d.ts +968 -0
  49. package/native/src/cli/node_modules/@types/node/process.d.ts +2084 -0
  50. package/native/src/cli/node_modules/@types/node/punycode.d.ts +117 -0
  51. package/native/src/cli/node_modules/@types/node/querystring.d.ts +152 -0
  52. package/native/src/cli/node_modules/@types/node/readline/promises.d.ts +161 -0
  53. package/native/src/cli/node_modules/@types/node/readline.d.ts +594 -0
  54. package/native/src/cli/node_modules/@types/node/repl.d.ts +428 -0
  55. package/native/src/cli/node_modules/@types/node/sea.d.ts +153 -0
  56. package/native/src/cli/node_modules/@types/node/sqlite.d.ts +721 -0
  57. package/native/src/cli/node_modules/@types/node/stream/consumers.d.ts +38 -0
  58. package/native/src/cli/node_modules/@types/node/stream/promises.d.ts +90 -0
  59. package/native/src/cli/node_modules/@types/node/stream/web.d.ts +622 -0
  60. package/native/src/cli/node_modules/@types/node/stream.d.ts +1664 -0
  61. package/native/src/cli/node_modules/@types/node/string_decoder.d.ts +67 -0
  62. package/native/src/cli/node_modules/@types/node/test.d.ts +2163 -0
  63. package/native/src/cli/node_modules/@types/node/timers/promises.d.ts +108 -0
  64. package/native/src/cli/node_modules/@types/node/timers.d.ts +287 -0
  65. package/native/src/cli/node_modules/@types/node/tls.d.ts +1319 -0
  66. package/native/src/cli/node_modules/@types/node/trace_events.d.ts +197 -0
  67. package/native/src/cli/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +468 -0
  68. package/native/src/cli/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +34 -0
  69. package/native/src/cli/node_modules/@types/node/ts5.6/index.d.ts +97 -0
  70. package/native/src/cli/node_modules/@types/node/tty.d.ts +208 -0
  71. package/native/src/cli/node_modules/@types/node/url.d.ts +984 -0
  72. package/native/src/cli/node_modules/@types/node/util.d.ts +2606 -0
  73. package/native/src/cli/node_modules/@types/node/v8.d.ts +920 -0
  74. package/native/src/cli/node_modules/@types/node/vm.d.ts +1000 -0
  75. package/native/src/cli/node_modules/@types/node/wasi.d.ts +181 -0
  76. package/native/src/cli/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
  77. package/native/src/cli/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  78. package/native/src/cli/node_modules/@types/node/web-globals/events.d.ts +97 -0
  79. package/native/src/cli/node_modules/@types/node/web-globals/fetch.d.ts +55 -0
  80. package/native/src/cli/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
  81. package/native/src/cli/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  82. package/native/src/cli/node_modules/@types/node/worker_threads.d.ts +784 -0
  83. package/native/src/cli/node_modules/@types/node/zlib.d.ts +747 -0
  84. package/native/src/cli/node_modules/bun-types/CLAUDE.md +105 -0
  85. package/native/src/cli/node_modules/bun-types/README.md +33 -0
  86. package/native/src/cli/node_modules/bun-types/bun.d.ts +8481 -0
  87. package/native/src/cli/node_modules/bun-types/bun.ns.d.ts +5 -0
  88. package/native/src/cli/node_modules/bun-types/bundle.d.ts +74 -0
  89. package/native/src/cli/node_modules/bun-types/deprecated.d.ts +184 -0
  90. package/native/src/cli/node_modules/bun-types/devserver.d.ts +187 -0
  91. package/native/src/cli/node_modules/bun-types/docs/README.md +28 -0
  92. package/native/src/cli/node_modules/bun-types/docs/bundler/bytecode.mdx +447 -0
  93. package/native/src/cli/node_modules/bun-types/docs/bundler/css.mdx +1024 -0
  94. package/native/src/cli/node_modules/bun-types/docs/bundler/esbuild.mdx +304 -0
  95. package/native/src/cli/node_modules/bun-types/docs/bundler/executables.mdx +1318 -0
  96. package/native/src/cli/node_modules/bun-types/docs/bundler/fullstack.mdx +1086 -0
  97. package/native/src/cli/node_modules/bun-types/docs/bundler/hot-reloading.mdx +229 -0
  98. package/native/src/cli/node_modules/bun-types/docs/bundler/html-static.mdx +498 -0
  99. package/native/src/cli/node_modules/bun-types/docs/bundler/index.mdx +1840 -0
  100. package/native/src/cli/node_modules/bun-types/docs/bundler/loaders.mdx +451 -0
  101. package/native/src/cli/node_modules/bun-types/docs/bundler/macros.mdx +328 -0
  102. package/native/src/cli/node_modules/bun-types/docs/bundler/minifier.mdx +1286 -0
  103. package/native/src/cli/node_modules/bun-types/docs/bundler/plugins.mdx +477 -0
  104. package/native/src/cli/node_modules/bun-types/docs/bundler/standalone-html.mdx +314 -0
  105. package/native/src/cli/node_modules/bun-types/docs/feedback.mdx +75 -0
  106. package/native/src/cli/node_modules/bun-types/docs/guides/binary/arraybuffer-to-array.mdx +29 -0
  107. package/native/src/cli/node_modules/bun-types/docs/guides/binary/arraybuffer-to-blob.mdx +26 -0
  108. package/native/src/cli/node_modules/bun-types/docs/guides/binary/arraybuffer-to-buffer.mdx +27 -0
  109. package/native/src/cli/node_modules/bun-types/docs/guides/binary/arraybuffer-to-string.mdx +17 -0
  110. package/native/src/cli/node_modules/bun-types/docs/guides/binary/arraybuffer-to-typedarray.mdx +41 -0
  111. package/native/src/cli/node_modules/bun-types/docs/guides/binary/blob-to-arraybuffer.mdx +16 -0
  112. package/native/src/cli/node_modules/bun-types/docs/guides/binary/blob-to-dataview.mdx +16 -0
  113. package/native/src/cli/node_modules/bun-types/docs/guides/binary/blob-to-stream.mdx +16 -0
  114. package/native/src/cli/node_modules/bun-types/docs/guides/binary/blob-to-string.mdx +17 -0
  115. package/native/src/cli/node_modules/bun-types/docs/guides/binary/blob-to-typedarray.mdx +16 -0
  116. package/native/src/cli/node_modules/bun-types/docs/guides/binary/buffer-to-arraybuffer.mdx +16 -0
  117. package/native/src/cli/node_modules/bun-types/docs/guides/binary/buffer-to-blob.mdx +16 -0
  118. package/native/src/cli/node_modules/bun-types/docs/guides/binary/buffer-to-readablestream.mdx +43 -0
  119. package/native/src/cli/node_modules/bun-types/docs/guides/binary/buffer-to-string.mdx +27 -0
  120. package/native/src/cli/node_modules/bun-types/docs/guides/binary/buffer-to-typedarray.mdx +16 -0
  121. package/native/src/cli/node_modules/bun-types/docs/guides/binary/dataview-to-string.mdx +17 -0
  122. package/native/src/cli/node_modules/bun-types/docs/guides/binary/typedarray-to-arraybuffer.mdx +27 -0
  123. package/native/src/cli/node_modules/bun-types/docs/guides/binary/typedarray-to-blob.mdx +18 -0
  124. package/native/src/cli/node_modules/bun-types/docs/guides/binary/typedarray-to-buffer.mdx +16 -0
  125. package/native/src/cli/node_modules/bun-types/docs/guides/binary/typedarray-to-dataview.mdx +16 -0
  126. package/native/src/cli/node_modules/bun-types/docs/guides/binary/typedarray-to-readablestream.mdx +43 -0
  127. package/native/src/cli/node_modules/bun-types/docs/guides/binary/typedarray-to-string.mdx +18 -0
  128. package/native/src/cli/node_modules/bun-types/docs/guides/deployment/aws-lambda.mdx +204 -0
  129. package/native/src/cli/node_modules/bun-types/docs/guides/deployment/digital-ocean.mdx +161 -0
  130. package/native/src/cli/node_modules/bun-types/docs/guides/deployment/google-cloud-run.mdx +194 -0
  131. package/native/src/cli/node_modules/bun-types/docs/guides/deployment/railway.mdx +145 -0
  132. package/native/src/cli/node_modules/bun-types/docs/guides/deployment/render.mdx +82 -0
  133. package/native/src/cli/node_modules/bun-types/docs/guides/deployment/vercel.mdx +97 -0
  134. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/astro.mdx +82 -0
  135. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/discordjs.mdx +80 -0
  136. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/docker.mdx +151 -0
  137. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/drizzle.mdx +195 -0
  138. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/elysia.mdx +31 -0
  139. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/express.mdx +43 -0
  140. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/gel.mdx +261 -0
  141. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/hono.mdx +47 -0
  142. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/mongoose.mdx +92 -0
  143. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/neon-drizzle.mdx +234 -0
  144. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/neon-serverless-postgres.mdx +60 -0
  145. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/nextjs.mdx +103 -0
  146. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/nuxt.mdx +96 -0
  147. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/pm2.mdx +55 -0
  148. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/prisma-postgres.mdx +169 -0
  149. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/prisma.mdx +164 -0
  150. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/qwik.mdx +114 -0
  151. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/react.mdx +52 -0
  152. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/remix.mdx +97 -0
  153. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/sentry.mdx +54 -0
  154. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/solidstart.mdx +62 -0
  155. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/ssr-react.mdx +49 -0
  156. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/stric.mdx +54 -0
  157. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/sveltekit.mdx +138 -0
  158. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/systemd.mdx +114 -0
  159. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/tanstack-start.mdx +791 -0
  160. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/upstash.mdx +87 -0
  161. package/native/src/cli/node_modules/bun-types/docs/guides/ecosystem/vite.mdx +77 -0
  162. package/native/src/cli/node_modules/bun-types/docs/guides/html-rewriter/extract-links.mdx +71 -0
  163. package/native/src/cli/node_modules/bun-types/docs/guides/html-rewriter/extract-social-meta.mdx +97 -0
  164. package/native/src/cli/node_modules/bun-types/docs/guides/http/cluster.mdx +69 -0
  165. package/native/src/cli/node_modules/bun-types/docs/guides/http/fetch-unix.mdx +35 -0
  166. package/native/src/cli/node_modules/bun-types/docs/guides/http/fetch.mdx +26 -0
  167. package/native/src/cli/node_modules/bun-types/docs/guides/http/file-uploads.mdx +97 -0
  168. package/native/src/cli/node_modules/bun-types/docs/guides/http/hot.mdx +28 -0
  169. package/native/src/cli/node_modules/bun-types/docs/guides/http/proxy.mdx +50 -0
  170. package/native/src/cli/node_modules/bun-types/docs/guides/http/server.mdx +48 -0
  171. package/native/src/cli/node_modules/bun-types/docs/guides/http/simple.mdx +20 -0
  172. package/native/src/cli/node_modules/bun-types/docs/guides/http/stream-file.mdx +50 -0
  173. package/native/src/cli/node_modules/bun-types/docs/guides/http/stream-iterator.mdx +49 -0
  174. package/native/src/cli/node_modules/bun-types/docs/guides/http/stream-node-streams-in-bun.mdx +22 -0
  175. package/native/src/cli/node_modules/bun-types/docs/guides/http/tls.mdx +32 -0
  176. package/native/src/cli/node_modules/bun-types/docs/guides/index.mdx +10 -0
  177. package/native/src/cli/node_modules/bun-types/docs/guides/install/add-dev.mdx +28 -0
  178. package/native/src/cli/node_modules/bun-types/docs/guides/install/add-git.mdx +40 -0
  179. package/native/src/cli/node_modules/bun-types/docs/guides/install/add-optional.mdx +27 -0
  180. package/native/src/cli/node_modules/bun-types/docs/guides/install/add-peer.mdx +45 -0
  181. package/native/src/cli/node_modules/bun-types/docs/guides/install/add-tarball.mdx +35 -0
  182. package/native/src/cli/node_modules/bun-types/docs/guides/install/add.mdx +44 -0
  183. package/native/src/cli/node_modules/bun-types/docs/guides/install/azure-artifacts.mdx +76 -0
  184. package/native/src/cli/node_modules/bun-types/docs/guides/install/cicd.mdx +43 -0
  185. package/native/src/cli/node_modules/bun-types/docs/guides/install/custom-registry.mdx +32 -0
  186. package/native/src/cli/node_modules/bun-types/docs/guides/install/from-npm-install-to-bun-install.mdx +230 -0
  187. package/native/src/cli/node_modules/bun-types/docs/guides/install/git-diff-bun-lockfile.mdx +48 -0
  188. package/native/src/cli/node_modules/bun-types/docs/guides/install/jfrog-artifactory.mdx +28 -0
  189. package/native/src/cli/node_modules/bun-types/docs/guides/install/npm-alias.mdx +25 -0
  190. package/native/src/cli/node_modules/bun-types/docs/guides/install/registry-scope.mdx +40 -0
  191. package/native/src/cli/node_modules/bun-types/docs/guides/install/trusted.mdx +52 -0
  192. package/native/src/cli/node_modules/bun-types/docs/guides/install/workspaces.mdx +70 -0
  193. package/native/src/cli/node_modules/bun-types/docs/guides/install/yarnlock.mdx +51 -0
  194. package/native/src/cli/node_modules/bun-types/docs/guides/process/argv.mdx +66 -0
  195. package/native/src/cli/node_modules/bun-types/docs/guides/process/ctrl-c.mdx +18 -0
  196. package/native/src/cli/node_modules/bun-types/docs/guides/process/ipc.mdx +69 -0
  197. package/native/src/cli/node_modules/bun-types/docs/guides/process/nanoseconds.mdx +15 -0
  198. package/native/src/cli/node_modules/bun-types/docs/guides/process/os-signals.mdx +31 -0
  199. package/native/src/cli/node_modules/bun-types/docs/guides/process/spawn-stderr.mdx +34 -0
  200. package/native/src/cli/node_modules/bun-types/docs/guides/process/spawn-stdout.mdx +28 -0
  201. package/native/src/cli/node_modules/bun-types/docs/guides/process/spawn.mdx +43 -0
  202. package/native/src/cli/node_modules/bun-types/docs/guides/process/stdin.mdx +62 -0
  203. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/arraybuffer.mdx +30 -0
  204. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/buffer.mdx +21 -0
  205. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/exists.mdx +18 -0
  206. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/json.mdx +19 -0
  207. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/mime.mdx +22 -0
  208. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/stream.mdx +28 -0
  209. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/string.mdx +24 -0
  210. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/uint8array.mdx +23 -0
  211. package/native/src/cli/node_modules/bun-types/docs/guides/read-file/watch.mdx +66 -0
  212. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/build-time-constants.mdx +295 -0
  213. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/cicd.mdx +45 -0
  214. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/codesign-macos-executable.mdx +61 -0
  215. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/define-constant.mdx +149 -0
  216. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/delete-directory.mdx +39 -0
  217. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/delete-file.mdx +21 -0
  218. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/heap-snapshot.mdx +28 -0
  219. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/import-html.mdx +15 -0
  220. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/import-json.mdx +46 -0
  221. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/import-json5.mdx +74 -0
  222. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/import-toml.mdx +32 -0
  223. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/import-yaml.mdx +104 -0
  224. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/read-env.mdx +37 -0
  225. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/set-env.mdx +51 -0
  226. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/shell.mdx +42 -0
  227. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/timezone.mdx +38 -0
  228. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/tsconfig-paths.mdx +31 -0
  229. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/typescript.mdx +51 -0
  230. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/vscode-debugger.mdx +47 -0
  231. package/native/src/cli/node_modules/bun-types/docs/guides/runtime/web-debugger.mdx +103 -0
  232. package/native/src/cli/node_modules/bun-types/docs/guides/streams/node-readable-to-arraybuffer.mdx +13 -0
  233. package/native/src/cli/node_modules/bun-types/docs/guides/streams/node-readable-to-blob.mdx +13 -0
  234. package/native/src/cli/node_modules/bun-types/docs/guides/streams/node-readable-to-json.mdx +14 -0
  235. package/native/src/cli/node_modules/bun-types/docs/guides/streams/node-readable-to-string.mdx +14 -0
  236. package/native/src/cli/node_modules/bun-types/docs/guides/streams/node-readable-to-uint8array.mdx +13 -0
  237. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-array.mdx +16 -0
  238. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-arraybuffer.mdx +16 -0
  239. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-blob.mdx +16 -0
  240. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-buffer.mdx +17 -0
  241. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-json.mdx +16 -0
  242. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-string.mdx +16 -0
  243. package/native/src/cli/node_modules/bun-types/docs/guides/streams/to-typedarray.mdx +24 -0
  244. package/native/src/cli/node_modules/bun-types/docs/guides/test/bail.mdx +24 -0
  245. package/native/src/cli/node_modules/bun-types/docs/guides/test/concurrent-test-glob.mdx +146 -0
  246. package/native/src/cli/node_modules/bun-types/docs/guides/test/coverage-threshold.mdx +67 -0
  247. package/native/src/cli/node_modules/bun-types/docs/guides/test/coverage.mdx +49 -0
  248. package/native/src/cli/node_modules/bun-types/docs/guides/test/happy-dom.mdx +73 -0
  249. package/native/src/cli/node_modules/bun-types/docs/guides/test/migrate-from-jest.mdx +125 -0
  250. package/native/src/cli/node_modules/bun-types/docs/guides/test/mock-clock.mdx +50 -0
  251. package/native/src/cli/node_modules/bun-types/docs/guides/test/mock-functions.mdx +70 -0
  252. package/native/src/cli/node_modules/bun-types/docs/guides/test/rerun-each.mdx +16 -0
  253. package/native/src/cli/node_modules/bun-types/docs/guides/test/run-tests.mdx +116 -0
  254. package/native/src/cli/node_modules/bun-types/docs/guides/test/skip-tests.mdx +43 -0
  255. package/native/src/cli/node_modules/bun-types/docs/guides/test/snapshot.mdx +102 -0
  256. package/native/src/cli/node_modules/bun-types/docs/guides/test/spy-on.mdx +49 -0
  257. package/native/src/cli/node_modules/bun-types/docs/guides/test/svelte-test.mdx +113 -0
  258. package/native/src/cli/node_modules/bun-types/docs/guides/test/testing-library.mdx +93 -0
  259. package/native/src/cli/node_modules/bun-types/docs/guides/test/timeout.mdx +17 -0
  260. package/native/src/cli/node_modules/bun-types/docs/guides/test/todo-tests.mdx +74 -0
  261. package/native/src/cli/node_modules/bun-types/docs/guides/test/update-snapshots.mdx +49 -0
  262. package/native/src/cli/node_modules/bun-types/docs/guides/test/watch-mode.mdx +24 -0
  263. package/native/src/cli/node_modules/bun-types/docs/guides/util/base64.mdx +17 -0
  264. package/native/src/cli/node_modules/bun-types/docs/guides/util/deep-equals.mdx +41 -0
  265. package/native/src/cli/node_modules/bun-types/docs/guides/util/deflate.mdx +20 -0
  266. package/native/src/cli/node_modules/bun-types/docs/guides/util/detect-bun.mdx +28 -0
  267. package/native/src/cli/node_modules/bun-types/docs/guides/util/entrypoint.mdx +19 -0
  268. package/native/src/cli/node_modules/bun-types/docs/guides/util/escape-html.mdx +24 -0
  269. package/native/src/cli/node_modules/bun-types/docs/guides/util/file-url-to-path.mdx +16 -0
  270. package/native/src/cli/node_modules/bun-types/docs/guides/util/gzip.mdx +20 -0
  271. package/native/src/cli/node_modules/bun-types/docs/guides/util/hash-a-password.mdx +56 -0
  272. package/native/src/cli/node_modules/bun-types/docs/guides/util/import-meta-dir.mdx +15 -0
  273. package/native/src/cli/node_modules/bun-types/docs/guides/util/import-meta-file.mdx +15 -0
  274. package/native/src/cli/node_modules/bun-types/docs/guides/util/import-meta-path.mdx +15 -0
  275. package/native/src/cli/node_modules/bun-types/docs/guides/util/javascript-uuid.mdx +25 -0
  276. package/native/src/cli/node_modules/bun-types/docs/guides/util/main.mdx +43 -0
  277. package/native/src/cli/node_modules/bun-types/docs/guides/util/path-to-file-url.mdx +16 -0
  278. package/native/src/cli/node_modules/bun-types/docs/guides/util/sleep.mdx +24 -0
  279. package/native/src/cli/node_modules/bun-types/docs/guides/util/upgrade.mdx +93 -0
  280. package/native/src/cli/node_modules/bun-types/docs/guides/util/version.mdx +23 -0
  281. package/native/src/cli/node_modules/bun-types/docs/guides/util/which-path-to-executable-bin.mdx +17 -0
  282. package/native/src/cli/node_modules/bun-types/docs/guides/websocket/compression.mdx +33 -0
  283. package/native/src/cli/node_modules/bun-types/docs/guides/websocket/context.mdx +79 -0
  284. package/native/src/cli/node_modules/bun-types/docs/guides/websocket/pubsub.mdx +43 -0
  285. package/native/src/cli/node_modules/bun-types/docs/guides/websocket/simple.mdx +38 -0
  286. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/append.mdx +54 -0
  287. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/basic.mdx +46 -0
  288. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/blob.mdx +30 -0
  289. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/cat.mdx +19 -0
  290. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/file-cp.mdx +18 -0
  291. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/filesink.mdx +54 -0
  292. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/response.mdx +19 -0
  293. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/stdout.mdx +23 -0
  294. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/stream.mdx +19 -0
  295. package/native/src/cli/node_modules/bun-types/docs/guides/write-file/unlink.mdx +18 -0
  296. package/native/src/cli/node_modules/bun-types/docs/index.mdx +133 -0
  297. package/native/src/cli/node_modules/bun-types/docs/installation.mdx +372 -0
  298. package/native/src/cli/node_modules/bun-types/docs/pm/bunx.mdx +91 -0
  299. package/native/src/cli/node_modules/bun-types/docs/pm/catalogs.mdx +292 -0
  300. package/native/src/cli/node_modules/bun-types/docs/pm/cli/add.mdx +179 -0
  301. package/native/src/cli/node_modules/bun-types/docs/pm/cli/audit.mdx +60 -0
  302. package/native/src/cli/node_modules/bun-types/docs/pm/cli/info.mdx +70 -0
  303. package/native/src/cli/node_modules/bun-types/docs/pm/cli/install.mdx +591 -0
  304. package/native/src/cli/node_modules/bun-types/docs/pm/cli/link.mdx +61 -0
  305. package/native/src/cli/node_modules/bun-types/docs/pm/cli/outdated.mdx +197 -0
  306. package/native/src/cli/node_modules/bun-types/docs/pm/cli/patch.mdx +69 -0
  307. package/native/src/cli/node_modules/bun-types/docs/pm/cli/pm.mdx +323 -0
  308. package/native/src/cli/node_modules/bun-types/docs/pm/cli/publish.mdx +131 -0
  309. package/native/src/cli/node_modules/bun-types/docs/pm/cli/remove.mdx +16 -0
  310. package/native/src/cli/node_modules/bun-types/docs/pm/cli/update.mdx +140 -0
  311. package/native/src/cli/node_modules/bun-types/docs/pm/cli/why.mdx +84 -0
  312. package/native/src/cli/node_modules/bun-types/docs/pm/filter.mdx +127 -0
  313. package/native/src/cli/node_modules/bun-types/docs/pm/global-cache.mdx +72 -0
  314. package/native/src/cli/node_modules/bun-types/docs/pm/isolated-installs.mdx +220 -0
  315. package/native/src/cli/node_modules/bun-types/docs/pm/lifecycle.mdx +64 -0
  316. package/native/src/cli/node_modules/bun-types/docs/pm/lockfile.mdx +64 -0
  317. package/native/src/cli/node_modules/bun-types/docs/pm/npmrc.mdx +245 -0
  318. package/native/src/cli/node_modules/bun-types/docs/pm/overrides.mdx +83 -0
  319. package/native/src/cli/node_modules/bun-types/docs/pm/scopes-registries.mdx +35 -0
  320. package/native/src/cli/node_modules/bun-types/docs/pm/security-scanner-api.mdx +95 -0
  321. package/native/src/cli/node_modules/bun-types/docs/pm/workspaces.mdx +115 -0
  322. package/native/src/cli/node_modules/bun-types/docs/project/benchmarking.mdx +296 -0
  323. package/native/src/cli/node_modules/bun-types/docs/project/bindgen.mdx +223 -0
  324. package/native/src/cli/node_modules/bun-types/docs/project/building-windows.mdx +143 -0
  325. package/native/src/cli/node_modules/bun-types/docs/project/contributing.mdx +366 -0
  326. package/native/src/cli/node_modules/bun-types/docs/project/feedback.mdx +20 -0
  327. package/native/src/cli/node_modules/bun-types/docs/project/license.mdx +78 -0
  328. package/native/src/cli/node_modules/bun-types/docs/project/roadmap.mdx +8 -0
  329. package/native/src/cli/node_modules/bun-types/docs/quickstart.mdx +251 -0
  330. package/native/src/cli/node_modules/bun-types/docs/runtime/archive.mdx +452 -0
  331. package/native/src/cli/node_modules/bun-types/docs/runtime/auto-install.mdx +97 -0
  332. package/native/src/cli/node_modules/bun-types/docs/runtime/binary-data.mdx +846 -0
  333. package/native/src/cli/node_modules/bun-types/docs/runtime/bun-apis.mdx +59 -0
  334. package/native/src/cli/node_modules/bun-types/docs/runtime/bunfig.mdx +754 -0
  335. package/native/src/cli/node_modules/bun-types/docs/runtime/c-compiler.mdx +204 -0
  336. package/native/src/cli/node_modules/bun-types/docs/runtime/child-process.mdx +659 -0
  337. package/native/src/cli/node_modules/bun-types/docs/runtime/color.mdx +267 -0
  338. package/native/src/cli/node_modules/bun-types/docs/runtime/console.mdx +67 -0
  339. package/native/src/cli/node_modules/bun-types/docs/runtime/cookies.mdx +454 -0
  340. package/native/src/cli/node_modules/bun-types/docs/runtime/debugger.mdx +335 -0
  341. package/native/src/cli/node_modules/bun-types/docs/runtime/environment-variables.mdx +231 -0
  342. package/native/src/cli/node_modules/bun-types/docs/runtime/ffi.mdx +567 -0
  343. package/native/src/cli/node_modules/bun-types/docs/runtime/file-io.mdx +306 -0
  344. package/native/src/cli/node_modules/bun-types/docs/runtime/file-system-router.mdx +118 -0
  345. package/native/src/cli/node_modules/bun-types/docs/runtime/file-types.mdx +482 -0
  346. package/native/src/cli/node_modules/bun-types/docs/runtime/glob.mdx +181 -0
  347. package/native/src/cli/node_modules/bun-types/docs/runtime/globals.mdx +72 -0
  348. package/native/src/cli/node_modules/bun-types/docs/runtime/hashing.mdx +315 -0
  349. package/native/src/cli/node_modules/bun-types/docs/runtime/html-rewriter.mdx +333 -0
  350. package/native/src/cli/node_modules/bun-types/docs/runtime/http/cookies.mdx +79 -0
  351. package/native/src/cli/node_modules/bun-types/docs/runtime/http/error-handling.mdx +40 -0
  352. package/native/src/cli/node_modules/bun-types/docs/runtime/http/metrics.mdx +36 -0
  353. package/native/src/cli/node_modules/bun-types/docs/runtime/http/routing.mdx +289 -0
  354. package/native/src/cli/node_modules/bun-types/docs/runtime/http/server.mdx +645 -0
  355. package/native/src/cli/node_modules/bun-types/docs/runtime/http/tls.mdx +101 -0
  356. package/native/src/cli/node_modules/bun-types/docs/runtime/http/websockets.mdx +414 -0
  357. package/native/src/cli/node_modules/bun-types/docs/runtime/index.mdx +223 -0
  358. package/native/src/cli/node_modules/bun-types/docs/runtime/json5.mdx +271 -0
  359. package/native/src/cli/node_modules/bun-types/docs/runtime/jsonl.mdx +188 -0
  360. package/native/src/cli/node_modules/bun-types/docs/runtime/jsx.mdx +115 -0
  361. package/native/src/cli/node_modules/bun-types/docs/runtime/markdown.mdx +344 -0
  362. package/native/src/cli/node_modules/bun-types/docs/runtime/module-resolution.mdx +374 -0
  363. package/native/src/cli/node_modules/bun-types/docs/runtime/networking/dns.mdx +111 -0
  364. package/native/src/cli/node_modules/bun-types/docs/runtime/networking/fetch.mdx +484 -0
  365. package/native/src/cli/node_modules/bun-types/docs/runtime/networking/tcp.mdx +239 -0
  366. package/native/src/cli/node_modules/bun-types/docs/runtime/networking/udp.mdx +180 -0
  367. package/native/src/cli/node_modules/bun-types/docs/runtime/node-api.mdx +19 -0
  368. package/native/src/cli/node_modules/bun-types/docs/runtime/nodejs-compat.mdx +468 -0
  369. package/native/src/cli/node_modules/bun-types/docs/runtime/plugins.mdx +419 -0
  370. package/native/src/cli/node_modules/bun-types/docs/runtime/redis.mdx +583 -0
  371. package/native/src/cli/node_modules/bun-types/docs/runtime/repl.mdx +176 -0
  372. package/native/src/cli/node_modules/bun-types/docs/runtime/s3.mdx +881 -0
  373. package/native/src/cli/node_modules/bun-types/docs/runtime/secrets.mdx +340 -0
  374. package/native/src/cli/node_modules/bun-types/docs/runtime/semver.mdx +57 -0
  375. package/native/src/cli/node_modules/bun-types/docs/runtime/shell.mdx +637 -0
  376. package/native/src/cli/node_modules/bun-types/docs/runtime/sql.mdx +1404 -0
  377. package/native/src/cli/node_modules/bun-types/docs/runtime/sqlite.mdx +721 -0
  378. package/native/src/cli/node_modules/bun-types/docs/runtime/streams.mdx +232 -0
  379. package/native/src/cli/node_modules/bun-types/docs/runtime/templating/create.mdx +269 -0
  380. package/native/src/cli/node_modules/bun-types/docs/runtime/templating/init.mdx +58 -0
  381. package/native/src/cli/node_modules/bun-types/docs/runtime/transpiler.mdx +288 -0
  382. package/native/src/cli/node_modules/bun-types/docs/runtime/typescript.mdx +58 -0
  383. package/native/src/cli/node_modules/bun-types/docs/runtime/utils.mdx +1010 -0
  384. package/native/src/cli/node_modules/bun-types/docs/runtime/watch-mode.mdx +161 -0
  385. package/native/src/cli/node_modules/bun-types/docs/runtime/web-apis.mdx +29 -0
  386. package/native/src/cli/node_modules/bun-types/docs/runtime/workers.mdx +314 -0
  387. package/native/src/cli/node_modules/bun-types/docs/runtime/yaml.mdx +469 -0
  388. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/add.mdx +166 -0
  389. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/build.mdx +197 -0
  390. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/bunx.mdx +49 -0
  391. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/feedback.mdx +17 -0
  392. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/init.mdx +84 -0
  393. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/install.mdx +173 -0
  394. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/link.mdx +163 -0
  395. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/outdated.mdx +140 -0
  396. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/patch.mdx +171 -0
  397. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/publish.mdx +198 -0
  398. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/remove.mdx +146 -0
  399. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/run.mdx +305 -0
  400. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/test.mdx +105 -0
  401. package/native/src/cli/node_modules/bun-types/docs/snippets/cli/update.mdx +144 -0
  402. package/native/src/cli/node_modules/bun-types/docs/test/code-coverage.mdx +409 -0
  403. package/native/src/cli/node_modules/bun-types/docs/test/configuration.mdx +520 -0
  404. package/native/src/cli/node_modules/bun-types/docs/test/dates-times.mdx +129 -0
  405. package/native/src/cli/node_modules/bun-types/docs/test/discovery.mdx +90 -0
  406. package/native/src/cli/node_modules/bun-types/docs/test/dom.mdx +226 -0
  407. package/native/src/cli/node_modules/bun-types/docs/test/index.mdx +409 -0
  408. package/native/src/cli/node_modules/bun-types/docs/test/lifecycle.mdx +366 -0
  409. package/native/src/cli/node_modules/bun-types/docs/test/mocks.mdx +637 -0
  410. package/native/src/cli/node_modules/bun-types/docs/test/reporters.mdx +126 -0
  411. package/native/src/cli/node_modules/bun-types/docs/test/runtime-behavior.mdx +342 -0
  412. package/native/src/cli/node_modules/bun-types/docs/test/snapshots.mdx +434 -0
  413. package/native/src/cli/node_modules/bun-types/docs/test/writing-tests.mdx +672 -0
  414. package/native/src/cli/node_modules/bun-types/docs/typescript.mdx +54 -0
  415. package/native/src/cli/node_modules/bun-types/extensions.d.ts +40 -0
  416. package/native/src/cli/node_modules/bun-types/fetch.d.ts +79 -0
  417. package/native/src/cli/node_modules/bun-types/ffi.d.ts +1154 -0
  418. package/native/src/cli/node_modules/bun-types/globals.d.ts +2067 -0
  419. package/native/src/cli/node_modules/bun-types/html-rewriter.d.ts +186 -0
  420. package/native/src/cli/node_modules/bun-types/index.d.ts +32 -0
  421. package/native/src/cli/node_modules/bun-types/jsc.d.ts +233 -0
  422. package/native/src/cli/node_modules/bun-types/jsx.d.ts +11 -0
  423. package/native/src/cli/node_modules/bun-types/overrides.d.ts +376 -0
  424. package/native/src/cli/node_modules/bun-types/package.json +37 -0
  425. package/native/src/cli/node_modules/bun-types/redis.d.ts +3352 -0
  426. package/native/src/cli/node_modules/bun-types/s3.d.ts +1335 -0
  427. package/native/src/cli/node_modules/bun-types/security.d.ts +101 -0
  428. package/native/src/cli/node_modules/bun-types/serve.d.ts +1296 -0
  429. package/native/src/cli/node_modules/bun-types/shell.d.ts +380 -0
  430. package/native/src/cli/node_modules/bun-types/sql.d.ts +887 -0
  431. package/native/src/cli/node_modules/bun-types/sqlite.d.ts +1322 -0
  432. package/native/src/cli/node_modules/bun-types/test-globals.d.ts +22 -0
  433. package/native/src/cli/node_modules/bun-types/test.d.ts +2392 -0
  434. package/native/src/cli/node_modules/bun-types/vendor/expect-type/branding.d.ts +283 -0
  435. package/native/src/cli/node_modules/bun-types/vendor/expect-type/index.d.ts +1207 -0
  436. package/native/src/cli/node_modules/bun-types/vendor/expect-type/messages.d.ts +395 -0
  437. package/native/src/cli/node_modules/bun-types/vendor/expect-type/overloads.d.ts +669 -0
  438. package/native/src/cli/node_modules/bun-types/vendor/expect-type/utils.d.ts +431 -0
  439. package/native/src/cli/node_modules/bun-types/wasm.d.ts +193 -0
  440. package/native/src/cli/node_modules/esbuild/LICENSE.md +21 -0
  441. package/native/src/cli/node_modules/esbuild/README.md +3 -0
  442. package/native/src/cli/node_modules/esbuild/bin/esbuild +223 -0
  443. package/native/src/cli/node_modules/esbuild/install.js +289 -0
  444. package/native/src/cli/node_modules/esbuild/lib/main.d.ts +716 -0
  445. package/native/src/cli/node_modules/esbuild/lib/main.js +2532 -0
  446. package/native/src/cli/node_modules/esbuild/package.json +49 -0
  447. package/native/src/cli/node_modules/typescript/LICENSE.txt +55 -0
  448. package/native/src/cli/node_modules/typescript/README.md +50 -0
  449. package/native/src/cli/node_modules/typescript/SECURITY.md +41 -0
  450. package/native/src/cli/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  451. package/native/src/cli/node_modules/typescript/bin/tsc +2 -0
  452. package/native/src/cli/node_modules/typescript/bin/tsserver +2 -0
  453. package/native/src/cli/node_modules/typescript/lib/_tsc.js +133818 -0
  454. package/native/src/cli/node_modules/typescript/lib/_tsserver.js +659 -0
  455. package/native/src/cli/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  456. package/native/src/cli/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  457. package/native/src/cli/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  458. package/native/src/cli/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  459. package/native/src/cli/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  460. package/native/src/cli/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  461. package/native/src/cli/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  462. package/native/src/cli/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  463. package/native/src/cli/node_modules/typescript/lib/lib.d.ts +22 -0
  464. package/native/src/cli/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
  465. package/native/src/cli/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
  466. package/native/src/cli/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
  467. package/native/src/cli/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
  468. package/native/src/cli/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
  469. package/native/src/cli/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
  470. package/native/src/cli/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
  471. package/native/src/cli/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
  472. package/native/src/cli/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
  473. package/native/src/cli/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
  474. package/native/src/cli/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
  475. package/native/src/cli/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
  476. package/native/src/cli/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
  477. package/native/src/cli/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
  478. package/native/src/cli/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
  479. package/native/src/cli/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
  480. package/native/src/cli/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
  481. package/native/src/cli/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
  482. package/native/src/cli/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
  483. package/native/src/cli/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
  484. package/native/src/cli/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
  485. package/native/src/cli/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
  486. package/native/src/cli/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
  487. package/native/src/cli/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
  488. package/native/src/cli/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
  489. package/native/src/cli/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
  490. package/native/src/cli/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
  491. package/native/src/cli/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
  492. package/native/src/cli/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
  493. package/native/src/cli/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
  494. package/native/src/cli/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
  495. package/native/src/cli/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
  496. package/native/src/cli/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
  497. package/native/src/cli/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
  498. package/native/src/cli/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
  499. package/native/src/cli/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
  500. package/native/src/cli/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
  501. package/native/src/cli/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
  502. package/native/src/cli/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
  503. package/native/src/cli/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
  504. package/native/src/cli/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
  505. package/native/src/cli/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
  506. package/native/src/cli/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
  507. package/native/src/cli/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
  508. package/native/src/cli/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
  509. package/native/src/cli/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
  510. package/native/src/cli/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
  511. package/native/src/cli/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
  512. package/native/src/cli/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
  513. package/native/src/cli/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
  514. package/native/src/cli/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
  515. package/native/src/cli/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
  516. package/native/src/cli/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
  517. package/native/src/cli/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
  518. package/native/src/cli/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
  519. package/native/src/cli/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
  520. package/native/src/cli/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
  521. package/native/src/cli/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
  522. package/native/src/cli/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
  523. package/native/src/cli/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
  524. package/native/src/cli/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
  525. package/native/src/cli/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
  526. package/native/src/cli/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
  527. package/native/src/cli/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
  528. package/native/src/cli/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
  529. package/native/src/cli/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
  530. package/native/src/cli/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
  531. package/native/src/cli/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
  532. package/native/src/cli/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
  533. package/native/src/cli/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
  534. package/native/src/cli/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
  535. package/native/src/cli/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
  536. package/native/src/cli/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
  537. package/native/src/cli/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
  538. package/native/src/cli/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
  539. package/native/src/cli/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
  540. package/native/src/cli/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
  541. package/native/src/cli/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
  542. package/native/src/cli/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
  543. package/native/src/cli/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
  544. package/native/src/cli/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
  545. package/native/src/cli/node_modules/typescript/lib/lib.es6.d.ts +23 -0
  546. package/native/src/cli/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
  547. package/native/src/cli/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
  548. package/native/src/cli/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
  549. package/native/src/cli/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
  550. package/native/src/cli/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
  551. package/native/src/cli/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
  552. package/native/src/cli/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
  553. package/native/src/cli/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
  554. package/native/src/cli/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
  555. package/native/src/cli/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
  556. package/native/src/cli/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
  557. package/native/src/cli/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
  558. package/native/src/cli/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
  559. package/native/src/cli/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
  560. package/native/src/cli/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
  561. package/native/src/cli/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
  562. package/native/src/cli/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
  563. package/native/src/cli/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  564. package/native/src/cli/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  565. package/native/src/cli/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  566. package/native/src/cli/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  567. package/native/src/cli/node_modules/typescript/lib/tsc.js +8 -0
  568. package/native/src/cli/node_modules/typescript/lib/tsserver.js +8 -0
  569. package/native/src/cli/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  570. package/native/src/cli/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  571. package/native/src/cli/node_modules/typescript/lib/typesMap.json +497 -0
  572. package/native/src/cli/node_modules/typescript/lib/typescript.d.ts +11437 -0
  573. package/native/src/cli/node_modules/typescript/lib/typescript.js +200276 -0
  574. package/native/src/cli/node_modules/typescript/lib/typingsInstaller.js +8 -0
  575. package/native/src/cli/node_modules/typescript/lib/watchGuard.js +53 -0
  576. package/native/src/cli/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  577. package/native/src/cli/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  578. package/native/src/cli/node_modules/typescript/package.json +120 -0
  579. package/native/src/cli/node_modules/undici-types/LICENSE +21 -0
  580. package/native/src/cli/node_modules/undici-types/README.md +6 -0
  581. package/native/src/cli/node_modules/undici-types/agent.d.ts +31 -0
  582. package/native/src/cli/node_modules/undici-types/api.d.ts +43 -0
  583. package/native/src/cli/node_modules/undici-types/balanced-pool.d.ts +29 -0
  584. package/native/src/cli/node_modules/undici-types/cache.d.ts +36 -0
  585. package/native/src/cli/node_modules/undici-types/client.d.ts +108 -0
  586. package/native/src/cli/node_modules/undici-types/connector.d.ts +34 -0
  587. package/native/src/cli/node_modules/undici-types/content-type.d.ts +21 -0
  588. package/native/src/cli/node_modules/undici-types/cookies.d.ts +28 -0
  589. package/native/src/cli/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
  590. package/native/src/cli/node_modules/undici-types/dispatcher.d.ts +256 -0
  591. package/native/src/cli/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
  592. package/native/src/cli/node_modules/undici-types/errors.d.ts +149 -0
  593. package/native/src/cli/node_modules/undici-types/eventsource.d.ts +61 -0
  594. package/native/src/cli/node_modules/undici-types/fetch.d.ts +209 -0
  595. package/native/src/cli/node_modules/undici-types/file.d.ts +39 -0
  596. package/native/src/cli/node_modules/undici-types/filereader.d.ts +54 -0
  597. package/native/src/cli/node_modules/undici-types/formdata.d.ts +108 -0
  598. package/native/src/cli/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  599. package/native/src/cli/node_modules/undici-types/global-origin.d.ts +7 -0
  600. package/native/src/cli/node_modules/undici-types/handlers.d.ts +15 -0
  601. package/native/src/cli/node_modules/undici-types/header.d.ts +4 -0
  602. package/native/src/cli/node_modules/undici-types/index.d.ts +71 -0
  603. package/native/src/cli/node_modules/undici-types/interceptors.d.ts +17 -0
  604. package/native/src/cli/node_modules/undici-types/mock-agent.d.ts +50 -0
  605. package/native/src/cli/node_modules/undici-types/mock-client.d.ts +25 -0
  606. package/native/src/cli/node_modules/undici-types/mock-errors.d.ts +12 -0
  607. package/native/src/cli/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  608. package/native/src/cli/node_modules/undici-types/mock-pool.d.ts +25 -0
  609. package/native/src/cli/node_modules/undici-types/package.json +55 -0
  610. package/native/src/cli/node_modules/undici-types/patch.d.ts +33 -0
  611. package/native/src/cli/node_modules/undici-types/pool-stats.d.ts +19 -0
  612. package/native/src/cli/node_modules/undici-types/pool.d.ts +39 -0
  613. package/native/src/cli/node_modules/undici-types/proxy-agent.d.ts +28 -0
  614. package/native/src/cli/node_modules/undici-types/readable.d.ts +65 -0
  615. package/native/src/cli/node_modules/undici-types/retry-agent.d.ts +8 -0
  616. package/native/src/cli/node_modules/undici-types/retry-handler.d.ts +116 -0
  617. package/native/src/cli/node_modules/undici-types/util.d.ts +18 -0
  618. package/native/src/cli/node_modules/undici-types/webidl.d.ts +228 -0
  619. package/native/src/cli/node_modules/undici-types/websocket.d.ts +150 -0
  620. package/native/src/platform/darwin/backend_bootstrap.zc +1 -1
  621. package/native/src/platform/darwin/bootstrap.zc +1 -1
  622. package/native/src/platform/darwin/platform.zc +22 -0
  623. package/native/src/platform/darwin/webview.zc +158 -3
  624. package/native/src/platform/darwin/webview_bootstrap.zc +2 -2
  625. package/native/src/platform/darwin/window.zc +264 -0
  626. package/native/src/platform/windows/backend_bootstrap.zc +1 -1
  627. package/native/src/platform/windows/bootstrap.zc +1 -1
  628. package/native/src/platform/windows/platform.zc +27 -1
  629. package/native/src/platform/windows/webview.zc +444 -2
  630. package/native/src/platform/windows/webview_bootstrap.zc +2 -2
  631. package/native/src/platform/windows/window.zc +31 -0
  632. package/native/vendor/quickjs-ng/README.md +24 -0
  633. package/native/vendor/quickjs-ng/docs/.nvmrc +1 -0
  634. package/native/vendor/quickjs-ng/docs/babel.config.js +3 -0
  635. package/native/vendor/quickjs-ng/docs/docs/building.md +63 -0
  636. package/native/vendor/quickjs-ng/docs/docs/cli.md +130 -0
  637. package/native/vendor/quickjs-ng/docs/docs/developer-guide/_category_.json +7 -0
  638. package/native/vendor/quickjs-ng/docs/docs/developer-guide/api.md +3 -0
  639. package/native/vendor/quickjs-ng/docs/docs/developer-guide/internals.md +117 -0
  640. package/native/vendor/quickjs-ng/docs/docs/developer-guide/intro.md +113 -0
  641. package/native/vendor/quickjs-ng/docs/docs/diff.md +68 -0
  642. package/native/vendor/quickjs-ng/docs/docs/es_features.md +11 -0
  643. package/native/vendor/quickjs-ng/docs/docs/installation.md +34 -0
  644. package/native/vendor/quickjs-ng/docs/docs/intro.md +33 -0
  645. package/native/vendor/quickjs-ng/docs/docs/projects.md +67 -0
  646. package/native/vendor/quickjs-ng/docs/docs/stdlib.md +605 -0
  647. package/native/vendor/quickjs-ng/docs/docs/supported_platforms.md +20 -0
  648. package/native/vendor/quickjs-ng/docs/docusaurus.config.js +114 -0
  649. package/native/vendor/quickjs-ng/docs/package-lock.json +14656 -0
  650. package/native/vendor/quickjs-ng/docs/package.json +42 -0
  651. package/native/vendor/quickjs-ng/docs/sidebars.js +20 -0
  652. package/native/vendor/quickjs-ng/docs/src/css/custom.css +30 -0
  653. package/native/vendor/quickjs-ng/docs/static/.nojekyll +0 -0
  654. package/native/vendor/quickjs-ng/docs/static/img/favicon.ico +0 -0
  655. package/native/vendor/quickjs-ng/test262-fast.conf +132 -0
  656. package/native/vendor/quickjs-ng/test262.conf +416 -0
  657. package/native/vendor/quickjs-ng/test262_errors.txt +93 -0
  658. package/package.json +1 -1
  659. package/src/build-config.ts +6 -0
  660. package/src/build.ts +2 -1
  661. package/src/config.ts +9 -0
  662. package/src/package.ts +20 -0
@@ -283,20 +283,41 @@ raw {
283
283
  if (--self->refCount == 0) { free(self); return 0; }
284
284
  return self->refCount;
285
285
  }
286
+ wchar_t* zapp_pending_deep_link = NULL;
287
+
286
288
  static HRESULT STDMETHODCALLTYPE znh_Invoke(
287
289
  ICoreWebView2NavigationCompletedEventHandler* This,
288
290
  ICoreWebView2* sender,
289
291
  ICoreWebView2NavigationCompletedEventArgs* args
290
292
  ) {
291
- (void)sender; (void)args;
293
+ (void)args;
292
294
  ZappNavHandler* self = (ZappNavHandler*)This;
293
295
  if (!self->firstNavDone) {
294
296
  self->firstNavDone = TRUE;
295
297
  // Workaround: toggle visibility to force WebView2 to composite
296
- // https://github.com/MicrosoftEdge/WebView2Feedback/issues/1077
297
298
  ICoreWebView2Controller_put_IsVisible(self->controller, FALSE);
298
299
  ICoreWebView2Controller_put_IsVisible(self->controller, TRUE);
299
300
  ICoreWebView2Controller_MoveFocus(self->controller, COREWEBVIEW2_MOVE_FOCUS_REASON_PROGRAMMATIC);
301
+
302
+ // Dispatch pending deep link URL if app was launched with one
303
+ if (zapp_pending_deep_link) {
304
+ char* urlUtf8 = zapp_wide_to_utf8(zapp_pending_deep_link);
305
+ if (urlUtf8) {
306
+ char* escaped = zapp_escape_js_string(urlUtf8);
307
+ size_t jsLen = strlen(escaped) + 256;
308
+ char* js = (char*)malloc(jsLen);
309
+ snprintf(js, jsLen,
310
+ "(function(){var b=globalThis[Symbol.for('zapp.bridge')];"
311
+ "if(b&&b.deliverEvent)b.deliverEvent('app:open-url',{url:'%s'});})();",
312
+ escaped);
313
+ ICoreWebView2_ExecuteScript(sender, zapp_utf8_to_wide(js), NULL);
314
+ free(js);
315
+ free(escaped);
316
+ free(urlUtf8);
317
+ }
318
+ free(zapp_pending_deep_link);
319
+ zapp_pending_deep_link = NULL;
320
+ }
300
321
  }
301
322
  return S_OK;
302
323
  }
@@ -474,6 +495,13 @@ raw {
474
495
  char* rel = zapp_url_to_rel_path(uri);
475
496
  free(uri);
476
497
 
498
+ // Block path traversal
499
+ if (rel && strstr(rel, "..") != NULL) {
500
+ zapp_send_resource_response(args, 403, "text/plain", "Forbidden", 9, 0, NULL);
501
+ free(rel);
502
+ return S_OK;
503
+ }
504
+
477
505
  char lookupPath[512];
478
506
  snprintf(lookupPath, sizeof(lookupPath), "/%s", rel);
479
507
 
@@ -596,6 +624,164 @@ raw {
596
624
  }
597
625
  }
598
626
 
627
+ // Register NavigationStarting handler (URL restriction)
628
+ {
629
+ extern int zapp_build_is_dev_mode(void);
630
+ extern const char* zapp_build_allowed_navigation(void);
631
+
632
+ // Simple URL check — allows app URLs, localhost in dev, and user patterns
633
+ static int zapp_is_nav_allowed(const wchar_t* uri) {
634
+ if (!uri) return 1;
635
+ char* url = zapp_wide_to_utf8(uri);
636
+ if (!url) return 1;
637
+
638
+ // Always allow app scheme
639
+ if (strncmp(url, "https://app.localhost", 20) == 0 ||
640
+ strncmp(url, "about:", 6) == 0 ||
641
+ strncmp(url, "blob:", 5) == 0) {
642
+ free(url);
643
+ return 1;
644
+ }
645
+
646
+ // Dev mode: allow localhost
647
+ if (zapp_build_is_dev_mode()) {
648
+ if (strncmp(url, "http://localhost", 16) == 0 ||
649
+ strncmp(url, "http://127.0.0.1", 16) == 0 ||
650
+ strncmp(url, "https://localhost", 17) == 0) {
651
+ free(url);
652
+ return 1;
653
+ }
654
+ }
655
+
656
+ // Check user allowlist
657
+ const char* patternsRaw = zapp_build_allowed_navigation();
658
+ if (patternsRaw && patternsRaw[0] == '[') {
659
+ // Simple JSON array parse — look for string patterns
660
+ const char* p = patternsRaw + 1;
661
+ while (*p) {
662
+ while (*p == ' ' || *p == ',') p++;
663
+ if (*p == ']') break;
664
+ if (*p == '"') {
665
+ p++;
666
+ const char* start = p;
667
+ while (*p && *p != '"') p++;
668
+ size_t plen = (size_t)(p - start);
669
+ if (*p == '"') p++;
670
+ // Check if pattern matches (simple prefix glob)
671
+ if (plen > 0 && start[plen - 1] == '*') {
672
+ if (strncmp(url, start, plen - 1) == 0) {
673
+ free(url);
674
+ return 1;
675
+ }
676
+ } else if (strlen(url) == plen && strncmp(url, start, plen) == 0) {
677
+ free(url);
678
+ return 1;
679
+ }
680
+ } else {
681
+ p++;
682
+ }
683
+ }
684
+ }
685
+
686
+ free(url);
687
+ return 0;
688
+ }
689
+
690
+ typedef struct {
691
+ ICoreWebView2NavigationStartingEventHandlerVtbl* lpVtbl;
692
+ ULONG refCount;
693
+ } ZappNavStartHandler;
694
+
695
+ static HRESULT STDMETHODCALLTYPE zns_QI(ICoreWebView2NavigationStartingEventHandler* This, REFIID riid, void** ppv) {
696
+ (void)riid; *ppv = This; This->lpVtbl->AddRef(This); return S_OK;
697
+ }
698
+ static ULONG STDMETHODCALLTYPE zns_AddRef(ICoreWebView2NavigationStartingEventHandler* This) {
699
+ return ++((ZappNavStartHandler*)This)->refCount;
700
+ }
701
+ static ULONG STDMETHODCALLTYPE zns_Release(ICoreWebView2NavigationStartingEventHandler* This) {
702
+ ZappNavStartHandler* self = (ZappNavStartHandler*)This;
703
+ if (--self->refCount == 0) { free(self); return 0; }
704
+ return self->refCount;
705
+ }
706
+ static HRESULT STDMETHODCALLTYPE zns_Invoke(
707
+ ICoreWebView2NavigationStartingEventHandler* This,
708
+ ICoreWebView2* sender,
709
+ ICoreWebView2NavigationStartingEventArgs* args
710
+ ) {
711
+ (void)This; (void)sender;
712
+ wchar_t* uriW = NULL;
713
+ ICoreWebView2NavigationStartingEventArgs_get_Uri(args, &uriW);
714
+ if (uriW) {
715
+ if (!zapp_is_nav_allowed(uriW)) {
716
+ ICoreWebView2NavigationStartingEventArgs_put_Cancel(args, TRUE);
717
+ // If user-initiated, open in system browser
718
+ BOOL isUserInitiated = FALSE;
719
+ ICoreWebView2NavigationStartingEventArgs_get_IsUserInitiated(args, &isUserInitiated);
720
+ if (isUserInitiated) {
721
+ ShellExecuteW(NULL, L"open", uriW, NULL, NULL, SW_SHOWNORMAL);
722
+ }
723
+ }
724
+ CoTaskMemFree(uriW);
725
+ }
726
+ return S_OK;
727
+ }
728
+
729
+ static ICoreWebView2NavigationStartingEventHandlerVtbl zns_vtbl = {
730
+ zns_QI, zns_AddRef, zns_Release, zns_Invoke
731
+ };
732
+
733
+ ZappNavStartHandler* nsHandler = (ZappNavStartHandler*)calloc(1, sizeof(ZappNavStartHandler));
734
+ nsHandler->lpVtbl = &zns_vtbl;
735
+ nsHandler->refCount = 1;
736
+ EventRegistrationToken nsToken;
737
+ ICoreWebView2_add_NavigationStarting(webview, (ICoreWebView2NavigationStartingEventHandler*)nsHandler, &nsToken);
738
+ }
739
+
740
+ // Handle target="_blank" — open in system browser instead of new webview window
741
+ {
742
+ typedef struct {
743
+ ICoreWebView2NewWindowRequestedEventHandlerVtbl* lpVtbl;
744
+ ULONG refCount;
745
+ } ZappNewWindowHandler;
746
+
747
+ static HRESULT STDMETHODCALLTYPE znw_QI(ICoreWebView2NewWindowRequestedEventHandler* This, REFIID riid, void** ppv) {
748
+ (void)riid; *ppv = This; This->lpVtbl->AddRef(This); return S_OK;
749
+ }
750
+ static ULONG STDMETHODCALLTYPE znw_AddRef(ICoreWebView2NewWindowRequestedEventHandler* This) {
751
+ return ++((ZappNewWindowHandler*)This)->refCount;
752
+ }
753
+ static ULONG STDMETHODCALLTYPE znw_Release(ICoreWebView2NewWindowRequestedEventHandler* This) {
754
+ ZappNewWindowHandler* self = (ZappNewWindowHandler*)This;
755
+ if (--self->refCount == 0) { free(self); return 0; }
756
+ return self->refCount;
757
+ }
758
+ static HRESULT STDMETHODCALLTYPE znw_Invoke(
759
+ ICoreWebView2NewWindowRequestedEventHandler* This,
760
+ ICoreWebView2* sender,
761
+ ICoreWebView2NewWindowRequestedEventArgs* args
762
+ ) {
763
+ (void)This; (void)sender;
764
+ wchar_t* uriW = NULL;
765
+ ICoreWebView2NewWindowRequestedEventArgs_get_Uri(args, &uriW);
766
+ if (uriW) {
767
+ ShellExecuteW(NULL, L"open", uriW, NULL, NULL, SW_SHOWNORMAL);
768
+ CoTaskMemFree(uriW);
769
+ }
770
+ ICoreWebView2NewWindowRequestedEventArgs_put_Handled(args, TRUE);
771
+ return S_OK;
772
+ }
773
+
774
+ static ICoreWebView2NewWindowRequestedEventHandlerVtbl znw_vtbl = {
775
+ znw_QI, znw_AddRef, znw_Release, znw_Invoke
776
+ };
777
+
778
+ ZappNewWindowHandler* nwHandler = (ZappNewWindowHandler*)calloc(1, sizeof(ZappNewWindowHandler));
779
+ nwHandler->lpVtbl = &znw_vtbl;
780
+ nwHandler->refCount = 1;
781
+ EventRegistrationToken nwToken;
782
+ ICoreWebView2_add_NewWindowRequested(webview, (ICoreWebView2NewWindowRequestedEventHandler*)nwHandler, &nwToken);
783
+ }
784
+
599
785
  // Register NavigationCompleted handler (IsVisible toggle workaround)
600
786
  ZappNavHandler* navHandler = (ZappNavHandler*)calloc(1, sizeof(ZappNavHandler));
601
787
  navHandler->lpVtbl = &znh_vtbl;
@@ -1034,6 +1220,262 @@ raw {
1034
1220
  if (url) free(url);
1035
1221
  }
1036
1222
 
1223
+ // --- Custom Menu Builder ---
1224
+ #define ZAPP_MENU_CMD_CUSTOM_BASE 41000
1225
+ #define ZAPP_MENU_MAX_CUSTOM 256
1226
+
1227
+ static char zapp_menu_id_map[ZAPP_MENU_MAX_CUSTOM][64] = {{0}};
1228
+ static int zapp_menu_custom_count = 0;
1229
+
1230
+ static int zapp_menu_register_id(const char* itemId) {
1231
+ if (!itemId || zapp_menu_custom_count >= ZAPP_MENU_MAX_CUSTOM) return 0;
1232
+ int cmd = ZAPP_MENU_CMD_CUSTOM_BASE + zapp_menu_custom_count;
1233
+ strncpy(zapp_menu_id_map[zapp_menu_custom_count], itemId, 63);
1234
+ zapp_menu_custom_count++;
1235
+ return cmd;
1236
+ }
1237
+
1238
+ static const char* zapp_menu_id_for_cmd(int cmd) {
1239
+ int idx = cmd - ZAPP_MENU_CMD_CUSTOM_BASE;
1240
+ if (idx >= 0 && idx < zapp_menu_custom_count) return zapp_menu_id_map[idx];
1241
+ return NULL;
1242
+ }
1243
+
1244
+ // Called from zapp_handle_menu_command for custom items
1245
+ void zapp_dispatch_custom_menu_click(const char* itemId) {
1246
+ if (!itemId) return;
1247
+ char js[512];
1248
+ snprintf(js, sizeof(js),
1249
+ "(function(){var b=globalThis[Symbol.for('zapp.bridge')];"
1250
+ "if(b&&b.deliverEvent)b.deliverEvent('menu:%s',{});})();",
1251
+ itemId);
1252
+ zapp_windows_webview_eval_all(js);
1253
+ }
1254
+
1255
+ static void zapp_build_role_menu_win(HMENU menu, const char* role) {
1256
+ if (strcmp(role, "editMenu") == 0) {
1257
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_UNDO, L"Undo\tCtrl+Z");
1258
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_REDO, L"Redo\tCtrl+Y");
1259
+ AppendMenuW(menu, MF_SEPARATOR, 0, NULL);
1260
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_CUT, L"Cut\tCtrl+X");
1261
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_COPY, L"Copy\tCtrl+C");
1262
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_PASTE, L"Paste\tCtrl+V");
1263
+ AppendMenuW(menu, MF_SEPARATOR, 0, NULL);
1264
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_SELECTALL, L"Select All\tCtrl+A");
1265
+ } else if (strcmp(role, "windowMenu") == 0) {
1266
+ AppendMenuW(menu, MF_STRING, IDM_WIN_MINIMIZE, L"Minimize");
1267
+ AppendMenuW(menu, MF_STRING, IDM_WIN_MAXIMIZE, L"Maximize");
1268
+ AppendMenuW(menu, MF_SEPARATOR, 0, NULL);
1269
+ AppendMenuW(menu, MF_STRING, IDM_WIN_CLOSE, L"Close\tAlt+F4");
1270
+ }
1271
+ }
1272
+
1273
+ extern char* zapp_json_get_string(const char* json, const char* key);
1274
+
1275
+ static void zapp_build_menu_items_win(HMENU parent, const char* itemsJson);
1276
+
1277
+ // Parse a JSON array of menu items and build HMENU
1278
+ static void zapp_add_menu_item_win(HMENU menu, const char* itemJson) {
1279
+ if (!itemJson) return;
1280
+ char* role = zapp_json_get_string(itemJson, "role");
1281
+ if (role && role[0]) {
1282
+ // Item-level roles: native edit commands
1283
+ if (strcmp(role, "copy") == 0) {
1284
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_COPY, L"Copy");
1285
+ free(role); return;
1286
+ } else if (strcmp(role, "cut") == 0) {
1287
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_CUT, L"Cut");
1288
+ free(role); return;
1289
+ } else if (strcmp(role, "paste") == 0) {
1290
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_PASTE, L"Paste");
1291
+ free(role); return;
1292
+ } else if (strcmp(role, "selectAll") == 0) {
1293
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_SELECTALL, L"Select All");
1294
+ free(role); return;
1295
+ } else if (strcmp(role, "undo") == 0) {
1296
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_UNDO, L"Undo");
1297
+ free(role); return;
1298
+ } else if (strcmp(role, "redo") == 0) {
1299
+ AppendMenuW(menu, MF_STRING, IDM_EDIT_REDO, L"Redo");
1300
+ free(role); return;
1301
+ }
1302
+ // Menu-level roles: create submenu
1303
+ char* label = zapp_json_get_string(itemJson, "label");
1304
+ HMENU sub = CreatePopupMenu();
1305
+ zapp_build_role_menu_win(sub, role);
1306
+ wchar_t wLabel[128] = {0};
1307
+ if (label && label[0]) {
1308
+ MultiByteToWideChar(CP_UTF8, 0, label, -1, wLabel, 128);
1309
+ } else {
1310
+ if (strcmp(role, "editMenu") == 0) wcscpy(wLabel, L"Edit");
1311
+ else if (strcmp(role, "windowMenu") == 0) wcscpy(wLabel, L"Window");
1312
+ else MultiByteToWideChar(CP_UTF8, 0, role, -1, wLabel, 128);
1313
+ }
1314
+ AppendMenuW(menu, MF_POPUP, (UINT_PTR)sub, wLabel);
1315
+ if (label) free(label);
1316
+ free(role);
1317
+ return;
1318
+ }
1319
+ if (role) free(role);
1320
+
1321
+ char* type = zapp_json_get_string(itemJson, "type");
1322
+ if (type && strcmp(type, "separator") == 0) {
1323
+ AppendMenuW(menu, MF_SEPARATOR, 0, NULL);
1324
+ free(type);
1325
+ return;
1326
+ }
1327
+ if (type) free(type);
1328
+
1329
+ char* label = zapp_json_get_string(itemJson, "label");
1330
+ if (!label || !label[0]) { if (label) free(label); return; }
1331
+
1332
+ // Check for submenu (look for "submenu":[)
1333
+ char* subRaw = NULL;
1334
+ {
1335
+ const char* subKey = "\"submenu\":[";
1336
+ const char* subStart = strstr(itemJson, subKey);
1337
+ if (subStart) {
1338
+ subStart += strlen("\"submenu\":");
1339
+ // Find matching ]
1340
+ int depth = 0;
1341
+ const char* p = subStart;
1342
+ const char* end = NULL;
1343
+ while (*p) {
1344
+ if (*p == '[') depth++;
1345
+ else if (*p == ']') { depth--; if (depth == 0) { end = p + 1; break; } }
1346
+ p++;
1347
+ }
1348
+ if (end) {
1349
+ size_t len = (size_t)(end - subStart);
1350
+ subRaw = (char*)malloc(len + 1);
1351
+ memcpy(subRaw, subStart, len);
1352
+ subRaw[len] = '\0';
1353
+ }
1354
+ }
1355
+ }
1356
+
1357
+ if (subRaw) {
1358
+ HMENU sub = CreatePopupMenu();
1359
+ zapp_build_menu_items_win(sub, subRaw);
1360
+ free(subRaw);
1361
+ // Build label with accelerator hint
1362
+ char* accel = zapp_json_get_string(itemJson, "accelerator");
1363
+ wchar_t wLabel[256] = {0};
1364
+ if (accel && accel[0]) {
1365
+ char combined[256];
1366
+ snprintf(combined, sizeof(combined), "%s\t%s", label, accel);
1367
+ MultiByteToWideChar(CP_UTF8, 0, combined, -1, wLabel, 256);
1368
+ free(accel);
1369
+ } else {
1370
+ MultiByteToWideChar(CP_UTF8, 0, label, -1, wLabel, 256);
1371
+ }
1372
+ AppendMenuW(menu, MF_POPUP, (UINT_PTR)sub, wLabel);
1373
+ free(label);
1374
+ return;
1375
+ }
1376
+
1377
+ // Regular item
1378
+ char* itemId = zapp_json_get_string(itemJson, "id");
1379
+ char* accel = zapp_json_get_string(itemJson, "accelerator");
1380
+ int cmd = 0;
1381
+ if (itemId && itemId[0]) {
1382
+ cmd = zapp_menu_register_id(itemId);
1383
+ }
1384
+
1385
+ wchar_t wLabel[256] = {0};
1386
+ if (accel && accel[0]) {
1387
+ char combined[256];
1388
+ snprintf(combined, sizeof(combined), "%s\t%s", label, accel);
1389
+ MultiByteToWideChar(CP_UTF8, 0, combined, -1, wLabel, 256);
1390
+ } else {
1391
+ MultiByteToWideChar(CP_UTF8, 0, label, -1, wLabel, 256);
1392
+ }
1393
+
1394
+ UINT flags = MF_STRING;
1395
+ extern int zapp_json_get_bool(const char* json, const char* key, int default_val);
1396
+ if (!zapp_json_get_bool(itemJson, "enabled", 1)) flags |= MF_GRAYED;
1397
+ if (zapp_json_get_bool(itemJson, "checked", 0)) flags |= MF_CHECKED;
1398
+
1399
+ AppendMenuW(menu, flags, cmd, wLabel);
1400
+
1401
+ if (itemId) free(itemId);
1402
+ if (accel) free(accel);
1403
+ free(label);
1404
+ }
1405
+
1406
+ // Parse "[{...},{...}]" array of menu items
1407
+ static void zapp_build_menu_items_win(HMENU parent, const char* arrJson) {
1408
+ if (!arrJson || arrJson[0] != '[') return;
1409
+ const char* p = arrJson + 1;
1410
+ while (*p) {
1411
+ while (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t' || *p == ',') p++;
1412
+ if (*p == ']' || *p == '\0') break;
1413
+ if (*p == '{') {
1414
+ int depth = 0;
1415
+ const char* start = p;
1416
+ while (*p) {
1417
+ if (*p == '{') depth++;
1418
+ else if (*p == '}') { depth--; if (depth == 0) { p++; break; } }
1419
+ p++;
1420
+ }
1421
+ size_t len = (size_t)(p - start);
1422
+ char* item = (char*)malloc(len + 1);
1423
+ memcpy(item, start, len);
1424
+ item[len] = '\0';
1425
+ zapp_add_menu_item_win(parent, item);
1426
+ free(item);
1427
+ } else {
1428
+ p++;
1429
+ }
1430
+ }
1431
+ }
1432
+
1433
+ void app_set_menu(App* app, char* payload) {
1434
+ (void)app;
1435
+ if (payload == NULL) return;
1436
+ // Reset custom ID registry
1437
+ zapp_menu_custom_count = 0;
1438
+ memset(zapp_menu_id_map, 0, sizeof(zapp_menu_id_map));
1439
+
1440
+ // Find "items":[ in the payload
1441
+ const char* itemsKey = "\"items\":[";
1442
+ const char* itemsStart = strstr((const char*)payload, itemsKey);
1443
+ if (!itemsStart) return;
1444
+ itemsStart += strlen("\"items\":");
1445
+
1446
+ // Find the matching ]
1447
+ int depth = 0;
1448
+ const char* p = itemsStart;
1449
+ const char* end = NULL;
1450
+ while (*p) {
1451
+ if (*p == '[') depth++;
1452
+ else if (*p == ']') { depth--; if (depth == 0) { end = p + 1; break; } }
1453
+ p++;
1454
+ }
1455
+ if (!end) return;
1456
+
1457
+ size_t len = (size_t)(end - itemsStart);
1458
+ char* arrJson = (char*)malloc(len + 1);
1459
+ memcpy(arrJson, itemsStart, len);
1460
+ arrJson[len] = '\0';
1461
+
1462
+ HMENU menuBar = CreateMenu();
1463
+ zapp_build_menu_items_win(menuBar, arrJson);
1464
+ free(arrJson);
1465
+
1466
+ // Apply to all windows
1467
+ extern const wchar_t* ZAPP_WINDOW_CLASS;
1468
+ HWND hwnd = NULL;
1469
+ while ((hwnd = FindWindowExW(NULL, hwnd, ZAPP_WINDOW_CLASS, NULL)) != NULL) {
1470
+ SetMenu(hwnd, menuBar);
1471
+ DrawMenuBar(hwnd);
1472
+ }
1473
+ if (zapp_default_menu) {
1474
+ // Don't destroy old menu — windows might reference it
1475
+ }
1476
+ zapp_default_menu = menuBar;
1477
+ }
1478
+
1037
1479
  // --- Sync bridge (moved from app.zc) ---
1038
1480
  #define ZAPP_MAX_SYNC_WAITS 256
1039
1481
  #define ZAPP_SYNC_TIMER_MAP_SIZE 512
@@ -1,9 +1,9 @@
1
1
  // AUTO-GENERATED FILE. DO NOT EDIT.
2
2
  // Source of truth: `packages/bootstrap/src/webview_windows.ts`
3
- // Generated: `2026-03-22T07:58:05.470Z`
3
+ // Generated: `2026-03-23T03:23:37.948Z`
4
4
 
5
5
  raw {
6
6
  const char* zapp_windows_webview_bootstrap_script(void) {
7
- return "(()=>{var{defineProperty:S,getOwnPropertyNames:s,getOwnPropertyDescriptor:o}=Object,d=Object.prototype.hasOwnProperty;var k=new WeakMap,n=(H)=>{var Q=k.get(H),$;if(Q)return Q;if(Q=S({},\"__esModule\",{value:!0}),H&&typeof H===\"object\"||typeof H===\"function\")s(H).map((K)=>!d.call(Q,K)&&S(Q,K,{get:()=>H[K],enumerable:!($=o(H,K))||$.enumerable}));return k.set(H,Q),Q};var GH={},j=globalThis,h=j.__zapp,L=h&&typeof h===\"object\"?h:{},v=()=>{if(j.__zapp===L)return;j.__zapp=L;try{Object.defineProperty(j,\"__zapp\",{value:L,enumerable:!0,configurable:!1,writable:!1})}catch{}},w=Symbol.for(\"zapp.bridge\"),R=Symbol.for(\"zapp.bootstrapConfig\"),I=Symbol.for(\"zapp.ownerId\"),f=j,P=(H)=>{let Q=f[w]?\?{},$=Object.assign({},Q,H);Object.defineProperty(f,w,{value:$,enumerable:!1,configurable:!0,writable:!1})},X={},Y={},_=0;P({_listeners:Y,_lastId:_});var D=X.__ctxId?\?=`ctx-${Date.now()}-${Math.random().toString(36).slice(2)}`,M=X.__pendingInvokes=X.__pendingInvokes?\?{},E=X.__pendingSyncWaits=X.__pendingSyncWaits?\?{},c=X.__invokeSeq?\?0,u=1,a=131072,y=f[R]==null?null:{name:f[R].name,applicationShouldTerminateAfterLastWindowClosed:f[R].applicationShouldTerminateAfterLastWindowClosed,webContentInspectable:f[R].webContentInspectable,maxWorkers:f[R].maxWorkers};try{delete f[R]}catch{}var l=(H)=>typeof H===\"string\"?H:JSON.stringify(H?\?{}),T=(H,Q,$)=>{v();let K=j.chrome?.webview;if(!K?.postMessage)return!1;return K.postMessage(`${H}\n${Q}\n${l($)}`),!0};X.invoke=(H,Q)=>new Promise(($,K)=>{let J=typeof H===\"string\"?H.trim():\"\";if(!J){K(Error(\"Service method must be a non-empty string.\"));return}if(l(Q).length>a){K(Error(\"Service payload exceeds max size.\"));return}let G=`${D}:inv-${++c}`;X.__invokeSeq=c;let x={v:u,id:G,method:J,args:Q,meta:{sourceCtxId:D}},F=setTimeout(()=>{delete M[G],K(Error(\"Service invocation timed out.\"))},15000);if(M[G]={resolve:$,reject:K,timeout:F},!T(\"invoke_rpc\",J,x))clearTimeout(F),delete M[G],K(Error(\"Native invoke transport unavailable.\"))});var b=()=>{let H=Error(\"Sync wait aborted.\");return H.name=\"AbortError\",H};X.syncWait=(H,Q=30000,$)=>new Promise((K,J)=>{let V=typeof H===\"string\"?H.trim():\"\";if(!V){J(Error(\"Sync key must be a non-empty string.\"));return}if($?.aborted){J(b());return}let G=`${D}:sync-${Date.now()}-${Math.random().toString(36).slice(2)}`,x=Q==null||Number.isNaN(Number(Q))?null:Math.floor(Number(Q)),F=x==null?null:Math.max(1,Math.min(300000,x)),z={id:G,key:V,timeoutMs:F,meta:{sourceCtxId:D}},Z=F==null?void 0:setTimeout(()=>{delete E[G],J(Error(\"Sync wait transport timed out.\"))},F+5000);if(E[G]={resolve:K,reject:J,timeout:Z},!T(\"sync\",\"wait\",z)){if(Z)clearTimeout(Z);delete E[G],J(Error(\"Native sync transport unavailable.\"));return}if($){let C=()=>{let A=E[G];if(!A)return;if(A.timeout)clearTimeout(A.timeout);delete E[G],T(\"sync\",\"cancel\",{id:G,meta:{sourceCtxId:D}}),J(b())};$.addEventListener(\"abort\",C,{once:!0})}});X.syncNotify=(H,Q=1)=>{let $=typeof H===\"string\"?H.trim():\"\";if(!$)return!1;let K=Math.max(1,Math.min(65535,Math.floor(Q)));return T(\"sync\",\"notify\",{key:$,count:K,meta:{sourceCtxId:D}})};X.syncCancel=(H)=>{let Q=typeof H===\"string\"?H.trim():\"\";if(!Q)return!1;return T(\"sync\",\"cancel\",{id:Q,meta:{sourceCtxId:D}})};X.emit=(H,Q)=>T(\"emit\",H,{__zapp_internal_meta:{sourceCtxId:D},data:Q});X.onEvent=(H,Q)=>{let $=++_;return(Y[H]?\?=[]).push({id:$,fn:Q}),$};X.offEvent=(H,Q)=>{let $=Y[H]?\?[];Y[H]=$.filter((K)=>K.id!==Q)};X.onceEvent=(H,Q)=>{let $=++_;return(Y[H]?\?=[]).push({id:$,fn:Q,once:!0}),$};X.offAllEvents=(H)=>{if(H)delete Y[H];else Object.keys(Y).forEach((Q)=>delete Y[Q])};var t=(H)=>{let Q=H.pathname.split(\".\").pop()?.toLowerCase();if(Q!==\"ts\"&&Q!==\"tsx\")return H.toString();let $=(Z)=>{let U=Z.startsWith(\"/\")?Z:`/${Z}`;if(H.protocol===\"zapp:\")return`zapp://app${U}`;return new URL(U,H).toString()},K=f[Symbol.for(\"zapp.workerManifest\")],J=H.pathname.split(\"/\").pop()?\?\"worker.ts\",V=`./${J}`;if(K){let Z=K[V]?\?K[J];if(typeof Z===\"string\"&&Z.length>0)return $(Z)}let G=H.pathname.split(\"/\"),z=`/zapp-workers/${(G[G.length-1]?\?\"worker.ts\").replace(/\\.[^.]+$/,\"\")}.mjs`;return $(z)},r=(H)=>H instanceof URL?t(H):H;if(!X.workerBridge){let H={},Q=0,$=f[I],K=typeof $===\"string\"&&$.length>0?$:`owner-${Date.now()}-${Math.random().toString(36).slice(2)}`;try{delete f[I]}catch{}let J=[],V=(F)=>{return H[F]?\?={message:[],error:[],close:[]},H[F]},G=(F,z,Z)=>{let U=(W)=>{queueMicrotask(W)};if(F===\"close\"){let W=H[z];U(()=>{if(W)for(let i of W.close)try{i(Z)}catch{}X.workerBridge?.terminateWorker(z)});return}let C=H[z];if(!C)return;let A=Z;if(typeof Z===\"string\")try{A=JSON.parse(Z)}catch{}let N=F===\"error\"?C.error:C.message;U(()=>{for(let W of N)try{W(A)}catch{}})};X.__workerBridgeDispatch=G,P({dispatchWorkerBridge:G}),X.workerBridge={createWorker(F,z){let Z=Boolean(z?.shared),U=`${K}:${D}:zw-${++Q}`;return V(U),J.push(U),T(\"worker\",\"create\",{id:U,scriptUrl:F,ownerId:K,shared:Z}),U},postToWorker(F,z){T(\"worker\",\"post\",{id:F,data:z,ownerId:K})},terminateWorker(F){T(\"worker\",\"terminate\",{id:F,ownerId:K}),J=J.filter((z)=>z!==F),delete H[F]},subscribe(F,z,Z,U){let C=V(F);if(z)C.message.push(z);if(Z)C.error.push(Z);if(U)C.close.push(U);return()=>{let A=H[F];if(!A)return;if(z)A.message=A.message.filter((N)=>N!==z);if(Z)A.error=A.error.filter((N)=>N!==Z);if(U)A.close=A.close.filter((N)=>N!==U)}}};let x=()=>{if(!J.length)return;T(\"worker\",\"reset_owner\",{ownerId:K}),J=[];for(let F of Object.keys(H))delete H[F]};P({resetOwnerWorkers:x,createWorker:X.workerBridge.createWorker.bind(X.workerBridge),postToWorker:X.workerBridge.postToWorker.bind(X.workerBridge),terminateWorker:X.workerBridge.terminateWorker.bind(X.workerBridge),subscribeWorker:X.workerBridge.subscribe.bind(X.workerBridge),resolveWorkerScriptURL:r}),j.addEventListener(\"beforeunload\",x),j.addEventListener(\"pagehide\",x)}var q={},e=0,HH=(H)=>new Promise((Q,$)=>{let K=`${D}:win-${++e}`,J=setTimeout(()=>{delete q[K],$(Error(\"Window creation timed out.\"))},15000);q[K]={resolve:Q,reject:$,timeout:J},T(\"window\",\"create\",{requestId:K,options:H})}),QH=(H,Q,$)=>{T(\"window\",Q,{windowId:H,...$})},$H=(H,Q)=>{T(\"app\",H,Q?\?{})},KH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.requestId!==\"string\")return;let K=q[$.requestId];if(!K)return;if(clearTimeout(K.timeout),delete q[$.requestId],$.ok===!1)K.reject(Error($.error?\?\"Window creation failed.\"));else K.resolve({id:$.id?\?\"\"})},p=(H,Q,$)=>{v();let K={windowId:H,timestamp:Date.now()};if($)try{let V=JSON.parse($);if(V.width||V.height)K.size={width:V.width?\?0,height:V.height?\?0};if(V.x!==void 0||V.y!==void 0)K.position={x:V.x?\?0,y:V.y?\?0}}catch{}let J=(V)=>{let G=Y[V];if(!G||G.length===0)return;let x=[];for(let F of G){try{F.fn(K)}catch{}if(!F.once)x.push(F)}if(x.length>0)Y[V]=x;else delete Y[V]};J(`__zapp_window:${H}:${Q}`),J(`window:${Q}`)};P({windowCreate:HH,windowAction:QH,appAction:$H,dispatchWindowResult:KH,dispatchWindowEvent:p,_emit:X.emit,_onEvent:X.onEvent,_onceEvent:X.onceEvent,_offEvent:X.offEvent,_offAllEvents:X.offAllEvents});L.invoke=X.invoke;L.emit=X.emit;L.on=(H,Q)=>{let $=X.onEvent?.(H,Q)?\?0;return()=>X.offEvent?.(H,$)};var XH=(H,Q)=>{v();let $=Q;if(typeof Q===\"string\"){let V=Q.trim();if(V.startsWith(\"{\")&&V.endsWith(\"}\")||V.startsWith(\"[\")&&V.endsWith(\"]\"))try{$=JSON.parse(Q)}catch{}}if($&&typeof $===\"object\"){let V=$;if(V.__zapp_internal_meta?.sourceCtxId===D)return;if(Object.prototype.hasOwnProperty.call(V,\"data\"))$=V.data}let K=Y[H]?\?[],J=[];for(let V of K){try{V.fn($)}catch{}if(!V.once)J.push(V)}if(J.length>0)Y[H]=J;else delete Y[H]},JH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.id!==\"string\"||$.id.length===0)return;let K=M[$.id];if(!K)return;if(clearTimeout(K.timeout),delete M[$.id],$.ok){K.resolve($.result);return}let J=$.error?.code?\?\"INTERNAL_ERROR\",V=$.error?.message?\?\"Service invocation failed\";K.reject(Error(`${J}: ${V}`))},VH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.id!==\"string\"||$.id.length===0)return;let K=E[$.id];if(!K)return;if(K.timeout)clearTimeout(K.timeout);if(delete E[$.id],!$.ok){K.reject(Error(\"Sync wait failed.\"));return}if($.status===\"cancelled\"){K.reject(b());return}K.resolve($.status===\"timed-out\"?\"timed-out\":\"notified\")},FH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.requestId!==\"string\")return;let K=`__zapp:dialog:${$.requestId}`,J=Y[K];if(J){for(let V of J)try{V.fn($)}catch{}delete Y[K]}};P({dispatchInvokeResult:JH,dispatchSyncResult:VH,dispatchDialogResult:FH,deliverEvent:XH,getConfig:()=>y==null?null:{...y},invoke:async(H)=>{let Q=H;if(!Q||typeof Q!==\"object\")throw Error(\"Invalid invoke request\");if(typeof Q.method!==\"string\")throw Error(\"Invalid service method\");let $=await X.invoke?.(Q.method,Q.args);return{v:u,id:Q.id,ok:!0,result:$}},getServiceBindings:()=>{let H=f[Symbol.for(\"zapp.bindingsManifest\")];if(typeof H!==\"string\")return null;return H},syncWait:async(H)=>{let Q=H;return X.syncWait?.(Q?.key?\?\"\",Q?.timeoutMs===void 0?30000:Q.timeoutMs,Q?.signal)?\?Promise.reject(Error(\"Sync unavailable\"))},syncNotify:(H)=>{let Q=H;return X.syncNotify?.(Q?.key?\?\"\",Q?.count?\?1)?\?!1},syncCancel:(H)=>{let Q=H;return X.syncCancel?.(Q?.id?\?\"\")?\?!1}});Object.defineProperties(L,{invoke:{value:X.invoke,enumerable:!0,configurable:!1,writable:!1},syncWait:{value:X.syncWait,enumerable:!0,configurable:!1,writable:!1},syncNotify:{value:X.syncNotify,enumerable:!0,configurable:!1,writable:!1},syncCancel:{value:X.syncCancel,enumerable:!0,configurable:!1,writable:!1},emit:{value:X.emit,enumerable:!0,configurable:!1,writable:!1},on:{value:L.on,enumerable:!0,configurable:!1,writable:!1}});Object.freeze(L);v();var O=Symbol.for(\"zapp.windowId\"),g=Symbol.for(\"zapp.windowReady\"),B=j,m=()=>{if(B[g])return;B[g]=!0;let H=B[O],Q=j.chrome?.webview;if(Q?.postMessage){let $=JSON.stringify({windowId:H?\?\"unknown\"});Q.postMessage(`window\nready\n${$}`)}p(H?\?\"unknown\",\"ready\")};if(typeof document<\"u\"){if(document.addEventListener(\"DOMContentLoaded\",m,{once:!0}),document.readyState!==\"loading\")m();document.addEventListener(\"mousedown\",(Q)=>{let $=Q.target;while($){if($.hasAttribute?.(\"data-zapp-drag-region\")){Q.preventDefault(),T(\"window\",\"startDrag\",{windowId:B[O]?\?\"unknown\"});return}let K=$.tagName;if(K===\"BUTTON\"||K===\"INPUT\"||K===\"SELECT\"||K===\"TEXTAREA\"||K===\"A\")return;$=$.parentElement}});let H=!1;document.addEventListener(\"mousemove\",(Q)=>{let $=Q.target,K=!1;while($){if($.hasAttribute?.(\"data-zapp-drag-region\")){K=!0;break}let J=$.tagName;if(J===\"BUTTON\"||J===\"INPUT\"||J===\"SELECT\"||J===\"TEXTAREA\"||J===\"A\")break;$=$.parentElement}if(K!==H)H=K,T(\"window\",\"setDragRegion\",{windowId:B[O]?\?\"unknown\",drag:K})})}})();\n";
7
+ return "(()=>{var{defineProperty:S,getOwnPropertyNames:o,getOwnPropertyDescriptor:s}=Object,d=Object.prototype.hasOwnProperty;var w=new WeakMap,n=(H)=>{var Q=w.get(H),$;if(Q)return Q;if(Q=S({},\"__esModule\",{value:!0}),H&&typeof H===\"object\"||typeof H===\"function\")o(H).map((K)=>!d.call(Q,K)&&S(Q,K,{get:()=>H[K],enumerable:!($=s(H,K))||$.enumerable}));return w.set(H,Q),Q};var GH={},L=globalThis,h=L.__zapp,j=h&&typeof h===\"object\"?h:{},P=()=>{if(L.__zapp===j)return;L.__zapp=j;try{Object.defineProperty(L,\"__zapp\",{value:j,enumerable:!0,configurable:!1,writable:!1})}catch{}},I=Symbol.for(\"zapp.bridge\"),R=Symbol.for(\"zapp.bootstrapConfig\"),c=Symbol.for(\"zapp.ownerId\"),D=L,q=(H)=>{let Q=D[I]?\?{},$=Object.assign({},Q,H);Object.defineProperty(D,I,{value:$,enumerable:!1,configurable:!0,writable:!1})},X={},Y={},k=0;q({_listeners:Y,_lastId:k});var f=X.__ctxId?\?=`ctx-${Date.now()}-${Math.random().toString(36).slice(2)}`,M=X.__pendingInvokes=X.__pendingInvokes?\?{},W=X.__pendingSyncWaits=X.__pendingSyncWaits?\?{},y=X.__invokeSeq?\?0,u=1,a=131072,b=D[R]==null?null:{name:D[R].name,applicationShouldTerminateAfterLastWindowClosed:D[R].applicationShouldTerminateAfterLastWindowClosed,webContentInspectable:D[R].webContentInspectable,maxWorkers:D[R].maxWorkers};try{delete D[R]}catch{}var l=(H)=>typeof H===\"string\"?H:JSON.stringify(H?\?{}),T=(H,Q,$)=>{P();let K=L.chrome?.webview;if(!K?.postMessage)return!1;return K.postMessage(`${H}\n${Q}\n${l($)}`),!0};X.invoke=(H,Q)=>new Promise(($,K)=>{let J=typeof H===\"string\"?H.trim():\"\";if(!J){K(Error(\"Service method must be a non-empty string.\"));return}if(l(Q).length>a){K(Error(\"Service payload exceeds max size.\"));return}let G=`${f}:inv-${++y}`;X.__invokeSeq=y;let x={v:u,id:G,method:J,args:Q,meta:{sourceCtxId:f}},F=setTimeout(()=>{delete M[G],K(Error(\"Service invocation timed out.\"))},15000);if(M[G]={resolve:$,reject:K,timeout:F},!T(\"invoke_rpc\",J,x))clearTimeout(F),delete M[G],K(Error(\"Native invoke transport unavailable.\"))});var O=()=>{let H=Error(\"Sync wait aborted.\");return H.name=\"AbortError\",H};X.syncWait=(H,Q=30000,$)=>new Promise((K,J)=>{let V=typeof H===\"string\"?H.trim():\"\";if(!V){J(Error(\"Sync key must be a non-empty string.\"));return}if($?.aborted){J(O());return}let G=`${f}:sync-${Date.now()}-${Math.random().toString(36).slice(2)}`,x=Q==null||Number.isNaN(Number(Q))?null:Math.floor(Number(Q)),F=x==null?null:Math.max(1,Math.min(300000,x)),z={id:G,key:V,timeoutMs:F,meta:{sourceCtxId:f}},Z=F==null?void 0:setTimeout(()=>{delete W[G],J(Error(\"Sync wait transport timed out.\"))},F+5000);if(W[G]={resolve:K,reject:J,timeout:Z},!T(\"sync\",\"wait\",z)){if(Z)clearTimeout(Z);delete W[G],J(Error(\"Native sync transport unavailable.\"));return}if($){let N=()=>{let A=W[G];if(!A)return;if(A.timeout)clearTimeout(A.timeout);delete W[G],T(\"sync\",\"cancel\",{id:G,meta:{sourceCtxId:f}}),J(O())};$.addEventListener(\"abort\",N,{once:!0})}});X.syncNotify=(H,Q=1)=>{let $=typeof H===\"string\"?H.trim():\"\";if(!$)return!1;let K=Math.max(1,Math.min(65535,Math.floor(Q)));return T(\"sync\",\"notify\",{key:$,count:K,meta:{sourceCtxId:f}})};X.syncCancel=(H)=>{let Q=typeof H===\"string\"?H.trim():\"\";if(!Q)return!1;return T(\"sync\",\"cancel\",{id:Q,meta:{sourceCtxId:f}})};X.emit=(H,Q)=>T(\"emit\",H,{__zapp_internal_meta:{sourceCtxId:f},data:Q});X.onEvent=(H,Q)=>{let $=++k;return(Y[H]?\?=[]).push({id:$,fn:Q}),$};X.offEvent=(H,Q)=>{let $=Y[H]?\?[];Y[H]=$.filter((K)=>K.id!==Q)};X.onceEvent=(H,Q)=>{let $=++k;return(Y[H]?\?=[]).push({id:$,fn:Q,once:!0}),$};X.offAllEvents=(H)=>{if(H)delete Y[H];else Object.keys(Y).forEach((Q)=>delete Y[Q])};var t=(H)=>{let Q=H.pathname.split(\".\").pop()?.toLowerCase();if(Q!==\"ts\"&&Q!==\"tsx\")return H.toString();let $=(Z)=>{let U=Z.startsWith(\"/\")?Z:`/${Z}`;if(H.protocol===\"zapp:\")return`zapp://app${U}`;return new URL(U,H).toString()},K=D[Symbol.for(\"zapp.workerManifest\")],J=H.pathname.split(\"/\").pop()?\?\"worker.ts\",V=`./${J}`;if(K){let Z=K[V]?\?K[J];if(typeof Z===\"string\"&&Z.length>0)return $(Z)}let G=H.pathname.split(\"/\"),z=`/zapp-workers/${(G[G.length-1]?\?\"worker.ts\").replace(/\\.[^.]+$/,\"\")}.mjs`;return $(z)},r=(H)=>H instanceof URL?t(H):H;if(!X.workerBridge){let H={},Q=0,$=D[c],K=typeof $===\"string\"&&$.length>0?$:`owner-${Date.now()}-${Math.random().toString(36).slice(2)}`;try{delete D[c]}catch{}let J=[],V=(F)=>{return H[F]?\?={message:[],error:[],close:[]},H[F]},G=(F,z,Z)=>{let U=(C)=>{queueMicrotask(C)};if(F===\"close\"){let C=H[z];U(()=>{if(C)for(let i of C.close)try{i(Z)}catch{}X.workerBridge?.terminateWorker(z)});return}let N=H[z];if(!N)return;let A=Z;if(typeof Z===\"string\")try{A=JSON.parse(Z)}catch{}let E=F===\"error\"?N.error:N.message;U(()=>{for(let C of E)try{C(A)}catch{}})};X.__workerBridgeDispatch=G,q({dispatchWorkerBridge:G}),X.workerBridge={createWorker(F,z){let Z=Boolean(z?.shared),U=`${K}:${f}:zw-${++Q}`;return V(U),J.push(U),T(\"worker\",\"create\",{id:U,scriptUrl:F,ownerId:K,shared:Z}),U},postToWorker(F,z){T(\"worker\",\"post\",{id:F,data:z,ownerId:K})},terminateWorker(F){T(\"worker\",\"terminate\",{id:F,ownerId:K}),J=J.filter((z)=>z!==F),delete H[F]},subscribe(F,z,Z,U){let N=V(F);if(z)N.message.push(z);if(Z)N.error.push(Z);if(U)N.close.push(U);return()=>{let A=H[F];if(!A)return;if(z)A.message=A.message.filter((E)=>E!==z);if(Z)A.error=A.error.filter((E)=>E!==Z);if(U)A.close=A.close.filter((E)=>E!==U)}}};let x=()=>{if(!J.length)return;T(\"worker\",\"reset_owner\",{ownerId:K}),J=[];for(let F of Object.keys(H))delete H[F]};q({resetOwnerWorkers:x,createWorker:X.workerBridge.createWorker.bind(X.workerBridge),postToWorker:X.workerBridge.postToWorker.bind(X.workerBridge),terminateWorker:X.workerBridge.terminateWorker.bind(X.workerBridge),subscribeWorker:X.workerBridge.subscribe.bind(X.workerBridge),resolveWorkerScriptURL:r}),L.addEventListener(\"beforeunload\",x),L.addEventListener(\"pagehide\",x)}var v={},e=0,HH=(H)=>new Promise((Q,$)=>{let K=`${f}:win-${++e}`,J=setTimeout(()=>{delete v[K],$(Error(\"Window creation timed out.\"))},15000);v[K]={resolve:Q,reject:$,timeout:J},T(\"window\",\"create\",{requestId:K,options:H})}),QH=(H,Q,$)=>{T(\"window\",Q,{windowId:H,...$})},$H=(H,Q)=>{T(\"app\",H,Q?\?{})},KH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.requestId!==\"string\")return;let K=v[$.requestId];if(!K)return;if(clearTimeout(K.timeout),delete v[$.requestId],$.ok===!1)K.reject(Error($.error?\?\"Window creation failed.\"));else K.resolve({id:$.id?\?\"\"})},p=(H,Q,$)=>{P();let K={windowId:H,timestamp:Date.now()};if($)try{let V=JSON.parse($);if(V.width||V.height)K.size={width:V.width?\?0,height:V.height?\?0};if(V.x!==void 0||V.y!==void 0)K.position={x:V.x?\?0,y:V.y?\?0}}catch{}let J=(V)=>{let G=Y[V];if(!G||G.length===0)return;let x=[];for(let F of G){try{F.fn(K)}catch{}if(!F.once)x.push(F)}if(x.length>0)Y[V]=x;else delete Y[V]};J(`__zapp_window:${H}:${Q}`),J(`window:${Q}`)};q({windowCreate:HH,windowAction:QH,appAction:$H,dispatchWindowResult:KH,dispatchWindowEvent:p,_emit:X.emit,_onEvent:X.onEvent,_onceEvent:X.onceEvent,_offEvent:X.offEvent,_offAllEvents:X.offAllEvents});j.invoke=X.invoke;j.emit=X.emit;j.on=(H,Q)=>{let $=X.onEvent?.(H,Q)?\?0;return()=>X.offEvent?.(H,$)};var XH=(H,Q)=>{P();let $=Q;if(typeof Q===\"string\"){let V=Q.trim();if(V.startsWith(\"{\")&&V.endsWith(\"}\")||V.startsWith(\"[\")&&V.endsWith(\"]\"))try{$=JSON.parse(Q)}catch{}}if($&&typeof $===\"object\"){let V=$;if(V.__zapp_internal_meta?.sourceCtxId===f)return;if(Object.prototype.hasOwnProperty.call(V,\"data\"))$=V.data}let K=Y[H]?\?[],J=[];for(let V of K){try{V.fn($)}catch{}if(!V.once)J.push(V)}if(J.length>0)Y[H]=J;else delete Y[H]},JH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.id!==\"string\"||$.id.length===0)return;let K=M[$.id];if(!K)return;if(clearTimeout(K.timeout),delete M[$.id],$.ok){K.resolve($.result);return}let J=$.error?.code?\?\"INTERNAL_ERROR\",V=$.error?.message?\?\"Service invocation failed\";K.reject(Error(`${J}: ${V}`))},VH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.id!==\"string\"||$.id.length===0)return;let K=W[$.id];if(!K)return;if(K.timeout)clearTimeout(K.timeout);if(delete W[$.id],!$.ok){K.reject(Error(\"Sync wait failed.\"));return}if($.status===\"cancelled\"){K.reject(O());return}K.resolve($.status===\"timed-out\"?\"timed-out\":\"notified\")},FH=(H)=>{let Q=H;if(typeof H===\"string\")try{Q=JSON.parse(H)}catch{return}if(!Q||typeof Q!==\"object\")return;let $=Q;if(typeof $.requestId!==\"string\")return;let K=`__zapp:dialog:${$.requestId}`,J=Y[K];if(J){for(let V of J)try{V.fn($)}catch{}delete Y[K]}};q({dispatchInvokeResult:JH,dispatchSyncResult:VH,dispatchDialogResult:FH,deliverEvent:XH,getConfig:()=>b==null?null:{...b},invoke:async(H)=>{let Q=H;if(!Q||typeof Q!==\"object\")throw Error(\"Invalid invoke request\");if(typeof Q.method!==\"string\")throw Error(\"Invalid service method\");let $=await X.invoke?.(Q.method,Q.args);return{v:u,id:Q.id,ok:!0,result:$}},getServiceBindings:()=>{let H=D[Symbol.for(\"zapp.bindingsManifest\")];if(typeof H!==\"string\")return null;return H},syncWait:async(H)=>{let Q=H;return X.syncWait?.(Q?.key?\?\"\",Q?.timeoutMs===void 0?30000:Q.timeoutMs,Q?.signal)?\?Promise.reject(Error(\"Sync unavailable\"))},syncNotify:(H)=>{let Q=H;return X.syncNotify?.(Q?.key?\?\"\",Q?.count?\?1)?\?!1},syncCancel:(H)=>{let Q=H;return X.syncCancel?.(Q?.id?\?\"\")?\?!1}});Object.defineProperties(j,{invoke:{value:X.invoke,enumerable:!0,configurable:!1,writable:!1},syncWait:{value:X.syncWait,enumerable:!0,configurable:!1,writable:!1},syncNotify:{value:X.syncNotify,enumerable:!0,configurable:!1,writable:!1},syncCancel:{value:X.syncCancel,enumerable:!0,configurable:!1,writable:!1},emit:{value:X.emit,enumerable:!0,configurable:!1,writable:!1},on:{value:j.on,enumerable:!0,configurable:!1,writable:!1}});Object.freeze(j);if(typeof document<\"u\"){let H=()=>{if(!document.head)return;let Q=document.createElement(\"meta\");Q.httpEquiv=\"Content-Security-Policy\";let K=b?.csp;Q.content=K||\"default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:;\",document.head.insertBefore(Q,document.head.firstChild)};if(document.head)H();else document.addEventListener(\"DOMContentLoaded\",H,{once:!0})}P();var _=Symbol.for(\"zapp.windowId\"),g=Symbol.for(\"zapp.windowReady\"),B=L,m=()=>{if(B[g])return;B[g]=!0;let H=B[_],Q=L.chrome?.webview;if(Q?.postMessage){let $=JSON.stringify({windowId:H?\?\"unknown\"});Q.postMessage(`window\nready\n${$}`)}p(H?\?\"unknown\",\"ready\")};if(typeof document<\"u\"){if(document.addEventListener(\"DOMContentLoaded\",m,{once:!0}),document.readyState!==\"loading\")m();document.addEventListener(\"mousedown\",(Q)=>{let $=Q.target;while($){if($.hasAttribute?.(\"data-zapp-drag-region\")){Q.preventDefault(),T(\"window\",\"startDrag\",{windowId:B[_]?\?\"unknown\"});return}let K=$.tagName;if(K===\"BUTTON\"||K===\"INPUT\"||K===\"SELECT\"||K===\"TEXTAREA\"||K===\"A\")return;$=$.parentElement}});let H=!1;document.addEventListener(\"mousemove\",(Q)=>{let $=Q.target,K=!1;while($){if($.hasAttribute?.(\"data-zapp-drag-region\")){K=!0;break}let J=$.tagName;if(J===\"BUTTON\"||J===\"INPUT\"||J===\"SELECT\"||J===\"TEXTAREA\"||J===\"A\")break;$=$.parentElement}if(K!==H)H=K,T(\"window\",\"setDragRegion\",{windowId:B[_]?\?\"unknown\",drag:K})})}})();\n";
8
8
  }
9
9
  }
@@ -597,6 +597,37 @@ raw {
597
597
  HWND hwnd = zapp_win_lookup(windowId);
598
598
  if (!hwnd || !IsWindow(hwnd)) { free(windowId); return; }
599
599
 
600
+ if (strcmp(action, "showContextMenu") == 0) {
601
+ const char* itemsKey = "\"items\":[";
602
+ const char* itemsStart = strstr(json, itemsKey);
603
+ if (itemsStart) {
604
+ itemsStart += strlen("\"items\":");
605
+ int depth = 0;
606
+ const char* p2 = itemsStart;
607
+ const char* end2 = NULL;
608
+ while (*p2) {
609
+ if (*p2 == '[') depth++;
610
+ else if (*p2 == ']') { depth--; if (depth == 0) { end2 = p2 + 1; break; } }
611
+ p2++;
612
+ }
613
+ if (end2) {
614
+ size_t len = (size_t)(end2 - itemsStart);
615
+ char* arrJson = (char*)malloc(len + 1);
616
+ memcpy(arrJson, itemsStart, len);
617
+ arrJson[len] = '\0';
618
+ HMENU popup = CreatePopupMenu();
619
+ zapp_build_menu_items_win(popup, arrJson);
620
+ free(arrJson);
621
+ POINT pt;
622
+ GetCursorPos(&pt);
623
+ TrackPopupMenu(popup, TPM_LEFTALIGN | TPM_TOPALIGN, pt.x, pt.y, 0, hwnd, NULL);
624
+ DestroyMenu(popup);
625
+ }
626
+ }
627
+ free(windowId);
628
+ return;
629
+ }
630
+
600
631
  if (strcmp(action, "setCloseGuard") == 0) {
601
632
  extern int zapp_json_get_bool(const char* json, const char* key, int default_val);
602
633
  int guard = zapp_json_get_bool(json, "guard", 0);
@@ -0,0 +1,24 @@
1
+ # ⚡️ QuickJS - A mighty JavaScript engine
2
+
3
+ ## Overview
4
+
5
+ QuickJS is a small and embeddable JavaScript engine. It aims to support the latest
6
+ [ECMAScript] specification.
7
+
8
+ This project is a _fork_ of the [original QuickJS project] by Fabrice Bellard and Charlie Gordon, after it went dormant, with the intent of reigniting its development.
9
+
10
+ ## Getting started
11
+
12
+ Head over to the [project website] for instructions on how to get started and more
13
+ documentation.
14
+
15
+ ## Authors
16
+
17
+ [@bnoordhuis], [@saghul], and many more [contributors].
18
+
19
+ [ECMAScript]: https://tc39.es/ecma262/
20
+ [original QuickJS project]: https://bellard.org/quickjs
21
+ [@bnoordhuis]: https://github.com/bnoordhuis
22
+ [@saghul]: https://github.com/saghul
23
+ [contributors]: https://github.com/quickjs-ng/quickjs/graphs/contributors
24
+ [project website]: https://quickjs-ng.github.io/quickjs/
@@ -0,0 +1 @@
1
+ 18
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3
+ };