@absolutejs/absolute 0.20.0-beta.59 → 0.20.0-beta.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/index.js +828 -254
- package/dist/index.js +54 -4
- package/dist/index.js.map +3 -3
- package/dist/mobile/index.js +656 -17
- package/dist/mobile/index.js.map +16 -9
- package/dist/mobile/remoteMacAgentEntry.js +204 -204
- package/dist/mobile/shellBootstrap.js +1 -0
- package/dist/mobile/shellUpdate.js +456 -0
- package/dist/src/mobile/capacitorBundle.d.ts +7 -0
- package/dist/src/mobile/config.d.ts +5 -0
- package/dist/src/mobile/index.d.ts +7 -0
- package/dist/src/mobile/mobileBundleInspection.d.ts +8 -0
- package/dist/src/mobile/mobileInspect.d.ts +6 -0
- package/dist/src/mobile/nativeUpdates.d.ts +4 -0
- package/dist/src/mobile/shellBootstrap.d.ts +1 -0
- package/dist/src/mobile/shellUpdate.d.ts +2 -0
- package/dist/src/mobile/transport.d.ts +6 -0
- package/dist/src/mobile/updateClient.d.ts +40 -0
- package/dist/src/mobile/updateProtocol.d.ts +51 -0
- package/dist/src/mobile/updatePublisher.d.ts +66 -0
- package/dist/src/mobile/updateRollout.d.ts +16 -0
- package/dist/src/mobile/updateRuntime.d.ts +27 -0
- package/dist/src/mobile/updateSigning.d.ts +20 -0
- package/dist/types/build.d.ts +9 -0
- package/package.json +8 -8
package/dist/mobile/index.js.map
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/constants.ts", "../src/utils/getDurationString.ts", "../src/utils/startupBanner.ts", "../src/mobile/config.ts", "../src/utils/stringModifiers.ts", "../src/mobile/nativeAuth.ts", "../node_modules/@absolutejs/sync/dist/client/index.js", "../src/mobile/syncSchema.ts", "../src/mobile/deviceCapabilities.ts", "../src/cli/scripts/telemetry.ts", "../src/cli/telemetryEvent.ts", "../src/mobile/artifactStore.ts", "../src/mobile/releaseArtifact.ts", "../node_modules/@absolutejs/devices/dist/index.js", "../src/mobile/adaptiveShell.ts", "../src/mobile/androidRelease.ts", "../src/mobile/emulatorDoctor.ts", "../src/cli/utils.ts", "../src/mobile/androidEmulatorController.ts", "../src/mobile/capacitorProject.ts", "../src/mobile/androidUpgradeConformance.ts", "../src/mobile/iosRelease.ts", "../src/mobile/iosConformance.ts", "../src/mobile/iosSimulatorController.ts", "../src/mobile/iosPhysicalDeviceTransport.ts", "../src/mobile/iosNativeWatcher.ts", "../src/mobile/remoteMacProtocol.ts", "../src/mobile/remoteMacWire.ts", "../src/mobile/iosDeviceAcceptance.ts", "../src/mobile/associationFiles.ts", "../src/mobile/buildMetadata.ts", "../src/mobile/buildPipeline.ts", "../src/mobile/buildRelease.ts", "../src/mobile/capacitorBundle.ts", "../src/mobile/routeMatcher.ts", "../src/mobile/producerContextState.ts", "../src/mobile/pageProtocol.ts", "../src/mobile/client.ts", "../src/mobile/transport.ts", "../src/mobile/materializedBundle.ts", "../src/mobile/expoProject.ts", "../src/mobile/index.ts", "../node_modules/@absolutejs/sync/dist/client/runtimeTransport.js", "../src/mobile/syncRemediation.ts", "../src/mobile/expoBridge.ts", "../src/mobile/expoDevController.ts", "../src/mobile/ciWorkflow.ts", "../src/mobile/compatibilityDispatcher.ts", "../src/mobile/producerContext.ts", "../src/mobile/mobilePreview.ts", "../src/mobile/nativeDeepLinks.ts", "../src/mobile/nativeDeviceCapabilities.ts", "../src/mobile/releasePublisher.ts", "../src/mobile/routeMetadataTransform.ts", "../node_modules/@absolutejs/http/dist/index.js", "../src/mobile/shellHttp.ts", "../src/mobile/uiPrimitives.ts"],
|
|
3
|
+
"sources": ["../src/constants.ts", "../src/utils/getDurationString.ts", "../src/utils/startupBanner.ts", "../src/mobile/config.ts", "../src/utils/stringModifiers.ts", "../src/mobile/nativeAuth.ts", "../node_modules/@absolutejs/sync/dist/client/index.js", "../src/mobile/syncSchema.ts", "../src/mobile/deviceCapabilities.ts", "../src/cli/scripts/telemetry.ts", "../src/cli/telemetryEvent.ts", "../src/mobile/artifactStore.ts", "../src/mobile/releaseArtifact.ts", "../node_modules/@absolutejs/devices/dist/index.js", "../src/mobile/adaptiveShell.ts", "../src/mobile/androidRelease.ts", "../src/mobile/emulatorDoctor.ts", "../src/cli/utils.ts", "../src/mobile/androidEmulatorController.ts", "../src/mobile/capacitorProject.ts", "../src/mobile/androidUpgradeConformance.ts", "../src/mobile/iosRelease.ts", "../src/mobile/iosConformance.ts", "../src/mobile/iosSimulatorController.ts", "../src/mobile/iosPhysicalDeviceTransport.ts", "../src/mobile/iosNativeWatcher.ts", "../src/mobile/remoteMacProtocol.ts", "../src/mobile/remoteMacWire.ts", "../src/mobile/iosDeviceAcceptance.ts", "../src/mobile/associationFiles.ts", "../src/mobile/buildMetadata.ts", "../src/mobile/buildPipeline.ts", "../src/mobile/buildRelease.ts", "../src/mobile/capacitorBundle.ts", "../src/mobile/routeMatcher.ts", "../src/mobile/producerContextState.ts", "../src/mobile/pageProtocol.ts", "../src/mobile/client.ts", "../src/mobile/transport.ts", "../src/mobile/materializedBundle.ts", "../src/mobile/expoProject.ts", "../src/mobile/updateRuntime.ts", "../src/mobile/updateProtocol.ts", "../src/mobile/index.ts", "../node_modules/@absolutejs/sync/dist/client/runtimeTransport.js", "../src/mobile/syncRemediation.ts", "../src/mobile/expoBridge.ts", "../src/mobile/expoDevController.ts", "../src/mobile/ciWorkflow.ts", "../src/mobile/compatibilityDispatcher.ts", "../src/mobile/producerContext.ts", "../src/mobile/mobilePreview.ts", "../src/mobile/nativeDeepLinks.ts", "../src/mobile/nativeDeviceCapabilities.ts", "../src/mobile/nativeUpdates.ts", "../src/mobile/releasePublisher.ts", "../src/mobile/routeMetadataTransform.ts", "../node_modules/@absolutejs/http/dist/index.js", "../src/mobile/shellHttp.ts", "../src/mobile/uiPrimitives.ts", "../src/mobile/updateClient.ts", "../src/mobile/updatePublisher.ts", "../src/mobile/updateSigning.ts", "../src/mobile/updateRollout.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"export const ANGULAR_INIT_TIMEOUT_MS = 500;\nexport const ANSI_ESCAPE_CODE = 27;\nexport const ANSI_ESCAPE_LENGTH = 3;\nexport const ASCII_SPACE = 32;\nexport const BASE_36_RADIX = 36;\nexport const BUN_BUILD_WARNING_SUPPRESSION =\n\t'wildcard sideEffects are not supported yet';\n/* Tailwind v4 at-rules that Bun's native CSS parser doesn't recognize.\n When a user imports their Tailwind entry CSS from a TS/TSX file, Bun's\n bundler walks it and warns about each unknown at-rule even though the\n actual Tailwind output is produced via the separate tailwindcss compile()\n pipeline (see compileTailwind.ts). The warnings are noise — suppress them. */\nexport const TAILWIND_BUN_CSS_WARNING_PATTERN =\n\t/invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;\nexport const BODY_SLICE_LENGTH = 2000;\nexport const BYTES_PER_KILOBYTE = 1024;\nexport const CLI_ARGS_OFFSET = 3;\nexport const CSS_ERROR_RESOLVE_DELAY_MS = 50;\nexport const CSS_MAX_CHECK_ATTEMPTS = 10;\nexport const CSS_MAX_PARSE_TIMEOUT_MS = 500;\nexport const CSS_SHEET_READY_TIMEOUT_MS = 100;\nexport const DEFAULT_CHUNK_SIZE = 16_384;\nexport const DEFAULT_DEBOUNCE_MS = 15;\nexport const DEFAULT_PORT = 3000;\nexport const DEV_SERVER_RESTART_DEBOUNCE_MS = 100;\nexport const DOM_UPDATE_DELAY_MS = 50;\nexport const FILE_PROTOCOL_PREFIX_LENGTH = 7;\nexport const FOCUS_ID_PREFIX_LENGTH = 3;\nexport const FOCUS_IDX_PREFIX_LENGTH = 4;\nexport const FOCUS_NAME_PREFIX_LENGTH = 5;\nexport const ESLINT_STUDIO_DEFAULT_HOST = 'eslint.absolute.localhost';\nexport const ESLINT_STUDIO_DEFAULT_PORT = 4099;\nexport const CONFIG_DEFAULT_HOST = 'config.absolute.localhost';\nexport const CONFIG_DEFAULT_PORT = 4099;\nexport const HMR_UPDATE_TIMEOUT_MS = 2000;\nexport const HOOK_SIGNATURE_LENGTH = 12;\nexport const EXCLUDE_LAST_OFFSET = -1;\nexport const HTTP_STATUS_OK = 200;\nexport const HTTP_STATUS_BAD_REQUEST = 400;\nexport const HTTP_STATUS_NOT_FOUND = 404;\nexport const HOURS_IN_DAY = 24;\nexport const HOURS_IN_HALF_DAY = 12;\nexport const IMAGE_DEFAULT_DEVICE_SIZES = [\n\t640, 750, 828, 1080, 1200, 1920, 2048, 3840\n];\nexport const IMAGE_DEFAULT_IMAGE_SIZES = [16, 32, 48, 64, 96, 128, 256, 384];\nexport const IMAGE_DEFAULT_QUALITY = 75;\nexport const IMAGE_GLOB_SUFFIX_LENGTH = 2;\nexport const INSTANCE_PROBE_TIMEOUT_MS = 250;\nexport const MAX_ERROR_LENGTH = 200;\nexport const MAX_RECONNECT_ATTEMPTS = 60;\nexport const MILLISECONDS_IN_A_SECOND = 1000;\nexport const MINUTES_IN_AN_HOUR = 60;\nexport const SECONDS_IN_A_MINUTE = 60;\nexport const MILLISECONDS_IN_A_MINUTE =\n\tMILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;\nexport const MILLISECONDS_IN_A_DAY =\n\tMILLISECONDS_IN_A_SECOND *\n\tSECONDS_IN_A_MINUTE *\n\tMINUTES_IN_AN_HOUR *\n\tHOURS_IN_DAY;\nexport const OVERLAY_FADE_DURATION_MS = 150;\nexport const PING_INTERVAL_MS = 30_000;\nexport const LIST_LOG_TAIL_MAX_BYTES = 65_536;\nexport const LIST_TUI_COLUMN_GAP = 2;\nexport const LIST_TUI_DEFAULT_HEIGHT = 28;\nexport const LIST_TUI_DEFAULT_WIDTH = 100;\nexport const LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30;\nexport const LIST_TUI_FOOTER_LINE_COUNT = 2;\nexport const LIST_TUI_MARKER_WIDTH = 2;\nexport const LIST_TUI_MIN_LOG_HEIGHT = 3;\nexport const LIST_TUI_MIN_URL_WIDTH = 16;\nexport const LIST_TUI_RENDER_DEBOUNCE_MS = 16;\nexport const LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000;\nexport const LIST_WATCH_REFRESH_MS = 1000;\nexport const RAF_BATCH_COUNT = 3;\nexport const RANDOM_ID_END_INDEX = 11;\nexport const REBUILD_BATCH_DELAY_MS = 10;\nexport const REBUILD_RELOAD_DELAY_MS = 200;\nexport const RECONNECT_INITIAL_DELAY_MS = 500;\nexport const RECONNECT_POLL_INTERVAL_MS = 300;\nexport const REACT_STREAM_SLOT_FAST_DELAY_MS = 5;\nexport const REACT_STREAM_SLOT_SLOW_DELAY_MS = 20;\nexport const SIGINT_EXIT_CODE = 130;\nexport const SIGTERM_EXIT_CODE = 143;\nexport const SVELTE_CSS_LOAD_TIMEOUT_MS = 500;\nexport const TIME_PRECISION = 2;\nexport const TWO_THIRDS = 2 / 3;\nexport const UNFOUND_INDEX = -1;\nexport const WEBSOCKET_NORMAL_CLOSURE = 1000;\n// Default Bun WebSocket idleTimeout (seconds) applied to every absolute server.\n// Long-lived sockets (voice intake, referee, realtime sync) sit idle during\n// greeting playback or while a user listens silently — no client→server frames.\n// Without an explicit value the WS idleTimeout falls back to Elysia's small\n// top-level serve default (~30s, closing at ~60s), which kills these sessions\n// mid-call with INACTIVE_CLIENT. 240s outlasts any greeting or think-pause and\n// gives a briefly-suspended tab time to wake and reconnect. Paired with Bun's\n// `sendPings` (protocol-level keepalive the browser answers without JS, so a\n// throttled background tab still responds). Bun's hard ceiling is 960s.\nexport const DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS = 240;\n// HTTP idleTimeout for Bun.serve. Bun's DEFAULT is a hostile 10s for a\n// framework meant to host streaming/AI workloads: a long-lived SSE response\n// (or any long poll) that stays silent past 10s — e.g. an agentic AI turn\n// waiting on the model's first token after a large tool result inflates the\n// prompt — gets its socket reaped with no error, and the client hangs. 240s\n// mirrors the WS default and outlasts realistic model think-pauses; Bun's\n// hard ceiling for HTTP idleTimeout is 255s. Override per-app with the\n// ABSOLUTE_IDLE_TIMEOUT env var (seconds; 0 disables the timeout entirely).\nexport const DEFAULT_HTTP_IDLE_TIMEOUT_SECONDS = 240;\nexport const MAX_HTTP_IDLE_TIMEOUT_SECONDS = 255;\nexport const WORKSPACE_COMMAND_ARGS_OFFSET = 3;\nexport const WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30;\nexport const WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60;\nexport const WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5_000;\nexport const WORKSPACE_READY_PROBE_INTERVAL_MS = 250;\nexport const WORKSPACE_READY_TIMEOUT_MS = 30_000;\nexport const WORKSPACE_SHUTDOWN_TIMEOUT_MS = 10_000;\nexport const WORKSPACE_TUI_DEFAULT_HEIGHT = 28;\nexport const WORKSPACE_TUI_DEFAULT_WIDTH = 100;\nexport const WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30;\nexport const WORKSPACE_TUI_FOOTER_LINE_COUNT = 3;\nexport const WORKSPACE_TUI_MIN_LOG_HEIGHT = 3;\nexport const WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7;\nexport const WORKSPACE_TUI_MIN_TARGET_WIDTH = 8;\nexport const WORKSPACE_TUI_MIN_WRAP_WIDTH = 12;\nexport const WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3;\nexport const WORKSPACE_TUI_RECENT_LOG_LIMIT = 40;\nexport const WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16;\nexport const WORKSPACE_TUI_STATUS_WIDTH = 10;\nexport const WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6;\nexport const WORKSPACE_TUI_VISIBILITY_WIDTH = 8;\n",
|
|
6
6
|
"import {\n\tMILLISECONDS_IN_A_SECOND,\n\tTIME_PRECISION,\n\tMILLISECONDS_IN_A_MINUTE\n} from '../constants';\n\nexport const getDurationString = (duration: number) => {\n\tlet durationString;\n\n\tif (duration < MILLISECONDS_IN_A_SECOND) {\n\t\tdurationString = `${duration.toFixed(TIME_PRECISION)}ms`;\n\t} else if (duration < MILLISECONDS_IN_A_MINUTE) {\n\t\tdurationString = `${(duration / MILLISECONDS_IN_A_SECOND).toFixed(TIME_PRECISION)}s`;\n\t} else {\n\t\tconst totalSeconds = Math.round(duration / MILLISECONDS_IN_A_SECOND);\n\t\tconst minutes = Math.floor(totalSeconds / 60);\n\t\tconst seconds = totalSeconds % 60;\n\t\tdurationString =\n\t\t\tseconds === 0 ? `${minutes}m` : `${minutes}m ${seconds}s`;\n\t}\n\n\treturn durationString;\n};\n",
|
|
7
7
|
"import { HOURS_IN_HALF_DAY } from '../constants';\nimport { getDurationString } from './getDurationString';\n\nconst colors = {\n\tbold: '\\x1b[1m',\n\tcyan: '\\x1b[36m',\n\tdim: '\\x1b[2m',\n\tgreen: '\\x1b[32m',\n\treset: '\\x1b[0m'\n} as const;\n\nconst MONTHS = [\n\t'Jan',\n\t'Feb',\n\t'Mar',\n\t'Apr',\n\t'May',\n\t'Jun',\n\t'Jul',\n\t'Aug',\n\t'Sep',\n\t'Oct',\n\t'Nov',\n\t'Dec'\n] as const;\n\nexport const formatTimestamp = () => {\n\tconst now = new Date();\n\tconst month = MONTHS[now.getMonth()];\n\tconst day = now.getDate().toString().padStart(2, '0');\n\tlet hours = now.getHours();\n\tconst minutes = now.getMinutes().toString().padStart(2, '0');\n\tconst seconds = now.getSeconds().toString().padStart(2, '0');\n\tconst ampm = hours >= HOURS_IN_HALF_DAY ? 'PM' : 'AM';\n\thours = hours % HOURS_IN_HALF_DAY || HOURS_IN_HALF_DAY;\n\n\treturn `${month} ${day} ${hours}:${minutes}:${seconds} ${ampm}`;\n};\n\nexport const startupBanner = (options: {\n\tversion: string;\n\treadyDuration: number;\n\tbuildDuration?: number;\n\tport: string | number;\n\thost: string;\n\tnetworkUrl?: string;\n\tmobilePreviewUrl?: string;\n\tprotocol?: string;\n}) => {\n\tconst {\n\t\tversion,\n\t\treadyDuration,\n\t\tbuildDuration,\n\t\tport,\n\t\thost,\n\t\tnetworkUrl,\n\t\tmobilePreviewUrl,\n\t\tprotocol = 'http'\n\t} = options;\n\tconst name = `${colors.cyan}${colors.bold}ABSOLUTEJS${colors.reset}`;\n\tconst ver = `${colors.dim}v${version}${colors.reset}`;\n\tconst time = `${colors.dim}ready in${colors.reset} ${colors.bold}${getDurationString(readyDuration)}${colors.reset}`;\n\tconst build =\n\t\ttypeof buildDuration === 'number' && Number.isFinite(buildDuration)\n\t\t\t? ` ${colors.dim}(build ${getDurationString(buildDuration)})${colors.reset}`\n\t\t\t: '';\n\tconsole.log('');\n\tconsole.log(` ${name} ${ver} ${time}${build}`);\n\tconsole.log('');\n\tconsole.log(\n\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Local:${colors.reset} ${protocol}://${host === '0.0.0.0' ? 'localhost' : host}:${port}/`\n\t);\n\tif (networkUrl) {\n\t\tconsole.log(\n\t\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Network:${colors.reset} ${networkUrl}`\n\t\t);\n\t}\n\tif (mobilePreviewUrl) {\n\t\tconsole.log(\n\t\t\t` ${colors.green}➜${colors.reset} ${colors.bold}Mobile:${colors.reset} ${mobilePreviewUrl}`\n\t\t);\n\t}\n\tconsole.log('');\n};\n",
|
|
8
|
-
"import { resolve } from 'node:path';\nimport type { MobileConfig, MobilePlatform } from '../../types/build';\n\nexport type NormalizedAbsoluteMobileConfig = {\n\tappId: string;\n\tappName: string;\n\tandroidCertificateFingerprints: string[];\n\tappleAppIdPrefix?: string;\n\tbundleDirectory: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tengine: 'capacitor' | 'expo';\n\tentry: string;\n\texpoNativeRoutes: Record<string, string>;\n\texpoSdkVersion?: 57;\n\tiosVersion?: string;\n\tnativeProjectDirectory: string;\n\tplatforms: MobilePlatform[];\n\tproductionOrigin: string;\n\tpushAndroidGoogleServicesFile: string;\n};\n\nconst APP_ID_PATTERN = /^[A-Za-z][\\w]*(?:\\.[A-Za-z][\\w]*)+$/;\nconst SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*$/;\nconst APPLE_APP_ID_PREFIX_PATTERN = /^[A-Z0-9]{10}$/;\nconst CERTIFICATE_FINGERPRINT_PATTERN = /^[0-9A-F]{64}$/;\nconst HOSTNAME_PATTERN =\n\t/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$/;\nconst EXPO_RESERVED_ROUTE_PREFIXES = new Set([\n\t'_expo',\n\t'_flight',\n\t'_sitemap',\n\t'assets',\n\t'expo-dev-plugins',\n\t'inspector',\n\t'manifest',\n\t'public'\n]);\n\nconst resolveProjectPath = (\n\tprojectRoot: string,\n\tvalue: string,\n\tfield: string\n) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, value);\n\tif (path !== root && !path.startsWith(`${root}/`)) {\n\t\tthrow new TypeError(`${field} must remain inside the project root.`);\n\t}\n\n\treturn path;\n};\n\nconst requireText = (value: string, field: string) => {\n\tconst normalized = value.trim();\n\tif (!normalized) throw new TypeError(`${field} must not be empty.`);\n\n\treturn normalized;\n};\n\nconst normalizeEntry = (entry: string | undefined) => {\n\tconst normalized = requireText(entry ?? '/', 'mobile.entry');\n\tif (!normalized.startsWith('/') || normalized.startsWith('//')) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.entry must be an absolute application path.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeProductionOrigin = (value: string) => {\n\tconst parsed = new URL(\n\t\trequireText(value, 'mobile.server.productionOrigin')\n\t);\n\tconst isLoopbackHttp =\n\t\tparsed.protocol === 'http:' &&\n\t\t(parsed.hostname === 'localhost' ||\n\t\t\tparsed.hostname === '127.0.0.1' ||\n\t\t\tparsed.hostname === '[::1]');\n\tif (parsed.protocol !== 'https:' && !isLoopbackHttp) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must use HTTPS, except for a loopback development origin.'\n\t\t);\n\t}\n\tif (\n\t\tparsed.username ||\n\t\tparsed.password ||\n\t\tparsed.pathname !== '/' ||\n\t\tparsed.search ||\n\t\tparsed.hash\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must be an origin without credentials, path, query, or hash.'\n\t\t);\n\t}\n\n\treturn parsed.origin;\n};\n\nconst normalizePlatforms = (\n\tplatforms: readonly MobilePlatform[] | undefined\n) => {\n\tconst normalized: MobilePlatform[] = [\n\t\t...new Set<MobilePlatform>(platforms ?? ['ios', 'android'])\n\t];\n\tif (normalized.length === 0) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.platforms must contain at least one platform.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeHosts = (\n\thosts: readonly string[] | undefined,\n\tproductionOrigin: string\n) => {\n\tconst normalizeHostname = (host: string) => {\n\t\tconst value = requireText(host, 'mobile.deepLinks.hosts').toLowerCase();\n\t\tif (!HOSTNAME_PATTERN.test(value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.deepLinks.hosts entries must be valid hostnames without ports, wildcards, or paths.'\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t};\n\tconst productionHostname = new URL(productionOrigin).hostname;\n\t// IPv6 loopback is valid for a local backend preview but cannot be an\n\t// Android App Link or Apple Universal Link hostname.\n\tconst normalized = new Set<string>(\n\t\tproductionHostname === '[::1]'\n\t\t\t? []\n\t\t\t: [normalizeHostname(productionHostname)]\n\t);\n\tfor (const host of hosts ?? []) {\n\t\tnormalized.add(normalizeHostname(host));\n\t}\n\n\treturn [...normalized].sort();\n};\n\nconst normalizeAppleAppIdPrefix = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(\n\t\tvalue,\n\t\t'mobile.deepLinks.apple.appIdPrefix'\n\t).toUpperCase();\n\tif (!APPLE_APP_ID_PREFIX_PATTERN.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.apple.appIdPrefix must contain ten letters or digits.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeIosVersion = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(value, 'mobile.ios.version');\n\tif (!/^\\d+(?:\\.\\d+){0,2}$/u.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.ios.version must contain one to three dot-separated integer components, for example 1.4.0.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeCertificateFingerprints = (\n\tvalues: readonly string[] | undefined\n) =>\n\t[\n\t\t...new Set(\n\t\t\t(values ?? [])\n\t\t\t\t.map((value) =>\n\t\t\t\t\trequireText(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints'\n\t\t\t\t\t)\n\t\t\t\t\t\t.replaceAll(':', '')\n\t\t\t\t\t\t.toUpperCase()\n\t\t\t\t)\n\t\t\t\t.map((value) => {\n\t\t\t\t\tif (!CERTIFICATE_FINGERPRINT_PATTERN.test(value)) {\n\t\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints entries must be SHA-256 certificate fingerprints.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value.match(/.{2}/g)?.join(':') ?? value;\n\t\t\t\t})\n\t\t)\n\t].sort();\n\nconst validateExpoNativeRouteSegment = (\n\tpath: string,\n\tsegment: string,\n\tindex: number,\n\tcount: number,\n\tparameters: Set<string>\n) => {\n\tif (segment === '*' && (index !== count - 1 || count === 1)) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} must use * once, as the final segment after a static or parameterized prefix.`\n\t\t);\n\t}\n\tif (segment === '*') return;\n\tif (\n\t\t!segment.startsWith(':') &&\n\t\t(segment.includes('*') || segment.includes(':'))\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} contains invalid segment ${segment}.`\n\t\t);\n\t}\n\tif (!segment.startsWith(':')) return;\n\tconst name = segment.slice(1);\n\tif (!/^[A-Za-z][A-Za-z0-9_]*$/u.test(name)) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} has invalid parameter ${segment}.`\n\t\t);\n\t}\n\tif (parameters.has(name)) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} repeats parameter ${segment}.`\n\t\t);\n\t}\n\tparameters.add(name);\n};\n\nconst normalizeExpoNativeRoutes = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n) => {\n\tif (config.engine !== 'expo') return {};\n\tconst routes = config.routes?.native ?? {};\n\tconst normalized: Record<string, string> = {};\n\tconst ownership = new Map<string, string>();\n\tfor (const [route, module] of Object.entries(routes)) {\n\t\tconst path = normalizeEntry(route);\n\t\tif (\n\t\t\tpath.includes('?') ||\n\t\t\tpath.includes('#') ||\n\t\t\t(path !== '/' && path.endsWith('/'))\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} must be a canonical path without a query, fragment, or trailing slash.`\n\t\t\t);\n\t\t}\n\t\tif (path === '/__absolute/native') {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.routes.native reserves /__absolute/native for the Expo diagnostic screen.'\n\t\t\t);\n\t\t}\n\t\tconst segments = path.split('/').filter(Boolean);\n\t\tif (segments[0] && EXPO_RESERVED_ROUTE_PREFIXES.has(segments[0])) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} conflicts with an Expo Router or Metro reserved path.`\n\t\t\t);\n\t\t}\n\t\tconst parameters = new Set<string>();\n\t\tsegments.forEach((segment, index) =>\n\t\t\tvalidateExpoNativeRouteSegment(\n\t\t\t\tpath,\n\t\t\t\tsegment,\n\t\t\t\tindex,\n\t\t\t\tsegments.length,\n\t\t\t\tparameters\n\t\t\t)\n\t\t);\n\t\tconst signature = segments\n\t\t\t.map((segment) => (segment.startsWith(':') ? ':' : segment))\n\t\t\t.join('/');\n\t\tconst existing = ownership.get(signature);\n\t\tif (existing) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native routes ${existing} and ${path} claim the same Expo route pattern.`\n\t\t\t);\n\t\t}\n\t\townership.set(signature, path);\n\t\tnormalized[path] = resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\trequireText(module, `mobile.routes.native[${path}]`),\n\t\t\t`mobile.routes.native[${path}]`\n\t\t);\n\t}\n\n\treturn Object.fromEntries(\n\t\tObject.entries(normalized).sort(([left], [right]) =>\n\t\t\tleft.localeCompare(right)\n\t\t)\n\t);\n};\n\nexport const normalizeAbsoluteMobileConfig = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n): NormalizedAbsoluteMobileConfig => {\n\tconst appId = requireText(config.appId, 'mobile.appId');\n\tif (!APP_ID_PATTERN.test(appId)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.appId must use reverse-domain notation, for example com.example.app.'\n\t\t);\n\t}\n\tconst productionOrigin = normalizeProductionOrigin(\n\t\tconfig.server.productionOrigin\n\t);\n\tconst deepLinkScheme = (config.deepLinks?.scheme ?? appId)\n\t\t.trim()\n\t\t.toLowerCase();\n\tif (deepLinkScheme && !SCHEME_PATTERN.test(deepLinkScheme)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.scheme is not a valid URL scheme.'\n\t\t);\n\t}\n\n\treturn {\n\t\tandroidCertificateFingerprints: normalizeCertificateFingerprints(\n\t\t\tconfig.deepLinks?.android?.sha256CertificateFingerprints\n\t\t),\n\t\tappId,\n\t\tappleAppIdPrefix: normalizeAppleAppIdPrefix(\n\t\t\tconfig.deepLinks?.apple?.appIdPrefix\n\t\t),\n\t\tappName: requireText(config.appName, 'mobile.appName'),\n\t\tbundleDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.bundleDirectory ?? '.absolutejs/mobile/web',\n\t\t\t'mobile.bundleDirectory'\n\t\t),\n\t\tdeepLinkHosts: normalizeHosts(\n\t\t\tconfig.deepLinks?.hosts,\n\t\t\tproductionOrigin\n\t\t),\n\t\tdeepLinkScheme,\n\t\tengine: config.engine ?? 'capacitor',\n\t\tentry: normalizeEntry(config.entry),\n\t\texpoNativeRoutes: normalizeExpoNativeRoutes(config, projectRoot),\n\t\t...(config.engine === 'expo'\n\t\t\t? { expoSdkVersion: config.expo?.sdkVersion ?? 57 }\n\t\t\t: {}),\n\t\tiosVersion: normalizeIosVersion(config.ios?.version),\n\t\tnativeProjectDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.nativeProject?.directory ??\n\t\t\t\t(config.engine === 'expo'\n\t\t\t\t\t? '.absolutejs/mobile/expo'\n\t\t\t\t\t: 'mobile'),\n\t\t\t'mobile.nativeProject.directory'\n\t\t),\n\t\tplatforms: normalizePlatforms(config.platforms),\n\t\tproductionOrigin,\n\t\tpushAndroidGoogleServicesFile: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.pushNotifications?.android?.googleServicesFile ??\n\t\t\t\t'google-services.json',\n\t\t\t'mobile.pushNotifications.android.googleServicesFile'\n\t\t)\n\t};\n};\n",
|
|
8
|
+
"import { resolve } from 'node:path';\nimport { createPublicKey } from 'node:crypto';\nimport type { MobileConfig, MobilePlatform } from '../../types/build';\n\nexport type NormalizedAbsoluteMobileConfig = {\n\tappId: string;\n\tappName: string;\n\tandroidCertificateFingerprints: string[];\n\tappleAppIdPrefix?: string;\n\tbundleDirectory: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tengine: 'capacitor' | 'expo';\n\tentry: string;\n\texpoNativeRoutes: Record<string, string>;\n\texpoSdkVersion?: 57;\n\tiosVersion?: string;\n\tnativeProjectDirectory: string;\n\tplatforms: MobilePlatform[];\n\tproductionOrigin: string;\n\tpushAndroidGoogleServicesFile: string;\n\tupdates?: {\n\t\tchannel: string;\n\t\tmanifestUrl: string;\n\t\tpublicKeys: Record<string, string>;\n\t};\n};\n\nconst APP_ID_PATTERN = /^[A-Za-z][\\w]*(?:\\.[A-Za-z][\\w]*)+$/;\nconst SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*$/;\nconst APPLE_APP_ID_PREFIX_PATTERN = /^[A-Z0-9]{10}$/;\nconst CERTIFICATE_FINGERPRINT_PATTERN = /^[0-9A-F]{64}$/;\nconst UPDATE_NAME_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;\nconst UPDATE_PUBLIC_KEY_PATTERN = /^[A-Za-z0-9+/]+={0,2}$/u;\nconst HOSTNAME_PATTERN =\n\t/^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))*$/;\nconst EXPO_RESERVED_ROUTE_PREFIXES = new Set([\n\t'_expo',\n\t'_flight',\n\t'_sitemap',\n\t'assets',\n\t'expo-dev-plugins',\n\t'inspector',\n\t'manifest',\n\t'public'\n]);\n\nconst resolveProjectPath = (\n\tprojectRoot: string,\n\tvalue: string,\n\tfield: string\n) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, value);\n\tif (path !== root && !path.startsWith(`${root}/`)) {\n\t\tthrow new TypeError(`${field} must remain inside the project root.`);\n\t}\n\n\treturn path;\n};\n\nconst requireText = (value: string, field: string) => {\n\tconst normalized = value.trim();\n\tif (!normalized) throw new TypeError(`${field} must not be empty.`);\n\n\treturn normalized;\n};\n\nconst normalizeEntry = (entry: string | undefined) => {\n\tconst normalized = requireText(entry ?? '/', 'mobile.entry');\n\tif (!normalized.startsWith('/') || normalized.startsWith('//')) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.entry must be an absolute application path.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeProductionOrigin = (value: string) => {\n\tconst parsed = new URL(\n\t\trequireText(value, 'mobile.server.productionOrigin')\n\t);\n\tconst isLoopbackHttp =\n\t\tparsed.protocol === 'http:' &&\n\t\t(parsed.hostname === 'localhost' ||\n\t\t\tparsed.hostname === '127.0.0.1' ||\n\t\t\tparsed.hostname === '[::1]');\n\tif (parsed.protocol !== 'https:' && !isLoopbackHttp) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must use HTTPS, except for a loopback development origin.'\n\t\t);\n\t}\n\tif (\n\t\tparsed.username ||\n\t\tparsed.password ||\n\t\tparsed.pathname !== '/' ||\n\t\tparsed.search ||\n\t\tparsed.hash\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.server.productionOrigin must be an origin without credentials, path, query, or hash.'\n\t\t);\n\t}\n\n\treturn parsed.origin;\n};\n\nconst normalizePlatforms = (\n\tplatforms: readonly MobilePlatform[] | undefined\n) => {\n\tconst normalized: MobilePlatform[] = [\n\t\t...new Set<MobilePlatform>(platforms ?? ['ios', 'android'])\n\t];\n\tif (normalized.length === 0) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.platforms must contain at least one platform.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeHosts = (\n\thosts: readonly string[] | undefined,\n\tproductionOrigin: string\n) => {\n\tconst normalizeHostname = (host: string) => {\n\t\tconst value = requireText(host, 'mobile.deepLinks.hosts').toLowerCase();\n\t\tif (!HOSTNAME_PATTERN.test(value)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.deepLinks.hosts entries must be valid hostnames without ports, wildcards, or paths.'\n\t\t\t);\n\t\t}\n\n\t\treturn value;\n\t};\n\tconst productionHostname = new URL(productionOrigin).hostname;\n\t// IPv6 loopback is valid for a local backend preview but cannot be an\n\t// Android App Link or Apple Universal Link hostname.\n\tconst normalized = new Set<string>(\n\t\tproductionHostname === '[::1]'\n\t\t\t? []\n\t\t\t: [normalizeHostname(productionHostname)]\n\t);\n\tfor (const host of hosts ?? []) {\n\t\tnormalized.add(normalizeHostname(host));\n\t}\n\n\treturn [...normalized].sort();\n};\n\nconst normalizeAppleAppIdPrefix = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(\n\t\tvalue,\n\t\t'mobile.deepLinks.apple.appIdPrefix'\n\t).toUpperCase();\n\tif (!APPLE_APP_ID_PREFIX_PATTERN.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.apple.appIdPrefix must contain ten letters or digits.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeIosVersion = (value: string | undefined) => {\n\tif (value === undefined) return undefined;\n\tconst normalized = requireText(value, 'mobile.ios.version');\n\tif (!/^\\d+(?:\\.\\d+){0,2}$/u.test(normalized)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.ios.version must contain one to three dot-separated integer components, for example 1.4.0.'\n\t\t);\n\t}\n\n\treturn normalized;\n};\n\nconst normalizeCertificateFingerprints = (\n\tvalues: readonly string[] | undefined\n) =>\n\t[\n\t\t...new Set(\n\t\t\t(values ?? [])\n\t\t\t\t.map((value) =>\n\t\t\t\t\trequireText(\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints'\n\t\t\t\t\t)\n\t\t\t\t\t\t.replaceAll(':', '')\n\t\t\t\t\t\t.toUpperCase()\n\t\t\t\t)\n\t\t\t\t.map((value) => {\n\t\t\t\t\tif (!CERTIFICATE_FINGERPRINT_PATTERN.test(value)) {\n\t\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints entries must be SHA-256 certificate fingerprints.'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn value.match(/.{2}/g)?.join(':') ?? value;\n\t\t\t\t})\n\t\t)\n\t].sort();\n\nconst normalizeUpdates = (\n\tconfig: MobileConfig,\n\tproductionOrigin: string\n): NormalizedAbsoluteMobileConfig['updates'] => {\n\tif (!config.updates) return undefined;\n\tconst channel = requireText(\n\t\tconfig.updates.channel ?? 'production',\n\t\t'mobile.updates.channel'\n\t);\n\tif (!UPDATE_NAME_PATTERN.test(channel))\n\t\tthrow new TypeError(\n\t\t\t'mobile.updates.channel contains unsupported characters.'\n\t\t);\n\tconst manifestUrl = new URL(\n\t\tconfig.updates.manifestUrl ??\n\t\t\t`/__absolute/mobile/updates/${encodeURIComponent(channel)}/update.json`,\n\t\t`${productionOrigin}/`\n\t);\n\tconst loopback =\n\t\tmanifestUrl.hostname === 'localhost' ||\n\t\tmanifestUrl.hostname === '127.0.0.1' ||\n\t\tmanifestUrl.hostname === '[::1]';\n\tif (manifestUrl.protocol !== 'https:' && !loopback)\n\t\tthrow new TypeError(\n\t\t\t'mobile.updates.manifestUrl must use HTTPS outside loopback development.'\n\t\t);\n\tif (manifestUrl.username || manifestUrl.password || manifestUrl.hash)\n\t\tthrow new TypeError(\n\t\t\t'mobile.updates.manifestUrl cannot contain credentials or a fragment.'\n\t\t);\n\tconst entries = Object.entries(config.updates.publicKeys).sort(\n\t\t([left], [right]) => left.localeCompare(right)\n\t);\n\tif (entries.length === 0)\n\t\tthrow new TypeError(\n\t\t\t'mobile.updates.publicKeys must contain at least one key.'\n\t\t);\n\tconst publicKeys = Object.fromEntries(\n\t\tentries.map(([keyId, key]) => {\n\t\t\tif (!UPDATE_NAME_PATTERN.test(keyId))\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'mobile.updates.publicKeys contains an invalid key ID.'\n\t\t\t\t);\n\t\t\tconst normalized = requireText(\n\t\t\t\tkey,\n\t\t\t\t`mobile.updates.publicKeys.${keyId}`\n\t\t\t);\n\t\t\tif (!UPDATE_PUBLIC_KEY_PATTERN.test(normalized))\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`mobile.updates.publicKeys.${keyId} must be base64-encoded ECDSA P-256 SPKI DER.`\n\t\t\t\t);\n\t\t\tlet decoded: Buffer;\n\t\t\ttry {\n\t\t\t\tdecoded = Buffer.from(normalized, 'base64');\n\t\t\t} catch {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`mobile.updates.publicKeys.${keyId} must be canonical base64.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet keyType: string | undefined;\n\t\t\tlet namedCurve: string | undefined;\n\t\t\ttry {\n\t\t\t\tconst publicKey = createPublicKey({\n\t\t\t\t\tformat: 'der',\n\t\t\t\t\tkey: decoded,\n\t\t\t\t\ttype: 'spki'\n\t\t\t\t});\n\t\t\t\tkeyType = publicKey.asymmetricKeyType;\n\t\t\t\tnamedCurve = publicKey.asymmetricKeyDetails?.namedCurve;\n\t\t\t} catch {\n\t\t\t\tkeyType = undefined;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tdecoded.toString('base64') !== normalized ||\n\t\t\t\tkeyType !== 'ec' ||\n\t\t\t\tnamedCurve !== 'prime256v1'\n\t\t\t)\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`mobile.updates.publicKeys.${keyId} is not an ECDSA P-256 SPKI public key.`\n\t\t\t\t);\n\n\t\t\treturn [keyId, normalized];\n\t\t})\n\t);\n\n\treturn { channel, manifestUrl: manifestUrl.href, publicKeys };\n};\n\nconst validateExpoNativeRouteSegment = (\n\tpath: string,\n\tsegment: string,\n\tindex: number,\n\tcount: number,\n\tparameters: Set<string>\n) => {\n\tif (segment === '*' && (index !== count - 1 || count === 1)) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} must use * once, as the final segment after a static or parameterized prefix.`\n\t\t);\n\t}\n\tif (segment === '*') return;\n\tif (\n\t\t!segment.startsWith(':') &&\n\t\t(segment.includes('*') || segment.includes(':'))\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} contains invalid segment ${segment}.`\n\t\t);\n\t}\n\tif (!segment.startsWith(':')) return;\n\tconst name = segment.slice(1);\n\tif (!/^[A-Za-z][A-Za-z0-9_]*$/u.test(name)) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} has invalid parameter ${segment}.`\n\t\t);\n\t}\n\tif (parameters.has(name)) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.routes.native route ${path} repeats parameter ${segment}.`\n\t\t);\n\t}\n\tparameters.add(name);\n};\n\nconst normalizeExpoNativeRoutes = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n) => {\n\tif (config.engine !== 'expo') return {};\n\tconst routes = config.routes?.native ?? {};\n\tconst normalized: Record<string, string> = {};\n\tconst ownership = new Map<string, string>();\n\tfor (const [route, module] of Object.entries(routes)) {\n\t\tconst path = normalizeEntry(route);\n\t\tif (\n\t\t\tpath.includes('?') ||\n\t\t\tpath.includes('#') ||\n\t\t\t(path !== '/' && path.endsWith('/'))\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} must be a canonical path without a query, fragment, or trailing slash.`\n\t\t\t);\n\t\t}\n\t\tif (path === '/__absolute/native') {\n\t\t\tthrow new TypeError(\n\t\t\t\t'mobile.routes.native reserves /__absolute/native for the Expo diagnostic screen.'\n\t\t\t);\n\t\t}\n\t\tconst segments = path.split('/').filter(Boolean);\n\t\tif (segments[0] && EXPO_RESERVED_ROUTE_PREFIXES.has(segments[0])) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native route ${path} conflicts with an Expo Router or Metro reserved path.`\n\t\t\t);\n\t\t}\n\t\tconst parameters = new Set<string>();\n\t\tsegments.forEach((segment, index) =>\n\t\t\tvalidateExpoNativeRouteSegment(\n\t\t\t\tpath,\n\t\t\t\tsegment,\n\t\t\t\tindex,\n\t\t\t\tsegments.length,\n\t\t\t\tparameters\n\t\t\t)\n\t\t);\n\t\tconst signature = segments\n\t\t\t.map((segment) => (segment.startsWith(':') ? ':' : segment))\n\t\t\t.join('/');\n\t\tconst existing = ownership.get(signature);\n\t\tif (existing) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`mobile.routes.native routes ${existing} and ${path} claim the same Expo route pattern.`\n\t\t\t);\n\t\t}\n\t\townership.set(signature, path);\n\t\tnormalized[path] = resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\trequireText(module, `mobile.routes.native[${path}]`),\n\t\t\t`mobile.routes.native[${path}]`\n\t\t);\n\t}\n\n\treturn Object.fromEntries(\n\t\tObject.entries(normalized).sort(([left], [right]) =>\n\t\t\tleft.localeCompare(right)\n\t\t)\n\t);\n};\n\nexport const normalizeAbsoluteMobileConfig = (\n\tconfig: MobileConfig,\n\tprojectRoot: string\n): NormalizedAbsoluteMobileConfig => {\n\tconst appId = requireText(config.appId, 'mobile.appId');\n\tif (!APP_ID_PATTERN.test(appId)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.appId must use reverse-domain notation, for example com.example.app.'\n\t\t);\n\t}\n\tconst productionOrigin = normalizeProductionOrigin(\n\t\tconfig.server.productionOrigin\n\t);\n\tconst deepLinkScheme = (config.deepLinks?.scheme ?? appId)\n\t\t.trim()\n\t\t.toLowerCase();\n\tif (deepLinkScheme && !SCHEME_PATTERN.test(deepLinkScheme)) {\n\t\tthrow new TypeError(\n\t\t\t'mobile.deepLinks.scheme is not a valid URL scheme.'\n\t\t);\n\t}\n\tconst updates = normalizeUpdates(config, productionOrigin);\n\n\treturn {\n\t\tandroidCertificateFingerprints: normalizeCertificateFingerprints(\n\t\t\tconfig.deepLinks?.android?.sha256CertificateFingerprints\n\t\t),\n\t\tappId,\n\t\tappleAppIdPrefix: normalizeAppleAppIdPrefix(\n\t\t\tconfig.deepLinks?.apple?.appIdPrefix\n\t\t),\n\t\tappName: requireText(config.appName, 'mobile.appName'),\n\t\tbundleDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.bundleDirectory ?? '.absolutejs/mobile/web',\n\t\t\t'mobile.bundleDirectory'\n\t\t),\n\t\tdeepLinkHosts: normalizeHosts(\n\t\t\tconfig.deepLinks?.hosts,\n\t\t\tproductionOrigin\n\t\t),\n\t\tdeepLinkScheme,\n\t\tengine: config.engine ?? 'capacitor',\n\t\tentry: normalizeEntry(config.entry),\n\t\texpoNativeRoutes: normalizeExpoNativeRoutes(config, projectRoot),\n\t\t...(config.engine === 'expo'\n\t\t\t? { expoSdkVersion: config.expo?.sdkVersion ?? 57 }\n\t\t\t: {}),\n\t\tiosVersion: normalizeIosVersion(config.ios?.version),\n\t\tnativeProjectDirectory: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.nativeProject?.directory ??\n\t\t\t\t(config.engine === 'expo'\n\t\t\t\t\t? '.absolutejs/mobile/expo'\n\t\t\t\t\t: 'mobile'),\n\t\t\t'mobile.nativeProject.directory'\n\t\t),\n\t\tplatforms: normalizePlatforms(config.platforms),\n\t\tproductionOrigin,\n\t\tpushAndroidGoogleServicesFile: resolveProjectPath(\n\t\t\tprojectRoot,\n\t\t\tconfig.pushNotifications?.android?.googleServicesFile ??\n\t\t\t\t'google-services.json',\n\t\t\t'mobile.pushNotifications.android.googleServicesFile'\n\t\t),\n\t\t...(updates ? { updates } : {})\n\t};\n};\n",
|
|
9
9
|
"const normalizeSlug = (str: string) =>\n\tstr\n\t\t.trim()\n\t\t.replace(/\\s+/g, '-')\n\t\t.replace(/[^A-Za-z0-9\\-_]+/g, '')\n\t\t.replace(/[-_]{2,}/g, '-');\n\nexport const toKebab = (str: string) =>\n\tnormalizeSlug(str)\n\t\t.replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n\t\t.toLowerCase();\nexport const toPascal = (str: string) => {\n\tif (!str.includes('-') && !str.includes('_')) {\n\t\treturn str.charAt(0).toUpperCase() + str.slice(1);\n\t}\n\n\treturn normalizeSlug(str)\n\t\t.split(/[-_]/)\n\t\t.filter(Boolean)\n\t\t.map(\n\t\t\t(segment) =>\n\t\t\t\tsegment.charAt(0).toUpperCase() + segment.slice(1).toLowerCase()\n\t\t)\n\t\t.join('');\n};\nexport const toScreamingSnake = (str: string) =>\n\tstr.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toUpperCase();\n",
|
|
10
10
|
"import { readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nexport const ABSOLUTE_AUTH_PACKAGE = '@absolutejs/auth' as const;\nexport const ABSOLUTE_EXPO_AUTH_CORE_VERSION = '0.75.6' as const;\nexport const ABSOLUTE_EXPO_AUTH_PACKAGE = '@absolutejs/auth-expo' as const;\nexport const ABSOLUTE_EXPO_AUTH_VERSION = '0.0.2' as const;\nexport const ABSOLUTE_EXPO_SYNC_CORE_VERSION = '2.31.0' as const;\nexport const ABSOLUTE_EXPO_SYNC_PACKAGE = '@absolutejs/sync-expo' as const;\nexport const ABSOLUTE_EXPO_SYNC_VERSION = '0.0.2' as const;\nexport const ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV =\n\t'ABSOLUTE_AUTH_NATIVE_CLIENTS' as const;\nexport const ABSOLUTE_NATIVE_AUTH_SCOPES = ['openid', 'profile'] as const;\nexport const ABSOLUTE_SYNC_PACKAGE = '@absolutejs/sync' as const;\n\nexport type AbsoluteMobileAuthManifest = {\n\tclientId: string;\n\tissuer: string;\n\tredirectUri: string;\n\tscopes: string[];\n};\n\nconst readPackageManifest = (projectRoot: string) => {\n\ttry {\n\t\treturn JSON.parse(\n\t\t\treadFileSync(join(projectRoot, 'package.json'), 'utf8')\n\t\t);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst packageManifestHas = (manifest: unknown, packageName: string) => {\n\tif (typeof manifest !== 'object' || manifest === null) return false;\n\n\treturn [\n\t\tReflect.get(manifest, 'dependencies'),\n\t\tReflect.get(manifest, 'devDependencies'),\n\t\tReflect.get(manifest, 'optionalDependencies'),\n\t\tReflect.get(manifest, 'peerDependencies')\n\t].some(\n\t\t(dependencies) =>\n\t\t\ttypeof dependencies === 'object' &&\n\t\t\tdependencies !== null &&\n\t\t\tObject.hasOwn(dependencies, packageName)\n\t);\n};\n\nexport const createAbsoluteMobileAuthManifest = (\n\tconfig: NormalizedAbsoluteMobileConfig\n): AbsoluteMobileAuthManifest => {\n\tconst scheme = config.deepLinkScheme ?? config.appId.toLowerCase();\n\n\treturn {\n\t\tclientId: `absolutejs-native:${config.appId}`,\n\t\tissuer: config.productionOrigin,\n\t\tredirectUri: `${scheme}://auth/callback`,\n\t\tscopes: [...ABSOLUTE_NATIVE_AUTH_SCOPES]\n\t};\n};\n\nexport const installAbsoluteMobileAuthEnvironment = (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tconst auth = resolveAbsoluteMobileAuthManifest(projectRoot, config);\n\tconst serialized = serializeAbsoluteMobileAuthEnvironment(config, auth);\n\tif (serialized === undefined)\n\t\tdelete process.env[ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV];\n\telse process.env[ABSOLUTE_NATIVE_AUTH_CLIENTS_ENV] = serialized;\n\n\treturn auth;\n};\n\nexport const projectUsesAbsoluteAuth = (projectRoot: string) =>\n\tpackageManifestHas(readPackageManifest(projectRoot), ABSOLUTE_AUTH_PACKAGE);\n\nexport const projectUsesAbsoluteSync = (projectRoot: string) =>\n\tpackageManifestHas(readPackageManifest(projectRoot), ABSOLUTE_SYNC_PACKAGE);\n\nexport const resolveAbsoluteMobileAuthManifest = (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig\n) =>\n\tprojectUsesAbsoluteAuth(projectRoot)\n\t\t? createAbsoluteMobileAuthManifest(config)\n\t\t: undefined;\n\nexport const serializeAbsoluteMobileAuthEnvironment = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: AbsoluteMobileAuthManifest | undefined\n) =>\n\tauth === undefined\n\t\t? undefined\n\t\t: JSON.stringify([\n\t\t\t\t{\n\t\t\t\t\t...auth,\n\t\t\t\t\tname: `${config.appName} native app`\n\t\t\t\t}\n\t\t\t]);\n",
|
|
11
11
|
"var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/crdt/orSet.ts\nvar newTag = () => globalThis.crypto.randomUUID();\nvar defaultEquals = (a, b) => Object.is(a, b);\nvar orSet = {\n create: () => ({ adds: [], removed: [] }),\n add: (state, value, tag = newTag()) => ({\n adds: [...state.adds, { value, tag }],\n removed: state.removed\n }),\n remove: (state, value, equals = defaultEquals) => {\n const tags = state.adds.filter((entry) => equals(entry.value, value)).map((entry) => entry.tag);\n return {\n adds: state.adds,\n removed: [...new Set([...state.removed, ...tags])]\n };\n },\n has: (state, value, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n return state.adds.some((entry) => equals(entry.value, value) && !removed.has(entry.tag));\n },\n values: (state, equals = defaultEquals) => {\n const removed = new Set(state.removed);\n const out = [];\n for (const entry of state.adds) {\n if (!removed.has(entry.tag) && !out.some((value) => equals(value, entry.value))) {\n out.push(entry.value);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const byTag = new Map;\n for (const entry of [...a.adds, ...b.adds]) {\n byTag.set(entry.tag, entry);\n }\n return {\n adds: [...byTag.values()],\n removed: [...new Set([...a.removed, ...b.removed])]\n };\n }\n};\n// src/crdt/lwwMap.ts\nvar pick = (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n};\nvar lwwMap = {\n create: () => ({}),\n set: (state, key, value, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value, deleted: false, timestamp, replica }\n }),\n delete: (state, key, replica, timestamp = Date.now()) => ({\n ...state,\n [key]: { value: state[key]?.value, deleted: true, timestamp, replica }\n }),\n get: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted ? entry.value : undefined;\n },\n has: (state, key) => {\n const entry = state[key];\n return entry !== undefined && !entry.deleted;\n },\n keys: (state) => Object.keys(state).filter((key) => !state[key]?.deleted),\n entries: (state) => {\n const out = [];\n for (const [key, entry] of Object.entries(state)) {\n if (!entry.deleted && entry.value !== undefined) {\n out.push([key, entry.value]);\n }\n }\n return out;\n },\n merge: (a, b) => {\n const out = { ...a };\n for (const [key, entry] of Object.entries(b)) {\n const existing = out[key];\n out[key] = existing === undefined ? entry : pick(existing, entry);\n }\n return out;\n }\n};\n// src/crdt/list.ts\nvar order = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(order);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar listOf = (state) => linearize(state.elements).filter((element) => !element.deleted).map((element) => element.value);\nvar mergeListState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar createList = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize([...elements.values()]).filter((element) => !element.deleted);\n return {\n list: () => listOf({ elements: [...elements.values()] }),\n insert: (index, items) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const value of items) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n },\n delete: (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n },\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n }\n };\n};\n\n// src/crdt/index.ts\nvar sumValues = (counts) => Object.values(counts).reduce((total, value) => total + value, 0);\nvar mergeMax = (a, b) => {\n const merged = { ...a };\n for (const [replica, value] of Object.entries(b)) {\n merged[replica] = Math.max(merged[replica] ?? 0, value);\n }\n return merged;\n};\nvar counter = {\n create: () => ({ increments: {}, decrements: {} }),\n value: (state) => sumValues(state.increments) - sumValues(state.decrements),\n increment: (state, replica, by = 1) => ({\n increments: {\n ...state.increments,\n [replica]: (state.increments[replica] ?? 0) + by\n },\n decrements: state.decrements\n }),\n decrement: (state, replica, by = 1) => ({\n increments: state.increments,\n decrements: {\n ...state.decrements,\n [replica]: (state.decrements[replica] ?? 0) + by\n }\n }),\n merge: (a, b) => ({\n increments: mergeMax(a.increments, b.increments),\n decrements: mergeMax(a.decrements, b.decrements)\n })\n};\nvar lww = {\n create: (value, replica, timestamp = Date.now()) => ({ value, timestamp, replica }),\n set: (value, replica, timestamp = Date.now()) => ({\n value,\n timestamp,\n replica\n }),\n merge: (a, b) => {\n if (b.timestamp > a.timestamp) {\n return b;\n }\n if (b.timestamp < a.timestamp) {\n return a;\n }\n return b.replica > a.replica ? b : a;\n }\n};\nvar compare = (a, b) => {\n if (a.clock !== b.clock) {\n return b.clock - a.clock;\n }\n if (a.replica === b.replica) {\n return 0;\n }\n return a.replica > b.replica ? -1 : 1;\n};\nvar linearize2 = (elements) => {\n const present = new Set(elements.map((element) => element.id));\n const children = new Map;\n for (const element of elements) {\n const anchor = element.after !== null && !present.has(element.after) ? null : element.after;\n const list = children.get(anchor);\n if (list === undefined) {\n children.set(anchor, [element]);\n } else {\n list.push(element);\n }\n }\n for (const list of children.values()) {\n list.sort(compare);\n }\n const ordered = [];\n const stack = [...children.get(null) ?? []].reverse();\n while (stack.length > 0) {\n const element = stack.pop();\n ordered.push(element);\n const kids = children.get(element.id);\n if (kids !== undefined) {\n for (let index = kids.length - 1;index >= 0; index -= 1) {\n stack.push(kids[index]);\n }\n }\n }\n return ordered;\n};\nvar textOf = (state) => linearize2(state.elements).filter((element) => !element.deleted).map((element) => element.value).join(\"\");\nvar mergeTextState = (a, b) => {\n const byId = new Map;\n for (const element of [...a.elements, ...b.elements]) {\n const existing = byId.get(element.id);\n byId.set(element.id, existing === undefined ? element : { ...existing, deleted: existing.deleted || element.deleted });\n }\n return { elements: [...byId.values()] };\n};\nvar tombstoneCount = (state) => state.elements.reduce((total, element) => element.deleted ? total + 1 : total, 0);\nvar compact = (state) => {\n const byId = new Map(state.elements.map((element) => [element.id, element]));\n const keep = new Set;\n for (const element of state.elements) {\n if (element.deleted) {\n continue;\n }\n let anchor = element.after;\n while (anchor !== null && !keep.has(anchor)) {\n const target = byId.get(anchor);\n if (target === undefined || !target.deleted) {\n break;\n }\n keep.add(anchor);\n anchor = target.after;\n }\n }\n return {\n elements: state.elements.filter((element) => !element.deleted || keep.has(element.id))\n };\n};\nvar createTextCrdt = (replica, initial) => {\n const elements = new Map;\n const pending = new Map;\n let clock = 0;\n if (initial !== undefined) {\n for (const element of initial.elements) {\n elements.set(element.id, element);\n clock = Math.max(clock, element.clock);\n }\n }\n const visible = () => linearize2([...elements.values()]).filter((element) => !element.deleted);\n const insert = (index, value) => {\n const seen = visible();\n let after = index <= 0 ? null : seen[index - 1]?.id ?? null;\n for (const char of [...value]) {\n clock += 1;\n const element = {\n id: `${replica}:${clock}`,\n replica,\n clock,\n after,\n value: char,\n deleted: false\n };\n elements.set(element.id, element);\n pending.set(element.id, element);\n after = element.id;\n }\n };\n const remove = (index, count) => {\n const seen = visible();\n for (let offset = 0;offset < count; offset += 1) {\n const target = seen[index + offset];\n if (target !== undefined) {\n const tombstoned = { ...target, deleted: true };\n elements.set(target.id, tombstoned);\n pending.set(target.id, tombstoned);\n }\n }\n };\n return {\n text: () => textOf({ elements: [...elements.values()] }),\n insert,\n delete: remove,\n merge: (state) => {\n for (const element of state.elements) {\n const existing = elements.get(element.id);\n elements.set(element.id, existing === undefined ? element : {\n ...existing,\n deleted: existing.deleted || element.deleted\n });\n clock = Math.max(clock, element.clock);\n }\n },\n setText: (next) => {\n const current = textOf({ elements: [...elements.values()] });\n if (current === next) {\n return;\n }\n let prefix = 0;\n const maxPrefix = Math.min(current.length, next.length);\n while (prefix < maxPrefix && current[prefix] === next[prefix]) {\n prefix += 1;\n }\n let suffix = 0;\n while (suffix < maxPrefix - prefix && current[current.length - 1 - suffix] === next[next.length - 1 - suffix]) {\n suffix += 1;\n }\n const removed = current.length - prefix - suffix;\n if (removed > 0) {\n remove(prefix, removed);\n }\n const inserted = next.slice(prefix, next.length - suffix);\n if (inserted.length > 0) {\n insert(prefix, inserted);\n }\n },\n state: () => ({ elements: [...elements.values()] }),\n takeDelta: () => {\n const delta = { elements: [...pending.values()] };\n pending.clear();\n return delta;\n },\n anchorAt: (index) => {\n if (index <= 0) {\n return null;\n }\n const seen = visible();\n return seen[Math.min(index, seen.length) - 1]?.id ?? null;\n },\n indexOfAnchor: (anchor) => {\n if (anchor === null) {\n return 0;\n }\n let visibleCount = 0;\n for (const element of linearize2([...elements.values()])) {\n if (!element.deleted) {\n visibleCount += 1;\n }\n if (element.id === anchor) {\n return visibleCount;\n }\n }\n return visibleCount;\n }\n };\n};\nvar rgaText = {\n compact,\n create: createTextCrdt,\n empty: () => ({ elements: [] }),\n merge: mergeTextState,\n textOf\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\")) && Array.isArray(Reflect.get(value, \"clients\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n if (typeof existing === \"object\" && existing !== null && Array.isArray(Reflect.get(existing, \"installations\"))) {\n Reflect.set(existing, \"clients\", []);\n return existing;\n }\n const created = { clients: [], installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\nvar registerSyncRuntimeClient = (client) => {\n registry.clients.push(client);\n return () => {\n const index = registry.clients.indexOf(client);\n if (index >= 0)\n registry.clients.splice(index, 1);\n };\n};\nvar maximum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.max(...present);\n};\nvar minimum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.min(...present);\n};\nvar inspectSyncRuntime = async () => {\n const clients = [...registry.clients];\n const statuses = clients.map((client) => client.status());\n const deadLetters = (await Promise.all(clients.map((client) => client.listDeadLetters()))).flat().map((record) => ({\n attempts: record.attempts,\n ...record.rejection?.code ? { code: record.rejection.code } : {},\n createdAt: record.createdAt,\n ...record.deadLetteredAt === undefined ? {} : { deadLetteredAt: record.deadLetteredAt },\n ...record.rejection?.kind ? { kind: record.rejection.kind } : {},\n ...record.rejection?.message ? { message: record.rejection.message } : {},\n name: record.name,\n operationId: record.operationId\n })).sort((left, right) => (left.deadLetteredAt ?? left.createdAt) - (right.deadLetteredAt ?? right.createdAt) || left.operationId.localeCompare(right.operationId));\n const lastError = statuses.findLast((status) => status.lastError)?.lastError;\n return {\n automaticResolutions: statuses.reduce((total, status) => total + status.automaticResolutions, 0),\n clients: clients.length,\n conflicts: deadLetters.filter((record) => record.kind === \"conflict\").length,\n deadLetters,\n ...lastError ? { lastError } : {},\n ...maximum(statuses.map((status) => status.lastSuccessfulPullAt)) === undefined ? {} : {\n lastSuccessfulPullAt: maximum(statuses.map((status) => status.lastSuccessfulPullAt))\n },\n ...maximum(statuses.map((status) => status.lastSuccessfulPushAt)) === undefined ? {} : {\n lastSuccessfulPushAt: maximum(statuses.map((status) => status.lastSuccessfulPushAt))\n },\n ...minimum(statuses.map((status) => status.oldestDeadLetterAt)) === undefined ? {} : {\n oldestDeadLetterAt: minimum(statuses.map((status) => status.oldestDeadLetterAt))\n },\n ...minimum(statuses.map((status) => status.oldestPendingAt)) === undefined ? {} : {\n oldestPendingAt: minimum(statuses.map((status) => status.oldestPendingAt))\n },\n pending: statuses.reduce((total, status) => total + status.pending, 0)\n };\n};\nvar clientWithDeadLetter = async (operationId) => {\n for (const client of registry.clients)\n if ((await client.listDeadLetters()).some((record) => record.operationId === operationId))\n return client;\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n};\nvar retrySyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).retryDeadLetter(operationId);\nvar discardSyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).discardDeadLetter(operationId);\nvar rebaseSyncRuntimeDeadLetter = async (operationId, args) => (await clientWithDeadLetter(operationId)).rebaseDeadLetter(operationId, args);\n\n// src/client/headlessSync.ts\nvar defaultKey = (row) => {\n if (typeof row !== \"object\" || row === null)\n throw new TypeError(\"Headless Sync rows require an object key.\");\n const key = Reflect.get(row, \"id\");\n if (typeof key !== \"string\" && typeof key !== \"number\")\n throw new TypeError(\"Headless Sync rows require an id key or an explicit key function.\");\n return key;\n};\nvar requireInteger = (value, fallback) => {\n const result = value ?? fallback;\n if (!Number.isSafeInteger(result) || result < 0)\n throw new TypeError(\"Headless Sync limits must be non-negative integers.\");\n return result;\n};\nvar retryDelay = (attempt) => Math.min(30000, 500 * 2 ** Math.max(0, attempt - 1));\nvar parseResponse = (value) => {\n if (typeof value !== \"object\" || value === null || Reflect.get(value, \"version\") !== 1 || !Array.isArray(Reflect.get(value, \"mutations\")) || !Array.isArray(Reflect.get(value, \"pulls\")))\n throw new Error(\"The Headless Sync response is malformed.\");\n return value;\n};\nvar sameBaseline = (current, baseline) => current?.cursor === baseline?.cursor && (current?.version ?? 0) === (baseline?.version ?? 0);\nvar applyPull = (current, pull, collection, key) => {\n const descriptor = {\n ...current,\n collection: collection.collection,\n params: collection.params\n };\n if (collection.key === undefined)\n descriptor.headlessKey = \"id\";\n else\n delete descriptor.headlessKey;\n if (pull.type === \"snapshot\")\n return {\n ...descriptor,\n rows: pull.rows,\n version: pull.version,\n cursor: pull.cursor\n };\n const rows = new Map;\n for (const row of current?.rows ?? [])\n rows.set(key(row), row);\n for (const row of pull.removed)\n rows.delete(key(row));\n for (const row of pull.changed)\n rows.set(key(row), row);\n for (const row of pull.added)\n rows.set(key(row), row);\n return {\n ...descriptor,\n rows: [...rows.values()],\n version: pull.version,\n cursor: pull.cursor\n };\n};\nvar runHeadlessSync = async ({\n endpoint,\n store,\n namespace,\n collections,\n maxMutations: configuredMaxMutations,\n maxPulls: configuredMaxPulls,\n maxAttempts: configuredMaxAttempts,\n retryBackoff = retryDelay,\n headers,\n fetch: fetchOverride,\n now = Date.now\n}) => {\n if (endpoint.length === 0 || namespace.length === 0)\n throw new TypeError(\"Headless Sync endpoint and namespace are required.\");\n const maxMutations = requireInteger(configuredMaxMutations, 50);\n const maxPulls = requireInteger(configuredMaxPulls, 50);\n const maxAttempts = requireInteger(configuredMaxAttempts, 5);\n const startedAt = now();\n const snapshot = await store.transaction(namespace, \"readwrite\", async (tx) => {\n const due = (await tx.listMutations()).filter((record) => record.state !== \"dead-letter\" && (record.nextAttemptAt ?? 0) <= startedAt).slice(0, maxMutations);\n const mutations = [];\n for (const record of due) {\n const next = { ...record, attempts: record.attempts + 1 };\n delete next.nextAttemptAt;\n await tx.putMutation(next);\n mutations.push(next);\n }\n const discoveredCollections = collections ?? (await tx.listCollections()).filter(({ record }) => record.headlessKey === \"id\" && typeof record.collection === \"string\" && record.collection.length > 0).map(({ key, record }) => ({\n collection: record.collection,\n localKey: key,\n params: record.params\n }));\n const pulls = await Promise.all(discoveredCollections.slice(0, maxPulls).map(async (collection) => ({\n collection,\n record: await tx.getCollection(collection.localKey)\n })));\n return { mutations, pulls };\n });\n const request = {\n version: 1,\n mutations: snapshot.mutations.map(({ operationId, name, args }) => ({\n operationId,\n name,\n args\n })),\n pulls: snapshot.pulls.map(({ collection, record }, index) => ({\n id: String(index),\n collection: collection.collection,\n params: collection.params,\n ...record?.cursor !== undefined ? { since: record.cursor } : (record?.version ?? 0) > 0 ? { since: record.version } : {}\n }))\n };\n const fetchImpl = fetchOverride ?? ((url, init) => globalThis.fetch(url, init));\n let response;\n try {\n const fetched = await fetchImpl(endpoint, {\n body: JSON.stringify(request),\n credentials: \"include\",\n headers: {\n accept: \"application/json\",\n \"content-type\": \"application/json\",\n ...await headers?.()\n },\n method: \"POST\",\n redirect: \"error\"\n });\n if (!fetched.ok)\n throw new Error(`Headless Sync failed with HTTP ${fetched.status}.`);\n response = parseResponse(await fetched.json());\n } catch (error) {\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n await tx.putMutation({\n ...current,\n lastError: error instanceof Error ? error.message : String(error),\n nextAttemptAt: now() + Math.max(0, retryBackoff(current.attempts))\n });\n }\n });\n throw error;\n }\n const mutationResults = new Map(response.mutations.map((result2) => [result2.operationId, result2]));\n const pullResults = new Map(response.pulls.map((result2) => [result2.id, result2]));\n const result = {\n acknowledged: 0,\n conflictsDiscarded: 0,\n conflictsRetried: 0,\n deadLettered: 0,\n pulled: 0,\n retryScheduled: 0\n };\n await store.transaction(namespace, \"readwrite\", async (tx) => {\n for (const sent of snapshot.mutations) {\n const current = await tx.getMutation(sent.operationId);\n if (current?.attempts !== sent.attempts)\n continue;\n const outcome = mutationResults.get(sent.operationId);\n if (outcome?.status === \"ack\") {\n await tx.deleteMutation(sent.operationId);\n result.acknowledged += 1;\n continue;\n }\n const rejection = outcome?.status === \"reject\" ? outcome.rejection : {\n kind: \"retryable\",\n message: \"Missing mutation response.\"\n };\n if (rejection.kind === \"conflict\" && current.conflictPolicy?.strategy === \"server-wins\") {\n await tx.deleteMutation(sent.operationId);\n result.conflictsDiscarded += 1;\n continue;\n }\n if (rejection.kind === \"conflict\" && current.conflictPolicy?.strategy === \"client-wins\" && (current.conflictAttempts ?? 0) < (current.conflictPolicy.maxAttempts ?? 1)) {\n const retry = {\n ...current,\n conflictAttempts: (current.conflictAttempts ?? 0) + 1,\n lastError: rejection.message,\n rejection,\n state: \"pending\"\n };\n delete retry.nextAttemptAt;\n await tx.putMutation(retry);\n result.conflictsRetried += 1;\n continue;\n }\n if (rejection.kind !== \"retryable\" || current.attempts >= maxAttempts) {\n const deadLetter = {\n ...current,\n deadLetteredAt: now(),\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete deadLetter.nextAttemptAt;\n await tx.putMutation(deadLetter);\n result.deadLettered += 1;\n } else {\n await tx.putMutation({\n ...current,\n lastError: rejection.message,\n nextAttemptAt: now() + Math.max(0, rejection.retryAfterMs ?? retryBackoff(current.attempts)),\n rejection,\n state: \"pending\"\n });\n result.retryScheduled += 1;\n }\n }\n for (let index = 0;index < snapshot.pulls.length; index += 1) {\n const baseline = snapshot.pulls[index];\n const pull = pullResults.get(String(index));\n if (pull === undefined || pull.type === \"error\")\n continue;\n const current = await tx.getCollection(baseline.collection.localKey);\n if (!sameBaseline(current, baseline.record))\n continue;\n await tx.putCollection(baseline.collection.localKey, applyPull(current, pull, baseline.collection, baseline.collection.key ?? defaultKey));\n result.pulled += 1;\n }\n });\n return result;\n};\n\n// src/reactiveHub.ts\nvar SYNC_OPEN_TOPIC = \"@absolutejs/sync:open\";\n\n// src/client/sharedSubscriber.ts\nvar pools = new Map;\nvar topicMatches = (pattern, topic) => pattern.endsWith(\"*\") ? topic.startsWith(pattern.slice(0, -1)) : topic === pattern;\nvar unionTopics = (pool) => {\n const topics = new Set;\n for (const member of pool.members) {\n for (const topic of member.topics) {\n topics.add(topic);\n }\n }\n return [...topics].sort();\n};\nvar deliverOpen = (pool, event, toAll) => {\n for (const member of pool.members) {\n if (!toAll && member.opened) {\n continue;\n }\n member.opened = true;\n member.onOpen?.();\n member.onEvent(event);\n }\n};\nvar connect = (pool, topics) => {\n pool.source?.close();\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = pool.url.includes(\"?\") ? \"&\" : \"?\";\n const source = new pool.Impl(`${pool.url}${separator}${params.toString()}`, {\n withCredentials: pool.withCredentials\n });\n pool.source = source;\n pool.connectedTopics = topics.join(\",\");\n pool.sourceOpened = false;\n source.onmessage = (message) => {\n let event;\n try {\n event = JSON.parse(message.data);\n } catch {\n return;\n }\n if (pool.source !== source) {\n return;\n }\n if (event.topic === SYNC_OPEN_TOPIC) {\n deliverOpen(pool, event, pool.sourceOpened);\n pool.sourceOpened = true;\n return;\n }\n for (const member of pool.members) {\n if (member.topics.some((pattern) => topicMatches(pattern, event.topic))) {\n member.onEvent(event);\n }\n }\n };\n source.onerror = (event) => {\n if (pool.source !== source) {\n return;\n }\n for (const member of pool.members) {\n member.onError?.(event);\n }\n };\n};\nvar reconcile = (pool) => {\n pool.reconcileTimer = undefined;\n if (pool.members.size === 0) {\n pool.source?.close();\n pool.source = null;\n pool.connectedTopics = \"\";\n pools.delete(poolKey(pool.url, pool.withCredentials));\n return;\n }\n const topics = unionTopics(pool);\n if (pool.source && topics.join(\",\") === pool.connectedTopics) {\n return;\n }\n connect(pool, topics);\n};\nvar scheduleReconcile = (pool) => {\n if (pool.reconcileTimer !== undefined) {\n return;\n }\n pool.reconcileTimer = setTimeout(() => reconcile(pool), 0);\n};\nvar poolKey = (url, withCredentials) => `${url}|${withCredentials ? 1 : 0}`;\nvar createSharedSyncSubscriber = ({\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n}) => {\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSharedSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const key = poolKey(url, withCredentials ?? false);\n let pool = pools.get(key);\n if (!pool || pool.Impl !== Impl) {\n pool = {\n Impl,\n url,\n withCredentials: withCredentials ?? false,\n members: new Set,\n source: null,\n connectedTopics: \"\",\n sourceOpened: false,\n reconcileTimer: undefined\n };\n pools.set(key, pool);\n }\n const member = {\n topics: [...topics],\n onEvent,\n onOpen,\n onError,\n opened: false\n };\n pool.members.add(member);\n scheduleReconcile(pool);\n const owner = pool;\n return {\n close: () => {\n owner.members.delete(member);\n scheduleReconcile(owner);\n },\n get source() {\n return owner.source;\n }\n };\n};\n\n// src/client/subscriber.ts\nvar createSyncSubscriber = (options) => {\n if (options.shared) {\n return createSharedSyncSubscriber(options);\n }\n const {\n topics,\n onEvent,\n url = \"/sync\",\n onOpen,\n onError,\n withCredentials,\n eventSourceImpl\n } = options;\n const Impl = eventSourceImpl ?? globalThis.EventSource;\n if (!Impl) {\n throw new Error(\"createSyncSubscriber requires EventSource. Run in a browser or pass eventSourceImpl.\");\n }\n const params = new URLSearchParams({ topics: topics.join(\",\") });\n const separator = url.includes(\"?\") ? \"&\" : \"?\";\n const source = new Impl(`${url}${separator}${params.toString()}`, {\n withCredentials: withCredentials ?? false\n });\n source.onmessage = (event) => {\n try {\n onEvent(JSON.parse(event.data));\n } catch {}\n };\n if (onOpen) {\n source.onopen = () => onOpen();\n }\n if (onError) {\n source.onerror = (event) => onError(event);\n }\n return {\n close: () => source.close(),\n source\n };\n};\n// src/client/liveQuery.ts\nvar createLiveQuery = (options) => {\n const hasSeed = options.initialData !== undefined;\n let state = {\n data: options.initialData,\n error: undefined,\n loading: !options.manual && !hasSeed,\n fetching: false\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n let requestSeq = 0;\n let inFlight;\n let closed = false;\n const refetch = async () => {\n if (closed) {\n return;\n }\n const seq = requestSeq += 1;\n inFlight?.abort();\n const controller = new AbortController;\n inFlight = controller;\n setState({ fetching: true });\n try {\n const data = await options.fetcher(controller.signal);\n if (seq !== requestSeq) {\n return;\n }\n setState({\n data,\n error: undefined,\n loading: false,\n fetching: false\n });\n } catch (error) {\n if (controller.signal.aborted || seq !== requestSeq) {\n return;\n }\n setState({ error, loading: false, fetching: false });\n options.onError?.(error);\n } finally {\n if (inFlight === controller) {\n inFlight = undefined;\n }\n }\n };\n let debounceTimer;\n const scheduleRefetch = () => {\n if (closed) {\n return;\n }\n if (!options.debounceMs) {\n refetch();\n return;\n }\n if (debounceTimer !== undefined) {\n return;\n }\n debounceTimer = setTimeout(() => {\n debounceTimer = undefined;\n refetch();\n }, options.debounceMs);\n };\n let opened = false;\n const onEvent = (event) => {\n if (event.topic === SYNC_OPEN_TOPIC) {\n if (opened) {\n scheduleRefetch();\n }\n opened = true;\n return;\n }\n scheduleRefetch();\n };\n const subscriber = createSyncSubscriber({\n topics: options.topics,\n onEvent,\n url: options.url,\n withCredentials: options.withCredentials,\n eventSourceImpl: options.eventSourceImpl,\n shared: options.shared\n });\n if (!options.manual && !hasSeed) {\n refetch();\n }\n const close = () => {\n if (closed) {\n return;\n }\n closed = true;\n subscriber.close();\n inFlight?.abort();\n if (debounceTimer !== undefined) {\n clearTimeout(debounceTimer);\n debounceTimer = undefined;\n }\n listeners.clear();\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n refetch,\n close\n };\n};\nvar jsonFetcher = (url, init) => async (signal) => {\n const response = await fetch(url, { ...init, signal });\n if (!response.ok) {\n throw new Error(`${response.status} ${response.statusText}`);\n }\n return await response.json();\n};\n// src/serializer.ts\nvar jsonSerializer = {\n decode: (raw) => {\n if (typeof raw === \"string\") {\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n }\n if (raw instanceof Uint8Array) {\n try {\n return JSON.parse(new TextDecoder().decode(raw));\n } catch {\n return null;\n }\n }\n if (raw instanceof ArrayBuffer) {\n try {\n return JSON.parse(new TextDecoder().decode(new Uint8Array(raw)));\n } catch {\n return null;\n }\n }\n return raw;\n },\n encodeClient: (frame) => JSON.stringify(frame),\n encodeServer: (frame) => JSON.stringify(frame)\n};\n\n// src/client/reconnectBackoff.ts\nvar createReconnectBackoff = (initialMs, maximumMs) => {\n let attempt = 0;\n return {\n markHealthy() {\n attempt = 0;\n },\n nextDelay() {\n const delay = Math.min(initialMs * 2 ** attempt, maximumMs);\n attempt += 1;\n return delay;\n }\n };\n};\nvar hasReconnectHealthyFrameType = (frame, types) => typeof frame === \"object\" && frame !== null && (\"type\" in frame) && typeof frame.type === \"string\" && types.includes(frame.type);\n\n// src/client/syncCollection.ts\nvar serverFrameTypes = [\n \"snapshot\",\n \"diff\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar localStorageMutationStorage = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : [];\n },\n save: (records) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(records));\n }\n});\nvar localStorageCollectionCache = (key) => ({\n load: () => {\n const raw = globalThis.localStorage?.getItem(key);\n return raw ? JSON.parse(raw) : undefined;\n },\n save: (snapshot) => {\n globalThis.localStorage?.setItem(key, JSON.stringify(snapshot));\n },\n clear: () => {\n globalThis.localStorage?.removeItem(key);\n }\n});\nvar openIndexedDb = (databaseName, storeName) => new Promise((resolve, reject) => {\n const request = globalThis.indexedDB.open(databaseName, 1);\n request.onupgradeneeded = () => {\n request.result.createObjectStore(storeName);\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar indexedDbCollectionCache = ({\n key,\n databaseName = \"absolutejs-sync\",\n storeName = \"collections\"\n}) => {\n let handle;\n const database = () => {\n handle ??= openIndexedDb(databaseName, storeName);\n return handle;\n };\n const withStore = async (mode, run) => {\n if (globalThis.indexedDB === undefined) {\n return;\n }\n const db = await database();\n return new Promise((resolve, reject) => {\n const request = run(db.transaction(storeName, mode).objectStore(storeName));\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n };\n return {\n load: () => withStore(\"readonly\", (store) => store.get(key)),\n save: async (snapshot) => {\n await withStore(\"readwrite\", (store) => store.put(snapshot, key));\n },\n clear: async () => {\n await withStore(\"readwrite\", (store) => store.delete(key));\n }\n };\n};\nvar SUBSCRIPTION_ID = \"s\";\nvar createSyncCollection = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncCollection requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: [],\n status: \"connecting\",\n error: undefined\n };\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n })));\n };\n let cacheScheduled = false;\n const persistCache = () => {\n if (options.cache === undefined || cacheScheduled) {\n return;\n }\n cacheScheduled = true;\n queueMicrotask(() => {\n cacheScheduled = false;\n options.cache?.save({\n rows: [...confirmed.values()],\n version: appliedVersion\n });\n });\n };\n const settlePending = (mutationId) => {\n const index = pending.findIndex((mutation2) => mutation2.mutationId === mutationId);\n if (index === -1) {\n return;\n }\n const [mutation] = pending.splice(index, 1);\n persist();\n return mutation;\n };\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n persistCache();\n recompute({ status: \"ready\", error: undefined });\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n } else if (frame.type === \"ack\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.resolve(frame.result);\n }\n } else if (frame.type === \"reject\") {\n const mutation = settlePending(frame.mutationId);\n if (mutation !== undefined) {\n recompute();\n mutation.reject(new Error(String(frame.message)));\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendMutate = (mutation) => {\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n name: mutation.name,\n args: mutation.args\n }));\n }\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.mutationId === record.mutationId)) {\n continue;\n }\n pending.push({\n mutationId: record.mutationId,\n name: record.name,\n args: record.args,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n sendMutate(mutation);\n }\n }\n };\n const hydrateCache = async () => {\n if (options.cache === undefined) {\n return;\n }\n let snapshot;\n try {\n snapshot = await options.cache.load();\n } catch {\n return;\n }\n if (snapshot === undefined || appliedVersion > 0) {\n return;\n }\n for (const row of snapshot.rows) {\n confirmed.set(key(row), row);\n }\n appliedVersion = snapshot.version;\n recompute();\n };\n if (options.cache === undefined) {\n connect2();\n hydratePersisted();\n } else {\n (async () => {\n await hydrateCache();\n await hydratePersisted();\n connect2();\n })();\n }\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n mutationId: mutationSeq += 1,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n sendMutate(mutation);\n }),\n disconnect: () => {\n if (closed || socket === undefined) {\n return;\n }\n try {\n socket.close();\n } catch {}\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n mutation.reject(new Error(\"sync collection closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\n// src/client/collaborativeText.ts\nvar createCollaborativeText = (options) => {\n const keyField = options.keyField ?? \"id\";\n const mutation = options.mutation ?? `${options.collection}:merge`;\n const replica = options.replica ?? globalThis.crypto.randomUUID();\n const make = options.create ?? ((id) => createTextCrdt(id));\n const crdt = make(replica);\n let current = {\n ready: false,\n status: \"connecting\",\n text: \"\"\n };\n let pendingText = null;\n const subscribers = new Set;\n const emit = () => {\n for (const run of subscribers) {\n run(current);\n }\n };\n const collection = createSyncCollection({\n collection: options.collection,\n key: (row) => row[keyField],\n params: options.params,\n url: options.url\n });\n const broadcast = (next) => {\n crdt.setText(next);\n current = { ...current, text: next };\n emit();\n const payload = crdt.takeDelta ? crdt.takeDelta() : crdt.state();\n collection.mutate({\n args: { [keyField]: options.id, [options.field]: payload },\n name: mutation\n });\n };\n const apply = (state) => {\n let { text } = current;\n const row = state.data.find((candidate) => candidate[keyField] === options.id);\n const fieldState = row?.[options.field];\n if (fieldState !== undefined) {\n crdt.merge(fieldState);\n text = crdt.text();\n }\n const ready = current.ready || fieldState !== undefined;\n current = { ready, status: state.status, text };\n emit();\n if (ready && pendingText !== null) {\n const buffered = pendingText;\n pendingText = null;\n broadcast(buffered);\n }\n };\n apply(collection.get());\n const unsubscribe = collection.subscribe(apply);\n return {\n get: () => current,\n subscribe(run) {\n subscribers.add(run);\n run(current);\n return () => {\n subscribers.delete(run);\n };\n },\n setText(next) {\n if (!current.ready) {\n pendingText = next;\n current = { ...current, text: next };\n emit();\n return;\n }\n broadcast(next);\n },\n anchorAt: (index) => crdt.anchorAt?.(index) ?? null,\n indexOfAnchor: (anchor) => crdt.indexOfAnchor?.(anchor) ?? 0,\n close() {\n unsubscribe();\n collection.close();\n subscribers.clear();\n }\n };\n};\n// src/client/presence.ts\nvar createPresence = (options) => {\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createPresence requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const id = options.memberId ?? globalThis.crypto?.randomUUID?.() ?? `m${Math.random()}`;\n const members = new Map;\n let state = options.state;\n let snapshot = [];\n const listeners = new Set;\n const emit = () => {\n snapshot = [...members].map(([memberId, memberState]) => ({\n id: memberId,\n state: memberState\n }));\n for (const listener of listeners) {\n listener(snapshot);\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n const send = (frame) => {\n if (connected) {\n socket?.send(serializer.encodeClient(frame));\n }\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"presence-join\",\n room: options.room,\n memberId: id,\n state\n }));\n };\n ws.onmessage = (event) => {\n let frame;\n const decoded = serializer.decode(event.data);\n if (decoded === null || typeof decoded !== \"object\") {\n return;\n }\n frame = decoded;\n if (frame.type !== \"presence\" || frame.room !== options.room) {\n return;\n }\n reconnectBackoff.markHealthy();\n for (const member of frame.joined ?? []) {\n members.set(member.id, member.state);\n }\n for (const member of frame.updated ?? []) {\n members.set(member.id, member.state);\n }\n for (const memberId of frame.left ?? []) {\n members.delete(memberId);\n }\n emit();\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n connect2();\n return {\n id,\n get: () => snapshot,\n subscribe: (listener) => {\n listeners.add(listener);\n listener(snapshot);\n return () => {\n listeners.delete(listener);\n };\n },\n set: (next) => {\n state = next;\n send({ type: \"presence-set\", room: options.room, state: next });\n },\n close: () => {\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n send({ type: \"presence-leave\", room: options.room });\n socket?.close();\n members.clear();\n }\n };\n};\n// src/client/localStore.ts\nclass SyncLocalDataPolicyError extends Error {\n code;\n constructor(code, message) {\n super(message);\n this.name = \"SyncLocalDataPolicyError\";\n this.code = code;\n }\n}\n\nclass SyncLocalStoreSchemaError extends Error {\n code;\n storedVersion;\n targetVersion;\n constructor(code, message, versions = {}) {\n super(message);\n this.name = \"SyncLocalStoreSchemaError\";\n this.code = code;\n this.storedVersion = versions.storedVersion;\n this.targetVersion = versions.targetVersion;\n }\n}\nvar positiveVersion = (value, label) => {\n if (!Number.isSafeInteger(value) || value < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `${label} must be a positive safe integer`);\n return value;\n};\nvar isSchemaBundle = (schema) => (\"components\" in schema);\nvar validatePolicyMatch = (match, label) => {\n if (match.length === 0 || match.trim() !== match || /^\\*+$/.test(match) || match.includes(\"**\"))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.match must be an exact name or a non-empty glob without adjacent wildcards.`);\n};\nvar validateSyncLocalDataPolicy = (policy, label = \"localData\") => {\n if (policy.maxBytesPerNamespace !== undefined && (!Number.isSafeInteger(policy.maxBytesPerNamespace) || policy.maxBytesPerNamespace < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.maxBytesPerNamespace must be a positive safe integer.`);\n for (const [index, rule] of (policy.collections ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.collections[${index}]`);\n if (rule.maxAgeMs !== undefined && (!Number.isSafeInteger(rule.maxAgeMs) || rule.maxAgeMs < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}].maxAgeMs must be a positive safe integer.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.collections[${index}] declares ${rule.sensitivity} data without required protection or memory-only persistence.`);\n }\n for (const [index, rule] of (policy.mutations ?? []).entries()) {\n validatePolicyMatch(rule.match, `${label}.mutations[${index}]`);\n if (rule.conflict !== undefined && rule.conflict.strategy !== \"client-wins\" && rule.conflict.strategy !== \"manual\" && rule.conflict.strategy !== \"server-wins\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.strategy is invalid.`);\n if (rule.conflict?.maxAttempts !== undefined && (!Number.isSafeInteger(rule.conflict.maxAttempts) || rule.conflict.maxAttempts < 1))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.maxAttempts must be a positive safe integer.`);\n if (rule.conflict?.maxAttempts !== undefined && rule.conflict.strategy !== \"client-wins\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}].conflict.maxAttempts is only valid for client-wins.`);\n if (rule.persistence === \"memory-only\" && rule.protection === \"required\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] cannot require at-rest protection when it is memory-only.`);\n if (rule.sensitivity !== undefined && rule.sensitivity !== \"public\" && rule.protection !== \"required\" && rule.persistence !== \"memory-only\")\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `${label}.mutations[${index}] declares ${rule.sensitivity} arguments without required protection.`);\n }\n return policy;\n};\nvar resolveSyncLocalDataPolicy = (schema = { version: 1 }) => {\n const policies = normalizeSyncLocalSchemaComponents(schema).map((component) => component.localData ? validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`) : undefined).filter((policy) => policy !== undefined);\n const quotas = policies.map((policy) => policy.maxBytesPerNamespace).filter((value) => value !== undefined);\n return {\n ...quotas.length > 0 ? { maxBytesPerNamespace: Math.min(...quotas) } : {},\n collections: policies.flatMap((policy) => policy.collections ?? []),\n mutations: policies.flatMap((policy) => policy.mutations ?? [])\n };\n};\nvar policyMatches = (pattern, name) => pattern === name || (() => {\n const pieces = pattern.split(\"*\");\n if (pieces.length === 1)\n return false;\n let offset = 0;\n for (const [index, piece] of pieces.entries()) {\n if (piece.length === 0)\n continue;\n const found = name.indexOf(piece, offset);\n if (found < 0 || index === 0 && found !== 0)\n return false;\n offset = found + piece.length;\n }\n const last = pieces.at(-1);\n return last.length === 0 || name.endsWith(last);\n})();\nvar matchingPolicy = (rules, name) => {\n const matches = rules.filter((rule) => policyMatches(rule.match, name));\n if (matches.length === 0)\n return;\n const specificity = (rule) => rule.match.replaceAll(\"*\", \"\").length;\n matches.sort((left, right) => specificity(right) - specificity(left));\n if (matches[1] !== undefined && specificity(matches[0]) === specificity(matches[1]))\n throw new SyncLocalDataPolicyError(\"INVALID_POLICY\", `Local-data policy has equally specific rules for \"${name}\".`);\n return matches[0];\n};\nvar resolveSyncLocalCollectionPolicy = (policy, name) => matchingPolicy(policy.collections, name) ?? { match: name };\nvar resolveSyncLocalMutationPolicy = (policy, name) => matchingPolicy(policy.mutations, name) ?? { match: name };\nvar normalizeSyncLocalSchemaComponents = (schema = { version: 1 }) => {\n const components = isSchemaBundle(schema) ? [...schema.components] : [{ ...schema, id: \"@absolutejs/app\" }];\n const ids = new Set;\n for (const component of components) {\n if (typeof component.id !== \"string\" || component.id.trim() !== component.id || component.id.length === 0)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync schema component id must be non-empty and trimmed\");\n if (ids.has(component.id))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync schema component \"${component.id}\" is declared more than once`);\n ids.add(component.id);\n if (component.localData)\n validateSyncLocalDataPolicy(component.localData, `${component.id}.localData`);\n }\n return components.sort((a, b) => a.id.localeCompare(b.id));\n};\nvar createSyncLocalSchemaStatus = (components, orphanedComponents = [], includeComponents = true) => {\n const app = components.find((component) => component.id === \"@absolutejs/app\");\n return {\n ...includeComponents ? {\n components: components.map((component) => ({\n id: component.id,\n minimumCompatibleVersion: component.minimumCompatibleVersion,\n storedVersion: component.targetVersion,\n targetVersion: component.targetVersion\n }))\n } : {},\n minimumCompatibleVersion: app?.minimumCompatibleVersion ?? 1,\n ...orphanedComponents.length > 0 ? { orphanedComponents: [...orphanedComponents] } : {},\n state: \"ready\",\n storedVersion: app?.targetVersion ?? 1,\n targetVersion: app?.targetVersion ?? 1\n };\n};\nvar resolveSyncLocalSchemaComponents = (storedVersions, schema = { version: 1 }) => {\n const components = normalizeSyncLocalSchemaComponents(schema).map((component) => {\n const current = resolveSyncLocalMigrations(component.version, component);\n return {\n id: component.id,\n ...resolveSyncLocalMigrations(storedVersions[component.id] ?? current.minimumCompatibleVersion, component)\n };\n });\n const active = new Set(components.map((component) => component.id));\n const orphanedComponents = Object.keys(storedVersions).filter((id) => !active.has(id)).sort();\n return { components, orphanedComponents };\n};\nvar migrationCollectionName = (record, context) => record.collection ?? context.key;\nvar migrateRow = (row, operation) => {\n if (typeof row !== \"object\" || row === null || Array.isArray(row))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync ${operation.type} requires object rows`);\n const next = { ...row };\n if (operation.type === \"set-default\") {\n if (!Object.hasOwn(next, operation.field))\n next[operation.field] = structuredClone(operation.value);\n } else if (operation.type === \"remove-field\") {\n delete next[operation.field];\n } else if (Object.hasOwn(next, operation.from)) {\n if (Object.hasOwn(next, operation.to))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync rename-field cannot overwrite existing field \"${operation.to}\"`);\n next[operation.to] = next[operation.from];\n delete next[operation.from];\n }\n return next;\n};\nvar applyDeclarativeCollectionOperations = (record, context, operations) => {\n let current = structuredClone(record);\n for (const operation of operations) {\n if (operation.collection !== migrationCollectionName(current, context))\n continue;\n if (operation.type === \"delete-collection\")\n return null;\n current = {\n ...current,\n rows: current.rows.map((row) => migrateRow(row, operation))\n };\n }\n return current;\n};\nvar resolveSyncLocalMigrations = (storedVersion, schema = { version: 1 }) => {\n positiveVersion(storedVersion, \"Stored Sync schema version\");\n const targetVersion = positiveVersion(schema.version, \"Target Sync schema version\");\n const migrations = [...schema.migrations ?? []].sort((a, b) => a.toVersion - b.toVersion);\n const versions = new Set;\n for (const migration of migrations) {\n positiveVersion(migration.toVersion, \"Sync migration toVersion\");\n if (versions.has(migration.toVersion))\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Sync migration ${migration.toVersion} is declared more than once`);\n versions.add(migration.toVersion);\n }\n const inferredMinimum = migrations[0] ? migrations[0].toVersion - 1 : targetVersion;\n const minimumCompatibleVersion = positiveVersion(schema.minimumCompatibleVersion ?? inferredMinimum, \"Minimum compatible Sync schema version\");\n if (minimumCompatibleVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Minimum compatible Sync schema version cannot exceed its target\");\n if (storedVersion > targetVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_NEW\", `Stored Sync schema ${storedVersion} is newer than this runtime's schema ${targetVersion}`, { storedVersion, targetVersion });\n if (storedVersion < minimumCompatibleVersion)\n throw new SyncLocalStoreSchemaError(\"SCHEMA_TOO_OLD\", `Stored Sync schema ${storedVersion} is older than the minimum compatible schema ${minimumCompatibleVersion}`, { storedVersion, targetVersion });\n const steps = [];\n for (let version = storedVersion + 1;version <= targetVersion; version++) {\n const migration = migrations.find((candidate) => candidate.toVersion === version);\n if (migration === undefined)\n throw new SyncLocalStoreSchemaError(\"MIGRATION_MISSING\", `Sync migration ${version - 1} -> ${version} is missing`, { storedVersion, targetVersion });\n steps.push(migration);\n }\n return { minimumCompatibleVersion, steps, targetVersion };\n};\nvar migrateSyncLocalCollectionRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n current = applyDeclarativeCollectionOperations(current, context, step.operations ?? []);\n if (current === null)\n break;\n const next = step.migrateCollection?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined)\n current = structuredClone(next);\n }\n return current;\n};\nvar migrateSyncLocalMutationRecord = (record, context, steps) => {\n let current = structuredClone(record);\n for (const step of steps) {\n if (current === null)\n break;\n const next = step.migrateMutation?.(structuredClone(current), context);\n if (next === null)\n current = null;\n else if (next !== undefined) {\n if (next.operationId !== context.key)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", \"Sync migrations cannot change a mutation operationId\");\n current = structuredClone(next);\n }\n }\n return current;\n};\nvar jsonBytes = (value) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\nvar evictionRank = {\n disposable: 0,\n normal: 1,\n critical: 2\n};\nvar runSyncLocalPolicyTransaction = async (options) => {\n const { mode, now, policy, raw } = options;\n const requireProtection = (kind, name) => {\n if (!options.protected)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync ${kind} \"${name}\" requires encrypted persistence, but this runtime has no audited protection provider.`);\n };\n const collectionPolicy = (record, key) => resolveSyncLocalCollectionPolicy(policy, record.collection ?? key);\n const unavailableMemoryOnly = (rule) => rule.protection === \"required\" && !options.protected && rule.onProtectionUnavailable === \"memory-only\";\n const expired = (record, key) => {\n const rule = collectionPolicy(record, key);\n return rule.maxAgeMs !== undefined && record.storedAt !== undefined && now - record.storedAt >= rule.maxAgeMs;\n };\n const tx = {\n ...raw,\n resolveMutationPolicy: (name) => resolveSyncLocalMutationPolicy(policy, name),\n getCollection: async (key) => {\n const record = await raw.getCollection(key);\n if (record === undefined)\n return;\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(record, key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n return record;\n },\n listCollections: async () => {\n const kept = [];\n for (const entry of await raw.listCollections()) {\n const rule = collectionPolicy(entry.record, entry.key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule) || expired(entry.record, entry.key)) {\n if (mode === \"readwrite\")\n await raw.deleteCollection(entry.key);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", entry.record.collection ?? entry.key);\n kept.push(entry);\n }\n return kept;\n },\n putCollection: async (key, record) => {\n const rule = collectionPolicy(record, key);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteCollection(key);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"collection\", record.collection ?? key);\n await raw.putCollection(key, rule.maxAgeMs !== undefined || policy.maxBytesPerNamespace !== undefined ? { ...record, storedAt: now } : record);\n },\n getMutation: async (operationId) => {\n const record = await raw.getMutation(operationId);\n if (!record)\n return;\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n return rule.conflict && record.conflictPolicy === undefined ? { ...record, conflictPolicy: structuredClone(rule.conflict) } : record;\n },\n listMutations: async () => {\n const records = [];\n for (const record of await raw.listMutations()) {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n if (mode === \"readwrite\")\n await raw.deleteMutation(record.operationId);\n continue;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n records.push(rule.conflict && record.conflictPolicy === undefined ? {\n ...record,\n conflictPolicy: structuredClone(rule.conflict)\n } : record);\n }\n return records;\n },\n putMutation: async (record) => {\n const rule = resolveSyncLocalMutationPolicy(policy, record.name);\n if (rule.persistence === \"memory-only\" || unavailableMemoryOnly(rule)) {\n await raw.deleteMutation(record.operationId);\n return;\n }\n if (rule.protection === \"required\")\n requireProtection(\"mutation\", record.name);\n await raw.putMutation(rule.conflict && record.conflictPolicy === undefined ? {\n ...record,\n conflictPolicy: structuredClone(rule.conflict)\n } : record);\n }\n };\n const result = await options.run(tx);\n if (mode === \"readwrite\" && policy.maxBytesPerNamespace !== undefined) {\n const mutations = await raw.listMutations();\n let collections = await raw.listCollections();\n let bytes = mutations.reduce((total, value) => total + jsonBytes(value), 0) + collections.reduce((total, entry) => total + jsonBytes(entry.record), 0);\n const candidates = [...collections].sort((left, right) => {\n const leftRule = collectionPolicy(left.record, left.key);\n const rightRule = collectionPolicy(right.record, right.key);\n return evictionRank[leftRule.evictionPriority ?? \"normal\"] - evictionRank[rightRule.evictionPriority ?? \"normal\"] || (left.record.storedAt ?? 0) - (right.record.storedAt ?? 0) || left.key.localeCompare(right.key);\n });\n for (const candidate of candidates) {\n if (bytes <= policy.maxBytesPerNamespace)\n break;\n await raw.deleteCollection(candidate.key);\n bytes -= jsonBytes(candidate.record);\n }\n if (bytes > policy.maxBytesPerNamespace)\n throw new SyncLocalDataPolicyError(\"QUOTA_EXCEEDED\", `Sync pending operations require ${bytes} logical bytes, exceeding the protected ${policy.maxBytesPerNamespace}-byte namespace quota; pending mutations were retained.`);\n }\n return result;\n};\nvar clone = (value) => structuredClone(value);\nvar emptyNamespace = () => ({\n collections: new Map,\n mutations: new Map\n});\nvar cloneNamespace = (source) => ({\n installationId: source.installationId,\n collections: new Map([...source.collections].map(([key, value]) => [key, clone(value)])),\n mutations: new Map([...source.mutations].map(([key, value]) => [key, clone(value)]))\n});\nvar createMemorySyncLocalStore = ({\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n const targetComponents = normalizeSyncLocalSchemaComponents(storageSchema);\n const resolvedSchema = resolveSyncLocalSchemaComponents(Object.fromEntries(targetComponents.map((component) => [\n component.id,\n component.version\n ])), storageSchema);\n const schemaStatus = createSyncLocalSchemaStatus(resolvedSchema.components, [], isSchemaBundle(storageSchema));\n const namespaces = new Map;\n let tail = Promise.resolve();\n const withLock = async (run) => {\n let release;\n const previous = tail;\n tail = new Promise((resolve) => {\n release = resolve;\n });\n await previous;\n try {\n return await run();\n } finally {\n release();\n }\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n const protector = await prepareProtector();\n return withLock(async () => {\n const current = namespaces.get(namespace) ?? emptyNamespace();\n const working = cloneNamespace(current);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const tx = {\n getInstallationId: async () => working.installationId,\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n working.installationId = installationId;\n },\n getCollection: async (key) => {\n const record = working.collections.get(key);\n return record === undefined ? undefined : clone(record);\n },\n listCollections: async () => [...working.collections.entries()].map(([key, record]) => ({\n key,\n record: clone(record)\n })),\n putCollection: async (key, record) => {\n writable();\n working.collections.set(key, clone(record));\n },\n deleteCollection: async (key) => {\n writable();\n working.collections.delete(key);\n },\n listMutations: async () => [...working.mutations.values()].sort((a, b) => a.createdAt - b.createdAt).map(clone),\n getMutation: async (operationId) => {\n const record = working.mutations.get(operationId);\n return record === undefined ? undefined : clone(record);\n },\n putMutation: async (record) => {\n writable();\n working.mutations.set(record.operationId, clone(record));\n },\n deleteMutation: async (operationId) => {\n writable();\n working.mutations.delete(operationId);\n }\n };\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n if (mode === \"readwrite\")\n namespaces.set(namespace, working);\n return result;\n });\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...schemaStatus }),\n deleteNamespace: async (namespace) => {\n await withLock(async () => {\n namespaces.delete(namespace);\n return;\n });\n }\n };\n};\nvar openProtectedRecord = (value, protector, context) => {\n if (protector === undefined || protector.id !== value.protector)\n throw new SyncLocalDataPolicyError(\"PROTECTION_REQUIRED\", `Sync data is protected by \"${value.protector}\", which is unavailable in this runtime.`);\n return JSON.parse(protector.open(value.value, { ...context, name: value.name }));\n};\nvar requestResult = (request) => new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n});\nvar transactionComplete = (transaction) => new Promise((resolve, reject) => {\n transaction.oncomplete = () => resolve();\n transaction.onabort = () => reject(transaction.error ?? new Error(\"IndexedDB transaction aborted\"));\n transaction.onerror = () => reject(transaction.error ?? new Error(\"IndexedDB transaction failed\"));\n});\nvar deleteIndexRows = (index, namespace) => new Promise((resolve, reject) => {\n const request = index.openCursor(namespace);\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n cursor.delete();\n cursor.continue();\n };\n});\nvar migrateIndexedRows = (request, migrate) => new Promise((resolve, reject) => {\n request.onerror = () => reject(request.error);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor === null) {\n resolve();\n return;\n }\n let next;\n try {\n next = migrate(cursor.value);\n } catch (error) {\n reject(error);\n return;\n }\n const write = next === null ? cursor.delete() : cursor.update(next);\n write.onerror = () => reject(write.error);\n write.onsuccess = () => cursor.continue();\n };\n});\nvar createIndexedDbSyncLocalStore = ({\n databaseName = \"absolutejs-sync-local-v1\",\n indexedDB: factory = globalThis.indexedDB,\n storageSchema = { version: 1 },\n protection,\n now = Date.now\n} = {}) => {\n const localData = resolveSyncLocalDataPolicy(storageSchema);\n let protectorPromise;\n const prepareProtector = () => protectorPromise ??= protection?.prepare();\n if (factory === undefined) {\n throw new Error(\"createIndexedDbSyncLocalStore requires IndexedDB in this runtime\");\n }\n let databasePromise;\n const database = () => {\n databasePromise ??= new Promise((resolve, reject) => {\n const request = factory.open(databaseName, 2);\n request.onupgradeneeded = () => {\n const db = request.result;\n if (!db.objectStoreNames.contains(\"metadata\"))\n db.createObjectStore(\"metadata\");\n if (!db.objectStoreNames.contains(\"collections\")) {\n const collections = db.createObjectStore(\"collections\", {\n keyPath: [\"namespace\", \"key\"]\n });\n collections.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"mutations\")) {\n const mutations = db.createObjectStore(\"mutations\", {\n keyPath: [\"namespace\", \"operationId\"]\n });\n mutations.createIndex(\"namespace\", \"namespace\");\n }\n if (!db.objectStoreNames.contains(\"schema\"))\n db.createObjectStore(\"schema\");\n };\n request.onsuccess = () => {\n request.result.onversionchange = () => request.result.close();\n resolve(request.result);\n };\n request.onerror = () => reject(request.error);\n request.onblocked = () => reject(new Error(`IndexedDB upgrade blocked for \"${databaseName}\"`));\n });\n return databasePromise;\n };\n let schemaPromise;\n const prepareSchema = () => {\n schemaPromise ??= Promise.all([database(), prepareProtector()]).then(async ([db, preparedProtector]) => {\n const native = db.transaction([\"schema\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n try {\n const schemaStore = native.objectStore(\"schema\");\n const savedVersion = await requestResult(schemaStore.get(\"logicalVersion\"));\n const savedComponents = await requestResult(schemaStore.get(\"componentVersions\"));\n const storedVersions = {};\n if (typeof savedComponents === \"object\" && savedComponents !== null && !Array.isArray(savedComponents))\n for (const [id, version] of Object.entries(savedComponents)) {\n if (!Number.isSafeInteger(version) || version < 1)\n throw new SyncLocalStoreSchemaError(\"INVALID_PLAN\", `Stored Sync component \"${id}\" has an invalid version`);\n storedVersions[id] = version;\n }\n if (storedVersions[\"@absolutejs/app\"] === undefined && typeof savedVersion === \"number\")\n storedVersions[\"@absolutejs/app\"] = savedVersion;\n const resolved = resolveSyncLocalSchemaComponents(storedVersions, storageSchema);\n const steps = resolved.components.flatMap((component) => component.steps);\n if (steps.length > 0) {\n await migrateIndexedRows(native.objectStore(\"collections\").openCursor(), (row) => {\n const {\n namespace,\n key,\n protectedRecord,\n ...plain\n } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"collection\", namespace }) : plain;\n const migrated = migrateSyncLocalCollectionRecord(record, { key, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n key,\n namespace,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"collection\",\n name: migrated.collection ?? key,\n namespace\n })\n }\n } : { ...migrated, key, namespace };\n });\n await migrateIndexedRows(native.objectStore(\"mutations\").openCursor(), (row) => {\n const { namespace, protectedRecord, ...plain } = row;\n const record = protectedRecord ? openProtectedRecord(protectedRecord, preparedProtector, { kind: \"mutation\", namespace }) : plain;\n const migrated = migrateSyncLocalMutationRecord(record, { key: record.operationId, namespace }, steps);\n if (migrated === null)\n return null;\n return protectedRecord && preparedProtector ? {\n createdAt: migrated.createdAt,\n namespace,\n operationId: migrated.operationId,\n protectedRecord: {\n ...protectedRecord,\n value: preparedProtector.seal(JSON.stringify(migrated), {\n kind: \"mutation\",\n name: migrated.name,\n namespace\n })\n }\n } : { ...migrated, namespace };\n });\n }\n const nextVersions = { ...storedVersions };\n for (const component of resolved.components)\n nextVersions[component.id] = component.targetVersion;\n await requestResult(schemaStore.put(nextVersions, \"componentVersions\"));\n const app = resolved.components.find((component) => component.id === \"@absolutejs/app\");\n if (app)\n await requestResult(schemaStore.put(app.targetVersion, \"logicalVersion\"));\n await completed;\n return createSyncLocalSchemaStatus(resolved.components, resolved.orphanedComponents, isSchemaBundle(storageSchema));\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n });\n return schemaPromise;\n };\n const transaction = async (namespace, mode, run) => {\n if (namespace.length === 0) {\n throw new Error(\"Sync local-store namespace must not be empty\");\n }\n await prepareSchema();\n const protector = await prepareProtector();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], mode);\n const completed = transactionComplete(native);\n const writable = () => {\n if (mode !== \"readwrite\") {\n throw new Error(\"Cannot write in a readonly Sync local transaction\");\n }\n };\n const metadata = native.objectStore(\"metadata\");\n const collections = native.objectStore(\"collections\");\n const mutations = native.objectStore(\"mutations\");\n const tx = {\n getInstallationId: () => requestResult(metadata.get(namespace)),\n setInstallationId: async (installationId) => {\n writable();\n if (installationId.length === 0) {\n throw new Error(\"Sync installation id must not be empty\");\n }\n await requestResult(metadata.put(installationId, namespace));\n },\n getCollection: async (key) => {\n const row = await requestResult(collections.get([namespace, key]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace });\n const {\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n listCollections: async () => {\n const rows = await requestResult(collections.index(\"namespace\").getAll(namespace));\n return rows.map((row) => ({\n key: row.key,\n record: row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"collection\", namespace }) : (({\n namespace: _namespace,\n key: _key,\n protectedRecord: _protected,\n ...record\n }) => record)(row)\n }));\n },\n putCollection: async (key, record) => {\n writable();\n await requestResult(collections.put(protector ? {\n key,\n namespace,\n protectedRecord: {\n name: record.collection ?? key,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"collection\",\n name: record.collection ?? key,\n namespace\n })\n }\n } : { ...record, key, namespace }));\n },\n deleteCollection: async (key) => {\n writable();\n await requestResult(collections.delete([namespace, key]));\n },\n listMutations: async () => {\n const rows = await requestResult(mutations.index(\"namespace\").getAll(namespace));\n return rows.map((row) => row.protectedRecord ? openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace }) : (({\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n }) => record)(row)).sort((a, b) => a.createdAt - b.createdAt);\n },\n getMutation: async (operationId) => {\n const row = await requestResult(mutations.get([namespace, operationId]));\n if (row === undefined)\n return;\n if (row.protectedRecord)\n return openProtectedRecord(row.protectedRecord, protector, { kind: \"mutation\", namespace });\n const {\n namespace: _namespace,\n protectedRecord: _protected,\n ...record\n } = row;\n return record;\n },\n putMutation: async (record) => {\n writable();\n await requestResult(mutations.put(protector ? {\n createdAt: record.createdAt,\n namespace,\n operationId: record.operationId,\n protectedRecord: {\n name: record.name,\n protector: protector.id,\n value: protector.seal(JSON.stringify(record), {\n kind: \"mutation\",\n name: record.name,\n namespace\n })\n }\n } : { ...record, namespace }));\n },\n deleteMutation: async (operationId) => {\n writable();\n await requestResult(mutations.delete([namespace, operationId]));\n }\n };\n try {\n const result = await runSyncLocalPolicyTransaction({\n mode,\n now: now(),\n policy: localData,\n protected: protector !== undefined,\n raw: tx,\n run\n });\n await completed;\n return result;\n } catch (error) {\n try {\n native.abort();\n } catch {}\n await completed.catch(() => {});\n throw error;\n }\n };\n return {\n transaction,\n getSchemaStatus: async () => ({ ...await prepareSchema() }),\n deleteNamespace: async (namespace) => {\n await prepareSchema();\n const db = await database();\n const native = db.transaction([\"metadata\", \"collections\", \"mutations\"], \"readwrite\");\n const completed = transactionComplete(native);\n await requestResult(native.objectStore(\"metadata\").delete(namespace));\n await deleteIndexRows(native.objectStore(\"collections\").index(\"namespace\"), namespace);\n await deleteIndexRows(native.objectStore(\"mutations\").index(\"namespace\"), namespace);\n await completed;\n }\n };\n};\nvar randomId = () => {\n const id = globalThis.crypto?.randomUUID?.();\n if (id === undefined) {\n throw new Error(\"Sync operation ids require crypto.randomUUID or a createId callback\");\n }\n return id;\n};\nvar ensureSyncInstallationId = (store, namespace, createId = randomId) => store.transaction(namespace, \"readwrite\", async (tx) => {\n const existing = await tx.getInstallationId();\n if (existing !== undefined)\n return existing;\n const installationId = createId();\n await tx.setInstallationId(installationId);\n return installationId;\n});\nvar createSyncOperationId = (installationId, createId = randomId) => `${installationId}:${createId()}`;\n\n// src/reconciliation.ts\nclass SyncMutationRejectedError extends Error {\n operationId;\n rejection;\n constructor(rejection, operationId) {\n super(rejection.message);\n this.name = \"SyncMutationRejectedError\";\n this.operationId = operationId;\n this.rejection = rejection;\n }\n}\n\n// src/client/syncClient.ts\nvar serverFrameTypes2 = [\n \"snapshot\",\n \"diff\",\n \"frame\",\n \"error\",\n \"ack\",\n \"reject\"\n];\nvar canonicalJson = (value) => {\n const seen = new Set;\n const normalize = (input) => {\n if (input === undefined)\n return null;\n if (input === null || typeof input === \"string\" || typeof input === \"boolean\") {\n return input;\n }\n if (typeof input === \"number\") {\n if (!Number.isFinite(input)) {\n throw new Error(\"Sync collection params must contain finite numbers; provide an explicit localKey\");\n }\n return input;\n }\n if (typeof input !== \"object\") {\n throw new Error(\"Sync collection params must be JSON-serializable; provide an explicit localKey\");\n }\n if (seen.has(input)) {\n throw new Error(\"Sync collection params contain a cycle; provide an explicit localKey\");\n }\n seen.add(input);\n try {\n if (Array.isArray(input))\n return input.map(normalize);\n const prototype = Object.getPrototypeOf(input);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new Error(\"Sync collection params must use plain objects; provide an explicit localKey\");\n }\n return Object.fromEntries(Object.entries(input).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => [key, normalize(item)]));\n } finally {\n seen.delete(input);\n }\n };\n return JSON.stringify(normalize(value));\n};\nvar defaultLocalKey = (collection, params) => params === undefined ? collection : `${collection}:${canonicalJson(params)}`;\nvar ticketAuthenticatedSocketUrl = (url) => {\n if (/(?:\\?|&)__absolute_auth=/u.test(url))\n return url;\n const hashAt = url.indexOf(\"#\");\n const beforeHash = hashAt === -1 ? url : url.slice(0, hashAt);\n const hash = hashAt === -1 ? \"\" : url.slice(hashAt);\n const separator = beforeHash.includes(\"?\") ? \"&\" : \"?\";\n return `${beforeHash}${separator}__absolute_auth=ticket${hash}`;\n};\nvar createSyncClient = (options) => {\n const runtime = getSyncClientRuntimeTransport();\n const socketTicket = options.socketTicket ?? runtime?.socketTicket;\n const durable = options.durable ?? runtime?.durable;\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const maxAttempts = durable?.maxAttempts ?? 5;\n if (!Number.isInteger(maxAttempts) || maxAttempts < 1) {\n throw new TypeError(\"durable.maxAttempts must be a positive integer\");\n }\n const retryBackoff = durable?.retryBackoff ?? ((attempt) => Math.min(30000, 500 * 2 ** (attempt - 1)));\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? runtime?.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"createSyncClient requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const entries = new Map;\n const pending = [];\n const mutationOwner = new Map;\n const deadLetters = new Map;\n const retryTimers = new Map;\n const statusListeners = new Set;\n let nextEntryId = 0;\n let mutationSeq = 0;\n let installationId;\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let immediateReconnect = false;\n let clientStatus = {\n automaticResolutions: 0,\n connection: \"connecting\",\n conflicts: 0,\n deadLetters: 0,\n pending: 0\n };\n const snapshotStatus = () => ({ ...clientStatus });\n const updateStatus = (patch = {}) => {\n const oldestPendingAt = pending.reduce((oldest, mutation) => oldest === undefined ? mutation.createdAt : Math.min(oldest, mutation.createdAt), undefined);\n const retained = [...deadLetters.values()];\n const oldestDeadLetterAt = retained.reduce((oldest, record) => {\n const at = record.deadLetteredAt ?? record.createdAt;\n return oldest === undefined ? at : Math.min(oldest, at);\n }, undefined);\n clientStatus = {\n ...clientStatus,\n ...patch,\n pending: pending.length,\n deadLetters: deadLetters.size,\n conflicts: retained.filter((record) => record.rejection?.kind === \"conflict\").length,\n ...oldestDeadLetterAt === undefined ? {} : { oldestDeadLetterAt },\n ...oldestPendingAt === undefined ? {} : { oldestPendingAt }\n };\n if (oldestPendingAt === undefined)\n delete clientStatus.oldestPendingAt;\n if (oldestDeadLetterAt === undefined)\n delete clientStatus.oldestDeadLetterAt;\n for (const listener of statusListeners)\n listener(snapshotStatus());\n };\n const notify = (entry) => {\n for (const listener of entry.listeners) {\n listener(entry.state);\n }\n };\n const rebuild = (entry, patch = {}) => {\n const working = new Map(entry.confirmed);\n const draft = {\n set: (row) => working.set(entry.key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n if (mutation.ownerKey === entry.localKey) {\n mutation.optimistic?.(draft);\n }\n for (const operation of mutation.optimisticOperations) {\n if (operation.collection !== entry.localKey)\n continue;\n if (operation.type === \"delete\")\n draft.delete(operation.key);\n else\n draft.set(operation.row);\n }\n }\n entry.state = {\n ...entry.state,\n ...patch,\n data: [...working.values()]\n };\n };\n const recompute = (entry, patch = {}) => {\n rebuild(entry, patch);\n notify(entry);\n };\n const applyDiffToConfirmed = (entry, diff) => {\n for (const row of diff.removed) {\n entry.confirmed.delete(entry.key(row));\n }\n for (const row of diff.added) {\n entry.confirmed.set(entry.key(row), row);\n }\n for (const row of diff.changed) {\n entry.confirmed.set(entry.key(row), row);\n }\n };\n const settlePending = (mutationId) => {\n const mutation = mutationOwner.get(mutationId);\n mutationOwner.delete(mutationId);\n if (mutation === undefined) {\n return;\n }\n const index = pending.findIndex((item) => item === mutation);\n if (index === -1) {\n return;\n }\n pending.splice(index, 1);\n if (mutation.operationId !== undefined) {\n const timer = retryTimers.get(mutation.operationId);\n if (timer !== undefined)\n clearTimeout(timer);\n retryTimers.delete(mutation.operationId);\n }\n updateStatus();\n return mutation;\n };\n const reportStorageError = (error) => {\n durable?.onError?.(error);\n options.onError?.(error);\n };\n let localWriteTail = Promise.resolve();\n const queueLocalWrite = (run) => {\n const next = localWriteTail.then(run);\n localWriteTail = next.then(() => {\n return;\n }, (error) => reportStorageError(error));\n return next;\n };\n const persistEntries = (affected) => {\n if (durable === undefined)\n return;\n const snapshots = new Map;\n for (const entry of affected) {\n snapshots.set(entry.localKey, {\n rows: [...entry.confirmed.values()],\n version: entry.appliedVersion,\n cursor: entry.cursor,\n collection: entry.collection,\n params: entry.params,\n ...entry.headlessKey ? { headlessKey: entry.headlessKey } : {}\n });\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n for (const [key, record] of snapshots) {\n await tx.putCollection(key, record);\n }\n })).catch(() => {});\n };\n const recomputeMutationEntries = (mutation) => {\n const keys = new Set([\n mutation.ownerKey,\n ...mutation.optimisticOperations.map((operation) => operation.collection)\n ]);\n for (const entry of entries.values()) {\n if (keys.has(entry.localKey))\n recompute(entry);\n }\n };\n let sendMutate;\n const finishPending = (mutationId, result, error) => {\n const mutation = settlePending(mutationId);\n if (mutation === undefined)\n return;\n recomputeMutationEntries(mutation);\n if (error === undefined)\n mutation.resolve?.(result);\n else\n mutation.reject?.(error);\n };\n const finishDurablePending = (mutationId, echoedOperationId, result, error) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, result, error);\n return;\n }\n if (echoedOperationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation acknowledgment identity mismatch for ${mutation.operationId}`));\n return;\n }\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => finishPending(mutationId, result, error)).catch(() => {});\n };\n const deadLetterPending = (mutationId, rejection) => {\n const mutation = mutationOwner.get(mutationId);\n if (mutation?.operationId === undefined || durable === undefined) {\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation?.operationId));\n return;\n }\n const deadLetteredAt = Date.now();\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(mutation.operationId);\n if (current === undefined)\n return;\n const record = {\n ...current,\n attempts: mutation.attempts,\n deadLetteredAt,\n lastError: rejection.message,\n rejection,\n state: \"dead-letter\"\n };\n delete record.nextAttemptAt;\n await tx.putMutation(record);\n deadLetters.set(record.operationId, record);\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n finishPending(mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n };\n const retryRejectedPending = (mutation, rejection) => {\n if (mutation.operationId === undefined || durable === undefined) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n if (mutation.attempts >= maxAttempts) {\n deadLetterPending(mutation.mutationId, rejection);\n return;\n }\n const delay = Math.max(0, rejection.retryAfterMs ?? retryBackoff(mutation.attempts));\n mutation.nextAttemptAt = Date.now() + delay;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n lastError: rejection.message,\n nextAttemptAt: mutation.nextAttemptAt,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({ lastError: rejection.message });\n sendMutate(mutation);\n }).catch(() => {});\n };\n const resolveConflictedPending = (mutation, rejection) => {\n const policy = mutation.conflictPolicy;\n if (!policy || policy.strategy === \"manual\")\n return false;\n const lastConflictAt = Date.now();\n if (policy.strategy === \"server-wins\") {\n queueLocalWrite(() => durable === undefined || mutation.operationId === undefined ? Promise.resolve() : durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(mutation.operationId))).then(() => {\n updateStatus({\n automaticResolutions: clientStatus.automaticResolutions + 1,\n lastConflictAt,\n lastError: rejection.message\n });\n finishPending(mutation.mutationId, undefined, new SyncMutationRejectedError(rejection, mutation.operationId));\n }).catch(() => {});\n return true;\n }\n const conflictAttempts = mutation.conflictAttempts ?? 0;\n if (conflictAttempts >= (policy.maxAttempts ?? 1))\n return false;\n mutation.conflictAttempts = conflictAttempts + 1;\n mutation.nextAttemptAt = undefined;\n queueLocalWrite(() => durable === undefined || mutation.operationId === undefined ? Promise.resolve() : durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record === undefined)\n return;\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n conflictAttempts: mutation.conflictAttempts,\n lastError: rejection.message,\n rejection,\n state: \"pending\"\n });\n })).then(() => {\n updateStatus({\n automaticResolutions: clientStatus.automaticResolutions + 1,\n lastConflictAt,\n lastError: rejection.message\n });\n sendMutate(mutation);\n }).catch(() => {});\n return true;\n };\n const applyFrame = (frame) => {\n updateStatus({ connection: \"online\" });\n if (frame.type === \"snapshot\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n entry.confirmed.clear();\n for (const row of frame.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n if (frame.version !== undefined) {\n entry.appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry, { status: \"ready\", error: undefined });\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"diff\") {\n const entry = entries.get(frame.id);\n if (entry === undefined) {\n return;\n }\n applyDiffToConfirmed(entry, frame);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n persistEntries([entry]);\n recompute(entry);\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"frame\") {\n const affected = new Set;\n for (const diff of frame.diffs) {\n const entry = entries.get(diff.id);\n if (entry === undefined) {\n continue;\n }\n applyDiffToConfirmed(entry, diff);\n if (frame.version !== undefined) {\n entry.appliedVersion = Math.max(entry.appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n entry.cursor = frame.cursor;\n }\n rebuild(entry);\n affected.add(entry);\n }\n persistEntries(affected);\n for (const entry of affected) {\n notify(entry);\n }\n updateStatus({ lastSuccessfulPullAt: Date.now() });\n } else if (frame.type === \"error\") {\n if (frame.id !== undefined) {\n const entry = entries.get(frame.id);\n if (entry !== undefined) {\n recompute(entry, { error: frame.message });\n }\n }\n options.onError?.(frame.message);\n updateStatus({ lastError: String(frame.message) });\n } else if (frame.type === \"ack\") {\n updateStatus({ lastSuccessfulPushAt: Date.now() });\n finishDurablePending(frame.mutationId, frame.operationId, frame.result);\n } else if (frame.type === \"reject\") {\n const mutation = mutationOwner.get(frame.mutationId);\n if (mutation?.operationId !== undefined && frame.operationId !== mutation.operationId) {\n reportStorageError(new Error(`Durable mutation rejection identity mismatch for ${mutation.operationId}`));\n return;\n }\n const rejection = frame.rejection ?? {\n kind: \"permanent\",\n message: String(frame.message)\n };\n if (rejection.kind === \"conflict\" && mutation !== undefined && resolveConflictedPending(mutation, rejection)) {\n return;\n }\n if (rejection.kind === \"retryable\" && mutation !== undefined) {\n retryRejectedPending(mutation, rejection);\n } else {\n deadLetterPending(frame.mutationId, rejection);\n }\n }\n };\n const wsSend = (payload) => {\n socket?.send(payload);\n };\n const sendSubscribe = (entry) => {\n const since = entry.cursor ?? (entry.appliedVersion > 0 ? entry.appliedVersion : undefined);\n wsSend(serializer.encodeClient({\n type: \"subscribe\",\n id: entry.id,\n collection: entry.collection,\n params: entry.params,\n since\n }));\n };\n sendMutate = (mutation) => {\n if (mutation.nextAttemptAt !== undefined) {\n const delay = mutation.nextAttemptAt - Date.now();\n if (delay > 0 && mutation.operationId !== undefined) {\n if (!retryTimers.has(mutation.operationId)) {\n const timer = setTimeout(() => {\n retryTimers.delete(mutation.operationId);\n mutation.nextAttemptAt = undefined;\n sendMutate(mutation);\n }, delay);\n retryTimers.set(mutation.operationId, timer);\n }\n return;\n }\n mutation.nextAttemptAt = undefined;\n }\n if (!connected)\n return;\n const payload = serializer.encodeClient({\n type: \"mutate\",\n mutationId: mutation.mutationId,\n operationId: mutation.operationId,\n name: mutation.name,\n args: mutation.args\n });\n if (durable === undefined || mutation.operationId === undefined) {\n wsSend(payload);\n return;\n }\n if (mutation.sending)\n return;\n mutation.sending = true;\n mutation.attempts += 1;\n const targetSocket = socket;\n queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const record = await tx.getMutation(mutation.operationId);\n if (record !== undefined) {\n await tx.putMutation({\n ...record,\n attempts: mutation.attempts,\n state: \"pending\",\n nextAttemptAt: undefined\n });\n }\n })).catch(() => {}).finally(() => {\n mutation.sending = false;\n if (connected && socket === targetSocket && pending.includes(mutation)) {\n targetSocket?.send(payload);\n }\n });\n };\n const initializeDurable = async () => {\n if (durable === undefined)\n return;\n installationId = await ensureSyncInstallationId(durable.store, durable.namespace, durable.createId);\n const records = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.listMutations());\n for (const record of records) {\n if (record.state === \"dead-letter\") {\n deadLetters.set(record.operationId, record);\n continue;\n }\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId: record.operationId,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n name: record.name,\n args: record.args,\n optimisticOperations: record.optimistic,\n inverse: record.inverse,\n attempts: record.attempts,\n createdAt: record.createdAt,\n conflictAttempts: record.conflictAttempts,\n conflictPolicy: record.conflictPolicy,\n nextAttemptAt: record.nextAttemptAt,\n supersedesOperationId: record.supersedesOperationId\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n }\n updateStatus();\n };\n const durableReady = durable === undefined ? Promise.resolve() : initializeDurable().catch((error) => {\n reportStorageError(error);\n throw error;\n });\n const hydrateEntry = async (entry) => {\n if (durable === undefined)\n return;\n await durableReady;\n const record = await durable.store.transaction(durable.namespace, \"readonly\", (tx) => tx.getCollection(entry.localKey));\n if (entry.closed || record === undefined) {\n if (!entry.closed)\n recompute(entry);\n return;\n }\n entry.confirmed.clear();\n for (const row of record.rows) {\n entry.confirmed.set(entry.key(row), row);\n }\n entry.appliedVersion = record.version;\n entry.cursor = record.cursor;\n recompute(entry);\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n reconnectTimer = undefined;\n updateStatus({ connection: \"connecting\" });\n const ws = new Impl(socketTicket ? ticketAuthenticatedSocketUrl(options.url) : options.url);\n socket = ws;\n const sendInitialFrames = () => {\n if (socket !== ws || closed)\n return;\n if (socketTicket) {\n socketTicket().then((ticket) => {\n if (socket !== ws || closed)\n return;\n wsSend(serializer.encodeClient({\n type: \"authenticate\",\n ticket\n }));\n connected = true;\n for (const entry of entries.values())\n sendSubscribe(entry);\n for (const mutation of pending)\n sendMutate(mutation);\n }).catch((error) => {\n options.onError?.(error);\n updateStatus({ lastError: String(error) });\n ws.close();\n });\n return;\n }\n connected = true;\n for (const entry of entries.values()) {\n sendSubscribe(entry);\n }\n for (const mutation of pending)\n sendMutate(mutation);\n };\n ws.onopen = () => {\n if (durable === undefined) {\n sendInitialFrames();\n return;\n }\n Promise.all([...entries.values()].map((entry) => entry.hydrated)).then(sendInitialFrames).catch((error) => {\n reportStorageError(error);\n ws.close();\n });\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes2)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n if (socket === ws)\n socket = undefined;\n connected = false;\n if (closed) {\n return;\n }\n updateStatus({ connection: \"offline\" });\n if (immediateReconnect) {\n immediateReconnect = false;\n connect2();\n return;\n }\n if (reconnectMs <= 0)\n return;\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n if (durable === undefined)\n connect2();\n else\n durableReady.then(connect2).catch(() => {});\n const normalizeOptimisticOperations = (ownerKey, operations) => (operations ?? []).map((operation) => operation.type === \"delete\" ? {\n type: \"delete\",\n collection: operation.collection ?? ownerKey,\n key: operation.key\n } : {\n type: operation.type,\n collection: operation.collection ?? ownerKey,\n row: operation.row\n });\n const captureInverse = (operations) => {\n const working = new Map;\n const entryFor = (localKey) => {\n const entry = [...entries.values()].find((item) => item.localKey === localKey);\n if (entry === undefined) {\n throw new Error(`Durable optimistic operation targets unopened collection \"${localKey}\"`);\n }\n let rows = working.get(localKey);\n if (rows === undefined) {\n rows = new Map(entry.state.data.map((row) => [entry.key(row), row]));\n working.set(localKey, rows);\n }\n return { entry, rows };\n };\n const inverse = [];\n for (const operation of operations) {\n const { entry, rows } = entryFor(operation.collection);\n if (operation.type === \"delete\") {\n const existing2 = rows.get(operation.key);\n if (existing2 !== undefined) {\n inverse.unshift({\n type: \"insert\",\n collection: operation.collection,\n row: existing2\n });\n }\n rows.delete(operation.key);\n continue;\n }\n const rowKey = entry.key(operation.row);\n const existing = rows.get(rowKey);\n inverse.unshift(existing === undefined ? {\n type: \"delete\",\n collection: operation.collection,\n key: rowKey\n } : {\n type: \"update\",\n collection: operation.collection,\n row: existing\n });\n rows.set(rowKey, operation.row);\n }\n return inverse;\n };\n const collection = (handleOptions) => {\n const entryId = `c${nextEntryId}`;\n nextEntryId += 1;\n const localKey = handleOptions.localKey ?? defaultLocalKey(handleOptions.collection, handleOptions.params);\n if (localKey.length === 0) {\n throw new Error(\"Sync collection localKey must not be empty\");\n }\n const entry = {\n id: entryId,\n localKey,\n collection: handleOptions.collection,\n params: handleOptions.params,\n key: handleOptions.key ?? ((row) => row.id),\n headlessKey: handleOptions.key === undefined ? \"id\" : undefined,\n confirmed: new Map,\n state: { data: [], status: \"connecting\", error: undefined },\n listeners: new Set,\n appliedVersion: 0,\n cursor: undefined,\n closed: false,\n hydrated: Promise.resolve()\n };\n entries.set(entryId, entry);\n entry.hydrated = hydrateEntry(entry);\n if (connected)\n entry.hydrated.then(() => sendSubscribe(entry)).catch(reportStorageError);\n return {\n get: () => entry.state,\n subscribe: (listener) => {\n const typed = listener;\n entry.listeners.add(typed);\n listener(entry.state);\n return () => {\n entry.listeners.delete(typed);\n };\n },\n mutate: (mutateOptions) => new Promise((resolve, reject) => {\n const addPending = (operationId, optimisticOperations, inverse, createdAt = Date.now(), conflictPolicy) => {\n mutationSeq += 1;\n const mutation = {\n mutationId: mutationSeq,\n operationId,\n ownerKey: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: mutateOptions.optimistic,\n optimisticOperations,\n inverse,\n attempts: 0,\n createdAt,\n conflictPolicy,\n resolve: (result) => resolve(result),\n reject\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n updateStatus();\n recomputeMutationEntries(mutation);\n sendMutate(mutation);\n };\n if (durable === undefined) {\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n addPending(undefined, optimisticOperations, inverse);\n return;\n }\n (async () => {\n await entry.hydrated;\n const optimisticOperations = normalizeOptimisticOperations(entry.localKey, mutateOptions.optimisticOperations);\n const inverse = captureInverse(optimisticOperations);\n await durableReady;\n const operationId = createSyncOperationId(installationId, durable.createId);\n const createdAt = Date.now();\n const stored = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const conflictPolicy = tx.resolveMutationPolicy?.(mutateOptions.name)?.conflict;\n const record = {\n operationId,\n owner: entry.localKey,\n name: mutateOptions.name,\n args: mutateOptions.args,\n optimistic: optimisticOperations,\n inverse,\n createdAt,\n attempts: 0,\n state: \"pending\",\n ...conflictPolicy ? { conflictPolicy } : {}\n };\n await tx.putMutation(record);\n return record;\n }));\n addPending(operationId, optimisticOperations, inverse, createdAt, stored.conflictPolicy);\n })().catch(reject);\n }),\n close: () => {\n if (entry.closed) {\n return;\n }\n entry.closed = true;\n entries.delete(entryId);\n if (connected) {\n wsSend(serializer.encodeClient({\n type: \"unsubscribe\",\n id: entryId\n }));\n }\n }\n };\n };\n const listDeadLetters = async () => {\n if (durable === undefined)\n return [];\n await durableReady;\n return [...deadLetters.values()].sort((a, b) => a.createdAt - b.createdAt).map((record) => structuredClone(record));\n };\n const retryDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter retry requires a durable Sync client\");\n }\n await durableReady;\n if (closed)\n throw new Error(\"Cannot retry a dead letter on a closed client\");\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\") {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n const next = {\n ...current,\n attempts: 0,\n state: \"pending\"\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n createdAt: record.createdAt,\n conflictAttempts: record.conflictAttempts,\n conflictPolicy: record.conflictPolicy,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\"\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n };\n const rebaseDeadLetter = async (operationId, args) => {\n if (durable === undefined)\n throw new Error(\"Dead-letter rebase requires a durable Sync client\");\n await durableReady;\n if (closed)\n throw new Error(\"Cannot rebase a dead letter on a closed client\");\n const nextOperationId = createSyncOperationId(installationId, durable.createId);\n const record = await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", async (tx) => {\n const current = await tx.getMutation(operationId);\n if (current?.state !== \"dead-letter\")\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n const next = {\n ...current,\n args,\n attempts: 0,\n conflictAttempts: 0,\n createdAt: Date.now(),\n operationId: nextOperationId,\n state: \"pending\",\n supersedesOperationId: operationId\n };\n delete next.deadLetteredAt;\n delete next.lastError;\n delete next.nextAttemptAt;\n delete next.rejection;\n await tx.deleteMutation(operationId);\n await tx.putMutation(next);\n return next;\n }));\n deadLetters.delete(operationId);\n mutationSeq += 1;\n const mutation = {\n args: record.args,\n attempts: 0,\n conflictAttempts: 0,\n conflictPolicy: record.conflictPolicy,\n createdAt: record.createdAt,\n inverse: record.inverse,\n mutationId: mutationSeq,\n name: record.name,\n operationId: record.operationId,\n optimisticOperations: record.optimistic,\n ownerKey: record.owner ?? record.optimistic[0]?.collection ?? \"\",\n supersedesOperationId: operationId\n };\n pending.push(mutation);\n mutationOwner.set(mutation.mutationId, mutation);\n recomputeMutationEntries(mutation);\n updateStatus();\n sendMutate(mutation);\n return nextOperationId;\n };\n const discardDeadLetter = async (operationId) => {\n if (durable === undefined) {\n throw new Error(\"Dead-letter discard requires a durable Sync client\");\n }\n await durableReady;\n if (!deadLetters.has(operationId)) {\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n }\n await queueLocalWrite(() => durable.store.transaction(durable.namespace, \"readwrite\", (tx) => tx.deleteMutation(operationId)));\n deadLetters.delete(operationId);\n updateStatus();\n };\n const subscribeStatus = (listener) => {\n statusListeners.add(listener);\n listener(snapshotStatus());\n return () => {\n statusListeners.delete(listener);\n };\n };\n const flush = async ({ timeoutMs = 1e4 } = {}) => {\n if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {\n throw new TypeError(\"Sync flush timeoutMs must be a non-negative number\");\n }\n await durableReady;\n if (pending.length === 0) {\n return {\n deadLetters: deadLetters.size,\n pending: 0,\n timedOut: false\n };\n }\n if (!connected)\n reconnect();\n const timedOut = await new Promise((resolve) => {\n let settled = false;\n let remove = () => {\n return;\n };\n const timer = setTimeout(() => {\n if (settled)\n return;\n settled = true;\n remove();\n resolve(true);\n }, timeoutMs);\n remove = subscribeStatus((current) => {\n if (settled || current.pending > 0)\n return;\n settled = true;\n clearTimeout(timer);\n remove();\n resolve(false);\n });\n });\n return {\n deadLetters: deadLetters.size,\n pending: pending.length,\n timedOut\n };\n };\n let removeRuntimeClient;\n let removeInspectionClient;\n const close = () => {\n if (closed)\n return;\n closed = true;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n socket?.close();\n for (const timer of retryTimers.values())\n clearTimeout(timer);\n retryTimers.clear();\n entries.clear();\n mutationOwner.clear();\n pending.length = 0;\n updateStatus({ connection: \"closed\" });\n statusListeners.clear();\n removeRuntimeClient?.();\n removeRuntimeClient = undefined;\n removeInspectionClient?.();\n removeInspectionClient = undefined;\n };\n const disconnect = () => {\n if (closed || socket === undefined) {\n return;\n }\n socket.close();\n };\n const reconnect = () => {\n if (closed)\n return;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n reconnectTimer = undefined;\n }\n const current = socket;\n if (current && current.readyState !== current.CLOSED) {\n immediateReconnect = true;\n current.close();\n return;\n }\n socket = undefined;\n connect2();\n };\n const client = {\n close,\n collection,\n discardDeadLetter,\n disconnect,\n flush,\n listDeadLetters,\n rebaseDeadLetter,\n reconnect,\n retryDeadLetter,\n status: snapshotStatus,\n subscribeStatus\n };\n removeRuntimeClient = runtime?.registerClient?.(client) ?? undefined;\n removeInspectionClient = registerSyncRuntimeClient(client);\n return client;\n};\n// src/client/syncStore.ts\nvar serverFrameTypes3 = [\"snapshot\", \"diff\", \"error\"];\nvar SUBSCRIPTION_ID2 = \"s\";\nvar syncStore = (options) => {\n const key = options.key ?? ((row) => row.id);\n const reconnectMs = options.reconnectMs ?? 500;\n const maxReconnectMs = options.maxReconnectMs ?? 1e4;\n const reconcileGraceMs = options.reconcileGraceMs ?? 3000;\n const mutations = options.mutations ?? {};\n const serializer = options.serializer ?? jsonSerializer;\n const Impl = options.webSocketImpl ?? globalThis.WebSocket;\n if (!Impl) {\n throw new Error(\"syncStore requires WebSocket. Run in a browser or pass webSocketImpl.\");\n }\n const confirmed = new Map;\n const pending = [];\n let mutationSeq = 0;\n let state = {\n data: options.initialData ? [...options.initialData] : [],\n status: \"connecting\",\n error: undefined\n };\n if (options.initialData) {\n for (const row of options.initialData) {\n confirmed.set(key(row), row);\n }\n }\n const listeners = new Set;\n const setState = (patch) => {\n state = { ...state, ...patch };\n for (const listener of listeners) {\n listener(state);\n }\n };\n const recompute = (patch = {}) => {\n const working = new Map(confirmed);\n const draft = {\n set: (row) => working.set(key(row), row),\n delete: (rowKey) => working.delete(rowKey)\n };\n for (const mutation of pending) {\n mutation.optimistic?.(draft);\n }\n setState({ ...patch, data: [...working.values()] });\n };\n const persist = () => {\n options.storage?.save(pending.map((mutation) => ({\n mutationId: mutation.id,\n name: mutation.name,\n args: mutation.args\n })));\n };\n const dropPending = (mutation) => {\n const index = pending.indexOf(mutation);\n if (index !== -1) {\n pending.splice(index, 1);\n }\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n };\n const reconcileSettled = () => {\n let changed = false;\n for (const mutation of [...pending]) {\n if (!mutation.settled) {\n continue;\n }\n let reflected = true;\n for (const [rowKey, kind] of mutation.touched) {\n const present = confirmed.has(rowKey);\n if (kind === \"set\" ? !present : present) {\n reflected = false;\n break;\n }\n }\n if (reflected) {\n dropPending(mutation);\n changed = true;\n }\n }\n if (changed) {\n recompute();\n }\n };\n let socket;\n let connected = false;\n let closed = false;\n const reconnectBackoff = createReconnectBackoff(reconnectMs, maxReconnectMs);\n let reconnectTimer;\n let appliedVersion = 0;\n let appliedCursor;\n const applyFrame = (frame) => {\n if (frame.type === \"snapshot\") {\n confirmed.clear();\n for (const row of frame.rows) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = frame.version;\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute({ status: \"ready\", error: undefined });\n reconcileSettled();\n } else if (frame.type === \"diff\") {\n for (const row of frame.removed) {\n confirmed.delete(key(row));\n }\n for (const row of frame.added) {\n confirmed.set(key(row), row);\n }\n for (const row of frame.changed) {\n confirmed.set(key(row), row);\n }\n if (frame.version !== undefined) {\n appliedVersion = Math.max(appliedVersion, frame.version);\n }\n if (frame.cursor !== undefined) {\n appliedCursor = frame.cursor;\n }\n recompute();\n reconcileSettled();\n } else if (frame.type === \"error\") {\n setState({ error: frame.message });\n options.onError?.(frame.message);\n }\n };\n const runMutation = async (mutation) => {\n if (mutation.inFlight || mutation.settled) {\n return;\n }\n const run = mutations[mutation.name];\n if (run === undefined) {\n dropPending(mutation);\n recompute();\n mutation.reject(new Error(`Unknown mutation \"${mutation.name}\"`));\n return;\n }\n mutation.inFlight = true;\n try {\n const result = await run(mutation.args);\n mutation.inFlight = false;\n mutation.settled = true;\n mutation.resolve(result);\n persist();\n reconcileSettled();\n if (pending.includes(mutation)) {\n mutation.graceTimer = setTimeout(() => {\n dropPending(mutation);\n recompute();\n }, reconcileGraceMs);\n }\n } catch (error) {\n mutation.inFlight = false;\n if (connected) {\n dropPending(mutation);\n recompute();\n persist();\n mutation.reject(error);\n } else {\n options.onError?.(error);\n }\n }\n };\n const connect2 = () => {\n if (closed) {\n return;\n }\n setState({ status: \"connecting\" });\n const ws = new Impl(options.url);\n socket = ws;\n ws.onopen = () => {\n connected = true;\n ws.send(serializer.encodeClient({\n type: \"subscribe\",\n id: SUBSCRIPTION_ID2,\n collection: options.collection,\n params: options.params,\n since: appliedCursor ?? (appliedVersion > 0 ? appliedVersion : undefined)\n }));\n for (const mutation of pending) {\n if (!mutation.settled && !mutation.inFlight) {\n runMutation(mutation);\n }\n }\n };\n ws.onmessage = (event) => {\n try {\n const decoded = serializer.decode(event.data);\n if (decoded !== null && typeof decoded === \"object\") {\n applyFrame(decoded);\n if (hasReconnectHealthyFrameType(decoded, serverFrameTypes3)) {\n reconnectBackoff.markHealthy();\n }\n }\n } catch {}\n };\n ws.onclose = () => {\n connected = false;\n if (closed || reconnectMs <= 0) {\n return;\n }\n const delay = reconnectBackoff.nextDelay();\n reconnectTimer = setTimeout(connect2, delay);\n };\n };\n const eagerHydrate = async () => {\n if (options.hydrate === undefined || options.initialData !== undefined) {\n return;\n }\n try {\n const rows = await options.hydrate();\n if (state.status !== \"ready\") {\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n }\n } catch (error) {\n options.onError?.(error);\n }\n };\n const hydratePersisted = async () => {\n if (options.storage === undefined) {\n return;\n }\n const records = await options.storage.load();\n for (const record of records) {\n if (pending.some((m) => m.id === record.mutationId)) {\n continue;\n }\n pending.push({\n id: record.mutationId,\n name: record.name,\n args: record.args,\n touched: new Map,\n settled: false,\n inFlight: false,\n resolve: () => {},\n reject: () => {}\n });\n mutationSeq = Math.max(mutationSeq, record.mutationId);\n }\n if (connected) {\n for (const mutation of pending) {\n runMutation(mutation);\n }\n }\n };\n connect2();\n eagerHydrate();\n hydratePersisted();\n const collectTouched = (optimistic) => {\n const touched = new Map;\n optimistic?.({\n set: (row) => touched.set(key(row), \"set\"),\n delete: (rowKey) => touched.set(rowKey, \"delete\")\n });\n return touched;\n };\n return {\n get: () => state,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n mutate: (name, args, mutateOptions) => new Promise((resolve, reject) => {\n const mutation = {\n id: mutationSeq += 1,\n name,\n args,\n touched: collectTouched(mutateOptions?.optimistic),\n optimistic: mutateOptions?.optimistic,\n settled: false,\n inFlight: false,\n resolve,\n reject\n };\n pending.push(mutation);\n persist();\n recompute();\n runMutation(mutation);\n }),\n refetch: async () => {\n if (options.hydrate === undefined) {\n return;\n }\n const rows = await options.hydrate();\n confirmed.clear();\n for (const row of rows) {\n confirmed.set(key(row), row);\n }\n recompute({ status: \"ready\" });\n },\n close: () => {\n if (closed) {\n return;\n }\n closed = true;\n connected = false;\n if (reconnectTimer !== undefined) {\n clearTimeout(reconnectTimer);\n }\n try {\n socket?.send(serializer.encodeClient({\n type: \"unsubscribe\",\n id: SUBSCRIPTION_ID2\n }));\n socket?.close();\n } catch {}\n for (const mutation of pending.splice(0)) {\n if (mutation.graceTimer !== undefined) {\n clearTimeout(mutation.graceTimer);\n }\n mutation.reject(new Error(\"sync store closed\"));\n }\n persist();\n setState({ status: \"closed\" });\n listeners.clear();\n }\n };\n};\nvar unwrapEden = async (response) => {\n const { data, error } = await response;\n if (error !== null && error !== undefined) {\n throw error;\n }\n return data;\n};\nexport {\n SyncLocalDataPolicyError,\n SyncLocalStoreSchemaError,\n SyncMutationRejectedError,\n createCollaborativeText,\n createIndexedDbSyncLocalStore,\n createLiveQuery,\n createMemorySyncLocalStore,\n createPresence,\n createSharedSyncSubscriber,\n createSyncClient,\n createSyncCollection,\n createSyncLocalSchemaStatus,\n createSyncOperationId,\n createSyncSubscriber,\n discardSyncRuntimeDeadLetter,\n ensureSyncInstallationId,\n getSyncClientRuntimeTransport,\n indexedDbCollectionCache,\n inspectSyncRuntime,\n installSyncClientRuntimeTransport,\n jsonFetcher,\n localStorageCollectionCache,\n localStorageMutationStorage,\n migrateSyncLocalCollectionRecord,\n migrateSyncLocalMutationRecord,\n normalizeSyncLocalSchemaComponents,\n rebaseSyncRuntimeDeadLetter,\n registerSyncRuntimeClient,\n resolveSyncLocalCollectionPolicy,\n resolveSyncLocalDataPolicy,\n resolveSyncLocalMigrations,\n resolveSyncLocalMutationPolicy,\n resolveSyncLocalSchemaComponents,\n retrySyncRuntimeDeadLetter,\n runHeadlessSync,\n runSyncLocalPolicyTransaction,\n syncStore,\n unwrapEden,\n validateSyncLocalDataPolicy\n};\n\n//# debugId=117FAC16CDE3C9F364756E2164756E21\n//# sourceMappingURL=index.js.map\n",
|
|
@@ -33,17 +33,19 @@
|
|
|
33
33
|
"export type AbsoluteIosDeviceAcceptanceResult = {\n\thmrConnected: true;\n\tinstalled: true;\n\trelaunchMs: number;\n};\n\ntype CommandResult = { exitCode: number; stderr: string; stdout: string };\n\nexport const absoluteIosDeviceAcceptanceCommands = (options: {\n\tappId: string;\n\tdevice: string;\n\txcrun?: string;\n}) => {\n\tconst xcrun = options.xcrun ?? '/usr/bin/xcrun';\n\tconst prefix = [xcrun, 'devicectl', 'device'];\n\n\treturn {\n\t\tapps: [...prefix, 'info', 'apps', '--device', options.device],\n\t\tdetails: [...prefix, 'info', 'details', '--device', options.device],\n\t\tlaunch: [\n\t\t\t...prefix,\n\t\t\t'process',\n\t\t\t'launch',\n\t\t\t'--terminate-existing',\n\t\t\t'--device',\n\t\t\toptions.device,\n\t\t\toptions.appId\n\t\t]\n\t};\n};\n\nconst requireSuccess = (result: CommandResult, message: string) => {\n\tif (result.exitCode !== 0) throw new Error(message);\n\n\treturn result;\n};\n\n/**\n * Validate and relaunch a physical iOS app without retaining device inventory,\n * signing output, or console output in the acceptance result.\n */\nexport const testAbsoluteIosPhysicalDevice = async (options: {\n\tappId: string;\n\tcapture: (command: string[]) => Promise<CommandResult>;\n\tdevice: string;\n\tnow?: () => number;\n\twaitForHmr: () => Promise<void>;\n\txcrun?: string;\n}): Promise<AbsoluteIosDeviceAcceptanceResult> => {\n\tconst commands = absoluteIosDeviceAcceptanceCommands(options);\n\trequireSuccess(\n\t\tawait options.capture(commands.details),\n\t\t'The selected physical iOS device is unavailable. Pair it in Xcode Device Hub, trust this Mac, unlock it, and enable Developer Mode.'\n\t);\n\tconst apps = requireSuccess(\n\t\tawait options.capture(commands.apps),\n\t\t'AbsoluteJS could not inspect installed apps on the physical iOS device.'\n\t);\n\tif (!apps.stdout.includes(options.appId))\n\t\tthrow new Error(\n\t\t\t'The AbsoluteJS app is not installed on the selected physical iOS device. Start bun dev with the same --ios-device value first.'\n\t\t);\n\tconst now = options.now ?? performance.now.bind(performance);\n\tconst startedAt = now();\n\trequireSuccess(\n\t\tawait options.capture(commands.launch),\n\t\t'AbsoluteJS could not relaunch the app on the physical iOS device.'\n\t);\n\tawait options.waitForHmr();\n\n\treturn {\n\t\thmrConnected: true,\n\t\tinstalled: true,\n\t\trelaunchMs: Math.round(now() - startedAt)\n\t};\n};\n",
|
|
34
34
|
"import {\n\taccess,\n\tmkdir,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport {\n\tnormalizeAbsoluteMobileConfig,\n\ttype NormalizedAbsoluteMobileConfig\n} from './config';\n\nconst JSON_HEADERS: Record<string, string> = {\n\t'cache-control': 'public, max-age=300, must-revalidate',\n\t'content-type': 'application/json; charset=utf-8'\n};\nconst OWNERSHIP_FILE = '.absolutejs-mobile-associations.json';\nconst HTTP_OK = 200;\nconst VERIFY_TIMEOUT_MS = 10_000;\n\ntype AssociationEndpoint = {\n\tdocument: unknown;\n\thost: string;\n\tpath: string;\n\tplatform: string;\n};\n\nexport type AbsoluteAssociationRequest = (\n\tinput: string | URL | Request,\n\tinit?: RequestInit\n) => Promise<Response>;\n\nexport const ANDROID_ASSOCIATION_PATH = '/.well-known/assetlinks.json';\nexport const APPLE_ASSOCIATION_PATH = '/.well-known/apple-app-site-association';\n\nexport type AbsoluteMobileAssociationDocuments = {\n\tandroid?: readonly [\n\t\t{\n\t\t\trelation: readonly ['delegate_permission/common.handle_all_urls'];\n\t\t\ttarget: {\n\t\t\t\tnamespace: 'android_app';\n\t\t\t\tpackage_name: string;\n\t\t\t\tsha256_cert_fingerprints: string[];\n\t\t\t};\n\t\t}\n\t];\n\tapple?: {\n\t\tapplinks: {\n\t\t\tdetails: readonly [\n\t\t\t\t{\n\t\t\t\t\tappIDs: readonly [string];\n\t\t\t\t\tcomponents: readonly [{ '/': '/*' }];\n\t\t\t\t}\n\t\t\t];\n\t\t};\n\t};\n};\n\nconst missingIdentity = (field: string, platform: string) =>\n\tnew TypeError(\n\t\t`${field} is required to publish ${platform} deep-link association files.`\n\t);\n\nconst createAppleDocument = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequireAll: boolean\n) => {\n\tif (!config.platforms.includes('ios')) return undefined;\n\tif (!config.appleAppIdPrefix && requireAll) {\n\t\tthrow missingIdentity('mobile.deepLinks.apple.appIdPrefix', 'iOS');\n\t}\n\tif (!config.appleAppIdPrefix) return undefined;\n\n\treturn {\n\t\tapplinks: {\n\t\t\tdetails: [\n\t\t\t\t{\n\t\t\t\t\tappIDs: [\n\t\t\t\t\t\t`${config.appleAppIdPrefix}.${config.appId}`\n\t\t\t\t\t] as const,\n\t\t\t\t\tcomponents: [{ '/': '/*' as const }]\n\t\t\t\t}\n\t\t\t] as const\n\t\t}\n\t};\n};\n\nconst createAndroidDocument = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequireAll: boolean\n) => {\n\tif (!config.platforms.includes('android')) return undefined;\n\tif (config.androidCertificateFingerprints.length === 0 && requireAll) {\n\t\tthrow missingIdentity(\n\t\t\t'mobile.deepLinks.android.sha256CertificateFingerprints',\n\t\t\t'Android'\n\t\t);\n\t}\n\tif (config.androidCertificateFingerprints.length === 0) return undefined;\n\n\treturn [\n\t\t{\n\t\t\trelation: ['delegate_permission/common.handle_all_urls'] as const,\n\t\t\ttarget: {\n\t\t\t\tnamespace: 'android_app' as const,\n\t\t\t\tpackage_name: config.appId,\n\t\t\t\tsha256_cert_fingerprints: config.androidCertificateFingerprints\n\t\t\t}\n\t\t}\n\t] as const;\n};\n\nexport const createAbsoluteMobileAssociationDocuments = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toptions: { requireAll?: boolean } = {}\n) => {\n\tconst documents: AbsoluteMobileAssociationDocuments = {};\n\tconst requireAll = options.requireAll === true;\n\tconst android = createAndroidDocument(config, requireAll);\n\tconst apple = createAppleDocument(config, requireAll);\n\tif (android) documents.android = android;\n\tif (apple) documents.apple = apple;\n\n\treturn documents;\n};\n\nconst jsonResponse = (value: unknown) =>\n\tnew Response(`${JSON.stringify(value)}\\n`, { headers: JSON_HEADERS });\n\nexport const createAbsoluteMobileAssociationPlugin = (\n\tmobile: MobileConfig | undefined,\n\tprojectRoot: string,\n\toptions: { requireAll?: boolean } = {}\n) => {\n\tconst plugin = new Elysia({ name: 'absolutejs-mobile-associations' });\n\tif (!mobile) return plugin;\n\tconst config = normalizeAbsoluteMobileConfig(mobile, projectRoot);\n\tconst documents = createAbsoluteMobileAssociationDocuments(config, options);\n\tif (documents.apple) {\n\t\tplugin.get(APPLE_ASSOCIATION_PATH, () => jsonResponse(documents.apple));\n\t}\n\tif (documents.android) {\n\t\tplugin.get(ANDROID_ASSOCIATION_PATH, () =>\n\t\t\tjsonResponse(documents.android)\n\t\t);\n\t}\n\n\treturn plugin;\n};\n\nconst writeAtomic = async (path: string, source: string) => {\n\tlet current: string | undefined;\n\ttry {\n\t\tcurrent = await readFile(path, 'utf8');\n\t} catch (error) {\n\t\tif (\n\t\t\t!(error instanceof Error) ||\n\t\t\t!('code' in error) ||\n\t\t\terror.code !== 'ENOENT'\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\tif (current === source) return false;\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst assertOwnedOutput = async (root: string) => {\n\tconst path = resolve(root, OWNERSHIP_FILE);\n\tlet ownership: unknown;\n\ttry {\n\t\townership = JSON.parse(await readFile(path, 'utf8'));\n\t} catch {\n\t\tthrow new TypeError(\n\t\t\t`Association output ${root} already exists and is not owned by AbsoluteJS.`\n\t\t);\n\t}\n\tif (\n\t\ttypeof ownership !== 'object' ||\n\t\townership === null ||\n\t\tReflect.get(ownership, 'format') !== 1\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`Association output ${root} has an unsupported ownership manifest.`\n\t\t);\n\t}\n};\n\nconst publishGeneratedDirectory = async (temporary: string, root: string) => {\n\tconst hasCurrent = await exists(root);\n\tif (hasCurrent) await assertOwnedOutput(root);\n\tconst backup = `${root}.${crypto.randomUUID()}.previous`;\n\tif (hasCurrent) await rename(root, backup);\n\ttry {\n\t\tawait rename(temporary, root);\n\t} catch (error) {\n\t\tif (hasCurrent) await rename(backup, root);\n\t\tthrow error;\n\t}\n\tif (hasCurrent) await rm(backup, { force: true, recursive: true });\n};\n\nconst materializeHost = async (\n\troot: string,\n\thost: string,\n\tfiles: Array<[string, unknown]>\n) => {\n\tconst directory = resolve(root, host, '.well-known');\n\tawait mkdir(directory, { recursive: true });\n\n\treturn Promise.all(\n\t\tfiles.map(async ([name, document]) => {\n\t\t\tconst path = resolve(directory, name);\n\t\t\tawait writeAtomic(path, `${JSON.stringify(document, null, 2)}\\n`);\n\n\t\t\treturn path;\n\t\t})\n\t);\n};\n\nconst associationEndpoints = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tdocuments: AbsoluteMobileAssociationDocuments\n) =>\n\tconfig.deepLinkHosts.flatMap((host) => {\n\t\tconst endpoints: AssociationEndpoint[] = [];\n\t\tif (documents.android)\n\t\t\tendpoints.push({\n\t\t\t\tdocument: documents.android,\n\t\t\t\thost,\n\t\t\t\tpath: ANDROID_ASSOCIATION_PATH,\n\t\t\t\tplatform: 'Android'\n\t\t\t});\n\t\tif (documents.apple)\n\t\t\tendpoints.push({\n\t\t\t\tdocument: documents.apple,\n\t\t\t\thost,\n\t\t\t\tpath: APPLE_ASSOCIATION_PATH,\n\t\t\t\tplatform: 'Apple'\n\t\t\t});\n\n\t\treturn endpoints;\n\t});\n\nexport const materializeAbsoluteMobileAssociationFiles = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toutputDirectory: string\n) => {\n\tconst root = resolve(outputDirectory);\n\tconst temporary = `${root}.${crypto.randomUUID()}.tmp`;\n\tconst documents = createAbsoluteMobileAssociationDocuments(config, {\n\t\trequireAll: true\n\t});\n\tconst files: Array<[string, unknown]> = [];\n\tif (documents.android) files.push(['assetlinks.json', documents.android]);\n\tif (documents.apple) {\n\t\tfiles.push(['apple-app-site-association', documents.apple]);\n\t}\n\tawait mkdir(temporary, { recursive: true });\n\ttry {\n\t\tconst temporaryPaths = (\n\t\t\tawait Promise.all(\n\t\t\t\tconfig.deepLinkHosts.map((host) =>\n\t\t\t\t\tmaterializeHost(temporary, host, files)\n\t\t\t\t)\n\t\t\t)\n\t\t).flat();\n\t\tawait writeAtomic(\n\t\t\tresolve(temporary, OWNERSHIP_FILE),\n\t\t\t`${JSON.stringify({ format: 1, hosts: config.deepLinkHosts }, null, 2)}\\n`\n\t\t);\n\t\tawait publishGeneratedDirectory(temporary, root);\n\t\tconst written = temporaryPaths.map((path) =>\n\t\t\tresolve(root, path.slice(temporary.length + 1))\n\t\t);\n\n\t\treturn { root, written };\n\t} catch (error) {\n\t\tawait rm(temporary, { force: true, recursive: true });\n\t\tthrow error;\n\t}\n};\n\nexport const verifyAbsoluteMobileAssociationFiles = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequest: AbsoluteAssociationRequest = globalThis.fetch\n) => {\n\tconst documents = createAbsoluteMobileAssociationDocuments(config, {\n\t\trequireAll: true\n\t});\n\tconst results = await Promise.all(\n\t\tassociationEndpoints(config, documents).map(async (endpoint) => {\n\t\t\tconst url = `https://${endpoint.host}${endpoint.path}`;\n\t\t\tconst response = await request(url, {\n\t\t\t\tredirect: 'manual',\n\t\t\t\tsignal: AbortSignal.timeout(VERIFY_TIMEOUT_MS)\n\t\t\t});\n\t\t\tif (response.status !== HTTP_OK) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: HTTP ${response.status}; redirects are not allowed.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst contentType = response.headers.get('content-type') ?? '';\n\t\t\tif (!contentType.toLowerCase().startsWith('application/json')) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: expected application/json.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet document: unknown;\n\t\t\ttry {\n\t\t\t\tdocument = await response.json();\n\t\t\t} catch {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: invalid JSON.`\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tJSON.stringify(document) !== JSON.stringify(endpoint.document)\n\t\t\t) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`${endpoint.platform} association verification failed for ${url}: the hosted identity does not match mobile config.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { platform: endpoint.platform, url };\n\t\t})\n\t);\n\n\treturn { results };\n};\n",
|
|
35
35
|
"import type { AbsoluteMobilePageFramework } from './pageProtocol';\n\nexport const ABSOLUTE_MOBILE_ROUTE_DETAIL = 'x-absolute-mobile' as const;\n\nexport type AbsoluteMobileBuildPageMetadata = {\n\tbundleKey: string;\n\tcontract: string;\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\tpropsSchemaHash: string;\n};\n\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isPageFramework = (\n\tvalue: unknown\n): value is AbsoluteMobilePageFramework =>\n\ttypeof value === 'string' && frameworks.has(value);\n\nexport const parseAbsoluteMobileBuildPageMetadata = (\n\tvalue: unknown\n): AbsoluteMobileBuildPageMetadata | undefined => {\n\tif (!isRecord(value)) return undefined;\n\tif (\n\t\ttypeof value.bundleKey !== 'string' ||\n\t\ttypeof value.contract !== 'string' ||\n\t\t!isPageFramework(value.framework) ||\n\t\ttypeof value.pageId !== 'string' ||\n\t\ttypeof value.propsSchemaHash !== 'string'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tbundleKey: value.bundleKey,\n\t\tcontract: value.contract,\n\t\tframework: value.framework,\n\t\tpageId: value.pageId,\n\t\tpropsSchemaHash: value.propsSchemaHash\n\t};\n};\n",
|
|
36
|
-
"import { readFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport { buildAbsoluteMobileCompatibilityRelease } from './buildRelease';\nimport { materializeAbsoluteCapacitorWebBundle } from './capacitorBundle';\nimport { normalizeAbsoluteMobileConfig } from './config';\nimport {\n\tmaterializeAbsoluteMobileCompatibilityBundle,\n\treadAbsoluteMobileMaterializedReleases\n} from './materializedBundle';\nimport { ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION } from './pageProtocol';\nimport { retainAbsoluteMobileCompatibilityArtifacts } from './releaseArtifact';\nimport {\n\tprojectUsesAbsoluteSync,\n\tresolveAbsoluteMobileAuthManifest\n} from './nativeAuth';\nimport { discoverAbsoluteSyncSchema } from './syncSchema';\nimport {\n\tassertAbsoluteDeviceCapabilityPackages,\n\tresolveAbsoluteDeviceCapabilityPlan\n} from './deviceCapabilities';\nimport {\n\tsyncAbsoluteExpoWebAssets,\n\twriteAbsoluteExpoProject\n} from './expoProject';\n\nexport type FinalizeAbsoluteMobileBuildOptions = {\n\tbuildDirectory: string;\n\tconfigPath?: string;\n\tmobile: MobileConfig;\n\tproducerPath: string;\n\tprojectRoot: string;\n};\n\ntype ServerModule = {\n\tapp?: unknown;\n\tdefault?: unknown;\n\tserver?: unknown;\n};\n\ntype StringRecord = Record<string, string>;\n\nconst isElysiaApp = (\n\tvalue: unknown\n): value is Pick<Elysia, 'compile' | 'modules' | 'routes'> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\ttypeof Reflect.get(value, 'compile') === 'function' &&\n\tArray.isArray(Reflect.get(value, 'routes'));\n\nconst isStringRecord = (value: unknown): value is StringRecord =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\nconst serverExportName = (loaded: ServerModule, app: unknown) => {\n\tif (loaded.server === app) return 'server';\n\tif (loaded.app === app) return 'app';\n\n\treturn 'default';\n};\n\nconst restoreEnvironmentVariable = (\n\tname:\n\t\t| 'ABSOLUTE_BUILD_DIR'\n\t\t| 'ABSOLUTE_COMPILED_RUNTIME'\n\t\t| 'ABSOLUTE_CONFIG',\n\tprevious: string | undefined\n) => {\n\tif (previous !== undefined) process.env[name] = previous;\n\telse delete process.env[name];\n};\n\nconst requireRelease = <T>(releases: Map<string, T>, releaseId: string) => {\n\tconst release = releases.get(releaseId);\n\tif (!release) {\n\t\tthrow new TypeError(`Missing retained mobile release ${releaseId}.`);\n\t}\n\n\treturn release;\n};\n\nconst loadServerApp = async (producerPath: string) => {\n\tconst loaded: ServerModule = await import(\n\t\t`${pathToFileURL(producerPath).href}?absolute-mobile-capture=${crypto.randomUUID()}`\n\t);\n\tconst candidates = [loaded.server, loaded.app, loaded.default];\n\tconst app = candidates.find(isElysiaApp);\n\tif (!app) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile builds require the server entry to export its Elysia app as server, app, or default.'\n\t\t);\n\t}\n\tconst exportName = serverExportName(loaded, app);\n\n\treturn { app, exportName };\n};\n\nexport const finalizeAbsoluteMobileCompatibilityBuild = async (\n\toptions: FinalizeAbsoluteMobileBuildOptions\n) => {\n\tconst buildDirectory = resolve(options.buildDirectory);\n\tconst mobile = normalizeAbsoluteMobileConfig(\n\t\toptions.mobile,\n\t\toptions.projectRoot\n\t);\n\tconst root = join(buildDirectory, '.absolutejs', 'mobile-compatibility');\n\tconst [manifestSource, previous] = await Promise.all([\n\t\treadFile(join(buildDirectory, 'manifest.json'), 'utf8'),\n\t\treadAbsoluteMobileMaterializedReleases(root)\n\t]);\n\tconst manifest: unknown = JSON.parse(manifestSource);\n\tif (!isStringRecord(manifest)) {\n\t\tthrow new TypeError(\n\t\t\t'Invalid AbsoluteJS build manifest for mobile capture.'\n\t\t);\n\t}\n\tconst previousBuildDirectory = process.env.ABSOLUTE_BUILD_DIR;\n\tconst previousCompiledRuntime = process.env.ABSOLUTE_COMPILED_RUNTIME;\n\tconst previousConfigPath = process.env.ABSOLUTE_CONFIG;\n\tprocess.env.ABSOLUTE_BUILD_DIR = buildDirectory;\n\tprocess.env.ABSOLUTE_COMPILED_RUNTIME = '1';\n\tif (options.configPath) {\n\t\tprocess.env.ABSOLUTE_CONFIG = resolve(\n\t\t\toptions.projectRoot,\n\t\t\toptions.configPath\n\t\t);\n\t}\n\tlet loaded: Awaited<ReturnType<typeof loadServerApp>>;\n\ttry {\n\t\tloaded = await loadServerApp(resolve(options.producerPath));\n\t} finally {\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_BUILD_DIR',\n\t\t\tpreviousBuildDirectory\n\t\t);\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_COMPILED_RUNTIME',\n\t\t\tpreviousCompiledRuntime\n\t\t);\n\t\trestoreEnvironmentVariable('ABSOLUTE_CONFIG', previousConfigPath);\n\t}\n\tconst current = await buildAbsoluteMobileCompatibilityRelease({\n\t\tapp: loaded.app,\n\t\tappId: mobile.appId,\n\t\tbuildDirectory,\n\t\tmanifest,\n\t\tpreviousArtifacts: previous.map(({ artifact }) => artifact),\n\t\tproducerExport: loaded.exportName,\n\t\tproducerPath: resolve(options.producerPath),\n\t\truntime: String(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t});\n\tconst auth = resolveAbsoluteMobileAuthManifest(options.projectRoot, mobile);\n\tconst sync =\n\t\tauth !== undefined && projectUsesAbsoluteSync(options.projectRoot);\n\tconst syncSchema = sync\n\t\t? discoverAbsoluteSyncSchema(options.projectRoot)\n\t\t: undefined;\n\tconst deviceCapabilities = resolveAbsoluteDeviceCapabilityPlan(\n\t\toptions.projectRoot,\n\t\tmobile.engine\n\t);\n\tconst usesPush =\n\t\tdeviceCapabilities.capabilities.includes('pushNotifications');\n\tif (usesPush && !auth)\n\t\tthrow new TypeError(\n\t\t\t'Portable push notifications require @absolutejs/auth so provider tokens can be registered without exposing identity controls to page code.'\n\t\t);\n\tif (\n\t\tusesPush &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) =>\n\t\t\t\troute.path === '/auth/push' ||\n\t\t\t\troute.path === '/auth/mobile/push'\n\t\t)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/devices pushNotifications is used, but Auth push is not configured. Pass a trusted server-side registrar to auth({ push: ... }).'\n\t\t);\n\tif (mobile.engine === 'capacitor') {\n\t\tassertAbsoluteDeviceCapabilityPackages(\n\t\t\toptions.projectRoot,\n\t\t\tdeviceCapabilities\n\t\t);\n\t}\n\tif (\n\t\tauth &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) => route.path === '/.well-known/openid-configuration'\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/auth is installed, but its OIDC provider is not mounted. Native authentication requires the auth oidc configuration so AbsoluteJS can provision a public PKCE client.'\n\t\t);\n\t}\n\tconst releasesById = new Map(\n\t\t[current, ...previous].map((release) => [\n\t\t\trelease.artifact.releaseId,\n\t\t\trelease\n\t\t])\n\t);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(\n\t\t[...releasesById.values()].map(({ artifact }) => artifact)\n\t);\n\tawait materializeAbsoluteMobileCompatibilityBundle({\n\t\tcurrentReleaseId: current.artifact.releaseId,\n\t\treleases: retained.map((artifact) =>\n\t\t\trequireRelease(releasesById, artifact.releaseId)\n\t\t),\n\t\troot\n\t});\n\tawait materializeAbsoluteCapacitorWebBundle({\n\t\tartifact: current.artifact,\n\t\t...(auth ? { auth } : {}),\n\t\tbuildDirectory,\n\t\tconfig: mobile,\n\t\tdeviceCapabilities,\n\t\tprojectRoot: options.projectRoot,\n\t\t...(sync ? { sync: true } : {}),\n\t\t...(syncSchema\n\t\t\t? { syncSchema: { components: syncSchema.components } }\n\t\t\t: {})\n\t});\n\tif (mobile.engine === 'expo') {\n\t\tawait writeAbsoluteExpoProject(mobile, {\n\t\t\tprojectRoot: options.projectRoot\n\t\t});\n\t\tawait syncAbsoluteExpoWebAssets(mobile);\n\t}\n\n\treturn current.artifact;\n};\n",
|
|
36
|
+
"import { readFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport { buildAbsoluteMobileCompatibilityRelease } from './buildRelease';\nimport { materializeAbsoluteCapacitorWebBundle } from './capacitorBundle';\nimport { normalizeAbsoluteMobileConfig } from './config';\nimport {\n\tmaterializeAbsoluteMobileCompatibilityBundle,\n\treadAbsoluteMobileMaterializedReleases\n} from './materializedBundle';\nimport { ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION } from './pageProtocol';\nimport { retainAbsoluteMobileCompatibilityArtifacts } from './releaseArtifact';\nimport {\n\tprojectUsesAbsoluteSync,\n\tresolveAbsoluteMobileAuthManifest\n} from './nativeAuth';\nimport { discoverAbsoluteSyncSchema } from './syncSchema';\nimport {\n\tassertAbsoluteDeviceCapabilityPackages,\n\tresolveAbsoluteDeviceCapabilityPlan\n} from './deviceCapabilities';\nimport {\n\tsyncAbsoluteExpoWebAssets,\n\twriteAbsoluteExpoProject\n} from './expoProject';\nimport {\n\tcreateAbsoluteMobileUpdateRuntimeDescriptor,\n\tfingerprintAbsoluteMobileUpdateRuntime\n} from './updateRuntime';\n\nexport type FinalizeAbsoluteMobileBuildOptions = {\n\tbuildDirectory: string;\n\tconfigPath?: string;\n\tmobile: MobileConfig;\n\tproducerPath: string;\n\tprojectRoot: string;\n};\n\ntype ServerModule = {\n\tapp?: unknown;\n\tdefault?: unknown;\n\tserver?: unknown;\n};\n\ntype StringRecord = Record<string, string>;\n\nconst isElysiaApp = (\n\tvalue: unknown\n): value is Pick<Elysia, 'compile' | 'modules' | 'routes'> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\ttypeof Reflect.get(value, 'compile') === 'function' &&\n\tArray.isArray(Reflect.get(value, 'routes'));\n\nconst isStringRecord = (value: unknown): value is StringRecord =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\tObject.values(value).every((entry) => typeof entry === 'string');\n\nconst serverExportName = (loaded: ServerModule, app: unknown) => {\n\tif (loaded.server === app) return 'server';\n\tif (loaded.app === app) return 'app';\n\n\treturn 'default';\n};\n\nconst restoreEnvironmentVariable = (\n\tname:\n\t\t| 'ABSOLUTE_BUILD_DIR'\n\t\t| 'ABSOLUTE_COMPILED_RUNTIME'\n\t\t| 'ABSOLUTE_CONFIG',\n\tprevious: string | undefined\n) => {\n\tif (previous !== undefined) process.env[name] = previous;\n\telse delete process.env[name];\n};\n\nconst requireRelease = <T>(releases: Map<string, T>, releaseId: string) => {\n\tconst release = releases.get(releaseId);\n\tif (!release) {\n\t\tthrow new TypeError(`Missing retained mobile release ${releaseId}.`);\n\t}\n\n\treturn release;\n};\n\nconst loadServerApp = async (producerPath: string) => {\n\tconst loaded: ServerModule = await import(\n\t\t`${pathToFileURL(producerPath).href}?absolute-mobile-capture=${crypto.randomUUID()}`\n\t);\n\tconst candidates = [loaded.server, loaded.app, loaded.default];\n\tconst app = candidates.find(isElysiaApp);\n\tif (!app) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile builds require the server entry to export its Elysia app as server, app, or default.'\n\t\t);\n\t}\n\tconst exportName = serverExportName(loaded, app);\n\n\treturn { app, exportName };\n};\n\nexport const finalizeAbsoluteMobileCompatibilityBuild = async (\n\toptions: FinalizeAbsoluteMobileBuildOptions\n) => {\n\tconst buildDirectory = resolve(options.buildDirectory);\n\tconst mobile = normalizeAbsoluteMobileConfig(\n\t\toptions.mobile,\n\t\toptions.projectRoot\n\t);\n\tconst root = join(buildDirectory, '.absolutejs', 'mobile-compatibility');\n\tconst [manifestSource, previous] = await Promise.all([\n\t\treadFile(join(buildDirectory, 'manifest.json'), 'utf8'),\n\t\treadAbsoluteMobileMaterializedReleases(root)\n\t]);\n\tconst manifest: unknown = JSON.parse(manifestSource);\n\tif (!isStringRecord(manifest)) {\n\t\tthrow new TypeError(\n\t\t\t'Invalid AbsoluteJS build manifest for mobile capture.'\n\t\t);\n\t}\n\tconst previousBuildDirectory = process.env.ABSOLUTE_BUILD_DIR;\n\tconst previousCompiledRuntime = process.env.ABSOLUTE_COMPILED_RUNTIME;\n\tconst previousConfigPath = process.env.ABSOLUTE_CONFIG;\n\tprocess.env.ABSOLUTE_BUILD_DIR = buildDirectory;\n\tprocess.env.ABSOLUTE_COMPILED_RUNTIME = '1';\n\tif (options.configPath) {\n\t\tprocess.env.ABSOLUTE_CONFIG = resolve(\n\t\t\toptions.projectRoot,\n\t\t\toptions.configPath\n\t\t);\n\t}\n\tlet loaded: Awaited<ReturnType<typeof loadServerApp>>;\n\ttry {\n\t\tloaded = await loadServerApp(resolve(options.producerPath));\n\t} finally {\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_BUILD_DIR',\n\t\t\tpreviousBuildDirectory\n\t\t);\n\t\trestoreEnvironmentVariable(\n\t\t\t'ABSOLUTE_COMPILED_RUNTIME',\n\t\t\tpreviousCompiledRuntime\n\t\t);\n\t\trestoreEnvironmentVariable('ABSOLUTE_CONFIG', previousConfigPath);\n\t}\n\tconst current = await buildAbsoluteMobileCompatibilityRelease({\n\t\tapp: loaded.app,\n\t\tappId: mobile.appId,\n\t\tbuildDirectory,\n\t\tmanifest,\n\t\tpreviousArtifacts: previous.map(({ artifact }) => artifact),\n\t\tproducerExport: loaded.exportName,\n\t\tproducerPath: resolve(options.producerPath),\n\t\truntime: String(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t});\n\tconst auth = resolveAbsoluteMobileAuthManifest(options.projectRoot, mobile);\n\tconst sync =\n\t\tauth !== undefined && projectUsesAbsoluteSync(options.projectRoot);\n\tconst syncSchema = sync\n\t\t? discoverAbsoluteSyncSchema(options.projectRoot)\n\t\t: undefined;\n\tconst deviceCapabilities = resolveAbsoluteDeviceCapabilityPlan(\n\t\toptions.projectRoot,\n\t\tmobile.engine\n\t);\n\tconst runtimeFingerprint = fingerprintAbsoluteMobileUpdateRuntime(\n\t\tcreateAbsoluteMobileUpdateRuntimeDescriptor({\n\t\t\t...(auth ? { auth } : {}),\n\t\t\tconfig: mobile,\n\t\t\tdeviceCapabilities,\n\t\t\t...(syncSchema ? { syncSchema } : {})\n\t\t})\n\t);\n\tconst usesPush =\n\t\tdeviceCapabilities.capabilities.includes('pushNotifications');\n\tif (usesPush && !auth)\n\t\tthrow new TypeError(\n\t\t\t'Portable push notifications require @absolutejs/auth so provider tokens can be registered without exposing identity controls to page code.'\n\t\t);\n\tif (\n\t\tusesPush &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) =>\n\t\t\t\troute.path === '/auth/push' ||\n\t\t\t\troute.path === '/auth/mobile/push'\n\t\t)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/devices pushNotifications is used, but Auth push is not configured. Pass a trusted server-side registrar to auth({ push: ... }).'\n\t\t);\n\tif (mobile.engine === 'capacitor') {\n\t\tassertAbsoluteDeviceCapabilityPackages(\n\t\t\toptions.projectRoot,\n\t\t\tdeviceCapabilities\n\t\t);\n\t}\n\tif (\n\t\tauth &&\n\t\t!loaded.app.routes.some(\n\t\t\t(route) => route.path === '/.well-known/openid-configuration'\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'@absolutejs/auth is installed, but its OIDC provider is not mounted. Native authentication requires the auth oidc configuration so AbsoluteJS can provision a public PKCE client.'\n\t\t);\n\t}\n\tconst releasesById = new Map(\n\t\t[current, ...previous].map((release) => [\n\t\t\trelease.artifact.releaseId,\n\t\t\trelease\n\t\t])\n\t);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(\n\t\t[...releasesById.values()].map(({ artifact }) => artifact)\n\t);\n\tawait materializeAbsoluteMobileCompatibilityBundle({\n\t\tcurrentReleaseId: current.artifact.releaseId,\n\t\treleases: retained.map((artifact) =>\n\t\t\trequireRelease(releasesById, artifact.releaseId)\n\t\t),\n\t\troot\n\t});\n\tawait materializeAbsoluteCapacitorWebBundle({\n\t\tartifact: current.artifact,\n\t\t...(auth ? { auth } : {}),\n\t\tbuildDirectory,\n\t\tconfig: mobile,\n\t\tdeviceCapabilities,\n\t\tprojectRoot: options.projectRoot,\n\t\truntimeFingerprint,\n\t\t...(sync ? { sync: true } : {}),\n\t\t...(syncSchema\n\t\t\t? { syncSchema: { components: syncSchema.components } }\n\t\t\t: {})\n\t});\n\tif (mobile.engine === 'expo') {\n\t\tawait writeAbsoluteExpoProject(mobile, {\n\t\t\tprojectRoot: options.projectRoot\n\t\t});\n\t\tawait syncAbsoluteExpoWebAssets(mobile);\n\t}\n\n\treturn current.artifact;\n};\n",
|
|
37
37
|
"import { createHash } from 'node:crypto';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport type { Elysia } from 'elysia';\nimport {\n\tABSOLUTE_MOBILE_ROUTE_DETAIL,\n\tparseAbsoluteMobileBuildPageMetadata,\n\ttype AbsoluteMobileBuildPageMetadata\n} from './buildMetadata';\nimport {\n\tcreateAbsoluteMobileCompatibilityArtifact,\n\ttype AbsoluteMobileCompatibilityArtifact,\n\ttype AbsoluteMobileCompatibilityPage,\n\ttype AbsoluteMobileCompatibilityRoute\n} from './releaseArtifact';\nimport type { AbsoluteMobileStoredCompatibilityRelease } from './artifactStore';\nimport { toPascal } from '../utils/stringModifiers';\n\nexport type AbsoluteMobileBuildReleaseOptions = {\n\tapp: Pick<Elysia, 'compile' | 'modules' | 'routes'>;\n\tappId: string;\n\tbuildDirectory: string;\n\tmanifest: Record<string, string>;\n\tpreviousArtifacts?: readonly AbsoluteMobileCompatibilityArtifact[];\n\tproducerExport?: string;\n\tproducerModule?: string;\n\tproducerPath: string;\n\truntime: string;\n};\n\nconst sha256 = (bytes: Uint8Array) =>\n\tcreateHash('sha256').update(bytes).digest('hex');\n\nconst STATIC_SCRIPT_PATTERN =\n\t/(<script\\b[^>]*?\\bsrc\\s*=\\s*[\"'])(\\/[^\"']+\\.(?:js|ts))([\"'][^>]*>)/giu;\n\nconst rewriteStaticScriptPaths = (\n\tsource: string,\n\tmanifest: Record<string, string>\n) =>\n\tsource.replace(\n\t\tSTATIC_SCRIPT_PATTERN,\n\t\t(match, prefix: string, path: string, suffix: string) => {\n\t\t\tif (path.endsWith('/htmx.min.js')) return match;\n\t\t\tconst key = toPascal(basename(path, extname(path)));\n\t\t\tconst builtPath = manifest[key];\n\n\t\t\treturn builtPath ? `${prefix}${builtPath}${suffix}` : match;\n\t\t}\n\t);\n\nconst readPageMetadata = (route: {\n\thooks?: { detail?: Record<string, unknown> };\n}) =>\n\tparseAbsoluteMobileBuildPageMetadata(\n\t\troute.hooks?.detail?.[ABSOLUTE_MOBILE_ROUTE_DETAIL]\n\t);\n\nconst resolveAssetPath = (buildDirectory: string, assetPath: string) => {\n\tconst resolvedBuildDirectory = resolve(buildDirectory);\n\tconst resolvedAsset = resolve(assetPath);\n\tif (resolvedAsset.startsWith(`${resolvedBuildDirectory}/`)) {\n\t\treturn resolvedAsset;\n\t}\n\n\treturn join(buildDirectory, assetPath.replace(/^\\/+/, ''));\n};\n\nconst pageFor = async (\n\tmetadata: AbsoluteMobileBuildPageMetadata,\n\tmanifest: Record<string, string>,\n\tbuildDirectory: string\n) => {\n\tconst assetPath = manifest[metadata.bundleKey];\n\tif (!assetPath) {\n\t\tthrow new TypeError(\n\t\t\t`Mobile page ${metadata.pageId} references missing manifest asset ${metadata.bundleKey}.`\n\t\t);\n\t}\n\tlet resolvedAssetPath = resolveAssetPath(buildDirectory, assetPath);\n\tif (metadata.framework === 'html' || metadata.framework === 'htmx') {\n\t\tconst source = await readFile(resolvedAssetPath, 'utf8');\n\t\tconst rewritten = rewriteStaticScriptPaths(source, manifest);\n\t\tconst documentHash = sha256(new TextEncoder().encode(rewritten));\n\t\tresolvedAssetPath = join(\n\t\t\tbuildDirectory,\n\t\t\t'.absolutejs',\n\t\t\t'mobile-pages',\n\t\t\t`${documentHash}.html`\n\t\t);\n\t\tawait mkdir(dirname(resolvedAssetPath), { recursive: true });\n\t\tawait writeFile(resolvedAssetPath, rewritten);\n\t}\n\tconst pageAssetKey = metadata.bundleKey.replace(/Index$/u, '');\n\tconst styleAssetPath = [\n\t\t`${pageAssetKey}BundledCSS`,\n\t\t`${pageAssetKey}CompiledCSS`\n\t]\n\t\t.map((key) => manifest[key])\n\t\t.find((path): path is string => typeof path === 'string');\n\tconst resolvedStylePath = styleAssetPath\n\t\t? resolveAssetPath(buildDirectory, styleAssetPath)\n\t\t: undefined;\n\tconst [bytes, styleBytes] = await Promise.all([\n\t\treadFile(resolvedAssetPath),\n\t\tresolvedStylePath ? readFile(resolvedStylePath) : undefined\n\t]);\n\tconst bundlePath = `/${relative(resolve(buildDirectory), resolvedAssetPath).replaceAll('\\\\', '/')}`;\n\tconst styleBundlePath = resolvedStylePath\n\t\t? `/${relative(resolve(buildDirectory), resolvedStylePath).replaceAll('\\\\', '/')}`\n\t\t: undefined;\n\n\treturn {\n\t\tbundleHash: sha256(bytes),\n\t\tbundlePath,\n\t\tcontract: metadata.contract,\n\t\tframework: metadata.framework,\n\t\tpageId: metadata.pageId,\n\t\tpropsSchemaHash: metadata.propsSchemaHash,\n\t\t...(styleBytes && styleBundlePath\n\t\t\t? {\n\t\t\t\t\tstyleBundleHash: sha256(styleBytes),\n\t\t\t\t\tstyleBundlePath\n\t\t\t\t}\n\t\t\t: {})\n\t} satisfies AbsoluteMobileCompatibilityPage;\n};\n\nexport const buildAbsoluteMobileCompatibilityRelease = async (\n\toptions: AbsoluteMobileBuildReleaseOptions\n): Promise<AbsoluteMobileStoredCompatibilityRelease> => {\n\tconst [captured, producerBytes] = await Promise.all([\n\t\tcaptureAbsoluteMobileRouteGraph(options.app),\n\t\treadFile(options.producerPath)\n\t]);\n\tif (captured.length === 0) {\n\t\tthrow new TypeError(\n\t\t\t'No instrumented AbsoluteJS mobile page routes were found in the finalized Elysia route graph.'\n\t\t);\n\t}\n\tconst metadataByPage = new Map<string, AbsoluteMobileBuildPageMetadata>();\n\tfor (const { metadata } of captured) {\n\t\tconst prior = metadataByPage.get(metadata.pageId);\n\t\tif (prior && JSON.stringify(prior) !== JSON.stringify(metadata)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile page ${metadata.pageId} has inconsistent generated contracts.`\n\t\t\t);\n\t\t}\n\t\tmetadataByPage.set(metadata.pageId, metadata);\n\t}\n\tconst pages = await Promise.all(\n\t\t[...metadataByPage.values()].map((metadata) =>\n\t\t\tpageFor(metadata, options.manifest, options.buildDirectory)\n\t\t)\n\t);\n\tconst producerHash = sha256(producerBytes);\n\tconst appBuild = `ambuild_${sha256(\n\t\tnew TextEncoder().encode(\n\t\t\tJSON.stringify({\n\t\t\t\tpages: pages.map(\n\t\t\t\t\t({\n\t\t\t\t\t\tbundleHash,\n\t\t\t\t\t\tbundlePath,\n\t\t\t\t\t\tcontract,\n\t\t\t\t\t\tpageId,\n\t\t\t\t\t\tstyleBundleHash,\n\t\t\t\t\t\tstyleBundlePath\n\t\t\t\t\t}) => ({\n\t\t\t\t\t\tbundleHash,\n\t\t\t\t\t\tbundlePath,\n\t\t\t\t\t\tcontract,\n\t\t\t\t\t\tpageId,\n\t\t\t\t\t\t...(styleBundleHash && styleBundlePath\n\t\t\t\t\t\t\t? { styleBundleHash, styleBundlePath }\n\t\t\t\t\t\t\t: {})\n\t\t\t\t\t})\n\t\t\t\t),\n\t\t\t\tproducerHash,\n\t\t\t\truntime: options.runtime\n\t\t\t})\n\t\t)\n\t)}`;\n\tconst priorAppIds = new Set(\n\t\t(options.previousArtifacts ?? []).map(({ appId }) => appId)\n\t);\n\tif (\n\t\tpriorAppIds.size > 1 ||\n\t\t(priorAppIds.size === 1 && !priorAppIds.has(options.appId))\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Previous mobile compatibility artifacts belong to another app.'\n\t\t);\n\t}\n\tconst unchanged = options.previousArtifacts?.find(\n\t\t(artifact) =>\n\t\t\tartifact.appBuild === appBuild &&\n\t\t\tartifact.runtime === options.runtime\n\t);\n\tconst generation =\n\t\tunchanged?.generation ??\n\t\tMath.max(\n\t\t\t0,\n\t\t\t...(options.previousArtifacts ?? []).map(\n\t\t\t\t(artifact) => artifact.generation\n\t\t\t)\n\t\t) + 1;\n\tconst artifact = createAbsoluteMobileCompatibilityArtifact({\n\t\tappBuild,\n\t\tappId: options.appId,\n\t\tgeneration,\n\t\tpages,\n\t\tproducer: {\n\t\t\tbundleHash: producerHash,\n\t\t\tbytes: producerBytes.byteLength,\n\t\t\texportName: options.producerExport ?? 'server',\n\t\t\tmodule: options.producerModule ?? 'producer.js'\n\t\t},\n\t\troutes: captured.map(({ route }) => route),\n\t\truntime: options.runtime\n\t});\n\n\treturn { artifact, producer: new Blob([producerBytes]) };\n};\nexport const captureAbsoluteMobileRouteGraph = async (\n\tapp: Pick<Elysia, 'compile' | 'modules' | 'routes'>\n) => {\n\tif (app.modules) await app.modules;\n\tapp.compile();\n\tconst captured = app.routes.flatMap((route) => {\n\t\tconst metadata = readPageMetadata(route);\n\t\tif (!metadata || (route.method !== 'GET' && route.method !== 'HEAD')) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tmetadata,\n\t\t\t\troute: {\n\t\t\t\t\tmethod: route.method === 'GET' ? 'GET' : 'HEAD',\n\t\t\t\t\tpageId: metadata.pageId,\n\t\t\t\t\tpattern: route.path\n\t\t\t\t} satisfies AbsoluteMobileCompatibilityRoute\n\t\t\t}\n\t\t];\n\t});\n\tconst identities = new Map<string, string>();\n\tfor (const { metadata, route } of captured) {\n\t\tconst prior = identities.get(`${route.method}:${route.pattern}`);\n\t\tif (prior && prior !== metadata.pageId) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile route ${route.method} ${route.pattern} resolves to multiple pages.`\n\t\t\t);\n\t\t}\n\t\tidentities.set(`${route.method}:${route.pattern}`, metadata.pageId);\n\t}\n\n\treturn captured;\n};\n",
|
|
38
|
-
"import {\n\tcp,\n\tcopyFile,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport type {\n\tAbsoluteMobileCompatibilityArtifact,\n\tAbsoluteMobileCompatibilityPage\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport {\n\tABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\ttype AbsoluteMobileClientManifest\n} from './transport';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';\n\nexport type AbsoluteCapacitorBundleOptions = {\n\tartifact: AbsoluteMobileCompatibilityArtifact;\n\tauth?: AbsoluteMobileAuthManifest;\n\tbuildDirectory: string;\n\tconfig: NormalizedAbsoluteMobileConfig;\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan;\n\tprojectRoot: string;\n\tsync?: boolean;\n\tsyncSchema?: SyncLocalStoreSchemaBundle;\n};\n\nconst MANIFEST_FILE = 'absolute-mobile-manifest.json';\nconst BOOTSTRAP_FILE = 'absolute-mobile-bootstrap.js';\nconst INDEX_FILE = 'index.html';\nconst CLIENT_CSS_DEPENDENCY_PATTERN =\n\t/(?:@import\\s+(?:url\\(\\s*)?|url\\(\\s*)[\"']?((?:\\/|\\.\\.\\/|\\.\\/)[^\"')\\s]+)[\"']?\\s*\\)?/gu;\nconst CLIENT_MARKUP_DEPENDENCY_PATTERN =\n\t/<(?:script\\b[^>]*\\bsrc|link\\b[^>]*\\bhref|img\\b[^>]*\\bsrc|source\\b[^>]*\\bsrcset)\\s*=\\s*[\"']((?:\\/|\\.\\.\\/|\\.\\/)[^\"',\\s]+)/giu;\nconst CAPACITOR_CLIENT_FRAMEWORKS = new Set([\n\t'angular',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\nconst CLIENT_ASSET_DIRECTORIES = ['assets', 'html', 'htmx', 'indexes'] as const;\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst shellBootstrapModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellBootstrap.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile shell bootstrap module is missing.');\n};\n\nconst shellAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile auth shell module is missing.');\n};\n\nconst shellExpoAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellExpoAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo auth bridge module is missing.');\n};\n\nconst shellSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile Sync shell module is missing.');\n};\n\nconst shellExpoSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellExpoSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo Sync bridge module is missing.');\n};\n\nconst shellPushModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellPush.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile push shell module is missing.');\n};\n\nconst shellExpoDevicesModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellExpoDevices.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo device bridge module is missing.');\n};\n\nconst escapeHtml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>')\n\t\t.replaceAll('\"', '"');\n\nconst contentSecurityPolicy = (productionOrigin: string) => {\n\tconst backend = new URL(productionOrigin);\n\tconst socketOrigin = `${backend.protocol === 'https:' ? 'wss:' : 'ws:'}//${backend.host}`;\n\n\treturn [\n\t\t\"default-src 'self' data: blob: https:\",\n\t\t\"base-uri 'none'\",\n\t\t\"object-src 'none'\",\n\t\t\"script-src 'self'\",\n\t\t\"style-src 'self' 'unsafe-inline'\",\n\t\t`connect-src 'self' ${backend.origin} ${socketOrigin}`,\n\t\t\"form-action 'none'\"\n\t].join('; ');\n};\n\nconst indexHtml = (\n\tappName: string,\n\tproductionOrigin: string\n) => `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,viewport-fit=cover\">\n\t\t<meta name=\"color-scheme\" content=\"light dark\">\n\t\t<meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtml(contentSecurityPolicy(productionOrigin))}\">\n\t\t<title>${escapeHtml(appName)}</title>\n\t</head>\n\t<body>\n\t\t<main id=\"absolute-mobile-status\" role=\"status\">Starting…</main>\n\t\t<script type=\"module\" src=\"./${BOOTSTRAP_FILE}\"></script>\n\t</body>\n</html>\n`;\n\nconst sourceAssetPath = (buildDirectory: string, bundlePath: string) => {\n\tconst root = resolve(buildDirectory);\n\tconst asset = resolve(root, bundlePath.replace(/^\\/+/, ''));\n\tif (!asset.startsWith(`${root}/`)) {\n\t\tthrow new TypeError('Mobile page bundle escaped the build directory.');\n\t}\n\n\treturn asset;\n};\n\nconst importEntryTarget = (entry: unknown) => {\n\tif (typeof entry === 'string') return entry;\n\tif (typeof entry === 'object' && entry !== null)\n\t\treturn Reflect.get(entry, 'import');\n\n\treturn undefined;\n};\n\nconst resolveProjectImport = async (projectRoot: string, specifier: string) => {\n\tconst segments = specifier.split('/');\n\tconst packageName = specifier.startsWith('@')\n\t\t? segments.slice(0, 2).join('/')\n\t\t: (segments[0] ?? '');\n\tconst subpath = specifier.slice(packageName.length);\n\tconst packageDirectory = join(\n\t\tresolve(projectRoot),\n\t\t'node_modules',\n\t\tpackageName\n\t);\n\tconst manifest: unknown = JSON.parse(\n\t\tawait readFile(join(packageDirectory, 'package.json'), 'utf8')\n\t);\n\tconst exports =\n\t\ttypeof manifest === 'object' && manifest !== null\n\t\t\t? Reflect.get(manifest, 'exports')\n\t\t\t: undefined;\n\tconst entry =\n\t\ttypeof exports === 'object' && exports !== null\n\t\t\t? Reflect.get(exports, subpath ? `.${subpath}` : '.')\n\t\t\t: undefined;\n\tconst target = importEntryTarget(entry);\n\tif (typeof target !== 'string' || !target.startsWith('./'))\n\t\tthrow new TypeError(`${specifier} does not publish an import entry.`);\n\tconst resolved = resolve(packageDirectory, target);\n\tif (!resolved.startsWith(`${resolve(packageDirectory)}/`))\n\t\tthrow new TypeError(`${specifier} has an unsafe import entry.`);\n\n\treturn resolved;\n};\n\nconst buildShellBootstrap = async (\n\tstaging: string,\n\tauth: boolean,\n\tsync: boolean,\n\tstoragePrefix: string,\n\tengine: 'capacitor' | 'expo',\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan,\n\tprojectRoot: string\n) => {\n\tconst capacitor = engine !== 'expo';\n\tconst shellCapabilities = capacitor ? deviceCapabilities.capabilities : [];\n\tconst modulePath = shellBootstrapModule();\n\tconst authFactory = capacitor\n\t\t? 'createAbsoluteMobileShellAuth'\n\t\t: 'createAbsoluteExpoShellAuth';\n\tconst syncFactory = capacitor\n\t\t? 'installAbsoluteMobileShellSync'\n\t\t: 'installAbsoluteExpoShellSync';\n\tconst authImport = auth\n\t\t? `import { ${authFactory} } from ${JSON.stringify(capacitor ? shellAuthModule() : shellExpoAuthModule())};\\n`\n\t\t: '';\n\tconst options = auth\n\t\t? `{ createAuth: ${authFactory}${sync ? `, installSync: ${syncFactory}` : ''} }`\n\t\t: '';\n\tconst syncImport = sync\n\t\t? `import { ${syncFactory} } from ${JSON.stringify(capacitor ? shellSyncModule() : shellExpoSyncModule())};\\n`\n\t\t: '';\n\tconst pushIndex = shellCapabilities.indexOf('pushNotifications');\n\tconst push = pushIndex !== -1;\n\tconst pushImport = push\n\t\t? `import { createAbsoluteMobileShellPush } from ${JSON.stringify(shellPushModule())};\\n`\n\t\t: '';\n\tconst capabilityImports = (\n\t\tawait Promise.all(\n\t\t\tshellCapabilities.map(async (name, index) => {\n\t\t\t\tconst provider = deviceCapabilities.providers[name];\n\t\t\t\tif (!provider)\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Missing device capability provider ${name}.`\n\t\t\t\t\t);\n\n\t\t\t\treturn `import { ${provider.factory} as absoluteDeviceCapability${index} } from ${JSON.stringify(await resolveProjectImport(projectRoot, provider.module))};`;\n\t\t\t})\n\t\t)\n\t).join('\\n');\n\tconst pushSetup = push\n\t\t? `const absoluteMobilePush = createAbsoluteMobileShellPush();\\nconst absoluteMobilePushCapability = absoluteDeviceCapability${pushIndex}(absoluteMobilePush.capabilityOptions);\\n`\n\t\t: '';\n\tconst capabilityOptions = shellCapabilities\n\t\t.map(\n\t\t\t(name, index) =>\n\t\t\t\t`${JSON.stringify(name)}: ${name === 'pushNotifications' ? 'absoluteMobilePushCapability' : `absoluteDeviceCapability${index}()`}`\n\t\t)\n\t\t.join(', ');\n\tconst entryPath = join(staging, '.absolute-mobile-entry.ts');\n\tconst baseAdapterModule = capacitor\n\t\t? await resolveProjectImport(\n\t\t\t\tprojectRoot,\n\t\t\t\t'@absolutejs/devices-capacitor'\n\t\t\t)\n\t\t: shellExpoDevicesModule();\n\tconst adapterImport = capacitor\n\t\t? `import { installCapacitorDeviceAdapterIfNative } from ${JSON.stringify(baseAdapterModule)};`\n\t\t: `import { createAbsoluteExpoBridgeFetch, installAbsoluteExpoWebDeviceAdapter } from ${JSON.stringify(baseAdapterModule)};`;\n\tconst adapterInstall = capacitor\n\t\t? `installCapacitorDeviceAdapterIfNative({ storagePrefix: ${JSON.stringify(storagePrefix)}${capabilityOptions ? `, ${capabilityOptions}` : ''} });`\n\t\t: `installAbsoluteExpoWebDeviceAdapter(${JSON.stringify(deviceCapabilities.capabilities)});`;\n\tlet shellOptions = auth\n\t\t? options\n\t\t: '{ createFetch: createAbsoluteExpoBridgeFetch }';\n\tif (capacitor) shellOptions = options;\n\tif (push) {\n\t\tshellOptions = `{ createAuth: (config, options) => createAbsoluteMobileShellAuth(config, options), beforeSignOut: absoluteMobilePush.beforeSignOut, connectPush: (auth) => absoluteMobilePush.connect(auth, absoluteMobilePushCapability)${sync ? `, installSync: ${syncFactory}` : ''} }`;\n\t}\n\tawait writeFile(\n\t\tentryPath,\n\t\t`import { startAbsoluteMobileShell } from ${JSON.stringify(modulePath)};\\n${adapterImport}\\n${authImport}${syncImport}${pushImport}${capabilityImports}\\n${pushSetup}${adapterInstall}\\nvoid startAbsoluteMobileShell(${shellOptions});\\n`\n\t);\n\tconst build = await Bun.build({\n\t\tentrypoints: [entryPath],\n\t\tminify: true,\n\t\toutdir: staging,\n\t\ttarget: 'browser'\n\t});\n\tif (!build.success || build.outputs.length !== 1) {\n\t\tthrow new AggregateError(\n\t\t\tbuild.logs,\n\t\t\t'Failed to build the AbsoluteJS Capacitor shell.'\n\t\t);\n\t}\n\tawait rename(build.outputs[0]?.path ?? '', join(staging, BOOTSTRAP_FILE));\n\tawait rm(entryPath, { force: true });\n};\n\nconst removePreviousBundle = async (backup: string, moved: boolean) => {\n\tif (!moved) return;\n\tawait rm(backup, { force: true, recursive: true });\n};\n\nconst restorePreviousBundle = async (\n\tbackup: string,\n\tdestination: string,\n\tmoved: boolean\n) => {\n\tif (!moved) return;\n\tawait rename(backup, destination);\n};\n\nconst installBundle = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tlet movedPrevious = false;\n\ttry {\n\t\tawait rename(destination, backup);\n\t\tmovedPrevious = true;\n\t} catch (error) {\n\t\tif (!errorHasCode(error, 'ENOENT')) throw error;\n\t}\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tawait removePreviousBundle(backup, movedPrevious);\n\t} catch (error) {\n\t\tawait restorePreviousBundle(backup, destination, movedPrevious);\n\n\t\tthrow error;\n\t}\n};\n\nconst copyClientPage = async (\n\tpage: AbsoluteMobileCompatibilityPage,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopiedDependencies: Set<string>\n) => {\n\tif (!CAPACITOR_CLIENT_FRAMEWORKS.has(page.framework)) {\n\t\tthrow new TypeError(\n\t\t\t`Capacitor client rendering does not yet support ${page.framework} page ${page.pageId}.`\n\t\t);\n\t}\n\tconst extension = extname(page.bundlePath) || '.js';\n\tconst localBundlePath = `./pages/${page.bundleHash}${extension}`;\n\tconst source = sourceAssetPath(buildDirectory, page.bundlePath);\n\tawait copyFile(source, join(staging, localBundlePath));\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopiedDependencies\n\t);\n\n\tlet localStylePath: string | undefined;\n\tif (page.styleBundlePath && page.styleBundleHash) {\n\t\tconst styleExtension = extname(page.styleBundlePath) || '.css';\n\t\tlocalStylePath = `./styles/${page.styleBundleHash}${styleExtension}`;\n\t\tconst styleSource = sourceAssetPath(\n\t\t\tbuildDirectory,\n\t\t\tpage.styleBundlePath\n\t\t);\n\t\tawait mkdir(dirname(join(staging, localStylePath)), {\n\t\t\trecursive: true\n\t\t});\n\t\tawait copyFile(styleSource, join(staging, localStylePath));\n\t\tawait copyAbsoluteClientDependencies(\n\t\t\tstyleSource,\n\t\t\tbuildDirectory,\n\t\t\tstaging,\n\t\t\tcopiedDependencies\n\t\t);\n\t}\n\n\treturn {\n\t\t...page,\n\t\tlocalBundlePath,\n\t\t...(localStylePath ? { localStylePath } : {})\n\t};\n};\n\nconst absoluteClientImports = async (\n\tsourcePath: string,\n\tbuildDirectory: string\n) => {\n\tconst source = await readFile(sourcePath, 'utf8');\n\tconst extension = extname(sourcePath).toLowerCase();\n\tlet scriptLoader: 'js' | 'jsx' | 'ts' | 'tsx' | undefined;\n\tif (extension === '.tsx') scriptLoader = 'tsx';\n\telse if (extension === '.ts') scriptLoader = 'ts';\n\telse if (extension === '.jsx') scriptLoader = 'jsx';\n\telse if (['.js', '.mjs', '.cjs'].includes(extension)) scriptLoader = 'js';\n\tconst scriptImports = scriptLoader\n\t\t? new Bun.Transpiler({ loader: scriptLoader })\n\t\t\t\t.scanImports(source)\n\t\t\t\t.map(({ path }) => path)\n\t\t: [];\n\tconst cssImports =\n\t\textension === '.css'\n\t\t\t? [...source.matchAll(CLIENT_CSS_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\tconst markupImports =\n\t\textension === '.html'\n\t\t\t? [...source.matchAll(CLIENT_MARKUP_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\n\treturn [...scriptImports, ...cssImports, ...markupImports].flatMap(\n\t\t(specifier) => {\n\t\t\tif (!specifier) return [];\n\t\t\tif (\n\t\t\t\t!specifier.startsWith('/') &&\n\t\t\t\t!specifier.startsWith('./') &&\n\t\t\t\t!specifier.startsWith('../')\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst clean = specifier.split(/[?#]/u, 1)[0] ?? specifier;\n\t\t\tif (clean.startsWith('/')) return [clean];\n\t\t\tconst resolved = resolve(dirname(sourcePath), clean);\n\t\t\tconst root = resolve(buildDirectory);\n\t\t\tconst relativePath = relative(root, resolved).replaceAll('\\\\', '/');\n\t\t\tif (relativePath === '..' || relativePath.startsWith('../')) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Mobile client dependency escaped the build directory: ${specifier}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [`/${relativePath}`];\n\t\t}\n\t);\n};\n\nconst copyAbsoluteClientDependency = async (\n\tspecifier: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tif (copied.has(specifier)) return;\n\tcopied.add(specifier);\n\tconst source = sourceAssetPath(buildDirectory, specifier);\n\tconst destination = join(staging, specifier.replace(/^\\/+/, ''));\n\tawait mkdir(dirname(destination), { recursive: true });\n\tawait copyFile(source, destination);\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopied\n\t);\n};\n\nconst copyAbsoluteClientDependencies = async (\n\tsourcePath: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tconst dependencies = await absoluteClientImports(\n\t\tsourcePath,\n\t\tbuildDirectory\n\t);\n\tawait Promise.all(\n\t\tdependencies.map((specifier) =>\n\t\t\tcopyAbsoluteClientDependency(\n\t\t\t\tspecifier,\n\t\t\t\tbuildDirectory,\n\t\t\t\tstaging,\n\t\t\t\tcopied\n\t\t\t)\n\t\t)\n\t);\n};\n\nexport const materializeAbsoluteCapacitorWebBundle = async (\n\toptions: AbsoluteCapacitorBundleOptions\n) => {\n\tif (\n\t\t!resolveAbsoluteMobileRoute(\n\t\t\toptions.artifact.routes,\n\t\t\tnew URL(options.config.entry, 'https://absolute.invalid').pathname\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.entry ${options.config.entry} is not a captured mobile page route.`\n\t\t);\n\t}\n\tconst destination = options.config.bundleDirectory;\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\ttry {\n\t\tconst pageDirectory = join(staging, 'pages');\n\t\tawait mkdir(pageDirectory, { recursive: true });\n\t\tawait Promise.all(\n\t\t\tCLIENT_ASSET_DIRECTORIES.map((directory) => ({\n\t\t\t\tdestination: join(staging, directory),\n\t\t\t\tsource: join(options.buildDirectory, directory)\n\t\t\t}))\n\t\t\t\t.filter(({ source }) => existsSync(source))\n\t\t\t\t.map(({ destination: assetDestination, source }) =>\n\t\t\t\t\tcp(source, assetDestination, { recursive: true })\n\t\t\t\t)\n\t\t);\n\t\tconst copiedDependencies = new Set<string>();\n\t\tconst pages = await Promise.all(\n\t\t\toptions.artifact.pages.map((page) =>\n\t\t\t\tcopyClientPage(\n\t\t\t\t\tpage,\n\t\t\t\t\toptions.buildDirectory,\n\t\t\t\t\tstaging,\n\t\t\t\t\tcopiedDependencies\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t\tconst manifest = {\n\t\t\tappBuild: options.artifact.appBuild,\n\t\t\t...(options.auth ? { auth: options.auth } : {}),\n\t\t\tappId: options.config.appId,\n\t\t\tappName: options.config.appName,\n\t\t\tdeepLinkHosts: options.config.deepLinkHosts,\n\t\t\tdeepLinkScheme: options.config.deepLinkScheme,\n\t\t\tdeviceCapabilities: options.deviceCapabilities.capabilities,\n\t\t\tentry: options.config.entry,\n\t\t\tformat: ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\t\t\tpages,\n\t\t\tproductionOrigin: options.config.productionOrigin,\n\t\t\troutes: options.artifact.routes,\n\t\t\truntime: options.artifact.runtime,\n\t\t\t...(options.sync\n\t\t\t\t? {\n\t\t\t\t\t\tsync: {\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\tendpoint: new URL(\n\t\t\t\t\t\t\t\t\t'/__absolute/sync/background',\n\t\t\t\t\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t\t\t\t\t).href,\n\t\t\t\t\t\t\t\tintervalMinutes: 15\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsocketTickets: true as const,\n\t\t\t\t\t\t\tstorageSchema: options.syncSchema ?? {\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{ id: '@absolutejs/app', version: 1 }\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t: {})\n\t\t} satisfies AbsoluteMobileClientManifest;\n\t\tawait Promise.all([\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, MANIFEST_FILE),\n\t\t\t\t`${JSON.stringify(manifest, null, '\\t')}\\n`\n\t\t\t),\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, INDEX_FILE),\n\t\t\t\tindexHtml(\n\t\t\t\t\toptions.config.appName,\n\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t)\n\t\t\t),\n\t\t\tbuildShellBootstrap(\n\t\t\t\tstaging,\n\t\t\t\toptions.auth !== undefined,\n\t\t\t\toptions.auth !== undefined && options.sync === true,\n\t\t\t\t`absolutejs.${options.auth?.clientId ?? options.config.appId}.`,\n\t\t\t\toptions.config.engine,\n\t\t\t\toptions.deviceCapabilities,\n\t\t\t\toptions.projectRoot\n\t\t\t)\n\t\t]);\n\t\tawait installBundle(staging, destination);\n\n\t\treturn manifest;\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\n\t\tthrow error;\n\t}\n};\n",
|
|
38
|
+
"import {\n\tcp,\n\tcopyFile,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { basename, dirname, extname, join, relative, resolve } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport type {\n\tAbsoluteMobileCompatibilityArtifact,\n\tAbsoluteMobileCompatibilityPage\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport {\n\tABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\ttype AbsoluteMobileClientManifest\n} from './transport';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';\n\nexport type AbsoluteCapacitorBundleOptions = {\n\tartifact: AbsoluteMobileCompatibilityArtifact;\n\tauth?: AbsoluteMobileAuthManifest;\n\tbuildDirectory: string;\n\tconfig: NormalizedAbsoluteMobileConfig;\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan;\n\tprojectRoot: string;\n\truntimeFingerprint: string;\n\tsync?: boolean;\n\tsyncSchema?: SyncLocalStoreSchemaBundle;\n};\n\nconst MANIFEST_FILE = 'absolute-mobile-manifest.json';\nconst BOOTSTRAP_FILE = 'absolute-mobile-bootstrap.js';\nconst INDEX_FILE = 'index.html';\nconst CLIENT_CSS_DEPENDENCY_PATTERN =\n\t/(?:@import\\s+(?:url\\(\\s*)?|url\\(\\s*)[\"']?((?:\\/|\\.\\.\\/|\\.\\/)[^\"')\\s]+)[\"']?\\s*\\)?/gu;\nconst CLIENT_MARKUP_DEPENDENCY_PATTERN =\n\t/<(?:script\\b[^>]*\\bsrc|link\\b[^>]*\\bhref|img\\b[^>]*\\bsrc|source\\b[^>]*\\bsrcset)\\s*=\\s*[\"']((?:\\/|\\.\\.\\/|\\.\\/)[^\"',\\s]+)/giu;\nconst CAPACITOR_CLIENT_FRAMEWORKS = new Set([\n\t'angular',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\nconst CLIENT_ASSET_DIRECTORIES = ['assets', 'html', 'htmx', 'indexes'] as const;\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst shellBootstrapModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellBootstrap.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile shell bootstrap module is missing.');\n};\n\nconst shellAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile auth shell module is missing.');\n};\n\nconst shellExpoAuthModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellExpoAuth.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo auth bridge module is missing.');\n};\n\nconst shellSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile Sync shell module is missing.');\n};\n\nconst shellExpoSyncModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellExpoSync.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo Sync bridge module is missing.');\n};\n\nconst shellPushModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellPush.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile push shell module is missing.');\n};\n\nconst shellExpoDevicesModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) =>\n\t\t\tjoin(import.meta.dir, `shellExpoDevices.${extension}`)\n\t\t)\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS Expo device bridge module is missing.');\n};\n\nconst shellUpdateModule = () => {\n\tconst candidate = ['js', 'ts']\n\t\t.map((extension) => join(import.meta.dir, `shellUpdate.${extension}`))\n\t\t.find(existsSync);\n\tif (candidate) return candidate;\n\n\tthrow new TypeError('AbsoluteJS mobile update shell module is missing.');\n};\n\nconst escapeHtml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>')\n\t\t.replaceAll('\"', '"');\n\nconst contentSecurityPolicy = (productionOrigin: string) => {\n\tconst backend = new URL(productionOrigin);\n\tconst socketOrigin = `${backend.protocol === 'https:' ? 'wss:' : 'ws:'}//${backend.host}`;\n\n\treturn [\n\t\t\"default-src 'self' data: blob: https:\",\n\t\t\"base-uri 'none'\",\n\t\t\"object-src 'none'\",\n\t\t\"script-src 'self'\",\n\t\t\"style-src 'self' 'unsafe-inline'\",\n\t\t`connect-src 'self' ${backend.origin} ${socketOrigin}`,\n\t\t\"form-action 'none'\"\n\t].join('; ');\n};\n\nconst indexHtml = (\n\tappName: string,\n\tproductionOrigin: string\n) => `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<meta name=\"viewport\" content=\"width=device-width,initial-scale=1,viewport-fit=cover\">\n\t\t<meta name=\"color-scheme\" content=\"light dark\">\n\t\t<meta http-equiv=\"Content-Security-Policy\" content=\"${escapeHtml(contentSecurityPolicy(productionOrigin))}\">\n\t\t<title>${escapeHtml(appName)}</title>\n\t</head>\n\t<body>\n\t\t<main id=\"absolute-mobile-status\" role=\"status\">Starting…</main>\n\t\t<script type=\"module\" src=\"./${BOOTSTRAP_FILE}\"></script>\n\t</body>\n</html>\n`;\n\nconst sourceAssetPath = (buildDirectory: string, bundlePath: string) => {\n\tconst root = resolve(buildDirectory);\n\tconst asset = resolve(root, bundlePath.replace(/^\\/+/, ''));\n\tif (!asset.startsWith(`${root}/`)) {\n\t\tthrow new TypeError('Mobile page bundle escaped the build directory.');\n\t}\n\n\treturn asset;\n};\n\nconst importEntryTarget = (entry: unknown) => {\n\tif (typeof entry === 'string') return entry;\n\tif (typeof entry === 'object' && entry !== null)\n\t\treturn Reflect.get(entry, 'import');\n\n\treturn undefined;\n};\n\nconst resolveProjectImport = async (projectRoot: string, specifier: string) => {\n\tconst segments = specifier.split('/');\n\tconst packageName = specifier.startsWith('@')\n\t\t? segments.slice(0, 2).join('/')\n\t\t: (segments[0] ?? '');\n\tconst subpath = specifier.slice(packageName.length);\n\tconst packageDirectory = join(\n\t\tresolve(projectRoot),\n\t\t'node_modules',\n\t\tpackageName\n\t);\n\tconst manifest: unknown = JSON.parse(\n\t\tawait readFile(join(packageDirectory, 'package.json'), 'utf8')\n\t);\n\tconst exports =\n\t\ttypeof manifest === 'object' && manifest !== null\n\t\t\t? Reflect.get(manifest, 'exports')\n\t\t\t: undefined;\n\tconst entry =\n\t\ttypeof exports === 'object' && exports !== null\n\t\t\t? Reflect.get(exports, subpath ? `.${subpath}` : '.')\n\t\t\t: undefined;\n\tconst target = importEntryTarget(entry);\n\tif (typeof target !== 'string' || !target.startsWith('./'))\n\t\tthrow new TypeError(`${specifier} does not publish an import entry.`);\n\tconst resolved = resolve(packageDirectory, target);\n\tif (!resolved.startsWith(`${resolve(packageDirectory)}/`))\n\t\tthrow new TypeError(`${specifier} has an unsafe import entry.`);\n\n\treturn resolved;\n};\n\nconst buildShellBootstrap = async (\n\tstaging: string,\n\tauth: boolean,\n\tsync: boolean,\n\tstoragePrefix: string,\n\tengine: 'capacitor' | 'expo',\n\tupdates: boolean,\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan,\n\tprojectRoot: string\n) => {\n\tconst capacitor = engine !== 'expo';\n\tconst shellCapabilities = capacitor ? deviceCapabilities.capabilities : [];\n\tconst modulePath = shellBootstrapModule();\n\tconst authFactory = capacitor\n\t\t? 'createAbsoluteMobileShellAuth'\n\t\t: 'createAbsoluteExpoShellAuth';\n\tconst syncFactory = capacitor\n\t\t? 'installAbsoluteMobileShellSync'\n\t\t: 'installAbsoluteExpoShellSync';\n\tconst authImport = auth\n\t\t? `import { ${authFactory} } from ${JSON.stringify(capacitor ? shellAuthModule() : shellExpoAuthModule())};\\n`\n\t\t: '';\n\tconst syncImport = sync\n\t\t? `import { ${syncFactory} } from ${JSON.stringify(capacitor ? shellSyncModule() : shellExpoSyncModule())};\\n`\n\t\t: '';\n\tconst pushIndex = shellCapabilities.indexOf('pushNotifications');\n\tconst push = pushIndex !== -1;\n\tconst pushImport = push\n\t\t? `import { createAbsoluteMobileShellPush } from ${JSON.stringify(shellPushModule())};\\n`\n\t\t: '';\n\tconst updateImport = updates\n\t\t? `import { installAbsoluteMobileShellUpdates } from ${JSON.stringify(shellUpdateModule())};\\n`\n\t\t: '';\n\tconst capabilityImports = (\n\t\tawait Promise.all(\n\t\t\tshellCapabilities.map(async (name, index) => {\n\t\t\t\tconst provider = deviceCapabilities.providers[name];\n\t\t\t\tif (!provider)\n\t\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\t`Missing device capability provider ${name}.`\n\t\t\t\t\t);\n\n\t\t\t\treturn `import { ${provider.factory} as absoluteDeviceCapability${index} } from ${JSON.stringify(await resolveProjectImport(projectRoot, provider.module))};`;\n\t\t\t})\n\t\t)\n\t).join('\\n');\n\tconst pushSetup = push\n\t\t? `const absoluteMobilePush = createAbsoluteMobileShellPush();\\nconst absoluteMobilePushCapability = absoluteDeviceCapability${pushIndex}(absoluteMobilePush.capabilityOptions);\\n`\n\t\t: '';\n\tconst capabilityOptions = shellCapabilities\n\t\t.map(\n\t\t\t(name, index) =>\n\t\t\t\t`${JSON.stringify(name)}: ${name === 'pushNotifications' ? 'absoluteMobilePushCapability' : `absoluteDeviceCapability${index}()`}`\n\t\t)\n\t\t.join(', ');\n\tconst entryPath = join(staging, '.absolute-mobile-entry.ts');\n\tconst baseAdapterModule = capacitor\n\t\t? await resolveProjectImport(\n\t\t\t\tprojectRoot,\n\t\t\t\t'@absolutejs/devices-capacitor'\n\t\t\t)\n\t\t: shellExpoDevicesModule();\n\tconst adapterImport = capacitor\n\t\t? `import { installCapacitorDeviceAdapterIfNative } from ${JSON.stringify(baseAdapterModule)};`\n\t\t: `import { createAbsoluteExpoBridgeFetch, installAbsoluteExpoWebDeviceAdapter } from ${JSON.stringify(baseAdapterModule)};`;\n\tconst adapterInstall = capacitor\n\t\t? `installCapacitorDeviceAdapterIfNative({ storagePrefix: ${JSON.stringify(storagePrefix)}${capabilityOptions ? `, ${capabilityOptions}` : ''} });`\n\t\t: `installAbsoluteExpoWebDeviceAdapter(${JSON.stringify(deviceCapabilities.capabilities)});`;\n\tconst shellOptionProperties: string[] = [];\n\tif (push) {\n\t\tshellOptionProperties.push(\n\t\t\t'createAuth: (config, options) => createAbsoluteMobileShellAuth(config, options)',\n\t\t\t'beforeSignOut: absoluteMobilePush.beforeSignOut',\n\t\t\t'connectPush: (auth) => absoluteMobilePush.connect(auth, absoluteMobilePushCapability)'\n\t\t);\n\t} else if (auth) shellOptionProperties.push(`createAuth: ${authFactory}`);\n\telse if (!capacitor)\n\t\tshellOptionProperties.push(\n\t\t\t'createFetch: createAbsoluteExpoBridgeFetch'\n\t\t);\n\tif (sync) shellOptionProperties.push(`installSync: ${syncFactory}`);\n\tif (updates)\n\t\tshellOptionProperties.push(\n\t\t\t'installUpdates: installAbsoluteMobileShellUpdates'\n\t\t);\n\tconst shellOptions = `{ ${shellOptionProperties.join(', ')} }`;\n\tawait writeFile(\n\t\tentryPath,\n\t\t`import { startAbsoluteMobileShell } from ${JSON.stringify(modulePath)};\\n${adapterImport}\\n${authImport}${syncImport}${pushImport}${updateImport}${capabilityImports}\\n${pushSetup}${adapterInstall}\\nvoid startAbsoluteMobileShell(${shellOptions});\\n`\n\t);\n\tconst build = await Bun.build({\n\t\tentrypoints: [entryPath],\n\t\tminify: true,\n\t\toutdir: staging,\n\t\ttarget: 'browser'\n\t});\n\tif (!build.success || build.outputs.length !== 1) {\n\t\tthrow new AggregateError(\n\t\t\tbuild.logs,\n\t\t\t'Failed to build the AbsoluteJS Capacitor shell.'\n\t\t);\n\t}\n\tawait rename(build.outputs[0]?.path ?? '', join(staging, BOOTSTRAP_FILE));\n\tawait rm(entryPath, { force: true });\n};\n\nconst removePreviousBundle = async (backup: string, moved: boolean) => {\n\tif (!moved) return;\n\tawait rm(backup, { force: true, recursive: true });\n};\n\nconst restorePreviousBundle = async (\n\tbackup: string,\n\tdestination: string,\n\tmoved: boolean\n) => {\n\tif (!moved) return;\n\tawait rename(backup, destination);\n};\n\nconst installBundle = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tlet movedPrevious = false;\n\ttry {\n\t\tawait rename(destination, backup);\n\t\tmovedPrevious = true;\n\t} catch (error) {\n\t\tif (!errorHasCode(error, 'ENOENT')) throw error;\n\t}\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tawait removePreviousBundle(backup, movedPrevious);\n\t} catch (error) {\n\t\tawait restorePreviousBundle(backup, destination, movedPrevious);\n\n\t\tthrow error;\n\t}\n};\n\nconst copyClientPage = async (\n\tpage: AbsoluteMobileCompatibilityPage,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopiedDependencies: Set<string>\n) => {\n\tif (!CAPACITOR_CLIENT_FRAMEWORKS.has(page.framework)) {\n\t\tthrow new TypeError(\n\t\t\t`Capacitor client rendering does not yet support ${page.framework} page ${page.pageId}.`\n\t\t);\n\t}\n\tconst extension = extname(page.bundlePath) || '.js';\n\tconst localBundlePath = `./pages/${page.bundleHash}${extension}`;\n\tconst source = sourceAssetPath(buildDirectory, page.bundlePath);\n\tawait copyFile(source, join(staging, localBundlePath));\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopiedDependencies\n\t);\n\n\tlet localStylePath: string | undefined;\n\tif (page.styleBundlePath && page.styleBundleHash) {\n\t\tconst styleExtension = extname(page.styleBundlePath) || '.css';\n\t\tlocalStylePath = `./styles/${page.styleBundleHash}${styleExtension}`;\n\t\tconst styleSource = sourceAssetPath(\n\t\t\tbuildDirectory,\n\t\t\tpage.styleBundlePath\n\t\t);\n\t\tawait mkdir(dirname(join(staging, localStylePath)), {\n\t\t\trecursive: true\n\t\t});\n\t\tawait copyFile(styleSource, join(staging, localStylePath));\n\t\tawait copyAbsoluteClientDependencies(\n\t\t\tstyleSource,\n\t\t\tbuildDirectory,\n\t\t\tstaging,\n\t\t\tcopiedDependencies\n\t\t);\n\t}\n\n\treturn {\n\t\t...page,\n\t\tlocalBundlePath,\n\t\t...(localStylePath ? { localStylePath } : {})\n\t};\n};\n\nconst absoluteClientImports = async (\n\tsourcePath: string,\n\tbuildDirectory: string\n) => {\n\tconst source = await readFile(sourcePath, 'utf8');\n\tconst extension = extname(sourcePath).toLowerCase();\n\tlet scriptLoader: 'js' | 'jsx' | 'ts' | 'tsx' | undefined;\n\tif (extension === '.tsx') scriptLoader = 'tsx';\n\telse if (extension === '.ts') scriptLoader = 'ts';\n\telse if (extension === '.jsx') scriptLoader = 'jsx';\n\telse if (['.js', '.mjs', '.cjs'].includes(extension)) scriptLoader = 'js';\n\tconst scriptImports = scriptLoader\n\t\t? new Bun.Transpiler({ loader: scriptLoader })\n\t\t\t\t.scanImports(source)\n\t\t\t\t.map(({ path }) => path)\n\t\t: [];\n\tconst cssImports =\n\t\textension === '.css'\n\t\t\t? [...source.matchAll(CLIENT_CSS_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\tconst markupImports =\n\t\textension === '.html'\n\t\t\t? [...source.matchAll(CLIENT_MARKUP_DEPENDENCY_PATTERN)].flatMap(\n\t\t\t\t\t(match) => match[1] ?? []\n\t\t\t\t)\n\t\t\t: [];\n\n\treturn [...scriptImports, ...cssImports, ...markupImports].flatMap(\n\t\t(specifier) => {\n\t\t\tif (!specifier) return [];\n\t\t\tif (\n\t\t\t\t!specifier.startsWith('/') &&\n\t\t\t\t!specifier.startsWith('./') &&\n\t\t\t\t!specifier.startsWith('../')\n\t\t\t) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst clean = specifier.split(/[?#]/u, 1)[0] ?? specifier;\n\t\t\tif (clean.startsWith('/')) return [clean];\n\t\t\tconst resolved = resolve(dirname(sourcePath), clean);\n\t\t\tconst root = resolve(buildDirectory);\n\t\t\tconst relativePath = relative(root, resolved).replaceAll('\\\\', '/');\n\t\t\tif (relativePath === '..' || relativePath.startsWith('../')) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Mobile client dependency escaped the build directory: ${specifier}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [`/${relativePath}`];\n\t\t}\n\t);\n};\n\nconst copyAbsoluteClientDependency = async (\n\tspecifier: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tif (copied.has(specifier)) return;\n\tcopied.add(specifier);\n\tconst source = sourceAssetPath(buildDirectory, specifier);\n\tconst destination = join(staging, specifier.replace(/^\\/+/, ''));\n\tawait mkdir(dirname(destination), { recursive: true });\n\tawait copyFile(source, destination);\n\tawait copyAbsoluteClientDependencies(\n\t\tsource,\n\t\tbuildDirectory,\n\t\tstaging,\n\t\tcopied\n\t);\n};\n\nconst copyAbsoluteClientDependencies = async (\n\tsourcePath: string,\n\tbuildDirectory: string,\n\tstaging: string,\n\tcopied: Set<string>\n) => {\n\tconst dependencies = await absoluteClientImports(\n\t\tsourcePath,\n\t\tbuildDirectory\n\t);\n\tawait Promise.all(\n\t\tdependencies.map((specifier) =>\n\t\t\tcopyAbsoluteClientDependency(\n\t\t\t\tspecifier,\n\t\t\t\tbuildDirectory,\n\t\t\t\tstaging,\n\t\t\t\tcopied\n\t\t\t)\n\t\t)\n\t);\n};\n\nexport const materializeAbsoluteCapacitorWebBundle = async (\n\toptions: AbsoluteCapacitorBundleOptions\n) => {\n\tif (\n\t\t!resolveAbsoluteMobileRoute(\n\t\t\toptions.artifact.routes,\n\t\t\tnew URL(options.config.entry, 'https://absolute.invalid').pathname\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t`mobile.entry ${options.config.entry} is not a captured mobile page route.`\n\t\t);\n\t}\n\tconst destination = options.config.bundleDirectory;\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\ttry {\n\t\tconst pageDirectory = join(staging, 'pages');\n\t\tawait mkdir(pageDirectory, { recursive: true });\n\t\tawait Promise.all(\n\t\t\tCLIENT_ASSET_DIRECTORIES.map((directory) => ({\n\t\t\t\tdestination: join(staging, directory),\n\t\t\t\tsource: join(options.buildDirectory, directory)\n\t\t\t}))\n\t\t\t\t.filter(({ source }) => existsSync(source))\n\t\t\t\t.map(({ destination: assetDestination, source }) =>\n\t\t\t\t\tcp(source, assetDestination, { recursive: true })\n\t\t\t\t)\n\t\t);\n\t\tconst copiedDependencies = new Set<string>();\n\t\tconst pages = await Promise.all(\n\t\t\toptions.artifact.pages.map((page) =>\n\t\t\t\tcopyClientPage(\n\t\t\t\t\tpage,\n\t\t\t\t\toptions.buildDirectory,\n\t\t\t\t\tstaging,\n\t\t\t\t\tcopiedDependencies\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t\tconst manifest = {\n\t\t\tappBuild: options.artifact.appBuild,\n\t\t\t...(options.auth ? { auth: options.auth } : {}),\n\t\t\tappId: options.config.appId,\n\t\t\tappName: options.config.appName,\n\t\t\tdeepLinkHosts: options.config.deepLinkHosts,\n\t\t\tdeepLinkScheme: options.config.deepLinkScheme,\n\t\t\tdeviceCapabilities: options.deviceCapabilities.capabilities,\n\t\t\tentry: options.config.entry,\n\t\t\tformat: ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT,\n\t\t\tnativeRuntime: options.runtimeFingerprint,\n\t\t\tpages,\n\t\t\tproductionOrigin: options.config.productionOrigin,\n\t\t\troutes: options.artifact.routes,\n\t\t\truntime: options.artifact.runtime,\n\t\t\t...(options.config.updates\n\t\t\t\t? { updates: options.config.updates }\n\t\t\t\t: {}),\n\t\t\t...(options.sync\n\t\t\t\t? {\n\t\t\t\t\t\tsync: {\n\t\t\t\t\t\t\tbackground: {\n\t\t\t\t\t\t\t\tendpoint: new URL(\n\t\t\t\t\t\t\t\t\t'/__absolute/sync/background',\n\t\t\t\t\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t\t\t\t\t).href,\n\t\t\t\t\t\t\t\tintervalMinutes: 15\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tsocketTickets: true as const,\n\t\t\t\t\t\t\tstorageSchema: options.syncSchema ?? {\n\t\t\t\t\t\t\t\tcomponents: [\n\t\t\t\t\t\t\t\t\t{ id: '@absolutejs/app', version: 1 }\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t: {})\n\t\t} satisfies AbsoluteMobileClientManifest;\n\t\tawait Promise.all([\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, MANIFEST_FILE),\n\t\t\t\t`${JSON.stringify(manifest, null, '\\t')}\\n`\n\t\t\t),\n\t\t\twriteFile(\n\t\t\t\tjoin(staging, INDEX_FILE),\n\t\t\t\tindexHtml(\n\t\t\t\t\toptions.config.appName,\n\t\t\t\t\toptions.config.productionOrigin\n\t\t\t\t)\n\t\t\t),\n\t\t\tbuildShellBootstrap(\n\t\t\t\tstaging,\n\t\t\t\toptions.auth !== undefined,\n\t\t\t\toptions.auth !== undefined && options.sync === true,\n\t\t\t\t`absolutejs.${options.auth?.clientId ?? options.config.appId}.`,\n\t\t\t\toptions.config.engine,\n\t\t\t\toptions.config.engine === 'capacitor' &&\n\t\t\t\t\toptions.config.updates !== undefined,\n\t\t\t\toptions.deviceCapabilities,\n\t\t\t\toptions.projectRoot\n\t\t\t)\n\t\t]);\n\t\tawait installBundle(staging, destination);\n\n\t\treturn manifest;\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\n\t\tthrow error;\n\t}\n};\n",
|
|
39
39
|
"import type { AbsoluteMobileCompatibilityRoute } from './releaseArtifact';\n\nconst REGEXP_SPECIAL_CHARACTERS = /[.*+?^${}()|[\\]\\\\]/g;\n\nconst routeSegmentPattern = (segment: string) => {\n\tif (segment === '*') return '.*';\n\tif (segment.startsWith(':') && segment.endsWith('?')) return '[^/]*';\n\tif (segment.startsWith(':')) return '[^/]+';\n\n\treturn segment.replace(REGEXP_SPECIAL_CHARACTERS, '\\\\$&');\n};\n\nexport const matchesAbsoluteMobileRoutePattern = (\n\tpattern: string,\n\tpathname: string\n) => {\n\tconst expression = pattern.split('/').map(routeSegmentPattern).join('/');\n\n\treturn new RegExp(`^${expression}/?$`).test(pathname);\n};\n\nexport const resolveAbsoluteMobileRoute = (\n\troutes: readonly AbsoluteMobileCompatibilityRoute[],\n\tpathname: string,\n\tmethod: 'GET' | 'HEAD' = 'GET'\n) =>\n\troutes.find(\n\t\t(route) =>\n\t\t\troute.method === method &&\n\t\t\tmatchesAbsoluteMobileRoutePattern(route.pattern, pathname)\n\t);\n",
|
|
40
40
|
"import type { AbsoluteMobileCompatibilityPage } from './releaseArtifact';\n\nexport type AbsoluteMobileProducerContext = {\n\tpage: AbsoluteMobileCompatibilityPage;\n\treleaseId: string;\n};\n\nexport const ABSOLUTE_MOBILE_PRODUCER_STORAGE_KEY = Symbol.for(\n\t'absolutejs.mobileProducerAsyncLocalStorage'\n);\n\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\n\nconst isCompatibilityPage = (\n\tvalue: unknown\n): value is AbsoluteMobileCompatibilityPage =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t'bundleHash' in value &&\n\ttypeof value.bundleHash === 'string' &&\n\t'contract' in value &&\n\ttypeof value.contract === 'string' &&\n\t'framework' in value &&\n\ttypeof value.framework === 'string' &&\n\tframeworks.has(value.framework) &&\n\t'pageId' in value &&\n\ttypeof value.pageId === 'string' &&\n\t'propsSchemaHash' in value &&\n\ttypeof value.propsSchemaHash === 'string';\n\nexport const getCurrentAbsoluteMobileProducerContext = () => {\n\tconst value: unknown = Reflect.get(\n\t\tglobalThis,\n\t\tABSOLUTE_MOBILE_PRODUCER_STORAGE_KEY\n\t);\n\tif (\n\t\ttypeof value !== 'object' ||\n\t\tvalue === null ||\n\t\t!('getStore' in value) ||\n\t\ttypeof value.getStore !== 'function'\n\t) {\n\t\treturn undefined;\n\t}\n\tconst context: unknown = value.getStore();\n\tif (\n\t\ttypeof context !== 'object' ||\n\t\tcontext === null ||\n\t\t!('page' in context) ||\n\t\t!isCompatibilityPage(context.page) ||\n\t\t!('releaseId' in context) ||\n\t\ttypeof context.releaseId !== 'string'\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn { page: context.page, releaseId: context.releaseId };\n};\n",
|
|
41
41
|
"import {\n\tgetCurrentAbsoluteMobileProducerContext,\n\ttype AbsoluteMobileProducerContext\n} from './producerContextState';\n\nexport const ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE =\n\t'application/vnd.absolute.page+json';\nexport const ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION = 1 as const;\nexport const ABSOLUTE_NATIVE_ROUTE_DATA_MEDIA_TYPE =\n\t'application/vnd.absolute.native-route+json';\nconst BAD_REQUEST_STATUS = 400;\nconst OK_STATUS = 200;\nconst SERVER_ERROR_STATUS = 500;\nconst UPGRADE_REQUIRED_STATUS = 426;\n\nexport const MOBILE_PAGE_REQUEST_HEADERS = {\n\tappBuild: 'x-absolute-mobile-app-build',\n\tpageBundle: 'x-absolute-mobile-page-bundle',\n\tpageContracts: 'x-absolute-mobile-page-contracts',\n\tpageId: 'x-absolute-mobile-page-id',\n\tprotocol: 'x-absolute-mobile-protocol',\n\truntime: 'x-absolute-mobile-runtime'\n} as const;\n\nexport type AbsoluteMobilePageFramework =\n\t| 'angular'\n\t| 'ember'\n\t| 'html'\n\t| 'htmx'\n\t| 'react'\n\t| 'svelte'\n\t| 'vue';\n\nexport type AbsoluteMobilePageClient = {\n\tappBuild: string;\n\tpageBundle: string;\n\tpageContracts: string[];\n\tpageId: string;\n\tprotocol: number;\n\truntime: string;\n};\n\nexport type AbsoluteMobilePageRepresentation<Props> = {\n\t/** Stable data contract understood by an embedded page bundle. */\n\tcontract: string;\n\t/**\n\t * Adapts the current route props to an older compatible contract. The\n\t * current representation normally uses the identity function.\n\t */\n\tmapProps: (props: Props) => Record<string, unknown>;\n};\n\nexport type AbsoluteMobilePageCompatibility<Props> = {\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\t/** Newest representation first, followed by retained compatibility forms. */\n\trepresentations: readonly AbsoluteMobilePageRepresentation<Props>[];\n\t/** Current runtime plus every retained compatible runtime generation. */\n\truntimes: readonly string[];\n};\n\nexport type AbsoluteMobilePageResult = {\n\tkind: 'page';\n\tcontract: string;\n\tframework: AbsoluteMobilePageFramework;\n\tpageId: string;\n\tprops: Record<string, unknown>;\n\tstatus: number;\n};\n\nexport type AbsoluteMobileUpgradeReason =\n\t| 'app-release'\n\t| 'page-contract'\n\t| 'protocol'\n\t| 'runtime';\n\nexport type AbsoluteMobileUpgradeRequiredResult = {\n\tkind: 'upgrade-required';\n\treason: AbsoluteMobileUpgradeReason;\n\tpageId: string;\n\tsupportedContracts?: string[];\n\tsupportedRuntimes?: string[];\n};\n\nexport type AbsoluteMobileInvalidRequestResult = {\n\tkind: 'invalid-request';\n\tmessage: string;\n};\n\nexport type AbsoluteMobilePageErrorResult = {\n\tcode: 'representation-failed';\n\tkind: 'error';\n\tpageId: string;\n\tstatus: typeof SERVER_ERROR_STATUS;\n};\n\nexport type AbsoluteMobilePageEnvelope = {\n\tprotocol: typeof ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION;\n\tresponse:\n\t\t| AbsoluteMobilePageErrorResult\n\t\t| AbsoluteMobileInvalidRequestResult\n\t\t| AbsoluteMobilePageResult\n\t\t| AbsoluteMobileUpgradeRequiredResult;\n};\n\ntype ParsedMobilePageRequest =\n\t| { kind: 'not-mobile' }\n\t| { kind: 'invalid'; message: string }\n\t| { kind: 'mobile'; client: AbsoluteMobilePageClient };\n\ntype FinalizeAbsoluteMobilePageInput<Props> = {\n\tcompatibility: AbsoluteMobilePageCompatibility<Props>;\n\tprops: Props;\n\trequest: Request | undefined;\n\tstatus?: number;\n};\n\nconst parseMediaType = (value: string) =>\n\tvalue.split(';', 1)[0]?.trim().toLowerCase();\n\nexport const acceptsAbsoluteMobilePage = (request: Request | undefined) => {\n\tif (!request) return false;\n\n\treturn (request.headers.get('accept') ?? '')\n\t\t.split(',')\n\t\t.some(\n\t\t\t(value) => parseMediaType(value) === ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE\n\t\t);\n};\n\nexport const acceptsAbsoluteNativeRouteData = (\n\trequest: Request | undefined\n) => {\n\tif (!request) return false;\n\n\treturn (request.headers.get('accept') ?? '')\n\t\t.split(',')\n\t\t.some(\n\t\t\t(value) =>\n\t\t\t\tparseMediaType(value) === ABSOLUTE_NATIVE_ROUTE_DATA_MEDIA_TYPE\n\t\t);\n};\n\nconst readRequiredHeader = (request: Request, name: string) => {\n\tconst value = request.headers.get(name)?.trim();\n\n\treturn value ? value : undefined;\n};\n\nexport const parseAbsoluteMobilePageRequest = (\n\trequest: Request | undefined\n): ParsedMobilePageRequest => {\n\tif (!request || !acceptsAbsoluteMobilePage(request)) {\n\t\treturn { kind: 'not-mobile' };\n\t}\n\n\tconst protocolValue = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.protocol\n\t);\n\tconst runtime = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.runtime\n\t);\n\tconst appBuild = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.appBuild\n\t);\n\tconst pageBundle = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.pageBundle\n\t);\n\tconst pageContractsValue = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.pageContracts\n\t);\n\tconst pageId = readRequiredHeader(\n\t\trequest,\n\t\tMOBILE_PAGE_REQUEST_HEADERS.pageId\n\t);\n\n\tif (!protocolValue || !/^\\d+$/.test(protocolValue)) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing or invalid ${MOBILE_PAGE_REQUEST_HEADERS.protocol} header.`\n\t\t};\n\t}\n\tif (!runtime) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.runtime} header.`\n\t\t};\n\t}\n\tif (!appBuild) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.appBuild} header.`\n\t\t};\n\t}\n\tif (!pageBundle) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.pageBundle} header.`\n\t\t};\n\t}\n\tif (!pageContractsValue) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.pageContracts} header.`\n\t\t};\n\t}\n\tif (!pageId) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `Missing ${MOBILE_PAGE_REQUEST_HEADERS.pageId} header.`\n\t\t};\n\t}\n\n\tconst pageContracts = [\n\t\t...new Set(\n\t\t\tpageContractsValue\n\t\t\t\t.split(',')\n\t\t\t\t.map((value) => value.trim())\n\t\t\t\t.filter(Boolean)\n\t\t)\n\t];\n\tif (pageContracts.length === 0) {\n\t\treturn {\n\t\t\tkind: 'invalid',\n\t\t\tmessage: `${MOBILE_PAGE_REQUEST_HEADERS.pageContracts} must contain at least one contract.`\n\t\t};\n\t}\n\n\treturn {\n\t\tclient: {\n\t\t\tappBuild,\n\t\t\tpageBundle,\n\t\t\tpageContracts,\n\t\t\tpageId,\n\t\t\tprotocol: Number(protocolValue),\n\t\t\truntime\n\t\t},\n\t\tkind: 'mobile'\n\t};\n};\n\nconst responseHeaders = () => {\n\tconst headers = new Headers({\n\t\t'cache-control': 'no-store',\n\t\t'content-type': `${ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE}; version=${ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION}`\n\t});\n\theaderVaryValues.forEach((value) => headers.append('vary', value));\n\n\treturn headers;\n};\n\nconst headerVaryValues = [\n\t'Accept',\n\tMOBILE_PAGE_REQUEST_HEADERS.protocol,\n\tMOBILE_PAGE_REQUEST_HEADERS.runtime,\n\tMOBILE_PAGE_REQUEST_HEADERS.appBuild,\n\tMOBILE_PAGE_REQUEST_HEADERS.pageBundle,\n\tMOBILE_PAGE_REQUEST_HEADERS.pageContracts,\n\tMOBILE_PAGE_REQUEST_HEADERS.pageId\n];\n\nconst envelopeResponse = (\n\tresponse: AbsoluteMobilePageEnvelope['response'],\n\tstatus: number\n) =>\n\tnew Response(\n\t\tJSON.stringify({\n\t\t\tprotocol: ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\t\t\tresponse\n\t\t} satisfies AbsoluteMobilePageEnvelope),\n\t\t{ headers: responseHeaders(), status }\n\t);\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst normalizeJsonValue = (value: Record<string, unknown>) => {\n\tconst serialized = JSON.stringify(value);\n\tif (serialized === undefined) {\n\t\tthrow new TypeError('Mobile page props must be JSON-serializable.');\n\t}\n\n\tconst parsed: unknown = JSON.parse(serialized);\n\tif (!isRecord(parsed)) {\n\t\tthrow new TypeError('Mobile page props must serialize to an object.');\n\t}\n\n\treturn parsed;\n};\n\nconst finalizeArchivedMobilePage = <Props>(\n\tcontext: AbsoluteMobileProducerContext,\n\tinput: FinalizeAbsoluteMobilePageInput<Props>\n) => {\n\tconst { page } = context;\n\tif (\n\t\tpage.pageId !== input.compatibility.pageId ||\n\t\tpage.framework !== input.compatibility.framework\n\t) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'invalid-request',\n\t\t\t\tmessage:\n\t\t\t\t\t'Archived producer page identity does not match its release artifact.'\n\t\t\t},\n\t\t\tBAD_REQUEST_STATUS\n\t\t);\n\t}\n\n\ttry {\n\t\tconst [currentRepresentation] = input.compatibility.representations;\n\t\tif (!currentRepresentation) {\n\t\t\tthrow new TypeError('Mobile page has no current representation.');\n\t\t}\n\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcontract: page.contract,\n\t\t\t\tframework: page.framework,\n\t\t\t\tkind: 'page',\n\t\t\t\tpageId: page.pageId,\n\t\t\t\tprops: normalizeJsonValue(\n\t\t\t\t\tcurrentRepresentation.mapProps(input.props)\n\t\t\t\t),\n\t\t\t\tstatus: input.status ?? OK_STATUS\n\t\t\t},\n\t\t\tinput.status ?? OK_STATUS\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[Mobile] Archived producer ${context.releaseId} failed for ${page.pageId}:`,\n\t\t\terror\n\t\t);\n\n\t\treturn createAbsoluteMobilePageErrorResponse(page.pageId);\n\t}\n};\n\nconst finalizeAbsoluteNativeRouteDevelopmentPage = <Props>(\n\tinput: FinalizeAbsoluteMobilePageInput<Props>\n) => {\n\tif (process.env.NODE_ENV !== 'development') {\n\t\treturn createAbsoluteMobileInvalidRequestResponse(\n\t\t\t'The native-route development representation is disabled outside development.'\n\t\t);\n\t}\n\tif (input.request?.method !== 'GET') {\n\t\treturn createAbsoluteMobileInvalidRequestResponse(\n\t\t\t'Native-route data requests must use GET.'\n\t\t);\n\t}\n\tif (\n\t\tinput.request.headers.get(MOBILE_PAGE_REQUEST_HEADERS.protocol) !==\n\t\tString(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t) {\n\t\treturn createAbsoluteMobileInvalidRequestResponse(\n\t\t\t`Native-route data requires protocol ${ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION}.`\n\t\t);\n\t}\n\tconst [representation] = input.compatibility.representations;\n\tif (!representation) {\n\t\treturn createAbsoluteMobilePageErrorResponse(\n\t\t\tinput.compatibility.pageId\n\t\t);\n\t}\n\n\ttry {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcontract: representation.contract,\n\t\t\t\tframework: input.compatibility.framework,\n\t\t\t\tkind: 'page',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\tprops: normalizeJsonValue(representation.mapProps(input.props)),\n\t\t\t\tstatus: input.status ?? OK_STATUS\n\t\t\t},\n\t\t\tinput.status ?? OK_STATUS\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[Mobile] Failed to produce development native route ${input.compatibility.pageId}:`,\n\t\t\terror\n\t\t);\n\n\t\treturn createAbsoluteMobilePageErrorResponse(\n\t\t\tinput.compatibility.pageId\n\t\t);\n\t}\n};\n\nexport const createAbsoluteMobileInvalidRequestResponse = (message: string) =>\n\tenvelopeResponse({ kind: 'invalid-request', message }, BAD_REQUEST_STATUS);\n\nexport const createAbsoluteMobilePageErrorResponse = (pageId: string) =>\n\tenvelopeResponse(\n\t\t{\n\t\t\tcode: 'representation-failed',\n\t\t\tkind: 'error',\n\t\t\tpageId,\n\t\t\tstatus: SERVER_ERROR_STATUS\n\t\t},\n\t\tSERVER_ERROR_STATUS\n\t);\n\nexport const createAbsoluteMobileUpgradeResponse = (\n\tresult: AbsoluteMobileUpgradeRequiredResult\n) => envelopeResponse(result, UPGRADE_REQUIRED_STATUS);\n\nexport const finalizeAbsoluteMobilePage = <Props>(\n\tinput: FinalizeAbsoluteMobilePageInput<Props>\n) => {\n\tif (acceptsAbsoluteNativeRouteData(input.request)) {\n\t\treturn finalizeAbsoluteNativeRouteDevelopmentPage(input);\n\t}\n\tconst parsed = parseAbsoluteMobilePageRequest(input.request);\n\tif (parsed.kind === 'not-mobile') return undefined;\n\tif (parsed.kind === 'invalid') {\n\t\treturn envelopeResponse(\n\t\t\t{ kind: 'invalid-request', message: parsed.message },\n\t\t\tBAD_REQUEST_STATUS\n\t\t);\n\t}\n\n\tconst { client } = parsed;\n\tif (client.pageId !== input.compatibility.pageId) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'invalid-request',\n\t\t\t\tmessage: `Requested mobile page ${client.pageId} does not match ${input.compatibility.pageId}.`\n\t\t\t},\n\t\t\tBAD_REQUEST_STATUS\n\t\t);\n\t}\n\tconst producerContext = getCurrentAbsoluteMobileProducerContext();\n\tif (producerContext)\n\t\treturn finalizeArchivedMobilePage(producerContext, input);\n\tif (client.protocol !== ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\treason: 'protocol'\n\t\t\t},\n\t\t\tUPGRADE_REQUIRED_STATUS\n\t\t);\n\t}\n\tif (!input.compatibility.runtimes.includes(client.runtime)) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\treason: 'runtime',\n\t\t\t\tsupportedRuntimes: [...input.compatibility.runtimes]\n\t\t\t},\n\t\t\tUPGRADE_REQUIRED_STATUS\n\t\t);\n\t}\n\n\tconst clientContracts = new Set(client.pageContracts);\n\tconst representation = input.compatibility.representations.find(\n\t\t({ contract }) => clientContracts.has(contract)\n\t);\n\tif (!representation) {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tkind: 'upgrade-required',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\treason: 'page-contract',\n\t\t\t\tsupportedContracts: input.compatibility.representations.map(\n\t\t\t\t\t({ contract }) => contract\n\t\t\t\t)\n\t\t\t},\n\t\t\tUPGRADE_REQUIRED_STATUS\n\t\t);\n\t}\n\n\ttry {\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcontract: representation.contract,\n\t\t\t\tframework: input.compatibility.framework,\n\t\t\t\tkind: 'page',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\tprops: normalizeJsonValue(representation.mapProps(input.props)),\n\t\t\t\tstatus: input.status ?? OK_STATUS\n\t\t\t},\n\t\t\tinput.status ?? OK_STATUS\n\t\t);\n\t} catch (error) {\n\t\tconsole.error(\n\t\t\t`[Mobile] Failed to produce ${input.compatibility.pageId} representation ${representation.contract}:`,\n\t\t\terror\n\t\t);\n\n\t\treturn envelopeResponse(\n\t\t\t{\n\t\t\t\tcode: 'representation-failed',\n\t\t\t\tkind: 'error',\n\t\t\t\tpageId: input.compatibility.pageId,\n\t\t\t\tstatus: SERVER_ERROR_STATUS\n\t\t\t},\n\t\t\tSERVER_ERROR_STATUS\n\t\t);\n\t}\n};\n",
|
|
42
42
|
"import {\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\ttype AbsoluteMobilePageEnvelope,\n\ttype AbsoluteMobilePageFramework,\n\ttype AbsoluteMobilePageResult,\n\ttype AbsoluteMobileUpgradeReason,\n\ttype AbsoluteMobileUpgradeRequiredResult\n} from './pageProtocol';\n\ntype AbsoluteMobileClientTarget = {\n\t__ABSOLUTE_PAGE_DISPOSE__?: () => Promise<void> | void;\n\t__ABSOLUTE_PAGE_READY__?: Promise<unknown>;\n\t__ABSOLUTE_PAGE_RENDER_MODE__?: 'client' | 'hydrate';\n\t__ABS_ANGULAR_REQUEST_CONTEXT__?: Record<string, unknown>;\n\t__INITIAL_PROPS__?: Record<string, unknown>;\n};\n\nexport type AbsoluteMobilePageLoader = (input: {\n\tcontract: string;\n\tpageId: string;\n}) => Promise<unknown>;\n\nexport type AbsoluteMobilePageActivation =\n\t| {\n\t\t\tkind: 'rendered';\n\t\t\tcontract: string;\n\t\t\tpageId: string;\n\t }\n\t| AbsoluteMobileUpgradeRequiredResult;\n\nexport type AbsoluteMobilePageActivationOptions = {\n\tloadPage: AbsoluteMobilePageLoader;\n\ttarget?: AbsoluteMobileClientTarget;\n};\n\nexport class AbsoluteMobilePageProtocolError extends Error {\n\treadonly code:\n\t\t| 'invalid-envelope'\n\t\t| 'invalid-props'\n\t\t| 'server-error'\n\t\t| 'server-rejected-request';\n\n\tconstructor(\n\t\tcode: AbsoluteMobilePageProtocolError['code'],\n\t\tmessage: string\n\t) {\n\t\tsuper(message);\n\t\tthis.name = 'AbsoluteMobilePageProtocolError';\n\t\tthis.code = code;\n\t}\n}\n\nexport const disposeAbsoluteMobilePage = async (\n\ttarget: AbsoluteMobileClientTarget = window\n) => {\n\tconst dispose = target.__ABSOLUTE_PAGE_DISPOSE__;\n\ttarget.__ABSOLUTE_PAGE_DISPOSE__ = undefined;\n\ttarget.__ABSOLUTE_PAGE_READY__ = undefined;\n\tif (dispose) await dispose();\n};\n\nconst frameworks = new Set<string>([\n\t'angular',\n\t'ember',\n\t'html',\n\t'htmx',\n\t'react',\n\t'svelte',\n\t'vue'\n]);\nconst upgradeReasons = new Set<string>([\n\t'app-release',\n\t'page-contract',\n\t'protocol',\n\t'runtime'\n]);\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isFramework = (value: unknown): value is AbsoluteMobilePageFramework =>\n\ttypeof value === 'string' && frameworks.has(value);\n\nconst isUpgradeReason = (\n\tvalue: unknown\n): value is AbsoluteMobileUpgradeReason =>\n\ttypeof value === 'string' && upgradeReasons.has(value);\n\nconst parsePageResult = (\n\tvalue: Record<string, unknown>\n): AbsoluteMobilePageResult => {\n\tif (\n\t\ttypeof value.contract !== 'string' ||\n\t\t!isFramework(value.framework) ||\n\t\ttypeof value.pageId !== 'string' ||\n\t\ttypeof value.status !== 'number'\n\t) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'The mobile page response is missing required page metadata.'\n\t\t);\n\t}\n\tif (!isRecord(value.props)) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-props',\n\t\t\t'The mobile page response must contain an object props value.'\n\t\t);\n\t}\n\n\treturn {\n\t\tcontract: value.contract,\n\t\tframework: value.framework,\n\t\tkind: 'page',\n\t\tpageId: value.pageId,\n\t\tprops: value.props,\n\t\tstatus: value.status\n\t};\n};\n\nconst parseUpgradeResult = (\n\tvalue: Record<string, unknown>\n): AbsoluteMobileUpgradeRequiredResult => {\n\tif (typeof value.pageId !== 'string' || !isUpgradeReason(value.reason)) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'The update response is missing its page or reason.'\n\t\t);\n\t}\n\n\treturn {\n\t\tkind: 'upgrade-required',\n\t\tpageId: value.pageId,\n\t\treason: value.reason,\n\t\tsupportedContracts: Array.isArray(value.supportedContracts)\n\t\t\t? value.supportedContracts.filter(\n\t\t\t\t\t(contract): contract is string =>\n\t\t\t\t\t\ttypeof contract === 'string'\n\t\t\t\t)\n\t\t\t: undefined,\n\t\tsupportedRuntimes: Array.isArray(value.supportedRuntimes)\n\t\t\t? value.supportedRuntimes.filter(\n\t\t\t\t\t(runtime): runtime is string => typeof runtime === 'string'\n\t\t\t\t)\n\t\t\t: undefined\n\t};\n};\n\nexport const activateAbsoluteMobilePage = async (\n\tvalue: unknown,\n\toptions: AbsoluteMobilePageActivationOptions\n) => {\n\tconst envelope = parseAbsoluteMobilePageEnvelope(value);\n\tif (envelope.response.kind === 'upgrade-required') {\n\t\treturn envelope.response;\n\t}\n\tif (envelope.response.kind !== 'page') {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'Expected a renderable mobile page response.'\n\t\t);\n\t}\n\n\tconst target: AbsoluteMobileClientTarget = options.target ?? window;\n\tawait disposeAbsoluteMobilePage(target);\n\ttarget.__INITIAL_PROPS__ = envelope.response.props;\n\ttarget.__ABS_ANGULAR_REQUEST_CONTEXT__ = envelope.response.props;\n\ttarget.__ABSOLUTE_PAGE_RENDER_MODE__ = 'client';\n\tawait options.loadPage({\n\t\tcontract: envelope.response.contract,\n\t\tpageId: envelope.response.pageId\n\t});\n\tif (target.__ABSOLUTE_PAGE_READY__) {\n\t\tawait target.__ABSOLUTE_PAGE_READY__;\n\t}\n\n\treturn {\n\t\tcontract: envelope.response.contract,\n\t\tkind: 'rendered',\n\t\tpageId: envelope.response.pageId\n\t} satisfies AbsoluteMobilePageActivation;\n};\n\nexport const parseAbsoluteMobilePageEnvelope = (value: unknown) => {\n\tif (!isRecord(value) || !isRecord(value.response)) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t'The server did not return an AbsoluteJS mobile page envelope.'\n\t\t);\n\t}\n\tif (value.protocol !== ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION) {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'invalid-envelope',\n\t\t\t`Unsupported mobile page protocol ${String(value.protocol)}.`\n\t\t);\n\t}\n\n\tconst { kind } = value.response;\n\tif (kind === 'page') {\n\t\treturn {\n\t\t\tprotocol: ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\t\t\tresponse: parsePageResult(value.response)\n\t\t} satisfies AbsoluteMobilePageEnvelope;\n\t}\n\tif (kind === 'upgrade-required') {\n\t\treturn {\n\t\t\tprotocol: ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\t\t\tresponse: parseUpgradeResult(value.response)\n\t\t} satisfies AbsoluteMobilePageEnvelope;\n\t}\n\tif (kind === 'invalid-request') {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'server-rejected-request',\n\t\t\ttypeof value.response.message === 'string'\n\t\t\t\t? value.response.message\n\t\t\t\t: 'The server rejected the mobile page request.'\n\t\t);\n\t}\n\tif (kind === 'error') {\n\t\tthrow new AbsoluteMobilePageProtocolError(\n\t\t\t'server-error',\n\t\t\t'The server could not create a compatible mobile page representation.'\n\t\t);\n\t}\n\n\tthrow new AbsoluteMobilePageProtocolError(\n\t\t'invalid-envelope',\n\t\t`Unknown mobile page response kind ${String(kind)}.`\n\t);\n};\n",
|
|
43
|
-
"import {\n\tactivateAbsoluteMobilePage,\n\ttype AbsoluteMobilePageActivationOptions\n} from './client';\nimport {\n\tABSOLUTE_MOBILE_PAGE_MEDIA_TYPE,\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\tMOBILE_PAGE_REQUEST_HEADERS\n} from './pageProtocol';\nimport type {\n\tAbsoluteMobileCompatibilityPage,\n\tAbsoluteMobileCompatibilityRoute\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\n\nexport const ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT = 1 as const;\n\nexport type AbsoluteMobileFetch = (\n\tinput: RequestInfo | URL,\n\tinit?: RequestInit\n) => Promise<Response>;\n\nexport type AbsoluteMobileClientPage = AbsoluteMobileCompatibilityPage & {\n\tlocalBundlePath: string;\n\tlocalStylePath?: string;\n};\n\nexport type AbsoluteMobileClientManifest = {\n\tauth?: AbsoluteMobileAuthManifest;\n\tappBuild: string;\n\tappId: string;\n\tappName: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tdeviceCapabilities: string[];\n\tentry: string;\n\tformat: typeof ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT;\n\tpages: AbsoluteMobileClientPage[];\n\tproductionOrigin: string;\n\troutes: AbsoluteMobileCompatibilityRoute[];\n\truntime: string;\n\tsync?: {\n\t\tsocketTickets: true;\n\t\tbackground: { endpoint: string; intervalMinutes: number };\n\t\tstorageSchema: SyncLocalStoreSchemaBundle;\n\t};\n};\n\nexport type AbsoluteMobileTransportOptions = {\n\tfetch?: AbsoluteMobileFetch;\n\theaders?: HeadersInit;\n\tsignal?: AbortSignal;\n};\n\nconst pageForPathname = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpathname: string\n) => {\n\tconst route = resolveAbsoluteMobileRoute(manifest.routes, pathname);\n\tif (!route) {\n\t\tthrow new TypeError(`No embedded mobile page owns ${pathname}.`);\n\t}\n\tconst page = manifest.pages.find(\n\t\t(candidate) => candidate.pageId === route.pageId\n\t);\n\tif (!page) {\n\t\tthrow new TypeError(\n\t\t\t`Mobile route ${route.pattern} references missing page ${route.pageId}.`\n\t\t);\n\t}\n\n\treturn page;\n};\n\nconst canonicalBackendUrl = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string\n) => {\n\tconst origin = new URL(manifest.productionOrigin);\n\tconst url = new URL(path, `${origin.origin}/`);\n\tif (url.origin !== origin.origin) {\n\t\tthrow new TypeError('Mobile transport cannot leave productionOrigin.');\n\t}\n\turl.hash = '';\n\n\treturn url;\n};\n\nexport const createAbsoluteMobilePageRequest = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions = {}\n) => {\n\tconst url = canonicalBackendUrl(manifest, path);\n\tconst page = pageForPathname(manifest, url.pathname);\n\tconst headers = new Headers(options.headers);\n\theaders.set('accept', ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.appBuild, manifest.appBuild);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageBundle, page.bundleHash);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageContracts, page.contract);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageId, page.pageId);\n\theaders.set(\n\t\tMOBILE_PAGE_REQUEST_HEADERS.protocol,\n\t\tString(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.runtime, manifest.runtime);\n\n\treturn new Request(url, {\n\t\theaders,\n\t\tmethod: 'GET',\n\t\t...(options.signal ? { signal: options.signal } : {})\n\t});\n};\n\nexport const fetchAbsoluteMobilePage = async (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions = {}\n) => {\n\tconst request = createAbsoluteMobilePageRequest(manifest, path, options);\n\tconst response = await (options.fetch ?? globalThis.fetch)(request);\n\tconst value: unknown = await response.json();\n\n\treturn value;\n};\n\nexport const navigateAbsoluteMobilePage = async (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions &\n\t\tAbsoluteMobilePageActivationOptions\n) => {\n\tconst envelope = await fetchAbsoluteMobilePage(manifest, path, options);\n\n\treturn activateAbsoluteMobilePage(envelope, options);\n};\n\nexport const resolveAbsoluteMobileDeepLink = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tvalue: string\n) => {\n\tconst url = new URL(value);\n\tif (url.username || url.password) {\n\t\tthrow new TypeError('Mobile deep links cannot contain credentials.');\n\t}\n\tconst isHttpsHost =\n\t\turl.protocol === 'https:' &&\n\t\tmanifest.deepLinkHosts.includes(url.hostname.toLowerCase());\n\tconst isCustomScheme =\n\t\tmanifest.deepLinkScheme !== undefined &&\n\t\turl.protocol === `${manifest.deepLinkScheme}:`;\n\tif (!isHttpsHost && !isCustomScheme) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile deep link is outside the configured app URLs.'\n\t\t);\n\t}\n\n\treturn `${url.pathname || '/'}${url.search}${url.hash}`;\n};\n\nexport const resolveAbsoluteMobileNavigation = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tvalue: string,\n\tlocalOrigin: string\n) => {\n\tconst url = new URL(value, `${localOrigin}/`);\n\tconst local = new URL(localOrigin);\n\tconst production = new URL(manifest.productionOrigin);\n\tconst matches = (candidate: URL, allowed: URL) =>\n\t\tcandidate.protocol === allowed.protocol &&\n\t\tcandidate.host === allowed.host;\n\tif (!matches(url, local) && !matches(url, production)) {\n\t\treturn undefined;\n\t}\n\n\treturn `${url.pathname}${url.search}${url.hash}`;\n};\n",
|
|
43
|
+
"import {\n\tactivateAbsoluteMobilePage,\n\ttype AbsoluteMobilePageActivationOptions\n} from './client';\nimport {\n\tABSOLUTE_MOBILE_PAGE_MEDIA_TYPE,\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION,\n\tMOBILE_PAGE_REQUEST_HEADERS\n} from './pageProtocol';\nimport type {\n\tAbsoluteMobileCompatibilityPage,\n\tAbsoluteMobileCompatibilityRoute\n} from './releaseArtifact';\nimport { resolveAbsoluteMobileRoute } from './routeMatcher';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\n\nexport const ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT = 1 as const;\n\nexport type AbsoluteMobileFetch = (\n\tinput: RequestInfo | URL,\n\tinit?: RequestInit\n) => Promise<Response>;\n\nexport type AbsoluteMobileClientPage = AbsoluteMobileCompatibilityPage & {\n\tlocalBundlePath: string;\n\tlocalStylePath?: string;\n};\n\nexport type AbsoluteMobileClientManifest = {\n\tauth?: AbsoluteMobileAuthManifest;\n\tappBuild: string;\n\tappId: string;\n\tappName: string;\n\tdeepLinkHosts: string[];\n\tdeepLinkScheme?: string;\n\tdeviceCapabilities: string[];\n\tentry: string;\n\tformat: typeof ABSOLUTE_MOBILE_CLIENT_MANIFEST_FORMAT;\n\tnativeRuntime: string;\n\tpages: AbsoluteMobileClientPage[];\n\tproductionOrigin: string;\n\troutes: AbsoluteMobileCompatibilityRoute[];\n\truntime: string;\n\tupdates?: {\n\t\tchannel: string;\n\t\tmanifestUrl: string;\n\t\tpublicKeys: Record<string, string>;\n\t};\n\tsync?: {\n\t\tsocketTickets: true;\n\t\tbackground: { endpoint: string; intervalMinutes: number };\n\t\tstorageSchema: SyncLocalStoreSchemaBundle;\n\t};\n};\n\nexport type AbsoluteMobileTransportOptions = {\n\tfetch?: AbsoluteMobileFetch;\n\theaders?: HeadersInit;\n\tsignal?: AbortSignal;\n};\n\nconst pageForPathname = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpathname: string\n) => {\n\tconst route = resolveAbsoluteMobileRoute(manifest.routes, pathname);\n\tif (!route) {\n\t\tthrow new TypeError(`No embedded mobile page owns ${pathname}.`);\n\t}\n\tconst page = manifest.pages.find(\n\t\t(candidate) => candidate.pageId === route.pageId\n\t);\n\tif (!page) {\n\t\tthrow new TypeError(\n\t\t\t`Mobile route ${route.pattern} references missing page ${route.pageId}.`\n\t\t);\n\t}\n\n\treturn page;\n};\n\nconst canonicalBackendUrl = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string\n) => {\n\tconst origin = new URL(manifest.productionOrigin);\n\tconst url = new URL(path, `${origin.origin}/`);\n\tif (url.origin !== origin.origin) {\n\t\tthrow new TypeError('Mobile transport cannot leave productionOrigin.');\n\t}\n\turl.hash = '';\n\n\treturn url;\n};\n\nexport const createAbsoluteMobilePageRequest = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions = {}\n) => {\n\tconst url = canonicalBackendUrl(manifest, path);\n\tconst page = pageForPathname(manifest, url.pathname);\n\tconst headers = new Headers(options.headers);\n\theaders.set('accept', ABSOLUTE_MOBILE_PAGE_MEDIA_TYPE);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.appBuild, manifest.appBuild);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageBundle, page.bundleHash);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageContracts, page.contract);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.pageId, page.pageId);\n\theaders.set(\n\t\tMOBILE_PAGE_REQUEST_HEADERS.protocol,\n\t\tString(ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION)\n\t);\n\theaders.set(MOBILE_PAGE_REQUEST_HEADERS.runtime, manifest.runtime);\n\n\treturn new Request(url, {\n\t\theaders,\n\t\tmethod: 'GET',\n\t\t...(options.signal ? { signal: options.signal } : {})\n\t});\n};\n\nexport const fetchAbsoluteMobilePage = async (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions = {}\n) => {\n\tconst request = createAbsoluteMobilePageRequest(manifest, path, options);\n\tconst response = await (options.fetch ?? globalThis.fetch)(request);\n\tconst value: unknown = await response.json();\n\n\treturn value;\n};\n\nexport const navigateAbsoluteMobilePage = async (\n\tmanifest: AbsoluteMobileClientManifest,\n\tpath: string,\n\toptions: AbsoluteMobileTransportOptions &\n\t\tAbsoluteMobilePageActivationOptions\n) => {\n\tconst envelope = await fetchAbsoluteMobilePage(manifest, path, options);\n\n\treturn activateAbsoluteMobilePage(envelope, options);\n};\n\nexport const resolveAbsoluteMobileDeepLink = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tvalue: string\n) => {\n\tconst url = new URL(value);\n\tif (url.username || url.password) {\n\t\tthrow new TypeError('Mobile deep links cannot contain credentials.');\n\t}\n\tconst isHttpsHost =\n\t\turl.protocol === 'https:' &&\n\t\tmanifest.deepLinkHosts.includes(url.hostname.toLowerCase());\n\tconst isCustomScheme =\n\t\tmanifest.deepLinkScheme !== undefined &&\n\t\turl.protocol === `${manifest.deepLinkScheme}:`;\n\tif (!isHttpsHost && !isCustomScheme) {\n\t\tthrow new TypeError(\n\t\t\t'Mobile deep link is outside the configured app URLs.'\n\t\t);\n\t}\n\n\treturn `${url.pathname || '/'}${url.search}${url.hash}`;\n};\n\nexport const resolveAbsoluteMobileNavigation = (\n\tmanifest: AbsoluteMobileClientManifest,\n\tvalue: string,\n\tlocalOrigin: string\n) => {\n\tconst url = new URL(value, `${localOrigin}/`);\n\tconst local = new URL(localOrigin);\n\tconst production = new URL(manifest.productionOrigin);\n\tconst matches = (candidate: URL, allowed: URL) =>\n\t\tcandidate.protocol === allowed.protocol &&\n\t\tcandidate.host === allowed.host;\n\tif (!matches(url, local) && !matches(url, production)) {\n\t\treturn undefined;\n\t}\n\n\treturn `${url.pathname}${url.search}${url.hash}`;\n};\n",
|
|
44
44
|
"import { createHash } from 'node:crypto';\nimport {\n\taccess,\n\tmkdir,\n\tmkdtemp,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { dirname, join, resolve as resolvePath } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport {\n\tverifyAbsoluteMobileCompatibilityProducer,\n\ttype AbsoluteMobileStoredCompatibilityRelease\n} from './artifactStore';\nimport type {\n\tAbsoluteMobileCompatibilityDispatcherOptions,\n\tAbsoluteMobileCompatibilityProducerHandler\n} from './compatibilityDispatcher';\nimport {\n\tparseAbsoluteMobileCompatibilityArtifact,\n\tretainAbsoluteMobileCompatibilityArtifacts,\n\ttype AbsoluteMobileCompatibilityArtifact\n} from './releaseArtifact';\n\nexport const ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT = 1 as const;\n\nexport type AbsoluteMobileMaterializedBundleInput = {\n\tcurrentReleaseId: string;\n\treleases: readonly AbsoluteMobileStoredCompatibilityRelease[];\n\troot: string;\n};\n\nexport type AbsoluteMobileMaterializedBundleIndex = {\n\tbundleId: string;\n\tcurrentReleaseId: string;\n\tformat: typeof ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT;\n\treleases: AbsoluteMobileCompatibilityArtifact[];\n};\n\ntype CompatibilityModule = Record<string, unknown>;\ntype CompatibilityModuleLoader = (\n\tmodulePath: string\n) => Promise<CompatibilityModule>;\n\nconst CURRENT_BUNDLE_FILE = 'current.json';\nconst BUNDLES_DIRECTORY = 'bundles';\nconst ARTIFACT_FILE = 'artifact.json';\nconst BUNDLE_ID_PATTERN = /^amb_[a-f0-9]{64}$/;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst errorHasCode = (error: unknown, code: string) =>\n\ttypeof error === 'object' &&\n\terror !== null &&\n\tReflect.get(error, 'code') === code;\n\nconst bundleIdFor = (\n\tcurrentReleaseId: string,\n\treleases: readonly AbsoluteMobileCompatibilityArtifact[]\n) => {\n\tconst identity = JSON.stringify({\n\t\tcurrentReleaseId,\n\t\treleases: releases.map(({ releaseId }) => releaseId)\n\t});\n\n\treturn `amb_${createHash('sha256').update(identity).digest('hex')}`;\n};\n\nconst parseBundleIndex = (value: unknown) => {\n\tif (\n\t\t!isRecord(value) ||\n\t\tvalue.format !== ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT ||\n\t\ttypeof value.bundleId !== 'string' ||\n\t\t!BUNDLE_ID_PATTERN.test(value.bundleId) ||\n\t\ttypeof value.currentReleaseId !== 'string' ||\n\t\t!Array.isArray(value.releases)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Invalid materialized mobile compatibility bundle.'\n\t\t);\n\t}\n\tconst releases = value.releases.map(\n\t\tparseAbsoluteMobileCompatibilityArtifact\n\t);\n\tconst retained = retainAbsoluteMobileCompatibilityArtifacts(releases);\n\tif (\n\t\tretained.length !== releases.length ||\n\t\tretained.some(\n\t\t\t({ releaseId }, index) => releaseId !== releases[index]?.releaseId\n\t\t)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Materialized mobile bundle releases are not a retained generation window.'\n\t\t);\n\t}\n\tconst expectedBundleId = bundleIdFor(value.currentReleaseId, releases);\n\tif (value.bundleId !== expectedBundleId) {\n\t\tthrow new TypeError('Materialized mobile bundle integrity failed.');\n\t}\n\tif (releases[0]?.releaseId !== value.currentReleaseId) {\n\t\tthrow new TypeError(\n\t\t\t'Materialized mobile bundle current release is not its newest generation.'\n\t\t);\n\t}\n\n\treturn {\n\t\tbundleId: value.bundleId,\n\t\tcurrentReleaseId: value.currentReleaseId,\n\t\tformat: ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT,\n\t\treleases\n\t} satisfies AbsoluteMobileMaterializedBundleIndex;\n};\n\nconst writeRelease = async (\n\troot: string,\n\trelease: AbsoluteMobileStoredCompatibilityRelease\n) => {\n\tconst directory = join(root, release.artifact.releaseId);\n\tconst producerPath = join(directory, release.artifact.producer.module);\n\tawait mkdir(dirname(producerPath), { recursive: true });\n\tawait Promise.all([\n\t\twriteFile(\n\t\t\tjoin(directory, ARTIFACT_FILE),\n\t\t\t`${JSON.stringify(release.artifact, null, '\\t')}\\n`\n\t\t),\n\t\twriteFile(\n\t\t\tproducerPath,\n\t\t\tnew Uint8Array(await release.producer.arrayBuffer())\n\t\t)\n\t]);\n};\n\nconst installImmutableBundle = async (\n\tbundlesRoot: string,\n\tbundleId: string,\n\treleases: readonly AbsoluteMobileStoredCompatibilityRelease[]\n) => {\n\tconst destination = join(bundlesRoot, bundleId);\n\ttry {\n\t\tawait access(destination);\n\n\t\treturn destination;\n\t} catch (error) {\n\t\tif (!errorHasCode(error, 'ENOENT')) throw error;\n\t}\n\n\tconst staging = await mkdtemp(join(bundlesRoot, '.stage-'));\n\ttry {\n\t\tawait Promise.all(\n\t\t\treleases.map((release) => writeRelease(staging, release))\n\t\t);\n\t\tawait rename(staging, destination);\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\t\tif (errorHasCode(error, 'EEXIST') || errorHasCode(error, 'ENOTEMPTY')) {\n\t\t\treturn destination;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn destination;\n};\n\nconst readCompatibilityModule: CompatibilityModuleLoader = (modulePath) =>\n\timport(pathToFileURL(modulePath).href);\n\nconst resolveProducerHandler = (\n\tloaded: CompatibilityModule,\n\texportName: string\n) => {\n\tconst value = loaded[exportName];\n\tif (!isRecord(value) || typeof value.handle !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t`Compatibility producer export ${exportName} must expose handle(request).`\n\t\t);\n\t}\n\n\tconst { handle } = value;\n\n\treturn {\n\t\thandle: async (request) => {\n\t\t\tconst response: unknown = await Reflect.apply(handle, value, [\n\t\t\t\trequest\n\t\t\t]);\n\t\t\tif (!(response instanceof Response)) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t`Compatibility producer ${exportName} returned a non-Response value.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn response;\n\t\t}\n\t} satisfies AbsoluteMobileCompatibilityProducerHandler;\n};\n\nexport const loadAbsoluteMobileMaterializedBundle = async (\n\troot: string\n): Promise<AbsoluteMobileCompatibilityDispatcherOptions> => {\n\tconst resolvedRoot = resolvePath(root);\n\tconst serialized = await readFile(\n\t\tjoin(resolvedRoot, CURRENT_BUNDLE_FILE),\n\t\t'utf8'\n\t);\n\tconst parsed: unknown = JSON.parse(serialized);\n\tconst index = parseBundleIndex(parsed);\n\tconst bundleRoot = join(resolvedRoot, BUNDLES_DIRECTORY, index.bundleId);\n\n\treturn {\n\t\tartifacts: index.releases,\n\t\tcurrentReleaseId: index.currentReleaseId,\n\t\tloadProducer: async (artifact) => {\n\t\t\tconst modulePath = join(\n\t\t\t\tbundleRoot,\n\t\t\t\tartifact.releaseId,\n\t\t\t\tartifact.producer.module\n\t\t\t);\n\t\t\tawait verifyAbsoluteMobileCompatibilityProducer({\n\t\t\t\tartifact,\n\t\t\t\tproducer: Bun.file(modulePath)\n\t\t\t});\n\t\t\tconst loaded = await readCompatibilityModule(modulePath);\n\n\t\t\treturn resolveProducerHandler(loaded, artifact.producer.exportName);\n\t\t}\n\t};\n};\n\nexport const materializeAbsoluteMobileCompatibilityBundle = async (\n\tinput: AbsoluteMobileMaterializedBundleInput\n) => {\n\tconst releases = await Promise.all(\n\t\tinput.releases.map((release) =>\n\t\t\tverifyAbsoluteMobileCompatibilityProducer(release)\n\t\t)\n\t);\n\tconst artifacts = retainAbsoluteMobileCompatibilityArtifacts(\n\t\treleases.map(({ artifact }) => artifact)\n\t);\n\tif (artifacts.length !== releases.length) {\n\t\tthrow new TypeError(\n\t\t\t'Materialization input must already contain only retained releases.'\n\t\t);\n\t}\n\tif (artifacts[0]?.releaseId !== input.currentReleaseId) {\n\t\tthrow new TypeError(\n\t\t\t'Materialization current release must be the newest generation.'\n\t\t);\n\t}\n\tconst orderedReleases = artifacts.map((artifact) => {\n\t\tconst release = releases.find(\n\t\t\t(candidate) => candidate.artifact.releaseId === artifact.releaseId\n\t\t);\n\t\tif (!release) {\n\t\t\tthrow new TypeError('Materialization input is missing a producer.');\n\t\t}\n\n\t\treturn release;\n\t});\n\tconst root = resolvePath(input.root);\n\tconst bundlesRoot = join(root, BUNDLES_DIRECTORY);\n\tawait mkdir(bundlesRoot, { recursive: true });\n\tconst bundleId = bundleIdFor(input.currentReleaseId, artifacts);\n\tawait installImmutableBundle(bundlesRoot, bundleId, orderedReleases);\n\tconst index = {\n\t\tbundleId,\n\t\tcurrentReleaseId: input.currentReleaseId,\n\t\tformat: ABSOLUTE_MOBILE_MATERIALIZED_BUNDLE_FORMAT,\n\t\treleases: artifacts\n\t} satisfies AbsoluteMobileMaterializedBundleIndex;\n\tconst pointerPath = join(root, CURRENT_BUNDLE_FILE);\n\tconst temporaryPointerPath = join(\n\t\troot,\n\t\t`.current-${crypto.randomUUID()}.json`\n\t);\n\tawait writeFile(\n\t\ttemporaryPointerPath,\n\t\t`${JSON.stringify(index, null, '\\t')}\\n`,\n\t\t{ flag: 'wx' }\n\t);\n\tawait rename(temporaryPointerPath, pointerPath);\n\n\treturn index;\n};\n\nexport const readAbsoluteMobileMaterializedReleases = async (root: string) => {\n\tconst resolvedRoot = resolvePath(root);\n\ttry {\n\t\tconst serialized = await readFile(\n\t\t\tjoin(resolvedRoot, CURRENT_BUNDLE_FILE),\n\t\t\t'utf8'\n\t\t);\n\t\tconst parsed: unknown = JSON.parse(serialized);\n\t\tconst index = parseBundleIndex(parsed);\n\t\tconst bundleRoot = join(\n\t\t\tresolvedRoot,\n\t\t\tBUNDLES_DIRECTORY,\n\t\t\tindex.bundleId\n\t\t);\n\n\t\treturn Promise.all(\n\t\t\tindex.releases.map(async (artifact) => {\n\t\t\t\tconst producer = Bun.file(\n\t\t\t\t\tjoin(\n\t\t\t\t\t\tbundleRoot,\n\t\t\t\t\t\tartifact.releaseId,\n\t\t\t\t\t\tartifact.producer.module\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tawait verifyAbsoluteMobileCompatibilityProducer({\n\t\t\t\t\tartifact,\n\t\t\t\t\tproducer\n\t\t\t\t});\n\n\t\t\t\treturn { artifact, producer };\n\t\t\t})\n\t\t);\n\t} catch (error) {\n\t\tif (errorHasCode(error, 'ENOENT')) return [];\n\n\t\tthrow error;\n\t}\n};\n",
|
|
45
45
|
"import {\n\taccess,\n\tcp,\n\tmkdir,\n\tmkdtemp,\n\treaddir,\n\treadFile,\n\trename,\n\trm,\n\twriteFile\n} from 'node:fs/promises';\nimport { createHash } from 'node:crypto';\nimport { basename, dirname, join, relative, resolve, sep } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport {\n\tABSOLUTE_EXPO_AUTH_PACKAGE,\n\tABSOLUTE_EXPO_AUTH_CORE_VERSION,\n\tABSOLUTE_EXPO_AUTH_VERSION,\n\tABSOLUTE_EXPO_SYNC_CORE_VERSION,\n\tABSOLUTE_EXPO_SYNC_PACKAGE,\n\tABSOLUTE_EXPO_SYNC_VERSION,\n\tprojectUsesAbsoluteSync,\n\tresolveAbsoluteMobileAuthManifest,\n\ttype AbsoluteMobileAuthManifest\n} from './nativeAuth';\nimport { discoverAbsoluteSyncSchema } from './syncSchema';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport {\n\tabsoluteDeviceNativeRequirements,\n\tresolveAbsoluteDeviceCapabilityPlan,\n\ttype AbsoluteDeviceCapabilityPlan\n} from './deviceCapabilities';\n\nconst EXPO_GENERATED_HEADER =\n\t'// Generated by AbsoluteJS. Edit absolute.config.ts, then run absolute mobile sync.\\n';\nconst EXPO_ASSET_EXTENSION = '.absasset';\nconst EXPO_PROJECT_MARKER = '.absolutejs-expo-project';\n\ntype AbsoluteExpoNativeDataManifest = {\n\tappBuild: string;\n\tpages: {\n\t\tbundleHash: string;\n\t\tcontract: string;\n\t\tpageId: string;\n\t}[];\n\tproductionOrigin: string;\n\troutes: { method: 'GET'; pageId: string; pattern: string }[];\n\truntime: string;\n};\n\ntype AbsoluteExpoAssetEntry = { asset: string; path: string };\n\nexport type WriteAbsoluteExpoProjectOptions = {\n\tforce?: boolean;\n\tprojectRoot: string;\n};\n\nconst exists = async (path: string) => {\n\ttry {\n\t\tawait access(path);\n\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst requireManifestString = (value: unknown, field: string) => {\n\tif (typeof value !== 'string' || !value) {\n\t\tthrow new TypeError(`AbsoluteJS mobile manifest ${field} is invalid.`);\n\t}\n\n\treturn value;\n};\n\nconst expoNativeDataManifest = (\n\tvalue: unknown\n): AbsoluteExpoNativeDataManifest => {\n\tif (\n\t\t!isRecord(value) ||\n\t\t!Array.isArray(value.pages) ||\n\t\t!Array.isArray(value.routes)\n\t) {\n\t\tthrow new TypeError('AbsoluteJS mobile manifest is invalid.');\n\t}\n\tconst pages = value.pages.map((page) => {\n\t\tif (!isRecord(page))\n\t\t\tthrow new TypeError('AbsoluteJS mobile manifest page is invalid.');\n\n\t\treturn {\n\t\t\tbundleHash: requireManifestString(\n\t\t\t\tpage.bundleHash,\n\t\t\t\t'page.bundleHash'\n\t\t\t),\n\t\t\tcontract: requireManifestString(page.contract, 'page.contract'),\n\t\t\tpageId: requireManifestString(page.pageId, 'page.pageId')\n\t\t};\n\t});\n\tconst routes = value.routes.flatMap((route) => {\n\t\tif (!isRecord(route) || typeof route.method !== 'string') {\n\t\t\tthrow new TypeError('AbsoluteJS mobile manifest route is invalid.');\n\t\t}\n\t\tif (route.method !== 'GET') return [];\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tmethod: 'GET' as const,\n\t\t\t\tpageId: requireManifestString(route.pageId, 'route.pageId'),\n\t\t\t\tpattern: requireManifestString(route.pattern, 'route.pattern')\n\t\t\t}\n\t\t];\n\t});\n\n\treturn {\n\t\tappBuild: requireManifestString(value.appBuild, 'appBuild'),\n\t\tpages,\n\t\tproductionOrigin: requireManifestString(\n\t\t\tvalue.productionOrigin,\n\t\t\t'productionOrigin'\n\t\t),\n\t\troutes,\n\t\truntime: requireManifestString(value.runtime, 'runtime')\n\t};\n};\n\nconst portableRelative = (from: string, destination: string) => {\n\tconst value = relative(from, destination).replaceAll('\\\\', '/');\n\n\treturn value.startsWith('.') ? value : `./${value}`;\n};\n\nconst routeSegments = (route: string) => {\n\tconst segments = route.split('/').filter(Boolean);\n\n\treturn segments.map((segment, index) => {\n\t\tif (segment.startsWith(':')) return `[${segment.slice(1)}]`;\n\t\tif (segment === '*' && index === segments.length - 1)\n\t\t\treturn '[...absoluteWildcard]';\n\t\tif (\n\t\t\tsegment === '.' ||\n\t\t\tsegment === '..' ||\n\t\t\t!/^[A-Za-z0-9._~-]+$/u.test(segment)\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo native route ${route} contains an unsupported segment ${segment}.`\n\t\t\t);\n\t\t}\n\n\t\treturn segment;\n\t});\n};\n\nconst routeFile = (project: string, route: string) =>\n\tjoin(project, 'app', ...routeSegments(route), 'index.tsx');\n\nconst packageDependencies = (plan: AbsoluteDeviceCapabilityPlan) =>\n\tObject.fromEntries(\n\t\tplan.requiredPackages.map((spec) => {\n\t\t\tconst separator = spec.lastIndexOf('@');\n\n\t\t\treturn [spec.slice(0, separator), spec.slice(separator + 1)];\n\t\t})\n\t);\n\nconst expoPackage = (\n\tauth: boolean,\n\tsync: boolean,\n\tdevices: AbsoluteDeviceCapabilityPlan\n) => ({\n\tdependencies: {\n\t\t'@absolutejs/devices': '0.7.0',\n\t\t'@absolutejs/devices-expo': '0.0.2',\n\t\t...(auth\n\t\t\t? {\n\t\t\t\t\t'@absolutejs/auth': ABSOLUTE_EXPO_AUTH_CORE_VERSION,\n\t\t\t\t\t[ABSOLUTE_EXPO_AUTH_PACKAGE]: ABSOLUTE_EXPO_AUTH_VERSION\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(sync\n\t\t\t? {\n\t\t\t\t\t'@absolutejs/sync': ABSOLUTE_EXPO_SYNC_CORE_VERSION,\n\t\t\t\t\t[ABSOLUTE_EXPO_SYNC_PACKAGE]: ABSOLUTE_EXPO_SYNC_VERSION\n\t\t\t\t}\n\t\t\t: {}),\n\t\texpo: '~57.0.9',\n\t\t'expo-asset': '~57.0.15',\n\t\t'expo-constants': '~57.0.16',\n\t\t'expo-dev-client': '~57.0.16',\n\t\t'expo-file-system': '~57.0.6',\n\t\t'expo-haptics': '~57.0.2',\n\t\t'expo-linking': '~57.0.8',\n\t\t...(sync\n\t\t\t? {\n\t\t\t\t\t'expo-background-task': '~57.0.14',\n\t\t\t\t\t'expo-network': '~57.0.1',\n\t\t\t\t\t'expo-sqlite': '~57.0.2',\n\t\t\t\t\t'expo-task-manager': '~57.0.14',\n\t\t\t\t\t'expo-updates': '~57.0.19'\n\t\t\t\t}\n\t\t\t: {}),\n\t\t'expo-router': '~57.0.17',\n\t\t...(auth\n\t\t\t? {\n\t\t\t\t\t'expo-secure-store': '~57.0.2',\n\t\t\t\t\t'expo-web-browser': '~57.0.2'\n\t\t\t\t}\n\t\t\t: {}),\n\t\treact: '19.2.3',\n\t\t'react-native': '0.86.3',\n\t\t'react-native-safe-area-context': '~5.7.0',\n\t\t'react-native-screens': '4.26.0',\n\t\t'react-native-webview': '13.16.1',\n\t\t...packageDependencies(devices)\n\t},\n\tdevDependencies: {\n\t\t'@types/react': '~19.2.2',\n\t\ttypescript: '~6.0.3'\n\t},\n\tmain: 'expo-router/entry',\n\tname: 'absolutejs-expo-shell',\n\tprivate: true,\n\tscripts: {\n\t\tandroid: 'expo run:android',\n\t\tios: 'expo run:ios',\n\t\tstart: 'expo start --dev-client'\n\t},\n\tversion: '0.0.0'\n});\n\nconst expoAppConfig = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: boolean,\n\tsync: boolean,\n\tdevices: AbsoluteDeviceCapabilityPlan\n) => {\n\tconst requirements = absoluteDeviceNativeRequirements(devices);\n\tconst usageKey = (purpose: string) => {\n\t\tif (purpose === 'camera') return 'NSCameraUsageDescription';\n\t\tif (purpose === 'photo-library')\n\t\t\treturn 'NSPhotoLibraryUsageDescription';\n\t\tif (purpose === 'photo-library-add')\n\t\t\treturn 'NSPhotoLibraryAddUsageDescription';\n\t\tif (purpose === 'location-always')\n\t\t\treturn 'NSLocationAlwaysAndWhenInUseUsageDescription';\n\n\t\treturn 'NSLocationWhenInUseUsageDescription';\n\t};\n\tconst usageDescription = (purpose: string) => {\n\t\tif (purpose === 'camera')\n\t\t\treturn `${config.appName} uses your camera when you choose to take a photo.`;\n\t\tif (purpose === 'photo-library')\n\t\t\treturn `${config.appName} accesses your photo library only for photo actions you choose.`;\n\t\tif (purpose.startsWith('location-'))\n\t\t\treturn `${config.appName} uses your location only while you use the app and request a location-based action.`;\n\n\t\treturn `${config.appName} adds to your photo library only for photo actions you choose.`;\n\t};\n\tconst descriptions = Object.fromEntries(\n\t\trequirements.iosUsageDescriptions.map((purpose) => [\n\t\t\tusageKey(purpose),\n\t\t\tusageDescription(purpose)\n\t\t])\n\t);\n\tconst devicePlugins = [\n\t\t...new Set(\n\t\t\tdevices.capabilities.flatMap(\n\t\t\t\t(name) => devices.providers[name]?.plugins ?? []\n\t\t\t)\n\t\t)\n\t];\n\tconst configuredPlugins = devicePlugins.map((plugin) => {\n\t\tif (plugin === 'expo-image-picker')\n\t\t\treturn [\n\t\t\t\tplugin,\n\t\t\t\t{\n\t\t\t\t\tcameraPermission: descriptions.NSCameraUsageDescription,\n\t\t\t\t\tmicrophonePermission: false,\n\t\t\t\t\tphotosPermission:\n\t\t\t\t\t\tdescriptions.NSPhotoLibraryUsageDescription\n\t\t\t\t}\n\t\t\t];\n\t\tif (plugin === 'expo-location')\n\t\t\treturn [\n\t\t\t\tplugin,\n\t\t\t\t{\n\t\t\t\t\tlocationWhenInUsePermission:\n\t\t\t\t\t\tdescriptions.NSLocationWhenInUseUsageDescription\n\t\t\t\t}\n\t\t\t];\n\n\t\treturn plugin;\n\t});\n\n\treturn {\n\t\texpo: {\n\t\t\tandroid: {\n\t\t\t\t...(devicePlugins.includes('expo-image-picker')\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tblockedPermissions: [\n\t\t\t\t\t\t\t\t'android.permission.READ_EXTERNAL_STORAGE',\n\t\t\t\t\t\t\t\t'android.permission.RECORD_AUDIO',\n\t\t\t\t\t\t\t\t'android.permission.WRITE_EXTERNAL_STORAGE'\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\tintentFilters: config.deepLinkHosts.map((host) => ({\n\t\t\t\t\taction: 'VIEW',\n\t\t\t\t\tautoVerify: true,\n\t\t\t\t\tcategory: ['BROWSABLE', 'DEFAULT'],\n\t\t\t\t\tdata: [{ host, pathPrefix: '/', scheme: 'https' }]\n\t\t\t\t})),\n\t\t\t\tpackage: config.appId,\n\t\t\t\tpermissions: requirements.androidPermissions\n\t\t\t},\n\t\t\texperiments: { typedRoutes: true },\n\t\t\tios: {\n\t\t\t\tassociatedDomains: config.deepLinkHosts.map(\n\t\t\t\t\t(host) => `applinks:${host}`\n\t\t\t\t),\n\t\t\t\tbundleIdentifier: config.appId,\n\t\t\t\tinfoPlist: descriptions,\n\t\t\t\t...(requirements.iosPrivacyAccessedApis.length > 0\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tprivacyManifests: {\n\t\t\t\t\t\t\t\tNSPrivacyAccessedAPITypes:\n\t\t\t\t\t\t\t\t\trequirements.iosPrivacyAccessedApis.map(\n\t\t\t\t\t\t\t\t\t\t({ api, reasons }) => ({\n\t\t\t\t\t\t\t\t\t\t\tNSPrivacyAccessedAPIType: api,\n\t\t\t\t\t\t\t\t\t\t\tNSPrivacyAccessedAPITypeReasons:\n\t\t\t\t\t\t\t\t\t\t\t\treasons\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t: {}),\n\t\t\t\t...(config.iosVersion ? { buildNumber: config.iosVersion } : {})\n\t\t\t},\n\t\t\tname: config.appName,\n\t\t\tplugins: [\n\t\t\t\t'expo-router',\n\t\t\t\t['expo-dev-client', { launchMode: 'most-recent' }],\n\t\t\t\t...(auth ? ['expo-secure-store'] : []),\n\t\t\t\t...(sync\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t'expo-sqlite',\n\t\t\t\t\t\t\t'expo-background-task',\n\t\t\t\t\t\t\t'expo-task-manager'\n\t\t\t\t\t\t]\n\t\t\t\t\t: []),\n\t\t\t\t...configuredPlugins\n\t\t\t],\n\t\t\truntimeVersion: { policy: 'appVersion' },\n\t\t\tscheme: config.deepLinkScheme,\n\t\t\tslug: config.appId.toLowerCase().replaceAll('.', '-'),\n\t\t\tversion: config.iosVersion ?? '0.1.0'\n\t\t}\n\t};\n};\n\nconst expoDynamicAppConfig = `${EXPO_GENERATED_HEADER}const config = require('./app.json');\n\nif (process.env.ABSOLUTE_EXPO_DEVELOPMENT === '1' && process.env.ABSOLUTE_EXPO_DEVELOPMENT_CA_PATH) {\n\tconfig.expo.plugins = [\n\t\t...config.expo.plugins,\n\t\t'./plugins/withAbsoluteDevelopmentCa'\n\t];\n}\n\nmodule.exports = config;\n`;\n\nconst expoDevelopmentCaPlugin = `${EXPO_GENERATED_HEADER}const { AndroidConfig, withAndroidManifest, withDangerousMod } = require('expo/config-plugins');\nconst { copyFile, mkdir } = require('node:fs/promises');\nconst path = require('node:path');\n\nconst NETWORK_CONFIG = [\n\t'<?xml version=\"1.0\" encoding=\"utf-8\"?>',\n\t'<network-security-config>',\n\t'\\t<debug-overrides>',\n\t'\\t\\t<trust-anchors>',\n\t'\\t\\t\\t<certificates src=\"@raw/absolutejs_dev_ca\" />',\n\t'\\t\\t</trust-anchors>',\n\t'\\t</debug-overrides>',\n\t'</network-security-config>',\n\t''\n].join('\\\\n');\n\nconst withAbsoluteDevelopmentCa = config => {\n\tconfig = withAndroidManifest(config, value => {\n\t\tconst application = AndroidConfig.Manifest.getMainApplicationOrThrow(value.modResults);\n\t\tapplication.$['android:networkSecurityConfig'] = '@xml/absolutejs_dev_network_security';\n\t\treturn value;\n\t});\n\treturn withDangerousMod(config, ['android', async value => {\n\t\tconst certificate = process.env.ABSOLUTE_EXPO_DEVELOPMENT_CA_PATH;\n\t\tif (!certificate) throw new Error('AbsoluteJS Expo HTTPS development requires its development CA path.');\n\t\tconst resources = path.join(value.modRequest.platformProjectRoot, 'app', 'src', 'main', 'res');\n\t\tawait Promise.all([\n\t\t\tmkdir(path.join(resources, 'raw'), { recursive: true }),\n\t\t\tmkdir(path.join(resources, 'xml'), { recursive: true })\n\t\t]);\n\t\tawait Promise.all([\n\t\t\tcopyFile(certificate, path.join(resources, 'raw', 'absolutejs_dev_ca.pem')),\n\t\t\trequire('node:fs/promises').writeFile(path.join(resources, 'xml', 'absolutejs_dev_network_security.xml'), NETWORK_CONFIG)\n\t\t]);\n\t\treturn value;\n\t}]);\n};\n\nmodule.exports = withAbsoluteDevelopmentCa;\n`;\n\nconst metroConfig = (projectRoot: string) =>\n\t`${EXPO_GENERATED_HEADER}const { getDefaultConfig } = require('expo/metro-config');\nconst path = require('node:path');\n\nconst projectRoot = __dirname;\nconst appRoot = ${JSON.stringify(projectRoot)};\nconst config = getDefaultConfig(projectRoot);\nconfig.resolver.assetExts.push('absasset');\nconfig.resolver.nodeModulesPaths = [\n\tpath.join(projectRoot, 'node_modules'),\n\tpath.join(appRoot, 'node_modules')\n];\nconfig.watchFolders = [appRoot];\n\nmodule.exports = config;\n`;\n\nconst layoutSource = (auth: boolean, sync: boolean) =>\n\t`${EXPO_GENERATED_HEADER}import { Stack } from 'expo-router';\nimport '../src/generated/AbsoluteDevices';\n${auth ? \"import { useEffect, useState } from 'react';\\nimport { startAbsoluteExpoAuth } from '../src/generated/AbsoluteAuth';\" : ''}\n${sync ? \"import { startAbsoluteExpoSync } from '../src/generated/AbsoluteSync';\" : ''}\n\nexport default function AbsoluteLayout() {\n\t${\n\t\tauth\n\t\t\t? `const [ready, setReady] = useState(false);\n\tuseEffect(() => {\n\t\tlet active = true;\n\t\tvoid ${sync ? 'startAbsoluteExpoSync' : 'startAbsoluteExpoAuth'}().then(() => { if (active) setReady(true); });\n\t\treturn () => { active = false; };\n\t}, []);\n\tif (!ready) return null;`\n\t\t\t: ''\n\t}\n\treturn <Stack screenOptions={{ headerShown: false }} />;\n}\n`;\n\nconst nativeDiagnosticSource = `${EXPO_GENERATED_HEADER}import * as Haptics from 'expo-haptics';\nimport { Link } from 'expo-router';\nimport { Pressable, SafeAreaView, StyleSheet, Text, View } from 'react-native';\n\nexport default function AbsoluteNativeDiagnostic() {\n\treturn (\n\t\t<SafeAreaView style={styles.page}>\n\t\t\t<View style={styles.card}>\n\t\t\t\t<Text style={styles.eyebrow}>ABSOLUTEJS · EXPO EXPERIMENT</Text>\n\t\t\t\t<Text style={styles.title}>This screen is native React UI.</Text>\n\t\t\t\t<Text style={styles.body}>Ordinary AbsoluteJS routes remain embedded web routes. Only explicitly owned routes use React Native.</Text>\n\t\t\t\t<Pressable style={styles.button} onPress={() => Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium)}>\n\t\t\t\t\t<Text style={styles.buttonText}>Test native haptics</Text>\n\t\t\t\t</Pressable>\n\t\t\t\t<Link href=\"/\" style={styles.link}>Open the AbsoluteJS app</Link>\n\t\t\t</View>\n\t\t</SafeAreaView>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tbody: { color: '#cbd5e1', fontSize: 16, lineHeight: 24 },\n\tbutton: { backgroundColor: '#f8fafc', borderRadius: 12, padding: 14 },\n\tbuttonText: { color: '#020617', fontSize: 16, fontWeight: '700', textAlign: 'center' },\n\tcard: { backgroundColor: '#0f172a', borderRadius: 24, gap: 20, maxWidth: 560, padding: 28, width: '100%' },\n\teyebrow: { color: '#38bdf8', fontSize: 12, fontWeight: '800', letterSpacing: 1.5 },\n\tlink: { color: '#7dd3fc', fontSize: 16, textAlign: 'center' },\n\tpage: { alignItems: 'center', backgroundColor: '#020617', flex: 1, justifyContent: 'center', padding: 20 },\n\ttitle: { color: '#f8fafc', fontSize: 32, fontWeight: '800' }\n});\n`;\n\nconst devicesRuntimeSource = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tplan: AbsoluteDeviceCapabilityPlan,\n\tauth: boolean\n) => {\n\tconst imports = plan.capabilities.map((name, index) => {\n\t\tconst provider = plan.providers[name];\n\t\tif (!provider)\n\t\t\tthrow new TypeError(\n\t\t\t\t`Missing Expo device capability provider ${name}.`\n\t\t\t);\n\n\t\treturn `import { ${provider.factory} as absoluteExpoCapability${index} } from ${JSON.stringify(provider.module)};`;\n\t});\n\tconst pushIndex = plan.capabilities.indexOf('pushNotifications');\n\tconst push = pushIndex !== -1;\n\tif (push && !auth)\n\t\tthrow new TypeError(\n\t\t\t'Expo push notifications require the provisioned AbsoluteJS Auth runtime.'\n\t\t);\n\tconst entries = plan.capabilities\n\t\t.map(\n\t\t\t(name, index) =>\n\t\t\t\t`${JSON.stringify(name)}: absoluteExpoCapability${index}(${name === 'pushNotifications' ? 'absoluteExpoPushOptions' : ''})`\n\t\t)\n\t\t.join(',\\n\\t');\n\tconst pushSource = push\n\t\t? `const INSTALLATION_KEY = 'absolutejs.push.installation-id';\nconst requirePushResponse = async (response: Response, operation: string) => {\n\tif (!response.ok) throw new Error(\\`AbsoluteJS native push \\${operation} failed with HTTP \\${response.status}.\\`);\n\treturn response.json() as Promise<Record<string, unknown>>;\n};\nconst absoluteExpoPushOptions = {\n\tonRegistration: async (registration: { platform: 'apns' | 'fcm'; token: string }) => {\n\t\tconst known = await absoluteExpoDevices.storage.get(INSTALLATION_KEY);\n\t\tconst register = (installationId?: string | null) => absoluteExpoAuth.fetch('/auth/push', {\n\t\t\tbody: JSON.stringify({ ...(installationId ? { installationId } : {}), platform: registration.platform, token: registration.token }),\n\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\tmethod: 'POST'\n\t\t});\n\t\tlet response = await register(known);\n\t\tconst conflict = response.status === 409 && await response.clone().json().then(value => typeof value === 'object' && value !== null && Reflect.get(value, 'code') === 'installation-ownership').catch(() => false);\n\t\tif (known && conflict) {\n\t\t\tawait absoluteExpoDevices.storage.remove(INSTALLATION_KEY);\n\t\t\tresponse = await register();\n\t\t}\n\t\tconst result = await requirePushResponse(response, 'registration');\n\t\tif (typeof result.installationId !== 'string' || !result.installationId || result.installationId.length > 128) throw new Error('AbsoluteJS native push returned an invalid installation identity.');\n\t\tawait absoluteExpoDevices.storage.set(INSTALLATION_KEY, result.installationId);\n\t},\n\tonUnregistration: async () => {\n\t\tconst installationId = await absoluteExpoDevices.storage.get(INSTALLATION_KEY);\n\t\tif (!installationId) return;\n\t\tawait requirePushResponse(await absoluteExpoAuth.fetch('/auth/push', {\n\t\t\tbody: JSON.stringify({ installationId }),\n\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\tmethod: 'DELETE'\n\t\t}), 'removal');\n\t\tawait absoluteExpoDevices.storage.remove(INSTALLATION_KEY);\n\t}\n};`\n\t\t: '';\n\n\treturn `${EXPO_GENERATED_HEADER}import { installDeviceAdapter } from '@absolutejs/devices/runtime';\nimport { createExpoDeviceAdapter } from '@absolutejs/devices-expo';\n${push ? \"import { absoluteExpoAuth } from './AbsoluteAuth';\" : ''}\n${imports.join('\\n')}\n\n${pushSource}\n\nexport const absoluteExpoDeviceCapabilities = ${JSON.stringify(plan.capabilities)} as const;\nexport const absoluteExpoDevices = createExpoDeviceAdapter({\n\tstoragePrefix: ${JSON.stringify(`absolutejs.${config.appId}.`)},\n\t${entries}\n});\ninstallDeviceAdapter(absoluteExpoDevices);\nexport const beforeAbsoluteExpoDeviceSignOut = async () => {\n\t${push ? 'await absoluteExpoDevices.pushNotifications?.disable();' : ''}\n};\n${\n\tpush\n\t\t? `absoluteExpoAuth.onPrincipalChange(principal => {\n\tif (!principal) return;\n\tvoid absoluteExpoDevices.pushNotifications?.queryPermission().then(permission => permission.state === 'granted' ? absoluteExpoDevices.pushNotifications?.enable() : undefined).catch(() => undefined);\n});`\n\t\t: ''\n}\n`;\n};\n\nconst authRuntimeSource = (auth: AbsoluteMobileAuthManifest, appId: string) => {\n\tconst storageIdentity = createHash('sha256')\n\t\t.update(appId)\n\t\t.digest('hex')\n\t\t.slice(0, 24);\n\n\treturn `${EXPO_GENERATED_HEADER}import { createAbsoluteExpoAuthClient } from '@absolutejs/auth-expo';\nimport { createMobileAuthTransport, installAuthClientRuntimeTransport } from '@absolutejs/auth/client/mobile';\n\nexport const absoluteExpoAuth = createAbsoluteExpoAuthClient({\n\tallowedOrigins: [${JSON.stringify(auth.issuer)}],\n\tclientId: ${JSON.stringify(auth.clientId)},\n\tissuer: ${JSON.stringify(auth.issuer)},\n\tredirectUri: ${JSON.stringify(auth.redirectUri)},\n\tresource: ${JSON.stringify(auth.issuer)},\n\tscopes: ${JSON.stringify(auth.scopes)},\n\tstoragePrefix: ${JSON.stringify(`absolutejs.auth.${storageIdentity}`)}\n});\ninstallAuthClientRuntimeTransport(createMobileAuthTransport(absoluteExpoAuth, { baseUrl: ${JSON.stringify(auth.issuer)} }));\n\nlet currentPrincipal: Awaited<ReturnType<typeof absoluteExpoAuth.principal>> = null;\nabsoluteExpoAuth.onPrincipalChange(principal => {\n\tcurrentPrincipal = principal;\n});\nexport const getAbsoluteExpoAuthPrincipal = () => currentPrincipal;\n\nlet startPromise: Promise<void> | undefined;\nexport const startAbsoluteExpoAuth = () => {\n\tstartPromise ??= absoluteExpoAuth.start().then(async () => {\n\t\tcurrentPrincipal = await absoluteExpoAuth.principal();\n\t});\n\n\treturn startPromise;\n};\n`;\n};\n\nconst syncRuntimeSource = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tschema: SyncLocalStoreSchemaBundle\n) => {\n\tconst storageIdentity = createHash('sha256')\n\t\t.update(config.appId)\n\t\t.digest('hex')\n\t\t.slice(0, 24);\n\tconst backgroundEndpoint = new URL(\n\t\t'/__absolute/sync/background',\n\t\tconfig.productionOrigin\n\t).href;\n\tconst backgroundTask = `${config.appId}.absolutejs.sync`;\n\n\treturn `${EXPO_GENERATED_HEADER}import { runHeadlessSync } from '@absolutejs/sync/client/headless';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport { installSyncClientRuntimeTransport } from '@absolutejs/sync/client/runtime';\nimport {\n\tcreateExpoSyncBridgeHost,\n\tcreateExpoSyncLocalStore,\n\tcreateExpoSyncProtection,\n\tcreateExpoSyncSocketBridgeHost,\n\tdefineExpoSyncBackgroundTask,\n\tinstallExpoSyncLifecycle,\n\tregisterExpoSyncBackgroundTask\n} from '@absolutejs/sync-expo';\nimport * as Updates from 'expo-updates';\nimport { absoluteExpoAuth, startAbsoluteExpoAuth } from './AbsoluteAuth';\n\nconst BACKGROUND_TASK = ${JSON.stringify(backgroundTask)};\nconst BACKGROUND_ENDPOINT = ${JSON.stringify(backgroundEndpoint)};\nconst PRODUCTION_ORIGIN = ${JSON.stringify(config.productionOrigin)};\nconst STORAGE_SCHEMA: SyncLocalStoreSchemaBundle = ${JSON.stringify(schema)};\nconst store = createExpoSyncLocalStore({\n\tdatabaseName: ${JSON.stringify(`absolutejs-sync-${storageIdentity}.db`)},\n\tprotection: createExpoSyncProtection({ storagePrefix: ${JSON.stringify(`absolutejs.sync.${storageIdentity}`)} }),\n\tstorageSchema: STORAGE_SCHEMA\n});\n\nconst runBackgroundSync = async () => {\n\tawait startAbsoluteExpoAuth();\n\tconst principal = await absoluteExpoAuth.principal();\n\tif (!principal) return;\n\tawait runHeadlessSync({\n\t\tendpoint: BACKGROUND_ENDPOINT,\n\t\tfetch: (url, init) => absoluteExpoAuth.fetch(url, init),\n\t\tnamespace: principal.namespace,\n\t\tstore\n\t});\n};\ndefineExpoSyncBackgroundTask(BACKGROUND_TASK, runBackgroundSync);\n\nlet activeNamespace: string | undefined;\nlet started = false;\nlet startPromise: Promise<void> | undefined;\nexport const startAbsoluteExpoSync = () => {\n\tstartPromise ??= (async () => {\n\t\tawait startAbsoluteExpoAuth();\n\t\tconst principal = await absoluteExpoAuth.principal();\n\t\tactiveNamespace = principal?.namespace;\n\t\tinstallSyncClientRuntimeTransport({\n\t\t\t...(principal ? { durable: { namespace: principal.namespace, store }, socketTicket: () => absoluteExpoAuth.socketTicket() } : {}),\n\t\t\tregisterClient: client => installExpoSyncLifecycle({ client })\n\t\t});\n\t\tawait registerExpoSyncBackgroundTask(BACKGROUND_TASK, { minimumInterval: 15 });\n\t\tstarted = true;\n\t})();\n\n\treturn startPromise;\n};\n\nabsoluteExpoAuth.onPrincipalChange(principal => {\n\tif (!started || principal?.namespace === activeNamespace) return;\n\tvoid Updates.reloadAsync();\n});\n\nexport const createAbsoluteExpoSyncBridge = async (\n\temit: (event: 'sync.socket' | 'sync.wake', payload: Record<string, unknown>) => void\n) => {\n\tawait startAbsoluteExpoSync();\n\tconst principal = await absoluteExpoAuth.principal();\n\tif (!principal) return {\n\t\tclose: () => undefined,\n\t\trequest: async () => { throw new Error('Expo Sync requires an authenticated principal.'); }\n\t};\n\tconst transactions = createExpoSyncBridgeHost({ namespace: principal.namespace, store });\n\tconst sockets = createExpoSyncSocketBridgeHost({\n\t\tallowedOrigin: PRODUCTION_ORIGIN,\n\t\temit: payload => emit('sync.socket', payload),\n\t\tsocketTicket: audience => absoluteExpoAuth.socketTicket(audience)\n\t});\n\tconst removeLifecycle = installExpoSyncLifecycle({\n\t\tclient: { reconnect: () => emit('sync.wake', {}) }\n\t});\n\n\treturn {\n\t\tclose: async () => {\n\t\t\tremoveLifecycle();\n\t\t\tawait Promise.all([transactions.close(), sockets.close()]);\n\t\t},\n\t\trequest: (method: string, params: Record<string, unknown>) =>\n\t\t\tmethod.startsWith('sync.socket.')\n\t\t\t\t? sockets.request(method, params)\n\t\t\t\t: transactions.request(method, params)\n\t};\n};\n`;\n};\n\nconst webHostSource = (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tauth: AbsoluteMobileAuthManifest | undefined,\n\tsync: boolean\n) => {\n\tconst nativeRoutes = [\n\t\t'/__absolute/native',\n\t\t...Object.keys(config.expoNativeRoutes)\n\t];\n\tconst nativeRoutePatterns = nativeRoutes.map((route) =>\n\t\troute.split('/').filter(Boolean)\n\t);\n\n\treturn `${EXPO_GENERATED_HEADER}import * as Linking from 'expo-linking';\nimport { router, usePathname } from 'expo-router';\nimport { useEffect, useRef, useState } from 'react';\nimport { ActivityIndicator, BackHandler, Platform, StyleSheet, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { WebView, type WebViewMessageEvent } from 'react-native-webview';\nimport { materializeAbsoluteWebBundle } from './webAssets';\nimport { createExpoDevicesBridgeHost } from '@absolutejs/devices-expo/bridge';\nimport { absoluteExpoDevices, beforeAbsoluteExpoDeviceSignOut } from './AbsoluteDevices';\n${auth ? \"import { absoluteExpoAuth, getAbsoluteExpoAuthPrincipal, startAbsoluteExpoAuth } from './AbsoluteAuth';\" : ''}\n${sync ? \"import { createAbsoluteExpoSyncBridge, startAbsoluteExpoSync } from './AbsoluteSync';\" : ''}\n\nconst BRIDGE_FORMAT = 3;\nconst MAX_MESSAGE_BYTES = 64 * 1024;\nconst MAX_HTTP_BODY_BYTES = 48 * 1024;\nconst NATIVE_ROUTE_PATTERNS = ${JSON.stringify(nativeRoutePatterns)};\nconst PRODUCTION_ORIGIN = ${JSON.stringify(config.productionOrigin)};\nconst DEV_ORIGIN = Platform.OS === 'android'\n\t? process.env.EXPO_PUBLIC_ABSOLUTE_DEV_ANDROID_ORIGIN\n\t: process.env.EXPO_PUBLIC_ABSOLUTE_DEV_IOS_ORIGIN;\nconst HMR_TARGET = Platform.OS === 'android' ? 'expo-android' : 'expo-ios';\nconst AUTH_ENABLED = ${auth ? 'true' : 'false'};\nconst SYNC_ENABLED = ${sync ? 'true' : 'false'};\n\nconst isNativeRoute = (pathname: string) => {\n\tconst segments = pathname.split('/').filter(Boolean);\n\treturn NATIVE_ROUTE_PATTERNS.some(pattern => {\n\t\tfor (let index = 0; index < pattern.length; index += 1) {\n\t\t\tconst expected = pattern[index]!;\n\t\t\tif (expected === '*') return segments.length > index;\n\t\t\tif (segments[index] === undefined) return false;\n\t\t\tif (!expected.startsWith(':') && expected !== segments[index]) return false;\n\t\t}\n\t\treturn segments.length === pattern.length;\n\t});\n};\n\nconst hostMetricsScript = (safeAreaInsets: { bottom: number; left: number; right: number; top: number }) =>\n\t\\`globalThis.__absoluteNativeHostMetrics = \\${JSON.stringify({ safeAreaInsets })}; dispatchEvent(new CustomEvent('absolute:native-host-metrics', { detail: globalThis.__absoluteNativeHostMetrics })); true;\\`;\n\nconst bridgeBootstrap = (path: string, safeAreaInsets: { bottom: number; left: number; right: number; top: number }) => {\n\tconst initialPath = DEV_ORIGIN\n\t\t? 'location.pathname + location.search + location.hash'\n\t\t: JSON.stringify(path);\n\treturn \\`(() => {\n\tconst pending = new Map();\n\tconst listeners = new Map();\n\tlet sequence = 0;\n\tlet currentPath = \\${initialPath};\n\tglobalThis.__absoluteNativeHostMetrics = \\${JSON.stringify({ safeAreaInsets })};\n\tconst send = value => {\n\t\tconst source = JSON.stringify(value);\n\t\tif (new TextEncoder().encode(source).byteLength > 65536) throw new Error('Expo bridge message exceeds 64 KiB.');\n\t\twindow.ReactNativeWebView.postMessage(source);\n\t};\n\tglobalThis.__absoluteExpoReceive = source => {\n\t\tconst message = JSON.parse(source);\n\t\tif (message.kind === 'event') {\n\t\t\tfor (const listener of listeners.get(message.event) || []) listener(message.payload || {});\n\t\t\treturn;\n\t\t}\n\t\tconst operation = pending.get(message.id);\n\t\tif (!operation) return;\n\t\tpending.delete(message.id);\n\t\tclearTimeout(operation.timer);\n\t\tmessage.error ? operation.reject(new Error(message.error.message)) : operation.resolve(message.result);\n\t};\n\tglobalThis.__absoluteExpoBridge = {\n\t\ton(event, listener) {\n\t\t\tconst values = listeners.get(event) || new Set();\n\t\t\tvalues.add(listener);\n\t\t\tlisteners.set(event, values);\n\t\t\treturn () => {\n\t\t\t\tvalues.delete(listener);\n\t\t\t\tif (values.size === 0) listeners.delete(event);\n\t\t\t};\n\t\t},\n\t\trequest(method, params) {\n\t\t\tconst id = 'web_' + Date.now().toString(36) + '_' + (++sequence).toString(36);\n\t\t\tsend({ format: 3, id, kind: 'request', method, params, path: currentPath });\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst interactive = method.startsWith('devices.camera.') || method.startsWith('devices.photos.') || method.startsWith('devices.documents.') || method.endsWith('.requestPermission');\n\t\t\t\tconst timer = setTimeout(() => {\n\t\t\t\t\tpending.delete(id);\n\t\t\t\t\treject(new Error('Expo bridge request timed out.'));\n\t\t\t\t}, interactive ? 5 * 60 * 1000 : 30 * 1000);\n\t\t\t\tpending.set(id, { reject, resolve, timer });\n\t\t\t});\n\t\t},\n\t\tsetPath(path) {\n\t\t\tcurrentPath = path;\n\t\t\tsend({ format: 3, kind: 'event', event: 'navigation', path });\n\t\t}\n\t};\n\tglobalThis.__absoluteRequestBack = () => {\n\t\tconst event = new CustomEvent('absolute:back-request', { cancelable: true });\n\t\tif (!dispatchEvent(event)) return;\n\t\tsend({ format: 3, kind: 'event', event: 'back-unhandled', path: currentPath });\n\t};\n\tif (\\${DEV_ORIGIN ? 'true' : 'false'}) {\n\t\tconst publishPath = () => {\n\t\t\tconst path = location.pathname + location.search + location.hash;\n\t\t\tif (path === currentPath) return;\n\t\t\tcurrentPath = path;\n\t\t\tsend({ format: 3, kind: 'event', event: 'navigation', path });\n\t\t};\n\t\tfor (const method of ['pushState', 'replaceState']) {\n\t\t\tconst original = history[method];\n\t\t\thistory[method] = function(...args) {\n\t\t\t\tconst result = original.apply(this, args);\n\t\t\t\tpublishPath();\n\t\t\t\treturn result;\n\t\t\t};\n\t\t}\n\t\taddEventListener('popstate', publishPath);\n\t\taddEventListener('hashchange', publishPath);\n\t}\n\tdocument.addEventListener('click', event => {\n\t\tconst anchor = event.target instanceof Element ? event.target.closest('a[href]') : null;\n\t\tif (!anchor) return;\n\t\tconst url = new URL(anchor.href, location.href);\n\t\tif (!isNativeRoute(url.pathname)) return;\n\t\tevent.preventDefault();\n\t\tsend({ format: 3, kind: 'event', event: 'navigation', path: url.pathname + url.search + url.hash });\n\t}, true);\n\tsend({ format: 3, kind: 'event', event: 'ready', path: currentPath });\n})(); true;\\`;\n};\n\nconst bridgeFetch = async (params: Record<string, unknown>) => {\n\tif (typeof params.method !== 'string' || !['DELETE', 'GET', 'PATCH', 'POST', 'PUT'].includes(params.method) || typeof params.url !== 'string' || typeof params.headers !== 'object' || params.headers === null || Array.isArray(params.headers) || params.body !== undefined && typeof params.body !== 'string') throw new Error('Expo bridge HTTP request is invalid.');\n\tconst url = new URL(params.url);\n\tif (url.origin !== PRODUCTION_ORIGIN || url.username || url.password) throw new Error('Expo bridge HTTP request left productionOrigin.');\n\tconst headers = new Headers();\n\tfor (const [name, value] of Object.entries(params.headers as Record<string, unknown>)) {\n\t\tconst normalized = name.toLowerCase();\n\t\tif (typeof value !== 'string' || (normalized !== 'accept' && normalized !== 'content-type' && !normalized.startsWith('x-absolute-mobile-'))) throw new Error('Expo bridge HTTP header is not allowed.');\n\t\theaders.set(normalized, value);\n\t}\n\tconst response = await ${auth ? 'absoluteExpoAuth.fetchOptional' : 'fetch'}(url, { ...(typeof params.body === 'string' ? { body: params.body } : {}), headers, method: params.method, redirect: 'manual' });\n\tif (new URL(response.url || url.href).origin !== PRODUCTION_ORIGIN || response.status >= 300 && response.status < 400) throw new Error('Expo bridge HTTP redirects are not allowed.');\n\tconst body = await response.text();\n\tif (new TextEncoder().encode(body).byteLength > MAX_HTTP_BODY_BYTES) throw new Error('Expo bridge HTTP response exceeds 48 KiB.');\n\tconst responseHeaders: Record<string, string> = {};\n\tfor (const name of ['cache-control', 'content-type']) {\n\t\tconst value = response.headers.get(name);\n\t\tif (value) responseHeaders[name] = value;\n\t}\n\treturn { body, headers: responseHeaders, status: response.status };\n};\n\nconst authStatus = async () => {\n\t${\n\t\tauth\n\t\t\t? `const user = await absoluteExpoAuth.status();\n\tconst principal = getAbsoluteExpoAuthPrincipal();\n\treturn { principal: principal ? { namespace: principal.namespace } : null, user };`\n\t\t\t: \"throw new Error('Expo Auth is not configured.');\"\n\t}\n};\n\nexport function AbsoluteWebHost() {\n\tconst pathname = usePathname() || '/';\n\tconst safeAreaInsets = useSafeAreaInsets();\n\tconst webView = useRef<WebView>(null);\n\tconst devicesBridge = useRef<{ close(): void | Promise<void>; request(method: string, params: Record<string, unknown>): Promise<unknown> } | undefined>(undefined);\n\tconst syncBridge = useRef<{ close(): void | Promise<void>; request(method: string, params: Record<string, unknown>): Promise<unknown> } | undefined>(undefined);\n\tconst [indexUri, setIndexUri] = useState<string>();\n\tconst [canGoBack, setCanGoBack] = useState(false);\n\tconst [runtimeReady, setRuntimeReady] = useState(!AUTH_ENABLED && !SYNC_ENABLED);\n\tconst [devicesReady, setDevicesReady] = useState(false);\n\tconst activeWebPath = useRef(pathname);\n\n\tuseEffect(() => {\n\t\tif (!AUTH_ENABLED && !SYNC_ENABLED) return;\n\t\tlet active = true;\n\t\t${\n\t\t\tauth\n\t\t\t\t? `const stop = absoluteExpoAuth.onPrincipalChange(principal => {\n\t\t\tif (!active) return;\n\t\t\tconst source = JSON.stringify({ event: 'auth.principal', format: BRIDGE_FORMAT, kind: 'event', path: activeWebPath.current, payload: { principal: principal ? { namespace: principal.namespace } : null } });\n\t\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t\t});\n\t\tvoid ${sync ? 'startAbsoluteExpoSync' : 'startAbsoluteExpoAuth'}().then(async () => {\n\t\t\t${\n\t\t\t\tsync\n\t\t\t\t\t? `syncBridge.current = await createAbsoluteExpoSyncBridge((event, payload) => {\n\t\t\t\tconst source = JSON.stringify({ event, format: BRIDGE_FORMAT, kind: 'event', path: activeWebPath.current, payload });\n\t\t\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t\t\t});`\n\t\t\t\t\t: ''\n\t\t\t}\n\t\t\tif (active) setRuntimeReady(true);\n\t\t});\n\t\treturn () => {\n\t\t\tactive = false;\n\t\t\tstop();\n\t\t\tconst bridge = syncBridge.current;\n\t\t\tsyncBridge.current = undefined;\n\t\t\tvoid bridge?.close();\n\t\t};`\n\t\t\t\t: ''\n\t\t}\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (DEV_ORIGIN) {\n\t\t\tconst target = new URL(pathname, DEV_ORIGIN);\n\t\t\ttarget.searchParams.set('__absolute_target', HMR_TARGET);\n\t\t\tsetIndexUri(target.href);\n\t\t\treturn;\n\t\t}\n\t\tvoid materializeAbsoluteWebBundle().then(uri => setIndexUri(uri + '?absolutePath=' + encodeURIComponent(pathname)));\n\t}, [pathname]);\n\tuseEffect(() => {\n\t\twebView.current?.injectJavaScript(hostMetricsScript(safeAreaInsets));\n\t}, [safeAreaInsets.bottom, safeAreaInsets.left, safeAreaInsets.right, safeAreaInsets.top]);\n\tuseEffect(() => {\n\t\tconst subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n\t\t\tif (!indexUri) return false;\n\t\t\twebView.current?.injectJavaScript('globalThis.__absoluteRequestBack?.(); true;');\n\t\t\treturn true;\n\t\t});\n\t\treturn () => subscription.remove();\n\t}, [indexUri]);\n\n\tconst respond = (message: Record<string, unknown>) => {\n\t\tconst source = JSON.stringify(message).replaceAll('\\\\u2028', '\\\\\\\\u2028').replaceAll('\\\\u2029', '\\\\\\\\u2029');\n\t\tif (new TextEncoder().encode(source).byteLength > MAX_MESSAGE_BYTES) throw new Error('Expo bridge response exceeds 64 KiB.');\n\t\twebView.current?.injectJavaScript(\\`globalThis.__absoluteExpoReceive(\\${JSON.stringify(source)}); true;\\`);\n\t};\n\tuseEffect(() => {\n\t\tlet active = true;\n\t\tvoid createExpoDevicesBridgeHost(absoluteExpoDevices, (event, payload) => {\n\t\t\tif (!active) return;\n\t\t\trespond({ event, format: BRIDGE_FORMAT, kind: 'event', path: activeWebPath.current, payload });\n\t\t}).then(host => {\n\t\t\tif (!active) return void host.close();\n\t\t\tdevicesBridge.current = host;\n\t\t\tsetDevicesReady(true);\n\t\t});\n\t\treturn () => {\n\t\t\tactive = false;\n\t\t\tconst host = devicesBridge.current;\n\t\t\tdevicesBridge.current = undefined;\n\t\t\tvoid host?.close();\n\t\t};\n\t}, []);\n\tconst hasOrigin = (source: string, origin: string) => {\n\t\ttry { return new URL(source).origin === origin; } catch { return false; }\n\t};\n\tconst onMessage = async (event: WebViewMessageEvent) => {\n\t\tconst source = event.nativeEvent.data;\n\t\tif (new TextEncoder().encode(source).byteLength > MAX_MESSAGE_BYTES) return;\n\t\tlet message: Record<string, unknown>;\n\t\ttry { message = JSON.parse(source); } catch { return; }\n\t\tif (message.format !== BRIDGE_FORMAT || typeof message.path !== 'string' || !message.path.startsWith('/') || message.path.startsWith('//')) return;\n\t\tif (message.kind === 'event' && (message.event === 'navigation' || message.event === 'ready')) {\n\t\t\tconst target = new URL(message.path, PRODUCTION_ORIGIN);\n\t\t\tif (target.origin !== PRODUCTION_ORIGIN) return;\n\t\t\tif (isNativeRoute(target.pathname)) router.push(message.path as never);\n\t\t\telse activeWebPath.current = message.path;\n\t\t\treturn;\n\t\t}\n\t\tif (message.kind === 'event' && message.event === 'back-unhandled') {\n\t\t\tif (canGoBack) webView.current?.goBack();\n\t\t\telse BackHandler.exitApp();\n\t\t\treturn;\n\t\t}\n\t\tif (message.kind !== 'request' || typeof message.id !== 'string' || message.path !== activeWebPath.current) return;\n\t\ttry {\n\t\t\tif (typeof message.params !== 'object' || message.params === null || Array.isArray(message.params)) throw new Error('Expo bridge method params are invalid.');\n\t\t\tif (typeof message.method === 'string' && message.method.startsWith('devices.')) {\n\t\t\t\tif (!devicesBridge.current) throw new Error('Expo devices bridge is unavailable.');\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await devicesBridge.current.request(message.method, message.params as Record<string, unknown>) });\n\t\t\t} else if (message.method === 'http.fetch') {\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await bridgeFetch(message.params as Record<string, unknown>) });\n\t\t\t} else if (message.method === 'auth.signIn') {\n\t\t\t\t${\n\t\t\t\t\tauth\n\t\t\t\t\t\t? `const params = message.params as Record<string, unknown>;\n\t\t\t\tif (typeof params.email !== 'string' || typeof params.signup !== 'boolean') throw new Error('Expo Auth sign-in params are invalid.');\n\t\t\t\tawait absoluteExpoAuth.signIn({ authorizationParameters: { login_hint: params.email, ...(params.signup ? { screen_hint: 'signup' } : {}) } });\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await authStatus() });`\n\t\t\t\t\t\t: \"throw new Error('Expo Auth is not configured.');\"\n\t\t\t\t}\n\t\t\t} else if (message.method === 'auth.signOut') {\n\t\t\t\t${\n\t\t\t\t\tauth\n\t\t\t\t\t\t? `await beforeAbsoluteExpoDeviceSignOut();\n\t\t\t\tawait absoluteExpoAuth.signOut();\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: null });`\n\t\t\t\t\t\t: \"throw new Error('Expo Auth is not configured.');\"\n\t\t\t\t}\n\t\t\t} else if (message.method === 'auth.status') {\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await authStatus() });\n\t\t\t} else if (typeof message.method === 'string' && message.method.startsWith('sync.')) {\n\t\t\t\tif (!syncBridge.current) throw new Error('Expo Sync bridge is unavailable.');\n\t\t\t\trespond({ format: BRIDGE_FORMAT, id: message.id, kind: 'response', result: await syncBridge.current.request(message.method, message.params as Record<string, unknown>) });\n\t\t\t} else {\n\t\t\t\tthrow new Error('Expo bridge method is not allowed.');\n\t\t\t}\n\t\t} catch (error) {\n\t\t\trespond({ error: { code: 'failed', message: error instanceof Error ? error.message : 'Native operation failed.' }, format: BRIDGE_FORMAT, id: message.id, kind: 'response' });\n\t\t}\n\t};\n\n\tif (!indexUri || !runtimeReady || !devicesReady) return <View style={styles.loading}><ActivityIndicator /></View>;\n\treturn <WebView\n\t\tallowFileAccess\n\t\tallowFileAccessFromFileURLs\n\t\tallowUniversalAccessFromFileURLs={false}\n\t\tallowingReadAccessToURL={indexUri.slice(0, indexUri.lastIndexOf('/') + 1)}\n\t\tinjectedJavaScriptBeforeContentLoaded={bridgeBootstrap(pathname, safeAreaInsets)}\n\t\tonMessage={onMessage}\n\t\tonNavigationStateChange={state => setCanGoBack(state.canGoBack)}\n\t\tonShouldStartLoadWithRequest={request => {\n\t\t\tif (request.url.startsWith('file:') || hasOrigin(request.url, PRODUCTION_ORIGIN) || DEV_ORIGIN && hasOrigin(request.url, DEV_ORIGIN)) return true;\n\t\t\tvoid Linking.openURL(request.url);\n\t\t\treturn false;\n\t\t}}\n\t\tref={webView}\n\t\tsource={{ uri: indexUri }}\n\t\tstyle={styles.web}\n\t/>;\n}\n\nconst styles = StyleSheet.create({ loading: { alignItems: 'center', flex: 1, justifyContent: 'center' }, web: { flex: 1 } });\n`;\n};\n\nconst webRouteSource = `${EXPO_GENERATED_HEADER}import { AbsoluteWebHost } from '../src/generated/AbsoluteWebHost';\n\nexport default AbsoluteWebHost;\n`;\n\nconst catchAllRouteSource = `${EXPO_GENERATED_HEADER}import { AbsoluteWebHost } from '../src/generated/AbsoluteWebHost';\n\nexport default AbsoluteWebHost;\n`;\n\nconst nativeRouteRuntimeSource = (auth: boolean) =>\n\t`${EXPO_GENERATED_HEADER}import { useLocalSearchParams, usePathname } from 'expo-router';\nimport { type ComponentType, useEffect, useMemo, useState } from 'react';\nimport { ActivityIndicator, Platform, Pressable, StyleSheet, Text, View } from 'react-native';\nimport { ABSOLUTE_MOBILE_MANIFEST } from './webAssets';\n${auth ? \"import { absoluteExpoAuth } from './AbsoluteAuth';\" : ''}\n\nconst PAGE_MEDIA_TYPE = 'application/vnd.absolute.page+json';\nconst NATIVE_DATA_MEDIA_TYPE = 'application/vnd.absolute.native-route+json';\nconst PROTOCOL = 1;\nconst MAX_DATA_BYTES = 1024 * 1024;\nconst DEV_ORIGIN = Platform.OS === 'android'\n\t? process.env.EXPO_PUBLIC_ABSOLUTE_DEV_ANDROID_ORIGIN\n\t: process.env.EXPO_PUBLIC_ABSOLUTE_DEV_IOS_ORIGIN;\n\ntype RouteParams = Record<string, string | string[] | undefined>;\ntype NativeRouteProps<PageProps extends object, Params extends object> = {\n\tpageProps: Readonly<PageProps>;\n\tparams: Readonly<Params>;\n\treload: () => void;\n};\ntype NativeRouteState<PageProps> =\n\t| { kind: 'loading' }\n\t| { kind: 'ready'; pageProps: PageProps }\n\t| { kind: 'error' };\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\nconst routeSegmentPattern = (segment: string) => {\n\tif (segment === '*') return '.*';\n\tif (segment.startsWith(':') && segment.endsWith('?')) return '[^/]*';\n\tif (segment.startsWith(':')) return '[^/]+';\n\treturn segment.replace(/[.*+?^\\${}()|[\\\\]\\\\\\\\]/g, '\\\\\\\\$&');\n};\nconst matchesRoute = (pattern: string, pathname: string) =>\n\tnew RegExp('^' + pattern.split('/').map(routeSegmentPattern).join('/') + '/?$').test(pathname);\nconst requestPathFor = (pathname: string, params: RouteParams, pattern: string) => {\n\tconst pathNames = new Set(pattern.split('/').filter(segment => segment.startsWith(':')).map(segment => segment.replace(/^:/, '').replace(/\\\\?$/, '')));\n\tif (pattern.endsWith('/*')) pathNames.add('absoluteWildcard');\n\tconst query = new URLSearchParams();\n\tfor (const [name, value] of Object.entries(params).sort(([left], [right]) => left.localeCompare(right))) {\n\t\tif (pathNames.has(name) || name === '#' || value === undefined) continue;\n\t\tfor (const item of Array.isArray(value) ? value : [value]) query.append(name, item);\n\t}\n\tconst search = query.toString();\n\treturn pathname + (search ? '?' + search : '');\n};\nconst productionPage = (pathname: string) => {\n\tif (!ABSOLUTE_MOBILE_MANIFEST) throw new Error('AbsoluteJS native route data is not prepared for production.');\n\tconst route = ABSOLUTE_MOBILE_MANIFEST.routes.find(candidate => candidate.method === 'GET' && matchesRoute(candidate.pattern, pathname));\n\tif (!route) throw new Error('No trusted AbsoluteJS page route owns this native URL.');\n\tconst page = ABSOLUTE_MOBILE_MANIFEST.pages.find(candidate => candidate.pageId === route.pageId);\n\tif (!page) throw new Error('The embedded AbsoluteJS page contract is incomplete.');\n\treturn page;\n};\nconst createDataRequest = (path: string) => {\n\tconst development = typeof DEV_ORIGIN === 'string' && DEV_ORIGIN.length > 0;\n\tconst origin = development ? DEV_ORIGIN : ABSOLUTE_MOBILE_MANIFEST?.productionOrigin;\n\tif (!origin) throw new Error('AbsoluteJS native route data has no trusted server origin.');\n\tconst url = new URL(path, origin);\n\tif (url.origin !== new URL(origin).origin) throw new Error('AbsoluteJS native route data left its trusted origin.');\n\tconst headers = new Headers();\n\theaders.set('accept', development ? NATIVE_DATA_MEDIA_TYPE : PAGE_MEDIA_TYPE);\n\theaders.set('x-absolute-mobile-protocol', String(PROTOCOL));\n\tlet page: ReturnType<typeof productionPage> | undefined;\n\tif (!development) {\n\t\tpage = productionPage(url.pathname);\n\t\theaders.set('x-absolute-mobile-app-build', ABSOLUTE_MOBILE_MANIFEST!.appBuild);\n\t\theaders.set('x-absolute-mobile-page-bundle', page.bundleHash);\n\t\theaders.set('x-absolute-mobile-page-contracts', page.contract);\n\t\theaders.set('x-absolute-mobile-page-id', page.pageId);\n\t\theaders.set('x-absolute-mobile-runtime', ABSOLUTE_MOBILE_MANIFEST!.runtime);\n\t}\n\treturn { page, request: new Request(url, { headers, method: 'GET' }) };\n};\nconst requestData = async <PageProps extends object>(path: string, signal: AbortSignal) => {\n\tconst { page, request } = createDataRequest(path);\n\tconst response = await ${auth ? 'absoluteExpoAuth.fetchOptional' : 'fetch'}(request, { redirect: 'manual', signal });\n\tif (new URL(response.url || request.url).origin !== new URL(request.url).origin || response.status >= 300 && response.status < 400) throw new Error('AbsoluteJS native route data redirected outside its contract.');\n\tconst source = await response.text();\n\tif (new TextEncoder().encode(source).byteLength > MAX_DATA_BYTES) throw new Error('AbsoluteJS native route data exceeded 1 MiB.');\n\tlet envelope: unknown;\n\ttry { envelope = JSON.parse(source); } catch { throw new Error('The server did not return an AbsoluteJS page envelope.'); }\n\tif (!isRecord(envelope) || envelope.protocol !== PROTOCOL || !isRecord(envelope.response)) throw new Error('The server returned an invalid AbsoluteJS page envelope.');\n\tconst result = envelope.response;\n\tif (result.kind === 'upgrade-required') throw new Error('This app version must be updated before opening this screen.');\n\tif (result.kind !== 'page' || !isRecord(result.props) || typeof result.pageId !== 'string' || typeof result.contract !== 'string') throw new Error('The server did not produce native route page props.');\n\tif (page && (result.pageId !== page.pageId || result.contract !== page.contract)) throw new Error('The server returned a different page contract than this app contains.');\n\treturn result.props as PageProps;\n};\n\nexport const createAbsoluteNativeRoute = <\n\tPageProps extends object,\n\tParams extends object = RouteParams\n>(Component: ComponentType<NativeRouteProps<PageProps, Params>>, pattern: string) => {\n\tfunction AbsoluteNativeRouteScreen() {\n\t\tconst pathname = usePathname() || '/';\n\t\tconst params = useLocalSearchParams() as RouteParams;\n\t\tconst parameterKey = JSON.stringify(params);\n\t\tconst requestPath = useMemo(() => requestPathFor(pathname, params, pattern), [parameterKey, pathname]);\n\t\tconst [revision, setRevision] = useState(0);\n\t\tconst [state, setState] = useState<NativeRouteState<PageProps>>({ kind: 'loading' });\n\t\tuseEffect(() => {\n\t\t\tconst controller = new AbortController();\n\t\t\tsetState({ kind: 'loading' });\n\t\t\tvoid requestData<PageProps>(requestPath, controller.signal).then(\n\t\t\t\tpageProps => { if (!controller.signal.aborted) setState({ kind: 'ready', pageProps }); },\n\t\t\t\t() => { if (!controller.signal.aborted) setState({ kind: 'error' }); }\n\t\t\t);\n\t\t\treturn () => controller.abort();\n\t\t}, [requestPath, revision]);\n\t\tconst reload = () => setRevision(value => value + 1);\n\t\tif (state.kind === 'loading') return <View style={styles.center}><ActivityIndicator accessibilityLabel=\"Loading screen\" /></View>;\n\t\tif (state.kind === 'error') return <View style={styles.center}><Text accessibilityRole=\"alert\" style={styles.error}>This screen could not load.</Text><Pressable accessibilityRole=\"button\" onPress={reload} style={styles.button}><Text>Try again</Text></Pressable></View>;\n\t\treturn <Component pageProps={state.pageProps} params={params as Params} reload={reload} />;\n\t}\n\treturn AbsoluteNativeRouteScreen;\n};\n\nconst styles = StyleSheet.create({\n\tbutton: { backgroundColor: '#e2e8f0', borderRadius: 10, paddingHorizontal: 16, paddingVertical: 12 },\n\tcenter: { alignItems: 'center', flex: 1, gap: 16, justifyContent: 'center', padding: 24 },\n\terror: { color: '#b91c1c', fontSize: 16, textAlign: 'center' }\n});\n`;\n\nconst nativeWrapperSource = (\n\twrapper: string,\n\tmodule: string,\n\truntime: string,\n\troute: string\n) =>\n\t`${EXPO_GENERATED_HEADER}import ApplicationNativeRoute from ${JSON.stringify(portableRelative(dirname(wrapper), module).replace(/\\.(?:[cm]?[jt]sx?)$/u, ''))};\nimport { createAbsoluteNativeRoute } from ${JSON.stringify(portableRelative(dirname(wrapper), runtime).replace(/\\.(?:[cm]?[jt]sx?)$/u, ''))};\n\nexport default createAbsoluteNativeRoute(ApplicationNativeRoute, ${JSON.stringify(route)});\n`;\n\nconst expoTsConfig = (\n\tprojectRoot: string,\n\tproject: string,\n\tauth: boolean,\n\tsync: boolean\n) => ({\n\tcompilerOptions: {\n\t\tpaths: {\n\t\t\t...(auth\n\t\t\t\t? {\n\t\t\t\t\t\t'@absolutejs/auth': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/auth/dist/index.d.ts'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/auth/*': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/auth/dist/*'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(sync\n\t\t\t\t? {\n\t\t\t\t\t\t'@absolutejs/sync': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync/dist/index.d.ts'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/sync-expo': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync-expo/dist/index.d.ts'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/sync-expo/*': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync-expo/dist/*'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t'@absolutejs/sync/*': [\n\t\t\t\t\t\t\t'./node_modules/@absolutejs/sync/dist/*'\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t'*': [\n\t\t\t\t'./node_modules/*',\n\t\t\t\t`${portableRelative(project, projectRoot)}/node_modules/*`\n\t\t\t],\n\t\t\treact: ['./node_modules/@types/react/index.d.ts'],\n\t\t\t'react/*': ['./node_modules/@types/react/*']\n\t\t},\n\t\tstrict: true\n\t},\n\textends: 'expo/tsconfig.base'\n});\n\nconst writeManagedFile = async (\n\tpath: string,\n\tsource: string,\n\tforce: boolean\n) => {\n\tawait mkdir(dirname(path), { recursive: true });\n\tif (await exists(path)) {\n\t\tconst current = await readFile(path, 'utf8');\n\t\tif (current === source) return false;\n\t\tif (!force && !current.startsWith(EXPO_GENERATED_HEADER)) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo project file ${path} is not AbsoluteJS-managed; rerun with --force only after reviewing it.`\n\t\t\t);\n\t\t}\n\t}\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst pruneStaleManagedExpoRoutes = async (\n\tproject: string,\n\texpected: ReadonlySet<string>\n) => {\n\tconst appDirectory = join(project, 'app');\n\tif (!(await exists(appDirectory))) return 0;\n\tconst files = await walkFiles(appDirectory);\n\tconst stale = (\n\t\tawait Promise.all(\n\t\t\tfiles.map(async (path) => ({\n\t\t\t\tmanaged:\n\t\t\t\t\tpath.endsWith('.tsx') &&\n\t\t\t\t\t(await readFile(path, 'utf8')).startsWith(\n\t\t\t\t\t\tEXPO_GENERATED_HEADER\n\t\t\t\t\t),\n\t\t\t\tpath\n\t\t\t}))\n\t\t)\n\t).filter(({ managed, path }) => managed && !expected.has(path));\n\tawait Promise.all(stale.map(({ path }) => rm(path, { force: true })));\n\n\treturn stale.length;\n};\n\nconst jsonSource = (value: unknown) => `${JSON.stringify(value, null, '\\t')}\\n`;\n\nconst nativeDataManifestTypeSource = `type AbsoluteMobileManifest = {\n\tappBuild: string;\n\tpages: readonly { bundleHash: string; contract: string; pageId: string }[];\n\tproductionOrigin: string;\n\troutes: readonly { method: 'GET'; pageId: string; pattern: string }[];\n\truntime: string;\n};\n`;\n\nconst emptyWebAssetsSource = `${EXPO_GENERATED_HEADER}${nativeDataManifestTypeSource}\nexport const materializeAbsoluteWebBundle = async () => {\n\tthrow new Error('The embedded AbsoluteJS bundle is unavailable. Run absolute prepare before a production Expo build.');\n};\nexport const ABSOLUTE_MOBILE_MANIFEST: AbsoluteMobileManifest | undefined = undefined;\n`;\n\nexport const writeAbsoluteExpoProject = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\toptions: WriteAbsoluteExpoProjectOptions\n) => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError(\n\t\t\t'Expo project generation requires mobile.engine: expo.'\n\t\t);\n\tconst projectRoot = resolve(options.projectRoot);\n\tconst project = config.nativeProjectDirectory;\n\tconst auth = resolveAbsoluteMobileAuthManifest(projectRoot, config);\n\tconst devices = resolveAbsoluteDeviceCapabilityPlan(projectRoot, 'expo');\n\tconst syncEnabled = Boolean(auth && projectUsesAbsoluteSync(projectRoot));\n\tconst syncSchema = syncEnabled\n\t\t? { components: discoverAbsoluteSyncSchema(projectRoot).components }\n\t\t: undefined;\n\tconst routeModules = Object.entries(config.expoNativeRoutes);\n\tconst moduleChecks = await Promise.all(\n\t\trouteModules.map(async ([route, module]) => ({\n\t\t\texists: await exists(module),\n\t\t\tmodule,\n\t\t\troute\n\t\t}))\n\t);\n\tconst missing = moduleChecks.find((entry) => !entry.exists);\n\tif (missing) {\n\t\tthrow new TypeError(\n\t\t\t`Expo native route ${missing.route} references missing module ${missing.module}.`\n\t\t);\n\t}\n\tconst marker = join(project, EXPO_PROJECT_MARKER);\n\tif ((await exists(project)) && !(await exists(marker))) {\n\t\tconst entries = await readdir(project);\n\t\tif (entries.length > 0 && !options.force) {\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo project directory ${project} is not AbsoluteJS-managed; rerun with --force only after reviewing it.`\n\t\t\t);\n\t\t}\n\t}\n\tawait mkdir(project, { recursive: true });\n\tawait writeFile(marker, 'format=1\\n');\n\tconst authEnabled = Boolean(auth);\n\tconst files = new Map<string, string>([\n\t\t[\n\t\t\tjoin(project, '.gitignore'),\n\t\t\t'.expo/\\nandroid/\\nios/\\nnode_modules/\\n'\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'app.json'),\n\t\t\tjsonSource(expoAppConfig(config, authEnabled, syncEnabled, devices))\n\t\t],\n\t\t[join(project, 'app.config.js'), expoDynamicAppConfig],\n\t\t[\n\t\t\tjoin(project, 'package.json'),\n\t\t\tjsonSource(expoPackage(authEnabled, syncEnabled, devices))\n\t\t],\n\t\t[join(project, 'metro.config.js'), metroConfig(projectRoot)],\n\t\t[\n\t\t\tjoin(project, 'plugins', 'withAbsoluteDevelopmentCa.js'),\n\t\t\texpoDevelopmentCaPlugin\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'tsconfig.json'),\n\t\t\tjsonSource(\n\t\t\t\texpoTsConfig(projectRoot, project, authEnabled, syncEnabled)\n\t\t\t)\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'app', '_layout.tsx'),\n\t\t\tlayoutSource(authEnabled, syncEnabled)\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'app', '__absolute', 'native', 'index.tsx'),\n\t\t\tnativeDiagnosticSource\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteDevices.ts'),\n\t\t\tdevicesRuntimeSource(config, devices, authEnabled)\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteNativeRoute.tsx'),\n\t\t\tnativeRouteRuntimeSource(authEnabled)\n\t\t],\n\t\t[\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteWebHost.tsx'),\n\t\t\twebHostSource(config, auth, syncEnabled)\n\t\t]\n\t]);\n\tif (auth) {\n\t\tfiles.set(\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteAuth.ts'),\n\t\t\tauthRuntimeSource(auth, config.appId)\n\t\t);\n\t}\n\tif (syncSchema) {\n\t\tfiles.set(\n\t\t\tjoin(project, 'src', 'generated', 'AbsoluteSync.ts'),\n\t\t\tsyncRuntimeSource(config, syncSchema)\n\t\t);\n\t}\n\tconst webAssetsPath = join(project, 'src', 'generated', 'webAssets.ts');\n\tif (!(await exists(webAssetsPath))) {\n\t\tfiles.set(webAssetsPath, emptyWebAssetsSource);\n\t}\n\tif (!config.expoNativeRoutes['/']) {\n\t\tfiles.set(join(project, 'app', 'index.tsx'), webRouteSource);\n\t}\n\tfiles.set(join(project, 'app', '[...absolute].tsx'), catchAllRouteSource);\n\tconst nativeRouteRuntime = join(\n\t\tproject,\n\t\t'src',\n\t\t'generated',\n\t\t'AbsoluteNativeRoute.tsx'\n\t);\n\tfor (const [route, module] of routeModules) {\n\t\tconst wrapper =\n\t\t\troute === '/'\n\t\t\t\t? join(project, 'app', 'index.tsx')\n\t\t\t\t: routeFile(project, route);\n\t\tfiles.set(\n\t\t\twrapper,\n\t\t\tnativeWrapperSource(wrapper, module, nativeRouteRuntime, route)\n\t\t);\n\t}\n\tconst removed = await pruneStaleManagedExpoRoutes(\n\t\tproject,\n\t\tnew Set(\n\t\t\t[...files.keys()].filter((path) =>\n\t\t\t\tpath.startsWith(`${join(project, 'app')}${sep}`)\n\t\t\t)\n\t\t)\n\t);\n\tconst changes = await Promise.all(\n\t\t[...files].map(([path, source]) => writeManagedFile(path, source, true))\n\t);\n\tconst changed = removed + changes.filter(Boolean).length;\n\n\treturn { changed, path: project, written: [...files.keys()] };\n};\n\nconst walkFiles = async (root: string, directory = root): Promise<string[]> => {\n\tconst entries = await readdir(directory, { withFileTypes: true });\n\tconst nested = await Promise.all(\n\t\tentries.map((entry) => {\n\t\t\tconst path = join(directory, entry.name);\n\t\t\tif (entry.isDirectory()) return walkFiles(root, path);\n\t\t\tif (entry.isFile()) return [path];\n\t\t\tthrow new TypeError(\n\t\t\t\t`Expo embedded bundle cannot contain a symbolic link or special file: ${path}.`\n\t\t\t);\n\t\t})\n\t);\n\n\treturn nested.flat().sort();\n};\n\nconst renameIfPresent = async (source: string, destination: string) => {\n\ttry {\n\t\tawait rename(source, destination);\n\n\t\treturn true;\n\t} catch (error) {\n\t\tif (\n\t\t\ttypeof error === 'object' &&\n\t\t\terror !== null &&\n\t\t\tReflect.get(error, 'code') === 'ENOENT'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tthrow error;\n\t}\n};\n\nconst installStagedDirectory = async (staging: string, destination: string) => {\n\tconst backup = `${destination}.previous-${crypto.randomUUID()}`;\n\tconst moved = await renameIfPresent(destination, backup);\n\ttry {\n\t\tawait rename(staging, destination);\n\t\tif (moved) await rm(backup, { force: true, recursive: true });\n\t} catch (error) {\n\t\tif (moved) await rename(backup, destination);\n\t\tthrow error;\n\t}\n};\n\nconst assetModuleSource = (\n\tassets: AbsoluteExpoAssetEntry[],\n\tbundleId: string,\n\tmanifest: AbsoluteExpoNativeDataManifest\n) => `${EXPO_GENERATED_HEADER}import { Asset } from 'expo-asset';\nimport { Directory, File, Paths } from 'expo-file-system';\n\n${nativeDataManifestTypeSource}\ndeclare const require: (path: string) => number;\nconst BUNDLE_ID = ${JSON.stringify(bundleId)};\nexport const ABSOLUTE_MOBILE_MANIFEST: AbsoluteMobileManifest = ${JSON.stringify(manifest)};\nconst ASSETS = [\n${assets.map(({ asset, path }) => `\\t{ module: require(${JSON.stringify(asset)}), path: ${JSON.stringify(path)} }`).join(',\\n')}\n] as const;\n\nexport const materializeAbsoluteWebBundle = async () => {\n\tconst root = new Directory(Paths.document, 'absolutejs-web', BUNDLE_ID);\n\troot.create({ idempotent: true, intermediates: true });\n\tfor (const entry of ASSETS) {\n\t\tconst parts = entry.path.split('/');\n\t\tconst name = parts.pop();\n\t\tif (!name) throw new Error('AbsoluteJS embedded asset path is invalid.');\n\t\tconst directory = new Directory(root, ...parts);\n\t\tdirectory.create({ idempotent: true, intermediates: true });\n\t\tconst destination = new File(directory, name);\n\t\tif (destination.exists) continue;\n\t\tconst asset = await Asset.fromModule(entry.module).downloadAsync();\n\t\tif (!asset.localUri) throw new Error('Expo did not materialize an embedded AbsoluteJS asset.');\n\t\tnew File(asset.localUri).copy(destination);\n\t}\n\n\treturn new File(root, 'index.html').uri;\n};\n`;\n\nexport const syncAbsoluteExpoWebAssets = async (\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tif (config.engine !== 'expo')\n\t\tthrow new TypeError('Expo asset sync requires mobile.engine: expo.');\n\tconst marker = join(config.nativeProjectDirectory, EXPO_PROJECT_MARKER);\n\tif (!(await exists(marker))) {\n\t\tthrow new TypeError(\n\t\t\t'Expo asset sync requires an AbsoluteJS-managed Expo project. Run mobile init first.'\n\t\t);\n\t}\n\tconst manifestPath = join(\n\t\tconfig.bundleDirectory,\n\t\t'absolute-mobile-manifest.json'\n\t);\n\tconst manifest: unknown = JSON.parse(await readFile(manifestPath, 'utf8'));\n\tconst nativeDataManifest = expoNativeDataManifest(manifest);\n\tconst { appBuild } = nativeDataManifest;\n\tconst files = await walkFiles(config.bundleDirectory);\n\tconst bundleHash = createHash('sha256');\n\tconst filesWithContents = await Promise.all(\n\t\tfiles.map(async (file) => ({ contents: await readFile(file), file }))\n\t);\n\tfilesWithContents.forEach(({ contents, file }) => {\n\t\tbundleHash.update(\n\t\t\trelative(config.bundleDirectory, file).replaceAll('\\\\', '/')\n\t\t);\n\t\tbundleHash.update('\\0');\n\t\tbundleHash.update(contents);\n\t\tbundleHash.update('\\0');\n\t});\n\tconst bundleId = `amexpo_${bundleHash.digest('hex')}`;\n\tconst destination = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'assets',\n\t\t'absolute'\n\t);\n\tawait mkdir(dirname(destination), { recursive: true });\n\tconst staging = await mkdtemp(\n\t\tjoin(dirname(destination), `.${basename(destination)}.stage-`)\n\t);\n\tlet assets: AbsoluteExpoAssetEntry[];\n\ttry {\n\t\tassets = await Promise.all(\n\t\t\tfiles.map(async (source, index) => {\n\t\t\t\tconst name = `${String(index).padStart(6, '0')}${EXPO_ASSET_EXTENSION}`;\n\t\t\t\tawait cp(source, join(staging, name));\n\n\t\t\t\treturn {\n\t\t\t\t\tasset: portableRelative(\n\t\t\t\t\t\tjoin(config.nativeProjectDirectory, 'src', 'generated'),\n\t\t\t\t\t\tjoin(destination, name)\n\t\t\t\t\t),\n\t\t\t\t\tpath: relative(config.bundleDirectory, source).replaceAll(\n\t\t\t\t\t\t'\\\\',\n\t\t\t\t\t\t'/'\n\t\t\t\t\t)\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\t\tawait installStagedDirectory(staging, destination);\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\t\tthrow error;\n\t}\n\tconst generated = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'src',\n\t\t'generated',\n\t\t'webAssets.ts'\n\t);\n\tawait writeManagedFile(\n\t\tgenerated,\n\t\tassetModuleSource(assets, bundleId, nativeDataManifest),\n\t\ttrue\n\t);\n\n\treturn { appBuild, assets: assets.length, bundleId, path: destination };\n};\n",
|
|
46
|
-
"
|
|
46
|
+
"import { createHash } from 'node:crypto';\nimport type { AbsoluteDeviceCapabilityPlan } from './deviceCapabilities';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport type { AbsoluteMobileAuthManifest } from './nativeAuth';\nimport type { SyncLocalStoreSchemaBundle } from '@absolutejs/sync/client';\nimport { canonicalizeAbsoluteMobileUpdate } from './updateProtocol';\n\nexport const ABSOLUTE_MOBILE_SHELL_ABI = 1 as const;\nexport const ABSOLUTE_MOBILE_UPDATE_RUNTIME_FORMAT = 1 as const;\n\nexport type AbsoluteMobileUpdateRuntimeDescriptor = {\n\tappId: string;\n\tauth: AbsoluteMobileAuthManifest | null;\n\tdeepLinks: { hosts: string[]; scheme?: string };\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan;\n\tengine: 'capacitor' | 'expo';\n\tformat: typeof ABSOLUTE_MOBILE_UPDATE_RUNTIME_FORMAT;\n\tshellAbi: typeof ABSOLUTE_MOBILE_SHELL_ABI;\n\tsyncSchema: SyncLocalStoreSchemaBundle | null;\n\tupdates: NormalizedAbsoluteMobileConfig['updates'] | null;\n};\n\nexport const createAbsoluteMobileUpdateRuntimeDescriptor = (options: {\n\tauth?: AbsoluteMobileAuthManifest;\n\tconfig: NormalizedAbsoluteMobileConfig;\n\tdeviceCapabilities: AbsoluteDeviceCapabilityPlan;\n\tsyncSchema?: SyncLocalStoreSchemaBundle;\n}): AbsoluteMobileUpdateRuntimeDescriptor => ({\n\tappId: options.config.appId,\n\tauth: options.auth ?? null,\n\tdeepLinks: {\n\t\thosts: options.config.deepLinkHosts,\n\t\t...(options.config.deepLinkScheme\n\t\t\t? { scheme: options.config.deepLinkScheme }\n\t\t\t: {})\n\t},\n\tdeviceCapabilities: options.deviceCapabilities,\n\tengine: options.config.engine,\n\tformat: ABSOLUTE_MOBILE_UPDATE_RUNTIME_FORMAT,\n\tshellAbi: ABSOLUTE_MOBILE_SHELL_ABI,\n\tsyncSchema: options.syncSchema ?? null,\n\tupdates: options.config.updates ?? null\n});\n\nexport const fingerprintAbsoluteMobileUpdateRuntime = (\n\tdescriptor: AbsoluteMobileUpdateRuntimeDescriptor\n) =>\n\tcreateHash('sha256')\n\t\t.update(canonicalizeAbsoluteMobileUpdate(descriptor))\n\t\t.digest('hex');\n",
|
|
47
|
+
"export const ABSOLUTE_MOBILE_UPDATE_FORMAT = 1 as const;\nexport const ABSOLUTE_MOBILE_UPDATE_MAX_FILE_BYTES = 32 * 1024 * 1024;\nexport const ABSOLUTE_MOBILE_UPDATE_MAX_FILES = 10_000;\nexport const ABSOLUTE_MOBILE_UPDATE_MAX_TOTAL_BYTES = 128 * 1024 * 1024;\nexport const ABSOLUTE_MOBILE_UPDATE_SIGNATURE_ALGORITHM =\n\t'ecdsa-p256-sha256' as const;\n\nexport type AbsoluteMobileUpdateClassification =\n\t| 'bug-fix'\n\t| 'content'\n\t| 'security';\n\nexport type AbsoluteMobileUpdateFile = {\n\tbytes: number;\n\tpath: string;\n\tsha256: string;\n};\n\nexport type AbsoluteMobileUnsignedUpdateManifest = {\n\tappId: string;\n\tchannel: string;\n\tclassification: AbsoluteMobileUpdateClassification;\n\tcreatedAt: string;\n\tfiles: AbsoluteMobileUpdateFile[];\n\tformat: typeof ABSOLUTE_MOBILE_UPDATE_FORMAT;\n\t/** A content identity for the complete update, excluding its signature. */\n\treleaseId: string;\n\t/** Locks an update to the native plugins, bridge, Auth, and local-data ABI. */\n\truntimeFingerprint: string;\n\t/** Store-policy attestation. Feature/primary-purpose changes require a store build. */\n\twithinSubmittedPurpose: true;\n};\n\nexport type AbsoluteMobileUpdateManifest =\n\tAbsoluteMobileUnsignedUpdateManifest & {\n\t\tsignature: {\n\t\t\talgorithm: typeof ABSOLUTE_MOBILE_UPDATE_SIGNATURE_ALGORITHM;\n\t\t\tkeyId: string;\n\t\t\tvalue: string;\n\t\t};\n\t};\n\nconst HASH_PATTERN = /^[a-f0-9]{64}$/u;\nconst RELEASE_PATTERN = /^amu_[a-f0-9]{64}$/u;\nconst KEY_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;\nconst CHANNEL_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/u;\nconst isClassification = (\n\tvalue: unknown\n): value is AbsoluteMobileUpdateClassification =>\n\tvalue === 'bug-fix' || value === 'content' || value === 'security';\n\nconst object = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst canonicalValue = (value: unknown): unknown => {\n\tif (Array.isArray(value)) return value.map(canonicalValue);\n\tif (!object(value)) return value;\n\n\treturn Object.fromEntries(\n\t\tObject.keys(value)\n\t\t\t.sort()\n\t\t\t.map((key) => [key, canonicalValue(value[key])])\n\t);\n};\n\nexport const absoluteMobileUpdateSigningPayload = (\n\tmanifest: AbsoluteMobileUnsignedUpdateManifest\n) => new TextEncoder().encode(canonicalizeAbsoluteMobileUpdate(manifest));\nexport const canonicalizeAbsoluteMobileUpdate = (value: unknown) =>\n\tJSON.stringify(canonicalValue(value));\n\nconst requireText = (value: unknown, field: string) => {\n\tif (typeof value !== 'string' || value.length === 0)\n\t\tthrow new TypeError(`${field} must be a non-empty string.`);\n\n\treturn value;\n};\n\nexport const normalizeAbsoluteMobileUpdatePath = (value: unknown) => {\n\tconst path = requireText(value, 'Update file path').replaceAll('\\\\', '/');\n\tif (\n\t\tpath.startsWith('/') ||\n\t\tpath.includes('\\0') ||\n\t\tpath\n\t\t\t.split('/')\n\t\t\t.some((segment) => !segment || segment === '.' || segment === '..')\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Update file paths must be normalized relative paths.'\n\t\t);\n\t}\n\n\treturn path;\n};\n\nconst parseFile = (value: unknown): AbsoluteMobileUpdateFile => {\n\tif (!object(value)) throw new TypeError('Update files must be objects.');\n\tconst path = normalizeAbsoluteMobileUpdatePath(value.path);\n\tif (\n\t\ttypeof value.bytes !== 'number' ||\n\t\t!Number.isSafeInteger(value.bytes) ||\n\t\tvalue.bytes < 0 ||\n\t\tvalue.bytes > ABSOLUTE_MOBILE_UPDATE_MAX_FILE_BYTES\n\t) {\n\t\tthrow new TypeError(`Update file ${path} has an invalid byte length.`);\n\t}\n\tif (typeof value.sha256 !== 'string' || !HASH_PATTERN.test(value.sha256))\n\t\tthrow new TypeError(\n\t\t\t`Update file ${path} has an invalid SHA-256 digest.`\n\t\t);\n\n\treturn { bytes: value.bytes, path, sha256: value.sha256 };\n};\n\nexport const parseAbsoluteMobileUnsignedUpdateManifest = (\n\tvalue: unknown\n): AbsoluteMobileUnsignedUpdateManifest => {\n\tif (!object(value) || value.format !== ABSOLUTE_MOBILE_UPDATE_FORMAT)\n\t\tthrow new TypeError('Invalid AbsoluteJS mobile update manifest.');\n\tconst appId = requireText(value.appId, 'Update appId');\n\tconst channel = requireText(value.channel, 'Update channel');\n\tif (!CHANNEL_PATTERN.test(channel))\n\t\tthrow new TypeError('Update channel contains unsupported characters.');\n\tif (!isClassification(value.classification))\n\t\tthrow new TypeError('Update classification is invalid.');\n\tconst createdAt = requireText(value.createdAt, 'Update createdAt');\n\tif (\n\t\t!Number.isFinite(Date.parse(createdAt)) ||\n\t\tnew Date(createdAt).toISOString() !== createdAt\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Update createdAt must be a canonical ISO timestamp.'\n\t\t);\n\tif (!Array.isArray(value.files) || value.files.length === 0)\n\t\tthrow new TypeError('An update must contain at least one file.');\n\tif (value.files.length > ABSOLUTE_MOBILE_UPDATE_MAX_FILES)\n\t\tthrow new TypeError('Update contains too many files.');\n\tconst files = value.files.map(parseFile);\n\tconst sorted = [...files].sort((left, right) =>\n\t\tleft.path.localeCompare(right.path)\n\t);\n\tif (files.some((file, index) => file.path !== sorted[index]?.path))\n\t\tthrow new TypeError('Update files must be sorted by path.');\n\tif (new Set(files.map(({ path }) => path)).size !== files.length)\n\t\tthrow new TypeError('Update file paths must be unique.');\n\tif (\n\t\tfiles.reduce((total, file) => total + file.bytes, 0) >\n\t\tABSOLUTE_MOBILE_UPDATE_MAX_TOTAL_BYTES\n\t)\n\t\tthrow new TypeError('Update exceeds the maximum uncompressed size.');\n\tif (\n\t\ttypeof value.releaseId !== 'string' ||\n\t\t!RELEASE_PATTERN.test(value.releaseId)\n\t)\n\t\tthrow new TypeError('Update releaseId is invalid.');\n\tif (\n\t\ttypeof value.runtimeFingerprint !== 'string' ||\n\t\t!HASH_PATTERN.test(value.runtimeFingerprint)\n\t)\n\t\tthrow new TypeError('Update runtime fingerprint is invalid.');\n\tif (value.withinSubmittedPurpose !== true)\n\t\tthrow new TypeError(\n\t\t\t'OTA updates must attest that they remain within the submitted app purpose.'\n\t\t);\n\n\treturn {\n\t\tappId,\n\t\tchannel,\n\t\tclassification: value.classification,\n\t\tcreatedAt,\n\t\tfiles,\n\t\tformat: ABSOLUTE_MOBILE_UPDATE_FORMAT,\n\t\treleaseId: value.releaseId,\n\t\truntimeFingerprint: value.runtimeFingerprint,\n\t\twithinSubmittedPurpose: true\n\t};\n};\n\nexport const parseAbsoluteMobileUpdateManifest = (\n\tvalue: unknown\n): AbsoluteMobileUpdateManifest => {\n\tif (!object(value))\n\t\tthrow new TypeError('Invalid AbsoluteJS mobile update manifest.');\n\tconst { signature: signatureValue, ...unsignedValue } = value;\n\tconst unsigned = parseAbsoluteMobileUnsignedUpdateManifest(unsignedValue);\n\tif (!object(signatureValue))\n\t\tthrow new TypeError('Update signature is missing.');\n\tif (signatureValue.algorithm !== ABSOLUTE_MOBILE_UPDATE_SIGNATURE_ALGORITHM)\n\t\tthrow new TypeError('Update signature algorithm is unsupported.');\n\tconst keyId = requireText(signatureValue.keyId, 'Update signature keyId');\n\tif (!KEY_ID_PATTERN.test(keyId))\n\t\tthrow new TypeError('Update signature keyId is invalid.');\n\tconst signature = requireText(\n\t\tsignatureValue.value,\n\t\t'Update signature value'\n\t);\n\tlet signatureBytes: Uint8Array;\n\ttry {\n\t\tsignatureBytes = Uint8Array.from(atob(signature), (character) =>\n\t\t\tcharacter.charCodeAt(0)\n\t\t);\n\t} catch {\n\t\tsignatureBytes = new Uint8Array();\n\t}\n\tif (\n\t\t!/^[A-Za-z0-9+/]+={0,2}$/u.test(signature) ||\n\t\tsignatureBytes.byteLength !== 64 ||\n\t\tbtoa(String.fromCharCode(...signatureBytes)) !== signature\n\t)\n\t\tthrow new TypeError('Update signature is not canonical base64.');\n\n\treturn {\n\t\t...unsigned,\n\t\tsignature: {\n\t\t\talgorithm: ABSOLUTE_MOBILE_UPDATE_SIGNATURE_ALGORITHM,\n\t\t\tkeyId,\n\t\t\tvalue: signature\n\t\t}\n\t};\n};\n\nexport const unsignedAbsoluteMobileUpdate = (\n\tmanifest: AbsoluteMobileUpdateManifest\n) => {\n\tconst { signature: _signature, ...unsigned } = manifest;\n\n\treturn unsigned;\n};\n",
|
|
48
|
+
"export * from './artifactStore';\nexport * from './adaptiveShell';\nexport * from './androidRelease';\nexport * from './androidUpgradeConformance';\nexport * from './iosRelease';\nexport * from './iosConformance';\nexport * from './iosSimulatorController';\nexport * from './iosPhysicalDeviceTransport';\nexport * from './iosNativeWatcher';\nexport * from './remoteMacProtocol';\nexport * from './iosDeviceAcceptance';\nexport * from './associationFiles';\nexport * from './buildMetadata';\nexport * from './buildPipeline';\nexport * from './buildRelease';\nexport * from './capacitorBundle';\nexport * from './syncSchema';\nexport * from './syncRemediation';\nexport * from './deviceCapabilities';\nexport * from './expoBridge';\nexport * from './expoDevController';\nexport * from './expoProject';\nexport * from './capacitorProject';\nexport * from './config';\nexport * from './client';\nexport * from './ciWorkflow';\nexport * from './compatibilityDispatcher';\nexport * from './materializedBundle';\nexport * from './mobilePreview';\nexport * from './nativeDeepLinks';\nexport * from './nativeDeviceCapabilities';\nexport * from './nativeAuth';\nexport * from './nativeRoute';\nexport * from './nativeUpdates';\nexport * from './pageProtocol';\nexport * from './producerContext';\nexport * from './releaseArtifact';\nexport * from './releasePublisher';\nexport * from './routeMetadataTransform';\nexport * from './routeMatcher';\nexport * from './shellHttp';\nexport * from './transport';\nexport * from './uiPrimitives';\nexport * from './updateClient';\nexport * from './updateProtocol';\nexport * from './updatePublisher';\nexport * from './updateRuntime';\nexport * from './updateRollout';\nexport * from './updateSigning';\n",
|
|
47
49
|
"var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __name = (target, name) => {\n Object.defineProperty(target, \"name\", {\n value: name,\n enumerable: false,\n configurable: true\n });\n return target;\n};\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => (key in obj) ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol(\"metadata\")] ?? null)];\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== undefined && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({\n kind: __decoratorStrings[kind],\n name,\n metadata,\n addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null))\n});\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length;i < n; i++)\n flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : {\n get [name]() {\n return __privateGet(this, extra);\n },\n set [name](x) {\n __privateSet(this, extra, x);\n }\n }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1;i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => (name in x) };\n if (k ^ 3)\n access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2)\n access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? undefined : { get: desc.get, set: desc.set } : target, ctx);\n done._ = 1;\n if (k ^ 4 || it === undefined)\n __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null)\n __typeError(\"Object expected\");\n else\n __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\n\n// src/client/runtimeTransport.ts\nvar RUNTIME_TRANSPORT = Symbol.for(\"@absolutejs/sync/client-runtime-transport\");\nvar host = globalThis;\nvar isRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\")) && Array.isArray(Reflect.get(value, \"clients\"));\nvar registry = (() => {\n const existing = host[RUNTIME_TRANSPORT];\n if (isRegistry(existing))\n return existing;\n if (typeof existing === \"object\" && existing !== null && Array.isArray(Reflect.get(existing, \"installations\"))) {\n Reflect.set(existing, \"clients\", []);\n return existing;\n }\n const created = { clients: [], installations: [] };\n Object.defineProperty(host, RUNTIME_TRANSPORT, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar getSyncClientRuntimeTransport = () => registry.installations.at(-1)?.transport;\nvar installSyncClientRuntimeTransport = (transport) => {\n const installation = { transport };\n registry.installations.push(installation);\n return () => {\n const index = registry.installations.indexOf(installation);\n if (index >= 0)\n registry.installations.splice(index, 1);\n };\n};\nvar registerSyncRuntimeClient = (client) => {\n registry.clients.push(client);\n return () => {\n const index = registry.clients.indexOf(client);\n if (index >= 0)\n registry.clients.splice(index, 1);\n };\n};\nvar maximum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.max(...present);\n};\nvar minimum = (values) => {\n const present = values.filter((value) => value !== undefined);\n return present.length === 0 ? undefined : Math.min(...present);\n};\nvar inspectSyncRuntime = async () => {\n const clients = [...registry.clients];\n const statuses = clients.map((client) => client.status());\n const deadLetters = (await Promise.all(clients.map((client) => client.listDeadLetters()))).flat().map((record) => ({\n attempts: record.attempts,\n ...record.rejection?.code ? { code: record.rejection.code } : {},\n createdAt: record.createdAt,\n ...record.deadLetteredAt === undefined ? {} : { deadLetteredAt: record.deadLetteredAt },\n ...record.rejection?.kind ? { kind: record.rejection.kind } : {},\n ...record.rejection?.message ? { message: record.rejection.message } : {},\n name: record.name,\n operationId: record.operationId\n })).sort((left, right) => (left.deadLetteredAt ?? left.createdAt) - (right.deadLetteredAt ?? right.createdAt) || left.operationId.localeCompare(right.operationId));\n const lastError = statuses.findLast((status) => status.lastError)?.lastError;\n return {\n automaticResolutions: statuses.reduce((total, status) => total + status.automaticResolutions, 0),\n clients: clients.length,\n conflicts: deadLetters.filter((record) => record.kind === \"conflict\").length,\n deadLetters,\n ...lastError ? { lastError } : {},\n ...maximum(statuses.map((status) => status.lastSuccessfulPullAt)) === undefined ? {} : {\n lastSuccessfulPullAt: maximum(statuses.map((status) => status.lastSuccessfulPullAt))\n },\n ...maximum(statuses.map((status) => status.lastSuccessfulPushAt)) === undefined ? {} : {\n lastSuccessfulPushAt: maximum(statuses.map((status) => status.lastSuccessfulPushAt))\n },\n ...minimum(statuses.map((status) => status.oldestDeadLetterAt)) === undefined ? {} : {\n oldestDeadLetterAt: minimum(statuses.map((status) => status.oldestDeadLetterAt))\n },\n ...minimum(statuses.map((status) => status.oldestPendingAt)) === undefined ? {} : {\n oldestPendingAt: minimum(statuses.map((status) => status.oldestPendingAt))\n },\n pending: statuses.reduce((total, status) => total + status.pending, 0)\n };\n};\nvar clientWithDeadLetter = async (operationId) => {\n for (const client of registry.clients)\n if ((await client.listDeadLetters()).some((record) => record.operationId === operationId))\n return client;\n throw new Error(`Unknown Sync dead letter \"${operationId}\"`);\n};\nvar retrySyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).retryDeadLetter(operationId);\nvar discardSyncRuntimeDeadLetter = async (operationId) => (await clientWithDeadLetter(operationId)).discardDeadLetter(operationId);\nvar rebaseSyncRuntimeDeadLetter = async (operationId, args) => (await clientWithDeadLetter(operationId)).rebaseDeadLetter(operationId, args);\nexport {\n discardSyncRuntimeDeadLetter,\n getSyncClientRuntimeTransport,\n inspectSyncRuntime,\n installSyncClientRuntimeTransport,\n rebaseSyncRuntimeDeadLetter,\n registerSyncRuntimeClient,\n retrySyncRuntimeDeadLetter\n};\n\n//# debugId=74366468048A0B9164756E2164756E21\n//# sourceMappingURL=runtimeTransport.js.map\n",
|
|
48
50
|
"import {\n\tdiscardSyncRuntimeDeadLetter,\n\tinspectSyncRuntime,\n\trebaseSyncRuntimeDeadLetter,\n\tretrySyncRuntimeDeadLetter,\n\ttype SyncRuntimeInspection\n} from '@absolutejs/sync/client/runtime';\n\nexport type AbsoluteMobileSyncRemediation = {\n\tdiscard: (operationId: string) => Promise<void>;\n\tinspect: () => Promise<SyncRuntimeInspection>;\n\trebase: (operationId: string, args: unknown) => Promise<string>;\n\tretry: (operationId: string) => Promise<void>;\n};\n\ntype Installation = { bridge: AbsoluteMobileSyncRemediation };\ntype Registry = { installations: Installation[] };\nconst REMEDIATION_REGISTRY = Symbol.for('@absolutejs/mobile-sync-remediation');\nconst LAST_INSTALLATION_OFFSET = -1;\nconst isRegistry = (value: unknown): value is Registry =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\tArray.isArray(Reflect.get(value, 'installations'));\nconst resolveRegistry = () => {\n\tconst existing: unknown = Reflect.get(globalThis, REMEDIATION_REGISTRY);\n\tif (isRegistry(existing)) return existing;\n\tconst created: Registry = { installations: [] };\n\tObject.defineProperty(globalThis, REMEDIATION_REGISTRY, {\n\t\tconfigurable: false,\n\t\tenumerable: false,\n\t\tvalue: created,\n\t\twritable: false\n\t});\n\n\treturn created;\n};\nconst registry = resolveRegistry();\n\n/** Install the native shell's framework-neutral, redacted remediation bridge. */\nexport const getAbsoluteMobileSyncRemediation = () =>\n\tregistry.installations.at(LAST_INSTALLATION_OFFSET)?.bridge;\nexport const installAbsoluteMobileSyncRemediation = (\n\tbridge: AbsoluteMobileSyncRemediation = {\n\t\tdiscard: discardSyncRuntimeDeadLetter,\n\t\tinspect: inspectSyncRuntime,\n\t\trebase: rebaseSyncRuntimeDeadLetter,\n\t\tretry: retrySyncRuntimeDeadLetter\n\t}\n) => {\n\tconst installation: Installation = { bridge };\n\tregistry.installations.push(installation);\n\n\treturn () => {\n\t\tconst index = registry.installations.indexOf(installation);\n\t\tif (index >= 0) registry.installations.splice(index, 1);\n\t};\n};\n",
|
|
49
51
|
"export const ABSOLUTE_EXPO_BRIDGE_FORMAT = 3 as const;\nexport const ABSOLUTE_EXPO_BRIDGE_MAX_BYTES = 64 * 1024;\n\nexport const ABSOLUTE_EXPO_BRIDGE_METHODS = [\n\t'devices.platform.getInfo',\n\t'devices.lifecycle.getState',\n\t'devices.links.getLaunchUrl',\n\t'devices.links.openExternal',\n\t'devices.network.getStatus',\n\t'devices.storage.clear',\n\t'devices.storage.get',\n\t'devices.storage.keys',\n\t'devices.storage.remove',\n\t'devices.storage.set',\n\t'devices.back.capability',\n\t'devices.clipboard.capability',\n\t'devices.clipboard.readText',\n\t'devices.clipboard.writeText',\n\t'devices.share.capability',\n\t'devices.share.share',\n\t'devices.haptics.capability',\n\t'devices.haptics.impact',\n\t'devices.haptics.notification',\n\t'devices.haptics.selectionChanged',\n\t'devices.haptics.vibrate',\n\t'devices.keyboard.capability',\n\t'devices.keyboard.dismiss',\n\t'devices.keyboard.getState',\n\t'devices.systemBars.capability',\n\t'devices.systemBars.setAppearance',\n\t'devices.systemBars.setVisible',\n\t'devices.camera.capability',\n\t'devices.camera.queryPermission',\n\t'devices.camera.requestPermission',\n\t'devices.camera.takePhoto',\n\t'devices.photos.capability',\n\t'devices.photos.pick',\n\t'devices.location.capability',\n\t'devices.location.current',\n\t'devices.location.queryPermission',\n\t'devices.location.requestPermission',\n\t'devices.location.watch.start',\n\t'devices.location.watch.stop',\n\t'devices.localNotifications.capability',\n\t'devices.localNotifications.queryPermission',\n\t'devices.localNotifications.requestPermission',\n\t'devices.localNotifications.schedule',\n\t'devices.localNotifications.pending',\n\t'devices.localNotifications.cancel',\n\t'devices.pushNotifications.capability',\n\t'devices.pushNotifications.queryPermission',\n\t'devices.pushNotifications.requestPermission',\n\t'devices.pushNotifications.enable',\n\t'devices.pushNotifications.disable',\n\t'devices.documents.capability',\n\t'devices.documents.pick',\n\t'devices.transfer.read',\n\t'devices.transfer.close',\n\t'devices.upload.begin',\n\t'devices.upload.write',\n\t'devices.documents.export',\n\t'devices.documents.open',\n\t'http.fetch',\n\t'auth.signIn',\n\t'auth.signOut',\n\t'auth.status',\n\t'sync.store.begin',\n\t'sync.store.deleteNamespace',\n\t'sync.store.end',\n\t'sync.store.schema',\n\t'sync.tx.deleteCollection',\n\t'sync.tx.deleteMutation',\n\t'sync.tx.getCollection',\n\t'sync.tx.getInstallationId',\n\t'sync.tx.getMutation',\n\t'sync.tx.listCollections',\n\t'sync.tx.listMutations',\n\t'sync.tx.putCollection',\n\t'sync.tx.putMutation',\n\t'sync.tx.setInstallationId',\n\t'sync.socket.close',\n\t'sync.socket.open',\n\t'sync.socket.sendChunk'\n] as const;\n\nexport type AbsoluteExpoBridgeMethod =\n\t(typeof ABSOLUTE_EXPO_BRIDGE_METHODS)[number];\n\nexport type AbsoluteExpoBridgeRequest = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tid: string;\n\tkind: 'request';\n\tmethod: AbsoluteExpoBridgeMethod;\n\tparams: Record<string, unknown>;\n\tpath: string;\n};\n\nexport type AbsoluteExpoBridgeResponse = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tid: string;\n\tkind: 'response';\n\tresult?: unknown;\n\terror?: { code: string; message: string };\n};\n\nexport type AbsoluteExpoBridgeEvent = {\n\tformat: typeof ABSOLUTE_EXPO_BRIDGE_FORMAT;\n\tkind: 'event';\n\tevent:\n\t\t| 'ready'\n\t\t| 'navigation'\n\t\t| 'auth.principal'\n\t\t| 'sync.socket'\n\t\t| 'sync.wake';\n\tpath: string;\n\tpayload?: Record<string, unknown>;\n};\n\nexport type AbsoluteExpoBridgeMessage =\n\t| AbsoluteExpoBridgeEvent\n\t| AbsoluteExpoBridgeRequest\n\t| AbsoluteExpoBridgeResponse;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' &&\n\tvalue !== null &&\n\t!Array.isArray(value) &&\n\t(Object.getPrototypeOf(value) === Object.prototype ||\n\t\tObject.getPrototypeOf(value) === null);\n\nconst validId = (value: unknown) =>\n\ttypeof value === 'string' && /^[A-Za-z0-9_-]{1,80}$/u.test(value);\n\nconst validPath = (value: unknown) =>\n\ttypeof value === 'string' &&\n\tvalue.startsWith('/') &&\n\t!value.startsWith('//') &&\n\tvalue.length <= 4096;\n\nconst parseRequest = (value: Record<string, unknown>) => {\n\tif (typeof value.id !== 'string' || !validId(value.id))\n\t\tthrow new TypeError('Expo bridge request id is invalid.');\n\tconst method = ABSOLUTE_EXPO_BRIDGE_METHODS.find(\n\t\t(candidate) => candidate === value.method\n\t);\n\tif (!method) {\n\t\tthrow new TypeError('Expo bridge method is not allowed.');\n\t}\n\tif (!isRecord(value.params))\n\t\tthrow new TypeError('Expo bridge request params must be an object.');\n\tif (typeof value.path !== 'string' || !validPath(value.path))\n\t\tthrow new TypeError('Expo bridge request path is invalid.');\n\tif (method === 'devices.haptics.impact') {\n\t\tconst styles = new Set([\n\t\t\t'error',\n\t\t\t'heavy',\n\t\t\t'light',\n\t\t\t'medium',\n\t\t\t'selection',\n\t\t\t'success',\n\t\t\t'vibrate',\n\t\t\t'warning'\n\t\t]);\n\t\tif (\n\t\t\ttypeof value.params.style !== 'string' ||\n\t\t\t!styles.has(value.params.style)\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge haptics style is invalid.');\n\t\tif (\n\t\t\tvalue.params.durationMs !== undefined &&\n\t\t\t(typeof value.params.durationMs !== 'number' ||\n\t\t\t\t!Number.isFinite(value.params.durationMs) ||\n\t\t\t\tvalue.params.durationMs < 0 ||\n\t\t\t\tvalue.params.durationMs > 10_000)\n\t\t) {\n\t\t\tthrow new TypeError('Expo bridge haptics duration is invalid.');\n\t\t}\n\t}\n\tif (method === 'http.fetch') {\n\t\tif (typeof value.params.url !== 'string')\n\t\t\tthrow new TypeError('Expo bridge HTTP URL is invalid.');\n\t\tconst url = new URL(value.params.url);\n\t\tconst loopbackHttp =\n\t\t\turl.protocol === 'http:' &&\n\t\t\t(url.hostname === 'localhost' ||\n\t\t\t\turl.hostname === '127.0.0.1' ||\n\t\t\t\turl.hostname === '[::1]');\n\t\tif (url.protocol !== 'https:' && !loopbackHttp)\n\t\t\tthrow new TypeError('Expo bridge HTTP URL must use HTTPS.');\n\t\tif (\n\t\t\ttypeof value.params.method !== 'string' ||\n\t\t\t!['DELETE', 'GET', 'PATCH', 'POST', 'PUT'].includes(\n\t\t\t\tvalue.params.method\n\t\t\t)\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge HTTP method is not allowed.');\n\t\tif (\n\t\t\tvalue.params.body !== undefined &&\n\t\t\ttypeof value.params.body !== 'string'\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge HTTP body is invalid.');\n\t\tif (\n\t\t\ttypeof value.params.body === 'string' &&\n\t\t\tnew TextEncoder().encode(value.params.body).byteLength > 48 * 1024\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge HTTP body exceeds 48 KiB.');\n\t\tif (\n\t\t\t(value.params.method === 'GET' ||\n\t\t\t\tvalue.params.method === 'DELETE') &&\n\t\t\tvalue.params.body !== undefined\n\t\t)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expo bridge HTTP method cannot contain a body.'\n\t\t\t);\n\t\tif (!isRecord(value.params.headers))\n\t\t\tthrow new TypeError('Expo bridge HTTP headers must be an object.');\n\t\tconst headersAllowed = Object.entries(value.params.headers).every(\n\t\t\t([name, header]) =>\n\t\t\t\ttypeof header === 'string' &&\n\t\t\t\t(name.toLowerCase() === 'accept' ||\n\t\t\t\t\tname.toLowerCase() === 'content-type' ||\n\t\t\t\t\tname.toLowerCase().startsWith('x-absolute-mobile-'))\n\t\t);\n\t\tif (!headersAllowed) {\n\t\t\tthrow new TypeError('Expo bridge HTTP header is not allowed.');\n\t\t}\n\t}\n\tif (method === 'auth.signIn') {\n\t\tif (\n\t\t\ttypeof value.params.email !== 'string' ||\n\t\t\tvalue.params.email.length > 320 ||\n\t\t\ttypeof value.params.signup !== 'boolean'\n\t\t)\n\t\t\tthrow new TypeError('Expo bridge Auth sign-in params are invalid.');\n\t}\n\tif (\n\t\t(method === 'auth.signOut' || method === 'auth.status') &&\n\t\tObject.keys(value.params).length !== 0\n\t)\n\t\tthrow new TypeError('Expo bridge Auth params must be empty.');\n\n\treturn {\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid: value.id,\n\t\tkind: 'request' as const,\n\t\tmethod,\n\t\tparams: value.params,\n\t\tpath: value.path\n\t};\n};\n\nconst parseResponse = (value: Record<string, unknown>) => {\n\tif (typeof value.id !== 'string' || !validId(value.id))\n\t\tthrow new TypeError('Expo bridge response id is invalid.');\n\tif (value.error !== undefined) {\n\t\tif (\n\t\t\t!isRecord(value.error) ||\n\t\t\ttypeof value.error.code !== 'string' ||\n\t\t\ttypeof value.error.message !== 'string'\n\t\t) {\n\t\t\tthrow new TypeError('Expo bridge response error is invalid.');\n\t\t}\n\t\tif (value.result !== undefined)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Expo bridge response cannot contain result and error.'\n\t\t\t);\n\t}\n\n\tif (isRecord(value.error)) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\tcode: String(value.error.code),\n\t\t\t\tmessage: String(value.error.message)\n\t\t\t},\n\t\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\t\tid: value.id,\n\t\t\tkind: 'response' as const\n\t\t};\n\t}\n\n\treturn {\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid: value.id,\n\t\tkind: 'response' as const,\n\t\tresult: value.result\n\t};\n};\n\nconst parseEvent = (value: Record<string, unknown>) => {\n\tif (\n\t\tvalue.event !== 'ready' &&\n\t\tvalue.event !== 'navigation' &&\n\t\tvalue.event !== 'auth.principal' &&\n\t\tvalue.event !== 'sync.socket' &&\n\t\tvalue.event !== 'sync.wake'\n\t) {\n\t\tthrow new TypeError('Expo bridge event is not allowed.');\n\t}\n\tif (typeof value.path !== 'string' || !validPath(value.path))\n\t\tthrow new TypeError('Expo bridge event path is invalid.');\n\tif (value.payload !== undefined && !isRecord(value.payload)) {\n\t\tthrow new TypeError('Expo bridge event payload must be an object.');\n\t}\n\n\treturn {\n\t\tevent: value.event,\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tkind: 'event' as const,\n\t\tpath: value.path,\n\t\t...(value.payload ? { payload: value.payload } : {})\n\t};\n};\n\nexport const createAbsoluteExpoBridgeError = (\n\tid: string,\n\tcode: string,\n\tmessage: string\n) =>\n\tparseResponse({\n\t\terror: { code, message },\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid,\n\t\tkind: 'response'\n\t});\nexport const createAbsoluteExpoBridgeResponse = (id: string, result: unknown) =>\n\tparseResponse({\n\t\tformat: ABSOLUTE_EXPO_BRIDGE_FORMAT,\n\t\tid,\n\t\tkind: 'response',\n\t\tresult\n\t});\nexport const parseAbsoluteExpoBridgeMessage = (source: string) => {\n\tif (\n\t\tnew TextEncoder().encode(source).byteLength >\n\t\tABSOLUTE_EXPO_BRIDGE_MAX_BYTES\n\t)\n\t\tthrow new TypeError('Expo bridge message exceeds 64 KiB.');\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(source);\n\t} catch (cause) {\n\t\tthrow new TypeError('Expo bridge message is not valid JSON.', {\n\t\t\tcause\n\t\t});\n\t}\n\tif (!isRecord(parsed) || parsed.format !== ABSOLUTE_EXPO_BRIDGE_FORMAT) {\n\t\tthrow new TypeError('Expo bridge message format is unsupported.');\n\t}\n\tif (parsed.kind === 'request') return parseRequest(parsed);\n\tif (parsed.kind === 'response') return parseResponse(parsed);\n\tif (parsed.kind === 'event') return parseEvent(parsed);\n\n\tthrow new TypeError('Expo bridge message kind is unsupported.');\n};\n",
|
|
@@ -54,13 +56,18 @@
|
|
|
54
56
|
"import { Elysia } from 'elysia';\nimport type { MobileConfig } from '../../types/build';\nimport { sendTelemetryEvent } from '../cli/telemetryEvent';\n\nexport const ABSOLUTE_MOBILE_PREVIEW_PATH =\n\t'/__absolute/mobile-preview' as const;\n\nconst escapeHtml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>')\n\t\t.replaceAll('\"', '"');\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null;\n\nconst normalizeEntry = (entry: string | undefined) => {\n\tconst parsed = new URL(entry ?? '/', 'https://absolute.invalid');\n\n\treturn `${parsed.pathname}${parsed.search}${parsed.hash}`;\n};\n\nexport const absoluteMobilePreviewDocument = (mobile: MobileConfig) => {\n\tconst entry = normalizeEntry(mobile.entry);\n\tconst appName = mobile.appName?.trim() || 'AbsoluteJS App';\n\tconst boot = JSON.stringify({ appName, entry }).replaceAll('<', '\\\\u003c');\n\n\treturn `<!doctype html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n<meta name=\"color-scheme\" content=\"dark\">\n<link rel=\"icon\" href=\"data:,\">\n<title>${escapeHtml(appName)} · Mobile Preview</title>\n<style>\n:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#e8ecf3;background:#080b12;color-scheme:dark}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 30% 0,#17213a 0,#080b12 42%)}button,input,select{font:inherit}.shell{display:grid;grid-template-columns:minmax(320px,1fr) 292px;gap:24px;min-height:100vh;padding:24px}.stage{display:grid;place-items:center;min-width:0}.device{position:relative;width:min(100%,430px);height:min(880px,calc(100vh - 48px));min-height:620px;padding:12px;border:1px solid #343c4d;border-radius:48px;background:#111620;box-shadow:0 35px 80px #0009,inset 0 0 0 1px #ffffff0d}.device.android{border-radius:30px}.screen{position:relative;width:100%;height:100%;overflow:hidden;border-radius:37px;background:#fff}.android .screen{border-radius:20px}.island{position:absolute;z-index:2;top:17px;left:50%;width:112px;height:30px;transform:translateX(-50%);border-radius:18px;background:#080b12;pointer-events:none}.android .island{width:9px;height:9px;top:10px}.app{width:100%;height:100%;border:0;background:#fff}.panel{align-self:start;position:sticky;top:24px;max-height:calc(100vh - 48px);overflow:auto;padding:18px;border:1px solid #262d3a;border-radius:20px;background:#0e131dcc;box-shadow:0 18px 50px #0005;backdrop-filter:blur(18px)}h1{font-size:18px;margin:0}.sub{margin:5px 0 18px;color:#8f9aae;font-size:12px}.status{display:flex;align-items:center;gap:8px;margin-bottom:18px;padding:9px 11px;border-radius:10px;background:#151c28;color:#aeb8ca;font-size:12px}.dot{width:8px;height:8px;border-radius:50%;background:#eab308}.ready .dot{background:#22c55e}.group{padding:14px 0;border-top:1px solid #252c39}.group:first-of-type{border-top:0}.label{display:block;margin-bottom:8px;color:#97a3b7;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.row{display:flex;gap:8px}.row>*{min-width:0}.grow{flex:1}button,select,input{border:1px solid #30394a;border-radius:9px;background:#171e2b;color:#e8ecf3;padding:9px 10px}button{cursor:pointer}button:hover{border-color:#64748b;background:#202a3a}button.active{border-color:#60a5fa;background:#172b48;color:#bfdbfe}input{width:100%}.events{height:84px;overflow:auto;margin-top:8px;padding:8px;border-radius:9px;background:#090d14;color:#8290a7;font:11px/1.5 ui-monospace,monospace}.hint{margin-top:12px;color:#64748b;font-size:11px;line-height:1.45}@media(max-width:840px){.shell{grid-template-columns:1fr;padding:12px}.device{height:720px}.panel{position:static;max-height:none}}\n</style>\n</head>\n<body>\n<main class=\"shell\">\n<section class=\"stage\"><div class=\"device\" id=\"device\"><div class=\"island\"></div><div class=\"screen\"><iframe class=\"app\" id=\"app\" title=\"${escapeHtml(appName)} mobile runtime\"></iframe></div></div></section>\n<aside class=\"panel\">\n<h1>${escapeHtml(appName)}</h1><p class=\"sub\">AbsoluteJS mobile runtime preview</p>\n<div class=\"status\" id=\"status\"><span class=\"dot\"></span><span id=\"statusText\">Starting runtime…</span></div>\n<div class=\"group\"><span class=\"label\">Device</span><div class=\"row\"><button id=\"ios\" class=\"grow active\">iOS</button><button id=\"android\" class=\"grow\">Android</button></div></div>\n<div class=\"group\"><label class=\"label\" for=\"route\">Route / deep link</label><div class=\"row\"><input id=\"route\" value=\"${escapeHtml(entry)}\"><button id=\"go\">Go</button></div><div class=\"row\" style=\"margin-top:8px\"><button id=\"deepLink\" class=\"grow\">Emit deep link</button><button id=\"back\" class=\"grow\">Hardware back</button></div></div>\n<div class=\"group\"><span class=\"label\">Connection</span><div class=\"row\"><button id=\"online\" class=\"grow active\">Wi-Fi</button><button id=\"cellular\" class=\"grow\">Cellular</button><button id=\"offline\" class=\"grow\">Offline</button></div></div>\n<div class=\"group\"><span class=\"label\">Lifecycle</span><div class=\"row\"><button id=\"active\" class=\"grow active\">Active</button><button id=\"background\" class=\"grow\">Background</button><button id=\"inactive\" class=\"grow\">Inactive</button></div></div>\n<div class=\"group\"><span class=\"label\">Keyboard</span><div class=\"row\"><button id=\"keyboardShow\" class=\"grow\">Show</button><button id=\"keyboardHide\" class=\"grow\">Hide</button></div></div>\n<div class=\"group\"><label class=\"label\" for=\"permission\">Permissions</label><div class=\"row\"><select id=\"permission\" class=\"grow\"><option value=\"camera\">Camera</option><option value=\"location\">Location</option><option value=\"notifications\">Notifications</option></select><select id=\"permissionState\" class=\"grow\"><option value=\"prompt\">Prompt</option><option value=\"granted\">Granted</option><option value=\"denied\">Denied</option><option value=\"blocked\">Blocked</option></select></div><button id=\"applyPermission\" style=\"width:100%;margin-top:8px\">Apply permission state</button></div>\n<div class=\"group\"><span class=\"label\">Runtime events</span><div class=\"events\" id=\"events\" aria-live=\"polite\"></div><p class=\"hint\">This runs the same development pages, HMR client, provider-neutral HTTP, and Devices contracts as an installed target. Native rendering, signing, push delivery, and OS scheduling still require a simulator or physical device.</p></div>\n</aside>\n</main>\n<script>const config=${boot};const frame=document.getElementById('app');const device=document.getElementById('device');const status=document.getElementById('status');const statusText=document.getElementById('statusText');const events=document.getElementById('events');let platform='ios';const event=(text)=>{const line=document.createElement('div');line.textContent=new Date().toLocaleTimeString()+' · '+text;events.prepend(line)};const routeUrl=()=>{const value=document.getElementById('route').value.trim()||config.entry;const url=new URL(value,location.origin);if(url.origin!==location.origin)throw new TypeError('Preview routes must stay on this dev server.');url.searchParams.set('__absolute_target','mobile-preview');url.searchParams.set('__absolute_preview_platform',platform);return url};const load=()=>{try{status.classList.remove('ready');statusText.textContent='Starting runtime…';frame.src=routeUrl().href;event('loaded '+routeUrl().pathname)}catch(error){statusText.textContent=error.message}};const send=(message)=>{if(!frame.contentWindow)return;frame.contentWindow.postMessage(message,location.origin);event(message.type.replace('absolute-preview:',''))};const select=(ids,active)=>ids.forEach(id=>document.getElementById(id).classList.toggle('active',id===active));document.getElementById('ios').onclick=()=>{platform='ios';device.classList.remove('android');select(['ios','android'],'ios');load()};document.getElementById('android').onclick=()=>{platform='android';device.classList.add('android');select(['ios','android'],'android');load()};document.getElementById('go').onclick=load;document.getElementById('route').onkeydown=e=>{if(e.key==='Enter')load()};document.getElementById('deepLink').onclick=()=>send({type:'absolute-preview:deep-link',url:new URL(document.getElementById('route').value,location.origin).href});document.getElementById('back').onclick=()=>send({type:'absolute-preview:back'});[['online',true,'wifi'],['cellular',true,'cellular'],['offline',false,'none']].forEach(([id,connected,connectionType])=>document.getElementById(id).onclick=()=>{select(['online','cellular','offline'],id);send({type:'absolute-preview:network',connected,connectionType})});['active','background','inactive'].forEach(id=>document.getElementById(id).onclick=()=>{select(['active','background','inactive'],id);send({type:'absolute-preview:lifecycle',state:id})});document.getElementById('keyboardShow').onclick=()=>send({type:'absolute-preview:keyboard',visible:true,heightPx:320});document.getElementById('keyboardHide').onclick=()=>send({type:'absolute-preview:keyboard',visible:false,heightPx:0});document.getElementById('applyPermission').onclick=()=>send({type:'absolute-preview:permission',capability:document.getElementById('permission').value,state:document.getElementById('permissionState').value});addEventListener('message',e=>{if(e.origin!==location.origin||e.source!==frame.contentWindow||!e.data||typeof e.data.type!=='string'||!e.data.type.startsWith('absolute-preview:'))return;if(e.data.type==='absolute-preview:ready'){status.classList.add('ready');statusText.textContent=platform==='ios'?'iOS runtime connected':'Android runtime connected'}event(e.data.event||e.data.type.replace('absolute-preview:',''))});load();</script>\n</body>\n</html>`;\n};\n\nexport const createAbsoluteMobilePreviewPlugin = (\n\tmobile: MobileConfig | undefined\n) => {\n\tif (!mobile)\n\t\treturn new Elysia({ name: 'absolutejs-mobile-preview-disabled' });\n\n\treturn new Elysia({ name: 'absolutejs-mobile-preview' })\n\t\t.get(\n\t\t\tABSOLUTE_MOBILE_PREVIEW_PATH,\n\t\t\t() =>\n\t\t\t\tnew Response(absoluteMobilePreviewDocument(mobile), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Cache-Control': 'no-store',\n\t\t\t\t\t\t'Content-Security-Policy':\n\t\t\t\t\t\t\t\"default-src 'self'; script-src 'unsafe-inline' 'self'; style-src 'unsafe-inline'; frame-src 'self'; img-src 'self' data: blob:; connect-src 'self' ws: wss:\",\n\t\t\t\t\t\t'Content-Type': 'text/html; charset=utf-8',\n\t\t\t\t\t\t'X-Robots-Tag': 'noindex, nofollow'\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t)\n\t\t.post('/__absolute/mobile-preview-telemetry', ({ body, status }) => {\n\t\t\tconst value = isRecord(body) ? body : undefined;\n\t\t\tconst durationMs = value?.durationMs;\n\t\t\tconst platform = value?.platform;\n\t\t\tif (\n\t\t\t\ttypeof durationMs !== 'number' ||\n\t\t\t\t!Number.isFinite(durationMs) ||\n\t\t\t\tdurationMs < 0 ||\n\t\t\t\tdurationMs > 300_000 ||\n\t\t\t\t(platform !== 'android' && platform !== 'ios')\n\t\t\t) {\n\t\t\t\treturn status(400, { error: 'invalid-preview-telemetry' });\n\t\t\t}\n\t\t\tsendTelemetryEvent('mobile:preview-ready', {\n\t\t\t\tdurationMs: Math.round(durationMs),\n\t\t\t\tplatform,\n\t\t\t\tprovider: 'capacitor',\n\t\t\t\ttarget: 'mobile-preview'\n\t\t\t});\n\n\t\t\treturn status(204);\n\t\t});\n};\n",
|
|
55
57
|
"import { readFile, rename, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { MobilePlatform } from '../../types/build';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nconst START_MARKER = '<!-- absolutejs:deep-links:start -->';\nconst END_MARKER = '<!-- absolutejs:deep-links:end -->';\nconst IOS_ENTITLEMENTS = 'App/AbsoluteJS.entitlements';\nconst NOT_FOUND = -1;\n\nconst escapeXml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('\"', '"')\n\t\t.replaceAll(\"'\", ''')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>');\n\nconst writeChangedFile = async (path: string, source: string) => {\n\tconst current = await readFile(path, 'utf8');\n\tif (current === source) return false;\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst replaceManagedRegion = (\n\tsource: string,\n\tregion: string,\n\tinsertAt: () => number\n) => {\n\tconst start = source.indexOf(START_MARKER);\n\tconst end = source.indexOf(END_MARKER);\n\tif (\n\t\t(start === NOT_FOUND) !== (end === NOT_FOUND) ||\n\t\t(start !== NOT_FOUND && end < start)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'AbsoluteJS deep-link ownership markers are malformed.'\n\t\t);\n\t}\n\tif (start !== NOT_FOUND) {\n\t\tconst lineStart = source.lastIndexOf('\\n', start) + 1;\n\t\tconst nextLine = source.indexOf('\\n', end + END_MARKER.length);\n\t\tconst lineEnd = nextLine === NOT_FOUND ? source.length : nextLine + 1;\n\n\t\treturn `${source.slice(0, lineStart)}${region}${source.slice(lineEnd)}`;\n\t}\n\tconst index = insertAt();\n\tif (index === NOT_FOUND) {\n\t\tthrow new TypeError(\n\t\t\t'Could not find a safe native project location for deep-link configuration.'\n\t\t);\n\t}\n\n\treturn `${source.slice(0, index)}${region}${source.slice(index)}`;\n};\n\nconst androidRegion = (config: NormalizedAbsoluteMobileConfig) => {\n\tconst hosts = config.deepLinkHosts\n\t\t.map(\n\t\t\t(host) =>\n\t\t\t\t` <data android:scheme=\"https\" android:host=\"${escapeXml(host)}\" />`\n\t\t)\n\t\t.join('\\n');\n\tconst customScheme = config.deepLinkScheme\n\t\t? `\\n\\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 <data android:scheme=\"${escapeXml(config.deepLinkScheme)}\" />\\n </intent-filter>`\n\t\t: '';\n\n\treturn ` ${START_MARKER}\\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${hosts}\\n </intent-filter>${customScheme}\\n ${END_MARKER}\\n`;\n};\n\nconst configureAndroid = async (config: NormalizedAbsoluteMobileConfig) => {\n\tconst path = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'android/app/src/main/AndroidManifest.xml'\n\t);\n\tconst source = await readFile(path, 'utf8');\n\tconst mainActivity = source.indexOf('android:name=\".MainActivity\"');\n\tif (mainActivity === NOT_FOUND) {\n\t\tthrow new TypeError('Android MainActivity was not found.');\n\t}\n\tconst activityEnd = source.indexOf('</activity>', mainActivity);\n\tconst updated = replaceManagedRegion(source, androidRegion(config), () =>\n\t\tactivityEnd === NOT_FOUND\n\t\t\t? NOT_FOUND\n\t\t\t: source.lastIndexOf('\\n', activityEnd) + 1\n\t);\n\n\treturn writeChangedFile(path, updated);\n};\n\nconst iosSchemeRegion = (scheme: string) =>\n\t`\\t${START_MARKER}\\n\\t<key>CFBundleURLTypes</key>\\n\\t<array>\\n\\t\\t<dict>\\n\\t\\t\\t<key>CFBundleURLName</key>\\n\\t\\t\\t<string>absolutejs</string>\\n\\t\\t\\t<key>CFBundleURLSchemes</key>\\n\\t\\t\\t<array>\\n\\t\\t\\t\\t<string>${escapeXml(scheme)}</string>\\n\\t\\t\\t</array>\\n\\t\\t</dict>\\n\\t</array>\\n\\t${END_MARKER}\\n`;\n\nconst configureIosInfo = async (config: NormalizedAbsoluteMobileConfig) => {\n\tconst path = join(config.nativeProjectDirectory, 'ios/App/App/Info.plist');\n\tconst source = await readFile(path, 'utf8');\n\tconst region = config.deepLinkScheme\n\t\t? iosSchemeRegion(config.deepLinkScheme)\n\t\t: `\\t${START_MARKER}\\n\\t${END_MARKER}\\n`;\n\tconst updated = replaceManagedRegion(source, region, () =>\n\t\tsource.lastIndexOf('</dict>')\n\t);\n\n\treturn writeChangedFile(path, updated);\n};\n\nconst iosEntitlementsSource = (config: NormalizedAbsoluteMobileConfig) => {\n\tconst domains = config.deepLinkHosts\n\t\t.map((host) => `\\t\\t<string>applinks:${escapeXml(host)}</string>`)\n\t\t.join('\\n');\n\n\treturn `<?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\\t<key>com.apple.developer.associated-domains</key>\n\\t<array>\n${domains}\n\\t</array>\n</dict>\n</plist>\n`;\n};\n\nconst configureIosEntitlements = async (\n\tconfig: NormalizedAbsoluteMobileConfig\n) => {\n\tconst path = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/AbsoluteJS.entitlements'\n\t);\n\tlet current = '';\n\ttry {\n\t\tcurrent = await readFile(path, 'utf8');\n\t} catch (error) {\n\t\tif (\n\t\t\t!(error instanceof Error) ||\n\t\t\t!('code' in error) ||\n\t\t\terror.code !== 'ENOENT'\n\t\t) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\tconst source = iosEntitlementsSource(config);\n\tif (current === source) return false;\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst configureIosProject = async (config: NormalizedAbsoluteMobileConfig) => {\n\tconst path = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/App.xcodeproj/project.pbxproj'\n\t);\n\tconst source = await readFile(path, 'utf8');\n\tconst declarations = [\n\t\t...source.matchAll(/CODE_SIGN_ENTITLEMENTS = ([^;]+);/g)\n\t].map((match) => match[1]);\n\tif (declarations.some((value) => value !== IOS_ENTITLEMENTS)) {\n\t\tthrow new TypeError(\n\t\t\t'The iOS target already uses a different entitlements file; merge associated domains there before continuing.'\n\t\t);\n\t}\n\tif (declarations.length > 0) return false;\n\tlet count = 0;\n\tconst updated = source.replaceAll(\n\t\t'INFOPLIST_FILE = App/Info.plist;',\n\t\t() => {\n\t\t\tcount += 1;\n\n\t\t\treturn `CODE_SIGN_ENTITLEMENTS = ${IOS_ENTITLEMENTS};\\n\\t\\t\\t\\tINFOPLIST_FILE = App/Info.plist;`;\n\t\t}\n\t);\n\tif (count === 0) {\n\t\tthrow new TypeError(\n\t\t\t'The iOS application target build settings were not found.'\n\t\t);\n\t}\n\n\treturn writeChangedFile(path, updated);\n};\n\nconst configureIos = async (config: NormalizedAbsoluteMobileConfig) => {\n\tconst changed = await Promise.all([\n\t\tconfigureIosInfo(config),\n\t\tconfigureIosEntitlements(config),\n\t\tconfigureIosProject(config)\n\t]);\n\n\treturn changed.some(Boolean);\n};\n\nexport const applyAbsoluteNativeDeepLinks = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tplatforms: readonly MobilePlatform[] = config.platforms\n) => {\n\tconst results = await Promise.all(\n\t\tplatforms.map(async (platform) => {\n\t\t\tconst didChange =\n\t\t\t\tplatform === 'android'\n\t\t\t\t\t? await configureAndroid(config)\n\t\t\t\t\t: await configureIos(config);\n\n\t\t\treturn { didChange, platform };\n\t\t})\n\t);\n\n\treturn {\n\t\tchanged: results\n\t\t\t.filter(({ didChange }) => didChange)\n\t\t\t.map(({ platform }) => platform)\n\t};\n};\n",
|
|
56
58
|
"import { readFile, rename, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { MobilePlatform } from '../../types/build';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\nimport {\n\tabsoluteDeviceNativeRequirements,\n\tresolveAbsoluteDeviceCapabilityPlan,\n\ttype AbsoluteDeviceCapabilityPlan,\n\ttype AbsoluteIosUsageDescription\n} from './deviceCapabilities';\n\nconst START_MARKER = '<!-- absolutejs:device-capabilities:start -->';\nconst END_MARKER = '<!-- absolutejs:device-capabilities:end -->';\nconst NOT_FOUND = -1;\nconst IOS_PRIVACY_FILE_REFERENCE = 'A85D0C000000000000000001';\nconst IOS_PRIVACY_BUILD_FILE = 'A85D0C000000000000000002';\nconst PUSH_START_MARKER = 'absolutejs:push-notifications:start';\nconst PUSH_END_MARKER = 'absolutejs:push-notifications:end';\n\nconst escapeXml = (value: string) =>\n\tvalue\n\t\t.replaceAll('&', '&')\n\t\t.replaceAll('\"', '"')\n\t\t.replaceAll(\"'\", ''')\n\t\t.replaceAll('<', '<')\n\t\t.replaceAll('>', '>');\n\nconst writeChangedFile = async (path: string, source: string) => {\n\tconst current = await readFile(path, 'utf8');\n\tif (current === source) return false;\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst writeOptionalChangedFile = async (path: string, source: string) => {\n\tconst current = await optionalSource(path);\n\tif (current === source) return false;\n\tif (current === null) {\n\t\tawait writeFile(path, source, { flag: 'wx' });\n\n\t\treturn true;\n\t}\n\n\treturn writeChangedFile(path, source);\n};\n\nconst optionalSource = async (path: string) => {\n\ttry {\n\t\treturn await readFile(path, 'utf8');\n\t} catch (error) {\n\t\tif (\n\t\t\ttypeof error === 'object' &&\n\t\t\terror !== null &&\n\t\t\tReflect.get(error, 'code') === 'ENOENT'\n\t\t)\n\t\t\treturn null;\n\t\tthrow error;\n\t}\n};\n\nconst managed = (source: string, region: string, insertion: number) => {\n\tconst start = source.indexOf(START_MARKER);\n\tconst end = source.indexOf(END_MARKER);\n\tif (\n\t\t(start === NOT_FOUND) !== (end === NOT_FOUND) ||\n\t\t(start !== NOT_FOUND && end < start)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'AbsoluteJS device-capability ownership markers are malformed.'\n\t\t);\n\tif (start !== NOT_FOUND) {\n\t\tconst lineStart = source.lastIndexOf('\\n', start) + 1;\n\t\tconst nextLine = source.indexOf('\\n', end + END_MARKER.length);\n\t\tconst lineEnd = nextLine === NOT_FOUND ? source.length : nextLine + 1;\n\n\t\treturn `${source.slice(0, lineStart)}${region}${source.slice(lineEnd)}`;\n\t}\n\tif (region.length === 0) return source;\n\tif (insertion === NOT_FOUND)\n\t\tthrow new TypeError(\n\t\t\t'Could not find a safe native project location for device permissions.'\n\t\t);\n\n\treturn `${source.slice(0, insertion)}${region}${source.slice(insertion)}`;\n};\n\nconst IOS_KEYS: Record<AbsoluteIosUsageDescription, string> = {\n\tcamera: 'NSCameraUsageDescription',\n\t'location-always': 'NSLocationAlwaysAndWhenInUseUsageDescription',\n\t'location-when-in-use': 'NSLocationWhenInUseUsageDescription',\n\t'photo-library': 'NSPhotoLibraryUsageDescription',\n\t'photo-library-add': 'NSPhotoLibraryAddUsageDescription'\n};\n\nconst iosDescription = (\n\tappName: string,\n\tpurpose: AbsoluteIosUsageDescription\n) => {\n\tif (purpose === 'camera')\n\t\treturn `${appName} uses your camera when you choose to take a photo.`;\n\tif (purpose === 'photo-library')\n\t\treturn `${appName} accesses your photo library only for photo actions you choose.`;\n\tif (purpose === 'location-when-in-use')\n\t\treturn `${appName} uses your location only while you are using the app and request a location-based action.`;\n\tif (purpose === 'location-always')\n\t\treturn `${appName} does not track location in the background; this description supports the foreground location provider required by the native runtime.`;\n\n\treturn `${appName} adds to your photo library only for photo actions you choose.`;\n};\n\nconst privacyEntries = (\n\trequirements: ReturnType<typeof absoluteDeviceNativeRequirements>\n) =>\n\trequirements.iosPrivacyAccessedApis\n\t\t.map(\n\t\t\t({ api, reasons }) =>\n\t\t\t\t`\t\t<dict>\\n\t\t\t<key>NSPrivacyAccessedAPIType</key>\\n\t\t\t<string>${escapeXml(api)}</string>\\n\t\t\t<key>NSPrivacyAccessedAPITypeReasons</key>\\n\t\t\t<array>\\n${reasons\n\t\t\t\t\t.map((reason) => `\t\t\t\t<string>${escapeXml(reason)}</string>`)\n\t\t\t\t\t.join('\\n')}\\n\t\t\t</array>\\n\t\t</dict>`\n\t\t)\n\t\t.join('\\n');\n\nconst privacyManifestSource = (\n\tsource: string | null,\n\trequirements: ReturnType<typeof absoluteDeviceNativeRequirements>\n) => {\n\tconst entries = privacyEntries(requirements);\n\tconst wholeRegion = entries\n\t\t? `\t${START_MARKER}\\n\t<key>NSPrivacyAccessedAPITypes</key>\\n\t<array>\\n${entries}\\n\t</array>\\n\t${END_MARKER}\\n`\n\t\t: '';\n\tif (source === null)\n\t\treturn entries\n\t\t\t? `<?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${wholeRegion}\t<key>NSPrivacyCollectedDataTypes</key>\\n\t<array/>\\n\t<key>NSPrivacyTracking</key>\\n\t<false/>\\n</dict>\\n</plist>\\n`\n\t\t\t: null;\n\n\tconst start = source.indexOf(START_MARKER);\n\tif (start !== NOT_FOUND) {\n\t\tconst end = source.indexOf(END_MARKER);\n\t\tif (end === NOT_FOUND)\n\t\t\tthrow new TypeError(\n\t\t\t\t'AbsoluteJS device-capability ownership markers are malformed.'\n\t\t\t);\n\t\tconst owned = source.slice(start, end);\n\t\tconst ownsWholeKey = owned.includes('NSPrivacyAccessedAPITypes');\n\t\tlet region = '';\n\t\tif (ownsWholeKey) region = wholeRegion;\n\t\telse if (entries)\n\t\t\tregion = `\t\t${START_MARKER}\\n${entries}\\n\t\t${END_MARKER}\\n`;\n\n\t\treturn managed(source, region, source.lastIndexOf('</dict>'));\n\t}\n\n\tconst key = source.indexOf('<key>NSPrivacyAccessedAPITypes</key>');\n\tif (key === NOT_FOUND)\n\t\treturn managed(source, wholeRegion, source.lastIndexOf('</dict>'));\n\tif (!entries) return source;\n\tconst array = source.indexOf('<array>', key);\n\tif (array === NOT_FOUND)\n\t\tthrow new TypeError(\n\t\t\t'iOS PrivacyInfo.xcprivacy has a malformed NSPrivacyAccessedAPITypes value.'\n\t\t);\n\tconst insertion = source.indexOf('\\n', array);\n\tif (insertion === NOT_FOUND)\n\t\tthrow new TypeError('iOS PrivacyInfo.xcprivacy array is malformed.');\n\n\treturn managed(\n\t\tsource,\n\t\t`\t\t${START_MARKER}\\n${entries}\\n\t\t${END_MARKER}\\n`,\n\t\tinsertion + 1\n\t);\n};\n\nconst writeIosPrivacyManifest = async (\n\tpath: string,\n\tcurrent: string | null,\n\tsource: string | null\n) => {\n\tif (source === null) return false;\n\tif (current !== null) return writeChangedFile(path, source);\n\tawait writeFile(path, source, { flag: 'wx' });\n\n\treturn true;\n};\n\nconst configureIosPrivacyProject = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\trequirements: ReturnType<typeof absoluteDeviceNativeRequirements>\n) => {\n\tif (requirements.iosPrivacyAccessedApis.length === 0) return false;\n\tconst projectPath = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/App.xcodeproj/project.pbxproj'\n\t);\n\tconst project = await readFile(projectPath, 'utf8');\n\n\treturn writeChangedFile(\n\t\tprojectPath,\n\t\taddIosPrivacyProjectReference(project)\n\t);\n};\n\nconst addIosPrivacyProjectReference = (source: string) => {\n\tconst fileMatch = source.match(\n\t\t/([A-F0-9]{24}) \\/\\* PrivacyInfo\\.xcprivacy \\*\\/ = \\{isa = PBXFileReference;/u\n\t);\n\tconst fileReference = fileMatch?.[1] ?? IOS_PRIVACY_FILE_REFERENCE;\n\tconst buildMatch = source.match(\n\t\t/([A-F0-9]{24}) \\/\\* PrivacyInfo\\.xcprivacy in Resources \\*\\/ = \\{isa = PBXBuildFile;/u\n\t);\n\tconst buildFile = buildMatch?.[1] ?? IOS_PRIVACY_BUILD_FILE;\n\tif (\n\t\t(!fileMatch && source.includes(fileReference)) ||\n\t\t(!buildMatch && source.includes(buildFile))\n\t)\n\t\tthrow new TypeError(\n\t\t\t'AbsoluteJS iOS privacy-manifest identifiers collide.'\n\t\t);\n\n\tlet next = source;\n\tif (!buildMatch) {\n\t\tconst marker = '/* End PBXBuildFile section */';\n\t\tconst index = next.indexOf(marker);\n\t\tif (index === NOT_FOUND)\n\t\t\tthrow new TypeError('Could not find the iOS PBXBuildFile section.');\n\t\tnext = `${next.slice(0, index)}\t\t${buildFile} /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = ${fileReference} /* PrivacyInfo.xcprivacy */; };\\n${next.slice(index)}`;\n\t}\n\tif (!fileMatch) {\n\t\tconst marker = '/* End PBXFileReference section */';\n\t\tconst index = next.indexOf(marker);\n\t\tif (index === NOT_FOUND)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Could not find the iOS PBXFileReference section.'\n\t\t\t);\n\t\tnext = `${next.slice(0, index)}\t\t${fileReference} /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = \"<group>\"; };\\n${next.slice(index)}`;\n\t}\n\tconst groupsStart = next.indexOf('/* Begin PBXGroup section */');\n\tconst groupsEnd = next.indexOf('/* End PBXGroup section */');\n\tconst groups = next.slice(groupsStart, groupsEnd);\n\tif (!groups.includes(`${fileReference} /* PrivacyInfo.xcprivacy */`)) {\n\t\tconst appGroup = groups.match(\n\t\t\t/[A-F0-9]{24} \\/\\* App \\*\\/ = \\{\\n\\t\\t\\tisa = PBXGroup;\\n\\t\\t\\tchildren = \\(\\n/u\n\t\t);\n\t\tif (!appGroup || appGroup.index === undefined)\n\t\t\tthrow new TypeError('Could not find the iOS App PBXGroup.');\n\t\tconst index = groupsStart + appGroup.index + appGroup[0].length;\n\t\tnext = `${next.slice(0, index)}\t\t\t\t${fileReference} /* PrivacyInfo.xcprivacy */,\\n${next.slice(index)}`;\n\t}\n\tconst resourcesStart = next.indexOf(\n\t\t'/* Begin PBXResourcesBuildPhase section */'\n\t);\n\tconst resourcesEnd = next.indexOf(\n\t\t'/* End PBXResourcesBuildPhase section */'\n\t);\n\tconst resources = next.slice(resourcesStart, resourcesEnd);\n\tif (\n\t\t!resources.includes(\n\t\t\t`${buildFile} /* PrivacyInfo.xcprivacy in Resources */`\n\t\t)\n\t) {\n\t\tconst files = resources.match(\n\t\t\t/isa = PBXResourcesBuildPhase;\\n\\t\\t\\tbuildActionMask = \\d+;\\n\\t\\t\\tfiles = \\(\\n/u\n\t\t);\n\t\tif (!files || files.index === undefined)\n\t\t\tthrow new TypeError(\n\t\t\t\t'Could not find the iOS Resources build phase.'\n\t\t\t);\n\t\tconst index = resourcesStart + files.index + files[0].length;\n\t\tnext = `${next.slice(0, index)}\t\t\t\t${buildFile} /* PrivacyInfo.xcprivacy in Resources */,\\n${next.slice(index)}`;\n\t}\n\n\treturn next;\n};\n\nconst configureIos = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tplan: AbsoluteDeviceCapabilityPlan\n) => {\n\tconst path = join(config.nativeProjectDirectory, 'ios/App/App/Info.plist');\n\tconst source = await readFile(path, 'utf8');\n\tconst requirements = absoluteDeviceNativeRequirements(plan);\n\tconst existingSystemBars = source.match(\n\t\t/<key>UIViewControllerBasedStatusBarAppearance<\\/key>\\s*<(true|false)\\s*\\/>/u\n\t);\n\tconst ownedStart = source.indexOf(START_MARKER);\n\tconst ownedEnd = source.indexOf(END_MARKER);\n\tconst ownsSystemBars =\n\t\townedStart >= 0 &&\n\t\townedEnd > ownedStart &&\n\t\tsource\n\t\t\t.slice(ownedStart, ownedEnd)\n\t\t\t.includes('UIViewControllerBasedStatusBarAppearance');\n\tif (\n\t\trequirements.iosSystemBars &&\n\t\texistingSystemBars?.[1] === 'false' &&\n\t\t!ownsSystemBars\n\t)\n\t\tthrow new TypeError(\n\t\t\t'iOS system bars require UIViewControllerBasedStatusBarAppearance to be true.'\n\t\t);\n\tconst usageContent = requirements.iosUsageDescriptions\n\t\t.map(\n\t\t\t(purpose) =>\n\t\t\t\t`\\t<key>${IOS_KEYS[purpose]}</key>\\n\\t<string>${escapeXml(iosDescription(config.appName, purpose))}</string>`\n\t\t)\n\t\t.join('\\n');\n\tconst systemBarsContent =\n\t\trequirements.iosSystemBars &&\n\t\t(existingSystemBars === null || ownsSystemBars)\n\t\t\t? '\\t<key>UIViewControllerBasedStatusBarAppearance</key>\\n\\t<true/>'\n\t\t\t: '';\n\tconst content = [usageContent, systemBarsContent]\n\t\t.filter(Boolean)\n\t\t.join('\\n');\n\tconst region = content\n\t\t? `\\t${START_MARKER}\\n${content}\\n\\t${END_MARKER}\\n`\n\t\t: '';\n\n\tconst infoChanged = await writeChangedFile(\n\t\tpath,\n\t\tmanaged(source, region, source.lastIndexOf('</dict>'))\n\t);\n\tconst privacyPath = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/App/PrivacyInfo.xcprivacy'\n\t);\n\tconst privacyCurrent = await optionalSource(privacyPath);\n\tconst privacySource = privacyManifestSource(privacyCurrent, requirements);\n\tconst [privacyChanged, projectChanged, pushChanged] = await Promise.all([\n\t\twriteIosPrivacyManifest(privacyPath, privacyCurrent, privacySource),\n\t\tconfigureIosPrivacyProject(config, requirements),\n\t\tconfigureIosPushNotifications(config, requirements.iosPushNotifications)\n\t]);\n\n\treturn infoChanged || privacyChanged || projectChanged || pushChanged;\n};\n\nconst configureIosPushNotifications = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tenabled: boolean\n) => {\n\tconst entitlementsPath = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/AbsoluteJS.entitlements'\n\t);\n\tconst entitlements = await optionalSource(entitlementsPath);\n\tif (entitlements === null && !enabled) return false;\n\tif (entitlements === null)\n\t\tthrow new TypeError(\n\t\t\t'AbsoluteJS iOS entitlements are missing. Run native deep-link projection before device capabilities.'\n\t\t);\n\tconst entitlementRegion = enabled\n\t\t? `\\t<!-- ${PUSH_START_MARKER} -->\\n\\t<key>aps-environment</key>\\n\\t<string>development</string>\\n\\t<!-- ${PUSH_END_MARKER} -->\\n`\n\t\t: '';\n\tconst nextEntitlements = replacePushRegion(\n\t\tentitlements,\n\t\tentitlementRegion,\n\t\tentitlements.lastIndexOf('</dict>')\n\t);\n\tconst delegatePath = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/App/AppDelegate.swift'\n\t);\n\tconst delegate = await optionalSource(delegatePath);\n\tif (delegate === null && !enabled) return false;\n\tif (delegate === null)\n\t\tthrow new TypeError(\n\t\t\t'Capacitor AppDelegate.swift is missing for iOS push notifications.'\n\t\t);\n\tconst hasSuccess = delegate.includes(\n\t\t'didRegisterForRemoteNotificationsWithDeviceToken'\n\t);\n\tconst hasFailure = delegate.includes(\n\t\t'didFailToRegisterForRemoteNotificationsWithError'\n\t);\n\tif (\n\t\tenabled &&\n\t\thasSuccess !== hasFailure &&\n\t\t!delegate.includes(PUSH_START_MARKER)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'iOS AppDelegate has a partial custom remote-notification registration implementation.'\n\t\t);\n\tconst alreadyForwarded =\n\t\tenabled &&\n\t\thasSuccess &&\n\t\thasFailure &&\n\t\tdelegate.includes('capacitorDidRegisterForRemoteNotifications') &&\n\t\tdelegate.includes('capacitorDidFailToRegisterForRemoteNotifications');\n\tconst swiftRegion =\n\t\tenabled && !alreadyForwarded\n\t\t\t? `\\n // ${PUSH_START_MARKER}\\n func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {\\n NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: deviceToken)\\n }\\n\\n func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {\\n NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)\\n }\\n // ${PUSH_END_MARKER}\\n`\n\t\t\t: '';\n\tconst nextDelegate = alreadyForwarded\n\t\t? delegate\n\t\t: replacePushRegion(delegate, swiftRegion, delegate.lastIndexOf('}'));\n\tconst changed = await Promise.all([\n\t\twriteChangedFile(entitlementsPath, nextEntitlements),\n\t\twriteChangedFile(delegatePath, nextDelegate)\n\t]);\n\n\treturn changed.some(Boolean);\n};\n\nconst replacePushRegion = (\n\tsource: string,\n\tregion: string,\n\tinsertion: number\n) => {\n\tconst start = source.indexOf(PUSH_START_MARKER);\n\tconst end = source.indexOf(PUSH_END_MARKER);\n\tif (start < 0 !== end < 0 || (start >= 0 && end < start))\n\t\tthrow new TypeError(\n\t\t\t'AbsoluteJS push-notification ownership markers are malformed.'\n\t\t);\n\tif (start >= 0) {\n\t\tconst lineStart = source.lastIndexOf('\\n', start) + 1;\n\t\tconst nextLine = source.indexOf('\\n', end + PUSH_END_MARKER.length);\n\t\tconst lineEnd = nextLine < 0 ? source.length : nextLine + 1;\n\n\t\treturn `${source.slice(0, lineStart)}${region}${source.slice(lineEnd)}`;\n\t}\n\tif (!region) return source;\n\tif (insertion < 0)\n\t\tthrow new TypeError(\n\t\t\t'Could not find a safe native project location for push notifications.'\n\t\t);\n\n\treturn `${source.slice(0, insertion)}${region}${source.slice(insertion)}`;\n};\n\nconst configureAndroid = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tplan: AbsoluteDeviceCapabilityPlan\n) => {\n\tconst path = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'android/app/src/main/AndroidManifest.xml'\n\t);\n\tconst source = await readFile(path, 'utf8');\n\tconst permissions =\n\t\tabsoluteDeviceNativeRequirements(plan).androidPermissions;\n\tconst content = permissions\n\t\t.map(\n\t\t\t(permission) =>\n\t\t\t\t` <uses-permission android:name=\"${escapeXml(permission)}\" />`\n\t\t)\n\t\t.join('\\n');\n\tconst region = content\n\t\t? ` ${START_MARKER}\\n${content}\\n ${END_MARKER}\\n`\n\t\t: '';\n\tconst application = source.indexOf('<application');\n\tconst insertion =\n\t\tapplication === NOT_FOUND\n\t\t\t? NOT_FOUND\n\t\t\t: source.lastIndexOf('\\n', application) + 1;\n\n\tconst nextManifest = managed(source, region, insertion);\n\tif (!plan.capabilities.includes('pushNotifications'))\n\t\treturn writeChangedFile(path, nextManifest);\n\tconst firebaseSource = await optionalSource(\n\t\tconfig.pushAndroidGoogleServicesFile\n\t);\n\tif (firebaseSource === null)\n\t\tthrow new TypeError(\n\t\t\t`Push notifications require Firebase config at ${config.pushAndroidGoogleServicesFile}. Set mobile.pushNotifications.android.googleServicesFile to override it.`\n\t\t);\n\tlet firebase: unknown;\n\ttry {\n\t\tfirebase = JSON.parse(firebaseSource);\n\t} catch (error) {\n\t\tthrow new TypeError('Android google-services.json is invalid JSON.', {\n\t\t\tcause: error\n\t\t});\n\t}\n\tconst clients =\n\t\ttypeof firebase === 'object' && firebase !== null\n\t\t\t? Reflect.get(firebase, 'client')\n\t\t\t: undefined;\n\tconst matchesApp =\n\t\tArray.isArray(clients) &&\n\t\tclients.some((client) => {\n\t\t\tconst info =\n\t\t\t\ttypeof client === 'object' && client !== null\n\t\t\t\t\t? Reflect.get(client, 'client_info')\n\t\t\t\t\t: undefined;\n\t\t\tconst android =\n\t\t\t\ttypeof info === 'object' && info !== null\n\t\t\t\t\t? Reflect.get(info, 'android_client_info')\n\t\t\t\t\t: undefined;\n\n\t\t\treturn (\n\t\t\t\ttypeof android === 'object' &&\n\t\t\t\tandroid !== null &&\n\t\t\t\tReflect.get(android, 'package_name') === config.appId\n\t\t\t);\n\t\t});\n\tif (!matchesApp)\n\t\tthrow new TypeError(\n\t\t\t`Android google-services.json does not contain package ${config.appId}.`\n\t\t);\n\tconst [manifestChanged, firebaseChanged] = await Promise.all([\n\t\twriteChangedFile(path, nextManifest),\n\t\twriteOptionalChangedFile(\n\t\t\tjoin(\n\t\t\t\tconfig.nativeProjectDirectory,\n\t\t\t\t'android/app/google-services.json'\n\t\t\t),\n\t\t\tfirebaseSource\n\t\t)\n\t]);\n\n\treturn manifestChanged || firebaseChanged;\n};\n\nexport const applyAbsoluteNativeDeviceCapabilities = async (\n\tprojectRoot: string,\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tplatforms: readonly MobilePlatform[] = config.platforms,\n\tplan = resolveAbsoluteDeviceCapabilityPlan(projectRoot)\n) => {\n\tconst results = await Promise.all(\n\t\tplatforms.map(async (platform) => ({\n\t\t\tdidChange:\n\t\t\t\tplatform === 'ios'\n\t\t\t\t\t? await configureIos(config, plan)\n\t\t\t\t\t: await configureAndroid(config, plan),\n\t\t\tplatform\n\t\t}))\n\t);\n\n\treturn {\n\t\tchanged: results\n\t\t\t.filter(({ didChange }) => didChange)\n\t\t\t.map(({ platform }) => platform)\n\t};\n};\n",
|
|
59
|
+
"import { readFile, rename, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { NormalizedAbsoluteMobileConfig } from './config';\n\nconst START = '// absolutejs:mobile-updates:start';\nconst END = '// absolutejs:mobile-updates:end';\n\nconst writeChanged = async (path: string, source: string) => {\n\tconst current = await readFile(path, 'utf8');\n\tif (current === source) return false;\n\tconst temporary = `${path}.${crypto.randomUUID()}.tmp`;\n\tawait writeFile(temporary, source, { flag: 'wx' });\n\tawait rename(temporary, path);\n\n\treturn true;\n};\n\nconst replaceRegion = (source: string, region: string) => {\n\tconst start = source.indexOf(START);\n\tconst end = source.indexOf(END);\n\tif (start < 0 !== end < 0 || end < start)\n\t\tthrow new TypeError('AbsoluteJS mobile update markers are malformed.');\n\tif (start >= 0) {\n\t\tconst from = source.lastIndexOf('\\n', start) + 1;\n\t\tconst newline = source.indexOf('\\n', end + END.length);\n\n\t\treturn `${source.slice(0, from)}${region}${source.slice(newline < 0 ? source.length : newline + 1)}`;\n\t}\n\tif (!region) return source;\n\tconst launch = source.indexOf('didFinishLaunchingWithOptions');\n\tconst brace = launch < 0 ? -1 : source.indexOf('{', launch);\n\tconst insert = brace < 0 ? -1 : source.indexOf('\\n', brace) + 1;\n\tif (insert <= 0)\n\t\tthrow new TypeError(\n\t\t\t'Could not find a safe iOS location for mobile update recovery.'\n\t\t);\n\n\treturn `${source.slice(0, insert)}${region}${source.slice(insert)}`;\n};\n\nconst iosRecoveryRegion = ` ${START}\n // A confirmed Capacitor snapshot lives in Library/NoCloud and is not\n // restored during device migration. Clear only a dangling pointer so\n // Capacitor falls back to the store-signed embedded bundle.\n if let persisted = UserDefaults.standard.string(forKey: \"serverBasePath\"), !persisted.isEmpty,\n let library = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first {\n let snapshot = library\n .appendingPathComponent(\"NoCloud/ionic_built_snapshots\", isDirectory: true)\n .appendingPathComponent(URL(fileURLWithPath: persisted).lastPathComponent, isDirectory: true)\n if !FileManager.default.fileExists(atPath: snapshot.path) {\n UserDefaults.standard.removeObject(forKey: \"serverBasePath\")\n }\n }\n ${END}\n`;\n\nexport const applyAbsoluteNativeUpdates = async (\n\tconfig: NormalizedAbsoluteMobileConfig,\n\tplatforms = config.platforms\n) => {\n\tif (config.engine !== 'capacitor' || !platforms.includes('ios'))\n\t\treturn { changed: false };\n\tconst path = join(\n\t\tconfig.nativeProjectDirectory,\n\t\t'ios/App/App/AppDelegate.swift'\n\t);\n\tconst source = await readFile(path, 'utf8');\n\tconst updated = replaceRegion(\n\t\tsource,\n\t\tconfig.updates ? iosRecoveryRegion : ''\n\t);\n\n\treturn { changed: await writeChanged(path, updated) };\n};\n",
|
|
57
60
|
"import { access } from 'node:fs/promises';\nimport { isAbsolute, relative, resolve, sep } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { AbsoluteAndroidReleaseMetadata } from './androidRelease';\nimport type { AbsoluteIosReleaseMetadata } from './iosRelease';\n\nexport type AbsoluteGooglePlayReleaseTarget = {\n\tchangesNotSentForReview?: boolean;\n\tinAppUpdatePriority?: number;\n\tname?: string;\n\treleaseNotes?: readonly { language: string; text: string }[];\n\treviewBehavior?: 'CANCEL_IN_REVIEW_AND_SUBMIT' | 'ERROR_IF_IN_REVIEW';\n\tstatus?: 'completed' | 'draft' | 'halted' | 'inProgress';\n\ttrack: string;\n\tuserFraction?: number;\n};\n\nexport type AbsoluteAppStoreConnectReleaseTarget = {\n\tgroups?: readonly string[];\n\tsubmitForReview?: boolean;\n\twhatsNew?: readonly { locale: string; text: string }[];\n};\n\nexport type AbsoluteNativeReleasePublication = {\n\tchannel?: {\n\t\tchannel: string;\n\t\treleaseId: string;\n\t};\n\trecord: {\n\t\tmetadata: AbsoluteAndroidReleaseMetadata | AbsoluteIosReleaseMetadata;\n\t};\n\treused: boolean;\n\tgooglePlay?: {\n\t\treceipt: {\n\t\t\tintent: { track: string };\n\t\t\tpackageName: string;\n\t\t\tprovider: 'google-play';\n\t\t\treleaseId: string;\n\t\t\tsha256: string;\n\t\t\tstage: string;\n\t\t\tversionCode?: string;\n\t\t};\n\t\treused: boolean;\n\t};\n\tappStoreConnect?: {\n\t\treceipt: {\n\t\t\tappleAppId: string;\n\t\t\tbuildId?: string;\n\t\t\tbuildNumber: number;\n\t\t\tintent: { groups: string[]; submitForReview: boolean };\n\t\t\tmarketingVersion: string;\n\t\t\tprovider: 'app-store-connect';\n\t\t\treleaseId: string;\n\t\t\tsha256: string;\n\t\t\tstage: string;\n\t\t};\n\t\treused: boolean;\n\t};\n};\n\nexport type AbsoluteNativeReleasePublisher = {\n\tprepareAndroidRelease?: (options: {\n\t\tbuildIdentity: string;\n\t\tgooglePlay?: AbsoluteGooglePlayReleaseTarget;\n\t\tpackageName: string;\n\t\tsignal?: AbortSignal;\n\t}) => Promise<{ versionCode?: number }>;\n\tprepareIosRelease?: (options: {\n\t\tbuildIdentity: string;\n\t\tbundleId: string;\n\t\tmarketingVersion: string;\n\t\tsignal?: AbortSignal;\n\t}) => Promise<{ buildNumber: number }>;\n\tpublish: (options: {\n\t\tallowUnsigned?: boolean;\n\t\tappStoreConnect?: AbsoluteAppStoreConnectReleaseTarget;\n\t\tchannel?: string;\n\t\tgooglePlay?: AbsoluteGooglePlayReleaseTarget;\n\t\treleaseRoot: string;\n\t\tsignal?: AbortSignal;\n\t}) => Promise<AbsoluteNativeReleasePublication>;\n};\n\nexport const prepareAbsoluteIosRelease = async (\n\tpublisher: AbsoluteNativeReleasePublisher,\n\toptions: {\n\t\tbuildIdentity: string;\n\t\tbundleId: string;\n\t\tmarketingVersion: string;\n\t\tsignal?: AbortSignal;\n\t}\n) => {\n\tif (typeof publisher.prepareIosRelease !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t'App Store Connect publishing requires a registry module created with @absolutejs/deploy/app-store-connect.'\n\t\t);\n\t}\n\tconst { buildNumber } = await publisher.prepareIosRelease(options);\n\tif (!Number.isSafeInteger(buildNumber) || buildNumber < 1) {\n\t\tthrow new TypeError(\n\t\t\t'App Store Connect publisher returned an invalid iOS build number.'\n\t\t);\n\t}\n\n\treturn buildNumber;\n};\n\ntype PrepareAbsoluteAndroidReleaseOptions = {\n\tbuildIdentity: string;\n\tgooglePlay: AbsoluteGooglePlayReleaseTarget;\n\tpackageName: string;\n\tsignal?: AbortSignal;\n};\n\nexport const prepareAbsoluteAndroidRelease = async (\n\tpublisher: AbsoluteNativeReleasePublisher,\n\toptions: PrepareAbsoluteAndroidReleaseOptions\n) => {\n\tif (typeof publisher.prepareAndroidRelease !== 'function') {\n\t\tthrow new TypeError(\n\t\t\t'Google Play publishing requires a registry module created with @absolutejs/deploy/google-play.'\n\t\t);\n\t}\n\tconst prepared = await publisher.prepareAndroidRelease(options);\n\tconst { versionCode } = prepared;\n\tif (\n\t\ttypeof versionCode !== 'number' ||\n\t\t!Number.isSafeInteger(versionCode) ||\n\t\tversionCode < 1 ||\n\t\tversionCode > 2_100_000_000\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Google Play publisher returned an invalid Android versionCode.'\n\t\t);\n\t}\n\n\treturn versionCode;\n};\n\nexport type PublishAbsoluteAndroidReleaseOptions = {\n\tallowUnsigned?: boolean;\n\tchannel?: string;\n\tgooglePlay?: AbsoluteGooglePlayReleaseTarget;\n\tmodulePath: string;\n\tprojectRoot: string;\n\trelease: {\n\t\tmetadata: AbsoluteAndroidReleaseMetadata;\n\t\treleaseRoot: string;\n\t};\n\tsignal?: AbortSignal;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isPublisher = (value: unknown): value is AbsoluteNativeReleasePublisher =>\n\tisRecord(value) && typeof value.publish === 'function';\n\nconst publisherModulePath = (projectRoot: string, requested: string) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, requested);\n\tconst projectRelative = relative(root, path);\n\tif (\n\t\tprojectRelative === '..' ||\n\t\tprojectRelative.startsWith(`..${sep}`) ||\n\t\tisAbsolute(projectRelative)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'mobile publish --registry must remain inside the project.'\n\t\t);\n\t}\n\n\treturn path;\n};\n\nexport const loadAbsoluteNativeReleasePublisher = async (\n\tprojectRoot: string,\n\trequestedModulePath: string\n) => {\n\tconst modulePath = publisherModulePath(projectRoot, requestedModulePath);\n\tawait access(modulePath).catch(() => {\n\t\tthrow new TypeError(\n\t\t\t`Native release registry module does not exist: ${modulePath}`\n\t\t);\n\t});\n\tconst loaded: unknown = await import(pathToFileURL(modulePath).href);\n\tconst publisher = isRecord(loaded)\n\t\t? (loaded.default ?? loaded.registry)\n\t\t: undefined;\n\tif (!isPublisher(publisher)) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry module must default-export a registry with publish(options).'\n\t\t);\n\t}\n\n\treturn publisher;\n};\n\nexport const publishAbsoluteAndroidRelease = async (\n\toptions: PublishAbsoluteAndroidReleaseOptions\n) => {\n\tconst publisher = await loadAbsoluteNativeReleasePublisher(\n\t\toptions.projectRoot,\n\t\toptions.modulePath\n\t);\n\tconst publication = await publisher.publish({\n\t\tallowUnsigned: options.allowUnsigned,\n\t\tchannel: options.channel,\n\t\tgooglePlay: options.googlePlay,\n\t\treleaseRoot: options.release.releaseRoot,\n\t\tsignal: options.signal\n\t});\n\tconst expected = options.release.metadata;\n\tconst actual = publication.record?.metadata;\n\tif (\n\t\t!actual ||\n\t\tactual.appId !== expected.appId ||\n\t\tactual.platform !== 'android' ||\n\t\tactual.releaseId !== expected.releaseId ||\n\t\tactual.sha256 !== expected.sha256 ||\n\t\tactual.signed !== expected.signed ||\n\t\tactual.versionCode !== expected.versionCode ||\n\t\ttypeof publication.reused !== 'boolean'\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry returned a different Android release identity.'\n\t\t);\n\t}\n\tif (\n\t\toptions.channel !== undefined &&\n\t\t(publication.channel?.channel !== options.channel ||\n\t\t\tpublication.channel.releaseId !== expected.releaseId)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry did not promote the requested channel.'\n\t\t);\n\t}\n\tconst { googlePlay } = publication;\n\tif (options.googlePlay) {\n\t\tif (\n\t\t\t!expected.versionCode ||\n\t\t\t!googlePlay ||\n\t\t\tgooglePlay.receipt.provider !== 'google-play' ||\n\t\t\tgooglePlay.receipt.packageName !== expected.appId ||\n\t\t\tgooglePlay.receipt.releaseId !== expected.releaseId ||\n\t\t\tgooglePlay.receipt.sha256 !== expected.sha256 ||\n\t\t\tgooglePlay.receipt.stage !== 'committed' ||\n\t\t\tgooglePlay.receipt.intent.track !== options.googlePlay.track ||\n\t\t\ttypeof googlePlay.receipt.versionCode !== 'string' ||\n\t\t\t!/^\\d+$/.test(googlePlay.receipt.versionCode) ||\n\t\t\tNumber(googlePlay.receipt.versionCode) !== expected.versionCode ||\n\t\t\ttypeof googlePlay.reused !== 'boolean'\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'Native release publisher did not commit the requested Google Play release.'\n\t\t\t);\n\t\t}\n\t}\n\n\treturn publication;\n};\n\nexport const publishAbsoluteIosRelease = async (options: {\n\tallowUnsigned?: boolean;\n\tappStoreConnect?: AbsoluteAppStoreConnectReleaseTarget;\n\tchannel?: string;\n\tmodulePath: string;\n\tprojectRoot: string;\n\trelease: {\n\t\tmetadata: AbsoluteIosReleaseMetadata;\n\t\treleaseRoot: string;\n\t};\n\tsignal?: AbortSignal;\n}) => {\n\tconst publisher = await loadAbsoluteNativeReleasePublisher(\n\t\toptions.projectRoot,\n\t\toptions.modulePath\n\t);\n\tconst publication = await publisher.publish({\n\t\tallowUnsigned: options.allowUnsigned,\n\t\tappStoreConnect: options.appStoreConnect,\n\t\tchannel: options.channel,\n\t\treleaseRoot: options.release.releaseRoot,\n\t\tsignal: options.signal\n\t});\n\tconst expected = options.release.metadata;\n\tconst actual = publication.record?.metadata;\n\tif (\n\t\t!actual ||\n\t\tactual.appId !== expected.appId ||\n\t\tactual.platform !== 'ios' ||\n\t\tactual.releaseId !== expected.releaseId ||\n\t\tactual.sha256 !== expected.sha256 ||\n\t\tactual.signed !== expected.signed ||\n\t\tactual.buildNumber !== expected.buildNumber ||\n\t\tactual.marketingVersion !== expected.marketingVersion ||\n\t\ttypeof publication.reused !== 'boolean'\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry returned a different iOS release identity.'\n\t\t);\n\t}\n\tif (\n\t\toptions.channel !== undefined &&\n\t\t(publication.channel?.channel !== options.channel ||\n\t\t\tpublication.channel.releaseId !== expected.releaseId)\n\t) {\n\t\tthrow new TypeError(\n\t\t\t'Native release registry did not promote the requested channel.'\n\t\t);\n\t}\n\tif (options.appStoreConnect) {\n\t\tconst distributed = publication.appStoreConnect;\n\t\tif (\n\t\t\t!expected.buildNumber ||\n\t\t\t!distributed ||\n\t\t\tdistributed.receipt.provider !== 'app-store-connect' ||\n\t\t\tdistributed.receipt.releaseId !== expected.releaseId ||\n\t\t\tdistributed.receipt.sha256 !== expected.sha256 ||\n\t\t\tdistributed.receipt.buildNumber !== expected.buildNumber ||\n\t\t\tdistributed.receipt.marketingVersion !==\n\t\t\t\texpected.marketingVersion ||\n\t\t\t!['distributed', 'review-submitted'].includes(\n\t\t\t\tdistributed.receipt.stage\n\t\t\t) ||\n\t\t\tJSON.stringify([...distributed.receipt.intent.groups].sort()) !==\n\t\t\t\tJSON.stringify(\n\t\t\t\t\t[...(options.appStoreConnect.groups ?? [])].sort()\n\t\t\t\t) ||\n\t\t\tdistributed.receipt.intent.submitForReview !==\n\t\t\t\t(options.appStoreConnect.submitForReview ?? false) ||\n\t\t\ttypeof distributed.reused !== 'boolean'\n\t\t) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'Native release publisher did not complete the requested App Store Connect release.'\n\t\t\t);\n\t\t}\n\t}\n\n\treturn publication;\n};\n",
|
|
58
61
|
"import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, extname, relative, resolve } from 'node:path';\nimport type { BunPlugin } from 'bun';\nimport ts from 'typescript';\nimport { ABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION } from './pageProtocol';\nimport { hashAbsoluteMobilePropsSchema } from './releaseArtifact';\nimport {\n\tABSOLUTE_MOBILE_ROUTE_DETAIL,\n\ttype AbsoluteMobileBuildPageMetadata\n} from './buildMetadata';\n\ntype MobileRouteTransformOptions = {\n\tentry: string;\n\tprojectRoot?: string;\n};\n\ntype AnalyzedPageCall = {\n\tinputKind: 'object' | 'static';\n\tmetadata: AbsoluteMobileBuildPageMetadata;\n\tpageCallStart: number;\n\trouteCallSpan: string;\n};\n\ntype AnalyzedFile = {\n\tbyPageCall: Map<number, AnalyzedPageCall>;\n\tbyRouteCall: Map<string, AnalyzedPageCall>;\n};\n\ntype PageHandlerDefinition = {\n\tbundleProperty?: 'index' | 'indexPath';\n\tframework: AbsoluteMobileBuildPageMetadata['framework'];\n\tinputKind?: 'static';\n\tpageProperty?: 'Page';\n\tpropsProperty: 'props' | 'requestContext';\n\tsourceProperty?: 'pagePath';\n};\n\ntype AssetKeyResolver = (\n\texpression: ts.Expression | undefined,\n\tchecker: ts.TypeChecker,\n\tseen?: Set<ts.Symbol>\n) => string | undefined;\n\nconst ROUTE_METHODS = new Set(['get', 'head']);\nconst SOURCE_FILTER = /\\.[cm]?[jt]sx?$/;\nconst PAGE_HANDLERS = new Map<string, PageHandlerDefinition>([\n\t[\n\t\t'handleHTMLPageRequest',\n\t\t{ framework: 'html', inputKind: 'static', propsProperty: 'props' }\n\t],\n\t[\n\t\t'handleHTMXPageRequest',\n\t\t{ framework: 'htmx', inputKind: 'static', propsProperty: 'props' }\n\t],\n\t[\n\t\t'handleAngularPageRequest',\n\t\t{\n\t\t\tbundleProperty: 'indexPath',\n\t\t\tframework: 'angular',\n\t\t\tpropsProperty: 'requestContext',\n\t\t\tsourceProperty: 'pagePath'\n\t\t}\n\t],\n\t[\n\t\t'handleReactPageRequest',\n\t\t{\n\t\t\tbundleProperty: 'index',\n\t\t\tframework: 'react',\n\t\t\tpageProperty: 'Page',\n\t\t\tpropsProperty: 'props'\n\t\t}\n\t],\n\t[\n\t\t'handleSveltePageRequest',\n\t\t{\n\t\t\tbundleProperty: 'indexPath',\n\t\t\tframework: 'svelte',\n\t\t\tpropsProperty: 'props',\n\t\t\tsourceProperty: 'pagePath'\n\t\t}\n\t],\n\t[\n\t\t'handleVuePageRequest',\n\t\t{\n\t\t\tbundleProperty: 'indexPath',\n\t\t\tframework: 'vue',\n\t\t\tpropsProperty: 'props',\n\t\t\tsourceProperty: 'pagePath'\n\t\t}\n\t]\n]);\n\nconst posixPath = (value: string) => value.replace(/\\\\/g, '/');\n\nconst findTsconfig = (entry: string, projectRoot: string) =>\n\tts.findConfigFile(dirname(entry), existsSync, 'tsconfig.json') ??\n\tts.findConfigFile(projectRoot, existsSync, 'tsconfig.json');\n\nconst createProgram = (entry: string, projectRoot: string) => {\n\tconst configPath = findTsconfig(entry, projectRoot);\n\tif (!configPath) {\n\t\treturn ts.createProgram([entry], {\n\t\t\tallowJs: true,\n\t\t\tjsx: ts.JsxEmit.ReactJSX,\n\t\t\tmodule: ts.ModuleKind.ESNext,\n\t\t\tmoduleResolution: ts.ModuleResolutionKind.Bundler,\n\t\t\ttarget: ts.ScriptTarget.ESNext\n\t\t});\n\t}\n\n\tconst parsed = ts.parseJsonConfigFileContent(\n\t\tts.readConfigFile(configPath, (path) => readFileSync(path, 'utf8'))\n\t\t\t.config,\n\t\tts.sys,\n\t\tdirname(configPath)\n\t);\n\tif (!parsed.fileNames.includes(entry)) parsed.fileNames.push(entry);\n\n\treturn ts.createProgram(parsed.fileNames, parsed.options);\n};\n\nconst propertyName = (property: ts.ObjectLiteralElementLike) => {\n\tif (!('name' in property) || !property.name) return undefined;\n\tif (ts.isIdentifier(property.name)) return property.name.text;\n\tif (ts.isStringLiteralLike(property.name)) return property.name.text;\n\n\treturn undefined;\n};\n\nconst objectPropertyExpression = (\n\tobject: ts.ObjectLiteralExpression,\n\tname: string\n) => {\n\tconst property = object.properties.find(\n\t\t(candidate) => propertyName(candidate) === name\n\t);\n\tif (property && ts.isPropertyAssignment(property)) {\n\t\treturn property.initializer;\n\t}\n\tif (property && ts.isShorthandPropertyAssignment(property)) {\n\t\treturn property.name;\n\t}\n\n\treturn undefined;\n};\n\nconst serializeType = (\n\ttype: ts.Type,\n\tchecker: ts.TypeChecker,\n\tancestors = new Set<ts.Type>()\n): unknown => {\n\tif (type.flags & ts.TypeFlags.Any) return { type: 'any' };\n\tif (type.flags & ts.TypeFlags.Unknown) return { type: 'unknown' };\n\tif (type.flags & ts.TypeFlags.Never) return { type: 'never' };\n\tif (type.flags & ts.TypeFlags.StringLike) return { type: 'string' };\n\tif (type.flags & ts.TypeFlags.NumberLike) return { type: 'number' };\n\tif (type.flags & ts.TypeFlags.BooleanLike) return { type: 'boolean' };\n\tif (type.flags & ts.TypeFlags.BigIntLike) return { type: 'bigint' };\n\tif (type.flags & ts.TypeFlags.Null) return { type: 'null' };\n\tif (type.flags & ts.TypeFlags.Undefined) return { type: 'undefined' };\n\tif (type.isUnion()) {\n\t\treturn {\n\t\t\tanyOf: type.types\n\t\t\t\t.map((member) => serializeType(member, checker, ancestors))\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\tJSON.stringify(left).localeCompare(JSON.stringify(right))\n\t\t\t\t)\n\t\t};\n\t}\n\tif (type.isIntersection()) {\n\t\treturn {\n\t\t\tallOf: type.types\n\t\t\t\t.map((member) => serializeType(member, checker, ancestors))\n\t\t\t\t.sort((left, right) =>\n\t\t\t\t\tJSON.stringify(left).localeCompare(JSON.stringify(right))\n\t\t\t\t)\n\t\t};\n\t}\n\tif (ancestors.has(type)) {\n\t\treturn {\n\t\t\tref: checker.typeToString(\n\t\t\t\ttype,\n\t\t\t\tundefined,\n\t\t\t\tts.TypeFormatFlags.NoTruncation\n\t\t\t)\n\t\t};\n\t}\n\n\tancestors.add(type);\n\tconst arrayElement = checker.getIndexTypeOfType(type, ts.IndexKind.Number);\n\tconst properties = checker.getPropertiesOfType(type);\n\tlet schema: unknown;\n\tif (arrayElement && properties.some(({ name }) => name === 'length')) {\n\t\tschema = {\n\t\t\titems: serializeType(arrayElement, checker, ancestors),\n\t\t\ttype: 'array'\n\t\t};\n\t} else if (properties.length > 0) {\n\t\tconst entries = properties\n\t\t\t.filter(({ name }) => !name.startsWith('__'))\n\t\t\t.map((property) => {\n\t\t\t\tconst declaration =\n\t\t\t\t\tproperty.valueDeclaration ?? property.declarations?.[0];\n\t\t\t\tconst propertyType = declaration\n\t\t\t\t\t? checker.getTypeOfSymbolAtLocation(property, declaration)\n\t\t\t\t\t: checker.getDeclaredTypeOfSymbol(property);\n\n\t\t\t\treturn [\n\t\t\t\t\tproperty.name,\n\t\t\t\t\t{\n\t\t\t\t\t\toptional: Boolean(\n\t\t\t\t\t\t\tproperty.flags & ts.SymbolFlags.Optional\n\t\t\t\t\t\t),\n\t\t\t\t\t\tschema: serializeType(propertyType, checker, ancestors)\n\t\t\t\t\t}\n\t\t\t\t] as const;\n\t\t\t})\n\t\t\t.sort(([left], [right]) => left.localeCompare(right));\n\t\tschema = { properties: Object.fromEntries(entries), type: 'object' };\n\t} else {\n\t\tschema = {\n\t\t\ttype: checker.typeToString(\n\t\t\t\ttype,\n\t\t\t\tundefined,\n\t\t\t\tts.TypeFormatFlags.NoTruncation\n\t\t\t)\n\t\t};\n\t}\n\tancestors.delete(type);\n\n\treturn schema;\n};\n\nconst pagePropsType = (\n\tpageExpression: ts.Expression,\n\tpropsExpression: ts.Expression | undefined,\n\tchecker: ts.TypeChecker\n) => {\n\tconst pageType = checker.getTypeAtLocation(pageExpression);\n\tconst [signature] = pageType.getCallSignatures();\n\tconst [parameter] = signature?.parameters ?? [];\n\tconst declaration =\n\t\tparameter?.valueDeclaration ?? parameter?.declarations?.[0];\n\tif (parameter && declaration) {\n\t\treturn checker.getTypeOfSymbolAtLocation(parameter, declaration);\n\t}\n\n\treturn propsExpression\n\t\t? checker.getTypeAtLocation(propsExpression)\n\t\t: checker.getTypeAtLocation(pageExpression);\n};\n\nconst resolvePageIdentity = (\n\texpression: ts.Expression,\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\tprojectRoot: string\n) => {\n\tlet symbol = checker.getSymbolAtLocation(expression);\n\tif (symbol?.flags && symbol.flags & ts.SymbolFlags.Alias) {\n\t\tsymbol = checker.getAliasedSymbol(symbol);\n\t}\n\tconst declaration = symbol?.declarations?.[0];\n\tconst file = declaration?.getSourceFile().fileName ?? sourceFile.fileName;\n\tconst exportedName = symbol?.name ?? expression.getText(sourceFile);\n\tconst source = posixPath(relative(projectRoot, file));\n\n\treturn `${source}#${exportedName}`;\n};\n\nconst resolveAlias = (symbol: ts.Symbol, checker: ts.TypeChecker) => {\n\tif (!(symbol.flags & ts.SymbolFlags.Alias)) return symbol;\n\n\treturn checker.getAliasedSymbol(symbol);\n};\n\nconst assetKey: AssetKeyResolver = (\n\texpression,\n\tchecker,\n\tseen = new Set<ts.Symbol>()\n) => {\n\tif (!expression) return undefined;\n\n\tif (ts.isIdentifier(expression)) {\n\t\tconst unresolved = ts.isShorthandPropertyAssignment(expression.parent)\n\t\t\t? checker.getShorthandAssignmentValueSymbol(expression.parent)\n\t\t\t: checker.getSymbolAtLocation(expression);\n\t\tif (!unresolved) return undefined;\n\t\tconst symbol = resolveAlias(unresolved, checker);\n\t\tif (seen.has(symbol)) return undefined;\n\t\tseen.add(symbol);\n\t\tconst declaration = symbol.valueDeclaration ?? symbol.declarations?.[0];\n\t\tif (!declaration || !ts.isVariableDeclaration(declaration))\n\t\t\treturn undefined;\n\n\t\treturn assetKey(declaration.initializer, checker, seen);\n\t}\n\n\tif (!ts.isCallExpression(expression)) return undefined;\n\tif (\n\t\t!ts.isIdentifier(expression.expression) ||\n\t\texpression.expression.text !== 'asset'\n\t) {\n\t\treturn undefined;\n\t}\n\tconst [, key] = expression.arguments;\n\n\treturn key && ts.isStringLiteralLike(key) ? key.text : undefined;\n};\n\nconst staticString = (\n\texpression: ts.Expression,\n\tbindings: ReadonlyMap<string, string>\n): string | undefined => {\n\tif (ts.isStringLiteralLike(expression)) return expression.text;\n\tif (ts.isIdentifier(expression)) return bindings.get(expression.text);\n\tif (ts.isNoSubstitutionTemplateLiteral(expression)) return expression.text;\n\tif (!ts.isTemplateExpression(expression)) return undefined;\n\tlet value = expression.head.text;\n\tfor (const span of expression.templateSpans) {\n\t\tconst substitution = staticString(span.expression, bindings);\n\t\tif (substitution === undefined) return undefined;\n\t\tvalue += substitution + span.literal.text;\n\t}\n\n\treturn value;\n};\n\nconst assetKeyWithBindings = (\n\texpression: ts.Expression | undefined,\n\tchecker: ts.TypeChecker,\n\tbindings: ReadonlyMap<string, string> = new Map()\n) => {\n\tif (!expression) return undefined;\n\tif (\n\t\tts.isCallExpression(expression) &&\n\t\tts.isIdentifier(expression.expression) &&\n\t\texpression.expression.text === 'asset'\n\t) {\n\t\tconst [, key] = expression.arguments;\n\n\t\treturn key ? staticString(key, bindings) : undefined;\n\t}\n\n\treturn assetKey(expression, checker);\n};\n\nconst callableObject = (call: ts.CallExpression, checker: ts.TypeChecker) => {\n\tconst symbol = checker.getSymbolAtLocation(call.expression);\n\tconst resolved = symbol ? resolveAlias(symbol, checker) : undefined;\n\tconst declaration =\n\t\tresolved?.valueDeclaration ?? resolved?.declarations?.[0];\n\tlet callable:\n\t\t| ts.ArrowFunction\n\t\t| ts.FunctionDeclaration\n\t\t| ts.FunctionExpression\n\t\t| undefined;\n\tif (declaration && ts.isFunctionDeclaration(declaration)) {\n\t\tcallable = declaration;\n\t} else if (\n\t\tdeclaration &&\n\t\tts.isVariableDeclaration(declaration) &&\n\t\tdeclaration.initializer &&\n\t\t(ts.isArrowFunction(declaration.initializer) ||\n\t\t\tts.isFunctionExpression(declaration.initializer))\n\t) {\n\t\tcallable = declaration.initializer;\n\t}\n\tif (!callable) return undefined;\n\tconst bindings = new Map<string, string>();\n\tcallable.parameters.forEach((parameter, index) => {\n\t\tif (!ts.isIdentifier(parameter.name)) return;\n\t\tconst argument = call.arguments[index];\n\t\tif (!argument) return;\n\t\tconst value = staticString(argument, new Map());\n\t\tif (value !== undefined) bindings.set(parameter.name.text, value);\n\t});\n\tconst { body } = callable;\n\tif (!body) return undefined;\n\tconst expressionBody = ts.isParenthesizedExpression(body)\n\t\t? body.expression\n\t\t: body;\n\tif (ts.isObjectLiteralExpression(expressionBody)) {\n\t\treturn { bindings, object: expressionBody };\n\t}\n\tif (ts.isBlock(body)) {\n\t\tconst returned = body.statements.find(ts.isReturnStatement)?.expression;\n\t\tif (returned && ts.isObjectLiteralExpression(returned)) {\n\t\t\treturn { bindings, object: returned };\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nconst spreadObject = (\n\texpression: ts.Expression,\n\tchecker: ts.TypeChecker,\n\tbindings: ReadonlyMap<string, string>\n) => {\n\tif (ts.isObjectLiteralExpression(expression)) {\n\t\treturn { bindings, object: expression };\n\t}\n\tif (!ts.isCallExpression(expression)) return undefined;\n\n\treturn callableObject(expression, checker);\n};\n\nconst objectAssetKey = (\n\tobject: ts.ObjectLiteralExpression,\n\tname: string,\n\tchecker: ts.TypeChecker,\n\tbindings: ReadonlyMap<string, string> = new Map()\n): string | undefined => {\n\tfor (const property of [...object.properties].reverse()) {\n\t\tif (\n\t\t\tpropertyName(property) === name &&\n\t\t\tts.isShorthandPropertyAssignment(property)\n\t\t) {\n\t\t\treturn assetKeyWithBindings(property.name, checker, bindings);\n\t\t}\n\t\tif (\n\t\t\tpropertyName(property) === name &&\n\t\t\tts.isPropertyAssignment(property)\n\t\t) {\n\t\t\treturn assetKeyWithBindings(\n\t\t\t\tproperty.initializer,\n\t\t\t\tchecker,\n\t\t\t\tbindings\n\t\t\t);\n\t\t}\n\t\tif (!ts.isSpreadAssignment(property)) continue;\n\t\tconst nestedObject = spreadObject(\n\t\t\tproperty.expression,\n\t\t\tchecker,\n\t\t\tbindings\n\t\t);\n\t\tif (!nestedObject) continue;\n\t\tconst nested = objectAssetKey(\n\t\t\tnestedObject.object,\n\t\t\tname,\n\t\t\tchecker,\n\t\t\tnestedObject.bindings\n\t\t);\n\t\tif (nested) return nested;\n\t}\n\n\treturn undefined;\n};\n\nconst findPageCall = (nodes: readonly ts.Node[]) => {\n\tlet found:\n\t\t| { definition: PageHandlerDefinition; node: ts.CallExpression }\n\t\t| undefined;\n\tconst visit = (candidate: ts.Node) => {\n\t\tif (found) return;\n\t\tif (\n\t\t\tts.isCallExpression(candidate) &&\n\t\t\tts.isIdentifier(candidate.expression) &&\n\t\t\tPAGE_HANDLERS.has(candidate.expression.text)\n\t\t) {\n\t\t\tconst definition = PAGE_HANDLERS.get(candidate.expression.text);\n\t\t\tif (!definition) return;\n\t\t\tfound = { definition, node: candidate };\n\n\t\t\treturn;\n\t\t}\n\t\tts.forEachChild(candidate, visit);\n\t};\n\tfor (const node of nodes) visit(node);\n\n\treturn found;\n};\n\nconst isProjectSource = (\n\tsourceFile: ts.SourceFile,\n\tresolvedFile: string,\n\tprojectRoot: string\n) =>\n\t!sourceFile.isDeclarationFile &&\n\t!resolvedFile.includes('/node_modules/') &&\n\tresolvedFile.startsWith(`${projectRoot}/`);\n\nconst analyzeRouteCall = (\n\tnode: ts.CallExpression,\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\tprojectRoot: string\n) => {\n\tconst callee = node.expression;\n\tif (!ts.isPropertyAccessExpression(callee)) return undefined;\n\tif (!ROUTE_METHODS.has(callee.name.text)) return undefined;\n\tconst [routePath] = node.arguments;\n\tif (!routePath || !ts.isStringLiteralLike(routePath)) return undefined;\n\tconst foundPageCall = findPageCall(node.arguments.slice(1));\n\tconst pageCall = foundPageCall?.node;\n\tconst definition = foundPageCall?.definition;\n\tconst [input] = pageCall?.arguments ?? [];\n\tif (!pageCall || !input) {\n\t\treturn undefined;\n\t}\n\tif (!definition) return undefined;\n\tif (definition.inputKind === 'static') {\n\t\tconst bundleKey = assetKey(input, checker);\n\t\tif (!bundleKey) return undefined;\n\t\tconst pageId = `${definition.framework}:${bundleKey}`;\n\t\tconst propsSchemaHash = hashAbsoluteMobilePropsSchema({\n\t\t\tproperties: {},\n\t\t\ttype: 'object'\n\t\t});\n\n\t\treturn {\n\t\t\tinputKind: 'static',\n\t\t\tmetadata: {\n\t\t\t\tbundleKey,\n\t\t\t\tcontract: `${definition.framework}:${pageId}:${propsSchemaHash}`,\n\t\t\t\tframework: definition.framework,\n\t\t\t\tpageId,\n\t\t\t\tpropsSchemaHash\n\t\t\t},\n\t\t\tpageCallStart: pageCall.getStart(sourceFile),\n\t\t\trouteCallSpan: `${node.getStart(sourceFile)}:${node.end}`\n\t\t} satisfies AnalyzedPageCall;\n\t}\n\tif (!ts.isObjectLiteralExpression(input) || !definition.bundleProperty) {\n\t\treturn undefined;\n\t}\n\tconst page = definition.pageProperty\n\t\t? objectPropertyExpression(input, definition.pageProperty)\n\t\t: undefined;\n\tconst source = definition.sourceProperty\n\t\t? objectAssetKey(input, definition.sourceProperty, checker)\n\t\t: undefined;\n\tif (definition.pageProperty && !page) return undefined;\n\tif (definition.sourceProperty && !source) return undefined;\n\tconst props = objectPropertyExpression(input, definition.propsProperty);\n\tconst bundleKey = objectAssetKey(input, definition.bundleProperty, checker);\n\tif (!bundleKey) return undefined;\n\tconst pageId = page\n\t\t? resolvePageIdentity(page, sourceFile, checker, projectRoot)\n\t\t: `${definition.framework}:${source}`;\n\tlet propsType: ts.Type | undefined;\n\tif (page) propsType = pagePropsType(page, props, checker);\n\telse if (props) propsType = checker.getTypeAtLocation(props);\n\tconst schema = propsType\n\t\t? serializeType(propsType, checker)\n\t\t: { properties: {}, type: 'object' };\n\tconst propsSchemaHash = hashAbsoluteMobilePropsSchema(schema);\n\tconst metadata: AbsoluteMobileBuildPageMetadata = {\n\t\tbundleKey,\n\t\tcontract: `${definition.framework}:${pageId}:${propsSchemaHash}`,\n\t\tframework: definition.framework,\n\t\tpageId,\n\t\tpropsSchemaHash\n\t};\n\tconst result: AnalyzedPageCall = {\n\t\tinputKind: 'object',\n\t\tmetadata,\n\t\tpageCallStart: pageCall.getStart(sourceFile),\n\t\trouteCallSpan: `${node.getStart(sourceFile)}:${node.end}`\n\t};\n\n\treturn result;\n};\n\nconst analyzeSourceFile = (\n\tsourceFile: ts.SourceFile,\n\tchecker: ts.TypeChecker,\n\tprojectRoot: string\n) => {\n\tconst analysis: AnalyzedFile = {\n\t\tbyPageCall: new Map(),\n\t\tbyRouteCall: new Map()\n\t};\n\tconst visit = (node: ts.Node) => {\n\t\tconst result = ts.isCallExpression(node)\n\t\t\t? analyzeRouteCall(node, sourceFile, checker, projectRoot)\n\t\t\t: undefined;\n\t\tif (result) {\n\t\t\tanalysis.byPageCall.set(result.pageCallStart, result);\n\t\t\tanalysis.byRouteCall.set(result.routeCallSpan, result);\n\t\t}\n\t\tts.forEachChild(node, visit);\n\t};\n\tts.forEachChild(sourceFile, visit);\n\n\treturn analysis;\n};\n\nconst analyzeProgram = (program: ts.Program, projectRoot: string) => {\n\tconst checker = program.getTypeChecker();\n\tconst analyzed = new Map<string, AnalyzedFile>();\n\tfor (const sourceFile of program.getSourceFiles()) {\n\t\tconst resolvedFile = resolve(sourceFile.fileName);\n\t\tif (!isProjectSource(sourceFile, resolvedFile, projectRoot)) continue;\n\t\tconst analysis = analyzeSourceFile(sourceFile, checker, projectRoot);\n\t\tif (analysis.byPageCall.size > 0) analyzed.set(resolvedFile, analysis);\n\t}\n\n\treturn analyzed;\n};\n\nconst metadataExpression = (metadata: AbsoluteMobileBuildPageMetadata) =>\n\tts.factory.createObjectLiteralExpression(\n\t\tObject.entries(metadata).map(([key, item]) =>\n\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\tts.factory.createStringLiteral(key),\n\t\t\t\tts.factory.createStringLiteral(item)\n\t\t\t)\n\t\t),\n\t\tfalse\n\t);\n\nconst routeOptions = (\n\texisting: ts.Expression | undefined,\n\tmetadata: AbsoluteMobileBuildPageMetadata\n) => {\n\tconst detail = ts.factory.createObjectLiteralExpression([\n\t\tts.factory.createPropertyAssignment(\n\t\t\tts.factory.createStringLiteral(ABSOLUTE_MOBILE_ROUTE_DETAIL),\n\t\t\tmetadataExpression(metadata)\n\t\t)\n\t]);\n\tif (!existing) {\n\t\treturn ts.factory.createObjectLiteralExpression([\n\t\t\tts.factory.createPropertyAssignment('detail', detail)\n\t\t]);\n\t}\n\n\treturn ts.factory.createObjectLiteralExpression([\n\t\tts.factory.createSpreadAssignment(existing),\n\t\tts.factory.createPropertyAssignment(\n\t\t\t'detail',\n\t\t\tts.factory.createObjectLiteralExpression([\n\t\t\t\tts.factory.createSpreadAssignment(\n\t\t\t\t\tts.factory.createPropertyAccessExpression(\n\t\t\t\t\t\texisting,\n\t\t\t\t\t\t'detail'\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\t\tts.factory.createStringLiteral(\n\t\t\t\t\t\tABSOLUTE_MOBILE_ROUTE_DETAIL\n\t\t\t\t\t),\n\t\t\t\t\tmetadataExpression(metadata)\n\t\t\t\t)\n\t\t\t])\n\t\t)\n\t]);\n};\n\nconst transformPageCall = (\n\tnode: ts.CallExpression,\n\tpage: AnalyzedPageCall | undefined\n) => {\n\tif (!page) return undefined;\n\tif (page.inputKind === 'static') {\n\t\tconst [pagePath, existingOptions, ...rest] = node.arguments;\n\t\tif (!pagePath) return undefined;\n\t\tconst options = ts.factory.createObjectLiteralExpression([\n\t\t\t...(existingOptions\n\t\t\t\t? [ts.factory.createSpreadAssignment(existingOptions)]\n\t\t\t\t: []),\n\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\t'__absoluteMobile',\n\t\t\t\tmetadataExpression(page.metadata)\n\t\t\t)\n\t\t]);\n\n\t\treturn ts.factory.updateCallExpression(\n\t\t\tnode,\n\t\t\tnode.expression,\n\t\t\tnode.typeArguments,\n\t\t\t[pagePath, options, ...rest]\n\t\t);\n\t}\n\tconst [input] = node.arguments;\n\tif (!input || !ts.isObjectLiteralExpression(input)) return undefined;\n\n\treturn ts.factory.updateCallExpression(\n\t\tnode,\n\t\tnode.expression,\n\t\tnode.typeArguments,\n\t\t[\n\t\t\tts.factory.updateObjectLiteralExpression(input, [\n\t\t\t\t...input.properties,\n\t\t\t\tts.factory.createPropertyAssignment(\n\t\t\t\t\t'__absoluteMobile',\n\t\t\t\t\tmetadataExpression(page.metadata)\n\t\t\t\t)\n\t\t\t]),\n\t\t\t...node.arguments.slice(1)\n\t\t]\n\t);\n};\n\nconst transformRouteCall = (\n\tnode: ts.CallExpression,\n\troute: AnalyzedPageCall | undefined\n) => {\n\tif (!route) return undefined;\n\tconst [path, maybeOptions, maybeHandler, ...rest] = node.arguments;\n\tif (!path || !maybeOptions) return undefined;\n\tconst options = maybeHandler ? maybeOptions : undefined;\n\tconst handler = maybeHandler ?? maybeOptions;\n\n\treturn ts.factory.updateCallExpression(\n\t\tnode,\n\t\tnode.expression,\n\t\tnode.typeArguments,\n\t\t[path, routeOptions(options, route.metadata), handler, ...rest]\n\t);\n};\n\nconst transformFile = (\n\tsource: string,\n\tfileName: string,\n\tanalysis: AnalyzedFile\n) => {\n\tconst sourceFile = ts.createSourceFile(\n\t\tfileName,\n\t\tsource,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tfileName.endsWith('x') ? ts.ScriptKind.TSX : ts.ScriptKind.TS\n\t);\n\tconst transformer: ts.TransformerFactory<ts.SourceFile> = (context) => {\n\t\tconst visit: ts.Visitor = (node) => {\n\t\t\tif (!ts.isCallExpression(node)) {\n\t\t\t\treturn ts.visitEachChild(node, visit, context);\n\t\t\t}\n\t\t\tconst transformedChildren = ts.visitEachChild(node, visit, context);\n\t\t\tconst page = analysis.byPageCall.get(node.getStart(sourceFile));\n\t\t\tconst transformedPage = transformPageCall(\n\t\t\t\ttransformedChildren,\n\t\t\t\tpage\n\t\t\t);\n\t\t\tif (transformedPage) return transformedPage;\n\t\t\tconst route = analysis.byRouteCall.get(\n\t\t\t\t`${node.getStart(sourceFile)}:${node.end}`\n\t\t\t);\n\t\t\tconst transformedRoute = transformRouteCall(\n\t\t\t\ttransformedChildren,\n\t\t\t\troute\n\t\t\t);\n\t\t\tif (transformedRoute) return transformedRoute;\n\n\t\t\treturn transformedChildren;\n\t\t};\n\n\t\treturn (node) => ts.visitNode(node, visit, ts.isSourceFile) ?? node;\n\t};\n\tconst result = ts.transform(sourceFile, [transformer]);\n\ttry {\n\t\tconst [transformed] = result.transformed;\n\t\tif (!transformed) throw new TypeError('Mobile route transform failed.');\n\n\t\treturn ts.createPrinter().printFile(transformed);\n\t} finally {\n\t\tresult.dispose();\n\t}\n};\n\nexport const ABSOLUTE_MOBILE_TRANSFORM_PROTOCOL =\n\tABSOLUTE_MOBILE_PAGE_PROTOCOL_VERSION;\nexport const createAbsoluteMobileRouteMetadataPlugin = (\n\toptions: MobileRouteTransformOptions\n): BunPlugin => {\n\tconst projectRoot = resolve(options.projectRoot ?? process.cwd());\n\tconst entry = resolve(options.entry);\n\tconst analyzed = analyzeProgram(\n\t\tcreateProgram(entry, projectRoot),\n\t\tprojectRoot\n\t);\n\n\treturn {\n\t\tname: 'absolute-mobile-route-metadata',\n\t\tsetup(build) {\n\t\t\tbuild.onLoad({ filter: SOURCE_FILTER }, async ({ path }) => {\n\t\t\t\tconst analysis = analyzed.get(resolve(path));\n\t\t\t\tif (!analysis) return undefined;\n\t\t\t\tconst source = await Bun.file(path).text();\n\n\t\t\t\treturn {\n\t\t\t\t\tcontents: transformFile(source, path, analysis),\n\t\t\t\t\tloader: extname(path).endsWith('x') ? 'tsx' : 'ts'\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n};\nexport const inspectAbsoluteMobileRouteMetadata = (\n\toptions: MobileRouteTransformOptions\n) => {\n\tconst projectRoot = resolve(options.projectRoot ?? process.cwd());\n\tconst entry = resolve(options.entry);\n\tconst analyzed = analyzeProgram(\n\t\tcreateProgram(entry, projectRoot),\n\t\tprojectRoot\n\t);\n\n\treturn [...analyzed.entries()].flatMap(([file, analysis]) =>\n\t\t[...analysis.byRouteCall.values()].map(({ metadata }) => ({\n\t\t\tfile: posixPath(relative(projectRoot, file)),\n\t\t\tmetadata\n\t\t}))\n\t);\n};\n",
|
|
59
62
|
"// src/contracts.ts\nclass AbsoluteHttpError extends Error {\n code;\n cause;\n status;\n url;\n constructor(code, message, options = {}) {\n super(message);\n this.name = \"AbsoluteHttpError\";\n this.code = code;\n this.cause = options.cause;\n this.status = options.status;\n this.url = options.url;\n }\n}\n// src/url.ts\nvar loopbackHosts = new Set([\"127.0.0.1\", \"[::1]\", \"localhost\"]);\nvar normalizeAbsoluteHttpOrigin = (value) => {\n let url;\n try {\n url = new URL(value);\n } catch (cause) {\n throw new AbsoluteHttpError(\"origin\", \"HTTP origin is invalid.\", {\n cause\n });\n }\n const loopback = url.protocol === \"http:\" && loopbackHosts.has(url.hostname);\n if (url.protocol !== \"https:\" && !loopback)\n throw new AbsoluteHttpError(\"origin\", \"HTTP origin must use HTTPS outside loopback development.\");\n if (url.username || url.password || url.pathname !== \"/\" || url.search || url.hash)\n throw new AbsoluteHttpError(\"origin\", \"HTTP origin cannot contain credentials, a path, query, or fragment.\");\n return url.origin;\n};\nvar resolveAbsoluteHttpUrl = (target, origin) => {\n let url;\n try {\n url = new URL(String(target), `${origin}/`);\n } catch (cause) {\n throw new AbsoluteHttpError(\"origin\", \"HTTP request URL is invalid.\", {\n cause\n });\n }\n if (url.username || url.password)\n throw new AbsoluteHttpError(\"origin\", \"HTTP request URLs cannot contain credentials.\");\n if (url.origin !== origin)\n throw new AbsoluteHttpError(\"origin\", \"Absolute HTTP refused a request outside the configured application origin.\", { url: url.href });\n url.hash = \"\";\n return url;\n};\n\n// src/adapters.ts\nvar createAbsoluteHttpTransport = ({\n fetch: fetchImpl = globalThis.fetch,\n origin,\n runtime\n}) => ({\n fetch: fetchImpl,\n origin: normalizeAbsoluteHttpOrigin(origin),\n runtime\n});\nvar createWebHttpTransport = (options = {}) => {\n const origin = options.origin ?? globalThis.location?.origin;\n if (!origin)\n throw new TypeError(\"The web HTTP transport requires a browser origin or explicit origin.\");\n return createAbsoluteHttpTransport({\n ...options.fetch ? { fetch: options.fetch } : {},\n origin,\n runtime: \"web\"\n });\n};\n\n// src/runtime.ts\nvar RUNTIME_REGISTRY = Symbol.for(\"@absolutejs/http/runtime\");\nvar registryHost = globalThis;\nvar isRuntimeRegistry = (value) => typeof value === \"object\" && value !== null && Array.isArray(Reflect.get(value, \"installations\"));\nvar runtimeRegistry = (() => {\n const existing = registryHost[RUNTIME_REGISTRY];\n if (isRuntimeRegistry(existing))\n return existing;\n const created = { installations: [] };\n Object.defineProperty(registryHost, RUNTIME_REGISTRY, {\n configurable: false,\n enumerable: false,\n value: created,\n writable: false\n });\n return created;\n})();\nvar fallbackTransport = () => {\n if (typeof location !== \"undefined\" && location.origin)\n return createWebHttpTransport();\n throw new AbsoluteHttpError(\"not-configured\", \"Absolute HTTP requires a request-scoped SSR transport outside a browser.\");\n};\nvar getAbsoluteHttpTransport = () => runtimeRegistry.installations.at(-1)?.transport ?? (runtimeRegistry.fallback ??= fallbackTransport());\nvar installAbsoluteHttpTransport = (transport) => {\n const installation = { transport };\n runtimeRegistry.installations.push(installation);\n return () => {\n const index = runtimeRegistry.installations.indexOf(installation);\n if (index >= 0)\n runtimeRegistry.installations.splice(index, 1);\n };\n};\n\n// src/client.ts\nvar forbiddenCredentialHeaders = new Set([\n \"authorization\",\n \"cookie\",\n \"proxy-authorization\"\n]);\nvar transportFor = (configured) => configured ?? getAbsoluteHttpTransport();\nvar safeHeaders = (input) => {\n const headers = new Headers(input);\n for (const name of forbiddenCredentialHeaders) {\n if (headers.has(name))\n throw new AbsoluteHttpError(\"origin\", `Absolute HTTP owns the ${name} credential header for trusted transports.`);\n }\n return headers;\n};\nvar requestFor = (target, options, transport) => {\n const source = target instanceof Request ? target : undefined;\n const requestedUrl = source ? source.url : target;\n const url = resolveAbsoluteHttpUrl(requestedUrl, transport.origin);\n const headers = safeHeaders(options?.headers ?? source?.headers);\n return new Request(source ?? url, {\n ...options,\n credentials: transport.runtime === \"web\" ? \"same-origin\" : \"omit\",\n headers,\n redirect: \"error\"\n });\n};\nvar normalizeFetchError = (caught, url) => {\n if (caught instanceof AbsoluteHttpError)\n return caught;\n if (caught instanceof DOMException && (caught.name === \"AbortError\" || caught.name === \"TimeoutError\"))\n return new AbsoluteHttpError(\"aborted\", \"HTTP request was aborted.\", {\n cause: caught,\n url\n });\n return new AbsoluteHttpError(\"network\", \"HTTP request failed.\", {\n cause: caught,\n url\n });\n};\nvar requireOk = (response) => {\n if (!response.ok)\n throw new AbsoluteHttpError(\"http\", `HTTP request failed with status ${response.status}.`, { status: response.status, url: response.url });\n return response;\n};\nvar parseJson = async (response) => {\n const text = await response.text();\n if (text === \"\")\n return;\n try {\n return JSON.parse(text);\n } catch (cause) {\n throw new AbsoluteHttpError(\"response\", \"HTTP response is not valid JSON.\", {\n cause,\n status: response.status,\n url: response.url\n });\n }\n};\nvar jsonOptions = (method, body, options) => {\n const headers = new Headers(options?.headers);\n if (body !== undefined && !headers.has(\"content-type\"))\n headers.set(\"content-type\", \"application/json\");\n let encoded;\n try {\n encoded = body === undefined ? undefined : JSON.stringify(body);\n } catch (cause) {\n throw new AbsoluteHttpError(\"body\", \"HTTP body is not JSON serializable.\", {\n cause\n });\n }\n return encoded === undefined ? { ...options, headers, method } : { ...options, body: encoded, headers, method };\n};\nvar createAbsoluteHttpClient = (options = {}) => {\n const fetchTrusted = async (input, init) => {\n const transport = transportFor(options.transport);\n const request2 = requestFor(input, init, transport);\n try {\n return await transport.fetch(request2);\n } catch (caught) {\n throw normalizeFetchError(caught, request2.url);\n }\n };\n const request = (target, requestOptions) => fetchTrusted(target, requestOptions);\n const json = async (target, requestOptions) => parseJson(requireOk(await request(target, requestOptions)));\n const jsonMethod = (method, target, body, requestOptions) => json(target, jsonOptions(method, body, requestOptions));\n return {\n delete: (target, requestOptions) => {\n const { body, ...optionsWithoutBody } = requestOptions ?? {};\n return jsonMethod(\"DELETE\", target, body, optionsWithoutBody);\n },\n fetch: fetchTrusted,\n get: (target, requestOptions) => json(target, { ...requestOptions, method: \"GET\" }),\n json,\n origin: () => transportFor(options.transport).origin,\n patch: (target, body, requestOptions) => jsonMethod(\"PATCH\", target, body, requestOptions),\n post: (target, body, requestOptions) => jsonMethod(\"POST\", target, body, requestOptions),\n put: (target, body, requestOptions) => jsonMethod(\"PUT\", target, body, requestOptions),\n request,\n text: async (target, requestOptions) => requireOk(await request(target, requestOptions)).text()\n };\n};\nvar http = createAbsoluteHttpClient();\nexport {\n installAbsoluteHttpTransport,\n http,\n createAbsoluteHttpTransport,\n createAbsoluteHttpClient,\n AbsoluteHttpError\n};\n\n//# debugId=EEC17EF6030AA63A64756E2164756E21\n//# sourceMappingURL=index.js.map\n",
|
|
60
63
|
"import {\n\tcreateAbsoluteHttpTransport,\n\tinstallAbsoluteHttpTransport,\n\ttype AbsoluteHttpFetch\n} from '@absolutejs/http';\n\nexport const installAbsoluteMobileShellHttp = (\n\torigin: string,\n\tfetch: AbsoluteHttpFetch = globalThis.fetch\n) =>\n\tinstallAbsoluteHttpTransport(\n\t\tcreateAbsoluteHttpTransport({ fetch, origin, runtime: 'native' })\n\t);\n",
|
|
61
|
-
"const STYLE_ID = 'absolute-mobile-ui-primitives';\nconst NAVIGATION_EVENT = 'absolute:navigation-change';\nconst SHEET_EVENT = 'absolute:sheet-change';\nconst BACK_EVENT = 'absolute:back-request';\nconst ACTIVE_SHEET_SELECTOR = 'dialog[data-absolute-sheet][open]';\nconst TAB_LINK_SELECTOR = '[data-absolute-tab-bar] a[href]';\n\nconst UI_STYLE = `\n[data-absolute-app-shell] {\n\tdisplay: grid;\n\tgrid-template-rows: auto minmax(0, 1fr) auto;\n\tbox-sizing: border-box;\n\tmin-height: var(--absolute-available-height, 100dvh);\n\tpadding-inline: var(--absolute-safe-area-inset-left, 0px) var(--absolute-safe-area-inset-right, 0px);\n}\n[data-absolute-app-header] {\n\tpadding-top: var(--absolute-safe-area-inset-top, 0px);\n}\n[data-absolute-app-main], [data-absolute-navigation-stack] {\n\tmin-width: 0;\n\tmin-height: 0;\n}\n[data-absolute-app-main] {\n\toverflow: auto;\n\toverscroll-behavior-y: contain;\n}\n[data-absolute-navigation-stack] {\n\tview-transition-name: absolute-mobile-stack;\n}\n[data-absolute-tab-bar] {\n\tdisplay: flex;\n\talign-items: stretch;\n\tjustify-content: space-around;\n\tbox-sizing: border-box;\n\tpadding-bottom: var(--absolute-safe-area-inset-bottom, 0px);\n\tbackground: Canvas;\n\tcolor: CanvasText;\n}\n[data-absolute-tab-bar] > a {\n\tdisplay: grid;\n\tflex: 1 1 0;\n\tmin-width: 0;\n\tmin-height: 2.75rem;\n\tplace-items: center;\n\tpadding: 0.375rem 0.5rem;\n\tcolor: inherit;\n\ttext-align: center;\n\ttext-decoration: none;\n\ttouch-action: manipulation;\n}\n[data-absolute-tab-bar] > a[aria-current=\"page\"] {\n\tfont-weight: 700;\n}\ndialog[data-absolute-sheet] {\n\tbox-sizing: border-box;\n\twidth: min(100%, var(--absolute-sheet-max-width, 42rem));\n\tmax-height: min(90dvh, var(--absolute-available-height, 90dvh));\n\tmargin: auto auto 0;\n\tpadding: 1rem max(1rem, var(--absolute-safe-area-inset-right, 0px)) max(1rem, var(--absolute-safe-area-inset-bottom, 0px)) max(1rem, var(--absolute-safe-area-inset-left, 0px));\n\toverflow: auto;\n\tborder: 1px solid color-mix(in srgb, CanvasText 18%, transparent);\n\tborder-radius: 1rem 1rem 0 0;\n\tbackground: Canvas;\n\tcolor: CanvasText;\n\tbox-shadow: 0 -0.5rem 2rem color-mix(in srgb, CanvasText 18%, transparent);\n}\ndialog[data-absolute-sheet]::backdrop {\n\tbackground: color-mix(in srgb, CanvasText 38%, transparent);\n}\n@keyframes absolute-mobile-forward-old { to { opacity: 0; transform: translateX(-12%); } }\n@keyframes absolute-mobile-forward-new { from { opacity: 0; transform: translateX(12%); } }\n@keyframes absolute-mobile-back-old { to { opacity: 0; transform: translateX(12%); } }\n@keyframes absolute-mobile-back-new { from { opacity: 0; transform: translateX(-12%); } }\nhtml[data-absolute-navigation-direction=\"forward\"]::view-transition-old(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-forward-old; }\nhtml[data-absolute-navigation-direction=\"forward\"]::view-transition-new(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-forward-new; }\nhtml[data-absolute-navigation-direction=\"back\"]::view-transition-old(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-back-old; }\nhtml[data-absolute-navigation-direction=\"back\"]::view-transition-new(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-back-new; }\nhtml[data-absolute-reduced-motion=\"reduce\"]::view-transition-old(absolute-mobile-stack),\nhtml[data-absolute-reduced-motion=\"reduce\"]::view-transition-new(absolute-mobile-stack) { animation: none; }\n`;\n\nexport type AbsoluteMobileNavigationDirection = 'back' | 'forward' | 'replace';\n\nexport type AbsoluteMobileNavigationDetail = {\n\tdirection: AbsoluteMobileNavigationDirection;\n\tfrom: string;\n\tto: string;\n};\n\nexport type AbsoluteMobileSheetDetail = {\n\tid: string;\n\topen: boolean;\n};\n\nexport type AbsoluteMobileLinkIntent =\n\t| { kind: 'back' }\n\t| { kind: 'external' }\n\t| { kind: 'navigate'; replace: boolean };\n\ndeclare global {\n\t// Event-map augmentation requires interface merging.\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n\tinterface WindowEventMap {\n\t\t'absolute:back-request': CustomEvent;\n\t\t'absolute:navigation-change': CustomEvent<AbsoluteMobileNavigationDetail>;\n\t\t'absolute:sheet-change': CustomEvent<AbsoluteMobileSheetDetail>;\n\t}\n}\n\nexport type AbsoluteMobileUiPrimitives = {\n\tdispose(): void;\n\tnavigate(detail: AbsoluteMobileNavigationDetail): void;\n\trefreshDocument(path?: string): void;\n\trequestBack(): boolean;\n};\n\nconst currentPath = () =>\n\t`${location.pathname}${location.search}${location.hash}`;\n\nconst ensureStyle = () => {\n\tlet style = document.getElementById(STYLE_ID);\n\tif (!(style instanceof HTMLStyleElement)) {\n\t\tstyle = document.createElement('style');\n\t\tstyle.id = STYLE_ID;\n\t\tstyle.textContent = UI_STYLE;\n\t\tdocument.head.append(style);\n\t}\n};\n\nconst sheetById = (id: string) => {\n\tconst target = document.getElementById(id);\n\n\treturn target instanceof HTMLDialogElement &&\n\t\ttarget.dataset.absoluteSheet !== undefined\n\t\t? target\n\t\t: undefined;\n};\n\nconst dispatchSheet = (sheet: HTMLDialogElement, open: boolean) =>\n\tdispatchEvent(\n\t\tnew CustomEvent<AbsoluteMobileSheetDetail>(SHEET_EVENT, {\n\t\t\tdetail: { id: sheet.id, open }\n\t\t})\n\t);\n\nconst focusSheet = (sheet: HTMLDialogElement) => {\n\tconst target = sheet.querySelector<HTMLElement>(\n\t\t'[autofocus], button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\t);\n\t(target ?? sheet).focus();\n};\n\nconst sheetOpeners = new WeakMap<HTMLDialogElement, HTMLElement>();\n\nexport const closeAbsoluteMobileSheet = (\n\ttarget: HTMLDialogElement | string\n) => {\n\tconst sheet = typeof target === 'string' ? sheetById(target) : target;\n\tif (!sheet || !sheet.open) return false;\n\tif (typeof sheet.close === 'function') sheet.close();\n\telse sheet.removeAttribute('open');\n\tsheet.removeAttribute('aria-modal');\n\tsheetOpeners.get(sheet)?.focus();\n\tsheetOpeners.delete(sheet);\n\tdispatchSheet(sheet, false);\n\n\treturn true;\n};\nexport const openAbsoluteMobileSheet = (\n\ttarget: HTMLDialogElement | string,\n\topener?: HTMLElement\n) => {\n\tconst sheet = typeof target === 'string' ? sheetById(target) : target;\n\tif (!sheet || sheet.dataset.absoluteSheet === undefined) return false;\n\tconst active = document.querySelector<HTMLDialogElement>(\n\t\tACTIVE_SHEET_SELECTOR\n\t);\n\tif (active && active !== sheet) closeAbsoluteMobileSheet(active);\n\tif (opener) sheetOpeners.set(sheet, opener);\n\tif (!sheet.open) {\n\t\tif (typeof sheet.showModal === 'function') sheet.showModal();\n\t\telse sheet.setAttribute('open', '');\n\t}\n\tsheet.setAttribute('aria-modal', 'true');\n\tfocusSheet(sheet);\n\tdispatchSheet(sheet, true);\n\n\treturn true;\n};\nexport const readAbsoluteMobileLinkIntent = (\n\tanchor: HTMLAnchorElement\n): AbsoluteMobileLinkIntent => {\n\tconst mode = anchor.dataset.absoluteLink;\n\tif (mode === 'back') return { kind: 'back' };\n\tif (mode === 'external') return { kind: 'external' };\n\n\treturn { kind: 'navigate', replace: mode === 'replace' };\n};\nexport const requestAbsoluteMobileBack = () => {\n\tconst event = new CustomEvent(BACK_EVENT, { cancelable: true });\n\n\treturn !dispatchEvent(event);\n};\n\nconst normalizePathname = (value: string) => {\n\ttry {\n\t\treturn (\n\t\t\tnew URL(value, location.href).pathname.replace(/\\/$/u, '') || '/'\n\t\t);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst syncTabLinks = (path: string) => {\n\tconst activePath = normalizePathname(path);\n\tif (!activePath) return;\n\tdocument\n\t\t.querySelectorAll<HTMLAnchorElement>(TAB_LINK_SELECTOR)\n\t\t.forEach((anchor) => {\n\t\t\tconst candidate = normalizePathname(anchor.href);\n\t\t\tconst prefix = anchor.dataset.absoluteTabMatch === 'prefix';\n\t\t\tconst active =\n\t\t\t\tcandidate !== undefined &&\n\t\t\t\t(prefix\n\t\t\t\t\t? activePath === candidate ||\n\t\t\t\t\t\t(candidate !== '/' &&\n\t\t\t\t\t\t\tactivePath.startsWith(`${candidate}/`))\n\t\t\t\t\t: activePath === candidate);\n\t\t\tif (active) anchor.setAttribute('aria-current', 'page');\n\t\t\telse anchor.removeAttribute('aria-current');\n\t\t});\n};\n\n/** Installs optional semantic-HTML mobile layout and interaction primitives. */\nexport const installAbsoluteMobileUiPrimitives =\n\t(): AbsoluteMobileUiPrimitives => {\n\t\tlet disposed = false;\n\t\tlet scheduled = false;\n\t\tlet path = currentPath();\n\t\tconst refreshDocument = (nextPath = path) => {\n\t\t\tif (disposed || !document.head || !document.body) return;\n\t\t\tpath = nextPath;\n\t\t\tensureStyle();\n\t\t\tsyncTabLinks(path);\n\t\t};\n\t\tconst scheduleRefresh = () => {\n\t\t\tif (scheduled || disposed) return;\n\t\t\tscheduled = true;\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tscheduled = false;\n\t\t\t\trefreshDocument();\n\t\t\t});\n\t\t};\n\t\tconst handleClick = (event: MouseEvent) => {\n\t\t\tif (!(event.target instanceof Element)) return;\n\t\t\tconst opener = event.target.closest<HTMLElement>(\n\t\t\t\t'[data-absolute-sheet-open]'\n\t\t\t);\n\t\t\tif (opener?.dataset.absoluteSheetOpen) {\n\t\t\t\tif (\n\t\t\t\t\topenAbsoluteMobileSheet(\n\t\t\t\t\t\topener.dataset.absoluteSheetOpen,\n\t\t\t\t\t\topener\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst closer = event.target.closest<HTMLElement>(\n\t\t\t\t'[data-absolute-sheet-close]'\n\t\t\t);\n\t\t\tconst sheet = closer?.closest<HTMLDialogElement>(\n\t\t\t\t'dialog[data-absolute-sheet]'\n\t\t\t);\n\t\t\tif (sheet && closeAbsoluteMobileSheet(sheet)) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tevent.target instanceof HTMLDialogElement &&\n\t\t\t\tevent.target.dataset.absoluteSheet !== undefined\n\t\t\t) {\n\t\t\t\tconst rect = event.target.getBoundingClientRect();\n\t\t\t\tconst outside =\n\t\t\t\t\tevent.clientX < rect.left ||\n\t\t\t\t\tevent.clientX > rect.right ||\n\t\t\t\t\tevent.clientY < rect.top ||\n\t\t\t\t\tevent.clientY > rect.bottom;\n\t\t\t\tif (outside && closeAbsoluteMobileSheet(event.target))\n\t\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tconst handleCancel = (event: Event) => {\n\t\t\tif (!(event.target instanceof HTMLDialogElement)) return;\n\t\t\tif (event.target.dataset.absoluteSheet === undefined) return;\n\t\t\tevent.preventDefault();\n\t\t\tcloseAbsoluteMobileSheet(event.target);\n\t\t};\n\t\tconst handleBack = (event: Event) => {\n\t\t\tconst active = document.querySelector<HTMLDialogElement>(\n\t\t\t\tACTIVE_SHEET_SELECTOR\n\t\t\t);\n\t\t\tif (!active) return;\n\t\t\tevent.preventDefault();\n\t\t\tcloseAbsoluteMobileSheet(active);\n\t\t};\n\t\tconst observer = new MutationObserver(scheduleRefresh);\n\t\tobserver.observe(document.documentElement, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true\n\t\t});\n\t\taddEventListener('click', handleClick);\n\t\taddEventListener('cancel', handleCancel, true);\n\t\taddEventListener(BACK_EVENT, handleBack);\n\t\trefreshDocument();\n\n\t\treturn {\n\t\t\trefreshDocument,\n\t\t\trequestBack: requestAbsoluteMobileBack,\n\t\t\tdispose: () => {\n\t\t\t\tif (disposed) return;\n\t\t\t\tdisposed = true;\n\t\t\t\tobserver.disconnect();\n\t\t\t\tremoveEventListener('click', handleClick);\n\t\t\t\tremoveEventListener('cancel', handleCancel, true);\n\t\t\t\tremoveEventListener(BACK_EVENT, handleBack);\n\t\t\t},\n\t\t\tnavigate: (detail) => {\n\t\t\t\tpath = detail.to;\n\t\t\t\tdocument.documentElement.dataset.absoluteNavigationDirection =\n\t\t\t\t\tdetail.direction;\n\t\t\t\trefreshDocument(path);\n\t\t\t\tdispatchEvent(\n\t\t\t\t\tnew CustomEvent<AbsoluteMobileNavigationDetail>(\n\t\t\t\t\t\tNAVIGATION_EVENT,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdetail\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t};\n"
|
|
64
|
+
"const STYLE_ID = 'absolute-mobile-ui-primitives';\nconst NAVIGATION_EVENT = 'absolute:navigation-change';\nconst SHEET_EVENT = 'absolute:sheet-change';\nconst BACK_EVENT = 'absolute:back-request';\nconst ACTIVE_SHEET_SELECTOR = 'dialog[data-absolute-sheet][open]';\nconst TAB_LINK_SELECTOR = '[data-absolute-tab-bar] a[href]';\n\nconst UI_STYLE = `\n[data-absolute-app-shell] {\n\tdisplay: grid;\n\tgrid-template-rows: auto minmax(0, 1fr) auto;\n\tbox-sizing: border-box;\n\tmin-height: var(--absolute-available-height, 100dvh);\n\tpadding-inline: var(--absolute-safe-area-inset-left, 0px) var(--absolute-safe-area-inset-right, 0px);\n}\n[data-absolute-app-header] {\n\tpadding-top: var(--absolute-safe-area-inset-top, 0px);\n}\n[data-absolute-app-main], [data-absolute-navigation-stack] {\n\tmin-width: 0;\n\tmin-height: 0;\n}\n[data-absolute-app-main] {\n\toverflow: auto;\n\toverscroll-behavior-y: contain;\n}\n[data-absolute-navigation-stack] {\n\tview-transition-name: absolute-mobile-stack;\n}\n[data-absolute-tab-bar] {\n\tdisplay: flex;\n\talign-items: stretch;\n\tjustify-content: space-around;\n\tbox-sizing: border-box;\n\tpadding-bottom: var(--absolute-safe-area-inset-bottom, 0px);\n\tbackground: Canvas;\n\tcolor: CanvasText;\n}\n[data-absolute-tab-bar] > a {\n\tdisplay: grid;\n\tflex: 1 1 0;\n\tmin-width: 0;\n\tmin-height: 2.75rem;\n\tplace-items: center;\n\tpadding: 0.375rem 0.5rem;\n\tcolor: inherit;\n\ttext-align: center;\n\ttext-decoration: none;\n\ttouch-action: manipulation;\n}\n[data-absolute-tab-bar] > a[aria-current=\"page\"] {\n\tfont-weight: 700;\n}\ndialog[data-absolute-sheet] {\n\tbox-sizing: border-box;\n\twidth: min(100%, var(--absolute-sheet-max-width, 42rem));\n\tmax-height: min(90dvh, var(--absolute-available-height, 90dvh));\n\tmargin: auto auto 0;\n\tpadding: 1rem max(1rem, var(--absolute-safe-area-inset-right, 0px)) max(1rem, var(--absolute-safe-area-inset-bottom, 0px)) max(1rem, var(--absolute-safe-area-inset-left, 0px));\n\toverflow: auto;\n\tborder: 1px solid color-mix(in srgb, CanvasText 18%, transparent);\n\tborder-radius: 1rem 1rem 0 0;\n\tbackground: Canvas;\n\tcolor: CanvasText;\n\tbox-shadow: 0 -0.5rem 2rem color-mix(in srgb, CanvasText 18%, transparent);\n}\ndialog[data-absolute-sheet]::backdrop {\n\tbackground: color-mix(in srgb, CanvasText 38%, transparent);\n}\n@keyframes absolute-mobile-forward-old { to { opacity: 0; transform: translateX(-12%); } }\n@keyframes absolute-mobile-forward-new { from { opacity: 0; transform: translateX(12%); } }\n@keyframes absolute-mobile-back-old { to { opacity: 0; transform: translateX(12%); } }\n@keyframes absolute-mobile-back-new { from { opacity: 0; transform: translateX(-12%); } }\nhtml[data-absolute-navigation-direction=\"forward\"]::view-transition-old(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-forward-old; }\nhtml[data-absolute-navigation-direction=\"forward\"]::view-transition-new(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-forward-new; }\nhtml[data-absolute-navigation-direction=\"back\"]::view-transition-old(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-back-old; }\nhtml[data-absolute-navigation-direction=\"back\"]::view-transition-new(absolute-mobile-stack) { animation: 180ms ease both absolute-mobile-back-new; }\nhtml[data-absolute-reduced-motion=\"reduce\"]::view-transition-old(absolute-mobile-stack),\nhtml[data-absolute-reduced-motion=\"reduce\"]::view-transition-new(absolute-mobile-stack) { animation: none; }\n`;\n\nexport type AbsoluteMobileNavigationDirection = 'back' | 'forward' | 'replace';\n\nexport type AbsoluteMobileNavigationDetail = {\n\tdirection: AbsoluteMobileNavigationDirection;\n\tfrom: string;\n\tto: string;\n};\n\nexport type AbsoluteMobileSheetDetail = {\n\tid: string;\n\topen: boolean;\n};\n\nexport type AbsoluteMobileLinkIntent =\n\t| { kind: 'back' }\n\t| { kind: 'external' }\n\t| { kind: 'navigate'; replace: boolean };\n\ndeclare global {\n\t// Event-map augmentation requires interface merging.\n\t// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\n\tinterface WindowEventMap {\n\t\t'absolute:back-request': CustomEvent;\n\t\t'absolute:navigation-change': CustomEvent<AbsoluteMobileNavigationDetail>;\n\t\t'absolute:sheet-change': CustomEvent<AbsoluteMobileSheetDetail>;\n\t}\n}\n\nexport type AbsoluteMobileUiPrimitives = {\n\tdispose(): void;\n\tnavigate(detail: AbsoluteMobileNavigationDetail): void;\n\trefreshDocument(path?: string): void;\n\trequestBack(): boolean;\n};\n\nconst currentPath = () =>\n\t`${location.pathname}${location.search}${location.hash}`;\n\nconst ensureStyle = () => {\n\tlet style = document.getElementById(STYLE_ID);\n\tif (!(style instanceof HTMLStyleElement)) {\n\t\tstyle = document.createElement('style');\n\t\tstyle.id = STYLE_ID;\n\t\tstyle.textContent = UI_STYLE;\n\t\tdocument.head.append(style);\n\t}\n};\n\nconst sheetById = (id: string) => {\n\tconst target = document.getElementById(id);\n\n\treturn target instanceof HTMLDialogElement &&\n\t\ttarget.dataset.absoluteSheet !== undefined\n\t\t? target\n\t\t: undefined;\n};\n\nconst dispatchSheet = (sheet: HTMLDialogElement, open: boolean) =>\n\tdispatchEvent(\n\t\tnew CustomEvent<AbsoluteMobileSheetDetail>(SHEET_EVENT, {\n\t\t\tdetail: { id: sheet.id, open }\n\t\t})\n\t);\n\nconst focusSheet = (sheet: HTMLDialogElement) => {\n\tconst target = sheet.querySelector<HTMLElement>(\n\t\t'[autofocus], button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n\t);\n\t(target ?? sheet).focus();\n};\n\nconst sheetOpeners = new WeakMap<HTMLDialogElement, HTMLElement>();\n\nexport const closeAbsoluteMobileSheet = (\n\ttarget: HTMLDialogElement | string\n) => {\n\tconst sheet = typeof target === 'string' ? sheetById(target) : target;\n\tif (!sheet || !sheet.open) return false;\n\tif (typeof sheet.close === 'function') sheet.close();\n\telse sheet.removeAttribute('open');\n\tsheet.removeAttribute('aria-modal');\n\tsheetOpeners.get(sheet)?.focus();\n\tsheetOpeners.delete(sheet);\n\tdispatchSheet(sheet, false);\n\n\treturn true;\n};\nexport const openAbsoluteMobileSheet = (\n\ttarget: HTMLDialogElement | string,\n\topener?: HTMLElement\n) => {\n\tconst sheet = typeof target === 'string' ? sheetById(target) : target;\n\tif (!sheet || sheet.dataset.absoluteSheet === undefined) return false;\n\tconst active = document.querySelector<HTMLDialogElement>(\n\t\tACTIVE_SHEET_SELECTOR\n\t);\n\tif (active && active !== sheet) closeAbsoluteMobileSheet(active);\n\tif (opener) sheetOpeners.set(sheet, opener);\n\tif (!sheet.open) {\n\t\tif (typeof sheet.showModal === 'function') sheet.showModal();\n\t\telse sheet.setAttribute('open', '');\n\t}\n\tsheet.setAttribute('aria-modal', 'true');\n\tfocusSheet(sheet);\n\tdispatchSheet(sheet, true);\n\n\treturn true;\n};\nexport const readAbsoluteMobileLinkIntent = (\n\tanchor: HTMLAnchorElement\n): AbsoluteMobileLinkIntent => {\n\tconst mode = anchor.dataset.absoluteLink;\n\tif (mode === 'back') return { kind: 'back' };\n\tif (mode === 'external') return { kind: 'external' };\n\n\treturn { kind: 'navigate', replace: mode === 'replace' };\n};\nexport const requestAbsoluteMobileBack = () => {\n\tconst event = new CustomEvent(BACK_EVENT, { cancelable: true });\n\n\treturn !dispatchEvent(event);\n};\n\nconst normalizePathname = (value: string) => {\n\ttry {\n\t\treturn (\n\t\t\tnew URL(value, location.href).pathname.replace(/\\/$/u, '') || '/'\n\t\t);\n\t} catch {\n\t\treturn undefined;\n\t}\n};\n\nconst syncTabLinks = (path: string) => {\n\tconst activePath = normalizePathname(path);\n\tif (!activePath) return;\n\tdocument\n\t\t.querySelectorAll<HTMLAnchorElement>(TAB_LINK_SELECTOR)\n\t\t.forEach((anchor) => {\n\t\t\tconst candidate = normalizePathname(anchor.href);\n\t\t\tconst prefix = anchor.dataset.absoluteTabMatch === 'prefix';\n\t\t\tconst active =\n\t\t\t\tcandidate !== undefined &&\n\t\t\t\t(prefix\n\t\t\t\t\t? activePath === candidate ||\n\t\t\t\t\t\t(candidate !== '/' &&\n\t\t\t\t\t\t\tactivePath.startsWith(`${candidate}/`))\n\t\t\t\t\t: activePath === candidate);\n\t\t\tif (active) anchor.setAttribute('aria-current', 'page');\n\t\t\telse anchor.removeAttribute('aria-current');\n\t\t});\n};\n\n/** Installs optional semantic-HTML mobile layout and interaction primitives. */\nexport const installAbsoluteMobileUiPrimitives =\n\t(): AbsoluteMobileUiPrimitives => {\n\t\tlet disposed = false;\n\t\tlet scheduled = false;\n\t\tlet path = currentPath();\n\t\tconst refreshDocument = (nextPath = path) => {\n\t\t\tif (disposed || !document.head || !document.body) return;\n\t\t\tpath = nextPath;\n\t\t\tensureStyle();\n\t\t\tsyncTabLinks(path);\n\t\t};\n\t\tconst scheduleRefresh = () => {\n\t\t\tif (scheduled || disposed) return;\n\t\t\tscheduled = true;\n\t\t\tqueueMicrotask(() => {\n\t\t\t\tscheduled = false;\n\t\t\t\trefreshDocument();\n\t\t\t});\n\t\t};\n\t\tconst handleClick = (event: MouseEvent) => {\n\t\t\tif (!(event.target instanceof Element)) return;\n\t\t\tconst opener = event.target.closest<HTMLElement>(\n\t\t\t\t'[data-absolute-sheet-open]'\n\t\t\t);\n\t\t\tif (opener?.dataset.absoluteSheetOpen) {\n\t\t\t\tif (\n\t\t\t\t\topenAbsoluteMobileSheet(\n\t\t\t\t\t\topener.dataset.absoluteSheetOpen,\n\t\t\t\t\t\topener\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst closer = event.target.closest<HTMLElement>(\n\t\t\t\t'[data-absolute-sheet-close]'\n\t\t\t);\n\t\t\tconst sheet = closer?.closest<HTMLDialogElement>(\n\t\t\t\t'dialog[data-absolute-sheet]'\n\t\t\t);\n\t\t\tif (sheet && closeAbsoluteMobileSheet(sheet)) {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tevent.target instanceof HTMLDialogElement &&\n\t\t\t\tevent.target.dataset.absoluteSheet !== undefined\n\t\t\t) {\n\t\t\t\tconst rect = event.target.getBoundingClientRect();\n\t\t\t\tconst outside =\n\t\t\t\t\tevent.clientX < rect.left ||\n\t\t\t\t\tevent.clientX > rect.right ||\n\t\t\t\t\tevent.clientY < rect.top ||\n\t\t\t\t\tevent.clientY > rect.bottom;\n\t\t\t\tif (outside && closeAbsoluteMobileSheet(event.target))\n\t\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\t\tconst handleCancel = (event: Event) => {\n\t\t\tif (!(event.target instanceof HTMLDialogElement)) return;\n\t\t\tif (event.target.dataset.absoluteSheet === undefined) return;\n\t\t\tevent.preventDefault();\n\t\t\tcloseAbsoluteMobileSheet(event.target);\n\t\t};\n\t\tconst handleBack = (event: Event) => {\n\t\t\tconst active = document.querySelector<HTMLDialogElement>(\n\t\t\t\tACTIVE_SHEET_SELECTOR\n\t\t\t);\n\t\t\tif (!active) return;\n\t\t\tevent.preventDefault();\n\t\t\tcloseAbsoluteMobileSheet(active);\n\t\t};\n\t\tconst observer = new MutationObserver(scheduleRefresh);\n\t\tobserver.observe(document.documentElement, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true\n\t\t});\n\t\taddEventListener('click', handleClick);\n\t\taddEventListener('cancel', handleCancel, true);\n\t\taddEventListener(BACK_EVENT, handleBack);\n\t\trefreshDocument();\n\n\t\treturn {\n\t\t\trefreshDocument,\n\t\t\trequestBack: requestAbsoluteMobileBack,\n\t\t\tdispose: () => {\n\t\t\t\tif (disposed) return;\n\t\t\t\tdisposed = true;\n\t\t\t\tobserver.disconnect();\n\t\t\t\tremoveEventListener('click', handleClick);\n\t\t\t\tremoveEventListener('cancel', handleCancel, true);\n\t\t\t\tremoveEventListener(BACK_EVENT, handleBack);\n\t\t\t},\n\t\t\tnavigate: (detail) => {\n\t\t\t\tpath = detail.to;\n\t\t\t\tdocument.documentElement.dataset.absoluteNavigationDirection =\n\t\t\t\t\tdetail.direction;\n\t\t\t\trefreshDocument(path);\n\t\t\t\tdispatchEvent(\n\t\t\t\t\tnew CustomEvent<AbsoluteMobileNavigationDetail>(\n\t\t\t\t\t\tNAVIGATION_EVENT,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tdetail\n\t\t\t\t\t\t}\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t};\n",
|
|
65
|
+
"import {\n\tABSOLUTE_MOBILE_UPDATE_MAX_TOTAL_BYTES,\n\tparseAbsoluteMobileUpdateManifest,\n\ttype AbsoluteMobileUpdateFile,\n\ttype AbsoluteMobileUpdateManifest\n} from './updateProtocol';\n\nexport type AbsoluteMobileUpdateClientConfig = {\n\tappId: string;\n\tchannel: string;\n\tcurrentReleaseId: string;\n\tinstallationId: string;\n\tmanifestUrl: string;\n\truntimeFingerprint: string;\n};\n\nexport type AbsoluteMobileUpdateStore = {\n\tabort(releaseId: string): Promise<void>;\n\tactivate(releaseId: string): Promise<void>;\n\tbegin(manifest: AbsoluteMobileUpdateManifest): Promise<void>;\n\tcommit(manifest: AbsoluteMobileUpdateManifest): Promise<void>;\n\twrite(file: AbsoluteMobileUpdateFile, contents: Uint8Array): Promise<void>;\n};\n\nexport type AbsoluteMobileUpdateVerifier = {\n\tdigest(contents: Uint8Array): Promise<string>;\n\tverify(manifest: AbsoluteMobileUpdateManifest): Promise<boolean>;\n};\n\nexport type AbsoluteMobileUpdateClientOptions = {\n\tconfig: AbsoluteMobileUpdateClientConfig;\n\tfetch?: typeof globalThis.fetch;\n\tstore: AbsoluteMobileUpdateStore;\n\tverifier: AbsoluteMobileUpdateVerifier;\n};\n\nexport type AbsoluteMobileUpdateCheckResult =\n\t| { kind: 'current' }\n\t| { kind: 'downloaded'; manifest: AbsoluteMobileUpdateManifest }\n\t| { kind: 'update-available'; manifest: AbsoluteMobileUpdateManifest };\n\nconst exactManifestUrl = (value: string) => {\n\tconst url = new URL(value);\n\tif (\n\t\turl.protocol !== 'https:' &&\n\t\turl.hostname !== 'localhost' &&\n\t\turl.hostname !== '127.0.0.1'\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update manifests require HTTPS outside loopback development.'\n\t\t);\n\tif (url.username || url.password || url.hash)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update manifest URLs cannot contain credentials or fragments.'\n\t\t);\n\n\treturn url;\n};\n\nconst fileUrl = (manifestUrl: URL, releaseId: string, path: string) => {\n\tconst encodedPath = path.split('/').map(encodeURIComponent).join('/');\n\tconst base = new URL(\n\t\t`./${encodeURIComponent(releaseId)}/files/`,\n\t\tmanifestUrl\n\t);\n\tconst result = new URL(encodedPath, base);\n\tif (\n\t\tresult.origin !== manifestUrl.origin ||\n\t\t!result.pathname.startsWith(base.pathname)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update asset escaped its signed release origin.'\n\t\t);\n\n\treturn result;\n};\n\ntype ReadChunksResult = { chunks: Uint8Array[]; received: number };\ntype ReadChunks = (\n\treader: ReadableStreamDefaultReader<Uint8Array>,\n\tmaximum: number,\n\tchunks?: Uint8Array[],\n\treceived?: number\n) => Promise<ReadChunksResult>;\n\nconst readChunks: ReadChunks = async (\n\treader,\n\tmaximum,\n\tchunks = [],\n\treceived = 0\n) => {\n\tconst result = await reader.read();\n\tif (result.done) return { chunks, received };\n\tconst total = received + result.value.byteLength;\n\tif (total > maximum)\n\t\tthrow new TypeError('Mobile update response exceeds its signed size.');\n\tchunks.push(result.value);\n\n\treturn readChunks(reader, maximum, chunks, total);\n};\n\nconst readBounded = async (response: Response, maximum: number) => {\n\tconst declared = Number(response.headers.get('content-length'));\n\tif (Number.isFinite(declared) && declared > maximum)\n\t\tthrow new TypeError('Mobile update response exceeds its signed size.');\n\tif (!response.body) return new Uint8Array();\n\tconst reader = response.body.getReader();\n\tlet result: ReadChunksResult;\n\ttry {\n\t\tresult = await readChunks(reader, maximum);\n\t} catch (error) {\n\t\tawait reader.cancel().catch(() => undefined);\n\t\tthrow error;\n\t}\n\tconst contents = new Uint8Array(result.received);\n\tlet offset = 0;\n\tfor (const chunk of result.chunks) {\n\t\tcontents.set(chunk, offset);\n\t\toffset += chunk.byteLength;\n\t}\n\n\treturn contents;\n};\n\nconst requestHeaders = (config: AbsoluteMobileUpdateClientConfig) => ({\n\t'x-absolute-mobile-app': config.appId,\n\t'x-absolute-mobile-channel': config.channel,\n\t'x-absolute-mobile-installation': config.installationId,\n\t'x-absolute-mobile-release': config.currentReleaseId,\n\t'x-absolute-mobile-runtime': config.runtimeFingerprint\n});\n\nconst requireCompatible = (\n\tmanifest: AbsoluteMobileUpdateManifest,\n\tconfig: AbsoluteMobileUpdateClientConfig\n) => {\n\tif (manifest.appId !== config.appId)\n\t\tthrow new TypeError('Mobile update belongs to another app.');\n\tif (manifest.channel !== config.channel)\n\t\tthrow new TypeError('Mobile update belongs to another channel.');\n\tif (manifest.runtimeFingerprint !== config.runtimeFingerprint)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update requires a different native runtime.'\n\t\t);\n};\n\nexport const createAbsoluteMobileUpdateClient = (\n\toptions: AbsoluteMobileUpdateClientOptions\n) => {\n\tconst manifestUrl = exactManifestUrl(options.config.manifestUrl);\n\tconst request = options.fetch ?? globalThis.fetch;\n\ttype DownloadFiles = (\n\t\tmanifest: AbsoluteMobileUpdateManifest,\n\t\tindex?: number,\n\t\treceived?: number\n\t) => Promise<number>;\n\tconst downloadFiles: DownloadFiles = async (\n\t\tmanifest,\n\t\tindex = 0,\n\t\treceived = 0\n\t) => {\n\t\tconst file = manifest.files[index];\n\t\tif (!file) return received;\n\t\tconst asset = await request(\n\t\t\tfileUrl(manifestUrl, manifest.releaseId, file.path),\n\t\t\t{\n\t\t\t\tcache: 'no-store',\n\t\t\t\tcredentials: 'omit',\n\t\t\t\tredirect: 'error',\n\t\t\t\tsignal: AbortSignal.timeout(30_000)\n\t\t\t}\n\t\t);\n\t\tif (!asset.ok)\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile update asset ${file.path} failed with HTTP ${asset.status}.`\n\t\t\t);\n\t\tconst contents = await readBounded(asset, file.bytes);\n\t\tconst total = received + contents.byteLength;\n\t\tif (\n\t\t\tcontents.byteLength !== file.bytes ||\n\t\t\ttotal > ABSOLUTE_MOBILE_UPDATE_MAX_TOTAL_BYTES\n\t\t)\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile update asset ${file.path} has an invalid size.`\n\t\t\t);\n\t\tif ((await options.verifier.digest(contents)) !== file.sha256)\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile update asset ${file.path} failed integrity verification.`\n\t\t\t);\n\t\tawait options.store.write(file, contents);\n\n\t\treturn downloadFiles(manifest, index + 1, total);\n\t};\n\n\tconst check = async (\n\t\tdownload = false\n\t): Promise<AbsoluteMobileUpdateCheckResult> => {\n\t\tconst response = await request(manifestUrl, {\n\t\t\tcache: 'no-store',\n\t\t\tcredentials: 'omit',\n\t\t\theaders: requestHeaders(options.config),\n\t\t\tredirect: 'error',\n\t\t\tsignal: AbortSignal.timeout(15_000)\n\t\t});\n\t\tif (response.status === 204 || response.status === 304)\n\t\t\treturn { kind: 'current' };\n\t\tif (!response.ok)\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile update check failed with HTTP ${response.status}.`\n\t\t\t);\n\t\tconst manifestBytes = await readBounded(response, 1024 * 1024);\n\t\tlet manifestValue: unknown;\n\t\ttry {\n\t\t\tmanifestValue = JSON.parse(new TextDecoder().decode(manifestBytes));\n\t\t} catch {\n\t\t\tthrow new TypeError('Mobile update manifest is not valid JSON.');\n\t\t}\n\t\tconst manifest = parseAbsoluteMobileUpdateManifest(manifestValue);\n\t\trequireCompatible(manifest, options.config);\n\t\tif (!(await options.verifier.verify(manifest)))\n\t\t\tthrow new TypeError('Mobile update signature verification failed.');\n\t\tif (manifest.releaseId === options.config.currentReleaseId)\n\t\t\treturn { kind: 'current' };\n\t\tif (!download) return { kind: 'update-available', manifest };\n\n\t\tawait options.store.begin(manifest);\n\t\ttry {\n\t\t\tawait downloadFiles(manifest);\n\t\t\tawait options.store.commit(manifest);\n\t\t} catch (error) {\n\t\t\tawait options.store.abort(manifest.releaseId);\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn { kind: 'downloaded', manifest };\n\t};\n\n\treturn {\n\t\tcheck,\n\t\tactivate: (releaseId: string) => options.store.activate(releaseId),\n\t\tdownload: () => check(true)\n\t};\n};\n",
|
|
66
|
+
"import { access } from 'node:fs/promises';\nimport { isAbsolute, relative, resolve, sep } from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { readAbsoluteMobileUpdate } from './updateSigning';\n\nexport type AbsoluteMobileUpdatePublication = {\n\tappId: string;\n\tchannel: string;\n\treleaseId: string;\n\treused: boolean;\n\trollout: number;\n\tstage: 'published';\n};\n\nexport type AbsoluteMobileUpdatePromotion = {\n\tappId: string;\n\tchannel: string;\n\treleaseId: string;\n\trollout: number;\n\tstage: 'promoted';\n};\n\nexport type AbsoluteMobileUpdateRollback = {\n\tappId: string;\n\tchannel: string;\n\treleaseId?: string;\n\tstage: 'rolled-back';\n};\n\nexport type AbsoluteMobileUpdatePublisher = {\n\tpublishUpdate(options: {\n\t\tmanifest: Awaited<ReturnType<typeof readAbsoluteMobileUpdate>>;\n\t\treleaseDirectory: string;\n\t\trollout: number;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AbsoluteMobileUpdatePublication>;\n\tpromoteUpdate(options: {\n\t\tappId: string;\n\t\tchannel: string;\n\t\treleaseId: string;\n\t\trollout: number;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AbsoluteMobileUpdatePromotion>;\n\trollbackUpdate(options: {\n\t\tappId: string;\n\t\tchannel: string;\n\t\treleaseId?: string;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AbsoluteMobileUpdateRollback>;\n};\n\nconst object = (value: unknown): value is Record<string, unknown> =>\n\ttypeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst isPublisher = (value: unknown): value is AbsoluteMobileUpdatePublisher =>\n\tobject(value) &&\n\ttypeof value.publishUpdate === 'function' &&\n\ttypeof value.promoteUpdate === 'function' &&\n\ttypeof value.rollbackUpdate === 'function';\n\nconst projectPath = (projectRoot: string, requested: string, label: string) => {\n\tconst root = resolve(projectRoot);\n\tconst path = resolve(root, requested);\n\tconst projectRelative = relative(root, path);\n\tif (\n\t\tprojectRelative === '..' ||\n\t\tprojectRelative.startsWith(`..${sep}`) ||\n\t\tisAbsolute(projectRelative)\n\t)\n\t\tthrow new TypeError(`${label} must remain inside the project.`);\n\n\treturn path;\n};\n\nexport const loadAbsoluteMobileUpdatePublisher = async (\n\tprojectRoot: string,\n\trequestedModulePath: string\n) => {\n\tconst modulePath = projectPath(\n\t\tprojectRoot,\n\t\trequestedModulePath,\n\t\t'mobile update registry'\n\t);\n\tawait access(modulePath).catch(() => {\n\t\tthrow new TypeError(\n\t\t\t`Mobile update registry does not exist: ${modulePath}`\n\t\t);\n\t});\n\tconst loaded: unknown = await import(pathToFileURL(modulePath).href);\n\tconst publisher = object(loaded)\n\t\t? (loaded.default ?? loaded.registry)\n\t\t: undefined;\n\tif (!isPublisher(publisher))\n\t\tthrow new TypeError(\n\t\t\t'Mobile update registry must implement publishUpdate, promoteUpdate, and rollbackUpdate.'\n\t\t);\n\n\treturn publisher;\n};\nexport const promoteAbsoluteMobileUpdate = async (options: {\n\tappId: string;\n\tchannel: string;\n\tpublisher: AbsoluteMobileUpdatePublisher;\n\treleaseId: string;\n\trollout: number;\n\tsignal?: AbortSignal;\n}) => {\n\tconst result = await options.publisher.promoteUpdate({\n\t\tappId: options.appId,\n\t\tchannel: options.channel,\n\t\treleaseId: options.releaseId,\n\t\trollout: options.rollout,\n\t\tsignal: options.signal\n\t});\n\tif (\n\t\tresult.appId !== options.appId ||\n\t\tresult.channel !== options.channel ||\n\t\tresult.releaseId !== options.releaseId ||\n\t\tresult.rollout !== options.rollout ||\n\t\tresult.stage !== 'promoted'\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update registry returned a different promotion identity.'\n\t\t);\n\n\treturn result;\n};\nexport const publishAbsoluteMobileUpdate = async (options: {\n\tprojectRoot: string;\n\tpublisher: AbsoluteMobileUpdatePublisher;\n\treleaseDirectory: string;\n\trollout: number;\n\tsignal?: AbortSignal;\n}) => {\n\tconst releaseDirectory = projectPath(\n\t\toptions.projectRoot,\n\t\toptions.releaseDirectory,\n\t\t'mobile update release directory'\n\t);\n\tconst manifest = await readAbsoluteMobileUpdate(releaseDirectory);\n\tconst result = await options.publisher.publishUpdate({\n\t\tmanifest,\n\t\treleaseDirectory,\n\t\trollout: options.rollout,\n\t\tsignal: options.signal\n\t});\n\tif (\n\t\tresult.appId !== manifest.appId ||\n\t\tresult.channel !== manifest.channel ||\n\t\tresult.releaseId !== manifest.releaseId ||\n\t\tresult.rollout !== options.rollout ||\n\t\tresult.stage !== 'published' ||\n\t\ttypeof result.reused !== 'boolean'\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update registry returned a different publication identity.'\n\t\t);\n\n\treturn result;\n};\nexport const rollbackAbsoluteMobileUpdate = async (options: {\n\tappId: string;\n\tchannel: string;\n\tpublisher: AbsoluteMobileUpdatePublisher;\n\treleaseId?: string;\n\tsignal?: AbortSignal;\n}) => {\n\tconst result = await options.publisher.rollbackUpdate({\n\t\tappId: options.appId,\n\t\tchannel: options.channel,\n\t\t...(options.releaseId ? { releaseId: options.releaseId } : {}),\n\t\tsignal: options.signal\n\t});\n\tif (\n\t\tresult.appId !== options.appId ||\n\t\tresult.channel !== options.channel ||\n\t\tresult.releaseId !== options.releaseId ||\n\t\tresult.stage !== 'rolled-back'\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update registry returned a different rollback identity.'\n\t\t);\n\n\treturn result;\n};\n",
|
|
67
|
+
"import { createHash, sign, verify } from 'node:crypto';\nimport {\n\tcp,\n\tmkdir,\n\tmkdtemp,\n\treaddir,\n\treadFile,\n\trename,\n\trm,\n\tstat,\n\twriteFile\n} from 'node:fs/promises';\nimport { dirname, join, relative, resolve } from 'node:path';\nimport {\n\tABSOLUTE_MOBILE_UPDATE_FORMAT,\n\tabsoluteMobileUpdateSigningPayload,\n\tcanonicalizeAbsoluteMobileUpdate,\n\tparseAbsoluteMobileUpdateManifest,\n\ttype AbsoluteMobileUpdateClassification,\n\ttype AbsoluteMobileUpdateFile,\n\ttype AbsoluteMobileUnsignedUpdateManifest,\n\tunsignedAbsoluteMobileUpdate\n} from './updateProtocol';\n\nexport type BuildAbsoluteMobileUpdateOptions = {\n\tappId: string;\n\tbundleDirectory: string;\n\tchannel: string;\n\tclassification: AbsoluteMobileUpdateClassification;\n\tcreatedAt?: Date;\n\tkeyId: string;\n\toutputDirectory: string;\n\tprivateKey: string | Buffer;\n\truntimeFingerprint: string;\n};\n\nconst UPDATE_MANIFEST_FILE = 'update.json';\nconst UPDATE_FILES_DIRECTORY = 'files';\n\nconst sha256 = (value: Uint8Array | string) =>\n\tcreateHash('sha256').update(value).digest('hex');\n\nconst listFiles = async (root: string, directory = root): Promise<string[]> => {\n\tconst entries = await readdir(directory, { withFileTypes: true });\n\tconst paths = await Promise.all(\n\t\tentries.map(async (entry) => {\n\t\t\tconst path = join(directory, entry.name);\n\t\t\tif (entry.isDirectory()) return listFiles(root, path);\n\t\t\tif (!entry.isFile())\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t'Mobile updates cannot contain links or special files.'\n\t\t\t\t);\n\n\t\t\treturn [relative(root, path).replaceAll('\\\\', '/')];\n\t\t})\n\t);\n\n\treturn paths.flat().sort();\n};\n\nconst inspectFiles = async (root: string, paths: readonly string[]) =>\n\tPromise.all(\n\t\tpaths.map(async (path): Promise<AbsoluteMobileUpdateFile> => {\n\t\t\tconst source = join(root, path);\n\t\t\tconst [metadata, contents] = await Promise.all([\n\t\t\t\tstat(source),\n\t\t\t\treadFile(source)\n\t\t\t]);\n\n\t\t\treturn { bytes: metadata.size, path, sha256: sha256(contents) };\n\t\t})\n\t);\n\nconst releaseIdFor = (\n\tvalue: Omit<AbsoluteMobileUnsignedUpdateManifest, 'releaseId'>\n) => `amu_${sha256(canonicalizeAbsoluteMobileUpdate(value))}`;\n\nexport const buildAbsoluteMobileUpdate = async (\n\toptions: BuildAbsoluteMobileUpdateOptions\n) => {\n\tconst bundleDirectory = resolve(options.bundleDirectory);\n\tconst outputRoot = resolve(options.outputDirectory);\n\tif (\n\t\toutputRoot === bundleDirectory ||\n\t\toutputRoot.startsWith(`${bundleDirectory}/`)\n\t)\n\t\tthrow new TypeError(\n\t\t\t'Mobile update output must be outside the embedded bundle.'\n\t\t);\n\tconst paths = await listFiles(bundleDirectory);\n\tconst files = await inspectFiles(bundleDirectory, paths);\n\tconst withoutId: Omit<AbsoluteMobileUnsignedUpdateManifest, 'releaseId'> = {\n\t\tappId: options.appId,\n\t\tchannel: options.channel,\n\t\tclassification: options.classification,\n\t\tcreatedAt: (options.createdAt ?? new Date()).toISOString(),\n\t\tfiles,\n\t\tformat: ABSOLUTE_MOBILE_UPDATE_FORMAT,\n\t\truntimeFingerprint: options.runtimeFingerprint,\n\t\twithinSubmittedPurpose: true as const\n\t};\n\tconst unsigned: AbsoluteMobileUnsignedUpdateManifest = {\n\t\t...withoutId,\n\t\treleaseId: releaseIdFor(withoutId)\n\t};\n\tconst signature = sign(\n\t\t'sha256',\n\t\tabsoluteMobileUpdateSigningPayload(unsigned),\n\t\t{ dsaEncoding: 'ieee-p1363', key: options.privateKey }\n\t);\n\tconst manifest = parseAbsoluteMobileUpdateManifest({\n\t\t...unsigned,\n\t\tsignature: {\n\t\t\talgorithm: 'ecdsa-p256-sha256',\n\t\t\tkeyId: options.keyId,\n\t\t\tvalue: signature.toString('base64')\n\t\t}\n\t});\n\tawait mkdir(outputRoot, { recursive: true });\n\tconst outputDirectory = join(outputRoot, manifest.releaseId);\n\tconst staging = await mkdtemp(join(outputRoot, '.stage-'));\n\ttry {\n\t\tawait cp(bundleDirectory, join(staging, UPDATE_FILES_DIRECTORY), {\n\t\t\tforce: true,\n\t\t\trecursive: true\n\t\t});\n\t\tawait writeFile(\n\t\t\tjoin(staging, UPDATE_MANIFEST_FILE),\n\t\t\t`${JSON.stringify(manifest, null, '\\t')}\\n`\n\t\t);\n\t\tawait rename(staging, outputDirectory);\n\t} catch (error) {\n\t\tawait rm(staging, { force: true, recursive: true });\n\t\tif (\n\t\t\ttypeof error === 'object' &&\n\t\t\terror !== null &&\n\t\t\tReflect.get(error, 'code') === 'EEXIST'\n\t\t)\n\t\t\tthrow new TypeError(\n\t\t\t\t`Mobile update ${manifest.releaseId} already exists.`,\n\t\t\t\t{ cause: error }\n\t\t\t);\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tmanifest,\n\t\tmanifestPath: join(outputDirectory, UPDATE_MANIFEST_FILE),\n\t\toutputDirectory\n\t};\n};\nexport const copyAbsoluteMobileUpdateFile = async (\n\tupdateDirectory: string,\n\tpath: string,\n\tdestination: string\n) => {\n\tconst source = resolve(updateDirectory, UPDATE_FILES_DIRECTORY, path);\n\tconst root = resolve(updateDirectory, UPDATE_FILES_DIRECTORY);\n\tif (!source.startsWith(`${root}/`))\n\t\tthrow new TypeError('Update file escaped its release.');\n\tawait mkdir(dirname(destination), { recursive: true });\n\tawait cp(source, destination, { force: true });\n};\nexport const readAbsoluteMobileUpdate = async (directory: string) =>\n\tparseAbsoluteMobileUpdateManifest(\n\t\tJSON.parse(\n\t\t\tawait readFile(\n\t\t\t\tjoin(resolve(directory), UPDATE_MANIFEST_FILE),\n\t\t\t\t'utf8'\n\t\t\t)\n\t\t)\n\t);\nexport const verifyAbsoluteMobileUpdateSignature = (\n\tmanifestValue: unknown,\n\tpublicKey: string | Buffer\n) => {\n\tconst manifest = parseAbsoluteMobileUpdateManifest(manifestValue);\n\tconst valid = verify(\n\t\t'sha256',\n\t\tabsoluteMobileUpdateSigningPayload(\n\t\t\tunsignedAbsoluteMobileUpdate(manifest)\n\t\t),\n\t\t{ dsaEncoding: 'ieee-p1363', key: publicKey },\n\t\tBuffer.from(manifest.signature.value, 'base64')\n\t);\n\tif (!valid)\n\t\tthrow new TypeError('Mobile update signature verification failed.');\n\n\treturn manifest;\n};\n",
|
|
68
|
+
"import { createHash } from 'node:crypto';\n\nexport type AbsoluteMobileUpdateRequestIdentity = {\n\tappId: string;\n\tchannel: string;\n\tcurrentReleaseId: string;\n\tinstallationId: string;\n\truntimeFingerprint: string;\n};\n\nexport type AbsoluteMobileUpdateRolloutOptions = {\n\tappId: string;\n\tchannel: string;\n\tinstallationId: string;\n\treleaseId: string;\n\trollout: number;\n};\n\nconst UUID_PATTERN =\n\t/^[a-f0-9]{8}-[a-f0-9]{4}-[1-8][a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u;\n\nconst requireHeader = (headers: Headers, name: string) => {\n\tconst value = headers.get(name);\n\tif (!value)\n\t\tthrow new TypeError(`Mobile update request is missing ${name}.`);\n\n\treturn value;\n};\n\nexport const isAbsoluteMobileUpdateRolloutMember = (\n\toptions: AbsoluteMobileUpdateRolloutOptions\n) => {\n\tif (\n\t\t!Number.isFinite(options.rollout) ||\n\t\toptions.rollout < 0 ||\n\t\toptions.rollout > 1\n\t)\n\t\tthrow new TypeError('Mobile update rollout must be between 0 and 1.');\n\tif (options.rollout === 0) return false;\n\tif (options.rollout === 1) return true;\n\tconst digest = createHash('sha256')\n\t\t.update(\n\t\t\t`${options.appId}\\0${options.channel}\\0${options.releaseId}\\0${options.installationId}`\n\t\t)\n\t\t.digest();\n\tconst bucket = digest.readUInt32BE(0) / 0x1_0000_0000;\n\n\treturn bucket < options.rollout;\n};\nexport const parseAbsoluteMobileUpdateRequest = (request: Request) => {\n\tconst identity: AbsoluteMobileUpdateRequestIdentity = {\n\t\tappId: requireHeader(request.headers, 'x-absolute-mobile-app'),\n\t\tchannel: requireHeader(request.headers, 'x-absolute-mobile-channel'),\n\t\tcurrentReleaseId: requireHeader(\n\t\t\trequest.headers,\n\t\t\t'x-absolute-mobile-release'\n\t\t),\n\t\tinstallationId: requireHeader(\n\t\t\trequest.headers,\n\t\t\t'x-absolute-mobile-installation'\n\t\t),\n\t\truntimeFingerprint: requireHeader(\n\t\t\trequest.headers,\n\t\t\t'x-absolute-mobile-runtime'\n\t\t)\n\t};\n\tif (!UUID_PATTERN.test(identity.installationId))\n\t\tthrow new TypeError('Mobile update installation identity is invalid.');\n\tif (!/^[a-f0-9]{64}$/u.test(identity.runtimeFingerprint))\n\t\tthrow new TypeError('Mobile update runtime identity is invalid.');\n\n\treturn identity;\n};\n"
|
|
62
69
|
],
|
|
63
|
-
"mappings": "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",
|
|
64
|
-
"debugId": "
|
|
70
|
+
"mappings": "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",
|
|
71
|
+
"debugId": "FA0645035026C26B64756E2164756E21",
|
|
65
72
|
"names": []
|
|
66
73
|
}
|