stacks 0.41.1 → 0.44.9

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 (540) hide show
  1. package/.gitignore +12 -0
  2. package/README.md +369 -27
  3. package/auto-imports.d.ts +862 -0
  4. package/buddy/README.md +414 -0
  5. package/{bin → buddy/bin}/stacks.mjs +0 -0
  6. package/buddy/build.config.ts +17 -0
  7. package/buddy/node_modules/.bin/only-allow +17 -0
  8. package/buddy/node_modules/.bin/pnpm +17 -0
  9. package/buddy/node_modules/.bin/pnpx +17 -0
  10. package/buddy/node_modules/.bin/tsc +17 -0
  11. package/buddy/node_modules/.bin/tsserver +17 -0
  12. package/buddy/node_modules/.bin/unbuild +17 -0
  13. package/buddy/package.json +183 -0
  14. package/buddy/src/cli.ts +49 -0
  15. package/buddy/src/commands/add.ts +63 -0
  16. package/buddy/src/commands/build.ts +111 -0
  17. package/buddy/src/commands/clean.ts +18 -0
  18. package/buddy/src/commands/commit.ts +18 -0
  19. package/buddy/src/commands/create.ts +129 -0
  20. package/buddy/src/commands/dev.ts +96 -0
  21. package/buddy/src/commands/example.ts +65 -0
  22. package/buddy/src/commands/fresh.ts +18 -0
  23. package/buddy/src/commands/generate.ts +110 -0
  24. package/buddy/src/commands/index.ts +18 -0
  25. package/buddy/src/commands/key.ts +18 -0
  26. package/buddy/src/commands/lint.ts +27 -0
  27. package/buddy/src/commands/make.ts +219 -0
  28. package/buddy/src/commands/preinstall.ts +18 -0
  29. package/buddy/src/commands/prepublish.ts +19 -0
  30. package/buddy/src/commands/release.ts +28 -0
  31. package/buddy/src/commands/setup.ts +26 -0
  32. package/buddy/src/commands/test.ts +41 -0
  33. package/buddy/src/commands/types.ts +26 -0
  34. package/buddy/src/commands/update.ts +108 -0
  35. package/buddy/src/index.ts +17 -0
  36. package/components/vue/dist/.gitkeep +0 -0
  37. package/components/vue/index.html +13 -0
  38. package/components/vue/main.ts +18 -0
  39. package/components/vue/package.json +41 -0
  40. package/components/web/dist/.gitkeep +0 -0
  41. package/components/web/package.json +41 -0
  42. package/components.d.ts +22 -0
  43. package/core/actions/README.md +58 -0
  44. package/core/actions/node_modules/.bin/esno +17 -0
  45. package/core/actions/node_modules/.bin/markdown-it +17 -0
  46. package/core/actions/node_modules/.bin/mkdist +17 -0
  47. package/core/actions/node_modules/.bin/tsc +17 -0
  48. package/core/actions/node_modules/.bin/tsserver +17 -0
  49. package/core/actions/package.json +68 -0
  50. package/core/actions/src/add.ts +32 -0
  51. package/core/actions/src/build.ts +93 -0
  52. package/core/actions/src/clean.ts +25 -0
  53. package/core/actions/src/commit.ts +19 -0
  54. package/core/actions/src/copy-types.ts +22 -0
  55. package/core/actions/src/dev.ts +55 -0
  56. package/core/actions/src/examples.ts +48 -0
  57. package/core/actions/src/fresh.ts +27 -0
  58. package/core/actions/src/generate-component-meta.ts +15 -0
  59. package/core/actions/src/generate-ide-helpers.ts +19 -0
  60. package/core/actions/src/generate-lib-entries.ts +17 -0
  61. package/core/actions/src/generate-package-json.ts +11 -0
  62. package/core/actions/src/generate-vscode-custom-data.ts +16 -0
  63. package/core/actions/src/generate-vue-compat.ts +10 -0
  64. package/core/actions/src/generate.ts +119 -0
  65. package/core/actions/src/helpers/component-meta.ts +93 -0
  66. package/core/actions/src/helpers/index.ts +6 -0
  67. package/core/actions/src/helpers/lib-entries.ts +130 -0
  68. package/core/actions/src/helpers/package-json.ts +95 -0
  69. package/core/actions/src/helpers/utils.ts +30 -0
  70. package/core/actions/src/helpers/vscode-custom-data.ts +28 -0
  71. package/core/actions/src/helpers/vue-compat.ts +17 -0
  72. package/core/actions/src/index.ts +1 -0
  73. package/core/actions/src/key.ts +48 -0
  74. package/core/actions/src/lint.ts +36 -0
  75. package/core/actions/src/make.ts +249 -0
  76. package/core/actions/src/preinstall.ts +27 -0
  77. package/core/actions/src/prepublish.ts +16 -0
  78. package/core/actions/src/release.ts +32 -0
  79. package/core/actions/src/test.ts +61 -0
  80. package/core/actions/src/types.ts +23 -0
  81. package/core/actions/src/update.ts +149 -0
  82. package/core/actions/test.ts +10 -0
  83. package/core/actions/tests/example.test.ts +7 -0
  84. package/core/ai/README.md +62 -0
  85. package/core/ai/node_modules/.bin/mkdist +17 -0
  86. package/core/ai/node_modules/.bin/tsc +17 -0
  87. package/core/ai/node_modules/.bin/tsserver +17 -0
  88. package/core/ai/package.json +55 -0
  89. package/core/ai/src/drivers/openai.ts +1 -0
  90. package/core/ai/src/index.ts +1 -0
  91. package/core/ai/tests/example.test.ts +7 -0
  92. package/core/alias/README.md +62 -0
  93. package/core/alias/node_modules/.bin/mkdist +17 -0
  94. package/core/alias/node_modules/.bin/tsc +17 -0
  95. package/core/alias/node_modules/.bin/tsserver +17 -0
  96. package/core/alias/package.json +51 -0
  97. package/core/alias/src/index.ts +84 -0
  98. package/core/alias/tests/example.test.ts +7 -0
  99. package/core/arrays/README.md +59 -0
  100. package/core/arrays/node_modules/.bin/mkdist +17 -0
  101. package/core/arrays/node_modules/.bin/tsc +17 -0
  102. package/core/arrays/node_modules/.bin/tsserver +17 -0
  103. package/core/arrays/package.json +55 -0
  104. package/core/arrays/src/index.ts +208 -0
  105. package/core/arrays/tests/example.test.ts +7 -0
  106. package/core/auth/README.md +59 -0
  107. package/core/auth/node_modules/.bin/mkdist +17 -0
  108. package/core/auth/node_modules/.bin/tsc +17 -0
  109. package/core/auth/node_modules/.bin/tsserver +17 -0
  110. package/core/auth/package.json +49 -0
  111. package/core/auth/src/index.ts +3 -0
  112. package/core/auth/tests/example.test.ts +7 -0
  113. package/core/build/README.md +59 -0
  114. package/core/build/entries/README.md +7 -0
  115. package/core/build/node_modules/.bin/mkdist +17 -0
  116. package/core/build/node_modules/.bin/tsc +17 -0
  117. package/core/build/node_modules/.bin/tsserver +17 -0
  118. package/core/build/node_modules/.bin/unbuild +17 -0
  119. package/core/build/node_modules/.bin/vite +17 -0
  120. package/core/build/node_modules/.bin/vite-ssg +17 -0
  121. package/core/build/node_modules/.bin/vue-docgen-web-types +17 -0
  122. package/core/build/package.json +76 -0
  123. package/core/build/src/desktop.ts +27 -0
  124. package/core/build/src/example-vue.ts +24 -0
  125. package/core/build/src/example-wc.ts +24 -0
  126. package/core/build/src/functions.ts +56 -0
  127. package/core/build/src/index.ts +7 -0
  128. package/core/build/src/pages.ts +50 -0
  129. package/core/build/src/stacks.ts +198 -0
  130. package/core/build/src/vue-components.ts +74 -0
  131. package/core/build/src/web-components.ts +61 -0
  132. package/core/build/tests/example.test.ts +7 -0
  133. package/core/build/web-types.config.cjs +4 -0
  134. package/core/build/web-types.ts +14 -0
  135. package/core/cache/README.md +59 -0
  136. package/core/cache/node_modules/.bin/mkdist +17 -0
  137. package/core/cache/node_modules/.bin/tsc +17 -0
  138. package/core/cache/node_modules/.bin/tsserver +17 -0
  139. package/core/cache/package.json +60 -0
  140. package/core/cache/src/drivers/dynamodb.ts +117 -0
  141. package/core/cache/src/drivers/memcached.ts +20 -0
  142. package/core/cache/src/drivers/redis.ts +41 -0
  143. package/core/cache/src/index.ts +3 -0
  144. package/core/cache/tests/DynamoDB.test.ts +149 -0
  145. package/core/cache/tests/Memcached.test.ts +52 -0
  146. package/core/cache/tests/Redis.test.ts +82 -0
  147. package/core/cache/vite.config.ts +7 -0
  148. package/core/cli/README.md +129 -0
  149. package/core/cli/node_modules/.bin/esno +17 -0
  150. package/core/cli/node_modules/.bin/mkdist +17 -0
  151. package/core/cli/package.json +69 -0
  152. package/core/cli/src/actions/index.ts +2 -0
  153. package/core/cli/src/actions/install.ts +22 -0
  154. package/core/cli/src/actions/run.ts +72 -0
  155. package/core/cli/src/command.ts +7 -0
  156. package/core/cli/src/console.ts +6 -0
  157. package/core/cli/src/helpers.ts +58 -0
  158. package/core/cli/src/index.ts +8 -0
  159. package/core/cli/src/spinner.ts +3 -0
  160. package/core/cli/src/utilities.ts +1 -0
  161. package/core/cli/tests/example.test.ts +7 -0
  162. package/core/cloud/README.md +59 -0
  163. package/core/cloud/dist/actions/README.md +53 -0
  164. package/core/cloud/node_modules/.bin/mkdist +17 -0
  165. package/core/cloud/node_modules/.bin/tsc +17 -0
  166. package/core/cloud/node_modules/.bin/tsserver +17 -0
  167. package/core/cloud/package.json +53 -0
  168. package/core/cloud/src/actions/README.md +53 -0
  169. package/core/cloud/src/index.ts +1 -0
  170. package/core/cloud/tests/example.test.ts +7 -0
  171. package/core/collections/README.md +71 -0
  172. package/core/collections/node_modules/.bin/mkdist +17 -0
  173. package/core/collections/node_modules/.bin/tsc +17 -0
  174. package/core/collections/node_modules/.bin/tsserver +17 -0
  175. package/core/collections/package.json +56 -0
  176. package/core/collections/src/index.ts +1 -0
  177. package/core/collections/tests/example.test.ts +7 -0
  178. package/core/config/README.md +53 -0
  179. package/core/config/build.config.ts +13 -0
  180. package/core/config/node_modules/.bin/mkdist +17 -0
  181. package/core/config/node_modules/.bin/tsc +17 -0
  182. package/core/config/node_modules/.bin/tsserver +17 -0
  183. package/core/config/node_modules/.bin/unbuild +17 -0
  184. package/core/config/package.json +53 -0
  185. package/core/config/src/helpers.ts +30 -0
  186. package/core/config/src/index.ts +17 -0
  187. package/core/config/tests/example.test.ts +7 -0
  188. package/core/dashboard/README.md +74 -0
  189. package/core/dashboard/node_modules/.bin/mkdist +17 -0
  190. package/core/dashboard/package.json +52 -0
  191. package/core/dashboard/src/index.ts +0 -0
  192. package/core/dashboard/tests/example.test.ts +7 -0
  193. package/core/database/README.md +59 -0
  194. package/core/database/node_modules/.bin/mkdist +17 -0
  195. package/core/database/node_modules/.bin/tsc +17 -0
  196. package/core/database/node_modules/.bin/tsserver +17 -0
  197. package/core/database/package.json +59 -0
  198. package/core/database/src/factory/index.ts +70 -0
  199. package/core/database/src/index.ts +3 -0
  200. package/core/database/src/migrations/index.ts +5 -0
  201. package/core/database/src/seeder/index.ts +10 -0
  202. package/core/database/tests/example.test.ts +7 -0
  203. package/core/datetime/README.md +66 -0
  204. package/core/datetime/node_modules/.bin/mkdist +17 -0
  205. package/core/datetime/node_modules/.bin/tsc +17 -0
  206. package/core/datetime/node_modules/.bin/tsserver +17 -0
  207. package/core/datetime/package.json +55 -0
  208. package/core/datetime/src/index.ts +6 -0
  209. package/core/datetime/tests/example.test.ts +7 -0
  210. package/core/desktop/README.md +49 -0
  211. package/core/desktop/node_modules/.bin/mkdist +17 -0
  212. package/core/desktop/node_modules/.bin/tauri +17 -0
  213. package/core/desktop/node_modules/.bin/tsc +17 -0
  214. package/core/desktop/node_modules/.bin/tsserver +17 -0
  215. package/core/desktop/package.json +69 -0
  216. package/core/desktop/src/drivers/tauri/index.ts +1 -0
  217. package/core/desktop/src/index.ts +1 -0
  218. package/core/desktop/tests/example.test.ts +7 -0
  219. package/core/docs/README.md +59 -0
  220. package/core/docs/node_modules/.bin/mkdist +17 -0
  221. package/core/docs/node_modules/.bin/tsc +17 -0
  222. package/core/docs/node_modules/.bin/tsserver +17 -0
  223. package/core/docs/node_modules/.bin/vitepress +17 -0
  224. package/core/docs/package.json +53 -0
  225. package/core/docs/src/index.ts +4 -0
  226. package/core/docs/tests/example.test.ts +7 -0
  227. package/core/domains/README.md +56 -0
  228. package/core/domains/node_modules/.bin/mkdist +17 -0
  229. package/core/domains/node_modules/.bin/tsc +17 -0
  230. package/core/domains/node_modules/.bin/tsserver +17 -0
  231. package/core/domains/package.json +52 -0
  232. package/core/domains/src/index.ts +1 -0
  233. package/core/domains/tests/example.test.ts +7 -0
  234. package/core/drivers/README.md +53 -0
  235. package/core/drivers/node_modules/.bin/mkdist +17 -0
  236. package/core/drivers/node_modules/.bin/tsc +17 -0
  237. package/core/drivers/node_modules/.bin/tsserver +17 -0
  238. package/core/drivers/package.json +53 -0
  239. package/core/drivers/src/index.ts +10 -0
  240. package/core/drivers/tests/example.test.ts +7 -0
  241. package/core/email/README.md +89 -0
  242. package/core/email/node_modules/.bin/mkdist +17 -0
  243. package/core/email/node_modules/.bin/tsc +17 -0
  244. package/core/email/node_modules/.bin/tsserver +17 -0
  245. package/core/email/package.json +57 -0
  246. package/core/email/src/index.ts +1 -0
  247. package/core/email/tests/example.test.ts +7 -0
  248. package/core/error-handling/README.md +131 -0
  249. package/core/error-handling/node_modules/.bin/mkdist +17 -0
  250. package/core/error-handling/node_modules/.bin/tsc +17 -0
  251. package/core/error-handling/node_modules/.bin/tsserver +17 -0
  252. package/core/error-handling/package.json +55 -0
  253. package/core/error-handling/src/index.ts +15 -0
  254. package/core/error-handling/tests/example.test.ts +7 -0
  255. package/core/git/README.md +69 -0
  256. package/core/git/node_modules/.bin/bumpp +17 -0
  257. package/core/git/node_modules/.bin/commitizen +17 -0
  258. package/core/git/node_modules/.bin/conventional-changelog +17 -0
  259. package/core/git/node_modules/.bin/cz +17 -0
  260. package/core/git/node_modules/.bin/giget +17 -0
  261. package/core/git/node_modules/.bin/git-cz +17 -0
  262. package/core/git/node_modules/.bin/mkdist +17 -0
  263. package/core/git/node_modules/.bin/simple-git-hooks +17 -0
  264. package/core/git/node_modules/.bin/tsc +17 -0
  265. package/core/git/node_modules/.bin/tsserver +17 -0
  266. package/core/git/package.json +59 -0
  267. package/core/git/src/index.ts +1 -0
  268. package/core/git/tests/example.test.ts +7 -0
  269. package/core/lint/README.md +73 -0
  270. package/core/lint/node_modules/.bin/eslint +17 -0
  271. package/core/lint/node_modules/.bin/lint-staged +17 -0
  272. package/core/lint/node_modules/.bin/mkdist +17 -0
  273. package/core/lint/node_modules/.bin/tsc +17 -0
  274. package/core/lint/node_modules/.bin/tsserver +17 -0
  275. package/core/lint/package.json +58 -0
  276. package/core/lint/src/index.ts +3 -0
  277. package/core/lint/tests/example.test.ts +7 -0
  278. package/core/logging/README.md +58 -0
  279. package/core/logging/debug-test.ts +8 -0
  280. package/core/logging/node_modules/.bin/mkdist +17 -0
  281. package/core/logging/node_modules/.bin/tsc +17 -0
  282. package/core/logging/node_modules/.bin/tsserver +17 -0
  283. package/core/logging/package.json +55 -0
  284. package/core/logging/src/index.ts +15 -0
  285. package/core/logging/tests/example.test.ts +7 -0
  286. package/core/modules/README.md +51 -0
  287. package/core/modules/node_modules/.bin/mkdist +17 -0
  288. package/core/modules/node_modules/.bin/tsc +17 -0
  289. package/core/modules/node_modules/.bin/tsserver +17 -0
  290. package/core/modules/package.json +54 -0
  291. package/core/modules/src/i18n.ts +23 -0
  292. package/core/modules/src/nprogress.ts +12 -0
  293. package/core/modules/src/pwa.ts +12 -0
  294. package/core/modules/tests/example.test.ts +7 -0
  295. package/core/notifications/README.md +89 -0
  296. package/core/notifications/build.config.ts +14 -0
  297. package/core/notifications/node_modules/.bin/maizzle +17 -0
  298. package/core/notifications/node_modules/.bin/mkdist +17 -0
  299. package/core/notifications/node_modules/.bin/tsc +17 -0
  300. package/core/notifications/node_modules/.bin/tsserver +17 -0
  301. package/core/notifications/node_modules/.bin/unbuild +17 -0
  302. package/core/notifications/package.json +88 -0
  303. package/core/notifications/src/drivers/chat/discord.ts +15 -0
  304. package/core/notifications/src/drivers/chat/index.ts +2 -0
  305. package/core/notifications/src/drivers/chat/slack.ts +22 -0
  306. package/core/notifications/src/drivers/email/actions/send.ts +36 -0
  307. package/core/notifications/src/drivers/email/emailjs.ts +21 -0
  308. package/core/notifications/src/drivers/email/index.ts +9 -0
  309. package/core/notifications/src/drivers/email/mailgun.ts +19 -0
  310. package/core/notifications/src/drivers/email/mailjet.ts +18 -0
  311. package/core/notifications/src/drivers/email/mandrill.ts +17 -0
  312. package/core/notifications/src/drivers/email/netcore.ts +17 -0
  313. package/core/notifications/src/drivers/email/nodemailer.ts +21 -0
  314. package/core/notifications/src/drivers/email/postmark.ts +17 -0
  315. package/core/notifications/src/drivers/email/sendgrid.ts +18 -0
  316. package/core/notifications/src/drivers/email/ses.ts +19 -0
  317. package/core/notifications/src/drivers/email/tailwind.config.ts +37 -0
  318. package/core/notifications/src/drivers/sms/gupshup.ts +21 -0
  319. package/core/notifications/src/drivers/sms/index.ts +8 -0
  320. package/core/notifications/src/drivers/sms/nexmo.ts +22 -0
  321. package/core/notifications/src/drivers/sms/plivo.ts +22 -0
  322. package/core/notifications/src/drivers/sms/sms77.ts +21 -0
  323. package/core/notifications/src/drivers/sms/sns.ts +22 -0
  324. package/core/notifications/src/drivers/sms/telnyx.ts +22 -0
  325. package/core/notifications/src/drivers/sms/termii.ts +21 -0
  326. package/core/notifications/src/drivers/sms/twilio.ts +22 -0
  327. package/core/notifications/src/index.ts +25 -0
  328. package/core/notifications/src/utils/config.ts +5 -0
  329. package/core/notifications/src/utils/template.html +8 -0
  330. package/core/notifications/tests/chat/Slack.test.ts +24 -0
  331. package/core/notifications/tests/email/Mailgun.test.ts +29 -0
  332. package/core/notifications/tests/email/Sendgrid.test.ts +30 -0
  333. package/core/notifications/tests/example.test.ts +7 -0
  334. package/core/notifications/tests/sms/Twilio.test.ts +27 -0
  335. package/core/objects/README.md +71 -0
  336. package/core/objects/node_modules/.bin/mkdist +17 -0
  337. package/core/objects/node_modules/.bin/tsc +17 -0
  338. package/core/objects/node_modules/.bin/tsserver +17 -0
  339. package/core/objects/package.json +53 -0
  340. package/core/objects/src/index.ts +130 -0
  341. package/core/objects/tests/example.test.ts +7 -0
  342. package/core/path/README.md +64 -0
  343. package/core/path/node_modules/.bin/mkdist +17 -0
  344. package/core/path/node_modules/.bin/tsc +17 -0
  345. package/core/path/node_modules/.bin/tsserver +17 -0
  346. package/core/path/package.json +55 -0
  347. package/core/path/src/index.ts +353 -0
  348. package/core/path/tests/example.test.ts +7 -0
  349. package/core/payments/README.md +64 -0
  350. package/core/payments/node_modules/.bin/mkdist +17 -0
  351. package/core/payments/node_modules/.bin/tsc +17 -0
  352. package/core/payments/node_modules/.bin/tsserver +17 -0
  353. package/core/payments/package.json +52 -0
  354. package/core/payments/src/drivers/stripe.ts +1 -0
  355. package/core/payments/src/index.ts +1 -0
  356. package/core/payments/tests/example.test.ts +7 -0
  357. package/core/realtime/README.md +59 -0
  358. package/core/realtime/node_modules/.bin/mkdist +17 -0
  359. package/core/realtime/node_modules/.bin/tsc +17 -0
  360. package/core/realtime/node_modules/.bin/tsserver +17 -0
  361. package/core/realtime/package.json +51 -0
  362. package/core/realtime/src/drivers/index.ts +3 -0
  363. package/core/realtime/src/index.ts +3 -0
  364. package/core/realtime/tests/example.test.ts +7 -0
  365. package/core/router/README.md +59 -0
  366. package/core/router/node_modules/.bin/mkdist +17 -0
  367. package/core/router/node_modules/.bin/tsc +17 -0
  368. package/core/router/node_modules/.bin/tsserver +17 -0
  369. package/core/router/package.json +54 -0
  370. package/core/router/src/index.ts +14 -0
  371. package/core/router/tests/example.test.ts +7 -0
  372. package/core/search-engine/README.md +66 -0
  373. package/core/search-engine/node_modules/.bin/mkdist +17 -0
  374. package/core/search-engine/node_modules/.bin/tsc +17 -0
  375. package/core/search-engine/node_modules/.bin/tsserver +17 -0
  376. package/core/search-engine/package.json +64 -0
  377. package/core/search-engine/src/drivers/meilisearch.ts +37 -0
  378. package/core/search-engine/src/helpers.ts +74 -0
  379. package/core/search-engine/src/index.ts +56 -0
  380. package/core/search-engine/tests/example.test.ts +7 -0
  381. package/core/security/README.md +66 -0
  382. package/core/security/node_modules/.bin/mkdist +17 -0
  383. package/core/security/node_modules/.bin/tsc +17 -0
  384. package/core/security/node_modules/.bin/tsserver +17 -0
  385. package/core/security/package.json +57 -0
  386. package/core/security/src/crypt.ts +14 -0
  387. package/core/security/src/hash.ts +52 -0
  388. package/core/security/src/index.ts +3 -0
  389. package/core/security/src/key.ts +11 -0
  390. package/core/security/tests/example.test.ts +7 -0
  391. package/core/server/README.md +51 -0
  392. package/core/server/node_modules/.bin/mkdist +17 -0
  393. package/core/server/node_modules/.bin/nitro +17 -0
  394. package/core/server/node_modules/.bin/nitropack +17 -0
  395. package/core/server/node_modules/.bin/tsc +17 -0
  396. package/core/server/node_modules/.bin/tsserver +17 -0
  397. package/core/server/node_modules/.bin/vite +17 -0
  398. package/core/server/package.json +59 -0
  399. package/core/server/src/config.ts +6 -0
  400. package/core/server/src/index.ts +5 -0
  401. package/core/server/src/nitro.config.ts +6 -0
  402. package/core/server/tests/example.test.ts +7 -0
  403. package/core/storage/README.md +74 -0
  404. package/core/storage/node_modules/.bin/mkdist +17 -0
  405. package/core/storage/node_modules/.bin/tsc +17 -0
  406. package/core/storage/node_modules/.bin/tsserver +17 -0
  407. package/core/storage/package.json +62 -0
  408. package/core/storage/src/index.ts +193 -0
  409. package/core/storage/tests/example.test.ts +7 -0
  410. package/core/strings/README.md +68 -0
  411. package/core/strings/build.config.ts +15 -0
  412. package/core/strings/node_modules/.bin/mkdist +17 -0
  413. package/core/strings/node_modules/.bin/tsc +17 -0
  414. package/core/strings/node_modules/.bin/tsserver +17 -0
  415. package/core/strings/node_modules/.bin/unbuild +17 -0
  416. package/core/strings/package.json +69 -0
  417. package/core/strings/src/index.ts +97 -0
  418. package/core/strings/tests/example.test.ts +7 -0
  419. package/core/testing/README.md +59 -0
  420. package/core/testing/node_modules/.bin/mkdist +17 -0
  421. package/core/testing/node_modules/.bin/tsc +17 -0
  422. package/core/testing/node_modules/.bin/tsserver +17 -0
  423. package/core/testing/node_modules/.bin/vitest +17 -0
  424. package/core/testing/package.json +57 -0
  425. package/core/testing/src/index.ts +1 -0
  426. package/core/types/README.md +59 -0
  427. package/core/types/node_modules/.bin/markdown-it +17 -0
  428. package/core/types/node_modules/.bin/mkdist +17 -0
  429. package/core/types/node_modules/.bin/tsc +17 -0
  430. package/core/types/node_modules/.bin/tsserver +17 -0
  431. package/core/types/node_modules/.bin/vite-ssg +17 -0
  432. package/core/types/node_modules/.bin/vitepress +17 -0
  433. package/core/types/package.json +71 -0
  434. package/core/types/src/app.ts +140 -0
  435. package/core/types/src/auto-imports.ts +3 -0
  436. package/core/types/src/build.ts +2 -0
  437. package/core/types/src/cli.ts +198 -0
  438. package/core/types/src/components.ts +66 -0
  439. package/core/types/src/database.ts +3 -0
  440. package/core/types/src/debug.ts +6 -0
  441. package/core/types/src/deploy.ts +11 -0
  442. package/core/types/src/docs.ts +3 -0
  443. package/core/types/src/errors.ts +6 -0
  444. package/core/types/src/exit-code.ts +10 -0
  445. package/core/types/src/fs.ts +17 -0
  446. package/core/types/src/git.ts +131 -0
  447. package/core/types/src/hashing.ts +107 -0
  448. package/core/types/src/i18n.ts +19 -0
  449. package/core/types/src/index.ts +28 -0
  450. package/core/types/src/inspect.ts +10 -0
  451. package/core/types/src/layout.ts +8 -0
  452. package/core/types/src/library.ts +148 -0
  453. package/core/types/src/manifest.ts +9 -0
  454. package/core/types/src/markdown.ts +198 -0
  455. package/core/types/src/notifications.ts +9 -0
  456. package/core/types/src/pages.ts +8 -0
  457. package/core/types/src/promise.ts +1 -0
  458. package/core/types/src/pwa.ts +8 -0
  459. package/core/types/src/search-engine.ts +118 -0
  460. package/core/types/src/ssg.ts +3 -0
  461. package/core/types/src/ui.ts +184 -0
  462. package/core/types/src/utils.ts +38 -0
  463. package/core/ui/README.md +66 -0
  464. package/core/ui/node_modules/.bin/mkdist +17 -0
  465. package/core/ui/node_modules/.bin/tsc +17 -0
  466. package/core/ui/node_modules/.bin/tsserver +17 -0
  467. package/core/ui/node_modules/.bin/vue-tsc +17 -0
  468. package/core/ui/package.json +66 -0
  469. package/core/ui/src/index.ts +17 -0
  470. package/core/ui/src/unocss.ts +45 -0
  471. package/core/ui/tests/example.test.ts +7 -0
  472. package/core/utils/node_modules/.bin/esno +17 -0
  473. package/core/utils/node_modules/.bin/mkdist +17 -0
  474. package/core/utils/node_modules/.bin/rimraf +17 -0
  475. package/core/utils/node_modules/.bin/tsc +17 -0
  476. package/core/utils/node_modules/.bin/tsserver +17 -0
  477. package/core/utils/package.json +77 -0
  478. package/core/utils/src/base.ts +10 -0
  479. package/core/utils/src/function.ts +32 -0
  480. package/core/utils/src/guards.ts +39 -0
  481. package/core/utils/src/helpers.ts +134 -0
  482. package/core/utils/src/index.ts +13 -0
  483. package/core/utils/src/is.ts +12 -0
  484. package/core/utils/src/p.ts +118 -0
  485. package/core/utils/src/promise.ts +91 -0
  486. package/core/utils/src/vendor.ts +1 -0
  487. package/core/utils/tests/example.test.ts +7 -0
  488. package/core/x-ray/README.md +55 -0
  489. package/core/x-ray/index.html +13 -0
  490. package/core/x-ray/node_modules/.bin/mkdist +17 -0
  491. package/core/x-ray/node_modules/.bin/tsc +17 -0
  492. package/core/x-ray/node_modules/.bin/tsserver +17 -0
  493. package/core/x-ray/package.json +63 -0
  494. package/core/x-ray/routes/index.ts +19 -0
  495. package/core/x-ray/src/client.ts +14 -0
  496. package/core/x-ray/src/desktop/api/nitro.config.ts +18 -0
  497. package/core/x-ray/src/desktop/api/routes/api/logs.ts +7 -0
  498. package/core/x-ray/src/desktop/api/routes/api/store-logs.ts +22 -0
  499. package/core/x-ray/src/desktop/api/src/types.ts +7 -0
  500. package/core/x-ray/src/desktop/api/storage/index.ts +7 -0
  501. package/core/x-ray/src/desktop/app.vue +377 -0
  502. package/core/x-ray/src/desktop/functions/http.ts +26 -0
  503. package/core/x-ray/src/desktop/functions/types.ts +7 -0
  504. package/core/x-ray/src/desktop/main.ts +14 -0
  505. package/core/x-ray/src/desktop/modules/counter/mod.vue +44 -0
  506. package/core/x-ray/src/desktop/modules/fetcher/mod.vue +63 -0
  507. package/core/x-ray/src/desktop/plugins/unified/unified-app.ts +5 -0
  508. package/core/x-ray/src/desktop/plugins/unified/unified-styles.scss +0 -0
  509. package/core/x-ray/src/desktop/services/http.ts +45 -0
  510. package/core/x-ray/src/desktop/styles/app.scss +0 -0
  511. package/core/x-ray/src/http.ts +26 -0
  512. package/core/x-ray/src/index.ts +42 -0
  513. package/core/x-ray/src/ray.config.js +27 -0
  514. package/core/x-ray/src/types.ts +7 -0
  515. package/core/x-ray/tests/example.test.ts +7 -0
  516. package/custom-elements.json +14 -0
  517. package/examples/vue/App.vue +12 -0
  518. package/examples/vue/favicon.png +0 -0
  519. package/examples/vue/index.html +20 -0
  520. package/examples/web/favicon.png +0 -0
  521. package/examples/web/index.html +13 -0
  522. package/functions/package.json +41 -0
  523. package/netlify.toml +18 -0
  524. package/package.json +39 -68
  525. package/pages/App.vue +26 -0
  526. package/pages/index.html +23 -0
  527. package/pages/main.ts +26 -0
  528. package/pages/public/_headers +3 -0
  529. package/pages/public/favicon-dark.svg +3 -0
  530. package/pages/public/favicon.svg +3 -0
  531. package/pages/public/pwa-192x192.png +0 -0
  532. package/pages/public/pwa-512x512.png +0 -0
  533. package/pages/public/safari-pinned-tab.svg +41 -0
  534. package/pages/styles/main.css +29 -0
  535. package/pages/styles/markdown.css +28 -0
  536. package/shims.d.ts +29 -0
  537. package/simple-git-hooks.cjs +4 -0
  538. package/tsconfig.json +115 -0
  539. package/vitest.config.ts +21 -0
  540. package/web-types.json +67 -0
@@ -0,0 +1,95 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { writeTextFile } from '@stacksjs/storage'
3
+ import { packageJsonPath } from '@stacksjs/path'
4
+ import { library } from '@stacksjs/config'
5
+ import { packageManager } from '../../package.json' assert { type: 'json' }
6
+
7
+ export async function generatePackageJson(type: 'vue-components' | 'web-components' | 'functions') {
8
+ let name, description, directory, keywords, config, prettyName
9
+
10
+ if (type === 'vue-components') {
11
+ name = library.vueComponents.name
12
+ description = library.vueComponents.description
13
+ directory = 'components'
14
+ keywords = library.vueComponents.keywords
15
+ config = 'vue-components'
16
+ }
17
+
18
+ else if (type === 'web-components') {
19
+ name = library.webComponents.name
20
+ description = library.webComponents.description
21
+ directory = 'components'
22
+ keywords = library.webComponents.keywords
23
+ config = 'web-components'
24
+ }
25
+
26
+ else if (type === 'functions') {
27
+ name = library.functions.name
28
+ description = library.functions.description
29
+ directory = 'functions'
30
+ keywords = library.functions.keywords
31
+ config = 'functions'
32
+ }
33
+
34
+ try {
35
+ // the version does not have to be set here,
36
+ // it will be set automatically by the release script
37
+ await writeTextFile({
38
+ path: packageJsonPath(type),
39
+ data: `{
40
+ "name": "${name}",
41
+ "type": "module",
42
+ "version": "",
43
+ "packageManager": "${packageManager}",
44
+ "description": "${description}",
45
+ "author": "${library.author}",
46
+ "license": "MIT",
47
+ "homepage": "https://github.com/${library.repository}/tree/main/${directory}#readme",
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/${library.repository}.git",
51
+ "directory": "${directory}"
52
+ },
53
+ "bugs": {
54
+ "url": "https://github.com/${library.repository}/issues"
55
+ },
56
+ "keywords": ${JSON.stringify(keywords)},
57
+ "contributors": ${JSON.stringify(library.contributors)},
58
+ "exports": {
59
+ ".": {
60
+ "types": "./dist/index.d.ts",
61
+ "require": "./dist/index.cjs",
62
+ "import": "./dist/index.js"
63
+ }
64
+ },
65
+ "main": "dist/index.cjs",
66
+ "module": "dist/index.js",
67
+ "types": "dist/index.d.ts",
68
+ "files": [
69
+ "dist",
70
+ "README.md"
71
+ ],
72
+ "scripts": {
73
+ "build": "vite build -c ../build/${config}.ts",
74
+ "prepublishOnly": "pnpm run build"
75
+ },
76
+ "devDependencies": {
77
+ "stacks": "workspace:*"
78
+ }
79
+ }
80
+ `,
81
+ })
82
+
83
+ if (type === 'vue-components')
84
+ prettyName = 'Vue Component library'
85
+ else if (type === 'web-components')
86
+ prettyName = 'Web Component library'
87
+ else if (type === 'functions')
88
+ prettyName = 'Function Library'
89
+
90
+ log.success(`Created ${prettyName} package.json`)
91
+ }
92
+ catch (err) {
93
+ log.error(`There was an error creating the ${prettyName} package.json.`, err)
94
+ }
95
+ }
@@ -0,0 +1,30 @@
1
+ import storage from '@stacksjs/storage'
2
+ import { runCommand } from '@stacksjs/cli'
3
+ import { actionsPath, functionsPath } from '@stacksjs/path'
4
+ import type { CliOptions } from '@stacksjs/types'
5
+ import { err } from '@stacksjs/error-handling'
6
+
7
+ /**
8
+ * Run a command the Stacks way.
9
+ *
10
+ * @param command The action to invoke.
11
+ * @param options The options to pass to the command.
12
+ * @returns The result of the command.
13
+ */
14
+ export async function runAction(action: string, options?: CliOptions) {
15
+ if (!hasAction(action))
16
+ return err(`The specified action "${action}" does not exist`)
17
+
18
+ const cmd = `esno ${actionsPath(`${action}.ts`)}`
19
+ return await runCommand(cmd, options)
20
+ }
21
+
22
+ export function hasAction(action: string) {
23
+ if (storage.isFile(functionsPath(`actions/${action}.ts`)))
24
+ return true
25
+
26
+ if (storage.isFile(actionsPath(`${action}.ts`)))
27
+ return true
28
+
29
+ return false
30
+ }
@@ -0,0 +1,28 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { customElementsDataPath } from '@stacksjs/path'
3
+ import { writeTextFile } from '@stacksjs/storage'
4
+ import { library } from '@stacksjs/config'
5
+
6
+ export async function generateVsCodeCustomData() {
7
+ try {
8
+ // the version does not have to be set here,
9
+ // it will be set automatically by the release script
10
+ await writeTextFile({
11
+ path: customElementsDataPath(),
12
+ data: generateComponentInfoData(),
13
+ })
14
+ }
15
+ catch (err) {
16
+ log.error('There was an error generating the VS Code custom data file.', err)
17
+ }
18
+ }
19
+
20
+ function generateComponentInfoData() {
21
+ const componentsData = JSON.stringify(library.vueComponents.tags)
22
+
23
+ return `{
24
+ "version": 1.1,
25
+ "tags": ${componentsData}
26
+ }
27
+ `
28
+ }
@@ -0,0 +1,17 @@
1
+ import fg from 'fast-glob'
2
+ import fs from 'fs-extra'
3
+
4
+ export async function generateVueCompat(paths: string[]) {
5
+ const files = await fg(paths, {
6
+ onlyFiles: true,
7
+ })
8
+
9
+ for (const f of files) {
10
+ const raw = await fs.readFile(f, 'utf-8')
11
+ const changed = raw
12
+ .replace(/"@vue\/composition-api"/g, '\'vue-demi\'')
13
+ .replace(/"vue"/g, '\'vue-demi\'')
14
+ .replace(/'vue'/g, '\'vue-demi\'')
15
+ await fs.writeFile(f, changed, 'utf-8')
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ export * from './helpers'
@@ -0,0 +1,48 @@
1
+ import { getRandomValues } from 'node:crypto'
2
+ import { log, runCommand } from '@stacksjs/cli'
3
+ // import { generateAppKey } from '@stacksjs/security'
4
+ import type { CliOptions as KeyOptions } from '@stacksjs/types'
5
+ import { setEnvValue } from '@stacksjs/utils'
6
+ import { isFile } from '@stacksjs/storage'
7
+ import utf8 from 'crypto-js/enc-utf8'
8
+ import base64 from 'crypto-js/enc-base64'
9
+
10
+ export async function invoke(options: KeyOptions) {
11
+ await generate(options)
12
+ }
13
+
14
+ /**
15
+ * An alias of the invoke method.
16
+ * @param options
17
+ * @returns
18
+ */
19
+ export async function key(options: KeyOptions) {
20
+ return invoke(options)
21
+ }
22
+
23
+ export async function generate(options: KeyOptions) {
24
+ try {
25
+ log.info('Setting random application key.')
26
+
27
+ if (!isFile('.env'))
28
+ await runCommand('cp .env.example .env', options)
29
+ // spawn('cp .env.example .env', { stdio: debug, cwd: projectPath() })
30
+
31
+ await setEnvValue('APP_KEY', await generateAppKey())
32
+ log.success('Application key set')
33
+
34
+ return true
35
+ }
36
+ catch (error) {
37
+ log.error('There was an error generating your key.', error)
38
+ process.exit()
39
+ }
40
+ }
41
+
42
+ export async function generateAppKey() {
43
+ const random = getRandomValues(new Uint8Array(32))
44
+ const encodedWord = utf8.parse(random.toString())
45
+ const key = base64.stringify(encodedWord)
46
+
47
+ return `base64:${key}`
48
+ }
@@ -0,0 +1,36 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { intro, outro, runCommand } from '@stacksjs/cli'
3
+ import { runNpmScript } from '@stacksjs/utils'
4
+ import type { LintOptions } from '@stacksjs/types'
5
+ import { ExitCode, NpmScript } from '@stacksjs/types'
6
+
7
+ export async function invoke(options: LintOptions) {
8
+ if (options?.fix)
9
+ await lintFix(options)
10
+ else
11
+ await lint(options)
12
+ }
13
+
14
+ export async function lint(options: LintOptions) {
15
+ const perf = intro('buddy lint')
16
+ const result = await runCommand(NpmScript.Lint, { ...options, debug: true })
17
+
18
+ if (result.isErr()) {
19
+ outro('While running `buddy lint`, there was an issue', { startTime: perf, useSeconds: true, isError: true })
20
+ process.exit(ExitCode.FatalError)
21
+ }
22
+
23
+ outro('Linted', { startTime: perf, useSeconds: true })
24
+ }
25
+
26
+ export async function lintFix(options?: LintOptions) {
27
+ log.info('Fixing lint errors...')
28
+ const result = await runNpmScript(NpmScript.LintFix, options)
29
+
30
+ if (result.isErr()) {
31
+ log.error('There was an error lint fixing your code.', result.error)
32
+ process.exit()
33
+ }
34
+
35
+ log.success('Fixed lint errors')
36
+ }
@@ -0,0 +1,249 @@
1
+ import { italic, log, spawn } from '@stacksjs/cli'
2
+ import { writeTextFile } from '@stacksjs/storage'
3
+ import { resolve } from '@stacksjs/path'
4
+ import type { MakeOptions } from '@stacksjs/types'
5
+
6
+ export async function invoke(options: MakeOptions) {
7
+ if (options.component)
8
+ await component(options)
9
+
10
+ if (options.database)
11
+ await database(options)
12
+
13
+ if (options.factory)
14
+ await factory(options)
15
+
16
+ if (options.function)
17
+ await fx(options)
18
+
19
+ if (options.language)
20
+ await language(options)
21
+
22
+ if (options.migration)
23
+ await migration(options)
24
+
25
+ if (options.notification)
26
+ await notification(options)
27
+
28
+ if (options.page)
29
+ await page(options)
30
+
31
+ if (options.stack)
32
+ await stack(options)
33
+ }
34
+
35
+ /**
36
+ * An alias of the invoke method.
37
+ * @param options
38
+ * @returns
39
+ */
40
+ export async function make(options: MakeOptions) {
41
+ return invoke(options)
42
+ }
43
+
44
+ export async function component(options: MakeOptions) {
45
+ try {
46
+ const name = options.name
47
+ log.info('Creating your component...')
48
+ await createComponent(options)
49
+ log.success(`Created ${italic(name)} component`)
50
+ }
51
+ catch (error) {
52
+ log.error('There was an error creating your component.', error)
53
+ process.exit()
54
+ }
55
+ }
56
+
57
+ export async function createComponent(options: MakeOptions) {
58
+ const name = options.name
59
+ await writeTextFile({
60
+ path: `./components/${name}.vue`,
61
+ data: `<script setup lang="ts">
62
+ // eslint-disable-next-line no-console
63
+ console.log('Hello World component created')
64
+ </script>
65
+
66
+ <template>
67
+ <div>
68
+ Some HTML block
69
+ </div>
70
+ </template>
71
+ `,
72
+ })
73
+ }
74
+
75
+ export async function database(options: MakeOptions) {
76
+ try {
77
+ const name = options.name
78
+ log.info(`Creating your ${italic(name)} database...`)
79
+ await createDatabase(options)
80
+ log.success(`Created ${italic(name)} database`)
81
+ }
82
+ catch (error) {
83
+ log.error('There was an error creating your database.', error)
84
+ process.exit()
85
+ }
86
+ }
87
+
88
+ export async function createDatabase(options: MakeOptions) {
89
+ // eslint-disable-next-line no-console
90
+ console.log('options', options) // wip
91
+ }
92
+
93
+ export async function factory(options: MakeOptions) {
94
+ try {
95
+ const name = options.name
96
+ log.info(`Creating your ${italic(name)} factory...`)
97
+ await createDatabase(options)
98
+ log.success(`Created ${italic(name)} factory`)
99
+ }
100
+ catch (error) {
101
+ log.error('There was an error creating your factory.', error)
102
+ process.exit()
103
+ }
104
+ }
105
+
106
+ export async function createFactory(options: MakeOptions) {
107
+ // eslint-disable-next-line no-console
108
+ console.log('options', options) // wip
109
+ }
110
+
111
+ export async function migration(options: MakeOptions) {
112
+ try {
113
+ const name = options.name
114
+ log.info(`Creating your ${italic(name)} migration...`)
115
+ await createMigration(options)
116
+ log.success(`Created ${italic(name)} migration`)
117
+ }
118
+ catch (error) {
119
+ log.error('There was an error creating your migration.', error)
120
+ process.exit()
121
+ }
122
+ }
123
+
124
+ export async function createMigration(options: MakeOptions) {
125
+ // eslint-disable-next-line no-console
126
+ console.log('options', options) // wip
127
+ }
128
+
129
+ export async function notification(options: MakeOptions) {
130
+ try {
131
+ const name = options.name
132
+ log.info(`Creating your ${italic(name)} notification...`)
133
+ await createNotification(options)
134
+ log.success(`Created ${italic(name)} notification`)
135
+ }
136
+ catch (error) {
137
+ log.error('There was an error creating your notification.', error)
138
+ process.exit()
139
+ }
140
+ }
141
+
142
+ export async function createNotification(options: MakeOptions) {
143
+ // eslint-disable-next-line no-console
144
+ console.log('options', options) // wip
145
+ }
146
+
147
+ export async function page(options: MakeOptions) {
148
+ try {
149
+ const name = options.name
150
+ log.info('Creating your page...')
151
+ createPage(options)
152
+ log.success(`Created ${name} page`)
153
+ }
154
+ catch (error) {
155
+ log.error('There was an error creating your page.', error)
156
+ process.exit()
157
+ }
158
+ }
159
+
160
+ export async function createPage(options: MakeOptions) {
161
+ const name = options.name
162
+ await writeTextFile({
163
+ path: `./pages/${name}.vue`,
164
+ data:
165
+ `<script setup lang="ts">
166
+ // eslint-disable-next-line no-console
167
+ console.log('Hello World page created')
168
+ </script>
169
+
170
+ <template>
171
+ <div>
172
+ Visit http://127.0.0.1/${name}
173
+ </div>
174
+ </template>
175
+ `,
176
+ })
177
+ }
178
+
179
+ export async function fx(options: MakeOptions) {
180
+ try {
181
+ const name = options.name
182
+ log.info('Creating your function...')
183
+ await createFunction(options)
184
+ log.success(`Created ${name} function`)
185
+ }
186
+ catch (error) {
187
+ log.error('There was an error creating your function.', error)
188
+ process.exit()
189
+ }
190
+ }
191
+
192
+ export async function createFunction(options: MakeOptions) {
193
+ const name = options.name
194
+ await writeTextFile({
195
+ path: `./functions/${name}.ts`,
196
+ data: `// reactive state
197
+ const ${name} = ref(0)
198
+
199
+ // functions that mutate state and trigger updates
200
+ function increment() {
201
+ ${name}.value++
202
+ }
203
+
204
+ export {
205
+ ${name},
206
+ increment,
207
+ }
208
+ `,
209
+ })
210
+ }
211
+
212
+ export async function language(options: MakeOptions) {
213
+ try {
214
+ const name = options.name
215
+ log.info('Creating your translation file...')
216
+ createLanguage(options)
217
+ log.success(`Created ${name} translation file`)
218
+ }
219
+ catch (error) {
220
+ log.error('There was an error creating your language.', error)
221
+ process.exit()
222
+ }
223
+ }
224
+
225
+ export async function createLanguage(options: MakeOptions) {
226
+ const name = options.name
227
+ await writeTextFile({
228
+ path: `./lang/${name}.yml`,
229
+ data: `button:
230
+ text: Copy
231
+ `,
232
+ })
233
+ }
234
+
235
+ export async function stack(options: MakeOptions) {
236
+ try {
237
+ const name = options.name
238
+ log.info(`Creating your ${name} stack...`)
239
+ const path = resolve(process.cwd(), name)
240
+
241
+ await spawn(`giget stacks ${path}`)
242
+ log.success('Successfully scaffolded your project')
243
+ log.info(`cd ${path} && pnpm install`)
244
+ }
245
+ catch (error) {
246
+ log.error('There was an error creating your stack.', error)
247
+ process.exit()
248
+ }
249
+ }
@@ -0,0 +1,27 @@
1
+ import { log, spawn } from '@stacksjs/cli'
2
+ import { projectPath } from '@stacksjs/path'
3
+ import type { PreinstallOptions } from '@stacksjs/types'
4
+ import { determineDebugMode } from '@stacksjs/config'
5
+
6
+ export async function invoke(options?: PreinstallOptions) {
7
+ try {
8
+ const stdio = determineDebugMode(options) ? 'inherit' : 'ignore'
9
+
10
+ log.info('Preinstall check...')
11
+ await spawn('npx only-allow pnpm', { stdio, cwd: projectPath() })
12
+ log.success('Environment ready')
13
+ }
14
+ catch (error) {
15
+ log.error('There was an error pre-installing your stack.', error)
16
+ process.exit()
17
+ }
18
+ }
19
+
20
+ /**
21
+ * An alias of the invoke method.
22
+ * @param options
23
+ * @returns
24
+ */
25
+ export async function preinstall(options: PreinstallOptions) {
26
+ return invoke(options)
27
+ }
@@ -0,0 +1,16 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { runtimePath } from '@stacksjs/path'
3
+ import { runNpmScript } from '@stacksjs/utils'
4
+ import { NpmScript } from '@stacksjs/types'
5
+
6
+ log.info('Running prepublish command...')
7
+
8
+ // right before we publish, we need to build Stacks
9
+ const result = await runNpmScript(NpmScript.BuildStacks, { debug: true, cwd: runtimePath() }) // TODO: add flag for debug mode
10
+
11
+ if (result.isErr()) {
12
+ log.error('There was an error while prepublishing your stack, during the process of building Stacks.', result.error)
13
+ process.exit()
14
+ }
15
+
16
+ log.success('Prepublishing completed')
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ import { frameworkPath } from '@stacksjs/path'
3
+ import { runAction } from '@stacksjs/actions'
4
+ import { runNpmScript } from '@stacksjs/utils'
5
+ import { NpmScript } from '@stacksjs/types'
6
+ import { log } from '@stacksjs/cli'
7
+
8
+ // first, lets generate the package.json's
9
+ let result = await runAction('generate-package-json')
10
+
11
+ if (result.isErr()) {
12
+ log.error('There was an error while releasing your stack, during the process of fixing your lint errors.', result.error)
13
+ process.exit()
14
+ }
15
+
16
+ // next, lets run lint:fix to make sure there are no lint errors
17
+ // because when "generate-package-json" runs, it generates some lint errors
18
+ result = await runNpmScript(NpmScript.LintFix, { debug: true, cwd: frameworkPath() })
19
+
20
+ if (result.isErr()) {
21
+ log.error('There was an error while releasing your stack, during the process of fixing your lint errors.', result.error)
22
+ process.exit()
23
+ }
24
+
25
+ // next, lets run the release script to bump the versions and generate the changelog, and push the changes
26
+ // ultimately, a successful git push will trigger the CI/CD release workflow
27
+ result = await runNpmScript(NpmScript.Release, { debug: true, cwd: frameworkPath() })
28
+
29
+ if (result.isErr()) {
30
+ log.error('There was an error while releasing your stack.', result.error)
31
+ process.exit()
32
+ }
@@ -0,0 +1,61 @@
1
+ import type { TestOptions } from '@stacksjs/types'
2
+ import { NpmScript } from '@stacksjs/types'
3
+ import { intro, outro, runCommand } from '@stacksjs/cli'
4
+ import { projectPath } from '@stacksjs/path'
5
+
6
+ export async function invoke(options: TestOptions) {
7
+ const perf = intro('buddy test')
8
+ const result = await runCommand(NpmScript.Test, { ...options, debug: true, cwd: projectPath() })
9
+
10
+ if (result.isErr()) {
11
+ outro('While running `buddy test`, there was an issue', { startTime: perf, useSeconds: true, isError: true }, result.error)
12
+ process.exit()
13
+ }
14
+
15
+ outro('Finished running tests', { startTime: perf, useSeconds: true })
16
+ }
17
+
18
+ export async function testUi(options: TestOptions) {
19
+ const perf = intro('buddy test:ui')
20
+ const result = await runCommand(NpmScript.TestUi, { ...options, debug: true })
21
+
22
+ if (result.isErr()) {
23
+ outro('While running `buddy test:ui`, there was an issue', { startTime: perf, useSeconds: true, isError: true }, result.error)
24
+ process.exit()
25
+ }
26
+ }
27
+
28
+ /**
29
+ * An alias of the invoke method.
30
+ * @param options
31
+ * @returns
32
+ */
33
+ export async function test(options: TestOptions) {
34
+ return invoke(options)
35
+ }
36
+
37
+ export async function typecheck(options: TestOptions) {
38
+ const perf = intro('buddy test:types')
39
+ const result = await runCommand(NpmScript.TestTypes, options)
40
+
41
+ if (result.isErr()) {
42
+ outro('While running `buddy test:types`, there was an issue', { startTime: perf, useSeconds: true, isError: true }, result.error)
43
+ process.exit()
44
+ }
45
+
46
+ outro('Finished typecheck', { startTime: perf, useSeconds: true })
47
+ process.exit()
48
+ }
49
+
50
+ export async function testCoverageReport(options: TestOptions) {
51
+ const perf = intro('buddy test:coverage')
52
+ const result = await runCommand(NpmScript.TestCoverage, options)
53
+
54
+ if (result.isErr()) {
55
+ outro('While running `buddy test:coverage`, there was an issue', { startTime: perf, useSeconds: true, isError: true }, result.error)
56
+ process.exit()
57
+ }
58
+
59
+ outro('Generated the test coverage report', { startTime: perf, useSeconds: true })
60
+ process.exit()
61
+ }
@@ -0,0 +1,23 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { runNpmScript } from '@stacksjs/utils'
3
+ import { NpmScript, type TypesOptions } from '@stacksjs/types'
4
+
5
+ export async function invoke(options?: TypesOptions) {
6
+ const results = await runNpmScript(NpmScript.TypesFix, options)
7
+
8
+ if (results.isErr()) {
9
+ log.error('There was an error fixing your types.', results.error)
10
+ process.exit()
11
+ }
12
+
13
+ log.success('Types are set')
14
+ }
15
+
16
+ /**
17
+ * An alias of the invoke method.
18
+ * @param options
19
+ * @returns
20
+ */
21
+ export async function types(options: TypesOptions) {
22
+ return invoke(options)
23
+ }