stacks 0.53.1 → 0.56.3

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 (461) hide show
  1. package/.gitignore +4 -2
  2. package/README.md +71 -74
  3. package/api/package.json +3 -2
  4. package/art/logo-dark.svg +11 -0
  5. package/art/logo.svg +11 -0
  6. package/auto-imports.d.ts +1182 -841
  7. package/components.d.ts +7 -9
  8. package/core/actions/build.config.ts +181 -9
  9. package/core/actions/package.json +6 -8
  10. package/core/actions/src/build/component-libs.ts +2 -12
  11. package/core/actions/src/dev/index.ts +6 -5
  12. package/core/actions/src/generate/index.ts +2 -2
  13. package/core/actions/src/generate/settings.ts +1 -1
  14. package/core/actions/src/helpers/lib-entries.ts +43 -35
  15. package/core/actions/src/helpers/utils.ts +7 -9
  16. package/core/actions/src/lint/index.ts +14 -2
  17. package/core/actions/src/make.ts +7 -4
  18. package/core/actions/src/migrate.ts +2 -2
  19. package/core/actions/src/prepublish.ts +2 -2
  20. package/core/actions/src/release.ts +1 -1
  21. package/core/actions/src/seed.ts +1 -1
  22. package/core/actions/src/upgrade/framework.ts +1 -1
  23. package/core/actions/src/upgrade.ts +3 -3
  24. package/core/ai/build.config.ts +5 -7
  25. package/core/ai/package.json +5 -9
  26. package/core/alias/build.config.ts +5 -7
  27. package/core/alias/package.json +3 -6
  28. package/core/alias/src/index.ts +6 -7
  29. package/core/analytics/build.config.ts +5 -7
  30. package/core/analytics/package.json +6 -6
  31. package/core/arrays/build.config.ts +4 -7
  32. package/core/arrays/package.json +8 -4
  33. package/core/arrays/src/contains.ts +23 -0
  34. package/core/arrays/src/helpers.ts +206 -0
  35. package/core/arrays/src/index.ts +4 -226
  36. package/core/arrays/src/macro.ts +135 -0
  37. package/core/arrays/src/math.ts +19 -0
  38. package/core/auth/build.config.ts +4 -7
  39. package/core/auth/package.json +3 -3
  40. package/core/buddy/README.md +73 -76
  41. package/core/buddy/build.config.ts +1 -2
  42. package/core/buddy/package.json +4 -4
  43. package/core/buddy/src/cli.ts +10 -18
  44. package/core/buddy/src/commands/add.ts +2 -2
  45. package/core/buddy/src/commands/build.ts +23 -16
  46. package/core/buddy/src/commands/create.ts +2 -2
  47. package/core/buddy/src/commands/dev.ts +31 -30
  48. package/core/buddy/src/commands/example.ts +8 -14
  49. package/core/buddy/src/commands/generate.ts +16 -14
  50. package/core/buddy/src/commands/key.ts +1 -1
  51. package/core/buddy/src/commands/lint.ts +4 -4
  52. package/core/buddy/src/commands/make.ts +20 -15
  53. package/core/buddy/src/commands/setting.ts +2 -2
  54. package/core/buddy/src/commands/upgrade.ts +18 -22
  55. package/core/buddy/src/commands/version.ts +1 -1
  56. package/core/build/build.config.ts +22 -7
  57. package/core/build/package.json +11 -10
  58. package/core/build/src/desktop.ts +2 -2
  59. package/core/build/src/example-vue.ts +5 -4
  60. package/core/build/src/example-wc.ts +5 -4
  61. package/core/build/src/functions.ts +9 -11
  62. package/core/build/src/index.ts +7 -7
  63. package/core/build/src/stacks.ts +31 -50
  64. package/core/build/src/{pages.ts → views.ts} +13 -14
  65. package/core/build/src/vue-components.ts +73 -12
  66. package/core/build/src/web-components.ts +12 -11
  67. package/core/build/web-types.ts +3 -3
  68. package/core/cache/build.config.ts +7 -7
  69. package/core/cache/package.json +17 -17
  70. package/core/cache/tests/DynamoDB.test.ts +19 -33
  71. package/core/chat/build.config.ts +5 -7
  72. package/core/chat/package.json +8 -8
  73. package/core/cli/build.config.ts +3 -2
  74. package/core/cli/package.json +3 -3
  75. package/core/cli/src/console.ts +75 -2
  76. package/core/cli/src/helpers.ts +1 -1
  77. package/core/cli/src/parse.ts +2 -2
  78. package/core/cli/src/run.ts +5 -6
  79. package/core/cloud/build.config.ts +4 -7
  80. package/core/cloud/package.json +17 -3
  81. package/core/cloud/src/aws/index.ts +9 -0
  82. package/core/cloud/src/aws/logger.ts +8 -0
  83. package/core/cloud/src/aws/metrics.ts +8 -0
  84. package/core/cloud/src/aws/stack.ts +12 -0
  85. package/core/cloud/src/aws/tracer.ts +3 -0
  86. package/core/cloud/src/index.ts +1 -1
  87. package/core/cloud/src/runtime/nodejs/bootstrap.ts +16 -0
  88. package/core/cloud/src/runtime/nodejs/build.sh +1 -0
  89. package/core/collections/build.config.ts +3 -7
  90. package/core/collections/package.json +3 -3
  91. package/core/config/build.config.ts +33 -33
  92. package/core/config/package.json +4 -4
  93. package/core/config/src/defaults.ts +0 -3
  94. package/core/config/src/stacks.ts +10 -11
  95. package/core/database/build.config.ts +1 -2
  96. package/core/database/package.json +3 -3
  97. package/core/database/src/factory/index.ts +1 -1
  98. package/core/database/src/migrations/index.ts +1 -1
  99. package/core/datetime/build.config.ts +1 -2
  100. package/core/datetime/package.json +3 -3
  101. package/core/datetime/src/index.ts +2 -1
  102. package/core/desktop/build.config.ts +2 -1
  103. package/core/desktop/package.json +6 -6
  104. package/core/development/build.config.ts +15 -8
  105. package/core/development/package.json +11 -5
  106. package/core/development/src/index.ts +2 -0
  107. package/core/{domains → dns}/README.md +2 -2
  108. package/core/dns/build.config.ts +22 -0
  109. package/core/{domains → dns}/package.json +13 -9
  110. package/core/dns/src/index.ts +18 -0
  111. package/core/docs/build.config.ts +1 -2
  112. package/core/docs/package.json +4 -4
  113. package/core/email/build.config.ts +1 -2
  114. package/core/email/package.json +15 -15
  115. package/core/email/src/drivers/emailjs.ts +1 -1
  116. package/core/email/src/drivers/mailgun.ts +1 -1
  117. package/core/email/src/drivers/mailjet.ts +2 -2
  118. package/core/email/src/drivers/mandrill.ts +1 -1
  119. package/core/email/src/drivers/netcore.ts +1 -1
  120. package/core/email/src/drivers/nodemailer.ts +1 -1
  121. package/core/email/src/drivers/postmark.ts +1 -1
  122. package/core/email/src/drivers/sendgrid.ts +1 -1
  123. package/core/error-handling/build.config.ts +7 -2
  124. package/core/error-handling/package.json +6 -4
  125. package/core/error-handling/src/index.ts +45 -0
  126. package/core/events/README.md +1 -1
  127. package/core/events/build.config.ts +1 -2
  128. package/core/events/package.json +3 -3
  129. package/core/events/src/index.ts +8 -1
  130. package/core/faker/build.config.ts +3 -1
  131. package/core/faker/package.json +4 -4
  132. package/core/git/build.config.ts +3 -1
  133. package/core/git/package.json +4 -4
  134. package/core/health/build.config.ts +3 -1
  135. package/core/health/package.json +3 -3
  136. package/core/lint/build.config.ts +3 -1
  137. package/core/lint/package.json +6 -6
  138. package/core/logging/build.config.ts +5 -3
  139. package/core/logging/package.json +6 -6
  140. package/core/modules/build.config.ts +10 -7
  141. package/core/modules/package.json +3 -3
  142. package/core/notifications/README.md +1 -1
  143. package/core/notifications/build.config.ts +2 -1
  144. package/core/notifications/package.json +25 -25
  145. package/core/notifications/src/tailwind.config.ts +1 -1
  146. package/core/notifications/tests/email/Mailgun.test.ts +4 -4
  147. package/core/notifications/tests/email/Sendgrid.test.ts +2 -2
  148. package/core/objects/build.config.ts +15 -7
  149. package/core/objects/package.json +5 -4
  150. package/core/orm/build.config.ts +1 -2
  151. package/core/orm/package.json +3 -3
  152. package/core/pages/build.config.ts +4 -7
  153. package/core/pages/package.json +3 -3
  154. package/core/pages/src/index.ts +2 -2
  155. package/core/path/build.config.ts +1 -2
  156. package/core/path/package.json +4 -5
  157. package/core/path/src/index.ts +84 -65
  158. package/core/payments/build.config.ts +4 -7
  159. package/core/payments/package.json +5 -5
  160. package/core/push/build.config.ts +4 -7
  161. package/core/push/package.json +5 -5
  162. package/core/query-builder/build.config.ts +4 -7
  163. package/core/query-builder/package.json +7 -7
  164. package/core/queue/build.config.ts +4 -7
  165. package/core/queue/package.json +3 -3
  166. package/core/realtime/build.config.ts +4 -7
  167. package/core/realtime/package.json +3 -3
  168. package/core/realtime/src/index.ts +3 -1
  169. package/core/repl/README.md +53 -0
  170. package/core/repl/build.config.ts +12 -0
  171. package/core/repl/package.json +56 -0
  172. package/core/repl/src/index.ts +1 -0
  173. package/core/repl/tests/example.test.ts +7 -0
  174. package/core/router/build.config.ts +13 -7
  175. package/core/router/package.json +4 -4
  176. package/core/router/src/index.ts +2 -0
  177. package/core/scheduler/build.config.ts +4 -7
  178. package/core/scheduler/package.json +4 -4
  179. package/core/search-engine/build.config.ts +17 -7
  180. package/core/search-engine/package.json +4 -4
  181. package/core/search-engine/src/index.ts +2 -2
  182. package/core/security/build.config.ts +17 -7
  183. package/core/security/package.json +4 -3
  184. package/core/security/src/crypt.ts +11 -2
  185. package/core/server/build.config.ts +3 -7
  186. package/core/server/package.json +5 -5
  187. package/core/signals/README.md +2 -2
  188. package/core/signals/build.config.ts +4 -7
  189. package/core/signals/package.json +4 -4
  190. package/core/signals/src/index.ts +1 -1
  191. package/core/slug/build.config.ts +4 -7
  192. package/core/slug/package.json +3 -3
  193. package/core/slug/src/index.ts +2 -1
  194. package/core/sms/build.config.ts +3 -1
  195. package/core/sms/package.json +13 -13
  196. package/core/storage/build.config.ts +3 -7
  197. package/core/storage/package.json +5 -5
  198. package/core/storage/src/index.ts +2 -22
  199. package/core/strings/build.config.ts +1 -2
  200. package/core/strings/package.json +9 -3
  201. package/core/strings/src/case.ts +12 -0
  202. package/core/strings/src/index.ts +2 -1
  203. package/core/strings/src/is.ts +170 -0
  204. package/core/strings/src/macro.ts +139 -0
  205. package/core/strings/src/utils.ts +10 -12
  206. package/core/testing/build.config.ts +3 -1
  207. package/core/testing/package.json +8 -8
  208. package/core/tinker/build.config.ts +12 -0
  209. package/core/tinker/package.json +15 -3
  210. package/core/tinker/src/index.ts +1 -0
  211. package/core/types/build.config.ts +17 -8
  212. package/core/types/package.json +25 -19
  213. package/core/types/src/app.ts +4 -4
  214. package/core/types/src/cli.ts +36 -34
  215. package/core/types/src/cron-jobs.ts +25 -4
  216. package/core/types/src/database.ts +12 -3
  217. package/core/types/src/errors.ts +19 -1
  218. package/core/types/src/events.ts +13 -5
  219. package/core/types/src/git.ts +1 -1
  220. package/core/types/src/index.ts +2 -1
  221. package/core/types/src/library.ts +0 -7
  222. package/core/types/src/model.ts +21 -7
  223. package/core/types/src/money.ts +3 -0
  224. package/core/types/src/notifications.ts +9 -7
  225. package/core/types/src/queue.ts +34 -0
  226. package/core/types/src/search-engine.ts +3 -3
  227. package/core/types/src/stacks.ts +1 -12
  228. package/core/ui/build.config.ts +5 -7
  229. package/core/ui/package.json +7 -7
  230. package/core/utils/build.config.ts +32 -7
  231. package/core/utils/package.json +16 -16
  232. package/core/utils/src/config.ts +88 -49
  233. package/core/utils/src/currency.ts +3 -0
  234. package/core/utils/src/delete.ts +1 -3
  235. package/core/utils/src/helpers.ts +11 -5
  236. package/core/validation/build.config.ts +18 -8
  237. package/core/validation/package.json +8 -6
  238. package/core/validation/src/index.ts +2 -0
  239. package/core/validation/src/is.ts +27 -174
  240. package/core/validation/src/rules.ts +126 -0
  241. package/core/validation/src/types/env.ts +147 -0
  242. package/core/validation/src/types/index.ts +2 -0
  243. package/core/validation/src/types/money.ts +17 -0
  244. package/core/validation/src/validate.ts +14 -25
  245. package/core/vite-plugin/README.md +59 -0
  246. package/core/vite-plugin/build.config.ts +21 -0
  247. package/core/vite-plugin/package.json +51 -0
  248. package/core/vite-plugin/src/index.ts +23 -0
  249. package/core/vite-plugin/tests/example.test.ts +7 -0
  250. package/dictionary.txt +228 -0
  251. package/docs/package.json +3 -2
  252. package/env.d.ts +7 -0
  253. package/ide/jetbrains/.fleet/run.json +5 -0
  254. package/ide/jetbrains/.fleet/settings.json +4 -0
  255. package/ide/jetbrains/.idea/.gitignore +5 -0
  256. package/ide/jetbrains/.idea/inspectionProfiles/Project_Default.xml +6 -0
  257. package/ide/jetbrains/.idea/jsLibraryMappings.xml +6 -0
  258. package/ide/jetbrains/.idea/jsLinters/eslint.xml +7 -0
  259. package/ide/jetbrains/.idea/modules.xml +8 -0
  260. package/ide/jetbrains/.idea/stacks.iml +69 -0
  261. package/ide/jetbrains/.idea/vcs.xml +6 -0
  262. package/ide/jetbrains/.idea/webResources.xml +14 -0
  263. package/ide/jetbrains/.idea/workspace.xml +225 -0
  264. package/ide/jetbrains/IntelliJ IDEA Global Settings +0 -0
  265. package/ide/jetbrains/installed.txt +4 -0
  266. package/ide/jetbrains/options/github-copilot.xml +5 -0
  267. package/ide/jetbrains/options/nodejs.xml +7 -0
  268. package/ide/jetbrains/options/templates.xml +124 -0
  269. package/ide/jetbrains/templates/JavaScript.xml +6 -0
  270. package/ide/jetbrains/templates/Stacks.xml +8 -0
  271. package/ide/vscode/.vscode/README.md +23 -0
  272. package/ide/vscode/.vscode/extensions.json +5 -0
  273. package/ide/vscode/.vscode/settings.json +111 -0
  274. package/ide/vscode/.vscode/stacks.code-snippets +182 -0
  275. package/ide/vscode/README.md +42 -0
  276. package/ide/vscode/logo.png +0 -0
  277. package/ide/vscode/package.json +64 -0
  278. package/{components → libs/components}/vue/main.ts +1 -1
  279. package/{components → libs/components}/vue/package.json +1 -1
  280. package/{components → libs/components}/web/package.json +1 -1
  281. package/libs/examples/vue/App.vue +12 -0
  282. package/libs/examples/vue/favicon.png +0 -0
  283. package/libs/examples/vue/index.html +20 -0
  284. package/libs/examples/web/favicon.png +0 -0
  285. package/libs/examples/web/index.html +13 -0
  286. package/libs/functions/package.json +41 -0
  287. package/package.json +104 -98
  288. package/reset.d.ts +1 -0
  289. package/scripts/ensure.sh +33 -0
  290. package/scripts/publish.sh +18 -0
  291. package/scripts/setup.sh +540 -0
  292. package/stacks/dashboard/README.md +74 -0
  293. package/{core/domains → stacks/dashboard}/build.config.ts +1 -1
  294. package/stacks/dashboard/package.json +46 -0
  295. package/stacks/dashboard/src/index.ts +0 -0
  296. package/stacks/dashboard/tests/example.test.ts +7 -0
  297. package/stacks/tables/README.md +109 -0
  298. package/stacks/tables/build.config.ts +16 -0
  299. package/stacks/tables/examples/vue/App.vue +12 -0
  300. package/stacks/tables/examples/vue/favicon.png +0 -0
  301. package/stacks/tables/examples/vue/index.html +20 -0
  302. package/stacks/tables/examples/web/favicon.png +0 -0
  303. package/stacks/tables/examples/web/index.html +13 -0
  304. package/stacks/tables/index.html +13 -0
  305. package/stacks/tables/package.json +57 -0
  306. package/stacks/tables/src/App.vue +23 -0
  307. package/stacks/tables/src/components/Demo.vue +84 -0
  308. package/stacks/tables/src/components/README.md +110 -0
  309. package/stacks/tables/src/components/Table.vue +342 -0
  310. package/stacks/tables/src/components/TableBody.vue +32 -0
  311. package/stacks/tables/src/components/TableCellActionItems.vue +9 -0
  312. package/stacks/tables/src/components/TableFilters.vue +704 -0
  313. package/stacks/tables/src/components/TableHead.vue +60 -0
  314. package/stacks/tables/src/components/TablePagination.vue +131 -0
  315. package/stacks/tables/src/components/TableRow.vue +73 -0
  316. package/stacks/tables/src/components/TableSearch.vue +39 -0
  317. package/stacks/tables/src/components/Tooltip.vue +10 -0
  318. package/stacks/tables/src/config/tables.ts +1 -0
  319. package/stacks/tables/src/docs/index.md +0 -0
  320. package/stacks/tables/src/functions/README.md +8 -0
  321. package/stacks/tables/src/functions/dark.ts +3 -0
  322. package/stacks/tables/src/functions/index.ts +2 -0
  323. package/stacks/tables/src/functions/table.ts +207 -0
  324. package/stacks/tables/src/main.ts +4 -0
  325. package/stacks/tables/tests/example.test.ts +7 -0
  326. package/stacks/tables/vite.config.ts +26 -0
  327. package/stacks/tinker/package.json +48 -0
  328. package/stacks/tinker/src/index.ts +1 -0
  329. package/stacks/x-ray/README.md +55 -0
  330. package/stacks/x-ray/build.config.ts +15 -0
  331. package/stacks/x-ray/index.html +13 -0
  332. package/stacks/x-ray/package.json +55 -0
  333. package/stacks/x-ray/routes/index.ts +19 -0
  334. package/stacks/x-ray/src/client.ts +14 -0
  335. package/stacks/x-ray/src/desktop/api/nitro.config.ts +19 -0
  336. package/stacks/x-ray/src/desktop/api/routes/api/logs.ts +7 -0
  337. package/stacks/x-ray/src/desktop/api/routes/api/store-logs.ts +22 -0
  338. package/stacks/x-ray/src/desktop/api/src/types.ts +7 -0
  339. package/stacks/x-ray/src/desktop/api/storage/index.ts +7 -0
  340. package/stacks/x-ray/src/desktop/app.vue +377 -0
  341. package/stacks/x-ray/src/desktop/functions/http.ts +26 -0
  342. package/stacks/x-ray/src/desktop/functions/types.ts +7 -0
  343. package/stacks/x-ray/src/desktop/main.ts +14 -0
  344. package/stacks/x-ray/src/desktop/modules/counter/mod.vue +44 -0
  345. package/stacks/x-ray/src/desktop/modules/fetcher/mod.vue +63 -0
  346. package/stacks/x-ray/src/desktop/plugins/unified/unified-app.ts +5 -0
  347. package/stacks/x-ray/src/desktop/plugins/unified/unified-styles.scss +0 -0
  348. package/stacks/x-ray/src/desktop/services/http.ts +45 -0
  349. package/stacks/x-ray/src/desktop/styles/app.scss +0 -0
  350. package/stacks/x-ray/src/http.ts +26 -0
  351. package/stacks/x-ray/src/index.ts +42 -0
  352. package/stacks/x-ray/src/ray.config.ts +27 -0
  353. package/stacks/x-ray/src/types.ts +8 -0
  354. package/stacks/x-ray/tests/example.test.ts +7 -0
  355. package/stacks.d.ts +22 -0
  356. package/tsconfig.json +21 -12
  357. package/vcs/github/CODE_OF_CONDUCT.md +83 -0
  358. package/vcs/github/CONTRIBUTING.md +190 -0
  359. package/vcs/github/EXPLANATIONS.md +41 -0
  360. package/vcs/github/FUNDING.yml +1 -0
  361. package/vcs/github/ISSUE_TEMPLATE/bug_report.yml +62 -0
  362. package/vcs/github/ISSUE_TEMPLATE/config.yml +10 -0
  363. package/vcs/github/ISSUE_TEMPLATE/feature_request.yml +44 -0
  364. package/vcs/github/SECURITY.md +70 -0
  365. package/vcs/github/renovate.json +5 -0
  366. package/vcs/github/stale.yml +14 -0
  367. package/vcs/github/workflows/README.md +16 -0
  368. package/vcs/github/workflows/ci.yml +173 -0
  369. package/vcs/github/workflows/export-size.yml +32 -0
  370. package/vcs/github/workflows/release.yml +57 -0
  371. package/{pages → views}/desktop/src/Cargo.lock +363 -46
  372. package/{pages → views}/desktop/src/Cargo.toml +2 -2
  373. package/{pages → views}/web/main.ts +2 -2
  374. package/api/serverless.yml +0 -11
  375. package/core/actions/node_modules/.bin/markdown-it +0 -17
  376. package/core/actions/node_modules/.bin/unbuild +0 -17
  377. package/core/build/entries/README.md +0 -7
  378. package/core/build/node_modules/.bin/unbuild +0 -17
  379. package/core/build/node_modules/.bin/vite +0 -17
  380. package/core/build/node_modules/.bin/vite-ssg +0 -17
  381. package/core/build/node_modules/.bin/vue-docgen-web-types +0 -17
  382. package/core/desktop/node_modules/.bin/tauri +0 -17
  383. package/core/development/node_modules/.bin/tsc +0 -17
  384. package/core/development/node_modules/.bin/tsserver +0 -17
  385. package/core/development/node_modules/.bin/tsx +0 -17
  386. package/core/development/node_modules/.bin/unbuild +0 -17
  387. package/core/docs/node_modules/.bin/vitepress +0 -17
  388. package/core/email/node_modules/.bin/maizzle +0 -17
  389. package/core/git/node_modules/.bin/bumpp +0 -17
  390. package/core/git/node_modules/.bin/changelogen +0 -17
  391. package/core/git/node_modules/.bin/commitizen +0 -17
  392. package/core/git/node_modules/.bin/cz +0 -17
  393. package/core/git/node_modules/.bin/giget +0 -17
  394. package/core/git/node_modules/.bin/git-cz +0 -17
  395. package/core/git/node_modules/.bin/simple-git-hooks +0 -17
  396. package/core/lint/node_modules/.bin/eslint +0 -17
  397. package/core/lint/node_modules/.bin/lint-staged +0 -17
  398. package/core/lint/node_modules/.bin/publint +0 -17
  399. package/core/logging/node_modules/.bin/tsc +0 -17
  400. package/core/logging/node_modules/.bin/tsserver +0 -17
  401. package/core/logging/node_modules/.bin/tsx +0 -17
  402. package/core/logging/node_modules/.bin/unbuild +0 -17
  403. package/core/notifications/node_modules/.bin/maizzle +0 -17
  404. package/core/server/node_modules/.bin/nitro +0 -17
  405. package/core/server/node_modules/.bin/nitropack +0 -17
  406. package/core/server/node_modules/.bin/vite +0 -17
  407. package/core/testing/node_modules/.bin/playwright +0 -17
  408. package/core/testing/node_modules/.bin/tsc +0 -17
  409. package/core/testing/node_modules/.bin/tsserver +0 -17
  410. package/core/testing/node_modules/.bin/unbuild +0 -17
  411. package/core/testing/node_modules/.bin/vitest +0 -17
  412. package/core/tinker/node_modules/.bin/tsx +0 -17
  413. package/core/types/node_modules/.bin/markdown-it +0 -17
  414. package/core/types/node_modules/.bin/vite +0 -17
  415. package/core/types/node_modules/.bin/vite-ssg +0 -17
  416. package/core/types/node_modules/.bin/vitepress +0 -17
  417. package/core/types/src/markdown.ts +0 -198
  418. package/core/ui/node_modules/.bin/vue-tsc +0 -17
  419. package/core/utils/node_modules/.bin/rimraf +0 -17
  420. package/core/utils/node_modules/.bin/semver +0 -17
  421. package/docs/node_modules/.bin/rimraf +0 -17
  422. package/docs/node_modules/.bin/vitepress +0 -17
  423. /package/core/{domains → dns}/tests/example.test.ts +0 -0
  424. /package/{LICENSE.md → ide/vscode/LICENSE.md} +0 -0
  425. /package/{components → libs/components}/vue/index.html +0 -0
  426. /package/{core/domains/src → stacks/tables/src/cli}/index.ts +0 -0
  427. /package/{pages → views}/desktop/.gitignore +0 -0
  428. /package/{pages → views}/desktop/README.md +0 -0
  429. /package/{pages → views}/desktop/index.html +0 -0
  430. /package/{pages → views}/desktop/package.json +0 -0
  431. /package/{pages → views}/desktop/public/favicon.svg +0 -0
  432. /package/{pages → views}/desktop/src/.gitignore +0 -0
  433. /package/{pages → views}/desktop/src/build.rs +0 -0
  434. /package/{pages → views}/desktop/src/icons/128x128.png +0 -0
  435. /package/{pages → views}/desktop/src/icons/128x128@2x.png +0 -0
  436. /package/{pages → views}/desktop/src/icons/32x32.png +0 -0
  437. /package/{pages → views}/desktop/src/icons/Square107x107Logo.png +0 -0
  438. /package/{pages → views}/desktop/src/icons/Square142x142Logo.png +0 -0
  439. /package/{pages → views}/desktop/src/icons/Square150x150Logo.png +0 -0
  440. /package/{pages → views}/desktop/src/icons/Square284x284Logo.png +0 -0
  441. /package/{pages → views}/desktop/src/icons/Square30x30Logo.png +0 -0
  442. /package/{pages → views}/desktop/src/icons/Square310x310Logo.png +0 -0
  443. /package/{pages → views}/desktop/src/icons/Square44x44Logo.png +0 -0
  444. /package/{pages → views}/desktop/src/icons/Square71x71Logo.png +0 -0
  445. /package/{pages → views}/desktop/src/icons/Square89x89Logo.png +0 -0
  446. /package/{pages → views}/desktop/src/icons/StoreLogo.png +0 -0
  447. /package/{pages → views}/desktop/src/icons/icon.icns +0 -0
  448. /package/{pages → views}/desktop/src/icons/icon.ico +0 -0
  449. /package/{pages → views}/desktop/src/icons/icon.png +0 -0
  450. /package/{pages → views}/desktop/src/src/main.rs +0 -0
  451. /package/{pages → views}/desktop/src/tauri.conf.json +0 -0
  452. /package/{pages → views}/web/App.vue +0 -0
  453. /package/{pages → views}/web/index.html +0 -0
  454. /package/{pages → views}/web/public/_headers +0 -0
  455. /package/{pages → views}/web/public/favicon-dark.svg +0 -0
  456. /package/{pages → views}/web/public/favicon.svg +0 -0
  457. /package/{pages → views}/web/public/pwa-192x192.png +0 -0
  458. /package/{pages → views}/web/public/pwa-512x512.png +0 -0
  459. /package/{pages → views}/web/public/safari-pinned-tab.svg +0 -0
  460. /package/{pages → views}/web/styles/main.css +0 -0
  461. /package/{pages → views}/web/styles/markdown.css +0 -0
@@ -1,257 +1,110 @@
1
1
  import { getTypeName, toString } from '@stacksjs/utils'
2
- import validator from 'validator'
3
- import type { HashAlgorithm } from '@stacksjs/types'
4
-
5
- export function isEmail(email: string) {
6
- return validator.isEmail(email)
7
- }
8
-
9
- export function isStrongPassword(password: string) {
10
- return validator.isStrongPassword(password)
11
- }
12
-
13
- export function isAlphanumeric(username: string) {
14
- return validator.isAlphanumeric(username)
15
- }
16
-
17
- export function validateUsername(username: string) {
18
- return isAlphanumeric(username)
19
- }
20
-
21
- export function isURL(url: string) {
22
- return validator.isURL(url)
23
- }
24
-
25
- export function isMobilePhone(phoneNumber: string) {
26
- return validator.isMobilePhone(phoneNumber)
27
- }
28
-
29
- export function isAlpha(name: string) {
30
- return validator.isAlpha(name)
31
- }
32
-
33
- export function isPostalCode(zipCode: string) {
34
- return validator.isPostalCode(zipCode, 'any')
35
- }
36
-
37
- export function isNumeric(number: string) {
38
- return validator.isNumeric(number)
39
- }
40
-
41
- export function isHexColor(color: string) {
42
- return validator.isHexColor(color)
43
- }
44
-
45
- export function isHexadecimal(hex: string) {
46
- return validator.isHexadecimal(hex)
47
- }
48
-
49
- export function isBase64(base64: string) {
50
- return validator.isBase64(base64)
51
- }
52
-
53
- export function isUUID(uuid: string) {
54
- return validator.isUUID(uuid)
55
- }
56
-
57
- export function isJSON(json: string) {
58
- return validator.isJSON(json)
59
- }
60
-
61
- export function isCreditCard(creditCard: string) {
62
- return validator.isCreditCard(creditCard)
63
- }
64
-
65
- export function isISBN(isbn: string) {
66
- return validator.isISBN(isbn)
67
- }
68
-
69
- export function isIP(ip: string) {
70
- return validator.isIP(ip)
71
- }
72
-
73
- export function isIPRange(ip: string) {
74
- return validator.isIPRange(ip)
75
- }
76
-
77
- export function isMACAddress(macAddress: string) {
78
- return validator.isMACAddress(macAddress)
79
- }
80
-
81
- export function isLatLong(latitude: string) {
82
- return validator.isLatLong(latitude)
83
- }
84
-
85
- export function isLatitude(longitude: string) {
86
- return validator.isLatLong(longitude)
87
- }
88
-
89
- export function isLongitude(longitude: string) {
90
- return validator.isLatLong(longitude)
91
- }
92
-
93
- export function isCurrency(currency: string) {
94
- return validator.isCurrency(currency)
95
- }
96
-
97
- export function isDataURI(dataURI: string) {
98
- return validator.isDataURI(dataURI)
99
- }
100
-
101
- export function isMimeType(mimeType: string) {
102
- return validator.isMimeType(mimeType)
103
- }
104
-
105
- export function isJWT(jwt: string) {
106
- return validator.isJWT(jwt)
107
- }
108
-
109
- export function isMongoId(mongoId: string) {
110
- return validator.isMongoId(mongoId)
111
- }
112
-
113
- export function isAscii(ascii: string) {
114
- return validator.isAscii(ascii)
115
- }
116
-
117
- export function isBase32(base32: string) {
118
- return validator.isBase32(base32)
119
- }
120
-
121
- export function isByteLength(byteLength: string) {
122
- return validator.isByteLength(byteLength)
123
- }
124
-
125
- export function isFQDN(fqdn: string) {
126
- return validator.isFQDN(fqdn)
127
- }
128
-
129
- export function isFullWidth(fullWidth: string) {
130
- return validator.isFullWidth(fullWidth)
131
- }
132
-
133
- export function isHalfWidth(halfWidth: string) {
134
- return validator.isHalfWidth(halfWidth)
135
- }
136
-
137
- export function isHash(hash: string, algorithm: HashAlgorithm) {
138
- return validator.isHash(hash, algorithm)
139
- }
140
-
141
- export function isHSL(hsl: string) {
142
- return validator.isHSL(hsl)
143
- }
144
-
145
- export function isIBAN(iban: string) {
146
- return validator.isIBAN(iban)
147
- }
148
-
149
- export function isIdentityCard(identityCard: string) {
150
- return validator.isIdentityCard(identityCard)
151
- }
152
-
153
- export function isISIN(isin: string) {
154
- return validator.isISIN(isin)
155
- }
156
-
157
- export function isISO8601(iso8601: string) {
158
- return validator.isISO8601(iso8601)
159
- }
160
-
161
- export function isISRC(isrc: string) {
162
- return validator.isISRC(isrc)
163
- }
164
-
165
- export function isISSN(issn: string) {
166
- return validator.isISSN(issn)
167
- }
168
-
169
- export function isISO31661Alpha2(iso31661Alpha2: string) {
170
- return validator.isISO31661Alpha2(iso31661Alpha2)
171
- }
172
-
173
- export function isISO31661Alpha3(iso31661Alpha3: string) {
174
- return validator.isISO31661Alpha3(iso31661Alpha3)
175
- }
176
2
 
177
3
  export function isDef<T = any>(val?: T): val is T {
178
4
  return typeof val !== 'undefined'
179
5
  }
6
+
180
7
  export function isBoolean(val: any): val is boolean {
181
8
  return typeof val === 'boolean'
182
9
  }
10
+
183
11
  export function isFunction<T extends Function>(val: any): val is T {
184
12
  return typeof val === 'function'
185
13
  }
14
+
186
15
  export function isNumber(val: any): val is number {
187
16
  return typeof val === 'number'
188
17
  }
18
+
189
19
  export function isString(val: unknown): val is string {
190
20
  return typeof val === 'string'
191
21
  }
22
+
192
23
  export function isObject(val: any): val is object {
193
24
  return toString(val) === '[object Object]'
194
25
  }
26
+
195
27
  export function isWindow(val: any): boolean {
196
28
  return typeof window !== 'undefined' && toString(val) === '[object Window]'
197
29
  }
30
+
198
31
  export const isBrowser = typeof window !== 'undefined'
32
+
199
33
  export const isServer = typeof document === 'undefined' // https://remix.run/docs/en/v1/pages/gotchas#typeof-window-checks
34
+
200
35
  export function isMap(val: any): val is Map<any, any> {
201
36
  return toString(val) === '[object Map]'
202
37
  }
38
+
203
39
  export function isSet(val: any): val is Set<any> {
204
40
  return toString(val) === '[object Set]'
205
41
  }
42
+
206
43
  export function isPromise<T = any>(val: any): val is Promise<T> {
207
44
  return toString(val) === '[object Promise]'
208
45
  }
46
+
209
47
  export function isUndefined(v: any) {
210
48
  return getTypeName(v) === 'undefined'
211
49
  }
50
+
212
51
  export function isNull(v: any) {
213
52
  return getTypeName(v) === 'null'
214
53
  }
54
+
215
55
  export function isSymbol(v: any) {
216
56
  return getTypeName(v) === 'symbol'
217
57
  }
58
+
218
59
  export function isDate(v: any) {
219
60
  return getTypeName(v) === 'date'
220
61
  }
62
+
221
63
  export function isRegExp(v: any) {
222
64
  return getTypeName(v) === 'regexp'
223
65
  }
66
+
224
67
  export function isArray(v: any) {
225
68
  return getTypeName(v) === 'array'
226
69
  }
70
+
227
71
  export function isPrimitive(v: any) {
228
72
  const type = getTypeName(v)
229
73
  return type === 'null' || type === 'undefined' || type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol'
230
74
  }
75
+
231
76
  export function isInteger(v: any) {
232
77
  return isNumber(v) && Number.isInteger(v)
233
78
  }
79
+
234
80
  export function isFloat(v: any) {
235
81
  return isNumber(v) && !Number.isInteger(v)
236
82
  }
83
+
237
84
  export function isPositive(v: any) {
238
85
  return isNumber(v) && v > 0
239
86
  }
87
+
240
88
  export function isNegative(v: any) {
241
89
  return isNumber(v) && v < 0
242
90
  }
91
+
243
92
  export function isEven(v: any) {
244
93
  return isNumber(v) && v % 2 === 0
245
94
  }
95
+
246
96
  export function isOdd(v: any) {
247
97
  return isNumber(v) && v % 2 !== 0
248
98
  }
99
+
249
100
  export function isEvenOrOdd(v: any) {
250
101
  return isNumber(v) && (v % 2 === 0 ? 'even' : 'odd')
251
102
  }
103
+
252
104
  export function isPositiveOrNegative(v: any) {
253
105
  return isNumber(v) && (v > 0 ? 'positive' : 'negative')
254
106
  }
107
+
255
108
  export function isIntegerOrFloat(v: any) {
256
109
  return isNumber(v) && (Number.isInteger(v) ? 'integer' : 'float')
257
110
  }
@@ -0,0 +1,126 @@
1
+ import { USD, currency } from '@stacksjs/utils'
2
+ import { validator } from './validate'
3
+
4
+ /**
5
+ * Thanks to VineJS for the following types:
6
+ *
7
+ * The context shared with the entire validation pipeline.
8
+ * Each field gets its own context object.
9
+ */
10
+ export interface FieldContext {
11
+ /**
12
+ * Field value
13
+ */
14
+ value: unknown
15
+
16
+ /**
17
+ * The data property is the top-level object under validation.
18
+ */
19
+ data: any
20
+
21
+ /**
22
+ * Shared metadata across the entire validation lifecycle. It can be
23
+ * used to pass data between validation rules
24
+ */
25
+ meta: Record<string, any>
26
+
27
+ /**
28
+ * Mutate the value of field under validation.
29
+ */
30
+ mutate(newValue: any, field: FieldContext): void
31
+
32
+ /**
33
+ * Report error to the error reporter
34
+ */
35
+ report: ErrorReporterContract['report']
36
+
37
+ /**
38
+ * Is this field valid. Default: true
39
+ */
40
+ isValid: boolean
41
+
42
+ /**
43
+ * Is this field has value defined.
44
+ */
45
+ isDefined: boolean
46
+
47
+ /**
48
+ * Wildcard path for the field. The value is a nested
49
+ * pointer to the field under validation.
50
+ *
51
+ * In case of arrays, the `*` wildcard is used.
52
+ */
53
+ wildCardPath: string
54
+
55
+ /**
56
+ * The parent property is the parent of the field. It could be an
57
+ * array or an object.
58
+ */
59
+ parent: any
60
+
61
+ /**
62
+ * Name of the field under validation. In case of an array, the field
63
+ * name will be a number
64
+ */
65
+ name: string | number
66
+
67
+ /**
68
+ * Is this field an array member
69
+ */
70
+ isArrayMember: boolean
71
+ }
72
+
73
+ /**
74
+ * Thanks to VineJS for the following types:
75
+ *
76
+ * The error reporter is used to report errors during the validation
77
+ * process.
78
+ */
79
+ export interface ErrorReporterContract {
80
+ /**
81
+ * A boolean to known if there are one or more
82
+ * errors.
83
+ */
84
+ hasErrors: boolean
85
+
86
+ /**
87
+ * Creates an instance of an exception to throw
88
+ */
89
+ createError(): Error
90
+
91
+ /**
92
+ * Report error for a field
93
+ */
94
+ report(message: string, rule: string, field: FieldContext, args?: Record<string, any>): any
95
+ }
96
+
97
+ // export const isMoney = validator.createRule((value: unknown, _, field: FieldContext) => {
98
+ export const isMoney = validator.createRule((value: unknown, _, field: FieldContext) => {
99
+ /**
100
+ * Convert string representation of a number to a JavaScript
101
+ * Number data type.
102
+ */
103
+ const numericValue = validator.helpers.asNumber(value)
104
+
105
+ /**
106
+ * Report error, if the value is NaN post-conversion
107
+ */
108
+ if (Number.isNaN(numericValue)) {
109
+ field.report(
110
+ 'The {{ field }} field value must be a number',
111
+ 'money',
112
+ field,
113
+ )
114
+ return
115
+ }
116
+
117
+ /**
118
+ * Create amount type
119
+ */
120
+ const amount = currency({ amount: numericValue, currency: USD })
121
+
122
+ /**
123
+ * Mutate the field's value
124
+ */
125
+ field.mutate(amount, field)
126
+ }) as any
@@ -0,0 +1,147 @@
1
+ import process from 'node:process'
2
+ import type { VineObject } from '@vinejs/vine'
3
+ import validator from '@vinejs/vine'
4
+ import type { Infer } from '@vinejs/vine/build/src/types'
5
+ import { loadEnv } from 'vite'
6
+ import { projectPath } from '@stacksjs/path'
7
+
8
+ // TODO: envSchema needs to be auto generated from the .env file
9
+ // envSchema could also be named "backendEnvSchema"
10
+ const envSchema = validator.object({
11
+ APP_NAME: validator.string().optional(),
12
+ APP_ENV: validator.enum(['local', 'development', 'staging', 'production']).optional(),
13
+ APP_KEY: validator.string().optional(),
14
+ APP_URL: validator.string(),
15
+ APP_DEBUG: validator.boolean().optional(),
16
+ APP_SUBDOMAIN_API: validator.string().optional(),
17
+ APP_SUBDOMAIN_DOCS: validator.string().optional(),
18
+ APP_SUBDOMAIN_LIBRARY: validator.string().optional(),
19
+ APP_BUCKET: validator.string().optional(),
20
+
21
+ DB_CONNECTION: validator.string().optional(),
22
+ DB_HOST: validator.string().optional(),
23
+ DB_PORT: validator.number().optional(),
24
+ DB_DATABASE: validator.string().optional(),
25
+ DB_USERNAME: validator.string().optional(),
26
+ DB_PASSWORD: validator.string().optional(),
27
+
28
+ SEARCH_ENGINE_DRIVER: validator.string().optional(),
29
+ MEILISEARCH_HOST: validator.string().optional(),
30
+ MEILISEARCH_KEY: validator.string().optional(),
31
+
32
+ CACHE_DRIVER: validator.enum(['dynamodb', 'memcached', 'redis']).optional(),
33
+ CACHE_PREFIX: validator.string().optional(),
34
+ CACHE_TTL: validator.number().optional(),
35
+
36
+ AWS_ACCESS_KEY_ID: validator.string().optional(),
37
+ AWS_SECRET_ACCESS_KEY: validator.string().optional(),
38
+ AWS_DEFAULT_REGION: validator.string().optional(),
39
+ DYNAMODB_CACHE_TABLE: validator.string().optional(),
40
+ DYNAMODB_ENDPOINT: validator.string().optional(),
41
+
42
+ MEMCACHED_PERSISTENT_ID: validator.string().optional(),
43
+ MEMCACHED_USERNAME: validator.string().optional(),
44
+ MEMCACHED_PASSWORD: validator.string().optional(),
45
+ MEMCACHED_HOST: validator.string().optional(),
46
+ MEMCACHED_PORT: validator.number().optional(),
47
+
48
+ REDIS_HOST: validator.string().optional(),
49
+ REDIS_PORT: validator.number().optional(),
50
+
51
+ MAIL_FROM_NAME: validator.string().optional(),
52
+ MAIL_FROM_ADDRESS: validator.string().optional(),
53
+
54
+ EMAILJS_HOST: validator.string().optional(),
55
+ EMAILJS_USERNAME: validator.string().optional(),
56
+ EMAILJS_PASSWORD: validator.string().optional(),
57
+ EMAILJS_PORT: validator.number().optional(),
58
+ EMAILJS_SECURE: validator.boolean().optional(),
59
+
60
+ MAILGUN_API_KEY: validator.string().optional(),
61
+ MAILGUN_DOMAIN: validator.string().optional(),
62
+ MAILGUN_USERNAME: validator.string().optional(),
63
+
64
+ MAILJET_API_KEY: validator.string().optional(),
65
+ MAILJET_API_SECRET: validator.string().optional(),
66
+
67
+ MANDRILL_API_KEY: validator.string().optional(),
68
+
69
+ NETCORE_API_KEY: validator.string().optional(),
70
+
71
+ NODEMAILER_HOST: validator.string().optional(),
72
+ NODEMAILER_USERNAME: validator.string().optional(),
73
+ NODEMAILER_PASSWORD: validator.string().optional(),
74
+ NODEMAILER_PORT: validator.number().optional(),
75
+ NODEMAILER_SECURE: validator.boolean().optional(),
76
+
77
+ POSTMARK_API_TOKEN: validator.string().optional(),
78
+ POSTMARK_API_KEY: validator.string().optional(),
79
+
80
+ SENDGRID_API_KEY: validator.string().optional(),
81
+ SENDGRID_SENDER_NAME: validator.string().optional(),
82
+
83
+ SES_API_VERSION: validator.string().optional(),
84
+ SES_ACCESS_KEY_ID: validator.string().optional(),
85
+ SES_SECRET_ACCESS_KEY: validator.string().optional(),
86
+ SES_REGION: validator.string().optional(),
87
+
88
+ FROM_PHONE_NUMBER: validator.string().optional(),
89
+ TWILIO_ACCOUNT_SID: validator.string().optional(),
90
+ TWILIO_AUTH_TOKEN: validator.string().optional(),
91
+
92
+ VONAGE_API_KEY: validator.string().optional(),
93
+ VONAGE_API_SECRET: validator.string().optional(),
94
+
95
+ GUPSHUP_USER_ID: validator.string().optional(),
96
+ GUPSHUP_PASSWORD: validator.string().optional(),
97
+
98
+ PLIVO_ACCOUNT_ID: validator.string().optional(),
99
+ PLIVO_AUTH_TOKEN: validator.string().optional(),
100
+
101
+ SMS77_API_KEY: validator.string().optional(),
102
+
103
+ SNS_REGION: validator.string().optional(),
104
+ SNS_ACCESS_KEY_ID: validator.string().optional(),
105
+ SNS_SECRET_ACCESS_KEY: validator.string().optional(),
106
+
107
+ TELNYX_API_KEY: validator.string().optional(),
108
+ TELNYX_MESSAGE_PROFILE_ID: validator.string().optional(),
109
+
110
+ TERMII_API_KEY: validator.string().optional(),
111
+
112
+ SLACK_FROM: validator.string().optional(),
113
+ SLACK_APPLICATION_ID: validator.string().optional(),
114
+ SLACK_CLIENT_ID: validator.string().optional(),
115
+ SLACK_SECRET_KEY: validator.string().optional(),
116
+
117
+ MICROSOFT_TEAMS_APPLICATION_ID: validator.string().optional(),
118
+ MICROSOFT_TEAMS_CLIENT_ID: validator.string().optional(),
119
+ MICROSOFT_TEAMS_SECRET: validator.string().optional(),
120
+ }) as VineObject<any, any, any>
121
+
122
+ const frontendEnvSchema = validator.object({
123
+ FRONTEND_APP_ENV: validator.enum(['local', 'development', 'staging', 'production']).optional(),
124
+ FRONTEND_APP_URL: validator.string().optional(),
125
+ }) as VineObject<any, any, any>
126
+
127
+ export type Env = Infer<typeof envSchema>
128
+ export type EnvKeys = keyof Env
129
+
130
+ export type FrontendEnv = Infer<typeof frontendEnvSchema>
131
+ export type FrontendEnvKeys = keyof FrontendEnv
132
+
133
+ export const env = process.env as Env
134
+ export async function getEnv() {
135
+ try {
136
+ const mode = process.env.NODE_ENV ?? 'development'
137
+ const data = loadEnv(mode, projectPath(), '')
138
+ const v = validator.compile(envSchema)
139
+
140
+ return v.validate(data)
141
+ }
142
+ catch (error: any) {
143
+ handleError(error)
144
+ }
145
+ }
146
+
147
+ export { loadEnv }
@@ -0,0 +1,2 @@
1
+ export * from './env'
2
+ export * from './money'
@@ -0,0 +1,17 @@
1
+ import type { FieldOptions, Validation } from '@vinejs/vine/build/src/types'
2
+ import type { Money } from '@stacksjs/types'
3
+ import { BaseLiteralType } from '@vinejs/vine'
4
+ import { isMoney } from '../rules'
5
+
6
+ export class MoneyValidator extends BaseLiteralType<Money, Money> {
7
+ constructor(options?: FieldOptions, validations?: Validation<any>[]) {
8
+ super(options, validations || [isMoney()])
9
+ }
10
+
11
+ clone() {
12
+ return new MoneyValidator(
13
+ this.cloneOptions(),
14
+ this.cloneValidations(),
15
+ ) as this
16
+ }
17
+ }
@@ -1,29 +1,18 @@
1
- import { z as validate, z } from 'zod'
1
+ import type { VineString as ValidationString } from '@vinejs/vine'
2
+ import validator, { Vine as Validator } from '@vinejs/vine'
3
+ import { MoneyValidator } from './types/money'
2
4
 
3
- export const envVariables = validate.object({
4
- APP_NAME: validate.string().default('Stacks').optional(),
5
- APP_ENV: validate.string().default('local').optional(),
6
- APP_KEY: validate.string(),
7
- APP_URL: validate.string().url().default('http://localhost:3333'),
8
- APP_DEBUG: validate.boolean().default(true),
9
- DB_CONNECTION: validate.string().default('mysql').optional(),
10
- DB_DATABASE: validate.string().default('stacks').optional(),
11
- DB_USERNAME: validate.string().default('root').optional(),
12
- DB_PASSWORD: validate.string().optional(),
13
- SEARCH_ENGINE_DRIVER: validate.string().optional(),
14
- MEILISEARCH_HOST: validate.string().optional().default('http://127.0.0.1:7700'),
15
- MEILISEARCH_KEY: validate.string().optional(),
5
+ Validator.macro('money', () => {
6
+ return new MoneyValidator()
16
7
  })
17
8
 
18
- export type StacksEnv = validate.infer<typeof envVariables>
9
+ const validate: Validator = validator
10
+ const string: ValidationString = validator.string()
11
+ const number: Validator['number'] = validator.number
12
+ const boolean: Validator['boolean'] = validator.boolean
13
+ const array: Validator['array'] = validator.array
14
+ const object: Validator['object'] = validator.object
15
+ const any: Validator['any'] = validator.any
16
+ // const email = () => validator.string().email()
19
17
 
20
- export enum Type {
21
- String = 'String',
22
- Number = 'Number',
23
- Boolean = 'Boolean',
24
- Date = 'Date',
25
- Object = 'Object',
26
- Array = 'Array',
27
- }
28
-
29
- export { validate, z }
18
+ export { validate, validator, Validator, string, number, boolean, array, object, any }
@@ -0,0 +1,59 @@
1
+ # Vite Plugin Stacks
2
+
3
+ This package contains the Stacks Vite plugin.
4
+
5
+ ## ☘️ Features
6
+
7
+ wip
8
+
9
+ - ⚡️
10
+
11
+ wip
12
+
13
+ ## 🤖 Usage
14
+
15
+ wip
16
+
17
+ ```bash
18
+ pnpm i -D @stacksjs/vite-plugin
19
+ ```
20
+
21
+ Now, you can use it in your project:
22
+
23
+ ```js
24
+ import vitePlugin from '@stacksjs/vite-plugin'
25
+
26
+ // wip
27
+ ```
28
+
29
+ Learn more in the docs.
30
+
31
+ ## 🧪 Testing
32
+
33
+ ```bash
34
+ pnpm test
35
+ ```
36
+
37
+ ## 📈 Changelog
38
+
39
+ Please see our [releases](https://github.com/stacksjs/stacks/releases) page for more information on what has changed recently.
40
+
41
+ ## 🚜 Contributing
42
+
43
+ Please review the [Contributing Guide](https://github.com/stacksjs/contributing) for details.
44
+
45
+ ## 🏝 Community
46
+
47
+ For help, discussion about best practices, or any other conversation that would benefit from being searchable:
48
+
49
+ [Discussions on GitHub](https://github.com/stacksjs/stacks/discussions)
50
+
51
+ For casual chit-chat with others using this package:
52
+
53
+ [Join the Stacks Discord Server](https://discord.ow3.org)
54
+
55
+ ## 📄 License
56
+
57
+ The MIT License (MIT). Please see [LICENSE](https://github.com/stacksjs/stacks/tree/main/LICENSE.md) for more information.
58
+
59
+ Made with ❤️
@@ -0,0 +1,21 @@
1
+ import { alias, defineBuildConfig } from '@stacksjs/development'
2
+
3
+ export default defineBuildConfig({
4
+ alias,
5
+
6
+ entries: [
7
+ './src/index',
8
+ ],
9
+
10
+ externals: [
11
+ 'vite',
12
+ 'vitepress',
13
+ ],
14
+
15
+ rollup: {
16
+ inlineDependencies: true,
17
+ },
18
+
19
+ clean: true,
20
+ declaration: true,
21
+ })