@swiftbrowser/cli 0.17.8 → 0.18.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.
- package/README.md +5 -3
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/native.d.ts +2 -2
- package/dist/commands/native.js +7 -6
- package/dist/commands/native.js.map +1 -1
- package/dist/nativeTemplate.d.ts +5 -3
- package/dist/nativeTemplate.js +215 -36
- package/dist/nativeTemplate.js.map +1 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ the shim does not provide is a compile error, never a wrong rendering.
|
|
|
28
28
|
| `test <path>` | Builds the app's unit tests for WebAssembly against the kit and runs them under Node's WASI, the runtime the browser runs the app in: XCTest and Swift Testing, each when some test imports it. The tests are the Xcode project's unit-test targets that depend on the app or load into it (`TEST_HOST`), each a module that can `@testable import` the app, or for a folder of sources the Swift files under its `Tests` and `*Tests` folders. A failing test, or a trap, fails the command (exit 1); errors name your files. 11 s for a new app's test after the kit is built. UI test targets are not run, and `Bundle.main` holds none of the app's resources yet. |
|
|
29
29
|
| `kit` | Compiles SwiftBrowser for WebAssembly ahead of a build (the first `dev` or `build` does it otherwise) and prints where the kit is. |
|
|
30
30
|
| `native init [<dir>]` | Writes a [SwiftBrowser Native](https://github.com/noya-app/SwiftBrowser/blob/main/Native/README.md) app: an iOS app whose views are real SwiftUI and whose logic is a [`@swiftbrowser/react`](https://www.npmjs.com/package/@swiftbrowser/react) app running in JavaScriptCore. `<Name>.xcodeproj` holds one app target over `<Name>/` (`<Name>App.swift`, three lines around `NativeApp` and `NativeRootView`; the asset catalog; the `app.js` bundle) and depends on the Swift package `@swiftbrowser/native` ships, at `js/node_modules/@swiftbrowser/native/swift`; `js/` is the JavaScript project (`npm install`, then `npm run build` writes the bundle and `npm run dev` serves it with rebuild and Fast Refresh on save, with `SB_DEV_SERVER` enabled in the scheme). `--name`, `--bundle-id` as for `init`; `--package <dir>` depends on another SwiftBrowserNative package (a checkout's `Native/`). |
|
|
31
|
-
| `native build <entry> --out <file>` | Bundles the app's entry module (`
|
|
31
|
+
| `native build <entry> --out <file>` | Bundles the app's entry module (`src/index.tsx`) into the `app.js` the Xcode target ships (`--minify`, `--sourcemap`), as the project's `npm run build` does through `swiftbrowser-native`. `--worker <name>=<entry>` (repeatable) bundles a worker beside it as `<name>.worker.js`, for `createWorker(name)`: a second JavaScriptCore context on a thread of its own, as a page has a Web Worker. |
|
|
32
32
|
| `native dev <entry> --out <file>` | Serves the bundle with rebuild on save for `NativeApp.watch(url:)` (`--port`, default 5173). |
|
|
33
33
|
| `native site <entry> --out <dir>` | The native app as a static site the web renderer runs: the SwiftBrowser Native views compiled for WebAssembly against the shim (the module `@swiftbrowser/native` ships; `--module <file>` for another), the bundle and the page, in the layout `build` writes. `--base /path/` for a site served under a path of another site, `--catalog <dir.xcassets>` (repeatable) for the app's named images, `--worker <name>=<entry>` (repeatable) for the app's workers, published beside the bundle for the page's `Worker`, `--name <App>` for the site's app name, `--minify`. |
|
|
34
34
|
|
|
@@ -247,8 +247,10 @@ Foundation's cannot persist on WASI, saved by the browser per app
|
|
|
247
247
|
counterpart traps, reading the app's resources; and `URLSession`, `URLRequest`,
|
|
248
248
|
`HTTPURLResponse`, `URLError` and `AsyncImage` over the browser's `fetch`
|
|
249
249
|
(corelibs moved networking to FoundationNetworking, which the SDK does not
|
|
250
|
-
ship)
|
|
251
|
-
|
|
250
|
+
ship); and `UndoManager`, which corelibs does not have at all, as the
|
|
251
|
+
shim's (one per app, in `@Environment(\.undoManager)`, with the page's ⌘Z
|
|
252
|
+
and ⇧⌘Z bound to it). Known gaps of corelibs Foundation on WASI:
|
|
253
|
+
`NotificationCenter`'s closure observers and `OperationQueue` are missing.
|
|
252
254
|
|
|
253
255
|
Earlier releases had a `lean` mode (`FoundationEssentials` plus a small
|
|
254
256
|
formatting layer, about a quarter of the size). It is gone: `--foundation`
|
package/dist/cli.js
CHANGED
|
@@ -16,7 +16,7 @@ ${bold('Usage')}
|
|
|
16
16
|
swiftbrowser build <path> [-o <dir>] optimized module and a static site
|
|
17
17
|
swiftbrowser test <path> the app's unit tests (XCTest, Swift Testing) in WebAssembly
|
|
18
18
|
swiftbrowser kit [--wasm-macros] compile SwiftBrowser for WebAssembly ahead of builds
|
|
19
|
-
swiftbrowser native init [<dir>] a new
|
|
19
|
+
swiftbrowser native init [<dir>] a new app: SwiftUI views, logic in JavaScript (@swiftbrowser/react), for iOS and the web
|
|
20
20
|
swiftbrowser native build <entry> --out <file> its app.js bundle for the Xcode target
|
|
21
21
|
swiftbrowser native dev <entry> --out <file> serve the bundle with rebuild and refresh on save
|
|
22
22
|
swiftbrowser native site <entry> --out <dir> the native app as a static site, drawn by the web renderer
|
|
@@ -211,7 +211,7 @@ export async function main(argv) {
|
|
|
211
211
|
const [, subcommand, argument] = positionals;
|
|
212
212
|
const bundleOptions = () => {
|
|
213
213
|
if (!argument)
|
|
214
|
-
throw new CliError(`native ${subcommand} needs the app's entry module (
|
|
214
|
+
throw new CliError(`native ${subcommand} needs the app's entry module (src/index.tsx)`, 2);
|
|
215
215
|
if (!values.out)
|
|
216
216
|
throw new CliError(`native ${subcommand} needs --out ${subcommand === 'site' ? '<dir>, the site to write' : '<App/app.js>, the bundle to write'}`, 2);
|
|
217
217
|
const workers = {};
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElE,qGAAqG;AACrG,MAAM,CAAC,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAyB,CAAC,OAAO,CAAC;AAE9I,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,OAAO;;EAE7C,IAAI,CAAC,OAAO,CAAC;;;;;;;;;;;;;EAab,IAAI,CAAC,QAAQ,CAAC;;;EAGd,IAAI,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCf,IAAI,CAAC,aAAa,CAAC;;CAEpB,CAAC;AAEF,8FAA8F;AAC9F,MAAM,UAAU,GAAG,2FAA2F,CAAC;AAE/G;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,OAAO,IAAI,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAc;IACvC,IAAI,MAAoC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC;YACjB,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;YAC7B,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE;gBACP,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;gBACrC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC5B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC/B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;gBACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;gBAC5C,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAChC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAChD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC5B,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC5B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC3B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aAC/B;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;IACrC,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,iFAAiF;QACjF,IAAI,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,cAAc,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,QAAkB,EAAE,CAAC,CAAC;QAC9G,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,cAAc,MAAM,CAAC,QAAkB,4BAA4B,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAuB,CAAC;IAC7D,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC7C,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,UAAU,GAAI,MAAM,CAAC,YAAY,CAA0B,IAAI,EAAE,CAAC;IACxE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/D,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;IACF,MAAM,SAAS,GAAG,GAAW,EAAE;QAC7B,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,OAAO,+EAA+E,EAAE,CAAC,CAAC,CAAC;QAC7H,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACpD,IAAI,CAAC,KAAK,EAAE;oBACV,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1F,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBACxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9E,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAClD,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpH,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1F,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBAClD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;oBAAE,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;gBACpG,MAAM,GAAG,CAAC,SAAS,EAAE,EAAE;oBACrB,GAAG,UAAU;oBACb,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,MAAM,CAAC,IAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvC,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACpD,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,GAAG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACzF,OAAO,CAAC,CAAC;YACX,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;gBAChG,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,WAAW,CAAC;gBAC7C,MAAM,aAAa,GAAG,GAA4G,EAAE;oBAClI,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,QAAQ,CAAC,UAAU,UAAU,kDAAkD,EAAE,CAAC,CAAC,CAAC;oBAC7G,IAAI,CAAC,MAAM,CAAC,GAAG;wBAAE,MAAM,IAAI,QAAQ,CAAC,UAAU,UAAU,gBAAgB,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACvK,MAAM,OAAO,GAA2B,EAAE,CAAC;oBAC3C,KAAK,MAAM,IAAI,IAAK,MAAM,CAAC,MAA+B,IAAI,EAAE,EAAE,CAAC;wBACjE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;wBAC7B,IAAI,EAAE,IAAI,CAAC;4BAAE,MAAM,IAAI,QAAQ,CAAC,sCAAsC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;wBACjF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAClD,CAAC;oBACD,OAAO;wBACL,KAAK,EAAE,QAAQ;wBACf,GAAG,EAAE,MAAM,CAAC,GAAa;wBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC1C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACpD,CAAC;gBACJ,CAAC,CAAC;gBACF,QAAQ,UAAU,EAAE,CAAC;oBACnB,KAAK,MAAM;wBACT,UAAU,CAAC,QAAQ,EAAE;4BACnB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACzF,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC/E,CAAC,CAAC;wBACH,OAAO,CAAC,CAAC;oBACX,KAAK,OAAO;wBACV,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;wBACnC,OAAO,CAAC,CAAC;oBACX,KAAK,KAAK,CAAC,CAAC,CAAC;wBACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;wBACzE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;4BAAE,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;wBACpG,MAAM,SAAS,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACjF,OAAO,CAAC,CAAC;oBACX,CAAC;oBACD,KAAK,MAAM;wBACT,MAAM,UAAU,CAAC;4BACf,GAAG,aAAa,EAAE;4BAClB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC3E,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BACrE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAClF,CAAC,CAAC;wBACH,OAAO,CAAC,CAAC;oBACX;wBACE,MAAM,IAAI,QAAQ,CAAC,wCAAwC,UAAU,CAAC,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7G,CAAC;YACH,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE;oBACvB,GAAG,UAAU;oBACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7C,CAAC,CAAC;gBACH,OAAO,CAAC,CAAC;YACX,CAAC;YACD;gBACE,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,OAAO,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YAC5B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC;IACX,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ export interface NativeInitOptions {
|
|
|
6
6
|
/**
|
|
7
7
|
* The SwiftBrowserNative package directory the Xcode project depends on,
|
|
8
8
|
* relative to the working directory; the one `@swiftbrowser/native` ships
|
|
9
|
-
* (`
|
|
10
|
-
*
|
|
9
|
+
* (`node_modules/@swiftbrowser/native/swift`, after `npm install`) by
|
|
10
|
+
* default.
|
|
11
11
|
*/
|
|
12
12
|
package?: string;
|
|
13
13
|
}
|
package/dist/commands/native.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// `swiftbrowser native init|build|dev|site`: SwiftBrowser Native apps (iOS
|
|
2
2
|
// apps whose logic is a @swiftbrowser/react app in JavaScriptCore, drawn by
|
|
3
|
-
// real SwiftUI). `init` writes a project (nativeTemplate.ts); `build`, `dev`
|
|
4
|
-
// and `site` are @swiftbrowser/native's bundler, which the project's
|
|
3
|
+
// real SwiftUI, and the same app as a web page). `init` writes a project (nativeTemplate.ts); `build`, `dev`
|
|
4
|
+
// and `site` are @swiftbrowser/native's bundler, which the project's npm
|
|
5
5
|
// scripts also run as `swiftbrowser-native`.
|
|
6
6
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
7
7
|
import path from 'node:path';
|
|
@@ -22,7 +22,7 @@ export function nativeInit(dirArg, options = {}) {
|
|
|
22
22
|
if (!APP_NAME.test(name)) {
|
|
23
23
|
throw new CliError(`--name must be a Swift type name (a letter, then letters and digits): ${name}`, 2);
|
|
24
24
|
}
|
|
25
|
-
for (const taken of [`${name}.xcodeproj`,
|
|
25
|
+
for (const taken of [`${name}.xcodeproj`, 'ios', 'src', 'web', 'package.json', 'tsconfig.json', 'vite.config.ts']) {
|
|
26
26
|
if (existsSync(path.join(dir, taken)))
|
|
27
27
|
throw new CliError(`${path.join(dir, taken)} already exists; pick another --name or directory`);
|
|
28
28
|
}
|
|
@@ -57,10 +57,11 @@ export function nativeInit(dirArg, options = {}) {
|
|
|
57
57
|
info(`\n${bold('Next')}`);
|
|
58
58
|
const quote = (arg) => (/[\s"']/.test(arg) ? JSON.stringify(arg) : arg);
|
|
59
59
|
const steps = [
|
|
60
|
-
[`cd ${quote(
|
|
61
|
-
['npm run build',
|
|
62
|
-
[`open
|
|
60
|
+
[`cd ${quote(shown)} && npm install`, 'React, @swiftbrowser/react, @swiftbrowser/web and @swiftbrowser/native (which carries the Swift package)'],
|
|
61
|
+
['npm run build', 'write ios/app.js, the bundle the app ships'],
|
|
62
|
+
[`open ${name}.xcodeproj`, 'run it on a simulator'],
|
|
63
63
|
['npm run dev', 'rebuild and refresh on save (enable SB_DEV_SERVER in the scheme)'],
|
|
64
|
+
['npm run dev:web', 'the same app as a web page, at http://localhost:5175/'],
|
|
64
65
|
];
|
|
65
66
|
const width = Math.max(...steps.map(([command]) => command.length)) + 3;
|
|
66
67
|
for (const [command, what] of steps)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/commands/native.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/commands/native.ts"],"names":[],"mappings":"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"}
|
package/dist/nativeTemplate.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { type TemplateFile } from './template.js';
|
|
2
2
|
/** Where the Swift package is, relative to the project directory, when `init` is not told otherwise. */
|
|
3
|
-
export declare const DEFAULT_PACKAGE_PATH = "
|
|
3
|
+
export declare const DEFAULT_PACKAGE_PATH = "node_modules/@swiftbrowser/native/swift";
|
|
4
4
|
export interface NativeTemplateOptions {
|
|
5
|
-
/** The app
|
|
5
|
+
/** The app and target name; must match `APP_NAME`. (The target's folder is `ios/`.) */
|
|
6
6
|
name: string;
|
|
7
7
|
/** Defaults to `com.example.<name>`. */
|
|
8
8
|
bundleId?: string;
|
|
9
9
|
/** The SwiftBrowserNative package's directory, relative to the project directory (`DEFAULT_PACKAGE_PATH`). */
|
|
10
10
|
packagePath?: string;
|
|
11
|
-
/** The `@swiftbrowser/*` version the
|
|
11
|
+
/** The `@swiftbrowser/*` version the project depends on; this package's by default. */
|
|
12
12
|
version?: string;
|
|
13
|
+
/** More Info.plist keys and their strings (`NSMicrophoneUsageDescription`, say), as `INFOPLIST_KEY_` build settings. */
|
|
14
|
+
infoPlist?: Record<string, string>;
|
|
13
15
|
}
|
|
14
16
|
/** The Xcode project and asset catalog alone: what the examples under Native/Examples regenerate. */
|
|
15
17
|
export declare function nativeXcodeFiles(options: NativeTemplateOptions): TemplateFile[];
|
package/dist/nativeTemplate.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
// The files of a SwiftBrowser Native app (`swiftbrowser native init`): an
|
|
2
|
-
// Xcode project with one iOS app target over a synchronized folder
|
|
3
|
-
// file, the asset catalog and the `app.js` bundle), depending on the
|
|
2
|
+
// Xcode project with one iOS app target over a synchronized folder, `ios/`
|
|
3
|
+
// (the App file, the asset catalog and the `app.js` bundle), depending on the
|
|
4
4
|
// SwiftBrowserNative Swift package at a relative path (by default the one
|
|
5
|
-
// `@swiftbrowser/native` ships, under `
|
|
6
|
-
// project whose `npm run build` writes the bundle
|
|
5
|
+
// `@swiftbrowser/native` ships, under `node_modules`), and, at the project's
|
|
6
|
+
// root, the npm project whose `npm run build` writes the bundle from `src/`
|
|
7
|
+
// and whose `npm run build:web` builds the same app as a web page (`web/`,
|
|
8
|
+
// Vite, drawn by @swiftbrowser/web's renderer): one app, two targets, laid
|
|
9
|
+
// out as React Native lays its shells out. The project layout and
|
|
7
10
|
// settings follow template.ts (Xcode 16's App template) without the tests;
|
|
8
11
|
// Native/Examples/generate-projects.mjs writes the examples' projects with
|
|
9
12
|
// the same generator, depending on the repository's `Native/` package.
|
|
10
13
|
import { createHash } from 'node:crypto';
|
|
11
14
|
import { readFileSync } from 'node:fs';
|
|
12
15
|
import { ACCENT_COLOR, APP_ICON, APP_NAME, CATALOG_INFO, WORKSPACE } from './template.js';
|
|
13
|
-
/** This package's version, which the new project's `
|
|
16
|
+
/** This package's version, which the new project's `package.json` pins `@swiftbrowser/native` and `@swiftbrowser/react` to. */
|
|
14
17
|
const VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version;
|
|
15
18
|
/** Where the Swift package is, relative to the project directory, when `init` is not told otherwise. */
|
|
16
|
-
export const DEFAULT_PACKAGE_PATH = '
|
|
19
|
+
export const DEFAULT_PACKAGE_PATH = 'node_modules/@swiftbrowser/native/swift';
|
|
17
20
|
/** The Xcode project and asset catalog alone: what the examples under Native/Examples regenerate. */
|
|
18
21
|
export function nativeXcodeFiles(options) {
|
|
19
22
|
const { name } = options;
|
|
@@ -22,12 +25,12 @@ export function nativeXcodeFiles(options) {
|
|
|
22
25
|
const bundleId = options.bundleId ?? `com.example.${name}`;
|
|
23
26
|
const packagePath = options.packagePath ?? DEFAULT_PACKAGE_PATH;
|
|
24
27
|
return [
|
|
25
|
-
{ path: `${name}.xcodeproj/project.pbxproj`, contents: pbxproj(name, bundleId, packagePath) },
|
|
28
|
+
{ path: `${name}.xcodeproj/project.pbxproj`, contents: pbxproj(name, bundleId, packagePath, options.infoPlist ?? {}) },
|
|
26
29
|
{ path: `${name}.xcodeproj/project.xcworkspace/contents.xcworkspacedata`, contents: WORKSPACE },
|
|
27
30
|
{ path: `${name}.xcodeproj/xcshareddata/xcschemes/${name}.xcscheme`, contents: scheme(name) },
|
|
28
|
-
{ path:
|
|
29
|
-
{ path:
|
|
30
|
-
{ path:
|
|
31
|
+
{ path: 'ios/Assets.xcassets/Contents.json', contents: json(CATALOG_INFO) },
|
|
32
|
+
{ path: 'ios/Assets.xcassets/AccentColor.colorset/Contents.json', contents: json(ACCENT_COLOR) },
|
|
33
|
+
{ path: 'ios/Assets.xcassets/AppIcon.appiconset/Contents.json', contents: json(APP_ICON) },
|
|
31
34
|
];
|
|
32
35
|
}
|
|
33
36
|
/** Every file of a new native app, relative to its directory. */
|
|
@@ -36,18 +39,22 @@ export function nativeProjectFiles(options) {
|
|
|
36
39
|
const version = options.version ?? VERSION;
|
|
37
40
|
return [
|
|
38
41
|
...nativeXcodeFiles(options),
|
|
39
|
-
{ path:
|
|
40
|
-
{ path: '
|
|
41
|
-
{ path: '
|
|
42
|
-
{ path: '
|
|
43
|
-
{ path: '
|
|
42
|
+
{ path: `ios/${name}App.swift`, contents: appSource(name) },
|
|
43
|
+
{ path: 'package.json', contents: json(packageJson(name, version)) },
|
|
44
|
+
{ path: 'tsconfig.json', contents: json(TSCONFIG) },
|
|
45
|
+
{ path: 'vite.config.ts', contents: VITE_CONFIG },
|
|
46
|
+
{ path: 'src/index.tsx', contents: INDEX },
|
|
47
|
+
{ path: 'src/App.tsx', contents: APP },
|
|
48
|
+
{ path: 'web/index.html', contents: webIndexHtml(name) },
|
|
49
|
+
{ path: 'web/main.tsx', contents: webMain(name) },
|
|
44
50
|
];
|
|
45
51
|
}
|
|
46
52
|
/** The lines a new native project's `.gitignore` holds (merged into an existing one). */
|
|
47
53
|
export function nativeGitignoreLines(name) {
|
|
48
54
|
return [
|
|
49
|
-
'# SwiftBrowser Native: the bundle
|
|
50
|
-
|
|
55
|
+
'# SwiftBrowser Native: the bundle, the web build, and the dependencies',
|
|
56
|
+
'ios/app.js',
|
|
57
|
+
'dist-web/',
|
|
51
58
|
'node_modules/',
|
|
52
59
|
'# Xcode',
|
|
53
60
|
'xcuserdata/',
|
|
@@ -59,19 +66,26 @@ export function nativeGitignoreLines(name) {
|
|
|
59
66
|
export function nativeReadme(name) {
|
|
60
67
|
return `# ${name}
|
|
61
68
|
|
|
62
|
-
|
|
69
|
+
One app, two targets. The views are SwiftUI and the logic is JavaScript: a
|
|
63
70
|
[\`@swiftbrowser/react\`](https://www.npmjs.com/package/@swiftbrowser/react) app
|
|
64
|
-
in \`
|
|
65
|
-
[SwiftBrowser Native](https://github.com/noya-app/SwiftBrowser/blob/main/Native/README.md)
|
|
71
|
+
in \`src\`, bundled into \`ios/app.js\` and run in JavaScriptCore by
|
|
72
|
+
[SwiftBrowser Native](https://github.com/noya-app/SwiftBrowser/blob/main/Native/README.md)
|
|
73
|
+
on iOS, and drawn in the browser by
|
|
74
|
+
[\`@swiftbrowser/web\`](https://www.npmjs.com/package/@swiftbrowser/web)'s renderer
|
|
75
|
+
as a web page (\`web\`, built by Vite). The app is \`src/App.tsx\`; the two
|
|
76
|
+
entries, \`src/index.tsx\` and \`web/main.tsx\`, only mount it.
|
|
66
77
|
|
|
67
|
-
- \`
|
|
68
|
-
|
|
69
|
-
- \`npm run build\` writes
|
|
78
|
+
- \`npm install\` once: \`@swiftbrowser/native\` carries the Swift package the
|
|
79
|
+
Xcode project depends on (\`node_modules/@swiftbrowser/native/swift\`).
|
|
80
|
+
- \`npm run build\` writes \`ios/app.js\`; then open \`${name}.xcodeproj\` and run.
|
|
70
81
|
- \`npm run dev\` serves the bundle with rebuild on save: enable the
|
|
71
82
|
\`SB_DEV_SERVER\` variable in the scheme's Run action and the running app
|
|
72
83
|
refreshes on every save, keeping its state (React Fast Refresh).
|
|
84
|
+
- \`npm run dev:web\` serves the web page at http://localhost:5175/ (the
|
|
85
|
+
iPhone frame on a desktop, full screen on a phone); \`npm run build:web\`
|
|
86
|
+
writes it to \`dist-web\` for any static host.
|
|
73
87
|
|
|
74
|
-
The native side is
|
|
88
|
+
The native side is \`ios/${name}App.swift\` (the Xcode target's folder); native views the app needs
|
|
75
89
|
register with \`NativeRegistry\` there and render through \`<Native name=...>\`.
|
|
76
90
|
`;
|
|
77
91
|
}
|
|
@@ -79,8 +93,8 @@ function appSource(name) {
|
|
|
79
93
|
return `import SwiftBrowserNative
|
|
80
94
|
import SwiftUI
|
|
81
95
|
|
|
82
|
-
// The whole native side of the app. The logic is JavaScript:
|
|
83
|
-
// to \`app.js\` in this folder (\`npm run build\`
|
|
96
|
+
// The whole native side of the app. The logic is JavaScript: \`../src\` builds
|
|
97
|
+
// to \`app.js\` in this folder (\`npm run build\` at the project's root), which Xcode bundles
|
|
84
98
|
// as a resource and \`NativeApp\` runs in JavaScriptCore. \`NativeRootView\`
|
|
85
99
|
// draws the element tree it renders with SwiftUI.
|
|
86
100
|
//
|
|
@@ -122,21 +136,25 @@ function packageJson(name, version) {
|
|
|
122
136
|
private: true,
|
|
123
137
|
version: '1.0.0',
|
|
124
138
|
type: 'module',
|
|
125
|
-
description: `The
|
|
139
|
+
description: `The ${name} app: bundled for ${name}.xcodeproj (ios/) and built as a web page (web/).`,
|
|
126
140
|
scripts: {
|
|
127
|
-
build:
|
|
128
|
-
dev:
|
|
141
|
+
build: 'swiftbrowser-native build src/index.tsx --out ios/app.js --minify',
|
|
142
|
+
dev: 'swiftbrowser-native dev src/index.tsx --out ios/app.js --sourcemap',
|
|
143
|
+
'build:web': 'vite build',
|
|
144
|
+
'dev:web': 'vite',
|
|
129
145
|
typecheck: 'tsc --noEmit -p tsconfig.json',
|
|
130
146
|
},
|
|
131
147
|
dependencies: {
|
|
132
148
|
'@swiftbrowser/native': version,
|
|
133
149
|
'@swiftbrowser/react': version,
|
|
150
|
+
'@swiftbrowser/web': version,
|
|
134
151
|
react: '^19.3.0',
|
|
135
152
|
'react-reconciler': '^0.34.0',
|
|
136
153
|
},
|
|
137
154
|
devDependencies: {
|
|
138
155
|
'@types/react': '^19.3.0',
|
|
139
156
|
typescript: '^5.9.2',
|
|
157
|
+
vite: '^7.1.7',
|
|
140
158
|
},
|
|
141
159
|
};
|
|
142
160
|
}
|
|
@@ -147,7 +165,7 @@ const TSCONFIG = {
|
|
|
147
165
|
moduleResolution: 'Bundler',
|
|
148
166
|
lib: ['ES2022', 'DOM', 'DOM.Iterable'],
|
|
149
167
|
jsx: 'react-jsx',
|
|
150
|
-
types: [],
|
|
168
|
+
types: ['vite/client'],
|
|
151
169
|
strict: true,
|
|
152
170
|
noUnusedLocals: true,
|
|
153
171
|
noUnusedParameters: true,
|
|
@@ -156,8 +174,19 @@ const TSCONFIG = {
|
|
|
156
174
|
skipLibCheck: true,
|
|
157
175
|
noEmit: true,
|
|
158
176
|
},
|
|
159
|
-
include: ['src'],
|
|
177
|
+
include: ['src', 'web', 'vite.config.ts'],
|
|
160
178
|
};
|
|
179
|
+
const VITE_CONFIG = `import { defineConfig } from 'vite';
|
|
180
|
+
|
|
181
|
+
// The app as a web page (web/index.html): the same React app the iOS app
|
|
182
|
+
// bundles, drawn by @swiftbrowser/web's renderer. \`npm run dev:web\` serves
|
|
183
|
+
// it; \`npm run build:web\` writes it to dist-web/ for any static host.
|
|
184
|
+
export default defineConfig({
|
|
185
|
+
root: 'web',
|
|
186
|
+
build: { outDir: '../dist-web', emptyOutDir: true },
|
|
187
|
+
server: { port: 5175, strictPort: true },
|
|
188
|
+
});
|
|
189
|
+
`;
|
|
161
190
|
const INDEX = `// The entry \`npm run build\` bundles into the app: the runtime (the web
|
|
162
191
|
// globals JavaScriptCore lacks) goes first in the bundle, then this.
|
|
163
192
|
import { run } from '@swiftbrowser/native';
|
|
@@ -186,6 +215,153 @@ export function App(): ReactNode {
|
|
|
186
215
|
);
|
|
187
216
|
}
|
|
188
217
|
`;
|
|
218
|
+
/** The web page: the iPhone frame on a desktop, the whole screen on a phone (`?mode=frame` / `?mode=device` force one). */
|
|
219
|
+
function webIndexHtml(name) {
|
|
220
|
+
return `<!doctype html>
|
|
221
|
+
<html lang="en" data-sb-mode="frame">
|
|
222
|
+
<head>
|
|
223
|
+
<meta charset="UTF-8" />
|
|
224
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no" />
|
|
225
|
+
<meta name="color-scheme" content="light dark" />
|
|
226
|
+
<meta name="theme-color" media="(prefers-color-scheme: light)" content="#ffffff" />
|
|
227
|
+
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000000" />
|
|
228
|
+
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
229
|
+
<meta name="mobile-web-app-capable" content="yes" />
|
|
230
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
231
|
+
<meta name="apple-mobile-web-app-title" content="${name}" />
|
|
232
|
+
<title>${name}</title>
|
|
233
|
+
<link rel="icon" href="data:," />
|
|
234
|
+
<script>
|
|
235
|
+
// Frame (the iPhone bezel) on a desktop, the whole screen on a phone,
|
|
236
|
+
// decided before the first paint so a phone never flashes the bezel.
|
|
237
|
+
(function () {
|
|
238
|
+
var mode = new URLSearchParams(location.search).get('mode');
|
|
239
|
+
var coarse = typeof matchMedia === 'function' && matchMedia('(pointer: coarse)').matches;
|
|
240
|
+
var device = mode === 'device' || (mode !== 'frame' && coarse);
|
|
241
|
+
document.documentElement.setAttribute('data-sb-mode', device ? 'device' : 'frame');
|
|
242
|
+
})();
|
|
243
|
+
</script>
|
|
244
|
+
</head>
|
|
245
|
+
<body>
|
|
246
|
+
<header class="toolbar" role="toolbar" aria-label="Controls">
|
|
247
|
+
<span class="toolbar-brand">${name}</span>
|
|
248
|
+
<span class="toolbar-spacer"></span>
|
|
249
|
+
<button id="theme-toggle" class="toolbar-button" type="button" aria-pressed="false">Dark mode</button>
|
|
250
|
+
</header>
|
|
251
|
+
|
|
252
|
+
<main class="stage">
|
|
253
|
+
<div id="device" class="device" data-theme="light" data-state="loading">
|
|
254
|
+
<div class="device-screen">
|
|
255
|
+
<div class="dynamic-island" aria-hidden="true"></div>
|
|
256
|
+
<div class="status-bar" aria-hidden="true">
|
|
257
|
+
<span class="status-time">9:41</span>
|
|
258
|
+
<span class="status-glyphs">
|
|
259
|
+
<svg class="glyph glyph-cellular" viewBox="0 0 19.33 12.33" width="19.33" height="12.33">
|
|
260
|
+
<rect x="0" y="7.67" width="3.33" height="4.67" rx="1" />
|
|
261
|
+
<rect x="5.33" y="5.33" width="3.33" height="7" rx="1" />
|
|
262
|
+
<rect x="10.67" y="2.67" width="3.33" height="9.67" rx="1" />
|
|
263
|
+
<rect x="16" y="0" width="3.33" height="12.33" rx="1" />
|
|
264
|
+
</svg>
|
|
265
|
+
<svg class="glyph glyph-wifi" viewBox="0 0 16.3 12.33" width="16.3" height="12.33">
|
|
266
|
+
<path class="wifi-band" d="M1.08 3.87A11.0 11.0 0 0 1 15.22 3.87" stroke-width="2.6" />
|
|
267
|
+
<path class="wifi-band" d="M3.91 7.24A6.6 6.6 0 0 1 12.39 7.24" stroke-width="2.9" />
|
|
268
|
+
<path d="M8.15 12.3L5.64 9.31A3.9 3.9 0 0 1 10.66 9.31Z" />
|
|
269
|
+
</svg>
|
|
270
|
+
<svg class="glyph glyph-battery" viewBox="0 0 28 13" width="28" height="13">
|
|
271
|
+
<rect class="battery-shell" x="0.5" y="0.5" width="24" height="12" rx="3.5" />
|
|
272
|
+
<rect class="battery-fill" x="2" y="2" width="21" height="9" rx="2" />
|
|
273
|
+
<path class="battery-cap" d="M26 4.3v4.4c.8-.3 1.33-1.1 1.33-2.2S26.8 4.6 26 4.3Z" />
|
|
274
|
+
</svg>
|
|
275
|
+
</span>
|
|
276
|
+
</div>
|
|
277
|
+
<div id="screen" class="screen" data-sb-id="0"></div>
|
|
278
|
+
<div class="home-indicator" aria-hidden="true"></div>
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
<script>
|
|
282
|
+
(function () {
|
|
283
|
+
if (document.documentElement.getAttribute('data-sb-mode') !== 'device') return;
|
|
284
|
+
var dark = typeof matchMedia === 'function' && matchMedia('(prefers-color-scheme: dark)').matches;
|
|
285
|
+
document.getElementById('device').setAttribute('data-theme', dark ? 'dark' : 'light');
|
|
286
|
+
})();
|
|
287
|
+
</script>
|
|
288
|
+
<p id="status" class="status" role="alert" hidden></p>
|
|
289
|
+
</main>
|
|
290
|
+
|
|
291
|
+
<script type="module" src="./main.tsx"></script>
|
|
292
|
+
</body>
|
|
293
|
+
</html>
|
|
294
|
+
`;
|
|
295
|
+
}
|
|
296
|
+
/** The web entry: mounts the app in the page, following the page's theme toggle and, on a phone, the system's appearance and the safe areas. */
|
|
297
|
+
function webMain(name) {
|
|
298
|
+
return `// The app in a browser: the same React app the iOS app runs, drawn by
|
|
299
|
+
// @swiftbrowser/web's renderer. A desktop gets it in the iPhone frame with a
|
|
300
|
+
// theme toggle; a phone gets it full screen, following the system's
|
|
301
|
+
// appearance (\`?mode=frame\` / \`?mode=device\` force one).
|
|
302
|
+
|
|
303
|
+
import '@swiftbrowser/web/src/styles.css';
|
|
304
|
+
import '@swiftbrowser/web/src/page.css';
|
|
305
|
+
import { mount } from '@swiftbrowser/react';
|
|
306
|
+
import { readViewportInsets, watchViewport } from '@swiftbrowser/web/src/deviceMode';
|
|
307
|
+
import type { ColorScheme } from '@swiftbrowser/web/src/protocol';
|
|
308
|
+
import { App } from '../src/App';
|
|
309
|
+
|
|
310
|
+
function $<T extends HTMLElement>(selector: string): T {
|
|
311
|
+
const el = document.querySelector<T>(selector);
|
|
312
|
+
if (!el) throw new Error(\`Missing element \${selector}\`);
|
|
313
|
+
return el;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
const device = $<HTMLElement>('#device');
|
|
317
|
+
const screen = $<HTMLElement>('#screen');
|
|
318
|
+
const themeToggle = $<HTMLButtonElement>('#theme-toggle');
|
|
319
|
+
const status = $<HTMLElement>('#status');
|
|
320
|
+
|
|
321
|
+
// index.html decided the mode before the first paint.
|
|
322
|
+
const deviceMode = document.documentElement.dataset['sbMode'] === 'device';
|
|
323
|
+
const dark = matchMedia('(prefers-color-scheme: dark)');
|
|
324
|
+
let theme: ColorScheme = deviceMode && dark.matches ? 'dark' : 'light';
|
|
325
|
+
|
|
326
|
+
try {
|
|
327
|
+
const mounted = mount(screen, <App />, {
|
|
328
|
+
// The app's name: its files (fileManager) live in the browser's database of this name.
|
|
329
|
+
app: '${name}',
|
|
330
|
+
colorScheme: theme,
|
|
331
|
+
safeArea: deviceMode ? readViewportInsets() : null,
|
|
332
|
+
keyboard: deviceMode,
|
|
333
|
+
});
|
|
334
|
+
device.dataset['state'] = 'ready';
|
|
335
|
+
|
|
336
|
+
const applyTheme = (next: ColorScheme): void => {
|
|
337
|
+
theme = next;
|
|
338
|
+
device.dataset['theme'] = next;
|
|
339
|
+
themeToggle.setAttribute('aria-pressed', String(next === 'dark'));
|
|
340
|
+
themeToggle.textContent = next === 'dark' ? 'Light mode' : 'Dark mode';
|
|
341
|
+
mounted.setEnvironment({ colorScheme: next });
|
|
342
|
+
};
|
|
343
|
+
applyTheme(theme);
|
|
344
|
+
themeToggle.addEventListener('click', () => applyTheme(theme === 'dark' ? 'light' : 'dark'));
|
|
345
|
+
|
|
346
|
+
if (deviceMode) {
|
|
347
|
+
dark.addEventListener('change', () => applyTheme(dark.matches ? 'dark' : 'light'));
|
|
348
|
+
// The safe areas are non-zero at home-screen launch or in landscape.
|
|
349
|
+
let lastSize = \`\${screen.clientWidth}x\${screen.clientHeight}\`;
|
|
350
|
+
watchViewport(() => {
|
|
351
|
+
mounted.renderer.setSafeArea(readViewportInsets());
|
|
352
|
+
const size = \`\${screen.clientWidth}x\${screen.clientHeight}\`;
|
|
353
|
+
if (size === lastSize) return;
|
|
354
|
+
lastSize = size;
|
|
355
|
+
mounted.renderer.viewportChanged();
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
} catch (error) {
|
|
359
|
+
status.textContent = error instanceof Error ? error.message : String(error);
|
|
360
|
+
status.hidden = false;
|
|
361
|
+
throw error;
|
|
362
|
+
}
|
|
363
|
+
`;
|
|
364
|
+
}
|
|
189
365
|
const json = (value) => `${JSON.stringify(value, null, 2)}\n`;
|
|
190
366
|
/** A pbxproj string: bare when it needs no quoting, else quoted. */
|
|
191
367
|
const quoted = (value) => (/^[A-Za-z0-9_./]+$/.test(value) ? value : JSON.stringify(value));
|
|
@@ -196,7 +372,7 @@ function objectId(name, role) {
|
|
|
196
372
|
function settings(pairs) {
|
|
197
373
|
return pairs.map(([key, value]) => `\t\t\t\t${key} = ${value};`).join('\n');
|
|
198
374
|
}
|
|
199
|
-
function pbxproj(name, bundleId, packagePath) {
|
|
375
|
+
function pbxproj(name, bundleId, packagePath, infoPlist) {
|
|
200
376
|
const id = (role) => objectId(name, role);
|
|
201
377
|
const app = id('product');
|
|
202
378
|
const folder = id('folder');
|
|
@@ -267,6 +443,9 @@ function pbxproj(name, bundleId, packagePath) {
|
|
|
267
443
|
['ENABLE_PREVIEWS', 'YES'],
|
|
268
444
|
['GENERATE_INFOPLIST_FILE', 'YES'],
|
|
269
445
|
['INFOPLIST_KEY_CFBundleDisplayName', quoted(name)],
|
|
446
|
+
...Object.keys(infoPlist)
|
|
447
|
+
.sort()
|
|
448
|
+
.map((key) => [`INFOPLIST_KEY_${key}`, quoted(infoPlist[key])]),
|
|
270
449
|
['INFOPLIST_KEY_UIApplicationSceneManifest_Generation', 'YES'],
|
|
271
450
|
['INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents', 'YES'],
|
|
272
451
|
['INFOPLIST_KEY_UILaunchScreen_Generation', 'YES'],
|
|
@@ -297,9 +476,9 @@ function pbxproj(name, bundleId, packagePath) {
|
|
|
297
476
|
/* End PBXFileReference section */
|
|
298
477
|
|
|
299
478
|
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
|
300
|
-
${folder} /*
|
|
479
|
+
${folder} /* ios */ = {
|
|
301
480
|
isa = PBXFileSystemSynchronizedRootGroup;
|
|
302
|
-
path =
|
|
481
|
+
path = ios;
|
|
303
482
|
sourceTree = "<group>";
|
|
304
483
|
};
|
|
305
484
|
/* End PBXFileSystemSynchronizedRootGroup section */
|
|
@@ -319,7 +498,7 @@ function pbxproj(name, bundleId, packagePath) {
|
|
|
319
498
|
${mainGroup} = {
|
|
320
499
|
isa = PBXGroup;
|
|
321
500
|
children = (
|
|
322
|
-
${folder} /*
|
|
501
|
+
${folder} /* ios */,
|
|
323
502
|
${products} /* Products */,
|
|
324
503
|
);
|
|
325
504
|
sourceTree = "<group>";
|
|
@@ -348,7 +527,7 @@ function pbxproj(name, bundleId, packagePath) {
|
|
|
348
527
|
dependencies = (
|
|
349
528
|
);
|
|
350
529
|
fileSystemSynchronizedGroups = (
|
|
351
|
-
${folder} /*
|
|
530
|
+
${folder} /* ios */,
|
|
352
531
|
);
|
|
353
532
|
name = ${name};
|
|
354
533
|
packageProductDependencies = (
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeTemplate.js","sourceRoot":"","sources":["../src/nativeTemplate.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"nativeTemplate.js","sourceRoot":"","sources":["../src/nativeTemplate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@swiftbrowser/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
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",
|
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"build": "tsc -p tsconfig.build.json"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@swiftbrowser/kit": "0.
|
|
26
|
-
"@swiftbrowser/native": "0.
|
|
27
|
-
"@swiftbrowser/swift": "0.
|
|
28
|
-
"@swiftbrowser/wasm-compiler": "0.
|
|
29
|
-
"@swiftbrowser/web": "0.
|
|
30
|
-
"@swiftbrowser/xcodeproj": "0.
|
|
25
|
+
"@swiftbrowser/kit": "0.18.0",
|
|
26
|
+
"@swiftbrowser/native": "0.18.0",
|
|
27
|
+
"@swiftbrowser/swift": "0.18.0",
|
|
28
|
+
"@swiftbrowser/wasm-compiler": "0.18.0",
|
|
29
|
+
"@swiftbrowser/web": "0.18.0",
|
|
30
|
+
"@swiftbrowser/xcodeproj": "0.18.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^26.6.4",
|