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,22 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * This action copies all the generated types.
5
+ */
6
+
7
+ import { frameworkPath } from '@stacksjs/path'
8
+ import { copyFolder } from '@stacksjs/storage'
9
+
10
+ // relative to scripts directory
11
+ const destinations = [
12
+ [frameworkPath('dist/types/components'), frameworkPath('components/vue/dist/types')],
13
+ [frameworkPath('dist/types/components'), frameworkPath('components/web/dist/types')],
14
+ [frameworkPath('dist/types/functions'), frameworkPath('functions/dist/types')],
15
+ ]
16
+
17
+ destinations.forEach(([src, dest]) => {
18
+ // const srcPath = resolve(__filename, '..', src)
19
+ // const destPath = resolve(__filename, '..', dest)
20
+
21
+ copyFolder(src, dest)
22
+ })
@@ -0,0 +1,55 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { runNpmScript } from '@stacksjs/utils'
3
+ import type { DevOptions } from '@stacksjs/types'
4
+ import { NpmScript } from '@stacksjs/types'
5
+
6
+ export async function invoke(options: DevOptions) {
7
+ if (options.components || options.all)
8
+ await components(options)
9
+
10
+ else if (options.docs || options.all)
11
+ await docs(options)
12
+
13
+ else if (options.pages || options.all)
14
+ await pages(options)
15
+
16
+ else if (options.functions || options.all)
17
+ await functions(options)
18
+
19
+ else if (options.desktop || options.all)
20
+ await desktop(options)
21
+ }
22
+
23
+ /**
24
+ * An alias of the invoke method.
25
+ * @param options
26
+ * @returns
27
+ */
28
+ export async function dev(options: DevOptions) {
29
+ return invoke(options)
30
+ }
31
+
32
+ export async function components(options: DevOptions) {
33
+ log.info('Starting your components dev server...')
34
+ await runNpmScript(NpmScript.DevComponents, options)
35
+ }
36
+
37
+ export async function docs(options: DevOptions) {
38
+ log.info('Starting your docs dev server...')
39
+ await runNpmScript(NpmScript.DevDocs, options)
40
+ }
41
+
42
+ export async function desktop(options: DevOptions) {
43
+ log.info('Starting your Desktop engine...')
44
+ await runNpmScript(NpmScript.DevDesktop, options)
45
+ }
46
+
47
+ export async function pages(options: DevOptions) {
48
+ log.info('Starting your page engine...')
49
+ await runNpmScript(NpmScript.DevPages, options)
50
+ }
51
+
52
+ export async function functions(options: DevOptions) {
53
+ log.info('Starting your function\'s dev server...')
54
+ await runNpmScript(NpmScript.DevFunctions, options)
55
+ }
@@ -0,0 +1,48 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { hasComponents } from '@stacksjs/storage'
3
+ import { runNpmScript } from '@stacksjs/utils'
4
+ import { type ExamplesOptions, ExitCode, NpmScript } from '@stacksjs/types'
5
+
6
+ export async function invoke(options: ExamplesOptions) {
7
+ if (options.components || options.vue)
8
+ await componentExample(options)
9
+
10
+ else if (options.webComponents || options.elements)
11
+ await webComponentExample(options)
12
+
13
+ else
14
+ log.error('An unsupported option was used. Please try again, check the documentation & report the issue, if needed.')
15
+ }
16
+
17
+ /**
18
+ * An alias of the invoke method.
19
+ * @param options
20
+ * @returns
21
+ */
22
+ export async function examples(options: ExamplesOptions) {
23
+ return invoke(options)
24
+ }
25
+
26
+ export async function componentExample(options: ExamplesOptions) {
27
+ if (hasComponents()) {
28
+ await runNpmScript(NpmScript.ExampleVue, options)
29
+ log.success('Your component library was built successfully')
30
+ }
31
+ else {
32
+ log.info('No components found.')
33
+ // todo: throw custom error here
34
+ }
35
+ }
36
+
37
+ export async function webComponentExample(options: ExamplesOptions) {
38
+ if (hasComponents()) {
39
+ log.info('Building your Web Component library...')
40
+ await runNpmScript(NpmScript.BuildWebComponents, options)
41
+ log.success('Your Web Component library was built successfully')
42
+ }
43
+ else {
44
+ log.info('No components found.')
45
+ // todo: throw custom error here
46
+ process.exit(ExitCode.FatalError)
47
+ }
48
+ }
@@ -0,0 +1,27 @@
1
+ import { intro, outro, runCommands } from '@stacksjs/cli'
2
+ import type { CliOptions as FreshOptions } from '@stacksjs/types'
3
+ import { ExitCode } from '@stacksjs/types'
4
+
5
+ export async function invoke(options?: FreshOptions) {
6
+ const perf = intro('buddy fresh')
7
+ const results = await runCommands(['pnpm run clean', 'pnpm install'], options)
8
+
9
+ for (const result of results) {
10
+ if (result.isErr()) {
11
+ outro('While running the fresh command, there was an issue', { startTime: perf, useSeconds: true, isError: true }, result.error)
12
+ process.exit(ExitCode.FatalError)
13
+ }
14
+ }
15
+
16
+ outro('Freshly reinstalled your dependencies.', { startTime: perf, useSeconds: true })
17
+ process.exit(ExitCode.Success)
18
+ }
19
+
20
+ /**
21
+ * An alias of the invoke method.
22
+ * @param options
23
+ * @returns
24
+ */
25
+ export async function fresh(options: FreshOptions) {
26
+ return invoke(options)
27
+ }
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * This action generates the component meta.
5
+ */
6
+
7
+ import { log } from '@stacksjs/logging'
8
+ import { hasComponents } from '@stacksjs/storage'
9
+ import { generateComponentMeta } from './helpers/component-meta'
10
+
11
+ if (hasComponents())
12
+ await generateComponentMeta()
13
+
14
+ else
15
+ log.info('No components found. Skipping component meta generation.')
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * This action generates the web-types.json & custom-elements.json
5
+ * files for the components.
6
+ */
7
+
8
+ import { log } from '@stacksjs/logging'
9
+ import { hasComponents } from '@stacksjs/storage'
10
+ import { generateVsCodeCustomData } from './helpers/vscode-custom-data'
11
+ // import { generateVsCodeCustomData, generateWebTypes } from './generate/vscode-custom-data'
12
+
13
+ if (hasComponents()) {
14
+ // await generateWebTypes()
15
+ await generateVsCodeCustomData()
16
+ }
17
+ else {
18
+ log.info('No components found. Skipping IDE helper generation.')
19
+ }
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import { log } from '@stacksjs/logging'
3
+ import { hasComponents, hasFunctions } from '@stacksjs/storage'
4
+ import { generateLibEntry } from './helpers/lib-entries'
5
+
6
+ if (hasComponents()) {
7
+ await generateLibEntry('vue-components')
8
+ await generateLibEntry('web-components')
9
+ }
10
+ else {
11
+ log.info('No components found. Skipping building component entry points.')
12
+ }
13
+
14
+ if (hasFunctions())
15
+ await generateLibEntry('functions')
16
+ else
17
+ log.info('No functions found. Skipping building function entry point.')
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ import { hasComponents, hasFunctions } from '@stacksjs/storage'
3
+ import { generatePackageJson } from './helpers/package-json'
4
+
5
+ if (hasComponents()) {
6
+ await generatePackageJson('vue-components')
7
+ await generatePackageJson('web-components')
8
+ }
9
+
10
+ if (hasFunctions())
11
+ await generatePackageJson('functions')
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * This action generates the web-types.json & custom-elements.json
5
+ * files for the components.
6
+ */
7
+
8
+ import { log } from '@stacksjs/logging'
9
+ import { hasComponents } from '@stacksjs/storage'
10
+ import { generateVsCodeCustomData } from './helpers/vscode-custom-data'
11
+
12
+ if (hasComponents())
13
+ await generateVsCodeCustomData()
14
+
15
+ else
16
+ log.info('No components found. Skipping VS Code custom data generation.')
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Thanks for inspiration:
5
+ * https://github.com/vueuse/vueuse/blob/main/scripts/fix-types.ts
6
+ */
7
+
8
+ import { generateVueCompat } from './helpers/vue-compat'
9
+
10
+ await generateVueCompat(['wip'])
@@ -0,0 +1,119 @@
1
+ import { log } from '@stacksjs/logging'
2
+ import { NpmScript } from '@stacksjs/types'
3
+ import type { GeneratorOptions } from '@stacksjs/types'
4
+ import { runNpmScript } from '@stacksjs/utils'
5
+ import { projectPath } from '@stacksjs/path'
6
+ import { runCommand } from '@stacksjs/cli'
7
+ import { lintFix } from './lint'
8
+
9
+ export async function invoke(options?: GeneratorOptions) {
10
+ if (options?.types)
11
+ await types(options)
12
+
13
+ else if (options?.entries)
14
+ await libEntries(options)
15
+
16
+ else if (options?.webTypes)
17
+ await webTypes(options)
18
+
19
+ else if (options?.customData)
20
+ await vsCodeCustomData(options)
21
+
22
+ else if (options?.ideHelpers)
23
+ await ideHelpers(options)
24
+
25
+ else if (options?.vueCompatibility)
26
+ await vueCompat(options)
27
+
28
+ else if (options?.componentMeta)
29
+ await componentMeta(options)
30
+ }
31
+
32
+ /**
33
+ * An alias of the invoke method.
34
+ * @param options
35
+ * @returns
36
+ */
37
+ export async function generate(options: GeneratorOptions) {
38
+ return invoke(options)
39
+ }
40
+
41
+ export async function libEntries(options: GeneratorOptions) {
42
+ const result = await runCommand('esno .stacks/core/actions/src/generate-package-json.ts', { ...options, debug: true, cwd: projectPath() })
43
+
44
+ if (result.isErr()) {
45
+ log.error('There was an error generating your library entry points.', result.error)
46
+ process.exit()
47
+ }
48
+
49
+ log.success('Library entry points were generated successfully')
50
+ }
51
+
52
+ export async function vueCompat(options?: GeneratorOptions) {
53
+ const result = await runNpmScript(NpmScript.GenerateVueCompat, options)
54
+
55
+ if (result.isErr()) {
56
+ log.error('There was an error generating Vue 2 compatibility.', result.error)
57
+ process.exit()
58
+ }
59
+
60
+ log.success('Libraries are now Vue 2 & 3 compatible')
61
+ }
62
+
63
+ export async function webTypes(options?: GeneratorOptions) {
64
+ const result = await runNpmScript(NpmScript.GenerateWebTypes, options)
65
+
66
+ if (result.isErr()) {
67
+ log.error('There was an error generating the web-types.json file.', result.error)
68
+ process.exit()
69
+ }
70
+
71
+ log.success('Successfully generated the web-types.json file')
72
+ }
73
+
74
+ export async function vsCodeCustomData(options?: GeneratorOptions) {
75
+ const result = await runNpmScript(NpmScript.GenerateVsCodeCustomData, options)
76
+
77
+ if (result.isErr()) {
78
+ log.error('There was an error generating the custom-elements.json file.', result.error)
79
+ process.exit()
80
+ }
81
+
82
+ await lintFix({ fix: true }) // the created json file needs to be linted
83
+ log.success('Successfully generated the custom-elements.json file')
84
+ }
85
+
86
+ export async function ideHelpers(options?: GeneratorOptions) {
87
+ const result = await runNpmScript(NpmScript.GenerateIdeHelpers, options)
88
+
89
+ if (result.isErr()) {
90
+ log.error('There was an error generating IDE helpers.', result.error)
91
+ process.exit()
92
+ }
93
+
94
+ await lintFix({ fix: true }) // the created json file needs to be linted
95
+ log.success('Successfully generated IDE helpers')
96
+ }
97
+
98
+ export async function componentMeta(options?: GeneratorOptions) {
99
+ const result = await runNpmScript(NpmScript.GenerateComponentMeta, options)
100
+
101
+ if (result.isErr()) {
102
+ log.error('There was an error generating your component meta information.', result.error)
103
+ process.exit()
104
+ }
105
+
106
+ await lintFix({ fix: true }) // the created json file needs to be linted
107
+ log.success('Successfully generated component meta information')
108
+ }
109
+
110
+ export async function types(options?: GeneratorOptions) {
111
+ const result = await runNpmScript(NpmScript.GenerateTypes, options)
112
+
113
+ if (result.isErr()) {
114
+ log.error('There was an error generating your types.', result.error)
115
+ process.exit()
116
+ }
117
+
118
+ log.success('Types were generated successfully')
119
+ }
@@ -0,0 +1,93 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs'
2
+ import fg from 'fast-glob'
3
+ import MarkdownIt from 'markdown-it'
4
+ import { type ComponentMeta, type MetaCheckerOptions, createComponentMetaChecker } from 'vue-component-meta'
5
+ import { frameworkPath, join, parse, projectPath } from '@stacksjs/path'
6
+
7
+ /**
8
+ * ℹ️ Useful Links
9
+ *
10
+ * vue-component-meta tests: https://github.com/johnsoncodehk/volar/blob/master/vue-language-tools/vue-component-meta/tests/index.spec.ts
11
+ * Discord thread about improving vue-component-meta: https://discord.com/channels/793943652350427136/1027819645677350912
12
+ * GitHub issue for improving vue-component-meta based on runtime/dynamic props: https://github.com/johnsoncodehk/volar/issues/1854
13
+ * Discord chat: https://discord.com/channels/793943652350427136/1027819645677350912
14
+ * original script: https://raw.githubusercontent.com/jd-solanki/anu/main/scripts/gen-component-meta.ts
15
+ */
16
+
17
+ export async function generateComponentMeta() {
18
+ const md = new MarkdownIt()
19
+ const checkerOptions: MetaCheckerOptions = {
20
+ forceUseTs: true,
21
+ schema: { ignore: ['MyIgnoredNestedProps'] },
22
+ printer: { newLine: 1 },
23
+ }
24
+
25
+ const tsconfigChecker = createComponentMetaChecker(
26
+ projectPath('tsconfig.json'),
27
+ checkerOptions,
28
+ )
29
+
30
+ const filterMeta = (meta: ComponentMeta): ComponentApi => {
31
+ // const clonedMeta: ComponentMeta = JSON.parse(JSON.stringify(meta))
32
+
33
+ // Exclude global props
34
+ const props: ComponentApiProps[] = []
35
+ meta.props.forEach((prop: any) => {
36
+ if (prop.global)
37
+ return
38
+
39
+ const { name, description, required, type, default: defaultValue } = prop
40
+
41
+ props.push({
42
+ name: `${name}${required ? '' : '?'}`,
43
+ description: md.render(description),
44
+
45
+ // required,
46
+
47
+ type,
48
+ default: defaultValue || 'unknown',
49
+ })
50
+ })
51
+
52
+ return {
53
+ props,
54
+ events: meta.events,
55
+ slots: meta.slots,
56
+ }
57
+ }
58
+
59
+ const components = fg.sync(['components/*.vue', 'components/**/*.vue'], {
60
+ cwd: projectPath(),
61
+ absolute: true,
62
+ })
63
+
64
+ components.forEach((componentPath) => {
65
+ // Thanks: https://futurestud.io/tutorials/node-js-get-a-file-name-with-or-without-extension
66
+ const componentExportName = parse(componentPath).name
67
+ const meta = filterMeta(tsconfigChecker.getComponentMeta(componentPath, componentExportName))
68
+
69
+ const metaDirPath = frameworkPath('component-meta')
70
+
71
+ // if meta dir doesn't exist create
72
+ if (!existsSync(metaDirPath))
73
+ mkdirSync(metaDirPath)
74
+
75
+ const metaJsonFilePath = join(metaDirPath, `${componentExportName}.json`)
76
+ writeFileSync(metaJsonFilePath, JSON.stringify(meta, null, 4))
77
+ })
78
+ }
79
+
80
+ export interface ComponentApiProps {
81
+ name: ComponentMeta['props'][number]['name']
82
+ description: ComponentMeta['props'][number]['description']
83
+
84
+ // required: ComponentMeta['props'][number]['required']
85
+ type: ComponentMeta['props'][number]['type']
86
+ default: ComponentMeta['props'][number]['default']
87
+ }
88
+
89
+ export interface ComponentApi {
90
+ props: ComponentApiProps[]
91
+ events: ComponentMeta['events']
92
+ slots: ComponentMeta['slots']
93
+ }
@@ -0,0 +1,6 @@
1
+ export * from './component-meta'
2
+ export * from './lib-entries'
3
+ export * from './package-json'
4
+ export * from './utils'
5
+ export * from './vscode-custom-data'
6
+ export * from './vue-compat'
@@ -0,0 +1,130 @@
1
+ import { log } from '@stacksjs/logging'
2
+ // import { kebabCase } from '@stacksjs/strings'
3
+ import { libraryEntryPath } from '@stacksjs/path'
4
+ import { writeTextFile } from '@stacksjs/storage'
5
+ import { determineResetPreset } from '@stacksjs/utils'
6
+ import type { LibEntryType } from '@stacksjs/types'
7
+ import { library } from '@stacksjs/config'
8
+
9
+ /**
10
+ * Based on the config values, this method
11
+ * will generate the library entry points.
12
+ *
13
+ * @param type string
14
+ */
15
+ export async function generateLibEntry(type: LibEntryType) {
16
+ try {
17
+ if (type === 'vue-components')
18
+ await createVueLibraryEntryPoint()
19
+
20
+ if (type === 'web-components')
21
+ await createWebComponentLibraryEntryPoint()
22
+
23
+ if (type === 'functions')
24
+ await createFunctionLibraryEntryPoint()
25
+ }
26
+ catch (err) {
27
+ log.error('There was an error generating the library entry point.', err)
28
+ process.exit()
29
+ }
30
+ }
31
+
32
+ export async function createVueLibraryEntryPoint() {
33
+ log.info('Creating the Vue component library entry point...')
34
+
35
+ await writeTextFile({
36
+ path: libraryEntryPath('vue-components'),
37
+ data: generateEntryPointData('vue-components'),
38
+ })
39
+
40
+ log.success('Created Vue component library entry point.')
41
+ }
42
+
43
+ export async function createWebComponentLibraryEntryPoint() {
44
+ log.info('Creating the Web Component library entry point...')
45
+
46
+ await writeTextFile({
47
+ path: libraryEntryPath('web-components'),
48
+ data: generateEntryPointData('web-components'),
49
+ })
50
+
51
+ log.success('Created Web Component library entry point.')
52
+ }
53
+
54
+ export async function createFunctionLibraryEntryPoint() {
55
+ log.info('Creating the Function library entry point...')
56
+
57
+ await writeTextFile({
58
+ path: libraryEntryPath('functions'),
59
+ data: generateEntryPointData('functions'),
60
+ })
61
+
62
+ log.success('Created Functions library entry point.')
63
+ }
64
+
65
+ export function generateEntryPointData(type: 'vue-components' | 'web-components' | 'functions'): string {
66
+ let arr = []
67
+
68
+ if (type === 'functions') {
69
+ if (!library.functions.functions) {
70
+ log.error('There are no functions defined to be built. Please check your config/library.ts file for potential adjustments.')
71
+ process.exit()
72
+ }
73
+
74
+ for (const fx of library.functions.functions) {
75
+ if (Array.isArray(fx))
76
+ arr.push(`export * as ${fx[1]} from '../../../functions/${fx[0]}'`)
77
+ else
78
+ arr.push(`export * from '../../../functions/${fx}'`)
79
+ }
80
+
81
+ // join the array into a string with each element being on a new line
82
+ return arr.join('\r\n')
83
+ }
84
+
85
+ if (type === 'vue-components') {
86
+ if (!library.vueComponents.tags) {
87
+ log.error('There are no components defined to be built. Please check your config/library.ts file for potential adjustments.')
88
+ process.exit()
89
+ }
90
+
91
+ arr = determineResetPreset()
92
+
93
+ for (const component of library.vueComponents.tags.map(tag => tag.name)) {
94
+ if (Array.isArray(component))
95
+ arr.push(`export { default as ${component[1]} } from '../../../components/${component[0]}.vue'`)
96
+ else
97
+ arr.push(`export { default as ${component} } from '../../../components/${component}.vue'`)
98
+ }
99
+
100
+ // join the array into a string with each element being on a new line
101
+ return arr.join('\r\n')
102
+ }
103
+
104
+ // at this point, we know it is a Web Component we are building
105
+ arr = determineResetPreset()
106
+ const imports = [...arr, 'import { defineCustomElement } from \'vue\'']
107
+ const declarations = []
108
+ const definitions = []
109
+
110
+ if (!library.webComponents.tags) {
111
+ log.error('There are no components defined to be built. Please check your config/library.ts file for potential adjustments.')
112
+ process.exit()
113
+ }
114
+
115
+ for (const component of library.webComponents.tags.map(tag => tag.name)) {
116
+ if (Array.isArray(component)) {
117
+ imports.push(`import ${component[1]} from '../../../components/${component[0]}.vue'`)
118
+ declarations.push(`const ${component[1]}CustomElement = defineCustomElement(${component[1]})`)
119
+ definitions.push(`customElements.define('${kebabCase(component[1])}', ${component[1]}CustomElement)`)
120
+ }
121
+ else {
122
+ imports.push(`import ${component} from '../../../components/${component}.vue'`)
123
+ declarations.push(`const ${component}CustomElement = defineCustomElement(${component})`)
124
+ definitions.push(`customElements.define('${kebabCase(component)}', ${component}CustomElement)`)
125
+ }
126
+ }
127
+
128
+ // join the array into a string with each element being on a new line
129
+ return [...imports, ...declarations, ...definitions].join('\r\n')
130
+ }