@satzstrom/linux-x64 0.1.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 (87) hide show
  1. package/LICENSE +29 -0
  2. package/bin/satzstrom +0 -0
  3. package/compliance/bun/README.md +19 -0
  4. package/compliance/bun/REBUILD-AND-RELINK.md +82 -0
  5. package/compliance/bun/SOURCE-OFFER.md +15 -0
  6. package/compliance/bun/licenses/BUN-CLAP-UNLICENSE.txt +24 -0
  7. package/compliance/bun/licenses/BUN-LICENSE.md +84 -0
  8. package/compliance/bun/licenses/JAVASCRIPTCORE-COPYING.LIB +488 -0
  9. package/compliance/bun/licenses/THIRD-PARTY-SOURCE-NOTICES.md +7 -0
  10. package/compliance/bun/licenses/WEBKIT-JSC-THIRD-PARTY-NOTICES.md +13 -0
  11. package/compliance/bun/licenses/bun-dependencies/BORINGSSL-LICENSE.txt +238 -0
  12. package/compliance/bun/licenses/bun-dependencies/BROTLI-LICENSE.txt +19 -0
  13. package/compliance/bun/licenses/bun-dependencies/C-ARES-LICENSE.md +24 -0
  14. package/compliance/bun/licenses/bun-dependencies/HDRHISTOGRAM-COPYING.txt +121 -0
  15. package/compliance/bun/licenses/bun-dependencies/HDRHISTOGRAM-LICENSE.txt +42 -0
  16. package/compliance/bun/licenses/bun-dependencies/HIGHWAY-LICENSE.txt +371 -0
  17. package/compliance/bun/licenses/bun-dependencies/LIBARCHIVE-COPYING.txt +65 -0
  18. package/compliance/bun/licenses/bun-dependencies/LIBDEFLATE-COPYING.txt +22 -0
  19. package/compliance/bun/licenses/bun-dependencies/LIBJPEG-TURBO-LICENSE.md +135 -0
  20. package/compliance/bun/licenses/bun-dependencies/LIBSPNG-LICENSE.txt +25 -0
  21. package/compliance/bun/licenses/bun-dependencies/LIBUV-LICENSE.txt +19 -0
  22. package/compliance/bun/licenses/bun-dependencies/LIBWEBP-COPYING.txt +31 -0
  23. package/compliance/bun/licenses/bun-dependencies/LOL-HTML-LICENSE.txt +27 -0
  24. package/compliance/bun/licenses/bun-dependencies/LS-HPACK-LICENSE.txt +21 -0
  25. package/compliance/bun/licenses/bun-dependencies/LS-QPACK-LICENSE.txt +21 -0
  26. package/compliance/bun/licenses/bun-dependencies/LSQUIC-LICENSE.chrome.txt +32 -0
  27. package/compliance/bun/licenses/bun-dependencies/LSQUIC-LICENSE.txt +21 -0
  28. package/compliance/bun/licenses/bun-dependencies/MIMALLOC-LICENSE.txt +21 -0
  29. package/compliance/bun/licenses/bun-dependencies/PICOHTTPPARSER-LICENSE-HEADER.txt +25 -0
  30. package/compliance/bun/licenses/bun-dependencies/RUST-ARGON2-LICENSE-APACHE.txt +201 -0
  31. package/compliance/bun/licenses/bun-dependencies/RUST-ARGON2-LICENSE-MIT.txt +22 -0
  32. package/compliance/bun/licenses/bun-dependencies/TINYCC-COPYING.txt +504 -0
  33. package/compliance/bun/licenses/bun-dependencies/ZLIB-NG-LICENSE.md +19 -0
  34. package/compliance/bun/licenses/bun-dependencies/ZSTD-COPYING.txt +339 -0
  35. package/compliance/bun/licenses/bun-dependencies/ZSTD-LICENSE.txt +30 -0
  36. package/compliance/bun/licenses/bun-dependencies/manifest.json +206 -0
  37. package/compliance/bun/licenses/webkit/DTOA-COPYING.txt +26 -0
  38. package/compliance/bun/licenses/webkit/DTOA-LICENSE.txt +26 -0
  39. package/compliance/bun/licenses/webkit/FAST-FLOAT-LICENSE.txt +190 -0
  40. package/compliance/bun/licenses/webkit/ICU-LICENSE.txt +412 -0
  41. package/compliance/bun/licenses/webkit/MIMALLOC-LICENSE.txt +21 -0
  42. package/compliance/bun/source-manifest.json +243 -0
  43. package/compliance/bun/tools/extract-standalone-payload.mjs +25 -0
  44. package/compliance/bun/tools/fetch-corresponding-source.mjs +48 -0
  45. package/compliance/bun/tools/relink-standalone-payload.mjs +88 -0
  46. package/compliance/bun/tools/standalone-payload.mjs +47 -0
  47. package/licenses/runtime/README.md +9 -0
  48. package/licenses/runtime/assets/HYPHENATION-NOTICE.md +25 -0
  49. package/licenses/runtime/assets/hyph-de-1996-LICENSE.txt +64 -0
  50. package/licenses/runtime/assets/hyph-en-us-LICENSE.txt +32 -0
  51. package/licenses/runtime/assets/sRGB2014-ICC-LICENSE.txt +8 -0
  52. package/licenses/runtime/manifest.json +261 -0
  53. package/licenses/runtime/npm/@modelcontextprotocol/sdk/1.30.0/LICENSE +21 -0
  54. package/licenses/runtime/npm/@pdf-lib/standard-fonts/1.0.0/LICENSE.md +21 -0
  55. package/licenses/runtime/npm/@pdf-lib/upng/1.0.1/LICENSE +21 -0
  56. package/licenses/runtime/npm/ajv/8.20.0/LICENSE +22 -0
  57. package/licenses/runtime/npm/ajv-formats/3.0.1/LICENSE +21 -0
  58. package/licenses/runtime/npm/buffer-crc32/0.2.13/LICENSE +19 -0
  59. package/licenses/runtime/npm/buffer-from/1.1.2/LICENSE +21 -0
  60. package/licenses/runtime/npm/chromium-bidi/0.6.3/LICENSE +201 -0
  61. package/licenses/runtime/npm/cross-spawn/7.0.6/LICENSE +21 -0
  62. package/licenses/runtime/npm/fast-deep-equal/3.1.3/LICENSE +21 -0
  63. package/licenses/runtime/npm/fast-uri/3.1.5/LICENSE +30 -0
  64. package/licenses/runtime/npm/hypher/0.2.5/BSD.txt +25 -0
  65. package/licenses/runtime/npm/isexe/2.0.0/LICENSE +15 -0
  66. package/licenses/runtime/npm/json-schema-traverse/1.0.0/LICENSE +21 -0
  67. package/licenses/runtime/npm/mitt/3.0.1/LICENSE +21 -0
  68. package/licenses/runtime/npm/pako/1.0.11/LICENSE +21 -0
  69. package/licenses/runtime/npm/path-key/3.1.1/license +9 -0
  70. package/licenses/runtime/npm/pdf-lib/1.17.1/LICENSE.md +21 -0
  71. package/licenses/runtime/npm/pend/1.2.0/LICENSE +23 -0
  72. package/licenses/runtime/npm/playwright/1.61.1/LICENSE +202 -0
  73. package/licenses/runtime/npm/playwright/1.61.1/NOTICE +5 -0
  74. package/licenses/runtime/npm/playwright-core/1.61.1/LICENSE +202 -0
  75. package/licenses/runtime/npm/playwright-core/1.61.1/NOTICE +5 -0
  76. package/licenses/runtime/npm/shebang-command/2.0.0/license +9 -0
  77. package/licenses/runtime/npm/shebang-regex/3.0.0/license +9 -0
  78. package/licenses/runtime/npm/source-map/0.6.1/LICENSE +28 -0
  79. package/licenses/runtime/npm/source-map-support/0.5.21/LICENSE.md +21 -0
  80. package/licenses/runtime/npm/tslib/1.14.1/LICENSE.txt +12 -0
  81. package/licenses/runtime/npm/typescript/5.9.3/LICENSE.txt +55 -0
  82. package/licenses/runtime/npm/urlpattern-polyfill/10.0.0/LICENSE +19 -0
  83. package/licenses/runtime/npm/which/2.0.2/LICENSE +15 -0
  84. package/licenses/runtime/npm/yauzl/3.2.1/LICENSE +21 -0
  85. package/licenses/runtime/npm/zod/4.4.3/LICENSE +21 -0
  86. package/licenses/runtime/npm/zod-to-json-schema/3.25.2/LICENSE +15 -0
  87. package/package.json +30 -0
@@ -0,0 +1,243 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "schemaVersion": 1,
4
+ "generatedFor": "Satzstrom Bun-compiled platform binaries",
5
+ "runtime": {
6
+ "name": "Bun",
7
+ "version": "1.4.0",
8
+ "license": "MIT with statically linked third-party components; see licenses/BUN-LICENSE.md",
9
+ "repository": "https://github.com/oven-sh/bun.git",
10
+ "revision": "34cbb9a40b4bd1bd767d134a7065e66c2432a676",
11
+ "tree": "61453622872e362c02b43a1ec0dc778a9b4a7285",
12
+ "sourceArchive": {
13
+ "url": "https://codeload.github.com/oven-sh/bun/tar.gz/34cbb9a40b4bd1bd767d134a7065e66c2432a676",
14
+ "sha256": "d44cad3fc8a3ab2e59308af42b022d2401b3425b98ffde535bfc02387dac4771",
15
+ "bytes": 64069192
16
+ },
17
+ "npmBootstrap": {
18
+ "package": "bun",
19
+ "version": "1.4.0",
20
+ "integrity": "sha512-iRiFkc2W7UVpCyZXO9tod45TP9QCyN19fWqbpeN/jaM/K7uzeHYx/OSPsahMJazGKBgPsnxRt+4Jc43d8BcHZw=="
21
+ }
22
+ },
23
+ "javascriptCore": {
24
+ "name": "oven-sh/WebKit (JavaScriptCore, WTF, and bmalloc)",
25
+ "license": "GNU Library General Public License version 2 and component-specific permissive licenses",
26
+ "repository": "https://github.com/oven-sh/WebKit.git",
27
+ "revision": "0f966e81b78c84bb23213e391bc679c4ef83e56b",
28
+ "tree": "e9590edf1ab6c32e20f83b70daec7314e0bfe261",
29
+ "pinEvidence": "scripts/build/deps/webkit.ts at the pinned Bun revision",
30
+ "fetch": {
31
+ "method": "git",
32
+ "command": "git fetch --depth 1 origin 0f966e81b78c84bb23213e391bc679c4ef83e56b"
33
+ }
34
+ },
35
+ "platformCompilerPackages": {
36
+ "win32-x64": {
37
+ "package": "@oven/bun-windows-x64",
38
+ "version": "1.4.0",
39
+ "integrity": "sha512-jRKv1NPLznMSZY5BEWciMF7zv0Tiyo2pQSxAJ3w+YWJ6y3VWNJQQQdLlV5Jx8lbOFDrJdrc9dD3GV17k3BP41A=="
40
+ },
41
+ "linux-x64": {
42
+ "package": "@oven/bun-linux-x64",
43
+ "version": "1.4.0",
44
+ "integrity": "sha512-Du44zebtPXJujvMLmtIxEQ6ykOhYt7L/Q+YIGVm+Yy+Pj/fpOnq60ggwIpKp/pGAFbYHNiTrA3JTjuZ9MTbZIg=="
45
+ },
46
+ "darwin-x64": {
47
+ "package": "@oven/bun-darwin-x64",
48
+ "version": "1.4.0",
49
+ "integrity": "sha512-cIrhwOr0SPEraewznhC+c/k6TG8bwFn5uZ4EJuXwjiKJLcAF36q7/bGjWkeXSe48JwMcPRUR054JXF7+cRwSSA=="
50
+ },
51
+ "darwin-arm64": {
52
+ "package": "@oven/bun-darwin-aarch64",
53
+ "version": "1.4.0",
54
+ "integrity": "sha512-GCpf8QuFLsyioVawP5HrMxA1ZRBlu6Hq9RNnSc3UTUWAzIxBso9trjoZczw1HdgpqSssFkszfIV2zmOzFTjhkw=="
55
+ }
56
+ },
57
+ "directBuildDependencies": [
58
+ {
59
+ "name": "boringssl",
60
+ "repository": "https://github.com/oven-sh/boringssl.git",
61
+ "revision": "2288897e2e716330490893d226b4f079f9da9e0c",
62
+ "tree": "382c6312d255ec3ed9623688f2579135d34e161d"
63
+ },
64
+ {
65
+ "name": "brotli",
66
+ "repository": "https://github.com/google/brotli.git",
67
+ "upstreamPin": "v1.1.0",
68
+ "revision": "ed738e842d2fbdf2d6459e39267a633c4a9b2f5d",
69
+ "tree": "66d65f2a9bf3dec372ceda26358ccc78ac3decab"
70
+ },
71
+ {
72
+ "name": "c-ares",
73
+ "repository": "https://github.com/c-ares/c-ares.git",
74
+ "revision": "c7a3138dcfe3bb0eaaf10c0c24c36dc66dc790ab",
75
+ "tree": "14315b31d0b2cf5cfde9f0b1544176221393295b"
76
+ },
77
+ {
78
+ "name": "HdrHistogram_c",
79
+ "repository": "https://github.com/HdrHistogram/HdrHistogram_c.git",
80
+ "revision": "be60a9987ee48d0abf0d7b6a175bad8d6c1585d1",
81
+ "tree": "bf5e7a332ae1160b35cc2728bc6800cce5b86f3f"
82
+ },
83
+ {
84
+ "name": "highway",
85
+ "repository": "https://github.com/google/highway.git",
86
+ "revision": "2607d3b5b0113992fe84d3848859eae13b3b52c1",
87
+ "tree": "e240dc0bc54afd953256adbe67eb2f267beb9d86"
88
+ },
89
+ {
90
+ "name": "libarchive",
91
+ "repository": "https://github.com/libarchive/libarchive.git",
92
+ "revision": "ded82291ab41d5e355831b96b0e1ff49e24d8939",
93
+ "tree": "750d581c1606b7a02f4a8cbdb2485219b7f44215"
94
+ },
95
+ {
96
+ "name": "libdeflate",
97
+ "repository": "https://github.com/ebiggers/libdeflate.git",
98
+ "revision": "c8c56a20f8f621e6a966b716b31f1dedab6a41e3",
99
+ "tree": "1afcaaba34b5d30e1d95c6bd4bf7172ac683769e"
100
+ },
101
+ {
102
+ "name": "libjpeg-turbo",
103
+ "repository": "https://github.com/libjpeg-turbo/libjpeg-turbo.git",
104
+ "revision": "e352b02f794f701407b39af08576035ba3360d60",
105
+ "tree": "220986f36b2aab31da15b05e1de9df0bbc7d886f"
106
+ },
107
+ {
108
+ "name": "libspng",
109
+ "repository": "https://github.com/randy408/libspng.git",
110
+ "revision": "fb768002d4288590083a476af628e51c3f1d47cd",
111
+ "tree": "6f98e1ffb7272520991831281282627c6b0ccefb"
112
+ },
113
+ {
114
+ "name": "libuv",
115
+ "repository": "https://github.com/oven-sh/libuv.git",
116
+ "revision": "8023581113b276e7c1aee3f82da57ca0893faab1",
117
+ "tree": "675bfb72c541515f2d05034e8974d9f7a40cd286"
118
+ },
119
+ {
120
+ "name": "libwebp",
121
+ "repository": "https://github.com/webmproject/libwebp.git",
122
+ "revision": "b7e29b9d75bd31422b00c2a446d49d7af06c328d",
123
+ "tree": "3a7830b9713d9187cf1211862d4571ff58b0d507"
124
+ },
125
+ {
126
+ "name": "lol-html",
127
+ "repository": "https://github.com/oven-sh/lol-html.git",
128
+ "revision": "725ce499aa9b71e38b7a2d0a9fbb6d7294a4079e",
129
+ "tree": "00a6cb3974901e9acbfbeac9799f55429f909000"
130
+ },
131
+ {
132
+ "name": "ls-hpack",
133
+ "repository": "https://github.com/litespeedtech/ls-hpack.git",
134
+ "revision": "8905c024b6d052f083a3d11d0a169b3c2735c8a1",
135
+ "tree": "1186c2a8807c901a609dbcdb6ec90c14ca531001"
136
+ },
137
+ {
138
+ "name": "ls-qpack",
139
+ "repository": "https://github.com/litespeedtech/ls-qpack.git",
140
+ "revision": "1e9c5b8e59f8161c54f168a570c8bfdc59ded0c3",
141
+ "tree": "aee985fcba89b5ab7c84915624664f6c3955d71d"
142
+ },
143
+ {
144
+ "name": "lsquic",
145
+ "repository": "https://github.com/litespeedtech/lsquic.git",
146
+ "revision": "3181911301b1aa4f54c1ed690901abc674ee08fb",
147
+ "tree": "b8d6097853ad39af0258c90cac54f9e7657c6417"
148
+ },
149
+ {
150
+ "name": "mimalloc",
151
+ "repository": "https://github.com/oven-sh/mimalloc.git",
152
+ "revision": "6a14aee24315e503fa295a1fa90fe8b24ad91774",
153
+ "tree": "7c723eb64f0240e061a7256d091c69e7ca5f280e"
154
+ },
155
+ {
156
+ "name": "picohttpparser",
157
+ "repository": "https://github.com/h2o/picohttpparser.git",
158
+ "revision": "066d2b1e9ab820703db0837a7255d92d30f0c9f5",
159
+ "tree": "fb2963624d8463d72e1cdc79e2f1145003af0a1f"
160
+ },
161
+ {
162
+ "name": "rust-argon2",
163
+ "repository": "https://github.com/sru-systems/rust-argon2.git",
164
+ "revision": "ed81866f163f0c7026aa6fd8388adf37242eb32a",
165
+ "tree": "6fb0d43d620ce5fe287c6f3d611b8d593896929b"
166
+ },
167
+ {
168
+ "name": "tinycc",
169
+ "repository": "https://github.com/oven-sh/tinycc.git",
170
+ "revision": "05f0fafaa3be31e31d7b4b5c17dc60f62c991171",
171
+ "tree": "a04dd2cfd0f9d9ad96c3bd4e20db3f0bedbcb8e1"
172
+ },
173
+ {
174
+ "name": "zlib-ng",
175
+ "repository": "https://github.com/zlib-ng/zlib-ng.git",
176
+ "revision": "12731092979c6d07f42da27da673a9f6c7b13586",
177
+ "tree": "baa7e2050b51c3db4c88bc8f2daf93ca0ae88a98"
178
+ },
179
+ {
180
+ "name": "zstd",
181
+ "repository": "https://github.com/facebook/zstd.git",
182
+ "revision": "f8745da6ff1ad1e7bab384bd1f9d742439278e99",
183
+ "tree": "1a3cb277e9b9b37b01811a3c65f6c25d46a8f241"
184
+ }
185
+ ],
186
+ "materials": [
187
+ {
188
+ "path": "licenses/BUN-LICENSE.md",
189
+ "sha256": "51402e15bdab948668eb5bcca05c096bc8c47beaf96f0db4b41777faf546ba4f",
190
+ "origin": "Bun LICENSE.md at the pinned revision"
191
+ },
192
+ {
193
+ "path": "licenses/JAVASCRIPTCORE-COPYING.LIB",
194
+ "sha256": "5094ecb9c9dcd0eadc34f3c11511d9b5535063032bc150164ecd1a5d5a445547",
195
+ "origin": "WebKit Source/JavaScriptCore/COPYING.LIB at the pinned revision"
196
+ },
197
+ {
198
+ "path": "licenses/BUN-CLAP-UNLICENSE.txt",
199
+ "sha256": "88d9b4eb60579c191ec391ca04c16130572d7eedc4a86daa58bf28c6e14c9bcd",
200
+ "origin": "Bun src/clap/LICENSE at the pinned revision"
201
+ },
202
+ {
203
+ "path": "licenses/bun-dependencies/manifest.json",
204
+ "sha256": "c9ef0eec0de59ad81a9a45fc25ba9d8c665d2f3ba1d30be02864224987795ee3",
205
+ "origin": "Hash inventory for direct native Bun dependency license and notice texts"
206
+ },
207
+ {
208
+ "path": "licenses/THIRD-PARTY-SOURCE-NOTICES.md",
209
+ "sha256": "a2d660d804337f286ea5e632e97490a8f94e69455cdcecc177265ab8bc8c319b",
210
+ "origin": "Index of Bun's exact third-party source notices"
211
+ },
212
+ {
213
+ "path": "licenses/WEBKIT-JSC-THIRD-PARTY-NOTICES.md",
214
+ "sha256": "e2169b77c9a55ea2a62a1fb737ac8c09966ca744537117adbd1c8a051dc12b90",
215
+ "origin": "Exact license paths and notices in the pinned WebKit source"
216
+ },
217
+ {
218
+ "path": "licenses/webkit/ICU-LICENSE.txt",
219
+ "sha256": "de596f6e3482bab99d2425af16add38f959ebc17a5883c6302970355853b6539",
220
+ "origin": "WebKit Source/WTF/icu/LICENSE at the pinned revision"
221
+ },
222
+ {
223
+ "path": "licenses/webkit/DTOA-COPYING.txt",
224
+ "sha256": "4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca",
225
+ "origin": "WebKit Source/WTF/wtf/dtoa/COPYING at the pinned revision"
226
+ },
227
+ {
228
+ "path": "licenses/webkit/DTOA-LICENSE.txt",
229
+ "sha256": "4af93c12062c58058378de2397dc1c92bbff9ddfb1d583a01c84127557ce97ca",
230
+ "origin": "WebKit Source/WTF/wtf/dtoa/LICENSE at the pinned revision"
231
+ },
232
+ {
233
+ "path": "licenses/webkit/FAST-FLOAT-LICENSE.txt",
234
+ "sha256": "097a889aa954d04e088b790b10a4014d6189561d0a6013935a73ce3d4ddaaf06",
235
+ "origin": "WebKit Source/WTF/wtf/fast_float/LICENSE at the pinned revision"
236
+ },
237
+ {
238
+ "path": "licenses/webkit/MIMALLOC-LICENSE.txt",
239
+ "sha256": "82ade5d7d9b029044b5fbbc326207fc47c2d44ee4dd71e8a559c36d728217de9",
240
+ "origin": "WebKit Source/bmalloc/mimalloc/mimalloc/LICENSE at the pinned revision"
241
+ }
242
+ ]
243
+ }
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { dirname, resolve } from "node:path";
4
+ import { findStandalonePayload } from "./standalone-payload.mjs";
5
+
6
+ const original = requiredArgument("--original");
7
+ const output = requiredArgument("--output");
8
+ const executable = await readFile(resolve(original));
9
+ const payload = findStandalonePayload(executable);
10
+ await mkdir(dirname(resolve(output)), { recursive: true });
11
+ await writeFile(resolve(output), payload.bytes);
12
+ console.log(
13
+ JSON.stringify(
14
+ { output: resolve(output), bytes: payload.bytes.length, sha256: payload.sha256 },
15
+ null,
16
+ 2,
17
+ ),
18
+ );
19
+
20
+ function requiredArgument(name) {
21
+ const index = process.argv.indexOf(name);
22
+ const value = index >= 0 ? process.argv[index + 1] : undefined;
23
+ if (!value) throw new Error(`${name} is required.`);
24
+ return value;
25
+ }
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env node
2
+ import { execFileSync } from "node:child_process";
3
+ import { mkdir, readFile } from "node:fs/promises";
4
+ import { dirname, join, resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+
7
+ const complianceRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
8
+ const manifest = JSON.parse(await readFile(join(complianceRoot, "source-manifest.json"), "utf8"));
9
+ const destination = resolve(requiredArgument("--destination"));
10
+ await mkdir(destination, { recursive: true });
11
+
12
+ fetchRepository("bun", manifest.runtime);
13
+ fetchRepository("WebKit", manifest.javascriptCore);
14
+
15
+ function fetchRepository(directory, source) {
16
+ const target = join(destination, directory);
17
+ try {
18
+ run("git", ["-C", target, "rev-parse", "--git-dir"], true);
19
+ } catch {
20
+ run("git", ["init", target]);
21
+ run("git", ["-C", target, "remote", "add", "origin", source.repository]);
22
+ }
23
+ run("git", ["-C", target, "config", "core.longpaths", "true"]);
24
+ run("git", ["-C", target, "fetch", "--depth", "1", "origin", source.revision]);
25
+ run("git", ["-C", target, "checkout", "--detach", source.revision]);
26
+ const revision = run("git", ["-C", target, "rev-parse", "HEAD"], true).trim();
27
+ const tree = run("git", ["-C", target, "rev-parse", "HEAD^{tree}"], true).trim();
28
+ if (revision !== source.revision || tree !== source.tree) {
29
+ throw new Error(
30
+ `${directory} identity mismatch: expected ${source.revision}/${source.tree}, got ${revision}/${tree}`,
31
+ );
32
+ }
33
+ console.log(`${directory}: ${revision} (tree ${tree})`);
34
+ }
35
+
36
+ function requiredArgument(name) {
37
+ const index = process.argv.indexOf(name);
38
+ const value = index >= 0 ? process.argv[index + 1] : undefined;
39
+ if (!value) throw new Error(`${name} is required.`);
40
+ return value;
41
+ }
42
+
43
+ function run(command, args, capture = false) {
44
+ return execFileSync(command, args, {
45
+ encoding: capture ? "utf8" : undefined,
46
+ stdio: capture ? ["ignore", "pipe", "pipe"] : "inherit",
47
+ });
48
+ }
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+ import { execFileSync } from "node:child_process";
3
+ import { chmod, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
4
+ import { tmpdir } from "node:os";
5
+ import { dirname, join, resolve } from "node:path";
6
+ import { findStandalonePayload } from "./standalone-payload.mjs";
7
+
8
+ const originalPath = resolve(requiredArgument("--original"));
9
+ const runtimePath = resolve(requiredArgument("--runtime"));
10
+ const outputPath = resolve(requiredArgument("--output"));
11
+ const codesignIdentity = optionalArgument("--codesign-identity") ?? "-";
12
+ const temporary = await mkdtemp(join(tmpdir(), "satzstrom-bun-relink-"));
13
+
14
+ try {
15
+ const original = await readFile(originalPath);
16
+ const originalPayload = findStandalonePayload(original);
17
+ const carrierPath = join(temporary, process.platform === "win32" ? "carrier.exe" : "carrier");
18
+ const entryPath = join(temporary, "carrier.js");
19
+
20
+ let fillerLength = 0;
21
+ let carrier;
22
+ let carrierPayload;
23
+ for (let attempt = 0; attempt < 8; attempt += 1) {
24
+ await writeFile(
25
+ entryPath,
26
+ `globalThis.__satzstromRelinkCarrier=${JSON.stringify("x".repeat(fillerLength))};\n`,
27
+ );
28
+ run(runtimePath, ["build", "--compile", "--minify", `--outfile=${carrierPath}`, entryPath]);
29
+ carrier = await readFile(carrierPath);
30
+ carrierPayload = findStandalonePayload(carrier);
31
+ const delta = originalPayload.bytes.length - carrierPayload.bytes.length;
32
+ if (delta === 0) break;
33
+ if (fillerLength + delta < 0) {
34
+ throw new Error(
35
+ `The rebuilt runtime produced a carrier payload larger than the Satzstrom payload by ${-delta} bytes.`,
36
+ );
37
+ }
38
+ fillerLength += delta;
39
+ }
40
+
41
+ if (!carrier || !carrierPayload || carrierPayload.bytes.length !== originalPayload.bytes.length) {
42
+ throw new Error("Unable to create a carrier with the exact standalone payload size.");
43
+ }
44
+
45
+ originalPayload.bytes.copy(carrier, carrierPayload.start);
46
+ await mkdir(dirname(outputPath), { recursive: true });
47
+ await writeFile(outputPath, carrier);
48
+ if (process.platform !== "win32") await chmod(outputPath, 0o755);
49
+
50
+ if (process.platform === "darwin") {
51
+ run("codesign", ["--force", "--sign", codesignIdentity, outputPath]);
52
+ }
53
+
54
+ const outputPayload = findStandalonePayload(await readFile(outputPath));
55
+ if (outputPayload.sha256 !== originalPayload.sha256) {
56
+ throw new Error("Payload verification failed after relinking.");
57
+ }
58
+
59
+ console.log(
60
+ JSON.stringify(
61
+ {
62
+ output: outputPath,
63
+ payloadBytes: outputPayload.bytes.length,
64
+ payloadSha256: outputPayload.sha256,
65
+ runtime: runtimePath,
66
+ },
67
+ null,
68
+ 2,
69
+ ),
70
+ );
71
+ } finally {
72
+ await rm(temporary, { recursive: true, force: true });
73
+ }
74
+
75
+ function requiredArgument(name) {
76
+ const value = optionalArgument(name);
77
+ if (!value) throw new Error(`${name} is required.`);
78
+ return value;
79
+ }
80
+
81
+ function optionalArgument(name) {
82
+ const index = process.argv.indexOf(name);
83
+ return index >= 0 ? process.argv[index + 1] : undefined;
84
+ }
85
+
86
+ function run(command, args) {
87
+ execFileSync(command, args, { stdio: ["ignore", process.stderr, "inherit"] });
88
+ }
@@ -0,0 +1,47 @@
1
+ import { createHash } from "node:crypto";
2
+
3
+ const trailer = Buffer.from("\n---- Bun! ----\n", "utf8");
4
+ // Bun 1.4.0 `Offsets` on the supported 64-bit targets:
5
+ // usize + StringPointer + u32 + StringPointer + Flags, rounded to 8-byte alignment.
6
+ const offsetsSize = 32;
7
+
8
+ export function findStandalonePayload(executable) {
9
+ const candidates = [];
10
+ let trailerOffset = executable.lastIndexOf(trailer);
11
+ while (trailerOffset >= offsetsSize) {
12
+ const offsetsOffset = trailerOffset - offsetsSize;
13
+ const byteCount = executable.readBigUInt64LE(offsetsOffset);
14
+ if (byteCount <= BigInt(Number.MAX_SAFE_INTEGER)) {
15
+ const start = offsetsOffset - Number(byteCount);
16
+ const end = trailerOffset + trailer.length;
17
+ if (start >= 0 && end <= executable.length) {
18
+ const modulesOffset = executable.readUInt32LE(offsetsOffset + 8);
19
+ const modulesLength = executable.readUInt32LE(offsetsOffset + 12);
20
+ const execArgvOffset = executable.readUInt32LE(offsetsOffset + 20);
21
+ const execArgvLength = executable.readUInt32LE(offsetsOffset + 24);
22
+ if (
23
+ modulesOffset + modulesLength <= Number(byteCount) &&
24
+ execArgvOffset + execArgvLength < Number(byteCount)
25
+ ) {
26
+ candidates.push({ start, end, byteCount: Number(byteCount) });
27
+ }
28
+ }
29
+ }
30
+ trailerOffset = executable.lastIndexOf(trailer, trailerOffset - 1);
31
+ }
32
+
33
+ if (candidates.length !== 1) {
34
+ throw new Error(
35
+ `Expected exactly one valid Bun standalone payload, found ${candidates.length}. ` +
36
+ "Use a Bun 1.4.0-compiled Satzstrom executable from a supported target.",
37
+ );
38
+ }
39
+
40
+ const region = candidates[0];
41
+ const bytes = executable.subarray(region.start, region.end);
42
+ return {
43
+ ...region,
44
+ bytes,
45
+ sha256: createHash("sha256").update(bytes).digest("hex"),
46
+ };
47
+ }
@@ -0,0 +1,9 @@
1
+ # Runtime third-party notices
2
+
3
+ This directory accompanies the native Satzstrom executable. `npm/` contains the
4
+ license and notice files for every JavaScript package embedded in the executable
5
+ or its layout asset. `assets/` covers both embedded TeX hyphenation patterns and
6
+ the embedded sRGB2014 ICC profile.
7
+
8
+ `manifest.json` is the deterministic, hashed allowlist audited during build and pack.
9
+ Bun and JavaScriptCore notices are provided separately under `compliance/bun/`.
@@ -0,0 +1,25 @@
1
+ # Hyphenation pattern notices
2
+
3
+ The pattern files are pinned from `hyphenation/tex-hyphen` commit
4
+ `5684c0f51c0b81133db2efbe60a408b4155a3ff5`.
5
+
6
+ ## German, reformed orthography
7
+
8
+ File: `hyph-de-1996.tex`, version 2024-02-28.
9
+
10
+ Copyright (c) 2013-2024 Stephan Hennig, Werner Lemberg, Günter Milde,
11
+ Sander van Geloven, Georg Pfeiffer, Gisbert W. Selke, Tobias Wendorf, and
12
+ Keno Wehr.
13
+
14
+ Licensed under the MIT License. The complete license and copyright notice are
15
+ preserved in the header of `hyph-de-1996.tex`.
16
+
17
+ ## American English
18
+
19
+ File: `hyph-en-us.tex`, version 2005-05-30.
20
+
21
+ Copyright (c) 1990, 2004, 2005 Gerard D.C. Kuiken.
22
+
23
+ Copying and distribution, with or without modification, are permitted without
24
+ royalty provided the copyright and permission notices are preserved. The full
25
+ notice is preserved in the header of `hyph-en-us.tex`.
@@ -0,0 +1,64 @@
1
+ % title: German Hyphenation Patterns (Reformed Orthography, 2006)
2
+ %
3
+ % notice: TeX-Trennmuster für die reformierte (2006) deutsche Rechtschreibung
4
+ %
5
+ % version: 2024-02-28
6
+ %
7
+ % authors:
8
+ % -
9
+ % name: Deutschsprachige Trennmustermannschaft
10
+ % contact: trennmuster@dante.de
11
+ %
12
+ % copyright: Copyright (c) 2013-2024
13
+ % Stephan Hennig, Werner Lemberg, Günter Milde,
14
+ % Sander van Geloven, Georg Pfeiffer, Gisbert W. Selke,
15
+ % Tobias Wendorf, Keno Wehr
16
+ %
17
+ % licence:
18
+ % name: MIT
19
+ % url: https://opensource.org/licenses/mit-license.php
20
+ % text: >
21
+ % Permission is hereby granted, free of charge, to any person
22
+ % obtaining a copy of this software and associated documentation
23
+ % files (the “Software”), to deal in the Software without
24
+ % restriction, including without limitation the rights to use,
25
+ % copy, modify, merge, publish, distribute, sublicense, and/or
26
+ % sell copies of the Software, and to permit persons to whom the
27
+ % Software is furnished to do so, subject to the following
28
+ % conditions:
29
+ %
30
+ % The above copyright notice and this permission notice shall be
31
+ % included in all copies or substantial portions of the Software.
32
+ %
33
+ % THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
34
+ % EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
35
+ % OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
36
+ % NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
37
+ % HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
38
+ % WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
39
+ % FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
40
+ % OTHER DEALINGS IN THE SOFTWARE.
41
+ %
42
+ % source: https://repo.or.cz/w/wortliste.git?a=commit;h=304aaa2188a75e57afe36bad0443d90a9c715b8e
43
+ %
44
+ % language:
45
+ % name: German, reformed spelling
46
+ % tag: de-1996
47
+ %
48
+ % hyphenmins:
49
+ % generation:
50
+ % left: 2
51
+ % right: 2
52
+ % typesetting:
53
+ % left: 2
54
+ % right: 2
55
+ %
56
+ % texlive:
57
+ % encoding: ec
58
+ % babelname: ngerman
59
+ % use_old_patterns_comment: Kept for the sake of backward compatibility, but newer and better patterns by WL are available.
60
+ % legacy_patterns: dehyphn.tex
61
+ % message: German hyphenation patterns (reformed orthography)
62
+ % package: german
63
+ %
64
+ % ===========================================================================
@@ -0,0 +1,32 @@
1
+ % title: Hyphenation patterns for American English
2
+ % copyright: Copyright (C) 1990, 2004, 2005 Gerard D.C. Kuiken
3
+ % notice: This file is part of the hyph-utf8 package.
4
+ % See http://www.hyphenation.org/tex for more information.
5
+ % language:
6
+ % name: English, American spelling
7
+ % tag: en-us
8
+ % version: 2005-05-30
9
+ % authors:
10
+ % -
11
+ % name: Gerard D.C. Kuiken
12
+ % licence:
13
+ % text: >
14
+ % Copying and distribution of this file, with or without modification,
15
+ % are permitted in any medium without royalty provided the copyright
16
+ % notice and this notice are preserved.
17
+ % hyphenmins:
18
+ % typesetting:
19
+ % left: 2
20
+ % right: 3
21
+ % changes:
22
+ % March 1, 1990 Initial release
23
+ % May 30, 2005 Added copyright notice, no patterns change.
24
+ % texlive:
25
+ % encoding: ascii
26
+ % babelname: usenglishmax
27
+ % legacy_patterns: ushyphmax.tex
28
+ % message: Hyphenation patterns for American English
29
+ % package: english
30
+ % known_bugs:
31
+ % de-mo-c-rat: 'instead of dem-o-crat (see GitHub issue #15)'
32
+ % ==========================================
@@ -0,0 +1,8 @@
1
+ sRGB2014.icc
2
+
3
+ Copyright International Color Consortium, 2015.
4
+
5
+ This profile is made available by the International Color Consortium, and may be copied, distributed, embedded, made, used, and sold without restriction. Altered versions of this profile shall have the original identification and copyright information removed and shall not be misrepresented as the original profile.
6
+
7
+ License source: https://www.color.org/faqs/
8
+ Profile source: https://registry.color.org/rgb-registry/srgbprofiles