@superblocksteam/vite-plugin-file-sync 1.99.99-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 (578) hide show
  1. package/LICENSE.txt +87 -0
  2. package/dist/ai-service/app-interface/shell.d.ts +15 -0
  3. package/dist/ai-service/app-interface/shell.d.ts.map +1 -0
  4. package/dist/ai-service/app-interface/shell.js +81 -0
  5. package/dist/ai-service/app-interface/shell.js.map +1 -0
  6. package/dist/ai-service/artifacts/bolt.d.ts +8 -0
  7. package/dist/ai-service/artifacts/bolt.d.ts.map +1 -0
  8. package/dist/ai-service/artifacts/bolt.js +34 -0
  9. package/dist/ai-service/artifacts/bolt.js.map +1 -0
  10. package/dist/ai-service/const.d.ts +9 -0
  11. package/dist/ai-service/const.d.ts.map +1 -0
  12. package/dist/ai-service/const.js +10 -0
  13. package/dist/ai-service/const.js.map +1 -0
  14. package/dist/ai-service/eval/template-renderer.d.ts +13 -0
  15. package/dist/ai-service/eval/template-renderer.d.ts.map +1 -0
  16. package/dist/ai-service/eval/template-renderer.js +67 -0
  17. package/dist/ai-service/eval/template-renderer.js.map +1 -0
  18. package/dist/ai-service/index.d.ts +21 -0
  19. package/dist/ai-service/index.d.ts.map +1 -0
  20. package/dist/ai-service/index.js +153 -0
  21. package/dist/ai-service/index.js.map +1 -0
  22. package/dist/ai-service/integrations/const.d.ts +41 -0
  23. package/dist/ai-service/integrations/const.d.ts.map +1 -0
  24. package/dist/ai-service/integrations/const.js +76 -0
  25. package/dist/ai-service/integrations/const.js.map +1 -0
  26. package/dist/ai-service/integrations/from-prompt-context.d.ts +4 -0
  27. package/dist/ai-service/integrations/from-prompt-context.d.ts.map +1 -0
  28. package/dist/ai-service/integrations/from-prompt-context.js +56 -0
  29. package/dist/ai-service/integrations/from-prompt-context.js.map +1 -0
  30. package/dist/ai-service/integrations/to-sdk-prompt.d.ts +3 -0
  31. package/dist/ai-service/integrations/to-sdk-prompt.d.ts.map +1 -0
  32. package/dist/ai-service/integrations/to-sdk-prompt.js +45 -0
  33. package/dist/ai-service/integrations/to-sdk-prompt.js.map +1 -0
  34. package/dist/ai-service/integrations/types.d.ts +31 -0
  35. package/dist/ai-service/integrations/types.d.ts.map +1 -0
  36. package/dist/ai-service/integrations/types.js +2 -0
  37. package/dist/ai-service/integrations/types.js.map +1 -0
  38. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.d.ts +2 -0
  39. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.d.ts.map +1 -0
  40. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.js +386 -0
  41. package/dist/ai-service/prompts/draft-subprompts/superblocks-api-draft.js.map +1 -0
  42. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.d.ts +2 -0
  43. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.d.ts.map +1 -0
  44. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.js +219 -0
  45. package/dist/ai-service/prompts/draft-subprompts/superblocks-layouts-with-grid-examples.js.map +1 -0
  46. package/dist/ai-service/prompts/generated/index.d.ts +4 -0
  47. package/dist/ai-service/prompts/generated/index.d.ts.map +1 -0
  48. package/dist/ai-service/prompts/generated/index.js +6 -0
  49. package/dist/ai-service/prompts/generated/index.js.map +1 -0
  50. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts +2 -0
  51. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts.map +1 -0
  52. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js +6 -0
  53. package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js.map +1 -0
  54. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts +2 -0
  55. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts.map +1 -0
  56. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js +6 -0
  57. package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js.map +1 -0
  58. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts +2 -0
  59. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts.map +1 -0
  60. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js +6 -0
  61. package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js.map +1 -0
  62. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts +2 -0
  63. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts.map +1 -0
  64. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js +6 -0
  65. package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js.map +1 -0
  66. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts +2 -0
  67. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts.map +1 -0
  68. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js +6 -0
  69. package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js.map +1 -0
  70. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts +2 -0
  71. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts.map +1 -0
  72. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js +6 -0
  73. package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js.map +1 -0
  74. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts +2 -0
  75. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts.map +1 -0
  76. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js +6 -0
  77. package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js.map +1 -0
  78. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts +2 -0
  79. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts.map +1 -0
  80. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js +6 -0
  81. package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js.map +1 -0
  82. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts +2 -0
  83. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts.map +1 -0
  84. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js +6 -0
  85. package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js.map +1 -0
  86. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts +2 -0
  87. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts.map +1 -0
  88. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js +6 -0
  89. package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js.map +1 -0
  90. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts +2 -0
  91. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts.map +1 -0
  92. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js +6 -0
  93. package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js.map +1 -0
  94. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts +2 -0
  95. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts.map +1 -0
  96. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js +6 -0
  97. package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js.map +1 -0
  98. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts +2 -0
  99. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts.map +1 -0
  100. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js +6 -0
  101. package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js.map +1 -0
  102. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts +2 -0
  103. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts.map +1 -0
  104. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js +6 -0
  105. package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js.map +1 -0
  106. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts +2 -0
  107. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts.map +1 -0
  108. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js +6 -0
  109. package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js.map +1 -0
  110. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts +2 -0
  111. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts.map +1 -0
  112. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js +6 -0
  113. package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js.map +1 -0
  114. package/dist/ai-service/prompts/generated/library-components/index.d.ts +17 -0
  115. package/dist/ai-service/prompts/generated/library-components/index.d.ts.map +1 -0
  116. package/dist/ai-service/prompts/generated/library-components/index.js +19 -0
  117. package/dist/ai-service/prompts/generated/library-components/index.js.map +1 -0
  118. package/dist/ai-service/prompts/generated/library-typedefs/Dim.d.ts +2 -0
  119. package/dist/ai-service/prompts/generated/library-typedefs/Dim.d.ts.map +1 -0
  120. package/dist/ai-service/prompts/generated/library-typedefs/Dim.js +6 -0
  121. package/dist/ai-service/prompts/generated/library-typedefs/Dim.js.map +1 -0
  122. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts +2 -0
  123. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts.map +1 -0
  124. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js +6 -0
  125. package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js.map +1 -0
  126. package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts +3 -0
  127. package/dist/ai-service/prompts/generated/library-typedefs/index.d.ts.map +1 -0
  128. package/dist/ai-service/prompts/generated/library-typedefs/index.js +5 -0
  129. package/dist/ai-service/prompts/generated/library-typedefs/index.js.map +1 -0
  130. package/dist/ai-service/prompts/generated/subprompts/index.d.ts +11 -0
  131. package/dist/ai-service/prompts/generated/subprompts/index.d.ts.map +1 -0
  132. package/dist/ai-service/prompts/generated/subprompts/index.js +13 -0
  133. package/dist/ai-service/prompts/generated/subprompts/index.js.map +1 -0
  134. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts +2 -0
  135. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts.map +1 -0
  136. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js +6 -0
  137. package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js.map +1 -0
  138. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts +2 -0
  139. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts.map +1 -0
  140. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js +6 -0
  141. package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js.map +1 -0
  142. package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.d.ts +2 -0
  143. package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.d.ts.map +1 -0
  144. package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js +6 -0
  145. package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js.map +1 -0
  146. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts +2 -0
  147. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts.map +1 -0
  148. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js +6 -0
  149. package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js.map +1 -0
  150. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts +2 -0
  151. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts.map +1 -0
  152. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js +6 -0
  153. package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js.map +1 -0
  154. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts +2 -0
  155. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts.map +1 -0
  156. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js +6 -0
  157. package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js.map +1 -0
  158. package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.d.ts +2 -0
  159. package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.d.ts.map +1 -0
  160. package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js +6 -0
  161. package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js.map +1 -0
  162. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts +2 -0
  163. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts.map +1 -0
  164. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js +6 -0
  165. package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js.map +1 -0
  166. package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.d.ts +2 -0
  167. package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.d.ts.map +1 -0
  168. package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js +6 -0
  169. package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js.map +1 -0
  170. package/dist/ai-service/prompts/generated/subprompts/system.d.ts +2 -0
  171. package/dist/ai-service/prompts/generated/subprompts/system.d.ts.map +1 -0
  172. package/dist/ai-service/prompts/generated/subprompts/system.js +6 -0
  173. package/dist/ai-service/prompts/generated/subprompts/system.js.map +1 -0
  174. package/dist/ai-service/prompts/markdown-loader.d.ts +10 -0
  175. package/dist/ai-service/prompts/markdown-loader.d.ts.map +1 -0
  176. package/dist/ai-service/prompts/markdown-loader.js +71 -0
  177. package/dist/ai-service/prompts/markdown-loader.js.map +1 -0
  178. package/dist/ai-service/prompts/system.d.ts +2 -0
  179. package/dist/ai-service/prompts/system.d.ts.map +1 -0
  180. package/dist/ai-service/prompts/system.js +152 -0
  181. package/dist/ai-service/prompts/system.js.map +1 -0
  182. package/dist/ai-service/result-buffer/bolt.d.ts +15 -0
  183. package/dist/ai-service/result-buffer/bolt.d.ts.map +1 -0
  184. package/dist/ai-service/result-buffer/bolt.js +73 -0
  185. package/dist/ai-service/result-buffer/bolt.js.map +1 -0
  186. package/dist/ai-service/result-buffer/shared.d.ts +13 -0
  187. package/dist/ai-service/result-buffer/shared.d.ts.map +1 -0
  188. package/dist/ai-service/result-buffer/shared.js +7 -0
  189. package/dist/ai-service/result-buffer/shared.js.map +1 -0
  190. package/dist/ai-service/state-machine/clark-fsm.d.ts +177 -0
  191. package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -0
  192. package/dist/ai-service/state-machine/clark-fsm.js +70 -0
  193. package/dist/ai-service/state-machine/clark-fsm.js.map +1 -0
  194. package/dist/ai-service/state-machine/fsm.d.ts +42 -0
  195. package/dist/ai-service/state-machine/fsm.d.ts.map +1 -0
  196. package/dist/ai-service/state-machine/fsm.js +64 -0
  197. package/dist/ai-service/state-machine/fsm.js.map +1 -0
  198. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts +3 -0
  199. package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -0
  200. package/dist/ai-service/state-machine/handlers/agent-planning.js +263 -0
  201. package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -0
  202. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts +3 -0
  203. package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -0
  204. package/dist/ai-service/state-machine/handlers/awaiting-user.js +36 -0
  205. package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -0
  206. package/dist/ai-service/state-machine/handlers/idle.d.ts +3 -0
  207. package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -0
  208. package/dist/ai-service/state-machine/handlers/idle.js +24 -0
  209. package/dist/ai-service/state-machine/handlers/idle.js.map +1 -0
  210. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +3 -0
  211. package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -0
  212. package/dist/ai-service/state-machine/handlers/llm-generating.js +160 -0
  213. package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -0
  214. package/dist/ai-service/state-machine/handlers/play-dead.d.ts +3 -0
  215. package/dist/ai-service/state-machine/handlers/play-dead.d.ts.map +1 -0
  216. package/dist/ai-service/state-machine/handlers/play-dead.js +11 -0
  217. package/dist/ai-service/state-machine/handlers/play-dead.js.map +1 -0
  218. package/dist/ai-service/state-machine/handlers/post-processing.d.ts +3 -0
  219. package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -0
  220. package/dist/ai-service/state-machine/handlers/post-processing.js +85 -0
  221. package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -0
  222. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts +4 -0
  223. package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -0
  224. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +40 -0
  225. package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -0
  226. package/dist/ai-service/state-machine/helpers/metadata.d.ts +6 -0
  227. package/dist/ai-service/state-machine/helpers/metadata.d.ts.map +1 -0
  228. package/dist/ai-service/state-machine/helpers/metadata.js +11 -0
  229. package/dist/ai-service/state-machine/helpers/metadata.js.map +1 -0
  230. package/dist/ai-service/state-machine/helpers/peer.d.ts +5 -0
  231. package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -0
  232. package/dist/ai-service/state-machine/helpers/peer.js +7 -0
  233. package/dist/ai-service/state-machine/helpers/peer.js.map +1 -0
  234. package/dist/ai-service/state-machine/helpers/transition.d.ts +12 -0
  235. package/dist/ai-service/state-machine/helpers/transition.d.ts.map +1 -0
  236. package/dist/ai-service/state-machine/helpers/transition.js +12 -0
  237. package/dist/ai-service/state-machine/helpers/transition.js.map +1 -0
  238. package/dist/ai-service/state-machine/mocks.d.ts +7 -0
  239. package/dist/ai-service/state-machine/mocks.d.ts.map +1 -0
  240. package/dist/ai-service/state-machine/mocks.js +72 -0
  241. package/dist/ai-service/state-machine/mocks.js.map +1 -0
  242. package/dist/ai-service/state-machine/test-util.d.ts +5 -0
  243. package/dist/ai-service/state-machine/test-util.d.ts.map +1 -0
  244. package/dist/ai-service/state-machine/test-util.js +29 -0
  245. package/dist/ai-service/state-machine/test-util.js.map +1 -0
  246. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.d.ts +21 -0
  247. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.d.ts.map +1 -0
  248. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js +48 -0
  249. package/dist/ai-service/transform/add-metadata-to-api-yaml/transformer.js.map +1 -0
  250. package/dist/ai-service/transform/api-builder/shared.d.ts +11 -0
  251. package/dist/ai-service/transform/api-builder/shared.d.ts.map +1 -0
  252. package/dist/ai-service/transform/api-builder/shared.js +55 -0
  253. package/dist/ai-service/transform/api-builder/shared.js.map +1 -0
  254. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts +27 -0
  255. package/dist/ai-service/transform/api-builder/to-sdk-transformer.d.ts.map +1 -0
  256. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +67 -0
  257. package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -0
  258. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts +23 -0
  259. package/dist/ai-service/transform/api-builder/to-yaml-transformer.d.ts.map +1 -0
  260. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js +59 -0
  261. package/dist/ai-service/transform/api-builder/to-yaml-transformer.js.map +1 -0
  262. package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts +19 -0
  263. package/dist/ai-service/transform/remove-api-builder-imports/transformer.d.ts.map +1 -0
  264. package/dist/ai-service/transform/remove-api-builder-imports/transformer.js +45 -0
  265. package/dist/ai-service/transform/remove-api-builder-imports/transformer.js.map +1 -0
  266. package/dist/ai-service/transform/shared.d.ts +20 -0
  267. package/dist/ai-service/transform/shared.d.ts.map +1 -0
  268. package/dist/ai-service/transform/shared.js +134 -0
  269. package/dist/ai-service/transform/shared.js.map +1 -0
  270. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts +17 -0
  271. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.d.ts.map +1 -0
  272. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js +33 -0
  273. package/dist/ai-service/transform/workaround-missing-sbapi/transformer.js.map +1 -0
  274. package/dist/ai-service/types.d.ts +71 -0
  275. package/dist/ai-service/types.d.ts.map +1 -0
  276. package/dist/ai-service/types.js +8 -0
  277. package/dist/ai-service/types.js.map +1 -0
  278. package/dist/binding-extraction/extract-control-block-identifiers.d.ts +4 -0
  279. package/dist/binding-extraction/extract-control-block-identifiers.d.ts.map +1 -0
  280. package/dist/binding-extraction/extract-control-block-identifiers.js +86 -0
  281. package/dist/binding-extraction/extract-control-block-identifiers.js.map +1 -0
  282. package/dist/binding-extraction/extract-embedded-identifiers.d.ts +16 -0
  283. package/dist/binding-extraction/extract-embedded-identifiers.d.ts.map +1 -0
  284. package/dist/binding-extraction/extract-embedded-identifiers.js +100 -0
  285. package/dist/binding-extraction/extract-embedded-identifiers.js.map +1 -0
  286. package/dist/binding-extraction/extract-identifiers.d.ts +8 -0
  287. package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -0
  288. package/dist/binding-extraction/extract-identifiers.js +150 -0
  289. package/dist/binding-extraction/extract-identifiers.js.map +1 -0
  290. package/dist/binding-extraction/extract-js-identifiers.d.ts +19 -0
  291. package/dist/binding-extraction/extract-js-identifiers.d.ts.map +1 -0
  292. package/dist/binding-extraction/extract-js-identifiers.js +161 -0
  293. package/dist/binding-extraction/extract-js-identifiers.js.map +1 -0
  294. package/dist/binding-extraction/extract-py-identifiers.d.ts +4 -0
  295. package/dist/binding-extraction/extract-py-identifiers.d.ts.map +1 -0
  296. package/dist/binding-extraction/extract-py-identifiers.js +161 -0
  297. package/dist/binding-extraction/extract-py-identifiers.js.map +1 -0
  298. package/dist/binding-extraction/shared.d.ts +225 -0
  299. package/dist/binding-extraction/shared.d.ts.map +1 -0
  300. package/dist/binding-extraction/shared.js +43 -0
  301. package/dist/binding-extraction/shared.js.map +1 -0
  302. package/dist/binding-extraction/template-strings.d.ts +9 -0
  303. package/dist/binding-extraction/template-strings.d.ts.map +1 -0
  304. package/dist/binding-extraction/template-strings.js +45 -0
  305. package/dist/binding-extraction/template-strings.js.map +1 -0
  306. package/dist/codegen.d.ts +26 -0
  307. package/dist/codegen.d.ts.map +1 -0
  308. package/dist/codegen.js +222 -0
  309. package/dist/codegen.js.map +1 -0
  310. package/dist/components-manager.d.ts +38 -0
  311. package/dist/components-manager.d.ts.map +1 -0
  312. package/dist/components-manager.js +177 -0
  313. package/dist/components-manager.js.map +1 -0
  314. package/dist/custom-components.d.ts +6 -0
  315. package/dist/custom-components.d.ts.map +1 -0
  316. package/dist/custom-components.js +51 -0
  317. package/dist/custom-components.js.map +1 -0
  318. package/dist/draft-interface.d.ts +12 -0
  319. package/dist/draft-interface.d.ts.map +1 -0
  320. package/dist/draft-interface.js +2 -0
  321. package/dist/draft-interface.js.map +1 -0
  322. package/dist/errors/error-handler.d.ts +35 -0
  323. package/dist/errors/error-handler.d.ts.map +1 -0
  324. package/dist/errors/error-handler.js +65 -0
  325. package/dist/errors/error-handler.js.map +1 -0
  326. package/dist/errors/make-server-error.d.ts +5 -0
  327. package/dist/errors/make-server-error.d.ts.map +1 -0
  328. package/dist/errors/make-server-error.js +21 -0
  329. package/dist/errors/make-server-error.js.map +1 -0
  330. package/dist/file-sync-vite-plugin.d.ts +4 -0
  331. package/dist/file-sync-vite-plugin.d.ts.map +1 -0
  332. package/dist/file-sync-vite-plugin.js +691 -0
  333. package/dist/file-sync-vite-plugin.js.map +1 -0
  334. package/dist/file-system-helpers.d.ts +7 -0
  335. package/dist/file-system-helpers.d.ts.map +1 -0
  336. package/dist/file-system-helpers.js +12 -0
  337. package/dist/file-system-helpers.js.map +1 -0
  338. package/dist/file-system-manager.d.ts +133 -0
  339. package/dist/file-system-manager.d.ts.map +1 -0
  340. package/dist/file-system-manager.js +1205 -0
  341. package/dist/file-system-manager.js.map +1 -0
  342. package/dist/generate.d.ts +8 -0
  343. package/dist/generate.d.ts.map +1 -0
  344. package/dist/generate.js +7 -0
  345. package/dist/generate.js.map +1 -0
  346. package/dist/ids.d.ts +2 -0
  347. package/dist/ids.d.ts.map +1 -0
  348. package/dist/ids.js +21 -0
  349. package/dist/ids.js.map +1 -0
  350. package/dist/index.d.ts +6 -0
  351. package/dist/index.d.ts.map +1 -0
  352. package/dist/index.js +6 -0
  353. package/dist/index.js.map +1 -0
  354. package/dist/injected-index.d.ts +12 -0
  355. package/dist/injected-index.d.ts.map +1 -0
  356. package/dist/injected-index.js +38 -0
  357. package/dist/injected-index.js.map +1 -0
  358. package/dist/lock-service/index.d.ts +108 -0
  359. package/dist/lock-service/index.d.ts.map +1 -0
  360. package/dist/lock-service/index.js +324 -0
  361. package/dist/lock-service/index.js.map +1 -0
  362. package/dist/parsing/bindings.d.ts +4 -0
  363. package/dist/parsing/bindings.d.ts.map +1 -0
  364. package/dist/parsing/bindings.js +17 -0
  365. package/dist/parsing/bindings.js.map +1 -0
  366. package/dist/parsing/computed/index.d.ts +4 -0
  367. package/dist/parsing/computed/index.d.ts.map +1 -0
  368. package/dist/parsing/computed/index.js +7 -0
  369. package/dist/parsing/computed/index.js.map +1 -0
  370. package/dist/parsing/computed/to-code-computed.d.ts +2 -0
  371. package/dist/parsing/computed/to-code-computed.d.ts.map +1 -0
  372. package/dist/parsing/computed/to-code-computed.js +43 -0
  373. package/dist/parsing/computed/to-code-computed.js.map +1 -0
  374. package/dist/parsing/computed/to-value-computed.d.ts +4 -0
  375. package/dist/parsing/computed/to-value-computed.d.ts.map +1 -0
  376. package/dist/parsing/computed/to-value-computed.js +13 -0
  377. package/dist/parsing/computed/to-value-computed.js.map +1 -0
  378. package/dist/parsing/dim/index.d.ts +5 -0
  379. package/dist/parsing/dim/index.d.ts.map +1 -0
  380. package/dist/parsing/dim/index.js +7 -0
  381. package/dist/parsing/dim/index.js.map +1 -0
  382. package/dist/parsing/dim/to-code-dimensions.d.ts +3 -0
  383. package/dist/parsing/dim/to-code-dimensions.d.ts.map +1 -0
  384. package/dist/parsing/dim/to-code-dimensions.js +22 -0
  385. package/dist/parsing/dim/to-code-dimensions.js.map +1 -0
  386. package/dist/parsing/dim/to-value-dimensions.d.ts +4 -0
  387. package/dist/parsing/dim/to-value-dimensions.d.ts.map +1 -0
  388. package/dist/parsing/dim/to-value-dimensions.js +39 -0
  389. package/dist/parsing/dim/to-value-dimensions.js.map +1 -0
  390. package/dist/parsing/entity/index.d.ts +7 -0
  391. package/dist/parsing/entity/index.d.ts.map +1 -0
  392. package/dist/parsing/entity/index.js +7 -0
  393. package/dist/parsing/entity/index.js.map +1 -0
  394. package/dist/parsing/entity/to-code-entity.d.ts +3 -0
  395. package/dist/parsing/entity/to-code-entity.d.ts.map +1 -0
  396. package/dist/parsing/entity/to-code-entity.js +41 -0
  397. package/dist/parsing/entity/to-code-entity.js.map +1 -0
  398. package/dist/parsing/entity/to-value-entity.d.ts +8 -0
  399. package/dist/parsing/entity/to-value-entity.d.ts.map +1 -0
  400. package/dist/parsing/entity/to-value-entity.js +120 -0
  401. package/dist/parsing/entity/to-value-entity.js.map +1 -0
  402. package/dist/parsing/events/index.d.ts +5 -0
  403. package/dist/parsing/events/index.d.ts.map +1 -0
  404. package/dist/parsing/events/index.js +7 -0
  405. package/dist/parsing/events/index.js.map +1 -0
  406. package/dist/parsing/events/to-code-events.d.ts +3 -0
  407. package/dist/parsing/events/to-code-events.d.ts.map +1 -0
  408. package/dist/parsing/events/to-code-events.js +100 -0
  409. package/dist/parsing/events/to-code-events.js.map +1 -0
  410. package/dist/parsing/events/to-value-events.d.ts +6 -0
  411. package/dist/parsing/events/to-value-events.d.ts.map +1 -0
  412. package/dist/parsing/events/to-value-events.js +194 -0
  413. package/dist/parsing/events/to-value-events.js.map +1 -0
  414. package/dist/parsing/ids.d.ts +17 -0
  415. package/dist/parsing/ids.d.ts.map +1 -0
  416. package/dist/parsing/ids.js +143 -0
  417. package/dist/parsing/ids.js.map +1 -0
  418. package/dist/parsing/imports.d.ts +6 -0
  419. package/dist/parsing/imports.d.ts.map +1 -0
  420. package/dist/parsing/imports.js +31 -0
  421. package/dist/parsing/imports.js.map +1 -0
  422. package/dist/parsing/jsx-utils.d.ts +9 -0
  423. package/dist/parsing/jsx-utils.d.ts.map +1 -0
  424. package/dist/parsing/jsx-utils.js +48 -0
  425. package/dist/parsing/jsx-utils.js.map +1 -0
  426. package/dist/parsing/jsx.d.ts +23 -0
  427. package/dist/parsing/jsx.d.ts.map +1 -0
  428. package/dist/parsing/jsx.js +330 -0
  429. package/dist/parsing/jsx.js.map +1 -0
  430. package/dist/parsing/page.d.ts +9 -0
  431. package/dist/parsing/page.d.ts.map +1 -0
  432. package/dist/parsing/page.js +156 -0
  433. package/dist/parsing/page.js.map +1 -0
  434. package/dist/parsing/properties.d.ts +5 -0
  435. package/dist/parsing/properties.d.ts.map +1 -0
  436. package/dist/parsing/properties.js +89 -0
  437. package/dist/parsing/properties.js.map +1 -0
  438. package/dist/parsing/scope.d.ts +90 -0
  439. package/dist/parsing/scope.d.ts.map +1 -0
  440. package/dist/parsing/scope.js +669 -0
  441. package/dist/parsing/scope.js.map +1 -0
  442. package/dist/parsing/template/index.d.ts +5 -0
  443. package/dist/parsing/template/index.d.ts.map +1 -0
  444. package/dist/parsing/template/index.js +7 -0
  445. package/dist/parsing/template/index.js.map +1 -0
  446. package/dist/parsing/template/to-code-template.d.ts +2 -0
  447. package/dist/parsing/template/to-code-template.d.ts.map +1 -0
  448. package/dist/parsing/template/to-code-template.js +5 -0
  449. package/dist/parsing/template/to-code-template.js.map +1 -0
  450. package/dist/parsing/template/to-value-template.d.ts +4 -0
  451. package/dist/parsing/template/to-value-template.d.ts.map +1 -0
  452. package/dist/parsing/template/to-value-template.js +30 -0
  453. package/dist/parsing/template/to-value-template.js.map +1 -0
  454. package/dist/parsing/theme.d.ts +3 -0
  455. package/dist/parsing/theme.d.ts.map +1 -0
  456. package/dist/parsing/theme.js +87 -0
  457. package/dist/parsing/theme.js.map +1 -0
  458. package/dist/parsing/type-parsing-registry.d.ts +8 -0
  459. package/dist/parsing/type-parsing-registry.d.ts.map +1 -0
  460. package/dist/parsing/type-parsing-registry.js +11 -0
  461. package/dist/parsing/type-parsing-registry.js.map +1 -0
  462. package/dist/parsing/types.d.ts +9 -0
  463. package/dist/parsing/types.d.ts.map +1 -0
  464. package/dist/parsing/types.js +2 -0
  465. package/dist/parsing/types.js.map +1 -0
  466. package/dist/parsing/util.d.ts +34 -0
  467. package/dist/parsing/util.d.ts.map +1 -0
  468. package/dist/parsing/util.js +338 -0
  469. package/dist/parsing/util.js.map +1 -0
  470. package/dist/plugin-options.d.ts +25 -0
  471. package/dist/plugin-options.d.ts.map +1 -0
  472. package/dist/plugin-options.js +14 -0
  473. package/dist/plugin-options.js.map +1 -0
  474. package/dist/refactor/blocks.d.ts +10 -0
  475. package/dist/refactor/blocks.d.ts.map +1 -0
  476. package/dist/refactor/blocks.js +214 -0
  477. package/dist/refactor/blocks.js.map +1 -0
  478. package/dist/refactor/javascript.d.ts +15 -0
  479. package/dist/refactor/javascript.d.ts.map +1 -0
  480. package/dist/refactor/javascript.js +182 -0
  481. package/dist/refactor/javascript.js.map +1 -0
  482. package/dist/refactor-jsx.d.ts +28 -0
  483. package/dist/refactor-jsx.d.ts.map +1 -0
  484. package/dist/refactor-jsx.js +77 -0
  485. package/dist/refactor-jsx.js.map +1 -0
  486. package/dist/rename-manager.d.ts +27 -0
  487. package/dist/rename-manager.d.ts.map +1 -0
  488. package/dist/rename-manager.js +140 -0
  489. package/dist/rename-manager.js.map +1 -0
  490. package/dist/routing.d.ts +6 -0
  491. package/dist/routing.d.ts.map +1 -0
  492. package/dist/routing.js +76 -0
  493. package/dist/routing.js.map +1 -0
  494. package/dist/sb-scope-manager.d.ts +102 -0
  495. package/dist/sb-scope-manager.d.ts.map +1 -0
  496. package/dist/sb-scope-manager.js +507 -0
  497. package/dist/sb-scope-manager.js.map +1 -0
  498. package/dist/socket-manager.d.ts +39 -0
  499. package/dist/socket-manager.d.ts.map +1 -0
  500. package/dist/socket-manager.js +184 -0
  501. package/dist/socket-manager.js.map +1 -0
  502. package/dist/source-tracker.d.ts +190 -0
  503. package/dist/source-tracker.d.ts.map +1 -0
  504. package/dist/source-tracker.js +962 -0
  505. package/dist/source-tracker.js.map +1 -0
  506. package/dist/sync-service/download.d.ts +15 -0
  507. package/dist/sync-service/download.d.ts.map +1 -0
  508. package/dist/sync-service/download.js +116 -0
  509. package/dist/sync-service/download.js.map +1 -0
  510. package/dist/sync-service/draft-helpers.d.ts +77 -0
  511. package/dist/sync-service/draft-helpers.d.ts.map +1 -0
  512. package/dist/sync-service/draft-helpers.js +512 -0
  513. package/dist/sync-service/draft-helpers.js.map +1 -0
  514. package/dist/sync-service/hash-cache.d.ts +15 -0
  515. package/dist/sync-service/hash-cache.d.ts.map +1 -0
  516. package/dist/sync-service/hash-cache.js +58 -0
  517. package/dist/sync-service/hash-cache.js.map +1 -0
  518. package/dist/sync-service/hash-dir-tree.d.ts +10 -0
  519. package/dist/sync-service/hash-dir-tree.d.ts.map +1 -0
  520. package/dist/sync-service/hash-dir-tree.js +53 -0
  521. package/dist/sync-service/hash-dir-tree.js.map +1 -0
  522. package/dist/sync-service/index.d.ts +143 -0
  523. package/dist/sync-service/index.d.ts.map +1 -0
  524. package/dist/sync-service/index.js +351 -0
  525. package/dist/sync-service/index.js.map +1 -0
  526. package/dist/sync-service/list-dir.d.ts +29 -0
  527. package/dist/sync-service/list-dir.d.ts.map +1 -0
  528. package/dist/sync-service/list-dir.js +66 -0
  529. package/dist/sync-service/list-dir.js.map +1 -0
  530. package/dist/sync-service/server-rpc/client.d.ts +13 -0
  531. package/dist/sync-service/server-rpc/client.d.ts.map +1 -0
  532. package/dist/sync-service/server-rpc/client.js +65 -0
  533. package/dist/sync-service/server-rpc/client.js.map +1 -0
  534. package/dist/sync-service/server-rpc/handlers.d.ts +3 -0
  535. package/dist/sync-service/server-rpc/handlers.d.ts.map +1 -0
  536. package/dist/sync-service/server-rpc/handlers.js +18 -0
  537. package/dist/sync-service/server-rpc/handlers.js.map +1 -0
  538. package/dist/sync-service/snapshot/take-snapshot.d.ts +35 -0
  539. package/dist/sync-service/snapshot/take-snapshot.d.ts.map +1 -0
  540. package/dist/sync-service/snapshot/take-snapshot.js +227 -0
  541. package/dist/sync-service/snapshot/take-snapshot.js.map +1 -0
  542. package/dist/sync-service/snapshot/types.d.ts +24 -0
  543. package/dist/sync-service/snapshot/types.d.ts.map +1 -0
  544. package/dist/sync-service/snapshot/types.js +3 -0
  545. package/dist/sync-service/snapshot/types.js.map +1 -0
  546. package/dist/sync-service/snapshot/upload-snapshot.d.ts +5 -0
  547. package/dist/sync-service/snapshot/upload-snapshot.d.ts.map +1 -0
  548. package/dist/sync-service/snapshot/upload-snapshot.js +63 -0
  549. package/dist/sync-service/snapshot/upload-snapshot.js.map +1 -0
  550. package/dist/traverse.d.ts +6 -0
  551. package/dist/traverse.d.ts.map +1 -0
  552. package/dist/traverse.js +7 -0
  553. package/dist/traverse.js.map +1 -0
  554. package/dist/util/generation-number-sequence.d.ts +7 -0
  555. package/dist/util/generation-number-sequence.d.ts.map +1 -0
  556. package/dist/util/generation-number-sequence.js +13 -0
  557. package/dist/util/generation-number-sequence.js.map +1 -0
  558. package/dist/util/logger.d.ts +22 -0
  559. package/dist/util/logger.d.ts.map +1 -0
  560. package/dist/util/logger.js +64 -0
  561. package/dist/util/logger.js.map +1 -0
  562. package/dist/util/operation-queue.d.ts +17 -0
  563. package/dist/util/operation-queue.d.ts.map +1 -0
  564. package/dist/util/operation-queue.js +27 -0
  565. package/dist/util/operation-queue.js.map +1 -0
  566. package/dist/util/tracing.d.ts +4 -0
  567. package/dist/util/tracing.d.ts.map +1 -0
  568. package/dist/util/tracing.js +56 -0
  569. package/dist/util/tracing.js.map +1 -0
  570. package/dist/util/with-resolvers.d.ts +10 -0
  571. package/dist/util/with-resolvers.d.ts.map +1 -0
  572. package/dist/util/with-resolvers.js +14 -0
  573. package/dist/util/with-resolvers.js.map +1 -0
  574. package/dist/util.d.ts +28 -0
  575. package/dist/util.d.ts.map +1 -0
  576. package/dist/util.js +123 -0
  577. package/dist/util.js.map +1 -0
  578. package/package.json +127 -0
@@ -0,0 +1,53 @@
1
+ import { hashDirectoryContents, hashFileContents, } from "@superblocksteam/shared";
2
+ import { unreachable } from "@superblocksteam/util";
3
+ import { listLocalDirectory } from "./list-dir.js";
4
+ /**
5
+ * Computes the hash of a local directory, including the hashes of all its contents recursively.
6
+ *
7
+ * @param localDirectoryPath - The path to the local directory to hash.
8
+ * @param excludedDirectories - An array of directory names to be ignored.
9
+ * @returns A promise that resolves to the hash of the directory and its contents.
10
+ */
11
+ export async function hashLocalDirectory(localDirectoryPath) {
12
+ const directoryContents = [];
13
+ const localDirListing = listLocalDirectory(localDirectoryPath);
14
+ for await (const localDirEntry of localDirListing) {
15
+ let entry;
16
+ switch (localDirEntry.type) {
17
+ case "-": {
18
+ const hash = await hashFileContents(localDirEntry.contents);
19
+ entry = {
20
+ type: "-",
21
+ executable: localDirEntry.executable,
22
+ name: localDirEntry.name,
23
+ hash,
24
+ };
25
+ break;
26
+ }
27
+ case "d": {
28
+ const { hash, contents: subdirectoryContents } = await hashLocalDirectory(localDirEntry.localPath);
29
+ entry = {
30
+ type: "d",
31
+ name: localDirEntry.name,
32
+ hash,
33
+ contents: subdirectoryContents,
34
+ };
35
+ break;
36
+ }
37
+ case "l": {
38
+ entry = {
39
+ type: "l",
40
+ target: localDirEntry.target,
41
+ name: localDirEntry.name,
42
+ };
43
+ break;
44
+ }
45
+ default:
46
+ unreachable(localDirEntry);
47
+ }
48
+ directoryContents.push(entry);
49
+ }
50
+ const hash = await hashDirectoryContents(directoryContents);
51
+ return { contents: directoryContents, hash };
52
+ }
53
+ //# sourceMappingURL=hash-dir-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash-dir-tree.js","sourceRoot":"","sources":["../../src/sync-service/hash-dir-tree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,kBAA0B;IAE1B,MAAM,iBAAiB,GAAyB,EAAE,CAAC;IACnD,MAAM,eAAe,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,MAAM,aAAa,IAAI,eAAe,EAAE,CAAC;QAClD,IAAI,KAAyB,CAAC;QAC9B,QAAQ,aAAa,CAAC,IAAI,EAAE,CAAC;YAC3B,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC5D,KAAK,GAAG;oBACN,IAAI,EAAE,GAAG;oBACT,UAAU,EAAE,aAAa,CAAC,UAAU;oBACpC,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,IAAI;iBACL,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,GAC5C,MAAM,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBACpD,KAAK,GAAG;oBACN,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,aAAa,CAAC,IAAI;oBACxB,IAAI;oBACJ,QAAQ,EAAE,oBAAoB;iBAC/B,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACT,KAAK,GAAG;oBACN,IAAI,EAAE,GAAG;oBACT,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,IAAI,EAAE,aAAa,CAAC,IAAI;iBACzB,CAAC;gBACF,MAAM;YACR,CAAC;YACD;gBACE,WAAW,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,143 @@
1
+ import EventEmitter from "node:events";
2
+ import { SyncronizationStatus } from "@superblocksteam/library-shared/types";
3
+ import { type ErrorEventMap } from "../errors/error-handler.js";
4
+ import { OperationQueue } from "../util/operation-queue.js";
5
+ import type { DraftEventMap, DraftInterface } from "../draft-interface.js";
6
+ import type { LockService } from "../lock-service/index.js";
7
+ import type { GenerationNumberSequence } from "../util/generation-number-sequence.js";
8
+ import type { Tracer } from "@opentelemetry/api";
9
+ export declare enum SyncServiceStatus {
10
+ /** The sync service is not currently syncing or scheduled to sync */
11
+ IDLE = "IDLE",
12
+ /** The sync service is scheduled to sync */
13
+ SCHEDULED = "SCHEDULED",
14
+ /** The sync service is currently syncing server -> local */
15
+ DOWNLOADING = "DOWNLOADING",
16
+ /** The sync service is currently syncing local -> server */
17
+ UPLOADING = "UPLOADING"
18
+ }
19
+ /** Configuration for the SyncService passed to the constructor */
20
+ export interface SyncServiceConfig {
21
+ fsOperationQueue: OperationQueue;
22
+ authToken: string;
23
+ superblocksBaseUrl: string;
24
+ appRootDirPath: string;
25
+ applicationId: string;
26
+ branchName: string;
27
+ lockService: LockService;
28
+ tracer: Tracer;
29
+ }
30
+ interface EventMap extends ErrorEventMap, DraftEventMap {
31
+ /** Emitted when the sync service status changes, which indicates what the service is currently doing */
32
+ statusChange: [
33
+ status: SyncServiceStatus,
34
+ /** The time when the next sync is scheduled to be performed, in milliseconds in the monotonic clock (`performance.now()`) */
35
+ scheduledSyncTime: number | undefined
36
+ ];
37
+ /** Emitted when the synchronization status changes, which indicates whether the server and local directories are in sync */
38
+ synchronizationStatusChange: [
39
+ status: SyncronizationStatus,
40
+ generationNumber: number | undefined
41
+ ];
42
+ }
43
+ export declare class SyncService extends EventEmitter<EventMap> implements DraftInterface {
44
+ private readonly authToken;
45
+ private readonly superblocksBaseUrl;
46
+ private readonly appRootDirPath;
47
+ private readonly applicationId;
48
+ private readonly branchName;
49
+ generationNumberSequence: GenerationNumberSequence | undefined;
50
+ private lastSyncedGenerationNumber;
51
+ private hashCache;
52
+ lastSyncedDirectoryHash: string | undefined;
53
+ private readonly fsOperationQueue;
54
+ private readonly syncOperationQueue;
55
+ /** This will be defined if (and only if) a sync is currently pending */
56
+ private pendingSyncUp;
57
+ private lockService;
58
+ private _status;
59
+ private _synchronizationStatus;
60
+ private _tracer;
61
+ constructor(config: SyncServiceConfig);
62
+ /** The current status of the sync service, which indicates what the service is currently doing */
63
+ get status(): SyncServiceStatus;
64
+ private set status(value);
65
+ /** The current synchronization status, which indicates whether the server and local directories are in sync */
66
+ get synchronizationStatus(): SyncronizationStatus;
67
+ private set synchronizationStatus(value);
68
+ /**
69
+ * Enqueues a filesystem operation to be executed one at a time and avoiding conflicts with sync operations.
70
+ */
71
+ private fsOperation;
72
+ /**
73
+ * Pulls the application down from the server.
74
+ */
75
+ downloadDirectory(): Promise<void>;
76
+ /**
77
+ * Request a sync of the local application directory to the server.
78
+ *
79
+ * This method is asynchronous, in the sense that it does not wait for the sync to complete. It simply schedules
80
+ * a sync to happen in the future. The returned promise resolves as soon as the method has collected enough information
81
+ * to schedule the sync. So the caller must wait for the returned promise to resolve before performing any filesystem
82
+ * operations.
83
+ * This method is also idempotent.
84
+ */
85
+ uploadDirectory(): Promise<void>;
86
+ /**
87
+ * Requests an immediate sync of the local application directory to the server, if there are any pending changes.
88
+ * If there are no pending changes, the method returns immediately.
89
+ *
90
+ * @returns the dbfs hash of the most recent sync
91
+ */
92
+ uploadDirectoryNowIfNeeded(): Promise<string>;
93
+ private scheduleUploadDirectory;
94
+ /**
95
+ * Performs the actual upload of the local application directory to the server.
96
+ */
97
+ private performUploadDirectory;
98
+ /**
99
+ * Checks if there are any local draft changes (.sbswap.edit and .sbswap.add files).
100
+ *
101
+ * @returns A promise that resolves to true if any draft files are found, false otherwise.
102
+ */
103
+ hasLocalDraftChanges(): Promise<boolean>;
104
+ /**
105
+ * Gets information about current draft changes.
106
+ *
107
+ * @returns A promise that resolves to information about draft edits and additions.
108
+ */
109
+ getDraftChanges(): Promise<{
110
+ edits: string[];
111
+ additions: string[];
112
+ }>;
113
+ /**
114
+ * Gets a git-like diff representation of all draft changes.
115
+ *
116
+ * @returns A promise that resolves to a git-like diff string.
117
+ */
118
+ getDraftDiff(specificPaths: string[]): Promise<string>;
119
+ /**
120
+ * Creates a draft edit or addition for a file.
121
+ *
122
+ * @param filePath - The path to the file to edit or add (relative to app root).
123
+ * @param draftContent - The content of the draft edit or addition.
124
+ * @returns A promise that resolves when the draft edit or addition is created.
125
+ */
126
+ createDraftFile(filePath: string, draftContent: string | Buffer): Promise<void>;
127
+ /**
128
+ * Discards all local draft changes by restoring original files and removing draft additions.
129
+ *
130
+ * @returns A promise that resolves when all draft changes have been discarded.
131
+ */
132
+ discardLocalDraftChanges(): Promise<void>;
133
+ /**
134
+ * Commits all draft changes by removing .sbswap.edit and .sbswap.add markers.
135
+ * This makes the current filesystem state the committed state.
136
+ *
137
+ * @returns A promise that resolves when all drafts have been committed.
138
+ */
139
+ commitLocalDraftChanges(): Promise<void>;
140
+ private getRpcClient;
141
+ }
142
+ export {};
143
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync-service/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,351 @@
1
+ import EventEmitter from "node:events";
2
+ import { SyncronizationStatus } from "@superblocksteam/library-shared/types";
3
+ import { addTracingToMethods } from "@superblocksteam/shared";
4
+ import { applyErrorHandling, } from "../errors/error-handler.js";
5
+ import { makeServerError } from "../errors/make-server-error.js";
6
+ import { getErrorMeta, getLogger } from "../util/logger.js";
7
+ import { OperationQueue } from "../util/operation-queue.js";
8
+ import { withResolvers } from "../util/with-resolvers.js";
9
+ import { downloadApplicationDirectory } from "./download.js";
10
+ import { hasSwapFiles, discardAllDrafts, commitAllDrafts, getDraftInfo, createDraft, generateDraftDiff, } from "./draft-helpers.js";
11
+ import { HashCache } from "./hash-cache.js";
12
+ import { connectToISocketRPCServer, unwrapResponseDto, } from "./server-rpc/client.js";
13
+ import { snapshotLocalDirectoryWithDrafts } from "./snapshot/take-snapshot.js";
14
+ import { uploadDirectorySnapshot } from "./snapshot/upload-snapshot.js";
15
+ const SYNC_INTERVAL_MS = 10_000;
16
+ export var SyncServiceStatus;
17
+ (function (SyncServiceStatus) {
18
+ /** The sync service is not currently syncing or scheduled to sync */
19
+ SyncServiceStatus["IDLE"] = "IDLE";
20
+ /** The sync service is scheduled to sync */
21
+ SyncServiceStatus["SCHEDULED"] = "SCHEDULED";
22
+ /** The sync service is currently syncing server -> local */
23
+ SyncServiceStatus["DOWNLOADING"] = "DOWNLOADING";
24
+ /** The sync service is currently syncing local -> server */
25
+ SyncServiceStatus["UPLOADING"] = "UPLOADING";
26
+ })(SyncServiceStatus || (SyncServiceStatus = {}));
27
+ export class SyncService extends EventEmitter {
28
+ // TODO: this is temporary, we will not use a fixed token for the lifetime of the sync service
29
+ authToken;
30
+ superblocksBaseUrl;
31
+ appRootDirPath;
32
+ applicationId;
33
+ branchName;
34
+ generationNumberSequence;
35
+ lastSyncedGenerationNumber;
36
+ hashCache = new HashCache();
37
+ // TODO: this can be private, we leave it public for now because tsc complains that its value is never read
38
+ lastSyncedDirectoryHash;
39
+ // A queue to ensure that all filesystem operations are executed one at a time
40
+ fsOperationQueue;
41
+ // A queue to ensure that the actual sync operations are executed one at a time
42
+ syncOperationQueue = new OperationQueue();
43
+ /** This will be defined if (and only if) a sync is currently pending */
44
+ pendingSyncUp;
45
+ lockService;
46
+ _status = SyncServiceStatus.IDLE;
47
+ _synchronizationStatus = SyncronizationStatus.SERVER_AHEAD;
48
+ _tracer;
49
+ constructor(config) {
50
+ super();
51
+ this.fsOperationQueue = config.fsOperationQueue;
52
+ this.authToken = config.authToken;
53
+ this.superblocksBaseUrl = config.superblocksBaseUrl;
54
+ this.appRootDirPath = config.appRootDirPath;
55
+ this.applicationId = config.applicationId;
56
+ this.branchName = config.branchName;
57
+ this.lockService = config.lockService;
58
+ this._tracer = config.tracer;
59
+ applyErrorHandling(this, {
60
+ downloadDirectory: { operation: "syncing directory from server" },
61
+ uploadDirectory: { operation: "syncing directory to server" },
62
+ hasLocalDraftChanges: { operation: "checking for local draft changes" },
63
+ commitLocalDraftChanges: { operation: "committing local draft changes" },
64
+ });
65
+ const methods = [
66
+ "downloadDirectory",
67
+ "uploadDirectory",
68
+ "uploadDirectoryNowIfNeeded",
69
+ "scheduleUploadDirectory",
70
+ "performUploadDirectory",
71
+ "getDraftChanges",
72
+ "getDraftDiff",
73
+ "createDraftFile",
74
+ "discardLocalDraftChanges",
75
+ "commitLocalDraftChanges",
76
+ ];
77
+ addTracingToMethods(this, methods, this._tracer);
78
+ }
79
+ /** The current status of the sync service, which indicates what the service is currently doing */
80
+ get status() {
81
+ return this._status;
82
+ }
83
+ set status(status) {
84
+ const logger = getLogger();
85
+ this._status = status;
86
+ const scheduledSyncTime = status === SyncServiceStatus.SCHEDULED
87
+ ? this.pendingSyncUp?.syncTime
88
+ : undefined;
89
+ logger.info(`[sync-service] statusChange: ${status}, ${scheduledSyncTime}`);
90
+ this.emit("statusChange", status, scheduledSyncTime);
91
+ }
92
+ /** The current synchronization status, which indicates whether the server and local directories are in sync */
93
+ get synchronizationStatus() {
94
+ return this._synchronizationStatus;
95
+ }
96
+ set synchronizationStatus(status) {
97
+ this._synchronizationStatus = status;
98
+ const generationNumber = status === SyncronizationStatus.IN_SYNC
99
+ ? this.lastSyncedGenerationNumber
100
+ : undefined;
101
+ this.emit("synchronizationStatusChange", status, generationNumber);
102
+ }
103
+ /**
104
+ * Enqueues a filesystem operation to be executed one at a time and avoiding conflicts with sync operations.
105
+ */
106
+ fsOperation(operation) {
107
+ return this.fsOperationQueue.enqueue(operation);
108
+ }
109
+ /**
110
+ * Pulls the application down from the server.
111
+ */
112
+ downloadDirectory() {
113
+ const logger = getLogger();
114
+ logger.info("[sync-service] Synchronizating application from the server");
115
+ return this.fsOperation(async () => {
116
+ this.status = SyncServiceStatus.DOWNLOADING;
117
+ const rpcClient = await this.getRpcClient();
118
+ try {
119
+ const directoryHash = await downloadApplicationDirectory({
120
+ rpcClient,
121
+ applicationId: this.applicationId,
122
+ branch: this.branchName,
123
+ localDirectoryPath: this.appRootDirPath,
124
+ hashCache: this.hashCache,
125
+ });
126
+ this.lastSyncedDirectoryHash = directoryHash;
127
+ this.synchronizationStatus = SyncronizationStatus.IN_SYNC;
128
+ logger.info("[sync-service] Synchronization finished");
129
+ }
130
+ catch (err) {
131
+ logger.error("[sync-service] Error synchronizing application from the server", getErrorMeta(err));
132
+ throw err;
133
+ }
134
+ finally {
135
+ this.status = SyncServiceStatus.IDLE;
136
+ rpcClient.close();
137
+ }
138
+ });
139
+ }
140
+ /**
141
+ * Request a sync of the local application directory to the server.
142
+ *
143
+ * This method is asynchronous, in the sense that it does not wait for the sync to complete. It simply schedules
144
+ * a sync to happen in the future. The returned promise resolves as soon as the method has collected enough information
145
+ * to schedule the sync. So the caller must wait for the returned promise to resolve before performing any filesystem
146
+ * operations.
147
+ * This method is also idempotent.
148
+ */
149
+ uploadDirectory() {
150
+ const logger = getLogger();
151
+ logger.info("[sync-service] Application updated, scheduling synchronization");
152
+ this.synchronizationStatus = SyncronizationStatus.LOCAL_AHEAD;
153
+ return this.fsOperation(async () => {
154
+ // Snapshot with uncommitted state (including drafts)
155
+ const directorySnapshot = await snapshotLocalDirectoryWithDrafts(this.appRootDirPath);
156
+ const completedPromise = this.scheduleUploadDirectory(directorySnapshot, false, this.generationNumberSequence?.currentValue);
157
+ completedPromise.then(() => {
158
+ logger.info("[sync-service] Synchronization completed");
159
+ }, (err) => {
160
+ logger.error("[sync-service] error syncing directory to server", getErrorMeta(err));
161
+ this.emit("error", makeServerError(err));
162
+ });
163
+ });
164
+ }
165
+ /**
166
+ * Requests an immediate sync of the local application directory to the server, if there are any pending changes.
167
+ * If there are no pending changes, the method returns immediately.
168
+ *
169
+ * @returns the dbfs hash of the most recent sync
170
+ */
171
+ uploadDirectoryNowIfNeeded() {
172
+ if (!this.pendingSyncUp) {
173
+ const logger = getLogger();
174
+ logger.info("[sync-service] No pending sync, skipping");
175
+ return Promise.resolve(this.lastSyncedDirectoryHash || "");
176
+ }
177
+ const directorySnapshot = this.pendingSyncUp.directorySnapshot;
178
+ const logger = getLogger();
179
+ logger.info("[sync-service] Performing immediate sync");
180
+ return this.fsOperation(async () => {
181
+ const completedPromise = this.scheduleUploadDirectory(directorySnapshot, true, this.generationNumberSequence?.currentValue);
182
+ const directoryHash = await completedPromise;
183
+ logger.info("[sync-service] Synchronization completed");
184
+ return directoryHash;
185
+ });
186
+ }
187
+ scheduleUploadDirectory(directorySnapshot, performNow, generationNumber) {
188
+ if (performNow && this.pendingSyncUp) {
189
+ // There is already a sync pending, cancel it so that we can schedule a new one, to be performed immediately
190
+ clearTimeout(this.pendingSyncUp.timeoutId);
191
+ this.pendingSyncUp = undefined;
192
+ }
193
+ if (this.pendingSyncUp) {
194
+ // There is already a sync pending, we don't need to schedule a new one, we will use the existing one but
195
+ // we will update the directory snapshot
196
+ this.pendingSyncUp.directorySnapshot = directorySnapshot;
197
+ this.pendingSyncUp.generationNumber = generationNumber;
198
+ }
199
+ else {
200
+ const { promise: completedPromise, resolve, reject, } = withResolvers();
201
+ const logger = getLogger();
202
+ const timeoutDelayMs = performNow ? 0 : SYNC_INTERVAL_MS;
203
+ const pendingSyncUp = {
204
+ directorySnapshot,
205
+ generationNumber,
206
+ syncTime: performance.now() + timeoutDelayMs,
207
+ timeoutId: setTimeout(async () => {
208
+ this.pendingSyncUp = undefined;
209
+ await this.syncOperationQueue.enqueue(async () => {
210
+ try {
211
+ const isLockValid = await this.lockService.checkAndUpdateLockIfPossible();
212
+ if (!isLockValid) {
213
+ throw new Error("Lock is not valid");
214
+ }
215
+ const directoryHash = await this.performUploadDirectory(
216
+ // Note: we should not use `directorySnapshot` here, because it might have changed since when the sync was
217
+ // originally scheduled which is when we captured the value of this lexical variable
218
+ pendingSyncUp.directorySnapshot, pendingSyncUp.generationNumber);
219
+ this.lastSyncedDirectoryHash = directoryHash;
220
+ resolve(directoryHash);
221
+ }
222
+ catch (error) {
223
+ logger.error("[sync-service] Error synchronizing directory to server: " +
224
+ error, getErrorMeta(error));
225
+ reject(error);
226
+ }
227
+ });
228
+ }, timeoutDelayMs),
229
+ completed: completedPromise,
230
+ };
231
+ this.pendingSyncUp = pendingSyncUp;
232
+ }
233
+ this.status = SyncServiceStatus.SCHEDULED;
234
+ return this.pendingSyncUp.completed;
235
+ }
236
+ /**
237
+ * Performs the actual upload of the local application directory to the server.
238
+ */
239
+ async performUploadDirectory(directorySnapshot, generationNumber) {
240
+ this.status = SyncServiceStatus.UPLOADING;
241
+ const rpcClient = await this.getRpcClient();
242
+ try {
243
+ await uploadDirectorySnapshot(rpcClient, directorySnapshot, this.hashCache);
244
+ // Now that the directory has been uploaded, we know that all of its hashes are in the server,
245
+ // so we can add them to the hash cache
246
+ this.hashCache.add_directory_recursive(directorySnapshot);
247
+ await unwrapResponseDto(rpcClient.call.v3.application.liveEditDirectoryContents.set({
248
+ applicationId: this.applicationId,
249
+ branchName: this.branchName,
250
+ hash: directorySnapshot.hash,
251
+ }));
252
+ this.lastSyncedGenerationNumber = generationNumber;
253
+ this.synchronizationStatus = SyncronizationStatus.IN_SYNC;
254
+ return directorySnapshot.hash;
255
+ }
256
+ finally {
257
+ this.status = SyncServiceStatus.IDLE;
258
+ rpcClient.close();
259
+ }
260
+ }
261
+ /**
262
+ * Checks if there are any local draft changes (.sbswap.edit and .sbswap.add files).
263
+ *
264
+ * @returns A promise that resolves to true if any draft files are found, false otherwise.
265
+ */
266
+ async hasLocalDraftChanges() {
267
+ return this.fsOperation(async () => {
268
+ return await hasSwapFiles(this.appRootDirPath);
269
+ });
270
+ }
271
+ /**
272
+ * Gets information about current draft changes.
273
+ *
274
+ * @returns A promise that resolves to information about draft edits and additions.
275
+ */
276
+ async getDraftChanges() {
277
+ return this.fsOperation(async () => {
278
+ return await getDraftInfo(this.appRootDirPath);
279
+ });
280
+ }
281
+ /**
282
+ * Gets a git-like diff representation of all draft changes.
283
+ *
284
+ * @returns A promise that resolves to a git-like diff string.
285
+ */
286
+ async getDraftDiff(specificPaths) {
287
+ return this.fsOperation(async () => {
288
+ return await generateDraftDiff(this.appRootDirPath, specificPaths);
289
+ });
290
+ }
291
+ /**
292
+ * Creates a draft edit or addition for a file.
293
+ *
294
+ * @param filePath - The path to the file to edit or add (relative to app root).
295
+ * @param draftContent - The content of the draft edit or addition.
296
+ * @returns A promise that resolves when the draft edit or addition is created.
297
+ */
298
+ async createDraftFile(filePath, draftContent) {
299
+ const logger = getLogger();
300
+ await this.fsOperation(async () => {
301
+ const fullPath = `${this.appRootDirPath}/${filePath}`;
302
+ const type = await createDraft(fullPath, draftContent, this.appRootDirPath);
303
+ if (type === "edit") {
304
+ logger.info(`[sync-service] Draft edit created for: ${filePath}`);
305
+ }
306
+ else {
307
+ logger.info(`[sync-service] Draft addition created for: ${filePath}`);
308
+ }
309
+ });
310
+ this.emit("draftStateChanged", true);
311
+ }
312
+ /**
313
+ * Discards all local draft changes by restoring original files and removing draft additions.
314
+ *
315
+ * @returns A promise that resolves when all draft changes have been discarded.
316
+ */
317
+ async discardLocalDraftChanges() {
318
+ const logger = getLogger();
319
+ logger.info("[sync-service] Discarding local draft changes");
320
+ this.fsOperation(async () => {
321
+ await discardAllDrafts(this.appRootDirPath);
322
+ // Emit event so UI can refresh
323
+ logger.info("[sync-service] Local draft changes discarded");
324
+ });
325
+ this.uploadDirectory();
326
+ this.emit("draftStateChanged", false);
327
+ }
328
+ /**
329
+ * Commits all draft changes by removing .sbswap.edit and .sbswap.add markers.
330
+ * This makes the current filesystem state the committed state.
331
+ *
332
+ * @returns A promise that resolves when all drafts have been committed.
333
+ */
334
+ async commitLocalDraftChanges() {
335
+ const logger = getLogger();
336
+ logger.info("[sync-service] Committing local draft changes");
337
+ this.fsOperation(async () => {
338
+ await commitAllDrafts(this.appRootDirPath);
339
+ logger.info("[sync-service] Local draft changes committed");
340
+ });
341
+ this.uploadDirectory();
342
+ this.emit("draftStateChanged", false);
343
+ }
344
+ async getRpcClient() {
345
+ return await connectToISocketRPCServer({
346
+ superblocksBaseUrl: this.superblocksBaseUrl,
347
+ token: this.authToken,
348
+ });
349
+ }
350
+ }
351
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync-service/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface LocalDirEntryFile {
2
+ type: "-";
3
+ executable: boolean;
4
+ name: string;
5
+ localPath: string;
6
+ contents: Buffer;
7
+ }
8
+ export interface LocalDirEntryDirectory {
9
+ type: "d";
10
+ name: string;
11
+ localPath: string;
12
+ }
13
+ export interface LocalDirEntrySymLink {
14
+ type: "l";
15
+ name: string;
16
+ localPath: string;
17
+ target: string;
18
+ }
19
+ export type LocalDirEntry = LocalDirEntryFile | LocalDirEntryDirectory | LocalDirEntrySymLink;
20
+ /**
21
+ * Lists the contents of a local directory. The function will load the contents of files into memory, but as it is a generator, this
22
+ * will happen lazily, so only one file will be loaded into memory at a time. The function will also ignore files in the directories
23
+ * listed in `codeModeExcludedDirectories` and `codeModeExcludedFiles`.
24
+ *
25
+ * @param localDirectoryPath - The path to the local directory to list.
26
+ * @returns An async generator that yields the contents of the directory.
27
+ */
28
+ export declare function listLocalDirectory(localDirectoryPath: string): AsyncGenerator<LocalDirEntry, void, void>;
29
+ //# sourceMappingURL=list-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-dir.d.ts","sourceRoot":"","sources":["../../src/sync-service/list-dir.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,sBAAsB,GACtB,oBAAoB,CAAC;AAWzB;;;;;;;GAOG;AACH,wBAAuB,kBAAkB,CACvC,kBAAkB,EAAE,MAAM,GACzB,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CA6C3C"}