xbintsc 0.3.49 → 0.3.65

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 (51) hide show
  1. package/dist/src/driver/compiler.js +25 -1
  2. package/dist/src/driver/compiler.js.map +1 -1
  3. package/dist/src/driver/config.d.ts +7 -0
  4. package/dist/src/driver/config.js.map +1 -1
  5. package/dist/src/driver/win-entry.d.ts +21 -0
  6. package/dist/src/driver/win-entry.js +52 -0
  7. package/dist/src/driver/win-entry.js.map +1 -0
  8. package/dist/tests/e2e/gui-events.test.js +32 -0
  9. package/dist/tests/e2e/gui-events.test.js.map +1 -1
  10. package/dist/tests/e2e/gui-example-browser.test.d.ts +12 -0
  11. package/dist/tests/e2e/gui-example-browser.test.js +168 -0
  12. package/dist/tests/e2e/gui-example-browser.test.js.map +1 -0
  13. package/dist/tests/e2e/gui-example.test.d.ts +14 -0
  14. package/dist/tests/e2e/gui-example.test.js +76 -0
  15. package/dist/tests/e2e/gui-example.test.js.map +1 -0
  16. package/dist/tests/e2e/gui-helpers.d.ts +39 -4
  17. package/dist/tests/e2e/gui-helpers.js +38 -9
  18. package/dist/tests/e2e/gui-helpers.js.map +1 -1
  19. package/dist/tests/e2e/gui-layout.test.js +155 -0
  20. package/dist/tests/e2e/gui-layout.test.js.map +1 -1
  21. package/dist/tests/e2e/gui-lifecycle.test.js +10 -1
  22. package/dist/tests/e2e/gui-lifecycle.test.js.map +1 -1
  23. package/dist/tests/e2e/gui-paint.test.js +44 -4
  24. package/dist/tests/e2e/gui-paint.test.js.map +1 -1
  25. package/dist/tests/e2e/gui-script.test.js +8 -4
  26. package/dist/tests/e2e/gui-script.test.js.map +1 -1
  27. package/doc/gui.md +120 -9
  28. package/doc/xbintsc.config.schema.json +4 -0
  29. package/doc/zh-CN/gui.md +78 -7
  30. package/package.json +1 -1
  31. package/runtime/ext_gui/dom_api.cpp +19 -0
  32. package/runtime/ext_gui/dom_api_node.cpp +4 -1
  33. package/runtime/ext_gui/dom_api_node_read.cpp +12 -0
  34. package/runtime/ext_gui/gui.cpp +42 -2
  35. package/runtime/ext_gui/gui_engine.h +15 -0
  36. package/runtime/ext_gui/gui_events.cpp +13 -3
  37. package/runtime/ext_gui/layout.cpp +6 -0
  38. package/runtime/ext_gui/layout.h +4 -0
  39. package/runtime/ext_gui/layout_flex.cpp +13 -5
  40. package/runtime/ext_gui/layout_flow.cpp +134 -4
  41. package/runtime/ext_gui/layout_flow_internal.h +41 -2
  42. package/runtime/ext_gui/layout_inline.cpp +11 -3
  43. package/runtime/ext_gui/paint.cpp +6 -0
  44. package/runtime/ext_gui/script.cpp +12 -2
  45. package/runtime/ext_gui/text.cpp +14 -0
  46. package/runtime/ext_gui/window.cpp +44 -0
  47. package/runtime/rt.h +10 -0
  48. package/runtime/xt_io/console.inc +15 -3
  49. package/src/driver/compiler.ts +26 -1
  50. package/src/driver/config.ts +7 -0
  51. package/src/driver/win-entry.ts +59 -0
@@ -22,6 +22,7 @@ import { findRuntimeLibrary } from "./runtime-lib.js";
22
22
  import { resolveToolchain } from "./toolchain-provider.js";
23
23
  import { ensureIconObject, readIcon, EMPTY_ICON, IconError } from "./icon.js";
24
24
  import { ensureWindowsIconResource, resolveResourceCompiler } from "./win-icon.js";
25
+ import { ensureWindowsEntryObject } from "./win-entry.js";
25
26
  import { bundlePathFor, packageMacApp } from "./mac-bundle.js";
26
27
  import { compileC, compileIr, link, realRunner, } from "./toolchain.js";
27
28
  export const COMPILER_VERSION = "0.1.0";
@@ -213,6 +214,17 @@ export function build(entryPath, options = {}) {
213
214
  return { outputPath, irPath, cached: false, diagnostics: [], ir };
214
215
  }
215
216
  const { runtimeObjects, extensionObjects, nativeObjects } = ensureRuntimeObjects(runner, clang, runtimeDir, cacheDir, registry, resolvePreferPrebuilt(options.preferPrebuilt), toolchain.env);
217
+ /* On Windows a GUI program links as a **Windows-subsystem** executable, so
218
+ * launching it does not flash a console window. That subsystem's C runtime
219
+ * wants `WinMain`, so a tiny shim object bridges it to the runtime's `main`.
220
+ * `app.console: true` keeps the console subsystem instead (useful while
221
+ * debugging, because stdout and stderr only exist there). Other platforms
222
+ * have no equivalent. */
223
+ const windowsSubsystem = process.platform === "win32" && registry.has("gui") && app.console !== true;
224
+ const consoleSubsystem = windowsSubsystem ? ["-Wl,/SUBSYSTEM:WINDOWS"] : [];
225
+ const entryObject = windowsSubsystem
226
+ ? ensureWindowsEntryObject(runner, clang, cacheDir, toolchain.env)
227
+ : undefined;
216
228
  const iconObjects = [];
217
229
  // The GUI extension references the icon symbols unconditionally, so a GUI
218
230
  // program gets an (empty) icon object even with no icon configured.
@@ -239,12 +251,24 @@ export function build(entryPath, options = {}) {
239
251
  }
240
252
  link(runner, {
241
253
  clang,
242
- objectPaths: [objectPath, ...runtimeObjects, ...extensionObjects, ...nativeObjects, ...iconObjects],
254
+ objectPaths: [
255
+ objectPath,
256
+ ...runtimeObjects,
257
+ ...extensionObjects,
258
+ ...nativeObjects,
259
+ ...(entryObject !== undefined ? [entryObject] : []),
260
+ ...iconObjects,
261
+ ],
243
262
  outputPath,
244
263
  linkerFlags: [
245
264
  ...toolchain.linkerArgs,
246
265
  ...(process.platform === "win32" ? ["-lws2_32"] : ["-lm"]),
247
266
  ...registry.linkerFlags(),
267
+ /* A GUI program is a Windows-subsystem executable: no console window is
268
+ * created when it is launched. Console output (stdout/stderr) is lost in
269
+ * that subsystem, so a program that wants to report things opts back in
270
+ * with `app.console: true`. */
271
+ ...consoleSubsystem,
248
272
  ],
249
273
  optimize,
250
274
  env: toolchain.env,
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/driver/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/driver/compiler.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,13 @@ export interface AppConfig {
19
19
  /** macOS only: produce a `<name>.app` bundle. */
20
20
  readonly bundle?: boolean;
21
21
  readonly bundleId?: string;
22
+ /**
23
+ * Windows only: link as a console-subsystem executable instead of the default
24
+ * Windows subsystem. A GUI program defaults to the Windows subsystem so that
25
+ * launching it does not open a console window — which also means stdout and
26
+ * stderr go nowhere, so set this while debugging a GUI program.
27
+ */
28
+ readonly console?: boolean;
22
29
  }
23
30
  /** The on-disk schema of `xbintsc.config.json`. Every field is optional. */
24
31
  export interface ProjectConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/driver/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/driver/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Windows GUI-subsystem entry point.
3
+ *
4
+ * A program that links with the `gui` extension is built as a **Windows
5
+ * subsystem** executable (`/SUBSYSTEM:WINDOWS`), which is what keeps a console
6
+ * window from flashing up when it is launched. The MSVC C runtime then expects
7
+ * `WinMain` instead of `main`, and xbintsc's runtime always emits a C `main`
8
+ * (the program body plus teardown), so the driver links this tiny shim to
9
+ * bridge the two.
10
+ *
11
+ * It is compiled on demand and cached like the icon object; nothing here is
12
+ * platform-abstract — on every other platform the file is never used.
13
+ */
14
+ import { type Runner } from "./toolchain.js";
15
+ /** The bridge source. `main` is the entry point the runtime emits. */
16
+ export declare const WINDOWS_ENTRY_SOURCE = "/* Generated by xbintsc - Windows GUI subsystem entry point. Do not edit. */\n#ifndef UNICODE\n#define UNICODE\n#endif\n#include <windows.h>\n\n/* The xbintsc runtime defines the C program entry point; hand it the command\n * line minus the argv[0] hole so it still sees its own arguments. */\nint main(int argc, char **argv);\n\nint WINAPI WinMain(HINSTANCE instance, HINSTANCE previous, LPSTR command_line, int show) {\n (void)instance;\n (void)previous;\n (void)command_line;\n (void)show;\n return main(__argc, __argv);\n}\n";
17
+ /**
18
+ * Compile the entry shim into an object file (cached by source + platform +
19
+ * toolchain) and return its path.
20
+ */
21
+ export declare function ensureWindowsEntryObject(runner: Runner, clang: string, cacheDir: string, env?: Record<string, string>): string;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Windows GUI-subsystem entry point.
3
+ *
4
+ * A program that links with the `gui` extension is built as a **Windows
5
+ * subsystem** executable (`/SUBSYSTEM:WINDOWS`), which is what keeps a console
6
+ * window from flashing up when it is launched. The MSVC C runtime then expects
7
+ * `WinMain` instead of `main`, and xbintsc's runtime always emits a C `main`
8
+ * (the program body plus teardown), so the driver links this tiny shim to
9
+ * bridge the two.
10
+ *
11
+ * It is compiled on demand and cached like the icon object; nothing here is
12
+ * platform-abstract — on every other platform the file is never used.
13
+ */
14
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ import { hashParts } from "./cache.js";
17
+ import { compileC } from "./toolchain.js";
18
+ /** The bridge source. `main` is the entry point the runtime emits. */
19
+ export const WINDOWS_ENTRY_SOURCE = `/* Generated by xbintsc - Windows GUI subsystem entry point. Do not edit. */
20
+ #ifndef UNICODE
21
+ #define UNICODE
22
+ #endif
23
+ #include <windows.h>
24
+
25
+ /* The xbintsc runtime defines the C program entry point; hand it the command
26
+ * line minus the argv[0] hole so it still sees its own arguments. */
27
+ int main(int argc, char **argv);
28
+
29
+ int WINAPI WinMain(HINSTANCE instance, HINSTANCE previous, LPSTR command_line, int show) {
30
+ (void)instance;
31
+ (void)previous;
32
+ (void)command_line;
33
+ (void)show;
34
+ return main(__argc, __argv);
35
+ }
36
+ `;
37
+ /**
38
+ * Compile the entry shim into an object file (cached by source + platform +
39
+ * toolchain) and return its path.
40
+ */
41
+ export function ensureWindowsEntryObject(runner, clang, cacheDir, env) {
42
+ const key = hashParts(["win-gui-entry", process.platform, clang, WINDOWS_ENTRY_SOURCE]);
43
+ const sourcePath = join(cacheDir, `winentry-${key}.c`);
44
+ const objectPath = join(cacheDir, `winentry-${key}.o`);
45
+ if (!existsSync(objectPath)) {
46
+ mkdirSync(cacheDir, { recursive: true });
47
+ writeFileSync(sourcePath, WINDOWS_ENTRY_SOURCE);
48
+ compileC(runner, clang, sourcePath, objectPath, cacheDir, env);
49
+ }
50
+ return objectPath;
51
+ }
52
+ //# sourceMappingURL=win-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"win-entry.js","sourceRoot":"","sources":["../../../src/driver/win-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAEvD,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;CAiBnC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAc,EACd,KAAa,EACb,QAAgB,EAChB,GAA4B;IAE5B,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -56,5 +56,37 @@ describe.skipIf(!guiAvailable)("gui extension — events", () => {
56
56
  expect(stdout).toContain("event=wheel:1,2");
57
57
  expect(stdout).toContain("event=key:a:false");
58
58
  });
59
+ it("exposes the Web window spellings (addEventListener/removeEventListener/closed)", () => {
60
+ const { value, stdout } = harness.compileAndRun("web-window", [
61
+ 'import { createWindow, run } from "gui";',
62
+ "",
63
+ 'const win = createWindow({ title: "web", width: 200, height: 150 });',
64
+ "const log = [];",
65
+ 'const onClick = (e) => log.push("click:" + e.target);',
66
+ 'const onKey = (e) => log.push("key:" + e.key);',
67
+ 'win.addEventListener("click", onClick);',
68
+ 'win.addEventListener("keydown", onKey);',
69
+ 'win.removeEventListener("click", onClick);',
70
+ "",
71
+ 'win.addEventListener("close", () => console.log("closed-in-handler=" + win.closed));',
72
+ 'win.addEventListener("ready", () => {',
73
+ ' console.log("closed-before=" + win.closed);',
74
+ ' win.sendEvent("click", { x: 1, y: 1, button: 0 });',
75
+ ' win.sendEvent("keydown", { key: "a", code: "KeyA" });',
76
+ ' for (const line of log) console.log("web-event=" + line);',
77
+ " win.close();",
78
+ "});",
79
+ 'win.loadHTML("<div id=\'box\'>x</div>");',
80
+ "run();",
81
+ 'console.log("closed-after=" + win.closed);',
82
+ ].join("\n"));
83
+ // `closed` is the Web spelling of `isOpen()`.
84
+ expect(value("closed-before")).toBe("false");
85
+ expect(value("closed-after")).toBe("true");
86
+ expect(stdout).toContain("closed-in-handler=true");
87
+ // `removeEventListener` dropped the click listener; the key listener stayed.
88
+ expect(stdout).not.toContain("web-event=click:");
89
+ expect(stdout).toContain("web-event=key:a");
90
+ });
59
91
  });
60
92
  //# sourceMappingURL=gui-events.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gui-events.test.js","sourceRoot":"","sources":["../../../tests/e2e/gui-events.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;AAEnC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAC5D,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAElC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAC7C,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCC,CACF,CAAC;QAEF,2DAA2D;QAC3D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,2EAA2E;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"gui-events.test.js","sourceRoot":"","sources":["../../../tests/e2e/gui-events.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;AAEnC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,wBAAwB,EAAE,GAAG,EAAE;IAC5D,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAElC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAC7C,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCC,CACF,CAAC;QAEF,2DAA2D;QAC3D,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,2EAA2E;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAC7C,YAAY,EACZ;YACE,0CAA0C;YAC1C,EAAE;YACF,sEAAsE;YACtE,iBAAiB;YACjB,uDAAuD;YACvD,gDAAgD;YAChD,yCAAyC;YACzC,yCAAyC;YACzC,4CAA4C;YAC5C,EAAE;YACF,sFAAsF;YACtF,uCAAuC;YACvC,+CAA+C;YAC/C,sDAAsD;YACtD,yDAAyD;YACzD,6DAA6D;YAC7D,gBAAgB;YAChB,KAAK;YACL,0CAA0C;YAC1C,QAAQ;YACR,4CAA4C;SAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,8CAA8C;QAC9C,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACnD,6EAA6E;QAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * The game's inline `<script>` has to work in a browser as well as in the
3
+ * `gui` extension. This checks the *browser* branch without a browser: it
4
+ * extracts the script from `index.html`, gives it a tiny stub of the DOM
5
+ * surface the game uses, runs it, and drives a few frames through the
6
+ * `window.__pelican` hooks it publishes.
7
+ *
8
+ * It is a syntax + host-shim smoke test, not a rendering test: it catches the
9
+ * class of failure that is invisible to the gui e2e suite (a host API that only
10
+ * exists in the engine, a typo in the browser branch, an undeclared global).
11
+ */
12
+ export {};
@@ -0,0 +1,168 @@
1
+ /**
2
+ * The game's inline `<script>` has to work in a browser as well as in the
3
+ * `gui` extension. This checks the *browser* branch without a browser: it
4
+ * extracts the script from `index.html`, gives it a tiny stub of the DOM
5
+ * surface the game uses, runs it, and drives a few frames through the
6
+ * `window.__pelican` hooks it publishes.
7
+ *
8
+ * It is a syntax + host-shim smoke test, not a rendering test: it catches the
9
+ * class of failure that is invisible to the gui e2e suite (a host API that only
10
+ * exists in the engine, a typo in the browser branch, an undeclared global).
11
+ */
12
+ import { readFileSync } from "node:fs";
13
+ import { dirname, join, resolve } from "node:path";
14
+ import { fileURLToPath } from "node:url";
15
+ import { describe, expect, it } from "vitest";
16
+ const exampleDir = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "examples", "gui", "pelican-bike");
17
+ const page = readFileSync(join(exampleDir, "index.html"), "utf8");
18
+ /** The inline script body (the only `<script lang="ts">` in the document). */
19
+ function inlineScript() {
20
+ const start = page.indexOf('<script lang="ts">');
21
+ const end = page.indexOf("</script>", start);
22
+ expect(start, "index.html has an inline <script lang=\"ts\"> body").toBeGreaterThan(0);
23
+ return page.slice(start + '<script lang="ts">'.length, end);
24
+ }
25
+ function element(id, rect) {
26
+ const styles = new Map();
27
+ return {
28
+ id,
29
+ textContent: "",
30
+ innerHTML: "",
31
+ childElementCount: 0,
32
+ style: {
33
+ setProperty: (name, value) => void styles.set(name, value),
34
+ getPropertyValue: (name) => styles.get(name) ?? "",
35
+ },
36
+ classList: { add: () => { }, remove: () => { }, toggle: () => false, contains: () => false },
37
+ getBoundingClientRect: () => ({ ...rect }),
38
+ querySelector: () => null,
39
+ addEventListener: () => { },
40
+ setAttribute: () => { },
41
+ getAttribute: () => null,
42
+ };
43
+ }
44
+ function runBrowserBranch(framesToDrive) {
45
+ const script = inlineScript();
46
+ const elements = {
47
+ scene: element("scene", { x: 0, y: 40, width: 1000, height: 620 }),
48
+ rider: element("rider", { x: 420, y: 416, width: 24, height: 34 }),
49
+ pogo: element("pogo", { x: 420, y: 416, width: 24, height: 34 }),
50
+ shadow: element("shadow", { x: 400, y: 447, width: 150, height: 3 }),
51
+ };
52
+ const logs = [];
53
+ let scheduled = 0;
54
+ let pending = null;
55
+ const listeners = {};
56
+ const documentStub = {
57
+ getElementById: (id) => elements[id] ?? element(id, { x: 0, y: 0, width: 0, height: 0 }),
58
+ querySelector: (selector) => selector === ".title" ? { textContent: "鹈鹕骑自行车" } : null,
59
+ createElement: (tag) => element(tag, { x: 0, y: 0, width: 0, height: 0 }),
60
+ };
61
+ // The browser `window`, spelled the way the game expects: the same
62
+ // `addEventListener`/`requestAnimationFrame`/`closed`/`close` surface the
63
+ // engine now provides, so the script needs no host branch to pick.
64
+ const windowStub = {
65
+ innerWidth: 1200,
66
+ innerHeight: 800,
67
+ closed: false,
68
+ close: () => { },
69
+ addEventListener: (type, handler) => {
70
+ (listeners[type] ??= []).push(handler);
71
+ },
72
+ requestAnimationFrame: (fn) => {
73
+ scheduled += 1;
74
+ pending = fn;
75
+ return scheduled;
76
+ },
77
+ };
78
+ const body = new Function("window", "document", "console", `${script}\n//# sourceURL=pelican-bike-inline.js`);
79
+ body(windowStub, documentStub, {
80
+ log: (...args) => logs.push(args.map(String).join(" ")),
81
+ error: (...args) => logs.push(args.map(String).join(" ")),
82
+ });
83
+ const hooks = windowStub.__pelican;
84
+ expect(hooks, "the script publishes window.__pelican").toBeTruthy();
85
+ // Drive frames the way a browser would: call the callback a frame scheduled.
86
+ for (let i = 0; i < framesToDrive; i++) {
87
+ const next = pending;
88
+ if (next === null)
89
+ break;
90
+ pending = null;
91
+ next(1000 + i * 16);
92
+ }
93
+ // Keyboard input goes through addEventListener in this host.
94
+ expect(listeners.keydown, "the game listens for keys").toBeTruthy();
95
+ expect(listeners.keyup, "the game listens for key releases").toBeTruthy();
96
+ /** Deliver one key event the way a browser does, to whatever the game
97
+ * registered on `window`. `key` is the browser spelling (" " for the
98
+ * spacebar, "ArrowUp" for the up arrow), not the engine's. */
99
+ const press = (type, key, code) => {
100
+ for (const handler of listeners[type] ?? []) {
101
+ handler({ key, code, type, preventDefault: () => { }, stopPropagation: () => { } });
102
+ }
103
+ };
104
+ /** What the game last wrote to `#pogo`'s `bottom`, which it lifts when the
105
+ * bird is airborne. */
106
+ const bottom = () => elements.pogo?.style.getPropertyValue("bottom") ?? "";
107
+ return { hooks, scheduled, logs, press, bottom };
108
+ }
109
+ describe("gui example — pelican bike in a browser", () => {
110
+ it("runs the inline script against a browser-like host", () => {
111
+ const { hooks, scheduled, logs } = runBrowserBranch(120);
112
+ // It started a frame loop in this host.
113
+ expect(scheduled).toBeGreaterThan(50);
114
+ expect(logs.join("\n")).not.toContain("Uncaught");
115
+ // The game logic advanced (the autopilot reports a distance > 0).
116
+ const info = hooks.info();
117
+ expect(info.ground).toBe(450);
118
+ expect(String(info.hud)).toMatch(/\d{4} \d+ \d+ [▮▯]{7} \d+/);
119
+ // The published hooks work, which is how a browser console drives it.
120
+ hooks.setAuto(false);
121
+ hooks.jump();
122
+ hooks.step(0.016);
123
+ const after = hooks.info();
124
+ expect(String(after.player)).toBe("420,416");
125
+ });
126
+ it("jumps from a real Space key event, the way a browser spells it", () => {
127
+ const { hooks, press, bottom } = runBrowserBranch(30);
128
+ // The autopilot jumps on its own; turn it off so only the key can move us.
129
+ hooks.setAuto(false);
130
+ hooks.step(0.016);
131
+ const grounded = bottom();
132
+ // A browser delivers `key: " "` (and `code: "Space"`), never the engine's
133
+ // `key: "Space"`. Matching only the engine spelling is what broke this.
134
+ press("keydown", " ", "Space");
135
+ press("keyup", " ", "Space");
136
+ hooks.step(0.016);
137
+ // `renderRider` lifts the bike by its `bottom` inset once it is airborne.
138
+ expect(bottom(), `bottom stayed ${grounded} — the key never reached jump()`).not.toBe(grounded);
139
+ });
140
+ it("jumps from the browser's ArrowUp as well", () => {
141
+ const { hooks, press, bottom } = runBrowserBranch(30);
142
+ hooks.setAuto(false);
143
+ hooks.step(0.016);
144
+ const grounded = bottom();
145
+ press("keydown", "ArrowUp", "ArrowUp");
146
+ press("keyup", "ArrowUp", "ArrowUp");
147
+ hooks.step(0.016);
148
+ expect(bottom()).not.toBe(grounded);
149
+ });
150
+ it("uses only Web window APIs, never the engine-only spellings", () => {
151
+ const script = inlineScript();
152
+ // The engine now offers the browser names, so the game can avoid every
153
+ // engine-only API and the `inGui` branch that used to select between them.
154
+ expect(script).not.toContain("window.on(");
155
+ expect(script).not.toContain('window["on"]');
156
+ expect(script).not.toContain("window.isOpen");
157
+ expect(script).not.toContain("window.off(");
158
+ expect(script).not.toContain("window.driver");
159
+ expect(script).not.toContain("inGui");
160
+ // It does use the browser API, which is what makes one script correct in
161
+ // both hosts.
162
+ expect(script).toContain("window.addEventListener");
163
+ expect(script).toContain("window.closed");
164
+ // And nothing may cast through `any`, which the engine's parser rejects.
165
+ expect(script).not.toContain("as any");
166
+ });
167
+ });
168
+ //# sourceMappingURL=gui-example-browser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gui-example-browser.test.js","sourceRoot":"","sources":["../../../tests/e2e/gui-example-browser.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * End-to-end test for `examples/gui/pelican-bike` — the 2D game that exercises
3
+ * the positioned-layer layout, per-frame DOM mutation and the AOT `<script>`
4
+ * pipeline together.
5
+ *
6
+ * The example's own `main.ts` is compiled here (with the game document next to
7
+ * it) and run briefly. The game is interactive and never closes its own window,
8
+ * so the engine's auto-close guard ends the run — and that shutdown path has an
9
+ * intermittent native crash (see `doc/gui.md`, "Known issues"), so the
10
+ * deterministic assertions live in `gui-example-browser.test.ts` (which runs the
11
+ * very same inline script against a stub host) while this test covers the
12
+ * native side: it compiles, it links against the gui archive, and it runs.
13
+ */
14
+ export {};
@@ -0,0 +1,76 @@
1
+ /**
2
+ * End-to-end test for `examples/gui/pelican-bike` — the 2D game that exercises
3
+ * the positioned-layer layout, per-frame DOM mutation and the AOT `<script>`
4
+ * pipeline together.
5
+ *
6
+ * The example's own `main.ts` is compiled here (with the game document next to
7
+ * it) and run briefly. The game is interactive and never closes its own window,
8
+ * so the engine's auto-close guard ends the run — and that shutdown path has an
9
+ * intermittent native crash (see `doc/gui.md`, "Known issues"), so the
10
+ * deterministic assertions live in `gui-example-browser.test.ts` (which runs the
11
+ * very same inline script against a stub host) while this test covers the
12
+ * native side: it compiles, it links against the gui archive, and it runs.
13
+ */
14
+ import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
15
+ import { tmpdir } from "node:os";
16
+ import { dirname, join, resolve } from "node:path";
17
+ import { spawnSync } from "node:child_process";
18
+ import { fileURLToPath } from "node:url";
19
+ import { afterAll, beforeAll, describe, expect, it } from "vitest";
20
+ import { build } from "../../src/driver/compiler.js";
21
+ import { createDefaultRegistry } from "../../src/extensions/registry.js";
22
+ import { guiExtension } from "../../src/extensions/gui/index.js";
23
+ import { guiAvailable } from "./gui-helpers.js";
24
+ /** The example lives at <repo>/examples/gui/pelican-bike. */
25
+ const exampleDir = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "examples", "gui", "pelican-bike");
26
+ /** `0xC0000005`: the known intermittent access violation in the gui engine's
27
+ * auto-close teardown (documented in `doc/gui.md`). Windows reports a crash as
28
+ * this NTSTATUS exit code; on POSIX the same fault terminates the process with
29
+ * a signal, so `spawnSync` reports `status: null` plus a `signal` name. */
30
+ const ACCESS_VIOLATION = 3221225477;
31
+ /** Signals a crash can surface as on Linux/macOS (an access violation is
32
+ * `SIGSEGV`, an abort `SIGABRT`). */
33
+ const CRASH_SIGNALS = new Set(["SIGSEGV", "SIGBUS", "SIGABRT", "SIGILL", "SIGFPE"]);
34
+ let workdir = "";
35
+ describe.skipIf(!guiAvailable)("gui example — pelican bike", () => {
36
+ beforeAll(() => {
37
+ workdir = mkdtempSync(join(tmpdir(), "xbintsc-pelican-"));
38
+ /* The example's sources verbatim: `main.ts` imports `./index.html`, so both
39
+ have to sit together for the loader to find the document. */
40
+ writeFileSync(join(workdir, "index.html"), readFileSync(join(exampleDir, "index.html"), "utf8"));
41
+ writeFileSync(join(workdir, "pelican.ts"), readFileSync(join(exampleDir, "main.ts"), "utf8"));
42
+ });
43
+ afterAll(() => {
44
+ rmSync(workdir, { recursive: true, force: true });
45
+ });
46
+ it("compiles the game and runs it", () => {
47
+ const extensions = createDefaultRegistry().register(guiExtension);
48
+ const result = build(join(workdir, "pelican.ts"), {
49
+ emit: "exe",
50
+ outDir: join(workdir, "out"),
51
+ cacheDir: join(workdir, ".cache"),
52
+ extensions,
53
+ });
54
+ expect(result.diagnostics.filter((diagnostic) => diagnostic.category === "error")).toEqual([]);
55
+ const executed = spawnSync(result.outputPath, [], {
56
+ encoding: "utf8",
57
+ env: { ...process.env, XT_GUI_AUTOCLOSE_MS: "4000" },
58
+ });
59
+ // A clean run, or the documented engine crash — nothing else. Accept both
60
+ // spellings of that crash: the Windows exit code and a POSIX signal.
61
+ const crashed = executed.status === ACCESS_VIOLATION ||
62
+ (executed.status === null && executed.signal !== null && CRASH_SIGNALS.has(executed.signal));
63
+ const outcome = executed.signal !== null ? `signal ${executed.signal}` : `exit ${executed.status}`;
64
+ expect(executed.status === 0 || crashed, `unexpected ${outcome}\nstderr:\n${executed.stderr}`).toBe(true);
65
+ // The program started and its inline `<script>` was compiled and ran.
66
+ const stdout = executed.stdout ?? "";
67
+ expect(stdout).toContain("script=inline AOT <script> ran");
68
+ // When the report made it out before the window closed, check the scene.
69
+ if (stdout.includes("scene=")) {
70
+ expect(stdout).toContain("scene=x=0 y=40 1000x620");
71
+ expect(stdout).toContain("rider=x=420");
72
+ expect(stdout).toMatch(/hud=\d{4} \d+ \d+ [▮▯]{7} \d+/);
73
+ }
74
+ });
75
+ });
76
+ //# sourceMappingURL=gui-example.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gui-example.test.js","sourceRoot":"","sources":["../../../tests/e2e/gui-example.test.ts"],"names":[],"mappings":"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"}