@swiftbrowser/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +330 -64
  2. package/dist/assetSymbols.d.ts +25 -0
  3. package/dist/assetSymbols.js +218 -0
  4. package/dist/assetSymbols.js.map +1 -0
  5. package/dist/build.d.ts +17 -2
  6. package/dist/build.js +40 -13
  7. package/dist/build.js.map +1 -1
  8. package/dist/buildSettings.d.ts +15 -0
  9. package/dist/buildSettings.js +74 -0
  10. package/dist/buildSettings.js.map +1 -0
  11. package/dist/cli.d.ts +6 -0
  12. package/dist/cli.js +60 -11
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/build.js +6 -5
  15. package/dist/commands/build.js.map +1 -1
  16. package/dist/commands/check.js +2 -2
  17. package/dist/commands/check.js.map +1 -1
  18. package/dist/commands/dev.d.ts +5 -2
  19. package/dist/commands/dev.js +19 -13
  20. package/dist/commands/dev.js.map +1 -1
  21. package/dist/commands/init.d.ts +18 -0
  22. package/dist/commands/init.js +57 -0
  23. package/dist/commands/init.js.map +1 -0
  24. package/dist/commands/kit.d.ts +3 -0
  25. package/dist/commands/kit.js +21 -0
  26. package/dist/commands/kit.js.map +1 -0
  27. package/dist/commands/shared.d.ts +25 -4
  28. package/dist/commands/shared.js +104 -10
  29. package/dist/commands/shared.js.map +1 -1
  30. package/dist/compat.d.ts +44 -6
  31. package/dist/compat.js +64 -36
  32. package/dist/compat.js.map +1 -1
  33. package/dist/config.d.ts +48 -10
  34. package/dist/config.js +64 -8
  35. package/dist/config.js.map +1 -1
  36. package/dist/coreml.d.ts +194 -0
  37. package/dist/coreml.js +626 -0
  38. package/dist/coreml.js.map +1 -0
  39. package/dist/icu.d.ts +17 -4
  40. package/dist/icu.js +32 -18
  41. package/dist/icu.js.map +1 -1
  42. package/dist/kit.d.ts +133 -0
  43. package/dist/kit.js +403 -0
  44. package/dist/kit.js.map +1 -0
  45. package/dist/objc.d.ts +31 -0
  46. package/dist/objc.js +319 -0
  47. package/dist/objc.js.map +1 -0
  48. package/dist/packagePatches.d.ts +24 -0
  49. package/dist/packagePatches.js +107 -0
  50. package/dist/packagePatches.js.map +1 -0
  51. package/dist/packages.d.ts +59 -0
  52. package/dist/packages.js +149 -0
  53. package/dist/packages.js.map +1 -0
  54. package/dist/project.d.ts +45 -4
  55. package/dist/project.js +91 -18
  56. package/dist/project.js.map +1 -1
  57. package/dist/protobuf.d.ts +62 -0
  58. package/dist/protobuf.js +233 -0
  59. package/dist/protobuf.js.map +1 -0
  60. package/dist/stage.d.ts +155 -27
  61. package/dist/stage.js +483 -79
  62. package/dist/stage.js.map +1 -1
  63. package/dist/strings.d.ts +44 -0
  64. package/dist/strings.js +386 -0
  65. package/dist/strings.js.map +1 -0
  66. package/dist/template.d.ts +29 -0
  67. package/dist/template.js +438 -0
  68. package/dist/template.js.map +1 -0
  69. package/dist/threadStacks.d.ts +14 -0
  70. package/dist/threadStacks.js +78 -0
  71. package/dist/threadStacks.js.map +1 -0
  72. package/dist/toolchain.d.ts +7 -1
  73. package/dist/toolchain.js +8 -2
  74. package/dist/toolchain.js.map +1 -1
  75. package/dist/urlSchemes.d.ts +11 -0
  76. package/dist/urlSchemes.js +58 -0
  77. package/dist/urlSchemes.js.map +1 -0
  78. package/dist/vendor.d.ts +109 -0
  79. package/dist/vendor.js +440 -0
  80. package/dist/vendor.js.map +1 -0
  81. package/dist/wasm.d.ts +28 -0
  82. package/dist/wasm.js +84 -0
  83. package/dist/wasm.js.map +1 -0
  84. package/package.json +7 -6
package/dist/wasm.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export interface WasmSection {
2
+ id: number;
3
+ /** For a custom section (id 0), its name; otherwise null. */
4
+ name: string | null;
5
+ /** The whole section, header included. */
6
+ bytes: Buffer;
7
+ /** For a custom section, the payload after the name. */
8
+ payload: Buffer;
9
+ }
10
+ /** Splits a module into its sections (the 8-byte header is not among them). */
11
+ export declare function wasmSections(module: Buffer): WasmSection[];
12
+ /** The payload of the custom section called `name`, or null. */
13
+ export declare function customSection(module: Buffer, name: string): Buffer | null;
14
+ /** A complete custom section: id 0, size, name, payload. */
15
+ export declare function encodeCustomSection(name: string, payload: Buffer): Buffer;
16
+ /**
17
+ * The module without the custom sections named in `drop`, with `add` appended
18
+ * (an existing custom section of the same name is replaced).
19
+ */
20
+ export declare function rewriteCustomSections(module: Buffer, edits: {
21
+ drop?: readonly string[];
22
+ add?: readonly {
23
+ name: string;
24
+ payload: Buffer;
25
+ }[];
26
+ }): Buffer;
27
+ /** The autolink record the Swift driver leaves in every linked module. */
28
+ export declare const AUTOLINK_SECTION = ".swift1_autolink_entries";
package/dist/wasm.js ADDED
@@ -0,0 +1,84 @@
1
+ // Reading and rewriting a wasm module's custom sections, after wasm-opt.
2
+ //
3
+ // One edit before the module ships (see build.ts): `.swift1_autolink_entries`
4
+ // goes. It is the Swift driver's autolink record, 108 kB of library names the
5
+ // linker already consumed, and wasm-opt's `--strip-debug` keeps it (it is not
6
+ // debug info). Only the custom sections are touched; the module is otherwise
7
+ // copied.
8
+ const MAGIC = 0x6d736100;
9
+ const VERSION = 1;
10
+ function readLeb(buf, pos) {
11
+ let result = 0;
12
+ let shift = 0;
13
+ let byte;
14
+ do {
15
+ byte = buf[pos.at++];
16
+ result += (byte & 0x7f) * 2 ** shift;
17
+ shift += 7;
18
+ } while (byte & 0x80);
19
+ return result;
20
+ }
21
+ function leb(value) {
22
+ const bytes = [];
23
+ do {
24
+ let byte = value & 0x7f;
25
+ value = Math.floor(value / 128);
26
+ if (value !== 0)
27
+ byte |= 0x80;
28
+ bytes.push(byte);
29
+ } while (value !== 0);
30
+ return Buffer.from(bytes);
31
+ }
32
+ /** Splits a module into its sections (the 8-byte header is not among them). */
33
+ export function wasmSections(module) {
34
+ if (module.length < 8 || module.readUInt32LE(0) !== MAGIC || module.readUInt32LE(4) !== VERSION) {
35
+ throw new Error('not a wasm module');
36
+ }
37
+ const sections = [];
38
+ const pos = { at: 8 };
39
+ while (pos.at < module.length) {
40
+ const start = pos.at;
41
+ const id = module[pos.at++];
42
+ const size = readLeb(module, pos);
43
+ const contentStart = pos.at;
44
+ const end = contentStart + size;
45
+ if (end > module.length)
46
+ throw new Error(`section ${id} at ${start} runs past the end of the module`);
47
+ let name = null;
48
+ let payload = module.subarray(contentStart, end);
49
+ if (id === 0) {
50
+ const nameLength = readLeb(module, pos);
51
+ name = module.subarray(pos.at, pos.at + nameLength).toString('utf8');
52
+ payload = module.subarray(pos.at + nameLength, end);
53
+ }
54
+ sections.push({ id, name, bytes: module.subarray(start, end), payload });
55
+ pos.at = end;
56
+ }
57
+ return sections;
58
+ }
59
+ /** The payload of the custom section called `name`, or null. */
60
+ export function customSection(module, name) {
61
+ return wasmSections(module).find((s) => s.id === 0 && s.name === name)?.payload ?? null;
62
+ }
63
+ /** A complete custom section: id 0, size, name, payload. */
64
+ export function encodeCustomSection(name, payload) {
65
+ const nameBytes = Buffer.from(name, 'utf8');
66
+ const content = Buffer.concat([leb(nameBytes.length), nameBytes, payload]);
67
+ return Buffer.concat([Buffer.from([0]), leb(content.length), content]);
68
+ }
69
+ /**
70
+ * The module without the custom sections named in `drop`, with `add` appended
71
+ * (an existing custom section of the same name is replaced).
72
+ */
73
+ export function rewriteCustomSections(module, edits) {
74
+ const drop = new Set([...(edits.drop ?? []), ...(edits.add ?? []).map((a) => a.name)]);
75
+ const kept = wasmSections(module).filter((s) => !(s.id === 0 && s.name !== null && drop.has(s.name)));
76
+ return Buffer.concat([
77
+ module.subarray(0, 8),
78
+ ...kept.map((s) => s.bytes),
79
+ ...(edits.add ?? []).map((a) => encodeCustomSection(a.name, a.payload)),
80
+ ]);
81
+ }
82
+ /** The autolink record the Swift driver leaves in every linked module. */
83
+ export const AUTOLINK_SECTION = '.swift1_autolink_entries';
84
+ //# sourceMappingURL=wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wasm.js","sourceRoot":"","sources":["../src/wasm.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@swiftbrowser/cli",
3
- "version": "0.1.0",
4
- "description": "Run an iOS SwiftUI app in the browser: doctor, check, dev and build for an Xcode project or a folder of Swift sources.",
3
+ "version": "0.2.0",
4
+ "description": "Run an iOS SwiftUI app in the browser: init, doctor, check, dev and build for an Xcode project or a folder of Swift sources.",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "git+https://github.com/dabbott/SwiftBrowser.git",
7
+ "url": "git+https://github.com/noya-app/SwiftBrowser.git",
8
8
  "directory": "packages/cli"
9
9
  },
10
10
  "type": "module",
@@ -22,9 +22,10 @@
22
22
  "build": "tsc -p tsconfig.build.json"
23
23
  },
24
24
  "dependencies": {
25
- "@swiftbrowser/web": "0.1.0",
26
- "@swiftbrowser/xcodeproj": "0.1.0",
27
- "@swiftbrowser/swift": "0.1.0"
25
+ "@swiftbrowser/kit": "0.2.0",
26
+ "@swiftbrowser/swift": "0.2.0",
27
+ "@swiftbrowser/web": "0.2.0",
28
+ "@swiftbrowser/xcodeproj": "0.2.0"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@types/node": "^26.6.4",