@swiftbrowser/cli 0.26.2 → 0.26.3

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.
@@ -18,7 +18,8 @@
18
18
  * re-exports Compression's, Core Text's font registration, MapKit's
19
19
  * SwiftUI map, drawn without map data, and WeatherKit's service, whose
20
20
  * requests throw, MediaPlayer's now-playing info and remote commands over
21
- * the Media Session API); plus
21
+ * the Media Session API, and AppKit's colors, images, fonts, pasteboard,
22
+ * workspace and representables over UIKit's, in a build for macOS); plus
22
23
  * packages that cannot build for the browser (none today; see packages.ts).
23
24
  * Each is a small module linked only into apps that import it (stage.ts).
24
25
  */
@@ -30,6 +31,8 @@ export const STAND_IN_FRAMEWORKS = [
30
31
  'Symbols', 'AudioToolbox', 'AuthenticationServices', 'SafariServices', 'WebKit',
31
32
  'CoreTransferable', 'Photos', 'LinkPresentation', 'Translation', 'FoundationModels',
32
33
  'AVFoundation', 'AVKit', 'QuickLook', 'zlib', 'CoreText', 'MapKit', 'WeatherKit', 'MediaPlayer',
34
+ // Linked only in a build for macOS (stage.ts): an iOS build keeps `canImport(AppKit)` false.
35
+ 'AppKit',
33
36
  ];
34
37
  /**
35
38
  * Frameworks the shim has as empty modules: an import compiles, a use does
@@ -1 +1 @@
1
- {"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../src/frameworks.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,wBAAwB,EAAE,WAAW;IAC9G,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;IACrF,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY;IACvE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa;IAC7D,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,QAAQ;IAC/E,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB;IACnF,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa;CACvF,CAAC;AACX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqC,EAAE,CAAC;AAErE,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE/G,MAAM,MAAM,GAAG,oMAAoM,CAAC;AAEpN,gFAAgF;AAChF,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACjE,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"frameworks.js","sourceRoot":"","sources":["../src/frameworks.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,uEAAuE;AAEvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,QAAQ,EAAE,UAAU,EAAE,wBAAwB,EAAE,WAAW;IAC9G,mBAAmB,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;IACrF,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY;IACvE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa;IAC7D,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,QAAQ;IAC/E,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB;IACnF,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa;IAC/F,6FAA6F;IAC7F,QAAQ;CACA,CAAC;AACX;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqC,EAAE,CAAC;AAErE,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAsB,CAAC,GAAG,mBAAmB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE/G,MAAM,MAAM,GAAG,oMAAoM,CAAC;AAEpN,gFAAgF;AAChF,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACjE,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,8 +1,14 @@
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
3
  export declare const DEFAULT_PACKAGE_PATH = "node_modules/@swiftbrowser/native/swift";
4
+ /**
5
+ * The Xcode target's folder: the App file, the asset catalog, the bundle.
6
+ * One folder for both platforms the target builds for (`ios/` once; the
7
+ * examples' projects were regenerated when it changed).
8
+ */
9
+ export declare const NATIVE_FOLDER = "apple";
4
10
  export interface NativeTemplateOptions {
5
- /** The app and target name; must match `APP_NAME`. (The target's folder is `ios/`.) */
11
+ /** The app and target name; must match `APP_NAME`. (The target's folder is `NATIVE_FOLDER`.) */
6
12
  name: string;
7
13
  /** Defaults to `com.example.<name>`. */
8
14
  bundleId?: string;
@@ -41,6 +47,17 @@ export declare function entitlements(bundleId: string, capabilities?: {
41
47
  icloud?: boolean;
42
48
  signInWithApple?: boolean;
43
49
  }): string;
50
+ /**
51
+ * The Mac build's entitlements (`CODE_SIGN_ENTITLEMENTS[sdk=macosx*]`): the
52
+ * App Sandbox with the network and the files the viewer picks, the JIT
53
+ * JavaScriptCore wants under the hardened runtime (notarization requires
54
+ * that runtime; a Mac App Store build keeps the same file), and the iOS
55
+ * capabilities the app has on a Mac too.
56
+ */
57
+ export declare function macEntitlements(bundleId: string, capabilities?: {
58
+ icloud?: boolean;
59
+ signInWithApple?: boolean;
60
+ }): string;
44
61
  /**
45
62
  * An Info.plist beside the generated keys (Xcode merges the two): the
46
63
  * container's Documents shown in the Files app under the app's name.
@@ -1,6 +1,8 @@
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, `ios/`
3
- // (the App file, the asset catalog and the `app.js` bundle), depending on the
2
+ // Xcode project with one app target, built for iOS and for macOS (one
3
+ // target, both platforms: `SUPPORTED_PLATFORMS`; docs/notes/macos.md), over a
4
+ // synchronized folder, `apple/` (the App file, the asset catalog and the
5
+ // `app.js` bundle), depending on the
4
6
  // SwiftBrowserNative Swift package at a relative path (by default the one
5
7
  // `@swiftbrowser/native` ships, under `node_modules`), and, at the project's
6
8
  // root, the npm project whose `npm run build` writes the bundle from `src/`
@@ -18,6 +20,12 @@ import { ACCENT_COLOR, APP_ICON, APP_NAME, CATALOG_INFO, WORKSPACE } from './tem
18
20
  const VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version;
19
21
  /** Where the Swift package is, relative to the project directory, when `init` is not told otherwise. */
20
22
  export const DEFAULT_PACKAGE_PATH = 'node_modules/@swiftbrowser/native/swift';
23
+ /**
24
+ * The Xcode target's folder: the App file, the asset catalog, the bundle.
25
+ * One folder for both platforms the target builds for (`ios/` once; the
26
+ * examples' projects were regenerated when it changed).
27
+ */
28
+ export const NATIVE_FOLDER = 'apple';
21
29
  /** The Xcode project and asset catalog alone: what the examples under Native/Examples regenerate. */
22
30
  export function nativeXcodeFiles(options) {
23
31
  const { name } = options;
@@ -29,13 +37,15 @@ export function nativeXcodeFiles(options) {
29
37
  { path: `${name}.xcodeproj/project.pbxproj`, contents: pbxproj(name, bundleId, packagePath, options.infoPlist ?? {}, { icloud: options.icloud === true, entitlements: options.icloud === true || options.signInWithApple === true }, (options.packages ?? []).map(optionalPackage)) },
30
38
  { path: `${name}.xcodeproj/project.xcworkspace/contents.xcworkspacedata`, contents: WORKSPACE },
31
39
  ...(options.icloud || options.signInWithApple
32
- ? [{ path: `ios/${name}.entitlements`, contents: entitlements(bundleId, { icloud: options.icloud === true, signInWithApple: options.signInWithApple === true }) }]
40
+ ? [{ path: `${NATIVE_FOLDER}/${name}.entitlements`, contents: entitlements(bundleId, { icloud: options.icloud === true, signInWithApple: options.signInWithApple === true }) }]
33
41
  : []),
34
- ...(options.icloud ? [{ path: 'ios/Info.plist', contents: infoPlistFile(name, bundleId) }] : []),
42
+ // The Mac build's entitlements, always: the sandbox and what the app needs in it.
43
+ { path: `${NATIVE_FOLDER}/${name}-macOS.entitlements`, contents: macEntitlements(bundleId, { icloud: options.icloud === true, signInWithApple: options.signInWithApple === true }) },
44
+ ...(options.icloud ? [{ path: `${NATIVE_FOLDER}/Info.plist`, contents: infoPlistFile(name, bundleId) }] : []),
35
45
  { path: `${name}.xcodeproj/xcshareddata/xcschemes/${name}.xcscheme`, contents: scheme(name) },
36
- { path: 'ios/Assets.xcassets/Contents.json', contents: json(CATALOG_INFO) },
37
- { path: 'ios/Assets.xcassets/AccentColor.colorset/Contents.json', contents: json(ACCENT_COLOR) },
38
- { path: 'ios/Assets.xcassets/AppIcon.appiconset/Contents.json', contents: json(APP_ICON) },
46
+ { path: `${NATIVE_FOLDER}/Assets.xcassets/Contents.json`, contents: json(CATALOG_INFO) },
47
+ { path: `${NATIVE_FOLDER}/Assets.xcassets/AccentColor.colorset/Contents.json`, contents: json(ACCENT_COLOR) },
48
+ { path: `${NATIVE_FOLDER}/Assets.xcassets/AppIcon.appiconset/Contents.json`, contents: json(APP_ICON) },
39
49
  ];
40
50
  }
41
51
  /** Every file of a new native app, relative to its directory. */
@@ -44,8 +54,8 @@ export function nativeProjectFiles(options) {
44
54
  const version = options.version ?? VERSION;
45
55
  return [
46
56
  ...nativeXcodeFiles(options),
47
- { path: `ios/${name}App.swift`, contents: appSource(name, (options.packages ?? []).map(optionalPackage)) },
48
- { path: 'ios/NativeFunctions.swift', contents: nativeFunctionsSource(name) },
57
+ { path: `${NATIVE_FOLDER}/${name}App.swift`, contents: appSource(name, (options.packages ?? []).map(optionalPackage)) },
58
+ { path: `${NATIVE_FOLDER}/NativeFunctions.swift`, contents: nativeFunctionsSource(name) },
49
59
  { path: 'package.json', contents: json(packageJson(name, version, (options.packages ?? []).map(optionalPackage))) },
50
60
  { path: 'tsconfig.json', contents: json(TSCONFIG) },
51
61
  { path: 'vite.config.ts', contents: VITE_CONFIG },
@@ -59,7 +69,7 @@ export function nativeProjectFiles(options) {
59
69
  export function nativeGitignoreLines(name) {
60
70
  return [
61
71
  '# SwiftBrowser Native: the bundle, the web build, and the dependencies',
62
- 'ios/app.js',
72
+ `${NATIVE_FOLDER}/app.js`,
63
73
  'dist-web/',
64
74
  'node_modules/',
65
75
  '# Xcode',
@@ -72,18 +82,19 @@ export function nativeGitignoreLines(name) {
72
82
  export function nativeReadme(name) {
73
83
  return `# ${name}
74
84
 
75
- One app, two targets. The views are SwiftUI and the logic is JavaScript: a
85
+ One app, three targets. The views are SwiftUI and the logic is JavaScript: a
76
86
  [\`@swiftbrowser/react\`](https://www.npmjs.com/package/@swiftbrowser/react) app
77
- in \`src\`, bundled into \`ios/app.js\` and run in JavaScriptCore by
87
+ in \`src\`, bundled into \`apple/app.js\` and run in JavaScriptCore by
78
88
  [SwiftBrowser Native](https://github.com/noya-app/SwiftBrowser/blob/main/Native/README.md)
79
- on iOS, and drawn in the browser by
89
+ on iOS and on macOS (one Xcode target builds for both), and drawn in the browser by
80
90
  [\`@swiftbrowser/web\`](https://www.npmjs.com/package/@swiftbrowser/web)'s renderer
81
91
  as a web page (\`web\`, built by Vite). The app is \`src/App.tsx\`; the two
82
92
  entries, \`src/index.tsx\` and \`web/main.tsx\`, only mount it.
83
93
 
84
94
  - \`npm install\` once: \`@swiftbrowser/native\` carries the Swift package the
85
95
  Xcode project depends on (\`node_modules/@swiftbrowser/native/swift\`).
86
- - \`npm run build\` writes \`ios/app.js\`; then open \`${name}.xcodeproj\` and run.
96
+ - \`npm run build\` writes \`apple/app.js\`; then open \`${name}.xcodeproj\` and run it on
97
+ a simulator, an iPhone or the Mac itself (the scheme's destination).
87
98
  - \`npm run dev\` serves the bundle with rebuild on save: enable the
88
99
  \`SB_DEV_SERVER\` variable in the scheme's Run action and the running app
89
100
  refreshes on every save, keeping its state (React Fast Refresh).
@@ -91,7 +102,7 @@ entries, \`src/index.tsx\` and \`web/main.tsx\`, only mount it.
91
102
  iPhone frame on a desktop, full screen on a phone); \`npm run build:web\`
92
103
  writes it to \`dist-web\` for any static host.
93
104
 
94
- The native side is the \`ios/\` folder (the Xcode target's): \`${name}App.swift\` runs the bundle, and
105
+ The native side is the \`apple/\` folder (the Xcode target's): \`${name}App.swift\` runs the bundle, and
95
106
  \`NativeFunctions.swift\` is where Swift the JavaScript calls goes. A function registered with
96
107
  \`NativeFunctions.register\` runs from \`callNative(name, params)\`, what Swift sends with
97
108
  \`NativeFunctions.send\` reaches \`onNativeEvent(name, listener)\`, and a SwiftUI view registered with
@@ -115,10 +126,12 @@ function appSource(name, packages = []) {
115
126
  @main
116
127
  struct ${name}App: App {
117
128
  @State private var app = NativeApp()
129
+ #if os(iOS)
118
130
  // Remote notifications: the device token and the pushes delivered to the
119
131
  // app, for \`registerForPush\` and \`onNotification\` in JavaScript (the
120
132
  // target also needs the Push Notifications capability).
121
133
  @UIApplicationDelegateAdaptor(NativeAppDelegate.self) private var delegate
134
+ #endif
122
135
 
123
136
  init() {
124
137
  // Swift the JavaScript calls (NativeFunctions.swift), registered before the bundle loads.
@@ -169,7 +182,11 @@ import SwiftUI
169
182
  func registerNativeFunctions() {
170
183
  // The device's name, as an example to replace: \`await callNative('deviceName')\`.
171
184
  NativeFunctions.registerSync("deviceName") { _ in
185
+ #if canImport(UIKit)
172
186
  .string(UIDevice.current.name)
187
+ #else
188
+ .string(Host.current().localizedName ?? "Mac")
189
+ #endif
173
190
  }
174
191
 
175
192
  // Swift reporting on its own: \`onNativeEvent('lowPower', (on) => ...)\` hears every change.
@@ -190,10 +207,10 @@ function packageJson(name, version, packages = []) {
190
207
  private: true,
191
208
  version: '1.0.0',
192
209
  type: 'module',
193
- description: `The ${name} app: bundled for ${name}.xcodeproj (ios/) and built as a web page (web/).`,
210
+ description: `The ${name} app: bundled for ${name}.xcodeproj (${NATIVE_FOLDER}/, iOS and macOS) and built as a web page (web/).`,
194
211
  scripts: {
195
- build: 'swiftbrowser-native build src/index.tsx --out ios/app.js --minify',
196
- dev: 'swiftbrowser-native dev src/index.tsx --out ios/app.js --sourcemap',
212
+ build: `swiftbrowser-native build src/index.tsx --out ${NATIVE_FOLDER}/app.js --minify`,
213
+ dev: `swiftbrowser-native dev src/index.tsx --out ${NATIVE_FOLDER}/app.js --sourcemap`,
197
214
  'build:web': 'vite build',
198
215
  'dev:web': 'vite',
199
216
  typecheck: 'tsc --noEmit -p tsconfig.json',
@@ -297,7 +314,10 @@ function webIndexHtml(name) {
297
314
  // The preview's device (src/deviceFrame.ts in @swiftbrowser/web): ?device=, else the last one picked.
298
315
  var frame = new URLSearchParams(location.search).get('device');
299
316
  try { frame = frame || localStorage.getItem('sb-device-frame'); } catch (e) {}
300
- document.documentElement.setAttribute('data-sb-frame', frame === 'ipad' || frame === 'none' ? frame : 'iphone');
317
+ frame = frame === 'ipad' || frame === 'mac' || frame === 'none' ? frame : 'iphone';
318
+ document.documentElement.setAttribute('data-sb-frame', frame);
319
+ // The platform the renderer draws (docs/notes/macos.md), so the Mac's styles apply from the first paint.
320
+ document.documentElement.setAttribute('data-sb-platform', frame === 'mac' ? 'macos' : 'ios');
301
321
  // ?toolbar=0: the toolbar's close button hid it (src/deviceFrame.ts).
302
322
  if (new URLSearchParams(location.search).get('toolbar') === '0') document.documentElement.setAttribute('data-sb-toolbar', 'hidden');
303
323
  })();
@@ -419,7 +439,7 @@ try {
419
439
  } else {
420
440
  // A desktop: the toolbar's Device picker draws the app in an iPhone, an
421
441
  // iPad or no device, remembered for the next visit (?device= picks one).
422
- installDeviceFrame(mounted.renderer);
442
+ installDeviceFrame(mounted);
423
443
  }
424
444
  } catch (error) {
425
445
  status.textContent = error instanceof Error ? error.message : String(error);
@@ -496,10 +516,12 @@ function pbxproj(name, bundleId, packagePath, infoPlist, capabilities = { icloud
496
516
  ['GCC_WARN_UNINITIALIZED_AUTOS', 'YES_AGGRESSIVE'],
497
517
  ['IPHONEOS_DEPLOYMENT_TARGET', '17.0'],
498
518
  ['LOCALIZATION_PREFERS_STRING_CATALOGS', 'YES'],
519
+ ['MACOSX_DEPLOYMENT_TARGET', '14.0'],
499
520
  ['MTL_ENABLE_DEBUG_INFO', debug ? 'INCLUDE_SOURCE' : 'NO'],
500
521
  ['MTL_FAST_MATH', 'YES'],
501
522
  ...(debug ? [['ONLY_ACTIVE_ARCH', 'YES']] : []),
502
- ['SDKROOT', 'iphoneos'],
523
+ // One target for both platforms (Xcode 14's multiplatform app): the SDK follows the destination.
524
+ ['SDKROOT', 'auto'],
503
525
  ...(debug
504
526
  ? [
505
527
  ['SWIFT_ACTIVE_COMPILATION_CONDITIONS', '"DEBUG $(inherited)"'],
@@ -513,12 +535,17 @@ function pbxproj(name, bundleId, packagePath, infoPlist, capabilities = { icloud
513
535
  const targetSettings = settings([
514
536
  ['ASSETCATALOG_COMPILER_APPICON_NAME', 'AppIcon'],
515
537
  ['ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME', 'AccentColor'],
516
- ...(capabilities.entitlements ? [['CODE_SIGN_ENTITLEMENTS', `ios/${name}.entitlements`]] : []),
538
+ ...(capabilities.entitlements ? [['CODE_SIGN_ENTITLEMENTS', `${NATIVE_FOLDER}/${name}.entitlements`]] : []),
539
+ // The Mac build: its own entitlements (the sandbox, the JIT), the hardened
540
+ // runtime notarization asks for, and a Mac app's framework path.
541
+ [`"CODE_SIGN_ENTITLEMENTS[sdk=macosx*]"`, `"${NATIVE_FOLDER}/${name}-macOS.entitlements"`],
517
542
  ['CODE_SIGN_STYLE', 'Automatic'],
543
+ ['COMBINE_HIDPI_IMAGES', 'YES'],
518
544
  ['CURRENT_PROJECT_VERSION', '1'],
545
+ ['ENABLE_HARDENED_RUNTIME', 'YES'],
519
546
  ['ENABLE_PREVIEWS', 'YES'],
520
547
  ['GENERATE_INFOPLIST_FILE', 'YES'],
521
- ...(capabilities.icloud ? [['INFOPLIST_FILE', 'ios/Info.plist']] : []),
548
+ ...(capabilities.icloud ? [['INFOPLIST_FILE', `${NATIVE_FOLDER}/Info.plist`]] : []),
522
549
  ['INFOPLIST_KEY_CFBundleDisplayName', quoted(name)],
523
550
  ...Object.keys(infoPlist)
524
551
  .sort()
@@ -529,9 +556,13 @@ function pbxproj(name, bundleId, packagePath, infoPlist, capabilities = { icloud
529
556
  ['INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad', '"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"'],
530
557
  ['INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone', '"UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"'],
531
558
  ['LD_RUNPATH_SEARCH_PATHS', '(\n\t\t\t\t\t"$(inherited)",\n\t\t\t\t\t"@executable_path/Frameworks",\n\t\t\t\t)'],
559
+ ['"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]"', '(\n\t\t\t\t\t"$(inherited)",\n\t\t\t\t\t"@executable_path/../Frameworks",\n\t\t\t\t)'],
532
560
  ['MARKETING_VERSION', '1.0'],
533
561
  ['PRODUCT_BUNDLE_IDENTIFIER', quoted(bundleId)],
534
562
  ['PRODUCT_NAME', '"$(TARGET_NAME)"'],
563
+ ['SUPPORTED_PLATFORMS', '"iphoneos iphonesimulator macosx"'],
564
+ ['SUPPORTS_MACCATALYST', 'NO'],
565
+ ['SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD', 'NO'],
535
566
  ['SWIFT_EMIT_LOC_STRINGS', 'YES'],
536
567
  ['SWIFT_VERSION', '5.0'],
537
568
  ['TARGETED_DEVICE_FAMILY', '"1,2"'],
@@ -553,9 +584,9 @@ function pbxproj(name, bundleId, packagePath, infoPlist, capabilities = { icloud
553
584
  /* End PBXFileReference section */
554
585
 
555
586
  /* Begin PBXFileSystemSynchronizedRootGroup section */
556
- ${folder} /* ios */ = {
587
+ ${folder} /* ${NATIVE_FOLDER} */ = {
557
588
  isa = PBXFileSystemSynchronizedRootGroup;
558
- path = ios;
589
+ path = ${NATIVE_FOLDER};
559
590
  sourceTree = "<group>";
560
591
  };
561
592
  /* End PBXFileSystemSynchronizedRootGroup section */
@@ -575,7 +606,7 @@ function pbxproj(name, bundleId, packagePath, infoPlist, capabilities = { icloud
575
606
  ${mainGroup} = {
576
607
  isa = PBXGroup;
577
608
  children = (
578
- ${folder} /* ios */,
609
+ ${folder} /* ${NATIVE_FOLDER} */,
579
610
  ${products} /* Products */,
580
611
  );
581
612
  sourceTree = "<group>";
@@ -604,7 +635,7 @@ function pbxproj(name, bundleId, packagePath, infoPlist, capabilities = { icloud
604
635
  dependencies = (
605
636
  );
606
637
  fileSystemSynchronizedGroups = (
607
- ${folder} /* ios */,
638
+ ${folder} /* ${NATIVE_FOLDER} */,
608
639
  );
609
640
  name = ${name};
610
641
  packageProductDependencies = (
@@ -854,6 +885,54 @@ ${entries.join('\n')}
854
885
  </plist>
855
886
  `;
856
887
  }
888
+ /**
889
+ * The Mac build's entitlements (`CODE_SIGN_ENTITLEMENTS[sdk=macosx*]`): the
890
+ * App Sandbox with the network and the files the viewer picks, the JIT
891
+ * JavaScriptCore wants under the hardened runtime (notarization requires
892
+ * that runtime; a Mac App Store build keeps the same file), and the iOS
893
+ * capabilities the app has on a Mac too.
894
+ */
895
+ export function macEntitlements(bundleId, capabilities = {}) {
896
+ const container = `iCloud.${bundleId}`;
897
+ const entries = [
898
+ ` <key>com.apple.security.app-sandbox</key>
899
+ <true/>
900
+ <key>com.apple.security.cs.allow-jit</key>
901
+ <true/>
902
+ <key>com.apple.security.files.user-selected.read-write</key>
903
+ <true/>
904
+ <key>com.apple.security.network.client</key>
905
+ <true/>`,
906
+ ];
907
+ if (capabilities.signInWithApple) {
908
+ entries.push(` <key>com.apple.developer.applesignin</key>
909
+ <array>
910
+ <string>Default</string>
911
+ </array>`);
912
+ }
913
+ if (capabilities.icloud) {
914
+ entries.push(` <key>com.apple.developer.icloud-container-identifiers</key>
915
+ <array>
916
+ <string>${container}</string>
917
+ </array>
918
+ <key>com.apple.developer.icloud-services</key>
919
+ <array>
920
+ <string>CloudDocuments</string>
921
+ </array>
922
+ <key>com.apple.developer.ubiquity-container-identifiers</key>
923
+ <array>
924
+ <string>${container}</string>
925
+ </array>`);
926
+ }
927
+ return `<?xml version="1.0" encoding="UTF-8"?>
928
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
929
+ <plist version="1.0">
930
+ <dict>
931
+ ${entries.join('\n')}
932
+ </dict>
933
+ </plist>
934
+ `;
935
+ }
857
936
  /**
858
937
  * An Info.plist beside the generated keys (Xcode merges the two): the
859
938
  * container's Documents shown in the Files app under the app's name.
@@ -1 +1 @@
1
- {"version":3,"file":"nativeTemplate.js","sourceRoot":"","sources":["../src/nativeTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nativeTemplate.js","sourceRoot":"","sources":["../src/nativeTemplate.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,5 @@ export interface NativeWorkflowOptions {
14
14
  }
15
15
  /** A Cloudflare Pages project name from an app name: `WeatherApp` → `weather-app`. */
16
16
  export declare function pagesProjectName(name: string): string;
17
- /** The two workflow files, relative to the repository's root. */
17
+ /** The three workflow files, relative to the repository's root. */
18
18
  export declare function nativeWorkflowFiles(options: NativeWorkflowOptions): TemplateFile[];
@@ -1,8 +1,8 @@
1
1
  // The GitHub Actions workflows of a new native app (`swiftbrowser native init
2
- // --github`): two short callers of SwiftBrowser's reusable workflows, the
3
- // web page (sb-web.yml) and the ad hoc iOS build (sb-ios-adhoc.yml), pinned
4
- // to the release the app's @swiftbrowser packages are at, so the two move
5
- // together. They go in the repository's .github/workflows, which may be
2
+ // --github`): three short callers of SwiftBrowser's reusable workflows, the
3
+ // web page (sb-web.yml), the ad hoc iOS build (sb-ios-adhoc.yml) and the
4
+ // notarized Mac build (sb-macos.yml), pinned to the release the app's
5
+ // @swiftbrowser packages are at, so they move together. They go in the repository's .github/workflows, which may be
6
6
  // above the app's folder (a monorepo), naming the app's folder.
7
7
  import { readFileSync } from 'node:fs';
8
8
  const VERSION = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version;
@@ -18,7 +18,7 @@ export function pagesProjectName(name) {
18
18
  .replace(/^-+|-+$/g, '')
19
19
  .slice(0, 58);
20
20
  }
21
- /** The two workflow files, relative to the repository's root. */
21
+ /** The three workflow files, relative to the repository's root. */
22
22
  export function nativeWorkflowFiles(options) {
23
23
  const { name, bundleId } = options;
24
24
  const directory = options.directory.replace(/\/+$/, '') || '.';
@@ -29,6 +29,7 @@ export function nativeWorkflowFiles(options) {
29
29
  const file = (kind) => `.github/workflows/${atRoot ? kind : `${pagesProjectName(name)}-${kind}`}.yml`;
30
30
  const web = file('web');
31
31
  const ios = file('ios');
32
+ const macos = file('macos');
32
33
  const paths = (own) => (atRoot ? '' : `\n paths:\n - '${directory}/**'\n - ${own}`);
33
34
  const uses = (workflow) => `${WORKFLOWS_REPOSITORY}/.github/workflows/${workflow}@v${version}`;
34
35
  const directoryLine = atRoot ? '' : `\n directory: ${directory}`;
@@ -102,6 +103,43 @@ jobs:
102
103
  bundle-id: ${bundleId}${directoryLine}
103
104
  pages-project: ${project}
104
105
  secrets: inherit
106
+ `,
107
+ },
108
+ {
109
+ path: macos,
110
+ contents: `name: ${name} macOS build
111
+
112
+ # ${name} as a notarized Mac app, downloaded from
113
+ # https://mac.${project}.pages.dev: signed with the team's Developer ID,
114
+ # notarized by Apple and stapled, so it opens like any other download.
115
+ # SwiftBrowser's reusable sb-macos.yml does the work, at the release the
116
+ # app's @swiftbrowser packages are at: move the two together. By hand only,
117
+ # as a macOS runner costs ten Linux minutes a minute; add a push trigger
118
+ # with the app's paths to build on every change.
119
+ #
120
+ # Secrets: APPLE_TEAM_ID, APPLE_DEVID_P12_BASE64 and APPLE_DEVID_P12_PASSWORD
121
+ # (a Developer ID Application certificate), ASC_KEY_ID, ASC_ISSUER_ID and
122
+ # ASC_KEY_P8 (an App Store Connect API key), CLOUDFLARE_API_TOKEN and
123
+ # CLOUDFLARE_ACCOUNT_ID.
124
+
125
+ on:
126
+ workflow_dispatch:
127
+
128
+ concurrency:
129
+ group: ${pagesProjectName(name)}-macos
130
+ cancel-in-progress: false
131
+
132
+ permissions:
133
+ contents: read
134
+
135
+ jobs:
136
+ macos:
137
+ uses: ${uses('sb-macos.yml')}
138
+ with:
139
+ app: ${name}
140
+ bundle-id: ${bundleId}${directoryLine}
141
+ pages-project: ${project}
142
+ secrets: inherit
105
143
  `,
106
144
  },
107
145
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"nativeWorkflows.js","sourceRoot":"","sources":["../src/nativeWorkflows.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,wEAAwE;AACxE,gEAAgE;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,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;AAEvI,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAc5D,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC;SACxC,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,mBAAmB,CAAC,OAA8B;IAChE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,KAAK,GAAG,CAAC;IACjC,sEAAsE;IACtE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,qBAAqB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC;IACtH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,MAAM,KAAK,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,0BAA0B,SAAS,iBAAiB,GAAG,EAAE,CAAC,CAAC;IACjH,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAU,EAAE,CAAC,GAAG,oBAAoB,sBAAsB,QAAQ,KAAK,OAAO,EAAE,CAAC;IAC/G,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,SAAS,EAAE,CAAC;IACtE,OAAO;QACL;YACE,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,SAAS,IAAI;;IAEzB,IAAI;YACI,OAAO;;;;;;;;;sBASG,KAAK,CAAC,GAAG,CAAC;iBACf,KAAK,CAAC,GAAG,CAAC;;;;WAIhB,gBAAgB,CAAC,IAAI,CAAC;;;;;;;;;YASrB,IAAI,CAAC,YAAY,CAAC;WACnB,aAAa;uBACD,OAAO;;CAE7B;SACI;QACD;YACE,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,SAAS,IAAI;;IAEzB,IAAI;gBACQ,OAAO;;;;;;;;;;;;;;;;WAgBZ,gBAAgB,CAAC,IAAI,CAAC;;;;;;;;YAQrB,IAAI,CAAC,kBAAkB,CAAC;;aAEvB,IAAI;mBACE,QAAQ,GAAG,aAAa;uBACpB,OAAO;;CAE7B;SACI;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"nativeWorkflows.js","sourceRoot":"","sources":["../src/nativeWorkflows.ts"],"names":[],"mappings":"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"}
package/dist/project.d.ts CHANGED
@@ -53,6 +53,13 @@ export interface ResolvedApp {
53
53
  blockHosts?: string[];
54
54
  /** Whether ICU's collation tables ship (`collation` in swiftbrowser.json; default true). */
55
55
  collation: boolean;
56
+ /**
57
+ * The platform the app is built for (`--platform`, `platform` in
58
+ * swiftbrowser.json; docs/notes/macos.md): which `os()` condition holds in
59
+ * its sources and the idiom the page draws. `defines` carries
60
+ * `SWIFTBROWSER_MACOS` for `macos`.
61
+ */
62
+ platform: 'ios' | 'macos';
56
63
  defines: string[];
57
64
  /**
58
65
  * The Swift packages the Xcode target links (Package Dependencies), and
@@ -86,6 +93,8 @@ export declare const UNIT_TEST_PRODUCT_TYPE = "com.apple.product-type.bundle.uni
86
93
  export interface ResolveOptions {
87
94
  target?: string;
88
95
  configFile?: string;
96
+ /** The platform to build for (`--platform`), over the config's. */
97
+ platform?: 'ios' | 'macos';
89
98
  }
90
99
  /** `Guess The Flag` → `GuessTheFlag`; a leading digit gets an underscore. */
91
100
  export declare function moduleName(raw: string): string;
package/dist/project.js CHANGED
@@ -256,6 +256,7 @@ export async function resolveApp(input, options = {}) {
256
256
  swiftLanguageMode: config.swiftLanguageMode ?? (chosen.swiftVersion?.startsWith('6') ? '6' : swiftLanguageMode),
257
257
  locales,
258
258
  collation,
259
+ platform: 'ios',
259
260
  defines,
260
261
  packages: [...groupPackageProducts(chosen.packageDependencies ?? []), ...configPackages(config.packages ?? [], root)],
261
262
  origin: { kind: 'xcodeproj', project: projectPath, target: chosen.name },
@@ -284,6 +285,7 @@ export async function resolveApp(input, options = {}) {
284
285
  app.webPushKey = config.webPushKey;
285
286
  if (config.blockHosts?.length)
286
287
  app.blockHosts = config.blockHosts;
288
+ setPlatform(app, options.platform ?? config.platform);
287
289
  return finish(app);
288
290
  }
289
291
  const discovered = discoverByConvention(root);
@@ -309,6 +311,7 @@ export async function resolveApp(input, options = {}) {
309
311
  swiftLanguageMode,
310
312
  locales,
311
313
  collation,
314
+ platform: 'ios',
312
315
  defines,
313
316
  packages: configPackages(config.packages ?? [], root),
314
317
  origin: { kind: 'folder' },
@@ -326,8 +329,15 @@ export async function resolveApp(input, options = {}) {
326
329
  app.webPushKey = config.webPushKey;
327
330
  if (config.blockHosts?.length)
328
331
  app.blockHosts = config.blockHosts;
332
+ setPlatform(app, options.platform ?? config.platform);
329
333
  return finish(app);
330
334
  }
335
+ /** The app's platform, iOS unless asked, and the define that tells its sources (docs/notes/macos.md). */
336
+ function setPlatform(app, platform) {
337
+ app.platform = platform ?? 'ios';
338
+ if (app.platform === 'macos' && !app.defines.includes('SWIFTBROWSER_MACOS'))
339
+ app.defines = [...app.defines, 'SWIFTBROWSER_MACOS'];
340
+ }
331
341
  /**
332
342
  * The path as it exists on disk when it differs only in case: Xcode projects
333
343
  * made on macOS (a case-insensitive disk) may say `BucketList/` for a folder