quickwin 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +21 -26
- package/README.md +3 -6
- package/examples/exec_server.js +139 -31
- package/examples/exec_server.tsx +7 -8
- package/examples/exec_server_worker.js +1 -1
- package/examples/exec_server_worker.ts +2 -2
- package/examples/pdf_preview2.js +1 -1
- package/examples/pdf_preview2.ts +1 -1
- package/examples/pdf_viewer.js +132 -28
- package/examples/pdf_viewer.tsx +1 -1
- package/examples/test_gallery.js +131 -27
- package/examples/test_react_lazy.js +131 -27
- package/examples/test_react_listbox.js +131 -27
- package/examples/test_root_window.js +131 -27
- package/examples/test_tab.js +131 -27
- package/lib/certs.js +13 -8
- package/lib/certs.ts +13 -8
- package/lib/fetch.js +51 -3
- package/lib/fetch.ts +38 -3
- package/lib/ffi/bind.js +94 -5
- package/lib/ffi/bind.ts +107 -10
- package/lib/ffi/ctype.js +33 -7
- package/lib/ffi/ctype.ts +48 -10
- package/lib/ffi/struct.js +92 -14
- package/lib/ffi/struct.ts +108 -19
- package/lib/react-qw/components/ListView.js +1 -0
- package/lib/react-qw/components/PathPicker.js +2 -2
- package/lib/react-qw/index.js +1 -1
- package/lib/react-qw/index.ts +4 -1
- package/lib/text-measure.js +3 -1
- package/lib/text-measure.ts +4 -3
- package/lib/websocket.js +32 -2
- package/lib/websocket.ts +25 -2
- package/lib/windows/advapi32.js +53 -0
- package/lib/windows/advapi32.ts +64 -0
- package/lib/windows/comctl32.js +15 -15
- package/lib/windows/comctl32.ts +15 -16
- package/lib/windows/comdlg32.js +3 -2
- package/lib/windows/comdlg32.ts +3 -2
- package/lib/windows/gdi32.js +328 -26
- package/lib/windows/gdi32.ts +349 -26
- package/lib/windows/kernel32.js +206 -10
- package/lib/windows/kernel32.ts +225 -10
- package/lib/windows/msimg32.js +38 -0
- package/lib/windows/msimg32.ts +45 -0
- package/lib/windows/ntdll.js +3 -2
- package/lib/windows/ntdll.ts +3 -2
- package/lib/windows/ole32.js +1 -1
- package/lib/windows/ole32.ts +1 -1
- package/lib/windows/psapi.js +32 -0
- package/lib/windows/psapi.ts +37 -0
- package/lib/windows/shell32.js +5 -3
- package/lib/windows/shell32.ts +5 -3
- package/lib/windows/structs.js +135 -0
- package/lib/windows/structs.ts +144 -0
- package/lib/windows/user32.js +202 -99
- package/lib/windows/user32.ts +204 -99
- package/lib/windows/version.js +29 -0
- package/lib/windows/version.ts +35 -0
- package/lib/windows/winspool.js +71 -0
- package/lib/windows/winspool.ts +80 -0
- package/package.json +1 -1
- package/quickwin.d.ts +11 -5
- package/quickwin_const.d.ts +136 -0
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/test/run.js +7 -0
- package/test/run.ts +7 -0
- package/test/test_basic_fetch.js +21 -0
- package/test/test_basic_fetch.ts +17 -0
- package/test/test_ffi.js +6 -6
- package/test/test_ffi.ts +6 -6
- package/test/test_ffi_abi.js +55 -0
- package/test/test_ffi_abi.ts +56 -0
- package/test/test_ffi_array.js +116 -0
- package/test/test_ffi_array.ts +141 -0
- package/test/test_ffi_bind.js +82 -0
- package/test/test_ffi_bind.ts +71 -0
- package/test/test_files.js +102 -0
- package/test/test_files.ts +121 -0
- package/test/test_gdi_draw.js +681 -0
- package/test/test_gdi_draw.ts +725 -0
- package/test/test_net_fetch.js +4 -3
- package/test/test_net_fetch.ts +4 -3
- package/test/test_printer.js +137 -0
- package/test/test_printer.ts +148 -0
- package/test/test_proc.js +141 -0
- package/test/test_proc.ts +163 -0
- package/test/test_react_complex.js +131 -27
- package/test/test_react_counter.js +131 -27
- package/test/test_react_flex.js +131 -27
- package/test/test_react_hidden.js +131 -27
- package/test/test_react_listview_link.js +131 -27
- package/test/test_react_notify.js +131 -27
- package/test/test_react_render.js +131 -27
- package/test/test_registry.js +74 -0
- package/test/test_registry.ts +95 -0
- package/test/test_sysinfo.js +122 -0
- package/test/test_sysinfo.ts +141 -0
- package/test/test_wolfssl_read.js +45 -44
- package/test/test_wolfssl_read.ts +42 -42
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
|
|
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
|
-
|
|
59
|
-
|
|
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
|
|
|
@@ -168,8 +168,7 @@ Both sides must set `onmessage = null` when communication is complete. This rele
|
|
|
168
168
|
|
|
169
169
|
### Prerequisites
|
|
170
170
|
|
|
171
|
-
-
|
|
172
|
-
- Node.js (for TypeScript compilation via tsc)
|
|
171
|
+
- **podman** (dev container; build/test/QEMU verification all run inside the container, consistent with CI)
|
|
173
172
|
- Git (for submodules)
|
|
174
173
|
|
|
175
174
|
### Build
|
|
@@ -178,38 +177,34 @@ Both sides must set `onmessage = null` when communication is complete. This rele
|
|
|
178
177
|
git clone --recursive https://github.com/xna00/quickwin.git
|
|
179
178
|
cd quickwin
|
|
180
179
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
.\run.ps1 "make js" # compile TypeScript
|
|
184
|
-
.\run.ps1 "make test" # run all tests
|
|
180
|
+
./docker/dev-podman.sh up # start dev container (reuses ghcr.io/xna00/quickwin-dev)
|
|
181
|
+
podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make test TEST=-net'
|
|
185
182
|
```
|
|
186
183
|
|
|
187
|
-
`make
|
|
188
|
-
(no `WebAssembly` global);
|
|
184
|
+
`make cc64` produces `_build/qwin.exe`. `cc64-nowasm` produces a smaller
|
|
185
|
+
`_build/qwin-nowasm.exe` without WASM/WAMR (no `WebAssembly` global); for
|
|
186
|
+
that build run `make test TEST=-wasm` to skip WASM tests.
|
|
189
187
|
|
|
190
188
|
### Build Targets
|
|
191
189
|
|
|
192
190
|
| Target | Description |
|
|
193
191
|
|--------|-------------|
|
|
194
|
-
| `make`
|
|
195
|
-
| `make
|
|
196
|
-
| `make
|
|
197
|
-
| `
|
|
198
|
-
| `make debug` | debug build with bridge logs |
|
|
199
|
-
| `make nowasm` | no WASM/WAMR build → `_build/qwin-nowasm.exe` (~1.2MB, no `WebAssembly` global) |
|
|
200
|
-
| `make cc64-small` | cross-compile x86_64 `_build/qwin.exe` (`-Os`, used by CI) |
|
|
201
|
-
| `make cc32-small` | cross-compile i686 `_build/qwin-x86.exe` (`-Os`, XP-compatible, used by CI) |
|
|
192
|
+
| `make cc64` | cross-compile x86_64 → `_build/qwin.exe` (default target, `BUILD=fast`) |
|
|
193
|
+
| `make cc32` | cross-compile i686/XP → `_build/qwin-x86.exe` |
|
|
194
|
+
| `make cc64-nowasm` / `cc32-nowasm` | no WASM/WAMR builds |
|
|
195
|
+
| `BUILD=fast\|small\|debug` | build flavor: `make cc64 BUILD=small` = `-Os`+LTO (~1.5MB, used by CI) |
|
|
202
196
|
| `make js` | compile TypeScript via tsc |
|
|
203
|
-
| `make wasm` | compile
|
|
197
|
+
| `make wasm` | compile `test/*.wat` → WASM fixtures |
|
|
204
198
|
| `make test` | run all tests |
|
|
205
199
|
| `make test TEST=-net` | skip network tests (fast) |
|
|
206
200
|
| `make test TEST=wasm` | run WASM tests only |
|
|
207
|
-
| `make
|
|
208
|
-
| `make embed-js`
|
|
209
|
-
| `make embed-js-br` | embed brotli-compressed JS into exe |
|
|
210
|
-
| `make exec_server` | Bundle `examples/exec_server.ts` and brotli-embed into `_build/exec_server.exe` |
|
|
201
|
+
| `make exec_server` | bundle `examples/exec_server.ts` and brotli-embed into `_build/exec_server.exe` |
|
|
202
|
+
| `make embed-js` / `embed-js-br` | embed JS (brotli-compressed) into exe |
|
|
211
203
|
| `make npm-pkg` | package into `dist/quickwin/` |
|
|
212
|
-
| `make
|
|
204
|
+
| `make gen-const` | regenerate `quickwin_const.d.ts` |
|
|
205
|
+
| `make clean` / `distclean` | clean (wipes all of `_build/`; afterwards run `make js wasm`) |
|
|
206
|
+
|
|
207
|
+
Build and troubleshooting details: `.agents/DEVELOPMENT_WORKFLOW.md`.
|
|
213
208
|
|
|
214
209
|
## License
|
|
215
210
|
|
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
|
|
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
|
-
|
|
57
|
+
命令行按固定槽位解析:`exe [-d] [-o 目标] [-e code | 脚本文件]`;槽位之后的所有参数原样进入 `scriptArgs`,不报错、不消费。文件槽不接受 `-` 开头的文件名(用 `./-name.js` 运行这类脚本)。
|
|
59
58
|
|
|
60
59
|
## 内嵌脚本
|
|
61
60
|
|
|
@@ -170,8 +169,6 @@ parent.onmessage = (e) => {
|
|
|
170
169
|
- **podman**(开发容器;构建/测试/QEMU 验证都在容器内完成,与 CI 一致)
|
|
171
170
|
- Git(用于子模块)
|
|
172
171
|
|
|
173
|
-
> 也支持 MSYS2 原生直接 `make`,详见 `.agents/DEVELOPMENT_WORKFLOW.md`。
|
|
174
|
-
|
|
175
172
|
### 构建
|
|
176
173
|
|
|
177
174
|
```bash
|
|
@@ -195,7 +192,7 @@ podman exec quickwin-dev bash -lc 'cd /workspace && make js && make cc64 && make
|
|
|
195
192
|
| `make cc64-nowasm` / `cc32-nowasm` | 无 WASM/WAMR 版 |
|
|
196
193
|
| `BUILD=fast\|small\|debug` | 构建 flavor:`make cc64 BUILD=small` = `-Os`+LTO(约 1.5MB,CI 用) |
|
|
197
194
|
| `make js` | 通过 tsc 编译 TypeScript |
|
|
198
|
-
| `make wasm`
|
|
195
|
+
| `make wasm` | 编译 `test/*.wat` → WASM fixtures |
|
|
199
196
|
| `make test` | 运行全部测试 |
|
|
200
197
|
| `make test TEST=-net` | 跳过网络测试(快速) |
|
|
201
198
|
| `make test TEST=wasm` | 仅运行 WASM 测试 |
|