stacks 0.52.10 → 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 (492) hide show
  1. package/.gitignore +4 -2
  2. package/README.md +71 -74
  3. package/api/nitro.config.ts +2 -2
  4. package/api/package.json +3 -2
  5. package/api/routes/index.ts +1 -1
  6. package/art/logo-dark.svg +11 -0
  7. package/art/logo.svg +11 -0
  8. package/auto-imports.d.ts +1186 -839
  9. package/components.d.ts +7 -9
  10. package/core/actions/build.config.ts +181 -9
  11. package/core/actions/package.json +6 -12
  12. package/core/actions/src/build/component-libs.ts +2 -12
  13. package/core/actions/src/clean.ts +1 -1
  14. package/core/actions/src/dev/index.ts +6 -14
  15. package/core/actions/src/generate/index.ts +2 -2
  16. package/core/actions/src/generate/settings.ts +3 -3
  17. package/core/actions/src/helpers/lib-entries.ts +47 -40
  18. package/core/actions/src/helpers/utils.ts +7 -9
  19. package/core/actions/src/lint/index.ts +14 -2
  20. package/core/actions/src/make.ts +8 -5
  21. package/core/actions/src/migrate.ts +2 -2
  22. package/core/actions/src/prepublish.ts +2 -2
  23. package/core/actions/src/release.ts +5 -3
  24. package/core/actions/src/seed.ts +1 -1
  25. package/core/actions/src/upgrade/framework.ts +29 -29
  26. package/core/actions/src/upgrade/index.ts +13 -15
  27. package/core/actions/src/upgrade/node.ts +4 -4
  28. package/core/actions/src/upgrade/package-manager.ts +4 -4
  29. package/core/actions/src/upgrade.ts +3 -3
  30. package/core/ai/build.config.ts +5 -7
  31. package/core/ai/package.json +5 -9
  32. package/core/alias/build.config.ts +5 -7
  33. package/core/alias/package.json +3 -6
  34. package/core/alias/src/index.ts +6 -7
  35. package/core/analytics/build.config.ts +5 -7
  36. package/core/analytics/package.json +6 -6
  37. package/core/arrays/build.config.ts +4 -7
  38. package/core/arrays/package.json +8 -4
  39. package/core/arrays/src/contains.ts +23 -0
  40. package/core/arrays/src/helpers.ts +206 -0
  41. package/core/arrays/src/index.ts +4 -226
  42. package/core/arrays/src/macro.ts +135 -0
  43. package/core/arrays/src/math.ts +19 -0
  44. package/core/auth/build.config.ts +4 -7
  45. package/core/auth/package.json +3 -3
  46. package/core/buddy/README.md +73 -76
  47. package/core/buddy/build.config.ts +1 -2
  48. package/core/buddy/package.json +4 -4
  49. package/core/buddy/src/cli.ts +12 -43
  50. package/core/buddy/src/commands/add.ts +2 -2
  51. package/core/buddy/src/commands/build.ts +23 -16
  52. package/core/buddy/src/commands/create.ts +2 -2
  53. package/core/buddy/src/commands/dev.ts +31 -30
  54. package/core/buddy/src/commands/example.ts +8 -14
  55. package/core/buddy/src/commands/fresh.ts +1 -1
  56. package/core/buddy/src/commands/generate.ts +16 -14
  57. package/core/buddy/src/commands/key.ts +1 -1
  58. package/core/buddy/src/commands/lint.ts +5 -5
  59. package/core/buddy/src/commands/make.ts +20 -15
  60. package/core/buddy/src/commands/onboarding.ts +9 -15
  61. package/core/buddy/src/commands/setting.ts +10 -12
  62. package/core/buddy/src/commands/upgrade.ts +18 -22
  63. package/core/buddy/src/commands/version.ts +7 -19
  64. package/core/buddy/src/index.ts +0 -21
  65. package/core/build/build.config.ts +22 -7
  66. package/core/build/package.json +11 -10
  67. package/core/build/src/desktop.ts +2 -2
  68. package/core/build/src/example-vue.ts +5 -4
  69. package/core/build/src/example-wc.ts +5 -4
  70. package/core/build/src/functions.ts +11 -13
  71. package/core/build/src/index.ts +7 -7
  72. package/core/build/src/stacks.ts +31 -53
  73. package/core/build/src/{pages.ts → views.ts} +13 -14
  74. package/core/build/src/vue-components.ts +73 -12
  75. package/core/build/src/web-components.ts +13 -12
  76. package/core/build/web-types.ts +3 -3
  77. package/core/cache/build.config.ts +7 -7
  78. package/core/cache/package.json +17 -17
  79. package/core/cache/src/drivers/redis.ts +2 -2
  80. package/core/cache/tests/DynamoDB.test.ts +19 -33
  81. package/core/chat/build.config.ts +5 -7
  82. package/core/chat/package.json +8 -8
  83. package/core/cli/build.config.ts +3 -2
  84. package/core/cli/package.json +3 -3
  85. package/core/cli/src/console.ts +75 -2
  86. package/core/cli/src/helpers.ts +1 -1
  87. package/core/cli/src/parse.ts +2 -2
  88. package/core/cli/src/run.ts +6 -7
  89. package/core/cloud/build.config.ts +4 -7
  90. package/core/cloud/package.json +17 -3
  91. package/core/cloud/src/aws/index.ts +9 -0
  92. package/core/cloud/src/aws/logger.ts +8 -0
  93. package/core/cloud/src/aws/metrics.ts +8 -0
  94. package/core/cloud/src/aws/stack.ts +12 -0
  95. package/core/cloud/src/aws/tracer.ts +3 -0
  96. package/core/cloud/src/index.ts +1 -1
  97. package/core/cloud/src/runtime/nodejs/bootstrap.ts +16 -0
  98. package/core/cloud/src/runtime/nodejs/build.sh +1 -0
  99. package/core/collections/build.config.ts +3 -7
  100. package/core/collections/package.json +3 -3
  101. package/core/config/build.config.ts +33 -33
  102. package/core/config/package.json +4 -4
  103. package/core/config/src/defaults.ts +0 -3
  104. package/core/config/src/stacks.ts +10 -11
  105. package/core/database/build.config.ts +1 -2
  106. package/core/database/package.json +3 -3
  107. package/core/database/src/factory/index.ts +2 -2
  108. package/core/database/src/migrations/index.ts +3 -3
  109. package/core/datetime/build.config.ts +1 -2
  110. package/core/datetime/package.json +3 -3
  111. package/core/datetime/src/index.ts +2 -1
  112. package/core/desktop/build.config.ts +2 -1
  113. package/core/desktop/package.json +6 -6
  114. package/core/development/build.config.ts +15 -8
  115. package/core/development/package.json +11 -5
  116. package/core/development/src/index.ts +2 -0
  117. package/core/{domains → dns}/README.md +2 -2
  118. package/core/dns/build.config.ts +22 -0
  119. package/core/{domains → dns}/package.json +13 -9
  120. package/core/dns/src/index.ts +18 -0
  121. package/core/docs/build.config.ts +1 -2
  122. package/core/docs/package.json +4 -4
  123. package/core/email/build.config.ts +1 -2
  124. package/core/email/package.json +15 -15
  125. package/core/email/src/actions/send.ts +2 -0
  126. package/core/email/src/drivers/emailjs.ts +1 -1
  127. package/core/email/src/drivers/mailgun.ts +1 -1
  128. package/core/email/src/drivers/mailjet.ts +2 -2
  129. package/core/email/src/drivers/mandrill.ts +1 -1
  130. package/core/email/src/drivers/netcore.ts +1 -1
  131. package/core/email/src/drivers/nodemailer.ts +1 -1
  132. package/core/email/src/drivers/postmark.ts +1 -1
  133. package/core/email/src/drivers/sendgrid.ts +1 -1
  134. package/core/email/src/tailwind.config.ts +3 -3
  135. package/core/error-handling/build.config.ts +7 -2
  136. package/core/error-handling/package.json +6 -4
  137. package/core/error-handling/src/index.ts +45 -0
  138. package/core/events/README.md +1 -1
  139. package/core/events/build.config.ts +1 -2
  140. package/core/events/package.json +3 -3
  141. package/core/events/src/index.ts +8 -1
  142. package/core/faker/build.config.ts +3 -1
  143. package/core/faker/package.json +4 -4
  144. package/core/git/build.config.ts +3 -1
  145. package/core/git/package.json +4 -4
  146. package/core/health/build.config.ts +3 -1
  147. package/core/health/package.json +3 -3
  148. package/core/lint/build.config.ts +3 -1
  149. package/core/lint/package.json +7 -7
  150. package/core/logging/build.config.ts +5 -3
  151. package/core/logging/package.json +6 -6
  152. package/core/modules/build.config.ts +10 -7
  153. package/core/modules/package.json +3 -3
  154. package/core/notifications/README.md +1 -1
  155. package/core/notifications/build.config.ts +2 -1
  156. package/core/notifications/package.json +25 -25
  157. package/core/notifications/src/tailwind.config.ts +1 -1
  158. package/core/notifications/tests/chat/Slack.test.ts +35 -35
  159. package/core/notifications/tests/email/Mailgun.test.ts +41 -41
  160. package/core/notifications/tests/email/Sendgrid.test.ts +41 -41
  161. package/core/notifications/tests/sms/Twilio.test.ts +38 -38
  162. package/core/objects/build.config.ts +15 -7
  163. package/core/objects/package.json +5 -4
  164. package/core/objects/src/index.ts +2 -1
  165. package/core/orm/build.config.ts +1 -2
  166. package/core/orm/package.json +3 -3
  167. package/core/pages/build.config.ts +4 -7
  168. package/core/pages/package.json +3 -3
  169. package/core/pages/src/index.ts +39 -39
  170. package/core/path/build.config.ts +1 -2
  171. package/core/path/package.json +4 -5
  172. package/core/path/src/index.ts +94 -65
  173. package/core/payments/build.config.ts +4 -7
  174. package/core/payments/package.json +5 -5
  175. package/core/push/build.config.ts +4 -7
  176. package/core/push/package.json +5 -5
  177. package/core/query-builder/build.config.ts +4 -7
  178. package/core/query-builder/package.json +7 -7
  179. package/core/queue/build.config.ts +4 -7
  180. package/core/queue/package.json +3 -3
  181. package/core/realtime/build.config.ts +4 -7
  182. package/core/realtime/package.json +3 -3
  183. package/core/realtime/src/index.ts +3 -1
  184. package/core/repl/README.md +53 -0
  185. package/core/repl/build.config.ts +12 -0
  186. package/core/repl/package.json +56 -0
  187. package/core/repl/src/index.ts +1 -0
  188. package/core/repl/tests/example.test.ts +7 -0
  189. package/core/router/build.config.ts +13 -7
  190. package/core/router/package.json +4 -4
  191. package/core/router/src/index.ts +2 -0
  192. package/core/scheduler/build.config.ts +4 -7
  193. package/core/scheduler/package.json +4 -4
  194. package/core/search-engine/build.config.ts +17 -7
  195. package/core/search-engine/package.json +4 -4
  196. package/core/search-engine/src/helpers.ts +1 -1
  197. package/core/search-engine/src/index.ts +2 -2
  198. package/core/security/build.config.ts +17 -7
  199. package/core/security/package.json +4 -3
  200. package/core/security/src/crypt.ts +11 -2
  201. package/core/server/build.config.ts +3 -7
  202. package/core/server/package.json +6 -5
  203. package/core/server/src/index.ts +2 -5
  204. package/core/server/src/nitro.config.ts +2 -2
  205. package/core/signals/README.md +2 -2
  206. package/core/signals/build.config.ts +4 -7
  207. package/core/signals/package.json +4 -4
  208. package/core/signals/src/index.ts +1 -1
  209. package/core/slug/build.config.ts +4 -7
  210. package/core/slug/package.json +3 -3
  211. package/core/slug/src/index.ts +2 -1
  212. package/core/sms/build.config.ts +3 -1
  213. package/core/sms/package.json +13 -13
  214. package/core/sms/src/drivers/gupshup.ts +1 -1
  215. package/core/sms/src/drivers/nexmo.ts +3 -2
  216. package/core/sms/src/drivers/plivo.ts +3 -2
  217. package/core/sms/src/drivers/sms77.ts +3 -2
  218. package/core/sms/src/drivers/sns.ts +1 -1
  219. package/core/sms/src/drivers/telnyx.ts +3 -2
  220. package/core/sms/src/drivers/termii.ts +3 -2
  221. package/core/sms/src/drivers/twilio.ts +3 -2
  222. package/core/storage/build.config.ts +3 -7
  223. package/core/storage/package.json +5 -5
  224. package/core/storage/src/index.ts +2 -24
  225. package/core/strings/build.config.ts +1 -2
  226. package/core/strings/package.json +9 -3
  227. package/core/strings/src/case.ts +12 -0
  228. package/core/strings/src/index.ts +2 -1
  229. package/core/strings/src/is.ts +170 -0
  230. package/core/strings/src/macro.ts +139 -0
  231. package/core/strings/src/utils.ts +10 -12
  232. package/core/testing/build.config.ts +3 -1
  233. package/core/testing/package.json +8 -8
  234. package/core/tinker/build.config.ts +12 -0
  235. package/core/tinker/package.json +15 -3
  236. package/core/tinker/src/index.ts +1 -0
  237. package/core/types/build.config.ts +17 -8
  238. package/core/types/package.json +25 -19
  239. package/core/types/src/app.ts +4 -4
  240. package/core/types/src/cli.ts +34 -34
  241. package/core/types/src/cron-jobs.ts +25 -4
  242. package/core/types/src/database.ts +12 -3
  243. package/core/types/src/errors.ts +19 -1
  244. package/core/types/src/events.ts +13 -5
  245. package/core/types/src/fs.ts +5 -0
  246. package/core/types/src/git.ts +1 -1
  247. package/core/types/src/index.ts +2 -1
  248. package/core/types/src/library.ts +0 -7
  249. package/core/types/src/model.ts +21 -8
  250. package/core/types/src/money.ts +3 -0
  251. package/core/types/src/notifications.ts +9 -7
  252. package/core/types/src/queue.ts +34 -0
  253. package/core/types/src/search-engine.ts +3 -3
  254. package/core/types/src/stacks.ts +1 -12
  255. package/core/ui/build.config.ts +5 -7
  256. package/core/ui/package.json +7 -7
  257. package/core/utils/build.config.ts +32 -7
  258. package/core/utils/package.json +16 -16
  259. package/core/utils/src/config.ts +88 -49
  260. package/core/utils/src/currency.ts +3 -0
  261. package/core/utils/src/delete.ts +1 -3
  262. package/core/utils/src/guards.ts +3 -3
  263. package/core/utils/src/helpers.ts +36 -12
  264. package/core/utils/src/vendors.ts +1 -0
  265. package/core/validation/build.config.ts +18 -8
  266. package/core/validation/package.json +8 -6
  267. package/core/validation/src/index.ts +2 -0
  268. package/core/validation/src/is.ts +27 -174
  269. package/core/validation/src/rules.ts +126 -0
  270. package/core/validation/src/types/env.ts +147 -0
  271. package/core/validation/src/types/index.ts +2 -0
  272. package/core/validation/src/types/money.ts +17 -0
  273. package/core/validation/src/validate.ts +14 -25
  274. package/core/vite-plugin/README.md +59 -0
  275. package/core/vite-plugin/build.config.ts +21 -0
  276. package/core/vite-plugin/package.json +51 -0
  277. package/core/vite-plugin/src/index.ts +23 -0
  278. package/core/vite-plugin/tests/example.test.ts +7 -0
  279. package/dictionary.txt +228 -0
  280. package/docs/package.json +3 -2
  281. package/env.d.ts +7 -0
  282. package/ide/jetbrains/.fleet/run.json +5 -0
  283. package/ide/jetbrains/.fleet/settings.json +4 -0
  284. package/ide/jetbrains/.idea/.gitignore +5 -0
  285. package/ide/jetbrains/.idea/inspectionProfiles/Project_Default.xml +6 -0
  286. package/ide/jetbrains/.idea/jsLibraryMappings.xml +6 -0
  287. package/ide/jetbrains/.idea/jsLinters/eslint.xml +7 -0
  288. package/ide/jetbrains/.idea/modules.xml +8 -0
  289. package/ide/jetbrains/.idea/stacks.iml +69 -0
  290. package/ide/jetbrains/.idea/vcs.xml +6 -0
  291. package/ide/jetbrains/.idea/webResources.xml +14 -0
  292. package/ide/jetbrains/.idea/workspace.xml +225 -0
  293. package/ide/jetbrains/IntelliJ IDEA Global Settings +0 -0
  294. package/ide/jetbrains/installed.txt +4 -0
  295. package/ide/jetbrains/options/github-copilot.xml +5 -0
  296. package/ide/jetbrains/options/nodejs.xml +7 -0
  297. package/ide/jetbrains/options/templates.xml +124 -0
  298. package/ide/jetbrains/templates/JavaScript.xml +6 -0
  299. package/ide/jetbrains/templates/Stacks.xml +8 -0
  300. package/ide/vscode/.vscode/README.md +23 -0
  301. package/ide/vscode/.vscode/extensions.json +5 -0
  302. package/ide/vscode/.vscode/settings.json +111 -0
  303. package/ide/vscode/.vscode/stacks.code-snippets +182 -0
  304. package/ide/vscode/README.md +42 -0
  305. package/ide/vscode/logo.png +0 -0
  306. package/ide/vscode/package.json +64 -0
  307. package/{components → libs/components}/vue/main.ts +1 -1
  308. package/{components → libs/components}/vue/package.json +1 -1
  309. package/{components → libs/components}/web/package.json +1 -1
  310. package/libs/examples/vue/App.vue +12 -0
  311. package/libs/examples/vue/favicon.png +0 -0
  312. package/libs/examples/vue/index.html +20 -0
  313. package/libs/examples/web/favicon.png +0 -0
  314. package/libs/examples/web/index.html +13 -0
  315. package/libs/functions/package.json +41 -0
  316. package/package.json +104 -98
  317. package/reset.d.ts +1 -0
  318. package/scripts/ensure.sh +33 -0
  319. package/scripts/publish.sh +18 -0
  320. package/scripts/setup.sh +540 -0
  321. package/stacks/dashboard/README.md +74 -0
  322. package/{core/domains → stacks/dashboard}/build.config.ts +1 -1
  323. package/stacks/dashboard/package.json +46 -0
  324. package/stacks/dashboard/src/index.ts +0 -0
  325. package/stacks/dashboard/tests/example.test.ts +7 -0
  326. package/stacks/tables/README.md +109 -0
  327. package/stacks/tables/build.config.ts +16 -0
  328. package/stacks/tables/examples/vue/App.vue +12 -0
  329. package/stacks/tables/examples/vue/favicon.png +0 -0
  330. package/stacks/tables/examples/vue/index.html +20 -0
  331. package/stacks/tables/examples/web/favicon.png +0 -0
  332. package/stacks/tables/examples/web/index.html +13 -0
  333. package/stacks/tables/index.html +13 -0
  334. package/stacks/tables/package.json +57 -0
  335. package/stacks/tables/src/App.vue +23 -0
  336. package/stacks/tables/src/components/Demo.vue +84 -0
  337. package/stacks/tables/src/components/README.md +110 -0
  338. package/stacks/tables/src/components/Table.vue +342 -0
  339. package/stacks/tables/src/components/TableBody.vue +32 -0
  340. package/stacks/tables/src/components/TableCellActionItems.vue +9 -0
  341. package/stacks/tables/src/components/TableFilters.vue +704 -0
  342. package/stacks/tables/src/components/TableHead.vue +60 -0
  343. package/stacks/tables/src/components/TablePagination.vue +131 -0
  344. package/stacks/tables/src/components/TableRow.vue +73 -0
  345. package/stacks/tables/src/components/TableSearch.vue +39 -0
  346. package/stacks/tables/src/components/Tooltip.vue +10 -0
  347. package/stacks/tables/src/config/tables.ts +1 -0
  348. package/stacks/tables/src/docs/index.md +0 -0
  349. package/stacks/tables/src/functions/README.md +8 -0
  350. package/stacks/tables/src/functions/dark.ts +3 -0
  351. package/stacks/tables/src/functions/index.ts +2 -0
  352. package/stacks/tables/src/functions/table.ts +207 -0
  353. package/stacks/tables/src/main.ts +4 -0
  354. package/stacks/tables/tests/example.test.ts +7 -0
  355. package/stacks/tables/vite.config.ts +26 -0
  356. package/stacks/tinker/package.json +48 -0
  357. package/stacks/tinker/src/index.ts +1 -0
  358. package/stacks/x-ray/README.md +55 -0
  359. package/stacks/x-ray/build.config.ts +15 -0
  360. package/stacks/x-ray/index.html +13 -0
  361. package/stacks/x-ray/package.json +55 -0
  362. package/stacks/x-ray/routes/index.ts +19 -0
  363. package/stacks/x-ray/src/client.ts +14 -0
  364. package/stacks/x-ray/src/desktop/api/nitro.config.ts +19 -0
  365. package/stacks/x-ray/src/desktop/api/routes/api/logs.ts +7 -0
  366. package/stacks/x-ray/src/desktop/api/routes/api/store-logs.ts +22 -0
  367. package/stacks/x-ray/src/desktop/api/src/types.ts +7 -0
  368. package/stacks/x-ray/src/desktop/api/storage/index.ts +7 -0
  369. package/stacks/x-ray/src/desktop/app.vue +377 -0
  370. package/stacks/x-ray/src/desktop/functions/http.ts +26 -0
  371. package/stacks/x-ray/src/desktop/functions/types.ts +7 -0
  372. package/stacks/x-ray/src/desktop/main.ts +14 -0
  373. package/stacks/x-ray/src/desktop/modules/counter/mod.vue +44 -0
  374. package/stacks/x-ray/src/desktop/modules/fetcher/mod.vue +63 -0
  375. package/stacks/x-ray/src/desktop/plugins/unified/unified-app.ts +5 -0
  376. package/stacks/x-ray/src/desktop/plugins/unified/unified-styles.scss +0 -0
  377. package/stacks/x-ray/src/desktop/services/http.ts +45 -0
  378. package/stacks/x-ray/src/desktop/styles/app.scss +0 -0
  379. package/stacks/x-ray/src/http.ts +26 -0
  380. package/stacks/x-ray/src/index.ts +42 -0
  381. package/stacks/x-ray/src/ray.config.ts +27 -0
  382. package/stacks/x-ray/src/types.ts +8 -0
  383. package/stacks/x-ray/tests/example.test.ts +7 -0
  384. package/stacks.d.ts +22 -0
  385. package/tsconfig.json +21 -12
  386. package/vcs/github/CODE_OF_CONDUCT.md +83 -0
  387. package/vcs/github/CONTRIBUTING.md +190 -0
  388. package/vcs/github/EXPLANATIONS.md +41 -0
  389. package/vcs/github/FUNDING.yml +1 -0
  390. package/vcs/github/ISSUE_TEMPLATE/bug_report.yml +62 -0
  391. package/vcs/github/ISSUE_TEMPLATE/config.yml +10 -0
  392. package/vcs/github/ISSUE_TEMPLATE/feature_request.yml +44 -0
  393. package/vcs/github/SECURITY.md +70 -0
  394. package/vcs/github/renovate.json +5 -0
  395. package/vcs/github/stale.yml +14 -0
  396. package/vcs/github/workflows/README.md +16 -0
  397. package/vcs/github/workflows/ci.yml +173 -0
  398. package/vcs/github/workflows/export-size.yml +32 -0
  399. package/vcs/github/workflows/release.yml +57 -0
  400. package/{pages → views}/desktop/src/Cargo.lock +363 -46
  401. package/{pages → views}/desktop/src/Cargo.toml +2 -2
  402. package/views/web/main.ts +26 -0
  403. package/api/serverless.yml +0 -11
  404. package/core/actions/node_modules/.bin/markdown-it +0 -17
  405. package/core/actions/node_modules/.bin/unbuild +0 -17
  406. package/core/actions/src/generate/package-jsons.ts +0 -11
  407. package/core/build/entries/README.md +0 -7
  408. package/core/build/node_modules/.bin/unbuild +0 -17
  409. package/core/build/node_modules/.bin/vite +0 -17
  410. package/core/build/node_modules/.bin/vite-ssg +0 -17
  411. package/core/build/node_modules/.bin/vue-docgen-web-types +0 -17
  412. package/core/desktop/node_modules/.bin/tauri +0 -17
  413. package/core/development/node_modules/.bin/tsc +0 -17
  414. package/core/development/node_modules/.bin/tsserver +0 -17
  415. package/core/development/node_modules/.bin/tsx +0 -17
  416. package/core/development/node_modules/.bin/unbuild +0 -17
  417. package/core/docs/node_modules/.bin/vitepress +0 -17
  418. package/core/email/node_modules/.bin/maizzle +0 -17
  419. package/core/git/node_modules/.bin/bumpp +0 -17
  420. package/core/git/node_modules/.bin/changelogen +0 -17
  421. package/core/git/node_modules/.bin/commitizen +0 -17
  422. package/core/git/node_modules/.bin/cz +0 -17
  423. package/core/git/node_modules/.bin/giget +0 -17
  424. package/core/git/node_modules/.bin/git-cz +0 -17
  425. package/core/git/node_modules/.bin/simple-git-hooks +0 -17
  426. package/core/lint/node_modules/.bin/eslint +0 -17
  427. package/core/lint/node_modules/.bin/lint-staged +0 -17
  428. package/core/lint/node_modules/.bin/publint +0 -17
  429. package/core/logging/node_modules/.bin/tsc +0 -17
  430. package/core/logging/node_modules/.bin/tsserver +0 -17
  431. package/core/logging/node_modules/.bin/tsx +0 -17
  432. package/core/logging/node_modules/.bin/unbuild +0 -17
  433. package/core/notifications/node_modules/.bin/maizzle +0 -17
  434. package/core/server/node_modules/.bin/nitro +0 -17
  435. package/core/server/node_modules/.bin/nitropack +0 -17
  436. package/core/server/node_modules/.bin/vite +0 -17
  437. package/core/testing/node_modules/.bin/playwright +0 -17
  438. package/core/testing/node_modules/.bin/tsc +0 -17
  439. package/core/testing/node_modules/.bin/tsserver +0 -17
  440. package/core/testing/node_modules/.bin/unbuild +0 -17
  441. package/core/testing/node_modules/.bin/vitest +0 -17
  442. package/core/tinker/node_modules/.bin/tsx +0 -17
  443. package/core/types/node_modules/.bin/markdown-it +0 -17
  444. package/core/types/node_modules/.bin/vite +0 -17
  445. package/core/types/node_modules/.bin/vite-ssg +0 -17
  446. package/core/types/node_modules/.bin/vitepress +0 -17
  447. package/core/types/src/markdown.ts +0 -198
  448. package/core/ui/node_modules/.bin/vue-tsc +0 -17
  449. package/core/utils/node_modules/.bin/rimraf +0 -17
  450. package/core/utils/node_modules/.bin/semver +0 -17
  451. package/docs/node_modules/.bin/rimraf +0 -17
  452. package/docs/node_modules/.bin/vitepress +0 -17
  453. package/pages/web/main.ts +0 -26
  454. /package/core/{domains → dns}/tests/example.test.ts +0 -0
  455. /package/{LICENSE.md → ide/vscode/LICENSE.md} +0 -0
  456. /package/{components → libs/components}/vue/index.html +0 -0
  457. /package/{core/domains/src → stacks/tables/src/cli}/index.ts +0 -0
  458. /package/{pages → views}/desktop/.gitignore +0 -0
  459. /package/{pages → views}/desktop/README.md +0 -0
  460. /package/{pages → views}/desktop/index.html +0 -0
  461. /package/{pages → views}/desktop/package.json +0 -0
  462. /package/{pages → views}/desktop/public/favicon.svg +0 -0
  463. /package/{pages → views}/desktop/src/.gitignore +0 -0
  464. /package/{pages → views}/desktop/src/build.rs +0 -0
  465. /package/{pages → views}/desktop/src/icons/128x128.png +0 -0
  466. /package/{pages → views}/desktop/src/icons/128x128@2x.png +0 -0
  467. /package/{pages → views}/desktop/src/icons/32x32.png +0 -0
  468. /package/{pages → views}/desktop/src/icons/Square107x107Logo.png +0 -0
  469. /package/{pages → views}/desktop/src/icons/Square142x142Logo.png +0 -0
  470. /package/{pages → views}/desktop/src/icons/Square150x150Logo.png +0 -0
  471. /package/{pages → views}/desktop/src/icons/Square284x284Logo.png +0 -0
  472. /package/{pages → views}/desktop/src/icons/Square30x30Logo.png +0 -0
  473. /package/{pages → views}/desktop/src/icons/Square310x310Logo.png +0 -0
  474. /package/{pages → views}/desktop/src/icons/Square44x44Logo.png +0 -0
  475. /package/{pages → views}/desktop/src/icons/Square71x71Logo.png +0 -0
  476. /package/{pages → views}/desktop/src/icons/Square89x89Logo.png +0 -0
  477. /package/{pages → views}/desktop/src/icons/StoreLogo.png +0 -0
  478. /package/{pages → views}/desktop/src/icons/icon.icns +0 -0
  479. /package/{pages → views}/desktop/src/icons/icon.ico +0 -0
  480. /package/{pages → views}/desktop/src/icons/icon.png +0 -0
  481. /package/{pages → views}/desktop/src/src/main.rs +0 -0
  482. /package/{pages → views}/desktop/src/tauri.conf.json +0 -0
  483. /package/{pages → views}/web/App.vue +0 -0
  484. /package/{pages → views}/web/index.html +0 -0
  485. /package/{pages → views}/web/public/_headers +0 -0
  486. /package/{pages → views}/web/public/favicon-dark.svg +0 -0
  487. /package/{pages → views}/web/public/favicon.svg +0 -0
  488. /package/{pages → views}/web/public/pwa-192x192.png +0 -0
  489. /package/{pages → views}/web/public/pwa-512x512.png +0 -0
  490. /package/{pages → views}/web/public/safari-pinned-tab.svg +0 -0
  491. /package/{pages → views}/web/styles/main.css +0 -0
  492. /package/{pages → views}/web/styles/markdown.css +0 -0
@@ -1,13 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { frameworkPath } from '@stacksjs/path'
3
- import { runActions } from '@stacksjs/actions'
4
3
  import { Action } from '@stacksjs/types'
4
+ import { log } from '@stacksjs/cli'
5
+ import { app } from '@stacksjs/config'
6
+ import { runActions } from './'
5
7
 
6
8
  await runActions([
7
- Action.GeneratePackageJsons, // generate the package.json's for each package
9
+ Action.GenerateLibraryEntries, // generates the package/library entry points
8
10
  Action.LintFix, // ensure there are no lint errors
9
11
  // Action.Test, // run the tests
10
12
  Action.Bump, // bump the versions, create the git tag, generate the changelog, commit & push the changes
11
13
  ], { verbose: true, cwd: frameworkPath(), shell: true }) // debug mode needs to be enabled to see the output due to the interactive prompts
12
14
 
13
- // log.success('Successfully released the Stacks framework')
15
+ log.success(`Successfully released ${app.name}`)
@@ -1,3 +1,3 @@
1
- import { seeder } from '@stacksjs/actions/generate'
1
+ import { seeder } from './generate'
2
2
 
3
3
  await seeder()
@@ -1,29 +1,29 @@
1
- import { log, outro } from '@stacksjs/cli'
2
- import storage from '@stacksjs/storage'
3
- import { determineDebugLevel, loop } from '@stacksjs/utils'
4
- import { frameworkPath, projectPath } from '@stacksjs/path'
5
-
6
- // await runCommand(NpmScript.UpgradeFramework, parseArgs())
7
-
8
- await checkForUncommittedChanges('./.stacks', options)
9
- await downloadFrameworkUpdate(options)
10
-
11
- log.info('Updating framework...')
12
-
13
- const exclude = ['functions/package.json', 'components/vue/package.json', 'components/web/package.json', 'auto-imports.d.ts', 'components.d.ts', 'dist']
14
- await storage.deleteFiles(frameworkPath(), exclude)
15
-
16
- // loop 5 times to make sure all "deep empty" folders are deleted
17
- loop(5, async () => {
18
- await storage.deleteEmptyFolders(frameworkPath())
19
- })
20
-
21
- await storage.copyFolder(frameworkPath(), projectPath('./updates/.stacks'), exclude)
22
-
23
- if (determineDebugLevel(options))
24
- log.info('Cleanup...')
25
-
26
- await storage.deleteFolder(projectPath('updates'))
27
-
28
- outro('Framework updated', { startTime: perf, useSeconds: true })
29
- process.exit()
1
+ // import { log, outro } from '@stacksjs/cli'
2
+ // import * as storage from '@stacksjs/storage'
3
+ // import { determineDebugLevel, loop } from '@stacksjs/utils'
4
+ // import { frameworkPath, projectPath } from '@stacksjs/path'
5
+ //
6
+ // // await runCommand(NpmScript.UpgradeFramework, parseArgs())
7
+ //
8
+ // await checkForUncommittedChanges('./.stacks', options)
9
+ // await downloadFrameworkUpdate(options)
10
+ //
11
+ // log.info('Updating framework...')
12
+ //
13
+ // const exclude = ['functions/package.json', 'components/vue/package.json', 'components/web/package.json', 'auto-imports.d.ts', 'components.d.ts', 'dist']
14
+ // await storage.deleteFiles(frameworkPath(), exclude)
15
+ //
16
+ // // loop 5 times to make sure all "deep empty" folders are deleted
17
+ // loop(5, async () => {
18
+ // await storage.deleteEmptyFolders(frameworkPath())
19
+ // })
20
+ //
21
+ // await storage.copyFolder(frameworkPath(), projectPath('./updates/.stacks'), exclude)
22
+ //
23
+ // if (determineDebugLevel(options))
24
+ // log.info('Cleanup...')
25
+ //
26
+ // await storage.deleteFolder(projectPath('updates'))
27
+ //
28
+ // outro('Framework updated', { startTime: perf, useSeconds: true })
29
+ // process.exit()
@@ -1,10 +1,8 @@
1
- import { ExitCode, parseArgs } from '@stacksjs/cli'
2
- import { Action } from '@stacksjs/types'
3
- import { runAction } from '../helpers'
4
-
5
- const options = parseArgs()
6
- // eslint-disable-next-line no-console
7
- console.log('here is opt', options)
1
+ // import { ExitCode, parseArgs } from '@stacksjs/cli'
2
+ // import { Action } from '@stacksjs/types'
3
+ // import { runAction } from '../helpers'
4
+ //
5
+ // const options = parseArgs()
8
6
 
9
7
  // run all the upgrade actions
10
8
  // if (options?.framework || options?.all)
@@ -13,14 +11,14 @@ console.log('here is opt', options)
13
11
  // if (options?.dependencies || options?.all)
14
12
  // await updateDependencies(options)
15
13
 
16
- if (options?.packageManager || options?.all)
17
- await runAction(Action.UpgradePackageManager, options)
18
-
19
- if (options?.node || options?.all)
20
- await runAction(Action.UpgradeNode, options)
21
-
22
- else
23
- process.exit(ExitCode.InvalidArgument)
14
+ // if (options?.packageManager || options?.all)
15
+ // await runAction(Action.UpgradePackageManager, options)
16
+ //
17
+ // if (options?.node || options?.all)
18
+ // await runAction(Action.UpgradeNode, options)
19
+ //
20
+ // else
21
+ // process.exit(ExitCode.InvalidArgument)
24
22
 
25
23
  // // TODO: also update CI files & configurations, and other files, possibly
26
24
  // // we want this to be smart enough to update only if files that have been updated
@@ -1,4 +1,4 @@
1
- import { parseArgs, runCommand } from '@stacksjs/cli'
2
- import { NpmScript } from '@stacksjs/types'
3
-
4
- await runCommand(NpmScript.UpgradeNode, parseArgs())
1
+ // import { parseArgs, runCommand } from '@stacksjs/cli'
2
+ // import { NpmScript } from '@stacksjs/types'
3
+ //
4
+ // await runCommand(NpmScript.UpgradeNode, parseArgs())
@@ -1,4 +1,4 @@
1
- import { parseArgs, runCommand } from '@stacksjs/cli'
2
- import { NpmScript } from '@stacksjs/types'
3
-
4
- await runCommand(NpmScript.UpgradePackageManager, parseArgs())
1
+ // import { parseArgs, runCommand } from '@stacksjs/cli'
2
+ // import { NpmScript } from '@stacksjs/types'
3
+ //
4
+ // await runCommand(NpmScript.UpgradePackageManager, parseArgs())
@@ -1,5 +1,5 @@
1
- import { intro, log, outro, prompt, runCommand, spawn } from '@stacksjs/cli'
2
- import storage from '@stacksjs/storage'
1
+ import { intro, log, outro, runCommand, spawn } from '@stacksjs/cli'
2
+ import * as storage from '@stacksjs/storage'
3
3
  import { determineDebugLevel } from '@stacksjs/utils'
4
4
  import { projectPath } from '@stacksjs/path'
5
5
  import type { UpgradeOptions } from '@stacksjs/types'
@@ -20,7 +20,7 @@ export async function checkForUncommittedChanges(path = './.stacks', options: Up
20
20
  // the user knows what they are doing. There is also a change that simply the deps within .stacks
21
21
  // folder have been updated and that could produce a diff.
22
22
  if (!options?.force) {
23
- const confirmed = await prompt('We detected there are uncommitted in the ./stacks folder. Do you want to overwrite those?', {
23
+ const confirmed = await log.prompt('We detected there are uncommitted in the ./stacks folder. Do you want to overwrite those?', {
24
24
  type: 'confirm',
25
25
  })
26
26
 
@@ -1,13 +1,11 @@
1
- import { defineBuildConfig } from '@stacksjs/development'
1
+ import { alias, defineBuildConfig } from '@stacksjs/development'
2
2
 
3
3
  export default defineBuildConfig({
4
+ alias,
5
+
4
6
  entries: [
5
- {
6
- builder: 'mkdist',
7
- input: './src/',
8
- outDir: './dist/',
9
- format: 'esm',
10
- },
7
+ './src/drivers/openai',
8
+ './src/index',
11
9
  ],
12
10
 
13
11
  clean: true,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@stacksjs/ai",
3
3
  "type": "module",
4
- "version": "0.52.10",
5
- "packageManager": "pnpm@8.5.1",
4
+ "version": "0.56.3",
5
+ "packageManager": "pnpm@8.6.5",
6
6
  "description": "Stacks Artificial Intelligence.",
7
7
  "author": "Chris Breuer",
8
8
  "license": "MIT",
@@ -29,8 +29,8 @@
29
29
  "import": "./dist/index.mjs"
30
30
  },
31
31
  "./openai": {
32
- "types": "./dist/drivers/openai.d.ts",
33
- "import": "./dist/drivers/openai.mjs"
32
+ "types": "./dist/openai.d.ts",
33
+ "import": "./dist/openai.mjs"
34
34
  }
35
35
  },
36
36
  "module": "dist/index.mjs",
@@ -45,13 +45,9 @@
45
45
  "scripts": {
46
46
  "build": "unbuild .",
47
47
  "dev": "unbuild --stub",
48
- "prepublishOnly": "pnpm run build",
48
+ "prepublishOnly": "unbuild",
49
49
  "typecheck": "tsc --noEmit"
50
50
  },
51
- "peerDependencies": {
52
- "@stacksjs/cli": "workspace:*",
53
- "@stacksjs/config": "workspace:*"
54
- },
55
51
  "devDependencies": {
56
52
  "@stacksjs/development": "workspace:*"
57
53
  }
@@ -1,15 +1,13 @@
1
- import { defineBuildConfig } from 'unbuild'
1
+ import { alias, defineBuildConfig } from '@stacksjs/development'
2
2
 
3
3
  export default defineBuildConfig({
4
+ alias,
5
+
4
6
  entries: [
5
- {
6
- builder: 'mkdist',
7
- input: './src/',
8
- outDir: './dist/',
9
- format: 'esm',
10
- },
7
+ './src/index',
11
8
  ],
12
9
 
10
+ outDir: './dist/',
13
11
  clean: true,
14
12
  declaration: true,
15
13
  })
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@stacksjs/alias",
3
3
  "type": "module",
4
- "version": "0.52.10",
5
- "packageManager": "pnpm@8.5.1",
4
+ "version": "0.56.3",
5
+ "packageManager": "pnpm@8.6.5",
6
6
  "description": "The Stacks aliases.",
7
7
  "author": "Chris Breuer",
8
8
  "license": "MIT",
@@ -38,13 +38,10 @@
38
38
  "scripts": {
39
39
  "build": "unbuild",
40
40
  "dev": "unbuild --stub",
41
- "prepublishOnly": "pnpm run build",
41
+ "prepublishOnly": "unbuild",
42
42
  "typecheck": "tsc --noEmit"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "@stacksjs/path": "workspace:*"
46
- },
47
- "devDependencies": {
48
- "@stacksjs/development": "workspace:*"
49
46
  }
50
47
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { path as p } from '@stacksjs/path'
6
6
 
7
- const alias: Record<string, string> = {
7
+ export const alias: Record<string, string> = {
8
8
  '~/*': p.projectPath('*'),
9
9
  '@stacksjs/ai': p.aiPath('src/index.ts'),
10
10
  '@stacksjs/ai/*': p.aiPath('src/*'),
@@ -37,10 +37,10 @@ const alias: Record<string, string> = {
37
37
  '@stacksjs/development/*': p.developmentPath('src/*'),
38
38
  // '@stacksjs/desktop': p.desktopPath('src/index.ts'),
39
39
  // '@stacksjs/desktop/*': p.desktopPath('src/*'),
40
+ '@stacksjs/dns': p.dnsPath('src/index.ts'),
41
+ '@stacksjs/dns/*': p.dnsPath('src/*'),
40
42
  '@stacksjs/docs': p.docsPath('src/index.ts'),
41
43
  '@stacksjs/docs/*': p.docsPath('src/*'),
42
- '@stacksjs/domains': p.domainsPath('src/index.ts'),
43
- '@stacksjs/domains/*': p.domainsPath('src/*'),
44
44
  '@stacksjs/email': p.emailPath('src/index.ts'),
45
45
  '@stacksjs/email/*': p.emailPath('src/*'),
46
46
  '@stacksjs/error-handling': p.errorHandlingPath('src/index.ts'),
@@ -98,12 +98,11 @@ const alias: Record<string, string> = {
98
98
  '@stacksjs/x-ray': p.xRayPath('src/index.ts'),
99
99
  '@stacksjs/x-ray/*': p.xRayPath('src/*'),
100
100
  'framework/*': p.frameworkPath('*'),
101
- 'stacks': p.frameworkPath('src/index.ts'),
101
+ // 'stacks': p.frameworkPath('src/index.ts'),
102
+ 'stacks/*': p.frameworkPath('src/*'),
102
103
  'app/*': p.appPath('*'),
103
- 'config/*': p.userConfigPath('*'),
104
+ 'config/*': p.projectConfigPath('*'),
104
105
  'components/*': p.componentsPath('*'),
105
106
  'functions/*': p.functionsPath('*'),
106
107
  'pages/*': p.pagesPath('*'),
107
108
  }
108
-
109
- export { alias }
@@ -1,13 +1,11 @@
1
- import { defineBuildConfig } from 'unbuild'
1
+ import { alias, defineBuildConfig } from '@stacksjs/development'
2
2
 
3
3
  export default defineBuildConfig({
4
+ alias,
5
+
4
6
  entries: [
5
- {
6
- builder: 'mkdist',
7
- input: './src/',
8
- outDir: './dist/',
9
- format: 'esm',
10
- },
7
+ './src/drivers/fathom',
8
+ './src/index',
11
9
  ],
12
10
 
13
11
  clean: true,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@stacksjs/analytics",
3
3
  "type": "module",
4
- "version": "0.52.10",
5
- "packageManager": "pnpm@8.5.1",
4
+ "version": "0.56.3",
5
+ "packageManager": "pnpm@8.6.5",
6
6
  "description": "Stacks Analytics. Privacy-friendly.",
7
7
  "author": "Chris Breuer",
8
8
  "license": "MIT",
@@ -34,9 +34,9 @@
34
34
  "types": "./dist/index.d.ts",
35
35
  "import": "./dist/index.mjs"
36
36
  },
37
- "./drivers/fathom": {
38
- "types": "./dist/drivers/fathom.d.ts",
39
- "import": "./dist/drivers/fathom.mjs"
37
+ "./fathom": {
38
+ "types": "./dist/fathom.d.ts",
39
+ "import": "./dist/fathom.mjs"
40
40
  }
41
41
  },
42
42
  "module": "dist/index.mjs",
@@ -51,7 +51,7 @@
51
51
  "scripts": {
52
52
  "build": "unbuild",
53
53
  "dev": "unbuild --stub",
54
- "prepublishOnly": "pnpm run build",
54
+ "prepublishOnly": "unbuild",
55
55
  "typecheck": "tsc --noEmit"
56
56
  },
57
57
  "peerDependencies": {
@@ -1,13 +1,10 @@
1
- import { defineBuildConfig } from 'unbuild'
1
+ import { alias, defineBuildConfig } from '@stacksjs/development'
2
2
 
3
3
  export default defineBuildConfig({
4
+ alias,
5
+
4
6
  entries: [
5
- {
6
- builder: 'mkdist',
7
- input: './src/',
8
- outDir: './dist/',
9
- format: 'esm',
10
- },
7
+ './src/index',
11
8
  ],
12
9
 
13
10
  clean: true,
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@stacksjs/arrays",
3
3
  "type": "module",
4
- "version": "0.52.10",
5
- "packageManager": "pnpm@8.5.1",
4
+ "version": "0.56.3",
5
+ "packageManager": "pnpm@8.6.5",
6
6
  "description": "The Stacks array utilities.",
7
7
  "author": "Chris Breuer",
8
8
  "license": "MIT",
@@ -42,12 +42,16 @@
42
42
  "scripts": {
43
43
  "build": "unbuild",
44
44
  "dev": "unbuild --stub",
45
- "prepublishOnly": "pnpm run build",
45
+ "prepublishOnly": "unbuild",
46
46
  "typecheck": "tsc --noEmit"
47
47
  },
48
48
  "peerDependencies": {
49
49
  "@stacksjs/types": "workspace:*",
50
- "@stacksjs/utils": "workspace:*"
50
+ "@stacksjs/utils": "workspace:*",
51
+ "macroable": "^7.0.2"
52
+ },
53
+ "dependencies": {
54
+ "macroable": "^7.0.2"
51
55
  },
52
56
  "devDependencies": {
53
57
  "@stacksjs/development": "workspace:*",
@@ -0,0 +1,23 @@
1
+ export function contains(needle: string, haystack: string[]) {
2
+ return haystack.some(hay => needle.includes(hay))
3
+ }
4
+
5
+ export function containsAll(needles: string[], haystack: string[]) {
6
+ return needles.every(needle => contains(needle, haystack))
7
+ }
8
+
9
+ export function containsAny(needles: string[], haystack: string[]) {
10
+ return needles.some(needle => contains(needle, haystack))
11
+ }
12
+
13
+ export function containsNone(needles: string[], haystack: string[]) {
14
+ return !containsAny(needles, haystack)
15
+ }
16
+
17
+ export function containsOnly(needles: string[], haystack: string[]) {
18
+ return containsAll(haystack, needles)
19
+ }
20
+
21
+ export function doesNotContain(needle: string, haystack: string[]) {
22
+ return !contains(needle, haystack)
23
+ }
@@ -0,0 +1,206 @@
1
+ import type { Arrayable, Nullable } from '@stacksjs/types'
2
+ import { clamp } from '@stacksjs/utils'
3
+
4
+ /**
5
+ * Convert `Arrayable<T>` to `Array<T>`
6
+ *
7
+ * @category Array
8
+ */
9
+ export function toArray<T>(array?: Nullable<Arrayable<T>>): Array<T> {
10
+ array = array ?? []
11
+ return Array.isArray(array) ? array : [array]
12
+ }
13
+
14
+ /**
15
+ * Convert `Arrayable<T>` to `Array<T>` and flatten it
16
+ *
17
+ * @category Array
18
+ */
19
+ export function flatten<T>(array?: Nullable<Arrayable<T | Array<T>>>): Array<T> {
20
+ return toArray(array).flat(1) as Array<T>
21
+ }
22
+
23
+ /**
24
+ * Use rest arguments to merge arrays
25
+ *
26
+ * @category Array
27
+ */
28
+ export function mergeArrayable<T>(...args: Nullable<Arrayable<T>>[]): Array<T> {
29
+ return args.flatMap(i => toArray(i))
30
+ }
31
+
32
+ export type PartitionFilter<T> = (i: T, idx: number, arr: readonly T[]) => any
33
+
34
+ /**
35
+ * Divide an array into two parts by a filter function
36
+ *
37
+ * @category Array
38
+ * @example const [odd, even] = partition([1, 2, 3, 4], i => i % 2 != 0)
39
+ */
40
+ export function partition<T>(array: readonly T[], f1: PartitionFilter<T>): [T[], T[]]
41
+ export function partition<T>(array: readonly T[], f1: PartitionFilter<T>, f2: PartitionFilter<T>): [T[], T[], T[]]
42
+ export function partition<T>(array: readonly T[], f1: PartitionFilter<T>, f2: PartitionFilter<T>, f3: PartitionFilter<T>): [T[], T[], T[], T[]]
43
+ export function partition<T>(array: readonly T[], f1: PartitionFilter<T>, f2: PartitionFilter<T>, f3: PartitionFilter<T>, f4: PartitionFilter<T>): [T[], T[], T[], T[], T[]]
44
+ export function partition<T>(array: readonly T[], f1: PartitionFilter<T>, f2: PartitionFilter<T>, f3: PartitionFilter<T>, f4: PartitionFilter<T>, f5: PartitionFilter<T>): [T[], T[], T[], T[], T[], T[]]
45
+ export function partition<T>(array: readonly T[], f1: PartitionFilter<T>, f2: PartitionFilter<T>, f3: PartitionFilter<T>, f4: PartitionFilter<T>, f5: PartitionFilter<T>, f6: PartitionFilter<T>): [T[], T[], T[], T[], T[], T[], T[]]
46
+ export function partition<T>(array: readonly T[], ...filters: PartitionFilter<T>[]): any {
47
+ const result: T[][] = new Array(filters.length + 1).fill(null).map(() => [])
48
+
49
+ array.forEach((e, idx, arr) => {
50
+ let i = 0
51
+ for (const filter of filters) {
52
+ if (filter(e, idx, arr)) {
53
+ result[i].push(e)
54
+ return
55
+ }
56
+ i += 1
57
+ }
58
+ result[i].push(e)
59
+ })
60
+ return result
61
+ }
62
+
63
+ /**
64
+ * Unique an Array
65
+ *
66
+ * @category Array
67
+ */
68
+ export function uniq<T>(array: readonly T[]): T[] {
69
+ return Array.from(new Set(array))
70
+ }
71
+
72
+ export function unique<T>(array: readonly T[]): T[] {
73
+ return uniq(array)
74
+ }
75
+
76
+ /**
77
+ * Unique an Array by a custom equality function
78
+ *
79
+ * @category Array
80
+ */
81
+ export function uniqueBy<T>(array: readonly T[], equalFn: (a: any, b: any) => boolean): T[] {
82
+ return array.reduce((acc: T[], cur: any) => {
83
+ const index = acc.findIndex((item: any) => equalFn(cur, item))
84
+ if (index === -1)
85
+ acc.push(cur)
86
+ return acc
87
+ }, [])
88
+ }
89
+
90
+ /**
91
+ * Get last item
92
+ *
93
+ * @category Array
94
+ */
95
+ export function last(array: readonly []): undefined
96
+ export function last<T>(array: readonly T[]): T
97
+ export function last<T>(array: readonly T[]): T | undefined {
98
+ return at(array, -1)
99
+ }
100
+
101
+ /**
102
+ * Remove an item from Array
103
+ *
104
+ * @category Array
105
+ */
106
+ export function remove<T>(array: T[], value: T) {
107
+ if (!array)
108
+ return false
109
+ const index = array.indexOf(value)
110
+ if (index >= 0) {
111
+ array.splice(index, 1)
112
+ return true
113
+ }
114
+ return false
115
+ }
116
+
117
+ /**
118
+ * Get nth item of Array. Negative for backward
119
+ *
120
+ * @category Array
121
+ */
122
+ export function at(array: readonly [], index: number): undefined
123
+ export function at<T>(array: readonly T[], index: number): T
124
+ export function at<T>(array: readonly T[] | [], index: number): T | undefined {
125
+ const len = array.length
126
+ if (!len)
127
+ return undefined
128
+
129
+ if (index < 0)
130
+ index += len
131
+
132
+ return array[index]
133
+ }
134
+
135
+ /**
136
+ * Generate a range array of numbers. The `stop` is exclusive.
137
+ *
138
+ * @category Array
139
+ */
140
+ export function range(stop: number): number[]
141
+ export function range(start: number, stop: number, step?: number): number[]
142
+ export function range(...args: any): number[] {
143
+ let start: number, stop: number, step: number
144
+
145
+ if (args.length === 1) {
146
+ start = 0
147
+ step = 1;
148
+ ([stop] = args)
149
+ }
150
+ else {
151
+ ([start, stop, step = 1] = args)
152
+ }
153
+
154
+ const arr: number[] = []
155
+ let current = start
156
+ while (current < stop) {
157
+ arr.push(current)
158
+ current += step || 1
159
+ }
160
+
161
+ return arr
162
+ }
163
+
164
+ /**
165
+ * Move element in an Array
166
+ *
167
+ * @category Array
168
+ * @param arr
169
+ * @param from
170
+ * @param to
171
+ */
172
+ export function move<T>(arr: T[], from: number, to: number) {
173
+ arr.splice(to, 0, arr.splice(from, 1)[0])
174
+ return arr
175
+ }
176
+
177
+ /**
178
+ * Clamp a number to the index range of an array.
179
+ *
180
+ * @category Array
181
+ */
182
+ export function clampArrayRange(arr: readonly unknown[], n: number) {
183
+ return clamp(n, 0, arr.length - 1)
184
+ }
185
+
186
+ /**
187
+ * Get random items from an array
188
+ *
189
+ * @category Array
190
+ */
191
+ export function sample<T>(arr: T[], count: number) {
192
+ return Array.from({ length: count }, _ => arr[Math.round(Math.random() * (arr.length - 1))])
193
+ }
194
+
195
+ /**
196
+ * Shuffle an array. This function mutates the array.
197
+ *
198
+ * @category Array
199
+ */
200
+ export function shuffle<T>(array: T[]): T[] {
201
+ for (let i = array.length - 1; i > 0; i--) {
202
+ const j = Math.floor(Math.random() * (i + 1));
203
+ [array[i], array[j]] = [array[j], array[i]]
204
+ }
205
+ return array
206
+ }