stacks 0.40.0 → 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 +69 -99
  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,183 @@
1
+ {
2
+ "name": "@stacksjs/buddy",
3
+ "type": "module",
4
+ "version": "0.44.9",
5
+ "packageManager": "pnpm@7.18.2",
6
+ "description": "Meet Buddy. The Stacks runtime.",
7
+ "author": "Chris Breuer",
8
+ "license": "MIT",
9
+ "funding": "https://github.com/sponsors/chrisbbreuer",
10
+ "homepage": "https://github.com/stacksjs/stacks/tree/main/.stacks#readme",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/stacksjs/stacks.git",
14
+ "directory": "./.stacks/buddy"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/stacksjs/stacks/issues"
18
+ },
19
+ "keywords": [
20
+ "vite",
21
+ "component",
22
+ "composables",
23
+ "functions",
24
+ "headless",
25
+ "api",
26
+ "ssg",
27
+ "pwa",
28
+ "modern",
29
+ "library",
30
+ "vue",
31
+ "web components",
32
+ "typescript",
33
+ "javascript",
34
+ "starter kit"
35
+ ],
36
+ "main": "dist/index.mjs",
37
+ "module": "dist/index.mjs",
38
+ "types": "dist/index.d.ts",
39
+ "contributors": [
40
+ "Chris Breuer <chris@ow3.org>"
41
+ ],
42
+ "bin": {
43
+ "stacks": "bin/stacks.mjs",
44
+ "stx": "bin/stacks.mjs",
45
+ "buddy": "bin/stacks.mjs",
46
+ "bud": "bin/stacks.mjs"
47
+ },
48
+ "files": [
49
+ "dist",
50
+ "README.md"
51
+ ],
52
+ "engines": {
53
+ "node": ">=v18.12.1",
54
+ "pnpm": ">=7.18.2"
55
+ },
56
+ "scripts": {
57
+ "buddy": "esno ./src/cli.ts",
58
+ "stacks": "pnpm run buddy",
59
+ "stx": "pnpm run buddy",
60
+ "preinstall": "npx only-allow pnpm",
61
+ "prepublish": "pnpm buddy prepublish",
62
+ "fresh": "pnpm buddy fresh",
63
+ "clean": "pnpm buddy clean",
64
+ "update": "pnpm buddy update",
65
+ "update:dependencies": "pnpm buddy update:dependencies",
66
+ "update:framework": "pnpm buddy update:framework",
67
+ "update:package-manager": "pnpm buddy update:package-manager",
68
+ "update:node": "pnpm buddy update:node",
69
+ "update:all": "pnpm buddy update:all",
70
+ "dev": "pnpm buddy dev",
71
+ "dev:components": "npx vite serve ./components/vue -c ./core/build/src/vue-components.ts",
72
+ "dev:core": "pnpm --filter '../core/**' --filter '!../buddy/' dev",
73
+ "dev:desktop": "wip",
74
+ "dev:docs": "vitepress dev ../apps/docs",
75
+ "dev:pages": "nitro dev",
76
+ "dev:functions": "pnpm buddy dev:functions",
77
+ "development": "pnpm run dev",
78
+ "build": "pnpm buddy build",
79
+ "build:bin": "pkg .",
80
+ "build:components": "pnpm buddy build:components",
81
+ "build:vue-components": "npx vite build -c ./core/build/src/vue-components.ts",
82
+ "build:web-components": "npx vite build -c ./core/build/src/web-components.ts",
83
+ "build:functions": "npx vite build -c ./core/build/src/functions.ts",
84
+ "build:docs": "npx vitepress build ../apps/docs",
85
+ "build:pages": "npx vite-ssg build ./pages -c ./core/build/src/pages.ts",
86
+ "build:core": "pnpm --filter '../core/**' --filter='!../core/config' build && pnpm --filter '../core/config' build",
87
+ "build:cli": "npx unbuild",
88
+ "build:runtime": "pnpm run build:cli",
89
+ "build:desktop": "wip",
90
+ "build:stacks": "npx mkdist -d && pnpm build:cli && pnpm build:core",
91
+ "build:all": "wip",
92
+ "prod": "pnpm run build",
93
+ "prod:components": "pnpm run build:components",
94
+ "prod:vue": "pnpm run prod:vue",
95
+ "prod:web-components": "pnpm run build:web-components",
96
+ "prod:functions": "pnpm run build:functions",
97
+ "prod:docs": "pnpm run build:docs",
98
+ "prod:pages": "pnpm run build:pages",
99
+ "prod:stacks": "pnpm run build:stacks",
100
+ "prod:all": "pnpm run build:all",
101
+ "deploy": "pnpm buddy deploy",
102
+ "deploy:functions": "pnpm buddy deploy:functions",
103
+ "deploy:pages": "pnpm buddy deploy:functions",
104
+ "deploy:docs": "pnpm buddy deploy:docs",
105
+ "deploy:all": "pnpm buddy deploy:all",
106
+ "example": "wip",
107
+ "example:vue": "pnpm run build:components && cd examples/vue && ln -sf ../../components/vue/dist dist && npx vite serve -c ../../core/build/example-vue.ts",
108
+ "example:web-components": "pnpm run build:web-components && cd examples/web && ln -sf ../../components/web/dist dist && npx vite serve -c ../../core/build/example-wc.ts",
109
+ "lint": "eslint ..",
110
+ "lint:fix": "eslint .. --fix",
111
+ "serve": "pnpm buddy serve",
112
+ "serve:pages": "pnpm run dev:pages",
113
+ "serve:functions": "pnpm run dev:functions",
114
+ "make": "pnpm buddy make",
115
+ "make:component": "pnpm buddy make:component",
116
+ "make:function": "pnpm buddy make:function",
117
+ "make:database": "pnpm buddy make:migration",
118
+ "make:migration": "pnpm buddy make:migration",
119
+ "make:factory": "pnpm buddy make:factory",
120
+ "make:lang": "pnpm buddy make:lang",
121
+ "make:stack": "pnpm buddy make:stack",
122
+ "key": "pnpm buddy key",
123
+ "key:generate": "pnpm buddy key:generate",
124
+ "commit": "git cz",
125
+ "release": "pnpm buddy release",
126
+ "changelog": "cd .. && conventional-changelog -p angular -i CHANGELOG.md -s -r 0",
127
+ "generate": "pnpm buddy generate",
128
+ "generate:entries": "pnpm buddy generate:entries",
129
+ "generate:vue-compat": "esno ./core/actions/src/generate-vue-compat.ts",
130
+ "generate:vscode-custom-data": "esno ./core/actions/src/generate-vscode-custom-data.ts",
131
+ "generate:web-types": "vue-docgen-web-types -c ./core/build/web-types.config.cjs",
132
+ "generate:component-meta": "esno ./core/actions/src/component-meta.ts",
133
+ "generate:ide-helpers": "esno ./core/actions/src/generate-ide-helpers.ts",
134
+ "generate:all": "pnpm buddy generate:all",
135
+ "types:generate": "vue-tsc --declaration --emitDeclarationOnly && esno ./core/actions/src/copy-types.ts",
136
+ "types:fix": "esno actions/src/fix-types.ts",
137
+ "add": "pnpm buddy add",
138
+ "test": "vitest --config vitest.config.ts",
139
+ "test:ui": "pnpm buddy test:ui",
140
+ "test:coverage": "pnpm buddy test:coverage",
141
+ "test:types": "pnpm buddy test:types"
142
+ },
143
+ "peerDependencies": {
144
+ "@stacksjs/actions": "workspace:*",
145
+ "@stacksjs/alias": "workspace:*",
146
+ "@stacksjs/arrays": "workspace:*",
147
+ "@stacksjs/build": "workspace:*",
148
+ "@stacksjs/cli": "workspace:*",
149
+ "@stacksjs/cloud": "workspace:*",
150
+ "@stacksjs/collections": "workspace:*",
151
+ "@stacksjs/config": "workspace:*",
152
+ "@stacksjs/docs": "workspace:*",
153
+ "@stacksjs/domains": "workspace:*",
154
+ "@stacksjs/error-handling": "workspace:*",
155
+ "@stacksjs/git": "workspace:*",
156
+ "@stacksjs/lint": "workspace:*",
157
+ "@stacksjs/logging": "workspace:*",
158
+ "@stacksjs/modules": "workspace:*",
159
+ "@stacksjs/objects": "workspace:*",
160
+ "@stacksjs/path": "workspace:*",
161
+ "@stacksjs/router": "workspace:*",
162
+ "@stacksjs/security": "workspace:*",
163
+ "@stacksjs/server": "workspace:*",
164
+ "@stacksjs/storage": "workspace:*",
165
+ "@stacksjs/strings": "workspace:*",
166
+ "@stacksjs/testing": "workspace:*",
167
+ "@stacksjs/types": "workspace:*",
168
+ "@stacksjs/ui": "workspace:*",
169
+ "@stacksjs/utils": "workspace:*"
170
+ },
171
+ "devDependencies": {
172
+ "only-allow": "^1.1.1",
173
+ "pnpm": ">=7.18.2",
174
+ "typescript": "^4.9.4",
175
+ "unbuild": "^1.0.2"
176
+ },
177
+ "config": {
178
+ "commitizen": {
179
+ "path": "node_modules/cz-git"
180
+ }
181
+ },
182
+ "web-types": "./web-types.json"
183
+ }
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+ import { command, log } from '@stacksjs/cli'
3
+ import { isProjectCreated } from '@stacksjs/utils'
4
+ import { version } from '../package.json' assert { type: 'json' }
5
+ import { build, clean, commit, create, dev, example, fresh, generate, key, lint, make, preinstall, prepublish, release, setup, test, update } from './commands'
6
+
7
+ const cli = command('stacks')
8
+
9
+ // setup global error handlers
10
+ process.on('uncaughtException', errorHandler)
11
+ process.on('unhandledRejection', errorHandler)
12
+
13
+ async function main() {
14
+ // before running any commands, check if the project is already initialized
15
+ await setup(cli)
16
+ await key(cli)
17
+
18
+ if (!await isProjectCreated()) {
19
+ await create(cli)
20
+ }
21
+ else {
22
+ await preinstall(cli)
23
+ await prepublish(cli)
24
+ await update(cli)
25
+ await generate(cli)
26
+ await dev(cli)
27
+ await build(cli)
28
+ await clean(cli)
29
+ await commit(cli)
30
+ await fresh(cli)
31
+ await lint(cli)
32
+ await release(cli)
33
+ await make(cli)
34
+ await example(cli)
35
+ await test(cli)
36
+ }
37
+
38
+ cli.help()
39
+ cli.version(version)
40
+
41
+ cli.parse()
42
+ }
43
+
44
+ main()
45
+
46
+ function errorHandler(error: Error): void {
47
+ log.error(error)
48
+ process.exit()
49
+ }
@@ -0,0 +1,63 @@
1
+ import type { AddOptions, BuildOptions, CLI } from '@stacksjs/types'
2
+ import { ExitCode } from '@stacksjs/types'
3
+ import { prompts } from '@stacksjs/cli'
4
+ import { invoke } from '@stacksjs/actions/add'
5
+
6
+ const descriptions = {
7
+ add: 'Add a stack to your project (coming soon)',
8
+ table: 'Add the Table Stack to your project',
9
+ calendar: 'Add the Calendar Stack to your project',
10
+ all: 'Add all stacks',
11
+ debug: 'Enable debug mode',
12
+ }
13
+
14
+ async function add(stacks: CLI) {
15
+ stacks
16
+ .command('add', descriptions.add)
17
+ .option('-t, --table', descriptions.table, { default: false })
18
+ .option('-c, --calendar', descriptions.calendar, { default: false })
19
+ .option('-a, --all', descriptions.all, { default: false })
20
+ .option('--debug', descriptions.debug, { default: false })
21
+ .action(async (options: BuildOptions) => {
22
+ if (hasNoOptions(options)) {
23
+ const answers = await prompts.multiselect({
24
+ type: 'multiselect',
25
+ name: 'add',
26
+ message: 'Which stack/s are you trying to add?',
27
+ choices: [
28
+ { title: 'Calendar', value: 'calendar' },
29
+ { title: 'Table', value: 'table' },
30
+ ],
31
+ })
32
+
33
+ // creates an object out of array and sets answers to true
34
+ options = answers.reduce((a: any, v: any) => ({ ...a, [v]: true }), {})
35
+ }
36
+
37
+ await invoke(options)
38
+
39
+ process.exit(ExitCode.Success)
40
+ })
41
+
42
+ stacks
43
+ .command('add:table', descriptions.table)
44
+ .option('-t, --table', descriptions.table, { default: true })
45
+ .option('--debug', descriptions.debug, { default: false })
46
+ .action(async (options: BuildOptions) => {
47
+ await invoke(options)
48
+ })
49
+
50
+ stacks
51
+ .command('add:calendar', descriptions.calendar)
52
+ .option('-t, --calendar', descriptions.calendar, { default: true })
53
+ .option('--debug', descriptions.debug, { default: false })
54
+ .action(async (options: BuildOptions) => {
55
+ await invoke(options)
56
+ })
57
+ }
58
+
59
+ function hasNoOptions(options: AddOptions) {
60
+ return !options.all && !options.table && !options.calendar
61
+ }
62
+
63
+ export { add }
@@ -0,0 +1,111 @@
1
+ import type { BuildOptions, CLI } from '@stacksjs/types'
2
+ import { ExitCode } from '@stacksjs/types'
3
+ import { prompts } from '@stacksjs/cli'
4
+ import { invoke } from '@stacksjs/actions/build'
5
+
6
+ const descriptions = {
7
+ components: 'Build your component library',
8
+ vueComponents: 'Build your Vue component library',
9
+ webComponents: 'Build your framework agnostic web component library',
10
+ elements: 'An alias to the -w flag',
11
+ functions: 'Build your function library',
12
+ pages: 'Build your SSG pages',
13
+ docs: 'Build your documentation site',
14
+ stacks: 'Build Stacks framework',
15
+ debug: 'Enable debug mode',
16
+ }
17
+
18
+ async function build(stacks: CLI) {
19
+ stacks
20
+ .command('build', 'Automagically build any of your libraries/packages for production use. Select any of the following packages')
21
+ .option('-c, --components', descriptions.components)
22
+ .option('-v, --vue-components', descriptions.vueComponents) // these are automatically built with your -c option as well
23
+ .option('-w, --web-components', descriptions.webComponents) // these are automatically built with your -c option as well
24
+ .option('-e, --elements', descriptions.elements)
25
+ .option('-f, --functions', descriptions.functions)
26
+ .option('-p, --pages', descriptions.pages)
27
+ .option('-d, --docs', descriptions.docs)
28
+ .option('-s, --stacks', descriptions.stacks, { default: false })
29
+ .option('--debug', descriptions.debug, { default: false })
30
+ .action(async (options: BuildOptions) => {
31
+ if (hasNoOptions(options)) {
32
+ const answers = await prompts.multiselect({
33
+ type: 'multiselect',
34
+ name: 'update',
35
+ message: 'What are you trying to build?',
36
+ choices: [
37
+ { title: 'Components', value: 'components' },
38
+ { title: 'Vue Components', value: 'vue-components' },
39
+ { title: 'Web Components', value: 'web-components' },
40
+ { title: 'Functions', value: 'functions' },
41
+ { title: 'Pages', value: 'pages' },
42
+ { title: 'Documentation', value: 'docs' },
43
+ ],
44
+ })
45
+
46
+ // creates an object out of array and sets answers to true
47
+ options = answers.reduce((a: any, v: any) => ({ ...a, [v]: true }), {})
48
+ }
49
+
50
+ await invoke(options)
51
+
52
+ process.exit(ExitCode.Success)
53
+ })
54
+
55
+ stacks
56
+ .command('build:components', 'Automagically build component libraries for production use & npm/CDN distribution')
57
+ .option('-c, --components', descriptions.components, { default: true })
58
+ .option('--debug', descriptions.debug, { default: false })
59
+ .action(async (options: BuildOptions) => {
60
+ await invoke(options)
61
+ })
62
+
63
+ stacks
64
+ .command('build:functions', 'Automagically build function library for npm/CDN distribution')
65
+ .option('-f, --functions', descriptions.functions, { default: true })
66
+ .option('--debug', descriptions.debug, { default: false })
67
+ .action(async (options: BuildOptions) => {
68
+ await invoke(options)
69
+ })
70
+
71
+ stacks
72
+ .command('build:vue-components', 'Automagically build Vue component library for npm/CDN distribution')
73
+ .option('-v, --vue-components', descriptions.vueComponents, { default: true })
74
+ .option('--debug', descriptions.debug, { default: false })
75
+ .alias('build:vue')
76
+ .action(async (options: BuildOptions) => {
77
+ await invoke(options)
78
+ })
79
+
80
+ stacks
81
+ .command('build:web-components', 'Automagically build Web Component library for npm/CDN distribution')
82
+ .option('-w, --web-components', descriptions.webComponents, { default: true })
83
+ .option('--debug', descriptions.debug, { default: false })
84
+ .alias('build:elements')
85
+ .alias('build:wc')
86
+ .action(async (options: BuildOptions) => {
87
+ await invoke(options)
88
+ })
89
+
90
+ stacks
91
+ .command('build:docs', 'Automagically build your documentation site.')
92
+ .option('-d, --docs', descriptions.docs, { default: true })
93
+ .option('--debug', descriptions.debug, { default: false })
94
+ .action(async (options: BuildOptions) => {
95
+ await invoke(options)
96
+ })
97
+
98
+ stacks
99
+ .command('build:stacks', 'Build the core Stacks framework.')
100
+ .option('-s, --stacks', descriptions.stacks, { default: true })
101
+ .option('--debug', descriptions.debug, { default: false })
102
+ .action(async (options: BuildOptions) => {
103
+ await invoke(options)
104
+ })
105
+ }
106
+
107
+ function hasNoOptions(options: BuildOptions) {
108
+ return !options.components && !options.vueComponents && !options.webComponents && !options.elements && !options.functions && !options.pages && !options.docs && !options.stacks
109
+ }
110
+
111
+ export { build }
@@ -0,0 +1,18 @@
1
+ import type { CLI, CleanOptions } from '@stacksjs/types'
2
+ import { invoke } from '@stacksjs/actions/clean'
3
+
4
+ const descriptions = {
5
+ clean: 'Removes all node_modules & lock files',
6
+ debug: 'Enable debug mode',
7
+ }
8
+
9
+ async function clean(stacks: CLI) {
10
+ stacks
11
+ .command('clean', descriptions.clean)
12
+ .option('--debug', descriptions.debug, { default: false })
13
+ .action(async (options: CleanOptions) => {
14
+ await invoke(options)
15
+ })
16
+ }
17
+
18
+ export { clean }
@@ -0,0 +1,18 @@
1
+ import type { CLI, FreshOptions } from '@stacksjs/types'
2
+ import { invoke } from '@stacksjs/actions/commit'
3
+
4
+ const descriptions = {
5
+ commit: 'Commit your stashed changes',
6
+ debug: 'Enable debug mode',
7
+ }
8
+
9
+ async function commit(stacks: CLI) {
10
+ stacks
11
+ .command('commit', descriptions.commit)
12
+ .option('--debug', descriptions.debug, { default: false })
13
+ .action(async (options: FreshOptions) => {
14
+ await invoke(options)
15
+ })
16
+ }
17
+
18
+ export { commit }
@@ -0,0 +1,129 @@
1
+ import type { CLI, CreateOptions } from '@stacksjs/types'
2
+ import { bold, cyan, green, intro, link, log, runCommand } from '@stacksjs/cli'
3
+ import { useOnline } from '@stacksjs/utils'
4
+ import { isFolder } from '@stacksjs/storage'
5
+ import { resolve } from '@stacksjs/path'
6
+ import { ExitCode } from '@stacksjs/types'
7
+ import { generate as generateAppKey } from '@stacksjs/actions/key'
8
+
9
+ const descriptions = {
10
+ command: 'Create a new Stacks project',
11
+ ui: 'Are you building a UI?',
12
+ components: 'Are you building UI components?',
13
+ webComponents: 'Automagically built optimized custom elements/web components?',
14
+ vue: 'Automagically built a Vue component library?',
15
+ pages: 'How about pages?',
16
+ functions: 'Are you developing functions/composables?',
17
+ api: 'Are you building an API?',
18
+ database: 'Do you need a database?',
19
+ debug: 'Enable debug mode',
20
+ }
21
+
22
+ async function create(stacks: CLI) {
23
+ stacks
24
+ .command('new <name>', descriptions.command)
25
+ .option('-u, --ui', descriptions.ui, { default: true }) // if no, disregard remainder of questions wrt UI
26
+ .option('-c, --components', descriptions.components, { default: true }) // if no, -v and -w would be false
27
+ .option('-w, --web-components', descriptions.webComponents, { default: true })
28
+ .option('-v, --vue', descriptions.vue, { default: true })
29
+ .option('-p, --pages', descriptions.pages, { default: true }) // pages need an HTTP server
30
+ .option('-f, --functions', descriptions.functions, { default: true }) // if no, API would be false
31
+ .option('-a, --api', descriptions.api, { default: true }) // APIs need an HTTP server & assumes functions is true
32
+ .option('-d, --database', descriptions.database, { default: true })
33
+ .option('--debug', descriptions.debug, { default: false })
34
+ // .option('--auth', 'Scaffold an authentication?', { default: true })
35
+ .action(async (options: CreateOptions) => {
36
+ const startTime = intro('stacks new')
37
+ const name = options.name
38
+ const path = resolve(process.cwd(), name)
39
+
40
+ await isFolderCheck(path)
41
+ await onlineCheck()
42
+ const result = await download(name, path, options)
43
+
44
+ if (result.isErr()) {
45
+ log.error(result.error)
46
+ process.exit(ExitCode.FatalError)
47
+ }
48
+
49
+ await ensureEnv(path, options)
50
+ await install(path, options)
51
+
52
+ // a custom outro
53
+ console.log()
54
+
55
+ if (startTime) {
56
+ const time = performance.now() - startTime
57
+ log.success(green(`Done in ${time}ms`))
58
+ }
59
+
60
+ log.info(bold('Welcome to the Stacks Framework! ⚛️'))
61
+ console.log(`cd ${link(path, `vscode://file/${path}:1`)} && code .`)
62
+ console.log()
63
+ log.info('To learn more, visit https://stacksjs.dev')
64
+
65
+ process.exit(ExitCode.Success)
66
+ })
67
+ }
68
+
69
+ async function isFolderCheck(path: string) {
70
+ if (await isFolder(path)) {
71
+ log.error(`Path ${path} already exists`)
72
+ process.exit(ExitCode.FatalError)
73
+ }
74
+ }
75
+
76
+ async function onlineCheck() {
77
+ const online = useOnline()
78
+ if (!online) {
79
+ log.info('It appears you are disconnected from the internet.')
80
+ log.info('The Stacks setup requires a brief internet connection for setup.')
81
+ log.info('For instance, it installs your dependencies from.')
82
+ process.exit(ExitCode.FatalError)
83
+ }
84
+ }
85
+
86
+ async function download(name: string, path: string, options: CreateOptions) {
87
+ log.info('Setting up your stack.')
88
+ const result = await runCommand(`giget stacks ${name}`, options)
89
+ log.success(`Successfully scaffolded your project at ${cyan(path)}`)
90
+
91
+ return result
92
+ }
93
+
94
+ async function ensureEnv(path: string, options: CreateOptions) {
95
+ log.info('Ensuring your environment is ready...')
96
+ // todo: this should check for whether the proper Node version is installed because fnm is not a requirement
97
+ await runCommand('fnm use', { ...options, cwd: path })
98
+ log.success('Environment is ready')
99
+ }
100
+
101
+ async function install(path: string, options: CreateOptions) {
102
+ log.info('Installing & setting up Stacks')
103
+ const res1 = await runCommand('pnpm install', { ...options, cwd: path })
104
+
105
+ if (res1.isErr()) {
106
+ log.error(res1.error)
107
+ process.exit(ExitCode.FatalError)
108
+ }
109
+
110
+ const res2 = await runCommand('cp .env.example .env', { ...options, cwd: path })
111
+
112
+ if (res2.isErr()) {
113
+ log.error(res2.error)
114
+ process.exit(ExitCode.FatalError)
115
+ }
116
+
117
+ await generateAppKey(options)
118
+
119
+ const res3 = await runCommand('git init', { ...options, cwd: path })
120
+
121
+ if (res3.isErr()) {
122
+ log.error(res3.error)
123
+ process.exit(ExitCode.FatalError)
124
+ }
125
+
126
+ log.success('Installed & set-up 🚀')
127
+ }
128
+
129
+ export { create }
@@ -0,0 +1,96 @@
1
+ import { ExitCode } from '@stacksjs/types'
2
+ import type { CLI, DevOption, DevOptions } from '@stacksjs/types'
3
+ import { prompts } from '@stacksjs/cli'
4
+ import { components, desktop, docs, functions, pages, invoke as startDevelopmentServer } from '@stacksjs/actions/dev'
5
+
6
+ const descriptions = {
7
+ components: 'Start the Components development server',
8
+ desktop: 'Start the Desktop development server',
9
+ functions: 'Start the Functions development server',
10
+ docs: 'Start the Documentation development server',
11
+ pages: 'Start the Pages development server',
12
+ debug: 'Enable debug mode',
13
+ }
14
+
15
+ async function dev(stacks: CLI) {
16
+ stacks
17
+ .command('dev', 'Start the development server for any of the following')
18
+ .option('-c, --components', descriptions.components)
19
+ .option('-f, --functions', descriptions.functions)
20
+ .option('-d, --docs', descriptions.docs)
21
+ .option('-p, --pages', descriptions.pages)
22
+ .option('--debug', descriptions.debug, { default: false })
23
+ .action(async (options: DevOptions) => {
24
+ if (hasNoOptions(options)) {
25
+ const answer: DevOption | void = await prompts.select({
26
+ type: 'select',
27
+ name: 'development',
28
+ message: 'Which development server are you trying to start?',
29
+ choices: [
30
+ { title: 'Components', value: 'components' },
31
+ { title: 'Functions', value: 'functions' },
32
+ { title: 'Pages', value: 'pages' },
33
+ { title: 'Docs', value: 'docs' },
34
+ ],
35
+ })
36
+
37
+ if (answer !== null)
38
+ process.exit(ExitCode.InvalidArgument)
39
+
40
+ if (answer === 'components')
41
+ await components(options)
42
+ else if (answer === 'functions')
43
+ await functions(options)
44
+ else if (answer === 'pages')
45
+ await pages(options)
46
+ else if (answer === 'docs')
47
+ await docs(options)
48
+
49
+ else process.exit(ExitCode.InvalidArgument)
50
+ }
51
+
52
+ await startDevelopmentServer(options)
53
+ process.exit(ExitCode.Success)
54
+ })
55
+
56
+ stacks
57
+ .command('dev:components', descriptions.components)
58
+ .option('--debug', descriptions.debug, { default: false })
59
+ .action(async (options: DevOptions) => {
60
+ await startDevelopmentServer(options)
61
+ })
62
+
63
+ stacks
64
+ .command('dev:docs', descriptions.docs)
65
+ .option('--debug', descriptions.debug, { default: false })
66
+ .action(async (options: DevOptions) => {
67
+ await docs(options)
68
+ })
69
+
70
+ stacks
71
+ .command('dev:desktop', descriptions.desktop)
72
+ .option('--debug', descriptions.debug, { default: false })
73
+ .action(async (options: DevOptions) => {
74
+ await desktop(options)
75
+ })
76
+
77
+ stacks
78
+ .command('dev:functions', descriptions.functions)
79
+ .option('--debug', descriptions.debug, { default: false })
80
+ .action(async (options: DevOptions) => {
81
+ await functions(options)
82
+ })
83
+
84
+ stacks
85
+ .command('dev:pages', descriptions.pages)
86
+ .option('--debug', descriptions.debug, { default: false })
87
+ .action(async (options: DevOptions) => {
88
+ await pages(options)
89
+ })
90
+ }
91
+
92
+ function hasNoOptions(options: DevOptions) {
93
+ return !options.components && !options.all && !options.docs && !options.functions && !options.pages
94
+ }
95
+
96
+ export { dev }