lucy-cli 2.0.0-alpha.11 → 2.0.0-alpha.13

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 (587) hide show
  1. package/dist/Gulpfile.d.ts +35 -0
  2. package/dist/Gulpfile.js +132 -0
  3. package/dist/Gulpfile.js.map +1 -0
  4. package/dist/args.d.ts +1 -6
  5. package/dist/args.js +57 -7
  6. package/dist/args.js.map +1 -0
  7. package/dist/commands/checks.d.ts +7 -0
  8. package/dist/commands/checks.js +47 -0
  9. package/dist/commands/checks.js.map +1 -0
  10. package/dist/commands/cleanup copy.d.ts +4 -0
  11. package/dist/commands/cleanup copy.js +10 -0
  12. package/dist/commands/cleanup copy.js.map +1 -0
  13. package/dist/commands/cleanup.d.ts +4 -0
  14. package/dist/commands/cleanup.js +10 -0
  15. package/dist/commands/cleanup.js.map +1 -0
  16. package/dist/commands/copy.d.ts +6 -0
  17. package/dist/commands/copy.js +20 -0
  18. package/dist/commands/copy.js.map +1 -0
  19. package/dist/commands/edit.d.ts +10 -0
  20. package/dist/commands/edit.js +69 -0
  21. package/dist/commands/edit.js.map +1 -0
  22. package/dist/commands/exec copy.d.ts +3 -0
  23. package/dist/commands/exec copy.js +20 -0
  24. package/dist/commands/exec copy.js.map +1 -0
  25. package/dist/commands/exec.d.ts +5 -0
  26. package/dist/commands/exec.js +40 -0
  27. package/dist/commands/exec.js.map +1 -0
  28. package/dist/commands/files.d.ts +7 -0
  29. package/dist/commands/files.js +28 -0
  30. package/dist/commands/files.js.map +1 -0
  31. package/dist/commands/git.d.ts +8 -0
  32. package/dist/commands/git.js +104 -0
  33. package/dist/commands/git.js.map +1 -0
  34. package/dist/commands/home.d.ts +4 -0
  35. package/dist/commands/home.js +18 -0
  36. package/dist/commands/home.js.map +1 -0
  37. package/dist/commands/install.d.ts +8 -0
  38. package/dist/commands/install.js +110 -0
  39. package/dist/commands/install.js.map +1 -0
  40. package/dist/commands/read.d.ts +6 -0
  41. package/dist/commands/read.js +41 -0
  42. package/dist/commands/read.js.map +1 -0
  43. package/dist/commands/write.d.ts +7 -0
  44. package/dist/commands/write.js +28 -0
  45. package/dist/commands/write.js.map +1 -0
  46. package/dist/commands.js +1 -0
  47. package/dist/commands.js.map +1 -0
  48. package/dist/config.d.ts +30 -7
  49. package/dist/config.js +89 -26
  50. package/dist/config.js.map +1 -0
  51. package/dist/error.d.ts +1 -9
  52. package/dist/error.js +1 -2
  53. package/dist/error.js.map +1 -0
  54. package/dist/gulp/backend.d.ts +3 -0
  55. package/dist/gulp/backend.js +92 -0
  56. package/dist/gulp/backend.js.map +1 -0
  57. package/dist/gulp/checks.d.ts +3 -0
  58. package/dist/gulp/checks.js +194 -0
  59. package/dist/gulp/checks.js.map +1 -0
  60. package/dist/gulp/clean.d.ts +3 -0
  61. package/dist/gulp/clean.js +33 -0
  62. package/dist/gulp/clean.js.map +1 -0
  63. package/dist/gulp/copy.d.ts +2 -0
  64. package/dist/gulp/copy.js +34 -0
  65. package/dist/gulp/copy.js.map +1 -0
  66. package/dist/gulp/helpers.d.ts +2 -0
  67. package/dist/gulp/helpers.js +21 -0
  68. package/dist/gulp/helpers.js.map +1 -0
  69. package/dist/gulp/pages.d.ts +2 -0
  70. package/dist/gulp/pages.js +39 -0
  71. package/dist/gulp/pages.js.map +1 -0
  72. package/dist/gulp/pipeline.d.ts +1 -0
  73. package/dist/gulp/pipeline.js +29 -0
  74. package/dist/gulp/pipeline.js.map +1 -0
  75. package/dist/gulp/public.d.ts +2 -0
  76. package/dist/gulp/public.js +50 -0
  77. package/dist/gulp/public.js.map +1 -0
  78. package/dist/gulp/styles.d.ts +2 -0
  79. package/dist/gulp/styles.js +40 -0
  80. package/dist/gulp/styles.js.map +1 -0
  81. package/dist/gulp/templates.d.ts +2 -0
  82. package/dist/gulp/templates.js +33 -0
  83. package/dist/gulp/templates.js.map +1 -0
  84. package/dist/gulp/types.d.ts +4 -0
  85. package/dist/gulp/types.js +289 -0
  86. package/dist/gulp/types.js.map +1 -0
  87. package/dist/gulp/watchers.d.ts +9 -0
  88. package/dist/gulp/watchers.js +57 -0
  89. package/dist/gulp/watchers.js.map +1 -0
  90. package/dist/helpers.d.ts +9 -0
  91. package/dist/helpers.js +87 -0
  92. package/dist/helpers.js.map +1 -0
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.js +78 -9
  95. package/dist/index.js.map +1 -0
  96. package/dist/init/blocks.d.ts +5 -0
  97. package/dist/init/blocks.js +60 -0
  98. package/dist/init/blocks.js.map +1 -0
  99. package/dist/init/cargo copy.d.ts +2 -0
  100. package/dist/init/cargo copy.js +16 -0
  101. package/dist/init/cargo copy.js.map +1 -0
  102. package/dist/init/cargo.d.ts +2 -0
  103. package/dist/init/cargo.js +19 -0
  104. package/dist/init/cargo.js.map +1 -0
  105. package/dist/init/expo copy.d.ts +5 -0
  106. package/dist/init/expo copy.js +48 -0
  107. package/dist/init/expo copy.js.map +1 -0
  108. package/dist/init/expo.d.ts +5 -0
  109. package/dist/init/expo.js +50 -0
  110. package/dist/init/expo.js.map +1 -0
  111. package/dist/init/gitModules.d.ts +2 -0
  112. package/dist/init/gitModules.js +13 -0
  113. package/dist/init/gitModules.js.map +1 -0
  114. package/dist/init/index.d.ts +4 -0
  115. package/dist/init/index.js +62 -0
  116. package/dist/init/index.js.map +1 -0
  117. package/dist/init/lucy.d.ts +1 -0
  118. package/dist/init/lucy.js +2 -0
  119. package/dist/init/monorepo copy.d.ts +4 -0
  120. package/dist/init/monorepo copy.js +28 -0
  121. package/dist/init/monorepo copy.js.map +1 -0
  122. package/dist/init/monorepo.d.ts +4 -0
  123. package/dist/init/monorepo.js +35 -0
  124. package/dist/init/monorepo.js.map +1 -0
  125. package/dist/init/prepare.d.ts +8 -0
  126. package/dist/init/prepare.js +20 -0
  127. package/dist/init/prepare.js.map +1 -0
  128. package/dist/init/prepareVelo.d.ts +2 -0
  129. package/dist/init/prepareVelo.js +16 -0
  130. package/dist/init/prepareVelo.js.map +1 -0
  131. package/dist/init/sync.d.ts +2 -0
  132. package/dist/init/sync.js +88 -0
  133. package/dist/init/sync.js.map +1 -0
  134. package/dist/init/tauri.d.ts +5 -0
  135. package/dist/init/tauri.js +29 -0
  136. package/dist/init/tauri.js.map +1 -0
  137. package/dist/init/templates.d.ts +5 -0
  138. package/dist/init/templates.js +93 -0
  139. package/dist/init/templates.js.map +1 -0
  140. package/dist/init/velo.d.ts +5 -0
  141. package/dist/init/velo.js +58 -0
  142. package/dist/init/velo.js.map +1 -0
  143. package/dist/init/write.d.ts +5 -0
  144. package/dist/init/write.js +15 -0
  145. package/dist/models.js +1 -0
  146. package/dist/models.js.map +1 -0
  147. package/dist/policy.js +1 -0
  148. package/dist/policy.js.map +1 -0
  149. package/dist/prepare.js +1 -0
  150. package/dist/prepare.js.map +1 -0
  151. package/dist/runtime.d.ts +1 -1
  152. package/dist/runtime.js +1 -0
  153. package/dist/runtime.js.map +1 -0
  154. package/dist/schemas/gulp.d.ts +26 -0
  155. package/dist/schemas/gulp.js +8 -0
  156. package/dist/schemas/gulp.js.map +1 -0
  157. package/dist/schemas/index.d.ts +10 -0
  158. package/dist/schemas/index.js +9 -0
  159. package/dist/schemas/index.js.map +1 -0
  160. package/dist/schemas/lucy.d.ts +26 -0
  161. package/dist/schemas/lucy.js +39 -0
  162. package/dist/schemas/lucy.js.map +1 -0
  163. package/dist/schemas/models.d.ts +37 -0
  164. package/dist/schemas/models.js +2 -0
  165. package/dist/schemas/models.js.map +1 -0
  166. package/dist/schemas/tsconfig.d.ts +37 -0
  167. package/dist/schemas/tsconfig.js +2 -0
  168. package/dist/schemas/tsconfig.js.map +1 -0
  169. package/dist/schemas/types.d.ts +31 -0
  170. package/dist/schemas/types.js +5 -1
  171. package/dist/schemas/types.js.map +1 -0
  172. package/dist/states.js +1 -0
  173. package/dist/states.js.map +1 -0
  174. package/dist/sync/index.js +2 -0
  175. package/dist/sync/index.js.map +1 -0
  176. package/dist/sync/sync.d.ts +3 -0
  177. package/dist/sync/sync.js +92 -0
  178. package/dist/sync/sync.js.map +1 -0
  179. package/dist/tasks/Gulpfile.d.ts +4 -0
  180. package/dist/tasks/Gulpfile.js +112 -0
  181. package/dist/tasks/Gulpfile.js.map +1 -0
  182. package/dist/tasks/gitModules.d.ts +2 -0
  183. package/dist/tasks/gitModules.js +13 -0
  184. package/dist/tasks/gitModules.js.map +1 -0
  185. package/dist/tasks/gulp/backend.d.ts +3 -0
  186. package/dist/tasks/gulp/backend.js +92 -0
  187. package/dist/tasks/gulp/backend.js.map +1 -0
  188. package/dist/tasks/gulp/checks.d.ts +3 -0
  189. package/dist/tasks/gulp/checks.js +196 -0
  190. package/dist/tasks/gulp/checks.js.map +1 -0
  191. package/dist/tasks/gulp/clean.d.ts +3 -0
  192. package/dist/tasks/gulp/clean.js +33 -0
  193. package/dist/tasks/gulp/clean.js.map +1 -0
  194. package/dist/tasks/gulp/copy.d.ts +2 -0
  195. package/dist/tasks/gulp/copy.js +33 -0
  196. package/dist/tasks/gulp/copy.js.map +1 -0
  197. package/dist/tasks/gulp/helpers.d.ts +3 -0
  198. package/dist/tasks/gulp/helpers.js +19 -0
  199. package/dist/tasks/gulp/helpers.js.map +1 -0
  200. package/dist/tasks/gulp/pages.d.ts +2 -0
  201. package/dist/tasks/gulp/pages.js +39 -0
  202. package/dist/tasks/gulp/pages.js.map +1 -0
  203. package/dist/tasks/gulp/pipeline.d.ts +1 -0
  204. package/dist/tasks/gulp/pipeline.js +29 -0
  205. package/dist/tasks/gulp/pipeline.js.map +1 -0
  206. package/dist/tasks/gulp/public.d.ts +2 -0
  207. package/dist/tasks/gulp/public.js +50 -0
  208. package/dist/tasks/gulp/public.js.map +1 -0
  209. package/dist/tasks/gulp/styles.d.ts +2 -0
  210. package/dist/tasks/gulp/styles.js +40 -0
  211. package/dist/tasks/gulp/styles.js.map +1 -0
  212. package/dist/tasks/gulp/templates.d.ts +2 -0
  213. package/dist/tasks/gulp/templates.js +45 -0
  214. package/dist/tasks/gulp/templates.js.map +1 -0
  215. package/dist/tasks/gulp/types.d.ts +4 -0
  216. package/dist/tasks/gulp/types.js +293 -0
  217. package/dist/tasks/gulp/types.js.map +1 -0
  218. package/dist/tasks/gulp/watchers.d.ts +2 -0
  219. package/dist/tasks/gulp/watchers.js +59 -0
  220. package/dist/tasks/gulp/watchers.js.map +1 -0
  221. package/dist/tasks/index.d.ts +4 -0
  222. package/dist/tasks/index.js +23 -0
  223. package/dist/tasks/index.js.map +1 -0
  224. package/dist/tasks/sync.d.ts +2 -0
  225. package/dist/tasks/sync.js +88 -0
  226. package/dist/tasks/sync.js.map +1 -0
  227. package/dist/tasks/syncPkg.d.ts +3 -0
  228. package/dist/tasks/syncPkg.js +13 -0
  229. package/dist/tasks/syncPkg.js.map +1 -0
  230. package/dist/tasks/syncSettings.d.ts +3 -0
  231. package/dist/tasks/syncSettings.js +18 -0
  232. package/dist/tasks/syncSettings.js.map +1 -0
  233. package/dist/utils/index.js +2 -0
  234. package/dist/utils/index.js.map +1 -0
  235. package/dist/utils/install.js +1 -0
  236. package/dist/utils/logger.d.ts +17 -0
  237. package/dist/utils/logger.js +37 -0
  238. package/dist/utils/logger.js.map +1 -0
  239. package/dist/wix-sdk/check.d.ts +4 -0
  240. package/dist/wix-sdk/check.js +23 -0
  241. package/dist/wix-sdk/check.js.map +1 -0
  242. package/dist/wix-sdk/client.d.ts +10 -0
  243. package/dist/wix-sdk/client.js +18 -0
  244. package/dist/wix-sdk/client.js.map +1 -0
  245. package/dist/wix-sdk/import.d.ts +1 -0
  246. package/dist/wix-sdk/import.js +88 -0
  247. package/dist/wix-sdk/import.js.map +1 -0
  248. package/dist/wix-sdk/index.d.ts +4 -0
  249. package/dist/wix-sdk/index.js +15 -0
  250. package/dist/wix-sdk/index.js.map +1 -0
  251. package/dist/wix-sdk/init copy.d.ts +4 -0
  252. package/dist/wix-sdk/init copy.js +51 -0
  253. package/dist/wix-sdk/init copy.js.map +1 -0
  254. package/dist/wix-sdk/init.d.ts +4 -0
  255. package/dist/wix-sdk/init.js +51 -0
  256. package/dist/wix-sdk/init.js.map +1 -0
  257. package/dist/wix-sdk/is-allive.d.ts +4 -0
  258. package/dist/wix-sdk/is-allive.js +37 -0
  259. package/dist/wix-sdk/is-allive.js.map +1 -0
  260. package/dist/wix-sdk/run.d.ts +4 -0
  261. package/dist/wix-sdk/run.js +53 -0
  262. package/dist/wix-sdk/run.js.map +1 -0
  263. package/dist/wix-sdk/sync copy.d.ts +1 -0
  264. package/dist/wix-sdk/sync copy.js +88 -0
  265. package/dist/wix-sdk/sync copy.js.map +1 -0
  266. package/dist/wix-sdk/sync.d.ts +1 -0
  267. package/dist/wix-sdk/sync.js +88 -0
  268. package/dist/wix-sdk/sync.js.map +1 -0
  269. package/dist/wix-sdk/wix_sdk_check.d.ts +4 -0
  270. package/dist/wix-sdk/wix_sdk_check.js +37 -0
  271. package/dist/wix-sdk/wix_sdk_check.js.map +1 -0
  272. package/dist/wix-sync/client.d.ts +3 -0
  273. package/dist/wix-sync/client.js +5 -0
  274. package/dist/wix-sync/client.js.map +1 -0
  275. package/dist/wix-sync/export copy.d.ts +4 -0
  276. package/dist/wix-sync/export copy.js +21 -0
  277. package/dist/wix-sync/export copy.js.map +1 -0
  278. package/dist/wix-sync/export.d.ts +4 -0
  279. package/dist/wix-sync/export.js +15 -0
  280. package/dist/wix-sync/export.js.map +1 -0
  281. package/dist/wix-sync/import copy.d.ts +4 -0
  282. package/dist/wix-sync/import copy.js +21 -0
  283. package/dist/wix-sync/import copy.js.map +1 -0
  284. package/dist/wix-sync/import.d.ts +4 -0
  285. package/dist/wix-sync/import.js +26 -0
  286. package/dist/wix-sync/import.js.map +1 -0
  287. package/dist/wix-sync/index.d.ts +4 -0
  288. package/dist/wix-sync/index.js +35 -0
  289. package/dist/wix-sync/index.js.map +1 -0
  290. package/dist/wix-sync/init copy.d.ts +4 -0
  291. package/dist/wix-sync/init copy.js +54 -0
  292. package/dist/wix-sync/init copy.js.map +1 -0
  293. package/dist/wix-sync/init.d.ts +4 -0
  294. package/dist/wix-sync/init.js +74 -0
  295. package/dist/wix-sync/init.js.map +1 -0
  296. package/dist/wix-sync/is-alive.d.ts +4 -0
  297. package/dist/wix-sync/is-alive.js +23 -0
  298. package/dist/wix-sync/is-alive.js.map +1 -0
  299. package/dist/wix-sync/is-allive copy.d.ts +4 -0
  300. package/dist/wix-sync/is-allive copy.js +23 -0
  301. package/dist/wix-sync/is-allive copy.js.map +1 -0
  302. package/dist/wix-sync/is-allive.d.ts +4 -0
  303. package/dist/wix-sync/is-allive.js +23 -0
  304. package/dist/wix-sync/is-allive.js.map +1 -0
  305. package/dist/wix-sync/migrate.d.ts +4 -0
  306. package/dist/wix-sync/migrate.js +21 -0
  307. package/dist/wix-sync/migrate.js.map +1 -0
  308. package/dist/wix-sync/sync-od.js +100 -0
  309. package/dist/wix-sync/sync-od.js.map +1 -0
  310. package/dist/wix-sync/sync.d.ts +4 -0
  311. package/dist/wix-sync/sync.js +26 -0
  312. package/dist/wix-sync/sync.js.map +1 -0
  313. package/dist/wix-sync/sync2.d.ts +4 -0
  314. package/dist/wix-sync/sync2.js +25 -0
  315. package/dist/wix-sync/sync2.js.map +1 -0
  316. package/dist/wix-sync copy/index.d.ts +4 -0
  317. package/dist/wix-sync copy/index.js +17 -0
  318. package/dist/wix-sync copy/index.js.map +1 -0
  319. package/dist/wix-sync copy/init.d.ts +4 -0
  320. package/dist/wix-sync copy/init.js +58 -0
  321. package/dist/wix-sync copy/init.js.map +1 -0
  322. package/dist/wix-sync copy/is-allive.d.ts +4 -0
  323. package/dist/wix-sync copy/is-allive.js +36 -0
  324. package/dist/wix-sync copy/is-allive.js.map +1 -0
  325. package/dist/wix-sync copy/sync.d.ts +1 -0
  326. package/dist/wix-sync copy/sync.js +88 -0
  327. package/dist/wix-sync copy/sync.js.map +1 -0
  328. package/files/sync-data/data/test.csv +17 -0
  329. package/files/sync-data/schema/test.json +11 -0
  330. package/files/templates/block[D]/files/.stylelintrc.js +8 -0
  331. package/files/templates/block[D]/lucy.json +8 -0
  332. package/files/templates/cargo[D]/files/.env +1 -0
  333. package/files/templates/cargo[D]/files/Cargo.toml +238 -0
  334. package/files/templates/cargo[D]/files/Makefile.toml +4 -0
  335. package/files/templates/cargo[D]/files/build/main.rs +35 -0
  336. package/files/templates/cargo[D]/files/config/beta.json +19 -0
  337. package/files/templates/cargo[D]/files/config/ci.json +15 -0
  338. package/files/templates/cargo[D]/files/config/default.json +71 -0
  339. package/files/templates/cargo[D]/files/config/development.json +10 -0
  340. package/files/templates/cargo[D]/files/config/produktion.json +5 -0
  341. package/files/templates/cargo[D]/files/config/stage.json +4 -0
  342. package/files/templates/cargo[D]/files/locales/todo.yml +3 -0
  343. package/files/templates/cargo[D]/files/public/index.html +1 -0
  344. package/files/templates/cargo[D]/lucy.json +14 -0
  345. package/files/templates/expo[D]/files/.stylelintrc.js +8 -0
  346. package/files/templates/expo[D]/files/components/ui/.gitkeep +0 -0
  347. package/files/templates/expo[D]/lucy.json +81 -0
  348. package/files/templates/monorepo[D]/files/.nvmrc +1 -0
  349. package/files/templates/monorepo[D]/files/.prettierignore +23 -0
  350. package/files/templates/monorepo[D]/files/.prettierrc.json +15 -0
  351. package/files/templates/monorepo[D]/files/.stylelintrc.js +8 -0
  352. package/files/templates/monorepo[D]/files/.yarnrc +1 -0
  353. package/files/templates/monorepo[D]/files/.yarnrc.yml +3 -0
  354. package/files/templates/monorepo[D]/files/README.md +137 -0
  355. package/files/templates/monorepo[D]/files/currents.config.ts +5 -0
  356. package/files/templates/monorepo[D]/files/package.json +39 -0
  357. package/files/templates/monorepo[D]/files/turbo.json +34 -0
  358. package/files/templates/monorepo[D]/files/typedoc.json +25 -0
  359. package/files/templates/monorepo[D]/files/vitest.config.ts +27 -0
  360. package/files/templates/monorepo[D]/lucy.json +45 -0
  361. package/files/templates/tauri[D]/lucy.json +8 -0
  362. package/files/templates/velo[D]/files/.gitmodules +0 -0
  363. package/files/templates/velo[D]/files/.prettierignore +23 -0
  364. package/files/templates/velo[D]/files/.prettierrc.js +16 -0
  365. package/files/templates/velo[D]/files/typescript/__mocks__/.gitkeep +0 -0
  366. package/files/templates/velo[D]/files/typescript/backend/data.ts +0 -0
  367. package/files/templates/velo[D]/files/typescript/backend/events.ts +0 -0
  368. package/files/templates/velo[D]/files/typescript/pages/.gitkeep +0 -0
  369. package/files/templates/velo[D]/files/typescript/public/.gitkeep +0 -0
  370. package/files/templates/velo[D]/files/typescript/public/scss/app.scss +0 -0
  371. package/files/templates/velo[D]/files/typescript/styles/.gitkeep +0 -0
  372. package/files/templates/velo[D]/files/typescript/styles/global.scss +0 -0
  373. package/files/templates/velo[D]/lucy.json +136 -0
  374. package/old/Gulpfile.d.ts +34 -0
  375. package/old/Gulpfile.js +116 -0
  376. package/old/Gulpfile.js.map +1 -0
  377. package/old/gulp/backend.d.ts +3 -0
  378. package/old/gulp/backend.js +92 -0
  379. package/old/gulp/backend.js.map +1 -0
  380. package/old/gulp/checks.d.ts +3 -0
  381. package/old/gulp/checks.js +205 -0
  382. package/old/gulp/checks.js.map +1 -0
  383. package/old/gulp/clean.d.ts +3 -0
  384. package/old/gulp/clean.js +29 -0
  385. package/old/gulp/clean.js.map +1 -0
  386. package/old/gulp/copy.d.ts +2 -0
  387. package/old/gulp/copy.js +34 -0
  388. package/old/gulp/copy.js.map +1 -0
  389. package/old/gulp/helpers.d.ts +2 -0
  390. package/old/gulp/helpers.js +25 -0
  391. package/old/gulp/helpers.js.map +1 -0
  392. package/old/gulp/pages.d.ts +2 -0
  393. package/old/gulp/pages.js +37 -0
  394. package/old/gulp/pages.js.map +1 -0
  395. package/old/gulp/pipeline.d.ts +1 -0
  396. package/old/gulp/pipeline.js +29 -0
  397. package/old/gulp/pipeline.js.map +1 -0
  398. package/old/gulp/public.d.ts +2 -0
  399. package/old/gulp/public.js +50 -0
  400. package/old/gulp/public.js.map +1 -0
  401. package/old/gulp/styles.d.ts +2 -0
  402. package/old/gulp/styles.js +40 -0
  403. package/old/gulp/styles.js.map +1 -0
  404. package/old/gulp/templates.d.ts +2 -0
  405. package/old/gulp/templates.js +33 -0
  406. package/old/gulp/templates.js.map +1 -0
  407. package/old/gulp/types.d.ts +4 -0
  408. package/old/gulp/types.js +289 -0
  409. package/old/gulp/types.js.map +1 -0
  410. package/old/gulp/watchers.d.ts +9 -0
  411. package/old/gulp/watchers.js +59 -0
  412. package/old/gulp/watchers.js.map +1 -0
  413. package/old/helpers.d.ts +32 -0
  414. package/old/helpers.js +267 -0
  415. package/old/helpers.js.map +1 -0
  416. package/{src copy/helpers.ts → old/helpers.ts} +1 -1
  417. package/old/index.d.ts +59 -0
  418. package/old/index.js +288 -0
  419. package/old/index.js.map +1 -0
  420. package/old/init.d.ts +8 -0
  421. package/old/init.js +165 -0
  422. package/old/init.js.map +1 -0
  423. package/old/models.d.ts +37 -0
  424. package/old/models.js +2 -0
  425. package/old/models.js.map +1 -0
  426. package/old/prepare.d.ts +8 -0
  427. package/old/prepare.js +20 -0
  428. package/old/prepare.js.map +1 -0
  429. package/old/schemas/index.d.ts +0 -0
  430. package/old/schemas/index.js +2 -0
  431. package/old/schemas/index.js.map +1 -0
  432. package/old/schemas/index.ts +0 -0
  433. package/old/schemas/types.d.ts +0 -0
  434. package/old/schemas/types.js +2 -0
  435. package/old/schemas/types.js.map +1 -0
  436. package/old/schemas/types.ts +0 -0
  437. package/old/sync.d.ts +2 -0
  438. package/old/sync.js +88 -0
  439. package/old/sync.js.map +1 -0
  440. package/package.json +7 -7
  441. package/src/args.ts +56 -18
  442. package/src/commands/checks.ts +51 -0
  443. package/src/commands/cleanup.ts +11 -0
  444. package/src/commands/copy.ts +28 -0
  445. package/src/commands/edit.ts +83 -0
  446. package/src/commands/exec.ts +37 -0
  447. package/src/commands/git.ts +113 -0
  448. package/src/commands/home.ts +22 -0
  449. package/src/commands/install.ts +186 -0
  450. package/src/commands/read.ts +46 -0
  451. package/src/commands/write.ts +45 -0
  452. package/src/config.ts +116 -35
  453. package/src/error.ts +1 -2
  454. package/src/helpers.ts +90 -0
  455. package/src/index.ts +89 -13
  456. package/src/init/blocks.ts +82 -0
  457. package/src/init/cargo.ts +22 -0
  458. package/src/init/expo.ts +66 -0
  459. package/src/init/gitModules.ts +15 -0
  460. package/src/init/index.ts +63 -0
  461. package/src/init/monorepo.ts +39 -0
  462. package/src/init/prepareVelo.ts +19 -0
  463. package/src/init/tauri.ts +40 -0
  464. package/src/init/templates.ts +98 -0
  465. package/src/init/velo.ts +62 -0
  466. package/src/runtime.ts +1 -0
  467. package/src/schemas/gulp.ts +32 -0
  468. package/src/schemas/index.ts +12 -1
  469. package/src/schemas/lucy.ts +40 -0
  470. package/src/schemas/types.ts +38 -0
  471. package/src/tasks/Gulpfile.ts +208 -0
  472. package/src/tasks/gulp/backend.ts +112 -0
  473. package/src/tasks/gulp/checks.ts +215 -0
  474. package/src/tasks/gulp/clean.ts +38 -0
  475. package/src/tasks/gulp/copy.ts +37 -0
  476. package/src/tasks/gulp/helpers.ts +18 -0
  477. package/src/tasks/gulp/pages.ts +43 -0
  478. package/src/tasks/gulp/pipeline.ts +31 -0
  479. package/src/tasks/gulp/public.ts +60 -0
  480. package/src/tasks/gulp/styles.ts +46 -0
  481. package/src/tasks/gulp/templates.ts +53 -0
  482. package/src/tasks/gulp/types.ts +310 -0
  483. package/src/tasks/gulp/watchers.ts +96 -0
  484. package/src/tasks/index.ts +26 -0
  485. package/src/tasks/syncSettings.ts +21 -0
  486. package/src/types.d.ts +1 -1
  487. package/src/utils/index.ts +0 -0
  488. package/src/utils/logger.ts +40 -0
  489. package/src/wix-sdk/check.ts +24 -0
  490. package/src/wix-sdk/client.ts +18 -0
  491. package/src/wix-sdk/index.ts +17 -0
  492. package/src/wix-sdk/init.ts +54 -0
  493. package/src/wix-sdk/run.ts +56 -0
  494. package/src/wix-sync/client.ts +6 -0
  495. package/src/wix-sync/export.ts +19 -0
  496. package/src/wix-sync/import.ts +27 -0
  497. package/src/wix-sync/index.ts +36 -0
  498. package/src/wix-sync/init.ts +77 -0
  499. package/src/wix-sync/is-alive.ts +25 -0
  500. package/src/wix-sync/migrate.ts +23 -0
  501. package/src/wix-sync/sync.ts +27 -0
  502. package/tsconfig.json +6 -5
  503. package/files/expo/lucy.json +0 -8
  504. package/src/init.ts +0 -392
  505. /package/{files/expo/components/.gitkeep → .turbo/cookies/1.cookie} +0 -0
  506. /package/{files/expo/components/ui/.gitkeep → .turbo/cookies/2.cookie} +0 -0
  507. /package/{files/velo/.gitmodules → .turbo/cookies/3.cookie} +0 -0
  508. /package/{files/velo/typescript/__mocks__/.gitkeep → .turbo/cookies/4.cookie} +0 -0
  509. /package/{files/velo/typescript/backend/data.ts → .turbo/cookies/5.cookie} +0 -0
  510. /package/{files/velo/typescript/backend/events.ts → .turbo/daemon/ee24a4f4ab6aa3c0-turbo.log.2025-07-31} +0 -0
  511. /package/{files/velo/typescript/pages/.gitkeep → .turbo/daemon/ee24a4f4ab6aa3c0-turbo.log.2025-08-01} +0 -0
  512. /package/{files/velo/typescript/public/.gitkeep → .turbo/daemon/ee24a4f4ab6aa3c0-turbo.log.2025-08-02} +0 -0
  513. /package/{files/velo/typescript/public/scss/app.scss → dist/sync/index.d.ts} +0 -0
  514. /package/{files/velo/typescript/styles/.gitkeep → dist/utils/index.d.ts} +0 -0
  515. /package/{files/velo/typescript/styles/global.scss → dist/utils/install.d.ts} +0 -0
  516. /package/{src copy/schemas/index.ts → dist/wix-sync/sync-od.d.ts} +0 -0
  517. /package/files/{expo → templates/expo[D]/files}/.nvmrc +0 -0
  518. /package/files/{expo → templates/expo[D]/files}/.prettierignore +0 -0
  519. /package/files/{expo → templates/expo[D]/files}/.prettierrc.js +0 -0
  520. /package/files/{expo → templates/expo[D]/files}/.yarnrc +0 -0
  521. /package/files/{expo → templates/expo[D]/files}/.yarnrc.yml +0 -0
  522. /package/files/{expo → templates/expo[D]/files}/README.md +0 -0
  523. /package/files/{expo → templates/expo[D]/files}/assets/fonts/SpaceMono-Regular.ttf +0 -0
  524. /package/files/{expo → templates/expo[D]/files}/assets/images/adaptive-icon.png +0 -0
  525. /package/files/{expo → templates/expo[D]/files}/assets/images/favicon.png +0 -0
  526. /package/files/{expo → templates/expo[D]/files}/assets/images/icon.png +0 -0
  527. /package/files/{expo → templates/expo[D]/files}/assets/images/splash-icon.png +0 -0
  528. /package/files/{expo → templates/expo[D]/files}/babel.config.js +0 -0
  529. /package/{src copy/schemas/types.ts → files/templates/expo[D]/files/components/.gitkeep} +0 -0
  530. /package/files/{expo → templates/expo[D]/files}/constants/theme.ts +0 -0
  531. /package/files/{expo → templates/expo[D]/files}/eas.json +0 -0
  532. /package/files/{expo → templates/expo[D]/files}/eslint.config.mjs +0 -0
  533. /package/files/{expo → templates/expo[D]/files}/global.css +0 -0
  534. /package/files/{expo → templates/expo[D]/files}/hooks/useColorScheme.ts +0 -0
  535. /package/files/{expo → templates/expo[D]/files}/index.ts +0 -0
  536. /package/files/{expo → templates/expo[D]/files}/lib/data.ts +0 -0
  537. /package/files/{expo → templates/expo[D]/files}/lib/utils/index.ts +0 -0
  538. /package/files/{expo → templates/expo[D]/files}/lib/utils/polyfills.ts +0 -0
  539. /package/files/{expo → templates/expo[D]/files}/lib/wix/client.ts +0 -0
  540. /package/files/{expo → templates/expo[D]/files}/lib/wix/error.ts +0 -0
  541. /package/files/{expo → templates/expo[D]/files}/lib/wix/index.ts +0 -0
  542. /package/files/{expo → templates/expo[D]/files}/metro.config.js +0 -0
  543. /package/files/{expo → templates/expo[D]/files}/nativewind-env.d.ts +0 -0
  544. /package/files/{expo → templates/expo[D]/files}/scripts/reset-project.ts +0 -0
  545. /package/files/{expo → templates/expo[D]/files}/tailwind.config.js +0 -0
  546. /package/files/{expo → templates/expo[D]/files}/tsconfig.json +0 -0
  547. /package/files/{expo → templates/expo[D]/files}/types/reset.d.ts +0 -0
  548. /package/files/{velo → templates/velo[D]/files}/.madgerc +0 -0
  549. /package/files/{velo → templates/velo[D]/files}/.nvmrc +0 -0
  550. /package/files/{velo → templates/velo[D]/files}/.stylelintrc.js +0 -0
  551. /package/files/{velo → templates/velo[D]/files}/.yarnrc.yml +0 -0
  552. /package/files/{velo → templates/velo[D]/files}/currents.config.js +0 -0
  553. /package/files/{velo → templates/velo[D]/files}/cypress/e2e/base/base.cy.ts +0 -0
  554. /package/files/{velo → templates/velo[D]/files}/cypress/fixtures/example.json +0 -0
  555. /package/files/{velo → templates/velo[D]/files}/cypress/support/commands.ts +0 -0
  556. /package/files/{velo → templates/velo[D]/files}/cypress/support/e2e.ts +0 -0
  557. /package/files/{velo → templates/velo[D]/files}/cypress/tsconfig.json +0 -0
  558. /package/files/{velo → templates/velo[D]/files}/cypress.config.mjs +0 -0
  559. /package/files/{velo → templates/velo[D]/files}/eslint.config.mjs +0 -0
  560. /package/files/{velo → templates/velo[D]/files}/local.tsconfig.json +0 -0
  561. /package/files/{velo → templates/velo[D]/files}/typedoc.json +0 -0
  562. /package/files/{velo → templates/velo[D]/files}/typescript/backend/http-functions.ts +0 -0
  563. /package/files/{velo → templates/velo[D]/files}/typescript/backend/lib/http-functions/sync.ts +0 -0
  564. /package/files/{velo → templates/velo[D]/files}/typescript/backend/permissions.json +0 -0
  565. /package/files/{velo → templates/velo[D]/files}/typescript/tsconfig.json +0 -0
  566. /package/files/{velo → templates/velo[D]/files}/vitest.config.ts +0 -0
  567. /package/{src copy → old}/Gulpfile.ts +0 -0
  568. /package/{src copy → old}/gulp/backend.ts +0 -0
  569. /package/{src copy → old}/gulp/checks.ts +0 -0
  570. /package/{src copy → old}/gulp/clean.ts +0 -0
  571. /package/{src copy → old}/gulp/copy.ts +0 -0
  572. /package/{src copy → old}/gulp/helpers.ts +0 -0
  573. /package/{src copy → old}/gulp/pages.ts +0 -0
  574. /package/{src copy → old}/gulp/pipeline.ts +0 -0
  575. /package/{src copy → old}/gulp/public.ts +0 -0
  576. /package/{src copy → old}/gulp/styles.ts +0 -0
  577. /package/{src copy → old}/gulp/templates.ts +0 -0
  578. /package/{src copy → old}/gulp/types.ts +0 -0
  579. /package/{src copy → old}/gulp/watchers.ts +0 -0
  580. /package/{src copy → old}/index.ts +0 -0
  581. /package/{src copy → old}/init.ts +0 -0
  582. /package/{src copy → old}/models.ts +0 -0
  583. /package/{src copy → old}/prepare.ts +0 -0
  584. /package/{src copy → old}/settings.json +0 -0
  585. /package/{src copy → old}/sync.ts +0 -0
  586. /package/{src copy → old}/types.d.ts +0 -0
  587. /package/src/{models.ts → schemas/tsconfig.ts} +0 -0
package/src/config.ts CHANGED
@@ -1,23 +1,38 @@
1
- import { Context, Layer } from "effect"
1
+ import { Context, Effect, Layer, Schema } from "effect"
2
2
  import { get_args } from "./args.js";
3
3
  import { dirname, join } from "path";
4
4
  import { fileURLToPath } from "url";
5
- import { readFileSync, existsSync } from "fs";
6
- type Action = 'init';
5
+ import { lucySettings, LucySettings } from "./schemas/lucy.js";
6
+ import os from 'os';
7
+ import { Actions } from "./schemas/types.js";
8
+ import { JsonSchema, veloSyncSettings, VeloSyncSettings, WixSDKSettings, wixSDKSettings } from "./schemas/index.js";
9
+ import { FileSystem, Path } from "@effect/platform"
10
+ import { NodeContext } from "@effect/platform-node/index";
7
11
 
8
- type Actions = {
9
- action: Action;
10
- type: 'velo' | 'expo' | 'blocks' | undefined;
11
- }
12
12
  export class Config extends Context.Tag("Config")<
13
13
  Config,
14
14
  {
15
15
  readonly config: {
16
16
  readonly action: Actions;
17
+ readonly force: boolean;
17
18
  readonly cwd: string;
18
19
  readonly packageRoot: string;
19
20
  readonly filesFolder: string;
20
- readonly packageJson: any;
21
+ readonly veloSyncArguments?:{
22
+ data?: string;
23
+ collection?: string;
24
+ schema?: string;
25
+ dry: boolean;
26
+ }
27
+ packageJson: any;
28
+ lucySettings: LucySettings;
29
+ readonly lucyHome: string;
30
+ templateDir: string;
31
+ templateFiles: string;
32
+ projectName: string;
33
+ defaultModuleBasePath: string;
34
+ veloSyncSettings?: VeloSyncSettings;
35
+ wixSDKSettings?: WixSDKSettings;
21
36
  }
22
37
  }
23
38
  >() {}
@@ -26,36 +41,102 @@ export class Config extends Context.Tag("Config")<
26
41
  // We can replicate it using `import.meta.url`.
27
42
  const __filename = fileURLToPath(import.meta.url);
28
43
  const __dirname = dirname(__filename);
29
-
30
- // Assuming your compiled output is in a 'dist' folder at the project root,
31
- // and your source `config.ts` is in `src`, the running `config.js` will be
32
- // in something like `dist/src`. To get to the package root, we go up two levels.
33
44
  const packageRoot = join(__dirname, "..");
34
45
 
46
+ export const packageJsonName = "package.json";
47
+ export const lucyJsonName = "lucy.json";
48
+ export const wixSyncJsonName = "wix-sync.json";
49
+ export const wixSDKSettingsJsonName = "wix-sdk-settings.json";
50
+ export const syncDataName = 'sync-data';
51
+ export const packageJsonPath = join(process.cwd(), packageJsonName);
52
+ export const lucyJsonPath = join(process.cwd(), lucyJsonName);
53
+ export const veloSyncJsonPath = join(process.cwd(), wixSyncJsonName);
54
+ export const wixSDKSettingsJsonPath = join(process.cwd(), wixSDKSettingsJsonName);
55
+ export const syncFilesSource= join(packageRoot, 'files', syncDataName);
56
+
57
+
35
58
  export const ConfigLayer = (args: Awaited<ReturnType<typeof get_args>>) => {
36
- let packageJson = '{}';
37
- const packageJsonPath = join(process.cwd(), 'package.json');
38
- try {
39
- if (existsSync(packageJsonPath)) {
40
- const raw = readFileSync(packageJsonPath, 'utf-8');
41
- packageJson = JSON.parse(raw);
42
- }
43
- } catch (error) {
44
- console.error("Error reading package.json:", error);
45
- }
46
- return Layer.succeed(
59
+ return Layer.effect(
47
60
  Config,
48
- Config.of({
49
- config: {
50
- action: {
51
- type: args.type,
52
- action: args._[0] as Action
53
- },
54
- cwd: process.cwd(),
55
- packageRoot: packageRoot,
56
- filesFolder: join(packageRoot, 'files'),
57
- packageJson
61
+ Effect.gen(function* () {
62
+ const fs = yield* FileSystem.FileSystem;
63
+ const path = yield* Path.Path;
64
+
65
+ let packageJson: any = {};
66
+ let lucyJson: LucySettings | undefined = undefined;
67
+ let veloSyncJson: VeloSyncSettings | undefined = undefined;
68
+ let wixSDKSettingsJson: WixSDKSettings | undefined = undefined;
69
+ // Read package.json
70
+ if (yield* fs.exists(packageJsonPath)) {
71
+ const raw = yield* fs.readFileString(packageJsonPath, 'utf-8');
72
+ packageJson = yield* Schema.decodeUnknown(JsonSchema)(raw);
73
+ }
74
+
75
+ // Read lucy.json
76
+ if (yield* fs.exists(lucyJsonPath)) {
77
+ const raw = yield* fs.readFileString(lucyJsonPath, 'utf-8');
78
+ const lucyJsonRaw = yield* Schema.decodeUnknown(JsonSchema)(raw);
79
+ lucyJson = yield* Schema.decodeUnknown(lucySettings)(lucyJsonRaw);
80
+ }
81
+
82
+ // Read wix-sync.json
83
+ if (yield* fs.exists(veloSyncJsonPath)) {
84
+ const raw = yield* fs.readFileString(veloSyncJsonPath, 'utf-8');
85
+ const veloSyncSettingsRaw = yield* Schema.decodeUnknown(JsonSchema)(raw);
86
+ veloSyncJson = yield* Schema.decodeUnknown(veloSyncSettings)(veloSyncSettingsRaw);
58
87
  }
59
- })
88
+
89
+ // Read wix-sdk-settings.json
90
+ if (yield* fs.exists(wixSDKSettingsJsonPath)) {
91
+ const raw = yield* fs.readFileString(wixSDKSettingsJsonPath, 'utf-8');
92
+ const wixSDKSettingsRaw = yield* Schema.decodeUnknown(JsonSchema)(raw);
93
+ wixSDKSettingsJson = yield* Schema.decodeUnknown(wixSDKSettings)(wixSDKSettingsRaw);
94
+ }
95
+
96
+ const defaultModulePath = () => {
97
+ if (args.type === 'monorepo') {
98
+ return join('packages');
99
+ }
100
+ return '';
101
+ };
102
+
103
+ return Config.of({
104
+ config: {
105
+ action: {
106
+ initType: args.initType,
107
+ action: args._[0],
108
+ tasksName: args.tasksName,
109
+ syncAction: args.syncAction,
110
+ wixSDKAction: args.wixSDKAction,
111
+ },
112
+ force: args.force === true ? true : false,
113
+ cwd: process.cwd(),
114
+ projectName: process.cwd().split('/').pop() || 'lucy-project',
115
+ packageRoot,
116
+ filesFolder: join(packageRoot, 'files'),
117
+ packageJson,
118
+ lucyHome: join(os.homedir(), '.lucy-cli'),
119
+ veloSyncSettings: veloSyncJson,
120
+ veloSyncArguments: {
121
+ data: path.join(process.cwd(), args.input || ''),
122
+ collection: args.collection,
123
+ schema: path.join(process.cwd(), args.schema || ''),
124
+ dry: args.d || false,
125
+ },
126
+ wixSDKSettings: wixSDKSettingsJson,
127
+ lucySettings: lucyJson || {
128
+ modules: {},
129
+ devDependencies: {},
130
+ dependencies: {},
131
+ scripts: {},
132
+ initialized: false,
133
+ type: args.initType || 'velo',
134
+ },
135
+ templateFiles: '',
136
+ templateDir: '',
137
+ defaultModuleBasePath: defaultModulePath(),
138
+ }
139
+ });
140
+ }).pipe(Effect.provide(NodeContext.layer))
60
141
  );
61
- }
142
+ }
package/src/error.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  import { Data } from "effect";
2
2
 
3
- export class AppError extends Data.TaggedError('AppError')<{cause: Error, message: string}> {}
4
- export class ScaleError extends Data.TaggedError('ScaleError')<{cause: Error, message: string}> {}
3
+ export class AppError extends Data.TaggedError('AppError')<{cause: unknown, message: string}> {}
package/src/helpers.ts CHANGED
@@ -1,3 +1,7 @@
1
+ import os from 'os';
2
+ import { spawnSync, exec } from 'child_process';
3
+ import { logger } from './utils/logger.js';
4
+
1
5
  export function parse_error(error: unknown): Error {
2
6
  if (error instanceof Error) {
3
7
  return error;
@@ -6,4 +10,90 @@ export function parse_error(error: unknown): Error {
6
10
  } else {
7
11
  return new Error('Unknown error');
8
12
  }
13
+ }
14
+
15
+
16
+ /**
17
+ * Kill all processes matching a specific substring in their command, with a fallback for Windows.
18
+ * @param {string} processPattern - The substring to match (e.g., "wix:dev" or "@wix/cli/bin/wix.cjs").
19
+ */
20
+ export function killAllProcesses(processPattern: string) {
21
+ const isWindows = os.platform() === 'win32';
22
+ const command = isWindows
23
+ ? `tasklist /FI "IMAGENAME eq node.exe" /FO CSV | findstr "${processPattern}"` // Adjust for Node.js processes
24
+ : `ps -eo pid,command | grep "${processPattern}" | grep -v grep`;
25
+
26
+ exec(command, (error, stdout, stderr) => {
27
+ if (error) {
28
+ logger.error(`Failed to find processes matching pattern: ${processPattern}`);
29
+ return;
30
+ }
31
+ if (stderr) {
32
+ logger.error(`Error output:')} ${stderr}`);
33
+ }
34
+ if (!stdout.trim()) {
35
+ logger.info(`No processes found matching pattern: ${processPattern}`);
36
+ return;
37
+ }
38
+
39
+ logger.info(`Found matching processes:\n${stdout}`);
40
+ const lines = stdout.trim().split('\n');
41
+ const pids = isWindows
42
+ ? lines.map(line => line.match(/"(\d+)"/)?.[1]) // Extract PID from Windows tasklist output
43
+ : lines.map(line => line.trim().split(/\s+/)[0]).filter(pid => !isNaN(Number(pid)));
44
+
45
+ pids.forEach(pid => {
46
+ if (!pid) return;
47
+ try {
48
+ const killCommand = isWindows
49
+ ? `taskkill /PID ${pid} /T /F` // Forcefully terminate the process on Windows
50
+ : `kill -SIGTERM ${pid}`;
51
+
52
+ exec(killCommand, (killError) => {
53
+ if (killError) {
54
+ logger.error(`Failed to kill process with PID ${pid}: ${killError.message}`);
55
+ } else {
56
+ logger.success(`Killed process with PID: ${pid}`);
57
+ }
58
+ });
59
+
60
+ // Schedule SIGKILL fallback for non-Windows platforms
61
+ if (!isWindows) {
62
+ setTimeout(() => {
63
+ try {
64
+ process.kill(parseInt(pid, 10), 'SIGKILL');
65
+ logger.kill(`Sent SIGKILL to process with PID: ${pid}`);
66
+ } catch (killError: any) {
67
+ if (killError.code === 'ESRCH') {
68
+ logger.info(`Process with PID ${pid} already terminated.`);
69
+ } else {
70
+ logger.error(`Failed to send SIGKILL to process with PID ${pid}: ${killError.message}`);
71
+ }
72
+ }
73
+ }, 10000);
74
+ }
75
+ } catch (err: any) {
76
+ logger.error(`Failed to kill process with PID ${pid}: ${err.message}`);
77
+ }
78
+ });
79
+ });
80
+ }
81
+
82
+ /**
83
+ * Clean up and run a command before exiting the process.
84
+ */
85
+ export function cleanupWatchers() {
86
+ logger.info(`🧹 Cleaning up Watchman watchers...`);
87
+ const cwd = process.cwd();
88
+ const command = `watchman watch-del "${cwd}"`; // Adjust for Windows paths
89
+ exec(command, (error, stdout, stderr) => {
90
+ if (error) {
91
+ logger.error(`Failed to run cleanup command: ${error.message}`);
92
+ return;
93
+ }
94
+ if (stderr) {
95
+ logger.error(`Watchman stderr: ${stderr}`);
96
+ }
97
+ logger.info(`Watchman cleanup success: ${stdout}`);
98
+ });
9
99
  }
package/src/index.ts CHANGED
@@ -1,36 +1,112 @@
1
1
  #!/usr/bin/env node
2
- import { Chunk, Duration, Effect, pipe, Schedule, Array, Ref } from "effect";
2
+ import { Effect, pipe} from "effect";
3
3
  import { build_runtime } from "./runtime.js";
4
4
  import { get_args } from "./args.js";
5
5
  import 'dotenv/config'
6
6
  import { Config } from "./config.js";
7
- import { ServiceInspectState } from "./states.js";
8
- import { init } from "./init.js";
7
+ import { init } from "./init/index.js";
8
+ import { logger } from "./utils/logger.js";
9
+ import { open } from "./commands/exec.js";
10
+ import { tasks } from "./tasks/index.js";
11
+ import { cleanupWatchers, killAllProcesses } from "./helpers.js";
12
+ import { wix_sync } from "./wix-sync/index.js";
13
+ import { wix_sdk } from "./wix-sdk/index.js";
9
14
 
15
+ let exitReason: 'SIGINT' | 'SIGTERM' | 'none' = 'none'
16
+ let needsCleanup = false;
17
+
18
+ export function setNeedsCleanup(value: boolean) {
19
+ needsCleanup = value;
20
+ }
21
+ process.on('exit', (code) => {
22
+ if(!needsCleanup) return;
23
+ if(exitReason === 'none') {
24
+ killAllProcesses('@wix/cli/bin/wix.cjs'); // Matches processes running the Wix CLI
25
+ killAllProcesses('wix:dev');
26
+ cleanupWatchers();
27
+ }
28
+
29
+ logger.info(`🛑 Process exited with code: ${code}`);
30
+ });
31
+
32
+ process.on('SIGINT', () => {
33
+ exitReason = "SIGINT";
34
+
35
+ logger.info(`🐕 Received Ctrl+C (SIGINT), cleaning up...`);
36
+ killAllProcesses('@wix/cli/bin/wix.cjs'); // Matches processes running the Wix CLI
37
+ killAllProcesses('wix:dev');
38
+ cleanupWatchers();
39
+ process.exit(); // Exit explicitly after handling
40
+ });
41
+
42
+ process.on('SIGTERM', () => {
43
+ exitReason = "SIGTERM";
44
+
45
+ logger.info(`🛑 Received termination signal (SIGTERM), cleaning up...`);
46
+ killAllProcesses('@wix/cli/bin/wix.cjs'); // Matches processes running the Wix CLI
47
+ killAllProcesses('wix:dev');
48
+ cleanupWatchers();
49
+ process.exit(); // Exit explicitly after handling
50
+ });
10
51
 
11
52
  const lucyCLI = pipe(
12
53
  Effect.gen(function* (_) {
13
54
  const config = yield* Config;
14
- config.config.action.type;
15
- if (config.config.action.type === undefined) {
16
- return yield* Effect.fail("No Params Provided");
17
- }
55
+ const t = Config;
18
56
  if (config.config.action.action === 'init') {
19
- return yield* init();
57
+ return yield* init;
58
+ }
59
+ if (config.config.action.action === 'open') {
60
+ return yield* open;
61
+ }
62
+ if (config.config.action.action === 'task') {
63
+ return yield* tasks;
64
+ }
65
+ if (config.config.action.action === 'wix-sync') {
66
+ return yield* wix_sync;
67
+ }
68
+ if (config.config.action.action === 'wix-sdk') {
69
+ return yield* wix_sdk;
20
70
  }
21
-
22
-
23
71
  }),
72
+ ).pipe(
73
+ Effect.catchTags({
74
+ BadArgument: (error) => {
75
+ logger.error(JSON.stringify(error, null, 2));
76
+ return Effect.fail(new Error(error.message));
77
+ },
78
+ ParseError: (error) => {
79
+ logger.error("Failed to parse:", JSON.stringify(error, null, 2));
80
+ return Effect.fail(new Error("Failed to parse: " + error.message));
81
+ },
82
+ SystemError: (error) => {
83
+ logger.error("System error:", JSON.stringify(error, null, 2));
84
+ return Effect.fail(new Error("System error: " + error.message));
85
+ },
86
+ AppError: (error) => {
87
+ logger.error("Application error:", JSON.stringify(error, null, 2));
88
+ return Effect.fail(new Error("Application error: " + error.message));
89
+ }
90
+ })
24
91
  )
25
92
 
26
93
  async function main() {
27
94
  const args = await get_args();
28
95
  const runtime= build_runtime(args);
29
96
  // The runtime will handle logging failures. This will catch unhandled defects.
30
- await runtime.runPromise(lucyCLI)
97
+ const program = Effect.orDieWith(
98
+ lucyCLI,
99
+ (error) => new Error(`The application failed to run: ${error}`
100
+ )
101
+ )
102
+ await runtime.runPromise(program)
31
103
  }
32
104
 
33
- main().catch((error) => {
34
- console.error("An unexpected application error occurred:", error);
105
+ main().then(() => {
106
+ process.exit(0);
107
+ }).catch((error) => {
108
+ if (error instanceof Error) {
109
+ logger.error(error.message);
110
+ }
35
111
  process.exit(1);
36
112
  });
@@ -0,0 +1,82 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { Config, lucyJsonName } from "../config.js";
3
+ import { Command, FileSystem, Path } from "@effect/platform"
4
+ import { JsonSchema } from "../schemas/index.js";
5
+ import { logger } from "../utils/logger.js";
6
+ import { mergeAdditions, mergeLucySettings2PackageJson, setInitialized } from "../commands/edit.js";
7
+ import { writeLucySettings, writePackageJson } from "../commands/write.js";
8
+ import { copyTemplateFiles } from "../commands/copy.js";
9
+ import { readPackageJson } from "../commands/read.js";
10
+ import { execCommand } from "../commands/exec.js";
11
+ import { installPackages } from "../commands/install.js";
12
+ import { AppError } from "../error.js";
13
+ import { cleanup } from "../commands/cleanup.js";
14
+ import { checkForDirty } from "../commands/checks.js";
15
+
16
+ export const init_blocks = () => {
17
+ return Effect.gen(function*() {
18
+ const config = yield* Config;
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const path = yield* Path.Path;
21
+
22
+ logger.action("Initializing Blocks project...");
23
+
24
+ const configJsonRaw = yield* fs.readFile("wix.config.json").pipe(Effect.catchAll((error) => {
25
+ return Effect.succeed('{}');
26
+ }))
27
+ const configJson = Schema.decodeUnknownSync(JsonSchema)(configJsonRaw.toString()) as any;
28
+ const blocksAppReady = configJson.appId ? true : false;
29
+
30
+ yield* checkForDirty();
31
+
32
+ if(!blocksAppReady) {
33
+ const initBlocks = Command.make("npm", "create", "@wix/app@latest", config.config.projectName).pipe(
34
+ Command.stdin("inherit"),
35
+ Command.stdout("inherit"),
36
+ Command.stderr("inherit"),
37
+ Command.exitCode
38
+ )
39
+ if((yield* initBlocks) !== 0) {
40
+ yield* Effect.fail(new AppError({ message: "Failed to initialize Blocks project. Please check the error message above.", cause: new Error("Failed to initialize Blocks project") }));
41
+ }
42
+ const files = yield * fs.readDirectory(config.config.cwd, { recursive: false });
43
+
44
+ const allExcludes = ['.git', lucyJsonName];
45
+ const filteredFiles = files.filter(file => !allExcludes.includes(file));
46
+
47
+ const t = yield* fs.stat(filteredFiles[0]);
48
+ t.type === 'Directory'
49
+
50
+ const directories = yield* Effect.filter(
51
+ filteredFiles,
52
+ (file) => Effect.gen(function*() {
53
+ const fullPath = path.join(config.config.cwd, file);
54
+ const stat = yield* fs.stat(fullPath);
55
+ return stat.type === "Directory";
56
+ })
57
+ );
58
+ const tempPath = directories[0];
59
+
60
+ const projectFiles = yield* fs.readDirectory(directories[0])
61
+ yield* Effect.forEach(
62
+ projectFiles.filter(file => file !== '.git'),
63
+ (file) => fs.copy(path.join(tempPath, file), path.join(config.config.cwd, file), { overwrite: true }),
64
+ { discard: true }
65
+ )
66
+ yield* fs.remove(tempPath, { recursive: true })
67
+ }
68
+
69
+ yield* readPackageJson;
70
+ yield* mergeLucySettings2PackageJson;
71
+ yield* mergeAdditions;
72
+ yield* writeLucySettings;
73
+ yield* writePackageJson;
74
+ yield* copyTemplateFiles;
75
+ yield* execCommand;
76
+ yield* installPackages;
77
+ yield* cleanup;
78
+ yield* setInitialized;
79
+
80
+ logger.success("Blocks project initialized successfully!");
81
+ })
82
+ }
@@ -0,0 +1,22 @@
1
+ import { Effect } from "effect/index"
2
+ import { logger } from "../utils/logger.js";
3
+ import { writeLucySettings } from "../commands/write.js";
4
+ import { copyTemplateFiles } from "../commands/copy.js";
5
+ import { gitInit } from "../commands/git.js";
6
+ import { checkForDirty } from "../commands/checks.js";
7
+ import { setInitialized } from "../commands/edit.js";
8
+
9
+ export const init_cargo = () => {
10
+ return Effect.gen(function*() {
11
+ logger.action("Initializing Cargo project...");
12
+
13
+ yield* checkForDirty();
14
+
15
+ yield* copyTemplateFiles;
16
+ yield* writeLucySettings;
17
+ yield* gitInit();
18
+ yield* setInitialized;
19
+
20
+ logger.success("Cargo project initialized successfully!");
21
+ })
22
+ }
@@ -0,0 +1,66 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { Config } from "../config.js";
3
+ import { Command, FileSystem, Path } from "@effect/platform"
4
+ import { JsonSchema } from "../schemas/index.js";
5
+ import { logger } from "../utils/logger.js";
6
+ import { mergeAdditions, mergeLucySettings2PackageJson, setInitialized } from "../commands/edit.js";
7
+ import { writeLucySettings, writePackageJson } from "../commands/write.js";
8
+ import { copyTemplateFiles } from "../commands/copy.js";
9
+ import { readPackageJson } from "../commands/read.js";
10
+ import { execCommand } from "../commands/exec.js";
11
+ import { installPackages } from "../commands/install.js";
12
+ import { AppError } from "../error.js";
13
+ import { cleanup } from "../commands/cleanup.js";
14
+ import { checkForDirty } from "../commands/checks.js";
15
+
16
+ export const init_expo = () => {
17
+ return Effect.gen(function*() {
18
+ const config = yield* Config;
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const path = yield* Path.Path;
21
+
22
+ logger.action("Initializing Expo project...");
23
+
24
+ const appJsonRaw = yield* fs.readFile("app.json").pipe(Effect.catchAll((error) => {
25
+ return Effect.succeed('{}');
26
+ }))
27
+ const appJSON = Schema.decodeUnknownSync(JsonSchema)(appJsonRaw.toString()) as any;
28
+ const expoAppReady = appJSON.expo ? true : false;
29
+
30
+ yield* checkForDirty();
31
+
32
+ if(!expoAppReady) {
33
+ const initExpo = Command.make("npx", "create-expo-app@latest", config.config.projectName, "--template", "blank-typescript", "--no-install").pipe(
34
+ Command.stdout("inherit"),
35
+ Command.exitCode
36
+ )
37
+ if((yield* initExpo) !== 0) {
38
+ yield* Effect.fail(new AppError({ message: "Failed to initialize Expo project. Please check the error message above.", cause: new Error("Failed to initialize Expo project") }));
39
+ }
40
+
41
+ const tempPath = path.join(config.config.cwd, config.config.projectName)
42
+
43
+ const projectFiles = yield* fs.readDirectory(tempPath)
44
+ yield* Effect.forEach(
45
+ projectFiles.filter(file => file !== '.git'),
46
+ (file) => fs.copy(path.join(tempPath, file), path.join(config.config.cwd, file), { overwrite: true }),
47
+ { discard: true }
48
+ )
49
+ yield* fs.remove(tempPath, { recursive: true })
50
+ }
51
+
52
+ yield* readPackageJson;
53
+ yield* mergeLucySettings2PackageJson;
54
+ yield* mergeAdditions;
55
+ yield* writeLucySettings;
56
+ yield* writePackageJson;
57
+ yield* copyTemplateFiles;
58
+ yield* execCommand;
59
+ yield* installPackages;
60
+ yield* cleanup;
61
+ yield* setInitialized;
62
+
63
+ logger.success("Expo project initialized successfully!");
64
+
65
+ })
66
+ }
@@ -0,0 +1,15 @@
1
+ import { Effect } from "effect/index"
2
+ import { logger } from "../utils/logger.js";
3
+ import { setInitialized } from "../commands/edit.js";
4
+ import { gitInit } from "../commands/git.js";
5
+
6
+ export const init_submodules = () => {
7
+ return Effect.gen(function*() {
8
+ logger.action("Initializing Git submodules project...");
9
+
10
+ yield* gitInit(true);
11
+ yield* setInitialized;
12
+
13
+ logger.success("GIT initialized successfully!");
14
+ })
15
+ }
@@ -0,0 +1,63 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { Config } from "../config.js";
3
+ import { init_expo } from "./expo.js";
4
+ import { selectTemplate } from "./templates.js";
5
+ import Enquirer from "enquirer";
6
+ import { AppError } from "../error.js";
7
+ import { createLucyHome } from "../commands/home.js";
8
+ import { readLucyJsonFromTemplate } from "../commands/read.js";
9
+ import { init_monorepo } from "./monorepo.js";
10
+ import { init_cargo } from "./cargo.js";
11
+ import { init_blocks } from "./blocks.js";
12
+ import { init_velo } from "./velo.js";
13
+ import { init_submodules } from "./gitModules.js";
14
+ import { init_tauri } from "./tauri.js";
15
+
16
+
17
+ export const init = Effect.gen(function* (_) {
18
+ const config = yield* Config;
19
+ if(config.config.action.initType === undefined) {
20
+ return yield* Effect.fail(new AppError({ message: "No init type provided", cause: new Error("No init type provided") }));
21
+ }
22
+ yield* createLucyHome();
23
+ const projectName = config.config.cwd.split('/').pop() || 'expo-project';
24
+ const templateQuestion = new Enquirer();
25
+ const choice = yield* Effect.tryPromise({
26
+ try: () => templateQuestion.prompt({
27
+ type: 'input',
28
+ name: 'projectName',
29
+ message: 'Enter a project name',
30
+ initial: projectName,
31
+ validate: (value: string) => value.trim() !== '' ? true : 'Project name cannot be empty'
32
+ }),
33
+ catch: (e) => {
34
+ return new AppError({ cause: e, message: 'Error selecting template' });
35
+ }
36
+ })
37
+ const selectedName = yield* Schema.decodeUnknown(Schema.Struct({ projectName: Schema.String }))(choice)
38
+ config.config.projectName = selectedName.projectName.trim();
39
+ yield* selectTemplate();
40
+ yield* readLucyJsonFromTemplate;
41
+ if(config.config.action.initType === 'expo') {
42
+ return yield* init_expo();
43
+ }
44
+ if(config.config.action.initType === 'monorepo') {
45
+ return yield* init_monorepo();
46
+ }
47
+ if(config.config.action.initType === 'cargo') {
48
+ return yield* init_cargo();
49
+ }
50
+ if(config.config.action.initType === 'blocks') {
51
+ return yield* init_blocks();
52
+ }
53
+ if(config.config.action.initType === 'tauri') {
54
+ return yield* init_tauri();
55
+ }
56
+ if(config.config.action.initType === 'velo') {
57
+ return yield* init_velo();
58
+ }
59
+ if(config.config.action.initType === 'submodules') {
60
+ return yield* init_submodules();
61
+ }
62
+ yield* Effect.fail(new AppError({ message: `Unsupported init type: ${config.config.action.initType}`, cause: new Error(`Unsupported init type: ${config.config.action.initType}`) }));
63
+ })