quickwin 2.1.0 → 2.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 (45) hide show
  1. package/README.en.md +8 -8
  2. package/README.md +6 -7
  3. package/examples/{exec_server.js → execd.js} +618 -228
  4. package/examples/execd.tsx +798 -0
  5. package/examples/execd_worker.js +122 -0
  6. package/examples/execd_worker.ts +127 -0
  7. package/examples/pdf_viewer.js +100 -111
  8. package/examples/test_gallery.js +100 -111
  9. package/examples/test_react_lazy.js +96 -109
  10. package/examples/test_react_listbox.js +96 -109
  11. package/examples/test_root_window.js +96 -109
  12. package/examples/test_tab.js +96 -109
  13. package/lib/ffi/ctype.ts +3 -1
  14. package/lib/ffi/struct.js +23 -7
  15. package/lib/ffi/struct.ts +50 -23
  16. package/lib/http-server.js +1 -1
  17. package/lib/http-server.ts +1 -1
  18. package/lib/windows/gdi32.js +1 -1
  19. package/lib/windows/gdi32.ts +1 -1
  20. package/lib/windows/structs.js +176 -92
  21. package/lib/windows/structs.ts +216 -92
  22. package/package.json +1 -1
  23. package/quickwin_const.d.ts +26 -0
  24. package/qwin-nowasm-x86.exe +0 -0
  25. package/qwin-nowasm.exe +0 -0
  26. package/qwin-x86.exe +0 -0
  27. package/qwin.exe +0 -0
  28. package/test/test_ffi_bind.js +5 -3
  29. package/test/test_ffi_bind.ts +6 -4
  30. package/test/test_ffi_struct.js +58 -24
  31. package/test/test_ffi_struct.ts +55 -25
  32. package/test/test_gdi_draw.js +1 -1
  33. package/test/test_gdi_draw.ts +1 -1
  34. package/test/test_react_complex.js +96 -109
  35. package/test/test_react_counter.js +96 -109
  36. package/test/test_react_flex.js +96 -109
  37. package/test/test_react_hidden.js +96 -109
  38. package/test/test_react_listview_link.js +96 -109
  39. package/test/test_react_notify.js +96 -109
  40. package/test/test_react_render.js +96 -109
  41. package/examples/exec_server.tsx +0 -489
  42. package/examples/exec_server_worker.js +0 -395
  43. package/examples/exec_server_worker.ts +0 -417
  44. package/examples/setres.js +0 -79
  45. package/examples/setres.ts +0 -86
package/README.en.md CHANGED
@@ -41,7 +41,7 @@ quickwin script.js # run a script
41
41
  quickwin -o CON script.js # run with console (AllocConsole)
42
42
  quickwin -o LOG script.js # run with auto-generated log file
43
43
  quickwin -e "console.log('hi')" # execute expression
44
- quickwin -- script.js --flag # -- stops option parsing
44
+ quickwin script.js --flag # everything after the script goes to it
45
45
  ```
46
46
 
47
47
  ### Options
@@ -53,10 +53,10 @@ quickwin -- script.js --flag # -- stops option parsing
53
53
  | `-o LOG` | Redirect stdout+stderr to `log_YYYY_MM_DD_HH_MM_SS.txt` (exe directory) |
54
54
  | `-o <file>` | Redirect stdout+stderr to specified file |
55
55
  | `-d` | Enable HTTP debug logging |
56
- | `--` | Stop option parsing, remaining args passed to script |
57
56
 
58
- All unknown flags are transparently forwarded to `scriptArgs` — no error,
59
- no consumption. Script file is the first non-flag argument after option parsing.
57
+ The command line parses in fixed slots: `exe [-d] [-o target] [-e code | file]`;
58
+ everything past the slots reaches `scriptArgs` untouched — no error, no
59
+ consumption. The file slot rejects `-`-leading names (run those as `./-name.js`).
60
60
 
61
61
  ## Embedded Script
62
62
 
@@ -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.ts 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.
@@ -198,7 +198,7 @@ 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.ts` 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
204
  | `make gen-const` | regenerate `quickwin_const.d.ts` |
package/README.md CHANGED
@@ -41,7 +41,7 @@ quickwin script.js # 运行脚本
41
41
  quickwin -o CON script.js # 带控制台运行(AllocConsole)
42
42
  quickwin -o LOG script.js # 自动生成日志文件运行
43
43
  quickwin -e "console.log('hi')" # 执行表达式
44
- quickwin -- script.js --flag # -- 停止选项解析
44
+ quickwin script.js --flag # 槽位之后的参数全部传给脚本
45
45
  ```
46
46
 
47
47
  ### 选项
@@ -53,9 +53,8 @@ quickwin -- script.js --flag # -- 停止选项解析
53
53
  | `-o LOG` | 将 stdout+stderr 重定向到 `log_YYYY_MM_DD_HH_MM_SS.txt`(exe 所在目录) |
54
54
  | `-o <file>` | 将 stdout+stderr 重定向到指定文件 |
55
55
  | `-d` | 开启 HTTP 调试日志 |
56
- | `--` | 停止选项解析,其余参数传给脚本 |
57
56
 
58
- 所有未知参数都会透明转发给 `scriptArgs` —— 不报错、不消费。选项解析后的第一个非参数即脚本文件。
57
+ 命令行按固定槽位解析:`exe [-d] [-o 目标] [-e code | 脚本文件]`;槽位之后的所有参数原样进入 `scriptArgs`,不报错、不消费。文件槽不接受 `-` 开头的文件名(用 `./-name.js` 运行这类脚本)。
59
58
 
60
59
  ## 内嵌脚本
61
60
 
@@ -79,11 +78,11 @@ make embed-js JS_EMBED=script.js
79
78
  # 内嵌 Brotli 压缩的脚本(exe 更小,运行时解压)
80
79
  make embed-js-br JS_EMBED=script.js
81
80
 
82
- # 打包 examples/exec_server.ts 并 brotli 内嵌进 exec_server.exe
83
- make exec_server
81
+ # 打包 examples/execd.ts 并 brotli 内嵌进 execd.exe
82
+ make execd
84
83
 
85
84
  # 运行它(不需要文件参数)
86
- _build/exec_server.exe
85
+ _build/execd.exe
87
86
  ```
88
87
 
89
88
  不带脚本文件参数运行时,`qwin.exe` 会检查自身末尾是否有内嵌 JS:找到则执行内嵌代码,否则回退到 `main.js`。同时支持原始(`QWJS`)与 Brotli 压缩(`QWBR`)两种内嵌格式;压缩格式在启动时解压。
@@ -197,7 +196,7 @@ podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make
197
196
  | `make test` | 运行全部测试 |
198
197
  | `make test TEST=-net` | 跳过网络测试(快速) |
199
198
  | `make test TEST=wasm` | 仅运行 WASM 测试 |
200
- | `make exec_server` | 打包 `examples/exec_server.ts` 并 Brotli 内嵌进 `_build/exec_server.exe` |
199
+ | `make execd` | 打包 `examples/execd.ts` 并 Brotli 内嵌进 `_build/execd.exe` |
201
200
  | `make embed-js` / `embed-js-br` | 把 JS(Brotli 压缩)内嵌进 exe |
202
201
  | `make npm-pkg` | 打包到 `dist/quickwin/` |
203
202
  | `make gen-const` | 重新生成 `quickwin_const.d.ts` |