vxrn 2.7.6 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/config/getBaseViteConfigOnly.mjs +1 -1
  2. package/dist/config/getBaseViteConfigOnly.mjs.map +1 -1
  3. package/dist/config/getBaseViteConfigOnly.native.js +1 -1
  4. package/dist/config/getBaseViteConfigOnly.native.js.map +1 -1
  5. package/dist/config/getOptimizeDeps.mjs +1 -1
  6. package/dist/config/getOptimizeDeps.mjs.map +1 -1
  7. package/dist/config/getOptimizeDeps.native.js +3 -1
  8. package/dist/config/getOptimizeDeps.native.js.map +1 -1
  9. package/dist/config/getReactNativePlugins.mjs +1 -2
  10. package/dist/config/getReactNativePlugins.mjs.map +1 -1
  11. package/dist/config/getReactNativePlugins.native.js +4 -2
  12. package/dist/config/getReactNativePlugins.native.js.map +1 -1
  13. package/dist/exports/prebuildWithoutExpo.mjs +26 -97
  14. package/dist/exports/prebuildWithoutExpo.mjs.map +1 -1
  15. package/dist/exports/prebuildWithoutExpo.native.js +47 -133
  16. package/dist/exports/prebuildWithoutExpo.native.js.map +1 -1
  17. package/dist/plugins/autoDepOptimizePlugin.mjs +5 -2
  18. package/dist/plugins/autoDepOptimizePlugin.mjs.map +1 -1
  19. package/dist/plugins/autoDepOptimizePlugin.native.js +10 -7
  20. package/dist/plugins/autoDepOptimizePlugin.native.js.map +1 -1
  21. package/dist/rn-commands/bundle/buildBundle.mjs +5 -4
  22. package/dist/rn-commands/bundle/buildBundle.mjs.map +1 -1
  23. package/dist/rn-commands/bundle/buildBundle.native.js +5 -4
  24. package/dist/rn-commands/bundle/buildBundle.native.js.map +1 -1
  25. package/dist/utils/createNativeDevEngine.mjs +30 -7
  26. package/dist/utils/createNativeDevEngine.mjs.map +1 -1
  27. package/dist/utils/createNativeDevEngine.native.js +64 -10
  28. package/dist/utils/createNativeDevEngine.native.js.map +1 -1
  29. package/package.json +27 -20
  30. package/src/config/getBaseViteConfigOnly.ts +1 -1
  31. package/src/config/getOptimizeDeps.ts +3 -1
  32. package/src/config/getReactNativePlugins.ts +8 -4
  33. package/src/config/ssrVendorOptimization.test.ts +115 -0
  34. package/src/exports/prebuildWithoutExpo.test.ts +62 -157
  35. package/src/exports/prebuildWithoutExpo.ts +31 -125
  36. package/src/plugins/autoDepOptimizeExternal.test.ts +101 -0
  37. package/src/plugins/autoDepOptimizePlugin.ts +12 -6
  38. package/src/plugins/rnCodegenPlugin.ts +1 -2
  39. package/src/rn-commands/bundle/buildBundle.ts +8 -7
  40. package/src/utils/createNativeDevEngine.test.ts +308 -9
  41. package/src/utils/createNativeDevEngine.ts +71 -29
  42. package/types/config/getOptimizeDeps.d.ts.map +1 -1
  43. package/types/config/getReactNativePlugins.d.ts +3 -2
  44. package/types/config/getReactNativePlugins.d.ts.map +1 -1
  45. package/types/exports/prebuildWithoutExpo.d.ts.map +1 -1
  46. package/types/plugins/autoDepOptimizePlugin.d.ts +1 -0
  47. package/types/plugins/autoDepOptimizePlugin.d.ts.map +1 -1
  48. package/types/plugins/rnCodegenPlugin.d.ts.map +1 -1
  49. package/types/rn-commands/bundle/buildBundle.d.ts +1 -1
  50. package/types/rn-commands/bundle/buildBundle.d.ts.map +1 -1
  51. package/types/utils/createNativeDevEngine.d.ts +3 -4
  52. package/types/utils/createNativeDevEngine.d.ts.map +1 -1
  53. package/src/plugins/autoDepOptimizePlugin.test.ts +0 -42
@@ -1 +1 @@
1
- {"version":3,"file":"prebuildWithoutExpo.js","names":[],"sources":["exports/prebuildWithoutExpo.js"],"sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport module from \"node:module\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport {\n validateNativeApp\n} from \"@vxrn/utils/nativeAppManifest\";\nimport FSExtra from \"fs-extra\";\nimport sharp from \"sharp\";\nimport { swiftPackageDirectories } from \"../utils/swiftPackageId\";\nconst requireVxrn = module.createRequire(import.meta.url);\nconst nativeProjectPatches = requireVxrn(\n \"../../native-project-patches.cjs\"\n);\nconst notificationsHost = nativeProjectPatches.ONE_NOTIFICATIONS;\nconst updatesHost = nativeProjectPatches.ONE_UPDATES;\nconst PORTRAIT_ORIENTATIONS = [\n \"UIInterfaceOrientationPortrait\",\n \"UIInterfaceOrientationPortraitUpsideDown\"\n];\nconst LANDSCAPE_ORIENTATIONS = [\n \"UIInterfaceOrientationLandscapeLeft\",\n \"UIInterfaceOrientationLandscapeRight\"\n];\nconst validatePrebuildApp = validateNativeApp;\nconst ANDROID_DENSITIES = {\n mdpi: 1,\n hdpi: 1.5,\n xhdpi: 2,\n xxhdpi: 3,\n xxxhdpi: 4\n};\nconst IOS_BUNDLE_PLACEHOLDER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\nconst ANDROID_PACKAGE_PLACEHOLDER = \"com.helloworld\";\nconst ANDROID_PACKAGE_PATH = \"com/helloworld\";\nfunction patchIosBundlePhase(project, updatesRuntimeVersion) {\n let patchedBundlePhases = 0;\n const patchedProject = project.replace(\n /shellScript = (\"(?:\\\\.|[^\"\\\\])*\");/g,\n (assignment, serializedScript) => {\n let script;\n try {\n script = JSON.parse(serializedScript);\n } catch {\n return assignment;\n }\n if (typeof script !== \"string\" || !script.includes(\"react-native-xcode.sh\")) {\n return assignment;\n }\n let patched = script;\n patched = nativeProjectPatches.addSetCliPathToBundleReactNativeShellScript(patched);\n patched = nativeProjectPatches.addPodHermescToBundleReactNativeShellScript(patched);\n patched = nativeProjectPatches.addDepsPatchToBundleReactNativeShellScript(patched);\n if (!patched.includes(\"[vxrn/one] React Native now defaults CLI_PATH\") || !patched.includes(\"[vxrn/one] use the hermes-engine pod\") || !patched.includes(\"[vxrn/one] ensure patches are applied\")) {\n throw new Error(\"[vxrn] failed to apply required iOS bundle phase patches\");\n }\n if (updatesRuntimeVersion !== void 0) {\n patched = nativeProjectPatches.addEmbeddedUpdatesManifestToBundleReactNativeShellScript(\n patched,\n updatesRuntimeVersion\n );\n if (!patched.includes(\n \"[vxrn/one] the embedded update manifest lands beside the release bundle\"\n )) {\n throw new Error(\"[vxrn] failed to apply the iOS embedded updates manifest patch\");\n }\n }\n patchedBundlePhases++;\n return `shellScript = ${JSON.stringify(patched)};`;\n }\n );\n if (patchedBundlePhases !== 1) {\n throw new Error(\n `[vxrn] expected one iOS React Native bundle phase, found ${patchedBundlePhases}`\n );\n }\n return patchedProject;\n}\nfunction escapeXml(value) {\n return value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\nconst SCENE_DELEGATE_FILE_REF_ID = \"1A2B3C4D5E6F7A8B9C0D1E2F\";\nconst SCENE_DELEGATE_BUILD_FILE_ID = \"2B3C4D5E6F7A8B9C0D1E2F1A\";\nconst PUSH_ENTITLEMENTS_FILE_REF_ID = \"3C4D5E6F7A8B9C0D1E2F1A2B\";\nfunction renderSceneDelegateSwift(appName) {\n return `import UIKit\nimport React\nimport React_RCTAppDelegate\nimport ReactAppDependencyProvider\n\n// owns the window and the react native root. with a scene manifest the\n// system creates this delegate per foreground scene instead of asking the\n// app delegate for a window, which is what the xcode 27 sdk requires.\nclass SceneDelegate: UIResponder, UIWindowSceneDelegate {\n var window: UIWindow?\n\n func scene(\n _ scene: UIScene,\n willConnectTo session: UISceneSession,\n options connectionOptions: UIScene.ConnectionOptions\n ) {\n guard let windowScene = scene as? UIWindowScene else { return }\n guard let appDelegate = UIApplication.shared.delegate as? AppDelegate,\n let factory = appDelegate.reactNativeFactory else { return }\n\n let window = UIWindow(windowScene: windowScene)\n self.window = window\n\n // cold-start links arrive in connectionOptions under scenes, never in\n // the app launchOptions, so they are translated into the launchOptions\n // shape RCTLinkingManager.getInitialURL reads.\n var launchOptions: [UIApplication.LaunchOptionsKey: Any] = [:]\n if let url = connectionOptions.urlContexts.first?.url {\n launchOptions[.url] = url\n }\n if let activity = connectionOptions.userActivities.first(where: {\n $0.activityType == NSUserActivityTypeBrowsingWeb\n }) {\n launchOptions[.userActivityDictionary] = [\n \"UIApplicationLaunchOptionsUserActivityTypeKey\": activity.activityType,\n \"UIApplicationLaunchOptionsUserActivityKey\": activity,\n ]\n }\n\n factory.startReactNative(\n withModuleName: \"${appName}\",\n in: window,\n launchOptions: launchOptions\n )\n }\n\n func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {\n guard let url = URLContexts.first?.url else { return }\n RCTLinkingManager.application(UIApplication.shared, open: url, options: [:])\n }\n\n func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {\n RCTLinkingManager.application(\n UIApplication.shared,\n continue: userActivity,\n restorationHandler: { _ in }\n )\n }\n}\n`;\n}\nfunction insertAfterLine(haystack, anchor, insertion) {\n const anchorIndex = haystack.indexOf(anchor);\n if (anchorIndex === -1) return haystack;\n const lineEnd = haystack.indexOf(\"\\n\", anchorIndex);\n if (lineEnd === -1) return `${haystack}\n${insertion}`;\n return `${haystack.slice(0, lineEnd + 1)}${insertion}\n${haystack.slice(lineEnd + 1)}`;\n}\nfunction patchIosInfoPlistSceneManifest(rendered) {\n const anchor = \"\t<key>LSRequiresIPhoneOS</key>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] prebuild template Info.plist lost its LSRequiresIPhoneOS anchor\"\n );\n }\n return rendered.replace(\n anchor,\n `\t<key>UIApplicationSceneManifest</key>\n\t<dict>\n\t\t<key>UIApplicationSupportsMultipleScenes</key>\n\t\t<false/>\n\t\t<key>UISceneConfigurations</key>\n\t\t<dict>\n\t\t\t<key>UIWindowSceneSessionRoleApplication</key>\n\t\t\t<array>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>UISceneConfigurationName</key>\n\t\t\t\t\t<string>Default Configuration</string>\n\t\t\t\t\t<key>UISceneDelegateClassName</key>\n\t\t\t\t\t<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>\n\t\t\t\t</dict>\n\t\t\t</array>\n\t\t</dict>\n\t</dict>\n${anchor}`\n );\n}\nfunction patchIosAppDelegateSceneLifecycle(rendered, appName, backgroundTasks, appIntents) {\n const anchor = `@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n var window: UIWindow?\n\n var reactNativeDelegate: ReactNativeDelegate?\n var reactNativeFactory: RCTReactNativeFactory?\n\n func application(\n _ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil\n ) -> Bool {\n let delegate = ReactNativeDelegate()\n let factory = RCTReactNativeFactory(delegate: delegate)\n delegate.dependencyProvider = RCTAppDependencyProvider()\n\n reactNativeDelegate = delegate\n reactNativeFactory = factory\n\n window = UIWindow(frame: UIScreen.main.bounds)\n\n factory.startReactNative(\n withModuleName: \"${appName}\",\n in: window,\n launchOptions: launchOptions\n )\n\n return true\n }\n}`;\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] prebuild template AppDelegate.swift changed shape: cannot move the RN root to the scene delegate\"\n );\n }\n return rendered.replace(\n anchor,\n `@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n var reactNativeDelegate: ReactNativeDelegate?\n var reactNativeFactory: RCTReactNativeFactory?\n\n func application(\n _ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil\n ) -> Bool {\n let delegate = ReactNativeDelegate()\n let factory = RCTReactNativeFactory(delegate: delegate)\n delegate.dependencyProvider = RCTAppDependencyProvider()\n reactNativeDelegate = delegate\n reactNativeFactory = factory\n${backgroundTasks ? ` OneBackgroundTasksRegisterHost(factory, launchOptions)\n` : \"\"}${appIntents ? ` OneAppIntentsRegisterHost(factory, launchOptions)\n` : \"\"} return true\n }\n}`\n );\n}\nconst ONE_BRIDGING_HEADER_NAME = \"One-Bridging-Header.h\";\nfunction renderOneBridgingHeader(app) {\n const imports = [nativeProjectPatches.ONE_LAUNCH_SCREEN.bridgingHeaderImport];\n if (app.updates !== void 0) imports.push(updatesHost.bridgingHeaderImport);\n if (app.ios?.backgroundTasks !== void 0) imports.push('#import \"OneBackgroundTasksBridge.h\"');\n if (app.ios?.appIntents !== void 0) imports.push('#import \"OneAppIntentsBridge.h\"');\n return `// generated by one prebuild: exposes One's c entry points to AppDelegate\n// without importing the One module.\n${imports.join(\"\\n\")}\n`;\n}\nfunction generateOneBridgingHeader(dest, app) {\n FSExtra.writeFileSync(\n path.join(dest, app.name, ONE_BRIDGING_HEADER_NAME),\n renderOneBridgingHeader(app)\n );\n}\nfunction patchIosPbxprojOneBridgingHeader(project, appName) {\n const anchor = `INFOPLIST_FILE = ${appName}/Info.plist;`;\n const setting = `SWIFT_OBJC_BRIDGING_HEADER = \"${appName}/${ONE_BRIDGING_HEADER_NAME}\";`;\n const occurrences = project.split(anchor).length - 1;\n if (occurrences !== 2) {\n throw new Error(\n \"[vxrn] prebuild template project.pbxproj changed shape: cannot point the app target at the One bridging header\"\n );\n }\n return project.split(anchor).join(`${anchor}\n\t\t\t\t${setting}`);\n}\nfunction patchIosPbxprojSceneDelegate(rendered, appName) {\n const edits = [\n [\n \"/* AppDelegate.swift in Sources */ = {isa = PBXBuildFile;\",\n `\t\t${SCENE_DELEGATE_BUILD_FILE_ID} /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${SCENE_DELEGATE_FILE_REF_ID} /* SceneDelegate.swift */; };`\n ],\n [\n \"/* AppDelegate.swift */ = {isa = PBXFileReference;\",\n `\t\t${SCENE_DELEGATE_FILE_REF_ID} /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SceneDelegate.swift; path = ${appName}/SceneDelegate.swift; sourceTree = \"<group>\"; };`\n ],\n [\n \"/* AppDelegate.swift */,\",\n `\t\t\t\t${SCENE_DELEGATE_FILE_REF_ID} /* SceneDelegate.swift */,`\n ],\n [\n \"/* AppDelegate.swift in Sources */,\",\n `\t\t\t\t${SCENE_DELEGATE_BUILD_FILE_ID} /* SceneDelegate.swift in Sources */,`\n ]\n ];\n let patched = rendered;\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(\n `[vxrn] prebuild template project.pbxproj lost its AppDelegate.swift anchor (${anchor})`\n );\n }\n patched = next;\n }\n return patched;\n}\nfunction patchIosPbxprojAppIntents(rendered, appName) {\n const name = \"OneAppIntents.swift\";\n const fileRef = pbxprojId(\"one-app-intents-file\");\n const buildFile = pbxprojId(\"one-app-intents-build\");\n const edits = [\n [\n \"/* AppDelegate.swift in Sources */ = {isa = PBXBuildFile;\",\n `\t\t${buildFile} /* ${name} in Sources */ = {isa = PBXBuildFile; fileRef = ${fileRef} /* ${name} */; };`\n ],\n [\n \"/* AppDelegate.swift */ = {isa = PBXFileReference;\",\n `\t\t${fileRef} /* ${name} */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ${name}; path = ${appName}/${name}; sourceTree = \"<group>\"; };`\n ],\n [\"/* AppDelegate.swift */,\", `\t\t\t\t${fileRef} /* ${name} */,`],\n [\"/* AppDelegate.swift in Sources */,\", `\t\t\t\t${buildFile} /* ${name} in Sources */,`]\n ];\n let patched = rendered;\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(`[vxrn] prebuild template project.pbxproj lost its AppDelegate.swift anchor (${anchor})`);\n }\n patched = next;\n }\n return patched;\n}\nfunction swiftLiteral(value) {\n return JSON.stringify(value).replace(/\\\\u([0-9a-fA-F]{4})/g, (_match, hex) => `\\\\u{${hex}}`);\n}\nfunction swiftShortcutPhrase(value) {\n return `\"${value.split(\"{app}\").map((part) => swiftLiteral(part).slice(1, -1)).join(\"\\\\(.applicationName)\")}\"`;\n}\nfunction renderIosAppIntentsSwift(actions) {\n const types = actions.map((action, index) => {\n const summaryTitle = swiftLiteral(action.title).slice(1, -1);\n const text = action.textParameterTitle === void 0 ? \"\" : `\n @Parameter(title: ${swiftLiteral(action.textParameterTitle)}) var text: String\n\n static var parameterSummary: some ParameterSummary {\n Summary(\"${summaryTitle} \\\\(\\\\.$text)\")\n }\n`;\n return `struct OneAppIntent${index}: AppIntent {\n static let title: LocalizedStringResource = ${swiftLiteral(action.title)}\n${text}\n func perform() async throws -> some IntentResult & ReturnsValue<String> {\n let result = try await oneAppIntentsRun(${swiftLiteral(action.id)}, ${text ? \"text\" : \"nil\"})\n return .result(value: result)\n }\n}`;\n });\n const shortcuts = actions.map((action, index) => ` AppShortcut(\n intent: OneAppIntent${index}(),\n phrases: [${swiftShortcutPhrase(action.shortcutPhrase)}],\n shortTitle: ${swiftLiteral(action.title)},\n systemImageName: \"bolt.fill\"\n )`).join(\"\\n\");\n return `import AppIntents\nimport Foundation\n\nprivate func oneAppIntentsRun(_ identifier: String, _ text: String?) async throws -> String {\n try await withCheckedThrowingContinuation { continuation in\n OneAppIntentsPerform(identifier, text) { result, error in\n if let error { continuation.resume(throwing: error) }\n else if let result { continuation.resume(returning: result) }\n else { continuation.resume(throwing: NSError(domain: \"OneAppIntents\", code: 3)) }\n }\n }\n}\n\n${types.join(\"\\n\\n\")}\n\nstruct OneAppShortcuts: AppShortcutsProvider {\n static var appShortcuts: [AppShortcut] {\n${shortcuts}\n }\n}\n`;\n}\nfunction fontFileName(font) {\n return path.basename(font);\n}\nfunction pbxprojId(seed) {\n return createHash(\"sha1\").update(seed).digest(\"hex\").slice(0, 24).toUpperCase();\n}\nconst GOOGLE_SERVICES_PLIST = \"GoogleService-Info.plist\";\nconst GOOGLE_SERVICES_VERSION = \"4.4.4\";\nfunction iosResourceFiles(app) {\n return [\n ...(app.fonts ?? []).map(fontFileName),\n ...app.ios?.googleServicesFile ? [GOOGLE_SERVICES_PLIST] : []\n ];\n}\nfunction patchIosPbxprojResources(rendered, appName, names) {\n let patched = rendered;\n for (const name of names) {\n const fileRef = pbxprojId(`one-resource-file:${name}`);\n const buildFile = pbxprojId(`one-resource-build:${name}`);\n const fileType = name.endsWith(\".plist\") ? \"text.plist.xml\" : \"file\";\n const edits = [\n [\n \"/* Images.xcassets in Resources */ = {isa = PBXBuildFile;\",\n `\t\t${buildFile} /* ${name} in Resources */ = {isa = PBXBuildFile; fileRef = ${fileRef} /* ${name} */; };`\n ],\n [\n \"/* Images.xcassets */ = {isa = PBXFileReference;\",\n `\t\t${fileRef} /* ${name} */ = {isa = PBXFileReference; lastKnownFileType = ${fileType}; name = ${name}; path = ${appName}/${name}; sourceTree = \"<group>\"; };`\n ],\n [\"/* Images.xcassets */,\", `\t\t\t\t${fileRef} /* ${name} */,`],\n [\"/* Images.xcassets in Resources */,\", `\t\t\t\t${buildFile} /* ${name} in Resources */,`]\n ];\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(\n `[vxrn] prebuild template project.pbxproj lost its Images.xcassets anchor (${anchor})`\n );\n }\n patched = next;\n }\n }\n return patched;\n}\nfunction copyAppResources({\n root,\n dest,\n platform,\n app\n}) {\n const copies = (app.fonts ?? []).map((font) => [\n font,\n platform === \"ios\" ? path.join(dest, app.name, fontFileName(font)) : path.join(dest, \"app\", \"src\", \"main\", \"assets\", \"fonts\", fontFileName(font))\n ]);\n const googleServices = platform === \"ios\" ? app.ios?.googleServicesFile : app.android?.googleServicesFile;\n if (googleServices) {\n copies.push([\n googleServices,\n platform === \"ios\" ? path.join(dest, app.name, GOOGLE_SERVICES_PLIST) : path.join(dest, \"app\", \"google-services.json\")\n ]);\n }\n for (const [file, target] of copies) {\n const source = path.resolve(root, file);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app names ${file}, which does not exist`);\n }\n FSExtra.mkdirSync(path.dirname(target), { recursive: true });\n FSExtra.copyFileSync(source, target);\n }\n}\nfunction patchIosPbxprojAppEntitlements(rendered, appName) {\n const edits = [\n [\n \"/* AppDelegate.swift */ = {isa = PBXFileReference;\",\n `\t\t${PUSH_ENTITLEMENTS_FILE_REF_ID} /* ${appName}.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = ${appName}.entitlements; path = ${appName}/${appName}.entitlements; sourceTree = \"<group>\"; };`\n ],\n [\n \"/* AppDelegate.swift */,\",\n `\t\t\t\t${PUSH_ENTITLEMENTS_FILE_REF_ID} /* ${appName}.entitlements */,`\n ]\n ];\n let patched = rendered;\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(\n `[vxrn] prebuild template project.pbxproj lost its AppDelegate.swift anchor (${anchor})`\n );\n }\n patched = next;\n }\n const setting = `PRODUCT_NAME = ${appName};`;\n if (!patched.includes(setting)) {\n throw new Error(\n \"[vxrn] prebuild template project.pbxproj lost its PRODUCT_NAME anchor\"\n );\n }\n return patched.split(setting).join(\n `${setting}\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = ${appName}/${appName}.entitlements;`\n );\n}\nfunction renderPlistValue(value, indent) {\n if (typeof value === \"string\") return `${indent}<string>${escapeXml(value)}</string>`;\n if (typeof value === \"boolean\") return `${indent}<${value}/>`;\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? `${indent}<integer>${value}</integer>` : `${indent}<real>${value}</real>`;\n }\n if (Array.isArray(value)) {\n return `${indent}<array>\n${value.map((item) => renderPlistValue(item, `${indent}\t`)).join(\"\\n\")}\n${indent}</array>`;\n }\n return `${indent}<dict>\n${renderPlistEntries(value, `${indent}\t`)}\n${indent}</dict>`;\n}\nfunction renderPlistEntries(entries, indent) {\n return Object.entries(entries).map(([key, value]) => `${indent}<key>${escapeXml(key)}</key>\n${renderPlistValue(value, indent)}`).join(\"\\n\");\n}\nfunction appEntitlements(app) {\n const modeled = {};\n if (app.notifications?.push === true || app.ios?.widgets?.pushNotifications) {\n modeled[\"aps-environment\"] = app.notifications?.apsEnvironment ?? notificationsHost.apsEnvironment;\n }\n if (app.ios?.widgets) {\n modeled[\"com.apple.security.application-groups\"] = [app.ios.widgets.appGroup];\n }\n if (app.ios?.associatedDomains?.length) {\n modeled[\"com.apple.developer.associated-domains\"] = app.ios.associatedDomains;\n }\n if (app.ios?.usesAppleSignIn) {\n modeled[\"com.apple.developer.applesignin\"] = [\"Default\"];\n }\n for (const key of Object.keys(app.ios?.entitlements ?? {})) {\n if (key in modeled) {\n throw new Error(\n `[vxrn] native.app.ios.entitlements sets ${key}, which native.app already writes: use its field`\n );\n }\n }\n return { ...modeled, ...app.ios?.entitlements };\n}\nfunction renderEntitlements(entries) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n${renderPlistEntries(entries, \"\t\")}\n</dict>\n</plist>\n`;\n}\nfunction patchAndroidMainApplicationUpdatesHost(rendered) {\n const anchor = \"import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] prebuild template MainApplication.kt changed shape: cannot point the ReactHost at One.Updates\"\n );\n }\n return rendered.replace(\n anchor,\n \"import com.margelo.nitro.one.OneUpdatesReactHost.getDefaultReactHost\"\n );\n}\nfunction escapeGradleString(value) {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\nfunction patchAndroidBuildGradleUpdatesManifest(rendered, runtimeVersion) {\n const anchor = \" autolinkLibrariesWithApp()\\n}\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the embedded updates manifest: expected the replaced react block in app/build.gradle\"\n );\n }\n const snippet = `${anchor}\n\n// [vxrn/one] the embedded update manifest lands beside the release bundle\ntasks.matching { it.name.startsWith(\"createBundle\") && it.name.endsWith(\"JsAndAssets\") }.configureEach { bundleTask ->\n // capture the output directory provider at configuration time, so the\n // action below holds no task reference at execution time.\n def bundleDir = bundleTask.jsBundleDir\n bundleTask.doLast {\n def manifestFile = new File(bundleDir.get().asFile, \"one-updates-embedded.json\")\n manifestFile.text = groovy.json.JsonOutput.toJson([\n id: java.util.UUID.randomUUID().toString(),\n createdAt: java.time.Instant.now().toString(),\n runtimeVersion: \"${escapeGradleString(runtimeVersion)}\",\n ])\n }\n}`;\n return rendered.replace(anchor, snippet);\n}\nfunction patchIosPbxprojWidgets(project, app) {\n const name = app.name;\n const bundleId = app.ios.bundleId;\n const deploymentTarget = app.ios.deploymentTarget || \"17.0\";\n const ids = {\n product: \"A10000000000000000000001\",\n target: \"A10000000000000000000002\",\n group: \"A10000000000000000000003\",\n sources: \"A10000000000000000000004\",\n resources: \"A10000000000000000000005\",\n frameworks: \"A10000000000000000000006\",\n embed: \"A10000000000000000000007\",\n dependency: \"A10000000000000000000008\",\n proxy: \"A10000000000000000000009\",\n debug: \"A1000000000000000000000A\",\n release: \"A1000000000000000000000B\",\n config: \"A1000000000000000000000C\",\n widgetSource: \"A1000000000000000000000D\",\n contract: \"A1000000000000000000000E\",\n plist: \"A1000000000000000000000F\",\n entitlements: \"A10000000000000000000010\",\n appEntitlements: \"A10000000000000000000011\",\n bridgeSwift: \"A10000000000000000000012\",\n bridgeObjc: \"A10000000000000000000013\",\n widgetBuild: \"A10000000000000000000014\",\n contractWidgetBuild: \"A10000000000000000000015\",\n contractAppBuild: \"A10000000000000000000016\",\n bridgeSwiftBuild: \"A10000000000000000000017\",\n bridgeObjcBuild: \"A10000000000000000000018\",\n embedBuild: \"A10000000000000000000019\"\n };\n const insert = (anchor, value) => {\n if (!project.includes(anchor))\n throw new Error(`[vxrn] widget target template anchor missing: ${anchor}`);\n project = project.replace(anchor, `${value}\n${anchor}`);\n };\n insert(\n \"/* End PBXBuildFile section */\",\n `\t\t${ids.widgetBuild} /* OneWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.widgetSource} /* OneWidget.swift */; };\n\t\t${ids.contractWidgetBuild} /* OneWidgetContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.contract} /* OneWidgetContract.swift */; };\n\t\t${ids.contractAppBuild} /* OneWidgetContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.contract} /* OneWidgetContract.swift */; };\n\t\t${ids.bridgeSwiftBuild} /* OneWidgetsBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.bridgeSwift} /* OneWidgetsBridge.swift */; };\n\t\t${ids.bridgeObjcBuild} /* OneWidgetsBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.bridgeObjc} /* OneWidgetsBridge.m */; };\n\t\t${ids.embedBuild} /* OneWidgets.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = ${ids.product} /* OneWidgets.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };`\n );\n insert(\n \"/* End PBXFileReference section */\",\n `\t\t${ids.product} /* OneWidgets.appex */ = {isa = PBXFileReference; explicitFileType = \"wrapper.app-extension\"; includeInIndex = 0; path = OneWidgets.appex; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t${ids.widgetSource} /* OneWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneWidget.swift; sourceTree = \"<group>\"; };\n\t\t${ids.contract} /* OneWidgetContract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OneWidgetContract.swift; path = ${name}/OneWidgetContract.swift; sourceTree = \"<group>\"; };\n\t\t${ids.plist} /* WidgetInfo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = WidgetInfo.plist; sourceTree = \"<group>\"; };\n\t\t${ids.entitlements} /* OneWidgets.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = OneWidgets.entitlements; sourceTree = \"<group>\"; };\n\t\t${ids.appEntitlements} /* OneAppWidgets.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = OneAppWidgets.entitlements; path = ${name}/OneAppWidgets.entitlements; sourceTree = \"<group>\"; };\n\t\t${ids.bridgeSwift} /* OneWidgetsBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OneWidgetsBridge.swift; path = ${name}/OneWidgetsBridge.swift; sourceTree = \"<group>\"; };\n\t\t${ids.bridgeObjc} /* OneWidgetsBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = OneWidgetsBridge.m; path = ${name}/OneWidgetsBridge.m; sourceTree = \"<group>\"; };`\n );\n insert(\n \"/* Begin PBXFrameworksBuildPhase section */\",\n `/* Begin PBXCopyFilesBuildPhase section */\n\t\t${ids.embed} /* Embed App Extensions */ = {isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = \"\"; dstSubfolderSpec = 13; files = (${ids.embedBuild} /* OneWidgets.appex in Embed App Extensions */, ); name = \"Embed App Extensions\"; runOnlyForDeploymentPostprocessing = 0; };\n/* End PBXCopyFilesBuildPhase section */\n`\n );\n insert(\n \"/* End PBXFrameworksBuildPhase section */\",\n `\t\t${ids.frameworks} /* Frameworks */ = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };`\n );\n insert(\n \"/* End PBXGroup section */\",\n `\t\t${ids.group} /* OneWidgets */ = {isa = PBXGroup; children = (${ids.widgetSource} /* OneWidget.swift */, ${ids.plist} /* WidgetInfo.plist */, ${ids.entitlements} /* OneWidgets.entitlements */, ); path = OneWidgets; sourceTree = \"<group>\"; };`\n );\n insert(\n \"/* End PBXNativeTarget section */\",\n `\t\t${ids.target} /* OneWidgets */ = {isa = PBXNativeTarget; buildConfigurationList = ${ids.config} /* Build configuration list for PBXNativeTarget \"OneWidgets\" */; buildPhases = (${ids.sources} /* Sources */, ${ids.frameworks} /* Frameworks */, ${ids.resources} /* Resources */, ); buildRules = (); dependencies = (); name = OneWidgets; productName = OneWidgets; productReference = ${ids.product} /* OneWidgets.appex */; productType = \"com.apple.product-type.app-extension\"; };`\n );\n insert(\n \"/* End PBXResourcesBuildPhase section */\",\n `\t\t${ids.resources} /* Resources */ = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };`\n );\n insert(\n \"/* End PBXSourcesBuildPhase section */\",\n `\t\t${ids.sources} /* Sources */ = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (${ids.widgetBuild} /* OneWidget.swift in Sources */, ${ids.contractWidgetBuild} /* OneWidgetContract.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };`\n );\n insert(\n \"/* Begin XCBuildConfiguration section */\",\n `/* Begin PBXContainerItemProxy section */\n\t\t${ids.proxy} /* PBXContainerItemProxy */ = {isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = ${ids.target}; remoteInfo = OneWidgets; };\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXTargetDependency section */\n\t\t${ids.dependency} /* PBXTargetDependency */ = {isa = PBXTargetDependency; target = ${ids.target} /* OneWidgets */; targetProxy = ${ids.proxy} /* PBXContainerItemProxy */; };\n/* End PBXTargetDependency section */\n`\n );\n const config = (id, mode) => `\t\t${id} /* ${mode} */ = {isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_ENTITLEMENTS = OneWidgets/OneWidgets.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = ${app.ios?.buildNumber || \"1\"}; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = OneWidgets/WidgetInfo.plist; IPHONEOS_DEPLOYMENT_TARGET = ${deploymentTarget}; MARKETING_VERSION = \"${app.version || \"1.0\"}\"; PRODUCT_BUNDLE_IDENTIFIER = ${bundleId}.widgets; PRODUCT_NAME = \"$(TARGET_NAME)\"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = \"iphoneos iphonesimulator\"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = \"${app.ios?.tablet ? \"1,2\" : \"1\"}\"; }; name = ${mode}; };`;\n insert(\n \"/* End XCBuildConfiguration section */\",\n `${config(ids.debug, \"Debug\")}\n${config(ids.release, \"Release\")}`\n );\n insert(\n \"/* End XCConfigurationList section */\",\n `\t\t${ids.config} /* Build configuration list for PBXNativeTarget \"OneWidgets\" */ = {isa = XCConfigurationList; buildConfigurations = (${ids.debug} /* Debug */, ${ids.release} /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; };`\n );\n const one = (anchor, value) => {\n if (!project.includes(anchor))\n throw new Error(`[vxrn] widget target template anchor missing: ${anchor}`);\n project = project.replace(anchor, `${anchor}\n${value}`);\n };\n one(\n \"13B07F961A680F5B00A75B9A /* \" + name + \".app */,\",\n `\t\t\t\t${ids.product} /* OneWidgets.appex */,`\n );\n one(\n \"13B07FAE1A68108700A75B9A /* \" + name + \" */,\",\n `\t\t\t\t${ids.group} /* OneWidgets */,`\n );\n one(\n \"761780EC2CA45674006654EE /* AppDelegate.swift */,\",\n `\t\t\t\t${ids.contract} /* OneWidgetContract.swift */,\n\t\t\t\t${ids.appEntitlements} /* OneAppWidgets.entitlements */,\n\t\t\t\t${ids.bridgeSwift} /* OneWidgetsBridge.swift */,\n\t\t\t\t${ids.bridgeObjc} /* OneWidgetsBridge.m */,`\n );\n one(\n \"761780ED2CA45674006654EE /* AppDelegate.swift in Sources */,\",\n `\t\t\t\t${ids.contractAppBuild} /* OneWidgetContract.swift in Sources */,\n\t\t\t\t${ids.bridgeSwiftBuild} /* OneWidgetsBridge.swift in Sources */,\n\t\t\t\t${ids.bridgeObjcBuild} /* OneWidgetsBridge.m in Sources */,`\n );\n one(\n \"13B07F861A680F5B00A75B9A /* \" + name + \" */,\",\n `\t\t\t\t${ids.target} /* OneWidgets */,`\n );\n one(\n \"13B07F8E1A680F5B00A75B9A /* Resources */,\",\n `\t\t\t\t${ids.embed} /* Embed App Extensions */,`\n );\n one(\n \"LastSwiftMigration = 1120;\\n\t\t\t\t\t};\",\n `\t\t\t\t\t${ids.target} = { CreatedOnToolsVersion = 16.0; LastSwiftMigration = 1600; };`\n );\n one(\"dependencies = (\", `\t\t\t\t${ids.dependency} /* PBXTargetDependency */,`);\n const appBundleSetting = `PRODUCT_BUNDLE_IDENTIFIER = \"${bundleId}\";`;\n if (project.split(appBundleSetting).length !== 3) {\n throw new Error(\"[vxrn] expected two app bundle settings for widget entitlements\");\n }\n project = project.replaceAll(\n appBundleSetting,\n `CODE_SIGN_ENTITLEMENTS = ${name}/OneAppWidgets.entitlements;\n\t\t\t\t${appBundleSetting}`\n );\n return project;\n}\nfunction generateSceneDelegate(args) {\n const { dest, platform, app } = args;\n if (platform !== \"ios\") return;\n FSExtra.writeFileSync(\n path.join(dest, app.name, \"SceneDelegate.swift\"),\n renderSceneDelegateSwift(app.name)\n );\n const entitlements = appEntitlements(app);\n if (Object.keys(entitlements).length && !app.ios?.widgets) {\n FSExtra.writeFileSync(\n path.join(dest, app.name, `${app.name}.entitlements`),\n renderEntitlements(entitlements)\n );\n }\n}\nfunction generateIosAppIntents(dest, platform, app) {\n if (platform !== \"ios\" || !app.ios?.appIntents) return;\n FSExtra.writeFileSync(\n path.join(dest, app.name, \"OneAppIntents.swift\"),\n renderIosAppIntentsSwift(app.ios.appIntents.actions)\n );\n}\nfunction generateIosWidgets(dest, app) {\n const widgets = app.ios?.widgets;\n if (!widgets) return;\n const appDir = path.join(dest, app.name);\n const extensionDir = path.join(dest, \"OneWidgets\");\n FSExtra.mkdirSync(extensionDir, { recursive: true });\n const entitlements = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\"><dict><key>com.apple.security.application-groups</key><array><string>${escapeXml(widgets.appGroup)}</string></array></dict></plist>\n`;\n FSExtra.writeFileSync(\n path.join(appDir, \"OneAppWidgets.entitlements\"),\n renderEntitlements(appEntitlements(app))\n );\n FSExtra.writeFileSync(path.join(extensionDir, \"OneWidgets.entitlements\"), entitlements);\n FSExtra.writeFileSync(\n path.join(extensionDir, \"WidgetInfo.plist\"),\n `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\"><dict>\n <key>CFBundleDevelopmentRegion</key><string>$(DEVELOPMENT_LANGUAGE)</string>\n <key>CFBundleDisplayName</key><string>${escapeXml(widgets.displayName)}</string>\n <key>CFBundleExecutable</key><string>$(EXECUTABLE_NAME)</string>\n <key>CFBundleIdentifier</key><string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>\n <key>CFBundleName</key><string>$(PRODUCT_NAME)</string>\n <key>CFBundlePackageType</key><string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>\n <key>CFBundleShortVersionString</key><string>${escapeXml(app.version || \"1.0\")}</string>\n <key>CFBundleVersion</key><string>${escapeXml(app.ios?.buildNumber || \"1\")}</string>\n <key>NSExtension</key><dict><key>NSExtensionPointIdentifier</key><string>com.apple.widgetkit-extension</string></dict>\n</dict></plist>\n`\n );\n FSExtra.writeFileSync(\n path.join(appDir, \"OneWidgetContract.swift\"),\n `import Foundation\nimport ActivityKit\n\nenum OneWidgetContract {\n static let appGroup = ${JSON.stringify(widgets.appGroup)}\n static let kind = ${JSON.stringify(widgets.kind)}\n static let dataKey = \"one.widget.data\"\n\n struct Data: Codable {\n let title: String\n let value: String\n let subtitle: String\n let layout: String?\n }\n\n struct Attributes: ActivityAttributes {\n struct ContentState: Codable, Hashable {\n let status: String\n let value: String\n let layout: String?\n }\n let title: String\n }\n}\n`\n );\n FSExtra.writeFileSync(\n path.join(extensionDir, \"OneWidget.swift\"),\n `import SwiftUI\nimport WidgetKit\nimport ActivityKit\n\nstruct OneWidgetNode: Decodable {\n let type: String\n let text: String?\n let style: Style?\n let children: [OneWidgetNode]?\n let systemName: String?\n let value: Double?\n let total: Double?\n let fill: String?\n let cornerRadius: Double?\n let url: String?\n\n struct Style: Decodable {\n let color: String?\n let backgroundColor: String?\n let fontSize: Double?\n let fontWeight: String?\n let fontDesign: String?\n let padding: Double?\n let borderRadius: Double?\n let spacing: Double?\n let width: Double?\n let height: Double?\n let opacity: Double?\n let lineLimit: Int?\n let alignment: String?\n }\n}\n\nstruct OneActivityView: Decodable {\n let lockScreen: OneWidgetNode\n let compactLeading: OneWidgetNode?\n let compactTrailing: OneWidgetNode?\n let minimal: OneWidgetNode?\n let expandedLeading: OneWidgetNode?\n let expandedTrailing: OneWidgetNode?\n let expandedBottom: OneWidgetNode?\n}\n\nprivate func oneDecode<T: Decodable>(_ value: String?, as type: T.Type) -> T? {\n guard let value, let data = value.data(using: .utf8) else { return nil }\n return try? JSONDecoder().decode(type, from: data)\n}\n\nprivate func oneColor(_ hex: String?) -> Color? {\n guard let hex, hex.count == 7, hex.first == \"#\",\n let rgb = Int(hex.dropFirst(), radix: 16) else { return nil }\n return Color(red: Double((rgb >> 16) & 255) / 255,\n green: Double((rgb >> 8) & 255) / 255,\n blue: Double(rgb & 255) / 255)\n}\n\nstruct OneWidgetRendered: View {\n let node: OneWidgetNode\n\n private var alignment: Alignment {\n switch node.style?.alignment {\n case \"leading\": .leading\n case \"trailing\": .trailing\n default: .center\n }\n }\n\n private var horizontalAlignment: HorizontalAlignment {\n switch node.style?.alignment {\n case \"center\": .center\n case \"trailing\": .trailing\n default: .leading\n }\n }\n\n private var weight: Font.Weight {\n switch node.style?.fontWeight {\n case \"medium\": .medium\n case \"semibold\": .semibold\n case \"bold\": .bold\n default: .regular\n }\n }\n\n private var design: Font.Design {\n switch node.style?.fontDesign {\n case \"rounded\": .rounded\n case \"serif\": .serif\n case \"monospaced\": .monospaced\n default: .default\n }\n }\n\n var body: some View {\n Group {\n switch node.type {\n case \"text\":\n Text(node.text ?? \"\")\n .font(.system(size: CGFloat(node.style?.fontSize ?? 16), weight: weight, design: design))\n case \"vstack\":\n VStack(alignment: horizontalAlignment, spacing: CGFloat(node.style?.spacing ?? 8)) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n case \"hstack\":\n HStack(spacing: CGFloat(node.style?.spacing ?? 8)) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n case \"zstack\":\n ZStack(alignment: alignment) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n case \"spacer\": Spacer(minLength: 0)\n case \"divider\": Divider()\n case \"image\":\n if let systemName = node.systemName {\n Image(systemName: systemName)\n .font(.system(size: CGFloat(node.style?.fontSize ?? 20), weight: weight))\n }\n case \"progress\":\n ProgressView(value: node.value ?? 0, total: node.total ?? 1)\n .tint(oneColor(node.style?.color))\n case \"gauge\":\n Gauge(value: node.value ?? 0, in: 0...(node.total ?? 1)) { EmptyView() }\n .gaugeStyle(.accessoryCircular)\n .tint(oneColor(node.style?.color))\n case \"circle\":\n Circle().fill(oneColor(node.fill) ?? .primary)\n case \"rectangle\":\n Rectangle().fill(oneColor(node.fill) ?? .primary)\n case \"rounded-rectangle\":\n RoundedRectangle(cornerRadius: CGFloat(node.cornerRadius ?? 8))\n .fill(oneColor(node.fill) ?? .primary)\n case \"link\":\n if let url = node.url.flatMap(URL.init(string:)) {\n Link(destination: url) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n }\n default: EmptyView()\n }\n }\n .foregroundColor(oneColor(node.style?.color))\n .lineLimit(node.style?.lineLimit)\n .frame(width: node.style?.width.map { CGFloat($0) },\n height: node.style?.height.map { CGFloat($0) },\n alignment: alignment)\n .opacity(node.style?.opacity ?? 1)\n .padding(CGFloat(node.style?.padding ?? 0))\n .background { if let fill = oneColor(node.style?.backgroundColor) { fill } }\n .clipShape(RoundedRectangle(cornerRadius: CGFloat(node.style?.borderRadius ?? 0)))\n }\n}\n\nstruct OneWidgetEntry: TimelineEntry {\n let date: Date\n let data: OneWidgetContract.Data\n}\n\nstruct OneWidgetProvider: TimelineProvider {\n func placeholder(in context: Context) -> OneWidgetEntry {\n OneWidgetEntry(date: .now, data: .init(title: ${JSON.stringify(widgets.displayName)}, value: \"\", subtitle: \"\", layout: nil))\n }\n\n func getSnapshot(in context: Context, completion: @escaping (OneWidgetEntry) -> Void) {\n completion(entry())\n }\n\n func getTimeline(in context: Context, completion: @escaping (Timeline<OneWidgetEntry>) -> Void) {\n completion(Timeline(entries: [entry()], policy: .never))\n }\n\n private func entry() -> OneWidgetEntry {\n let stored = UserDefaults(suiteName: OneWidgetContract.appGroup)?.data(forKey: OneWidgetContract.dataKey)\n let data = stored.flatMap { try? JSONDecoder().decode(OneWidgetContract.Data.self, from: $0) }\n ?? .init(title: ${JSON.stringify(widgets.displayName)}, value: \"\", subtitle: \"\", layout: nil)\n return OneWidgetEntry(date: .now, data: data)\n }\n}\n\nstruct OneWidget: Widget {\n var body: some WidgetConfiguration {\n StaticConfiguration(kind: OneWidgetContract.kind, provider: OneWidgetProvider()) { entry in\n Group {\n if let layout = oneDecode(entry.data.layout, as: OneWidgetNode.self) {\n OneWidgetRendered(node: layout)\n } else {\n VStack(alignment: .leading, spacing: 8) {\n Text(entry.data.title).font(.headline)\n Text(entry.data.value).font(.title2).bold()\n Text(entry.data.subtitle).font(.caption)\n }\n }\n }\n .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)\n .containerBackground(.fill.tertiary, for: .widget)\n }\n .configurationDisplayName(${JSON.stringify(widgets.displayName)})\n .description(${JSON.stringify(widgets.description)})\n .supportedFamilies([.systemSmall, .systemMedium])\n }\n}\n\nstruct OneLiveActivity: Widget {\n var body: some WidgetConfiguration {\n ActivityConfiguration(for: OneWidgetContract.Attributes.self) { context in\n Group {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self) {\n OneWidgetRendered(node: layout.lockScreen)\n } else {\n HStack {\n VStack(alignment: .leading) {\n Text(context.attributes.title).font(.headline)\n Text(context.state.status)\n }\n Spacer()\n Text(context.state.value).bold()\n }\n }\n }\n .padding()\n .activityBackgroundTint(.blue.opacity(0.2))\n } dynamicIsland: { context in\n DynamicIsland {\n DynamicIslandExpandedRegion(.leading) {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let leading = layout.expandedLeading {\n OneWidgetRendered(node: leading)\n } else {\n Text(context.attributes.title)\n }\n }\n DynamicIslandExpandedRegion(.trailing) {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let trailing = layout.expandedTrailing {\n OneWidgetRendered(node: trailing)\n } else {\n Text(context.state.value)\n }\n }\n DynamicIslandExpandedRegion(.bottom) {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self) {\n OneWidgetRendered(node: layout.expandedBottom ?? layout.lockScreen)\n } else {\n Text(context.state.status)\n }\n }\n } compactLeading: {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let leading = layout.compactLeading {\n OneWidgetRendered(node: leading)\n } else {\n Text(context.attributes.title)\n }\n } compactTrailing: {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let trailing = layout.compactTrailing {\n OneWidgetRendered(node: trailing)\n } else {\n Text(context.state.value)\n }\n } minimal: {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let minimal = layout.minimal {\n OneWidgetRendered(node: minimal)\n } else {\n Text(context.state.value)\n }\n }\n }\n }\n}\n\n@main\nstruct OneWidgetsBundle: WidgetBundle {\n var body: some Widget {\n OneWidget()\n OneLiveActivity()\n }\n}\n`\n );\n FSExtra.writeFileSync(\n path.join(appDir, \"OneWidgetsBridge.m\"),\n `#import <React/RCTBridgeModule.h>\n#import <React/RCTEventEmitter.h>\n\n@interface RCT_EXTERN_MODULE(OneWidgetsBridge, RCTEventEmitter)\nRCT_EXTERN_METHOD(writeWidget:(NSString *)title value:(NSString *)value subtitle:(NSString *)subtitle resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(writeView:(NSString *)layout resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(start:(NSString *)title status:(NSString *)status value:(NSString *)value push:(BOOL)push resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(startView:(NSString *)title layout:(NSString *)layout push:(BOOL)push resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(update:(NSString *)identifier status:(NSString *)status value:(NSString *)value resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(updateView:(NSString *)identifier layout:(NSString *)layout resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(end:(NSString *)identifier resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(pushToken:(NSString *)identifier resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\n@end\n`\n );\n FSExtra.writeFileSync(\n path.join(appDir, \"OneWidgetsBridge.swift\"),\n `import Foundation\nimport React\nimport WidgetKit\nimport ActivityKit\n\n@objc(OneWidgetsBridge)\nclass OneWidgetsBridge: RCTEventEmitter {\n private var tokenTasks: [String: Task<Void, Never>] = [:]\n\n override func supportedEvents() -> [String]! { [\"oneLiveActivityPushToken\"] }\n\n override func startObserving() {\n for activity in Activity<OneWidgetContract.Attributes>.activities {\n observeToken(activity)\n }\n }\n\n override func stopObserving() {\n for task in tokenTasks.values { task.cancel() }\n tokenTasks.removeAll()\n }\n\n private func observeToken(_ activity: Activity<OneWidgetContract.Attributes>) {\n guard tokenTasks[activity.id] == nil else { return }\n tokenTasks[activity.id] = Task { [weak self] in\n for await token in activity.pushTokenUpdates {\n self?.sendEvent(withName: \"oneLiveActivityPushToken\", body: [\n \"id\": activity.id,\n \"token\": token.map { String(format: \"%02x\", $0) }.joined(),\n ])\n }\n }\n }\n\n @objc(writeWidget:value:subtitle:resolver:rejecter:)\n func writeWidget(_ title: String, value: String, subtitle: String,\n resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {\n guard let defaults = UserDefaults(suiteName: OneWidgetContract.appGroup) else {\n reject(\"app_group\", \"Cannot open the configured App Group\", nil)\n return\n }\n do {\n defaults.set(try JSONEncoder().encode(OneWidgetContract.Data(title: title, value: value, subtitle: subtitle, layout: nil)),\n forKey: OneWidgetContract.dataKey)\n WidgetCenter.shared.reloadTimelines(ofKind: OneWidgetContract.kind)\n resolve(nil)\n } catch {\n reject(\"widget_write\", error.localizedDescription, error)\n }\n }\n\n @objc(writeView:resolver:rejecter:)\n func writeView(_ layout: String, resolver resolve: RCTPromiseResolveBlock,\n rejecter reject: RCTPromiseRejectBlock) {\n guard let defaults = UserDefaults(suiteName: OneWidgetContract.appGroup) else {\n reject(\"app_group\", \"Cannot open the configured App Group\", nil)\n return\n }\n do {\n defaults.set(try JSONEncoder().encode(OneWidgetContract.Data(title: \"\", value: \"\", subtitle: \"\", layout: layout)),\n forKey: OneWidgetContract.dataKey)\n WidgetCenter.shared.reloadTimelines(ofKind: OneWidgetContract.kind)\n resolve(nil)\n } catch {\n reject(\"widget_write\", error.localizedDescription, error)\n }\n }\n\n @objc(start:status:value:push:resolver:rejecter:)\n func start(_ title: String, status: String, value: String, push: Bool,\n resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {\n guard ActivityAuthorizationInfo().areActivitiesEnabled else {\n reject(\"activities_disabled\", \"Live Activities are disabled\", nil)\n return\n }\n do {\n let activity = try Activity<OneWidgetContract.Attributes>.request(\n attributes: .init(title: title),\n content: .init(state: .init(status: status, value: value, layout: nil), staleDate: nil),\n pushType: push ? .token : nil\n )\n observeToken(activity)\n resolve(activity.id)\n } catch {\n reject(\"activity_start\", error.localizedDescription, error)\n }\n }\n\n @objc(startView:layout:push:resolver:rejecter:)\n func startView(_ title: String, layout: String, push: Bool,\n resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {\n guard ActivityAuthorizationInfo().areActivitiesEnabled else {\n reject(\"activities_disabled\", \"Live Activities are disabled\", nil)\n return\n }\n do {\n let activity = try Activity<OneWidgetContract.Attributes>.request(\n attributes: .init(title: title),\n content: .init(state: .init(status: \"\", value: \"\", layout: layout), staleDate: nil),\n pushType: push ? .token : nil\n )\n observeToken(activity)\n resolve(activity.id)\n } catch {\n reject(\"activity_start\", error.localizedDescription, error)\n }\n }\n\n @objc(update:status:value:resolver:rejecter:)\n func update(_ identifier: String, status: String, value: String,\n resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n Task {\n await activity.update(.init(state: .init(status: status, value: value, layout: nil), staleDate: nil))\n resolve(nil)\n }\n }\n\n @objc(updateView:layout:resolver:rejecter:)\n func updateView(_ identifier: String, layout: String,\n resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n Task {\n await activity.update(.init(state: .init(status: \"\", value: \"\", layout: layout), staleDate: nil))\n resolve(nil)\n }\n }\n\n @objc(end:resolver:rejecter:)\n func end(_ identifier: String, resolver resolve: @escaping RCTPromiseResolveBlock,\n rejecter reject: @escaping RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n Task {\n await activity.end(nil, dismissalPolicy: .immediate)\n tokenTasks.removeValue(forKey: identifier)?.cancel()\n resolve(nil)\n }\n }\n\n @objc(pushToken:resolver:rejecter:)\n func pushToken(_ identifier: String, resolver resolve: RCTPromiseResolveBlock,\n rejecter reject: RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n if let data = activity.pushToken {\n resolve(data.map { String(format: \"%02x\", $0) }.joined())\n } else {\n resolve(NSNull())\n }\n }\n}\n`\n );\n}\nconst IPAD_APP_ICON_SIZES = [\n [\"20x20\", [\"1x\", \"2x\"]],\n [\"29x29\", [\"1x\", \"2x\"]],\n [\"40x40\", [\"1x\", \"2x\"]],\n [\"76x76\", [\"1x\", \"2x\"]],\n [\"83.5x83.5\", [\"2x\"]]\n];\nasync function generateAppIcons(args) {\n const { root, dest, platform, app } = args;\n if (!app.icon) return;\n if (platform === \"ios\") {\n const assetsDir = path.join(dest, app.name, \"Images.xcassets\");\n const template = JSON.parse(FSExtra.readFileSync(path.join(assetsDir, \"AppIcon.appiconset\", \"Contents.json\"), \"utf8\"));\n const icons = [\n [\"AppIcon\", app.icon],\n ...Object.entries(app.ios?.alternateIcons ?? {})\n ];\n for (const [name, icon] of icons) {\n const source2 = path.resolve(root, icon.source);\n if (!FSExtra.existsSync(source2)) {\n throw new Error(`[vxrn] native.app icon source does not exist: ${source2}`);\n }\n const metadata2 = await sharp(source2).metadata();\n if (metadata2.width !== metadata2.height || metadata2.width === void 0 || metadata2.width < 1024) {\n throw new Error(`[vxrn] native.app icon source must be a square image at least 1024px wide: ${source2}`);\n }\n const iconDir = path.join(assetsDir, `${name}.appiconset`);\n FSExtra.mkdirSync(iconDir, { recursive: true });\n const contents = structuredClone(template);\n if (app.ios?.tablet) {\n for (const [size, scales] of IPAD_APP_ICON_SIZES) {\n for (const scale of scales) contents.images.push({ idiom: \"ipad\", scale, size });\n }\n }\n for (const image of contents.images) {\n const points = Number.parseFloat(image.size.split(\"x\")[0]);\n const scale = Number.parseInt(image.scale, 10);\n const pixels = points * scale;\n const filename = image.idiom === \"ios-marketing\" ? \"icon-1024.png\" : `icon-${points}@${image.scale}.png`;\n image.filename = filename;\n await sharp(source2).rotate().resize(pixels, pixels, { fit: \"cover\" }).flatten({ background: icon.backgroundColor }).png().toFile(path.join(iconDir, filename));\n }\n FSExtra.writeFileSync(path.join(iconDir, \"Contents.json\"), `${JSON.stringify(contents, null, 2)}\n`);\n }\n return;\n }\n const source = path.resolve(root, app.icon.source);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.icon source does not exist: ${source}`);\n }\n const metadata = await sharp(source).metadata();\n if (metadata.width !== metadata.height || metadata.width === void 0 || metadata.width < 1024) {\n throw new Error(\"[vxrn] native.app.icon source must be a square image at least 1024px wide\");\n }\n for (const [density, multiplier] of Object.entries(ANDROID_DENSITIES)) {\n const pixels = 48 * multiplier;\n const iconDir = path.join(dest, \"app\", \"src\", \"main\", \"res\", `mipmap-${density}`);\n for (const filename of [\"ic_launcher.png\", \"ic_launcher_round.png\"]) {\n await sharp(source).rotate().resize(pixels, pixels, { fit: \"cover\" }).flatten({ background: app.icon.backgroundColor }).png().toFile(path.join(iconDir, filename));\n }\n }\n}\nasync function generateAdaptiveIcon(args) {\n const { root, dest, app } = args;\n const adaptiveIcon = app.android?.adaptiveIcon;\n if (!adaptiveIcon) return;\n const res = path.join(dest, \"app\", \"src\", \"main\", \"res\");\n const layers = {\n foreground: adaptiveIcon.foreground,\n background: adaptiveIcon.background,\n monochrome: adaptiveIcon.monochrome\n };\n for (const [layer, file] of Object.entries(layers)) {\n if (!file) continue;\n const source = path.resolve(root, file);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.android.adaptiveIcon.${layer} does not exist: ${source}`);\n }\n for (const [density, multiplier] of Object.entries(ANDROID_DENSITIES)) {\n const pixels = 108 * multiplier;\n await sharp(source).rotate().resize(pixels, pixels, { fit: \"cover\" }).png().toFile(path.join(res, `mipmap-${density}`, `ic_launcher_${layer}.png`));\n }\n }\n if (!adaptiveIcon.background) {\n FSExtra.writeFileSync(\n path.join(res, \"values\", \"ic_launcher_background.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"ic_launcher_background\">${adaptiveIcon.backgroundColor ?? \"#FFFFFF\"}</color>\n</resources>\n`\n );\n }\n const adaptiveXml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <background android:drawable=\"${adaptiveIcon.background ? \"@mipmap/ic_launcher_background\" : \"@color/ic_launcher_background\"}\"/>\n <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n${adaptiveIcon.monochrome ? ' <monochrome android:drawable=\"@mipmap/ic_launcher_monochrome\"/>\\n' : \"\"}</adaptive-icon>\n`;\n const anydpi = path.join(res, \"mipmap-anydpi-v26\");\n FSExtra.mkdirSync(anydpi, { recursive: true });\n for (const filename of [\"ic_launcher.xml\", \"ic_launcher_round.xml\"]) {\n FSExtra.writeFileSync(path.join(anydpi, filename), adaptiveXml);\n }\n}\nconst IOS_DARK_APPEARANCE = [{ appearance: \"luminosity\", value: \"dark\" }];\nfunction srgb(hex) {\n return {\n red: Number.parseInt(hex.slice(1, 3), 16) / 255,\n green: Number.parseInt(hex.slice(3, 5), 16) / 255,\n blue: Number.parseInt(hex.slice(5, 7), 16) / 255\n };\n}\nfunction xcodeColorSet(light, dark) {\n const entry = (hex) => {\n const { red, green, blue } = srgb(hex);\n return {\n color: {\n \"color-space\": \"srgb\",\n components: {\n red: red.toFixed(3),\n green: green.toFixed(3),\n blue: blue.toFixed(3),\n alpha: \"1.000\"\n }\n },\n idiom: \"universal\"\n };\n };\n return `${JSON.stringify(\n {\n colors: [\n entry(light),\n ...dark ? [{ appearances: IOS_DARK_APPEARANCE, ...entry(dark) }] : []\n ],\n info: { author: \"xcode\", version: 1 }\n },\n null,\n 2\n )}\n`;\n}\nfunction generateAccentColor(args) {\n const accent = args.app.ios?.accentColor;\n if (!accent) return;\n const colorDir = path.join(args.dest, args.app.name, \"Images.xcassets\", \"AccentColor.colorset\");\n FSExtra.mkdirSync(colorDir, { recursive: true });\n FSExtra.writeFileSync(\n path.join(colorDir, \"Contents.json\"),\n xcodeColorSet(accent.light, accent.dark)\n );\n}\nasync function generateSplashScreen(args) {\n const { root, dest, platform, app } = args;\n if (!app.splash) return;\n const cover = app.splash.resizeMode === \"cover\";\n const prepareArtwork = async (sourcePath, backgroundColor) => {\n const source = path.resolve(root, sourcePath);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.splash source does not exist: ${source}`);\n }\n const { width: sourceWidth, format } = await sharp(source).metadata();\n const density = format === \"svg\" && sourceWidth && !cover ? Math.min(2400, Math.ceil(72 * 4 * (app.splash?.width ?? 200) / sourceWidth)) : void 0;\n const image = sharp(source, density ? { density } : {}).rotate();\n const prepared = await (cover ? image : image.trim({ background: backgroundColor })).png().toBuffer({ resolveWithObject: true });\n if (!prepared.info.width || !prepared.info.height) {\n throw new Error(\"[vxrn] native.app.splash source must be an image\");\n }\n return prepared;\n };\n const { data: artwork, info: metadata } = await prepareArtwork(\n app.splash.source,\n app.splash.backgroundColor\n );\n const dark = app.splash.dark;\n const darkArtwork = dark?.source ? (await prepareArtwork(dark.source, dark.backgroundColor)).data : void 0;\n const artworkWidth = app.splash.width ?? 200;\n const artworkHeight = Number(\n (artworkWidth * (metadata.height / metadata.width)).toFixed(3)\n );\n const readBackground = (sourcePath) => {\n const source = path.resolve(root, sourcePath);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.splash backgroundImage does not exist: ${source}`);\n }\n return sharp(source).rotate().png().toBuffer({ resolveWithObject: true });\n };\n if (platform === \"ios\") {\n const appDir = path.join(dest, app.name);\n const assets = path.join(appDir, \"Images.xcassets\");\n const writeImageSet = async (name, light, dark2, pointWidth) => {\n const dir = path.join(assets, `${name}.imageset`);\n FSExtra.mkdirSync(dir, { recursive: true });\n const scales = pointWidth === void 0 ? [1] : [1, 2, 3];\n const images = [];\n for (const [variant, suffix, appearances] of [\n [light, \"\", void 0],\n [dark2, \"-dark\", IOS_DARK_APPEARANCE]\n ]) {\n if (!variant) continue;\n for (const scale of scales) {\n const filename = `${name.toLowerCase()}${suffix}${scale === 1 ? \"\" : `@${scale}x`}.png`;\n const output = sharp(variant);\n await (pointWidth === void 0 ? output : output.resize({ width: Math.round(pointWidth * scale) })).png().toFile(path.join(dir, filename));\n images.push({\n ...appearances ? { appearances } : {},\n filename,\n idiom: \"universal\",\n scale: `${scale}x`\n });\n }\n }\n FSExtra.writeFileSync(\n path.join(dir, \"Contents.json\"),\n `${JSON.stringify({ images, info: { author: \"xcode\", version: 1 } }, null, 2)}\n`\n );\n };\n await writeImageSet(\"Splash\", artwork, darkArtwork, cover ? void 0 : artworkWidth);\n const background2 = app.splash.backgroundImage ? await readBackground(app.splash.backgroundImage) : void 0;\n const darkBackground2 = dark?.backgroundImage ? (await readBackground(dark.backgroundImage)).data : void 0;\n if (background2) {\n await writeImageSet(\"SplashBackgroundImage\", background2.data, darkBackground2, void 0);\n }\n const colorDir = path.join(assets, \"SplashBackground.colorset\");\n FSExtra.mkdirSync(colorDir, { recursive: true });\n FSExtra.writeFileSync(\n path.join(colorDir, \"Contents.json\"),\n xcodeColorSet(app.splash.backgroundColor, dark?.backgroundColor)\n );\n const { red, green, blue } = srgb(app.splash.backgroundColor);\n FSExtra.writeFileSync(\n path.join(appDir, \"LaunchScreen.storyboard\"),\n `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15702\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"launch-controller\">\n <device id=\"retina6_12\" orientation=\"portrait\" appearance=\"light\"/>\n <dependencies>\n <deployment identifier=\"iOS\"/>\n <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15704\"/>\n <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n </dependencies>\n <scenes>\n <scene sceneID=\"launch-scene\">\n <objects>\n <viewController id=\"launch-controller\" sceneMemberID=\"viewController\">\n <view key=\"view\" contentMode=\"scaleToFill\" id=\"launch-view\">\n <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"390\" height=\"844\"/>\n <subviews>${background2 ? `\n <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFill\" image=\"SplashBackgroundImage\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"splash-background\"/>` : \"\"}\n <imageView userInteractionEnabled=\"NO\" contentMode=\"${cover ? \"scaleAspectFill\" : \"scaleAspectFit\"}\" image=\"Splash\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"splash-image\"/>\n </subviews>\n <color key=\"backgroundColor\" name=\"SplashBackground\"/>\n <constraints>${background2 ? `\n <constraint firstItem=\"splash-background\" firstAttribute=\"leading\" secondItem=\"launch-view\" secondAttribute=\"leading\" id=\"splash-background-leading\"/>\n <constraint firstItem=\"splash-background\" firstAttribute=\"trailing\" secondItem=\"launch-view\" secondAttribute=\"trailing\" id=\"splash-background-trailing\"/>\n <constraint firstItem=\"splash-background\" firstAttribute=\"top\" secondItem=\"launch-view\" secondAttribute=\"top\" id=\"splash-background-top\"/>\n <constraint firstItem=\"splash-background\" firstAttribute=\"bottom\" secondItem=\"launch-view\" secondAttribute=\"bottom\" id=\"splash-background-bottom\"/>` : \"\"}\n${cover ? ` <constraint firstItem=\"splash-image\" firstAttribute=\"leading\" secondItem=\"launch-view\" secondAttribute=\"leading\" id=\"splash-leading\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"trailing\" secondItem=\"launch-view\" secondAttribute=\"trailing\" id=\"splash-trailing\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"top\" secondItem=\"launch-view\" secondAttribute=\"top\" id=\"splash-top\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"bottom\" secondItem=\"launch-view\" secondAttribute=\"bottom\" id=\"splash-bottom\"/>` : ` <constraint firstItem=\"splash-image\" firstAttribute=\"centerX\" secondItem=\"launch-view\" secondAttribute=\"centerX\" id=\"splash-center-x\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"centerY\" secondItem=\"launch-view\" secondAttribute=\"centerY\" id=\"splash-center-y\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"width\" constant=\"${artworkWidth}\" id=\"splash-width\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"height\" constant=\"${artworkHeight}\" id=\"splash-height\"/>`}\n </constraints>\n </view>\n </viewController>\n <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"launch-responder\" sceneMemberID=\"firstResponder\"/>\n </objects>\n </scene>\n </scenes>\n <resources>\n <image name=\"Splash\" width=\"${cover ? metadata.width : artworkWidth}\" height=\"${cover ? metadata.height : artworkHeight}\"/>${background2 ? `\n <image name=\"SplashBackgroundImage\" width=\"${background2.info.width}\" height=\"${background2.info.height}\"/>` : \"\"}\n <namedColor name=\"SplashBackground\">\n <color red=\"${red}\" green=\"${green}\" blue=\"${blue}\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n </namedColor>\n </resources>\n</document>\n`\n );\n return;\n }\n const mainRes = path.join(dest, \"app\", \"src\", \"main\", \"res\");\n const drawable = path.join(mainRes, \"drawable\");\n const variants = [[artwork, \"drawable\"]];\n if (darkArtwork) variants.push([darkArtwork, \"drawable-night\"]);\n for (const [variantArtwork, drawablePrefix] of variants) {\n for (const [density, multiplier] of Object.entries(ANDROID_DENSITIES)) {\n const canvasSize = 288 * multiplier;\n const imageSize = Math.round(artworkWidth * multiplier);\n const contained = await sharp(variantArtwork).resize(imageSize, imageSize, {\n fit: \"contain\",\n background: { r: 0, g: 0, b: 0, alpha: 0 }\n }).png().toBuffer();\n const drawableDensity = path.join(mainRes, `${drawablePrefix}-${density}`);\n FSExtra.mkdirSync(drawableDensity, { recursive: true });\n await sharp({\n create: {\n width: canvasSize,\n height: canvasSize,\n channels: 4,\n background: { r: 0, g: 0, b: 0, alpha: 0 }\n }\n }).composite([\n {\n input: contained,\n left: Math.round((canvasSize - imageSize) / 2),\n top: Math.round((canvasSize - imageSize) / 2)\n }\n ]).png().toFile(path.join(drawableDensity, \"splash.png\"));\n }\n }\n const background = app.splash.backgroundImage ? await readBackground(app.splash.backgroundImage) : void 0;\n const darkBackground = dark?.backgroundImage ? (await readBackground(dark.backgroundImage)).data : void 0;\n if (background) {\n const nodpi = path.join(mainRes, \"drawable-nodpi\");\n FSExtra.mkdirSync(nodpi, { recursive: true });\n FSExtra.writeFileSync(path.join(nodpi, \"splash_background.png\"), background.data);\n if (darkBackground) {\n const nightNodpi = path.join(mainRes, \"drawable-night-nodpi\");\n FSExtra.mkdirSync(nightNodpi, { recursive: true });\n FSExtra.writeFileSync(\n path.join(nightNodpi, \"splash_background.png\"),\n darkBackground\n );\n }\n }\n FSExtra.writeFileSync(\n path.join(drawable, \"launch_screen.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item android:drawable=\"@color/splash_background\" />\n${background ? ` <item>\n <bitmap android:gravity=\"fill\" android:src=\"@drawable/splash_background\" />\n </item>\n` : \"\"} <item>\n <bitmap android:gravity=\"center\" android:src=\"@drawable/splash\" />\n </item>\n</layer-list>\n`\n );\n FSExtra.writeFileSync(\n path.join(mainRes, \"values\", \"colors.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"splash_background\">${app.splash.backgroundColor}</color>\n</resources>\n`\n );\n if (dark) {\n FSExtra.mkdirSync(path.join(mainRes, \"values-night\"), { recursive: true });\n FSExtra.writeFileSync(\n path.join(mainRes, \"values-night\", \"colors.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"splash_background\">${dark.backgroundColor}</color>\n</resources>\n`\n );\n }\n const stylesPath = path.join(mainRes, \"values\", \"styles.xml\");\n const styles = FSExtra.readFileSync(stylesPath, \"utf8\").replace(\n \" <!-- Customize your theme here. -->\",\n ' <item name=\"android:windowBackground\">@drawable/launch_screen</item>'\n );\n FSExtra.writeFileSync(stylesPath, styles);\n const stylesV31 = path.join(mainRes, \"values-v31\");\n FSExtra.mkdirSync(stylesV31, { recursive: true });\n if (!styles.includes(\"</style>\")) {\n throw new Error(\"[vxrn] prebuild template styles.xml lost its AppTheme </style> anchor\");\n }\n FSExtra.writeFileSync(\n path.join(stylesV31, \"styles.xml\"),\n styles.replace(\n \"</style>\",\n ` <item name=\"android:windowSplashScreenBackground\">@color/splash_background</item>\n <item name=\"android:windowSplashScreenAnimatedIcon\">@drawable/splash</item>\n </style>`\n )\n );\n}\nfunction renderPrebuildFile(args) {\n const { relativePath, content, platform, app, nitroWebImage } = args;\n const appName = app.name;\n const schemes = app.scheme === void 0 ? [] : Array.isArray(app.scheme) ? app.scheme : [app.scheme];\n let destRelativePath = transformPath(relativePath);\n if (platform === \"android\" && app.android) {\n const packagePath = app.android.applicationId.split(\".\").join(\"/\");\n destRelativePath = destRelativePath.split(ANDROID_PACKAGE_PATH).join(packagePath);\n }\n destRelativePath = destRelativePath.replace(/HelloWorld/g, appName).replace(/helloworld/g, appName.toLowerCase());\n if (content !== null) {\n let rendered = content;\n const replacements = [];\n if (platform === \"ios\" && app.ios) {\n replacements.push([IOS_BUNDLE_PLACEHOLDER, app.ios.bundleId]);\n }\n if (platform === \"android\" && app.android) {\n replacements.push([ANDROID_PACKAGE_PLACEHOLDER, app.android.applicationId]);\n }\n replacements.push(\n [\"Hello App Display Name\", app.displayName || appName],\n [\"HelloWorld\", appName],\n [\"helloworld\", appName.toLowerCase()]\n );\n for (const [find, value] of replacements) {\n rendered = rendered.split(find).join(value);\n }\n if (platform === \"ios\" && relativePath.endsWith(\"/Info.plist\")) {\n const stamps = [];\n if (schemes.length) {\n stamps.push(`\t<key>CFBundleURLTypes</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>CFBundleTypeRole</key>\n\t\t\t<string>Editor</string>\n\t\t\t<key>CFBundleURLSchemes</key>\n\t\t\t<array>\n${schemes.map((scheme) => `\t\t\t\t<string>${scheme}</string>`).join(\"\\n\")}\n\t\t\t</array>\n\t\t</dict>\n\t</array>`);\n }\n if (app.ios?.usesNonExemptEncryption !== void 0) {\n stamps.push(\n `\t<key>ITSAppUsesNonExemptEncryption</key>\n\t<${app.ios.usesNonExemptEncryption ? \"true\" : \"false\"}/>`\n );\n }\n if (app.ios?.accentColor) {\n stamps.push(\"\t<key>NSAccentColorName</key>\\n\t<string>AccentColor</string>\");\n }\n if (app.ios?.fileSharing) {\n stamps.push(\n `\t<key>UIFileSharingEnabled</key>\n\t<true/>\n\t<key>LSSupportsOpeningDocumentsInPlace</key>\n\t<true/>`\n );\n }\n if (app.photoLibrary?.readWrite !== void 0) {\n stamps.push(\"\t<key>PHPhotoLibraryPreventAutomaticLimitedAccessAlert</key>\\n\t<true/>\");\n }\n if (app.notifications !== void 0) {\n stamps.push(`\t<key>${notificationsHost.enabledInfoPlistKey}</key>\n\t<true/>`);\n }\n if (app.notifications?.push === true) {\n stamps.push(`\t<key>${notificationsHost.pushInfoPlistKey}</key>\n\t<true/>`);\n }\n if (app.ios?.widgets) {\n stamps.push(\"\t<key>NSSupportsLiveActivities</key>\\n\t<true/>\");\n }\n const refreshTasks = app.ios?.backgroundTasks?.refresh ?? [];\n const processingTasks = app.ios?.backgroundTasks?.processing ?? [];\n if (refreshTasks.length || processingTasks.length) {\n const plistArray = (key, identifiers) => `\t<key>${key}</key>\n\t<array>\n${identifiers.map((identifier) => `\t\t<string>${escapeXml(identifier)}</string>`).join(\"\\n\")}\n\t</array>`;\n stamps.push(plistArray(\"BGTaskSchedulerPermittedIdentifiers\", [...refreshTasks, ...processingTasks]));\n stamps.push(plistArray(\"OneBackgroundRefreshTaskIdentifiers\", refreshTasks));\n stamps.push(plistArray(\"OneBackgroundProcessingTaskIdentifiers\", processingTasks));\n }\n if (app.ios?.appIntents) {\n stamps.push(\n `\t<key>OneAppIntentIdentifiers</key>\n\t<array>\n${app.ios.appIntents.actions.map((action) => `\t\t<string>${escapeXml(action.id)}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n const backgroundModes = [\n ...app.pictureInPicture || app.audio?.background ? [\"audio\"] : [],\n ...app.location?.background ? [\"location\"] : [],\n ...refreshTasks.length ? [\"fetch\"] : [],\n ...processingTasks.length ? [\"processing\"] : []\n ];\n if (backgroundModes.length) {\n stamps.push(\n `\t<key>UIBackgroundModes</key>\n\t<array>\n${backgroundModes.map((mode) => `\t\t<string>${mode}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n if (app.updates !== void 0) {\n if (app.updates.url !== void 0) {\n stamps.push(\n `\t<key>${updatesHost.urlInfoPlistKey}</key>\n\t<string>${escapeXml(app.updates.url)}</string>`\n );\n }\n stamps.push(\n `\t<key>${updatesHost.runtimeVersionInfoPlistKey}</key>\n\t<string>${escapeXml(app.updates.runtimeVersion)}</string>`\n );\n }\n if (app.fonts?.length) {\n stamps.push(\n `\t<key>UIAppFonts</key>\n\t<array>\n${app.fonts.map((font) => `\t\t<string>${escapeXml(fontFileName(font))}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n if (app.userInterfaceStyle !== void 0) {\n stamps.push(\n `\t<key>UIUserInterfaceStyle</key>\n\t<string>${app.userInterfaceStyle === \"light\" ? \"Light\" : app.userInterfaceStyle === \"dark\" ? \"Dark\" : \"Automatic\"}</string>`\n );\n }\n if (app.orientation !== void 0) {\n const phoneOrientations = app.orientation === \"portrait\" ? PORTRAIT_ORIENTATIONS : app.orientation === \"landscape\" ? LANDSCAPE_ORIENTATIONS : [...PORTRAIT_ORIENTATIONS, ...LANDSCAPE_ORIENTATIONS];\n const phoneList = /\\t<key>UISupportedInterfaceOrientations<\\/key>\\n\\t<array>\\n[\\s\\S]*?\\t<\\/array>/;\n if (!phoneList.test(rendered)) {\n throw new Error(\n `[vxrn] prebuild template ${relativePath} lost its UISupportedInterfaceOrientations list`\n );\n }\n rendered = rendered.replace(\n phoneList,\n `\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n${phoneOrientations.map((orientation) => `\t\t<string>${orientation}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n for (const [key, value] of Object.entries(app.ios?.infoPlist ?? {})) {\n if (rendered.includes(`<key>${key}</key>`) || stamps.some((stamp) => stamp.includes(`<key>${key}</key>`))) {\n throw new Error(\n `[vxrn] native.app.ios.infoPlist sets ${key}, which the template or native.app already writes: use its field`\n );\n }\n stamps.push(renderPlistEntries({ [key]: value }, \"\t\"));\n }\n if (stamps.length) {\n const anchor = \"\t<key>LSRequiresIPhoneOS</key>\";\n if (!rendered.includes(anchor))\n throw new Error(\n `[vxrn] prebuild template ${relativePath} lost its LSRequiresIPhoneOS anchor`\n );\n rendered = rendered.replace(anchor, `${stamps.join(\"\\n\")}\n${anchor}`);\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && (app.imagePicker?.camera !== void 0 || app.speech !== void 0)) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the camera or microphone permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [];\n if (app.imagePicker?.camera !== void 0) {\n stamps.push(' <uses-permission android:name=\"android.permission.CAMERA\" />');\n }\n if (app.speech !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />',\n ' <queries>\\n <intent>\\n <action android:name=\"android.speech.RecognitionService\" />\\n </intent>\\n </queries>'\n );\n }\n rendered = rendered.replace(anchor, `${anchor}\n${stamps.join(\"\\n\")}`);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.location !== void 0) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp location permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [\n ' <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />',\n ' <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />'\n ];\n if (app.location.background) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />'\n );\n }\n rendered = rendered.replace(anchor, `${anchor}\n${stamps.join(\"\\n\")}`);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.pedometer !== void 0) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the pedometer permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n <uses-permission android:name=\"android.permission.ACTIVITY_RECOGNITION\" />`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.brightness === true) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the brightness permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n <uses-permission android:name=\"android.permission.WRITE_SETTINGS\" />`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.notifications !== void 0) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp notification permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n [\n anchor,\n ...notificationsHost.androidPermissions.map(\n (permission) => ` <uses-permission android:name=\"${permission}\" />`\n )\n ].join(\"\\n\")\n );\n if (!rendered.includes(notificationsHost.androidPermissions[0])) {\n throw new Error(\n \"[vxrn] failed to stamp notification permissions into app manifest\"\n );\n }\n rendered = rendered.replace(\n \" </activity>\\n </application>\",\n ` </activity>\n <receiver android:name=\"${notificationsHost.receiver}\" android:exported=\"false\">\n <intent-filter>\n <action android:name=\"${notificationsHost.receiverAction}\" />\n </intent-filter>\n </receiver>\n </application>`\n );\n if (!rendered.includes(notificationsHost.receiver)) {\n throw new Error(\n \"[vxrn] failed to stamp the notification receiver into app manifest\"\n );\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.notifications?.push === true) {\n const anchor = notificationsHost.receiver;\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the push service: expected the notification receiver in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n \" </receiver>\\n </application>\",\n ` </receiver>\n <service android:name=\"${notificationsHost.pushService}\" android:exported=\"false\">\n <intent-filter>\n <action android:name=\"${notificationsHost.pushServiceAction}\" />\n </intent-filter>\n </service>\n </application>`\n );\n if (!rendered.includes(notificationsHost.pushService)) {\n throw new Error(\"[vxrn] failed to stamp the push service into app manifest\");\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && (app.audio !== void 0 || app.photoLibrary !== void 0 || app.contacts !== void 0 || app.calendar !== void 0 || app.ios?.backgroundTasks !== void 0)) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp media permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [];\n if (app.audio?.microphone !== void 0 && !rendered.includes(\"android.permission.RECORD_AUDIO\")) {\n stamps.push(' <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />');\n }\n if (app.photoLibrary?.readWrite !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />',\n ' <uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />',\n ' <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" android:maxSdkVersion=\"32\" />'\n );\n }\n if (app.photoLibrary?.addOnly !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" android:maxSdkVersion=\"28\" />'\n );\n }\n if (app.contacts !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.READ_CONTACTS\" />',\n ' <uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />'\n );\n }\n if (app.calendar?.usage !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.READ_CALENDAR\" />',\n ' <uses-permission android:name=\"android.permission.WRITE_CALENDAR\" />'\n );\n }\n if (app.calendar?.remindersUsage !== void 0) {\n if (!rendered.includes(\"android.permission.POST_NOTIFICATIONS\")) {\n stamps.push(' <uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />');\n }\n if (!rendered.includes(\"android.permission.RECEIVE_BOOT_COMPLETED\")) {\n stamps.push(' <uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />');\n }\n }\n if (app.audio?.background === true) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />',\n ' <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK\" />'\n );\n }\n if (stamps.length) {\n rendered = rendered.replace(anchor, `${anchor}\n${stamps.join(\"\\n\")}`);\n }\n const appStamps = [];\n if (app.calendar?.remindersUsage !== void 0) {\n appStamps.push(\n ' <meta-data android:name=\"one.calendar.reminders\" android:value=\"true\" />'\n );\n }\n if (app.photoLibrary?.addOnly !== void 0) {\n appStamps.push(\n ' <meta-data android:name=\"one.photoLibrary.addOnly\" android:value=\"true\" />'\n );\n }\n if (app.audio?.background === true) {\n appStamps.push(\n ' <meta-data android:name=\"one.audio.background\" android:value=\"true\" />',\n ' <service android:name=\"com.margelo.nitro.one.OneAudioService\" android:exported=\"false\" android:foregroundServiceType=\"mediaPlayback\" />'\n );\n }\n if (app.ios?.backgroundTasks !== void 0) {\n const refreshTasks = app.ios.backgroundTasks.refresh ?? [];\n const processingTasks = app.ios.backgroundTasks.processing ?? [];\n if (refreshTasks.length) {\n appStamps.push(\n ` <meta-data android:name=\"one.backgroundTasks.refresh\" android:value=\"${escapeXml(refreshTasks.join(\",\"))}\" />`\n );\n }\n if (processingTasks.length) {\n appStamps.push(\n ` <meta-data android:name=\"one.backgroundTasks.processing\" android:value=\"${escapeXml(processingTasks.join(\",\"))}\" />`\n );\n }\n }\n if (appStamps.length) {\n const appAnchor = \" </application>\";\n if (!rendered.includes(appAnchor)) {\n throw new Error(\n \"[vxrn] cannot stamp media components: expected </application> in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n appAnchor,\n `${appStamps.join(\"\\n\")}\n${appAnchor}`\n );\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/java/com/helloworld/MainApplication.kt\" && app.updates !== void 0) {\n rendered = patchAndroidMainApplicationUpdatesHost(rendered);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.updates !== void 0) {\n const anchor = \" </application>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the updates config: expected </application> in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [];\n if (app.updates.url !== void 0) {\n stamps.push(\n ` <meta-data android:name=\"dev.onejs.updates.url\" android:value=\"${escapeXml(app.updates.url)}\" />`\n );\n }\n stamps.push(\n ' <meta-data android:name=\"dev.onejs.updates.runtimeVersion\" android:value=\"@string/one_updates_runtime_version\" />'\n );\n rendered = rendered.replace(anchor, `${stamps.join(\"\\n\")}\n${anchor}`);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/res/values/strings.xml\" && app.updates !== void 0) {\n const version = app.updates.runtimeVersion.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n rendered = rendered.replace(\n \"</resources>\",\n ` <string name=\"one_updates_runtime_version\" translatable=\"false\">\"${escapeXml(version)}\"</string>\n</resources>`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.android?.googleMapsApiKey !== void 0) {\n const anchor = \" </application>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the maps api key: expected </application> in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n ` <meta-data android:name=\"com.google.android.geo.API_KEY\" android:value=\"${escapeXml(app.android.googleMapsApiKey)}\" />\n${anchor}`\n );\n }\n if (platform === \"android\" && relativePath === \"gradle.properties\" && app.notifications?.push === true) {\n const line = `${notificationsHost.pushGradleProperty}=true`;\n if (!rendered.includes(line)) {\n const trailed = rendered.endsWith(\"\\n\") ? rendered : `${rendered}\n`;\n rendered = `${trailed}\n# Remote push: set by native.app.notifications.push.\n${line}\n`;\n }\n }\n if (platform === \"android\" && relativePath === \"gradle.properties\" && app.android?.googleMapsApiKey !== void 0) {\n const line = \"oneNativeMaps=true\";\n if (!rendered.includes(line)) {\n const trailed = rendered.endsWith(\"\\n\") ? rendered : `${rendered}\n`;\n rendered = `${trailed}\n# One.UI.Map: set by native.app.android.googleMapsApiKey.\n${line}\n`;\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/res/values/styles.xml\" && (app.userInterfaceStyle === \"light\" || app.userInterfaceStyle === \"dark\")) {\n const dayNight = 'parent=\"Theme.AppCompat.DayNight.NoActionBar\"';\n if (!rendered.includes(dayNight)) {\n throw new Error(\n `[vxrn] cannot lock userInterfaceStyle: expected ${dayNight} in app/src/main/res/values/styles.xml`\n );\n }\n rendered = rendered.replace(\n dayNight,\n app.userInterfaceStyle === \"light\" ? 'parent=\"Theme.AppCompat.Light.NoActionBar\"' : 'parent=\"Theme.AppCompat.NoActionBar\"'\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && (app.android?.permissions?.length || app.android?.blockedPermissions?.length)) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const permissionName = (name) => name.includes(\".\") ? name : `android.permission.${name}`;\n const lines = [\n ...(app.android?.permissions ?? []).map(\n (name) => ` <uses-permission android:name=\"${permissionName(name)}\" />`\n ),\n ...(app.android?.blockedPermissions ?? []).map(\n (name) => ` <uses-permission android:name=\"${permissionName(name)}\" tools:node=\"remove\" />`\n )\n ];\n rendered = rendered.replace(anchor, `${anchor}\n${lines.join(\"\\n\")}`);\n if (app.android?.blockedPermissions?.length && !rendered.includes(\"xmlns:tools=\")) {\n rendered = rendered.replace(\n 'xmlns:android=\"http://schemas.android.com/apk/res/android\"',\n 'xmlns:android=\"http://schemas.android.com/apk/res/android\"\\n xmlns:tools=\"http://schemas.android.com/tools\"'\n );\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.android?.appLinks?.length) {\n rendered = rendered.replace(\n \" </activity>\",\n ` <intent-filter android:autoVerify=\"true\">\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.DEFAULT\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n${app.android.appLinks.map(\n (link) => ` <data android:host=\"${link.host}\"${link.pathPrefix ? ` android:pathPrefix=\"${link.pathPrefix}\"` : \"\"} />`\n ).join(\"\\n\")}\n </intent-filter>\n </activity>`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.orientation !== void 0) {\n const anchor = 'android:name=\".MainActivity\"';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the orientation: expected .MainActivity in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n android:screenOrientation=\"${app.orientation === \"default\" ? \"unspecified\" : app.orientation}\"`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.pictureInPicture) {\n const anchor = 'android:name=\".MainActivity\"';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp picture in picture: expected .MainActivity in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n android:supportsPictureInPicture=\"true\"`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && schemes.length) {\n rendered = rendered.replace(\n \" </activity>\",\n ` <intent-filter>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.DEFAULT\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n${schemes.map((scheme) => ` <data android:scheme=\"${scheme}\" />`).join(\"\\n\")}\n </intent-filter>\n </activity>`\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\")) {\n rendered = rendered.replace(\n /TARGETED_DEVICE_FAMILY = \"1,2\";/g,\n `TARGETED_DEVICE_FAMILY = \"${app.ios?.tablet ? \"1,2\" : \"1\"}\";`\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\")) {\n if (app.version !== void 0) {\n rendered = rendered.replace(\n /MARKETING_VERSION = [^;]+;/g,\n `MARKETING_VERSION = \"${app.version}\";`\n );\n }\n if (app.ios?.buildNumber !== void 0) {\n rendered = rendered.replace(\n /CURRENT_PROJECT_VERSION = [^;]+;/g,\n `CURRENT_PROJECT_VERSION = ${app.ios.buildNumber};`\n );\n }\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\") && app.ios?.alternateIcons !== void 0) {\n const anchor = \"ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\";\n if (!rendered.includes(anchor)) {\n throw new Error(\"[vxrn] prebuild template lost its primary app icon build setting\");\n }\n const names = Object.keys(app.ios.alternateIcons).sort().join(\" \");\n rendered = rendered.replaceAll(\n anchor,\n `${anchor}\n\t\t\t\tASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = \"${names}\";`\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\"/Info.plist\")) {\n const usage = /* @__PURE__ */ new Map();\n if (app.imagePicker?.camera !== void 0) {\n usage.set(\"NSCameraUsageDescription\", app.imagePicker.camera);\n }\n if (app.imagePicker?.microphone !== void 0) {\n usage.set(\"NSMicrophoneUsageDescription\", app.imagePicker.microphone);\n }\n if (app.photoLibrary !== void 0) {\n if (app.photoLibrary.addOnly !== void 0) {\n usage.set(\"NSPhotoLibraryAddUsageDescription\", app.photoLibrary.addOnly);\n }\n if (app.photoLibrary.readWrite !== void 0) {\n usage.set(\"NSPhotoLibraryUsageDescription\", app.photoLibrary.readWrite);\n }\n }\n if (app.contacts !== void 0) {\n usage.set(\"NSContactsUsageDescription\", app.contacts.usage);\n }\n if (app.calendar !== void 0) {\n if (app.calendar.usage !== void 0) {\n usage.set(\"NSCalendarsFullAccessUsageDescription\", app.calendar.usage);\n }\n if (app.calendar.remindersUsage !== void 0) {\n usage.set(\"NSRemindersFullAccessUsageDescription\", app.calendar.remindersUsage);\n }\n }\n if (app.location !== void 0) {\n usage.set(\"NSLocationWhenInUseUsageDescription\", app.location.whenInUse);\n if (app.location.alwaysAndWhenInUse !== void 0) {\n usage.set(\n \"NSLocationAlwaysAndWhenInUseUsageDescription\",\n app.location.alwaysAndWhenInUse\n );\n }\n }\n if (app.pedometer !== void 0) {\n usage.set(\"NSMotionUsageDescription\", app.pedometer.usage);\n }\n if (app.ios?.faceIdUsageDescription !== void 0) {\n usage.set(\"NSFaceIDUsageDescription\", app.ios.faceIdUsageDescription);\n }\n if (app.speech !== void 0) {\n usage.set(\"NSSpeechRecognitionUsageDescription\", app.speech.recognition);\n usage.set(\"NSMicrophoneUsageDescription\", app.speech.microphone);\n }\n if (app.audio?.microphone !== void 0) {\n usage.set(\"NSMicrophoneUsageDescription\", app.audio.microphone);\n }\n const additions = [];\n for (const [key, text] of usage) {\n const existing = new RegExp(`(<key>${key}</key>\\\\s*<string>)[^<]*(</string>)`);\n if (existing.test(rendered)) {\n rendered = rendered.replace(\n existing,\n (_match, before, after) => `${before}${escapeXml(text)}${after}`\n );\n } else {\n additions.push([key, text]);\n }\n }\n if (additions.length) {\n const anchor = \"\t<key>LSRequiresIPhoneOS</key>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n `[vxrn] cannot stamp ${additions[0][0]}: expected LSRequiresIPhoneOS in Info.plist`\n );\n }\n rendered = rendered.replace(\n anchor,\n `${additions.map(([key, text]) => `\t<key>${key}</key>\n\t<string>${escapeXml(text)}</string>\n`).join(\"\")}${anchor}`\n );\n }\n rendered = rendered.replace(\n /\\t<key>NS\\w+UsageDescription<\\/key>\\s*<string><\\/string>\\n/g,\n \"\"\n );\n rendered = patchIosInfoPlistSceneManifest(rendered);\n }\n if (platform === \"ios\" && relativePath.endsWith(\"/AppDelegate.swift\")) {\n rendered = patchIosAppDelegateSceneLifecycle(\n rendered,\n appName,\n !!app.ios?.backgroundTasks,\n !!app.ios?.appIntents\n );\n rendered = nativeProjectPatches.holdLaunchScreenOverRootView(rendered);\n const bundleURLProvider = 'RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: \"index\")';\n if (!rendered.includes(bundleURLProvider)) {\n throw new Error(\n \"[vxrn] cannot request hermes dev bytecode: expected the template bundle URL provider\"\n );\n }\n rendered = rendered.replace(\n bundleURLProvider,\n `guard let bundleURL = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: \"index\") else { return nil }\n if bundleURL.isFileURL { return bundleURL }\n var components = URLComponents(url: bundleURL, resolvingAgainstBaseURL: false)!\n components.queryItems!.append(URLQueryItem(name: \"bytecode\", value: \"hermes\"))\n return components.url`\n );\n if (app.updates !== void 0) {\n rendered = nativeProjectPatches.pointReleaseBundleURLAtOneUpdates(rendered);\n }\n }\n if (platform === \"ios\" && app.ios?.deploymentTarget) {\n rendered = rendered.replace(\n \"platform :ios, min_ios_version_supported\",\n `platform :ios, '${app.ios.deploymentTarget}'`\n ).replace(\n /IPHONEOS_DEPLOYMENT_TARGET = \\d+(?:\\.\\d+)?;/g,\n `IPHONEOS_DEPLOYMENT_TARGET = ${app.ios.deploymentTarget};`\n );\n if (relativePath === \"Podfile\") {\n rendered = rendered.replace(\n \" )\\n end\\nend\",\n ` )\n\n installer.pods_project.targets.each do |target|\n target.build_configurations.each do |config|\n config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '${app.ios.deploymentTarget}'\n end\n end\n end\nend`\n );\n }\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\")) {\n rendered = patchIosBundlePhase(rendered, app.updates?.runtimeVersion);\n rendered = patchIosPbxprojSceneDelegate(rendered, appName);\n if (app.ios?.appIntents) rendered = patchIosPbxprojAppIntents(rendered, appName);\n rendered = patchIosPbxprojOneBridgingHeader(rendered, appName);\n if (Object.keys(appEntitlements(app)).length && !app.ios?.widgets) {\n rendered = patchIosPbxprojAppEntitlements(rendered, appName);\n }\n if (app.ios?.widgets) rendered = patchIosPbxprojWidgets(rendered, app);\n if (iosResourceFiles(app).length) {\n rendered = patchIosPbxprojResources(rendered, appName, iosResourceFiles(app));\n }\n }\n if (platform === \"ios\" && relativePath === \"Podfile\") {\n if (app.ios?.ccache) rendered = `ENV['USE_CCACHE'] ||= '1'\n${rendered}`;\n if (app.ios?.useFrameworks) {\n rendered = rendered.replace(\n /^(platform :ios, .+)$/m,\n `$1\nuse_frameworks! :linkage => :${app.ios.useFrameworks}`\n );\n }\n if (app.ios?.screensGamma) {\n rendered = nativeProjectPatches.injectReactNativeScreensGammaIntoPodfile(rendered);\n }\n rendered = nativeProjectPatches.injectFmtCxx17FixIntoPodfile(rendered);\n rendered = nativeProjectPatches.injectWebGPUHeaderPathsIntoPodfile(rendered);\n rendered = nativeProjectPatches.injectOneSwiftPackagesIntoPodfile(rendered);\n if (nitroWebImage)\n rendered = nativeProjectPatches.injectNitroWebImageModularHeaderIntoPodfile(rendered);\n rendered = nativeProjectPatches.injectHermesMinificationPatchIntoPodfile(rendered);\n const nativeModulesCall = \"config = use_native_modules!\";\n if (rendered.split(nativeModulesCall).length !== 2) {\n throw new Error(\"[vxrn] expected one iOS native module discovery call\");\n }\n rendered = rendered.replace(\n nativeModulesCall,\n `config = use_native_modules!(['node', '-e', \"process.argv=['', '', 'config'];require(require('module').createRequire(require.resolve('vxrn/package.json')).resolve('@react-native-community/cli')).run()\"])`\n );\n if (!rendered.includes(\"[vxrn/one] fmt c++17 fix\") || !rendered.includes(\"[vxrn/one] minify iOS Hermes Release bundle input\")) {\n throw new Error(\"[vxrn] failed to apply required iOS Podfile patches\");\n }\n }\n if (platform === \"android\" && relativePath === \"app/build.gradle\") {\n rendered = nativeProjectPatches.replaceAppBuildGradleReactBlock(rendered);\n rendered = nativeProjectPatches.addDepsPatchToAppBuildGradle(rendered);\n if (!rendered.includes('entryFile = file(\"../../package.json\")') || !rendered.includes(\"[vxrn/one] ensure patches are applied\")) {\n throw new Error(\"[vxrn] failed to apply required Android Gradle patches\");\n }\n if (app.updates !== void 0) {\n rendered = patchAndroidBuildGradleUpdatesManifest(\n rendered,\n app.updates.runtimeVersion\n );\n }\n if (app.version !== void 0) {\n rendered = rendered.replace(\n /versionName \"[^\"]*\"/g,\n `versionName \"${app.version}\"`\n );\n }\n if (app.android?.versionCode !== void 0) {\n rendered = rendered.replace(\n /versionCode \\d+/g,\n `versionCode ${app.android.versionCode}`\n );\n }\n }\n if (platform === \"android\" && relativePath === \"settings.gradle\") {\n const hardcodedGradlePlugin = /includeBuild\\((['\"])\\.\\.\\/node_modules\\/@react-native\\/gradle-plugin\\1\\)/g;\n if ([...rendered.matchAll(hardcodedGradlePlugin)].length !== 2) {\n throw new Error(\"[vxrn] expected two React Native Gradle plugin paths\");\n }\n rendered = rendered.replace(\n hardcodedGradlePlugin,\n `includeBuild(new File([\"node\", \"--print\", \"require('module').createRequire(require.resolve('react-native/package.json')).resolve('@react-native/gradle-plugin/package.json')\"].execute(null, settingsDir).text.trim()).parentFile.canonicalPath)`\n );\n const autolinkCommand = \"ex.autolinkLibrariesFromCommand()\";\n if (rendered.split(autolinkCommand).length !== 2) {\n throw new Error(\"[vxrn] expected one React Native autolinking command\");\n }\n rendered = rendered.replace(\n autolinkCommand,\n `ex.autolinkLibrariesFromCommand([\"node\", [\"node\", \"--print\", \"require('module').createRequire(require.resolve('vxrn/package.json')).resolve('@react-native-community/cli/build/bin.js')\"].execute(null, settingsDir).text.trim(), \"config\"])`\n );\n }\n if (platform === \"android\" && relativePath === \"app/build.gradle\" && app.android?.minify) {\n const minify = \"def enableProguardInReleaseBuilds = false\";\n const minifyEnabled = \"minifyEnabled enableProguardInReleaseBuilds\";\n if (!rendered.includes(minify) || !rendered.includes(minifyEnabled)) {\n throw new Error(\"[vxrn] prebuild template app/build.gradle lost its proguard switch\");\n }\n rendered = rendered.replace(minify, \"def enableProguardInReleaseBuilds = true\");\n if (app.android.shrinkResources) {\n rendered = rendered.replace(\n minifyEnabled,\n `${minifyEnabled}\n shrinkResources true`\n );\n }\n }\n if (platform === \"android\" && app.android?.googleServicesFile) {\n const edits = [\n [\n \"build.gradle\",\n 'classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")',\n ` classpath(\"com.google.gms:google-services:${GOOGLE_SERVICES_VERSION}\")`\n ],\n [\n \"app/build.gradle\",\n 'apply plugin: \"com.facebook.react\"',\n 'apply plugin: \"com.google.gms.google-services\"'\n ]\n ];\n for (const [file, anchor, insertion] of edits) {\n if (relativePath !== file) continue;\n const next = insertAfterLine(rendered, anchor, insertion);\n if (next === rendered) {\n throw new Error(`[vxrn] prebuild template ${file} lost its ${anchor} anchor`);\n }\n rendered = next;\n }\n }\n if (platform === \"android\" && relativePath === \"app/proguard-rules.pro\" && app.android?.proguardRules) {\n rendered = `${rendered.trimEnd()}\n\n${app.android.proguardRules.trim()}\n`;\n }\n for (const [field, setting] of [\n [\"minSdk\", \"minSdkVersion\"],\n [\"targetSdk\", \"targetSdkVersion\"],\n [\"compileSdk\", \"compileSdkVersion\"]\n ]) {\n const value = platform === \"android\" ? app.android?.[field] : void 0;\n if (value === void 0) continue;\n rendered = rendered.replace(new RegExp(`${setting} = \\\\d+`, \"g\"), `${setting} = ${value}`);\n }\n return { destRelativePath, content: rendered };\n }\n return { destRelativePath, content };\n}\nconst generateForPlatform = async (root, platform, app, outDir = path.resolve(root, platform)) => {\n validatePrebuildApp(app, platform);\n const dest = outDir;\n const require2 = module.createRequire(root + \"/\");\n const importPath = requireVxrn.resolve(\"@react-native-community/cli/build/tools/walk.js\");\n const src = path.join(\n path.dirname(\n require2.resolve(\"@react-native-community/template/template/package.json\", {\n paths: [root]\n })\n ),\n platform\n );\n const walkModule = await import(pathToFileURL(importPath).href);\n const walkFn = walkModule?.default?.default ?? walkModule?.default ?? walkModule;\n if (typeof walkFn !== \"function\") {\n throw new Error(\"[vxrn] could not resolve the community template walker\");\n }\n const files = [...walkFn(src)].sort();\n const nitroWebImage = platform === \"ios\" && nativeProjectPatches.hasNitroWebImage(root);\n FSExtra.removeSync(dest);\n for (const absoluteSrc of files) {\n const relativeFilePath = path.relative(src, absoluteSrc);\n const stat = FSExtra.lstatSync(absoluteSrc);\n if (stat.isDirectory()) continue;\n const extension = path.extname(absoluteSrc);\n const raw = [\".png\", \".jar\", \".keystore\"].includes(extension) ? null : FSExtra.readFileSync(absoluteSrc, \"utf8\");\n const { destRelativePath, content } = renderPrebuildFile({\n relativePath: relativeFilePath,\n content: raw,\n platform,\n app,\n nitroWebImage\n });\n const destPath = path.resolve(dest, destRelativePath);\n FSExtra.mkdirSync(path.dirname(destPath), { recursive: true });\n console.info(\"copying\", '\"' + absoluteSrc + '\"', \"to\", '\"' + destPath + '\"');\n if (content === null) {\n FSExtra.copyFileSync(absoluteSrc, destPath);\n continue;\n }\n FSExtra.writeFileSync(destPath, content, {\n encoding: \"utf8\",\n mode: stat.mode\n });\n }\n await generateAppIcons({ root, dest, platform, app });\n if (platform === \"android\") await generateAdaptiveIcon({ root, dest, app });\n await generateSplashScreen({ root, dest, platform, app });\n if (platform === \"ios\") generateAccentColor({ dest, app });\n copyAppResources({ root, dest, platform, app });\n generateSceneDelegate({ dest, platform, app });\n generateIosAppIntents(dest, platform, app);\n if (platform === \"ios\") generateOneBridgingHeader(dest, app);\n if (platform === \"ios\") generateIosWidgets(dest, app);\n if (platform === \"ios\") await generateSwiftPackages({ root, dest });\n if (platform === \"android\") await generateKotlinSources({ root, dest });\n};\nconst KOTLIN_IMPORT_ARTIFACTS = [\n {\n importPrefix: \"androidx.compose.material.icons\",\n artifact: \"androidx.compose.material:material-icons-core\",\n versionKey: \"materialIconsVersion\",\n version: \"1.7.6\"\n }\n];\nfunction kotlinSourceImports(dir) {\n const imports = /* @__PURE__ */ new Set();\n if (!FSExtra.existsSync(dir)) return imports;\n const visit = (entry) => {\n if (FSExtra.statSync(entry).isDirectory()) {\n for (const child of FSExtra.readdirSync(entry)) visit(path.join(entry, child));\n return;\n }\n if (!entry.endsWith(\".kt\")) return;\n for (const line of FSExtra.readFileSync(entry, \"utf8\").split(\"\\n\")) {\n const match = /^\\s*import\\s+([A-Za-z0-9_.]+)/.exec(line);\n if (match) imports.add(match[1]);\n }\n };\n visit(dir);\n return imports;\n}\nfunction enableAppComposeIntegration(dest) {\n const rootBuildGradlePath = path.join(dest, \"build.gradle\");\n if (FSExtra.existsSync(rootBuildGradlePath)) {\n let content = FSExtra.readFileSync(rootBuildGradlePath, \"utf8\");\n const composePluginClasspath = ' classpath(\"org.jetbrains.kotlin.plugin.compose:org.jetbrains.kotlin.plugin.compose.gradle.plugin:$kotlinVersion\")';\n if (!content.includes(\"org.jetbrains.kotlin.plugin.compose\")) {\n const anchor = content.includes('classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")') ? 'classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")' : 'classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin\"';\n content = insertAfterLine(content, anchor, composePluginClasspath);\n FSExtra.writeFileSync(rootBuildGradlePath, content, \"utf8\");\n }\n }\n const appBuildGradlePath = path.join(dest, \"app/build.gradle\");\n if (FSExtra.existsSync(appBuildGradlePath)) {\n let content = FSExtra.readFileSync(appBuildGradlePath, \"utf8\");\n if (!content.includes(\"org.jetbrains.kotlin.plugin.compose\")) {\n const pluginAnchor = content.includes('apply plugin: \"org.jetbrains.kotlin.android\"') ? 'apply plugin: \"org.jetbrains.kotlin.android\"' : \"apply plugin: 'org.jetbrains.kotlin.android'\";\n content = insertAfterLine(\n content,\n pluginAnchor,\n 'apply plugin: \"org.jetbrains.kotlin.plugin.compose\"'\n );\n }\n if (!content.includes(\"compose true\")) {\n content = insertAfterLine(\n content,\n \"android {\",\n \" buildFeatures {\\n compose true\\n }\"\n );\n }\n if (!content.includes(\"androidx.compose.ui:ui\")) {\n const composeDeps = [\n ' def composeUiVersion = rootProject.ext.has(\"composeUiVersion\") ? rootProject.ext.get(\"composeUiVersion\") : \"1.11.4\"',\n ' def material3Version = rootProject.ext.has(\"material3Version\") ? rootProject.ext.get(\"material3Version\") : \"1.5.0-alpha17\"',\n ' implementation \"androidx.compose.ui:ui:$composeUiVersion\"',\n ' implementation \"androidx.compose.foundation:foundation:$composeUiVersion\"',\n ' implementation \"androidx.compose.material3:material3:$material3Version\"',\n // swiftui carries navigation; compose ships it as its own artifact, so a\n // kotlin view importing NavHost needs it on the app classpath.\n ' def navigationComposeVersion = rootProject.ext.has(\"navigationComposeVersion\") ? rootProject.ext.get(\"navigationComposeVersion\") : \"2.10.2\"',\n ' implementation \"androidx.navigation:navigation-compose:$navigationComposeVersion\"'\n ].join(\"\\n\");\n const depsAnchor = content.includes('implementation(\"com.facebook.react:react-android\")') ? 'implementation(\"com.facebook.react:react-android\")' : 'implementation \"com.facebook.react:react-android\"';\n content = insertAfterLine(content, depsAnchor, composeDeps);\n }\n const imports = kotlinSourceImports(path.join(dest, \"app/src/main/java/one/source\"));\n for (const rule of KOTLIN_IMPORT_ARTIFACTS) {\n const needed = [...imports].some(\n (name) => name === rule.importPrefix || name.startsWith(`${rule.importPrefix}.`)\n );\n if (!needed || content.includes(rule.artifact)) continue;\n const reactAnchor = content.includes('implementation(\"com.facebook.react:react-android\")') ? 'implementation(\"com.facebook.react:react-android\")' : 'implementation \"com.facebook.react:react-android\"';\n const anchor = content.includes(\"androidx.compose.material3:material3\") ? \"androidx.compose.material3:material3\" : reactAnchor;\n content = insertAfterLine(\n content,\n anchor,\n [\n ` def ${rule.versionKey} = rootProject.ext.has(\"${rule.versionKey}\") ? rootProject.ext.get(\"${rule.versionKey}\") : \"${rule.version}\"`,\n ` implementation \"${rule.artifact}:$${rule.versionKey}\"`\n ].join(\"\\n\")\n );\n }\n FSExtra.writeFileSync(appBuildGradlePath, content, \"utf8\");\n }\n}\nasync function generateKotlinSources({ root, dest }) {\n const skip = /* @__PURE__ */ new Set([\"node_modules\", \"ios\", \"android\", \"dist\", \"types\", \"build\", \"tests\", \"__tests__\", \"scripts\", \"evidence\"]);\n const sources = [];\n const manifest = FSExtra.existsSync(path.join(root, \"package.json\")) ? FSExtra.readJsonSync(path.join(root, \"package.json\")) : {};\n const workspacePatterns = Array.isArray(manifest.workspaces) ? manifest.workspaces : manifest.workspaces?.packages ?? [];\n const { default: glob } = await import(\"fast-glob\");\n const workspaceRoots = new Set(glob.sync(workspacePatterns, {\n cwd: root,\n absolute: true,\n onlyDirectories: true,\n ignore: [\"**/node_modules/**\", \"**/ios/**\", \"**/android/**\"]\n }).map((directory) => path.resolve(directory)));\n const collect = (dir) => {\n if (dir !== root && FSExtra.existsSync(path.join(dir, \"package.json\")) && !workspaceRoots.has(dir)) return;\n for (const entry of FSExtra.readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith(\".\") || skip.has(entry.name)) continue;\n const source = path.join(dir, entry.name);\n if (entry.isDirectory()) collect(source);\n else if (entry.isFile() && entry.name.endsWith(\".kt\")) sources.push(source);\n }\n };\n collect(root);\n const output = path.join(dest, \"app/src/main/java/one/source\");\n FSExtra.removeSync(output);\n if (sources.length === 0) return;\n const { kotlinSourceId, renderKotlinSourceGlue, writeNativeSourceDeclaration } = await import(\"../utils/nativeSourceContract\");\n let hasViews = false;\n for (const source of sources) {\n const id = kotlinSourceId(root, source);\n const target = path.join(output, id);\n FSExtra.mkdirSync(target, { recursive: true });\n FSExtra.copyFileSync(source, path.join(target, path.basename(source)));\n const contract = writeNativeSourceDeclaration(source);\n if (contract.views.length > 0) hasViews = true;\n if (contract.modules.length > 0 || contract.views.length > 0) {\n FSExtra.writeFileSync(\n path.join(target, `OneNativeSource_${id}.kt`),\n renderKotlinSourceGlue(id, contract).source\n );\n }\n }\n if (hasViews) {\n enableAppComposeIntegration(dest);\n }\n}\nasync function generateSwiftPackages({ root, dest }) {\n const skip = /* @__PURE__ */ new Set([\"node_modules\", \"ios\", \"android\", \"dist\", \"types\", \"build\"]);\n const packages = swiftPackageDirectories(root);\n if (packages.size === 0) return;\n const { swiftPodManifest, writeSwiftPackageArtifacts } = await import(\"../utils/nativeSourceContract\");\n for (const [id, packageDir] of packages) {\n const podDir = path.join(dest, \"OneSwiftPackages\", id);\n const manifest = swiftPodManifest(\n path.join(packageDir, \"Package.swift\"),\n FSExtra.readFileSync(path.join(packageDir, \"Package.swift\"), \"utf8\")\n );\n const sources = [];\n const collect = (dir) => {\n for (const entry of FSExtra.readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith(\".\") || skip.has(entry.name)) continue;\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) collect(full);\n else if (entry.name.endsWith(\".swift\") && entry.name !== \"Package.swift\")\n sources.push(full);\n }\n };\n collect(packageDir);\n const artifacts = writeSwiftPackageArtifacts(packageDir);\n const contracts = artifacts.contracts;\n const hasView = contracts.some((contract) => contract.defaultView);\n if (contracts.filter((contract) => contract.defaultView).length > 1) {\n throw new Error(`[vxrn] swift package ${packageDir} has more than one @main type`);\n }\n for (const source of sources) {\n const link = path.join(podDir, \"Sources\", path.relative(packageDir, source));\n FSExtra.mkdirSync(path.dirname(link), { recursive: true });\n FSExtra.symlinkSync(FSExtra.realpathSync(source), link);\n }\n if (artifacts.glue) {\n FSExtra.writeFileSync(\n path.join(podDir, \"Sources\", \"OneNativeSource.generated.swift\"),\n artifacts.glue\n );\n }\n FSExtra.writeFileSync(\n path.join(podDir, `${id}.podspec`),\n `Pod::Spec.new do |s|\n s.name = '${id}'\n s.version = '0.0.0'\n s.summary = 'swift package ${path.relative(root, packageDir) || \".\"}'\n s.homepage = 'https://onestack.dev'\n s.license = 'MIT'\n s.author = 'one'\n s.source = { :path => '.' }\n s.swift_version = '${manifest.languageMode}.0'\n s.source_files = 'Sources/**/*.swift', 'Register.m'\n s.dependency 'One'\n s.pod_target_xcconfig = {\n 'OTHER_SWIFT_FLAGS' => '$(inherited) -cxx-interoperability-mode=default -Xcc -std=c++20 -Xfrontend -import-module -Xfrontend One${manifest.mainActorIsolation ? \" -default-isolation MainActor\" : \"\"}${hasView ? ` -Xfrontend -entry-point-function-name -Xfrontend ${id}_main` : \"\"}',\n }\nend\n`\n );\n FSExtra.writeFileSync(\n path.join(podDir, \"Register.m\"),\n hasView ? `#import <Foundation/Foundation.h>\n\nextern int ${id}_main(int argc, char **argv);\nextern void OneSwiftRegisterPackage(const char *name, int (*entry)(int, char **));\n\n@interface OneSwiftPackage_${id} : NSObject\n@end\n\n@implementation OneSwiftPackage_${id}\n+ (void)load {\n OneSwiftRegisterPackage(\"${id}\", ${id}_main);\n}\n@end\n` : \"#import <Foundation/Foundation.h>\\n\"\n );\n }\n}\nfunction applyAndroidDependencyPatches(args) {\n const { root, app, inventory } = args;\n if (!app.android || !inventory.some(\n (dependency) => dependency.name === \"react-native-screens\" && dependency.platforms.includes(\"android\")\n )) {\n return;\n }\n const activityPath = path.join(\n root,\n \"android\",\n \"app\",\n \"src\",\n \"main\",\n \"java\",\n ...app.android.applicationId.split(\".\"),\n \"MainActivity.kt\"\n );\n const rendered = nativeProjectPatches.holdLaunchScreenInMainActivity(\n nativeProjectPatches.addReactNativeScreensFix(FSExtra.readFileSync(activityPath, \"utf8\"))\n );\n if (!rendered.includes(\"RNScreensFragmentFactory\")) {\n throw new Error(\"[vxrn] failed to apply the react-native-screens activity patch\");\n }\n FSExtra.writeFileSync(activityPath, rendered);\n}\nasync function getNativeDependencyInventory(root) {\n const cliConfigPath = requireVxrn.resolve(\"@react-native-community/cli-config\");\n const cliConfig = await import(pathToFileURL(cliConfigPath).href);\n const config = await cliConfig.loadConfigAsync({ projectRoot: root });\n const inventory = [];\n for (const name of Object.keys(config.dependencies).sort()) {\n const dependency = config.dependencies[name];\n const depRoot = dependency.root;\n let version = \"unknown\";\n try {\n version = JSON.parse(FSExtra.readFileSync(path.join(depRoot, \"package.json\"), \"utf8\")).version ?? \"unknown\";\n } catch {\n }\n const platforms = Object.entries(dependency.platforms).filter(([, platformConfig]) => platformConfig !== null).map(([platform]) => platform).sort();\n if (platforms.length > 0) inventory.push({ name, version, platforms });\n }\n return inventory;\n}\nfunction installNativeDependencies(args) {\n const { root, platform } = args;\n if (!platform || platform === \"ios\") {\n execFileSync(\"pod\", [\"install\", `--project-directory=${path.join(root, \"ios\")}`], {\n stdio: \"inherit\",\n env: { ...process.env, LC_ALL: \"en_US.UTF-8\" }\n });\n }\n}\nconst transformPath = (filePath) => {\n return filePath.replace(\"_BUCK\", \"BUCK\").replace(\"_gitignore\", \".gitignore\").replace(\"_gitattributes\", \".gitattributes\").replace(\"_babelrc\", \".babelrc\").replace(\"_editorconfig\", \".editorconfig\").replace(\"_eslintrc.js\", \".eslintrc.js\").replace(\"_flowconfig\", \".flowconfig\").replace(\"_buckconfig\", \".buckconfig\").replace(\"_prettierrc.js\", \".prettierrc.js\").replace(\"_bundle\", \".bundle\").replace(\"_ruby-version\", \".ruby-version\").replace(\"_node-version\", \".node-version\").replace(\"_watchmanconfig\", \".watchmanconfig\").replace(\"_xcode.env\", \".xcode.env\");\n};\nexport {\n applyAndroidDependencyPatches,\n enableAppComposeIntegration,\n generateForPlatform,\n generateKotlinSources,\n getNativeDependencyInventory,\n installNativeDependencies,\n renderIosAppIntentsSwift,\n renderPrebuildFile,\n renderSceneDelegateSwift,\n validatePrebuildApp\n};\n//# sourceMappingURL=prebuildWithoutExpo.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"prebuildWithoutExpo.js","names":[],"sources":["exports/prebuildWithoutExpo.js"],"sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport module from \"node:module\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport {\n validateNativeApp\n} from \"@vxrn/utils/nativeAppManifest\";\nimport FSExtra from \"fs-extra\";\nimport sharp from \"sharp\";\nimport { swiftPackageDirectories } from \"../utils/swiftPackageId\";\nconst requireVxrn = module.createRequire(import.meta.url);\nconst nativeProjectPatches = requireVxrn(\n \"../../native-project-patches.cjs\"\n);\nconst notificationsHost = nativeProjectPatches.ONE_NOTIFICATIONS;\nconst updatesHost = nativeProjectPatches.ONE_UPDATES;\nconst PORTRAIT_ORIENTATIONS = [\n \"UIInterfaceOrientationPortrait\",\n \"UIInterfaceOrientationPortraitUpsideDown\"\n];\nconst LANDSCAPE_ORIENTATIONS = [\n \"UIInterfaceOrientationLandscapeLeft\",\n \"UIInterfaceOrientationLandscapeRight\"\n];\nconst validatePrebuildApp = validateNativeApp;\nconst ANDROID_DENSITIES = {\n mdpi: 1,\n hdpi: 1.5,\n xhdpi: 2,\n xxhdpi: 3,\n xxxhdpi: 4\n};\nconst IOS_BUNDLE_PLACEHOLDER = \"org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)\";\nconst ANDROID_PACKAGE_PLACEHOLDER = \"com.helloworld\";\nconst ANDROID_PACKAGE_PATH = \"com/helloworld\";\nfunction patchIosBundlePhase(project, updatesRuntimeVersion) {\n let patchedBundlePhases = 0;\n const patchedProject = project.replace(\n /shellScript = (\"(?:\\\\.|[^\"\\\\])*\");/g,\n (assignment, serializedScript) => {\n let script;\n try {\n script = JSON.parse(serializedScript);\n } catch {\n return assignment;\n }\n if (typeof script !== \"string\" || !script.includes(\"react-native-xcode.sh\")) {\n return assignment;\n }\n let patched = script;\n patched = nativeProjectPatches.addSetCliPathToBundleReactNativeShellScript(patched);\n patched = nativeProjectPatches.addPodHermescToBundleReactNativeShellScript(patched);\n patched = nativeProjectPatches.addDepsPatchToBundleReactNativeShellScript(patched);\n if (!patched.includes(\"[vxrn/one] React Native now defaults CLI_PATH\") || !patched.includes(\"[vxrn/one] use the hermes-engine pod\") || !patched.includes(\"[vxrn/one] ensure patches are applied\")) {\n throw new Error(\"[vxrn] failed to apply required iOS bundle phase patches\");\n }\n if (updatesRuntimeVersion !== void 0) {\n patched = nativeProjectPatches.addEmbeddedUpdatesManifestToBundleReactNativeShellScript(\n patched,\n updatesRuntimeVersion\n );\n if (!patched.includes(\n \"[vxrn/one] the embedded update manifest lands beside the release bundle\"\n )) {\n throw new Error(\"[vxrn] failed to apply the iOS embedded updates manifest patch\");\n }\n }\n patchedBundlePhases++;\n return `shellScript = ${JSON.stringify(patched)};`;\n }\n );\n if (patchedBundlePhases !== 1) {\n throw new Error(\n `[vxrn] expected one iOS React Native bundle phase, found ${patchedBundlePhases}`\n );\n }\n return patchedProject;\n}\nfunction escapeXml(value) {\n return value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\nconst PUSH_ENTITLEMENTS_FILE_REF_ID = \"3C4D5E6F7A8B9C0D1E2F1A2B\";\nfunction renderSceneDelegateSwift(appName) {\n return `import UIKit\nimport React\nimport React_RCTAppDelegate\nimport ReactAppDependencyProvider\n\n// owns the window and the react native root. with a scene manifest the\n// system creates this delegate per foreground scene instead of asking the\n// app delegate for a window, which is what the xcode 27 sdk requires.\nclass SceneDelegate: UIResponder, UIWindowSceneDelegate {\n var window: UIWindow?\n\n func scene(\n _ scene: UIScene,\n willConnectTo session: UISceneSession,\n options connectionOptions: UIScene.ConnectionOptions\n ) {\n guard let windowScene = scene as? UIWindowScene else { return }\n guard let appDelegate = UIApplication.shared.delegate as? AppDelegate,\n let factory = appDelegate.reactNativeFactory else { return }\n\n let window = UIWindow(windowScene: windowScene)\n self.window = window\n\n factory.startReactNative(\n withModuleName: \"${appName}\",\n in: window,\n connectionOptions: connectionOptions\n )\n }\n\n func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {\n RCTLinkingManager.scene(scene, openURLContexts: URLContexts)\n }\n\n func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {\n RCTLinkingManager.scene(scene, continue: userActivity)\n }\n}\n`;\n}\nfunction insertAfterLine(haystack, anchor, insertion) {\n const anchorIndex = haystack.indexOf(anchor);\n if (anchorIndex === -1) return haystack;\n const lineEnd = haystack.indexOf(\"\\n\", anchorIndex);\n if (lineEnd === -1) return `${haystack}\n${insertion}`;\n return `${haystack.slice(0, lineEnd + 1)}${insertion}\n${haystack.slice(lineEnd + 1)}`;\n}\nfunction patchIosAppDelegateSceneLifecycle(rendered, backgroundTasks, appIntents) {\n const anchor = `@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n func application(\n _ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil\n ) -> Bool {\n true\n }\n}`;\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] prebuild template AppDelegate.swift changed shape: cannot register the app-level React Native factory\"\n );\n }\n return rendered.replace(\n anchor,\n `import React\nimport React_RCTAppDelegate\nimport ReactAppDependencyProvider\n\n@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n var reactNativeDelegate: ReactNativeDelegate?\n var reactNativeFactory: RCTReactNativeFactory?\n\n func application(\n _ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil\n ) -> Bool {\n let delegate = ReactNativeDelegate()\n let factory = RCTReactNativeFactory(delegate: delegate)\n delegate.dependencyProvider = RCTAppDependencyProvider()\n reactNativeDelegate = delegate\n reactNativeFactory = factory\n${backgroundTasks ? ` OneBackgroundTasksRegisterHost(factory, launchOptions)\n` : \"\"}${appIntents ? ` OneAppIntentsRegisterHost(factory, launchOptions)\n` : \"\"} return true\n }\n}\n\nclass ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {\n override func bundleURL() -> URL? {\n#if DEBUG\n RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: \"index\")\n#else\n Bundle.main.url(forResource: \"main\", withExtension: \"jsbundle\")\n#endif\n }\n}`\n );\n}\nconst ONE_BRIDGING_HEADER_NAME = \"One-Bridging-Header.h\";\nfunction renderOneBridgingHeader(app) {\n const imports = [nativeProjectPatches.ONE_LAUNCH_SCREEN.bridgingHeaderImport];\n if (app.updates !== void 0) imports.push(updatesHost.bridgingHeaderImport);\n if (app.ios?.backgroundTasks !== void 0) imports.push('#import \"OneBackgroundTasksBridge.h\"');\n if (app.ios?.appIntents !== void 0) imports.push('#import \"OneAppIntentsBridge.h\"');\n return `// generated by one prebuild: exposes One's c entry points to AppDelegate\n// without importing the One module.\n${imports.join(\"\\n\")}\n`;\n}\nfunction generateOneBridgingHeader(dest, app) {\n FSExtra.writeFileSync(\n path.join(dest, app.name, ONE_BRIDGING_HEADER_NAME),\n renderOneBridgingHeader(app)\n );\n}\nfunction patchIosPbxprojOneBridgingHeader(project, appName) {\n const anchor = `INFOPLIST_FILE = ${appName}/Info.plist;`;\n const setting = `SWIFT_OBJC_BRIDGING_HEADER = \"${appName}/${ONE_BRIDGING_HEADER_NAME}\";`;\n const occurrences = project.split(anchor).length - 1;\n if (occurrences !== 2) {\n throw new Error(\n \"[vxrn] prebuild template project.pbxproj changed shape: cannot point the app target at the One bridging header\"\n );\n }\n return project.split(anchor).join(`${anchor}\n\t\t\t\t${setting}`);\n}\nfunction patchIosPbxprojAppIntents(rendered, appName) {\n const name = \"OneAppIntents.swift\";\n const fileRef = pbxprojId(\"one-app-intents-file\");\n const buildFile = pbxprojId(\"one-app-intents-build\");\n const edits = [\n [\n \"/* AppDelegate.swift in Sources */ = {isa = PBXBuildFile;\",\n `\t\t${buildFile} /* ${name} in Sources */ = {isa = PBXBuildFile; fileRef = ${fileRef} /* ${name} */; };`\n ],\n [\n \"/* AppDelegate.swift */ = {isa = PBXFileReference;\",\n `\t\t${fileRef} /* ${name} */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ${name}; path = ${appName}/${name}; sourceTree = \"<group>\"; };`\n ],\n [\"/* AppDelegate.swift */,\", `\t\t\t\t${fileRef} /* ${name} */,`],\n [\"/* AppDelegate.swift in Sources */,\", `\t\t\t\t${buildFile} /* ${name} in Sources */,`]\n ];\n let patched = rendered;\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(`[vxrn] prebuild template project.pbxproj lost its AppDelegate.swift anchor (${anchor})`);\n }\n patched = next;\n }\n return patched;\n}\nfunction swiftLiteral(value) {\n return JSON.stringify(value).replace(/\\\\u([0-9a-fA-F]{4})/g, (_match, hex) => `\\\\u{${hex}}`);\n}\nfunction swiftShortcutPhrase(value) {\n return `\"${value.split(\"{app}\").map((part) => swiftLiteral(part).slice(1, -1)).join(\"\\\\(.applicationName)\")}\"`;\n}\nfunction renderIosAppIntentsSwift(actions) {\n const types = actions.map((action, index) => {\n const summaryTitle = swiftLiteral(action.title).slice(1, -1);\n const text = action.textParameterTitle === void 0 ? \"\" : `\n @Parameter(title: ${swiftLiteral(action.textParameterTitle)}) var text: String\n\n static var parameterSummary: some ParameterSummary {\n Summary(\"${summaryTitle} \\\\(\\\\.$text)\")\n }\n`;\n return `struct OneAppIntent${index}: AppIntent {\n static let title: LocalizedStringResource = ${swiftLiteral(action.title)}\n${text}\n func perform() async throws -> some IntentResult & ReturnsValue<String> {\n let result = try await oneAppIntentsRun(${swiftLiteral(action.id)}, ${text ? \"text\" : \"nil\"})\n return .result(value: result)\n }\n}`;\n });\n const shortcuts = actions.map((action, index) => ` AppShortcut(\n intent: OneAppIntent${index}(),\n phrases: [${swiftShortcutPhrase(action.shortcutPhrase)}],\n shortTitle: ${swiftLiteral(action.title)},\n systemImageName: \"bolt.fill\"\n )`).join(\"\\n\");\n return `import AppIntents\nimport Foundation\n\nprivate func oneAppIntentsRun(_ identifier: String, _ text: String?) async throws -> String {\n try await withCheckedThrowingContinuation { continuation in\n OneAppIntentsPerform(identifier, text) { result, error in\n if let error { continuation.resume(throwing: error) }\n else if let result { continuation.resume(returning: result) }\n else { continuation.resume(throwing: NSError(domain: \"OneAppIntents\", code: 3)) }\n }\n }\n}\n\n${types.join(\"\\n\\n\")}\n\nstruct OneAppShortcuts: AppShortcutsProvider {\n static var appShortcuts: [AppShortcut] {\n${shortcuts}\n }\n}\n`;\n}\nfunction fontFileName(font) {\n return path.basename(font);\n}\nfunction pbxprojId(seed) {\n return createHash(\"sha1\").update(seed).digest(\"hex\").slice(0, 24).toUpperCase();\n}\nconst GOOGLE_SERVICES_PLIST = \"GoogleService-Info.plist\";\nconst GOOGLE_SERVICES_VERSION = \"4.4.4\";\nfunction iosResourceFiles(app) {\n return [\n ...(app.fonts ?? []).map(fontFileName),\n ...app.ios?.googleServicesFile ? [GOOGLE_SERVICES_PLIST] : []\n ];\n}\nfunction patchIosPbxprojResources(rendered, appName, names) {\n let patched = rendered;\n for (const name of names) {\n const fileRef = pbxprojId(`one-resource-file:${name}`);\n const buildFile = pbxprojId(`one-resource-build:${name}`);\n const fileType = name.endsWith(\".plist\") ? \"text.plist.xml\" : \"file\";\n const edits = [\n [\n \"/* Images.xcassets in Resources */ = {isa = PBXBuildFile;\",\n `\t\t${buildFile} /* ${name} in Resources */ = {isa = PBXBuildFile; fileRef = ${fileRef} /* ${name} */; };`\n ],\n [\n \"/* Images.xcassets */ = {isa = PBXFileReference;\",\n `\t\t${fileRef} /* ${name} */ = {isa = PBXFileReference; lastKnownFileType = ${fileType}; name = ${name}; path = ${appName}/${name}; sourceTree = \"<group>\"; };`\n ],\n [\"/* Images.xcassets */,\", `\t\t\t\t${fileRef} /* ${name} */,`],\n [\"/* Images.xcassets in Resources */,\", `\t\t\t\t${buildFile} /* ${name} in Resources */,`]\n ];\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(\n `[vxrn] prebuild template project.pbxproj lost its Images.xcassets anchor (${anchor})`\n );\n }\n patched = next;\n }\n }\n return patched;\n}\nfunction copyAppResources({\n root,\n dest,\n platform,\n app\n}) {\n const copies = (app.fonts ?? []).map((font) => [\n font,\n platform === \"ios\" ? path.join(dest, app.name, fontFileName(font)) : path.join(dest, \"app\", \"src\", \"main\", \"assets\", \"fonts\", fontFileName(font))\n ]);\n const googleServices = platform === \"ios\" ? app.ios?.googleServicesFile : app.android?.googleServicesFile;\n if (googleServices) {\n copies.push([\n googleServices,\n platform === \"ios\" ? path.join(dest, app.name, GOOGLE_SERVICES_PLIST) : path.join(dest, \"app\", \"google-services.json\")\n ]);\n }\n for (const [file, target] of copies) {\n const source = path.resolve(root, file);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app names ${file}, which does not exist`);\n }\n FSExtra.mkdirSync(path.dirname(target), { recursive: true });\n FSExtra.copyFileSync(source, target);\n }\n}\nfunction patchIosPbxprojAppEntitlements(rendered, appName) {\n const edits = [\n [\n \"/* AppDelegate.swift */ = {isa = PBXFileReference;\",\n `\t\t${PUSH_ENTITLEMENTS_FILE_REF_ID} /* ${appName}.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = ${appName}.entitlements; path = ${appName}/${appName}.entitlements; sourceTree = \"<group>\"; };`\n ],\n [\n \"/* AppDelegate.swift */,\",\n `\t\t\t\t${PUSH_ENTITLEMENTS_FILE_REF_ID} /* ${appName}.entitlements */,`\n ]\n ];\n let patched = rendered;\n for (const [anchor, insertion] of edits) {\n const next = insertAfterLine(patched, anchor, insertion);\n if (next === patched) {\n throw new Error(\n `[vxrn] prebuild template project.pbxproj lost its AppDelegate.swift anchor (${anchor})`\n );\n }\n patched = next;\n }\n const setting = `PRODUCT_NAME = ${appName};`;\n if (!patched.includes(setting)) {\n throw new Error(\n \"[vxrn] prebuild template project.pbxproj lost its PRODUCT_NAME anchor\"\n );\n }\n return patched.split(setting).join(\n `${setting}\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = ${appName}/${appName}.entitlements;`\n );\n}\nfunction renderPlistValue(value, indent) {\n if (typeof value === \"string\") return `${indent}<string>${escapeXml(value)}</string>`;\n if (typeof value === \"boolean\") return `${indent}<${value}/>`;\n if (typeof value === \"number\") {\n return Number.isInteger(value) ? `${indent}<integer>${value}</integer>` : `${indent}<real>${value}</real>`;\n }\n if (Array.isArray(value)) {\n return `${indent}<array>\n${value.map((item) => renderPlistValue(item, `${indent}\t`)).join(\"\\n\")}\n${indent}</array>`;\n }\n return `${indent}<dict>\n${renderPlistEntries(value, `${indent}\t`)}\n${indent}</dict>`;\n}\nfunction renderPlistEntries(entries, indent) {\n return Object.entries(entries).map(([key, value]) => `${indent}<key>${escapeXml(key)}</key>\n${renderPlistValue(value, indent)}`).join(\"\\n\");\n}\nfunction appEntitlements(app) {\n const modeled = {};\n if (app.notifications?.push === true || app.ios?.widgets?.pushNotifications) {\n modeled[\"aps-environment\"] = app.notifications?.apsEnvironment ?? notificationsHost.apsEnvironment;\n }\n if (app.ios?.widgets) {\n modeled[\"com.apple.security.application-groups\"] = [app.ios.widgets.appGroup];\n }\n if (app.ios?.associatedDomains?.length) {\n modeled[\"com.apple.developer.associated-domains\"] = app.ios.associatedDomains;\n }\n if (app.ios?.usesAppleSignIn) {\n modeled[\"com.apple.developer.applesignin\"] = [\"Default\"];\n }\n for (const key of Object.keys(app.ios?.entitlements ?? {})) {\n if (key in modeled) {\n throw new Error(\n `[vxrn] native.app.ios.entitlements sets ${key}, which native.app already writes: use its field`\n );\n }\n }\n return { ...modeled, ...app.ios?.entitlements };\n}\nfunction renderEntitlements(entries) {\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n${renderPlistEntries(entries, \"\t\")}\n</dict>\n</plist>\n`;\n}\nfunction patchAndroidMainApplicationUpdatesHost(rendered) {\n const anchor = \"import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] prebuild template MainApplication.kt changed shape: cannot point the ReactHost at One.Updates\"\n );\n }\n return rendered.replace(\n anchor,\n \"import com.margelo.nitro.one.OneUpdatesReactHost.getDefaultReactHost\"\n );\n}\nfunction escapeGradleString(value) {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\nfunction patchAndroidBuildGradleUpdatesManifest(rendered, runtimeVersion) {\n const anchor = \" autolinkLibrariesWithApp()\\n}\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the embedded updates manifest: expected the replaced react block in app/build.gradle\"\n );\n }\n const snippet = `${anchor}\n\n// [vxrn/one] the embedded update manifest lands beside the release bundle\ntasks.matching { it.name.startsWith(\"createBundle\") && it.name.endsWith(\"JsAndAssets\") }.configureEach { bundleTask ->\n // capture the output directory provider at configuration time, so the\n // action below holds no task reference at execution time.\n def bundleDir = bundleTask.jsBundleDir\n bundleTask.doLast {\n def manifestFile = new File(bundleDir.get().asFile, \"one-updates-embedded.json\")\n manifestFile.text = groovy.json.JsonOutput.toJson([\n id: java.util.UUID.randomUUID().toString(),\n createdAt: java.time.Instant.now().toString(),\n runtimeVersion: \"${escapeGradleString(runtimeVersion)}\",\n ])\n }\n}`;\n return rendered.replace(anchor, snippet);\n}\nfunction patchIosPbxprojWidgets(project, app) {\n const name = app.name;\n const bundleId = app.ios.bundleId;\n const deploymentTarget = app.ios.deploymentTarget || \"17.0\";\n const ids = {\n product: \"A10000000000000000000001\",\n target: \"A10000000000000000000002\",\n group: \"A10000000000000000000003\",\n sources: \"A10000000000000000000004\",\n resources: \"A10000000000000000000005\",\n frameworks: \"A10000000000000000000006\",\n embed: \"A10000000000000000000007\",\n dependency: \"A10000000000000000000008\",\n proxy: \"A10000000000000000000009\",\n debug: \"A1000000000000000000000A\",\n release: \"A1000000000000000000000B\",\n config: \"A1000000000000000000000C\",\n widgetSource: \"A1000000000000000000000D\",\n contract: \"A1000000000000000000000E\",\n plist: \"A1000000000000000000000F\",\n entitlements: \"A10000000000000000000010\",\n appEntitlements: \"A10000000000000000000011\",\n bridgeSwift: \"A10000000000000000000012\",\n bridgeObjc: \"A10000000000000000000013\",\n widgetBuild: \"A10000000000000000000014\",\n contractWidgetBuild: \"A10000000000000000000015\",\n contractAppBuild: \"A10000000000000000000016\",\n bridgeSwiftBuild: \"A10000000000000000000017\",\n bridgeObjcBuild: \"A10000000000000000000018\",\n embedBuild: \"A10000000000000000000019\"\n };\n const insert = (anchor, value) => {\n if (!project.includes(anchor))\n throw new Error(`[vxrn] widget target template anchor missing: ${anchor}`);\n project = project.replace(anchor, `${value}\n${anchor}`);\n };\n insert(\n \"/* End PBXBuildFile section */\",\n `\t\t${ids.widgetBuild} /* OneWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.widgetSource} /* OneWidget.swift */; };\n\t\t${ids.contractWidgetBuild} /* OneWidgetContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.contract} /* OneWidgetContract.swift */; };\n\t\t${ids.contractAppBuild} /* OneWidgetContract.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.contract} /* OneWidgetContract.swift */; };\n\t\t${ids.bridgeSwiftBuild} /* OneWidgetsBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.bridgeSwift} /* OneWidgetsBridge.swift */; };\n\t\t${ids.bridgeObjcBuild} /* OneWidgetsBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = ${ids.bridgeObjc} /* OneWidgetsBridge.m */; };\n\t\t${ids.embedBuild} /* OneWidgets.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = ${ids.product} /* OneWidgets.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };`\n );\n insert(\n \"/* End PBXFileReference section */\",\n `\t\t${ids.product} /* OneWidgets.appex */ = {isa = PBXFileReference; explicitFileType = \"wrapper.app-extension\"; includeInIndex = 0; path = OneWidgets.appex; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t${ids.widgetSource} /* OneWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OneWidget.swift; sourceTree = \"<group>\"; };\n\t\t${ids.contract} /* OneWidgetContract.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OneWidgetContract.swift; path = ${name}/OneWidgetContract.swift; sourceTree = \"<group>\"; };\n\t\t${ids.plist} /* WidgetInfo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = WidgetInfo.plist; sourceTree = \"<group>\"; };\n\t\t${ids.entitlements} /* OneWidgets.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = OneWidgets.entitlements; sourceTree = \"<group>\"; };\n\t\t${ids.appEntitlements} /* OneAppWidgets.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = OneAppWidgets.entitlements; path = ${name}/OneAppWidgets.entitlements; sourceTree = \"<group>\"; };\n\t\t${ids.bridgeSwift} /* OneWidgetsBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OneWidgetsBridge.swift; path = ${name}/OneWidgetsBridge.swift; sourceTree = \"<group>\"; };\n\t\t${ids.bridgeObjc} /* OneWidgetsBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = OneWidgetsBridge.m; path = ${name}/OneWidgetsBridge.m; sourceTree = \"<group>\"; };`\n );\n insert(\n \"/* Begin PBXFrameworksBuildPhase section */\",\n `/* Begin PBXCopyFilesBuildPhase section */\n\t\t${ids.embed} /* Embed App Extensions */ = {isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = \"\"; dstSubfolderSpec = 13; files = (${ids.embedBuild} /* OneWidgets.appex in Embed App Extensions */, ); name = \"Embed App Extensions\"; runOnlyForDeploymentPostprocessing = 0; };\n/* End PBXCopyFilesBuildPhase section */\n`\n );\n insert(\n \"/* End PBXFrameworksBuildPhase section */\",\n `\t\t${ids.frameworks} /* Frameworks */ = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };`\n );\n insert(\n \"/* End PBXGroup section */\",\n `\t\t${ids.group} /* OneWidgets */ = {isa = PBXGroup; children = (${ids.widgetSource} /* OneWidget.swift */, ${ids.plist} /* WidgetInfo.plist */, ${ids.entitlements} /* OneWidgets.entitlements */, ); path = OneWidgets; sourceTree = \"<group>\"; };`\n );\n insert(\n \"/* End PBXNativeTarget section */\",\n `\t\t${ids.target} /* OneWidgets */ = {isa = PBXNativeTarget; buildConfigurationList = ${ids.config} /* Build configuration list for PBXNativeTarget \"OneWidgets\" */; buildPhases = (${ids.sources} /* Sources */, ${ids.frameworks} /* Frameworks */, ${ids.resources} /* Resources */, ); buildRules = (); dependencies = (); name = OneWidgets; productName = OneWidgets; productReference = ${ids.product} /* OneWidgets.appex */; productType = \"com.apple.product-type.app-extension\"; };`\n );\n insert(\n \"/* End PBXResourcesBuildPhase section */\",\n `\t\t${ids.resources} /* Resources */ = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; };`\n );\n insert(\n \"/* End PBXSourcesBuildPhase section */\",\n `\t\t${ids.sources} /* Sources */ = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (${ids.widgetBuild} /* OneWidget.swift in Sources */, ${ids.contractWidgetBuild} /* OneWidgetContract.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };`\n );\n insert(\n \"/* Begin XCBuildConfiguration section */\",\n `/* Begin PBXContainerItemProxy section */\n\t\t${ids.proxy} /* PBXContainerItemProxy */ = {isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = ${ids.target}; remoteInfo = OneWidgets; };\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXTargetDependency section */\n\t\t${ids.dependency} /* PBXTargetDependency */ = {isa = PBXTargetDependency; target = ${ids.target} /* OneWidgets */; targetProxy = ${ids.proxy} /* PBXContainerItemProxy */; };\n/* End PBXTargetDependency section */\n`\n );\n const config = (id, mode) => `\t\t${id} /* ${mode} */ = {isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_ENTITLEMENTS = OneWidgets/OneWidgets.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = ${app.ios?.buildNumber || \"1\"}; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = OneWidgets/WidgetInfo.plist; IPHONEOS_DEPLOYMENT_TARGET = ${deploymentTarget}; MARKETING_VERSION = \"${app.version || \"1.0\"}\"; PRODUCT_BUNDLE_IDENTIFIER = ${bundleId}.widgets; PRODUCT_NAME = \"$(TARGET_NAME)\"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = \"iphoneos iphonesimulator\"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = \"${app.ios?.tablet ? \"1,2\" : \"1\"}\"; }; name = ${mode}; };`;\n insert(\n \"/* End XCBuildConfiguration section */\",\n `${config(ids.debug, \"Debug\")}\n${config(ids.release, \"Release\")}`\n );\n insert(\n \"/* End XCConfigurationList section */\",\n `\t\t${ids.config} /* Build configuration list for PBXNativeTarget \"OneWidgets\" */ = {isa = XCConfigurationList; buildConfigurations = (${ids.debug} /* Debug */, ${ids.release} /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; };`\n );\n const one = (anchor, value) => {\n if (!project.includes(anchor))\n throw new Error(`[vxrn] widget target template anchor missing: ${anchor}`);\n project = project.replace(anchor, `${anchor}\n${value}`);\n };\n one(\n \"13B07F961A680F5B00A75B9A /* \" + name + \".app */,\",\n `\t\t\t\t${ids.product} /* OneWidgets.appex */,`\n );\n one(\n \"13B07FAE1A68108700A75B9A /* \" + name + \" */,\",\n `\t\t\t\t${ids.group} /* OneWidgets */,`\n );\n one(\n \"761780EC2CA45674006654EE /* AppDelegate.swift */,\",\n `\t\t\t\t${ids.contract} /* OneWidgetContract.swift */,\n\t\t\t\t${ids.appEntitlements} /* OneAppWidgets.entitlements */,\n\t\t\t\t${ids.bridgeSwift} /* OneWidgetsBridge.swift */,\n\t\t\t\t${ids.bridgeObjc} /* OneWidgetsBridge.m */,`\n );\n one(\n \"761780ED2CA45674006654EE /* AppDelegate.swift in Sources */,\",\n `\t\t\t\t${ids.contractAppBuild} /* OneWidgetContract.swift in Sources */,\n\t\t\t\t${ids.bridgeSwiftBuild} /* OneWidgetsBridge.swift in Sources */,\n\t\t\t\t${ids.bridgeObjcBuild} /* OneWidgetsBridge.m in Sources */,`\n );\n one(\n \"13B07F861A680F5B00A75B9A /* \" + name + \" */,\",\n `\t\t\t\t${ids.target} /* OneWidgets */,`\n );\n one(\n \"13B07F8E1A680F5B00A75B9A /* Resources */,\",\n `\t\t\t\t${ids.embed} /* Embed App Extensions */,`\n );\n one(\n \"LastSwiftMigration = 1120;\\n\t\t\t\t\t};\",\n `\t\t\t\t\t${ids.target} = { CreatedOnToolsVersion = 16.0; LastSwiftMigration = 1600; };`\n );\n one(\"dependencies = (\", `\t\t\t\t${ids.dependency} /* PBXTargetDependency */,`);\n const appBundleSetting = `PRODUCT_BUNDLE_IDENTIFIER = \"${bundleId}\";`;\n if (project.split(appBundleSetting).length !== 3) {\n throw new Error(\"[vxrn] expected two app bundle settings for widget entitlements\");\n }\n project = project.replaceAll(\n appBundleSetting,\n `CODE_SIGN_ENTITLEMENTS = ${name}/OneAppWidgets.entitlements;\n\t\t\t\t${appBundleSetting}`\n );\n return project;\n}\nfunction generateSceneDelegate(args) {\n const { dest, platform, app } = args;\n if (platform !== \"ios\") return;\n FSExtra.writeFileSync(\n path.join(dest, app.name, \"SceneDelegate.swift\"),\n renderSceneDelegateSwift(app.name)\n );\n const entitlements = appEntitlements(app);\n if (Object.keys(entitlements).length && !app.ios?.widgets) {\n FSExtra.writeFileSync(\n path.join(dest, app.name, `${app.name}.entitlements`),\n renderEntitlements(entitlements)\n );\n }\n}\nfunction generateIosAppIntents(dest, platform, app) {\n if (platform !== \"ios\" || !app.ios?.appIntents) return;\n FSExtra.writeFileSync(\n path.join(dest, app.name, \"OneAppIntents.swift\"),\n renderIosAppIntentsSwift(app.ios.appIntents.actions)\n );\n}\nfunction generateIosWidgets(dest, app) {\n const widgets = app.ios?.widgets;\n if (!widgets) return;\n const appDir = path.join(dest, app.name);\n const extensionDir = path.join(dest, \"OneWidgets\");\n FSExtra.mkdirSync(extensionDir, { recursive: true });\n const entitlements = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\"><dict><key>com.apple.security.application-groups</key><array><string>${escapeXml(widgets.appGroup)}</string></array></dict></plist>\n`;\n FSExtra.writeFileSync(\n path.join(appDir, \"OneAppWidgets.entitlements\"),\n renderEntitlements(appEntitlements(app))\n );\n FSExtra.writeFileSync(path.join(extensionDir, \"OneWidgets.entitlements\"), entitlements);\n FSExtra.writeFileSync(\n path.join(extensionDir, \"WidgetInfo.plist\"),\n `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\"><dict>\n <key>CFBundleDevelopmentRegion</key><string>$(DEVELOPMENT_LANGUAGE)</string>\n <key>CFBundleDisplayName</key><string>${escapeXml(widgets.displayName)}</string>\n <key>CFBundleExecutable</key><string>$(EXECUTABLE_NAME)</string>\n <key>CFBundleIdentifier</key><string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>\n <key>CFBundleName</key><string>$(PRODUCT_NAME)</string>\n <key>CFBundlePackageType</key><string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>\n <key>CFBundleShortVersionString</key><string>${escapeXml(app.version || \"1.0\")}</string>\n <key>CFBundleVersion</key><string>${escapeXml(app.ios?.buildNumber || \"1\")}</string>\n <key>NSExtension</key><dict><key>NSExtensionPointIdentifier</key><string>com.apple.widgetkit-extension</string></dict>\n</dict></plist>\n`\n );\n FSExtra.writeFileSync(\n path.join(appDir, \"OneWidgetContract.swift\"),\n `import Foundation\nimport ActivityKit\n\nenum OneWidgetContract {\n static let appGroup = ${JSON.stringify(widgets.appGroup)}\n static let kind = ${JSON.stringify(widgets.kind)}\n static let dataKey = \"one.widget.data\"\n\n struct Data: Codable {\n let title: String\n let value: String\n let subtitle: String\n let layout: String?\n }\n\n struct Attributes: ActivityAttributes {\n struct ContentState: Codable, Hashable {\n let status: String\n let value: String\n let layout: String?\n }\n let title: String\n }\n}\n`\n );\n FSExtra.writeFileSync(\n path.join(extensionDir, \"OneWidget.swift\"),\n `import SwiftUI\nimport WidgetKit\nimport ActivityKit\n\nstruct OneWidgetNode: Decodable {\n let type: String\n let text: String?\n let style: Style?\n let children: [OneWidgetNode]?\n let systemName: String?\n let value: Double?\n let total: Double?\n let fill: String?\n let cornerRadius: Double?\n let url: String?\n\n struct Style: Decodable {\n let color: String?\n let backgroundColor: String?\n let fontSize: Double?\n let fontWeight: String?\n let fontDesign: String?\n let padding: Double?\n let borderRadius: Double?\n let spacing: Double?\n let width: Double?\n let height: Double?\n let opacity: Double?\n let lineLimit: Int?\n let alignment: String?\n }\n}\n\nstruct OneActivityView: Decodable {\n let lockScreen: OneWidgetNode\n let compactLeading: OneWidgetNode?\n let compactTrailing: OneWidgetNode?\n let minimal: OneWidgetNode?\n let expandedLeading: OneWidgetNode?\n let expandedTrailing: OneWidgetNode?\n let expandedBottom: OneWidgetNode?\n}\n\nprivate func oneDecode<T: Decodable>(_ value: String?, as type: T.Type) -> T? {\n guard let value, let data = value.data(using: .utf8) else { return nil }\n return try? JSONDecoder().decode(type, from: data)\n}\n\nprivate func oneColor(_ hex: String?) -> Color? {\n guard let hex, hex.count == 7, hex.first == \"#\",\n let rgb = Int(hex.dropFirst(), radix: 16) else { return nil }\n return Color(red: Double((rgb >> 16) & 255) / 255,\n green: Double((rgb >> 8) & 255) / 255,\n blue: Double(rgb & 255) / 255)\n}\n\nstruct OneWidgetRendered: View {\n let node: OneWidgetNode\n\n private var alignment: Alignment {\n switch node.style?.alignment {\n case \"leading\": .leading\n case \"trailing\": .trailing\n default: .center\n }\n }\n\n private var horizontalAlignment: HorizontalAlignment {\n switch node.style?.alignment {\n case \"center\": .center\n case \"trailing\": .trailing\n default: .leading\n }\n }\n\n private var weight: Font.Weight {\n switch node.style?.fontWeight {\n case \"medium\": .medium\n case \"semibold\": .semibold\n case \"bold\": .bold\n default: .regular\n }\n }\n\n private var design: Font.Design {\n switch node.style?.fontDesign {\n case \"rounded\": .rounded\n case \"serif\": .serif\n case \"monospaced\": .monospaced\n default: .default\n }\n }\n\n var body: some View {\n Group {\n switch node.type {\n case \"text\":\n Text(node.text ?? \"\")\n .font(.system(size: CGFloat(node.style?.fontSize ?? 16), weight: weight, design: design))\n case \"vstack\":\n VStack(alignment: horizontalAlignment, spacing: CGFloat(node.style?.spacing ?? 8)) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n case \"hstack\":\n HStack(spacing: CGFloat(node.style?.spacing ?? 8)) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n case \"zstack\":\n ZStack(alignment: alignment) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n case \"spacer\": Spacer(minLength: 0)\n case \"divider\": Divider()\n case \"image\":\n if let systemName = node.systemName {\n Image(systemName: systemName)\n .font(.system(size: CGFloat(node.style?.fontSize ?? 20), weight: weight))\n }\n case \"progress\":\n ProgressView(value: node.value ?? 0, total: node.total ?? 1)\n .tint(oneColor(node.style?.color))\n case \"gauge\":\n Gauge(value: node.value ?? 0, in: 0...(node.total ?? 1)) { EmptyView() }\n .gaugeStyle(.accessoryCircular)\n .tint(oneColor(node.style?.color))\n case \"circle\":\n Circle().fill(oneColor(node.fill) ?? .primary)\n case \"rectangle\":\n Rectangle().fill(oneColor(node.fill) ?? .primary)\n case \"rounded-rectangle\":\n RoundedRectangle(cornerRadius: CGFloat(node.cornerRadius ?? 8))\n .fill(oneColor(node.fill) ?? .primary)\n case \"link\":\n if let url = node.url.flatMap(URL.init(string:)) {\n Link(destination: url) {\n ForEach(Array((node.children ?? []).enumerated()), id: \\\\.offset) { _, child in\n OneWidgetRendered(node: child)\n }\n }\n }\n default: EmptyView()\n }\n }\n .foregroundColor(oneColor(node.style?.color))\n .lineLimit(node.style?.lineLimit)\n .frame(width: node.style?.width.map { CGFloat($0) },\n height: node.style?.height.map { CGFloat($0) },\n alignment: alignment)\n .opacity(node.style?.opacity ?? 1)\n .padding(CGFloat(node.style?.padding ?? 0))\n .background { if let fill = oneColor(node.style?.backgroundColor) { fill } }\n .clipShape(RoundedRectangle(cornerRadius: CGFloat(node.style?.borderRadius ?? 0)))\n }\n}\n\nstruct OneWidgetEntry: TimelineEntry {\n let date: Date\n let data: OneWidgetContract.Data\n}\n\nstruct OneWidgetProvider: TimelineProvider {\n func placeholder(in context: Context) -> OneWidgetEntry {\n OneWidgetEntry(date: .now, data: .init(title: ${JSON.stringify(widgets.displayName)}, value: \"\", subtitle: \"\", layout: nil))\n }\n\n func getSnapshot(in context: Context, completion: @escaping (OneWidgetEntry) -> Void) {\n completion(entry())\n }\n\n func getTimeline(in context: Context, completion: @escaping (Timeline<OneWidgetEntry>) -> Void) {\n completion(Timeline(entries: [entry()], policy: .never))\n }\n\n private func entry() -> OneWidgetEntry {\n let stored = UserDefaults(suiteName: OneWidgetContract.appGroup)?.data(forKey: OneWidgetContract.dataKey)\n let data = stored.flatMap { try? JSONDecoder().decode(OneWidgetContract.Data.self, from: $0) }\n ?? .init(title: ${JSON.stringify(widgets.displayName)}, value: \"\", subtitle: \"\", layout: nil)\n return OneWidgetEntry(date: .now, data: data)\n }\n}\n\nstruct OneWidget: Widget {\n var body: some WidgetConfiguration {\n StaticConfiguration(kind: OneWidgetContract.kind, provider: OneWidgetProvider()) { entry in\n Group {\n if let layout = oneDecode(entry.data.layout, as: OneWidgetNode.self) {\n OneWidgetRendered(node: layout)\n } else {\n VStack(alignment: .leading, spacing: 8) {\n Text(entry.data.title).font(.headline)\n Text(entry.data.value).font(.title2).bold()\n Text(entry.data.subtitle).font(.caption)\n }\n }\n }\n .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)\n .containerBackground(.fill.tertiary, for: .widget)\n }\n .configurationDisplayName(${JSON.stringify(widgets.displayName)})\n .description(${JSON.stringify(widgets.description)})\n .supportedFamilies([.systemSmall, .systemMedium])\n }\n}\n\nstruct OneLiveActivity: Widget {\n var body: some WidgetConfiguration {\n ActivityConfiguration(for: OneWidgetContract.Attributes.self) { context in\n Group {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self) {\n OneWidgetRendered(node: layout.lockScreen)\n } else {\n HStack {\n VStack(alignment: .leading) {\n Text(context.attributes.title).font(.headline)\n Text(context.state.status)\n }\n Spacer()\n Text(context.state.value).bold()\n }\n }\n }\n .padding()\n .activityBackgroundTint(.blue.opacity(0.2))\n } dynamicIsland: { context in\n DynamicIsland {\n DynamicIslandExpandedRegion(.leading) {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let leading = layout.expandedLeading {\n OneWidgetRendered(node: leading)\n } else {\n Text(context.attributes.title)\n }\n }\n DynamicIslandExpandedRegion(.trailing) {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let trailing = layout.expandedTrailing {\n OneWidgetRendered(node: trailing)\n } else {\n Text(context.state.value)\n }\n }\n DynamicIslandExpandedRegion(.bottom) {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self) {\n OneWidgetRendered(node: layout.expandedBottom ?? layout.lockScreen)\n } else {\n Text(context.state.status)\n }\n }\n } compactLeading: {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let leading = layout.compactLeading {\n OneWidgetRendered(node: leading)\n } else {\n Text(context.attributes.title)\n }\n } compactTrailing: {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let trailing = layout.compactTrailing {\n OneWidgetRendered(node: trailing)\n } else {\n Text(context.state.value)\n }\n } minimal: {\n if let layout = oneDecode(context.state.layout, as: OneActivityView.self),\n let minimal = layout.minimal {\n OneWidgetRendered(node: minimal)\n } else {\n Text(context.state.value)\n }\n }\n }\n }\n}\n\n@main\nstruct OneWidgetsBundle: WidgetBundle {\n var body: some Widget {\n OneWidget()\n OneLiveActivity()\n }\n}\n`\n );\n FSExtra.writeFileSync(\n path.join(appDir, \"OneWidgetsBridge.m\"),\n `#import <React/RCTBridgeModule.h>\n#import <React/RCTEventEmitter.h>\n\n@interface RCT_EXTERN_MODULE(OneWidgetsBridge, RCTEventEmitter)\nRCT_EXTERN_METHOD(writeWidget:(NSString *)title value:(NSString *)value subtitle:(NSString *)subtitle resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(writeView:(NSString *)layout resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(start:(NSString *)title status:(NSString *)status value:(NSString *)value push:(BOOL)push resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(startView:(NSString *)title layout:(NSString *)layout push:(BOOL)push resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(update:(NSString *)identifier status:(NSString *)status value:(NSString *)value resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(updateView:(NSString *)identifier layout:(NSString *)layout resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(end:(NSString *)identifier resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\nRCT_EXTERN_METHOD(pushToken:(NSString *)identifier resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)\n@end\n`\n );\n FSExtra.writeFileSync(\n path.join(appDir, \"OneWidgetsBridge.swift\"),\n `import Foundation\nimport React\nimport WidgetKit\nimport ActivityKit\n\n@objc(OneWidgetsBridge)\nclass OneWidgetsBridge: RCTEventEmitter {\n private var tokenTasks: [String: Task<Void, Never>] = [:]\n\n override func supportedEvents() -> [String]! { [\"oneLiveActivityPushToken\"] }\n\n override func startObserving() {\n for activity in Activity<OneWidgetContract.Attributes>.activities {\n observeToken(activity)\n }\n }\n\n override func stopObserving() {\n for task in tokenTasks.values { task.cancel() }\n tokenTasks.removeAll()\n }\n\n private func observeToken(_ activity: Activity<OneWidgetContract.Attributes>) {\n guard tokenTasks[activity.id] == nil else { return }\n tokenTasks[activity.id] = Task { [weak self] in\n for await token in activity.pushTokenUpdates {\n self?.sendEvent(withName: \"oneLiveActivityPushToken\", body: [\n \"id\": activity.id,\n \"token\": token.map { String(format: \"%02x\", $0) }.joined(),\n ])\n }\n }\n }\n\n @objc(writeWidget:value:subtitle:resolver:rejecter:)\n func writeWidget(_ title: String, value: String, subtitle: String,\n resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {\n guard let defaults = UserDefaults(suiteName: OneWidgetContract.appGroup) else {\n reject(\"app_group\", \"Cannot open the configured App Group\", nil)\n return\n }\n do {\n defaults.set(try JSONEncoder().encode(OneWidgetContract.Data(title: title, value: value, subtitle: subtitle, layout: nil)),\n forKey: OneWidgetContract.dataKey)\n WidgetCenter.shared.reloadTimelines(ofKind: OneWidgetContract.kind)\n resolve(nil)\n } catch {\n reject(\"widget_write\", error.localizedDescription, error)\n }\n }\n\n @objc(writeView:resolver:rejecter:)\n func writeView(_ layout: String, resolver resolve: RCTPromiseResolveBlock,\n rejecter reject: RCTPromiseRejectBlock) {\n guard let defaults = UserDefaults(suiteName: OneWidgetContract.appGroup) else {\n reject(\"app_group\", \"Cannot open the configured App Group\", nil)\n return\n }\n do {\n defaults.set(try JSONEncoder().encode(OneWidgetContract.Data(title: \"\", value: \"\", subtitle: \"\", layout: layout)),\n forKey: OneWidgetContract.dataKey)\n WidgetCenter.shared.reloadTimelines(ofKind: OneWidgetContract.kind)\n resolve(nil)\n } catch {\n reject(\"widget_write\", error.localizedDescription, error)\n }\n }\n\n @objc(start:status:value:push:resolver:rejecter:)\n func start(_ title: String, status: String, value: String, push: Bool,\n resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {\n guard ActivityAuthorizationInfo().areActivitiesEnabled else {\n reject(\"activities_disabled\", \"Live Activities are disabled\", nil)\n return\n }\n do {\n let activity = try Activity<OneWidgetContract.Attributes>.request(\n attributes: .init(title: title),\n content: .init(state: .init(status: status, value: value, layout: nil), staleDate: nil),\n pushType: push ? .token : nil\n )\n observeToken(activity)\n resolve(activity.id)\n } catch {\n reject(\"activity_start\", error.localizedDescription, error)\n }\n }\n\n @objc(startView:layout:push:resolver:rejecter:)\n func startView(_ title: String, layout: String, push: Bool,\n resolver resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) {\n guard ActivityAuthorizationInfo().areActivitiesEnabled else {\n reject(\"activities_disabled\", \"Live Activities are disabled\", nil)\n return\n }\n do {\n let activity = try Activity<OneWidgetContract.Attributes>.request(\n attributes: .init(title: title),\n content: .init(state: .init(status: \"\", value: \"\", layout: layout), staleDate: nil),\n pushType: push ? .token : nil\n )\n observeToken(activity)\n resolve(activity.id)\n } catch {\n reject(\"activity_start\", error.localizedDescription, error)\n }\n }\n\n @objc(update:status:value:resolver:rejecter:)\n func update(_ identifier: String, status: String, value: String,\n resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n Task {\n await activity.update(.init(state: .init(status: status, value: value, layout: nil), staleDate: nil))\n resolve(nil)\n }\n }\n\n @objc(updateView:layout:resolver:rejecter:)\n func updateView(_ identifier: String, layout: String,\n resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n Task {\n await activity.update(.init(state: .init(status: \"\", value: \"\", layout: layout), staleDate: nil))\n resolve(nil)\n }\n }\n\n @objc(end:resolver:rejecter:)\n func end(_ identifier: String, resolver resolve: @escaping RCTPromiseResolveBlock,\n rejecter reject: @escaping RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n Task {\n await activity.end(nil, dismissalPolicy: .immediate)\n tokenTasks.removeValue(forKey: identifier)?.cancel()\n resolve(nil)\n }\n }\n\n @objc(pushToken:resolver:rejecter:)\n func pushToken(_ identifier: String, resolver resolve: RCTPromiseResolveBlock,\n rejecter reject: RCTPromiseRejectBlock) {\n guard let activity = Activity<OneWidgetContract.Attributes>.activities.first(where: { $0.id == identifier }) else {\n reject(\"activity_missing\", \"Live Activity not found\", nil)\n return\n }\n if let data = activity.pushToken {\n resolve(data.map { String(format: \"%02x\", $0) }.joined())\n } else {\n resolve(NSNull())\n }\n }\n}\n`\n );\n}\nconst IPAD_APP_ICON_SIZES = [\n [\"20x20\", [\"1x\", \"2x\"]],\n [\"29x29\", [\"1x\", \"2x\"]],\n [\"40x40\", [\"1x\", \"2x\"]],\n [\"76x76\", [\"1x\", \"2x\"]],\n [\"83.5x83.5\", [\"2x\"]]\n];\nasync function generateAppIcons(args) {\n const { root, dest, platform, app } = args;\n if (!app.icon) return;\n if (platform === \"ios\") {\n const assetsDir = path.join(dest, app.name, \"Images.xcassets\");\n const template = JSON.parse(FSExtra.readFileSync(path.join(assetsDir, \"AppIcon.appiconset\", \"Contents.json\"), \"utf8\"));\n const icons = [\n [\"AppIcon\", app.icon],\n ...Object.entries(app.ios?.alternateIcons ?? {})\n ];\n for (const [name, icon] of icons) {\n const source2 = path.resolve(root, icon.source);\n if (!FSExtra.existsSync(source2)) {\n throw new Error(`[vxrn] native.app icon source does not exist: ${source2}`);\n }\n const metadata2 = await sharp(source2).metadata();\n if (metadata2.width !== metadata2.height || metadata2.width === void 0 || metadata2.width < 1024) {\n throw new Error(`[vxrn] native.app icon source must be a square image at least 1024px wide: ${source2}`);\n }\n const iconDir = path.join(assetsDir, `${name}.appiconset`);\n FSExtra.mkdirSync(iconDir, { recursive: true });\n const contents = structuredClone(template);\n if (app.ios?.tablet) {\n for (const [size, scales] of IPAD_APP_ICON_SIZES) {\n for (const scale of scales) contents.images.push({ idiom: \"ipad\", scale, size });\n }\n }\n for (const image of contents.images) {\n const points = Number.parseFloat(image.size.split(\"x\")[0]);\n const scale = Number.parseInt(image.scale, 10);\n const pixels = points * scale;\n const filename = image.idiom === \"ios-marketing\" ? \"icon-1024.png\" : `icon-${points}@${image.scale}.png`;\n image.filename = filename;\n await sharp(source2).rotate().resize(pixels, pixels, { fit: \"cover\" }).flatten({ background: icon.backgroundColor }).png().toFile(path.join(iconDir, filename));\n }\n FSExtra.writeFileSync(path.join(iconDir, \"Contents.json\"), `${JSON.stringify(contents, null, 2)}\n`);\n }\n return;\n }\n const source = path.resolve(root, app.icon.source);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.icon source does not exist: ${source}`);\n }\n const metadata = await sharp(source).metadata();\n if (metadata.width !== metadata.height || metadata.width === void 0 || metadata.width < 1024) {\n throw new Error(\"[vxrn] native.app.icon source must be a square image at least 1024px wide\");\n }\n for (const [density, multiplier] of Object.entries(ANDROID_DENSITIES)) {\n const pixels = 48 * multiplier;\n const iconDir = path.join(dest, \"app\", \"src\", \"main\", \"res\", `mipmap-${density}`);\n for (const filename of [\"ic_launcher.png\", \"ic_launcher_round.png\"]) {\n await sharp(source).rotate().resize(pixels, pixels, { fit: \"cover\" }).flatten({ background: app.icon.backgroundColor }).png().toFile(path.join(iconDir, filename));\n }\n }\n}\nasync function generateAdaptiveIcon(args) {\n const { root, dest, app } = args;\n const adaptiveIcon = app.android?.adaptiveIcon;\n if (!adaptiveIcon) return;\n const res = path.join(dest, \"app\", \"src\", \"main\", \"res\");\n const layers = {\n foreground: adaptiveIcon.foreground,\n background: adaptiveIcon.background,\n monochrome: adaptiveIcon.monochrome\n };\n for (const [layer, file] of Object.entries(layers)) {\n if (!file) continue;\n const source = path.resolve(root, file);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.android.adaptiveIcon.${layer} does not exist: ${source}`);\n }\n for (const [density, multiplier] of Object.entries(ANDROID_DENSITIES)) {\n const pixels = 108 * multiplier;\n await sharp(source).rotate().resize(pixels, pixels, { fit: \"cover\" }).png().toFile(path.join(res, `mipmap-${density}`, `ic_launcher_${layer}.png`));\n }\n }\n if (!adaptiveIcon.background) {\n FSExtra.writeFileSync(\n path.join(res, \"values\", \"ic_launcher_background.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"ic_launcher_background\">${adaptiveIcon.backgroundColor ?? \"#FFFFFF\"}</color>\n</resources>\n`\n );\n }\n const adaptiveXml = `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <background android:drawable=\"${adaptiveIcon.background ? \"@mipmap/ic_launcher_background\" : \"@color/ic_launcher_background\"}\"/>\n <foreground android:drawable=\"@mipmap/ic_launcher_foreground\"/>\n${adaptiveIcon.monochrome ? ' <monochrome android:drawable=\"@mipmap/ic_launcher_monochrome\"/>\\n' : \"\"}</adaptive-icon>\n`;\n const anydpi = path.join(res, \"mipmap-anydpi-v26\");\n FSExtra.mkdirSync(anydpi, { recursive: true });\n for (const filename of [\"ic_launcher.xml\", \"ic_launcher_round.xml\"]) {\n FSExtra.writeFileSync(path.join(anydpi, filename), adaptiveXml);\n }\n}\nconst IOS_DARK_APPEARANCE = [{ appearance: \"luminosity\", value: \"dark\" }];\nfunction srgb(hex) {\n return {\n red: Number.parseInt(hex.slice(1, 3), 16) / 255,\n green: Number.parseInt(hex.slice(3, 5), 16) / 255,\n blue: Number.parseInt(hex.slice(5, 7), 16) / 255\n };\n}\nfunction xcodeColorSet(light, dark) {\n const entry = (hex) => {\n const { red, green, blue } = srgb(hex);\n return {\n color: {\n \"color-space\": \"srgb\",\n components: {\n red: red.toFixed(3),\n green: green.toFixed(3),\n blue: blue.toFixed(3),\n alpha: \"1.000\"\n }\n },\n idiom: \"universal\"\n };\n };\n return `${JSON.stringify(\n {\n colors: [\n entry(light),\n ...dark ? [{ appearances: IOS_DARK_APPEARANCE, ...entry(dark) }] : []\n ],\n info: { author: \"xcode\", version: 1 }\n },\n null,\n 2\n )}\n`;\n}\nfunction generateAccentColor(args) {\n const accent = args.app.ios?.accentColor;\n if (!accent) return;\n const colorDir = path.join(args.dest, args.app.name, \"Images.xcassets\", \"AccentColor.colorset\");\n FSExtra.mkdirSync(colorDir, { recursive: true });\n FSExtra.writeFileSync(\n path.join(colorDir, \"Contents.json\"),\n xcodeColorSet(accent.light, accent.dark)\n );\n}\nasync function generateSplashScreen(args) {\n const { root, dest, platform, app } = args;\n if (!app.splash) return;\n const cover = app.splash.resizeMode === \"cover\";\n const prepareArtwork = async (sourcePath, backgroundColor) => {\n const source = path.resolve(root, sourcePath);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.splash source does not exist: ${source}`);\n }\n const { width: sourceWidth, format } = await sharp(source).metadata();\n const density = format === \"svg\" && sourceWidth && !cover ? Math.min(2400, Math.ceil(72 * 4 * (app.splash?.width ?? 200) / sourceWidth)) : void 0;\n const image = sharp(source, density ? { density } : {}).rotate();\n const prepared = await (cover ? image : image.trim({ background: backgroundColor })).png().toBuffer({ resolveWithObject: true });\n if (!prepared.info.width || !prepared.info.height) {\n throw new Error(\"[vxrn] native.app.splash source must be an image\");\n }\n return prepared;\n };\n const { data: artwork, info: metadata } = await prepareArtwork(\n app.splash.source,\n app.splash.backgroundColor\n );\n const dark = app.splash.dark;\n const darkArtwork = dark?.source ? (await prepareArtwork(dark.source, dark.backgroundColor)).data : void 0;\n const artworkWidth = app.splash.width ?? 200;\n const artworkHeight = Number(\n (artworkWidth * (metadata.height / metadata.width)).toFixed(3)\n );\n const readBackground = (sourcePath) => {\n const source = path.resolve(root, sourcePath);\n if (!FSExtra.existsSync(source)) {\n throw new Error(`[vxrn] native.app.splash backgroundImage does not exist: ${source}`);\n }\n return sharp(source).rotate().png().toBuffer({ resolveWithObject: true });\n };\n if (platform === \"ios\") {\n const appDir = path.join(dest, app.name);\n const assets = path.join(appDir, \"Images.xcassets\");\n const writeImageSet = async (name, light, dark2, pointWidth) => {\n const dir = path.join(assets, `${name}.imageset`);\n FSExtra.mkdirSync(dir, { recursive: true });\n const scales = pointWidth === void 0 ? [1] : [1, 2, 3];\n const images = [];\n for (const [variant, suffix, appearances] of [\n [light, \"\", void 0],\n [dark2, \"-dark\", IOS_DARK_APPEARANCE]\n ]) {\n if (!variant) continue;\n for (const scale of scales) {\n const filename = `${name.toLowerCase()}${suffix}${scale === 1 ? \"\" : `@${scale}x`}.png`;\n const output = sharp(variant);\n await (pointWidth === void 0 ? output : output.resize({ width: Math.round(pointWidth * scale) })).png().toFile(path.join(dir, filename));\n images.push({\n ...appearances ? { appearances } : {},\n filename,\n idiom: \"universal\",\n scale: `${scale}x`\n });\n }\n }\n FSExtra.writeFileSync(\n path.join(dir, \"Contents.json\"),\n `${JSON.stringify({ images, info: { author: \"xcode\", version: 1 } }, null, 2)}\n`\n );\n };\n await writeImageSet(\"Splash\", artwork, darkArtwork, cover ? void 0 : artworkWidth);\n const background2 = app.splash.backgroundImage ? await readBackground(app.splash.backgroundImage) : void 0;\n const darkBackground2 = dark?.backgroundImage ? (await readBackground(dark.backgroundImage)).data : void 0;\n if (background2) {\n await writeImageSet(\"SplashBackgroundImage\", background2.data, darkBackground2, void 0);\n }\n const colorDir = path.join(assets, \"SplashBackground.colorset\");\n FSExtra.mkdirSync(colorDir, { recursive: true });\n FSExtra.writeFileSync(\n path.join(colorDir, \"Contents.json\"),\n xcodeColorSet(app.splash.backgroundColor, dark?.backgroundColor)\n );\n const { red, green, blue } = srgb(app.splash.backgroundColor);\n FSExtra.writeFileSync(\n path.join(appDir, \"LaunchScreen.storyboard\"),\n `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"15702\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"launch-controller\">\n <device id=\"retina6_12\" orientation=\"portrait\" appearance=\"light\"/>\n <dependencies>\n <deployment identifier=\"iOS\"/>\n <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"15704\"/>\n <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n </dependencies>\n <scenes>\n <scene sceneID=\"launch-scene\">\n <objects>\n <viewController id=\"launch-controller\" sceneMemberID=\"viewController\">\n <view key=\"view\" contentMode=\"scaleToFill\" id=\"launch-view\">\n <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"390\" height=\"844\"/>\n <subviews>${background2 ? `\n <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFill\" image=\"SplashBackgroundImage\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"splash-background\"/>` : \"\"}\n <imageView userInteractionEnabled=\"NO\" contentMode=\"${cover ? \"scaleAspectFill\" : \"scaleAspectFit\"}\" image=\"Splash\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"splash-image\"/>\n </subviews>\n <color key=\"backgroundColor\" name=\"SplashBackground\"/>\n <constraints>${background2 ? `\n <constraint firstItem=\"splash-background\" firstAttribute=\"leading\" secondItem=\"launch-view\" secondAttribute=\"leading\" id=\"splash-background-leading\"/>\n <constraint firstItem=\"splash-background\" firstAttribute=\"trailing\" secondItem=\"launch-view\" secondAttribute=\"trailing\" id=\"splash-background-trailing\"/>\n <constraint firstItem=\"splash-background\" firstAttribute=\"top\" secondItem=\"launch-view\" secondAttribute=\"top\" id=\"splash-background-top\"/>\n <constraint firstItem=\"splash-background\" firstAttribute=\"bottom\" secondItem=\"launch-view\" secondAttribute=\"bottom\" id=\"splash-background-bottom\"/>` : \"\"}\n${cover ? ` <constraint firstItem=\"splash-image\" firstAttribute=\"leading\" secondItem=\"launch-view\" secondAttribute=\"leading\" id=\"splash-leading\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"trailing\" secondItem=\"launch-view\" secondAttribute=\"trailing\" id=\"splash-trailing\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"top\" secondItem=\"launch-view\" secondAttribute=\"top\" id=\"splash-top\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"bottom\" secondItem=\"launch-view\" secondAttribute=\"bottom\" id=\"splash-bottom\"/>` : ` <constraint firstItem=\"splash-image\" firstAttribute=\"centerX\" secondItem=\"launch-view\" secondAttribute=\"centerX\" id=\"splash-center-x\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"centerY\" secondItem=\"launch-view\" secondAttribute=\"centerY\" id=\"splash-center-y\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"width\" constant=\"${artworkWidth}\" id=\"splash-width\"/>\n <constraint firstItem=\"splash-image\" firstAttribute=\"height\" constant=\"${artworkHeight}\" id=\"splash-height\"/>`}\n </constraints>\n </view>\n </viewController>\n <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"launch-responder\" sceneMemberID=\"firstResponder\"/>\n </objects>\n </scene>\n </scenes>\n <resources>\n <image name=\"Splash\" width=\"${cover ? metadata.width : artworkWidth}\" height=\"${cover ? metadata.height : artworkHeight}\"/>${background2 ? `\n <image name=\"SplashBackgroundImage\" width=\"${background2.info.width}\" height=\"${background2.info.height}\"/>` : \"\"}\n <namedColor name=\"SplashBackground\">\n <color red=\"${red}\" green=\"${green}\" blue=\"${blue}\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n </namedColor>\n </resources>\n</document>\n`\n );\n return;\n }\n const mainRes = path.join(dest, \"app\", \"src\", \"main\", \"res\");\n const drawable = path.join(mainRes, \"drawable\");\n const variants = [[artwork, \"drawable\"]];\n if (darkArtwork) variants.push([darkArtwork, \"drawable-night\"]);\n for (const [variantArtwork, drawablePrefix] of variants) {\n for (const [density, multiplier] of Object.entries(ANDROID_DENSITIES)) {\n const canvasSize = 288 * multiplier;\n const imageSize = Math.round(artworkWidth * multiplier);\n const contained = await sharp(variantArtwork).resize(imageSize, imageSize, {\n fit: \"contain\",\n background: { r: 0, g: 0, b: 0, alpha: 0 }\n }).png().toBuffer();\n const drawableDensity = path.join(mainRes, `${drawablePrefix}-${density}`);\n FSExtra.mkdirSync(drawableDensity, { recursive: true });\n await sharp({\n create: {\n width: canvasSize,\n height: canvasSize,\n channels: 4,\n background: { r: 0, g: 0, b: 0, alpha: 0 }\n }\n }).composite([\n {\n input: contained,\n left: Math.round((canvasSize - imageSize) / 2),\n top: Math.round((canvasSize - imageSize) / 2)\n }\n ]).png().toFile(path.join(drawableDensity, \"splash.png\"));\n }\n }\n const background = app.splash.backgroundImage ? await readBackground(app.splash.backgroundImage) : void 0;\n const darkBackground = dark?.backgroundImage ? (await readBackground(dark.backgroundImage)).data : void 0;\n if (background) {\n const nodpi = path.join(mainRes, \"drawable-nodpi\");\n FSExtra.mkdirSync(nodpi, { recursive: true });\n FSExtra.writeFileSync(path.join(nodpi, \"splash_background.png\"), background.data);\n if (darkBackground) {\n const nightNodpi = path.join(mainRes, \"drawable-night-nodpi\");\n FSExtra.mkdirSync(nightNodpi, { recursive: true });\n FSExtra.writeFileSync(\n path.join(nightNodpi, \"splash_background.png\"),\n darkBackground\n );\n }\n }\n FSExtra.writeFileSync(\n path.join(drawable, \"launch_screen.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layer-list xmlns:android=\"http://schemas.android.com/apk/res/android\">\n <item android:drawable=\"@color/splash_background\" />\n${background ? ` <item>\n <bitmap android:gravity=\"fill\" android:src=\"@drawable/splash_background\" />\n </item>\n` : \"\"} <item>\n <bitmap android:gravity=\"center\" android:src=\"@drawable/splash\" />\n </item>\n</layer-list>\n`\n );\n FSExtra.writeFileSync(\n path.join(mainRes, \"values\", \"colors.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"splash_background\">${app.splash.backgroundColor}</color>\n</resources>\n`\n );\n if (dark) {\n FSExtra.mkdirSync(path.join(mainRes, \"values-night\"), { recursive: true });\n FSExtra.writeFileSync(\n path.join(mainRes, \"values-night\", \"colors.xml\"),\n `<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <color name=\"splash_background\">${dark.backgroundColor}</color>\n</resources>\n`\n );\n }\n const stylesPath = path.join(mainRes, \"values\", \"styles.xml\");\n const styles = FSExtra.readFileSync(stylesPath, \"utf8\").replace(\n \" <!-- Customize your theme here. -->\",\n ' <item name=\"android:windowBackground\">@drawable/launch_screen</item>'\n );\n FSExtra.writeFileSync(stylesPath, styles);\n const stylesV31 = path.join(mainRes, \"values-v31\");\n FSExtra.mkdirSync(stylesV31, { recursive: true });\n if (!styles.includes(\"</style>\")) {\n throw new Error(\"[vxrn] prebuild template styles.xml lost its AppTheme </style> anchor\");\n }\n FSExtra.writeFileSync(\n path.join(stylesV31, \"styles.xml\"),\n styles.replace(\n \"</style>\",\n ` <item name=\"android:windowSplashScreenBackground\">@color/splash_background</item>\n <item name=\"android:windowSplashScreenAnimatedIcon\">@drawable/splash</item>\n </style>`\n )\n );\n}\nfunction renderPrebuildFile(args) {\n const { relativePath, content, platform, app, nitroWebImage } = args;\n const appName = app.name;\n const schemes = app.scheme === void 0 ? [] : Array.isArray(app.scheme) ? app.scheme : [app.scheme];\n let destRelativePath = transformPath(relativePath);\n if (platform === \"android\" && app.android) {\n const packagePath = app.android.applicationId.split(\".\").join(\"/\");\n destRelativePath = destRelativePath.split(ANDROID_PACKAGE_PATH).join(packagePath);\n }\n destRelativePath = destRelativePath.replace(/HelloWorld/g, appName).replace(/helloworld/g, appName.toLowerCase());\n if (content !== null) {\n let rendered = content;\n const replacements = [];\n if (platform === \"ios\" && app.ios) {\n replacements.push([IOS_BUNDLE_PLACEHOLDER, app.ios.bundleId]);\n }\n if (platform === \"android\" && app.android) {\n replacements.push([ANDROID_PACKAGE_PLACEHOLDER, app.android.applicationId]);\n }\n replacements.push(\n [\"Hello App Display Name\", app.displayName || appName],\n [\"HelloWorld\", appName],\n [\"helloworld\", appName.toLowerCase()]\n );\n for (const [find, value] of replacements) {\n rendered = rendered.split(find).join(value);\n }\n if (platform === \"ios\" && relativePath.endsWith(\"/Info.plist\")) {\n const stamps = [];\n if (schemes.length) {\n stamps.push(`\t<key>CFBundleURLTypes</key>\n\t<array>\n\t\t<dict>\n\t\t\t<key>CFBundleTypeRole</key>\n\t\t\t<string>Editor</string>\n\t\t\t<key>CFBundleURLSchemes</key>\n\t\t\t<array>\n${schemes.map((scheme) => `\t\t\t\t<string>${scheme}</string>`).join(\"\\n\")}\n\t\t\t</array>\n\t\t</dict>\n\t</array>`);\n }\n if (app.ios?.usesNonExemptEncryption !== void 0) {\n stamps.push(\n `\t<key>ITSAppUsesNonExemptEncryption</key>\n\t<${app.ios.usesNonExemptEncryption ? \"true\" : \"false\"}/>`\n );\n }\n if (app.ios?.accentColor) {\n stamps.push(\"\t<key>NSAccentColorName</key>\\n\t<string>AccentColor</string>\");\n }\n if (app.ios?.fileSharing) {\n stamps.push(\n `\t<key>UIFileSharingEnabled</key>\n\t<true/>\n\t<key>LSSupportsOpeningDocumentsInPlace</key>\n\t<true/>`\n );\n }\n if (app.photoLibrary?.readWrite !== void 0) {\n stamps.push(\"\t<key>PHPhotoLibraryPreventAutomaticLimitedAccessAlert</key>\\n\t<true/>\");\n }\n if (app.notifications !== void 0) {\n stamps.push(`\t<key>${notificationsHost.enabledInfoPlistKey}</key>\n\t<true/>`);\n }\n if (app.notifications?.push === true) {\n stamps.push(`\t<key>${notificationsHost.pushInfoPlistKey}</key>\n\t<true/>`);\n }\n if (app.ios?.widgets) {\n stamps.push(\"\t<key>NSSupportsLiveActivities</key>\\n\t<true/>\");\n }\n const refreshTasks = app.ios?.backgroundTasks?.refresh ?? [];\n const processingTasks = app.ios?.backgroundTasks?.processing ?? [];\n if (refreshTasks.length || processingTasks.length) {\n const plistArray = (key, identifiers) => `\t<key>${key}</key>\n\t<array>\n${identifiers.map((identifier) => `\t\t<string>${escapeXml(identifier)}</string>`).join(\"\\n\")}\n\t</array>`;\n stamps.push(plistArray(\"BGTaskSchedulerPermittedIdentifiers\", [...refreshTasks, ...processingTasks]));\n stamps.push(plistArray(\"OneBackgroundRefreshTaskIdentifiers\", refreshTasks));\n stamps.push(plistArray(\"OneBackgroundProcessingTaskIdentifiers\", processingTasks));\n }\n if (app.ios?.appIntents) {\n stamps.push(\n `\t<key>OneAppIntentIdentifiers</key>\n\t<array>\n${app.ios.appIntents.actions.map((action) => `\t\t<string>${escapeXml(action.id)}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n const backgroundModes = [\n ...app.pictureInPicture || app.audio?.background ? [\"audio\"] : [],\n ...app.location?.background ? [\"location\"] : [],\n ...refreshTasks.length ? [\"fetch\"] : [],\n ...processingTasks.length ? [\"processing\"] : []\n ];\n if (backgroundModes.length) {\n stamps.push(\n `\t<key>UIBackgroundModes</key>\n\t<array>\n${backgroundModes.map((mode) => `\t\t<string>${mode}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n if (app.updates !== void 0) {\n if (app.updates.url !== void 0) {\n stamps.push(\n `\t<key>${updatesHost.urlInfoPlistKey}</key>\n\t<string>${escapeXml(app.updates.url)}</string>`\n );\n }\n stamps.push(\n `\t<key>${updatesHost.runtimeVersionInfoPlistKey}</key>\n\t<string>${escapeXml(app.updates.runtimeVersion)}</string>`\n );\n }\n if (app.fonts?.length) {\n stamps.push(\n `\t<key>UIAppFonts</key>\n\t<array>\n${app.fonts.map((font) => `\t\t<string>${escapeXml(fontFileName(font))}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n if (app.userInterfaceStyle !== void 0) {\n stamps.push(\n `\t<key>UIUserInterfaceStyle</key>\n\t<string>${app.userInterfaceStyle === \"light\" ? \"Light\" : app.userInterfaceStyle === \"dark\" ? \"Dark\" : \"Automatic\"}</string>`\n );\n }\n if (app.orientation !== void 0) {\n const phoneOrientations = app.orientation === \"portrait\" ? PORTRAIT_ORIENTATIONS : app.orientation === \"landscape\" ? LANDSCAPE_ORIENTATIONS : [...PORTRAIT_ORIENTATIONS, ...LANDSCAPE_ORIENTATIONS];\n const phoneList = /\\t<key>UISupportedInterfaceOrientations<\\/key>\\n\\t<array>\\n[\\s\\S]*?\\t<\\/array>/;\n if (!phoneList.test(rendered)) {\n throw new Error(\n `[vxrn] prebuild template ${relativePath} lost its UISupportedInterfaceOrientations list`\n );\n }\n rendered = rendered.replace(\n phoneList,\n `\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n${phoneOrientations.map((orientation) => `\t\t<string>${orientation}</string>`).join(\"\\n\")}\n\t</array>`\n );\n }\n for (const [key, value] of Object.entries(app.ios?.infoPlist ?? {})) {\n if (rendered.includes(`<key>${key}</key>`) || stamps.some((stamp) => stamp.includes(`<key>${key}</key>`))) {\n throw new Error(\n `[vxrn] native.app.ios.infoPlist sets ${key}, which the template or native.app already writes: use its field`\n );\n }\n stamps.push(renderPlistEntries({ [key]: value }, \"\t\"));\n }\n if (stamps.length) {\n const anchor = \"\t<key>LSRequiresIPhoneOS</key>\";\n if (!rendered.includes(anchor))\n throw new Error(\n `[vxrn] prebuild template ${relativePath} lost its LSRequiresIPhoneOS anchor`\n );\n rendered = rendered.replace(anchor, `${stamps.join(\"\\n\")}\n${anchor}`);\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && (app.imagePicker?.camera !== void 0 || app.speech !== void 0)) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the camera or microphone permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [];\n if (app.imagePicker?.camera !== void 0) {\n stamps.push(' <uses-permission android:name=\"android.permission.CAMERA\" />');\n }\n if (app.speech !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />',\n ' <queries>\\n <intent>\\n <action android:name=\"android.speech.RecognitionService\" />\\n </intent>\\n </queries>'\n );\n }\n rendered = rendered.replace(anchor, `${anchor}\n${stamps.join(\"\\n\")}`);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.location !== void 0) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp location permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [\n ' <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />',\n ' <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />'\n ];\n if (app.location.background) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\" />'\n );\n }\n rendered = rendered.replace(anchor, `${anchor}\n${stamps.join(\"\\n\")}`);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.pedometer !== void 0) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the pedometer permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n <uses-permission android:name=\"android.permission.ACTIVITY_RECOGNITION\" />`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.brightness === true) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the brightness permission: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n <uses-permission android:name=\"android.permission.WRITE_SETTINGS\" />`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.notifications !== void 0) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp notification permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n [\n anchor,\n ...notificationsHost.androidPermissions.map(\n (permission) => ` <uses-permission android:name=\"${permission}\" />`\n )\n ].join(\"\\n\")\n );\n if (!rendered.includes(notificationsHost.androidPermissions[0])) {\n throw new Error(\n \"[vxrn] failed to stamp notification permissions into app manifest\"\n );\n }\n rendered = rendered.replace(\n \" </activity>\\n </application>\",\n ` </activity>\n <receiver android:name=\"${notificationsHost.receiver}\" android:exported=\"false\">\n <intent-filter>\n <action android:name=\"${notificationsHost.receiverAction}\" />\n </intent-filter>\n </receiver>\n </application>`\n );\n if (!rendered.includes(notificationsHost.receiver)) {\n throw new Error(\n \"[vxrn] failed to stamp the notification receiver into app manifest\"\n );\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.notifications?.push === true) {\n const anchor = notificationsHost.receiver;\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the push service: expected the notification receiver in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n \" </receiver>\\n </application>\",\n ` </receiver>\n <service android:name=\"${notificationsHost.pushService}\" android:exported=\"false\">\n <intent-filter>\n <action android:name=\"${notificationsHost.pushServiceAction}\" />\n </intent-filter>\n </service>\n </application>`\n );\n if (!rendered.includes(notificationsHost.pushService)) {\n throw new Error(\"[vxrn] failed to stamp the push service into app manifest\");\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && (app.audio !== void 0 || app.photoLibrary !== void 0 || app.contacts !== void 0 || app.calendar !== void 0 || app.ios?.backgroundTasks !== void 0)) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp media permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [];\n if (app.audio?.microphone !== void 0 && !rendered.includes(\"android.permission.RECORD_AUDIO\")) {\n stamps.push(' <uses-permission android:name=\"android.permission.RECORD_AUDIO\" />');\n }\n if (app.photoLibrary?.readWrite !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\" />',\n ' <uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\" />',\n ' <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" android:maxSdkVersion=\"32\" />'\n );\n }\n if (app.photoLibrary?.addOnly !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" android:maxSdkVersion=\"28\" />'\n );\n }\n if (app.contacts !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.READ_CONTACTS\" />',\n ' <uses-permission android:name=\"android.permission.WRITE_CONTACTS\" />'\n );\n }\n if (app.calendar?.usage !== void 0) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.READ_CALENDAR\" />',\n ' <uses-permission android:name=\"android.permission.WRITE_CALENDAR\" />'\n );\n }\n if (app.calendar?.remindersUsage !== void 0) {\n if (!rendered.includes(\"android.permission.POST_NOTIFICATIONS\")) {\n stamps.push(' <uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />');\n }\n if (!rendered.includes(\"android.permission.RECEIVE_BOOT_COMPLETED\")) {\n stamps.push(' <uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />');\n }\n }\n if (app.audio?.background === true) {\n stamps.push(\n ' <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" />',\n ' <uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK\" />'\n );\n }\n if (stamps.length) {\n rendered = rendered.replace(anchor, `${anchor}\n${stamps.join(\"\\n\")}`);\n }\n const appStamps = [];\n if (app.calendar?.remindersUsage !== void 0) {\n appStamps.push(\n ' <meta-data android:name=\"one.calendar.reminders\" android:value=\"true\" />'\n );\n }\n if (app.photoLibrary?.addOnly !== void 0) {\n appStamps.push(\n ' <meta-data android:name=\"one.photoLibrary.addOnly\" android:value=\"true\" />'\n );\n }\n if (app.audio?.background === true) {\n appStamps.push(\n ' <meta-data android:name=\"one.audio.background\" android:value=\"true\" />',\n ' <service android:name=\"com.margelo.nitro.one.OneAudioService\" android:exported=\"false\" android:foregroundServiceType=\"mediaPlayback\" />'\n );\n }\n if (app.ios?.backgroundTasks !== void 0) {\n const refreshTasks = app.ios.backgroundTasks.refresh ?? [];\n const processingTasks = app.ios.backgroundTasks.processing ?? [];\n if (refreshTasks.length) {\n appStamps.push(\n ` <meta-data android:name=\"one.backgroundTasks.refresh\" android:value=\"${escapeXml(refreshTasks.join(\",\"))}\" />`\n );\n }\n if (processingTasks.length) {\n appStamps.push(\n ` <meta-data android:name=\"one.backgroundTasks.processing\" android:value=\"${escapeXml(processingTasks.join(\",\"))}\" />`\n );\n }\n }\n if (appStamps.length) {\n const appAnchor = \" </application>\";\n if (!rendered.includes(appAnchor)) {\n throw new Error(\n \"[vxrn] cannot stamp media components: expected </application> in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n appAnchor,\n `${appStamps.join(\"\\n\")}\n${appAnchor}`\n );\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/java/com/helloworld/MainApplication.kt\" && app.updates !== void 0) {\n rendered = patchAndroidMainApplicationUpdatesHost(rendered);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.updates !== void 0) {\n const anchor = \" </application>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the updates config: expected </application> in app/src/main/AndroidManifest.xml\"\n );\n }\n const stamps = [];\n if (app.updates.url !== void 0) {\n stamps.push(\n ` <meta-data android:name=\"dev.onejs.updates.url\" android:value=\"${escapeXml(app.updates.url)}\" />`\n );\n }\n stamps.push(\n ' <meta-data android:name=\"dev.onejs.updates.runtimeVersion\" android:value=\"@string/one_updates_runtime_version\" />'\n );\n rendered = rendered.replace(anchor, `${stamps.join(\"\\n\")}\n${anchor}`);\n }\n if (platform === \"android\" && relativePath === \"app/src/main/res/values/strings.xml\" && app.updates !== void 0) {\n const version = app.updates.runtimeVersion.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n rendered = rendered.replace(\n \"</resources>\",\n ` <string name=\"one_updates_runtime_version\" translatable=\"false\">\"${escapeXml(version)}\"</string>\n</resources>`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.android?.googleMapsApiKey !== void 0) {\n const anchor = \" </application>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the maps api key: expected </application> in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n ` <meta-data android:name=\"com.google.android.geo.API_KEY\" android:value=\"${escapeXml(app.android.googleMapsApiKey)}\" />\n${anchor}`\n );\n }\n if (platform === \"android\" && relativePath === \"gradle.properties\" && app.notifications?.push === true) {\n const line = `${notificationsHost.pushGradleProperty}=true`;\n if (!rendered.includes(line)) {\n const trailed = rendered.endsWith(\"\\n\") ? rendered : `${rendered}\n`;\n rendered = `${trailed}\n# Remote push: set by native.app.notifications.push.\n${line}\n`;\n }\n }\n if (platform === \"android\" && relativePath === \"gradle.properties\" && app.android?.googleMapsApiKey !== void 0) {\n const line = \"oneNativeMaps=true\";\n if (!rendered.includes(line)) {\n const trailed = rendered.endsWith(\"\\n\") ? rendered : `${rendered}\n`;\n rendered = `${trailed}\n# One.UI.Map: set by native.app.android.googleMapsApiKey.\n${line}\n`;\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/res/values/styles.xml\" && (app.userInterfaceStyle === \"light\" || app.userInterfaceStyle === \"dark\")) {\n const dayNight = 'parent=\"Theme.AppCompat.DayNight.NoActionBar\"';\n if (!rendered.includes(dayNight)) {\n throw new Error(\n `[vxrn] cannot lock userInterfaceStyle: expected ${dayNight} in app/src/main/res/values/styles.xml`\n );\n }\n rendered = rendered.replace(\n dayNight,\n app.userInterfaceStyle === \"light\" ? 'parent=\"Theme.AppCompat.Light.NoActionBar\"' : 'parent=\"Theme.AppCompat.NoActionBar\"'\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && (app.android?.permissions?.length || app.android?.blockedPermissions?.length)) {\n const anchor = '<uses-permission android:name=\"android.permission.INTERNET\" />';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp permissions: expected the INTERNET permission in app/src/main/AndroidManifest.xml\"\n );\n }\n const permissionName = (name) => name.includes(\".\") ? name : `android.permission.${name}`;\n const lines = [\n ...(app.android?.permissions ?? []).map(\n (name) => ` <uses-permission android:name=\"${permissionName(name)}\" />`\n ),\n ...(app.android?.blockedPermissions ?? []).map(\n (name) => ` <uses-permission android:name=\"${permissionName(name)}\" tools:node=\"remove\" />`\n )\n ];\n rendered = rendered.replace(anchor, `${anchor}\n${lines.join(\"\\n\")}`);\n if (app.android?.blockedPermissions?.length && !rendered.includes(\"xmlns:tools=\")) {\n rendered = rendered.replace(\n 'xmlns:android=\"http://schemas.android.com/apk/res/android\"',\n 'xmlns:android=\"http://schemas.android.com/apk/res/android\"\\n xmlns:tools=\"http://schemas.android.com/tools\"'\n );\n }\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.android?.appLinks?.length) {\n rendered = rendered.replace(\n \" </activity>\",\n ` <intent-filter android:autoVerify=\"true\">\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.DEFAULT\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n <data android:scheme=\"https\" />\n${app.android.appLinks.map(\n (link) => ` <data android:host=\"${link.host}\"${link.pathPrefix ? ` android:pathPrefix=\"${link.pathPrefix}\"` : \"\"} />`\n ).join(\"\\n\")}\n </intent-filter>\n </activity>`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.orientation !== void 0) {\n const anchor = 'android:name=\".MainActivity\"';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp the orientation: expected .MainActivity in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n android:screenOrientation=\"${app.orientation === \"default\" ? \"unspecified\" : app.orientation}\"`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && app.pictureInPicture) {\n const anchor = 'android:name=\".MainActivity\"';\n if (!rendered.includes(anchor)) {\n throw new Error(\n \"[vxrn] cannot stamp picture in picture: expected .MainActivity in app/src/main/AndroidManifest.xml\"\n );\n }\n rendered = rendered.replace(\n anchor,\n `${anchor}\n android:supportsPictureInPicture=\"true\"`\n );\n }\n if (platform === \"android\" && relativePath === \"app/src/main/AndroidManifest.xml\" && schemes.length) {\n rendered = rendered.replace(\n \" </activity>\",\n ` <intent-filter>\n <action android:name=\"android.intent.action.VIEW\" />\n <category android:name=\"android.intent.category.DEFAULT\" />\n <category android:name=\"android.intent.category.BROWSABLE\" />\n${schemes.map((scheme) => ` <data android:scheme=\"${scheme}\" />`).join(\"\\n\")}\n </intent-filter>\n </activity>`\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\")) {\n rendered = rendered.replace(\n /TARGETED_DEVICE_FAMILY = \"1,2\";/g,\n `TARGETED_DEVICE_FAMILY = \"${app.ios?.tablet ? \"1,2\" : \"1\"}\";`\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\")) {\n if (app.version !== void 0) {\n rendered = rendered.replace(\n /MARKETING_VERSION = [^;]+;/g,\n `MARKETING_VERSION = \"${app.version}\";`\n );\n }\n if (app.ios?.buildNumber !== void 0) {\n rendered = rendered.replace(\n /CURRENT_PROJECT_VERSION = [^;]+;/g,\n `CURRENT_PROJECT_VERSION = ${app.ios.buildNumber};`\n );\n }\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\") && app.ios?.alternateIcons !== void 0) {\n const anchor = \"ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\";\n if (!rendered.includes(anchor)) {\n throw new Error(\"[vxrn] prebuild template lost its primary app icon build setting\");\n }\n const names = Object.keys(app.ios.alternateIcons).sort().join(\" \");\n rendered = rendered.replaceAll(\n anchor,\n `${anchor}\n\t\t\t\tASSETCATALOG_COMPILER_ALTERNATE_APPICON_NAMES = \"${names}\";`\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\"/Info.plist\")) {\n const usage = /* @__PURE__ */ new Map();\n if (app.imagePicker?.camera !== void 0) {\n usage.set(\"NSCameraUsageDescription\", app.imagePicker.camera);\n }\n if (app.imagePicker?.microphone !== void 0) {\n usage.set(\"NSMicrophoneUsageDescription\", app.imagePicker.microphone);\n }\n if (app.photoLibrary !== void 0) {\n if (app.photoLibrary.addOnly !== void 0) {\n usage.set(\"NSPhotoLibraryAddUsageDescription\", app.photoLibrary.addOnly);\n }\n if (app.photoLibrary.readWrite !== void 0) {\n usage.set(\"NSPhotoLibraryUsageDescription\", app.photoLibrary.readWrite);\n }\n }\n if (app.contacts !== void 0) {\n usage.set(\"NSContactsUsageDescription\", app.contacts.usage);\n }\n if (app.calendar !== void 0) {\n if (app.calendar.usage !== void 0) {\n usage.set(\"NSCalendarsFullAccessUsageDescription\", app.calendar.usage);\n }\n if (app.calendar.remindersUsage !== void 0) {\n usage.set(\"NSRemindersFullAccessUsageDescription\", app.calendar.remindersUsage);\n }\n }\n if (app.location !== void 0) {\n usage.set(\"NSLocationWhenInUseUsageDescription\", app.location.whenInUse);\n if (app.location.alwaysAndWhenInUse !== void 0) {\n usage.set(\n \"NSLocationAlwaysAndWhenInUseUsageDescription\",\n app.location.alwaysAndWhenInUse\n );\n }\n }\n if (app.pedometer !== void 0) {\n usage.set(\"NSMotionUsageDescription\", app.pedometer.usage);\n }\n if (app.ios?.faceIdUsageDescription !== void 0) {\n usage.set(\"NSFaceIDUsageDescription\", app.ios.faceIdUsageDescription);\n }\n if (app.speech !== void 0) {\n usage.set(\"NSSpeechRecognitionUsageDescription\", app.speech.recognition);\n usage.set(\"NSMicrophoneUsageDescription\", app.speech.microphone);\n }\n if (app.audio?.microphone !== void 0) {\n usage.set(\"NSMicrophoneUsageDescription\", app.audio.microphone);\n }\n const additions = [];\n for (const [key, text] of usage) {\n const existing = new RegExp(`(<key>${key}</key>\\\\s*<string>)[^<]*(</string>)`);\n if (existing.test(rendered)) {\n rendered = rendered.replace(\n existing,\n (_match, before, after) => `${before}${escapeXml(text)}${after}`\n );\n } else {\n additions.push([key, text]);\n }\n }\n if (additions.length) {\n const anchor = \"\t<key>LSRequiresIPhoneOS</key>\";\n if (!rendered.includes(anchor)) {\n throw new Error(\n `[vxrn] cannot stamp ${additions[0][0]}: expected LSRequiresIPhoneOS in Info.plist`\n );\n }\n rendered = rendered.replace(\n anchor,\n `${additions.map(([key, text]) => `\t<key>${key}</key>\n\t<string>${escapeXml(text)}</string>\n`).join(\"\")}${anchor}`\n );\n }\n rendered = rendered.replace(\n /\\t<key>NS\\w+UsageDescription<\\/key>\\s*<string><\\/string>\\n/g,\n \"\"\n );\n }\n if (platform === \"ios\" && relativePath.endsWith(\"/AppDelegate.swift\")) {\n rendered = patchIosAppDelegateSceneLifecycle(\n rendered,\n !!app.ios?.backgroundTasks,\n !!app.ios?.appIntents\n );\n rendered = nativeProjectPatches.holdLaunchScreenOverRootView(rendered);\n const bundleURLProvider = 'RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: \"index\")';\n if (!rendered.includes(bundleURLProvider)) {\n throw new Error(\n \"[vxrn] cannot request hermes dev bytecode: expected the template bundle URL provider\"\n );\n }\n rendered = rendered.replace(\n bundleURLProvider,\n `guard let bundleURL = RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: \"index\") else { return nil }\n if bundleURL.isFileURL { return bundleURL }\n var components = URLComponents(url: bundleURL, resolvingAgainstBaseURL: false)!\n components.queryItems!.append(URLQueryItem(name: \"bytecode\", value: \"hermes\"))\n return components.url`\n );\n if (app.updates !== void 0) {\n rendered = nativeProjectPatches.pointReleaseBundleURLAtOneUpdates(rendered);\n }\n }\n if (platform === \"ios\") {\n const deploymentTarget = app.ios?.deploymentTarget ?? \"17.0\";\n rendered = rendered.replace(\n \"platform :ios, min_ios_version_supported\",\n `platform :ios, '${deploymentTarget}'`\n ).replace(\n /IPHONEOS_DEPLOYMENT_TARGET = \\d+(?:\\.\\d+)?;/g,\n `IPHONEOS_DEPLOYMENT_TARGET = ${deploymentTarget};`\n );\n if (relativePath === \"Podfile\") {\n rendered = rendered.replace(\n \" )\\n end\\nend\",\n ` )\n\n installer.pods_project.targets.each do |target|\n target.build_configurations.each do |config|\n config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '${deploymentTarget}'\n end\n end\n end\nend`\n );\n }\n }\n if (platform === \"ios\" && relativePath.endsWith(\".xcodeproj/project.pbxproj\")) {\n rendered = patchIosBundlePhase(rendered, app.updates?.runtimeVersion);\n if (app.ios?.appIntents) rendered = patchIosPbxprojAppIntents(rendered, appName);\n rendered = patchIosPbxprojOneBridgingHeader(rendered, appName);\n if (Object.keys(appEntitlements(app)).length && !app.ios?.widgets) {\n rendered = patchIosPbxprojAppEntitlements(rendered, appName);\n }\n if (app.ios?.widgets) rendered = patchIosPbxprojWidgets(rendered, app);\n if (iosResourceFiles(app).length) {\n rendered = patchIosPbxprojResources(rendered, appName, iosResourceFiles(app));\n }\n }\n if (platform === \"ios\" && relativePath === \"Podfile\") {\n if (app.ios?.ccache) rendered = `ENV['USE_CCACHE'] ||= '1'\n${rendered}`;\n if (app.ios?.useFrameworks) {\n rendered = rendered.replace(\n /^(platform :ios, .+)$/m,\n `$1\nuse_frameworks! :linkage => :${app.ios.useFrameworks}`\n );\n }\n if (app.ios?.screensGamma) {\n rendered = nativeProjectPatches.injectReactNativeScreensGammaIntoPodfile(rendered);\n }\n rendered = nativeProjectPatches.injectFmtCxx17FixIntoPodfile(rendered);\n rendered = nativeProjectPatches.injectWebGPUHeaderPathsIntoPodfile(rendered);\n rendered = nativeProjectPatches.injectOneSwiftPackagesIntoPodfile(rendered);\n if (nitroWebImage)\n rendered = nativeProjectPatches.injectNitroWebImageModularHeaderIntoPodfile(rendered);\n rendered = nativeProjectPatches.injectHermesMinificationPatchIntoPodfile(rendered);\n const nativeModulesCall = \"config = use_native_modules!\";\n if (rendered.split(nativeModulesCall).length !== 2) {\n throw new Error(\"[vxrn] expected one iOS native module discovery call\");\n }\n rendered = rendered.replace(\n nativeModulesCall,\n `config = use_native_modules!(['node', '-e', \"process.argv=['', '', 'config'];require(require('module').createRequire(require.resolve('vxrn/package.json')).resolve('@react-native-community/cli')).run()\"])`\n );\n if (!rendered.includes(\"[vxrn/one] fmt c++17 fix\") || !rendered.includes(\"[vxrn/one] minify iOS Hermes Release bundle input\")) {\n throw new Error(\"[vxrn] failed to apply required iOS Podfile patches\");\n }\n }\n if (platform === \"android\" && relativePath === \"app/build.gradle\") {\n rendered = nativeProjectPatches.replaceAppBuildGradleReactBlock(rendered);\n rendered = nativeProjectPatches.addDepsPatchToAppBuildGradle(rendered);\n if (!rendered.includes('entryFile = file(\"../../package.json\")') || !rendered.includes(\"[vxrn/one] ensure patches are applied\")) {\n throw new Error(\"[vxrn] failed to apply required Android Gradle patches\");\n }\n if (app.updates !== void 0) {\n rendered = patchAndroidBuildGradleUpdatesManifest(\n rendered,\n app.updates.runtimeVersion\n );\n }\n if (app.version !== void 0) {\n rendered = rendered.replace(\n /versionName \"[^\"]*\"/g,\n `versionName \"${app.version}\"`\n );\n }\n if (app.android?.versionCode !== void 0) {\n rendered = rendered.replace(\n /versionCode \\d+/g,\n `versionCode ${app.android.versionCode}`\n );\n }\n }\n if (platform === \"android\" && relativePath === \"settings.gradle\") {\n const hardcodedGradlePlugin = /includeBuild\\((['\"])\\.\\.\\/node_modules\\/@react-native\\/gradle-plugin\\1\\)/g;\n if ([...rendered.matchAll(hardcodedGradlePlugin)].length !== 2) {\n throw new Error(\"[vxrn] expected two React Native Gradle plugin paths\");\n }\n rendered = rendered.replace(\n hardcodedGradlePlugin,\n `includeBuild(new File([\"node\", \"--print\", \"require('module').createRequire(require.resolve('react-native/package.json')).resolve('@react-native/gradle-plugin/package.json')\"].execute(null, settingsDir).text.trim()).parentFile.canonicalPath)`\n );\n const autolinkCommand = \"ex.autolinkLibrariesFromCommand()\";\n if (rendered.split(autolinkCommand).length !== 2) {\n throw new Error(\"[vxrn] expected one React Native autolinking command\");\n }\n rendered = rendered.replace(\n autolinkCommand,\n `ex.autolinkLibrariesFromCommand([\"node\", [\"node\", \"--print\", \"require('module').createRequire(require.resolve('vxrn/package.json')).resolve('@react-native-community/cli/build/bin.js')\"].execute(null, settingsDir).text.trim(), \"config\"])`\n );\n }\n if (platform === \"android\" && relativePath === \"app/build.gradle\" && app.android?.minify) {\n const minify = \"def enableProguardInReleaseBuilds = false\";\n const minifyEnabled = \"minifyEnabled enableProguardInReleaseBuilds\";\n if (!rendered.includes(minify) || !rendered.includes(minifyEnabled)) {\n throw new Error(\"[vxrn] prebuild template app/build.gradle lost its proguard switch\");\n }\n rendered = rendered.replace(minify, \"def enableProguardInReleaseBuilds = true\");\n if (app.android.shrinkResources) {\n rendered = rendered.replace(\n minifyEnabled,\n `${minifyEnabled}\n shrinkResources true`\n );\n }\n }\n if (platform === \"android\" && app.android?.googleServicesFile) {\n const edits = [\n [\n \"build.gradle\",\n 'classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")',\n ` classpath(\"com.google.gms:google-services:${GOOGLE_SERVICES_VERSION}\")`\n ],\n [\n \"app/build.gradle\",\n 'apply plugin: \"com.facebook.react\"',\n 'apply plugin: \"com.google.gms.google-services\"'\n ]\n ];\n for (const [file, anchor, insertion] of edits) {\n if (relativePath !== file) continue;\n const next = insertAfterLine(rendered, anchor, insertion);\n if (next === rendered) {\n throw new Error(`[vxrn] prebuild template ${file} lost its ${anchor} anchor`);\n }\n rendered = next;\n }\n }\n if (platform === \"android\" && relativePath === \"app/proguard-rules.pro\" && app.android?.proguardRules) {\n rendered = `${rendered.trimEnd()}\n\n${app.android.proguardRules.trim()}\n`;\n }\n for (const [field, setting] of [\n [\"minSdk\", \"minSdkVersion\"],\n [\"targetSdk\", \"targetSdkVersion\"],\n [\"compileSdk\", \"compileSdkVersion\"]\n ]) {\n const value = platform === \"android\" ? app.android?.[field] : void 0;\n if (value === void 0) continue;\n rendered = rendered.replace(new RegExp(`${setting} = \\\\d+`, \"g\"), `${setting} = ${value}`);\n }\n return { destRelativePath, content: rendered };\n }\n return { destRelativePath, content };\n}\nconst generateForPlatform = async (root, platform, app, outDir = path.resolve(root, platform)) => {\n validatePrebuildApp(app, platform);\n const dest = outDir;\n const require2 = module.createRequire(root + \"/\");\n const importPath = requireVxrn.resolve(\"@react-native-community/cli/build/tools/walk.js\");\n const src = path.join(\n path.dirname(\n require2.resolve(\"@react-native-community/template/template/package.json\", {\n paths: [root]\n })\n ),\n platform\n );\n const walkModule = await import(pathToFileURL(importPath).href);\n const walkFn = walkModule?.default?.default ?? walkModule?.default ?? walkModule;\n if (typeof walkFn !== \"function\") {\n throw new Error(\"[vxrn] could not resolve the community template walker\");\n }\n const files = [...walkFn(src)].sort();\n const nitroWebImage = platform === \"ios\" && nativeProjectPatches.hasNitroWebImage(root);\n FSExtra.removeSync(dest);\n for (const absoluteSrc of files) {\n const relativeFilePath = path.relative(src, absoluteSrc);\n const stat = FSExtra.lstatSync(absoluteSrc);\n if (stat.isDirectory()) continue;\n const extension = path.extname(absoluteSrc);\n const raw = [\".png\", \".jar\", \".keystore\"].includes(extension) ? null : FSExtra.readFileSync(absoluteSrc, \"utf8\");\n const { destRelativePath, content } = renderPrebuildFile({\n relativePath: relativeFilePath,\n content: raw,\n platform,\n app,\n nitroWebImage\n });\n const destPath = path.resolve(dest, destRelativePath);\n FSExtra.mkdirSync(path.dirname(destPath), { recursive: true });\n console.info(\"copying\", '\"' + absoluteSrc + '\"', \"to\", '\"' + destPath + '\"');\n if (content === null) {\n FSExtra.copyFileSync(absoluteSrc, destPath);\n continue;\n }\n FSExtra.writeFileSync(destPath, content, {\n encoding: \"utf8\",\n mode: stat.mode\n });\n }\n await generateAppIcons({ root, dest, platform, app });\n if (platform === \"android\") await generateAdaptiveIcon({ root, dest, app });\n await generateSplashScreen({ root, dest, platform, app });\n if (platform === \"ios\") generateAccentColor({ dest, app });\n copyAppResources({ root, dest, platform, app });\n generateSceneDelegate({ dest, platform, app });\n generateIosAppIntents(dest, platform, app);\n if (platform === \"ios\") generateOneBridgingHeader(dest, app);\n if (platform === \"ios\") generateIosWidgets(dest, app);\n if (platform === \"ios\") await generateSwiftPackages({ root, dest });\n if (platform === \"android\") await generateKotlinSources({ root, dest });\n};\nconst KOTLIN_IMPORT_ARTIFACTS = [\n {\n importPrefix: \"androidx.compose.material.icons\",\n artifact: \"androidx.compose.material:material-icons-core\",\n versionKey: \"materialIconsVersion\",\n version: \"1.7.6\"\n }\n];\nfunction kotlinSourceImports(dir) {\n const imports = /* @__PURE__ */ new Set();\n if (!FSExtra.existsSync(dir)) return imports;\n const visit = (entry) => {\n if (FSExtra.statSync(entry).isDirectory()) {\n for (const child of FSExtra.readdirSync(entry)) visit(path.join(entry, child));\n return;\n }\n if (!entry.endsWith(\".kt\")) return;\n for (const line of FSExtra.readFileSync(entry, \"utf8\").split(\"\\n\")) {\n const match = /^\\s*import\\s+([A-Za-z0-9_.]+)/.exec(line);\n if (match) imports.add(match[1]);\n }\n };\n visit(dir);\n return imports;\n}\nfunction enableAppComposeIntegration(dest) {\n const rootBuildGradlePath = path.join(dest, \"build.gradle\");\n if (FSExtra.existsSync(rootBuildGradlePath)) {\n let content = FSExtra.readFileSync(rootBuildGradlePath, \"utf8\");\n const composePluginClasspath = ' classpath(\"org.jetbrains.kotlin.plugin.compose:org.jetbrains.kotlin.plugin.compose.gradle.plugin:$kotlinVersion\")';\n if (!content.includes(\"org.jetbrains.kotlin.plugin.compose\")) {\n const anchor = content.includes('classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")') ? 'classpath(\"org.jetbrains.kotlin:kotlin-gradle-plugin\")' : 'classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin\"';\n content = insertAfterLine(content, anchor, composePluginClasspath);\n FSExtra.writeFileSync(rootBuildGradlePath, content, \"utf8\");\n }\n }\n const appBuildGradlePath = path.join(dest, \"app/build.gradle\");\n if (FSExtra.existsSync(appBuildGradlePath)) {\n let content = FSExtra.readFileSync(appBuildGradlePath, \"utf8\");\n if (!content.includes(\"org.jetbrains.kotlin.plugin.compose\")) {\n const pluginAnchor = content.includes('apply plugin: \"org.jetbrains.kotlin.android\"') ? 'apply plugin: \"org.jetbrains.kotlin.android\"' : \"apply plugin: 'org.jetbrains.kotlin.android'\";\n content = insertAfterLine(\n content,\n pluginAnchor,\n 'apply plugin: \"org.jetbrains.kotlin.plugin.compose\"'\n );\n }\n if (!content.includes(\"compose true\")) {\n content = insertAfterLine(\n content,\n \"android {\",\n \" buildFeatures {\\n compose true\\n }\"\n );\n }\n if (!content.includes(\"androidx.compose.ui:ui\")) {\n const composeDeps = [\n ' def composeUiVersion = rootProject.ext.has(\"composeUiVersion\") ? rootProject.ext.get(\"composeUiVersion\") : \"1.11.4\"',\n ' def material3Version = rootProject.ext.has(\"material3Version\") ? rootProject.ext.get(\"material3Version\") : \"1.5.0-alpha17\"',\n ' implementation \"androidx.compose.ui:ui:$composeUiVersion\"',\n ' implementation \"androidx.compose.foundation:foundation:$composeUiVersion\"',\n ' implementation \"androidx.compose.material3:material3:$material3Version\"',\n // swiftui carries navigation; compose ships it as its own artifact, so a\n // kotlin view importing NavHost needs it on the app classpath.\n ' def navigationComposeVersion = rootProject.ext.has(\"navigationComposeVersion\") ? rootProject.ext.get(\"navigationComposeVersion\") : \"2.10.2\"',\n ' implementation \"androidx.navigation:navigation-compose:$navigationComposeVersion\"'\n ].join(\"\\n\");\n const depsAnchor = content.includes('implementation(\"com.facebook.react:react-android\")') ? 'implementation(\"com.facebook.react:react-android\")' : 'implementation \"com.facebook.react:react-android\"';\n content = insertAfterLine(content, depsAnchor, composeDeps);\n }\n const imports = kotlinSourceImports(path.join(dest, \"app/src/main/java/one/source\"));\n for (const rule of KOTLIN_IMPORT_ARTIFACTS) {\n const needed = [...imports].some(\n (name) => name === rule.importPrefix || name.startsWith(`${rule.importPrefix}.`)\n );\n if (!needed || content.includes(rule.artifact)) continue;\n const reactAnchor = content.includes('implementation(\"com.facebook.react:react-android\")') ? 'implementation(\"com.facebook.react:react-android\")' : 'implementation \"com.facebook.react:react-android\"';\n const anchor = content.includes(\"androidx.compose.material3:material3\") ? \"androidx.compose.material3:material3\" : reactAnchor;\n content = insertAfterLine(\n content,\n anchor,\n [\n ` def ${rule.versionKey} = rootProject.ext.has(\"${rule.versionKey}\") ? rootProject.ext.get(\"${rule.versionKey}\") : \"${rule.version}\"`,\n ` implementation \"${rule.artifact}:$${rule.versionKey}\"`\n ].join(\"\\n\")\n );\n }\n FSExtra.writeFileSync(appBuildGradlePath, content, \"utf8\");\n }\n}\nasync function generateKotlinSources({ root, dest }) {\n const skip = /* @__PURE__ */ new Set([\"node_modules\", \"ios\", \"android\", \"dist\", \"types\", \"build\", \"tests\", \"__tests__\", \"scripts\", \"evidence\"]);\n const sources = [];\n const manifest = FSExtra.existsSync(path.join(root, \"package.json\")) ? FSExtra.readJsonSync(path.join(root, \"package.json\")) : {};\n const workspacePatterns = Array.isArray(manifest.workspaces) ? manifest.workspaces : manifest.workspaces?.packages ?? [];\n const { default: glob } = await import(\"fast-glob\");\n const workspaceRoots = new Set(glob.sync(workspacePatterns, {\n cwd: root,\n absolute: true,\n onlyDirectories: true,\n ignore: [\"**/node_modules/**\", \"**/ios/**\", \"**/android/**\"]\n }).map((directory) => path.resolve(directory)));\n const collect = (dir) => {\n if (dir !== root && FSExtra.existsSync(path.join(dir, \"package.json\")) && !workspaceRoots.has(dir)) return;\n for (const entry of FSExtra.readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith(\".\") || skip.has(entry.name)) continue;\n const source = path.join(dir, entry.name);\n if (entry.isDirectory()) collect(source);\n else if (entry.isFile() && entry.name.endsWith(\".kt\")) sources.push(source);\n }\n };\n collect(root);\n const output = path.join(dest, \"app/src/main/java/one/source\");\n FSExtra.removeSync(output);\n if (sources.length === 0) return;\n const { kotlinSourceId, renderKotlinSourceGlue, writeNativeSourceDeclaration } = await import(\"../utils/nativeSourceContract\");\n let hasViews = false;\n for (const source of sources) {\n const id = kotlinSourceId(root, source);\n const target = path.join(output, id);\n FSExtra.mkdirSync(target, { recursive: true });\n FSExtra.copyFileSync(source, path.join(target, path.basename(source)));\n const contract = writeNativeSourceDeclaration(source);\n if (contract.views.length > 0) hasViews = true;\n if (contract.modules.length > 0 || contract.views.length > 0) {\n FSExtra.writeFileSync(\n path.join(target, `OneNativeSource_${id}.kt`),\n renderKotlinSourceGlue(id, contract).source\n );\n }\n }\n if (hasViews) {\n enableAppComposeIntegration(dest);\n }\n}\nasync function generateSwiftPackages({ root, dest }) {\n const skip = /* @__PURE__ */ new Set([\"node_modules\", \"ios\", \"android\", \"dist\", \"types\", \"build\"]);\n const packages = swiftPackageDirectories(root);\n if (packages.size === 0) return;\n const { swiftPodManifest, writeSwiftPackageArtifacts } = await import(\"../utils/nativeSourceContract\");\n for (const [id, packageDir] of packages) {\n const podDir = path.join(dest, \"OneSwiftPackages\", id);\n const manifest = swiftPodManifest(\n path.join(packageDir, \"Package.swift\"),\n FSExtra.readFileSync(path.join(packageDir, \"Package.swift\"), \"utf8\")\n );\n const sources = [];\n const collect = (dir) => {\n for (const entry of FSExtra.readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith(\".\") || skip.has(entry.name)) continue;\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) collect(full);\n else if (entry.name.endsWith(\".swift\") && entry.name !== \"Package.swift\")\n sources.push(full);\n }\n };\n collect(packageDir);\n const artifacts = writeSwiftPackageArtifacts(packageDir);\n const contracts = artifacts.contracts;\n const hasView = contracts.some((contract) => contract.defaultView);\n if (contracts.filter((contract) => contract.defaultView).length > 1) {\n throw new Error(`[vxrn] swift package ${packageDir} has more than one @main type`);\n }\n for (const source of sources) {\n const link = path.join(podDir, \"Sources\", path.relative(packageDir, source));\n FSExtra.mkdirSync(path.dirname(link), { recursive: true });\n FSExtra.symlinkSync(FSExtra.realpathSync(source), link);\n }\n if (artifacts.glue) {\n FSExtra.writeFileSync(\n path.join(podDir, \"Sources\", \"OneNativeSource.generated.swift\"),\n artifacts.glue\n );\n }\n FSExtra.writeFileSync(\n path.join(podDir, `${id}.podspec`),\n `Pod::Spec.new do |s|\n s.name = '${id}'\n s.version = '0.0.0'\n s.summary = 'swift package ${path.relative(root, packageDir) || \".\"}'\n s.homepage = 'https://onestack.dev'\n s.license = 'MIT'\n s.author = 'one'\n s.source = { :path => '.' }\n s.swift_version = '${manifest.languageMode}.0'\n s.source_files = 'Sources/**/*.swift', 'Register.m'\n s.dependency 'One'\n s.pod_target_xcconfig = {\n 'OTHER_SWIFT_FLAGS' => '$(inherited) -cxx-interoperability-mode=default -Xcc -std=c++20 -Xfrontend -import-module -Xfrontend One${manifest.mainActorIsolation ? \" -default-isolation MainActor\" : \"\"}${hasView ? ` -Xfrontend -entry-point-function-name -Xfrontend ${id}_main` : \"\"}',\n }\nend\n`\n );\n FSExtra.writeFileSync(\n path.join(podDir, \"Register.m\"),\n hasView ? `#import <Foundation/Foundation.h>\n\nextern int ${id}_main(int argc, char **argv);\nextern void OneSwiftRegisterPackage(const char *name, int (*entry)(int, char **));\n\n@interface OneSwiftPackage_${id} : NSObject\n@end\n\n@implementation OneSwiftPackage_${id}\n+ (void)load {\n OneSwiftRegisterPackage(\"${id}\", ${id}_main);\n}\n@end\n` : \"#import <Foundation/Foundation.h>\\n\"\n );\n }\n}\nfunction applyAndroidDependencyPatches(args) {\n const { root, app, inventory } = args;\n if (!app.android || !inventory.some(\n (dependency) => dependency.name === \"react-native-screens\" && dependency.platforms.includes(\"android\")\n )) {\n return;\n }\n const activityPath = path.join(\n root,\n \"android\",\n \"app\",\n \"src\",\n \"main\",\n \"java\",\n ...app.android.applicationId.split(\".\"),\n \"MainActivity.kt\"\n );\n const rendered = nativeProjectPatches.holdLaunchScreenInMainActivity(\n nativeProjectPatches.addReactNativeScreensFix(FSExtra.readFileSync(activityPath, \"utf8\"))\n );\n if (!rendered.includes(\"RNScreensFragmentFactory\")) {\n throw new Error(\"[vxrn] failed to apply the react-native-screens activity patch\");\n }\n FSExtra.writeFileSync(activityPath, rendered);\n}\nasync function getNativeDependencyInventory(root) {\n const cliConfigPath = requireVxrn.resolve(\"@react-native-community/cli-config\");\n const cliConfig = await import(pathToFileURL(cliConfigPath).href);\n const config = await cliConfig.loadConfigAsync({ projectRoot: root });\n const inventory = [];\n for (const name of Object.keys(config.dependencies).sort()) {\n const dependency = config.dependencies[name];\n const depRoot = dependency.root;\n let version = \"unknown\";\n try {\n version = JSON.parse(FSExtra.readFileSync(path.join(depRoot, \"package.json\"), \"utf8\")).version ?? \"unknown\";\n } catch {\n }\n const platforms = Object.entries(dependency.platforms).filter(([, platformConfig]) => platformConfig !== null).map(([platform]) => platform).sort();\n if (platforms.length > 0) inventory.push({ name, version, platforms });\n }\n return inventory;\n}\nfunction installNativeDependencies(args) {\n const { root, platform } = args;\n if (!platform || platform === \"ios\") {\n execFileSync(\"pod\", [\"install\", `--project-directory=${path.join(root, \"ios\")}`], {\n stdio: \"inherit\",\n env: { ...process.env, LC_ALL: \"en_US.UTF-8\" }\n });\n }\n}\nconst transformPath = (filePath) => {\n return filePath.replace(\"_BUCK\", \"BUCK\").replace(\"_gitignore\", \".gitignore\").replace(\"_gitattributes\", \".gitattributes\").replace(\"_babelrc\", \".babelrc\").replace(\"_editorconfig\", \".editorconfig\").replace(\"_eslintrc.js\", \".eslintrc.js\").replace(\"_flowconfig\", \".flowconfig\").replace(\"_buckconfig\", \".buckconfig\").replace(\"_prettierrc.js\", \".prettierrc.js\").replace(\"_bundle\", \".bundle\").replace(\"_ruby-version\", \".ruby-version\").replace(\"_node-version\", \".node-version\").replace(\"_watchmanconfig\", \".watchmanconfig\").replace(\"_xcode.env\", \".xcode.env\");\n};\nexport {\n applyAndroidDependencyPatches,\n enableAppComposeIntegration,\n generateForPlatform,\n generateKotlinSources,\n getNativeDependencyInventory,\n installNativeDependencies,\n renderIosAppIntentsSwift,\n renderPrebuildFile,\n renderSceneDelegateSwift,\n validatePrebuildApp\n};\n//# sourceMappingURL=prebuildWithoutExpo.js.map\n"],"mappings":"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"}