@legendapp/spark 0.0.1-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -0
- package/app.ts +1 -0
- package/audio.ts +1 -0
- package/auth-session.ts +1 -0
- package/bin/spark.cjs +5 -0
- package/clipboard.ts +1 -0
- package/config-plugin.cjs +1 -0
- package/config.cjs +1 -0
- package/config.d.cts +1 -0
- package/context-menu.ts +1 -0
- package/dialogs.ts +2 -0
- package/drag-drop.ts +1 -0
- package/expo-config.cjs +1 -0
- package/expo-metro.cjs +1 -0
- package/files.ts +1 -0
- package/global-shortcuts.ts +1 -0
- package/init-template.cjs +2 -0
- package/links.ts +1 -0
- package/menus.ts +1 -0
- package/message-dialog.ts +1 -0
- package/metro-gate.cjs +1 -0
- package/metro.cjs +1 -0
- package/native.cjs +1 -0
- package/notifications.ts +1 -0
- package/package.json +161 -0
- package/processes.ts +1 -0
- package/runtime-entry.cjs +1 -0
- package/schema.json +305 -0
- package/secure-storage.ts +1 -0
- package/settings.ts +1 -0
- package/shortcuts.ts +1 -0
- package/sqlite.ts +1 -0
- package/system.ts +1 -0
- package/tray.ts +1 -0
- package/ui-uniwind.ts +1 -0
- package/ui.ts +1 -0
- package/universal.cjs +1 -0
- package/updates.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-audio/RNSparkAudio.podspec +18 -0
- package/vendor/node_modules/@legendapp/spark-audio/macos/RNSparkAudio.h +4 -0
- package/vendor/node_modules/@legendapp/spark-audio/macos/RNSparkAudio.mm +154 -0
- package/vendor/node_modules/@legendapp/spark-audio/package.json +49 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/NativeSparkAudio.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/desktop.ts +39 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/index.android.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/index.ios.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/index.web.ts +42 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/media-session-unavailable.ts +5 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/media-session.ts +25 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/media-session.web.ts +35 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/media-types.ts +32 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/mobile.ts +38 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/status-listeners.ts +22 -0
- package/vendor/node_modules/@legendapp/spark-audio/src/types.ts +21 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.def +3 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.h +146 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/package.json +41 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/core.ts +68 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/index.android.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/index.ios.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/index.ts +22 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/index.web.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/mobile.ts +52 -0
- package/vendor/node_modules/@legendapp/spark-auth-session/src/types.ts +38 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/add-desktop.js +164 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/build-mode.js +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/build.js +278 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/commands.js +107 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/create.js +99 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/credentials.js +69 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/dev-command.js +81 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/dev.js +408 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/examples.js +43 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/executable.js +19 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-extension.cjs +51 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-patch.cjs +38 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-preload.cjs +19 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/expo-metro.cjs +41 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/expo-native.cjs +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/expo-node.js +21 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/go-profile.js +20 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/helpers.js +79 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/index.js +263 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/init-template.cjs +25 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/local.js +124 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/macos-release.js +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/metro-gate.cjs +33 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/metro.cjs +63 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/metro.js +25 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/npm-bin/npm +6 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/npm-bin/npm.cmd +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/pack-archive.js +23 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/package-manager.js +45 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/package.js +199 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/platform.js +34 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/process.js +57 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/project.js +324 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/release.js +42 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/release.json +37 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/runner-install.js +138 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/runtime-entry.cjs +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/sdk-install.js +66 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/sdk-transfer.js +113 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/session-status.js +22 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/signing.js +175 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/universal.cjs +28 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/updates.js +110 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/windows-associations.js +45 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/windows-associations.ps1 +57 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/windows-geometry.js +33 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/windows-metro.js +112 -0
- package/vendor/node_modules/@legendapp/spark-cli/dist/windows.js +141 -0
- package/vendor/node_modules/@legendapp/spark-cli/package.json +22 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/App.tsx +29 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/app.json +11 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/assets/icon.png +0 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/desktop.config.json +19 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/gitignore +8 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/index.ts +5 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/metro.config.js +3 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/package.json +55 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/tsconfig.json +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/App.tsx +34 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/Git.macos.tsx +13 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/Git.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/compare.ts +12 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/App.tsx +34 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.macos.tsx +57 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.tsx +13 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.web.tsx +14 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.windows.tsx +57 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/document.ts +58 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.desktop.ts +24 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.macos.ts +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.ts +31 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.web.ts +21 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/sessions.ts +8 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/useDocument.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.desktop.tsx +31 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.macos.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.tsx +14 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.web.tsx +20 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.windows.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.desktop.tsx +28 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.macos.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.tsx +2 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.windows.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/document.ts +58 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.desktop.ts +24 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.macos.ts +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.ts +31 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.web.ts +21 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/lifecycle-types.ts +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/lifetime.ts +23 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/records.ts +51 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/storage.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/useModel.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.desktop.tsx +4 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.macos.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.windows.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/App.tsx +38 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.desktop.ts +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.macos.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.ts +18 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.web.ts +37 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/model.ts +91 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/store.ts +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.desktop.tsx +5 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.macos.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.windows.tsx +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/App.tsx +92 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.desktop.ts +25 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.macos.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.ts +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Theme.tsx +17 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/model.ts +61 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/search.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/session.ts +16 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/store.ts +4 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/window-session.ts +62 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/App.tsx +57 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/app.json +15 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/assets/icon.png +0 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/desktop.config.json +62 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/gitignore +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/global.css +31 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/index.ts +4 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/metro.config.js +7 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/package.json +70 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/react-native.config.js +2 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/tsconfig.json +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/universal/uniwind-types.d.ts +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/App.tsx +16 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/app.json +11 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/assets/icon.png +0 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/desktop.config.json +10 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/gitignore +8 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/index.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/metro.config.js +3 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/package.json +56 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/react-native.config.js +2 -0
- package/vendor/node_modules/@legendapp/spark-cli/templates/windows/tsconfig.json +10 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/RNDesktopClipboard.podspec +16 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/macos/RNDesktopClipboard.h +4 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/macos/RNDesktopClipboard.mm +87 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/package.json +52 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/NativeDesktopClipboard.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/desktop.ts +39 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/expo.ts +12 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/formats.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/index.android.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/index.ios.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/index.web.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.def +3 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.h +119 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/RNContextMenu.podspec +16 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/macos/RNContextMenu.h +9 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/macos/RNContextMenu.mm +160 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/src/NativeContextMenu.ts +8 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/src/index.ts +29 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.def +3 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.h +112 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/RNDesktopApp.podspec +15 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/macos/RNDesktopApp.h +4 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/macos/RNDesktopApp.mm +34 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktop.h +23 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktop.mm +135 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkWindow.mm +81 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/package.json +39 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/src/NativeDesktopApp.ts +8 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/src/api.ts +42 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-app/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/app.plugin.cjs +75 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/config.cjs +161 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/config.d.cts +13 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/entitlements.cjs +23 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/expo.cjs +26 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/fabric-lifecycle.cjs +125 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/helpers.cjs +20 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/identity.cjs +28 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/keyboard-events.cjs +44 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/package.json +19 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/schema.json +305 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/updates.cjs +24 -0
- package/vendor/node_modules/@legendapp/spark-desktop-config/windows.plugin.cjs +72 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/AppDelegate.mm +79 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/package.json +13 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/windows/SparkComponentGeometry.h +9 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/windows/application.inc +647 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/windows/notifications.inc +60 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/windows/runtime.inc +63 -0
- package/vendor/node_modules/@legendapp/spark-desktop-host/windows/runtimes.inc +162 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/RNDesktopLinks.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/common/AuthLoopback.h +121 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/macos/RNDesktopLinks.h +4 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/macos/RNDesktopLinks.mm +79 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/package.json +53 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/NativeDesktopLinks.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/api.ts +37 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/expo.ts +5 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.android.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.ios.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.web.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.def +3 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.h +128 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/RNDesktopShortcuts.podspec +16 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/RNDesktopShortcuts.h +4 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/RNDesktopShortcuts.mm +56 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/package.json +43 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/NativeDesktopShortcuts.ts +8 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/accelerator.ts +22 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/api.ts +20 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/RNDesktopWindows.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/RNDesktopWindows.h +4 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/RNDesktopWindows.mm +210 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/package.json +44 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/src/NativeDesktopWindowManager.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/src/api.ts +79 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows-options.ts +11 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/RNDesktopDrag.podspec +20 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/macos/RNDesktopDragView.h +4 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/macos/RNDesktopDragView.mm +94 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/package.json +44 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/src/DesktopDragViewNativeComponent.ts +16 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/src/contracts.ts +28 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/src/index.tsx +17 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/ReactPackageProvider.cpp +21 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.def +3 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.h +209 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/RNFileDialog.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/ios/RNFileDialog.h +9 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/ios/RNFileDialog.mm +259 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/package.json +43 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/src/NativeFileDialog.ts +13 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/src/index.ts +89 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/src/index.windows.ts +15 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/src/options.ts +16 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.def +3 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.h +128 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-file-system/RNDesktopFileSystem.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-file-system/macos/RNDesktopFileSystem.h +4 -0
- package/vendor/node_modules/@legendapp/spark-file-system/macos/RNDesktopFileSystem.mm +211 -0
- package/vendor/node_modules/@legendapp/spark-file-system/package.json +47 -0
- package/vendor/node_modules/@legendapp/spark-file-system/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-file-system/src/NativeDesktopFileSystem.ts +8 -0
- package/vendor/node_modules/@legendapp/spark-file-system/src/handles.ts +45 -0
- package/vendor/node_modules/@legendapp/spark-file-system/src/index.ts +61 -0
- package/vendor/node_modules/@legendapp/spark-file-system/src/path.ts +9 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.def +3 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.h +295 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.vcxproj +144 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.vcxproj.filters +45 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/Trash.h +52 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/RNDesktopGlobalShortcuts.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/macos/RNDesktopGlobalShortcuts.h +3 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/macos/RNDesktopGlobalShortcuts.mm +65 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/NativeDesktopGlobalShortcuts.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/accelerator.ts +22 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/index.ts +16 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.def +3 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.h +80 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/RNDesktopMessageDialog.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/macos/RNDesktopMessageDialog.h +3 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/macos/RNDesktopMessageDialog.mm +36 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/src/NativeDesktopMessageDialog.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/src/index.ts +13 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.def +3 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.h +145 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/RNNativeMenu.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/ios/RNNativeMenu.h +10 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/ios/RNNativeMenu.mm +632 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/package.json +41 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/src/NativeMenu.ts +13 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/src/api.ts +128 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/src/index.windows.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-native-menu/src/windows-menus.ts +43 -0
- package/vendor/node_modules/@legendapp/spark-notifications/RNDesktopNotifications.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-notifications/macos/RNDesktopNotifications.h +4 -0
- package/vendor/node_modules/@legendapp/spark-notifications/macos/RNDesktopNotifications.mm +111 -0
- package/vendor/node_modules/@legendapp/spark-notifications/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-notifications/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-notifications/src/NativeDesktopNotifications.ts +4 -0
- package/vendor/node_modules/@legendapp/spark-notifications/src/index.ts +53 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.def +3 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.h +132 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-processes/RNDesktopProcesses.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-processes/macos/RNDesktopProcesses.h +3 -0
- package/vendor/node_modules/@legendapp/spark-processes/macos/RNDesktopProcesses.mm +153 -0
- package/vendor/node_modules/@legendapp/spark-processes/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-processes/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-processes/src/NativeDesktopProcesses.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-processes/src/index.ts +39 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.def +3 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.h +171 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/RNDesktopSecureStorage.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/macos/RNDesktopSecureStorage.h +4 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/macos/RNDesktopSecureStorage.mm +53 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/package.json +52 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/NativeDesktopSecureStorage.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/desktop.ts +24 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/expo.ts +14 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.android.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.ios.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.web.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.windows.ts +2 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/options.ts +6 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/src/unavailable.ts +5 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.def +3 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.h +48 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-settings/package.json +13 -0
- package/vendor/node_modules/@legendapp/spark-settings/src/filename.ts +1 -0
- package/vendor/node_modules/@legendapp/spark-settings/src/filename.windows.ts +9 -0
- package/vendor/node_modules/@legendapp/spark-settings/src/index.ts +19 -0
- package/vendor/node_modules/@legendapp/spark-settings/src/store.ts +37 -0
- package/vendor/node_modules/@legendapp/spark-sqlite/package.json +16 -0
- package/vendor/node_modules/@legendapp/spark-sqlite/src/index.ts +7 -0
- package/vendor/node_modules/@legendapp/spark-system/RNDesktopSystem.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-system/macos/RNDesktopSystem.h +3 -0
- package/vendor/node_modules/@legendapp/spark-system/macos/RNDesktopSystem.mm +108 -0
- package/vendor/node_modules/@legendapp/spark-system/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-system/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-system/src/NativeDesktopSystem.ts +3 -0
- package/vendor/node_modules/@legendapp/spark-system/src/index.ts +35 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.def +3 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.h +154 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-tray/RNDesktopTray.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-tray/macos/RNDesktopTray.h +4 -0
- package/vendor/node_modules/@legendapp/spark-tray/macos/RNDesktopTray.mm +63 -0
- package/vendor/node_modules/@legendapp/spark-tray/package.json +46 -0
- package/vendor/node_modules/@legendapp/spark-tray/react-native.config.js +6 -0
- package/vendor/node_modules/@legendapp/spark-tray/src/NativeDesktopTray.ts +4 -0
- package/vendor/node_modules/@legendapp/spark-tray/src/index.ts +46 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/ReactPackageProvider.cpp +20 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.def +3 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.h +133 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.vcxproj +143 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-ui/RNSparkUI.podspec +17 -0
- package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkButton.h +4 -0
- package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkButton.mm +51 -0
- package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkSelect.h +4 -0
- package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkSelect.mm +53 -0
- package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkTextInput.h +4 -0
- package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkTextInput.mm +45 -0
- package/vendor/node_modules/@legendapp/spark-ui/package.json +61 -0
- package/vendor/node_modules/@legendapp/spark-ui/react-native.config.js +5 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/SparkButtonNativeComponent.ts +12 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/SparkSelectNativeComponent.ts +10 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/SparkTextInputNativeComponent.ts +9 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/index.android.tsx +25 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/index.ios.tsx +30 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/index.tsx +27 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/index.web.tsx +23 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/index.windows.tsx +42 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/select.ts +7 -0
- package/vendor/node_modules/@legendapp/spark-ui/src/types.ts +28 -0
- package/vendor/node_modules/@legendapp/spark-ui/uniwind.ts +8 -0
- package/vendor/node_modules/@legendapp/spark-ui/uniwind.web.ts +17 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/ExperimentalFeatures.props +33 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/LICENSE +25 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/ReactPackageProvider.cpp +21 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/ReactPackageProvider.h +24 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/ReactPackageProvider.idl +9 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkAppearance.h +61 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.cpp +2 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.def +3 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.h +181 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.rc +0 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.vcxproj +144 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.vcxproj.filters +44 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/pch.cpp +1 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/pch.h +30 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/resource.h +5 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/targetver.h +8 -0
- package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI.sln +43 -0
- package/vendor/node_modules/@legendapp/spark-updates/RNDesktopUpdates.podspec +18 -0
- package/vendor/node_modules/@legendapp/spark-updates/Sparkle.podspec.json +39 -0
- package/vendor/node_modules/@legendapp/spark-updates/macos/RNDesktopUpdates.h +4 -0
- package/vendor/node_modules/@legendapp/spark-updates/macos/RNDesktopUpdates.mm +72 -0
- package/vendor/node_modules/@legendapp/spark-updates/package.json +44 -0
- package/vendor/node_modules/@legendapp/spark-updates/src/NativeDesktopUpdates.ts +4 -0
- package/vendor/node_modules/@legendapp/spark-updates/src/index.ts +23 -0
- package/vendor/node_modules/@legendapp/spark-webview/package.json +15 -0
- package/vendor/node_modules/@legendapp/spark-webview/src/index.ts +2 -0
- package/vendor/node_modules/@legendapp/spark-window-options/index.cjs +25 -0
- package/vendor/node_modules/@legendapp/spark-window-options/index.d.ts +12 -0
- package/vendor/node_modules/@legendapp/spark-window-options/package.json +12 -0
- package/webview.ts +1 -0
- package/windows.ts +1 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type AuthSessionResult = { type: "success"; url: string } | { type: "cancel" | "dismiss" | "timeout" };
|
|
2
|
+
export type AuthSessionOptions = { redirectUri?: string; timeoutMs?: number; signal?: AbortSignal };
|
|
3
|
+
export interface AuthSession {
|
|
4
|
+
readonly redirectUri: string;
|
|
5
|
+
readonly state: string;
|
|
6
|
+
open(authorizationUrl: string): Promise<AuthSessionResult>;
|
|
7
|
+
dismiss(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export function timeout(options: AuthSessionOptions) {
|
|
10
|
+
const value = options.timeoutMs ?? 120_000;
|
|
11
|
+
if (!Number.isInteger(value) || value < 1 || value > 600_000) throw new TypeError("Auth timeout must be 1–600000 milliseconds");
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
export function callbackMatches(value: string, redirectUri: string, state: string) {
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(value), expected = new URL(redirectUri);
|
|
17
|
+
if (url.protocol !== expected.protocol || url.hostname !== expected.hostname || url.port !== expected.port || url.pathname !== expected.pathname || url.username || url.password) return false;
|
|
18
|
+
const states = [...url.searchParams.getAll("state"), ...new URLSearchParams(url.hash.slice(1)).getAll("state")];
|
|
19
|
+
return states.length === 1 && states[0] === state;
|
|
20
|
+
} catch { return false; }
|
|
21
|
+
}
|
|
22
|
+
export function authorize(value: string, state: string, redirectUri: string) {
|
|
23
|
+
const url = new URL(value);
|
|
24
|
+
if ((url.protocol !== "https:" && !(url.protocol === "http:" && url.hostname === "127.0.0.1")) || url.username || url.password) throw new TypeError("Authorization requires HTTPS (or a local loopback test server)");
|
|
25
|
+
const states = url.searchParams.getAll("state");
|
|
26
|
+
if (states.length !== 1 || states[0] !== state) throw new TypeError("Authorization URL must use this session's state");
|
|
27
|
+
const redirects = url.searchParams.getAll("redirect_uri");
|
|
28
|
+
if (redirects.length > 1 || (redirects.length === 1 && redirects[0] !== redirectUri)) throw new TypeError("Authorization redirect_uri must match the prepared session");
|
|
29
|
+
}
|
|
30
|
+
export function validateRedirect(uri: string) {
|
|
31
|
+
const url = new URL(uri);
|
|
32
|
+
if (url.username || url.password || url.search || url.hash || ["javascript:", "data:", "file:", "about:"].includes(url.protocol)) throw new TypeError("Invalid authentication redirect URI");
|
|
33
|
+
return url;
|
|
34
|
+
}
|
|
35
|
+
export function validateCount(count: number) { if (!Number.isInteger(count) || count < 1 || count > 1024) throw new TypeError("Random byte count must be 1–1024"); }
|
|
36
|
+
export function validateDigest(algorithm: string, value: string) {
|
|
37
|
+
if (algorithm !== "SHA-256" || typeof value !== "string" || value.length > 262144) throw new TypeError("Expected SHA-256 and at most 262144 characters");
|
|
38
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { packageSources } from "./release.js";
|
|
2
|
+
import { packageManager, managerCommand, localArchive } from "./package-manager.js";
|
|
3
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import ts from "typescript";
|
|
7
|
+
import { run } from "./commands.js";
|
|
8
|
+
import { readJson } from "./project.js";
|
|
9
|
+
export const integrationMarker = "// spark: existing Expo project";
|
|
10
|
+
/** Wrap an existing export without reprinting or moving the application's code. */
|
|
11
|
+
export function composeExport(source, file, module, fn, root = true) {
|
|
12
|
+
if (source.includes(integrationMarker))
|
|
13
|
+
return source;
|
|
14
|
+
const parsed = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true);
|
|
15
|
+
const exported = parsed.statements.find(ts.isExportAssignment);
|
|
16
|
+
const wrap = (expression) => `require(${JSON.stringify(module)}).${fn}(${expression}${root ? ", __dirname" : ""})`;
|
|
17
|
+
if (exported && !exported.isExportEquals) {
|
|
18
|
+
const expression = exported.expression;
|
|
19
|
+
return source.slice(0, expression.getStart(parsed)) + wrap(expression.getText(parsed)) + source.slice(expression.end) + `\n${integrationMarker}\n`;
|
|
20
|
+
}
|
|
21
|
+
let commonJS = false;
|
|
22
|
+
function visit(node) {
|
|
23
|
+
if (ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.EqualsToken && node.left.getText(parsed) === "module.exports")
|
|
24
|
+
commonJS = true;
|
|
25
|
+
ts.forEachChild(node, visit);
|
|
26
|
+
}
|
|
27
|
+
visit(parsed);
|
|
28
|
+
if (!commonJS)
|
|
29
|
+
throw new Error(`Cannot safely compose ${file}: use module.exports or an export default expression. No files were changed.`);
|
|
30
|
+
return `${source}\n${integrationMarker}\nmodule.exports = ${wrap("module.exports")};\n`;
|
|
31
|
+
}
|
|
32
|
+
export function composeMetro(source, file) {
|
|
33
|
+
if (source.includes(integrationMarker))
|
|
34
|
+
return source;
|
|
35
|
+
const parsed = ts.createSourceFile(file, source, ts.ScriptTarget.Latest, true);
|
|
36
|
+
const replacements = [];
|
|
37
|
+
function visit(node) {
|
|
38
|
+
if (ts.isStringLiteral(node) && ["expo/metro-config", "@expo/metro-config"].includes(node.text))
|
|
39
|
+
replacements.push({ start: node.getStart(parsed), end: node.end });
|
|
40
|
+
ts.forEachChild(node, visit);
|
|
41
|
+
}
|
|
42
|
+
visit(parsed);
|
|
43
|
+
if (!replacements.length)
|
|
44
|
+
throw new Error(`Cannot safely compose ${file}: use Expo's getDefaultConfig before adding desktop support. No files were changed.`);
|
|
45
|
+
for (const { start, end } of replacements.sort((a, b) => b.start - a.start))
|
|
46
|
+
source = source.slice(0, start) + '"@legendapp/spark/expo-metro"' + source.slice(end);
|
|
47
|
+
return composeExport(source, file, "@legendapp/spark/expo-metro", "withSparkMetro", false);
|
|
48
|
+
}
|
|
49
|
+
export async function addDesktop(root, manifestFile) {
|
|
50
|
+
const pkgFile = path.join(root, "package.json");
|
|
51
|
+
if (!existsSync(pkgFile))
|
|
52
|
+
throw new Error("Run add desktop in an installed Expo app, or pass --project.");
|
|
53
|
+
const pkg = readJson(pkgFile);
|
|
54
|
+
if (pkg.type === "module")
|
|
55
|
+
throw new Error("ES module package configurations need explicit composition; automatic add desktop currently supports Expo's CommonJS project layout. No files were changed.");
|
|
56
|
+
const manager = packageManager(root);
|
|
57
|
+
const req = createRequire(pkgFile);
|
|
58
|
+
const installed = (name) => readJson(req.resolve(`${name}/package.json`)).version;
|
|
59
|
+
// Never upgrade the mobile baseline as a side effect of adding desktop.
|
|
60
|
+
for (const [name, version] of Object.entries({ expo: "54.0.37", "react-native": "0.81.6", react: "19.1.4" })) {
|
|
61
|
+
let actual;
|
|
62
|
+
try {
|
|
63
|
+
actual = installed(name);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
throw new Error(`Install the app's dependencies first; ${name} is missing.`);
|
|
67
|
+
}
|
|
68
|
+
if (actual !== version)
|
|
69
|
+
throw new Error(`The tested Expo Desktop beta needs ${name}@${version}; this app has ${actual}. Align the app's baseline separately, then retry. No files were changed.`);
|
|
70
|
+
}
|
|
71
|
+
const desktopFile = path.join(root, "desktop.config.json");
|
|
72
|
+
if (existsSync(desktopFile)) {
|
|
73
|
+
if (readJson(desktopFile).extends !== "expo")
|
|
74
|
+
throw new Error("This app already uses spark-owned configuration; add desktop is for existing Expo projects.");
|
|
75
|
+
await run(root, managerCommand(manager, ["install"]));
|
|
76
|
+
console.log("Desktop integration already exists; dependencies installed. Existing configuration preserved.");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
for (const file of ["macos", "windows"])
|
|
80
|
+
if (existsSync(path.join(root, file)))
|
|
81
|
+
throw new Error(`Existing ${file} project needs explicit host composition before adopting spark. No files were changed.`);
|
|
82
|
+
const expoRequire = createRequire(req.resolve("expo/package.json"));
|
|
83
|
+
const { getConfig } = expoRequire("@expo/config");
|
|
84
|
+
const base = getConfig(root, { skipPlugins: true }).exp;
|
|
85
|
+
if (base.newArchEnabled === false)
|
|
86
|
+
throw new Error("spark's desktop host requires the New Architecture. Align that setting before adding desktop.");
|
|
87
|
+
const files = new Map();
|
|
88
|
+
const configNames = ["app.config.ts", "app.config.js"].filter(file => existsSync(path.join(root, file)));
|
|
89
|
+
if (configNames.length > 1)
|
|
90
|
+
throw new Error("Keep one dynamic Expo configuration file before adding desktop.");
|
|
91
|
+
const configFile = configNames[0] ?? "app.config.js";
|
|
92
|
+
const configSource = configNames.length ? readFileSync(path.join(root, configFile), "utf8") : "module.exports = ({ config }) => config;\n";
|
|
93
|
+
files.set(configFile, composeExport(configSource, configFile, "@legendapp/spark/expo-config", "withSparkExpo"));
|
|
94
|
+
for (const file of ["metro.config.ts", "metro.config.mjs", "metro.config.cjs", "react-native.config.ts", "react-native.config.cjs"]) {
|
|
95
|
+
if (existsSync(path.join(root, file)))
|
|
96
|
+
throw new Error(`Compose ${file} explicitly; automatic integration currently supports metro.config.js and react-native.config.js. No files were changed.`);
|
|
97
|
+
}
|
|
98
|
+
const metro = "metro.config.js";
|
|
99
|
+
files.set(metro, composeMetro(existsSync(path.join(root, metro)) ? readFileSync(path.join(root, metro), "utf8") : 'const { getDefaultConfig } = require("expo/metro-config");\nmodule.exports = getDefaultConfig(__dirname);\n', metro));
|
|
100
|
+
const native = "react-native.config.js";
|
|
101
|
+
files.set(native, composeExport(existsSync(path.join(root, native)) ? readFileSync(path.join(root, native), "utf8") : "module.exports = {};\n", native, "@legendapp/spark/native", "withSparkNative"));
|
|
102
|
+
const template = path.resolve(import.meta.dirname, "../templates/universal");
|
|
103
|
+
const defaults = readJson(path.join(template, "package.json"));
|
|
104
|
+
const archives = packageSources(manifestFile);
|
|
105
|
+
const local = ["@legendapp/spark"];
|
|
106
|
+
const dependencies = {};
|
|
107
|
+
for (const name of local) {
|
|
108
|
+
if (!archives[name])
|
|
109
|
+
throw new Error(`SDK is missing ${name}; run spark sdk pack first.`);
|
|
110
|
+
dependencies[name] = archives[name];
|
|
111
|
+
}
|
|
112
|
+
for (const [name, version] of Object.entries(defaults.dependencies)) {
|
|
113
|
+
if (name.startsWith("expo-desktop") || ["react-native-macos", "react-native-windows", "@react-native-community/cli"].includes(name))
|
|
114
|
+
dependencies[name] = version;
|
|
115
|
+
}
|
|
116
|
+
pkg.dependencies ??= {};
|
|
117
|
+
for (const [name, version] of Object.entries(dependencies)) {
|
|
118
|
+
const previous = pkg.dependencies[name] ?? pkg.devDependencies?.[name];
|
|
119
|
+
if (previous && previous !== version)
|
|
120
|
+
throw new Error(`Existing ${name} dependency conflicts with the tested desktop version. Resolve it explicitly before retrying. No files were changed.`);
|
|
121
|
+
if (!previous)
|
|
122
|
+
pkg.dependencies[name] = version;
|
|
123
|
+
}
|
|
124
|
+
// Resolve local transitive SDK packages without replacing any mobile pins.
|
|
125
|
+
const vendor = ["@react-native-runtimes/core", "react-native-nitro-modules", "@op-engineering/op-sqlite", "react-native-webview"];
|
|
126
|
+
const overrides = { ...Object.fromEntries(local.map(name => [name, dependencies[name]])), "@expo/cli": "54.0.27" };
|
|
127
|
+
for (const name of vendor) {
|
|
128
|
+
if (archives[name]) {
|
|
129
|
+
overrides[name] = archives[name];
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const overrideField = manager === "yarn" ? "resolutions" : "overrides";
|
|
133
|
+
const owner = manager === "pnpm" ? (pkg.pnpm ??= {}) : pkg;
|
|
134
|
+
for (const [name, version] of Object.entries(overrides))
|
|
135
|
+
if (owner[overrideField]?.[name] && owner[overrideField][name] !== version)
|
|
136
|
+
throw new Error(`Existing ${name} override conflicts with the local SDK. No files were changed.`);
|
|
137
|
+
owner[overrideField] = { ...owner[overrideField], ...overrides };
|
|
138
|
+
pkg.scripts ??= {};
|
|
139
|
+
for (const platform of ["macos", "windows"]) {
|
|
140
|
+
const name = pkg.scripts[platform] ? `spark:${platform}` : platform;
|
|
141
|
+
const command = `spark dev --platform ${platform}`;
|
|
142
|
+
if (pkg.scripts[name] && pkg.scripts[name] !== command)
|
|
143
|
+
throw new Error(`Script ${name} already exists; resolve the script conflict before adding desktop.`);
|
|
144
|
+
pkg.scripts[name] = command;
|
|
145
|
+
}
|
|
146
|
+
files.set("package.json", JSON.stringify(pkg, null, 2) + "\n");
|
|
147
|
+
const config = readJson(path.join(template, "desktop.config.json"));
|
|
148
|
+
const { name, version, expo, ...desktop } = config;
|
|
149
|
+
const projectId = crypto.randomUUID();
|
|
150
|
+
desktop.extends = "expo";
|
|
151
|
+
desktop.projectId = projectId;
|
|
152
|
+
desktop.platforms = [...new Set([...(base.platforms ?? ["ios", "android", "web"]), "macos", "windows"])];
|
|
153
|
+
desktop.macos = { bundleIdentifier: base.macos?.bundleIdentifier ?? base.ios?.bundleIdentifier ?? `app.spark.id${projectId.replaceAll("-", "")}` };
|
|
154
|
+
files.set("desktop.config.json", JSON.stringify(desktop, null, 2) + "\n");
|
|
155
|
+
const ignoreFile = path.join(root, ".gitignore");
|
|
156
|
+
const ignore = existsSync(ignoreFile) ? readFileSync(ignoreFile, "utf8") : "";
|
|
157
|
+
files.set(".gitignore", `${ignore}${ignore.endsWith("\n") || !ignore ? "" : "\n"}\n# spark generated desktop state\n/.spark/\n/macos/\n/windows/\n`);
|
|
158
|
+
// All conflicts are checked before the first write. The integration is kept
|
|
159
|
+
// reviewable/retryable if the package manager fails; never regenerate mobile.
|
|
160
|
+
for (const [file, content] of files)
|
|
161
|
+
writeFileSync(path.join(root, file), content);
|
|
162
|
+
await run(root, managerCommand(manager, ["install"]));
|
|
163
|
+
console.log(`Added desktop support to ${root}. Existing entry point and mobile/web scripts are unchanged.\nRun spark build --dev --platform macos, then spark dev --platform macos. Windows native builds run on Windows.`);
|
|
164
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function buildMode(values) {
|
|
2
|
+
const prebuilt = values.runner || values.prebuilt || values.go;
|
|
3
|
+
if ([prebuilt, values.dev, values.preview, values.release].filter(Boolean).length > 1) {
|
|
4
|
+
throw new Error("Choose only one build mode: --dev, --preview, --release, or --runner.");
|
|
5
|
+
}
|
|
6
|
+
return prebuilt ? "go" : values.dev ? "dev" : values.preview ? "preview" : "release";
|
|
7
|
+
}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import { macOSReleaseSettings } from "./macos-release.js";
|
|
2
|
+
import { projectPlatform } from "./platform.js";
|
|
3
|
+
import { isUniversal, isExpoProject } from "@legendapp/spark-desktop-config/config.cjs";
|
|
4
|
+
import { buildWindows } from "./windows.js";
|
|
5
|
+
import { copyHelpers } from "./helpers.js";
|
|
6
|
+
import { readAppConfig } from "./project.js";
|
|
7
|
+
import { cpSync, existsSync, mkdirSync, readFileSync, realpathSync, readdirSync, rmSync, writeFileSync, openSync, closeSync, } from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { registerRuntime } from "./local.js";
|
|
10
|
+
import { binary, doctor, run } from "./commands.js";
|
|
11
|
+
import { prepareConfig, entryFile, digest, hashFiles, hostSourceSignature, nativePackages, readJson, runtimeFor, selection, stateFile, writeJson, validateBuildModules, goConfigurationIssues, } from "./project.js";
|
|
12
|
+
export async function analyze(root, packages = nativePackages(root)) {
|
|
13
|
+
if (projectPlatform(root) === "windows")
|
|
14
|
+
throw new Error("Windows production analysis is not implemented; use spark build --dev.");
|
|
15
|
+
prepareConfig(root);
|
|
16
|
+
const dir = stateFile(root, "analysis");
|
|
17
|
+
mkdirSync(dir, { recursive: true });
|
|
18
|
+
const exportBundle = async (env) => run(root, [
|
|
19
|
+
binary(root, "expo"),
|
|
20
|
+
"export:embed",
|
|
21
|
+
"--platform",
|
|
22
|
+
"macos",
|
|
23
|
+
"--entry-file",
|
|
24
|
+
entryFile(root),
|
|
25
|
+
"--bundle-output",
|
|
26
|
+
path.join(dir, "app.js"),
|
|
27
|
+
"--sourcemap-output",
|
|
28
|
+
path.join(dir, "app.map"),
|
|
29
|
+
"--dev",
|
|
30
|
+
"false",
|
|
31
|
+
"--minify",
|
|
32
|
+
"false",
|
|
33
|
+
"--max-workers",
|
|
34
|
+
"2",
|
|
35
|
+
], { env: { CI: "1", ...env }, capture: true });
|
|
36
|
+
await exportBundle({ SPARK_RUNTIME_DISCOVERY: "1" });
|
|
37
|
+
const discovery = readJson(path.join(dir, "app.map"));
|
|
38
|
+
const runtimeCore = packages.find(pkg => pkg.name === "@react-native-runtimes/core");
|
|
39
|
+
const roots = discovery.sources.filter(source => !source.includes("\0")).map(source => {
|
|
40
|
+
const absolute = path.resolve(root, source);
|
|
41
|
+
// Expo emits URL-like /node_modules and /App.tsx paths as well as absolute paths.
|
|
42
|
+
return existsSync(absolute) ? absolute : path.resolve(root, source.replace(/^\//, ""));
|
|
43
|
+
}).filter(source => existsSync(source)).map(source => realpathSync(source));
|
|
44
|
+
const enabled = !!runtimeCore && discovery.sources.some(source => (source.startsWith(runtimeCore.root + "/") || source.includes("/node_modules/@react-native-runtimes/core/")) && !source.endsWith("secondary-runtime-polyfill.js"));
|
|
45
|
+
if (enabled && !discovery.sources.some(source => ["/@legendapp/spark-cli/src/runtime-entry.cjs", "/@legendapp/spark-cli/dist/runtime-entry.cjs"].some(entry => source.endsWith(entry)))) {
|
|
46
|
+
throw new Error("Runtimes requires withDesktop in metro.config.js and the worker-aware index.ts. See docs/runtimes.md migration instructions.");
|
|
47
|
+
}
|
|
48
|
+
const runtimeSources = path.join(dir, "runtime-sources.json");
|
|
49
|
+
writeJson(runtimeSources, { enabled, roots: roots.filter(source => /\.[jt]sx?$/.test(source) && !source.endsWith(".d.ts") &&
|
|
50
|
+
!source.includes("/node_modules/@react-native-runtimes/core/") &&
|
|
51
|
+
(!source.includes("/node_modules/") || /["']@react-native-runtimes\/core["']/.test(readFileSync(source, "utf8")))) });
|
|
52
|
+
await exportBundle({ SPARK_RUNTIME_SOURCES: runtimeSources });
|
|
53
|
+
const map = readJson(path.join(dir, "app.map"));
|
|
54
|
+
const used = new Set();
|
|
55
|
+
for (const source of map.sources) {
|
|
56
|
+
for (const pkg of packages) {
|
|
57
|
+
// Metro's source map can contain absolute paths or project-relative node_modules paths.
|
|
58
|
+
if (source.startsWith(pkg.root + "/") ||
|
|
59
|
+
source.includes(`/node_modules/${pkg.name}/`) ||
|
|
60
|
+
source.startsWith(`node_modules/${pkg.name}/`))
|
|
61
|
+
used.add(pkg.name);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const config = readAppConfig(root);
|
|
65
|
+
const result = selection(packages, used, config.expo?.extra?.spark?.include ?? []);
|
|
66
|
+
writeJson(stateFile(root, "selection-report.json"), {
|
|
67
|
+
included: result.included.map((p) => p.name),
|
|
68
|
+
excluded: result.excluded.map((p) => p.name),
|
|
69
|
+
reasons: result.reasons,
|
|
70
|
+
sources: map.sources,
|
|
71
|
+
});
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
export async function build(root, mode, force = false) {
|
|
75
|
+
const lock = stateFile(root, "build.lock");
|
|
76
|
+
mkdirSync(path.dirname(lock), { recursive: true });
|
|
77
|
+
try {
|
|
78
|
+
const fd = openSync(lock, "wx");
|
|
79
|
+
writeFileSync(fd, String(process.pid));
|
|
80
|
+
closeSync(fd);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error.code !== "EEXIST")
|
|
84
|
+
throw error;
|
|
85
|
+
const pid = Number(readFileSync(lock, "utf8"));
|
|
86
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
87
|
+
throw new Error(`Invalid build lock: ${lock}. Check for an active build before removing it.`);
|
|
88
|
+
try {
|
|
89
|
+
process.kill(pid, 0);
|
|
90
|
+
}
|
|
91
|
+
catch (signalError) {
|
|
92
|
+
if (signalError.code === "ESRCH") {
|
|
93
|
+
rmSync(lock);
|
|
94
|
+
return build(root, mode, force);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
throw new Error(`Another build owns this project (PID ${pid}). Wait for it to finish.`);
|
|
98
|
+
}
|
|
99
|
+
try {
|
|
100
|
+
const result = await buildUnlocked(root, mode, force);
|
|
101
|
+
if (mode === "go") {
|
|
102
|
+
registerRuntime(result.app);
|
|
103
|
+
console.log("Spark Runner registered. Apps will discover it automatically.");
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
rmSync(lock, { force: true });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function buildUnlocked(root, mode, force) {
|
|
112
|
+
if (projectPlatform(root) === "windows")
|
|
113
|
+
return buildWindows(root, mode, force);
|
|
114
|
+
prepareConfig(root);
|
|
115
|
+
if (mode === "go") {
|
|
116
|
+
const issues = goConfigurationIssues(readAppConfig(root));
|
|
117
|
+
if (issues.length)
|
|
118
|
+
throw new Error(`Build the Spark Runner from a generic SDK starter: ${issues.join("; ")}`);
|
|
119
|
+
}
|
|
120
|
+
await doctor(root);
|
|
121
|
+
const all = nativePackages(root);
|
|
122
|
+
const productionGraph = mode === "release" || mode === "preview";
|
|
123
|
+
const chosen = productionGraph
|
|
124
|
+
? await analyze(root, all)
|
|
125
|
+
: { included: all, excluded: [] };
|
|
126
|
+
validateBuildModules(mode, chosen.included);
|
|
127
|
+
const runtime = runtimeFor(root, chosen.included, mode);
|
|
128
|
+
const productionHash = productionGraph
|
|
129
|
+
? hashFiles(root, [path.relative(root, stateFile(root, "analysis/app.js"))])
|
|
130
|
+
: undefined;
|
|
131
|
+
if (productionHash)
|
|
132
|
+
runtime.fingerprint = digest(runtime.fingerprint + productionHash);
|
|
133
|
+
const resultFile = stateFile(root, `${mode}-build.json`);
|
|
134
|
+
if (!force && existsSync(resultFile)) {
|
|
135
|
+
const existing = readJson(resultFile);
|
|
136
|
+
if (existing.runtime.fingerprint === runtime.fingerprint &&
|
|
137
|
+
existsSync(existing.app)) {
|
|
138
|
+
console.log(`Reusing ${existing.app}`);
|
|
139
|
+
return existing;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
writeJson(stateFile(root, "native-selection.json"), {
|
|
143
|
+
excluded: chosen.excluded.map((p) => p.name),
|
|
144
|
+
included: chosen.included.map((p) => ({ name: p.name, root: p.root })),
|
|
145
|
+
});
|
|
146
|
+
const rnConfig = path.join(root, "react-native.config.js");
|
|
147
|
+
const marker = "// Generated by spark; extend with configuration plugins.";
|
|
148
|
+
if (existsSync(rnConfig) &&
|
|
149
|
+
!readFileSync(rnConfig, "utf8").startsWith(marker) &&
|
|
150
|
+
!(isExpoProject(root) && readFileSync(rnConfig, "utf8").includes("// spark: existing Expo project")))
|
|
151
|
+
throw new Error("Existing react-native.config.js is not spark-managed. Compose the native selection explicitly before building.");
|
|
152
|
+
if (!isUniversal(root))
|
|
153
|
+
writeFileSync(rnConfig, `${marker}\nconst selection = require('./.spark/native-selection.json');\nmodule.exports = { dependencies: Object.fromEntries([\n...selection.included.map(p => [p.name, { root: p.root }]),\n...selection.excluded.map(name => [name, { platforms: { ios: null, macos: null, android: null } }])\n]) };\n`);
|
|
154
|
+
const pkg = readJson(path.join(root, "package.json"));
|
|
155
|
+
if (!isUniversal(root)) {
|
|
156
|
+
pkg.expo ??= {};
|
|
157
|
+
pkg.expo.autolinking ??= {};
|
|
158
|
+
pkg.expo.autolinking.exclude = chosen.excluded.map((p) => p.name);
|
|
159
|
+
writeJson(path.join(root, "package.json"), pkg);
|
|
160
|
+
}
|
|
161
|
+
const preparation = digest(JSON.stringify({
|
|
162
|
+
config: readAppConfig(root),
|
|
163
|
+
packages: chosen.included.map((p) => [
|
|
164
|
+
p.name,
|
|
165
|
+
hashFiles(p.root, [
|
|
166
|
+
"package.json",
|
|
167
|
+
p.json.codegenConfig?.jsSrcsDir ?? "src",
|
|
168
|
+
...readdirSync(p.root).filter((name) => name.endsWith(".podspec")),
|
|
169
|
+
]),
|
|
170
|
+
]),
|
|
171
|
+
plugin: hostSourceSignature(root),
|
|
172
|
+
}));
|
|
173
|
+
const preparedFile = stateFile(root, "native-preparation.json");
|
|
174
|
+
const needsPreparation = force ||
|
|
175
|
+
!existsSync(preparedFile) ||
|
|
176
|
+
readJson(preparedFile).fingerprint !== preparation ||
|
|
177
|
+
!existsSync(path.join(root, "macos/Pods/Manifest.lock"));
|
|
178
|
+
if (needsPreparation) {
|
|
179
|
+
const manifest = readFileSync(path.join(root, "package.json"), "utf8");
|
|
180
|
+
try {
|
|
181
|
+
await run(root, [
|
|
182
|
+
binary(root, "expo-desktop"),
|
|
183
|
+
"prebuild",
|
|
184
|
+
"--platform",
|
|
185
|
+
"macos",
|
|
186
|
+
"--template",
|
|
187
|
+
"expo-desktop-template-bare-minimum@54.81.1-beta.6",
|
|
188
|
+
"--no-install",
|
|
189
|
+
...(force ? ["--clean"] : []),
|
|
190
|
+
], { env: { CI: "1" }, capture: true });
|
|
191
|
+
// beta.5 copies all-platform template dependencies even for macOS. Preserve this
|
|
192
|
+
// platform's installed manifest instead of silently adding uninstalled Windows packages.
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
writeFileSync(path.join(root, "package.json"), manifest);
|
|
196
|
+
}
|
|
197
|
+
// ReactCodegen's source glob must not pick up bindings from a previously larger graph.
|
|
198
|
+
rmSync(path.join(root, "macos/build/generated"), {
|
|
199
|
+
recursive: true,
|
|
200
|
+
force: true,
|
|
201
|
+
});
|
|
202
|
+
await run(root, ["pod", "install"], {
|
|
203
|
+
cwd: path.join(root, "macos"),
|
|
204
|
+
env: { RCT_NEW_ARCH_ENABLED: "1" },
|
|
205
|
+
capture: true,
|
|
206
|
+
});
|
|
207
|
+
writeJson(preparedFile, { fingerprint: preparation });
|
|
208
|
+
}
|
|
209
|
+
const nativeRoot = path.join(root, "macos");
|
|
210
|
+
const workspace = readdirSync(nativeRoot).find((name) => name.endsWith(".xcworkspace"));
|
|
211
|
+
if (!workspace)
|
|
212
|
+
throw new Error("Prebuild did not produce a macOS workspace.");
|
|
213
|
+
const name = workspace.slice(0, -".xcworkspace".length);
|
|
214
|
+
const configuration = mode === "release" ? "Release" : "Debug";
|
|
215
|
+
const derived = stateFile(root, "DerivedData");
|
|
216
|
+
console.log(`Building ${mode === "go" ? "Spark Runner" : mode} runtime (${configuration}, arm64)…`);
|
|
217
|
+
// Export once for analysis; native build performs the normal production bundle step.
|
|
218
|
+
await run(root, [
|
|
219
|
+
"xcodebuild",
|
|
220
|
+
"-workspace",
|
|
221
|
+
path.join(nativeRoot, workspace),
|
|
222
|
+
"-scheme",
|
|
223
|
+
`${name}-macOS`,
|
|
224
|
+
"-configuration",
|
|
225
|
+
configuration,
|
|
226
|
+
"-destination",
|
|
227
|
+
"platform=macOS,arch=arm64",
|
|
228
|
+
"-derivedDataPath",
|
|
229
|
+
derived,
|
|
230
|
+
"ARCHS=arm64",
|
|
231
|
+
"ONLY_ACTIVE_ARCH=YES",
|
|
232
|
+
"CODE_SIGNING_ALLOWED=NO",
|
|
233
|
+
...(mode === "release" ? macOSReleaseSettings : []),
|
|
234
|
+
"-jobs",
|
|
235
|
+
"8",
|
|
236
|
+
"build",
|
|
237
|
+
], {
|
|
238
|
+
env: { RCT_NEW_ARCH_ENABLED: "1", ENTRY_FILE: entryFile(root), ...(productionGraph ? { SPARK_RUNTIME_SOURCES: stateFile(root, "analysis/runtime-sources.json") } : {}) },
|
|
239
|
+
capture: true,
|
|
240
|
+
});
|
|
241
|
+
const products = path.join(derived, "Build", "Products", configuration);
|
|
242
|
+
const product = readdirSync(products).find((name) => name.endsWith(".app"));
|
|
243
|
+
if (!product)
|
|
244
|
+
throw new Error("Build completed without an app product.");
|
|
245
|
+
const destination = stateFile(root, `products/${mode}/${product}`);
|
|
246
|
+
rmSync(destination, { recursive: true, force: true });
|
|
247
|
+
mkdirSync(path.dirname(destination), { recursive: true });
|
|
248
|
+
cpSync(path.join(products, product), destination, { recursive: true, verbatimSymlinks: true });
|
|
249
|
+
if (mode === "release" &&
|
|
250
|
+
!existsSync(path.join(destination, "Contents/Resources/main.jsbundle")))
|
|
251
|
+
throw new Error("Standalone build is missing its JavaScript bundle.");
|
|
252
|
+
const result = {
|
|
253
|
+
app: destination,
|
|
254
|
+
runtime: runtimeFor(root, chosen.included, mode),
|
|
255
|
+
};
|
|
256
|
+
if (mode === "go" && process.env.SPARK_RELEASE_REVISION) {
|
|
257
|
+
if (!/^[a-f0-9]{40}$/.test(process.env.SPARK_RELEASE_REVISION))
|
|
258
|
+
throw new Error("Invalid release source revision");
|
|
259
|
+
result.runtime.sourceRevision = process.env.SPARK_RELEASE_REVISION;
|
|
260
|
+
}
|
|
261
|
+
if (productionHash)
|
|
262
|
+
result.runtime.fingerprint = digest(result.runtime.fingerprint + productionHash);
|
|
263
|
+
// prebuild can update package/config fields; cache the actual post-generation inputs.
|
|
264
|
+
writeJson(path.join(destination, "Contents/Resources/spark-runtime.json"), result.runtime);
|
|
265
|
+
copyHelpers(root, destination, readAppConfig(root).expo?.extra?.spark?.helpers);
|
|
266
|
+
if (mode === "release") {
|
|
267
|
+
// Hermes is prebuilt, so Xcode's app/Pod compiler settings cannot strip it.
|
|
268
|
+
const hermes = path.join(destination, "Contents/Frameworks/hermes.framework/Versions/Current/hermes");
|
|
269
|
+
if (existsSync(hermes))
|
|
270
|
+
await run(root, ["strip", "-S", "-x", hermes], { capture: true });
|
|
271
|
+
}
|
|
272
|
+
// Local standalone outputs remain ad-hoc. `spark package` signs a separate
|
|
273
|
+
// staging copy with Developer ID for distribution.
|
|
274
|
+
await run(root, ["codesign", "--force", "--deep", "--sign", "-", destination], { capture: true });
|
|
275
|
+
writeJson(resultFile, result);
|
|
276
|
+
console.log(`Built ${destination}`);
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { spawnProcess, which } from "./process.js";
|
|
2
|
+
import { checkExpoDesktopNode } from "./expo-node.js";
|
|
3
|
+
import { appendFileSync, mkdirSync } from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
6
|
+
import { stateFile } from "./project.js";
|
|
7
|
+
const running = new Map();
|
|
8
|
+
const secretFlags = new Set(["--password", "--apple-id-password", "--token", "--secret", "--api-key", "-P"]);
|
|
9
|
+
export function commandRedactor(argv, secrets = []) {
|
|
10
|
+
const values = [...secrets];
|
|
11
|
+
for (let i = 0; i < argv.length; i++) {
|
|
12
|
+
const [flag, ...inline] = argv[i].split("=");
|
|
13
|
+
if (secretFlags.has(flag))
|
|
14
|
+
values.push(inline.length ? inline.join("=") : argv[i + 1] ?? "");
|
|
15
|
+
}
|
|
16
|
+
const unique = [...new Set(values.filter(Boolean))].sort((a, b) => b.length - a.length);
|
|
17
|
+
return { sensitive: unique.length > 0, redact: (value) => unique.reduce((text, secret) => text.replaceAll(secret, "[REDACTED]"), value) };
|
|
18
|
+
}
|
|
19
|
+
export function cancelCommands(root) {
|
|
20
|
+
for (const child of running.get(root) ?? [])
|
|
21
|
+
child.kill();
|
|
22
|
+
}
|
|
23
|
+
export async function run(root, argv, options = {}) {
|
|
24
|
+
const { sensitive, redact } = commandRedactor(argv, options.sensitiveValues);
|
|
25
|
+
mkdirSync(stateFile(root, "logs"), { recursive: true });
|
|
26
|
+
appendFileSync(stateFile(root, "commands.jsonl"), JSON.stringify({
|
|
27
|
+
time: new Date().toISOString(),
|
|
28
|
+
argv: argv.map(redact),
|
|
29
|
+
cwd: options.cwd ?? root,
|
|
30
|
+
}) + "\n");
|
|
31
|
+
const child = spawnProcess(argv, {
|
|
32
|
+
cwd: options.cwd ?? root,
|
|
33
|
+
env: { ...process.env, ...options.env },
|
|
34
|
+
stdout: "pipe",
|
|
35
|
+
stderr: "pipe",
|
|
36
|
+
});
|
|
37
|
+
if (!running.has(root))
|
|
38
|
+
running.set(root, new Set());
|
|
39
|
+
running.get(root).add(child);
|
|
40
|
+
let output = "";
|
|
41
|
+
const log = stateFile(root, `logs/${Date.now()}-${crypto.randomUUID()}-${path.basename(argv[0])}.log`);
|
|
42
|
+
async function consume(stream, target) {
|
|
43
|
+
const decoder = new TextDecoder();
|
|
44
|
+
for await (const chunk of stream) {
|
|
45
|
+
const value = decoder.decode(chunk, { stream: true });
|
|
46
|
+
output += value;
|
|
47
|
+
if (!sensitive) {
|
|
48
|
+
appendFileSync(log, value);
|
|
49
|
+
if (!options.capture)
|
|
50
|
+
target.write(value);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
let code;
|
|
55
|
+
try {
|
|
56
|
+
[, , code] = await Promise.all([
|
|
57
|
+
consume(child.stdout, process.stdout),
|
|
58
|
+
consume(child.stderr, process.stderr),
|
|
59
|
+
child.exited,
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
running.get(root).delete(child);
|
|
64
|
+
if (!running.get(root).size)
|
|
65
|
+
running.delete(root);
|
|
66
|
+
}
|
|
67
|
+
// Buffer sensitive commands so secrets split across output chunks cannot leak.
|
|
68
|
+
if (sensitive) {
|
|
69
|
+
appendFileSync(log, redact(output));
|
|
70
|
+
if (!options.capture)
|
|
71
|
+
process.stdout.write(redact(output));
|
|
72
|
+
}
|
|
73
|
+
if (code)
|
|
74
|
+
throw new Error(`${argv.map(redact).join(" ")} exited ${code}. See ${log}\n${redact(output).slice(-1800)}`);
|
|
75
|
+
return output;
|
|
76
|
+
}
|
|
77
|
+
export function binary(root, name) {
|
|
78
|
+
const require = createRequire(path.join(root, "package.json"));
|
|
79
|
+
const manifest = require.resolve(`${name}/package.json`);
|
|
80
|
+
const pkg = require(manifest);
|
|
81
|
+
const entry = typeof pkg.bin === "string" ? pkg.bin : pkg.bin?.[name];
|
|
82
|
+
if (!entry)
|
|
83
|
+
throw new Error(`${name} does not expose its CLI entry point`);
|
|
84
|
+
return path.resolve(path.dirname(manifest), entry);
|
|
85
|
+
}
|
|
86
|
+
export async function doctor(root) {
|
|
87
|
+
if (process.platform === "win32") {
|
|
88
|
+
for (const tool of ["node", "pwsh.exe", "dotnet.exe"])
|
|
89
|
+
if (!which(tool))
|
|
90
|
+
throw new Error(`Missing ${tool}; see docs/windows-slice.md.`);
|
|
91
|
+
await checkExpoDesktopNode(root);
|
|
92
|
+
const require = createRequire(path.join(root, "package.json"));
|
|
93
|
+
const windows = path.dirname(require.resolve("react-native-windows/package.json"));
|
|
94
|
+
await run(root, ["pwsh.exe", "-File", path.join(windows, "Scripts/rnw-dependencies.ps1")]);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (process.platform !== "darwin" || process.arch !== "arm64")
|
|
98
|
+
throw new Error("The prototype supports Apple Silicon macOS only.");
|
|
99
|
+
for (const tool of ["node", "pod", "xcodebuild"])
|
|
100
|
+
if (!which(tool))
|
|
101
|
+
throw new Error(`Missing ${tool}. Install the macOS native prerequisites described in docs/development.md, then retry the build.`);
|
|
102
|
+
await checkExpoDesktopNode(root);
|
|
103
|
+
await run(root, ["xcodebuild", "-version"], { capture: true });
|
|
104
|
+
await run(root, ["xcrun", "--sdk", "macosx", "--show-sdk-path"], {
|
|
105
|
+
capture: true,
|
|
106
|
+
});
|
|
107
|
+
}
|