@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.
Files changed (669) hide show
  1. package/README.md +21 -0
  2. package/app.ts +1 -0
  3. package/audio.ts +1 -0
  4. package/auth-session.ts +1 -0
  5. package/bin/spark.cjs +5 -0
  6. package/clipboard.ts +1 -0
  7. package/config-plugin.cjs +1 -0
  8. package/config.cjs +1 -0
  9. package/config.d.cts +1 -0
  10. package/context-menu.ts +1 -0
  11. package/dialogs.ts +2 -0
  12. package/drag-drop.ts +1 -0
  13. package/expo-config.cjs +1 -0
  14. package/expo-metro.cjs +1 -0
  15. package/files.ts +1 -0
  16. package/global-shortcuts.ts +1 -0
  17. package/init-template.cjs +2 -0
  18. package/links.ts +1 -0
  19. package/menus.ts +1 -0
  20. package/message-dialog.ts +1 -0
  21. package/metro-gate.cjs +1 -0
  22. package/metro.cjs +1 -0
  23. package/native.cjs +1 -0
  24. package/notifications.ts +1 -0
  25. package/package.json +161 -0
  26. package/processes.ts +1 -0
  27. package/runtime-entry.cjs +1 -0
  28. package/schema.json +305 -0
  29. package/secure-storage.ts +1 -0
  30. package/settings.ts +1 -0
  31. package/shortcuts.ts +1 -0
  32. package/sqlite.ts +1 -0
  33. package/system.ts +1 -0
  34. package/tray.ts +1 -0
  35. package/ui-uniwind.ts +1 -0
  36. package/ui.ts +1 -0
  37. package/universal.cjs +1 -0
  38. package/updates.ts +1 -0
  39. package/vendor/node_modules/@legendapp/spark-audio/RNSparkAudio.podspec +18 -0
  40. package/vendor/node_modules/@legendapp/spark-audio/macos/RNSparkAudio.h +4 -0
  41. package/vendor/node_modules/@legendapp/spark-audio/macos/RNSparkAudio.mm +154 -0
  42. package/vendor/node_modules/@legendapp/spark-audio/package.json +49 -0
  43. package/vendor/node_modules/@legendapp/spark-audio/src/NativeSparkAudio.ts +3 -0
  44. package/vendor/node_modules/@legendapp/spark-audio/src/desktop.ts +39 -0
  45. package/vendor/node_modules/@legendapp/spark-audio/src/index.android.ts +1 -0
  46. package/vendor/node_modules/@legendapp/spark-audio/src/index.ios.ts +1 -0
  47. package/vendor/node_modules/@legendapp/spark-audio/src/index.ts +1 -0
  48. package/vendor/node_modules/@legendapp/spark-audio/src/index.web.ts +42 -0
  49. package/vendor/node_modules/@legendapp/spark-audio/src/index.windows.ts +1 -0
  50. package/vendor/node_modules/@legendapp/spark-audio/src/media-session-unavailable.ts +5 -0
  51. package/vendor/node_modules/@legendapp/spark-audio/src/media-session.ts +25 -0
  52. package/vendor/node_modules/@legendapp/spark-audio/src/media-session.web.ts +35 -0
  53. package/vendor/node_modules/@legendapp/spark-audio/src/media-types.ts +32 -0
  54. package/vendor/node_modules/@legendapp/spark-audio/src/mobile.ts +38 -0
  55. package/vendor/node_modules/@legendapp/spark-audio/src/status-listeners.ts +22 -0
  56. package/vendor/node_modules/@legendapp/spark-audio/src/types.ts +21 -0
  57. package/vendor/node_modules/@legendapp/spark-audio/windows/ExperimentalFeatures.props +33 -0
  58. package/vendor/node_modules/@legendapp/spark-audio/windows/LICENSE +25 -0
  59. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/ReactPackageProvider.cpp +20 -0
  60. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/ReactPackageProvider.h +24 -0
  61. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/ReactPackageProvider.idl +9 -0
  62. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.cpp +2 -0
  63. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.def +3 -0
  64. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.h +146 -0
  65. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.rc +0 -0
  66. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.vcxproj +143 -0
  67. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/SparkAudio.vcxproj.filters +44 -0
  68. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/pch.cpp +1 -0
  69. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/pch.h +30 -0
  70. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/resource.h +5 -0
  71. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio/targetver.h +8 -0
  72. package/vendor/node_modules/@legendapp/spark-audio/windows/SparkAudio.sln +43 -0
  73. package/vendor/node_modules/@legendapp/spark-auth-session/package.json +41 -0
  74. package/vendor/node_modules/@legendapp/spark-auth-session/src/core.ts +68 -0
  75. package/vendor/node_modules/@legendapp/spark-auth-session/src/index.android.ts +1 -0
  76. package/vendor/node_modules/@legendapp/spark-auth-session/src/index.ios.ts +1 -0
  77. package/vendor/node_modules/@legendapp/spark-auth-session/src/index.ts +22 -0
  78. package/vendor/node_modules/@legendapp/spark-auth-session/src/index.web.ts +1 -0
  79. package/vendor/node_modules/@legendapp/spark-auth-session/src/mobile.ts +52 -0
  80. package/vendor/node_modules/@legendapp/spark-auth-session/src/types.ts +38 -0
  81. package/vendor/node_modules/@legendapp/spark-cli/dist/add-desktop.js +164 -0
  82. package/vendor/node_modules/@legendapp/spark-cli/dist/build-mode.js +7 -0
  83. package/vendor/node_modules/@legendapp/spark-cli/dist/build.js +278 -0
  84. package/vendor/node_modules/@legendapp/spark-cli/dist/commands.js +107 -0
  85. package/vendor/node_modules/@legendapp/spark-cli/dist/create.js +99 -0
  86. package/vendor/node_modules/@legendapp/spark-cli/dist/credentials.js +69 -0
  87. package/vendor/node_modules/@legendapp/spark-cli/dist/dev-command.js +81 -0
  88. package/vendor/node_modules/@legendapp/spark-cli/dist/dev.js +408 -0
  89. package/vendor/node_modules/@legendapp/spark-cli/dist/examples.js +43 -0
  90. package/vendor/node_modules/@legendapp/spark-cli/dist/executable.js +19 -0
  91. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-extension.cjs +51 -0
  92. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-patch.cjs +38 -0
  93. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-dev-preload.cjs +19 -0
  94. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-metro.cjs +41 -0
  95. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-native.cjs +10 -0
  96. package/vendor/node_modules/@legendapp/spark-cli/dist/expo-node.js +21 -0
  97. package/vendor/node_modules/@legendapp/spark-cli/dist/go-profile.js +20 -0
  98. package/vendor/node_modules/@legendapp/spark-cli/dist/helpers.js +79 -0
  99. package/vendor/node_modules/@legendapp/spark-cli/dist/index.js +263 -0
  100. package/vendor/node_modules/@legendapp/spark-cli/dist/init-template.cjs +25 -0
  101. package/vendor/node_modules/@legendapp/spark-cli/dist/local.js +124 -0
  102. package/vendor/node_modules/@legendapp/spark-cli/dist/macos-release.js +7 -0
  103. package/vendor/node_modules/@legendapp/spark-cli/dist/metro-gate.cjs +33 -0
  104. package/vendor/node_modules/@legendapp/spark-cli/dist/metro.cjs +63 -0
  105. package/vendor/node_modules/@legendapp/spark-cli/dist/metro.js +25 -0
  106. package/vendor/node_modules/@legendapp/spark-cli/dist/npm-bin/npm +6 -0
  107. package/vendor/node_modules/@legendapp/spark-cli/dist/npm-bin/npm.cmd +1 -0
  108. package/vendor/node_modules/@legendapp/spark-cli/dist/pack-archive.js +23 -0
  109. package/vendor/node_modules/@legendapp/spark-cli/dist/package-manager.js +45 -0
  110. package/vendor/node_modules/@legendapp/spark-cli/dist/package.js +199 -0
  111. package/vendor/node_modules/@legendapp/spark-cli/dist/platform.js +34 -0
  112. package/vendor/node_modules/@legendapp/spark-cli/dist/process.js +57 -0
  113. package/vendor/node_modules/@legendapp/spark-cli/dist/project.js +324 -0
  114. package/vendor/node_modules/@legendapp/spark-cli/dist/release.js +42 -0
  115. package/vendor/node_modules/@legendapp/spark-cli/dist/release.json +37 -0
  116. package/vendor/node_modules/@legendapp/spark-cli/dist/runner-install.js +138 -0
  117. package/vendor/node_modules/@legendapp/spark-cli/dist/runtime-entry.cjs +1 -0
  118. package/vendor/node_modules/@legendapp/spark-cli/dist/sdk-install.js +66 -0
  119. package/vendor/node_modules/@legendapp/spark-cli/dist/sdk-transfer.js +113 -0
  120. package/vendor/node_modules/@legendapp/spark-cli/dist/session-status.js +22 -0
  121. package/vendor/node_modules/@legendapp/spark-cli/dist/signing.js +175 -0
  122. package/vendor/node_modules/@legendapp/spark-cli/dist/universal.cjs +28 -0
  123. package/vendor/node_modules/@legendapp/spark-cli/dist/updates.js +110 -0
  124. package/vendor/node_modules/@legendapp/spark-cli/dist/windows-associations.js +45 -0
  125. package/vendor/node_modules/@legendapp/spark-cli/dist/windows-associations.ps1 +57 -0
  126. package/vendor/node_modules/@legendapp/spark-cli/dist/windows-geometry.js +33 -0
  127. package/vendor/node_modules/@legendapp/spark-cli/dist/windows-metro.js +112 -0
  128. package/vendor/node_modules/@legendapp/spark-cli/dist/windows.js +141 -0
  129. package/vendor/node_modules/@legendapp/spark-cli/package.json +22 -0
  130. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/App.tsx +29 -0
  131. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/app.json +11 -0
  132. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/assets/icon.png +0 -0
  133. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/desktop.config.json +19 -0
  134. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/gitignore +8 -0
  135. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/index.ts +5 -0
  136. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/metro.config.js +3 -0
  137. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/package.json +55 -0
  138. package/vendor/node_modules/@legendapp/spark-cli/templates/blank-typescript/tsconfig.json +10 -0
  139. package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/App.tsx +34 -0
  140. package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/Git.macos.tsx +13 -0
  141. package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/Git.tsx +1 -0
  142. package/vendor/node_modules/@legendapp/spark-cli/templates/diff-lite/compare.ts +12 -0
  143. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/App.tsx +34 -0
  144. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.macos.tsx +57 -0
  145. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.tsx +13 -0
  146. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.web.tsx +14 -0
  147. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/Integration.windows.tsx +57 -0
  148. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/document.ts +58 -0
  149. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.desktop.ts +24 -0
  150. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.macos.ts +7 -0
  151. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.ts +31 -0
  152. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.web.ts +21 -0
  153. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/io.windows.ts +1 -0
  154. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/sessions.ts +8 -0
  155. package/vendor/node_modules/@legendapp/spark-cli/templates/document-editor/useDocument.ts +6 -0
  156. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.desktop.tsx +31 -0
  157. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.macos.tsx +1 -0
  158. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.tsx +14 -0
  159. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.web.tsx +20 -0
  160. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/Lifecycle.windows.tsx +1 -0
  161. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.desktop.tsx +28 -0
  162. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.macos.tsx +1 -0
  163. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.tsx +2 -0
  164. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/OpenFiles.windows.tsx +1 -0
  165. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/document.ts +58 -0
  166. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.desktop.ts +24 -0
  167. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.macos.ts +7 -0
  168. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.ts +31 -0
  169. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.web.ts +21 -0
  170. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/io.windows.ts +1 -0
  171. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/lifecycle-types.ts +10 -0
  172. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/lifetime.ts +23 -0
  173. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/records.ts +51 -0
  174. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/storage.ts +6 -0
  175. package/vendor/node_modules/@legendapp/spark-cli/templates/example-shared/useModel.ts +6 -0
  176. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.desktop.tsx +4 -0
  177. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.macos.tsx +1 -0
  178. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.tsx +1 -0
  179. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/Activation.windows.tsx +1 -0
  180. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/App.tsx +38 -0
  181. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.desktop.ts +7 -0
  182. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.macos.ts +1 -0
  183. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.ts +18 -0
  184. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.web.ts +37 -0
  185. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/assets.windows.ts +1 -0
  186. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/model.ts +91 -0
  187. package/vendor/node_modules/@legendapp/spark-cli/templates/music-lite/store.ts +10 -0
  188. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.desktop.tsx +5 -0
  189. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.macos.tsx +1 -0
  190. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.tsx +1 -0
  191. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Activation.windows.tsx +1 -0
  192. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/App.tsx +92 -0
  193. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.desktop.ts +25 -0
  194. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.macos.ts +1 -0
  195. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.ts +7 -0
  196. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Desktop.windows.ts +1 -0
  197. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/Theme.tsx +17 -0
  198. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/model.ts +61 -0
  199. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/search.ts +3 -0
  200. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/session.ts +16 -0
  201. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/store.ts +4 -0
  202. package/vendor/node_modules/@legendapp/spark-cli/templates/notes-lite/window-session.ts +62 -0
  203. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/App.tsx +57 -0
  204. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/app.json +15 -0
  205. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/assets/icon.png +0 -0
  206. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/desktop.config.json +62 -0
  207. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/gitignore +10 -0
  208. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/global.css +31 -0
  209. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/index.ts +4 -0
  210. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/metro.config.js +7 -0
  211. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/package.json +70 -0
  212. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/react-native.config.js +2 -0
  213. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/tsconfig.json +10 -0
  214. package/vendor/node_modules/@legendapp/spark-cli/templates/universal/uniwind-types.d.ts +10 -0
  215. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/App.tsx +16 -0
  216. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/app.json +11 -0
  217. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/assets/icon.png +0 -0
  218. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/desktop.config.json +10 -0
  219. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/gitignore +8 -0
  220. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/index.ts +3 -0
  221. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/metro.config.js +3 -0
  222. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/package.json +56 -0
  223. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/react-native.config.js +2 -0
  224. package/vendor/node_modules/@legendapp/spark-cli/templates/windows/tsconfig.json +10 -0
  225. package/vendor/node_modules/@legendapp/spark-clipboard/RNDesktopClipboard.podspec +16 -0
  226. package/vendor/node_modules/@legendapp/spark-clipboard/macos/RNDesktopClipboard.h +4 -0
  227. package/vendor/node_modules/@legendapp/spark-clipboard/macos/RNDesktopClipboard.mm +87 -0
  228. package/vendor/node_modules/@legendapp/spark-clipboard/package.json +52 -0
  229. package/vendor/node_modules/@legendapp/spark-clipboard/react-native.config.js +6 -0
  230. package/vendor/node_modules/@legendapp/spark-clipboard/src/NativeDesktopClipboard.ts +6 -0
  231. package/vendor/node_modules/@legendapp/spark-clipboard/src/desktop.ts +39 -0
  232. package/vendor/node_modules/@legendapp/spark-clipboard/src/expo.ts +12 -0
  233. package/vendor/node_modules/@legendapp/spark-clipboard/src/formats.ts +1 -0
  234. package/vendor/node_modules/@legendapp/spark-clipboard/src/index.android.ts +1 -0
  235. package/vendor/node_modules/@legendapp/spark-clipboard/src/index.ios.ts +1 -0
  236. package/vendor/node_modules/@legendapp/spark-clipboard/src/index.ts +1 -0
  237. package/vendor/node_modules/@legendapp/spark-clipboard/src/index.web.ts +1 -0
  238. package/vendor/node_modules/@legendapp/spark-clipboard/src/index.windows.ts +1 -0
  239. package/vendor/node_modules/@legendapp/spark-clipboard/windows/ExperimentalFeatures.props +33 -0
  240. package/vendor/node_modules/@legendapp/spark-clipboard/windows/LICENSE +25 -0
  241. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/ReactPackageProvider.cpp +20 -0
  242. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/ReactPackageProvider.h +24 -0
  243. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/ReactPackageProvider.idl +9 -0
  244. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.cpp +2 -0
  245. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.def +3 -0
  246. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.h +119 -0
  247. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.rc +0 -0
  248. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.vcxproj +143 -0
  249. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/SparkClipboard.vcxproj.filters +44 -0
  250. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/pch.cpp +1 -0
  251. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/pch.h +30 -0
  252. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/resource.h +5 -0
  253. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard/targetver.h +8 -0
  254. package/vendor/node_modules/@legendapp/spark-clipboard/windows/SparkClipboard.sln +43 -0
  255. package/vendor/node_modules/@legendapp/spark-context-menu/RNContextMenu.podspec +16 -0
  256. package/vendor/node_modules/@legendapp/spark-context-menu/macos/RNContextMenu.h +9 -0
  257. package/vendor/node_modules/@legendapp/spark-context-menu/macos/RNContextMenu.mm +160 -0
  258. package/vendor/node_modules/@legendapp/spark-context-menu/package.json +46 -0
  259. package/vendor/node_modules/@legendapp/spark-context-menu/react-native.config.js +6 -0
  260. package/vendor/node_modules/@legendapp/spark-context-menu/src/NativeContextMenu.ts +8 -0
  261. package/vendor/node_modules/@legendapp/spark-context-menu/src/index.ts +29 -0
  262. package/vendor/node_modules/@legendapp/spark-context-menu/windows/ExperimentalFeatures.props +33 -0
  263. package/vendor/node_modules/@legendapp/spark-context-menu/windows/LICENSE +25 -0
  264. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/ReactPackageProvider.cpp +20 -0
  265. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/ReactPackageProvider.h +24 -0
  266. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/ReactPackageProvider.idl +9 -0
  267. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.cpp +2 -0
  268. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.def +3 -0
  269. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.h +112 -0
  270. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.rc +0 -0
  271. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.vcxproj +143 -0
  272. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/SparkContextMenu.vcxproj.filters +44 -0
  273. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/pch.cpp +1 -0
  274. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/pch.h +30 -0
  275. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/resource.h +5 -0
  276. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu/targetver.h +8 -0
  277. package/vendor/node_modules/@legendapp/spark-context-menu/windows/SparkContextMenu.sln +43 -0
  278. package/vendor/node_modules/@legendapp/spark-desktop-app/RNDesktopApp.podspec +15 -0
  279. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/RNDesktopApp.h +4 -0
  280. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/RNDesktopApp.mm +34 -0
  281. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktop.h +23 -0
  282. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkDesktop.mm +135 -0
  283. package/vendor/node_modules/@legendapp/spark-desktop-app/macos/SparkWindow.mm +81 -0
  284. package/vendor/node_modules/@legendapp/spark-desktop-app/package.json +39 -0
  285. package/vendor/node_modules/@legendapp/spark-desktop-app/react-native.config.js +6 -0
  286. package/vendor/node_modules/@legendapp/spark-desktop-app/src/NativeDesktopApp.ts +8 -0
  287. package/vendor/node_modules/@legendapp/spark-desktop-app/src/api.ts +42 -0
  288. package/vendor/node_modules/@legendapp/spark-desktop-app/src/index.ts +1 -0
  289. package/vendor/node_modules/@legendapp/spark-desktop-app/src/index.windows.ts +1 -0
  290. package/vendor/node_modules/@legendapp/spark-desktop-config/app.plugin.cjs +75 -0
  291. package/vendor/node_modules/@legendapp/spark-desktop-config/config.cjs +161 -0
  292. package/vendor/node_modules/@legendapp/spark-desktop-config/config.d.cts +13 -0
  293. package/vendor/node_modules/@legendapp/spark-desktop-config/entitlements.cjs +23 -0
  294. package/vendor/node_modules/@legendapp/spark-desktop-config/expo.cjs +26 -0
  295. package/vendor/node_modules/@legendapp/spark-desktop-config/fabric-lifecycle.cjs +125 -0
  296. package/vendor/node_modules/@legendapp/spark-desktop-config/helpers.cjs +20 -0
  297. package/vendor/node_modules/@legendapp/spark-desktop-config/identity.cjs +28 -0
  298. package/vendor/node_modules/@legendapp/spark-desktop-config/keyboard-events.cjs +44 -0
  299. package/vendor/node_modules/@legendapp/spark-desktop-config/package.json +19 -0
  300. package/vendor/node_modules/@legendapp/spark-desktop-config/schema.json +305 -0
  301. package/vendor/node_modules/@legendapp/spark-desktop-config/updates.cjs +24 -0
  302. package/vendor/node_modules/@legendapp/spark-desktop-config/windows.plugin.cjs +72 -0
  303. package/vendor/node_modules/@legendapp/spark-desktop-host/AppDelegate.mm +79 -0
  304. package/vendor/node_modules/@legendapp/spark-desktop-host/package.json +13 -0
  305. package/vendor/node_modules/@legendapp/spark-desktop-host/windows/SparkComponentGeometry.h +9 -0
  306. package/vendor/node_modules/@legendapp/spark-desktop-host/windows/application.inc +647 -0
  307. package/vendor/node_modules/@legendapp/spark-desktop-host/windows/notifications.inc +60 -0
  308. package/vendor/node_modules/@legendapp/spark-desktop-host/windows/runtime.inc +63 -0
  309. package/vendor/node_modules/@legendapp/spark-desktop-host/windows/runtimes.inc +162 -0
  310. package/vendor/node_modules/@legendapp/spark-desktop-links/RNDesktopLinks.podspec +17 -0
  311. package/vendor/node_modules/@legendapp/spark-desktop-links/common/AuthLoopback.h +121 -0
  312. package/vendor/node_modules/@legendapp/spark-desktop-links/macos/RNDesktopLinks.h +4 -0
  313. package/vendor/node_modules/@legendapp/spark-desktop-links/macos/RNDesktopLinks.mm +79 -0
  314. package/vendor/node_modules/@legendapp/spark-desktop-links/package.json +53 -0
  315. package/vendor/node_modules/@legendapp/spark-desktop-links/react-native.config.js +6 -0
  316. package/vendor/node_modules/@legendapp/spark-desktop-links/src/NativeDesktopLinks.ts +6 -0
  317. package/vendor/node_modules/@legendapp/spark-desktop-links/src/api.ts +37 -0
  318. package/vendor/node_modules/@legendapp/spark-desktop-links/src/expo.ts +5 -0
  319. package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.android.ts +1 -0
  320. package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.ios.ts +1 -0
  321. package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.ts +1 -0
  322. package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.web.ts +1 -0
  323. package/vendor/node_modules/@legendapp/spark-desktop-links/src/index.windows.ts +1 -0
  324. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/ExperimentalFeatures.props +33 -0
  325. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/LICENSE +25 -0
  326. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/ReactPackageProvider.cpp +20 -0
  327. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/ReactPackageProvider.h +24 -0
  328. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/ReactPackageProvider.idl +9 -0
  329. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.cpp +2 -0
  330. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.def +3 -0
  331. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.h +128 -0
  332. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.rc +0 -0
  333. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.vcxproj +143 -0
  334. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/SparkLinks.vcxproj.filters +44 -0
  335. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/pch.cpp +1 -0
  336. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/pch.h +30 -0
  337. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/resource.h +5 -0
  338. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks/targetver.h +8 -0
  339. package/vendor/node_modules/@legendapp/spark-desktop-links/windows/SparkLinks.sln +43 -0
  340. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/RNDesktopShortcuts.podspec +16 -0
  341. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/RNDesktopShortcuts.h +4 -0
  342. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/macos/RNDesktopShortcuts.mm +56 -0
  343. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/package.json +43 -0
  344. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/NativeDesktopShortcuts.ts +8 -0
  345. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/accelerator.ts +22 -0
  346. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/api.ts +20 -0
  347. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/index.ts +1 -0
  348. package/vendor/node_modules/@legendapp/spark-desktop-shortcuts/src/index.windows.ts +1 -0
  349. package/vendor/node_modules/@legendapp/spark-desktop-windows/RNDesktopWindows.podspec +17 -0
  350. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/RNDesktopWindows.h +4 -0
  351. package/vendor/node_modules/@legendapp/spark-desktop-windows/macos/RNDesktopWindows.mm +210 -0
  352. package/vendor/node_modules/@legendapp/spark-desktop-windows/package.json +44 -0
  353. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/NativeDesktopWindowManager.ts +6 -0
  354. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/api.ts +79 -0
  355. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/index.ts +1 -0
  356. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/index.windows.ts +1 -0
  357. package/vendor/node_modules/@legendapp/spark-desktop-windows/src/windows-options.ts +11 -0
  358. package/vendor/node_modules/@legendapp/spark-drag-drop/RNDesktopDrag.podspec +20 -0
  359. package/vendor/node_modules/@legendapp/spark-drag-drop/macos/RNDesktopDragView.h +4 -0
  360. package/vendor/node_modules/@legendapp/spark-drag-drop/macos/RNDesktopDragView.mm +94 -0
  361. package/vendor/node_modules/@legendapp/spark-drag-drop/package.json +44 -0
  362. package/vendor/node_modules/@legendapp/spark-drag-drop/react-native.config.js +6 -0
  363. package/vendor/node_modules/@legendapp/spark-drag-drop/src/DesktopDragViewNativeComponent.ts +16 -0
  364. package/vendor/node_modules/@legendapp/spark-drag-drop/src/contracts.ts +28 -0
  365. package/vendor/node_modules/@legendapp/spark-drag-drop/src/index.tsx +17 -0
  366. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/ExperimentalFeatures.props +33 -0
  367. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/LICENSE +25 -0
  368. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/ReactPackageProvider.cpp +21 -0
  369. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/ReactPackageProvider.h +24 -0
  370. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/ReactPackageProvider.idl +9 -0
  371. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.cpp +2 -0
  372. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.def +3 -0
  373. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.h +209 -0
  374. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.rc +0 -0
  375. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.vcxproj +143 -0
  376. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/SparkDragDrop.vcxproj.filters +44 -0
  377. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/pch.cpp +1 -0
  378. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/pch.h +30 -0
  379. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/resource.h +5 -0
  380. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop/targetver.h +8 -0
  381. package/vendor/node_modules/@legendapp/spark-drag-drop/windows/SparkDragDrop.sln +43 -0
  382. package/vendor/node_modules/@legendapp/spark-file-dialog/RNFileDialog.podspec +17 -0
  383. package/vendor/node_modules/@legendapp/spark-file-dialog/ios/RNFileDialog.h +9 -0
  384. package/vendor/node_modules/@legendapp/spark-file-dialog/ios/RNFileDialog.mm +259 -0
  385. package/vendor/node_modules/@legendapp/spark-file-dialog/package.json +43 -0
  386. package/vendor/node_modules/@legendapp/spark-file-dialog/src/NativeFileDialog.ts +13 -0
  387. package/vendor/node_modules/@legendapp/spark-file-dialog/src/index.ts +89 -0
  388. package/vendor/node_modules/@legendapp/spark-file-dialog/src/index.windows.ts +15 -0
  389. package/vendor/node_modules/@legendapp/spark-file-dialog/src/options.ts +16 -0
  390. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/ExperimentalFeatures.props +33 -0
  391. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/LICENSE +25 -0
  392. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/ReactPackageProvider.cpp +20 -0
  393. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/ReactPackageProvider.h +24 -0
  394. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/ReactPackageProvider.idl +9 -0
  395. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.cpp +2 -0
  396. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.def +3 -0
  397. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.h +128 -0
  398. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.rc +0 -0
  399. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.vcxproj +143 -0
  400. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/SparkFileDialog.vcxproj.filters +44 -0
  401. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/pch.cpp +1 -0
  402. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/pch.h +30 -0
  403. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/resource.h +5 -0
  404. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog/targetver.h +8 -0
  405. package/vendor/node_modules/@legendapp/spark-file-dialog/windows/SparkFileDialog.sln +43 -0
  406. package/vendor/node_modules/@legendapp/spark-file-system/RNDesktopFileSystem.podspec +17 -0
  407. package/vendor/node_modules/@legendapp/spark-file-system/macos/RNDesktopFileSystem.h +4 -0
  408. package/vendor/node_modules/@legendapp/spark-file-system/macos/RNDesktopFileSystem.mm +211 -0
  409. package/vendor/node_modules/@legendapp/spark-file-system/package.json +47 -0
  410. package/vendor/node_modules/@legendapp/spark-file-system/react-native.config.js +6 -0
  411. package/vendor/node_modules/@legendapp/spark-file-system/src/NativeDesktopFileSystem.ts +8 -0
  412. package/vendor/node_modules/@legendapp/spark-file-system/src/handles.ts +45 -0
  413. package/vendor/node_modules/@legendapp/spark-file-system/src/index.ts +61 -0
  414. package/vendor/node_modules/@legendapp/spark-file-system/src/path.ts +9 -0
  415. package/vendor/node_modules/@legendapp/spark-file-system/windows/ExperimentalFeatures.props +33 -0
  416. package/vendor/node_modules/@legendapp/spark-file-system/windows/LICENSE +25 -0
  417. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/ReactPackageProvider.cpp +20 -0
  418. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/ReactPackageProvider.h +24 -0
  419. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/ReactPackageProvider.idl +9 -0
  420. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.cpp +2 -0
  421. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.def +3 -0
  422. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.h +295 -0
  423. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.rc +0 -0
  424. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.vcxproj +144 -0
  425. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/SparkFileSystem.vcxproj.filters +45 -0
  426. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/Trash.h +52 -0
  427. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/pch.cpp +1 -0
  428. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/pch.h +30 -0
  429. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/resource.h +5 -0
  430. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem/targetver.h +8 -0
  431. package/vendor/node_modules/@legendapp/spark-file-system/windows/SparkFileSystem.sln +43 -0
  432. package/vendor/node_modules/@legendapp/spark-global-shortcuts/RNDesktopGlobalShortcuts.podspec +17 -0
  433. package/vendor/node_modules/@legendapp/spark-global-shortcuts/macos/RNDesktopGlobalShortcuts.h +3 -0
  434. package/vendor/node_modules/@legendapp/spark-global-shortcuts/macos/RNDesktopGlobalShortcuts.mm +65 -0
  435. package/vendor/node_modules/@legendapp/spark-global-shortcuts/package.json +46 -0
  436. package/vendor/node_modules/@legendapp/spark-global-shortcuts/react-native.config.js +6 -0
  437. package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/NativeDesktopGlobalShortcuts.ts +3 -0
  438. package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/accelerator.ts +22 -0
  439. package/vendor/node_modules/@legendapp/spark-global-shortcuts/src/index.ts +16 -0
  440. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/ExperimentalFeatures.props +33 -0
  441. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/LICENSE +25 -0
  442. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/ReactPackageProvider.cpp +20 -0
  443. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/ReactPackageProvider.h +24 -0
  444. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/ReactPackageProvider.idl +9 -0
  445. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.cpp +2 -0
  446. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.def +3 -0
  447. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.h +80 -0
  448. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.rc +0 -0
  449. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.vcxproj +143 -0
  450. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/SparkGlobalShortcuts.vcxproj.filters +44 -0
  451. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/pch.cpp +1 -0
  452. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/pch.h +30 -0
  453. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/resource.h +5 -0
  454. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts/targetver.h +8 -0
  455. package/vendor/node_modules/@legendapp/spark-global-shortcuts/windows/SparkGlobalShortcuts.sln +43 -0
  456. package/vendor/node_modules/@legendapp/spark-message-dialog/RNDesktopMessageDialog.podspec +17 -0
  457. package/vendor/node_modules/@legendapp/spark-message-dialog/macos/RNDesktopMessageDialog.h +3 -0
  458. package/vendor/node_modules/@legendapp/spark-message-dialog/macos/RNDesktopMessageDialog.mm +36 -0
  459. package/vendor/node_modules/@legendapp/spark-message-dialog/package.json +46 -0
  460. package/vendor/node_modules/@legendapp/spark-message-dialog/react-native.config.js +6 -0
  461. package/vendor/node_modules/@legendapp/spark-message-dialog/src/NativeDesktopMessageDialog.ts +3 -0
  462. package/vendor/node_modules/@legendapp/spark-message-dialog/src/index.ts +13 -0
  463. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/ExperimentalFeatures.props +33 -0
  464. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/LICENSE +25 -0
  465. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/ReactPackageProvider.cpp +20 -0
  466. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/ReactPackageProvider.h +24 -0
  467. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/ReactPackageProvider.idl +9 -0
  468. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.cpp +2 -0
  469. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.def +3 -0
  470. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.h +145 -0
  471. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.rc +0 -0
  472. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.vcxproj +143 -0
  473. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/SparkMessageDialog.vcxproj.filters +44 -0
  474. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/pch.cpp +1 -0
  475. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/pch.h +30 -0
  476. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/resource.h +5 -0
  477. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog/targetver.h +8 -0
  478. package/vendor/node_modules/@legendapp/spark-message-dialog/windows/SparkMessageDialog.sln +43 -0
  479. package/vendor/node_modules/@legendapp/spark-native-menu/RNNativeMenu.podspec +17 -0
  480. package/vendor/node_modules/@legendapp/spark-native-menu/ios/RNNativeMenu.h +10 -0
  481. package/vendor/node_modules/@legendapp/spark-native-menu/ios/RNNativeMenu.mm +632 -0
  482. package/vendor/node_modules/@legendapp/spark-native-menu/package.json +41 -0
  483. package/vendor/node_modules/@legendapp/spark-native-menu/src/NativeMenu.ts +13 -0
  484. package/vendor/node_modules/@legendapp/spark-native-menu/src/api.ts +128 -0
  485. package/vendor/node_modules/@legendapp/spark-native-menu/src/index.ts +1 -0
  486. package/vendor/node_modules/@legendapp/spark-native-menu/src/index.windows.ts +1 -0
  487. package/vendor/node_modules/@legendapp/spark-native-menu/src/windows-menus.ts +43 -0
  488. package/vendor/node_modules/@legendapp/spark-notifications/RNDesktopNotifications.podspec +17 -0
  489. package/vendor/node_modules/@legendapp/spark-notifications/macos/RNDesktopNotifications.h +4 -0
  490. package/vendor/node_modules/@legendapp/spark-notifications/macos/RNDesktopNotifications.mm +111 -0
  491. package/vendor/node_modules/@legendapp/spark-notifications/package.json +46 -0
  492. package/vendor/node_modules/@legendapp/spark-notifications/react-native.config.js +6 -0
  493. package/vendor/node_modules/@legendapp/spark-notifications/src/NativeDesktopNotifications.ts +4 -0
  494. package/vendor/node_modules/@legendapp/spark-notifications/src/index.ts +53 -0
  495. package/vendor/node_modules/@legendapp/spark-notifications/windows/ExperimentalFeatures.props +33 -0
  496. package/vendor/node_modules/@legendapp/spark-notifications/windows/LICENSE +25 -0
  497. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/ReactPackageProvider.cpp +20 -0
  498. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/ReactPackageProvider.h +24 -0
  499. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/ReactPackageProvider.idl +9 -0
  500. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.cpp +2 -0
  501. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.def +3 -0
  502. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.h +132 -0
  503. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.rc +0 -0
  504. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.vcxproj +143 -0
  505. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/SparkNotifications.vcxproj.filters +44 -0
  506. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/pch.cpp +1 -0
  507. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/pch.h +30 -0
  508. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/resource.h +5 -0
  509. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications/targetver.h +8 -0
  510. package/vendor/node_modules/@legendapp/spark-notifications/windows/SparkNotifications.sln +43 -0
  511. package/vendor/node_modules/@legendapp/spark-processes/RNDesktopProcesses.podspec +17 -0
  512. package/vendor/node_modules/@legendapp/spark-processes/macos/RNDesktopProcesses.h +3 -0
  513. package/vendor/node_modules/@legendapp/spark-processes/macos/RNDesktopProcesses.mm +153 -0
  514. package/vendor/node_modules/@legendapp/spark-processes/package.json +46 -0
  515. package/vendor/node_modules/@legendapp/spark-processes/react-native.config.js +6 -0
  516. package/vendor/node_modules/@legendapp/spark-processes/src/NativeDesktopProcesses.ts +3 -0
  517. package/vendor/node_modules/@legendapp/spark-processes/src/index.ts +39 -0
  518. package/vendor/node_modules/@legendapp/spark-processes/windows/ExperimentalFeatures.props +33 -0
  519. package/vendor/node_modules/@legendapp/spark-processes/windows/LICENSE +25 -0
  520. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/ReactPackageProvider.cpp +20 -0
  521. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/ReactPackageProvider.h +24 -0
  522. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/ReactPackageProvider.idl +9 -0
  523. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.cpp +2 -0
  524. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.def +3 -0
  525. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.h +171 -0
  526. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.rc +0 -0
  527. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.vcxproj +143 -0
  528. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/SparkProcesses.vcxproj.filters +44 -0
  529. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/pch.cpp +1 -0
  530. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/pch.h +30 -0
  531. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/resource.h +5 -0
  532. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses/targetver.h +8 -0
  533. package/vendor/node_modules/@legendapp/spark-processes/windows/SparkProcesses.sln +43 -0
  534. package/vendor/node_modules/@legendapp/spark-secure-storage/RNDesktopSecureStorage.podspec +17 -0
  535. package/vendor/node_modules/@legendapp/spark-secure-storage/macos/RNDesktopSecureStorage.h +4 -0
  536. package/vendor/node_modules/@legendapp/spark-secure-storage/macos/RNDesktopSecureStorage.mm +53 -0
  537. package/vendor/node_modules/@legendapp/spark-secure-storage/package.json +52 -0
  538. package/vendor/node_modules/@legendapp/spark-secure-storage/react-native.config.js +6 -0
  539. package/vendor/node_modules/@legendapp/spark-secure-storage/src/NativeDesktopSecureStorage.ts +6 -0
  540. package/vendor/node_modules/@legendapp/spark-secure-storage/src/desktop.ts +24 -0
  541. package/vendor/node_modules/@legendapp/spark-secure-storage/src/expo.ts +14 -0
  542. package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.android.ts +1 -0
  543. package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.ios.ts +1 -0
  544. package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.ts +1 -0
  545. package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.web.ts +1 -0
  546. package/vendor/node_modules/@legendapp/spark-secure-storage/src/index.windows.ts +2 -0
  547. package/vendor/node_modules/@legendapp/spark-secure-storage/src/options.ts +6 -0
  548. package/vendor/node_modules/@legendapp/spark-secure-storage/src/unavailable.ts +5 -0
  549. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/ExperimentalFeatures.props +33 -0
  550. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/LICENSE +25 -0
  551. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/ReactPackageProvider.cpp +20 -0
  552. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/ReactPackageProvider.h +24 -0
  553. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/ReactPackageProvider.idl +9 -0
  554. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.cpp +2 -0
  555. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.def +3 -0
  556. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.h +48 -0
  557. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.rc +0 -0
  558. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.vcxproj +143 -0
  559. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/SparkSecureStorage.vcxproj.filters +44 -0
  560. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/pch.cpp +1 -0
  561. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/pch.h +30 -0
  562. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/resource.h +5 -0
  563. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage/targetver.h +8 -0
  564. package/vendor/node_modules/@legendapp/spark-secure-storage/windows/SparkSecureStorage.sln +43 -0
  565. package/vendor/node_modules/@legendapp/spark-settings/package.json +13 -0
  566. package/vendor/node_modules/@legendapp/spark-settings/src/filename.ts +1 -0
  567. package/vendor/node_modules/@legendapp/spark-settings/src/filename.windows.ts +9 -0
  568. package/vendor/node_modules/@legendapp/spark-settings/src/index.ts +19 -0
  569. package/vendor/node_modules/@legendapp/spark-settings/src/store.ts +37 -0
  570. package/vendor/node_modules/@legendapp/spark-sqlite/package.json +16 -0
  571. package/vendor/node_modules/@legendapp/spark-sqlite/src/index.ts +7 -0
  572. package/vendor/node_modules/@legendapp/spark-system/RNDesktopSystem.podspec +17 -0
  573. package/vendor/node_modules/@legendapp/spark-system/macos/RNDesktopSystem.h +3 -0
  574. package/vendor/node_modules/@legendapp/spark-system/macos/RNDesktopSystem.mm +108 -0
  575. package/vendor/node_modules/@legendapp/spark-system/package.json +46 -0
  576. package/vendor/node_modules/@legendapp/spark-system/react-native.config.js +6 -0
  577. package/vendor/node_modules/@legendapp/spark-system/src/NativeDesktopSystem.ts +3 -0
  578. package/vendor/node_modules/@legendapp/spark-system/src/index.ts +35 -0
  579. package/vendor/node_modules/@legendapp/spark-system/windows/ExperimentalFeatures.props +33 -0
  580. package/vendor/node_modules/@legendapp/spark-system/windows/LICENSE +25 -0
  581. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/ReactPackageProvider.cpp +20 -0
  582. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/ReactPackageProvider.h +24 -0
  583. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/ReactPackageProvider.idl +9 -0
  584. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.cpp +2 -0
  585. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.def +3 -0
  586. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.h +154 -0
  587. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.rc +0 -0
  588. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.vcxproj +143 -0
  589. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/SparkSystem.vcxproj.filters +44 -0
  590. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/pch.cpp +1 -0
  591. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/pch.h +30 -0
  592. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/resource.h +5 -0
  593. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem/targetver.h +8 -0
  594. package/vendor/node_modules/@legendapp/spark-system/windows/SparkSystem.sln +43 -0
  595. package/vendor/node_modules/@legendapp/spark-tray/RNDesktopTray.podspec +17 -0
  596. package/vendor/node_modules/@legendapp/spark-tray/macos/RNDesktopTray.h +4 -0
  597. package/vendor/node_modules/@legendapp/spark-tray/macos/RNDesktopTray.mm +63 -0
  598. package/vendor/node_modules/@legendapp/spark-tray/package.json +46 -0
  599. package/vendor/node_modules/@legendapp/spark-tray/react-native.config.js +6 -0
  600. package/vendor/node_modules/@legendapp/spark-tray/src/NativeDesktopTray.ts +4 -0
  601. package/vendor/node_modules/@legendapp/spark-tray/src/index.ts +46 -0
  602. package/vendor/node_modules/@legendapp/spark-tray/windows/ExperimentalFeatures.props +33 -0
  603. package/vendor/node_modules/@legendapp/spark-tray/windows/LICENSE +25 -0
  604. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/ReactPackageProvider.cpp +20 -0
  605. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/ReactPackageProvider.h +24 -0
  606. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/ReactPackageProvider.idl +9 -0
  607. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.cpp +2 -0
  608. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.def +3 -0
  609. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.h +133 -0
  610. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.rc +0 -0
  611. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.vcxproj +143 -0
  612. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/SparkTray.vcxproj.filters +44 -0
  613. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/pch.cpp +1 -0
  614. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/pch.h +30 -0
  615. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/resource.h +5 -0
  616. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray/targetver.h +8 -0
  617. package/vendor/node_modules/@legendapp/spark-tray/windows/SparkTray.sln +43 -0
  618. package/vendor/node_modules/@legendapp/spark-ui/RNSparkUI.podspec +17 -0
  619. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkButton.h +4 -0
  620. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkButton.mm +51 -0
  621. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkSelect.h +4 -0
  622. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkSelect.mm +53 -0
  623. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkTextInput.h +4 -0
  624. package/vendor/node_modules/@legendapp/spark-ui/macos/RNSparkTextInput.mm +45 -0
  625. package/vendor/node_modules/@legendapp/spark-ui/package.json +61 -0
  626. package/vendor/node_modules/@legendapp/spark-ui/react-native.config.js +5 -0
  627. package/vendor/node_modules/@legendapp/spark-ui/src/SparkButtonNativeComponent.ts +12 -0
  628. package/vendor/node_modules/@legendapp/spark-ui/src/SparkSelectNativeComponent.ts +10 -0
  629. package/vendor/node_modules/@legendapp/spark-ui/src/SparkTextInputNativeComponent.ts +9 -0
  630. package/vendor/node_modules/@legendapp/spark-ui/src/index.android.tsx +25 -0
  631. package/vendor/node_modules/@legendapp/spark-ui/src/index.ios.tsx +30 -0
  632. package/vendor/node_modules/@legendapp/spark-ui/src/index.tsx +27 -0
  633. package/vendor/node_modules/@legendapp/spark-ui/src/index.web.tsx +23 -0
  634. package/vendor/node_modules/@legendapp/spark-ui/src/index.windows.tsx +42 -0
  635. package/vendor/node_modules/@legendapp/spark-ui/src/select.ts +7 -0
  636. package/vendor/node_modules/@legendapp/spark-ui/src/types.ts +28 -0
  637. package/vendor/node_modules/@legendapp/spark-ui/uniwind.ts +8 -0
  638. package/vendor/node_modules/@legendapp/spark-ui/uniwind.web.ts +17 -0
  639. package/vendor/node_modules/@legendapp/spark-ui/windows/ExperimentalFeatures.props +33 -0
  640. package/vendor/node_modules/@legendapp/spark-ui/windows/LICENSE +25 -0
  641. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/ReactPackageProvider.cpp +21 -0
  642. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/ReactPackageProvider.h +24 -0
  643. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/ReactPackageProvider.idl +9 -0
  644. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkAppearance.h +61 -0
  645. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.cpp +2 -0
  646. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.def +3 -0
  647. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.h +181 -0
  648. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.rc +0 -0
  649. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.vcxproj +144 -0
  650. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/SparkUI.vcxproj.filters +44 -0
  651. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/pch.cpp +1 -0
  652. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/pch.h +30 -0
  653. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/resource.h +5 -0
  654. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI/targetver.h +8 -0
  655. package/vendor/node_modules/@legendapp/spark-ui/windows/SparkUI.sln +43 -0
  656. package/vendor/node_modules/@legendapp/spark-updates/RNDesktopUpdates.podspec +18 -0
  657. package/vendor/node_modules/@legendapp/spark-updates/Sparkle.podspec.json +39 -0
  658. package/vendor/node_modules/@legendapp/spark-updates/macos/RNDesktopUpdates.h +4 -0
  659. package/vendor/node_modules/@legendapp/spark-updates/macos/RNDesktopUpdates.mm +72 -0
  660. package/vendor/node_modules/@legendapp/spark-updates/package.json +44 -0
  661. package/vendor/node_modules/@legendapp/spark-updates/src/NativeDesktopUpdates.ts +4 -0
  662. package/vendor/node_modules/@legendapp/spark-updates/src/index.ts +23 -0
  663. package/vendor/node_modules/@legendapp/spark-webview/package.json +15 -0
  664. package/vendor/node_modules/@legendapp/spark-webview/src/index.ts +2 -0
  665. package/vendor/node_modules/@legendapp/spark-window-options/index.cjs +25 -0
  666. package/vendor/node_modules/@legendapp/spark-window-options/index.d.ts +12 -0
  667. package/vendor/node_modules/@legendapp/spark-window-options/package.json +12 -0
  668. package/webview.ts +1 -0
  669. package/windows.ts +1 -0
@@ -0,0 +1,112 @@
1
+ import { readFileSync } from "node:fs";
2
+ import http from "node:http";
3
+ import https from "node:https";
4
+ import WebSocket, { WebSocketServer } from "ws";
5
+ export function windowsMetroURL(request, port, options) {
6
+ const source = new URL(request), target = new URL(`${options.https ? "https" : "http"}://127.0.0.1:${port}`);
7
+ target.pathname = source.pathname;
8
+ target.search = source.search;
9
+ if (/\.(bundle|map)$/.test(target.pathname)) {
10
+ target.searchParams.set("dev", String(options.dev ?? true));
11
+ target.searchParams.set("minify", String(options.minify ?? false));
12
+ if (options.dev === false)
13
+ target.searchParams.set("hot", "false");
14
+ }
15
+ return target;
16
+ }
17
+ export async function startWindowsMetro(port, options) {
18
+ const ca = options.https && process.env.SSL_CRT_FILE ? readFileSync(process.env.SSL_CRT_FILE, "utf8") : undefined;
19
+ const sockets = new Set();
20
+ const remotes = new Set();
21
+ const server = http.createServer((request, response) => {
22
+ const target = windowsMetroURL(`http://127.0.0.1${request.url}`, port, options);
23
+ const headers = { ...request.headers };
24
+ delete headers.host;
25
+ delete headers.connection;
26
+ // Raw streams retain Content-Encoding/Length and avoid fetch decompression.
27
+ const upstream = (options.https ? https : http).request(target, { method: request.method, headers, ...(ca ? { ca } : {}) }, incoming => {
28
+ response.writeHead(incoming.statusCode ?? 502, incoming.headers);
29
+ incoming.on("error", error => response.destroy(error));
30
+ incoming.pipe(response);
31
+ });
32
+ upstream.on("error", error => {
33
+ if (!response.headersSent) {
34
+ response.writeHead(502);
35
+ response.end(`Expo Metro connection failed: ${String(error)}`);
36
+ }
37
+ else
38
+ response.destroy(error);
39
+ });
40
+ request.on("error", () => upstream.destroy());
41
+ request.on("aborted", () => upstream.destroy());
42
+ response.on("close", () => { if (!response.writableEnded)
43
+ upstream.destroy(); });
44
+ request.pipe(upstream);
45
+ });
46
+ server.on("connection", socket => { sockets.add(socket); socket.on("close", () => sockets.delete(socket)); });
47
+ const websocket = new WebSocketServer({ noServer: true });
48
+ server.on("upgrade", (request, socket, head) => {
49
+ websocket.handleUpgrade(request, socket, head, client => {
50
+ const target = windowsMetroURL(`http://127.0.0.1${request.url}`, port, options);
51
+ target.protocol = options.https ? "wss:" : "ws:";
52
+ const remote = new WebSocket(target, ca ? { ca } : {});
53
+ remotes.add(remote);
54
+ let pending = [], bytes = 0;
55
+ remote.on("open", () => {
56
+ for (const message of pending)
57
+ remote.send(message.data, { binary: message.binary });
58
+ pending = [];
59
+ bytes = 0;
60
+ });
61
+ remote.on("message", (data, binary) => { if (client.readyState === WebSocket.OPEN)
62
+ client.send(data, { binary }); });
63
+ remote.on("close", () => { remotes.delete(remote); client.close(); });
64
+ remote.on("error", () => client.close(1011, "Expo Metro WebSocket connection failed"));
65
+ client.on("message", (data, binary) => {
66
+ if (remote.readyState === WebSocket.OPEN)
67
+ remote.send(data, { binary });
68
+ else {
69
+ bytes += Array.isArray(data) ? data.reduce((sum, part) => sum + part.length, 0) : data.byteLength;
70
+ if (bytes > 1024 * 1024) {
71
+ remote.terminate();
72
+ client.close(1009, "Metro connection queue exceeded");
73
+ }
74
+ else
75
+ pending.push({ data, binary });
76
+ }
77
+ });
78
+ client.on("error", () => remote.terminate());
79
+ client.on("close", () => { remote.terminate(); pending = []; });
80
+ });
81
+ });
82
+ await new Promise((resolve, reject) => {
83
+ server.once("error", reject);
84
+ server.listen(0, "127.0.0.1", () => { server.off("error", reject); resolve(); });
85
+ });
86
+ server.unref();
87
+ return { port: server.address().port, stop(_force = true) {
88
+ for (const remote of remotes)
89
+ remote.terminate();
90
+ for (const client of websocket.clients)
91
+ client.terminate();
92
+ for (const socket of sockets)
93
+ socket.destroy();
94
+ websocket.close();
95
+ server.close();
96
+ } };
97
+ }
98
+ const connections = new Map();
99
+ export async function windowsMetroPort(root, port, options) {
100
+ const key = JSON.stringify([port, options.https ?? false, options.dev ?? true, options.minify ?? false]);
101
+ const previous = connections.get(root);
102
+ if (previous?.key === key)
103
+ return previous.server.port;
104
+ previous?.server.stop(true);
105
+ connections.delete(root);
106
+ if (!options.https && options.dev !== false && !options.minify)
107
+ return port;
108
+ const server = await startWindowsMetro(port, options);
109
+ connections.set(root, { key, server });
110
+ return server.port;
111
+ }
112
+ export function stopWindowsMetro(root) { connections.get(root)?.server.stop(true); connections.delete(root); }
@@ -0,0 +1,141 @@
1
+ import { which } from "./process.js";
2
+ import { prepareWindowsGeometry } from "./windows-geometry.js";
3
+ import { copyHelpers } from "./helpers.js";
4
+ import { registerWindowsAssociations } from "./windows-associations.js";
5
+ import { checkExpoDesktopNode } from "./expo-node.js";
6
+ import { cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, renameSync, rmSync, readFileSync, writeFileSync } from "node:fs";
7
+ import path from "node:path";
8
+ import { createRequire } from "node:module";
9
+ import { run } from "./commands.js";
10
+ import { prepareConfig, nativePackages, runtimeFor, stateFile, readJson, writeJson, validateBuildModules, goConfigurationIssues, readAppConfig } from "./project.js";
11
+ // Windows .cmd shims are shell programs; run the package's actual JS entry.
12
+ export function nodeCommand(root, name, bin, args = []) {
13
+ const req = createRequire(path.join(root, "package.json"));
14
+ const file = req.resolve(`${name}/package.json`), pkg = readJson(file);
15
+ return ["node", path.resolve(path.dirname(file), typeof pkg.bin === "string" ? pkg.bin : pkg.bin[bin]), ...args];
16
+ }
17
+ export async function preserveWindowsBuildOutputs(root, prepare) {
18
+ const windows = path.join(root, "windows");
19
+ const outputs = [];
20
+ function visit(directory) {
21
+ for (const entry of readdirSync(directory, { withFileTypes: true })) {
22
+ if (entry.isDirectory() && entry.name !== "node_modules") {
23
+ const file = path.join(directory, entry.name);
24
+ if (/^(arm64|x64|x86|win32)$/i.test(entry.name))
25
+ outputs.push(file);
26
+ else
27
+ visit(file);
28
+ }
29
+ }
30
+ }
31
+ if (existsSync(windows))
32
+ visit(windows);
33
+ const moved = [];
34
+ let temporary;
35
+ try {
36
+ if (outputs.length) {
37
+ const parent = stateFile(root, "prebuild-cache");
38
+ mkdirSync(parent, { recursive: true });
39
+ temporary = mkdtempSync(path.join(parent, "windows-"));
40
+ for (const source of outputs) {
41
+ const saved = path.join(temporary, String(moved.length));
42
+ renameSync(source, saved);
43
+ moved.push({ source, saved });
44
+ }
45
+ }
46
+ // Expo beta scans existing output folders as templates, including .Xaml directories.
47
+ await prepare();
48
+ }
49
+ finally {
50
+ for (const { source, saved } of moved)
51
+ renameSync(saved, source);
52
+ if (temporary)
53
+ rmSync(temporary, { recursive: true });
54
+ }
55
+ }
56
+ export async function prepareWindows(root, mode) {
57
+ await checkExpoDesktopNode(root);
58
+ prepareConfig(root);
59
+ prepareWindowsGeometry(root);
60
+ const packages = nativePackages(root);
61
+ validateBuildModules(mode, packages);
62
+ if (mode === "go") {
63
+ const issues = goConfigurationIssues(readAppConfig(root));
64
+ if (issues.length)
65
+ throw new Error(`Build the Spark Runner from a generic SDK starter: ${issues.join("; ")}`);
66
+ }
67
+ const runtime = runtimeFor(root, packages, mode);
68
+ writeJson(stateFile(root, "windows-build-input.json"), runtime);
69
+ writeJson(stateFile(root, "native-selection.json"), { included: packages.map(pkg => ({ name: pkg.name, root: pkg.root })), excluded: [] });
70
+ const manifest = readFileSync(path.join(root, "package.json"), "utf8");
71
+ try {
72
+ await preserveWindowsBuildOutputs(root, async () => {
73
+ await run(root, nodeCommand(root, "expo-desktop", "expo-desktop", ["prebuild", "--platform", "windows", "--template", "expo-desktop-template-bare-minimum@54.81.1-beta.6", "--no-install"]), { env: { CI: "1" }, capture: true });
74
+ });
75
+ // The beta template expands all-platform dependencies. Keep the consumer's installed graph.
76
+ }
77
+ finally {
78
+ writeFileSync(path.join(root, "package.json"), manifest);
79
+ }
80
+ return runtime;
81
+ }
82
+ export async function buildWindows(root, mode, force) {
83
+ if (mode !== "go" && mode !== "dev")
84
+ throw new Error("Windows currently supports Spark Runner runtimes and development builds. Use spark build --dev; production builds and packaging are not implemented.");
85
+ if (process.platform !== "win32")
86
+ throw new Error("Windows native builds require Windows x64 or ARM64. Project generation and Metro bundle checks can run on macOS.");
87
+ for (const tool of ["node", "pwsh.exe", "dotnet.exe"])
88
+ if (!which(tool))
89
+ throw new Error(`Missing ${tool}. See docs/windows-slice.md for the Windows native prerequisites.`);
90
+ const expected = runtimeFor(root, nativePackages(root), mode);
91
+ const record = stateFile(root, `${mode}-build.json`);
92
+ if (!force && existsSync(record)) {
93
+ const old = readJson(record);
94
+ if (old.runtime.arch === expected.arch && old.runtime.fingerprint === expected.fingerprint && existsSync(path.join(old.app, "MyApp.exe"))) {
95
+ if (mode === "dev")
96
+ await registerWindowsAssociations(root, old.app);
97
+ return old;
98
+ }
99
+ }
100
+ const runtime = await prepareWindows(root, mode);
101
+ const target = runtime.arch === "arm64" ? "ARM64" : "x64";
102
+ // RNW invokes x64 MSBuild even on ARM64 hosts. Match its compiler host to avoid
103
+ // falling back to x86 and exhausting address space while loading large PCHs.
104
+ await run(root, nodeCommand(root, "react-native", "react-native", ["run-windows", "--arch", target, "--msbuildprops", "PreferredToolArchitecture=x64", "--no-packager", "--no-launch", "--no-deploy", "--no-telemetry", "--logging", "--buildLogDirectory", stateFile(root, "logs/msbuild")]), { capture: true });
105
+ if (runtimeFor(root, nativePackages(root), mode).fingerprint !== runtime.fingerprint)
106
+ throw new Error("Native inputs changed during the build. Retry; no Windows runtime was registered.");
107
+ const products = [];
108
+ function visit(dir) {
109
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
110
+ const file = path.join(dir, entry.name);
111
+ if (entry.isDirectory() && !["Generated Files", "node_modules", "packages"].includes(entry.name))
112
+ visit(file);
113
+ else if (entry.isFile() && isWindowsDebugProduct(path.relative(path.join(root, "windows"), file), runtime.arch))
114
+ products.push(file);
115
+ }
116
+ }
117
+ visit(path.join(root, "windows"));
118
+ if (products.length !== 1)
119
+ throw new Error(`Expected one Windows Debug/${target} MyApp.exe; found ${products.length}. Inspect .spark/logs.`);
120
+ const app = stateFile(root, `products/${runtime.arch}/${mode}/SparkWindows`), pending = `${app}.pending`;
121
+ rmSync(pending, { recursive: true, force: true });
122
+ mkdirSync(path.dirname(pending), { recursive: true });
123
+ cpSync(path.dirname(products[0]), pending, { recursive: true });
124
+ copyHelpers(root, pending, readAppConfig(root).expo.extra?.spark?.helpers, "windows");
125
+ writeJson(path.join(pending, "spark-runtime.json"), runtime);
126
+ rmSync(app, { recursive: true, force: true });
127
+ // Copy only after a complete build, keeping Go and dev products independent.
128
+ const { renameSync } = await import("node:fs");
129
+ renameSync(pending, app);
130
+ const result = { app, runtime };
131
+ writeJson(record, result);
132
+ if (mode === "dev")
133
+ await registerWindowsAssociations(root, app);
134
+ console.log(`Built ${app}`);
135
+ return result;
136
+ }
137
+ export function isWindowsDebugProduct(relativeFile, arch) {
138
+ const parts = relativeFile.toLowerCase().split(/[\\/]/);
139
+ const architectureIndex = parts.indexOf(arch);
140
+ return parts.at(-1) === "myapp.exe" && architectureIndex >= 0 && parts.indexOf("debug", architectureIndex + 1) > architectureIndex;
141
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@legendapp/spark-cli",
3
+ "version": "0.0.1-next.2",
4
+ "license": "MIT",
5
+ "type": "module",
6
+ "files": [
7
+ "dist",
8
+ "templates"
9
+ ],
10
+ "engines": {
11
+ "node": ">=24.19.0"
12
+ },
13
+ "dependencies": {
14
+ "@legendapp/spark-desktop-config": "0.0.1-next.2",
15
+ "ws": "8.18.3",
16
+ "expo-desktop": "1.0.0-beta.6",
17
+ "npm": "11.11.0",
18
+ "typescript": "5.9.3",
19
+ "cross-spawn": "7.0.6"
20
+ },
21
+ "private": true
22
+ }
@@ -0,0 +1,29 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { Button, StyleSheet, Text, View } from "react-native";
3
+ import { openFileDialog } from "@legendapp/spark/dialogs";
4
+ import { configureMenus, clearMenus, addNativeMenuActionListener } from "@legendapp/spark/menus";
5
+
6
+ const menus = [{ id: "hello", title: "Hello", items: [{ id: "greet", title: "Say Hello" }] }];
7
+ export default function App({ runtime }: { runtime?: { mode: string } }) {
8
+ const [message, setMessage] = useState("Ready");
9
+ useEffect(() => {
10
+ configureMenus("hello-world", menus);
11
+ const subscription = addNativeMenuActionListener(action => {
12
+ if (action.ownerId === "hello-world" && action.itemId === "greet") setMessage("Hello from the native menu");
13
+ });
14
+ return () => { subscription.remove(); clearMenus("hello-world"); };
15
+ }, []);
16
+ async function chooseFile() {
17
+ try {
18
+ const files = await openFileDialog({ title: "Choose a file", allowsMultipleSelection: false });
19
+ setMessage(files?.join(", ") || "Dialog cancelled");
20
+ } catch (error) { setMessage(String(error)); }
21
+ }
22
+ return <View style={styles.root}>
23
+ <Text style={styles.title}>Hello, Legend Spark</Text>
24
+ <Text style={styles.text}>Runtime: {runtime?.mode ?? "unknown"}</Text>
25
+ <Button title="Choose a file" onPress={chooseFile} />
26
+ <Text style={styles.text} accessible accessibilityLabel={message}>{message}</Text>
27
+ </View>;
28
+ }
29
+ const styles = StyleSheet.create({ root: { flex: 1, alignItems: "center", justifyContent: "center", gap: 16, backgroundColor: "#f5f5f7" }, text: { color: "#18181b" }, title: { fontSize: 32, fontWeight: "600", color: "#18181b" } });
@@ -0,0 +1,11 @@
1
+ {
2
+ "expo": {
3
+ "name": "HelloWorld",
4
+ "slug": "helloworld",
5
+ "version": "0.0.1",
6
+ "platforms": [
7
+ "macos"
8
+ ],
9
+ "icon": "./assets/icon.png"
10
+ }
11
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "./node_modules/@legendapp/spark/schema.json",
3
+ "name": "HelloWorld",
4
+ "version": "0.0.1",
5
+ "window": {
6
+ "width": 1000,
7
+ "height": 700,
8
+ "restoreFrame": true
9
+ },
10
+ "macos": {
11
+ "bundleIdentifier": "so.legend.spark.prototype.helloworld"
12
+ },
13
+ "platforms": [
14
+ "macos"
15
+ ],
16
+ "expo": {
17
+ "icon": "./assets/icon.png"
18
+ }
19
+ }
@@ -0,0 +1,8 @@
1
+ node_modules/
2
+ .threaded-runtime/
3
+ .spark/
4
+ macos/
5
+ dist/
6
+ app.json
7
+ windows/
8
+ .expo/
@@ -0,0 +1,5 @@
1
+ require("@legendapp/spark/runtime-entry");
2
+ if (!(globalThis as any).__THREADED_RUNTIME_ENV__) {
3
+ const { registerRootComponent } = require("expo");
4
+ registerRootComponent(require("./App").default);
5
+ }
@@ -0,0 +1,3 @@
1
+ const { makeMetroConfig } = require("expo-desktop-metro-config");
2
+ const { withDesktop } = require("@legendapp/spark/metro");
3
+ module.exports = withDesktop(makeMetroConfig(__dirname));
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "spark-template-blank-typescript",
3
+ "version": "0.0.1",
4
+ "private": true,
5
+ "main": "index.ts",
6
+ "scripts": {
7
+ "start": "spark dev",
8
+ "macos": "spark dev",
9
+ "dev": "spark dev",
10
+ "build": "spark build",
11
+ "package": "spark package",
12
+ "doctor": "spark doctor",
13
+ "postinstall": "node node_modules/@legendapp/spark/init-template.cjs"
14
+ },
15
+ "dependencies": {
16
+ "@legendapp/spark": "0.0.1-next.2",
17
+ "expo": "54.0.37",
18
+ "expo-desktop": "1.0.0-beta.6",
19
+ "expo-desktop-prebuild-config": "1.1.0-beta.1",
20
+ "expo-desktop-config-plugins": "1.2.0-beta.1",
21
+ "expo-desktop-metro-config": "54.81.0-beta.3",
22
+ "expo-desktop-template-bare-minimum": "54.81.1-beta.6",
23
+ "react": "19.1.4",
24
+ "react-native": "0.81.6",
25
+ "react-native-macos": "0.81.7",
26
+ "@react-native-community/cli": "20.1.3",
27
+ "typescript": "5.9.3",
28
+ "@types/react": "19.1.10",
29
+ "@react-native-runtimes/core": "0.1.0-alpha.2"
30
+ },
31
+ "overrides": {
32
+ "@expo/cli": "54.0.27",
33
+ "react-native-nitro-modules": "0.35.7",
34
+ "react-native-webview": "16.0.0",
35
+ "@op-engineering/op-sqlite": "18.2.1",
36
+ "expo-asset": "12.0.13",
37
+ "expo-constants": "18.0.14",
38
+ "expo-file-system": "19.0.24",
39
+ "expo-font": "14.0.12",
40
+ "expo-keep-awake": "15.0.8",
41
+ "expo-modules-core": "3.0.30",
42
+ "expo-desktop-modules-core": "54.0.14-beta.0",
43
+ "expo-desktop-stubs": "54.0.14-beta.0",
44
+ "react": "19.1.4",
45
+ "react-native": "0.81.6"
46
+ },
47
+ "expo": {
48
+ "install": {
49
+ "exclude": [
50
+ "react",
51
+ "react-native"
52
+ ]
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "expo/tsconfig.base",
3
+ "compilerOptions": {
4
+ "strict": true
5
+ },
6
+ "include": [
7
+ "**/*.ts",
8
+ "**/*.tsx"
9
+ ]
10
+ }
@@ -0,0 +1,34 @@
1
+ import { useMemo, useState } from "react";
2
+ import { FlatList, SafeAreaView, StyleSheet, Text, View } from "react-native";
3
+ import { Button } from "@legendapp/spark/ui";
4
+ import { io } from "./shared/io";
5
+ import { Lifecycle } from "./shared/Lifecycle";
6
+ import { compare } from "./compare";
7
+ import { Git } from "./Git";
8
+ const clean = () => false, flush = async () => true;
9
+ export default function App({ windowId = "main" }: { windowId?: string }) {
10
+ const [left, setLeft] = useState({ name: "Original", text: "A shared application\nNative platform behavior\n" });
11
+ const [right, setRight] = useState({ name: "Changed", text: "A shared application\nNative platform behavior\nOne codebase\n" });
12
+ const [error, setError] = useState<string | null>(null);
13
+ const [patch, setPatch] = useState<string | null>(null);
14
+ const [busy, setBusy] = useState(false);
15
+ const commands = useMemo(() => [{ id: "open", title: "Open original…", key: "O", run: () => open("left") }], []);
16
+ async function open(side: "left" | "right") {
17
+ setBusy(true); setError(null);
18
+ try { const file = await io.open(); if (file) { if (file.text.length > 200_000) throw new Error("Choose a file smaller than 200,000 characters."); (side === "left" ? setLeft : setRight)({ name: file.file.name, text: file.text }); setPatch(null); } }
19
+ catch (error) { setError(String(error)); } finally { setBusy(false); }
20
+ }
21
+ const comparison = useMemo(() => { try { return { rows: compare(left.text, right.text), error: null }; } catch (error) { return { rows: [], error: String(error) }; } }, [left.text, right.text]);
22
+ const patchLines = useMemo(() => patch?.split("\n"), [patch]);
23
+ return <SafeAreaView style={styles.root}>
24
+ <Lifecycle title="Diff" windowId={windowId} flush={flush} dirty={clean} commands={commands} onError={setError} />
25
+ <Text style={styles.title}>Diff</Text><Text>{left.name} → {right.name}</Text>
26
+ <View style={styles.toolbar}><Button disabled={busy} onPress={() => { void open("left"); }}>Open original</Button><Button disabled={busy} onPress={() => { void open("right"); }}>Open changed</Button><Button onPress={() => { setLeft(right); setRight(left); setPatch(null); }}>Swap files</Button><Git onResult={setPatch} onError={setError} /></View>
27
+ <Text>− Removed · + Added · unchanged lines have no marker</Text>
28
+ {error || comparison.error ? <Text accessibilityRole="alert" style={styles.error}>{error ?? comparison.error}</Text> : null}
29
+ {patchLines ? <FlatList data={patchLines} keyExtractor={(_, index) => String(index)} renderItem={({ item }) => <Text selectable style={styles.code}>{item || " "}</Text>} /> : <FlatList data={comparison.rows} keyExtractor={(_, index) => String(index)} renderItem={({ item }) => <View style={[styles.line, item.kind === "added" && styles.added, item.kind === "removed" && styles.removed]}>
30
+ <Text style={styles.number}>{item.left ?? ""}</Text><Text style={styles.number}>{item.right ?? ""}</Text><Text selectable style={styles.code}>{item.kind === "added" ? "+ " : item.kind === "removed" ? "− " : " "}{item.text || " "}</Text>
31
+ </View>} />}
32
+ </SafeAreaView>;
33
+ }
34
+ const styles = StyleSheet.create({ root: { flex: 1, padding: 20, gap: 12, backgroundColor: "#faf9f6" }, title: { fontSize: 28, fontWeight: "600", color: "#222" }, toolbar: { flexDirection: "row", flexWrap: "wrap", gap: 8 }, line: { flexDirection: "row", paddingVertical: 3 }, number: { width: 36, color: "#555", textAlign: "right", paddingRight: 8, fontSize: 12 }, code: { flex: 1, flexShrink: 1, fontFamily: "monospace", fontSize: 13, color: "#222" }, added: { backgroundColor: "#ddf4df" }, removed: { backgroundColor: "#f9dddd" }, error: { color: "#a32020" } });
@@ -0,0 +1,13 @@
1
+ import { useState } from "react";
2
+ import { Button } from "@legendapp/spark/ui";
3
+ import { openFileDialog } from "@legendapp/spark/dialogs";
4
+ import { runCommand } from "@legendapp/spark/processes";
5
+ export function Git({ onResult, onError }: { onResult(text: string): void; onError(message: string): void }) {
6
+ const [busy, setBusy] = useState(false);
7
+ return <Button disabled={busy} onPress={() => { setBusy(true); void (async () => {
8
+ const paths = await openFileDialog({ canChooseDirectories: true, canChooseFiles: false }); if (!paths?.[0]) return;
9
+ const result = await runCommand({ executable: "/usr/bin/git", args: ["--no-pager", "diff", "--no-ext-diff", "--no-textconv", "--", "."], cwd: paths[0], timeoutMs: 10_000 });
10
+ if (result.timedOut || result.outputTruncated || result.exitCode !== 0) throw new Error(result.stderr || "Git comparison failed or exceeded its output limit");
11
+ onResult(result.stdout || "No unstaged changes.");
12
+ })().catch(error => onError(String(error))).finally(() => setBusy(false)); }}>{busy ? "Reading Git…" : "Open Git changes"}</Button>;
13
+ }
@@ -0,0 +1 @@
1
+ export function Git(_props: { onResult(text: string): void; onError(message: string): void }) { return null; }
@@ -0,0 +1,12 @@
1
+ import { diffLines } from "diff";
2
+ export type DiffLine = { kind: "same" | "added" | "removed"; text: string; left: number | null; right: number | null };
3
+ export function compare(left: string, right: string): DiffLine[] {
4
+ if (left.length + right.length > 400_000) throw new Error("Choose text files smaller than 200,000 characters each for this example.");
5
+ const changes = diffLines(left, right, { timeout: 300 });
6
+ if (!changes) throw new Error("These files take too long to compare. Try a smaller selection.");
7
+ let a = 0, b = 0;
8
+ return changes.flatMap(change => {
9
+ const lines = change.value.split("\n"); if (lines.at(-1) === "") lines.pop();
10
+ return lines.map(text => ({ kind: change.added ? "added" as const : change.removed ? "removed" as const : "same" as const, text, left: change.added ? null : ++a, right: change.removed ? null : ++b }));
11
+ });
12
+ }
@@ -0,0 +1,34 @@
1
+ import { useState } from "react";
2
+ import { Platform, SafeAreaView, StyleSheet, Text, TextInput, View } from "react-native";
3
+ import { Button } from "@legendapp/spark/ui";
4
+ import { Integration } from "./Integration";
5
+ import { sessionFor } from "./sessions";
6
+ import { useDocument } from "./useDocument";
7
+ export default function App({ windowId = "main", windowProps }: { windowId?: string; windowProps?: { documentId?: string } }) {
8
+ const documentId = windowProps?.documentId ?? "main";
9
+ const [session] = useState(() => sessionFor(documentId));
10
+ const state = useDocument(session);
11
+ const [guardsReady, setGuardsReady] = useState(Platform.OS !== "macos");
12
+ const copy = ["ios", "android", "web"].includes(Platform.OS);
13
+ return <SafeAreaView style={styles.root}>
14
+ <View style={styles.header}>
15
+ <Text style={styles.title}>{state.file.name}{session.dirty ? " •" : ""}</Text>
16
+ <Text>{copy ? "Open imports a copy. Save exports your text." : state.file.location ?? "Choose a location when saving."}</Text>
17
+ <View style={styles.toolbar}>
18
+ <Button disabled={state.busy || !guardsReady} onPress={() => { void session.newDocument(); }}>New</Button>
19
+ <Button disabled={state.busy || !guardsReady} onPress={() => { void session.open(); }}>Open</Button>
20
+ <Button disabled={state.busy || !guardsReady} onPress={() => { void session.save(); }}>{copy ? "Save a copy" : "Save"}</Button>
21
+ {!copy ? <Button disabled={state.busy || !guardsReady} onPress={() => { void session.save(true); }}>Save As</Button> : null}
22
+ </View>
23
+ <Integration session={session} windowId={windowId} documentId={documentId} onReady={setGuardsReady} />
24
+ {state.error ? <Text accessibilityRole="alert" style={styles.error}>{state.error}</Text> : null}
25
+ </View>
26
+ <TextInput testID="document-body" accessibilityLabel="Document text" multiline editable={guardsReady} value={state.text} onChangeText={session.edit} textAlignVertical="top" style={styles.editor} autoCapitalize="none" autoCorrect={false} />
27
+ <Text style={styles.status}>{state.busy ? "Working…" : session.dirty ? "Unsaved changes" : "Saved"} · {state.text.length} characters</Text>
28
+ </SafeAreaView>;
29
+ }
30
+ const styles = StyleSheet.create({
31
+ root: { flex: 1, backgroundColor: "#faf9f6" }, header: { padding: 20, gap: 10 }, title: { fontSize: 24, fontWeight: "600", color: "#222" },
32
+ toolbar: { flexDirection: "row", flexWrap: "wrap", gap: 8 }, editor: { flex: 1, marginHorizontal: 20, padding: 16, borderWidth: 1, borderColor: "#bbb", borderRadius: 6, backgroundColor: "white", color: "#222", fontSize: 16 },
33
+ error: { color: "#ad2020" }, status: { padding: 16, color: "#555" },
34
+ });
@@ -0,0 +1,57 @@
1
+ import { useEffect, useState } from "react";
2
+ import { Text } from "react-native";
3
+ import { Button } from "@legendapp/spark/ui";
4
+ import { beforeWindowClose, openWindow, setWindowTitle, onWindowEvent } from "@legendapp/spark/windows";
5
+ import { beforeQuit } from "@legendapp/spark/app";
6
+ import { configureMenus, clearMenus, addNativeMenuActionListener } from "@legendapp/spark/menus";
7
+ import { registerShortcut } from "@legendapp/spark/shortcuts";
8
+ import { onOpen } from "@legendapp/spark/links";
9
+ import { readTextFile } from "@legendapp/spark/dialogs";
10
+ import { sessions } from "./sessions";
11
+ import type { DocumentSession } from "./document";
12
+ let nextWindow = 0;
13
+ export function Integration({ session, windowId, documentId, onReady }: { session: DocumentSession; windowId: string; documentId: string; onReady: (ready: boolean) => void }) {
14
+ const [error, setError] = useState<string | null>(null);
15
+ useEffect(() => {
16
+ let removed = false;
17
+ const cleanups: (() => void | Promise<void>)[] = [];
18
+ const retain = async (registration: Promise<{ remove(): void | Promise<void> }>) => {
19
+ const subscription = await registration;
20
+ if (removed) await subscription.remove(); else cleanups.push(() => subscription.remove());
21
+ };
22
+ const owner = `editor-${windowId}`;
23
+ const actions: Record<string, () => unknown> = { new: () => session.newDocument(), open: () => session.open(), save: () => session.save(), saveAs: () => session.save(true) };
24
+ const menus = () => configureMenus(owner, [{ id: "file", title: "File", items: [
25
+ { id: "new", title: "New" }, { id: "open", title: "Open…" }, { id: "save", title: "Save" }, { id: "saveAs", title: "Save As…" },
26
+ ] }]);
27
+ menus(); cleanups.push(() => clearMenus(owner));
28
+ const menu = addNativeMenuActionListener(event => { if (event.ownerId === owner) actions[event.itemId]?.(); });
29
+ cleanups.push(() => menu.remove());
30
+ const focus = onWindowEvent(event => { if (event.type === "focus" && event.windowId === windowId) menus(); });
31
+ cleanups.push(() => focus.remove());
32
+ const title = () => { const state = session.getSnapshot(); void setWindowTitle(windowId, `${state.file.name}${session.dirty ? " •" : ""}`).catch(e => setError(String(e))); };
33
+ title(); cleanups.push(session.subscribe(title));
34
+ void (async () => {
35
+ await retain(beforeWindowClose(windowId, session.canClose));
36
+ for (const [key, action] of Object.entries({ "Command+N": actions.new!, "Command+O": actions.open!, "Command+S": actions.save!, "Command+Shift+S": actions.saveAs! })) {
37
+ await retain(registerShortcut(key, () => { action(); }, { windowId }));
38
+ }
39
+ if (windowId === "main") {
40
+ await retain(beforeQuit(async () => { for (const document of sessions.values()) if (!await document.canClose()) return false; return true; }));
41
+ await retain(onOpen(event => {
42
+ if (event.type !== "openFile") return;
43
+ const match = /^file:\/\/(?:localhost)?(\/.*)$/.exec(event.url);
44
+ if (!match) { setError("Unsupported file URL"); return; }
45
+ const location = decodeURIComponent(match[1]!);
46
+ void readTextFile(location).then(text => session.load({ location, name: location.split("/").pop()! }, text)).catch(e => setError(String(e)));
47
+ }));
48
+ }
49
+ if (!removed) onReady(true);
50
+ })().catch(e => setError(String(e)));
51
+ return () => { removed = true; for (const cleanup of cleanups.reverse()) void Promise.resolve().then(cleanup).catch(console.error); };
52
+ }, [session, windowId, onReady]);
53
+ return <>
54
+ <Button onPress={() => { void openWindow({ id: `document-${++nextWindow}`, title: session.getSnapshot().file.name, width: 800, height: 600, props: { documentId } }).catch(e => setError(String(e))); }}>Open another view</Button>
55
+ {error ? <Text accessibilityRole="alert">{error}</Text> : null}
56
+ </>;
57
+ }
@@ -0,0 +1,13 @@
1
+ import { useEffect } from "react";
2
+ import { BackHandler } from "react-native";
3
+ import type { DocumentSession } from "./document";
4
+ export function Integration({ session }: { session: DocumentSession; windowId: string; documentId: string; onReady: (ready: boolean) => void }) {
5
+ useEffect(() => {
6
+ const back = BackHandler.addEventListener("hardwareBackPress", () => {
7
+ if (!session.dirty) return false;
8
+ void session.canClose().then(allow => { if (allow) BackHandler.exitApp(); }); return true;
9
+ });
10
+ return () => back.remove();
11
+ }, [session]);
12
+ return null;
13
+ }
@@ -0,0 +1,14 @@
1
+ import { useEffect } from "react";
2
+ import type { DocumentSession } from "./document";
3
+ export function Integration({ session }: { session: DocumentSession; windowId: string; documentId: string; onReady: (ready: boolean) => void }) {
4
+ useEffect(() => {
5
+ const unload = (event: BeforeUnloadEvent) => { if (session.dirty) { event.preventDefault(); event.returnValue = ""; } };
6
+ const key = (event: KeyboardEvent) => {
7
+ if (!(event.metaKey || event.ctrlKey) || !["s", "o"].includes(event.key.toLowerCase())) return;
8
+ event.preventDefault(); if (event.key.toLowerCase() === "s") void session.save(event.shiftKey); else void session.open();
9
+ };
10
+ window.addEventListener("beforeunload", unload); window.addEventListener("keydown", key);
11
+ return () => { window.removeEventListener("beforeunload", unload); window.removeEventListener("keydown", key); };
12
+ }, [session]);
13
+ return null;
14
+ }