quickwin 2.1.1 → 2.3.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 (117) hide show
  1. package/README.en.md +9 -9
  2. package/README.md +9 -9
  3. package/constants.ts +1063 -0
  4. package/enum_map.d.ts +129 -0
  5. package/examples/PdfCanvas.js +2 -2
  6. package/examples/PdfCanvas.tsx +3 -2
  7. package/examples/{exec_server.js → execd/main.js} +1114 -287
  8. package/examples/execd/tray.js +192 -0
  9. package/examples/execd/worker.js +122 -0
  10. package/examples/pdf_preview2.js +46 -46
  11. package/examples/pdf_preview2.ts +55 -54
  12. package/examples/pdf_viewer.js +134 -130
  13. package/examples/pdf_viewer.tsx +6 -5
  14. package/examples/test_gallery.js +135 -131
  15. package/examples/test_gallery.tsx +9 -8
  16. package/examples/test_react_lazy.js +130 -128
  17. package/examples/test_react_lazy.tsx +7 -6
  18. package/examples/test_react_listbox.js +130 -128
  19. package/examples/test_react_listbox.tsx +8 -7
  20. package/examples/test_root_window.js +130 -128
  21. package/examples/test_root_window.tsx +5 -5
  22. package/examples/test_tab.js +130 -128
  23. package/examples/test_tab.tsx +7 -6
  24. package/examples/tray_demo.js +8 -8
  25. package/examples/tray_demo.tsx +9 -8
  26. package/lib/dumpRects.js +2 -2
  27. package/lib/dumpRects.ts +3 -2
  28. package/lib/fetch.js +15 -15
  29. package/lib/fetch.ts +16 -15
  30. package/lib/ffi/bind.js +3 -3
  31. package/lib/ffi/bind.ts +3 -3
  32. package/lib/ffi/ctype.ts +3 -1
  33. package/lib/ffi/struct.js +23 -7
  34. package/lib/ffi/struct.ts +50 -23
  35. package/lib/http-server.js +5 -5
  36. package/lib/http-server.ts +6 -5
  37. package/lib/react-qw/components/Button.js +2 -2
  38. package/lib/react-qw/components/CheckBox.js +4 -4
  39. package/lib/react-qw/components/ComboBox.js +10 -10
  40. package/lib/react-qw/components/DateTimePicker.js +12 -12
  41. package/lib/react-qw/components/Input.js +7 -7
  42. package/lib/react-qw/components/Link.js +4 -4
  43. package/lib/react-qw/components/ListBox.js +12 -12
  44. package/lib/react-qw/components/ListView.js +35 -35
  45. package/lib/react-qw/components/PathPicker.js +3 -3
  46. package/lib/react-qw/components/ProgressBar.js +4 -4
  47. package/lib/react-qw/components/RadioButton.js +4 -4
  48. package/lib/react-qw/components/ScrollView.js +28 -28
  49. package/lib/react-qw/components/Slider.js +11 -11
  50. package/lib/react-qw/components/Tab.js +10 -10
  51. package/lib/react-qw/components/Tooltip.js +8 -8
  52. package/lib/react-qw/components/TreeView.js +20 -20
  53. package/lib/react-qw/index.js +5 -5
  54. package/lib/react-qw/index.ts +6 -5
  55. package/lib/react-qw/props.js +4 -4
  56. package/lib/react-qw/props.ts +5 -4
  57. package/lib/react-qw/reconciler.js +10 -10
  58. package/lib/react-qw/reconciler.ts +11 -10
  59. package/lib/text-measure.js +3 -3
  60. package/lib/text-measure.ts +4 -3
  61. package/lib/websocket.js +17 -17
  62. package/lib/websocket.ts +18 -17
  63. package/lib/windows/advapi32.js +7 -7
  64. package/lib/windows/advapi32.ts +7 -7
  65. package/lib/windows/gdi32.js +17 -17
  66. package/lib/windows/gdi32.ts +17 -17
  67. package/lib/windows/kernel32.js +41 -2
  68. package/lib/windows/kernel32.ts +45 -2
  69. package/lib/windows/shell32.js +24 -3
  70. package/lib/windows/shell32.ts +27 -4
  71. package/lib/windows/structs.js +230 -92
  72. package/lib/windows/structs.ts +278 -92
  73. package/lib/windows/user32.js +18 -6
  74. package/lib/windows/user32.ts +18 -6
  75. package/lib/windows/winspool.js +3 -3
  76. package/lib/windows/winspool.ts +3 -3
  77. package/package.json +4 -3
  78. package/quickwin.d.ts +32 -10
  79. package/qwin-nowasm-x86.exe +0 -0
  80. package/qwin-nowasm.exe +0 -0
  81. package/qwin-x86.exe +0 -0
  82. package/qwin.exe +0 -0
  83. package/test/test_ffi_bind.js +12 -10
  84. package/test/test_ffi_bind.ts +14 -12
  85. package/test/test_ffi_struct.js +60 -26
  86. package/test/test_ffi_struct.ts +58 -28
  87. package/test/test_ffi_windows.js +1 -1
  88. package/test/test_ffi_windows.ts +1 -1
  89. package/test/test_files.js +7 -7
  90. package/test/test_files.ts +8 -8
  91. package/test/test_gdi_draw.js +51 -51
  92. package/test/test_gdi_draw.ts +57 -57
  93. package/test/test_http_server.js +3 -3
  94. package/test/test_http_server.ts +4 -3
  95. package/test/test_ipv6.js +3 -3
  96. package/test/test_ipv6.ts +4 -3
  97. package/test/test_net_event.js +3 -3
  98. package/test/test_net_event.ts +4 -3
  99. package/test/test_printer.js +4 -4
  100. package/test/test_printer.ts +5 -5
  101. package/test/test_react_complex.js +132 -130
  102. package/test/test_react_counter.js +130 -128
  103. package/test/test_react_flex.js +132 -130
  104. package/test/test_react_hidden.js +130 -128
  105. package/test/test_react_listview_link.js +131 -129
  106. package/test/test_react_notify.js +148 -146
  107. package/test/test_react_render.js +130 -128
  108. package/test/test_registry.js +6 -6
  109. package/test/test_registry.ts +8 -8
  110. package/test/test_wolfssl_read.js +8 -8
  111. package/test/test_wolfssl_read.ts +9 -8
  112. package/examples/exec_server.tsx +0 -488
  113. package/examples/exec_server_worker.js +0 -395
  114. package/examples/exec_server_worker.ts +0 -417
  115. package/examples/setres.js +0 -79
  116. package/examples/setres.ts +0 -86
  117. package/quickwin_const.d.ts +0 -1037
package/README.en.md CHANGED
@@ -16,8 +16,8 @@ npm install quickwin
16
16
  npx quickwin node_modules/quickwin/main.js # bundled main.js demo; use npx quickwin script.js for your own scripts
17
17
 
18
18
  # Option 2: download directly from GitHub Release
19
- iwr https://github.com/xna00/quickwin/releases/latest/download/qwin.exe -OutFile qwin.exe
20
- iwr https://github.com/xna00/quickwin/releases/latest/download/main.js -OutFile main.js
19
+ iwr https://github.com/quickwinlabs/quickwin/releases/latest/download/qwin.exe -OutFile qwin.exe
20
+ iwr https://github.com/quickwinlabs/quickwin/releases/latest/download/main.js -OutFile main.js
21
21
  .\qwin.exe main.js
22
22
  ```
23
23
 
@@ -80,11 +80,11 @@ make embed-js JS_EMBED=script.js
80
80
  # Embed a script brotli-compressed (smaller exe, decompressed at runtime)
81
81
  make embed-js-br JS_EMBED=script.js
82
82
 
83
- # Bundle examples/exec_server.ts and brotli-embed into exec_server.exe
84
- make exec_server
83
+ # Bundle examples/execd/main.tsx and brotli-embed into execd.exe
84
+ make execd
85
85
 
86
86
  # Run it (no file argument needed)
87
- _build/exec_server.exe
87
+ _build/execd.exe
88
88
  ```
89
89
 
90
90
  When run without a script file argument, `qwin.exe` checks for embedded JS at the end of itself. If found, it executes the embedded code. If not, it falls back to `main.js`. Both raw (`QWJS`) and brotli-compressed (`QWBR`) embedded payloads are supported; the compressed form is decompressed at startup.
@@ -174,10 +174,10 @@ Both sides must set `onmessage = null` when communication is complete. This rele
174
174
  ### Build
175
175
 
176
176
  ```bash
177
- git clone --recursive https://github.com/xna00/quickwin.git
177
+ git clone --recursive https://github.com/quickwinlabs/quickwin.git
178
178
  cd quickwin
179
179
 
180
- ./docker/dev-podman.sh up # start dev container (reuses ghcr.io/xna00/quickwin-dev)
180
+ ./docker/dev-podman.sh up # start dev container (reuses ghcr.io/quickwinlabs/quickwin-dev)
181
181
  podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make test TEST=-net'
182
182
  ```
183
183
 
@@ -198,10 +198,10 @@ that build run `make test TEST=-wasm` to skip WASM tests.
198
198
  | `make test` | run all tests |
199
199
  | `make test TEST=-net` | skip network tests (fast) |
200
200
  | `make test TEST=wasm` | run WASM tests only |
201
- | `make exec_server` | bundle `examples/exec_server.ts` and brotli-embed into `_build/exec_server.exe` |
201
+ | `make execd` | bundle `examples/execd/main.tsx` and brotli-embed into `_build/execd.exe` |
202
202
  | `make embed-js` / `embed-js-br` | embed JS (brotli-compressed) into exe |
203
203
  | `make npm-pkg` | package into `dist/quickwin/` |
204
- | `make gen-const` | regenerate `quickwin_const.d.ts` |
204
+ | `make gen-const` | regenerate `constants.ts` (run `_build/gen_const.exe` in the VM) |
205
205
  | `make clean` / `distclean` | clean (wipes all of `_build/`; afterwards run `make js wasm`) |
206
206
 
207
207
  Build and troubleshooting details: `.agents/DEVELOPMENT_WORKFLOW.md`.
package/README.md CHANGED
@@ -16,8 +16,8 @@ npm install quickwin
16
16
  npx quickwin node_modules/quickwin/main.js # 包自带 main.js 示例;用 npx quickwin script.js 运行你自己的脚本
17
17
 
18
18
  # 方式二:直接从 GitHub Release 下载
19
- iwr https://github.com/xna00/quickwin/releases/latest/download/qwin.exe -OutFile qwin.exe
20
- iwr https://github.com/xna00/quickwin/releases/latest/download/main.js -OutFile main.js
19
+ iwr https://github.com/quickwinlabs/quickwin/releases/latest/download/qwin.exe -OutFile qwin.exe
20
+ iwr https://github.com/quickwinlabs/quickwin/releases/latest/download/main.js -OutFile main.js
21
21
  .\qwin.exe main.js
22
22
  ```
23
23
 
@@ -78,11 +78,11 @@ make embed-js JS_EMBED=script.js
78
78
  # 内嵌 Brotli 压缩的脚本(exe 更小,运行时解压)
79
79
  make embed-js-br JS_EMBED=script.js
80
80
 
81
- # 打包 examples/exec_server.ts 并 brotli 内嵌进 exec_server.exe
82
- make exec_server
81
+ # 打包 examples/execd/main.tsx 并 brotli 内嵌进 execd.exe
82
+ make execd
83
83
 
84
84
  # 运行它(不需要文件参数)
85
- _build/exec_server.exe
85
+ _build/execd.exe
86
86
  ```
87
87
 
88
88
  不带脚本文件参数运行时,`qwin.exe` 会检查自身末尾是否有内嵌 JS:找到则执行内嵌代码,否则回退到 `main.js`。同时支持原始(`QWJS`)与 Brotli 压缩(`QWBR`)两种内嵌格式;压缩格式在启动时解压。
@@ -172,10 +172,10 @@ parent.onmessage = (e) => {
172
172
  ### 构建
173
173
 
174
174
  ```bash
175
- git clone --recursive https://github.com/xna00/quickwin.git
175
+ git clone --recursive https://github.com/quickwinlabs/quickwin.git
176
176
  cd quickwin
177
177
 
178
- ./docker/dev-podman.sh up # 启动开发容器(复用 ghcr.io/xna00/quickwin-dev)
178
+ ./docker/dev-podman.sh up # 启动开发容器(复用 ghcr.io/quickwinlabs/quickwin-dev)
179
179
  podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make test TEST=-net'
180
180
  ```
181
181
 
@@ -196,10 +196,10 @@ podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make
196
196
  | `make test` | 运行全部测试 |
197
197
  | `make test TEST=-net` | 跳过网络测试(快速) |
198
198
  | `make test TEST=wasm` | 仅运行 WASM 测试 |
199
- | `make exec_server` | 打包 `examples/exec_server.ts` 并 Brotli 内嵌进 `_build/exec_server.exe` |
199
+ | `make execd` | 打包 `examples/execd/main.tsx` 并 Brotli 内嵌进 `_build/execd.exe` |
200
200
  | `make embed-js` / `embed-js-br` | 把 JS(Brotli 压缩)内嵌进 exe |
201
201
  | `make npm-pkg` | 打包到 `dist/quickwin/` |
202
- | `make gen-const` | 重新生成 `quickwin_const.d.ts` |
202
+ | `make gen-const` | 重新生成 `constants.ts`(在 VM 里跑 `_build/gen_const.exe`) |
203
203
  | `make clean` / `distclean` | 清理(会清掉整个 `_build/`,之后需 `make js wasm`) |
204
204
 
205
205
  构建与排错细节见 `.agents/DEVELOPMENT_WORKFLOW.md`。