xbintsc 0.5.51 → 0.6.8
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.md +8 -2
- package/README.zh-CN.md +9 -3
- package/dist/scripts/fetch-tarball.d.ts +28 -0
- package/dist/scripts/fetch-tarball.js +57 -0
- package/dist/scripts/fetch-tarball.js.map +1 -0
- package/dist/scripts/gui-build-options.d.ts +77 -0
- package/dist/scripts/gui-build-options.js +134 -0
- package/dist/scripts/gui-build-options.js.map +1 -0
- package/dist/src/cli/help.d.ts +1 -1
- package/dist/src/cli/hints.d.ts +6 -2
- package/dist/src/cli/hints.js +16 -2
- package/dist/src/cli/hints.js.map +1 -1
- package/dist/src/cli/main.js +9 -0
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/driver/app-artifacts.d.ts +2 -0
- package/dist/src/driver/app-artifacts.js +3 -3
- package/dist/src/driver/app-artifacts.js.map +1 -1
- package/dist/src/driver/compiler.js +147 -52
- package/dist/src/driver/compiler.js.map +1 -1
- package/dist/src/driver/icon.d.ts +1 -1
- package/dist/src/driver/icon.js +3 -3
- package/dist/src/driver/icon.js.map +1 -1
- package/dist/src/driver/macos-sdk.d.ts +32 -0
- package/dist/src/driver/macos-sdk.js +50 -0
- package/dist/src/driver/macos-sdk.js.map +1 -0
- package/dist/src/driver/options.d.ts +6 -0
- package/dist/src/driver/platform-support.d.ts +45 -0
- package/dist/src/driver/platform-support.js +66 -0
- package/dist/src/driver/platform-support.js.map +1 -0
- package/dist/src/driver/prebuilt.d.ts +26 -0
- package/dist/src/driver/prebuilt.js +58 -0
- package/dist/src/driver/prebuilt.js.map +1 -0
- package/dist/src/driver/runtime-objects.d.ts +11 -0
- package/dist/src/driver/runtime-objects.js +14 -5
- package/dist/src/driver/runtime-objects.js.map +1 -1
- package/dist/src/driver/toolchain-provider.d.ts +8 -0
- package/dist/src/driver/toolchain-provider.js +8 -0
- package/dist/src/driver/toolchain-provider.js.map +1 -1
- package/dist/src/driver/toolchain.d.ts +20 -1
- package/dist/src/driver/toolchain.js +19 -0
- package/dist/src/driver/toolchain.js.map +1 -1
- package/dist/src/driver/version.d.ts +1 -1
- package/dist/src/driver/version.js +1 -1
- package/dist/src/driver/version.js.map +1 -1
- package/dist/src/driver/win-entry.d.ts +1 -1
- package/dist/src/driver/win-entry.js +4 -4
- package/dist/src/driver/win-entry.js.map +1 -1
- package/dist/src/extensions/gui/features.d.ts +9 -6
- package/dist/src/extensions/gui/features.js +14 -9
- package/dist/src/extensions/gui/features.js.map +1 -1
- package/dist/src/extensions/gui/html.d.ts +10 -7
- package/dist/src/extensions/gui/html.js +53 -29
- package/dist/src/extensions/gui/html.js.map +1 -1
- package/dist/src/extensions/node/child_process/index.d.ts +4 -3
- package/dist/src/extensions/node/child_process/index.js +4 -3
- package/dist/src/extensions/node/child_process/index.js.map +1 -1
- package/dist/tests/cli/hints.test.js +9 -1
- package/dist/tests/cli/hints.test.js.map +1 -1
- package/dist/tests/cli/main.test.js +9 -0
- package/dist/tests/cli/main.test.js.map +1 -1
- package/dist/tests/driver/compiler.test.js +107 -0
- package/dist/tests/driver/compiler.test.js.map +1 -1
- package/dist/tests/driver/cxx-compile-flags.test.d.ts +1 -0
- package/dist/tests/driver/cxx-compile-flags.test.js +24 -0
- package/dist/tests/driver/cxx-compile-flags.test.js.map +1 -0
- package/dist/tests/driver/macos-sdk.test.d.ts +1 -0
- package/dist/tests/driver/macos-sdk.test.js +83 -0
- package/dist/tests/driver/macos-sdk.test.js.map +1 -0
- package/dist/tests/driver/platform-support.test.d.ts +1 -0
- package/dist/tests/driver/platform-support.test.js +41 -0
- package/dist/tests/driver/platform-support.test.js.map +1 -0
- package/dist/tests/driver/prebuilt.test.d.ts +1 -0
- package/dist/tests/driver/prebuilt.test.js +44 -0
- package/dist/tests/driver/prebuilt.test.js.map +1 -0
- package/dist/tests/driver/toolchain-provider.test.js +24 -0
- package/dist/tests/driver/toolchain-provider.test.js.map +1 -1
- package/dist/tests/driver/toolchain.test.js +23 -0
- package/dist/tests/driver/toolchain.test.js.map +1 -1
- package/dist/tests/e2e/async-await.test.js +4 -2
- package/dist/tests/e2e/async-await.test.js.map +1 -1
- package/dist/tests/e2e/compile-node.test.js +21 -0
- package/dist/tests/e2e/compile-node.test.js.map +1 -1
- package/dist/tests/e2e/fetch.test.js +34 -6
- package/dist/tests/e2e/fetch.test.js.map +1 -1
- package/dist/tests/e2e/gui-css-coverage.test.d.ts +9 -0
- package/dist/tests/e2e/gui-css-coverage.test.js +333 -0
- package/dist/tests/e2e/gui-css-coverage.test.js.map +1 -0
- package/dist/tests/e2e/gui-css-features.test.d.ts +6 -0
- package/dist/tests/e2e/gui-css-features.test.js +270 -0
- package/dist/tests/e2e/gui-css-features.test.js.map +1 -0
- package/dist/tests/e2e/gui-effects.test.js +92 -11
- package/dist/tests/e2e/gui-effects.test.js.map +1 -1
- package/dist/tests/e2e/gui-example-pelican3d.test.d.ts +10 -0
- package/dist/tests/e2e/gui-example-pelican3d.test.js +94 -0
- package/dist/tests/e2e/gui-example-pelican3d.test.js.map +1 -0
- package/dist/tests/e2e/gui-font-face.test.d.ts +10 -0
- package/dist/tests/e2e/gui-font-face.test.js +142 -0
- package/dist/tests/e2e/gui-font-face.test.js.map +1 -0
- package/dist/tests/e2e/gui-fonts.test.d.ts +10 -0
- package/dist/tests/e2e/gui-fonts.test.js +150 -0
- package/dist/tests/e2e/gui-fonts.test.js.map +1 -0
- package/dist/tests/e2e/gui-helpers.d.ts +5 -0
- package/dist/tests/e2e/gui-helpers.js +4 -0
- package/dist/tests/e2e/gui-helpers.js.map +1 -1
- package/dist/tests/e2e/gui-layout.test.js +3 -2
- package/dist/tests/e2e/gui-layout.test.js.map +1 -1
- package/dist/tests/e2e/gui-script.test.js +48 -0
- package/dist/tests/e2e/gui-script.test.js.map +1 -1
- package/dist/tests/e2e/gui-track-sizing.test.d.ts +6 -0
- package/dist/tests/e2e/gui-track-sizing.test.js +173 -0
- package/dist/tests/e2e/gui-track-sizing.test.js.map +1 -0
- package/dist/tests/e2e/gui-transform.test.js +3 -2
- package/dist/tests/e2e/gui-transform.test.js.map +1 -1
- package/dist/tests/e2e/unhandled-rejection.test.d.ts +14 -0
- package/dist/tests/e2e/unhandled-rejection.test.js +107 -0
- package/dist/tests/e2e/unhandled-rejection.test.js.map +1 -0
- package/dist/tests/extensions/gui-features.test.js +8 -1
- package/dist/tests/extensions/gui-features.test.js.map +1 -1
- package/dist/tests/extensions/gui.test.js +44 -0
- package/dist/tests/extensions/gui.test.js.map +1 -1
- package/dist/tests/scripts/fetch-tarball.test.d.ts +1 -0
- package/dist/tests/scripts/fetch-tarball.test.js +70 -0
- package/dist/tests/scripts/fetch-tarball.test.js.map +1 -0
- package/doc/ai/cli.md +6 -0
- package/doc/ai/extensions.md +10 -5
- package/doc/ai/language-support.md +1 -0
- package/doc/ai/troubleshooting.md +32 -2
- package/doc/ai/zh-CN/cli.md +5 -0
- package/doc/ai/zh-CN/extensions.md +9 -4
- package/doc/ai/zh-CN/language-support.md +1 -0
- package/doc/ai/zh-CN/troubleshooting.md +27 -2
- package/doc/gui/animation.md +39 -9
- package/doc/gui/build.md +13 -8
- package/doc/gui/dom.md +23 -5
- package/doc/gui/known-issues.md +31 -23
- package/doc/gui/layout.md +30 -7
- package/doc/gui/rendering.md +84 -26
- package/doc/gui/webgl.md +4 -0
- package/doc/gui-scripts.md +33 -17
- package/doc/gui.md +79 -15
- package/doc/implemented/async.md +1 -0
- package/doc/implemented/modules.md +9 -6
- package/doc/implemented/node/child-process.md +12 -4
- package/doc/implemented/runtime-core.md +1 -1
- package/doc/npm-package.md +23 -2
- package/doc/post/make-js-great-again.md +30 -0
- package/doc/requirements.md +31 -0
- package/doc/unimplemented/deviations.md +1 -0
- package/doc/zh-CN/gui/animation.md +33 -10
- package/doc/zh-CN/gui/build.md +9 -7
- package/doc/zh-CN/gui/dom.md +19 -4
- package/doc/zh-CN/gui/known-issues.md +21 -12
- package/doc/zh-CN/gui/layout.md +22 -5
- package/doc/zh-CN/gui/rendering.md +61 -20
- package/doc/zh-CN/gui/webgl.md +1 -0
- package/doc/zh-CN/gui-scripts.md +23 -11
- package/doc/zh-CN/gui.md +64 -16
- package/doc/zh-CN/implemented/async.md +1 -0
- package/doc/zh-CN/implemented/modules.md +8 -4
- package/doc/zh-CN/implemented/node/child-process.md +10 -3
- package/doc/zh-CN/implemented/runtime-core.md +1 -1
- package/doc/zh-CN/npm-package.md +18 -1
- package/doc/zh-CN/post/make-js-great-again.md +32 -0
- package/doc/zh-CN/requirements.md +25 -0
- package/doc/zh-CN/unimplemented/deviations.md +1 -0
- package/package.json +7 -7
- package/runtime/ext_gui/animation_values.cpp +425 -0
- package/runtime/ext_gui/animation_values.h +64 -0
- package/runtime/ext_gui/css.cpp +172 -21
- package/runtime/ext_gui/css.h +75 -4
- package/runtime/ext_gui/css_match.cpp +4 -0
- package/runtime/ext_gui/css_sheet.cpp +218 -2
- package/runtime/ext_gui/document.cpp +42 -192
- package/runtime/ext_gui/document.h +25 -12
- package/runtime/ext_gui/document_animation.cpp +428 -0
- package/runtime/ext_gui/effect_values.cpp +245 -21
- package/runtime/ext_gui/gradient_values.cpp +24 -0
- package/runtime/ext_gui/grid_values.cpp +23 -0
- package/runtime/ext_gui/gui_cursor.cpp +50 -0
- package/runtime/ext_gui/gui_events.cpp +16 -4
- package/runtime/ext_gui/gui_internal.h +3 -0
- package/runtime/ext_gui/image_api.h +3 -1
- package/runtime/ext_gui/image_feature.cpp +4 -2
- package/runtime/ext_gui/inline_svg.cpp +95 -8
- package/runtime/ext_gui/inline_svg.h +5 -1
- package/runtime/ext_gui/layout.cpp +3 -2
- package/runtime/ext_gui/layout.h +6 -0
- package/runtime/ext_gui/layout_flex.cpp +134 -29
- package/runtime/ext_gui/layout_flow.cpp +58 -7
- package/runtime/ext_gui/layout_flow_internal.h +39 -4
- package/runtime/ext_gui/layout_grid.cpp +31 -0
- package/runtime/ext_gui/layout_inline.cpp +26 -2
- package/runtime/ext_gui/layout_vertical.cpp +196 -0
- package/runtime/ext_gui/paint.cpp +67 -9
- package/runtime/ext_gui/paint.h +61 -8
- package/runtime/ext_gui/paint_backdrop.cpp +211 -0
- package/runtime/ext_gui/paint_background.cpp +175 -97
- package/runtime/ext_gui/paint_effects.cpp +12 -6
- package/runtime/ext_gui/paint_internal.h +27 -0
- package/runtime/ext_gui/paint_outline.cpp +44 -0
- package/runtime/ext_gui/paint_shadow.cpp +368 -0
- package/runtime/ext_gui/renderer.cpp +15 -7
- package/runtime/ext_gui/renderer.h +10 -1
- package/runtime/ext_gui/renderer_backdrop.cpp +374 -0
- package/runtime/ext_gui/renderer_bitmap.cpp +82 -0
- package/runtime/ext_gui/renderer_gradient.cpp +51 -17
- package/runtime/ext_gui/renderer_image.cpp +6 -1
- package/runtime/ext_gui/renderer_internal.h +21 -0
- package/runtime/ext_gui/renderer_layer.cpp +27 -1
- package/runtime/ext_gui/renderer_text.cpp +2 -1
- package/runtime/ext_gui/style.cpp +62 -8
- package/runtime/ext_gui/style.h +111 -4
- package/runtime/ext_gui/style_cascade.cpp +83 -0
- package/runtime/ext_gui/style_internal.h +13 -1
- package/runtime/ext_gui/style_length.cpp +92 -0
- package/runtime/ext_gui/style_print.cpp +83 -2
- package/runtime/ext_gui/style_svg.cpp +40 -0
- package/runtime/ext_gui/style_text.cpp +302 -0
- package/runtime/ext_gui/style_ui.cpp +150 -0
- package/runtime/ext_gui/style_values.cpp +76 -62
- package/runtime/ext_gui/style_values_internal.h +23 -0
- package/runtime/ext_gui/text.cpp +4 -2
- package/runtime/ext_gui/text.h +11 -4
- package/runtime/ext_gui/text_cache.cpp +11 -2
- package/runtime/ext_gui/text_font_db.cpp +427 -0
- package/runtime/ext_gui/text_font_paths.cpp +250 -0
- package/runtime/ext_gui/text_font_paths.h +39 -0
- package/runtime/ext_gui/text_font_sfnt.cpp +396 -0
- package/runtime/ext_gui/text_font_sfnt.h +44 -0
- package/runtime/ext_gui/text_fonts.cpp +348 -0
- package/runtime/ext_gui/text_fonts.h +78 -0
- package/runtime/ext_gui/text_fonts_internal.h +77 -0
- package/runtime/ext_gui/text_hb.cpp +63 -179
- package/runtime/ext_gui/text_stb.cpp +49 -193
- package/runtime/ext_gui/transform.cpp +107 -9
- package/runtime/ext_gui/transform.h +5 -0
- package/runtime/ext_gui/window.cpp +1 -1
- package/runtime/ext_node/child_process/child_process.c +149 -7
- package/runtime/rt.h +4 -0
- package/runtime/xt_async.c +4 -0
- package/runtime/xt_generator.c +2 -0
- package/runtime/xt_loop.c +8 -4
- package/runtime/xt_promise.c +103 -0
- package/scripts/build-gui.ts +17 -5
- package/scripts/build-media.ts +89 -10
- package/scripts/build-runtime.ts +7 -2
- package/scripts/fetch-tarball.ts +71 -0
- package/scripts/gui-build-cache.ts +28 -0
- package/scripts/gui-build-options.ts +26 -2
- package/scripts/package-release.ts +8 -0
- package/src/cli/hints.ts +19 -2
- package/src/cli/main.ts +11 -0
- package/src/driver/app-artifacts.ts +5 -3
- package/src/driver/compiler.ts +167 -56
- package/src/driver/icon.ts +3 -2
- package/src/driver/macos-sdk.ts +52 -0
- package/src/driver/options.ts +6 -0
- package/src/driver/platform-support.ts +69 -0
- package/src/driver/prebuilt.ts +61 -0
- package/src/driver/runtime-objects.ts +26 -5
- package/src/driver/toolchain-provider.ts +11 -0
- package/src/driver/toolchain.ts +26 -1
- package/src/driver/version.ts +1 -1
- package/src/driver/win-entry.ts +4 -3
- package/src/extensions/gui/features.ts +13 -9
- package/src/extensions/gui/html.ts +61 -31
- package/src/extensions/node/child_process/index.ts +4 -3
|
@@ -68,6 +68,50 @@ describe("gui .html asset loader", () => {
|
|
|
68
68
|
const empty = loadHtmlAsset("b.html", `<script></script>`);
|
|
69
69
|
expect(empty.moduleSource).not.toContain("__registerScript");
|
|
70
70
|
});
|
|
71
|
+
it("hoists an inline script's bare import to module scope", () => {
|
|
72
|
+
/* An `import` left inside the script function body is not a module
|
|
73
|
+
* statement: codegen never registers the binding and reports TS5001 when
|
|
74
|
+
* the body calls it. Both script forms must link the same way. */
|
|
75
|
+
const body = [
|
|
76
|
+
'import { readFileSync } from "node:fs";',
|
|
77
|
+
'const out = document.getElementById("out");',
|
|
78
|
+
'out.textContent = readFileSync("data.txt", "utf8");',
|
|
79
|
+
].join("\n");
|
|
80
|
+
const { moduleSource } = loadHtmlAsset("page.html", `<script lang="ts">${body}</script>`);
|
|
81
|
+
const importIndex = moduleSource.indexOf('import { readFileSync } from "node:fs"');
|
|
82
|
+
const wrappedIndex = moduleSource.indexOf("function __xt_script_");
|
|
83
|
+
expect(importIndex).toBeGreaterThanOrEqual(0);
|
|
84
|
+
expect(importIndex).toBeLessThan(wrappedIndex);
|
|
85
|
+
expect(moduleSource).toContain('readFileSync("data.txt", "utf8")');
|
|
86
|
+
expect(parseDiagnostics(moduleSource)).toBe(0);
|
|
87
|
+
});
|
|
88
|
+
it("defers an inline script's relative import and resolves it from the HTML dir", () => {
|
|
89
|
+
const directory = writeFiles({ "lib/util.ts": "export const size = 1;" });
|
|
90
|
+
const htmlPath = join(directory, "page.html");
|
|
91
|
+
const { moduleSource } = loadHtmlAsset(htmlPath, `<script>import { size } from "./lib/util";\nconsole.log(size);</script>`);
|
|
92
|
+
expect(moduleSource).toContain('import { __xt_deferred_module as __xt_deferred_0_0 } from "./lib/util"');
|
|
93
|
+
expect(moduleSource).toContain("const { size } = __xt_deferred_0_0();");
|
|
94
|
+
expect(parseDiagnostics(moduleSource)).toBe(0);
|
|
95
|
+
});
|
|
96
|
+
it("strips export modifiers from an inline script", () => {
|
|
97
|
+
const { moduleSource } = loadHtmlAsset("page.html", `<script>export const a = 1;\nexport function f() { return a; }</script>`);
|
|
98
|
+
expect(moduleSource).toContain("const a = 1;");
|
|
99
|
+
expect(moduleSource).toContain("function f()");
|
|
100
|
+
expect(moduleSource).not.toContain("export const");
|
|
101
|
+
expect(parseDiagnostics(moduleSource)).toBe(0);
|
|
102
|
+
});
|
|
103
|
+
it("keys inline scripts by body and prelude, and rejects a shared eager binding", () => {
|
|
104
|
+
/* Identical statements, different deferred imports: one registry entry
|
|
105
|
+
* each, because the prelude is part of the wrapped function. */
|
|
106
|
+
const page = loadHtmlAsset("page.html", `<script>import { size } from "./a";\nconsole.log(size);</script>` +
|
|
107
|
+
`<script>import { size } from "./b";\nconsole.log(size);</script>`);
|
|
108
|
+
const ids = [...page.moduleSource.matchAll(/__registerScript\("([^"]+)"/g)].map((m) => m[1]);
|
|
109
|
+
expect(ids).toHaveLength(2);
|
|
110
|
+
expect(ids[0]).not.toBe(ids[1]);
|
|
111
|
+
/* Two inline scripts cannot both claim the same module-scope binding. */
|
|
112
|
+
expect(() => loadHtmlAsset("page.html", `<script>import { b } from "p1";\nconsole.log(b);</script>` +
|
|
113
|
+
`<script>import { b } from "p2";\nconsole.log(b);</script>`)).toThrow(/already imported by another <script>/);
|
|
114
|
+
});
|
|
71
115
|
it("compiles an external <script src> file into a registered function", () => {
|
|
72
116
|
const directory = writeFiles({
|
|
73
117
|
"app.ts": "const b = document.getElementById('b');\nb.textContent = 'ready';",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui.test.js","sourceRoot":"","sources":["../../../tests/extensions/gui.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gui.test.js","sourceRoot":"","sources":["../../../tests/extensions/gui.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
6
|
+
import { downloadTarball } from "../../scripts/fetch-tarball.js";
|
|
7
|
+
vi.mock("node:child_process", () => ({ spawnSync: vi.fn() }));
|
|
8
|
+
const spawn = vi.mocked(spawnSync);
|
|
9
|
+
const directories = [];
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
spawn.mockReset();
|
|
12
|
+
});
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
while (directories.length > 0)
|
|
15
|
+
rmSync(directories.pop(), { recursive: true, force: true });
|
|
16
|
+
});
|
|
17
|
+
/** Make the mocked curl write `content` to its `-o` target and report `status`. */
|
|
18
|
+
function respond(status, content = "tarball") {
|
|
19
|
+
spawn.mockImplementationOnce((_command, args) => {
|
|
20
|
+
const argv = args ?? [];
|
|
21
|
+
const output = argv[argv.indexOf("-o") + 1];
|
|
22
|
+
if (status === 0)
|
|
23
|
+
writeFileSync(output, content);
|
|
24
|
+
return { status };
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function temporaryDirectory() {
|
|
28
|
+
const directory = mkdtempSync(join(tmpdir(), "xbintsc-fetch-"));
|
|
29
|
+
directories.push(directory);
|
|
30
|
+
return directory;
|
|
31
|
+
}
|
|
32
|
+
describe("downloadTarball", () => {
|
|
33
|
+
it("writes the tarball through a .part file", () => {
|
|
34
|
+
const destination = join(temporaryDirectory(), "ffmpeg.tar.xz");
|
|
35
|
+
respond(0, "release");
|
|
36
|
+
downloadTarball(destination, "https://example.invalid/ffmpeg.tar.xz", "FFmpeg");
|
|
37
|
+
expect(readFileSync(destination, "utf8")).toBe("release");
|
|
38
|
+
expect(existsSync(`${destination}.part`)).toBe(false);
|
|
39
|
+
expect(spawn).toHaveBeenCalledTimes(1);
|
|
40
|
+
});
|
|
41
|
+
it("retries a transient TLS failure", () => {
|
|
42
|
+
const destination = join(temporaryDirectory(), "ffmpeg.tar.xz");
|
|
43
|
+
respond(35);
|
|
44
|
+
respond(0, "release");
|
|
45
|
+
downloadTarball(destination, "https://example.invalid/ffmpeg.tar.xz", "FFmpeg", { retryDelayMs: 0 });
|
|
46
|
+
expect(spawn).toHaveBeenCalledTimes(2);
|
|
47
|
+
expect(readFileSync(destination, "utf8")).toBe("release");
|
|
48
|
+
});
|
|
49
|
+
it("fails fast on a status a retry cannot fix", () => {
|
|
50
|
+
const destination = join(temporaryDirectory(), "ffmpeg.tar.xz");
|
|
51
|
+
respond(22); // curl: the server answered 404
|
|
52
|
+
expect(() => downloadTarball(destination, "https://example.invalid/ffmpeg.tar.xz", "FFmpeg", { retryDelayMs: 0 }))
|
|
53
|
+
.toThrow(/status 22/);
|
|
54
|
+
expect(spawn).toHaveBeenCalledTimes(1);
|
|
55
|
+
expect(existsSync(destination)).toBe(false);
|
|
56
|
+
expect(existsSync(`${destination}.part`)).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
it("gives up after the last attempt without leaving a partial file", () => {
|
|
59
|
+
const destination = join(temporaryDirectory(), "ffmpeg.tar.xz");
|
|
60
|
+
respond(35);
|
|
61
|
+
respond(35);
|
|
62
|
+
expect(() => downloadTarball(destination, "https://example.invalid/ffmpeg.tar.xz", "FFmpeg", {
|
|
63
|
+
attempts: 2,
|
|
64
|
+
retryDelayMs: 0,
|
|
65
|
+
})).toThrow(/status 35/);
|
|
66
|
+
expect(spawn).toHaveBeenCalledTimes(2);
|
|
67
|
+
expect(existsSync(`${destination}.part`)).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=fetch-tarball.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-tarball.test.js","sourceRoot":"","sources":["../../../tests/scripts/fetch-tarball.test.ts"],"names":[],"mappings":"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"}
|
package/doc/ai/cli.md
CHANGED
|
@@ -143,6 +143,12 @@ unreadable or malformed config fails the build with `invalid JSON` or
|
|
|
143
143
|
| `xbintsc_PREFER_PREBUILT` | `0` forces the runtime to be compiled from source |
|
|
144
144
|
| `xbintsc_BINARY` | Native compiler binary the `bin/` launcher should run |
|
|
145
145
|
|
|
146
|
+
When linking a prebuilt `core`/`ext_node` archive fails with a toolchain
|
|
147
|
+
mismatch (`LNK2038`, `LNK2019`, `Undefined symbols`, `undefined reference`),
|
|
148
|
+
`build` automatically retries with those archives' C sources; the bundled
|
|
149
|
+
`gui`/`media` archives cannot be rebuilt that way. See
|
|
150
|
+
[npm-package](../npm-package.md#the-first-build-and-the-cache).
|
|
151
|
+
|
|
146
152
|
## Incremental compilation
|
|
147
153
|
|
|
148
154
|
Each build is keyed on the entry source hash, the compiler version, the build
|
package/doc/ai/extensions.md
CHANGED
|
@@ -88,9 +88,13 @@ text, images and children in it) can be translated, scaled and rotated without
|
|
|
88
88
|
reflowing anything — animate it per frame from `requestAnimationFrame` or with
|
|
89
89
|
`transition: transform` (see `examples/gui/pelican-svg`). The CSS subset also
|
|
90
90
|
covers `@media`, `::before`/`::after` generated content, multi-layer linear/radial
|
|
91
|
-
backgrounds, `
|
|
92
|
-
`
|
|
93
|
-
|
|
91
|
+
backgrounds, `calc()`, `text-shadow`/`box-shadow` with a true Gaussian blur,
|
|
92
|
+
`clip-path`, `filter` colour effects, `backdrop-filter` compositing,
|
|
93
|
+
`@keyframes` and `transition`/`animation` timing functions, `letter-spacing`,
|
|
94
|
+
`text-transform`, inline-level `flex`/`grid`, `grid-area`, `aspect-ratio`, auto
|
|
95
|
+
margins, percentage `border-radius`, `outline`, tiled `background-size` for
|
|
96
|
+
`url()` layers, document CSS on SVG children and text-only vertical writing
|
|
97
|
+
mode. `filter: blur()` is still a documented approximation. If the archive is
|
|
94
98
|
missing for your platform, the build fails with an actionable message; design
|
|
95
99
|
and roadmap live in [../gui.md](../gui.md) (overview; the engine is documented by
|
|
96
100
|
function under [`doc/gui/`](../gui/)), and the scripting surface in
|
|
@@ -138,8 +142,9 @@ extension flag:
|
|
|
138
142
|
app icon. A text-only page links neither decoder.
|
|
139
143
|
- **`shaping`** — HarfBuzz + FreeType for full OpenType shaping (ligatures,
|
|
140
144
|
complex scripts) and CFF/OTF/variable fonts. Selected automatically for
|
|
141
|
-
non-ASCII text (or an escaped/entity codepoint)
|
|
142
|
-
stb_truetype backend and links neither
|
|
145
|
+
non-ASCII text (or an escaped/entity codepoint) or an author `@font-face`
|
|
146
|
+
rule; a Latin-only page keeps the stb_truetype backend and links neither
|
|
147
|
+
library.
|
|
143
148
|
- **`webgl`** — the WebGL context and DOM bindings. Selected by a WebGL
|
|
144
149
|
`getContext(...)` or a `webgl` string; it requires `gpu`, so both activate
|
|
145
150
|
together. A page that never asks for WebGL links neither.
|
|
@@ -72,6 +72,7 @@ Canonical detail (always current, much longer):
|
|
|
72
72
|
| Feature | Status | Notes |
|
|
73
73
|
| --- | --- | --- |
|
|
74
74
|
| `async` / `await`, `Promise`, `Promise.all` | ✅ | real suspension: an `async` body runs on a stackful coroutine, and awaiting a **pending** promise pauses it until the promise settles. Every `await` yields once, so a settled value or non-promise is queued as a microtask like Node |
|
|
75
|
+
| Unhandled rejections | ✅ | fatal, like Node's default: printed as `Unhandled promise rejection` on stderr once the event loop drains, then exit status 1. A `.catch`, a `try` around an `await`, or a handler attached later from a timer all count as handled |
|
|
75
76
|
| `setTimeout` and callbacks | ✅ | timers run on the core event loop; `await new Promise(r => setTimeout(r, ms))` works |
|
|
76
77
|
| `queueMicrotask` / `setImmediate` / `performance.now` | ✅ | microtasks share the promise FIFO queue; `setImmediate` is a zero-delay timer with numeric ids; `performance.now` is monotonic fractional milliseconds |
|
|
77
78
|
| Sockets / servers (`http`, `net`, `dgram`) | ✅ | callbacks run on the event loop and can settle a promise you await (`net` / `http` examples included in the tests) |
|
|
@@ -7,8 +7,9 @@ xbintsc doctor
|
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
It prints the platform, the toolchain it will use (and where it came from), the
|
|
10
|
-
compiler version, the runtime directory, the runtime library directory
|
|
11
|
-
icon resource compiler
|
|
10
|
+
compiler version, the runtime directory, the runtime library directory, the
|
|
11
|
+
supported platform floor and the icon resource compiler — plus, on macOS, the
|
|
12
|
+
SDK it will hand to clang. Most "it doesn't work" reports are answered here.
|
|
12
13
|
|
|
13
14
|
## Before anything else: is clang new enough?
|
|
14
15
|
|
|
@@ -109,11 +110,40 @@ stderr — read the stderr, not just the first line. Frequent causes:
|
|
|
109
110
|
```
|
|
110
111
|
That imports `vcvarsall` and pins `xbintsc_CLANG` to the LLVM bundled with
|
|
111
112
|
Visual Studio. Invoking `vcvarsall.bat x64` directly also works.
|
|
113
|
+
- on macOS, clang reports a standard header as missing — `fatal error:
|
|
114
|
+
'stdio.h' file not found`, `'setjmp.h' file not found`, … There is no
|
|
115
|
+
`/usr/include` on macOS; those headers live in the SDK, and clang only
|
|
116
|
+
searches it when it has a sysroot (`/usr/bin/clang`'s shim, `-isysroot`, or
|
|
117
|
+
`SDKROOT`). xbintsc resolves the SDK with `xcrun --show-sdk-path` and passes
|
|
118
|
+
it as `-isysroot` (unless `SDKROOT` is already set), so this error means
|
|
119
|
+
`xcrun` cannot resolve an SDK for the selected Xcode: check `xcode-select -p`
|
|
120
|
+
and `DEVELOPER_DIR`, and that the selected Xcode is a complete install. A
|
|
121
|
+
header name in the message says nothing about the header — the same error
|
|
122
|
+
names whichever system header the runtime includes first. The same missing
|
|
123
|
+
sysroot shows up at the link as `ld: library 'm' not found`.
|
|
112
124
|
- the linker is wrong on Linux — set `xbintsc_CLANG` and/or pass
|
|
113
125
|
`xbintsc_LINKER_ARGS=-fuse-ld=lld`;
|
|
114
126
|
- `No C compiler found. Set xbintsc_CLANG to a clang binary.` — no clang on
|
|
115
127
|
`PATH` at all.
|
|
116
128
|
|
|
129
|
+
### `Undefined symbols` / `LNK2038` / `was built for newer macOS version`
|
|
130
|
+
|
|
131
|
+
The prebuilt archive from `@xbintsc/<os>-<arch>` was produced by a newer Xcode
|
|
132
|
+
Command Line Tools/SDK or Visual Studio C++ toolset than this machine's. The
|
|
133
|
+
linker cannot mix it with local objects. The driver retries the link once with
|
|
134
|
+
`core`/`ext_node` compiled from the sources shipped in the package and prints:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
xbintsc: the prebuilt runtime archive does not link with this toolchain (…); compiling the C runtime from source
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The first retry is slow because it compiles the C runtime; later builds reuse
|
|
141
|
+
the cached objects. If the failure persists, it is the `gui.a`/`media.a`
|
|
142
|
+
archive: those bundle SDL3/FFmpeg and their sources are not in the npm package,
|
|
143
|
+
so they cannot be rebuilt from it. Use a release/archive built for this
|
|
144
|
+
toolchain, or a source checkout (`npm run gui`, `npm run media`). To skip the
|
|
145
|
+
retry entirely set `xbintsc_PREFER_PREBUILT=0`.
|
|
146
|
+
|
|
117
147
|
### `GUI native library not found at …`
|
|
118
148
|
|
|
119
149
|
The `gui` extension needs its per-platform prebuilt `gui.a`/`gui.lib`. The
|
package/doc/ai/zh-CN/cli.md
CHANGED
|
@@ -123,6 +123,11 @@ JSON schema:[xbintsc.config.schema.json](../../xbintsc.config.schema.json)。
|
|
|
123
123
|
| `xbintsc_PREFER_PREBUILT` | `0` 强制从源码编译运行时 |
|
|
124
124
|
| `xbintsc_BINARY` | `bin/` 启动器应运行的原生编译器二进制 |
|
|
125
125
|
|
|
126
|
+
链接预编译的 `core`/`ext_node` 归档因工具链不匹配(`LNK2038`、`LNK2019`、
|
|
127
|
+
`Undefined symbols`、`undefined reference`)失败时,`build` 会自动改用这些归档对应的
|
|
128
|
+
C 源码重试;随包的 `gui`/`media` 归档无法这样重编。见
|
|
129
|
+
[npm-package](../../zh-CN/npm-package.md#首次构建与缓存)。
|
|
130
|
+
|
|
126
131
|
## 增量编译
|
|
127
132
|
|
|
128
133
|
每次构建的键由入口源码哈希、编译器版本、构建选项、平台和已启用扩展集合共同决定
|
|
@@ -81,8 +81,13 @@ import { createWindow, run } from "gui";
|
|
|
81
81
|
图像与子元素)可以被平移、缩放与旋转而不触发任何重排——可以用
|
|
82
82
|
`requestAnimationFrame` 逐帧驱动,或写成 `transition: transform`(见
|
|
83
83
|
`examples/gui/pelican-svg`)。CSS 子集还覆盖 `@media`、`::before`/`::after`
|
|
84
|
-
生成内容、线性/径向多层背景、`text-shadow
|
|
85
|
-
|
|
84
|
+
生成内容、线性/径向多层背景、`calc()`、真正的 `text-shadow`/`box-shadow`
|
|
85
|
+
高斯模糊、`clip-path`、`filter` 颜色效果、`backdrop-filter` 合成、
|
|
86
|
+
`@keyframes` 与 `transition`/`animation` 时间函数、`letter-spacing`、
|
|
87
|
+
`text-transform`、行内级 `flex`/`grid`、`grid-area`、`aspect-ratio`、自动
|
|
88
|
+
外边距、百分比 `border-radius`、`outline`、`url()` 图层的平铺
|
|
89
|
+
`background-size`、SVG 子元素上的文档 CSS,以及仅文本的竖排书写模式。`filter: blur()`
|
|
90
|
+
仍是有文档说明的近似。
|
|
86
91
|
因为主体是 C++,它以各平台预编译的 `gui.a`/`gui.lib` 形式分发。如果该
|
|
87
92
|
平台的归档不存在,构建会以明确的提示失败;设计与路线图见 [../../zh-CN/gui.md](../../zh-CN/gui.md)(总览;引擎按功能拆分在 [`doc/zh-CN/gui/`](../../zh-CN/gui/) 下),
|
|
88
93
|
脚本接口见 [../../zh-CN/gui-scripts.md](../../zh-CN/gui-scripts.md)。Canvas API
|
|
@@ -123,8 +128,8 @@ HTML/CSS/TS(导入的 `.html` 与内联 CSS 都属于 bundle),按程序自
|
|
|
123
128
|
`drawImage`/`createImageBitmap`/`Image` 与应用图标所需的 stb_image/NanoSVG 解码。
|
|
124
129
|
纯文本页面两个解码器都不链接。
|
|
125
130
|
- **`shaping`** —— HarfBuzz + FreeType 提供的完整 OpenType 整形(连字、复杂文种)
|
|
126
|
-
与 CFF/OTF/可变字体支持。非 ASCII
|
|
127
|
-
|
|
131
|
+
与 CFF/OTF/可变字体支持。非 ASCII 文本(或转义/实体码点)或作者的
|
|
132
|
+
`@font-face` 规则会自动选中;纯拉丁页面保持 stb_truetype 后端,两个库都不链接。
|
|
128
133
|
- **`webgl`** —— WebGL context 与 DOM 绑定。由 WebGL 的 `getContext(...)` 或
|
|
129
134
|
`webgl` 字符串触发;它依赖 `gpu`,两者一起激活。不用 WebGL 的页面两者都不链接。
|
|
130
135
|
|
|
@@ -69,6 +69,7 @@ xbintsc 编译 TypeScript 的一个**实用子集**。本页用来判断你能
|
|
|
69
69
|
| 特性 | 状态 | 说明 |
|
|
70
70
|
| --- | --- | --- |
|
|
71
71
|
| `async`/`await`、`Promise`、`Promise.all` | ✅ | 真实挂起:async 函数体运行在栈式协程上,等待**未 settle** 的 Promise 时暂停,settle 后恢复。每次 `await` 都会让出一次,已 settle 的值或非 Promise 也会像 Node 一样排入微任务 |
|
|
72
|
+
| 未处理的 rejection | ✅ | 与 Node 默认行为一致:事件循环排空后在 stderr 打印 `Unhandled promise rejection` 并以状态码 1 退出。`.catch`、`await` 外层 `try`、或稍后在定时器里补挂的处理函数都算已处理 |
|
|
72
73
|
| `setTimeout` 与回调 | ✅ | 定时器运行在核心事件循环上;`await new Promise(r => setTimeout(r, ms))` 可用 |
|
|
73
74
|
| `queueMicrotask` / `setImmediate` / `performance.now` | ✅ | 微任务与 Promise 共用 FIFO 队列;`setImmediate` 是零延迟定时器,返回数字 id;`performance.now` 返回单调递增的毫秒小数 |
|
|
74
75
|
| 套接字/服务端(`http`、`net`、`dgram`) | ✅ | 回调在事件循环上执行,可以 settle 你正在 await 的 Promise(测试含 `net`/`http` 示例) |
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
xbintsc doctor
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
它会打印平台、将要使用的工具链(以及来源)、编译器版本、运行时目录、运行时库目录、
|
|
10
|
+
支持的平台下限与图标资源编译器;macOS 上还会打印交给 clang 的 SDK。绝大多数
|
|
11
|
+
"跑不起来"的答案都在这里。
|
|
11
12
|
|
|
12
13
|
## 首先确认:clang 够新吗?
|
|
13
14
|
|
|
@@ -100,11 +101,35 @@ clang 自身失败。抛出的消息包含完整的 clang 命令与 stderr——
|
|
|
100
101
|
```
|
|
101
102
|
该脚本会导入 `vcvarsall`,并把 `xbintsc_CLANG` 指向 Visual Studio 自带的
|
|
102
103
|
LLVM。直接执行 `vcvarsall.bat x64` 也仍然可行。
|
|
104
|
+
- macOS 上 clang 报标准头找不到——`fatal error: 'stdio.h' file not found`、
|
|
105
|
+
`'setjmp.h' file not found` 等。macOS 没有 `/usr/include`;这些头文件在 SDK
|
|
106
|
+
里,而 clang 只有拿到 sysroot(`/usr/bin/clang` 的 shim、`-isysroot` 或
|
|
107
|
+
`SDKROOT`)才会去搜索它。xbintsc 会用 `xcrun --show-sdk-path` 解析 SDK 并以
|
|
108
|
+
`-isysroot` 传给 clang(`SDKROOT` 已设置时不覆盖),因此出现这个错误说明
|
|
109
|
+
`xcrun` 无法为选中的 Xcode 解析出 SDK:检查 `xcode-select -p` 和
|
|
110
|
+
`DEVELOPER_DIR`,并确认该 Xcode 是完整安装。消息里出现的头文件名没有意义
|
|
111
|
+
——运行时先 include 哪个系统头,报的就是哪个。同一个缺失的 sysroot 也会在链接
|
|
112
|
+
阶段表现为 `ld: library 'm' not found`。
|
|
103
113
|
- Linux 上链接器不对——设置 `xbintsc_CLANG`,并/或传
|
|
104
114
|
`xbintsc_LINKER_ARGS=-fuse-ld=lld`;
|
|
105
115
|
- `No C compiler found. Set xbintsc_CLANG to a clang binary.` —— `PATH` 里完全没有
|
|
106
116
|
clang。
|
|
107
117
|
|
|
118
|
+
### `Undefined symbols` / `LNK2038` / `was built for newer macOS version`
|
|
119
|
+
|
|
120
|
+
`@xbintsc/<os>-<arch>` 里的预编译归档由比本机更新的 Xcode Command Line
|
|
121
|
+
Tools/SDK 或 Visual Studio C++ 生成工具构建,链接器无法把它与本机目标文件混用。
|
|
122
|
+
驱动会自动改用包内自带的源码重新编译 `core`/`ext_node` 并重试一次链接,同时打印:
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
xbintsc: the prebuilt runtime archive does not link with this toolchain (…); compiling the C runtime from source
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
首次重试会编译 C 运行时,所以较慢;之后的构建复用缓存的目标文件。如果仍然失败,
|
|
129
|
+
冲突的就是 `gui.a`/`media.a`:它们内含 SDL3/FFmpeg,npm 包里没有这些源码,无法从
|
|
130
|
+
包里重编。请改用与本机工具链匹配的发布包,或在源码检出中构建(`npm run gui`、
|
|
131
|
+
`npm run media`)。设置 `xbintsc_PREFER_PREBUILT=0` 可以完全跳过这次重试。
|
|
132
|
+
|
|
108
133
|
### `GUI native library not found at …`
|
|
109
134
|
|
|
110
135
|
`gui` 扩展需要各平台预编译的 `gui.a`/`gui.lib`。可选的 `@xbintsc/<os>-<arch>`
|
package/doc/gui/animation.md
CHANGED
|
@@ -30,21 +30,27 @@ running transition is recorded and re-applied every frame until it finishes;
|
|
|
30
30
|
the engine advances the clock with real frame deltas (`XtDocument::advance`),
|
|
31
31
|
and `win.advance(ms)` lets tests step it deterministically.
|
|
32
32
|
|
|
33
|
-
- Supported properties: `background-color`, `color`, `border-color`,
|
|
34
|
-
`border-radius
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
- Supported properties: `background-color`, `color`, `border-color`, `opacity`,
|
|
34
|
+
`border-radius`, `transform`, `text-shadow`, `box-shadow`, every box offset
|
|
35
|
+
and size length (`width`/`height`/`top`/`left`/`margin-*`/`padding-*`/…), the
|
|
36
|
+
gap/flex-basis lengths and `filter` (matching filter lists interpolate their
|
|
37
|
+
blur lengths, amounts and drop-shadow colours). `transition: all` covers the
|
|
38
|
+
whole list. Lengths
|
|
39
|
+
interpolate when their units line up (a mixed-unit change is CSS's discrete
|
|
40
|
+
fallback); `opacity`, colours and `transform` interpolate normally.
|
|
38
41
|
- Both the `transition` shorthand and the `transition-property` / `-duration` /
|
|
39
42
|
`-delay` / `-timing-function` longhands are parsed; time values accept `s` and
|
|
40
|
-
`ms`;
|
|
41
|
-
|
|
43
|
+
`ms`; `calc()` is accepted inside the shorthand and longhands.
|
|
44
|
+
- Timing functions are `linear`, `ease`, `ease-in`, `ease-out`, `ease-in-out`,
|
|
45
|
+
`cubic-bezier(x1, y1, x2, y2)`, `steps(n, start|end)` and their `jump-*`
|
|
46
|
+
spellings. The engine solves the cubic Bézier numerically; keyword curves use
|
|
47
|
+
the CSS control points.
|
|
42
48
|
- Retargeting mid-flight starts a new transition from the current interpolated
|
|
43
49
|
value, so reversing a hover animates smoothly from wherever it was.
|
|
44
50
|
- `computedStyle()` reports the displayed (interpolated) value, so transitions
|
|
45
51
|
are directly observable in tests.
|
|
46
52
|
|
|
47
|
-
`transform` lists interpolate **element-wise** (`
|
|
53
|
+
`transform` lists interpolate **element-wise** (`animation_values.cpp`,
|
|
48
54
|
`xt_transform_interpolate`), which is what makes the common pair
|
|
49
55
|
`translateY(-4px) rotate(-0.35deg)` <-> `none` glide instead of jumping: the
|
|
50
56
|
missing side is filled with identity ops of the same kind. Two lists whose shapes
|
|
@@ -52,6 +58,29 @@ or units do not line up (`rotate(10deg)` vs `rotate(10rad)`, or a different numb
|
|
|
52
58
|
of functions) are not interpolated at all — the transition snaps to the target,
|
|
53
59
|
which is CSS's discrete fallback rather than a wrong-looking sweep.
|
|
54
60
|
|
|
61
|
+
## CSS animations (`@keyframes`)
|
|
62
|
+
|
|
63
|
+
`@keyframes` rules are parsed into `StyleSheet::keyframes` (offsets from
|
|
64
|
+
`from`/`to`/percent selectors, sorted). `animation` and every `animation-*`
|
|
65
|
+
longhand are supported: name, duration, delay, timing function, iteration count
|
|
66
|
+
(including `infinite`), direction (`normal`/`reverse`/`alternate`/
|
|
67
|
+
`alternate-reverse`), fill mode (`none`/`forwards`/`backwards`/`both`) and
|
|
68
|
+
`paused`/`running`.
|
|
69
|
+
|
|
70
|
+
`XtDocument` starts one active animation per element/name when the computed
|
|
71
|
+
style first declares it, restarts it when the shorthand changes, and leaves it
|
|
72
|
+
alone across unrelated restyles. Each frame it resolves the local time to an
|
|
73
|
+
iteration progress, applies the timing function **per keyframe interval**, and
|
|
74
|
+
interpolates every animatable property. A property that a middle keyframe does
|
|
75
|
+
not mention keeps interpolating between the nearest keyframes that do declare
|
|
76
|
+
it (so a transform declared at 0% and 100% runs straight through a 50% step that
|
|
77
|
+
only changes `opacity`). Missing 0%/100% steps use the element's underlying
|
|
78
|
+
style. `forwards`/`backwards` hold the edge value outside the active time, and
|
|
79
|
+
`computedStyle()` reports the animated value.
|
|
80
|
+
|
|
81
|
+
Animations and transitions share `animation_values.cpp`, so both understand the
|
|
82
|
+
same property set, shadow lists and `transform` identity filling.
|
|
83
|
+
|
|
55
84
|
## CSS transforms (M15)
|
|
56
85
|
|
|
57
86
|
`transform` and `transform-origin` are supported as *paint-time* effects
|
|
@@ -93,5 +122,6 @@ Both are exercised by `examples/gui/pelican-svg` (per-frame sway plus a
|
|
|
93
122
|
hover transition on the caption) and pinned by
|
|
94
123
|
`tests/e2e/gui-transform.test.ts`.
|
|
95
124
|
|
|
96
|
-
|
|
125
|
+
`calc()` can be used in any animated length (for example
|
|
126
|
+
`transition: width 300ms ease-out; width: calc(100% - 20px)`).
|
|
97
127
|
|
package/doc/gui/build.md
CHANGED
|
@@ -45,9 +45,13 @@
|
|
|
45
45
|
minimal static build with only the demuxers/parsers/decoders the media
|
|
46
46
|
elements need, compiles `runtime/ext_media/media.cpp` against it and merges
|
|
47
47
|
everything into `runtime/lib/<os>-<arch>/media.a` (`media.lib` with the MSVC
|
|
48
|
-
ABI on Windows).
|
|
49
|
-
|
|
50
|
-
`
|
|
48
|
+
ABI on Windows). The download retries the transient TLS failures the release
|
|
49
|
+
host is prone to, and the tarball is kept at
|
|
50
|
+
`vendor/ffmpeg-<version>.tar.xz` after extraction, so a rebuild (or CI, which
|
|
51
|
+
caches it by `FFMPEG_VERSION`) extracts the local copy instead of fetching it
|
|
52
|
+
again. `gui.a` does **not** link FFmpeg: the compiler selects the `media` link
|
|
53
|
+
feature for a program that may play media and only then links `media.a` (see
|
|
54
|
+
[Link features](#link-features)).
|
|
51
55
|
- `src/extensions/gui/index.ts` exposes the engine archive through
|
|
52
56
|
`nativeObjects()` (via `findRuntimeLibrary`, so `.a`/`.lib` both work) and the
|
|
53
57
|
OS frameworks through `linkerFlags()`. Its `linkFeatures()` (in
|
|
@@ -131,7 +135,7 @@ features** selected per program:
|
|
|
131
135
|
| `media` | `media_bridge.c` + `media.a` (FFmpeg) | an HTML `<video>`/`<audio>` tag, `createElement("video"/"audio")`, `new Audio()`, `decodeAudioData`, or runtime-built markup |
|
|
132
136
|
| `gpu` | `gpu_bridge.c` (the implementation is already in `gui.a`) | a `getContext("webgl"/"webgl2"/"experimental-webgl")` (or a kind decided at run time), any `webgl` string, `mix-blend-mode`/`mixBlendMode`, or runtime-built markup |
|
|
133
137
|
| `images` | `image_bridge.c` (the implementation is already in `gui.a`) | `<img>`, inline `<svg>`, `background-image`/`url(...)`, a `.svg` path, `drawImage`/`createImageBitmap`/`Image`, or runtime-built markup |
|
|
134
|
-
| `shaping` | `text_bridge.c` (the implementation is already in `gui.a`) | non-ASCII text (CJK/Cyrillic/Greek/…), an escaped/entity codepoint, or runtime-built markup |
|
|
138
|
+
| `shaping` | `text_bridge.c` (the implementation is already in `gui.a`) | non-ASCII text (CJK/Cyrillic/Greek/…), an escaped/entity codepoint, an author `@font-face` rule (custom fonts may be CFF/OTF), or runtime-built markup |
|
|
135
139
|
| `webgl` | `webgl_bridge.c` (the implementation is already in `gui.a`; requires `gpu`) | a WebGL `getContext(...)`, a `webgl` string, or runtime-built markup |
|
|
136
140
|
|
|
137
141
|
The driver scans the bundled AST (`src/driver/usage.ts`): every string literal
|
|
@@ -206,10 +210,11 @@ TrueType outlines and a per-codepoint mapping plus the font's `kern` table, so
|
|
|
206
210
|
CFF/OTF and variable fonts, OpenType ligatures and complex-script shaping
|
|
207
211
|
(Arabic/Indic/Thai) are not available. The fallback chain still selects another
|
|
208
212
|
face for codepoints the primary lacks. Selecting the optional **`shaping`**
|
|
209
|
-
feature (automatically for non-ASCII text
|
|
210
|
-
HarfBuzz + FreeType back in (~1.2 MiB) and
|
|
211
|
-
CFF/OTF/variable-font support. A Latin-only
|
|
212
|
-
3.1 MiB; a Chinese/complex-script page is closer
|
|
213
|
+
feature (automatically for non-ASCII text or an author `@font-face` rule, or
|
|
214
|
+
with `--feature shaping`) links HarfBuzz + FreeType back in (~1.2 MiB) and
|
|
215
|
+
restores full OpenType shaping and CFF/OTF/variable-font support. A Latin-only
|
|
216
|
+
DOM page therefore stays near 3.1 MiB; a Chinese/complex-script page is closer
|
|
217
|
+
to 4.3 MiB.
|
|
213
218
|
|
|
214
219
|
## Running the example
|
|
215
220
|
|
package/doc/gui/dom.md
CHANGED
|
@@ -21,11 +21,26 @@ commas, brackets or parentheses without splitting the list. Selectors: type,
|
|
|
21
21
|
`.class`, `#id`, attribute (`=`, `~=`, `|=`, `^=`, `$=`, `*=`), the four
|
|
22
22
|
combinators (descendant, child, adjacent and general sibling), the pseudo-classes
|
|
23
23
|
`:first-child`, `:last-child`, `:only-child`, `:empty`, `:root`, `:not(...)`,
|
|
24
|
-
`:nth-child(an+b)`, `:disabled`, `:checked`, plus the stateful `:hover
|
|
25
|
-
`:focus` (
|
|
24
|
+
`:nth-child(an+b)`, `:disabled`, `:checked`, plus the stateful `:hover`,
|
|
25
|
+
`:focus`, `:focus-visible` (currently an alias of `:focus`) and `:active` (see
|
|
26
|
+
[Input](./input.md)), and the pseudo-elements `::before`/`::after`
|
|
26
27
|
(legacy `:before`/`:after` too). Values: lengths (`px`, `%`, `em`, `rem`, `vw`,
|
|
27
28
|
`vh`, `pt`, `pc`, `in`, `cm`, `mm`, `q`), colors (hex, `rgb()`/`rgba()`, a named
|
|
28
|
-
subset), numbers, keywords and shorthands (`margin`/`padding`/`border`/`flex
|
|
29
|
+
subset), numbers, keywords and shorthands (`margin`/`padding`/`border`/`flex`/
|
|
30
|
+
`font`/`outline`). `display: inline-flex`/`inline-grid` make a flex/grid
|
|
31
|
+
container inline-level; `grid-area`, `aspect-ratio`, `letter-spacing`,
|
|
32
|
+
`text-transform`, `writing-mode` (`vertical-rl`/`vertical-lr` text),
|
|
33
|
+
`vertical-align` (length form), percentage `border-radius`, `background-size`
|
|
34
|
+
(size + default repeat for `url()` layers) and `currentColor` are parsed too.
|
|
35
|
+
`font-variant-numeric`, `text-wrap`, `text-rendering`, `touch-action`,
|
|
36
|
+
`user-select`, `overscroll-behavior`, `scroll-behavior`, `isolation` and
|
|
37
|
+
`vector-effect` are accepted but have no engine behaviour (the text stack exposes no OpenType features and the engine
|
|
38
|
+
has no touch/selection/smooth-scroll subsystem); `cursor` maps to the SDL system
|
|
39
|
+
cursor. A document rule may style SVG children with the presentation properties
|
|
40
|
+
`fill`, `fill-opacity`, `fill-rule`, `stroke`, `stroke-opacity`, `stroke-width`,
|
|
41
|
+
`stroke-dasharray`, `stroke-dashoffset`, `stroke-linecap` and `stroke-linejoin`;
|
|
42
|
+
the serializer writes them into the inline `<svg>` markup as NanoSVG-readable
|
|
43
|
+
inline styles. `skewX()`/`skewY()`/`skew()` transform functions are supported.
|
|
29
44
|
`transform` (`translate`/`translate3d`/`translateX`/`translateY`, `scale`/
|
|
30
45
|
`scale3d`/`scaleX`/`scaleY`, `rotate`/`rotateZ`, `matrix`; the `3d` spellings'
|
|
31
46
|
`z` argument is dropped) and `transform-origin` are parsed into the computed
|
|
@@ -33,7 +48,8 @@ style as a list of operations plus two (unresolved) origin lengths; an
|
|
|
33
48
|
unsupported function invalidates the whole declaration
|
|
34
49
|
([Layout](./layout.md#transforms-m15)). M19 adds `background-image` layer lists
|
|
35
50
|
(linear/radial), `clip-path` (`inset`/`circle`/`ellipse`/`polygon`), the
|
|
36
|
-
`filter`/`backdrop-filter` function lists, `text-shadow` and
|
|
51
|
+
`filter`/`backdrop-filter` function lists, `text-shadow`, `box-shadow` and
|
|
52
|
+
`content`.
|
|
37
53
|
|
|
38
54
|
**Cascade & computed style** (`runtime/ext_gui/style.{h,cpp}`): a small built-in
|
|
39
55
|
UA stylesheet, author rules sorted by `(!important, specificity, source order)`,
|
|
@@ -185,7 +201,9 @@ The two parameters (`window`, `document`) are ordinary function arguments, so
|
|
|
185
201
|
script locals need no global-object machinery. External scripts work too:
|
|
186
202
|
`<script src="./counter.ts">` is read at compile time, its imports are hoisted
|
|
187
203
|
(rewritten to resolve from the HTML file) and its body is wrapped the same way —
|
|
188
|
-
so a script module can `import` helpers and still see `document`.
|
|
204
|
+
so a script module can `import` helpers and still see `document`. An inline body
|
|
205
|
+
goes through the same split, so `import` works identically there, `node:fs` and
|
|
206
|
+
other `node:` built-ins included once the `node` extension is enabled. Scripts are
|
|
189
207
|
**compile-time assets**: HTML created at runtime (`innerHTML`, fetched over the
|
|
190
208
|
network) never executes, and `src` URLs (`https://…`, `data:…`) are ignored.
|
|
191
209
|
Everything runs in document order after parsing (effectively deferred). See
|