@swiftbrowser/native 0.0.0-stage → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +143 -2
  2. package/bin/swiftbrowser-native.mjs +49 -0
  3. package/dist/bridge.d.ts +50 -0
  4. package/dist/bridge.d.ts.map +1 -0
  5. package/dist/bridge.js +10 -0
  6. package/dist/bridge.js.map +1 -0
  7. package/dist/build.d.ts +47 -0
  8. package/dist/build.d.ts.map +1 -0
  9. package/dist/build.js +156 -0
  10. package/dist/build.js.map +1 -0
  11. package/dist/devBuild.d.ts +34 -0
  12. package/dist/devBuild.d.ts.map +1 -0
  13. package/dist/devBuild.js +133 -0
  14. package/dist/devBuild.js.map +1 -0
  15. package/dist/encoding.d.ts +32 -0
  16. package/dist/encoding.d.ts.map +1 -0
  17. package/dist/encoding.js +136 -0
  18. package/dist/encoding.js.map +1 -0
  19. package/dist/fetch.d.ts +117 -0
  20. package/dist/fetch.d.ts.map +1 -0
  21. package/dist/fetch.js +272 -0
  22. package/dist/fetch.js.map +1 -0
  23. package/dist/index.d.ts +20 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +20 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/native.d.ts +19 -0
  28. package/dist/native.d.ts.map +1 -0
  29. package/dist/native.js +17 -0
  30. package/dist/native.js.map +1 -0
  31. package/dist/refresh.d.ts +18 -0
  32. package/dist/refresh.d.ts.map +1 -0
  33. package/dist/refresh.js +18 -0
  34. package/dist/refresh.js.map +1 -0
  35. package/dist/run.d.ts +27 -0
  36. package/dist/run.d.ts.map +1 -0
  37. package/dist/run.js +76 -0
  38. package/dist/run.js.map +1 -0
  39. package/dist/runtime.d.ts +30 -0
  40. package/dist/runtime.d.ts.map +1 -0
  41. package/dist/runtime.js +193 -0
  42. package/dist/runtime.js.map +1 -0
  43. package/dist/stubs/react-dom-client.d.ts +8 -0
  44. package/dist/stubs/react-dom-client.d.ts.map +1 -0
  45. package/dist/stubs/react-dom-client.js +11 -0
  46. package/dist/stubs/react-dom-client.js.map +1 -0
  47. package/dist/stubs/react-dom.d.ts +9 -0
  48. package/dist/stubs/react-dom.d.ts.map +1 -0
  49. package/dist/stubs/react-dom.js +13 -0
  50. package/dist/stubs/react-dom.js.map +1 -0
  51. package/dist/url.d.ts +48 -0
  52. package/dist/url.d.ts.map +1 -0
  53. package/dist/url.js +213 -0
  54. package/dist/url.js.map +1 -0
  55. package/dist/vendor.d.ts +11 -0
  56. package/dist/vendor.d.ts.map +1 -0
  57. package/dist/vendor.js +27 -0
  58. package/dist/vendor.js.map +1 -0
  59. package/dist/wasmHost.d.ts +35 -0
  60. package/dist/wasmHost.d.ts.map +1 -0
  61. package/dist/wasmHost.js +120 -0
  62. package/dist/wasmHost.js.map +1 -0
  63. package/package.json +73 -4
  64. package/src/bridge.ts +58 -0
  65. package/src/build.ts +185 -0
  66. package/src/devBuild.ts +152 -0
  67. package/src/encoding.ts +130 -0
  68. package/src/fetch.ts +305 -0
  69. package/src/index.ts +20 -0
  70. package/src/native.ts +35 -0
  71. package/src/refresh.ts +29 -0
  72. package/src/run.ts +98 -0
  73. package/src/runtime.ts +208 -0
  74. package/src/stubs/react-dom-client.ts +17 -0
  75. package/src/stubs/react-dom.ts +15 -0
  76. package/src/types/react-refresh.d.ts +38 -0
  77. package/src/url.ts +202 -0
  78. package/src/vendor.ts +30 -0
  79. package/src/wasmHost.ts +147 -0
  80. package/swift/Package.swift +31 -0
  81. package/swift/Sources/SwiftBrowserNative/Host/HostBridge.swift +228 -0
  82. package/swift/Sources/SwiftBrowserNative/Host/JSHost.swift +42 -0
  83. package/swift/Sources/SwiftBrowserNative/Host/JavaScriptCoreHost.swift +102 -0
  84. package/swift/Sources/SwiftBrowserNative/Host/ShimAliases.swift +25 -0
  85. package/swift/Sources/SwiftBrowserNative/Host/WebHost.swift +138 -0
  86. package/swift/Sources/SwiftBrowserNative/Runtime/NativeApp.swift +251 -0
  87. package/swift/Sources/SwiftBrowserNative/Runtime/NativeRegistry.swift +53 -0
  88. package/swift/Sources/SwiftBrowserNative/SwiftBrowserNative.swift +6 -0
  89. package/swift/Sources/SwiftBrowserNative/Views/Conversions.swift +361 -0
  90. package/swift/Sources/SwiftBrowserNative/Views/ElementView.swift +169 -0
  91. package/swift/Sources/SwiftBrowserNative/Views/Kinds/Controls.swift +268 -0
  92. package/swift/Sources/SwiftBrowserNative/Views/Kinds/Lists.swift +175 -0
  93. package/swift/Sources/SwiftBrowserNative/Views/Kinds/More.swift +196 -0
  94. package/swift/Sources/SwiftBrowserNative/Views/Kinds/Navigation.swift +246 -0
  95. package/swift/Sources/SwiftBrowserNative/Views/Kinds/Shapes.swift +108 -0
  96. package/swift/Sources/SwiftBrowserNative/Views/Kinds/Stacks.swift +189 -0
  97. package/swift/Sources/SwiftBrowserNative/Views/Kinds/TextAndImages.swift +102 -0
  98. package/swift/Sources/SwiftBrowserNative/Views/NativeRootView.swift +190 -0
  99. package/swift/Sources/SwiftBrowserNative/Views/StyleModifier.swift +182 -0
  100. package/swift/Sources/SwiftBrowserProtocol/JSONValue.swift +268 -0
  101. package/swift/Sources/SwiftBrowserProtocol/Op.swift +100 -0
  102. package/swift/Sources/SwiftBrowserProtocol/Props.swift +469 -0
  103. package/swift/Sources/SwiftBrowserProtocol/RendererEvent.swift +117 -0
  104. package/swift/Sources/SwiftBrowserProtocol/Style.swift +148 -0
  105. package/swift/Sources/SwiftBrowserProtocol/Values.swift +279 -0
  106. package/swift/Sources/SwiftBrowserTree/ElementNode.swift +65 -0
  107. package/swift/Sources/SwiftBrowserTree/OpTree.swift +168 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devBuild.js","sourceRoot":"","sources":["../src/devBuild.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * UTF-8 and base64, for the globals bare JavaScriptCore lacks (`TextEncoder`,
3
+ * `TextDecoder`, `atob`, `btoa`) and for the bytes that cross the bridge as
4
+ * base64 (fetch bodies). No dependencies, so the runtime can carry them.
5
+ */
6
+ export declare function utf8Encode(text: string): Uint8Array;
7
+ export declare function utf8Decode(bytes: Uint8Array): string;
8
+ /** Standard base64 (RFC 4648, padded). */
9
+ export declare function base64Encode(bytes: Uint8Array): string;
10
+ export declare function base64Decode(text: string): Uint8Array;
11
+ /** `TextEncoder` (UTF-8 only), as the runtime installs it. */
12
+ export declare class SimpleTextEncoder {
13
+ readonly encoding = "utf-8";
14
+ encode(input?: string): Uint8Array;
15
+ encodeInto(input: string, destination: Uint8Array): {
16
+ read: number;
17
+ written: number;
18
+ };
19
+ }
20
+ /** `TextDecoder` (UTF-8 only), as the runtime installs it. */
21
+ export declare class SimpleTextDecoder {
22
+ readonly encoding: string;
23
+ readonly fatal = false;
24
+ readonly ignoreBOM = false;
25
+ constructor(label?: string);
26
+ decode(input?: ArrayBuffer | ArrayBufferView | null): string;
27
+ }
28
+ /** `btoa`: a binary string (char codes 0...255) to base64. */
29
+ export declare function btoaPolyfill(binary: string): string;
30
+ /** `atob`: base64 to a binary string. */
31
+ export declare function atobPolyfill(text: string): string;
32
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAiBnD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAsBpD;AAMD,0CAA0C;AAC1C,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAYtD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAarD;AAED,8DAA8D;AAC9D,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,QAAQ,WAAW;IAC5B,MAAM,CAAC,KAAK,SAAK,GAAG,UAAU;IAG9B,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAMtF;AAED,8DAA8D;AAC9D,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,SAAS;IACvB,QAAQ,CAAC,SAAS,SAAS;gBACf,KAAK,SAAU;IAG3B,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,eAAe,GAAG,IAAI,GAAG,MAAM;CAK7D;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * UTF-8 and base64, for the globals bare JavaScriptCore lacks (`TextEncoder`,
3
+ * `TextDecoder`, `atob`, `btoa`) and for the bytes that cross the bridge as
4
+ * base64 (fetch bodies). No dependencies, so the runtime can carry them.
5
+ */
6
+ export function utf8Encode(text) {
7
+ const out = [];
8
+ for (let i = 0; i < text.length; i++) {
9
+ let code = text.charCodeAt(i);
10
+ if (code >= 0xd800 && code <= 0xdbff && i + 1 < text.length) {
11
+ const low = text.charCodeAt(i + 1);
12
+ if (low >= 0xdc00 && low <= 0xdfff) {
13
+ code = 0x10000 + ((code - 0xd800) << 10) + (low - 0xdc00);
14
+ i++;
15
+ }
16
+ }
17
+ if (code < 0x80)
18
+ out.push(code);
19
+ else if (code < 0x800)
20
+ out.push(0xc0 | (code >> 6), 0x80 | (code & 63));
21
+ else if (code < 0x10000)
22
+ out.push(0xe0 | (code >> 12), 0x80 | ((code >> 6) & 63), 0x80 | (code & 63));
23
+ else
24
+ out.push(0xf0 | (code >> 18), 0x80 | ((code >> 12) & 63), 0x80 | ((code >> 6) & 63), 0x80 | (code & 63));
25
+ }
26
+ return Uint8Array.from(out);
27
+ }
28
+ export function utf8Decode(bytes) {
29
+ let out = '';
30
+ for (let i = 0; i < bytes.length;) {
31
+ const a = bytes[i];
32
+ let code;
33
+ if (a < 0x80) {
34
+ code = a;
35
+ i += 1;
36
+ }
37
+ else if ((a & 0xe0) === 0xc0) {
38
+ code = ((a & 31) << 6) | (bytes[i + 1] & 63);
39
+ i += 2;
40
+ }
41
+ else if ((a & 0xf0) === 0xe0) {
42
+ code = ((a & 15) << 12) | ((bytes[i + 1] & 63) << 6) | (bytes[i + 2] & 63);
43
+ i += 3;
44
+ }
45
+ else {
46
+ code = ((a & 7) << 18) | ((bytes[i + 1] & 63) << 12) | ((bytes[i + 2] & 63) << 6) | (bytes[i + 3] & 63);
47
+ i += 4;
48
+ }
49
+ if (Number.isNaN(code))
50
+ break;
51
+ out += String.fromCodePoint(code);
52
+ }
53
+ return out;
54
+ }
55
+ const B64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
56
+ const B64_INDEX = {};
57
+ for (let i = 0; i < B64.length; i++)
58
+ B64_INDEX[B64[i]] = i;
59
+ /** Standard base64 (RFC 4648, padded). */
60
+ export function base64Encode(bytes) {
61
+ let out = '';
62
+ for (let i = 0; i < bytes.length; i += 3) {
63
+ const a = bytes[i];
64
+ const b = i + 1 < bytes.length ? bytes[i + 1] : 0;
65
+ const c = i + 2 < bytes.length ? bytes[i + 2] : 0;
66
+ const n = (a << 16) | (b << 8) | c;
67
+ out += B64[(n >> 18) & 63] + B64[(n >> 12) & 63];
68
+ out += i + 1 < bytes.length ? B64[(n >> 6) & 63] : '=';
69
+ out += i + 2 < bytes.length ? B64[n & 63] : '=';
70
+ }
71
+ return out;
72
+ }
73
+ export function base64Decode(text) {
74
+ const clean = text.replace(/[^A-Za-z0-9+/]/g, '');
75
+ const out = [];
76
+ for (let i = 0; i < clean.length; i += 4) {
77
+ const a = B64_INDEX[clean[i]] ?? 0;
78
+ const b = B64_INDEX[clean[i + 1]] ?? 0;
79
+ const c = i + 2 < clean.length ? B64_INDEX[clean[i + 2]] : -1;
80
+ const d = i + 3 < clean.length ? B64_INDEX[clean[i + 3]] : -1;
81
+ out.push((a << 2) | (b >> 4));
82
+ if (c >= 0)
83
+ out.push(((b & 15) << 4) | (c >> 2));
84
+ if (d >= 0)
85
+ out.push(((c & 3) << 6) | d);
86
+ }
87
+ return Uint8Array.from(out);
88
+ }
89
+ /** `TextEncoder` (UTF-8 only), as the runtime installs it. */
90
+ export class SimpleTextEncoder {
91
+ encoding = 'utf-8';
92
+ encode(input = '') {
93
+ return utf8Encode(String(input));
94
+ }
95
+ encodeInto(input, destination) {
96
+ const bytes = utf8Encode(input);
97
+ const written = Math.min(bytes.length, destination.length);
98
+ destination.set(bytes.subarray(0, written));
99
+ return { read: input.length, written };
100
+ }
101
+ }
102
+ /** `TextDecoder` (UTF-8 only), as the runtime installs it. */
103
+ export class SimpleTextDecoder {
104
+ encoding;
105
+ fatal = false;
106
+ ignoreBOM = false;
107
+ constructor(label = 'utf-8') {
108
+ this.encoding = label.toLowerCase();
109
+ }
110
+ decode(input) {
111
+ if (!input)
112
+ return '';
113
+ const bytes = input instanceof ArrayBuffer ? new Uint8Array(input) : new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
114
+ return utf8Decode(bytes);
115
+ }
116
+ }
117
+ /** `btoa`: a binary string (char codes 0...255) to base64. */
118
+ export function btoaPolyfill(binary) {
119
+ const bytes = new Uint8Array(binary.length);
120
+ for (let i = 0; i < binary.length; i++) {
121
+ const code = binary.charCodeAt(i);
122
+ if (code > 255)
123
+ throw new Error('btoa: the string contains a character outside the Latin1 range');
124
+ bytes[i] = code;
125
+ }
126
+ return base64Encode(bytes);
127
+ }
128
+ /** `atob`: base64 to a binary string. */
129
+ export function atobPolyfill(text) {
130
+ const bytes = base64Decode(text);
131
+ let out = '';
132
+ for (const byte of bytes)
133
+ out += String.fromCharCode(byte);
134
+ return out;
135
+ }
136
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * `fetch`, `Headers`, `Request`, `Response` and `AbortController` over the
3
+ * bridge's `fetch` primitive (`URLSession` on the Swift side). Bodies cross
4
+ * as base64; a `Response` reads them back as text, JSON or bytes. Streams
5
+ * and `Blob` are not here: a body is whole.
6
+ */
7
+ import type { NativeBridge, NativeFetchResult } from './bridge';
8
+ type HeadersInitLike = SimpleHeaders | Record<string, string> | [string, string][];
9
+ export declare class SimpleHeaders {
10
+ private map;
11
+ constructor(init?: HeadersInitLike);
12
+ append(name: string, value: string): void;
13
+ delete(name: string): void;
14
+ get(name: string): string | null;
15
+ has(name: string): boolean;
16
+ set(name: string, value: string): void;
17
+ forEach(callback: (value: string, key: string, parent: SimpleHeaders) => void): void;
18
+ keys(): IterableIterator<string>;
19
+ values(): IterableIterator<string>;
20
+ entries(): IterableIterator<[string, string]>;
21
+ [Symbol.iterator](): IterableIterator<[string, string]>;
22
+ /** The headers as a plain object, for the bridge. */
23
+ toObject(): Record<string, string>;
24
+ }
25
+ export declare class SimpleAbortSignal {
26
+ aborted: boolean;
27
+ reason: unknown;
28
+ onabort: ((event: {
29
+ type: 'abort';
30
+ }) => void) | null;
31
+ private listeners;
32
+ addEventListener(type: string, listener: (event: {
33
+ type: 'abort';
34
+ }) => void): void;
35
+ removeEventListener(type: string, listener: (event: {
36
+ type: 'abort';
37
+ }) => void): void;
38
+ throwIfAborted(): void;
39
+ /** @internal */
40
+ _abort(reason: unknown): void;
41
+ static abort(reason?: unknown): SimpleAbortSignal;
42
+ static timeout(ms: number): SimpleAbortSignal;
43
+ }
44
+ export declare class SimpleAbortController {
45
+ readonly signal: SimpleAbortSignal;
46
+ abort(reason?: unknown): void;
47
+ }
48
+ type BodyInitLike = string | ArrayBuffer | ArrayBufferView | SimpleURLSearchParamsLike | null | undefined;
49
+ interface SimpleURLSearchParamsLike {
50
+ toString(): string;
51
+ [Symbol.iterator](): IterableIterator<[string, string]>;
52
+ }
53
+ declare class Body {
54
+ protected bytes: Uint8Array | null;
55
+ bodyUsed: boolean;
56
+ constructor(bytes: Uint8Array | null);
57
+ get body(): null;
58
+ private take;
59
+ arrayBuffer(): Promise<ArrayBuffer>;
60
+ bytesArray(): Promise<Uint8Array>;
61
+ text(): Promise<string>;
62
+ json(): Promise<unknown>;
63
+ }
64
+ export interface RequestInitLike {
65
+ method?: string;
66
+ headers?: HeadersInitLike;
67
+ body?: BodyInitLike;
68
+ signal?: SimpleAbortSignal | null;
69
+ [key: string]: unknown;
70
+ }
71
+ export declare class SimpleRequest extends Body {
72
+ readonly url: string;
73
+ readonly method: string;
74
+ readonly headers: SimpleHeaders;
75
+ readonly signal: SimpleAbortSignal;
76
+ constructor(input: string | SimpleRequest | {
77
+ href: string;
78
+ }, init?: RequestInitLike);
79
+ /** @internal */
80
+ rawBytes(): Uint8Array | null;
81
+ clone(): SimpleRequest;
82
+ }
83
+ export interface ResponseInitLike {
84
+ status?: number;
85
+ statusText?: string;
86
+ headers?: HeadersInitLike;
87
+ url?: string;
88
+ }
89
+ export declare class SimpleResponse extends Body {
90
+ readonly status: number;
91
+ readonly statusText: string;
92
+ readonly headers: SimpleHeaders;
93
+ readonly url: string;
94
+ readonly type = "basic";
95
+ readonly redirected = false;
96
+ constructor(body?: BodyInitLike, init?: ResponseInitLike);
97
+ get ok(): boolean;
98
+ clone(): SimpleResponse;
99
+ static json(data: unknown, init?: ResponseInitLike): SimpleResponse;
100
+ static error(): SimpleResponse;
101
+ }
102
+ export interface FetchGlobals {
103
+ fetch: (input: string | SimpleRequest | {
104
+ href: string;
105
+ }, init?: RequestInitLike) => Promise<SimpleResponse>;
106
+ Headers: typeof SimpleHeaders;
107
+ Request: typeof SimpleRequest;
108
+ Response: typeof SimpleResponse;
109
+ AbortController: typeof SimpleAbortController;
110
+ AbortSignal: typeof SimpleAbortSignal;
111
+ /** The bridge's answer; Swift calls it as `__sbFetchResult(id, result)`. */
112
+ __sbFetchResult: (id: number, result: NativeFetchResult | string) => void;
113
+ }
114
+ /** The fetch globals over the bridge. */
115
+ export declare function createFetch(native: Pick<NativeBridge, 'fetch'>): FetchGlobals;
116
+ export {};
117
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
package/dist/fetch.js ADDED
@@ -0,0 +1,272 @@
1
+ /**
2
+ * `fetch`, `Headers`, `Request`, `Response` and `AbortController` over the
3
+ * bridge's `fetch` primitive (`URLSession` on the Swift side). Bodies cross
4
+ * as base64; a `Response` reads them back as text, JSON or bytes. Streams
5
+ * and `Blob` are not here: a body is whole.
6
+ */
7
+ import { base64Decode, base64Encode, utf8Decode, utf8Encode } from './encoding';
8
+ export class SimpleHeaders {
9
+ map = new Map();
10
+ constructor(init) {
11
+ if (init instanceof SimpleHeaders) {
12
+ for (const [k, v] of init)
13
+ this.map.set(k, v);
14
+ }
15
+ else if (Array.isArray(init)) {
16
+ for (const [k, v] of init)
17
+ this.append(k, v);
18
+ }
19
+ else if (init) {
20
+ for (const [k, v] of Object.entries(init))
21
+ this.set(k, v);
22
+ }
23
+ }
24
+ append(name, value) {
25
+ const key = name.toLowerCase();
26
+ const current = this.map.get(key);
27
+ this.map.set(key, current === undefined ? String(value) : `${current}, ${value}`);
28
+ }
29
+ delete(name) {
30
+ this.map.delete(name.toLowerCase());
31
+ }
32
+ get(name) {
33
+ return this.map.get(name.toLowerCase()) ?? null;
34
+ }
35
+ has(name) {
36
+ return this.map.has(name.toLowerCase());
37
+ }
38
+ set(name, value) {
39
+ this.map.set(name.toLowerCase(), String(value));
40
+ }
41
+ forEach(callback) {
42
+ for (const [k, v] of this.map)
43
+ callback(v, k, this);
44
+ }
45
+ keys() {
46
+ return this.map.keys();
47
+ }
48
+ values() {
49
+ return this.map.values();
50
+ }
51
+ entries() {
52
+ return this.map.entries();
53
+ }
54
+ [Symbol.iterator]() {
55
+ return this.map.entries();
56
+ }
57
+ /** The headers as a plain object, for the bridge. */
58
+ toObject() {
59
+ return Object.fromEntries(this.map);
60
+ }
61
+ }
62
+ export class SimpleAbortSignal {
63
+ aborted = false;
64
+ reason = undefined;
65
+ onabort = null;
66
+ listeners = new Set();
67
+ addEventListener(type, listener) {
68
+ if (type === 'abort')
69
+ this.listeners.add(listener);
70
+ }
71
+ removeEventListener(type, listener) {
72
+ if (type === 'abort')
73
+ this.listeners.delete(listener);
74
+ }
75
+ throwIfAborted() {
76
+ if (this.aborted)
77
+ throw this.reason;
78
+ }
79
+ /** @internal */
80
+ _abort(reason) {
81
+ if (this.aborted)
82
+ return;
83
+ this.aborted = true;
84
+ this.reason = reason;
85
+ const event = { type: 'abort' };
86
+ this.onabort?.(event);
87
+ for (const listener of this.listeners)
88
+ listener(event);
89
+ }
90
+ static abort(reason) {
91
+ const signal = new SimpleAbortSignal();
92
+ signal._abort(reason ?? abortError());
93
+ return signal;
94
+ }
95
+ static timeout(ms) {
96
+ const signal = new SimpleAbortSignal();
97
+ setTimeout(() => signal._abort(timeoutError()), ms);
98
+ return signal;
99
+ }
100
+ }
101
+ export class SimpleAbortController {
102
+ signal = new SimpleAbortSignal();
103
+ abort(reason) {
104
+ this.signal._abort(reason ?? abortError());
105
+ }
106
+ }
107
+ function abortError() {
108
+ const error = new Error('The operation was aborted.');
109
+ error.name = 'AbortError';
110
+ return error;
111
+ }
112
+ function timeoutError() {
113
+ const error = new Error('The operation timed out.');
114
+ error.name = 'TimeoutError';
115
+ return error;
116
+ }
117
+ /** Bytes of a body, and the content type it implies when the caller set none. */
118
+ function encodeBody(body) {
119
+ if (body === null || body === undefined)
120
+ return { bytes: null, contentType: null };
121
+ if (typeof body === 'string')
122
+ return { bytes: utf8Encode(body), contentType: 'text/plain;charset=UTF-8' };
123
+ if (body instanceof ArrayBuffer)
124
+ return { bytes: new Uint8Array(body), contentType: null };
125
+ if (ArrayBuffer.isView(body))
126
+ return { bytes: new Uint8Array(body.buffer, body.byteOffset, body.byteLength), contentType: null };
127
+ if (typeof body === 'object' && Symbol.iterator in body && typeof body.toString === 'function') {
128
+ return { bytes: utf8Encode(body.toString()), contentType: 'application/x-www-form-urlencoded;charset=UTF-8' };
129
+ }
130
+ return { bytes: utf8Encode(String(body)), contentType: 'text/plain;charset=UTF-8' };
131
+ }
132
+ class Body {
133
+ bytes;
134
+ bodyUsed = false;
135
+ constructor(bytes) {
136
+ this.bytes = bytes;
137
+ }
138
+ get body() {
139
+ // No streams; read the body whole with the methods below.
140
+ return null;
141
+ }
142
+ take() {
143
+ if (this.bodyUsed)
144
+ throw new TypeError('body used already');
145
+ this.bodyUsed = true;
146
+ return this.bytes ?? new Uint8Array(0);
147
+ }
148
+ async arrayBuffer() {
149
+ const bytes = this.take();
150
+ return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
151
+ }
152
+ async bytesArray() {
153
+ return this.take();
154
+ }
155
+ async text() {
156
+ return utf8Decode(this.take());
157
+ }
158
+ async json() {
159
+ return JSON.parse(utf8Decode(this.take()));
160
+ }
161
+ }
162
+ export class SimpleRequest extends Body {
163
+ url;
164
+ method;
165
+ headers;
166
+ signal;
167
+ constructor(input, init = {}) {
168
+ const base = input instanceof SimpleRequest ? input : null;
169
+ const { bytes, contentType } = encodeBody(init.body);
170
+ super(bytes ?? base?.rawBytes() ?? null);
171
+ this.url = typeof input === 'string' ? input : input instanceof SimpleRequest ? input.url : input.href;
172
+ this.method = (init.method ?? base?.method ?? 'GET').toUpperCase();
173
+ this.headers = new SimpleHeaders(init.headers ?? base?.headers);
174
+ if (contentType && !this.headers.has('content-type'))
175
+ this.headers.set('content-type', contentType);
176
+ this.signal = init.signal ?? base?.signal ?? new SimpleAbortSignal();
177
+ }
178
+ /** @internal */
179
+ rawBytes() {
180
+ return this.bytes;
181
+ }
182
+ clone() {
183
+ return new SimpleRequest(this, { body: this.bytes });
184
+ }
185
+ }
186
+ export class SimpleResponse extends Body {
187
+ status;
188
+ statusText;
189
+ headers;
190
+ url;
191
+ type = 'basic';
192
+ redirected = false;
193
+ constructor(body = null, init = {}) {
194
+ const { bytes, contentType } = encodeBody(body);
195
+ super(bytes);
196
+ this.status = init.status ?? 200;
197
+ this.statusText = init.statusText ?? '';
198
+ this.headers = new SimpleHeaders(init.headers);
199
+ if (contentType && !this.headers.has('content-type'))
200
+ this.headers.set('content-type', contentType);
201
+ this.url = init.url ?? '';
202
+ }
203
+ get ok() {
204
+ return this.status >= 200 && this.status < 300;
205
+ }
206
+ clone() {
207
+ return new SimpleResponse(this.bytes, { status: this.status, statusText: this.statusText, headers: this.headers, url: this.url });
208
+ }
209
+ static json(data, init = {}) {
210
+ const response = new SimpleResponse(JSON.stringify(data), init);
211
+ response.headers.set('content-type', 'application/json');
212
+ return response;
213
+ }
214
+ static error() {
215
+ return new SimpleResponse(null, { status: 0 });
216
+ }
217
+ }
218
+ /** The fetch globals over the bridge. */
219
+ export function createFetch(native) {
220
+ let nextId = 1;
221
+ const pending = new Map();
222
+ const fetch = (input, init = {}) => {
223
+ const request = new SimpleRequest(input, init);
224
+ return new Promise((resolve, reject) => {
225
+ if (request.signal.aborted) {
226
+ reject(request.signal.reason);
227
+ return;
228
+ }
229
+ const id = nextId++;
230
+ pending.set(id, { resolve, reject });
231
+ request.signal.addEventListener('abort', () => {
232
+ if (pending.delete(id))
233
+ reject(request.signal.reason);
234
+ });
235
+ const bytes = request.rawBytes();
236
+ native.fetch(id, {
237
+ url: request.url,
238
+ method: request.method,
239
+ headers: request.headers.toObject(),
240
+ body: bytes ? base64Encode(bytes) : null,
241
+ });
242
+ });
243
+ };
244
+ const __sbFetchResult = (id, raw) => {
245
+ const waiting = pending.get(id);
246
+ if (!waiting)
247
+ return;
248
+ pending.delete(id);
249
+ const result = typeof raw === 'string' ? JSON.parse(raw) : raw;
250
+ if (result.error !== undefined) {
251
+ const error = new TypeError(`fetch failed: ${result.error}`);
252
+ waiting.reject(error);
253
+ return;
254
+ }
255
+ waiting.resolve(new SimpleResponse(result.body ? base64Decode(result.body) : null, {
256
+ status: result.status ?? 200,
257
+ statusText: result.statusText ?? '',
258
+ headers: result.headers ?? {},
259
+ url: result.url ?? '',
260
+ }));
261
+ };
262
+ return {
263
+ fetch,
264
+ Headers: SimpleHeaders,
265
+ Request: SimpleRequest,
266
+ Response: SimpleResponse,
267
+ AbortController: SimpleAbortController,
268
+ AbortSignal: SimpleAbortSignal,
269
+ __sbFetchResult,
270
+ };
271
+ }
272
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @swiftbrowser/native: a @swiftbrowser/react app running in JavaScriptCore
3
+ * inside an iOS app, drawn by real SwiftUI (docs/native.md).
4
+ *
5
+ * ```tsx
6
+ * import { run } from '@swiftbrowser/native';
7
+ * run(<App />);
8
+ * ```
9
+ *
10
+ * The bundle `swiftbrowser-native build` writes starts with the runtime
11
+ * (./runtime), so the web globals are there before React loads.
12
+ */
13
+ export { run, type RunOptions, type Running } from './run';
14
+ export { Native, type NativeProps } from './native';
15
+ export { installRuntime, type InstallOptions } from './runtime';
16
+ export { nativeBridge, launchArguments, type NativeBridge, type NativeFetchRequest, type NativeFetchResult } from './bridge';
17
+ export { SimpleHeaders, SimpleRequest, SimpleResponse, SimpleAbortController, SimpleAbortSignal, createFetch } from './fetch';
18
+ export { SimpleURL, SimpleURLSearchParams } from './url';
19
+ export { SimpleTextEncoder, SimpleTextDecoder, base64Encode, base64Decode, utf8Encode, utf8Decode } from './encoding';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7H,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC9H,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @swiftbrowser/native: a @swiftbrowser/react app running in JavaScriptCore
3
+ * inside an iOS app, drawn by real SwiftUI (docs/native.md).
4
+ *
5
+ * ```tsx
6
+ * import { run } from '@swiftbrowser/native';
7
+ * run(<App />);
8
+ * ```
9
+ *
10
+ * The bundle `swiftbrowser-native build` writes starts with the runtime
11
+ * (./runtime), so the web globals are there before React loads.
12
+ */
13
+ export { run } from './run';
14
+ export { Native } from './native';
15
+ export { installRuntime } from './runtime';
16
+ export { nativeBridge, launchArguments } from './bridge';
17
+ export { SimpleHeaders, SimpleRequest, SimpleResponse, SimpleAbortController, SimpleAbortSignal, createFetch } from './fetch';
18
+ export { SimpleURL, SimpleURLSearchParams } from './url';
19
+ export { SimpleTextEncoder, SimpleTextDecoder, base64Encode, base64Decode, utf8Encode, utf8Decode } from './encoding';
20
+ //# sourceMappingURL=index.js.map