@cedarjs/cli 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +706 -0
  3. package/dist/commands/build.js +54 -0
  4. package/dist/commands/buildHandler.js +134 -0
  5. package/dist/commands/check.js +28 -0
  6. package/dist/commands/console.js +13 -0
  7. package/dist/commands/consoleHandler.js +68 -0
  8. package/dist/commands/deploy/baremetal/SshExecutor.js +41 -0
  9. package/dist/commands/deploy/baremetal/baremetalHandler.js +558 -0
  10. package/dist/commands/deploy/baremetal.js +89 -0
  11. package/dist/commands/deploy/flightcontrol.js +40 -0
  12. package/dist/commands/deploy/flightcontrolHandler.js +58 -0
  13. package/dist/commands/deploy/helpers/deployBuilder.js +25 -0
  14. package/dist/commands/deploy/helpers/deployHandler.js +31 -0
  15. package/dist/commands/deploy/netlify.js +21 -0
  16. package/dist/commands/deploy/packing/nft.js +61 -0
  17. package/dist/commands/deploy/render.js +37 -0
  18. package/dist/commands/deploy/renderHandler.js +70 -0
  19. package/dist/commands/deploy/serverless.js +51 -0
  20. package/dist/commands/deploy/serverlessHandler.js +211 -0
  21. package/dist/commands/deploy/vercel.js +21 -0
  22. package/dist/commands/deploy.js +21 -0
  23. package/dist/commands/destroy/cell/cell.js +12 -0
  24. package/dist/commands/destroy/cell/cellHandler.js +10 -0
  25. package/dist/commands/destroy/component/component.js +15 -0
  26. package/dist/commands/destroy/component/componentHandler.js +10 -0
  27. package/dist/commands/destroy/directive/directive.js +14 -0
  28. package/dist/commands/destroy/directive/directiveHandler.js +12 -0
  29. package/dist/commands/destroy/function/function.js +20 -0
  30. package/dist/commands/destroy/function/functionHandler.js +10 -0
  31. package/dist/commands/destroy/handlerHelpers.js +34 -0
  32. package/dist/commands/destroy/helpers.js +22 -0
  33. package/dist/commands/destroy/layout/layout.js +12 -0
  34. package/dist/commands/destroy/layout/layoutHandler.js +10 -0
  35. package/dist/commands/destroy/page/page.js +20 -0
  36. package/dist/commands/destroy/page/pageHandler.js +51 -0
  37. package/dist/commands/destroy/scaffold/scaffold.js +16 -0
  38. package/dist/commands/destroy/scaffold/scaffoldHandler.js +105 -0
  39. package/dist/commands/destroy/sdl/sdl.js +16 -0
  40. package/dist/commands/destroy/sdl/sdlHandler.js +33 -0
  41. package/dist/commands/destroy/service/service.js +10 -0
  42. package/dist/commands/destroy/service/serviceHandler.js +17 -0
  43. package/dist/commands/destroy.js +25 -0
  44. package/dist/commands/dev.js +47 -0
  45. package/dist/commands/devHandler.js +202 -0
  46. package/dist/commands/exec.js +38 -0
  47. package/dist/commands/execHandler.js +180 -0
  48. package/dist/commands/experimental/setupInngest.js +28 -0
  49. package/dist/commands/experimental/setupInngestHandler.js +46 -0
  50. package/dist/commands/experimental/setupOpentelemetry.js +34 -0
  51. package/dist/commands/experimental/setupOpentelemetryHandler.js +215 -0
  52. package/dist/commands/experimental/setupReactCompiler.js +28 -0
  53. package/dist/commands/experimental/setupReactCompilerHandler.js +124 -0
  54. package/dist/commands/experimental/setupRsc.js +28 -0
  55. package/dist/commands/experimental/setupRscHandler.js +408 -0
  56. package/dist/commands/experimental/setupStreamingSsr.js +28 -0
  57. package/dist/commands/experimental/setupStreamingSsrHandler.js +208 -0
  58. package/dist/commands/experimental/templates/opentelemetry.ts.template +55 -0
  59. package/dist/commands/experimental/templates/rsc/AboutCounter.tsx.template +20 -0
  60. package/dist/commands/experimental/templates/rsc/AboutPage.css.template +2 -0
  61. package/dist/commands/experimental/templates/rsc/AboutPage.tsx.template +17 -0
  62. package/dist/commands/experimental/templates/rsc/Counter.css.template +7 -0
  63. package/dist/commands/experimental/templates/rsc/Counter.module.css.template +3 -0
  64. package/dist/commands/experimental/templates/rsc/Counter.tsx.template +18 -0
  65. package/dist/commands/experimental/templates/rsc/Document.tsx.template +27 -0
  66. package/dist/commands/experimental/templates/rsc/HomePage.css.template +2 -0
  67. package/dist/commands/experimental/templates/rsc/HomePage.module.css.template +3 -0
  68. package/dist/commands/experimental/templates/rsc/HomePage.tsx.template +19 -0
  69. package/dist/commands/experimental/templates/rsc/NavigationLayout.css.template +32 -0
  70. package/dist/commands/experimental/templates/rsc/NavigationLayout.tsx.template +31 -0
  71. package/dist/commands/experimental/templates/rsc/Routes.tsx.template +29 -0
  72. package/dist/commands/experimental/templates/rsc/entry.client.tsx.template +35 -0
  73. package/dist/commands/experimental/templates/rsc/entry.server.tsx.template +20 -0
  74. package/dist/commands/experimental/templates/rsc/index.css.template +4 -0
  75. package/dist/commands/experimental/templates/streamingSsr/Document.tsx.template +27 -0
  76. package/dist/commands/experimental/templates/streamingSsr/entry.client.tsx.template +40 -0
  77. package/dist/commands/experimental/templates/streamingSsr/entry.server.tsx.template +20 -0
  78. package/dist/commands/experimental/templates/streamingSsr/tsconfig.json.template +54 -0
  79. package/dist/commands/experimental/util.js +69 -0
  80. package/dist/commands/experimental.js +22 -0
  81. package/dist/commands/generate/cell/cell.js +35 -0
  82. package/dist/commands/generate/cell/cellHandler.js +153 -0
  83. package/dist/commands/generate/cell/templates/cell.tsx.template +34 -0
  84. package/dist/commands/generate/cell/templates/cellList.tsx.template +40 -0
  85. package/dist/commands/generate/cell/templates/mock.ts.template +7 -0
  86. package/dist/commands/generate/cell/templates/mockList.ts.template +14 -0
  87. package/dist/commands/generate/cell/templates/stories.tsx.template +35 -0
  88. package/dist/commands/generate/cell/templates/test.js.template +42 -0
  89. package/dist/commands/generate/cell/utils/utils.js +43 -0
  90. package/dist/commands/generate/component/component.js +15 -0
  91. package/dist/commands/generate/component/componentHandler.js +55 -0
  92. package/dist/commands/generate/component/templates/component.tsx.template +10 -0
  93. package/dist/commands/generate/component/templates/stories.jsx.template +17 -0
  94. package/dist/commands/generate/component/templates/stories.tsx.template +26 -0
  95. package/dist/commands/generate/component/templates/test.tsx.template +14 -0
  96. package/dist/commands/generate/dataMigration/dataMigration.js +105 -0
  97. package/dist/commands/generate/dataMigration/templates/dataMigration.js.template +7 -0
  98. package/dist/commands/generate/dataMigration/templates/dataMigration.ts.template +5 -0
  99. package/dist/commands/generate/dbAuth/dbAuth.js +55 -0
  100. package/dist/commands/generate/dbAuth/dbAuthHandler.js +375 -0
  101. package/dist/commands/generate/dbAuth/templates/forgotPassword.tsx.template +94 -0
  102. package/dist/commands/generate/dbAuth/templates/login.tsx.template +130 -0
  103. package/dist/commands/generate/dbAuth/templates/login.webAuthn.tsx.template +264 -0
  104. package/dist/commands/generate/dbAuth/templates/resetPassword.tsx.template +121 -0
  105. package/dist/commands/generate/dbAuth/templates/signup.tsx.template +123 -0
  106. package/dist/commands/generate/directive/directive.js +15 -0
  107. package/dist/commands/generate/directive/directiveHandler.js +159 -0
  108. package/dist/commands/generate/directive/templates/transformer.directive.test.ts.template +18 -0
  109. package/dist/commands/generate/directive/templates/transformer.directive.ts.template +38 -0
  110. package/dist/commands/generate/directive/templates/validator.directive.test.ts.template +17 -0
  111. package/dist/commands/generate/directive/templates/validator.directive.ts.template +39 -0
  112. package/dist/commands/generate/function/function.js +29 -0
  113. package/dist/commands/generate/function/functionHandler.js +131 -0
  114. package/dist/commands/generate/function/templates/function.ts.template +33 -0
  115. package/dist/commands/generate/function/templates/scenarios.ts.template +8 -0
  116. package/dist/commands/generate/function/templates/test.ts.template +30 -0
  117. package/dist/commands/generate/helpers.js +71 -0
  118. package/dist/commands/generate/job/job.js +39 -0
  119. package/dist/commands/generate/job/jobHandler.js +138 -0
  120. package/dist/commands/generate/job/templates/job.ts.template +8 -0
  121. package/dist/commands/generate/job/templates/scenarios.ts.template +8 -0
  122. package/dist/commands/generate/job/templates/test.ts.template +7 -0
  123. package/dist/commands/generate/layout/layout.js +25 -0
  124. package/dist/commands/generate/layout/layoutHandler.js +59 -0
  125. package/dist/commands/generate/layout/templates/layout.tsx.a11y.template +27 -0
  126. package/dist/commands/generate/layout/templates/layout.tsx.template +9 -0
  127. package/dist/commands/generate/layout/templates/stories.tsx.template +13 -0
  128. package/dist/commands/generate/layout/templates/test.tsx.template +14 -0
  129. package/dist/commands/generate/model/model.js +29 -0
  130. package/dist/commands/generate/model/modelHandler.js +63 -0
  131. package/dist/commands/generate/model/templates/model.js.template +3 -0
  132. package/dist/commands/generate/ogImage/ogImage.js +43 -0
  133. package/dist/commands/generate/ogImage/ogImageHandler.js +111 -0
  134. package/dist/commands/generate/ogImage/templates/ogImage.og.tsx.template +13 -0
  135. package/dist/commands/generate/page/page.js +22 -0
  136. package/dist/commands/generate/page/pageHandler.js +227 -0
  137. package/dist/commands/generate/page/templates/page.tsx.template +35 -0
  138. package/dist/commands/generate/page/templates/stories.tsx.parameters.template +13 -0
  139. package/dist/commands/generate/page/templates/stories.tsx.template +13 -0
  140. package/dist/commands/generate/page/templates/test.tsx.template +14 -0
  141. package/dist/commands/generate/realtime/realtime.js +41 -0
  142. package/dist/commands/generate/realtime/realtimeHandler.js +215 -0
  143. package/dist/commands/generate/realtime/templates/liveQueries/blank/blank.sdl.ts.template +27 -0
  144. package/dist/commands/generate/realtime/templates/liveQueries/blank/blank.service.ts.template +73 -0
  145. package/dist/commands/generate/realtime/templates/realtime.ts.template +42 -0
  146. package/dist/commands/generate/realtime/templates/subscriptions/blank/blank.sdl.ts.template +20 -0
  147. package/dist/commands/generate/realtime/templates/subscriptions/blank/blank.service.ts.template +19 -0
  148. package/dist/commands/generate/realtime/templates/subscriptions/blank/blank.ts.template +58 -0
  149. package/dist/commands/generate/scaffold/scaffold.js +38 -0
  150. package/dist/commands/generate/scaffold/scaffoldHandler.js +663 -0
  151. package/dist/commands/generate/scaffold/templates/assets/scaffold.css.template +398 -0
  152. package/dist/commands/generate/scaffold/templates/assets/scaffold.tailwind.css.template +243 -0
  153. package/dist/commands/generate/scaffold/templates/components/EditNameCell.tsx.template +74 -0
  154. package/dist/commands/generate/scaffold/templates/components/Name.tsx.template +79 -0
  155. package/dist/commands/generate/scaffold/templates/components/NameCell.tsx.template +32 -0
  156. package/dist/commands/generate/scaffold/templates/components/NameForm.tsx.template +123 -0
  157. package/dist/commands/generate/scaffold/templates/components/Names.tsx.template +88 -0
  158. package/dist/commands/generate/scaffold/templates/components/NamesCell.tsx.template +45 -0
  159. package/dist/commands/generate/scaffold/templates/components/NewName.tsx.template +55 -0
  160. package/dist/commands/generate/scaffold/templates/layouts/ScaffoldLayout.tsx.template +37 -0
  161. package/dist/commands/generate/scaffold/templates/lib/formatters.test.tsx.template +192 -0
  162. package/dist/commands/generate/scaffold/templates/lib/formatters.tsx.template +58 -0
  163. package/dist/commands/generate/scaffold/templates/pages/EditNamePage.tsx.template +11 -0
  164. package/dist/commands/generate/scaffold/templates/pages/NamePage.tsx.template +11 -0
  165. package/dist/commands/generate/scaffold/templates/pages/NamesPage.tsx.template +7 -0
  166. package/dist/commands/generate/scaffold/templates/pages/NewNamePage.tsx.template +7 -0
  167. package/dist/commands/generate/script/script.js +29 -0
  168. package/dist/commands/generate/script/scriptHandler.js +85 -0
  169. package/dist/commands/generate/script/templates/script.ts.template +15 -0
  170. package/dist/commands/generate/script/templates/tsconfig.json.template +33 -0
  171. package/dist/commands/generate/sdl/sdl.js +48 -0
  172. package/dist/commands/generate/sdl/sdlHandler.js +282 -0
  173. package/dist/commands/generate/sdl/templates/sdl.js.template +70 -0
  174. package/dist/commands/generate/sdl/templates/sdl.ts.template +70 -0
  175. package/dist/commands/generate/secret/secret.js +52 -0
  176. package/dist/commands/generate/service/service.js +50 -0
  177. package/dist/commands/generate/service/serviceHandler.js +301 -0
  178. package/dist/commands/generate/service/templates/scenarios.ts.template +7 -0
  179. package/dist/commands/generate/service/templates/service.ts.template +38 -0
  180. package/dist/commands/generate/service/templates/test.ts.template +84 -0
  181. package/dist/commands/generate/yargsCommandHelpers.js +77 -0
  182. package/dist/commands/generate/yargsHandlerHelpers.js +155 -0
  183. package/dist/commands/generate.js +44 -0
  184. package/dist/commands/info.js +36 -0
  185. package/dist/commands/jobs.js +17 -0
  186. package/dist/commands/jobsHandler.js +30 -0
  187. package/dist/commands/lint.js +57 -0
  188. package/dist/commands/prerender.js +34 -0
  189. package/dist/commands/prerenderHandler.js +282 -0
  190. package/dist/commands/prisma.js +17 -0
  191. package/dist/commands/prismaHandler.js +90 -0
  192. package/dist/commands/record/init.js +11 -0
  193. package/dist/commands/record.js +19 -0
  194. package/dist/commands/serve.js +139 -0
  195. package/dist/commands/serveApiHandler.js +15 -0
  196. package/dist/commands/serveBothHandler.js +95 -0
  197. package/dist/commands/serveWebHandler.js +17 -0
  198. package/dist/commands/setup/auth/auth.js +265 -0
  199. package/dist/commands/setup/cache/cache.js +37 -0
  200. package/dist/commands/setup/cache/cacheHandler.js +69 -0
  201. package/dist/commands/setup/cache/templates/memcached.ts.template +30 -0
  202. package/dist/commands/setup/cache/templates/redis.ts.template +24 -0
  203. package/dist/commands/setup/deploy/deploy.js +26 -0
  204. package/dist/commands/setup/deploy/helpers/helpers.js +9 -0
  205. package/dist/commands/setup/deploy/helpers/index.js +110 -0
  206. package/dist/commands/setup/deploy/providers/baremetal.js +9 -0
  207. package/dist/commands/setup/deploy/providers/baremetalHandler.js +64 -0
  208. package/dist/commands/setup/deploy/providers/coherence.js +24 -0
  209. package/dist/commands/setup/deploy/providers/coherenceHandler.js +203 -0
  210. package/dist/commands/setup/deploy/providers/flightcontrol.js +19 -0
  211. package/dist/commands/setup/deploy/providers/flightcontrolHandler.js +294 -0
  212. package/dist/commands/setup/deploy/providers/netlify.js +9 -0
  213. package/dist/commands/setup/deploy/providers/netlifyHandler.js +42 -0
  214. package/dist/commands/setup/deploy/providers/render.js +17 -0
  215. package/dist/commands/setup/deploy/providers/renderHandler.js +111 -0
  216. package/dist/commands/setup/deploy/providers/serverless.js +11 -0
  217. package/dist/commands/setup/deploy/providers/serverlessHandler.js +141 -0
  218. package/dist/commands/setup/deploy/providers/vercel.js +9 -0
  219. package/dist/commands/setup/deploy/providers/vercelHandler.js +56 -0
  220. package/dist/commands/setup/deploy/templates/baremetal.js +128 -0
  221. package/dist/commands/setup/deploy/templates/flightcontrol.js +85 -0
  222. package/dist/commands/setup/deploy/templates/netlify.js +32 -0
  223. package/dist/commands/setup/deploy/templates/render.js +72 -0
  224. package/dist/commands/setup/deploy/templates/serverless/api.js +78 -0
  225. package/dist/commands/setup/deploy/templates/serverless/web.js +32 -0
  226. package/dist/commands/setup/docker/docker.js +26 -0
  227. package/dist/commands/setup/docker/dockerHandler.js +265 -0
  228. package/dist/commands/setup/docker/templates/Dockerfile +154 -0
  229. package/dist/commands/setup/docker/templates/docker-compose.dev.yml +58 -0
  230. package/dist/commands/setup/docker/templates/docker-compose.prod.yml +63 -0
  231. package/dist/commands/setup/docker/templates/dockerignore +18 -0
  232. package/dist/commands/setup/generator/generator.js +49 -0
  233. package/dist/commands/setup/generator/generatorHandler.js +55 -0
  234. package/dist/commands/setup/graphql/features/fragments/appGqlConfigTransform.js +117 -0
  235. package/dist/commands/setup/graphql/features/fragments/appImportTransform.js +20 -0
  236. package/dist/commands/setup/graphql/features/fragments/fragments.js +25 -0
  237. package/dist/commands/setup/graphql/features/fragments/fragmentsHandler.js +89 -0
  238. package/dist/commands/setup/graphql/features/trustedDocuments/graphqlTransform.js +51 -0
  239. package/dist/commands/setup/graphql/features/trustedDocuments/trustedDocuments.js +25 -0
  240. package/dist/commands/setup/graphql/features/trustedDocuments/trustedDocumentsHandler.js +74 -0
  241. package/dist/commands/setup/graphql/graphql.js +18 -0
  242. package/dist/commands/setup/i18n/i18n.js +25 -0
  243. package/dist/commands/setup/i18n/i18nHandler.js +169 -0
  244. package/dist/commands/setup/i18n/templates/en.json.template +11 -0
  245. package/dist/commands/setup/i18n/templates/fr.json.template +11 -0
  246. package/dist/commands/setup/i18n/templates/i18n.js.template +52 -0
  247. package/dist/commands/setup/i18n/templates/storybook.preview.tsx.template +43 -0
  248. package/dist/commands/setup/jobs/jobs.js +31 -0
  249. package/dist/commands/setup/jobs/jobsHandler.js +122 -0
  250. package/dist/commands/setup/jobs/templates/jobs.ts.template +32 -0
  251. package/dist/commands/setup/mailer/mailer.js +30 -0
  252. package/dist/commands/setup/mailer/mailerHandler.js +106 -0
  253. package/dist/commands/setup/mailer/templates/mailer.ts.template +30 -0
  254. package/dist/commands/setup/mailer/templates/re-example.tsx.template +40 -0
  255. package/dist/commands/setup/middleware/middleware.js +17 -0
  256. package/dist/commands/setup/middleware/ogImage/__codemod_tests__/middleware.js +15 -0
  257. package/dist/commands/setup/middleware/ogImage/__codemod_tests__/vitePlugin.js +6 -0
  258. package/dist/commands/setup/middleware/ogImage/codemodMiddleware.js +97 -0
  259. package/dist/commands/setup/middleware/ogImage/codemodVitePlugin.js +65 -0
  260. package/dist/commands/setup/middleware/ogImage/ogImage.js +27 -0
  261. package/dist/commands/setup/middleware/ogImage/ogImageHandler.js +121 -0
  262. package/dist/commands/setup/monitoring/monitoring.js +17 -0
  263. package/dist/commands/setup/monitoring/sentry/sentry.js +25 -0
  264. package/dist/commands/setup/monitoring/sentry/sentryHandler.js +163 -0
  265. package/dist/commands/setup/monitoring/sentry/templates/sentryApi.ts.template +15 -0
  266. package/dist/commands/setup/monitoring/sentry/templates/sentryWeb.ts.template +31 -0
  267. package/dist/commands/setup/package/package.js +33 -0
  268. package/dist/commands/setup/package/packageHandler.js +134 -0
  269. package/dist/commands/setup/realtime/realtime.js +37 -0
  270. package/dist/commands/setup/realtime/realtimeHandler.js +309 -0
  271. package/dist/commands/setup/realtime/templates/defer/fastAndSlowFields/fastAndSlowFields.sdl.template +14 -0
  272. package/dist/commands/setup/realtime/templates/defer/fastAndSlowFields/fastAndSlowFields.ts.template +14 -0
  273. package/dist/commands/setup/realtime/templates/liveQueries/auctions/auctions.sdl.ts.template +27 -0
  274. package/dist/commands/setup/realtime/templates/liveQueries/auctions/auctions.ts.template +73 -0
  275. package/dist/commands/setup/realtime/templates/realtime.ts.template +46 -0
  276. package/dist/commands/setup/realtime/templates/stream/alphabet/alphabet.sdl.template +9 -0
  277. package/dist/commands/setup/realtime/templates/stream/alphabet/alphabet.ts.template +31 -0
  278. package/dist/commands/setup/realtime/templates/subscriptions/countdown/countdown.ts.template +58 -0
  279. package/dist/commands/setup/realtime/templates/subscriptions/newMessage/newMessage.ts.template +57 -0
  280. package/dist/commands/setup/realtime/templates/subscriptions/newMessage/rooms.sdl.ts.template +20 -0
  281. package/dist/commands/setup/realtime/templates/subscriptions/newMessage/rooms.ts.template +20 -0
  282. package/dist/commands/setup/server-file/serverFile.js +31 -0
  283. package/dist/commands/setup/server-file/serverFileHandler.js +56 -0
  284. package/dist/commands/setup/server-file/templates/server.ts.template +13 -0
  285. package/dist/commands/setup/tsconfig/tsconfig.js +25 -0
  286. package/dist/commands/setup/tsconfig/tsconfigHandler.js +59 -0
  287. package/dist/commands/setup/ui/helpers/helpers.js +9 -0
  288. package/dist/commands/setup/ui/libraries/chakra-ui.js +24 -0
  289. package/dist/commands/setup/ui/libraries/chakra-uiHandler.js +98 -0
  290. package/dist/commands/setup/ui/libraries/mantine.js +32 -0
  291. package/dist/commands/setup/ui/libraries/mantineHandler.js +138 -0
  292. package/dist/commands/setup/ui/libraries/tailwindcss.js +26 -0
  293. package/dist/commands/setup/ui/libraries/tailwindcssHandler.js +386 -0
  294. package/dist/commands/setup/ui/templates/chakra.storybook.preview.tsx.template +20 -0
  295. package/dist/commands/setup/ui/templates/mantine-postcss.config.js.template +35 -0
  296. package/dist/commands/setup/ui/templates/mantine.storybook.preview.tsx.template +18 -0
  297. package/dist/commands/setup/ui/templates/postcss.config.js.template +9 -0
  298. package/dist/commands/setup/ui/ui.js +17 -0
  299. package/dist/commands/setup/uploads/dbCodemod.js +28 -0
  300. package/dist/commands/setup/uploads/templates/signedUrl.ts.template +21 -0
  301. package/dist/commands/setup/uploads/templates/srcLibUploads.ts.template +25 -0
  302. package/dist/commands/setup/uploads/uploads.js +26 -0
  303. package/dist/commands/setup/uploads/uploadsHandler.js +147 -0
  304. package/dist/commands/setup/vite/templates/vite.config.ts.template +19 -0
  305. package/dist/commands/setup/vite/vite.js +38 -0
  306. package/dist/commands/setup/vite/viteHandler.js +83 -0
  307. package/dist/commands/setup.js +33 -0
  308. package/dist/commands/studio.js +23 -0
  309. package/dist/commands/studioHandler.js +61 -0
  310. package/dist/commands/test.js +44 -0
  311. package/dist/commands/testHandler.js +138 -0
  312. package/dist/commands/ts-to-js.js +20 -0
  313. package/dist/commands/type-check.js +41 -0
  314. package/dist/commands/type-checkHandler.js +71 -0
  315. package/dist/commands/upgrade.js +441 -0
  316. package/dist/index.d.js +0 -0
  317. package/dist/index.js +146 -0
  318. package/dist/lib/background.js +45 -0
  319. package/dist/lib/colors.js +18 -0
  320. package/dist/lib/configureStorybook.js +50 -0
  321. package/dist/lib/exec.js +85 -0
  322. package/dist/lib/exit.js +44 -0
  323. package/dist/lib/extendFile.js +114 -0
  324. package/dist/lib/generatePrismaClient.js +60 -0
  325. package/dist/lib/index.js +485 -0
  326. package/dist/lib/loadEnvFiles.js +12 -0
  327. package/dist/lib/locking.js +60 -0
  328. package/dist/lib/merge/algorithms.js +30 -0
  329. package/dist/lib/merge/index.js +163 -0
  330. package/dist/lib/merge/semanticIdentity.js +18 -0
  331. package/dist/lib/merge/strategy.js +136 -0
  332. package/dist/lib/mockTelemetry.js +7 -0
  333. package/dist/lib/packages.js +77 -0
  334. package/dist/lib/plugin.js +206 -0
  335. package/dist/lib/pluralHelpers.js +50 -0
  336. package/dist/lib/ports.js +17 -0
  337. package/dist/lib/project.js +30 -0
  338. package/dist/lib/rollback.js +72 -0
  339. package/dist/lib/runTransform.js +66 -0
  340. package/dist/lib/rwPluralize.js +56 -0
  341. package/dist/lib/schemaHelpers.js +95 -0
  342. package/dist/lib/templates/storybook.preview.tsx.template +19 -0
  343. package/dist/lib/test.js +106 -0
  344. package/dist/lib/updateCheck.js +202 -0
  345. package/dist/lib/updateCheckExecute.js +2 -0
  346. package/dist/middleware/checkNodeVersion.js +23 -0
  347. package/dist/middleware/detectProjectRxVersion.js +12 -0
  348. package/dist/plugin.js +223 -0
  349. package/dist/rwfw.js +47 -0
  350. package/dist/telemetry/exporter.js +63 -0
  351. package/dist/telemetry/index.js +84 -0
  352. package/dist/telemetry/resource.js +98 -0
  353. package/dist/telemetry/send.js +80 -0
  354. package/dist/testLib/cells.js +188 -0
  355. package/dist/testLib/fetchFileFromTemplate.js +9 -0
  356. package/dist/testLib/getFilesWithPattern.js +21 -0
  357. package/dist/testLib/getRootPackageJSON.js +14 -0
  358. package/dist/testLib/isTSProject.js +9 -0
  359. package/dist/testLib/runTransform.js +42 -0
  360. package/package.json +102 -0
@@ -0,0 +1,147 @@
1
+ import path from "node:path";
2
+ import fs from "fs-extra";
3
+ import { Listr } from "listr2";
4
+ import { format } from "prettier";
5
+ import { addApiPackages, getPrettierOptions } from "@cedarjs/cli-helpers";
6
+ import { errorTelemetry } from "@cedarjs/telemetry";
7
+ import c from "../../../lib/colors.js";
8
+ import { getPaths, transformTSToJS, writeFile } from "../../../lib/index.js";
9
+ import { isTypeScriptProject } from "../../../lib/project.js";
10
+ import { runTransform } from "../../../lib/runTransform.js";
11
+ const handler = async ({ force }) => {
12
+ const projectIsTypescript = isTypeScriptProject();
13
+ const redwoodVersion = await import(path.join(getPaths().base, "package.json"), {
14
+ with: { type: "json " }
15
+ }).default.devDependencies["@cedarjs/core"] ?? "latest";
16
+ const tasks = new Listr(
17
+ [
18
+ {
19
+ title: `Adding api/src/lib/uploads.${projectIsTypescript ? "ts" : "js"}...`,
20
+ task: async () => {
21
+ const templatePath = path.resolve(
22
+ import.meta.dirname,
23
+ "templates",
24
+ "srcLibUploads.ts.template"
25
+ );
26
+ const templateContent = fs.readFileSync(templatePath, {
27
+ encoding: "utf8",
28
+ flag: "r"
29
+ });
30
+ const uploadsPath = path.join(
31
+ getPaths().api.lib,
32
+ `uploads.${projectIsTypescript ? "ts" : "js"}`
33
+ );
34
+ const uploadsContent = projectIsTypescript ? templateContent : await transformTSToJS(uploadsPath, templateContent);
35
+ return writeFile(uploadsPath, uploadsContent, {
36
+ overwriteExisting: force
37
+ });
38
+ }
39
+ },
40
+ {
41
+ title: `Adding signedUrl function...`,
42
+ task: async () => {
43
+ const templatePath = path.resolve(
44
+ import.meta.dirname,
45
+ "templates",
46
+ "signedUrl.ts.template"
47
+ );
48
+ const templateContent = fs.readFileSync(templatePath, {
49
+ encoding: "utf8",
50
+ flag: "r"
51
+ });
52
+ const uploadsPath = path.join(
53
+ getPaths().api.functions,
54
+ `signedUrl.${projectIsTypescript ? "ts" : "js"}`
55
+ );
56
+ const uploadsContent = projectIsTypescript ? templateContent : await transformTSToJS(uploadsPath, templateContent);
57
+ return writeFile(uploadsPath, uploadsContent, {
58
+ overwriteExisting: force
59
+ });
60
+ }
61
+ },
62
+ {
63
+ ...addApiPackages([`@cedarjs/storage@${redwoodVersion}`]),
64
+ title: "Adding dependencies to your api side..."
65
+ },
66
+ {
67
+ title: "Modifying api/src/lib/db to add uploads prisma extension..",
68
+ task: async () => {
69
+ const dbPath = path.join(
70
+ getPaths().api.lib,
71
+ `db.${projectIsTypescript ? "ts" : "js"}`
72
+ );
73
+ const transformResult = await runTransform({
74
+ transformPath: path.join(import.meta.dirname, "dbCodemod.js"),
75
+ targetPaths: [dbPath]
76
+ });
77
+ if (transformResult.error) {
78
+ if (transformResult.error === "RW_CODEMOD_ERR_OLD_FORMAT") {
79
+ throw new Error(
80
+ "It looks like your src/lib/db file is using the old format. Please update it as per the v8 upgrade guide: https://redwoodjs.com/upgrade/v8#database-file-structure-change. And run again. \n\nYou can also manually modify your api/src/lib/db to include the prisma extension: https://docs.redwoodjs.com/docs/uploads/#attaching-the-prisma-extension"
81
+ );
82
+ }
83
+ throw new Error(
84
+ "Could not add the prisma extension. \n Please modify your api/src/lib/db to include the prisma extension: https://docs.redwoodjs.com/docs/uploads/#attaching-the-prisma-extension"
85
+ );
86
+ }
87
+ }
88
+ },
89
+ {
90
+ title: "Prettifying changed files",
91
+ task: async (_ctx, task) => {
92
+ const prettifyPaths = [
93
+ path.join(getPaths().api.lib, "db.js"),
94
+ path.join(getPaths().api.lib, "db.ts"),
95
+ path.join(getPaths().api.lib, "uploads.js"),
96
+ path.join(getPaths().api.lib, "uploads.ts")
97
+ ];
98
+ for (const prettifyPath of prettifyPaths) {
99
+ try {
100
+ if (!fs.existsSync(prettifyPath)) {
101
+ continue;
102
+ }
103
+ const source = fs.readFileSync(prettifyPath, "utf-8");
104
+ const prettierOptions = await getPrettierOptions();
105
+ const prettifiedApp = await format(source, {
106
+ ...prettierOptions,
107
+ parser: "babel-ts"
108
+ });
109
+ fs.writeFileSync(prettifyPath, prettifiedApp, "utf-8");
110
+ } catch {
111
+ task.output = "Couldn't prettify the changes. Please reformat the files manually if needed.";
112
+ }
113
+ }
114
+ }
115
+ },
116
+ {
117
+ title: "One more thing...",
118
+ task: (_ctx, task) => {
119
+ task.title = `One more thing...
120
+
121
+ ${c.success("\nUploads and storage configured!\n")}
122
+
123
+ Remember to add UPLOADS_SECRET to your .env file. You can generate one with ${c.highlight("yarn rw generate secret")}
124
+
125
+
126
+ Check out the docs for more info:
127
+ ${c.link("https://docs.redwoodjs.com/docs/uploads")}
128
+
129
+ `;
130
+ }
131
+ }
132
+ ],
133
+ {
134
+ rendererOptions: { collapseSubtasks: false }
135
+ }
136
+ );
137
+ try {
138
+ await tasks.run();
139
+ } catch (e) {
140
+ errorTelemetry(process.argv, e.message);
141
+ console.error(c.error(e.message));
142
+ process.exit(e?.exitCode || 1);
143
+ }
144
+ };
145
+ export {
146
+ handler
147
+ };
@@ -0,0 +1,19 @@
1
+ import dns from 'dns'
2
+
3
+ import { defineConfig, UserConfig } from 'vite'
4
+
5
+ import redwood from '@cedarjs/vite'
6
+
7
+ // See: https://vitejs.dev/config/server-options.html#server-host
8
+ // So that Vite will load on local instead of 127.0.0.1
9
+ dns.setDefaultResultOrder('verbatim')
10
+
11
+ /**
12
+ * https://vitejs.dev/config/
13
+ * @type {import('vite').UserConfig}
14
+ */
15
+ const viteConfig: UserConfig = {
16
+ plugins: [redwood()],
17
+ }
18
+
19
+ export default defineConfig(viteConfig)
@@ -0,0 +1,38 @@
1
+ import { recordTelemetryAttributes } from "@cedarjs/cli-helpers";
2
+ const command = "vite";
3
+ const description = "Configure the web side to use Vite";
4
+ const builder = (yargs) => {
5
+ yargs.option("force", {
6
+ alias: "f",
7
+ default: false,
8
+ description: "Overwrite existing configuration",
9
+ type: "boolean"
10
+ });
11
+ yargs.option("verbose", {
12
+ alias: "v",
13
+ default: false,
14
+ description: "Print more logs",
15
+ type: "boolean"
16
+ });
17
+ yargs.option("add-package", {
18
+ default: true,
19
+ description: "Allows you to skip adding the @cedarjs/vite package. Useful for testing",
20
+ type: "boolean"
21
+ });
22
+ };
23
+ const handler = async (options) => {
24
+ recordTelemetryAttributes({
25
+ command: "setup vite",
26
+ force: options.force,
27
+ verbose: options.verbose,
28
+ addPackage: options.addPackage
29
+ });
30
+ const { handler: handler2 } = await import("./viteHandler.js");
31
+ return handler2(options);
32
+ };
33
+ export {
34
+ builder,
35
+ command,
36
+ description,
37
+ handler
38
+ };
@@ -0,0 +1,83 @@
1
+ import path from "path";
2
+ import fs from "fs-extra";
3
+ import { Listr } from "listr2";
4
+ import { addWebPackages } from "@cedarjs/cli-helpers";
5
+ import { errorTelemetry } from "@cedarjs/telemetry";
6
+ import c from "../../../lib/colors.js";
7
+ import { getPaths, transformTSToJS, writeFile } from "../../../lib/index.js";
8
+ import { isTypeScriptProject } from "../../../lib/project.js";
9
+ const { version } = JSON.parse(
10
+ fs.readFileSync(
11
+ path.resolve(import.meta.dirname, "../../../../package.json"),
12
+ "utf-8"
13
+ )
14
+ );
15
+ const handler = async ({ force, verbose, addPackage }) => {
16
+ const ts = isTypeScriptProject();
17
+ const tasks = new Listr(
18
+ [
19
+ {
20
+ title: "Adding vite.config.js...",
21
+ task: async () => {
22
+ const viteConfigPath = `${getPaths().web.base}/vite.config.${ts ? "ts" : "js"}`;
23
+ const templateContent = fs.readFileSync(
24
+ path.resolve(
25
+ import.meta.dirname,
26
+ "templates",
27
+ "vite.config.ts.template"
28
+ ),
29
+ "utf-8"
30
+ );
31
+ const viteConfigContent = ts ? templateContent : await transformTSToJS(viteConfigPath, templateContent);
32
+ return writeFile(viteConfigPath, viteConfigContent, {
33
+ overwriteExisting: force
34
+ });
35
+ }
36
+ },
37
+ {
38
+ title: "Creating new entry point in `web/src/entry.client.{jsx,tsx}`...",
39
+ task: () => {
40
+ const entryPointFile = path.join(
41
+ getPaths().web.src,
42
+ `entry.client.${ts ? "tsx" : "jsx"}`
43
+ );
44
+ const content = fs.readFileSync(
45
+ path.join(
46
+ getPaths().base,
47
+ // NOTE we're copying over the index.js before babel transform
48
+ "node_modules/@cedarjs/web/src/entry/index.js"
49
+ ),
50
+ "utf-8"
51
+ ).replace("~redwood-app-root", "./App");
52
+ return writeFile(entryPointFile, content, {
53
+ overwriteExisting: force
54
+ });
55
+ }
56
+ },
57
+ {
58
+ // @NOTE: make sure its added as a dev package.
59
+ ...addWebPackages(["-D", `@cedarjs/vite@${version}`]),
60
+ title: "Adding @cedarjs/vite dev dependency to web side...",
61
+ skip: () => {
62
+ if (!addPackage) {
63
+ return "Skipping package install, you will need to add @cedarjs/vite manaually as a dev-dependency on the web workspace";
64
+ }
65
+ }
66
+ }
67
+ ],
68
+ {
69
+ rendererOptions: { collapseSubtasks: false },
70
+ renderer: verbose ? "verbose" : "default"
71
+ }
72
+ );
73
+ try {
74
+ await tasks.run();
75
+ } catch (e) {
76
+ errorTelemetry(process.argv, e.message);
77
+ console.error(c.error(e.message));
78
+ process.exit(e?.exitCode || 1);
79
+ }
80
+ };
81
+ export {
82
+ handler
83
+ };
@@ -0,0 +1,33 @@
1
+ import terminalLink from "terminal-link";
2
+ import detectRxVersion from "../middleware/detectProjectRxVersion.js";
3
+ import * as setupAuth from "./setup/auth/auth.js";
4
+ import * as setupCache from "./setup/cache/cache.js";
5
+ import * as setupDeploy from "./setup/deploy/deploy.js";
6
+ import * as setupDocker from "./setup/docker/docker.js";
7
+ import * as setupGenerator from "./setup/generator/generator.js";
8
+ import * as setupGraphql from "./setup/graphql/graphql.js";
9
+ import * as setupI18n from "./setup/i18n/i18n.js";
10
+ import * as setupJobs from "./setup/jobs/jobs.js";
11
+ import * as setupMailer from "./setup/mailer/mailer.js";
12
+ import * as setupMiddleware from "./setup/middleware/middleware.js";
13
+ import * as setupMonitoring from "./setup/monitoring/monitoring.js";
14
+ import * as setupPackage from "./setup/package/package.js";
15
+ import * as setupRealtime from "./setup/realtime/realtime.js";
16
+ import * as setupServerFile from "./setup/server-file/serverFile.js";
17
+ import * as setupTsconfig from "./setup/tsconfig/tsconfig.js";
18
+ import * as setupUi from "./setup/ui/ui.js";
19
+ import * as setupUploads from "./setup/uploads/uploads.js";
20
+ import * as setupVite from "./setup/vite/vite.js";
21
+ const command = "setup <command>";
22
+ const description = "Initialize project config and install packages";
23
+ const builder = (yargs) => yargs.command(setupAuth).command(setupCache).command(setupDeploy).command(setupDocker).command(setupGenerator).command(setupGraphql).command(setupI18n).command(setupJobs).command(setupMailer).command(setupMiddleware).command(setupMonitoring).command(setupPackage).command(setupRealtime).command(setupServerFile).command(setupTsconfig).command(setupUi).command(setupUploads).command(setupVite).demandCommand().middleware(detectRxVersion).epilogue(
24
+ `Also see the ${terminalLink(
25
+ "Redwood CLI Reference",
26
+ "https://redwoodjs.com/docs/cli-commands#setup"
27
+ )}`
28
+ );
29
+ export {
30
+ builder,
31
+ command,
32
+ description
33
+ };
@@ -0,0 +1,23 @@
1
+ import { recordTelemetryAttributes } from "@cedarjs/cli-helpers";
2
+ const command = "studio";
3
+ const description = "Run the Redwood development studio";
4
+ function builder(yargs) {
5
+ yargs.option("open", {
6
+ default: true,
7
+ description: "Open the studio in your browser"
8
+ });
9
+ }
10
+ async function handler(options) {
11
+ recordTelemetryAttributes({
12
+ command: "studio",
13
+ open: options.open
14
+ });
15
+ const { handler: handler2 } = await import("./studioHandler.js");
16
+ return handler2(options);
17
+ }
18
+ export {
19
+ builder,
20
+ command,
21
+ description,
22
+ handler
23
+ };
@@ -0,0 +1,61 @@
1
+ import path from "node:path";
2
+ import fs from "fs-extra";
3
+ import semver from "semver";
4
+ import { getPaths } from "@cedarjs/project-config";
5
+ import { isModuleInstalled, installModule } from "../lib/packages.js";
6
+ const handler = async (options) => {
7
+ try {
8
+ if (!isModuleInstalled("@cedarjs/studio")) {
9
+ const minVersions = ["7.0.0-canary.889", "7.x", "8.0.0-0"];
10
+ assertRedwoodVersion(minVersions);
11
+ console.log(
12
+ "The studio package is not installed, installing it for you, this may take a moment..."
13
+ );
14
+ await installModule("@cedarjs/studio", "12");
15
+ console.log("Studio package installed successfully.");
16
+ const installedRealtime = await installModule("@cedarjs/realtime");
17
+ if (installedRealtime) {
18
+ console.log(
19
+ "Added @cedarjs/realtime to your project, as it's used by Studio"
20
+ );
21
+ }
22
+ const installedApiServer = await installModule("@cedarjs/api-server");
23
+ if (installedApiServer) {
24
+ console.log(
25
+ "Added @cedarjs/api-server to your project, as it's used by Studio"
26
+ );
27
+ }
28
+ }
29
+ const { serve } = await import("@cedarjs/studio");
30
+ await serve({ open: options.open, enableWeb: true });
31
+ } catch (e) {
32
+ console.log("Cannot start the development studio");
33
+ console.log(e);
34
+ process.exit(1);
35
+ }
36
+ };
37
+ function assertRedwoodVersion(minVersions) {
38
+ const rwVersion = getProjectRedwoodVersion();
39
+ const coercedRwVersion = semver.coerce(rwVersion);
40
+ if (minVersions.some((minVersion) => {
41
+ const v = semver.valid(minVersion) || semver.coerce(minVersion);
42
+ const coercedMin = semver.coerce(minVersion);
43
+ return semver.gte(rwVersion, v) && (coercedRwVersion.major === coercedMin.major ? semver.prerelease(rwVersion)?.[0] === semver.prerelease(v)?.[0] : true);
44
+ })) {
45
+ return;
46
+ }
47
+ console.error(
48
+ `The studio command requires Redwood version ${minVersions[0]} or greater, you are using ${rwVersion}.`
49
+ );
50
+ process.exit(1);
51
+ }
52
+ function getProjectRedwoodVersion() {
53
+ const { devDependencies } = fs.readJSONSync(
54
+ path.join(getPaths().base, "package.json")
55
+ );
56
+ return devDependencies["@cedarjs/core"];
57
+ }
58
+ export {
59
+ assertRedwoodVersion,
60
+ handler
61
+ };
@@ -0,0 +1,44 @@
1
+ import terminalLink from "terminal-link";
2
+ import c from "../lib/colors.js";
3
+ import { sides } from "../lib/project.js";
4
+ const command = "test [filter..]";
5
+ const description = "Run Jest tests. Defaults to watch mode";
6
+ const builder = (yargs) => {
7
+ yargs.strict(false).positional("filter", {
8
+ default: sides(),
9
+ description: "Which side(s) to test, and/or a regular expression to match against your test files to filter by",
10
+ type: "array"
11
+ }).option("watch", {
12
+ describe: "Run tests related to changed files based on hg/git. Specify the name or path to a file to focus on a specific set of tests",
13
+ type: "boolean",
14
+ default: true
15
+ }).option("collect-coverage", {
16
+ describe: "Show test coverage summary and output info to coverage directory",
17
+ type: "boolean",
18
+ default: false
19
+ }).option("db-push", {
20
+ describe: "Syncs the test database with your Prisma schema without requiring a migration. It creates a test database if it doesn't already exist.",
21
+ type: "boolean",
22
+ default: true
23
+ }).epilogue(
24
+ `For all available flags, run jest cli directly ${c.tip(
25
+ "yarn jest --help"
26
+ )}
27
+
28
+ Also see the ${terminalLink(
29
+ "Redwood CLI Reference",
30
+ "https://redwoodjs.com/docs/cli-commands#test"
31
+ )}
32
+ `
33
+ );
34
+ };
35
+ const handler = async (options) => {
36
+ const { handler: handler2 } = await import("./testHandler.js");
37
+ return handler2(options);
38
+ };
39
+ export {
40
+ builder,
41
+ command,
42
+ description,
43
+ handler
44
+ };
@@ -0,0 +1,138 @@
1
+ import path from "path";
2
+ import execa from "execa";
3
+ import fs from "fs-extra";
4
+ import { recordTelemetryAttributes } from "@cedarjs/cli-helpers";
5
+ import { ensurePosixPath } from "@cedarjs/project-config";
6
+ import { errorTelemetry, timedTelemetry } from "@cedarjs/telemetry";
7
+ import c from "../lib/colors.js";
8
+ import { getPaths } from "../lib/index.js";
9
+ import * as project from "../lib/project.js";
10
+ function isInGitRepository() {
11
+ try {
12
+ execa.commandSync("git rev-parse --is-inside-work-tree");
13
+ return true;
14
+ } catch {
15
+ return false;
16
+ }
17
+ }
18
+ function isInMercurialRepository() {
19
+ try {
20
+ execa.commandSync("hg --cwd . root");
21
+ return true;
22
+ } catch {
23
+ return false;
24
+ }
25
+ }
26
+ function isJestConfigFile(sides) {
27
+ for (let side of sides) {
28
+ try {
29
+ if (sides.includes(side)) {
30
+ const jestConfigExists = fs.existsSync(path.join(side, "jest.config.js")) || fs.existsSync(path.join(side, "jest.config.ts"));
31
+ if (!jestConfigExists) {
32
+ console.error(
33
+ c.error(
34
+ `
35
+ Error: Missing Jest config file ${side}/jest.config.js
36
+ To add this file, run \`npx @cedarjs/codemods update-jest-config\`
37
+ `
38
+ )
39
+ );
40
+ throw new Error(`Error: Jest config file not found in ${side} side`);
41
+ }
42
+ }
43
+ } catch (e) {
44
+ errorTelemetry(process.argv, e.message);
45
+ process.exit(e?.exitCode || 1);
46
+ }
47
+ }
48
+ }
49
+ const handler = async ({
50
+ filter: filterParams = [],
51
+ watch = true,
52
+ collectCoverage = false,
53
+ dbPush = true,
54
+ ...others
55
+ }) => {
56
+ recordTelemetryAttributes({
57
+ command: "test",
58
+ watch,
59
+ collectCoverage,
60
+ dbPush
61
+ });
62
+ const rwjsPaths = getPaths();
63
+ const forwardJestFlags = Object.keys(others).flatMap((flagName) => {
64
+ if ([
65
+ "collect-coverage",
66
+ "db-push",
67
+ "loadEnvFiles",
68
+ "watch",
69
+ "$0",
70
+ "_"
71
+ ].includes(flagName)) {
72
+ return [];
73
+ } else {
74
+ const flag = flagName.length > 1 ? `--${flagName}` : `-${flagName}`;
75
+ const flagValue = others[flagName];
76
+ if (Array.isArray(flagValue)) {
77
+ return flagValue.flatMap((val) => [flag, val]);
78
+ } else {
79
+ return [flag, flagValue];
80
+ }
81
+ }
82
+ });
83
+ const sides = filterParams.filter(
84
+ (filterString) => project.sides().includes(filterString)
85
+ );
86
+ const jestFilterArgs = [
87
+ ...filterParams.filter(
88
+ (filterString) => !project.sides().includes(filterString)
89
+ )
90
+ ];
91
+ const jestArgs = [
92
+ ...jestFilterArgs,
93
+ ...forwardJestFlags,
94
+ collectCoverage ? "--collectCoverage" : null,
95
+ "--passWithNoTests"
96
+ ].filter((flagOrValue) => flagOrValue !== null);
97
+ if (watch && !process.env.CI && !collectCoverage) {
98
+ const hasSourceControl = isInGitRepository() || isInMercurialRepository();
99
+ jestArgs.push(hasSourceControl ? "--watch" : "--watchAll");
100
+ }
101
+ if (!sides.length) {
102
+ project.sides().forEach((side) => sides.push(side));
103
+ }
104
+ if (sides.length > 0) {
105
+ jestArgs.push("--projects", ...sides);
106
+ }
107
+ isJestConfigFile(sides);
108
+ try {
109
+ const cacheDirDb = `file:${ensurePosixPath(
110
+ rwjsPaths.generated.base
111
+ )}/test.db`;
112
+ const DATABASE_URL = process.env.TEST_DATABASE_URL || cacheDirDb;
113
+ if (sides.includes("api") && !dbPush) {
114
+ process.env.SKIP_DB_PUSH = "1";
115
+ }
116
+ const runCommand = async () => {
117
+ await execa("yarn jest", jestArgs, {
118
+ cwd: rwjsPaths.base,
119
+ shell: true,
120
+ stdio: "inherit",
121
+ env: { DATABASE_URL }
122
+ });
123
+ };
124
+ if (watch) {
125
+ await runCommand();
126
+ } else {
127
+ await timedTelemetry(process.argv, { type: "test" }, async () => {
128
+ await runCommand();
129
+ });
130
+ }
131
+ } catch (e) {
132
+ errorTelemetry(process.argv, e.message);
133
+ process.exit(e?.exitCode || 1);
134
+ }
135
+ };
136
+ export {
137
+ handler
138
+ };
@@ -0,0 +1,20 @@
1
+ import { recordTelemetryAttributes } from "@cedarjs/cli-helpers";
2
+ import {
3
+ convertTsProjectToJs,
4
+ convertTsScriptsToJs
5
+ } from "@cedarjs/internal/dist/ts2js";
6
+ import { getPaths } from "@cedarjs/project-config";
7
+ const command = "ts-to-js";
8
+ const description = "[DEPRECATED]\nConvert a TypeScript project to JavaScript";
9
+ const handler = () => {
10
+ recordTelemetryAttributes({
11
+ command: "ts-to-js"
12
+ });
13
+ convertTsProjectToJs(getPaths().base);
14
+ convertTsScriptsToJs(getPaths().base);
15
+ };
16
+ export {
17
+ command,
18
+ description,
19
+ handler
20
+ };
@@ -0,0 +1,41 @@
1
+ import terminalLink from "terminal-link";
2
+ import { sides } from "../lib/project.js";
3
+ const command = "type-check [sides..]";
4
+ const aliases = ["tsc", "tc"];
5
+ const description = "Run a TypeScript compiler check on your project";
6
+ const builder = (yargs) => {
7
+ yargs.strict(false).positional("sides", {
8
+ default: sides(),
9
+ description: "Which side(s) to run a typecheck on",
10
+ type: "array"
11
+ }).option("prisma", {
12
+ type: "boolean",
13
+ default: true,
14
+ description: "Generate the Prisma client"
15
+ }).option("generate", {
16
+ type: "boolean",
17
+ default: true,
18
+ description: "Regenerate types within the project"
19
+ }).option("verbose", {
20
+ alias: "v",
21
+ default: false,
22
+ description: "Print more",
23
+ type: "boolean"
24
+ }).epilogue(
25
+ `Also see the ${terminalLink(
26
+ "Redwood CLI Reference",
27
+ "https://redwoodjs.com/docs/cli-commands#type-check"
28
+ )}`
29
+ );
30
+ };
31
+ const handler = async (options) => {
32
+ const { handler: handler2 } = await import("./type-checkHandler.js");
33
+ return handler2(options);
34
+ };
35
+ export {
36
+ aliases,
37
+ builder,
38
+ command,
39
+ description,
40
+ handler
41
+ };