lucy-cli 2.0.0-alpha.9 → 2.0.0-beta.1

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 (451) hide show
  1. package/.yarnrc.yml +0 -1
  2. package/dist/args.d.ts +1 -6
  3. package/dist/args.js +62 -7
  4. package/dist/args.js.map +1 -0
  5. package/dist/commands/checks.d.ts +7 -0
  6. package/dist/commands/checks.js +47 -0
  7. package/dist/commands/checks.js.map +1 -0
  8. package/dist/commands/cleanup.d.ts +4 -0
  9. package/dist/commands/cleanup.js +10 -0
  10. package/dist/commands/cleanup.js.map +1 -0
  11. package/dist/commands/copy.d.ts +6 -0
  12. package/dist/commands/copy.js +20 -0
  13. package/dist/commands/copy.js.map +1 -0
  14. package/dist/commands/edit.d.ts +10 -0
  15. package/dist/commands/edit.js +67 -0
  16. package/dist/commands/edit.js.map +1 -0
  17. package/dist/commands/exec.d.ts +7 -0
  18. package/dist/commands/exec.js +67 -0
  19. package/dist/commands/exec.js.map +1 -0
  20. package/dist/commands/git.d.ts +8 -0
  21. package/dist/commands/git.js +104 -0
  22. package/dist/commands/git.js.map +1 -0
  23. package/dist/commands/home.d.ts +4 -0
  24. package/dist/commands/home.js +18 -0
  25. package/dist/commands/home.js.map +1 -0
  26. package/dist/commands/install.d.ts +8 -0
  27. package/dist/commands/install.js +165 -0
  28. package/dist/commands/install.js.map +1 -0
  29. package/dist/commands/read.d.ts +6 -0
  30. package/dist/commands/read.js +40 -0
  31. package/dist/commands/read.js.map +1 -0
  32. package/dist/commands/write.d.ts +7 -0
  33. package/dist/commands/write.js +28 -0
  34. package/dist/commands/write.js.map +1 -0
  35. package/dist/commands.js +1 -0
  36. package/dist/commands.js.map +1 -0
  37. package/dist/config.d.ts +29 -7
  38. package/dist/config.js +90 -26
  39. package/dist/config.js.map +1 -0
  40. package/dist/error.d.ts +1 -9
  41. package/dist/error.js +1 -2
  42. package/dist/error.js.map +1 -0
  43. package/dist/helpers.d.ts +9 -0
  44. package/dist/helpers.js +83 -0
  45. package/dist/helpers.js.map +1 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.js +77 -9
  48. package/dist/index.js.map +1 -0
  49. package/dist/init/blocks.d.ts +5 -0
  50. package/dist/init/blocks.js +62 -0
  51. package/dist/init/blocks.js.map +1 -0
  52. package/dist/init/cargo.d.ts +2 -0
  53. package/dist/init/cargo.js +21 -0
  54. package/dist/init/cargo.js.map +1 -0
  55. package/dist/init/expo.d.ts +5 -0
  56. package/dist/init/expo.js +52 -0
  57. package/dist/init/expo.js.map +1 -0
  58. package/dist/init/gitModules.d.ts +2 -0
  59. package/dist/init/gitModules.js +13 -0
  60. package/dist/init/gitModules.js.map +1 -0
  61. package/dist/init/index.d.ts +4 -0
  62. package/dist/init/index.js +77 -0
  63. package/dist/init/index.js.map +1 -0
  64. package/dist/init/monorepo.d.ts +4 -0
  65. package/dist/init/monorepo.js +48 -0
  66. package/dist/init/monorepo.js.map +1 -0
  67. package/dist/init/prepareVelo.d.ts +2 -0
  68. package/dist/init/prepareVelo.js +16 -0
  69. package/dist/init/prepareVelo.js.map +1 -0
  70. package/dist/init/tauri.d.ts +5 -0
  71. package/dist/init/tauri.js +32 -0
  72. package/dist/init/tauri.js.map +1 -0
  73. package/dist/init/templates.d.ts +5 -0
  74. package/dist/init/templates.js +93 -0
  75. package/dist/init/templates.js.map +1 -0
  76. package/dist/init/velo.d.ts +5 -0
  77. package/dist/init/velo.js +60 -0
  78. package/dist/init/velo.js.map +1 -0
  79. package/dist/policy.js +1 -0
  80. package/dist/policy.js.map +1 -0
  81. package/dist/prepare.js +1 -0
  82. package/dist/prepare.js.map +1 -0
  83. package/dist/runtime.d.ts +1 -1
  84. package/dist/runtime.js +1 -0
  85. package/dist/runtime.js.map +1 -0
  86. package/dist/schemas/gulp.d.ts +25 -0
  87. package/dist/schemas/gulp.js +8 -0
  88. package/dist/schemas/gulp.js.map +1 -0
  89. package/dist/schemas/index.d.ts +10 -0
  90. package/dist/schemas/index.js +9 -0
  91. package/dist/schemas/index.js.map +1 -0
  92. package/dist/schemas/lucy.d.ts +29 -0
  93. package/dist/schemas/lucy.js +42 -0
  94. package/dist/schemas/lucy.js.map +1 -0
  95. package/dist/schemas/tsconfig.js +2 -0
  96. package/dist/schemas/tsconfig.js.map +1 -0
  97. package/dist/schemas/types.d.ts +33 -0
  98. package/dist/schemas/types.js +5 -1
  99. package/dist/schemas/types.js.map +1 -0
  100. package/dist/states.js +1 -0
  101. package/dist/states.js.map +1 -0
  102. package/dist/tasks/Gulpfile.d.ts +4 -0
  103. package/dist/tasks/Gulpfile.js +111 -0
  104. package/dist/tasks/Gulpfile.js.map +1 -0
  105. package/dist/tasks/gulp/backend.d.ts +4 -0
  106. package/dist/tasks/gulp/backend.js +92 -0
  107. package/dist/tasks/gulp/backend.js.map +1 -0
  108. package/dist/tasks/gulp/checks.d.ts +4 -0
  109. package/dist/tasks/gulp/checks.js +202 -0
  110. package/dist/tasks/gulp/checks.js.map +1 -0
  111. package/dist/tasks/gulp/clean.d.ts +3 -0
  112. package/dist/tasks/gulp/clean.js +33 -0
  113. package/dist/tasks/gulp/clean.js.map +1 -0
  114. package/dist/tasks/gulp/copy.d.ts +3 -0
  115. package/dist/tasks/gulp/copy.js +34 -0
  116. package/dist/tasks/gulp/copy.js.map +1 -0
  117. package/dist/tasks/gulp/helpers.d.ts +3 -0
  118. package/dist/tasks/gulp/helpers.js +19 -0
  119. package/dist/tasks/gulp/helpers.js.map +1 -0
  120. package/dist/tasks/gulp/pages.d.ts +2 -0
  121. package/dist/tasks/gulp/pages.js +39 -0
  122. package/dist/tasks/gulp/pages.js.map +1 -0
  123. package/dist/tasks/gulp/pipeline.d.ts +1 -0
  124. package/dist/tasks/gulp/pipeline.js +29 -0
  125. package/dist/tasks/gulp/pipeline.js.map +1 -0
  126. package/dist/tasks/gulp/public.d.ts +3 -0
  127. package/dist/tasks/gulp/public.js +50 -0
  128. package/dist/tasks/gulp/public.js.map +1 -0
  129. package/dist/tasks/gulp/styles.d.ts +3 -0
  130. package/dist/tasks/gulp/styles.js +40 -0
  131. package/dist/tasks/gulp/styles.js.map +1 -0
  132. package/dist/tasks/gulp/templates.d.ts +2 -0
  133. package/dist/tasks/gulp/templates.js +45 -0
  134. package/dist/tasks/gulp/templates.js.map +1 -0
  135. package/dist/tasks/gulp/types.d.ts +4 -0
  136. package/dist/tasks/gulp/types.js +293 -0
  137. package/dist/tasks/gulp/types.js.map +1 -0
  138. package/dist/tasks/gulp/watchers.d.ts +3 -0
  139. package/dist/tasks/gulp/watchers.js +59 -0
  140. package/dist/tasks/gulp/watchers.js.map +1 -0
  141. package/dist/tasks/index.d.ts +4 -0
  142. package/dist/tasks/index.js +23 -0
  143. package/dist/tasks/index.js.map +1 -0
  144. package/dist/tasks/syncSettings.d.ts +3 -0
  145. package/dist/tasks/syncSettings.js +18 -0
  146. package/dist/tasks/syncSettings.js.map +1 -0
  147. package/dist/utils/index.js +2 -0
  148. package/dist/utils/index.js.map +1 -0
  149. package/dist/utils/logger.d.ts +17 -0
  150. package/dist/utils/logger.js +37 -0
  151. package/dist/utils/logger.js.map +1 -0
  152. package/dist/wix-sdk/check.d.ts +4 -0
  153. package/dist/wix-sdk/check.js +23 -0
  154. package/dist/wix-sdk/check.js.map +1 -0
  155. package/dist/wix-sdk/client.d.ts +10 -0
  156. package/dist/wix-sdk/client.js +18 -0
  157. package/dist/wix-sdk/client.js.map +1 -0
  158. package/dist/wix-sdk/index.d.ts +4 -0
  159. package/dist/wix-sdk/index.js +15 -0
  160. package/dist/wix-sdk/index.js.map +1 -0
  161. package/dist/wix-sdk/init.d.ts +4 -0
  162. package/dist/wix-sdk/init.js +51 -0
  163. package/dist/wix-sdk/init.js.map +1 -0
  164. package/dist/wix-sdk/run.d.ts +4 -0
  165. package/dist/wix-sdk/run.js +53 -0
  166. package/dist/wix-sdk/run.js.map +1 -0
  167. package/dist/wix-sync/client.d.ts +3 -0
  168. package/dist/wix-sync/client.js +5 -0
  169. package/dist/wix-sync/client.js.map +1 -0
  170. package/dist/wix-sync/export.d.ts +4 -0
  171. package/dist/wix-sync/export.js +15 -0
  172. package/dist/wix-sync/export.js.map +1 -0
  173. package/dist/wix-sync/import.d.ts +4 -0
  174. package/dist/wix-sync/import.js +26 -0
  175. package/dist/wix-sync/import.js.map +1 -0
  176. package/dist/wix-sync/index.d.ts +4 -0
  177. package/dist/wix-sync/index.js +35 -0
  178. package/dist/wix-sync/index.js.map +1 -0
  179. package/dist/wix-sync/init.d.ts +4 -0
  180. package/dist/wix-sync/init.js +74 -0
  181. package/dist/wix-sync/init.js.map +1 -0
  182. package/dist/wix-sync/is-alive.d.ts +4 -0
  183. package/dist/wix-sync/is-alive.js +23 -0
  184. package/dist/wix-sync/is-alive.js.map +1 -0
  185. package/dist/wix-sync/migrate.d.ts +4 -0
  186. package/dist/wix-sync/migrate.js +21 -0
  187. package/dist/wix-sync/migrate.js.map +1 -0
  188. package/dist/wix-sync/sync.d.ts +4 -0
  189. package/dist/wix-sync/sync.js +26 -0
  190. package/dist/wix-sync/sync.js.map +1 -0
  191. package/files/sync-data/data/test.csv +17 -0
  192. package/files/sync-data/files/lucy.jpg +0 -0
  193. package/files/sync-data/schema/test.json +11 -0
  194. package/files/templates/block[D]/files/.stylelintrc.js +8 -0
  195. package/files/templates/block[D]/lucy.json +9 -0
  196. package/files/templates/cargo[D]/files/.env +1 -0
  197. package/files/templates/cargo[D]/files/Cargo.toml +238 -0
  198. package/files/templates/cargo[D]/files/Makefile.toml +4 -0
  199. package/files/templates/cargo[D]/files/build/main.rs +35 -0
  200. package/files/templates/cargo[D]/files/config/beta.json +19 -0
  201. package/files/templates/cargo[D]/files/config/ci.json +15 -0
  202. package/files/templates/cargo[D]/files/config/default.json +71 -0
  203. package/files/templates/cargo[D]/files/config/development.json +10 -0
  204. package/files/templates/cargo[D]/files/config/produktion.json +5 -0
  205. package/files/templates/cargo[D]/files/config/stage.json +4 -0
  206. package/files/templates/cargo[D]/files/locales/todo.yml +3 -0
  207. package/files/templates/cargo[D]/files/public/index.html +1 -0
  208. package/files/templates/cargo[D]/lucy.json +15 -0
  209. package/files/templates/expo[D]/files/.stylelintrc.js +8 -0
  210. package/files/{expo → templates/expo[D]/files}/eas.json +9 -3
  211. package/files/templates/expo[D]/files/lib/data.ts +197 -0
  212. package/files/{expo → templates/expo[D]/files}/metro.config.js +6 -0
  213. package/files/templates/expo[D]/files/pnpm-workspace.yaml +3 -0
  214. package/files/templates/expo[D]/lucy.json +86 -0
  215. package/files/templates/monorepo[D]/files/.editorconfig +10 -0
  216. package/files/templates/monorepo[D]/files/.nvmrc +1 -0
  217. package/files/templates/monorepo[D]/files/.prettierignore +23 -0
  218. package/files/templates/monorepo[D]/files/.prettierrc.json +15 -0
  219. package/files/templates/monorepo[D]/files/.stylelintrc.js +8 -0
  220. package/files/templates/monorepo[D]/files/.yarnrc +1 -0
  221. package/files/templates/monorepo[D]/files/.yarnrc.yml +3 -0
  222. package/files/templates/monorepo[D]/files/README.md +109 -0
  223. package/files/templates/monorepo[D]/files/currents.config.ts +5 -0
  224. package/files/templates/monorepo[D]/files/nx.json +25 -0
  225. package/files/templates/monorepo[D]/files/pnpm-workspace.yaml +11 -0
  226. package/files/templates/monorepo[D]/files/tsconfig.json +6 -0
  227. package/files/templates/monorepo[D]/files/typedoc.json +25 -0
  228. package/files/templates/monorepo[D]/files/vitest.config.ts +27 -0
  229. package/files/templates/monorepo[D]/lucy.json +69 -0
  230. package/files/templates/tauri[D]/lucy.json +9 -0
  231. package/files/templates/velo[D]/files/.prettierignore +23 -0
  232. package/files/templates/velo[D]/files/.prettierrc.js +16 -0
  233. package/files/templates/velo[D]/lucy.json +137 -0
  234. package/old/Gulpfile.d.ts +34 -0
  235. package/old/Gulpfile.js +116 -0
  236. package/old/Gulpfile.js.map +1 -0
  237. package/old/gulp/backend.d.ts +3 -0
  238. package/old/gulp/backend.js +92 -0
  239. package/old/gulp/backend.js.map +1 -0
  240. package/old/gulp/checks.d.ts +3 -0
  241. package/old/gulp/checks.js +205 -0
  242. package/old/gulp/checks.js.map +1 -0
  243. package/old/gulp/clean.d.ts +3 -0
  244. package/old/gulp/clean.js +29 -0
  245. package/old/gulp/clean.js.map +1 -0
  246. package/old/gulp/copy.d.ts +2 -0
  247. package/old/gulp/copy.js +34 -0
  248. package/old/gulp/copy.js.map +1 -0
  249. package/old/gulp/helpers.d.ts +2 -0
  250. package/old/gulp/helpers.js +25 -0
  251. package/old/gulp/helpers.js.map +1 -0
  252. package/old/gulp/pages.d.ts +2 -0
  253. package/old/gulp/pages.js +37 -0
  254. package/old/gulp/pages.js.map +1 -0
  255. package/old/gulp/pipeline.d.ts +1 -0
  256. package/old/gulp/pipeline.js +29 -0
  257. package/old/gulp/pipeline.js.map +1 -0
  258. package/old/gulp/public.d.ts +2 -0
  259. package/old/gulp/public.js +50 -0
  260. package/old/gulp/public.js.map +1 -0
  261. package/old/gulp/styles.d.ts +2 -0
  262. package/old/gulp/styles.js +40 -0
  263. package/old/gulp/styles.js.map +1 -0
  264. package/old/gulp/templates.d.ts +2 -0
  265. package/old/gulp/templates.js +33 -0
  266. package/old/gulp/templates.js.map +1 -0
  267. package/old/gulp/types.d.ts +4 -0
  268. package/old/gulp/types.js +289 -0
  269. package/old/gulp/types.js.map +1 -0
  270. package/old/gulp/watchers.d.ts +9 -0
  271. package/old/gulp/watchers.js +59 -0
  272. package/old/gulp/watchers.js.map +1 -0
  273. package/old/helpers.d.ts +32 -0
  274. package/old/helpers.js +267 -0
  275. package/old/helpers.js.map +1 -0
  276. package/{src copy/helpers.ts → old/helpers.ts} +1 -1
  277. package/old/index.d.ts +59 -0
  278. package/old/index.js +288 -0
  279. package/old/index.js.map +1 -0
  280. package/old/init.d.ts +8 -0
  281. package/old/init.js +165 -0
  282. package/old/init.js.map +1 -0
  283. package/old/models.d.ts +37 -0
  284. package/old/models.js +2 -0
  285. package/old/models.js.map +1 -0
  286. package/old/prepare.d.ts +8 -0
  287. package/old/prepare.js +20 -0
  288. package/old/prepare.js.map +1 -0
  289. package/old/schemas/index.js +2 -0
  290. package/old/schemas/index.js.map +1 -0
  291. package/old/schemas/index.ts +0 -0
  292. package/old/schemas/types.d.ts +0 -0
  293. package/old/schemas/types.js +2 -0
  294. package/old/schemas/types.js.map +1 -0
  295. package/old/schemas/types.ts +0 -0
  296. package/old/sync.d.ts +2 -0
  297. package/old/sync.js +88 -0
  298. package/old/sync.js.map +1 -0
  299. package/package.json +18 -19
  300. package/patches/velo-sync+0.0.9.patch +13 -0
  301. package/src/args.ts +62 -17
  302. package/src/commands/checks.ts +51 -0
  303. package/src/commands/cleanup.ts +11 -0
  304. package/src/commands/copy.ts +28 -0
  305. package/src/commands/edit.ts +81 -0
  306. package/src/commands/exec.ts +69 -0
  307. package/src/commands/git.ts +113 -0
  308. package/src/commands/home.ts +22 -0
  309. package/src/commands/install.ts +249 -0
  310. package/src/commands/read.ts +45 -0
  311. package/src/commands/write.ts +45 -0
  312. package/src/config.ts +116 -35
  313. package/src/error.ts +1 -2
  314. package/src/helpers.ts +92 -0
  315. package/src/index.ts +88 -13
  316. package/src/init/blocks.ts +85 -0
  317. package/src/init/cargo.ts +25 -0
  318. package/src/init/expo.ts +69 -0
  319. package/src/init/gitModules.ts +15 -0
  320. package/src/init/index.ts +81 -0
  321. package/src/init/monorepo.ts +72 -0
  322. package/src/init/prepareVelo.ts +19 -0
  323. package/src/init/tauri.ts +42 -0
  324. package/src/init/templates.ts +98 -0
  325. package/src/init/velo.ts +65 -0
  326. package/src/runtime.ts +1 -0
  327. package/src/schemas/gulp.ts +31 -0
  328. package/src/schemas/index.ts +13 -1
  329. package/src/schemas/lucy.ts +43 -0
  330. package/src/schemas/types.ts +40 -0
  331. package/src/tasks/Gulpfile.ts +207 -0
  332. package/src/tasks/gulp/backend.ts +113 -0
  333. package/src/tasks/gulp/checks.ts +218 -0
  334. package/src/tasks/gulp/clean.ts +38 -0
  335. package/src/tasks/gulp/copy.ts +38 -0
  336. package/src/tasks/gulp/helpers.ts +18 -0
  337. package/src/tasks/gulp/pages.ts +43 -0
  338. package/src/tasks/gulp/pipeline.ts +31 -0
  339. package/src/tasks/gulp/public.ts +61 -0
  340. package/src/tasks/gulp/styles.ts +47 -0
  341. package/src/tasks/gulp/templates.ts +53 -0
  342. package/src/tasks/gulp/types.ts +310 -0
  343. package/src/tasks/gulp/watchers.ts +97 -0
  344. package/src/tasks/index.ts +24 -0
  345. package/src/tasks/syncSettings.ts +21 -0
  346. package/src/types.d.ts +1 -1
  347. package/src/utils/index.ts +0 -0
  348. package/src/utils/logger.ts +40 -0
  349. package/src/wix-sdk/check.ts +24 -0
  350. package/src/wix-sdk/client.ts +18 -0
  351. package/src/wix-sdk/index.ts +17 -0
  352. package/src/wix-sdk/init.ts +54 -0
  353. package/src/wix-sdk/run.ts +56 -0
  354. package/src/wix-sync/client.ts +6 -0
  355. package/src/wix-sync/export.ts +19 -0
  356. package/src/wix-sync/import.ts +27 -0
  357. package/src/wix-sync/index.ts +36 -0
  358. package/src/wix-sync/init.ts +77 -0
  359. package/src/wix-sync/is-alive.ts +25 -0
  360. package/src/wix-sync/migrate.ts +23 -0
  361. package/src/wix-sync/sync.ts +27 -0
  362. package/tsconfig.json +6 -5
  363. package/dist/init.d.ts +0 -4
  364. package/dist/init.js +0 -275
  365. package/dist/models.js +0 -1
  366. package/dist/params.d.ts +0 -7
  367. package/dist/params.js +0 -23
  368. package/files/expo/lib/data.ts +0 -48
  369. package/files/expo/lucy.json +0 -8
  370. package/src/init.ts +0 -392
  371. /package/dist/{models.d.ts → schemas/tsconfig.d.ts} +0 -0
  372. /package/{files/expo/components/.gitkeep → dist/utils/index.d.ts} +0 -0
  373. /package/files/{expo → templates/expo[D]/files}/.nvmrc +0 -0
  374. /package/files/{expo → templates/expo[D]/files}/.prettierignore +0 -0
  375. /package/files/{expo → templates/expo[D]/files}/.prettierrc.js +0 -0
  376. /package/files/{expo → templates/expo[D]/files}/.yarnrc +0 -0
  377. /package/files/{expo → templates/expo[D]/files}/.yarnrc.yml +0 -0
  378. /package/files/{expo → templates/expo[D]/files}/README.md +0 -0
  379. /package/files/{expo → templates/expo[D]/files}/assets/fonts/SpaceMono-Regular.ttf +0 -0
  380. /package/files/{expo → templates/expo[D]/files}/assets/images/adaptive-icon.png +0 -0
  381. /package/files/{expo → templates/expo[D]/files}/assets/images/favicon.png +0 -0
  382. /package/files/{expo → templates/expo[D]/files}/assets/images/icon.png +0 -0
  383. /package/files/{expo → templates/expo[D]/files}/assets/images/splash-icon.png +0 -0
  384. /package/files/{expo → templates/expo[D]/files}/babel.config.js +0 -0
  385. /package/files/{expo/components/ui → templates/expo[D]/files/components}/.gitkeep +0 -0
  386. /package/files/{velo/typescript/__mocks__ → templates/expo[D]/files/components/ui}/.gitkeep +0 -0
  387. /package/files/{expo → templates/expo[D]/files}/constants/theme.ts +0 -0
  388. /package/files/{expo → templates/expo[D]/files}/eslint.config.mjs +0 -0
  389. /package/files/{expo → templates/expo[D]/files}/global.css +0 -0
  390. /package/files/{expo → templates/expo[D]/files}/hooks/useColorScheme.ts +0 -0
  391. /package/files/{expo → templates/expo[D]/files}/index.ts +0 -0
  392. /package/files/{expo → templates/expo[D]/files}/lib/utils/index.ts +0 -0
  393. /package/files/{expo → templates/expo[D]/files}/lib/utils/polyfills.ts +0 -0
  394. /package/files/{expo → templates/expo[D]/files}/lib/wix/client.ts +0 -0
  395. /package/files/{expo → templates/expo[D]/files}/lib/wix/error.ts +0 -0
  396. /package/files/{expo → templates/expo[D]/files}/lib/wix/index.ts +0 -0
  397. /package/files/{expo → templates/expo[D]/files}/nativewind-env.d.ts +0 -0
  398. /package/files/{expo → templates/expo[D]/files}/scripts/reset-project.ts +0 -0
  399. /package/files/{expo → templates/expo[D]/files}/tailwind.config.js +0 -0
  400. /package/files/{expo → templates/expo[D]/files}/tsconfig.json +0 -0
  401. /package/files/{expo → templates/expo[D]/files}/types/reset.d.ts +0 -0
  402. /package/files/{velo → templates/velo[D]/files}/.gitmodules +0 -0
  403. /package/files/{velo → templates/velo[D]/files}/.madgerc +0 -0
  404. /package/files/{velo → templates/velo[D]/files}/.nvmrc +0 -0
  405. /package/files/{velo → templates/velo[D]/files}/.stylelintrc.js +0 -0
  406. /package/files/{velo → templates/velo[D]/files}/.yarnrc.yml +0 -0
  407. /package/files/{velo → templates/velo[D]/files}/currents.config.js +0 -0
  408. /package/files/{velo → templates/velo[D]/files}/cypress/e2e/base/base.cy.ts +0 -0
  409. /package/files/{velo → templates/velo[D]/files}/cypress/fixtures/example.json +0 -0
  410. /package/files/{velo → templates/velo[D]/files}/cypress/support/commands.ts +0 -0
  411. /package/files/{velo → templates/velo[D]/files}/cypress/support/e2e.ts +0 -0
  412. /package/files/{velo → templates/velo[D]/files}/cypress/tsconfig.json +0 -0
  413. /package/files/{velo → templates/velo[D]/files}/cypress.config.mjs +0 -0
  414. /package/files/{velo → templates/velo[D]/files}/eslint.config.mjs +0 -0
  415. /package/files/{velo → templates/velo[D]/files}/local.tsconfig.json +0 -0
  416. /package/files/{velo → templates/velo[D]/files}/typedoc.json +0 -0
  417. /package/files/{velo/typescript/pages → templates/velo[D]/files/typescript/__mocks__}/.gitkeep +0 -0
  418. /package/files/{velo → templates/velo[D]/files}/typescript/backend/data.ts +0 -0
  419. /package/files/{velo → templates/velo[D]/files}/typescript/backend/events.ts +0 -0
  420. /package/files/{velo → templates/velo[D]/files}/typescript/backend/http-functions.ts +0 -0
  421. /package/files/{velo → templates/velo[D]/files}/typescript/backend/lib/http-functions/sync.ts +0 -0
  422. /package/files/{velo → templates/velo[D]/files}/typescript/backend/permissions.json +0 -0
  423. /package/files/{velo/typescript/public → templates/velo[D]/files/typescript/pages}/.gitkeep +0 -0
  424. /package/files/{velo/typescript/styles → templates/velo[D]/files/typescript/public}/.gitkeep +0 -0
  425. /package/files/{velo → templates/velo[D]/files}/typescript/public/scss/app.scss +0 -0
  426. /package/files/{velo/typescript/styles/global.scss → templates/velo[D]/files/typescript/styles/.gitkeep} +0 -0
  427. /package/{src copy/schemas/index.ts → files/templates/velo[D]/files/typescript/styles/global.scss} +0 -0
  428. /package/files/{velo → templates/velo[D]/files}/typescript/tsconfig.json +0 -0
  429. /package/files/{velo → templates/velo[D]/files}/vitest.config.ts +0 -0
  430. /package/{src copy → old}/Gulpfile.ts +0 -0
  431. /package/{src copy → old}/gulp/backend.ts +0 -0
  432. /package/{src copy → old}/gulp/checks.ts +0 -0
  433. /package/{src copy → old}/gulp/clean.ts +0 -0
  434. /package/{src copy → old}/gulp/copy.ts +0 -0
  435. /package/{src copy → old}/gulp/helpers.ts +0 -0
  436. /package/{src copy → old}/gulp/pages.ts +0 -0
  437. /package/{src copy → old}/gulp/pipeline.ts +0 -0
  438. /package/{src copy → old}/gulp/public.ts +0 -0
  439. /package/{src copy → old}/gulp/styles.ts +0 -0
  440. /package/{src copy → old}/gulp/templates.ts +0 -0
  441. /package/{src copy → old}/gulp/types.ts +0 -0
  442. /package/{src copy → old}/gulp/watchers.ts +0 -0
  443. /package/{src copy → old}/index.ts +0 -0
  444. /package/{src copy → old}/init.ts +0 -0
  445. /package/{src copy → old}/models.ts +0 -0
  446. /package/{src copy → old}/prepare.ts +0 -0
  447. /package/{src copy/schemas/types.ts → old/schemas/index.d.ts} +0 -0
  448. /package/{src copy → old}/settings.json +0 -0
  449. /package/{src copy → old}/sync.ts +0 -0
  450. /package/{src copy → old}/types.d.ts +0 -0
  451. /package/src/{models.ts → schemas/tsconfig.ts} +0 -0
@@ -0,0 +1,51 @@
1
+ import { Effect, Schema } from "effect/index";
2
+ import { FileSystem, Path } from "@effect/platform"
3
+ import { Config, lucyJsonName } from "../config.js";
4
+ import { logger } from "../utils/logger.js";
5
+ import { AppError } from "../error.js";
6
+ import { JsonSchema } from "../schemas/index.js";
7
+
8
+ export const isDirectoryClean =(excludes: string[] = []) => {
9
+ return Effect.gen(function*() {
10
+ const fs = yield* FileSystem.FileSystem;
11
+ const config = yield* Config;
12
+
13
+ const files = yield* fs.readDirectory(config.config.cwd);
14
+ const allExcludes = [...excludes, '.git', lucyJsonName];
15
+ const filteredFiles = files.filter(file => !allExcludes.includes(file));
16
+
17
+ return filteredFiles.length > 0 ? false : true;
18
+ });
19
+ }
20
+
21
+ export const checkForDirty = (excludes: string[] = []) => {
22
+ return Effect.gen(function*() {
23
+ const config = yield* Config;
24
+ const clean = yield* isDirectoryClean(excludes);
25
+ if(!clean && !config.config.force) {
26
+ logger.alert("The current directory is not empty. Please run this command in an empty directory.")
27
+ yield* Effect.fail(new AppError({ message: "Directory is not clean", cause: new Error("Directory is not clean") }));
28
+ return;
29
+ }
30
+ if(config.config.lucySettings.initialized && !config.config.force) {
31
+ logger.alert("Lucy is already initialized in this directory. Use --force to reinitialize.")
32
+ yield* Effect.fail(new AppError({ message: "Lucy is already initialized in this directory", cause: new Error("Lucy is already initialized in this directory") }));
33
+ return;
34
+ }
35
+
36
+ if ((!clean && config.config.force) || (config.config.lucySettings.initialized && config.config.force)) logger.alert("Forced initialization!")
37
+ });
38
+ }
39
+ export const checkForVelo = () => {
40
+ return Effect.gen(function*() {
41
+ const config = yield* Config;
42
+ const fs = yield* FileSystem.FileSystem;
43
+ const path = yield* Path.Path;
44
+
45
+ const wixConfigPath = path.join(config.config.cwd, 'wix.config.json');
46
+ const wixConfigRaw = yield* fs.readFileString(wixConfigPath);
47
+ const wixConfigJSON =( yield* Schema.decodeUnknown(JsonSchema)(wixConfigRaw)) as any;
48
+
49
+ if(!(wixConfigJSON.siteId)) return yield* Effect.fail(new AppError({ message: "This directory is not a Velo project. Please run this command in a Velo project directory.", cause: new Error("Not a Velo project") }));
50
+ });
51
+ }
@@ -0,0 +1,11 @@
1
+ import { Effect } from "effect/index";
2
+ import { Config } from "../config.js";
3
+ import { FileSystem, Path } from "@effect/platform"
4
+
5
+ export const cleanup = Effect.gen(function* () {
6
+ const config = yield* Config;
7
+ const fs = yield* FileSystem.FileSystem;
8
+ const path = yield* Path.Path;
9
+
10
+ yield* fs.remove(path.join(config.config.cwd, "package-lock.json"), { force: true })
11
+ });
@@ -0,0 +1,28 @@
1
+ import { Effect } from "effect/index";
2
+ import { Path } from "@effect/platform"
3
+ import { FileSystem } from "@effect/platform"
4
+ import { Config, syncDataName, syncFilesSource } from "../config.js";
5
+
6
+ export const copyTemplateFiles = Effect.gen(function*() {
7
+ const fs = yield* FileSystem.FileSystem;
8
+ const config = yield* Config;
9
+ const path = yield * Path.Path;
10
+
11
+ const templateFiles = yield* fs.readDirectory(config.config.templateFiles)
12
+ yield* Effect.forEach(
13
+ templateFiles,
14
+ (file) => fs.copy(path.join(config.config.templateFiles, file), path.join(config.config.cwd, file), { overwrite: true })
15
+ )
16
+ })
17
+ export const copySyncFiles = Effect.gen(function*() {
18
+ const fs = yield* FileSystem.FileSystem;
19
+ const config = yield* Config;
20
+ const path = yield * Path.Path;
21
+
22
+ const synDataFiles = yield* fs.readDirectory(syncFilesSource)
23
+ yield* fs.makeDirectory(path.join(config.config.cwd, syncDataName));
24
+ yield* Effect.forEach(
25
+ synDataFiles,
26
+ (file) => fs.copy(path.join(syncFilesSource, file), path.join(config.config.cwd, syncDataName, file), { overwrite: true })
27
+ )
28
+ })
@@ -0,0 +1,81 @@
1
+ import { Effect, Schema } from "effect/index";
2
+ import { Config, lucyJsonPath } from "../config.js";
3
+ import { FileSystem, Path } from "@effect/platform"
4
+ import { logger } from "../utils/logger.js";
5
+ import { JsonSchema } from "../schemas/index.js";
6
+ import { LucySettings } from "../schemas/lucy.js";
7
+
8
+ export const editJson = (json: any, keys: string[], values: string[] | Object[]) => {
9
+ return Effect.gen(function*() {
10
+ const config = yield* Config;
11
+
12
+ for (const key of keys){
13
+ const index = keys.indexOf(key);
14
+ const value = values[index];
15
+ json[key] = value;
16
+ }
17
+ })
18
+ }
19
+
20
+ export const mergeLucySettings2PackageJson = Effect.gen(function*() {
21
+ const config = yield* Config;
22
+ const lucySettings = config.config.lucySettings;
23
+ const packageJson = config.config.packageJson;
24
+
25
+ if (Object.keys(lucySettings.scripts).length > 0) {
26
+ yield* editJson(packageJson, ['scripts'], [{...packageJson.scripts, ...lucySettings.scripts}]);
27
+ }
28
+ })
29
+
30
+ export const setModule = Effect.gen(function*() {
31
+ const config = yield* Config;
32
+ const lucySettings = config.config.lucySettings;
33
+ const packageJson = config.config.packageJson;
34
+
35
+ yield* editJson(packageJson, ['type'], ['module']);
36
+ })
37
+
38
+ export const mergeAdditions = Effect.gen(function*() {
39
+ const config = yield* Config;
40
+ const lucySettings = config.config.lucySettings;
41
+ const packageJson = config.config.packageJson;
42
+
43
+ config.config.packageJson = {
44
+ ...packageJson,
45
+ ...lucySettings.additionalPkgProps,
46
+ }
47
+ })
48
+
49
+ export const setProjectName = Effect.gen(function*() {
50
+ const config = yield* Config;
51
+ const packageJson = config.config.packageJson;
52
+
53
+ yield * editJson(packageJson, ["name"], [config.config.projectName]);
54
+ })
55
+
56
+ export const setInitialized = Effect.gen(function*() {
57
+ const fs = yield* FileSystem.FileSystem;
58
+ const lucyRaw = yield* fs.readFileString(lucyJsonPath);
59
+ const lucyJSON = (yield* Schema.decodeUnknown(JsonSchema)(lucyRaw)) as any;
60
+ lucyJSON.initialized = true;
61
+
62
+ yield* fs.writeFileString(lucyJsonPath, JSON.stringify(lucyJSON, null, 2));
63
+ })
64
+
65
+ export const stringReplace = (filePath: string, keys: string[], values: string[]) => {
66
+ return Effect.gen(function*() {
67
+ const fs = yield* FileSystem.FileSystem;
68
+ let modifiedContent: string = '';
69
+
70
+ logger.action(`Replacing ${keys} with ${values} in ${filePath}`);
71
+ const data = yield* fs.readFileString(filePath, 'utf8');
72
+ for (const key of keys){
73
+ const index = keys.indexOf(key);
74
+ const value = values[index];
75
+ const regex = new RegExp(`${key}`, 'g');
76
+ modifiedContent = data.replace(regex, `${value}`);
77
+ }
78
+ yield* fs.writeFileString(filePath, modifiedContent);
79
+ logger.info(`Updated file ${filePath}`);
80
+ })
81
+ }
@@ -0,0 +1,69 @@
1
+ import { Effect, Schema } from "effect/index";
2
+ import { Config } from "../config.js";
3
+ import { Command } from "@effect/platform/index";
4
+ import { logger } from "../utils/logger.js";
5
+ import { FileSystem } from "@effect/platform"
6
+ import Enquirer from "enquirer";
7
+ import { AppError } from "../error.js";
8
+
9
+ export const execCommand = Effect.gen(function*() {
10
+ const config = yield* Config;
11
+ const cmds = config.config.lucySettings.additionalCommands ?? [];
12
+ logger.info("Executing additional commands...", cmds);
13
+ if (cmds.length > 0) {
14
+ logger.info("Executing additional commands");
15
+ yield *
16
+ Effect.all([
17
+ ...cmds.map((cmd) => {
18
+ return Command.make(cmd[0], ...cmd.slice(1))
19
+ .pipe()
20
+ .pipe(Command.stdout("inherit"), Command.stderr("inherit"), Command.exitCode);
21
+ }),
22
+ ]);
23
+ }
24
+ })
25
+
26
+ export const open = Effect.scoped(Effect.gen(function*() {
27
+ const config = yield* Config;
28
+ const fs = yield* FileSystem.FileSystem
29
+ console.log("Opening Lucy home directory:", config.config.lucyHome);
30
+ let command: ReturnType<typeof Command.make>;
31
+ switch (process.platform) {
32
+ case 'darwin': command = Command.make('open', config.config.lucyHome); break;
33
+ case 'win32': command = Command.make('start', config.config.lucyHome); break;
34
+ default: command = Command.make('xdg-open', config.config.lucyHome); break;
35
+ }
36
+
37
+ command.pipe().pipe(Command.stdout("inherit"), Command.stderr("inherit"), Command.exitCode);
38
+ yield* command.pipe().pipe(Command.stdout("inherit"), Command.stderr("inherit"), Command.exitCode);
39
+ }))
40
+
41
+ export const openVSCode = Effect.gen(function*() {
42
+ const config = yield* Config;
43
+ const open = Command.make(
44
+ "code",
45
+ config.config.cwd,
46
+ ).pipe(
47
+ Command.stdout("inherit"), // Stream stdout to process.stdout
48
+ Command.stderr("inherit"), // Stream stderr to process.stderr
49
+ Command.exitCode // Get the exit code
50
+ )
51
+ const overwriteQuestion = new Enquirer();
52
+ const openVScodeQuestion = yield* Effect.tryPromise({
53
+ try: () => overwriteQuestion.prompt({
54
+ type: 'confirm',
55
+ name: 'openVSCode',
56
+ message: `Do you want to open the project in VSCode?`,
57
+ }),
58
+ catch: (e) => {
59
+ return new AppError({
60
+ cause: e,
61
+ message: "Error opening VSCode",
62
+ });
63
+ }
64
+ })
65
+ const choice = yield* Schema.decodeUnknown(Schema.Struct({ openVSCode: Schema.Boolean }))(openVScodeQuestion);
66
+ if (choice.openVSCode) {
67
+ yield* open
68
+ }
69
+ })
@@ -0,0 +1,113 @@
1
+ import { Effect } from 'effect/index';
2
+ import { simpleGit, SimpleGit } from 'simple-git';
3
+ import { Config } from '../config.js';
4
+ import { AppError } from '../error.js';
5
+ import { logger } from '../utils/logger.js';
6
+ import { FileSystem, Path } from "@effect/platform"
7
+
8
+ export const isSubmoduleRegistered = (git: SimpleGit, submoduleName: string) => Effect.gen(function* () {
9
+ const value = yield* Effect.tryPromise({
10
+ try: () => git.getConfig(`submodule.${submoduleName}.url`),
11
+ catch: (error) => {
12
+ return new AppError({
13
+ cause: error,
14
+ message: "Failed to get submodule url",
15
+ });
16
+ }
17
+ })
18
+ return !!value.value;
19
+ })
20
+
21
+ export const gitInit = (update: boolean = false) => Effect.gen(function* () {
22
+ const config = yield* Config;
23
+ const git = simpleGit({ baseDir: config.config.cwd });
24
+ const path = yield * Path.Path;
25
+
26
+ const isGit = yield* Effect.tryPromise({
27
+ try: () => git.checkIsRepo(),
28
+ catch: (error) => {
29
+ return new AppError({
30
+ cause: error,
31
+ message: "Failed to check if the directory is a git repository",
32
+ });
33
+ }
34
+ })
35
+
36
+ if(!isGit) {
37
+ yield* Effect.tryPromise({
38
+ try: () => git.init(),
39
+ catch: (error) => {
40
+ return new AppError({
41
+ cause: error,
42
+ message: "Failed to initialize git repository",
43
+ });
44
+ }
45
+ })
46
+ }
47
+
48
+ if (!config.config.lucySettings.modules) {
49
+ logger.alert('No submodules defined in settings, skipping.');
50
+ return;
51
+ }
52
+ yield* initSubmodules(update);
53
+ })
54
+
55
+ export const initSubmodules = (update: boolean = false) => Effect.gen(function* () {
56
+ const config = yield* Config;
57
+ const git = simpleGit({ baseDir: config.config.cwd });
58
+ const path = yield* Path.Path;
59
+ const fs = yield* FileSystem.FileSystem;
60
+ const gitmodulesPath = path.join(config.config.cwd, ".gitmodules");
61
+
62
+ for (const [name, repo] of Object.entries(config.config.lucySettings.modules)) {
63
+ logger.action(`Processing submodule ${name}`);
64
+ const clonePath = repo.path || path.join(config.config.lucySettings.defaultModulePath ?? '', name);
65
+
66
+ const isRegistered = yield* isSubmoduleRegistered(git, clonePath);
67
+ const isConfiguredInFile = (yield* fs.exists(gitmodulesPath)) && (yield* fs.readFileString(gitmodulesPath, 'utf-8')).includes(`[submodule "${clonePath}"]`);
68
+
69
+ if (!isConfiguredInFile || config.config.force) {
70
+ logger.action(`Adding/updating submodule ${name} at ${clonePath}...`);
71
+ // If git already has a config entry, we must use --force to repair it.
72
+ const submoduleArgs = () => {
73
+ if (update) {
74
+ return ['add', '--force', repo.source, clonePath];
75
+ }
76
+ return ['add', ...(config.config.force || isRegistered ? ['--force'] : []), repo.source, clonePath];
77
+ }
78
+ // await git.subModule(submoduleArgs);
79
+ yield* Effect.tryPromise({
80
+ try: () => git.subModule(submoduleArgs()),
81
+ catch: (error) => {
82
+ return new AppError({
83
+ cause: error,
84
+ message: "Failed to add submodule",
85
+ });
86
+ }
87
+ })
88
+ } else {
89
+ logger.alert(`Submodule ${name} at ${clonePath} already registered. Skipping add.`);
90
+ }
91
+
92
+ yield* Effect.tryPromise({
93
+ try: () => git.submoduleUpdate(['--init', '--recursive', clonePath]),
94
+ catch: (error) => {
95
+ return new AppError({
96
+ cause: error,
97
+ message: "Failed to update submodule",
98
+ });
99
+ }
100
+ })
101
+ yield* Effect.tryPromise({
102
+ try: () => simpleGit({ baseDir: path.join(config.config.cwd, clonePath) }).checkout(repo.branch),
103
+ catch: (error) => {
104
+ return new AppError({
105
+ cause: error,
106
+ message: `Failed to checkout submodule ${repo} branch ${repo.branch}`,
107
+ });
108
+ }
109
+ })
110
+ }
111
+ logger.success("All modules processed!");
112
+
113
+ })
@@ -0,0 +1,22 @@
1
+ import { Effect } from "effect/index";
2
+ import { Config } from "../config.js";
3
+ import { FileSystem } from "@effect/platform"
4
+ import { logger, orange } from "../utils/logger.js";
5
+ import path, { join } from 'path';
6
+
7
+ export const createLucyHome = () => {
8
+ return Effect.gen(function*() {
9
+ const config = yield* Config
10
+ const fs = yield* FileSystem.FileSystem
11
+
12
+ if(!(yield* fs.exists(config.config.lucyHome))) {
13
+ logger.action(`Creating Lucy home directory at ${orange(config.config.lucyHome)}`);
14
+ yield* fs.makeDirectory(config.config.lucyHome, { recursive: true });
15
+ }
16
+ const templateFiles = yield* fs.readDirectory(config.config.filesFolder)
17
+ yield* Effect.forEach(
18
+ templateFiles,
19
+ (file) => fs.copy(path.join(config.config.filesFolder, file), path.join(config.config.lucyHome, file), { overwrite: true })
20
+ )
21
+ });
22
+ }
@@ -0,0 +1,249 @@
1
+ import { Command } from "@effect/platform/index";
2
+ import { Effect, Schedule } from "effect/index";
3
+ import { Config } from "../config.js";
4
+ import { logger } from "../utils/logger.js";
5
+ import { CommandExecutor, ExitCode } from "@effect/platform/CommandExecutor";
6
+ import { PlatformError } from "@effect/platform/Error";
7
+
8
+ export const installPackages = (workspace: boolean = false) => {
9
+ return Effect.gen(function*() {
10
+ const config = yield* Config;
11
+
12
+ const pkgs: string[] = []
13
+ for (const [key, value] of Object.entries(config.config.lucySettings.dependencies)) {
14
+ if (value.length > 0) {
15
+ pkgs.push(`${key}@${value}`);
16
+ continue
17
+ }
18
+ pkgs.push(key);
19
+ }
20
+ const devPkgs: string[] = []
21
+ for (const [key, value] of Object.entries(config.config.lucySettings.devDependencies)) {
22
+ if (value.length > 0) {
23
+ devPkgs.push(`${key}@${value}`);
24
+ continue
25
+ }
26
+ devPkgs.push(key);
27
+ }
28
+
29
+ const manager = config.config.lucySettings.packageManager;
30
+ function pkgMgrParamsInstall():string[] {
31
+ if (manager === "npm") {
32
+ return ["install"];
33
+ }
34
+ if (manager === "pnpm") {
35
+ return ["install"];
36
+ }
37
+ return ["add"];
38
+ }
39
+ function pkgMgrParamsInstallDev():string[] {
40
+ if (manager === "npm") {
41
+ return ["install", "-D"];
42
+ }
43
+ if (manager === "pnpm") {
44
+ return ["install", "-D"];
45
+ }
46
+ return ["add", "-D"];
47
+ }
48
+
49
+ function workspaceEnabled() {
50
+ if(config.config.lucySettings.packageManager === "pnpm" && workspace) {
51
+ return ["--workspace-root"];
52
+ }
53
+ return [];
54
+ }
55
+ logger.info("Installing dependencies");
56
+
57
+ const install = Command.make(
58
+ manager,
59
+ ...pkgMgrParamsInstall(),
60
+ ...workspaceEnabled(),
61
+ ...pkgs,
62
+ ).pipe(
63
+ Command.stdout("inherit"), // Stream stdout to process.stdout
64
+ Command.stderr("inherit"), // Stream stderr to process.stderr
65
+ Command.exitCode // Get the exit code
66
+ )
67
+
68
+ logger.info("Installing dev dependencies");
69
+ const installDev = Command.make(
70
+ manager,
71
+ ...pkgMgrParamsInstallDev(),
72
+ ...workspaceEnabled(),
73
+ ...devPkgs,
74
+ ).pipe(
75
+ Command.stdout("inherit"), // Stream stdout to process.stdout
76
+ Command.stderr("inherit"), // Stream stderr to process.stderr
77
+ Command.exitCode // Get the exit code
78
+ )
79
+
80
+ if(Object.keys(config.config.lucySettings.dependencies).length > 0) {
81
+ if ((yield* install) !== 0) {
82
+ return logger.error("Failed to install dependencies. Please check the error message above.");
83
+ }
84
+ }
85
+ if(Object.keys(config.config.lucySettings.devDependencies).length > 0) {
86
+ if ((yield* installDev) !== 0) {
87
+ return logger.error("Failed to install dev dependencies. Please check the error message above.");
88
+ }
89
+ }
90
+ })
91
+ }
92
+
93
+ export const runInstall = Effect.gen(function*() {
94
+ const config = yield* Config;
95
+
96
+ const manager = config.config.lucySettings.packageManager;
97
+ const install = Command.make(
98
+ manager,
99
+ "install",
100
+ ).pipe(
101
+ Command.stdout("inherit"), // Stream stdout to process.stdout
102
+ Command.stderr("inherit"), // Stream stderr to process.stderr
103
+ Command.exitCode // Get the exit code
104
+ )
105
+ yield* install;
106
+ })
107
+
108
+ // export const yarnSetVersion = Effect.gen(function*() {
109
+ // const yarnDev = Command.make(
110
+ // "yarn",
111
+ // "set",
112
+ // "version",
113
+ // "berry",
114
+ // ).pipe(
115
+ // Command.stdout("inherit"), // Stream stdout to process.stdout
116
+ // Command.exitCode // Get the exit code
117
+ // )
118
+ // yield* yarnDev;
119
+ // })
120
+ export const installVeloPackages = Effect.gen(function*() {
121
+ const config = yield* Config;
122
+ const simpleSchedule = Schedule.tapOutput(
123
+ Schedule.fromDelays(50, 100, 200, 400, 800, 1600, 3200),
124
+ (n, ) => Effect.succeed(logger.warning(`Failed to install WIX package. Retrying...`))
125
+ );
126
+
127
+ const pkgs: string[] = []
128
+ for (const [key, value] of Object.entries(config.config.lucySettings.dependencies)) {
129
+ if (value.length > 0) {
130
+ pkgs.push(`${key}@${value}`);
131
+ continue
132
+ }
133
+ pkgs.push(key);
134
+ }
135
+
136
+ const wixPkgs: Effect.Effect<ExitCode, PlatformError, CommandExecutor>[] = []
137
+ const wixInstall = (cmd: Effect.Effect<ExitCode, PlatformError, CommandExecutor>) => Effect.gen(function*() {
138
+ const code = yield* Effect.retryOrElse(
139
+ Effect.gen(function*() {
140
+ const code = yield* cmd;
141
+ if (code !== 0) {
142
+ return yield* Effect.fail(code);
143
+ }
144
+ return yield* Effect.succeed(code);
145
+ }),
146
+ simpleSchedule,
147
+ () => Effect.succeed(0 as ExitCode)
148
+ )
149
+ if (code !== 0) {
150
+ logger.error("Failed to install WIX package.");
151
+ }
152
+ return code;
153
+ })
154
+
155
+ for (const [key, value] of Object.entries(config.config.lucySettings.dependencies)) {
156
+ if (value.length > 0) {
157
+ wixPkgs.push(
158
+ wixInstall(
159
+ Command.make(
160
+ "wix",
161
+ "install",
162
+ `${key}@${value}`
163
+ ).pipe(
164
+ Command.stdout("inherit"),
165
+ Command.stderr("inherit"),
166
+ Command.exitCode
167
+ )
168
+ )
169
+ )
170
+ continue
171
+ }
172
+ wixPkgs.push(
173
+ wixInstall(
174
+ Command.make(
175
+ "wix",
176
+ "install",
177
+ `${key}`
178
+ ).pipe(
179
+ Command.stdout("inherit"),
180
+ Command.stderr("inherit"),
181
+ Command.exitCode
182
+ ),
183
+ ))
184
+ }
185
+
186
+ const devPkgs: string[] = []
187
+ for (const [key, value] of Object.entries(config.config.lucySettings.devDependencies)) {
188
+ if (value.length > 0) {
189
+ devPkgs.push(`${key}@${value}`);
190
+ continue
191
+ }
192
+ devPkgs.push(key);
193
+ }
194
+
195
+ const yarn = Command.make(
196
+ "yarn",
197
+ "add",
198
+ ...pkgs,
199
+ ).pipe(
200
+ Command.stdout("inherit"), // Stream stdout to process.stdout
201
+ Command.exitCode // Get the exit code
202
+ )
203
+ const yarnDev = Command.make(
204
+ "yarn",
205
+ "add",
206
+ "-D",
207
+ ...devPkgs,
208
+ ).pipe(
209
+ Command.stdout("inherit"), // Stream stdout to process.stdout
210
+ Command.exitCode // Get the exit code
211
+ )
212
+
213
+ logger.info("Installing dependencies with wix...");
214
+ const status = yield* Effect.all([...wixPkgs], { concurrency: 15});
215
+ if(status.every((s) => s !== 0)) {
216
+ return logger.error("Failed to install WIX dependencies. Please check the error message above.");
217
+ }
218
+
219
+ logger.info("Installing dependencies");
220
+ if ((yield* yarn) !== 0) {
221
+ return logger.error("Failed to install dependencies. Please check the error message above.");
222
+ }
223
+
224
+ logger.info("Installing dev dependencies");
225
+ if ((yield* yarnDev) !== 0) {
226
+ return logger.error("Failed to install dev dependencies. Please check the error message above.");
227
+ }
228
+
229
+ })
230
+
231
+ export const approveBuilds = Effect.gen(function*() {
232
+ const config = yield* Config;
233
+
234
+ const manager = config.config.lucySettings.packageManager;
235
+ const approve = Command.make(
236
+ "pnpm",
237
+ "approve-builds",
238
+ ).pipe(
239
+ Command.stdout("inherit"), // Stream stdout to process.stdout
240
+ Command.stderr("inherit"), // Stream stderr to process.stderr
241
+ Command.stdin("inherit"),
242
+ Command.exitCode // Get the exit code
243
+ )
244
+ if (manager !== "pnpm") {
245
+ logger.warning("The 'approve-build' command is only available for pnpm. Skipping...");
246
+ return;
247
+ }
248
+ yield* approve;
249
+ })
@@ -0,0 +1,45 @@
1
+ import { Effect, Schema } from "effect/index";
2
+ import { FileSystem, Path } from "@effect/platform"
3
+ import { Config, lucyJsonName, packageJsonPath, veloSyncJsonPath } from "../config.js";
4
+ import { JsonSchema, veloSyncSettings } from "../schemas/index.js";
5
+ import { lucySettings } from "../schemas/lucy.js";
6
+ import { logger } from "../utils/logger.js";
7
+
8
+ export const readPackageJson = Effect.gen(function* () {
9
+ const config = yield* Config;
10
+ const fs = yield* FileSystem.FileSystem;
11
+ const path = yield* Path.Path;
12
+
13
+ const packageJsonRaw = yield* fs.readFile(packageJsonPath)
14
+ config.config.packageJson = yield* Schema.decodeUnknown(JsonSchema)(packageJsonRaw.toString());
15
+ })
16
+
17
+ export const readLucyJsonFromTemplate = Effect.gen(function* () {
18
+ const config = yield* Config;
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const path = yield* Path.Path;
21
+
22
+ const lucyRaw = yield* fs.readFileString(path.join(config.config.templateDir, lucyJsonName));
23
+ const lucySettingsJSON = yield* Schema.decodeUnknown(JsonSchema)(lucyRaw);
24
+ const lucySetting = yield* Schema.decodeUnknown(lucySettings)(lucySettingsJSON)
25
+
26
+ if(config.config.lucySettings.initialized) {
27
+ if(config.config.force) {
28
+ logger.warning(`${lucyJsonName} already exists in the target directory, but 'force' is set. Overwriting...`);
29
+ config.config.lucySettings = lucySetting;
30
+ return;
31
+ }
32
+ logger.warning(`${lucyJsonName} already exists in the target directory. Skipping reading ${lucyJsonName} from template.`);
33
+ return;
34
+ }
35
+ config.config.lucySettings = lucySetting;
36
+ })
37
+
38
+ export const readVeloSyncSettings = Effect.gen(function* () {
39
+ const config = yield* Config;
40
+ const fs = yield* FileSystem.FileSystem;
41
+ if (yield* fs.exists(veloSyncJsonPath)) {
42
+ const snyConfigRaw = yield* fs.readFileString(veloSyncJsonPath)
43
+ config.config.veloSyncSettings = yield* Schema.decodeUnknown(veloSyncSettings)(snyConfigRaw);
44
+ }
45
+ });