@legendapp/spark 0.0.1-next.2 → 0.0.1-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -4
  3. package/ai-codex.ts +1 -0
  4. package/ai.ts +1 -0
  5. package/app-documents.ts +1 -0
  6. package/camera.ts +13 -0
  7. package/config-plugin.d.cts +2 -0
  8. package/contracts.ts +2 -0
  9. package/diagnostics.ts +1 -0
  10. package/expo-config.d.cts +1 -0
  11. package/metro.cjs +4 -1
  12. package/metro.d.cts +12 -0
  13. package/native.cjs +3 -1
  14. package/native.d.cts +6 -0
  15. package/package.json +93 -15
  16. package/patches/camera/react-native-nitro-image.patch +320 -0
  17. package/patches/camera/react-native-nitro-modules.patch +50 -0
  18. package/patches/camera/react-native-vision-camera.patch +2662 -0
  19. package/patches/camera/upstream.json +22 -0
  20. package/patches/dependencies.json +8 -0
  21. package/patches/react-native-enriched-markdown@1.0.2.patch +8684 -0
  22. package/postinstall.cjs +1 -0
  23. package/schema.json +276 -58
  24. package/settings-observable.ts +1 -0
  25. package/settings-window.ts +1 -0
  26. package/shortcuts-commands.ts +1 -0
  27. package/shortcuts-keyboard.ts +3 -0
  28. package/ui-classnames.ts +1 -0
  29. package/ui-glass.ts +1 -0
  30. package/ui-search.ts +1 -0
  31. package/ui-sidebar.ts +1 -0
  32. package/ui-split-view.ts +1 -0
  33. package/ui-swipe.ts +1 -0
  34. package/ui-symbol.ts +1 -0
  35. package/vendor/node_modules/@legendapp/spark-ai/package.json +19 -0
  36. package/vendor/node_modules/@legendapp/spark-ai/src/availability.ts +17 -0
  37. package/vendor/node_modules/@legendapp/spark-ai/src/index.ts +15 -0
  38. package/vendor/node_modules/@legendapp/spark-ai/src/invocations.ts +34 -0
  39. package/vendor/node_modules/@legendapp/spark-ai/src/output.ts +62 -0
  40. package/vendor/node_modules/@legendapp/spark-ai/src/run.ts +12 -0
  41. package/vendor/node_modules/@legendapp/spark-ai/src/types.ts +16 -0
  42. package/vendor/node_modules/@legendapp/spark-audio/macos/RNSparkAudio.h +2 -1
  43. package/vendor/node_modules/@legendapp/spark-audio/macos/RNSparkAudio.mm +126 -24
  44. package/vendor/node_modules/@legendapp/spark-audio/package.json +5 -2
  45. package/vendor/node_modules/@legendapp/spark-audio/src/NativeSparkAudio.ts +5 -1
  46. package/vendor/node_modules/@legendapp/spark-audio/src/desktop.ts +36 -32
  47. package/vendor/node_modules/@legendapp/spark-audio/src/events.ts +11 -0
  48. package/vendor/node_modules/@legendapp/spark-audio/src/hooks.ts +65 -0
  49. package/vendor/node_modules/@legendapp/spark-audio/src/index.web.ts +92 -33
  50. package/vendor/node_modules/@legendapp/spark-audio/src/media-session-unavailable.ts +6 -4
  51. package/vendor/node_modules/@legendapp/spark-audio/src/media-session.ts +52 -19
  52. package/vendor/node_modules/@legendapp/spark-audio/src/media-session.web.ts +18 -10
  53. package/vendor/node_modules/@legendapp/spark-audio/src/media-types.ts +40 -13
  54. package/vendor/node_modules/@legendapp/spark-audio/src/mobile.ts +40 -32
  55. package/vendor/node_modules/@legendapp/spark-audio/src/player.ts +97 -0
  56. package/vendor/node_modules/@legendapp/spark-audio/src/status-listeners.ts +21 -15
  57. package/vendor/node_modules/@legendapp/spark-audio/src/types.ts +9 -4
  58. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.h +67 -20
  59. package/vendor/node_modules/@legendapp/spark-auth-session/package.json +4 -3
  60. package/vendor/node_modules/@legendapp/spark-auth-session/src/core.ts +60 -42
  61. package/vendor/node_modules/@legendapp/spark-auth-session/src/index.ts +28 -12
  62. package/vendor/node_modules/@legendapp/spark-auth-session/src/mobile.ts +97 -41
  63. package/vendor/node_modules/@legendapp/spark-auth-session/src/types.ts +20 -9
  64. package/vendor/node_modules/@legendapp/spark-cli/dist/add-desktop.js +50 -7
  65. package/vendor/node_modules/@legendapp/spark-cli/dist/build-mode.js +1 -1
  66. package/vendor/node_modules/@legendapp/spark-cli/dist/build.js +145 -59
  67. package/vendor/node_modules/@legendapp/spark-cli/dist/cli-arguments.js +61 -0
  68. package/vendor/node_modules/@legendapp/spark-cli/dist/commands.js +10 -4
  69. package/vendor/node_modules/@legendapp/spark-cli/dist/create.js +37 -8
  70. package/vendor/node_modules/@legendapp/spark-cli/dist/credentials.js +86 -25
  71. package/vendor/node_modules/@legendapp/spark-cli/dist/dependency-pins.js +132 -0
  72. package/vendor/node_modules/@legendapp/spark-cli/dist/dev-command.js +13 -4
  73. package/vendor/node_modules/@legendapp/spark-cli/dist/dev.js +13 -10
  74. package/vendor/node_modules/@legendapp/spark-cli/dist/errors.js +100 -0
  75. package/vendor/node_modules/@legendapp/spark-cli/dist/examples.js +2 -2
  76. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-patch.cjs +4 -2
  77. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-metro.cjs +1 -1
  78. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-native.cjs +5 -1
  79. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-node.js +3 -3
  80. package/vendor/node_modules/@legendapp/spark-cli/dist/helpers.js +1 -1
  81. package/vendor/node_modules/@legendapp/spark-cli/dist/index.js +52 -44
  82. package/vendor/node_modules/@legendapp/spark-cli/dist/json.js +16 -0
  83. package/vendor/node_modules/@legendapp/spark-cli/dist/local.js +1 -1
  84. package/vendor/node_modules/@legendapp/spark-cli/dist/metro.cjs +26 -5
  85. package/vendor/node_modules/@legendapp/spark-cli/dist/native-metadata.js +26 -0
  86. package/vendor/node_modules/@legendapp/spark-cli/dist/native-patch-preflight.js +86 -0
  87. package/vendor/node_modules/@legendapp/spark-cli/dist/native-preparation.js +88 -0
  88. package/vendor/node_modules/@legendapp/spark-cli/dist/notary-profiles.js +75 -0
  89. package/vendor/node_modules/@legendapp/spark-cli/dist/package.js +4 -2
  90. package/vendor/node_modules/@legendapp/spark-cli/dist/platform.js +16 -2
  91. package/vendor/node_modules/@legendapp/spark-cli/dist/process.js +7 -0
  92. package/vendor/node_modules/@legendapp/spark-cli/dist/project.js +90 -32
  93. package/vendor/node_modules/@legendapp/spark-cli/dist/release.js +86 -5
  94. package/vendor/node_modules/@legendapp/spark-cli/dist/release.json +23 -18
  95. package/vendor/node_modules/@legendapp/spark-cli/dist/runner-install.js +145 -31
  96. package/vendor/node_modules/@legendapp/spark-cli/dist/signing.js +4 -3
  97. package/vendor/node_modules/@legendapp/spark-cli/dist/universal.cjs +2 -1
  98. package/vendor/node_modules/@legendapp/spark-cli/dist/updates.js +41 -4
  99. package/vendor/node_modules/@legendapp/spark-cli/dist/windows.js +5 -9
  100. package/vendor/node_modules/@legendapp/spark-cli/package.json +7 -6
  101. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/App.tsx +6 -12
  102. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/desktop.config.json +5 -3
  103. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/package.json +12 -10
  104. package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/Git.macos.tsx +2 -2
  105. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.macos.tsx +23 -21
  106. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.windows.tsx +23 -21
  107. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.desktop.ts +11 -8
  108. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.macos.ts +3 -3
  109. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.desktop.tsx +8 -14
  110. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.desktop.tsx +5 -10
  111. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.desktop.ts +11 -8
  112. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.macos.ts +3 -3
  113. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.desktop.ts +2 -2
  114. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.desktop.tsx +2 -2
  115. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.desktop.ts +37 -15
  116. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/session.ts +5 -6
  117. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/window-session.ts +5 -4
  118. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/desktop.config.json +5 -3
  119. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/metro.config.js +1 -1
  120. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/package.json +14 -12
  121. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/react-native.config.js +1 -1
  122. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/package.json +14 -12
  123. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/react-native.config.js +1 -1
  124. package/vendor/node_modules/@legendapp/spark-clipboard/macos/RNDesktopClipboard.mm +10 -16
  125. package/vendor/node_modules/@legendapp/spark-clipboard/package.json +2 -2
  126. package/vendor/node_modules/@legendapp/spark-clipboard/src/NativeDesktopClipboard.ts +1 -1
  127. package/vendor/node_modules/@legendapp/spark-clipboard/src/desktop.ts +55 -31
  128. package/vendor/node_modules/@legendapp/spark-clipboard/src/expo.ts +21 -11
  129. package/vendor/node_modules/@legendapp/spark-clipboard/src/options.ts +8 -0
  130. package/vendor/node_modules/@legendapp/spark-clipboard/src/types.ts +10 -0
  131. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.h +38 -15
  132. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.vcxproj +2 -0
  133. package/vendor/node_modules/@legendapp/spark-codex/RNCodex.podspec +22 -0
  134. package/vendor/node_modules/@legendapp/spark-codex/cpp/HybridCodexAppServer.hpp +23 -0
  135. package/vendor/node_modules/@legendapp/spark-codex/cpp/HybridCodexAppServer.mm +1529 -0
  136. package/vendor/node_modules/@legendapp/spark-codex/nitro.json +21 -0
  137. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/.gitattributes +1 -0
  138. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/ios/RNCodex+autolinking.rb +62 -0
  139. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/ios/RNCodex-Swift-Cxx-Bridge.cpp +17 -0
  140. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/ios/RNCodex-Swift-Cxx-Bridge.hpp +27 -0
  141. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/ios/RNCodex-Swift-Cxx-Umbrella.hpp +38 -0
  142. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/ios/RNCodexAutolinking.mm +35 -0
  143. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/ios/RNCodexAutolinking.swift +16 -0
  144. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/shared/c++/CodexAvailability.hpp +95 -0
  145. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/shared/c++/CodexRunResult.hpp +99 -0
  146. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/shared/c++/HybridCodexAppServerSpec.cpp +24 -0
  147. package/vendor/node_modules/@legendapp/spark-codex/nitrogen/generated/shared/c++/HybridCodexAppServerSpec.hpp +71 -0
  148. package/vendor/node_modules/@legendapp/spark-codex/package.json +35 -0
  149. package/vendor/node_modules/@legendapp/spark-codex/react-native.config.js +11 -0
  150. package/vendor/node_modules/@legendapp/spark-codex/src/Codex.nitro.ts +30 -0
  151. package/vendor/node_modules/@legendapp/spark-codex/src/index.ts +65 -0
  152. package/vendor/node_modules/@legendapp/spark-codex/src/native.ts +6 -0
  153. package/vendor/node_modules/@legendapp/spark-commands/package.json +21 -0
  154. package/vendor/node_modules/@legendapp/spark-commands/src/bindings.ts +90 -0
  155. package/vendor/node_modules/@legendapp/spark-commands/src/index.tsx +400 -0
  156. package/vendor/node_modules/@legendapp/spark-commands/src/router.ts +138 -0
  157. package/vendor/node_modules/@legendapp/spark-commands/src/storage.ts +20 -0
  158. package/vendor/node_modules/@legendapp/spark-context-menu/macos/RNContextMenu.mm +7 -8
  159. package/vendor/node_modules/@legendapp/spark-context-menu/package.json +4 -3
  160. package/vendor/node_modules/@legendapp/spark-context-menu/src/NativeContextMenu.ts +1 -1
  161. package/vendor/node_modules/@legendapp/spark-context-menu/src/index.ts +26 -26
  162. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.h +3 -2
  163. package/vendor/node_modules/@legendapp/spark-desktop-app/RNDesktopApp.podspec +2 -1
  164. package/vendor/node_modules/@legendapp/spark-desktop-app/cpp/SparkBinaryJSI.hpp +89 -0
  165. package/vendor/node_modules/@legendapp/spark-desktop-app/cpp/SparkBinaryWindows.hpp +22 -0
  166. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/RNDesktopApp.mm +13 -7
  167. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkBinaryJSI.h +48 -0
  168. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktop.h +4 -0
  169. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktop.mm +33 -33
  170. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktopError.h +20 -0
  171. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkLifecycle.h +26 -0
  172. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkLifecycle.mm +49 -0
  173. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkQuitCoordinator.h +9 -0
  174. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkQuitCoordinator.mm +70 -0
  175. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkWindow.mm +9 -6
  176. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/recent-documents/RNRecentDocumentController.mm +55 -0
  177. package/vendor/node_modules/@legendapp/spark-desktop-app/package.json +5 -3
  178. package/vendor/node_modules/@legendapp/spark-desktop-app/src/NativeDesktopApp.ts +1 -1
  179. package/vendor/node_modules/@legendapp/spark-desktop-app/src/api.ts +86 -40
  180. package/vendor/node_modules/@legendapp/spark-desktop-app/src/contracts/accelerator.ts +40 -0
  181. package/vendor/node_modules/@legendapp/spark-desktop-app/src/contracts/index.ts +56 -0
  182. package/vendor/node_modules/@legendapp/spark-desktop-app/src/contracts/menu.ts +116 -0
  183. package/vendor/node_modules/@legendapp/spark-desktop-app/src/contracts/native-buffer.ts +22 -0
  184. package/vendor/node_modules/@legendapp/spark-desktop-app/src/contracts/path.ts +24 -0
  185. package/vendor/node_modules/@legendapp/spark-desktop-app/src/events.ts +75 -0
  186. package/vendor/node_modules/@legendapp/spark-desktop-app/src/index.ts +2 -0
  187. package/vendor/node_modules/@legendapp/spark-desktop-app/src/index.windows.ts +2 -0
  188. package/vendor/node_modules/@legendapp/spark-desktop-app/src/open-requests.ts +43 -0
  189. package/vendor/node_modules/@legendapp/spark-desktop-app/src/restoration.ts +11 -0
  190. package/vendor/node_modules/@legendapp/spark-desktop-app/src/transport.ts +10 -0
  191. package/vendor/node_modules/@legendapp/spark-desktop-config/app.plugin.cjs +10 -5
  192. package/vendor/node_modules/@legendapp/spark-desktop-config/app.plugin.d.cts +3 -0
  193. package/vendor/node_modules/@legendapp/spark-desktop-config/autolinking.cjs +35 -0
  194. package/vendor/node_modules/@legendapp/spark-desktop-config/config.cjs +18 -3
  195. package/vendor/node_modules/@legendapp/spark-desktop-config/config.d.cts +89 -9
  196. package/vendor/node_modules/@legendapp/spark-desktop-config/expo.cjs +1 -0
  197. package/vendor/node_modules/@legendapp/spark-desktop-config/expo.d.cts +3 -0
  198. package/vendor/node_modules/@legendapp/spark-desktop-config/identity.cjs +3 -2
  199. package/vendor/node_modules/@legendapp/spark-desktop-config/lifecycle.cjs +20 -0
  200. package/vendor/node_modules/@legendapp/spark-desktop-config/native-patches.cjs +106 -0
  201. package/vendor/node_modules/@legendapp/spark-desktop-config/native-patches.d.cts +1 -0
  202. package/vendor/node_modules/@legendapp/spark-desktop-config/package.json +7 -5
  203. package/vendor/node_modules/@legendapp/spark-desktop-config/schema.json +276 -58
  204. package/vendor/node_modules/@legendapp/spark-desktop-config/updates.cjs +1 -0
  205. package/vendor/node_modules/@legendapp/spark-desktop-config/validation.cjs +35 -0
  206. package/vendor/node_modules/@legendapp/spark-desktop-config/windows.plugin.cjs +2 -1
  207. package/vendor/node_modules/@legendapp/spark-desktop-host/AppDelegate.mm +129 -11
  208. package/vendor/node_modules/@legendapp/spark-desktop-host/package.json +2 -2
  209. package/vendor/node_modules/@legendapp/spark-desktop-host/windows/application.inc +277 -121
  210. package/vendor/node_modules/@legendapp/spark-desktop-links/common/AuthLoopback.h +5 -7
  211. package/vendor/node_modules/@legendapp/spark-desktop-links/macos/RNDesktopLinks.mm +10 -9
  212. package/vendor/node_modules/@legendapp/spark-desktop-links/package.json +2 -2
  213. package/vendor/node_modules/@legendapp/spark-desktop-links/src/NativeDesktopLinks.ts +1 -1
  214. package/vendor/node_modules/@legendapp/spark-desktop-links/src/api.ts +27 -33
  215. package/vendor/node_modules/@legendapp/spark-desktop-links/src/expo.ts +3 -4
  216. package/vendor/node_modules/@legendapp/spark-desktop-links/src/native.ts +9 -0
  217. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.h +22 -22
  218. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/RNDesktopShortcuts.podspec +1 -0
  219. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/RNDesktopShortcuts.mm +1 -1
  220. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/keyboard-manager/RNKeyboardManager.h +9 -0
  221. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/keyboard-manager/RNKeyboardManager.mm +307 -0
  222. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/package.json +8 -5
  223. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/NativeDesktopShortcuts.ts +1 -1
  224. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/api.ts +39 -14
  225. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/keyboard-manager/NativeKeyboardManager.ts +12 -0
  226. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/keyboard-manager/codes.ts +108 -0
  227. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/keyboard-manager/index.ts +99 -0
  228. package/vendor/node_modules/@legendapp/spark-desktop-windows/RNDesktopWindows.podspec +2 -0
  229. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/RNDesktopWindows.mm +229 -103
  230. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/SparkWindowGeometry.h +63 -0
  231. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/window-manager/LegendWindowRegistry.h +20 -0
  232. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/window-manager/LegendWindowRegistry.mm +27 -0
  233. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/window-manager/RNWindowManager.h +12 -0
  234. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/window-manager/RNWindowManager.mm +3169 -0
  235. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/window-manager/RNWindowManagerStartup.mm +31 -0
  236. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/window-manager/SidebarStartupFallbacks.mm +14 -0
  237. package/vendor/node_modules/@legendapp/spark-desktop-windows/package.json +10 -6
  238. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/NativeDesktopWindowManager.ts +1 -1
  239. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/api.ts +146 -70
  240. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/diagnostics.ts +17 -0
  241. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/index.ts +3 -1
  242. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/index.windows.ts +3 -1
  243. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/macos-adapter.ts +53 -0
  244. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/macos.ts +51 -0
  245. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/transport.ts +41 -0
  246. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/types.ts +140 -0
  247. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/validation.ts +162 -0
  248. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/window-manager/NativeWindowManager.ts +28 -0
  249. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/WindowProvider.tsx +20 -0
  250. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/createWindowsNavigator.tsx +78 -0
  251. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/index.ts +6 -0
  252. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/primaryWindowLifecycle.ts +34 -0
  253. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/types.ts +11 -0
  254. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/usePrimaryWindowLifecycle.ts +18 -0
  255. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows/useWindowFocusEffect.ts +17 -0
  256. package/vendor/node_modules/@legendapp/spark-documents/package.json +22 -0
  257. package/vendor/node_modules/@legendapp/spark-documents/src/controller.ts +97 -0
  258. package/vendor/node_modules/@legendapp/spark-documents/src/documentTransition.ts +13 -0
  259. package/vendor/node_modules/@legendapp/spark-documents/src/hooks.ts +139 -0
  260. package/vendor/node_modules/@legendapp/spark-documents/src/index.tsx +50 -0
  261. package/vendor/node_modules/@legendapp/spark-documents/src/reload.ts +39 -0
  262. package/vendor/node_modules/@legendapp/spark-documents/src/requests.ts +15 -0
  263. package/vendor/node_modules/@legendapp/spark-drag-drop/package.json +4 -3
  264. package/vendor/node_modules/@legendapp/spark-drag-drop/src/DesktopDragViewNativeComponent.ts +1 -1
  265. package/vendor/node_modules/@legendapp/spark-drag-drop/src/contracts.ts +73 -18
  266. package/vendor/node_modules/@legendapp/spark-drag-drop/src/index.tsx +58 -15
  267. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.h +14 -8
  268. package/vendor/node_modules/@legendapp/spark-file-dialog/ios/RNFileDialog.mm +34 -121
  269. package/vendor/node_modules/@legendapp/spark-file-dialog/package.json +12 -5
  270. package/vendor/node_modules/@legendapp/spark-file-dialog/src/NativeFileDialog.ts +1 -5
  271. package/vendor/node_modules/@legendapp/spark-file-dialog/src/index.ts +19 -84
  272. package/vendor/node_modules/@legendapp/spark-file-dialog/src/native.ts +12 -0
  273. package/vendor/node_modules/@legendapp/spark-file-dialog/src/options.ts +34 -14
  274. package/vendor/node_modules/@legendapp/spark-file-dialog/src/types.ts +26 -0
  275. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.h +42 -58
  276. package/vendor/node_modules/@legendapp/spark-file-system/RNDesktopFileSystem.podspec +1 -0
  277. package/vendor/node_modules/@legendapp/spark-file-system/macos/RNDesktopFileSystem.mm +32 -21
  278. package/vendor/node_modules/@legendapp/spark-file-system/macos/SparkFileMutations.h +24 -0
  279. package/vendor/node_modules/@legendapp/spark-file-system/macos/SparkFileMutations.mm +215 -0
  280. package/vendor/node_modules/@legendapp/spark-file-system/macos/file-scanner/RNFileScanner.h +9 -0
  281. package/vendor/node_modules/@legendapp/spark-file-system/macos/file-scanner/RNFileScanner.mm +82 -0
  282. package/vendor/node_modules/@legendapp/spark-file-system/macos/file-scanner/RNFileScannerCore.h +47 -0
  283. package/vendor/node_modules/@legendapp/spark-file-system/macos/file-scanner/RNFileScannerCore.mm +306 -0
  284. package/vendor/node_modules/@legendapp/spark-file-system/package.json +8 -6
  285. package/vendor/node_modules/@legendapp/spark-file-system/src/NativeDesktopFileSystem.ts +1 -1
  286. package/vendor/node_modules/@legendapp/spark-file-system/src/file-scanner/NativeFileScanner.ts +11 -0
  287. package/vendor/node_modules/@legendapp/spark-file-system/src/file-scanner/index.ts +93 -0
  288. package/vendor/node_modules/@legendapp/spark-file-system/src/handles.ts +48 -14
  289. package/vendor/node_modules/@legendapp/spark-file-system/src/index.ts +134 -45
  290. package/vendor/node_modules/@legendapp/spark-file-system/src/path.ts +1 -9
  291. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.h +102 -26
  292. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.vcxproj +2 -0
  293. package/vendor/node_modules/@legendapp/spark-global-shortcuts/RNDesktopGlobalShortcuts.podspec +1 -0
  294. package/vendor/node_modules/@legendapp/spark-global-shortcuts/macos/RNDesktopGlobalShortcuts.mm +7 -4
  295. package/vendor/node_modules/@legendapp/spark-global-shortcuts/package.json +4 -3
  296. package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/NativeDesktopGlobalShortcuts.ts +1 -1
  297. package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/index.ts +39 -10
  298. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.h +5 -4
  299. package/vendor/node_modules/@legendapp/spark-message-dialog/macos/RNDesktopMessageDialog.mm +2 -2
  300. package/vendor/node_modules/@legendapp/spark-message-dialog/package.json +2 -2
  301. package/vendor/node_modules/@legendapp/spark-message-dialog/src/NativeDesktopMessageDialog.ts +1 -1
  302. package/vendor/node_modules/@legendapp/spark-message-dialog/src/index.ts +48 -11
  303. package/vendor/node_modules/@legendapp/spark-native-menu/ios/RNNativeMenu.mm +141 -609
  304. package/vendor/node_modules/@legendapp/spark-native-menu/package.json +9 -4
  305. package/vendor/node_modules/@legendapp/spark-native-menu/src/NativeMenu.ts +2 -7
  306. package/vendor/node_modules/@legendapp/spark-native-menu/src/api.ts +76 -121
  307. package/vendor/node_modules/@legendapp/spark-native-menu/src/hooks.ts +97 -0
  308. package/vendor/node_modules/@legendapp/spark-native-menu/src/windows-menus.ts +43 -37
  309. package/vendor/node_modules/@legendapp/spark-notifications/macos/RNDesktopNotifications.mm +75 -30
  310. package/vendor/node_modules/@legendapp/spark-notifications/package.json +2 -2
  311. package/vendor/node_modules/@legendapp/spark-notifications/src/NativeDesktopNotifications.ts +1 -1
  312. package/vendor/node_modules/@legendapp/spark-notifications/src/index.ts +130 -42
  313. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.h +51 -8
  314. package/vendor/node_modules/@legendapp/spark-processes/macos/RNDesktopProcesses.mm +94 -21
  315. package/vendor/node_modules/@legendapp/spark-processes/package.json +4 -3
  316. package/vendor/node_modules/@legendapp/spark-processes/src/NativeDesktopProcesses.ts +1 -1
  317. package/vendor/node_modules/@legendapp/spark-processes/src/index.ts +124 -28
  318. package/vendor/node_modules/@legendapp/spark-processes/src/types.ts +34 -0
  319. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.h +83 -34
  320. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.vcxproj +2 -0
  321. package/vendor/node_modules/@legendapp/spark-secure-storage/macos/RNDesktopSecureStorage.mm +49 -40
  322. package/vendor/node_modules/@legendapp/spark-secure-storage/package.json +2 -2
  323. package/vendor/node_modules/@legendapp/spark-secure-storage/src/NativeDesktopSecureStorage.ts +1 -1
  324. package/vendor/node_modules/@legendapp/spark-secure-storage/src/desktop.ts +16 -14
  325. package/vendor/node_modules/@legendapp/spark-secure-storage/src/expo.ts +0 -1
  326. package/vendor/node_modules/@legendapp/spark-secure-storage/src/options.ts +3 -2
  327. package/vendor/node_modules/@legendapp/spark-secure-storage/src/unavailable.ts +6 -3
  328. package/vendor/node_modules/@legendapp/spark-settings/package.json +10 -3
  329. package/vendor/node_modules/@legendapp/spark-settings/src/fileStorage.ts +11 -0
  330. package/vendor/node_modules/@legendapp/spark-settings/src/index.ts +7 -9
  331. package/vendor/node_modules/@legendapp/spark-settings/src/storage/index.ts +142 -0
  332. package/vendor/node_modules/@legendapp/spark-settings/src/store.ts +63 -21
  333. package/vendor/node_modules/@legendapp/spark-settings-ui/package.json +20 -0
  334. package/vendor/node_modules/@legendapp/spark-settings-ui/src/index.tsx +436 -0
  335. package/vendor/node_modules/@legendapp/spark-settings-ui/src/options.ts +10 -0
  336. package/vendor/node_modules/@legendapp/spark-sqlite/package.json +3 -3
  337. package/vendor/node_modules/@legendapp/spark-sqlite/src/database.ts +182 -0
  338. package/vendor/node_modules/@legendapp/spark-sqlite/src/index.ts +19 -6
  339. package/vendor/node_modules/@legendapp/spark-sqlite/src/types.ts +22 -0
  340. package/vendor/node_modules/@legendapp/spark-system/macos/RNDesktopSystem.mm +36 -11
  341. package/vendor/node_modules/@legendapp/spark-system/package.json +2 -2
  342. package/vendor/node_modules/@legendapp/spark-system/src/NativeDesktopSystem.ts +1 -1
  343. package/vendor/node_modules/@legendapp/spark-system/src/index.ts +89 -32
  344. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.h +8 -4
  345. package/vendor/node_modules/@legendapp/spark-tray/macos/RNDesktopTray.mm +20 -8
  346. package/vendor/node_modules/@legendapp/spark-tray/package.json +2 -2
  347. package/vendor/node_modules/@legendapp/spark-tray/src/NativeDesktopTray.ts +1 -1
  348. package/vendor/node_modules/@legendapp/spark-tray/src/index.ts +91 -34
  349. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.h +45 -15
  350. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkButton.mm +2 -1
  351. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkTextInput.mm +10 -2
  352. package/vendor/node_modules/@legendapp/spark-ui/macos/appkit-split-view/RNSidebarSplitViewComponent.h +15 -0
  353. package/vendor/node_modules/@legendapp/spark-ui/macos/appkit-split-view/RNSidebarSplitViewComponent.mm +1419 -0
  354. package/vendor/node_modules/@legendapp/spark-ui/macos/glass-effect-view/RNGlassEffectView.mm +72 -0
  355. package/vendor/node_modules/@legendapp/spark-ui/macos/native-select/RNNativeSegmentedControl.h +15 -0
  356. package/vendor/node_modules/@legendapp/spark-ui/macos/native-select/RNNativeSegmentedControl.mm +194 -0
  357. package/vendor/node_modules/@legendapp/spark-ui/macos/native-select/RNNativeSelect.h +15 -0
  358. package/vendor/node_modules/@legendapp/spark-ui/macos/native-select/RNNativeSelect.mm +180 -0
  359. package/vendor/node_modules/@legendapp/spark-ui/macos/sf-symbol/RNSFSymbol.h +15 -0
  360. package/vendor/node_modules/@legendapp/spark-ui/macos/sf-symbol/RNSFSymbol.mm +155 -0
  361. package/vendor/node_modules/@legendapp/spark-ui/macos/sidebar/RNSidebar.h +18 -0
  362. package/vendor/node_modules/@legendapp/spark-ui/macos/sidebar/RNSidebar.mm +645 -0
  363. package/vendor/node_modules/@legendapp/spark-ui/macos/swipe-actions/RNSwipeActions.h +10 -0
  364. package/vendor/node_modules/@legendapp/spark-ui/macos/swipe-actions/RNSwipeActions.mm +422 -0
  365. package/vendor/node_modules/@legendapp/spark-ui/macos/text-input-search/RNTextInputSearch.h +15 -0
  366. package/vendor/node_modules/@legendapp/spark-ui/macos/text-input-search/RNTextInputSearch.mm +164 -0
  367. package/vendor/node_modules/@legendapp/spark-ui/package.json +17 -4
  368. package/vendor/node_modules/@legendapp/spark-ui/src/SparkSelectNativeComponent.ts +3 -1
  369. package/vendor/node_modules/@legendapp/spark-ui/src/SparkTextInputNativeComponent.ts +6 -2
  370. package/vendor/node_modules/@legendapp/spark-ui/src/appkit-split-view/SidebarSplitViewNativeComponent.ts +37 -0
  371. package/vendor/node_modules/@legendapp/spark-ui/src/appkit-split-view/index.tsx +86 -0
  372. package/vendor/node_modules/@legendapp/spark-ui/src/availability.ts +10 -0
  373. package/vendor/node_modules/@legendapp/spark-ui/src/classnames/index.ts +8 -0
  374. package/vendor/node_modules/@legendapp/spark-ui/src/control.ts +42 -0
  375. package/vendor/node_modules/@legendapp/spark-ui/src/desktop.tsx +56 -0
  376. package/vendor/node_modules/@legendapp/spark-ui/src/glass-effect-view/index.tsx +15 -0
  377. package/vendor/node_modules/@legendapp/spark-ui/src/index.android.tsx +35 -21
  378. package/vendor/node_modules/@legendapp/spark-ui/src/index.ios.tsx +55 -26
  379. package/vendor/node_modules/@legendapp/spark-ui/src/index.tsx +1 -27
  380. package/vendor/node_modules/@legendapp/spark-ui/src/index.web.tsx +45 -14
  381. package/vendor/node_modules/@legendapp/spark-ui/src/index.windows.tsx +1 -42
  382. package/vendor/node_modules/@legendapp/spark-ui/src/mobile-input.tsx +11 -0
  383. package/vendor/node_modules/@legendapp/spark-ui/src/native-select/NativeSegmentedControlNativeComponent.ts +17 -0
  384. package/vendor/node_modules/@legendapp/spark-ui/src/native-select/NativeSelectNativeComponent.ts +17 -0
  385. package/vendor/node_modules/@legendapp/spark-ui/src/select.ts +5 -3
  386. package/vendor/node_modules/@legendapp/spark-ui/src/sf-symbol/SFSymbolNativeComponent.ts +13 -0
  387. package/vendor/node_modules/@legendapp/spark-ui/src/sf-symbol/index.tsx +27 -0
  388. package/vendor/node_modules/@legendapp/spark-ui/src/sidebar/SidebarItemNativeComponent.ts +25 -0
  389. package/vendor/node_modules/@legendapp/spark-ui/src/sidebar/SidebarNativeComponent.ts +24 -0
  390. package/vendor/node_modules/@legendapp/spark-ui/src/sidebar/index.tsx +104 -0
  391. package/vendor/node_modules/@legendapp/spark-ui/src/specialized.ts +22 -0
  392. package/vendor/node_modules/@legendapp/spark-ui/src/swipe-actions/SwipeActionsNativeComponent.ts +11 -0
  393. package/vendor/node_modules/@legendapp/spark-ui/src/swipe-actions/index.tsx +41 -0
  394. package/vendor/node_modules/@legendapp/spark-ui/src/text-input-search/TextInputSearchNativeComponent.ts +33 -0
  395. package/vendor/node_modules/@legendapp/spark-ui/src/text-input-search/index.tsx +34 -0
  396. package/vendor/node_modules/@legendapp/spark-ui/src/types.ts +30 -19
  397. package/vendor/node_modules/@legendapp/spark-ui/uniwind.ts +3 -1
  398. package/vendor/node_modules/@legendapp/spark-ui/uniwind.web.ts +3 -1
  399. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.h +16 -11
  400. package/vendor/node_modules/@legendapp/spark-updates/macos/RNDesktopUpdates.mm +21 -8
  401. package/vendor/node_modules/@legendapp/spark-updates/package.json +2 -2
  402. package/vendor/node_modules/@legendapp/spark-updates/src/NativeDesktopUpdates.ts +3 -2
  403. package/vendor/node_modules/@legendapp/spark-updates/src/index.ts +71 -15
  404. package/vendor/node_modules/@legendapp/spark-webview/package.json +2 -2
  405. package/vendor/node_modules/@legendapp/spark-webview/src/WebView.tsx +11 -0
  406. package/vendor/node_modules/@legendapp/spark-webview/src/adapter.ts +55 -0
  407. package/vendor/node_modules/@legendapp/spark-webview/src/index.ts +2 -2
  408. package/vendor/node_modules/@legendapp/spark-webview/src/types.ts +32 -0
  409. package/vendor/node_modules/@legendapp/spark-webview/src/view-props.ts +28 -0
  410. package/vendor/node_modules/@legendapp/spark-window-options/index.cjs +51 -14
  411. package/vendor/node_modules/@legendapp/spark-window-options/index.d.ts +21 -8
  412. package/vendor/node_modules/@legendapp/spark-window-options/package.json +1 -1
  413. package/windows-macos.ts +1 -0
  414. package/expo-metro.cjs +0 -1
  415. package/message-dialog.ts +0 -1
  416. package/universal.cjs +0 -1
  417. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/accelerator.ts +0 -22
  418. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows-options.ts +0 -11
  419. package/vendor/node_modules/@legendapp/spark-file-dialog/src/index.windows.ts +0 -15
  420. package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/accelerator.ts +0 -22
  421. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkSelect.h +0 -4
  422. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkSelect.mm +0 -53
@@ -11,47 +11,94 @@
11
11
  "type": "string"
12
12
  },
13
13
  "name": {
14
- "type": "string"
14
+ "type": "string",
15
+ "minLength": 1
15
16
  },
16
17
  "projectId": {
17
- "type": "string"
18
+ "type": "string",
19
+ "minLength": 1
18
20
  },
19
21
  "version": {
20
- "type": "string"
22
+ "type": "string",
23
+ "minLength": 1
21
24
  },
22
25
  "window": {
23
26
  "type": "object",
24
27
  "additionalProperties": false,
25
28
  "properties": {
26
- "width": {
27
- "type": "number",
28
- "minimum": 100,
29
- "maximum": 20000
30
- },
31
- "height": {
32
- "type": "number",
33
- "minimum": 100,
34
- "maximum": 20000
35
- },
36
- "minWidth": {
37
- "type": "number",
38
- "minimum": 100,
39
- "maximum": 20000
40
- },
41
- "minHeight": {
42
- "type": "number",
43
- "minimum": 100,
44
- "maximum": 20000
29
+ "size": {
30
+ "type": "object",
31
+ "required": [
32
+ "width",
33
+ "height"
34
+ ],
35
+ "additionalProperties": false,
36
+ "properties": {
37
+ "width": {
38
+ "type": "number",
39
+ "minimum": 100,
40
+ "maximum": 20000
41
+ },
42
+ "height": {
43
+ "type": "number",
44
+ "minimum": 100,
45
+ "maximum": 20000
46
+ }
47
+ }
45
48
  },
46
- "maxWidth": {
47
- "type": "number",
48
- "minimum": 100,
49
- "maximum": 20000
49
+ "minSize": {
50
+ "anyOf": [
51
+ {
52
+ "type": "object",
53
+ "required": [
54
+ "width",
55
+ "height"
56
+ ],
57
+ "additionalProperties": false,
58
+ "properties": {
59
+ "width": {
60
+ "type": "number",
61
+ "minimum": 100,
62
+ "maximum": 20000
63
+ },
64
+ "height": {
65
+ "type": "number",
66
+ "minimum": 100,
67
+ "maximum": 20000
68
+ }
69
+ }
70
+ },
71
+ {
72
+ "type": "null"
73
+ }
74
+ ]
50
75
  },
51
- "maxHeight": {
52
- "type": "number",
53
- "minimum": 100,
54
- "maximum": 20000
76
+ "maxSize": {
77
+ "anyOf": [
78
+ {
79
+ "type": "object",
80
+ "required": [
81
+ "width",
82
+ "height"
83
+ ],
84
+ "additionalProperties": false,
85
+ "properties": {
86
+ "width": {
87
+ "type": "number",
88
+ "minimum": 100,
89
+ "maximum": 20000
90
+ },
91
+ "height": {
92
+ "type": "number",
93
+ "minimum": 100,
94
+ "maximum": 20000
95
+ }
96
+ }
97
+ },
98
+ {
99
+ "type": "null"
100
+ }
101
+ ]
55
102
  },
56
103
  "resizable": {
57
104
  "type": "boolean"
@@ -71,10 +118,7 @@
71
118
  "hasShadow": {
72
119
  "type": "boolean"
73
120
  },
74
- "trafficLights": {
75
- "type": "boolean"
76
- },
77
- "restoreFrame": {
121
+ "restoreBounds": {
78
122
  "type": "boolean"
79
123
  },
80
124
  "titleBarStyle": {
@@ -92,21 +136,36 @@
92
136
  "dark"
93
137
  ]
94
138
  },
95
- "material": {
96
- "enum": [
97
- "none",
98
- "sidebar",
99
- "windowBackground",
100
- "hudWindow",
101
- "popover"
102
- ]
103
- },
104
139
  "title": {
105
140
  "type": "string"
106
141
  },
107
142
  "backgroundColor": {
108
143
  "type": "string",
109
144
  "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$"
145
+ },
146
+ "macos": {
147
+ "type": "object",
148
+ "additionalProperties": false,
149
+ "properties": {
150
+ "backgroundMaterial": {
151
+ "enum": [
152
+ "none",
153
+ "sidebar",
154
+ "windowBackground",
155
+ "hudWindow",
156
+ "popover"
157
+ ]
158
+ },
159
+ "titleBar": {
160
+ "type": "object",
161
+ "additionalProperties": false,
162
+ "properties": {
163
+ "trafficLights": {
164
+ "type": "boolean"
165
+ }
166
+ }
167
+ }
168
+ }
110
169
  }
111
170
  }
112
171
  },
@@ -117,7 +176,8 @@
117
176
  ],
118
177
  "properties": {
119
178
  "bundleIdentifier": {
120
- "type": "string"
179
+ "type": "string",
180
+ "pattern": "^[A-Za-z0-9-]+(?:\\.[A-Za-z0-9-]+)+$"
121
181
  },
122
182
  "buildNumber": {
123
183
  "type": "string"
@@ -127,8 +187,92 @@
127
187
  },
128
188
  "infoPlist": {
129
189
  "type": "object"
190
+ },
191
+ "lifecycle": {
192
+ "type": "object",
193
+ "additionalProperties": false,
194
+ "properties": {
195
+ "plugins": {
196
+ "type": "array",
197
+ "uniqueItems": true,
198
+ "items": {
199
+ "type": "string",
200
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
201
+ }
202
+ },
203
+ "mainWindow": {
204
+ "type": "object",
205
+ "additionalProperties": false,
206
+ "properties": {
207
+ "hidden": {
208
+ "type": "boolean"
209
+ },
210
+ "glass": {
211
+ "type": "boolean"
212
+ },
213
+ "autosaveName": {
214
+ "type": "string",
215
+ "minLength": 1
216
+ },
217
+ "closeBehavior": {
218
+ "enum": [
219
+ "close",
220
+ "hide",
221
+ "request"
222
+ ]
223
+ },
224
+ "reopenBehavior": {
225
+ "enum": [
226
+ "default",
227
+ "manual",
228
+ "visibleWindows"
229
+ ]
230
+ },
231
+ "toolbarStyle": {
232
+ "enum": [
233
+ "unified",
234
+ "expanded"
235
+ ]
236
+ },
237
+ "titlebarSeparatorStyle": {
238
+ "enum": [
239
+ "automatic",
240
+ "none",
241
+ "line",
242
+ "shadow"
243
+ ]
244
+ },
245
+ "backgroundColors": {
246
+ "type": "object",
247
+ "required": [
248
+ "light",
249
+ "dark"
250
+ ],
251
+ "additionalProperties": false,
252
+ "properties": {
253
+ "light": {
254
+ "type": "string",
255
+ "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$"
256
+ },
257
+ "dark": {
258
+ "type": "string",
259
+ "pattern": "^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$"
260
+ }
261
+ }
262
+ }
263
+ }
264
+ },
265
+ "appearance": {
266
+ "enum": [
267
+ "system",
268
+ "light",
269
+ "dark"
270
+ ]
271
+ }
272
+ }
130
273
  }
131
- }
274
+ },
275
+ "additionalProperties": false
132
276
  },
133
277
  "scheme": {
134
278
  "oneOf": [
@@ -144,7 +288,35 @@
144
288
  ]
145
289
  },
146
290
  "documentTypes": {
147
- "type": "array"
291
+ "type": "array",
292
+ "items": {
293
+ "type": "object",
294
+ "required": [
295
+ "name",
296
+ "contentTypes"
297
+ ],
298
+ "additionalProperties": false,
299
+ "properties": {
300
+ "name": {
301
+ "type": "string",
302
+ "minLength": 1
303
+ },
304
+ "contentTypes": {
305
+ "type": "array",
306
+ "minItems": 1,
307
+ "items": {
308
+ "type": "string",
309
+ "pattern": "\\."
310
+ }
311
+ },
312
+ "role": {
313
+ "enum": [
314
+ "Editor",
315
+ "Viewer"
316
+ ]
317
+ }
318
+ }
319
+ }
148
320
  },
149
321
  "menuBarOnly": {
150
322
  "type": "boolean"
@@ -160,9 +332,11 @@
160
332
  "type": "string"
161
333
  },
162
334
  "publicKey": {
163
- "type": "string"
335
+ "type": "string",
336
+ "pattern": "^[A-Za-z0-9+/]{43}=$"
164
337
  }
165
- }
338
+ },
339
+ "additionalProperties": false
166
340
  },
167
341
  "include": {
168
342
  "type": "array",
@@ -212,7 +386,30 @@
212
386
  }
213
387
  },
214
388
  "signing": {
215
- "type": "object"
389
+ "type": "object",
390
+ "additionalProperties": false,
391
+ "properties": {
392
+ "macos": {
393
+ "type": "object",
394
+ "additionalProperties": false,
395
+ "properties": {
396
+ "identity": {
397
+ "type": "string",
398
+ "minLength": 1
399
+ },
400
+ "teamId": {
401
+ "type": "string",
402
+ "minLength": 1
403
+ },
404
+ "entitlementsByPath": {
405
+ "type": "object",
406
+ "additionalProperties": {
407
+ "type": "object"
408
+ }
409
+ }
410
+ }
411
+ }
412
+ }
216
413
  },
217
414
  "expo": {
218
415
  "type": "object"
@@ -260,19 +457,40 @@
260
457
  "allOf": [
261
458
  {
262
459
  "if": {
263
- "properties": {
264
- "platforms": {
265
- "const": [
266
- "windows"
460
+ "allOf": [
461
+ {
462
+ "not": {
463
+ "required": [
464
+ "extends"
465
+ ]
466
+ }
467
+ },
468
+ {
469
+ "anyOf": [
470
+ {
471
+ "not": {
472
+ "required": [
473
+ "platforms"
474
+ ]
475
+ }
476
+ },
477
+ {
478
+ "properties": {
479
+ "platforms": {
480
+ "contains": {
481
+ "const": "macos"
482
+ }
483
+ }
484
+ },
485
+ "required": [
486
+ "platforms"
487
+ ]
488
+ }
267
489
  ]
268
490
  }
269
- },
270
- "required": [
271
- "platforms"
272
491
  ]
273
492
  },
274
- "then": {},
275
- "else": {
493
+ "then": {
276
494
  "required": [
277
495
  "macos"
278
496
  ]
@@ -2,6 +2,7 @@ function updateConfiguration(expo) {
2
2
  const updates = expo.extra?.spark?.updates;
3
3
  if (updates === undefined) return undefined;
4
4
  if (!updates || typeof updates !== "object" || Array.isArray(updates)) throw new Error("extra.spark.updates must be an object");
5
+ for (const key of Object.keys(updates)) if (!["feedURL", "publicKey"].includes(key)) throw new Error(`Unknown updates field: ${key}`);
5
6
  let url;
6
7
  try { url = new URL(updates.feedURL); } catch { throw new Error("Updates need an HTTPS feedURL"); }
7
8
  if (url.protocol !== "https:" || !url.hostname || url.username || url.password || url.search || url.hash || !url.pathname.endsWith(".xml")) throw new Error("Update feedURL must be an HTTPS .xml URL without credentials, query or fragment");
@@ -0,0 +1,35 @@
1
+ const platforms = ["macos", "windows", "ios", "android", "web"];
2
+ function object(value, name, keys) {
3
+ if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error(`${name} must be an object`);
4
+ if (keys) for (const key of Object.keys(value)) if (!keys.includes(key)) throw new Error(`Unknown ${name} field: ${key}`);
5
+ }
6
+ function validatePlatforms(value) {
7
+ if (!Array.isArray(value) || !value.length || new Set(value).size !== value.length || value.some(p => !platforms.includes(p))) throw new Error("platforms must list unique supported targets: macos, windows, ios, android, web");
8
+ return value;
9
+ }
10
+ function validateOwned(value) {
11
+ if (value.macos !== undefined) {
12
+ object(value.macos, "macos", ["bundleIdentifier", "buildNumber", "entitlements", "infoPlist", "lifecycle"]);
13
+ if (typeof value.macos.bundleIdentifier !== "string" || !/^[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+$/.test(value.macos.bundleIdentifier)) throw new Error("macos.bundleIdentifier must be a reverse-DNS identifier");
14
+ if (value.macos.buildNumber !== undefined && typeof value.macos.buildNumber !== "string") throw new Error("macos.buildNumber must be a string");
15
+ for (const key of ["entitlements", "infoPlist"]) if (value.macos[key] !== undefined) object(value.macos[key], `macos.${key}`);
16
+ require("./lifecycle.cjs").validateLifecycle(value.macos.lifecycle);
17
+ }
18
+ if (value.documentTypes !== undefined) {
19
+ if (!Array.isArray(value.documentTypes)) throw new Error("documentTypes must be an array");
20
+ for (const document of value.documentTypes) object(document, "documentType", ["name", "contentTypes", "role"]);
21
+ }
22
+ if (value.signing !== undefined) {
23
+ object(value.signing, "signing", ["macos"]);
24
+ const macos = value.signing.macos;
25
+ if (macos !== undefined) {
26
+ object(macos, "signing.macos", ["identity", "teamId", "entitlementsByPath"]);
27
+ for (const key of ["identity", "teamId"]) if (macos[key] !== undefined && (typeof macos[key] !== "string" || !macos[key].trim())) throw new Error(`signing.macos.${key} must be a nonempty string`);
28
+ if (macos.entitlementsByPath !== undefined) {
29
+ object(macos.entitlementsByPath, "entitlementsByPath");
30
+ for (const [path, entitlements] of Object.entries(macos.entitlementsByPath)) object(entitlements, `entitlementsByPath.${path}`);
31
+ }
32
+ }
33
+ }
34
+ }
35
+ module.exports = { validateOwned, validatePlatforms };
@@ -1,3 +1,4 @@
1
+ const { nativeWindowOptions } = require("@legendapp/spark-window-options");
1
2
  const { statePath } = require("./config.cjs");
2
3
  const fs = require('node:fs');
3
4
  const path = require('node:path');
@@ -34,7 +35,7 @@ module.exports = config => {
34
35
  const { expo } = require('./config.cjs').readConfig(root);
35
36
  const defaults = metadata.mode === 'dev' ? {
36
37
  SPARK_PROJECT_ID: expo.extra.spark.projectId, SPARK_PROJECT_NAME: expo.name,
37
- SPARK_PROJECT_VERSION: expo.version, SPARK_WINDOW_CONFIG: JSON.stringify(expo.extra.spark.window ?? {}),
38
+ SPARK_PROJECT_VERSION: expo.version, SPARK_WINDOW_CONFIG: JSON.stringify(nativeWindowOptions(expo.extra.spark.window ?? {})),
38
39
  SPARK_SESSION_FILE: statePath(root, 'windows-connection.json', 'windows'),
39
40
  } : {};
40
41
  mod.modResults.contents = patchHost(mod.modResults.contents, fs.readFileSync(require.resolve('@legendapp/spark-desktop-host/windows/runtime.inc'), 'utf8') + '\n' + fs.readFileSync(require.resolve('@legendapp/spark-desktop-host/windows/application.inc'), 'utf8') + '\n' + fs.readFileSync(require.resolve('@legendapp/spark-desktop-host/windows/notifications.inc'), 'utf8') + (Object.hasOwn(metadata.modules ?? {}, '@react-native-runtimes/core') ? '\n' + fs.readFileSync(require.resolve('@legendapp/spark-desktop-host/windows/runtimes.inc'), 'utf8') : ''), metadata, defaults);
@@ -1,6 +1,9 @@
1
1
  #import "AppDelegate.h"
2
2
  #import <RNDesktopApp/SparkDesktop.h>
3
3
  #import <React/RCTBundleURLProvider.h>
4
+ #import <React/RCTUIKit.h>
5
+ #import <QuartzCore/QuartzCore.h>
6
+ #include <cxxreact/ReactMarker.h>
4
7
  #import <React-RCTAppDelegate/RCTRootViewFactory.h>
5
8
  #import <ReactAppDependencyProvider/RCTAppDependencyProvider.h>
6
9
 
@@ -9,14 +12,51 @@
9
12
  #import <React/RCTReloadCommand.h>
10
13
  #endif
11
14
 
15
+ @interface AppDelegate () <NSWindowDelegate>
16
+ @property (nonatomic, assign) BOOL sparkPrimaryInstance;
17
+ @property (nonatomic, weak) NSWindow *sparkLastFocusedWindow;
18
+ @property (nonatomic, strong) NSColor *sparkStartupColor;
19
+ @end
20
+
12
21
  @implementation AppDelegate
22
+ - (void)applicationWillFinishLaunching:(NSNotification *)notification {
23
+ self.sparkPrimaryInstance = SparkAcquireInstance();
24
+ if (!self.sparkPrimaryInstance) { [NSApp terminate:nil]; return; }
25
+ facebook::react::ReactMarker::logMarkerDone(facebook::react::ReactMarker::APP_STARTUP_START, CACurrentMediaTime() * 1000);
26
+ [self sparkPrepareMainMenu];
27
+ SparkPrepareApplication();
28
+ [self sparkPrepareMainWindow];
29
+ [NSNotificationCenter.defaultCenter addObserver:self selector:@selector(sparkWindowDidBecomeKey:)
30
+ name:NSWindowDidBecomeKeyNotification object:nil];
31
+ }
32
+ - (void)sparkPrepareMainMenu {
33
+ NSString *name = SparkContext()[@"name"];
34
+ NSMenuItem *applicationItem = NSApp.mainMenu.itemArray.firstObject;
35
+ applicationItem.title = name;
36
+ NSMenu *menu = applicationItem.submenu;
37
+ menu.title = name;
38
+ for (NSMenuItem *item in menu.itemArray) {
39
+ if (item.isAlternate) continue;
40
+ if (item.action == @selector(orderFrontStandardAboutPanel:)) item.title = [@"About " stringByAppendingString:name];
41
+ else if (item.action == @selector(hide:)) item.title = [@"Hide " stringByAppendingString:name];
42
+ else if (item.action == @selector(terminate:)) item.title = [@"Quit " stringByAppendingString:name];
43
+ }
44
+ for (NSMenuItem *item in NSApp.helpMenu.itemArray)
45
+ if (item.action == @selector(showHelp:)) item.title = [name stringByAppendingString:@" Help"];
46
+ }
47
+ - (void)sparkWindowDidBecomeKey:(NSNotification *)note {
48
+ NSWindow *window = note.object;
49
+ if (window != self.window && ![window isKindOfClass:NSPanel.class] && !window.sheet) self.sparkLastFocusedWindow = window;
50
+ }
51
+ - (void)dealloc { [NSNotificationCenter.defaultCenter removeObserver:self]; }
52
+
13
53
  - (void)applicationDidFinishLaunching:(NSNotification *)notification
14
54
  {
15
- if (!SparkAcquireInstance()) { [NSApp terminate:nil]; return; }
55
+ if (!self.sparkPrimaryInstance) return;
16
56
  SparkMarkLaunchComplete();
17
57
  self.moduleName = @"main";
18
58
  self.dependencyProvider = [RCTAppDependencyProvider new];
19
- self.initialProps = SparkInitialProps(@"main", @{});
59
+ self.initialProps = SparkInitialProps(@"main", self.initialProps ?: @{});
20
60
  #if __has_include(<NativeComposeThreadedRuntime/ThreadedRuntime.h>)
21
61
  [ThreadedRuntime configureWithReactNativeDelegate:self launchOptions:@{}];
22
62
  // Fired before React Native enumerates reload listeners, so workers are
@@ -24,34 +64,112 @@
24
64
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sparkResetRuntimes:)
25
65
  name:RCTTriggerReloadCommandNotification object:nil];
26
66
  #endif
67
+ facebook::react::ReactMarker::logMarkerDone(facebook::react::ReactMarker::INIT_REACT_RUNTIME_START, CACurrentMediaTime() * 1000);
27
68
  [super applicationDidFinishLaunching:notification];
28
69
  }
29
70
  #if __has_include(<NativeComposeThreadedRuntime/ThreadedRuntime.h>)
30
71
  - (void)sparkResetRuntimes:(NSNotification *)notification { [ThreadedRuntime destroyAllRuntimes]; }
31
- - (void)applicationWillTerminate:(NSNotification *)notification { [ThreadedRuntime destroyAllRuntimes]; }
32
72
  #endif
33
- - (void)loadReactNativeWindow:(NSDictionary *)launchOptions {
34
- NSView *root = [self.rootViewFactory viewWithModuleName:self.moduleName initialProperties:self.initialProps launchOptions:launchOptions];
73
+ - (void)applicationWillTerminate:(NSNotification *)notification {
74
+ SparkEmit(@{ @"type": @"willQuit" });
75
+ #if __has_include(<NativeComposeThreadedRuntime/ThreadedRuntime.h>)
76
+ [ThreadedRuntime destroyAllRuntimes];
77
+ #endif
78
+ }
79
+ - (void)sparkPrepareMainWindow {
80
+ if (self.window) return;
81
+ NSDictionary *policy = SparkLifecycleConfiguration()[@"mainWindow"] ?: @{};
82
+ NSDictionary *options = SparkWindowConfiguration();
35
83
  self.window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1000, 700)
36
84
  styleMask:NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskResizable | NSWindowStyleMaskMiniaturizable
37
85
  backing:NSBackingStoreBuffered defer:NO];
38
86
  self.window.releasedWhenClosed = NO;
39
87
  self.window.identifier = @"spark.main";
40
88
  self.window.title = SparkContext()[@"name"];
41
- root.frame = NSMakeRect(0, 0, 1000, 700);
42
- self.window.contentView = SparkWindowContent(root);
43
- NSDictionary *options = SparkWindowConfiguration();
89
+ self.window.delegate = self;
44
90
  SparkApplyWindowOptions(self.window, options);
45
91
  SparkRestoreWindow(self.window, @"main", options);
46
- if (![[NSBundle.mainBundle objectForInfoDictionaryKey:@"SparkMenuBarOnly"] boolValue]) [self.window makeKeyAndOrderFront:nil];
92
+ NSString *autosave = policy[@"autosaveName"];
93
+ if (autosave.length) { [self.window setFrameAutosaveName:autosave]; [self.window setFrameUsingName:autosave]; }
94
+ if (policy[@"toolbarStyle"]) {
95
+ self.window.toolbar = [[NSToolbar alloc] initWithIdentifier:@"main"];
96
+ self.window.toolbar.displayMode = NSToolbarDisplayModeIconOnly;
97
+ self.window.toolbar.showsBaselineSeparator = NO;
98
+ self.window.toolbarStyle = [policy[@"toolbarStyle"] isEqual:@"unified"] ? NSWindowToolbarStyleUnified : NSWindowToolbarStyleExpanded;
99
+ }
100
+ NSDictionary *separators = @{ @"automatic": @(NSTitlebarSeparatorStyleAutomatic), @"none": @(NSTitlebarSeparatorStyleNone), @"line": @(NSTitlebarSeparatorStyleLine), @"shadow": @(NSTitlebarSeparatorStyleShadow) };
101
+ if (policy[@"titlebarSeparatorStyle"]) self.window.titlebarSeparatorStyle = (NSTitlebarSeparatorStyle)[separators[policy[@"titlebarSeparatorStyle"]] integerValue];
102
+ NSDictionary *colors = policy[@"backgroundColors"];
103
+ if (colors && ![options[@"transparent"] boolValue]) {
104
+ NSString *appearance = options[@"appearance"];
105
+ BOOL dark = [appearance isEqual:@"dark"] || (![appearance isEqual:@"light"] && [[[NSUserDefaults.standardUserDefaults stringForKey:@"AppleInterfaceStyle"] lowercaseString] isEqualToString:@"dark"]);
106
+ SparkApplyWindowOptions(self.window, @{ @"backgroundColor": colors[dark ? @"dark" : @"light"] });
107
+ }
108
+ self.sparkStartupColor = self.window.backgroundColor;
109
+ NSView *placeholder = [[NSView alloc] initWithFrame:self.window.contentView.bounds];
110
+ placeholder.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
111
+ placeholder.wantsLayer = YES; placeholder.layer.backgroundColor = self.sparkStartupColor.CGColor;
112
+ self.window.contentView = placeholder;
113
+ SparkPrepareMainWindow(self.window);
114
+ if (![policy[@"hidden"] boolValue] && ![[NSBundle.mainBundle objectForInfoDictionaryKey:@"SparkMenuBarOnly"] boolValue]) {
115
+ [self.window makeKeyAndOrderFront:nil]; [self.window displayIfNeeded]; SparkRecordMainWindowShown();
116
+ }
117
+ }
118
+ - (void)loadReactNativeWindow:(NSDictionary *)launchOptions {
119
+ [self sparkPrepareMainWindow];
120
+ NSView *root = [self.rootViewFactory viewWithModuleName:self.moduleName initialProperties:self.initialProps launchOptions:launchOptions];
121
+ root.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
122
+ NSDictionary *options = SparkWindowConfiguration();
123
+ if ([options[@"transparent"] boolValue] || options[@"backgroundColor"] || SparkLifecycleConfiguration()[@"mainWindow"][@"backgroundColors"])
124
+ ((RCTUIView *)root).backgroundColor = self.sparkStartupColor;
125
+ __weak NSWindow *weakWindow = self.window;
126
+ SparkAttachMainRootView(root, self.window, ^{
127
+ NSWindow *window = weakWindow;
128
+ if (!window) return;
129
+ root.frame = window.contentView.bounds;
130
+ if ([SparkLifecycleConfiguration()[@"mainWindow"][@"glass"] boolValue]) {
131
+ if (@available(macOS 26.0, *)) {
132
+ NSGlassEffectView *glass = [[NSGlassEffectView alloc] initWithFrame:root.frame];
133
+ glass.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
134
+ glass.contentView = root; window.contentView = glass;
135
+ } else window.contentView = root;
136
+ } else {
137
+ window.contentView = SparkWindowContent(root);
138
+ // An empty patch styles the newly attached content without overwriting
139
+ // restored window dimensions with the configured initial width/height.
140
+ SparkApplyWindowOptions(window, @{});
141
+ }
142
+ });
143
+ }
144
+ - (BOOL)windowShouldClose:(NSWindow *)window {
145
+ NSString *behavior = SparkLifecycleConfiguration()[@"mainWindow"][@"closeBehavior"];
146
+ if ([behavior isEqual:@"hide"]) { [window orderOut:nil]; return NO; }
147
+ if ([behavior isEqual:@"request"]) { SparkEmit(@{ @"type": @"closeRequested", @"windowId": @"main" }); return NO; }
148
+ return YES;
47
149
  }
48
150
  - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender { return SparkShouldQuit(); }
49
151
  - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { return NO; }
50
152
  - (void)applicationDidBecomeActive:(NSNotification *)note { SparkEmit(@{ @"type": @"activate" }); }
51
153
  - (void)applicationDidResignActive:(NSNotification *)note { SparkEmit(@{ @"type": @"deactivate" }); }
52
154
  - (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)visible {
53
- if (!visible) for (NSWindow *window in NSApp.windows) if ([window.identifier isEqual:@"spark.main"]) [window makeKeyAndOrderFront:nil];
54
- SparkEmit(@{ @"type": @"reopen" }); return YES;
155
+ NSDictionary *policy = SparkLifecycleConfiguration()[@"mainWindow"] ?: @{};
156
+ BOOL manual = [policy[@"reopenBehavior"] isEqual:@"manual"];
157
+ BOOL hidden = [policy[@"hidden"] boolValue] || [[NSBundle.mainBundle objectForInfoDictionaryKey:@"SparkMenuBarOnly"] boolValue];
158
+ BOOL hadVisibleMainWindow = self.window.isVisible;
159
+ if (!manual) {
160
+ BOOL visibleOnly = hidden || [policy[@"reopenBehavior"] isEqual:@"visibleWindows"];
161
+ NSWindow *target = visibleOnly ? nil : self.window;
162
+ if (visibleOnly) {
163
+ if (self.sparkLastFocusedWindow.isVisible) target = self.sparkLastFocusedWindow;
164
+ if (!target) for (NSWindow *candidate in NSApp.orderedWindows)
165
+ if ((!hidden || candidate != self.window) && candidate.isVisible && !candidate.sheet && ![candidate isKindOfClass:NSPanel.class]) { target = candidate; break; }
166
+ }
167
+ if (target.isMiniaturized) [target deminiaturize:nil];
168
+ [target makeKeyAndOrderFront:nil];
169
+ }
170
+ SparkEmit(@{ @"type": @"reopen", @"hasVisibleWindows": @(visible), @"mainWindowWasVisible": @(hadVisibleMainWindow) });
171
+ // We have handled the default action; AppKit must not unhide a hidden host.
172
+ return NO;
55
173
  }
56
174
  - (void)application:(NSApplication *)sender openURLs:(NSArray<NSURL *> *)urls { SparkOpenURLs(urls); }
57
175
  - (void)application:(NSApplication *)sender openFiles:(NSArray<NSString *> *)files {
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@legendapp/spark-desktop-host",
3
- "version": "0.0.1-next.2",
3
+ "version": "0.0.1-next.4",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "AppDelegate.mm",
7
7
  "windows"
8
8
  ],
9
9
  "dependencies": {
10
- "@legendapp/spark-desktop-app": "0.0.1-next.2"
10
+ "@legendapp/spark-desktop-app": "0.0.1-next.4"
11
11
  },
12
12
  "private": true
13
13
  }