stacks 0.40.0 → 0.44.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/.gitignore +12 -0
  2. package/README.md +369 -27
  3. package/auto-imports.d.ts +862 -0
  4. package/buddy/README.md +414 -0
  5. package/{bin → buddy/bin}/stacks.mjs +0 -0
  6. package/buddy/build.config.ts +17 -0
  7. package/buddy/node_modules/.bin/only-allow +17 -0
  8. package/buddy/node_modules/.bin/pnpm +17 -0
  9. package/buddy/node_modules/.bin/pnpx +17 -0
  10. package/buddy/node_modules/.bin/tsc +17 -0
  11. package/buddy/node_modules/.bin/tsserver +17 -0
  12. package/buddy/node_modules/.bin/unbuild +17 -0
  13. package/buddy/package.json +183 -0
  14. package/buddy/src/cli.ts +49 -0
  15. package/buddy/src/commands/add.ts +63 -0
  16. package/buddy/src/commands/build.ts +111 -0
  17. package/buddy/src/commands/clean.ts +18 -0
  18. package/buddy/src/commands/commit.ts +18 -0
  19. package/buddy/src/commands/create.ts +129 -0
  20. package/buddy/src/commands/dev.ts +96 -0
  21. package/buddy/src/commands/example.ts +65 -0
  22. package/buddy/src/commands/fresh.ts +18 -0
  23. package/buddy/src/commands/generate.ts +110 -0
  24. package/buddy/src/commands/index.ts +18 -0
  25. package/buddy/src/commands/key.ts +18 -0
  26. package/buddy/src/commands/lint.ts +27 -0
  27. package/buddy/src/commands/make.ts +219 -0
  28. package/buddy/src/commands/preinstall.ts +18 -0
  29. package/buddy/src/commands/prepublish.ts +19 -0
  30. package/buddy/src/commands/release.ts +28 -0
  31. package/buddy/src/commands/setup.ts +26 -0
  32. package/buddy/src/commands/test.ts +41 -0
  33. package/buddy/src/commands/types.ts +26 -0
  34. package/buddy/src/commands/update.ts +108 -0
  35. package/buddy/src/index.ts +17 -0
  36. package/components/vue/dist/.gitkeep +0 -0
  37. package/components/vue/index.html +13 -0
  38. package/components/vue/main.ts +18 -0
  39. package/components/vue/package.json +41 -0
  40. package/components/web/dist/.gitkeep +0 -0
  41. package/components/web/package.json +41 -0
  42. package/components.d.ts +22 -0
  43. package/core/actions/README.md +58 -0
  44. package/core/actions/node_modules/.bin/esno +17 -0
  45. package/core/actions/node_modules/.bin/markdown-it +17 -0
  46. package/core/actions/node_modules/.bin/mkdist +17 -0
  47. package/core/actions/node_modules/.bin/tsc +17 -0
  48. package/core/actions/node_modules/.bin/tsserver +17 -0
  49. package/core/actions/package.json +68 -0
  50. package/core/actions/src/add.ts +32 -0
  51. package/core/actions/src/build.ts +93 -0
  52. package/core/actions/src/clean.ts +25 -0
  53. package/core/actions/src/commit.ts +19 -0
  54. package/core/actions/src/copy-types.ts +22 -0
  55. package/core/actions/src/dev.ts +55 -0
  56. package/core/actions/src/examples.ts +48 -0
  57. package/core/actions/src/fresh.ts +27 -0
  58. package/core/actions/src/generate-component-meta.ts +15 -0
  59. package/core/actions/src/generate-ide-helpers.ts +19 -0
  60. package/core/actions/src/generate-lib-entries.ts +17 -0
  61. package/core/actions/src/generate-package-json.ts +11 -0
  62. package/core/actions/src/generate-vscode-custom-data.ts +16 -0
  63. package/core/actions/src/generate-vue-compat.ts +10 -0
  64. package/core/actions/src/generate.ts +119 -0
  65. package/core/actions/src/helpers/component-meta.ts +93 -0
  66. package/core/actions/src/helpers/index.ts +6 -0
  67. package/core/actions/src/helpers/lib-entries.ts +130 -0
  68. package/core/actions/src/helpers/package-json.ts +95 -0
  69. package/core/actions/src/helpers/utils.ts +30 -0
  70. package/core/actions/src/helpers/vscode-custom-data.ts +28 -0
  71. package/core/actions/src/helpers/vue-compat.ts +17 -0
  72. package/core/actions/src/index.ts +1 -0
  73. package/core/actions/src/key.ts +48 -0
  74. package/core/actions/src/lint.ts +36 -0
  75. package/core/actions/src/make.ts +249 -0
  76. package/core/actions/src/preinstall.ts +27 -0
  77. package/core/actions/src/prepublish.ts +16 -0
  78. package/core/actions/src/release.ts +32 -0
  79. package/core/actions/src/test.ts +61 -0
  80. package/core/actions/src/types.ts +23 -0
  81. package/core/actions/src/update.ts +149 -0
  82. package/core/actions/test.ts +10 -0
  83. package/core/actions/tests/example.test.ts +7 -0
  84. package/core/ai/README.md +62 -0
  85. package/core/ai/node_modules/.bin/mkdist +17 -0
  86. package/core/ai/node_modules/.bin/tsc +17 -0
  87. package/core/ai/node_modules/.bin/tsserver +17 -0
  88. package/core/ai/package.json +55 -0
  89. package/core/ai/src/drivers/openai.ts +1 -0
  90. package/core/ai/src/index.ts +1 -0
  91. package/core/ai/tests/example.test.ts +7 -0
  92. package/core/alias/README.md +62 -0
  93. package/core/alias/node_modules/.bin/mkdist +17 -0
  94. package/core/alias/node_modules/.bin/tsc +17 -0
  95. package/core/alias/node_modules/.bin/tsserver +17 -0
  96. package/core/alias/package.json +51 -0
  97. package/core/alias/src/index.ts +84 -0
  98. package/core/alias/tests/example.test.ts +7 -0
  99. package/core/arrays/README.md +59 -0
  100. package/core/arrays/node_modules/.bin/mkdist +17 -0
  101. package/core/arrays/node_modules/.bin/tsc +17 -0
  102. package/core/arrays/node_modules/.bin/tsserver +17 -0
  103. package/core/arrays/package.json +55 -0
  104. package/core/arrays/src/index.ts +208 -0
  105. package/core/arrays/tests/example.test.ts +7 -0
  106. package/core/auth/README.md +59 -0
  107. package/core/auth/node_modules/.bin/mkdist +17 -0
  108. package/core/auth/node_modules/.bin/tsc +17 -0
  109. package/core/auth/node_modules/.bin/tsserver +17 -0
  110. package/core/auth/package.json +49 -0
  111. package/core/auth/src/index.ts +3 -0
  112. package/core/auth/tests/example.test.ts +7 -0
  113. package/core/build/README.md +59 -0
  114. package/core/build/entries/README.md +7 -0
  115. package/core/build/node_modules/.bin/mkdist +17 -0
  116. package/core/build/node_modules/.bin/tsc +17 -0
  117. package/core/build/node_modules/.bin/tsserver +17 -0
  118. package/core/build/node_modules/.bin/unbuild +17 -0
  119. package/core/build/node_modules/.bin/vite +17 -0
  120. package/core/build/node_modules/.bin/vite-ssg +17 -0
  121. package/core/build/node_modules/.bin/vue-docgen-web-types +17 -0
  122. package/core/build/package.json +76 -0
  123. package/core/build/src/desktop.ts +27 -0
  124. package/core/build/src/example-vue.ts +24 -0
  125. package/core/build/src/example-wc.ts +24 -0
  126. package/core/build/src/functions.ts +56 -0
  127. package/core/build/src/index.ts +7 -0
  128. package/core/build/src/pages.ts +50 -0
  129. package/core/build/src/stacks.ts +198 -0
  130. package/core/build/src/vue-components.ts +74 -0
  131. package/core/build/src/web-components.ts +61 -0
  132. package/core/build/tests/example.test.ts +7 -0
  133. package/core/build/web-types.config.cjs +4 -0
  134. package/core/build/web-types.ts +14 -0
  135. package/core/cache/README.md +59 -0
  136. package/core/cache/node_modules/.bin/mkdist +17 -0
  137. package/core/cache/node_modules/.bin/tsc +17 -0
  138. package/core/cache/node_modules/.bin/tsserver +17 -0
  139. package/core/cache/package.json +60 -0
  140. package/core/cache/src/drivers/dynamodb.ts +117 -0
  141. package/core/cache/src/drivers/memcached.ts +20 -0
  142. package/core/cache/src/drivers/redis.ts +41 -0
  143. package/core/cache/src/index.ts +3 -0
  144. package/core/cache/tests/DynamoDB.test.ts +149 -0
  145. package/core/cache/tests/Memcached.test.ts +52 -0
  146. package/core/cache/tests/Redis.test.ts +82 -0
  147. package/core/cache/vite.config.ts +7 -0
  148. package/core/cli/README.md +129 -0
  149. package/core/cli/node_modules/.bin/esno +17 -0
  150. package/core/cli/node_modules/.bin/mkdist +17 -0
  151. package/core/cli/package.json +69 -0
  152. package/core/cli/src/actions/index.ts +2 -0
  153. package/core/cli/src/actions/install.ts +22 -0
  154. package/core/cli/src/actions/run.ts +72 -0
  155. package/core/cli/src/command.ts +7 -0
  156. package/core/cli/src/console.ts +6 -0
  157. package/core/cli/src/helpers.ts +58 -0
  158. package/core/cli/src/index.ts +8 -0
  159. package/core/cli/src/spinner.ts +3 -0
  160. package/core/cli/src/utilities.ts +1 -0
  161. package/core/cli/tests/example.test.ts +7 -0
  162. package/core/cloud/README.md +59 -0
  163. package/core/cloud/dist/actions/README.md +53 -0
  164. package/core/cloud/node_modules/.bin/mkdist +17 -0
  165. package/core/cloud/node_modules/.bin/tsc +17 -0
  166. package/core/cloud/node_modules/.bin/tsserver +17 -0
  167. package/core/cloud/package.json +53 -0
  168. package/core/cloud/src/actions/README.md +53 -0
  169. package/core/cloud/src/index.ts +1 -0
  170. package/core/cloud/tests/example.test.ts +7 -0
  171. package/core/collections/README.md +71 -0
  172. package/core/collections/node_modules/.bin/mkdist +17 -0
  173. package/core/collections/node_modules/.bin/tsc +17 -0
  174. package/core/collections/node_modules/.bin/tsserver +17 -0
  175. package/core/collections/package.json +56 -0
  176. package/core/collections/src/index.ts +1 -0
  177. package/core/collections/tests/example.test.ts +7 -0
  178. package/core/config/README.md +53 -0
  179. package/core/config/build.config.ts +13 -0
  180. package/core/config/node_modules/.bin/mkdist +17 -0
  181. package/core/config/node_modules/.bin/tsc +17 -0
  182. package/core/config/node_modules/.bin/tsserver +17 -0
  183. package/core/config/node_modules/.bin/unbuild +17 -0
  184. package/core/config/package.json +53 -0
  185. package/core/config/src/helpers.ts +30 -0
  186. package/core/config/src/index.ts +17 -0
  187. package/core/config/tests/example.test.ts +7 -0
  188. package/core/dashboard/README.md +74 -0
  189. package/core/dashboard/node_modules/.bin/mkdist +17 -0
  190. package/core/dashboard/package.json +52 -0
  191. package/core/dashboard/src/index.ts +0 -0
  192. package/core/dashboard/tests/example.test.ts +7 -0
  193. package/core/database/README.md +59 -0
  194. package/core/database/node_modules/.bin/mkdist +17 -0
  195. package/core/database/node_modules/.bin/tsc +17 -0
  196. package/core/database/node_modules/.bin/tsserver +17 -0
  197. package/core/database/package.json +59 -0
  198. package/core/database/src/factory/index.ts +70 -0
  199. package/core/database/src/index.ts +3 -0
  200. package/core/database/src/migrations/index.ts +5 -0
  201. package/core/database/src/seeder/index.ts +10 -0
  202. package/core/database/tests/example.test.ts +7 -0
  203. package/core/datetime/README.md +66 -0
  204. package/core/datetime/node_modules/.bin/mkdist +17 -0
  205. package/core/datetime/node_modules/.bin/tsc +17 -0
  206. package/core/datetime/node_modules/.bin/tsserver +17 -0
  207. package/core/datetime/package.json +55 -0
  208. package/core/datetime/src/index.ts +6 -0
  209. package/core/datetime/tests/example.test.ts +7 -0
  210. package/core/desktop/README.md +49 -0
  211. package/core/desktop/node_modules/.bin/mkdist +17 -0
  212. package/core/desktop/node_modules/.bin/tauri +17 -0
  213. package/core/desktop/node_modules/.bin/tsc +17 -0
  214. package/core/desktop/node_modules/.bin/tsserver +17 -0
  215. package/core/desktop/package.json +69 -0
  216. package/core/desktop/src/drivers/tauri/index.ts +1 -0
  217. package/core/desktop/src/index.ts +1 -0
  218. package/core/desktop/tests/example.test.ts +7 -0
  219. package/core/docs/README.md +59 -0
  220. package/core/docs/node_modules/.bin/mkdist +17 -0
  221. package/core/docs/node_modules/.bin/tsc +17 -0
  222. package/core/docs/node_modules/.bin/tsserver +17 -0
  223. package/core/docs/node_modules/.bin/vitepress +17 -0
  224. package/core/docs/package.json +53 -0
  225. package/core/docs/src/index.ts +4 -0
  226. package/core/docs/tests/example.test.ts +7 -0
  227. package/core/domains/README.md +56 -0
  228. package/core/domains/node_modules/.bin/mkdist +17 -0
  229. package/core/domains/node_modules/.bin/tsc +17 -0
  230. package/core/domains/node_modules/.bin/tsserver +17 -0
  231. package/core/domains/package.json +52 -0
  232. package/core/domains/src/index.ts +1 -0
  233. package/core/domains/tests/example.test.ts +7 -0
  234. package/core/drivers/README.md +53 -0
  235. package/core/drivers/node_modules/.bin/mkdist +17 -0
  236. package/core/drivers/node_modules/.bin/tsc +17 -0
  237. package/core/drivers/node_modules/.bin/tsserver +17 -0
  238. package/core/drivers/package.json +53 -0
  239. package/core/drivers/src/index.ts +10 -0
  240. package/core/drivers/tests/example.test.ts +7 -0
  241. package/core/email/README.md +89 -0
  242. package/core/email/node_modules/.bin/mkdist +17 -0
  243. package/core/email/node_modules/.bin/tsc +17 -0
  244. package/core/email/node_modules/.bin/tsserver +17 -0
  245. package/core/email/package.json +57 -0
  246. package/core/email/src/index.ts +1 -0
  247. package/core/email/tests/example.test.ts +7 -0
  248. package/core/error-handling/README.md +131 -0
  249. package/core/error-handling/node_modules/.bin/mkdist +17 -0
  250. package/core/error-handling/node_modules/.bin/tsc +17 -0
  251. package/core/error-handling/node_modules/.bin/tsserver +17 -0
  252. package/core/error-handling/package.json +55 -0
  253. package/core/error-handling/src/index.ts +15 -0
  254. package/core/error-handling/tests/example.test.ts +7 -0
  255. package/core/git/README.md +69 -0
  256. package/core/git/node_modules/.bin/bumpp +17 -0
  257. package/core/git/node_modules/.bin/commitizen +17 -0
  258. package/core/git/node_modules/.bin/conventional-changelog +17 -0
  259. package/core/git/node_modules/.bin/cz +17 -0
  260. package/core/git/node_modules/.bin/giget +17 -0
  261. package/core/git/node_modules/.bin/git-cz +17 -0
  262. package/core/git/node_modules/.bin/mkdist +17 -0
  263. package/core/git/node_modules/.bin/simple-git-hooks +17 -0
  264. package/core/git/node_modules/.bin/tsc +17 -0
  265. package/core/git/node_modules/.bin/tsserver +17 -0
  266. package/core/git/package.json +59 -0
  267. package/core/git/src/index.ts +1 -0
  268. package/core/git/tests/example.test.ts +7 -0
  269. package/core/lint/README.md +73 -0
  270. package/core/lint/node_modules/.bin/eslint +17 -0
  271. package/core/lint/node_modules/.bin/lint-staged +17 -0
  272. package/core/lint/node_modules/.bin/mkdist +17 -0
  273. package/core/lint/node_modules/.bin/tsc +17 -0
  274. package/core/lint/node_modules/.bin/tsserver +17 -0
  275. package/core/lint/package.json +58 -0
  276. package/core/lint/src/index.ts +3 -0
  277. package/core/lint/tests/example.test.ts +7 -0
  278. package/core/logging/README.md +58 -0
  279. package/core/logging/debug-test.ts +8 -0
  280. package/core/logging/node_modules/.bin/mkdist +17 -0
  281. package/core/logging/node_modules/.bin/tsc +17 -0
  282. package/core/logging/node_modules/.bin/tsserver +17 -0
  283. package/core/logging/package.json +55 -0
  284. package/core/logging/src/index.ts +15 -0
  285. package/core/logging/tests/example.test.ts +7 -0
  286. package/core/modules/README.md +51 -0
  287. package/core/modules/node_modules/.bin/mkdist +17 -0
  288. package/core/modules/node_modules/.bin/tsc +17 -0
  289. package/core/modules/node_modules/.bin/tsserver +17 -0
  290. package/core/modules/package.json +54 -0
  291. package/core/modules/src/i18n.ts +23 -0
  292. package/core/modules/src/nprogress.ts +12 -0
  293. package/core/modules/src/pwa.ts +12 -0
  294. package/core/modules/tests/example.test.ts +7 -0
  295. package/core/notifications/README.md +89 -0
  296. package/core/notifications/build.config.ts +14 -0
  297. package/core/notifications/node_modules/.bin/maizzle +17 -0
  298. package/core/notifications/node_modules/.bin/mkdist +17 -0
  299. package/core/notifications/node_modules/.bin/tsc +17 -0
  300. package/core/notifications/node_modules/.bin/tsserver +17 -0
  301. package/core/notifications/node_modules/.bin/unbuild +17 -0
  302. package/core/notifications/package.json +88 -0
  303. package/core/notifications/src/drivers/chat/discord.ts +15 -0
  304. package/core/notifications/src/drivers/chat/index.ts +2 -0
  305. package/core/notifications/src/drivers/chat/slack.ts +22 -0
  306. package/core/notifications/src/drivers/email/actions/send.ts +36 -0
  307. package/core/notifications/src/drivers/email/emailjs.ts +21 -0
  308. package/core/notifications/src/drivers/email/index.ts +9 -0
  309. package/core/notifications/src/drivers/email/mailgun.ts +19 -0
  310. package/core/notifications/src/drivers/email/mailjet.ts +18 -0
  311. package/core/notifications/src/drivers/email/mandrill.ts +17 -0
  312. package/core/notifications/src/drivers/email/netcore.ts +17 -0
  313. package/core/notifications/src/drivers/email/nodemailer.ts +21 -0
  314. package/core/notifications/src/drivers/email/postmark.ts +17 -0
  315. package/core/notifications/src/drivers/email/sendgrid.ts +18 -0
  316. package/core/notifications/src/drivers/email/ses.ts +19 -0
  317. package/core/notifications/src/drivers/email/tailwind.config.ts +37 -0
  318. package/core/notifications/src/drivers/sms/gupshup.ts +21 -0
  319. package/core/notifications/src/drivers/sms/index.ts +8 -0
  320. package/core/notifications/src/drivers/sms/nexmo.ts +22 -0
  321. package/core/notifications/src/drivers/sms/plivo.ts +22 -0
  322. package/core/notifications/src/drivers/sms/sms77.ts +21 -0
  323. package/core/notifications/src/drivers/sms/sns.ts +22 -0
  324. package/core/notifications/src/drivers/sms/telnyx.ts +22 -0
  325. package/core/notifications/src/drivers/sms/termii.ts +21 -0
  326. package/core/notifications/src/drivers/sms/twilio.ts +22 -0
  327. package/core/notifications/src/index.ts +25 -0
  328. package/core/notifications/src/utils/config.ts +5 -0
  329. package/core/notifications/src/utils/template.html +8 -0
  330. package/core/notifications/tests/chat/Slack.test.ts +24 -0
  331. package/core/notifications/tests/email/Mailgun.test.ts +29 -0
  332. package/core/notifications/tests/email/Sendgrid.test.ts +30 -0
  333. package/core/notifications/tests/example.test.ts +7 -0
  334. package/core/notifications/tests/sms/Twilio.test.ts +27 -0
  335. package/core/objects/README.md +71 -0
  336. package/core/objects/node_modules/.bin/mkdist +17 -0
  337. package/core/objects/node_modules/.bin/tsc +17 -0
  338. package/core/objects/node_modules/.bin/tsserver +17 -0
  339. package/core/objects/package.json +53 -0
  340. package/core/objects/src/index.ts +130 -0
  341. package/core/objects/tests/example.test.ts +7 -0
  342. package/core/path/README.md +64 -0
  343. package/core/path/node_modules/.bin/mkdist +17 -0
  344. package/core/path/node_modules/.bin/tsc +17 -0
  345. package/core/path/node_modules/.bin/tsserver +17 -0
  346. package/core/path/package.json +55 -0
  347. package/core/path/src/index.ts +353 -0
  348. package/core/path/tests/example.test.ts +7 -0
  349. package/core/payments/README.md +64 -0
  350. package/core/payments/node_modules/.bin/mkdist +17 -0
  351. package/core/payments/node_modules/.bin/tsc +17 -0
  352. package/core/payments/node_modules/.bin/tsserver +17 -0
  353. package/core/payments/package.json +52 -0
  354. package/core/payments/src/drivers/stripe.ts +1 -0
  355. package/core/payments/src/index.ts +1 -0
  356. package/core/payments/tests/example.test.ts +7 -0
  357. package/core/realtime/README.md +59 -0
  358. package/core/realtime/node_modules/.bin/mkdist +17 -0
  359. package/core/realtime/node_modules/.bin/tsc +17 -0
  360. package/core/realtime/node_modules/.bin/tsserver +17 -0
  361. package/core/realtime/package.json +51 -0
  362. package/core/realtime/src/drivers/index.ts +3 -0
  363. package/core/realtime/src/index.ts +3 -0
  364. package/core/realtime/tests/example.test.ts +7 -0
  365. package/core/router/README.md +59 -0
  366. package/core/router/node_modules/.bin/mkdist +17 -0
  367. package/core/router/node_modules/.bin/tsc +17 -0
  368. package/core/router/node_modules/.bin/tsserver +17 -0
  369. package/core/router/package.json +54 -0
  370. package/core/router/src/index.ts +14 -0
  371. package/core/router/tests/example.test.ts +7 -0
  372. package/core/search-engine/README.md +66 -0
  373. package/core/search-engine/node_modules/.bin/mkdist +17 -0
  374. package/core/search-engine/node_modules/.bin/tsc +17 -0
  375. package/core/search-engine/node_modules/.bin/tsserver +17 -0
  376. package/core/search-engine/package.json +64 -0
  377. package/core/search-engine/src/drivers/meilisearch.ts +37 -0
  378. package/core/search-engine/src/helpers.ts +74 -0
  379. package/core/search-engine/src/index.ts +56 -0
  380. package/core/search-engine/tests/example.test.ts +7 -0
  381. package/core/security/README.md +66 -0
  382. package/core/security/node_modules/.bin/mkdist +17 -0
  383. package/core/security/node_modules/.bin/tsc +17 -0
  384. package/core/security/node_modules/.bin/tsserver +17 -0
  385. package/core/security/package.json +57 -0
  386. package/core/security/src/crypt.ts +14 -0
  387. package/core/security/src/hash.ts +52 -0
  388. package/core/security/src/index.ts +3 -0
  389. package/core/security/src/key.ts +11 -0
  390. package/core/security/tests/example.test.ts +7 -0
  391. package/core/server/README.md +51 -0
  392. package/core/server/node_modules/.bin/mkdist +17 -0
  393. package/core/server/node_modules/.bin/nitro +17 -0
  394. package/core/server/node_modules/.bin/nitropack +17 -0
  395. package/core/server/node_modules/.bin/tsc +17 -0
  396. package/core/server/node_modules/.bin/tsserver +17 -0
  397. package/core/server/node_modules/.bin/vite +17 -0
  398. package/core/server/package.json +59 -0
  399. package/core/server/src/config.ts +6 -0
  400. package/core/server/src/index.ts +5 -0
  401. package/core/server/src/nitro.config.ts +6 -0
  402. package/core/server/tests/example.test.ts +7 -0
  403. package/core/storage/README.md +74 -0
  404. package/core/storage/node_modules/.bin/mkdist +17 -0
  405. package/core/storage/node_modules/.bin/tsc +17 -0
  406. package/core/storage/node_modules/.bin/tsserver +17 -0
  407. package/core/storage/package.json +62 -0
  408. package/core/storage/src/index.ts +193 -0
  409. package/core/storage/tests/example.test.ts +7 -0
  410. package/core/strings/README.md +68 -0
  411. package/core/strings/build.config.ts +15 -0
  412. package/core/strings/node_modules/.bin/mkdist +17 -0
  413. package/core/strings/node_modules/.bin/tsc +17 -0
  414. package/core/strings/node_modules/.bin/tsserver +17 -0
  415. package/core/strings/node_modules/.bin/unbuild +17 -0
  416. package/core/strings/package.json +69 -0
  417. package/core/strings/src/index.ts +97 -0
  418. package/core/strings/tests/example.test.ts +7 -0
  419. package/core/testing/README.md +59 -0
  420. package/core/testing/node_modules/.bin/mkdist +17 -0
  421. package/core/testing/node_modules/.bin/tsc +17 -0
  422. package/core/testing/node_modules/.bin/tsserver +17 -0
  423. package/core/testing/node_modules/.bin/vitest +17 -0
  424. package/core/testing/package.json +57 -0
  425. package/core/testing/src/index.ts +1 -0
  426. package/core/types/README.md +59 -0
  427. package/core/types/node_modules/.bin/markdown-it +17 -0
  428. package/core/types/node_modules/.bin/mkdist +17 -0
  429. package/core/types/node_modules/.bin/tsc +17 -0
  430. package/core/types/node_modules/.bin/tsserver +17 -0
  431. package/core/types/node_modules/.bin/vite-ssg +17 -0
  432. package/core/types/node_modules/.bin/vitepress +17 -0
  433. package/core/types/package.json +71 -0
  434. package/core/types/src/app.ts +140 -0
  435. package/core/types/src/auto-imports.ts +3 -0
  436. package/core/types/src/build.ts +2 -0
  437. package/core/types/src/cli.ts +198 -0
  438. package/core/types/src/components.ts +66 -0
  439. package/core/types/src/database.ts +3 -0
  440. package/core/types/src/debug.ts +6 -0
  441. package/core/types/src/deploy.ts +11 -0
  442. package/core/types/src/docs.ts +3 -0
  443. package/core/types/src/errors.ts +6 -0
  444. package/core/types/src/exit-code.ts +10 -0
  445. package/core/types/src/fs.ts +17 -0
  446. package/core/types/src/git.ts +131 -0
  447. package/core/types/src/hashing.ts +107 -0
  448. package/core/types/src/i18n.ts +19 -0
  449. package/core/types/src/index.ts +28 -0
  450. package/core/types/src/inspect.ts +10 -0
  451. package/core/types/src/layout.ts +8 -0
  452. package/core/types/src/library.ts +148 -0
  453. package/core/types/src/manifest.ts +9 -0
  454. package/core/types/src/markdown.ts +198 -0
  455. package/core/types/src/notifications.ts +9 -0
  456. package/core/types/src/pages.ts +8 -0
  457. package/core/types/src/promise.ts +1 -0
  458. package/core/types/src/pwa.ts +8 -0
  459. package/core/types/src/search-engine.ts +118 -0
  460. package/core/types/src/ssg.ts +3 -0
  461. package/core/types/src/ui.ts +184 -0
  462. package/core/types/src/utils.ts +38 -0
  463. package/core/ui/README.md +66 -0
  464. package/core/ui/node_modules/.bin/mkdist +17 -0
  465. package/core/ui/node_modules/.bin/tsc +17 -0
  466. package/core/ui/node_modules/.bin/tsserver +17 -0
  467. package/core/ui/node_modules/.bin/vue-tsc +17 -0
  468. package/core/ui/package.json +66 -0
  469. package/core/ui/src/index.ts +17 -0
  470. package/core/ui/src/unocss.ts +45 -0
  471. package/core/ui/tests/example.test.ts +7 -0
  472. package/core/utils/node_modules/.bin/esno +17 -0
  473. package/core/utils/node_modules/.bin/mkdist +17 -0
  474. package/core/utils/node_modules/.bin/rimraf +17 -0
  475. package/core/utils/node_modules/.bin/tsc +17 -0
  476. package/core/utils/node_modules/.bin/tsserver +17 -0
  477. package/core/utils/package.json +77 -0
  478. package/core/utils/src/base.ts +10 -0
  479. package/core/utils/src/function.ts +32 -0
  480. package/core/utils/src/guards.ts +39 -0
  481. package/core/utils/src/helpers.ts +134 -0
  482. package/core/utils/src/index.ts +13 -0
  483. package/core/utils/src/is.ts +12 -0
  484. package/core/utils/src/p.ts +118 -0
  485. package/core/utils/src/promise.ts +91 -0
  486. package/core/utils/src/vendor.ts +1 -0
  487. package/core/utils/tests/example.test.ts +7 -0
  488. package/core/x-ray/README.md +55 -0
  489. package/core/x-ray/index.html +13 -0
  490. package/core/x-ray/node_modules/.bin/mkdist +17 -0
  491. package/core/x-ray/node_modules/.bin/tsc +17 -0
  492. package/core/x-ray/node_modules/.bin/tsserver +17 -0
  493. package/core/x-ray/package.json +63 -0
  494. package/core/x-ray/routes/index.ts +19 -0
  495. package/core/x-ray/src/client.ts +14 -0
  496. package/core/x-ray/src/desktop/api/nitro.config.ts +18 -0
  497. package/core/x-ray/src/desktop/api/routes/api/logs.ts +7 -0
  498. package/core/x-ray/src/desktop/api/routes/api/store-logs.ts +22 -0
  499. package/core/x-ray/src/desktop/api/src/types.ts +7 -0
  500. package/core/x-ray/src/desktop/api/storage/index.ts +7 -0
  501. package/core/x-ray/src/desktop/app.vue +377 -0
  502. package/core/x-ray/src/desktop/functions/http.ts +26 -0
  503. package/core/x-ray/src/desktop/functions/types.ts +7 -0
  504. package/core/x-ray/src/desktop/main.ts +14 -0
  505. package/core/x-ray/src/desktop/modules/counter/mod.vue +44 -0
  506. package/core/x-ray/src/desktop/modules/fetcher/mod.vue +63 -0
  507. package/core/x-ray/src/desktop/plugins/unified/unified-app.ts +5 -0
  508. package/core/x-ray/src/desktop/plugins/unified/unified-styles.scss +0 -0
  509. package/core/x-ray/src/desktop/services/http.ts +45 -0
  510. package/core/x-ray/src/desktop/styles/app.scss +0 -0
  511. package/core/x-ray/src/http.ts +26 -0
  512. package/core/x-ray/src/index.ts +42 -0
  513. package/core/x-ray/src/ray.config.js +27 -0
  514. package/core/x-ray/src/types.ts +7 -0
  515. package/core/x-ray/tests/example.test.ts +7 -0
  516. package/custom-elements.json +14 -0
  517. package/examples/vue/App.vue +12 -0
  518. package/examples/vue/favicon.png +0 -0
  519. package/examples/vue/index.html +20 -0
  520. package/examples/web/favicon.png +0 -0
  521. package/examples/web/index.html +13 -0
  522. package/functions/package.json +41 -0
  523. package/netlify.toml +18 -0
  524. package/package.json +69 -99
  525. package/pages/App.vue +26 -0
  526. package/pages/index.html +23 -0
  527. package/pages/main.ts +26 -0
  528. package/pages/public/_headers +3 -0
  529. package/pages/public/favicon-dark.svg +3 -0
  530. package/pages/public/favicon.svg +3 -0
  531. package/pages/public/pwa-192x192.png +0 -0
  532. package/pages/public/pwa-512x512.png +0 -0
  533. package/pages/public/safari-pinned-tab.svg +41 -0
  534. package/pages/styles/main.css +29 -0
  535. package/pages/styles/markdown.css +28 -0
  536. package/shims.d.ts +29 -0
  537. package/simple-git-hooks.cjs +4 -0
  538. package/tsconfig.json +115 -0
  539. package/vitest.config.ts +21 -0
  540. package/web-types.json +67 -0
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsc" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsc" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsserver" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsserver" "$@"
17
+ fi
@@ -0,0 +1,77 @@
1
+ {
2
+ "name": "@stacksjs/utils",
3
+ "type": "module",
4
+ "version": "0.44.9",
5
+ "packageManager": "pnpm@7.18.2",
6
+ "description": "The Stacks helper functions.",
7
+ "author": "Chris Breuer",
8
+ "license": "MIT",
9
+ "funding": "https://github.com/sponsors/chrisbbreuer",
10
+ "homepage": "https://github.com/stacksjs/stacks/tree/main/.stacks/core/helpers#readme",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/stacksjs/stacks.git",
14
+ "directory": "./.stacks/core/helpers"
15
+ },
16
+ "bugs": {
17
+ "url": "https://github.com/stacksjs/stacks/issues"
18
+ },
19
+ "keywords": [
20
+ "objects",
21
+ "strings",
22
+ "arrays",
23
+ "alias",
24
+ "helpers",
25
+ "utilities",
26
+ "functions",
27
+ "stacks"
28
+ ],
29
+ "main": "dist/index.mjs",
30
+ "module": "dist/index.mjs",
31
+ "types": "dist/index.d.ts",
32
+ "contributors": [
33
+ "Chris Breuer <chris@ow3.org>"
34
+ ],
35
+ "files": [
36
+ "dist",
37
+ "README.md"
38
+ ],
39
+ "engines": {
40
+ "node": ">=v18.12.1",
41
+ "pnpm": ">=7.18.2"
42
+ },
43
+ "scripts": {
44
+ "build": "mkdist -d",
45
+ "dev": "mkdist -d",
46
+ "prepublishOnly": "pnpm run build",
47
+ "typecheck": "tsc --noEmit"
48
+ },
49
+ "peerDependencies": {
50
+ "@stacksjs/arrays": "workspace:*",
51
+ "@stacksjs/cli": "workspace:*",
52
+ "@stacksjs/config": "workspace:*",
53
+ "@stacksjs/lint": "workspace:*",
54
+ "@stacksjs/path": "workspace:*",
55
+ "@stacksjs/storage": "workspace:*",
56
+ "@stacksjs/types": "workspace:*",
57
+ "@vueuse/core": "^9.6.0",
58
+ "@vueuse/head": "^1.0.22",
59
+ "@vueuse/math": "^9.6.0",
60
+ "@vueuse/shared": "^9.6.0",
61
+ "defu": "^6.1.1",
62
+ "detect-indent": "^7.0.1",
63
+ "detect-newline": "^4.0.0",
64
+ "dinero.js": "2.0.0-alpha.12",
65
+ "esno": "^0.16.3",
66
+ "fast-glob": "^3.2.12",
67
+ "kolorist": "1.6.0",
68
+ "p-limit": "^4.0.0",
69
+ "rimraf": "^3.0.2",
70
+ "throttle-debounce": "^5.0.0"
71
+ },
72
+ "devDependencies": {
73
+ "@stacksjs/testing": "workspace:*",
74
+ "mkdist": "^1.0.0",
75
+ "typescript": "^4.9.4"
76
+ }
77
+ }
@@ -0,0 +1,10 @@
1
+ // export const assert = (condition: boolean, message: string): asserts condition => {
2
+ // if (!condition)
3
+ // throw new Error(message)
4
+ // }
5
+ export const toString = (v: any) => Object.prototype.toString.call(v)
6
+ // export const noop = () => {}
7
+
8
+ export const loop = (times: number, callback: any) => {
9
+ [...Array(times)].forEach((item, i) => callback(i))
10
+ }
@@ -0,0 +1,32 @@
1
+ import type { Fn, Nullable } from '@stacksjs/types'
2
+
3
+ /**
4
+ * Call every function in an array
5
+ */
6
+ export function batchInvoke(functions: Nullable<Fn>[]) {
7
+ functions.forEach(fn => fn && fn())
8
+ }
9
+
10
+ // /**
11
+ // * Call the function
12
+ // */
13
+ // export function invoke(fn: Fn) {
14
+ // return fn()
15
+ // }
16
+
17
+ /**
18
+ * Pass the value through the callback, and return the value
19
+ *
20
+ * @example
21
+ * ```
22
+ * function createUser(name: string): User {
23
+ * return tap(new User, user => {
24
+ * user.name = name
25
+ * })
26
+ * }
27
+ * ```
28
+ */
29
+ export function tap<T>(value: T, callback: (value: T) => void): T {
30
+ callback(value)
31
+ return value
32
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Type guard to filter out null-ish values
3
+ *
4
+ * @category Guards
5
+ * @example array.filter(notNullish)
6
+ */
7
+ export function notNullish<T>(v: T | null | undefined): v is NonNullable<T> {
8
+ return v != null
9
+ }
10
+
11
+ /**
12
+ * Type guard to filter out null values
13
+ *
14
+ * @category Guards
15
+ * @example array.filter(noNull)
16
+ */
17
+ export function noNull<T>(v: T | null): v is Exclude<T, null> {
18
+ return v !== null
19
+ }
20
+
21
+ /**
22
+ * Type guard to filter out null-ish values
23
+ *
24
+ * @category Guards
25
+ * @example array.filter(notUndefined)
26
+ */
27
+ export function notUndefined<T>(v: T): v is Exclude<T, undefined> {
28
+ return v !== undefined
29
+ }
30
+
31
+ /**
32
+ * Type guard to filter out falsy values
33
+ *
34
+ * @category Guards
35
+ * @example array.filter(isTruthy)
36
+ */
37
+ export function isTruthy<T>(v: T): v is NonNullable<T> {
38
+ return Boolean(v)
39
+ }
@@ -0,0 +1,134 @@
1
+ import { log, runCommand, spawn } from '@stacksjs/cli'
2
+ import { type CliOptions, type Manifest, type NpmScript } from '@stacksjs/types'
3
+ import { frameworkPath, projectPath } from '@stacksjs/path'
4
+ import storage from '@stacksjs/storage'
5
+ import { ui } from '@stacksjs/config'
6
+
7
+ export async function isProjectCreated() {
8
+ if (storage.isFile('.env'))
9
+ return await isAppKeySet()
10
+
11
+ // copy the .env.example to become the .env file
12
+ if (storage.isFile('.env.example'))
13
+ await spawn('cp .env.example .env', { stdio: 'inherit', cwd: projectPath() })
14
+
15
+ return await isAppKeySet()
16
+ }
17
+
18
+ export async function readVersion() {
19
+ const packageJson = await storage.fs.readJson(frameworkPath('package.json'))
20
+ return packageJson.version
21
+ }
22
+
23
+ export async function isAppKeySet() {
24
+ const env = await storage.readTextFile('.env', projectPath())
25
+ const lines = env.data.split('\n')
26
+ const appKey = lines.find(line => line.startsWith('APP_KEY='))
27
+
28
+ if (appKey && appKey.length > 16)
29
+ return true
30
+
31
+ return false
32
+ }
33
+
34
+ /**
35
+ * Determines the utilized reset preset.
36
+ *
37
+ * @url https://www.npmjs.com/package/@unocss/reset
38
+ * @param preset
39
+ */
40
+ export function determineResetPreset(preset?: string) {
41
+ if (ui.reset)
42
+ preset = ui.reset
43
+
44
+ if (preset === 'tailwind')
45
+ return ['import \'@unocss/reset/tailwind.css\'']
46
+
47
+ if (preset === 'normalize')
48
+ return ['import \'@unocss/reset/normalize.css\'']
49
+
50
+ if (preset === 'sanitize')
51
+ return ['import \'@unocss/reset/sanitize/sanitize.css\'', 'import \'@unocss/reset/sanitize/assets.css']
52
+
53
+ if (preset === 'eric-meyer')
54
+ return ['import \'@unocss/reset/eric-meyer.css\'']
55
+
56
+ if (preset === 'antfu')
57
+ return ['import \'@unocss/reset/antfu.css\'']
58
+
59
+ return []
60
+ }
61
+
62
+ export function env(key?: string, fallback?: any) {
63
+ // console.log('isClient', isClient)
64
+ // if (key && import.meta?.env)
65
+ // return import.meta.env[key]
66
+
67
+ return fallback
68
+ }
69
+
70
+ export function config(key?: string, fallback?: string) {
71
+ // eslint-disable-next-line no-console
72
+ console.log('key', key, 'fallback', fallback)
73
+ // return key ? configArr[key as string] : fallback
74
+ }
75
+
76
+ /**
77
+ * Determines whether the specified value is a package manifest.
78
+ */
79
+ export function isManifest(obj: any): obj is Manifest {
80
+ return obj
81
+ && typeof obj === 'object'
82
+ && isOptionalString(obj.name)
83
+ && isOptionalString(obj.version)
84
+ && isOptionalString(obj.description)
85
+ }
86
+
87
+ /**
88
+ * Determines whether the specified value is a string, null, or undefined.
89
+ */
90
+ export function isOptionalString(value: any): value is string | undefined {
91
+ const type = typeof value
92
+ return value === null
93
+ || type === 'undefined'
94
+ || type === 'string'
95
+ }
96
+
97
+ export async function setEnvValue(key: string, value: string) {
98
+ const file = await storage.readTextFile(projectPath('.env'))
99
+
100
+ await storage.writeTextFile({
101
+ path: projectPath('.env'),
102
+ data: file.data.replace(/APP_KEY=/g, `APP_KEY=${value}`), // todo: do not hardcode the APP_KEY here and instead use the key parameter
103
+ })
104
+ }
105
+
106
+ /**
107
+ * Runs the specified NPM script in the package.json file.
108
+ */
109
+ export async function runNpmScript(script: NpmScript, options?: CliOptions) {
110
+ const { data: manifest } = await storage.readJsonFile('package.json', frameworkPath())
111
+
112
+ if (isManifest(manifest) && hasScript(manifest, script))
113
+ return await runCommand(`pnpm run ${script}`, options)
114
+
115
+ log.error(`The specified npm script "${script}" does not exist in the package.json file.`)
116
+ process.exit()
117
+ }
118
+
119
+ /**
120
+ * Determines whether the specified NPM script exists in the given manifest.
121
+ */
122
+ export function hasScript(manifest: Manifest, script: NpmScript): boolean {
123
+ const scripts = manifest.scripts as Record<NpmScript, string> | undefined
124
+
125
+ if (scripts && typeof scripts === 'object')
126
+ return Boolean(scripts[script])
127
+
128
+ return false
129
+ }
130
+
131
+ export * from '@dinero.js/currencies'
132
+ export * from 'dinero.js'
133
+ export * as detectIndent from 'detect-indent'
134
+ export { detectNewline } from 'detect-newline'
@@ -0,0 +1,13 @@
1
+ export * from './base'
2
+ export * from './helpers'
3
+ export * from './promise'
4
+ export * from './function'
5
+ export * from './guards'
6
+ export * from './is'
7
+ export * from './p'
8
+ export * from './vendor'
9
+
10
+ export * from '@vueuse/core'
11
+ export * from '@vueuse/math'
12
+ // export * from '@vueuse/head'
13
+ export * from '@vueuse/shared'
@@ -0,0 +1,12 @@
1
+ // import { toString } from './base'
2
+
3
+ // export const isDef = <T = any>(val?: T): val is T => typeof val !== 'undefined'
4
+ // export const isBoolean = (val: any): val is boolean => typeof val === 'boolean'
5
+ // export const isFunction = <T extends Function> (val: any): val is T => typeof val === 'function'
6
+ // export const isNumber = (val: any): val is number => typeof val === 'number'
7
+ // export const isString = (val: unknown): val is string => typeof val === 'string'
8
+ // export const isObject = (val: any): val is object => toString(val) === '[object Object]'
9
+
10
+ // export const isWindow = (val: any): boolean => typeof window !== 'undefined' && toString(val) === '[object Window]'
11
+ export const isBrowser = typeof window !== 'undefined'
12
+ export const isServer = typeof document === 'undefined' // https://remix.run/docs/en/v1/pages/gotchas#typeof-window-checks
@@ -0,0 +1,118 @@
1
+ import pLimit from 'p-limit'
2
+
3
+ /**
4
+ * Internal marker for filtered items
5
+ */
6
+ const VOID = Symbol('p-void')
7
+
8
+ interface POptions {
9
+ /**
10
+ * How many promises are resolved at the same time.
11
+ */
12
+ concurrency?: number | undefined
13
+ }
14
+
15
+ class PInstance<T = any> extends Promise<Awaited<T>[]> {
16
+ private promises = new Set<T | Promise<T>>()
17
+
18
+ get promise(): Promise<Awaited<T>[]> {
19
+ let batch
20
+ const items = [...Array.from(this.items), ...Array.from(this.promises)]
21
+
22
+ if (this.options?.concurrency) {
23
+ const limit = pLimit(this.options.concurrency)
24
+ batch = Promise.all(items.map(p => limit(() => p)))
25
+ }
26
+ else {
27
+ batch = Promise.all(items)
28
+ }
29
+
30
+ return batch.then(l => l.filter((i: any) => i !== VOID))
31
+ }
32
+
33
+ constructor(public items: Iterable<T> = [], public options?: POptions) {
34
+ super(() => {})
35
+ }
36
+
37
+ add(...args: (T | Promise<T>)[]) {
38
+ args.forEach((i) => {
39
+ this.promises.add(i)
40
+ })
41
+ }
42
+
43
+ map<U>(fn: (value: Awaited<T>, index: number) => U): PInstance<Promise<U>> {
44
+ return new PInstance(
45
+ Array.from(this.items)
46
+ .map(async (i, idx) => {
47
+ const v = await i
48
+ if ((v as any) === VOID)
49
+ return VOID as unknown as U
50
+ return fn(v, idx)
51
+ }),
52
+ this.options,
53
+ )
54
+ }
55
+
56
+ filter(fn: (value: Awaited<T>, index: number) => boolean | Promise<boolean>): PInstance<Promise<T>> {
57
+ return new PInstance(
58
+ Array.from(this.items)
59
+ .map(async (i, idx) => {
60
+ const v = await i
61
+ const r = await fn(v, idx)
62
+ if (!r)
63
+ return VOID as unknown as T
64
+ return v
65
+ }),
66
+ this.options,
67
+ )
68
+ }
69
+
70
+ forEach(fn: (value: Awaited<T>, index: number) => void): Promise<void> {
71
+ return this.map(fn).then()
72
+ }
73
+
74
+ reduce<U>(fn: (previousValue: U, currentValue: Awaited<T>, currentIndex: number, array: Awaited<T>[]) => U, initialValue: U): Promise<U> {
75
+ return this.promise.then(array => array.reduce(fn, initialValue))
76
+ }
77
+
78
+ clear() {
79
+ this.promises.clear()
80
+ }
81
+
82
+ then(fn?: () => PromiseLike<any>) {
83
+ const p = this.promise
84
+ if (fn)
85
+ return p.then(fn)
86
+ else
87
+ return p
88
+ }
89
+
90
+ catch(fn?: (err: unknown) => PromiseLike<any>) {
91
+ return this.promise.catch(fn)
92
+ }
93
+
94
+ finally(fn?: () => void) {
95
+ return this.promise.finally(fn)
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Utility for managing multiple promises.
101
+ *
102
+ * @see https://github.com/antfu/utils/tree/main/docs/p.md
103
+ * @category Promise
104
+ * @example
105
+ * ```
106
+ * import { p } from '@antfu/utils'
107
+ *
108
+ * const items = [1, 2, 3, 4, 5]
109
+ *
110
+ * await p(items)
111
+ * .map(async i => await multiply(i, 3))
112
+ * .filter(async i => await isEven(i))
113
+ * // [6, 12]
114
+ * ```
115
+ */
116
+ export function p<T = any>(items?: Iterable<T>, options?: POptions): PInstance<T> {
117
+ return new PInstance(items, options)
118
+ }
@@ -0,0 +1,91 @@
1
+ import { remove } from '@stacksjs/arrays'
2
+ import type { Fn } from '@stacksjs/types'
3
+
4
+ /**
5
+ * Promised `setTimeout`
6
+ *
7
+ * @category Promise
8
+ */
9
+ export function sleep(ms: number, callback?: Fn<any>) {
10
+ return new Promise<void>(resolve =>
11
+ setTimeout(async () => {
12
+ await callback?.()
13
+ resolve()
14
+ }, ms),
15
+ )
16
+ }
17
+
18
+ /**
19
+ * Create a promise lock
20
+ *
21
+ * @category Promise
22
+ * @example
23
+ * ```
24
+ * const lock = createPromiseLock()
25
+ *
26
+ * lock.run(async () => {
27
+ * await doSomething()
28
+ * })
29
+ *
30
+ * // in anther context:
31
+ * await lock.wait() // it will wait all tasking finished
32
+ * ```
33
+ */
34
+ export function createPromiseLock() {
35
+ const locks: Promise<any>[] = []
36
+
37
+ return {
38
+ async run<T = void>(fn: () => Promise<T>): Promise<T> {
39
+ const p = fn()
40
+ locks.push(p)
41
+ try {
42
+ return await p
43
+ }
44
+ finally {
45
+ remove(locks, p)
46
+ }
47
+ },
48
+ async wait(): Promise<void> {
49
+ await Promise.allSettled(locks)
50
+ },
51
+ isWaiting() {
52
+ return Boolean(locks.length)
53
+ },
54
+ clear() {
55
+ locks.length = 0
56
+ },
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Promise with `resolve` and `reject` methods of itself
62
+ */
63
+ export interface ControlledPromise<T = void> extends Promise<T> {
64
+ resolve(value: T | PromiseLike<T>): void
65
+ reject(reason?: any): void
66
+ }
67
+
68
+ /**
69
+ * Return a Promise with `resolve` and `reject` methods
70
+ *
71
+ * @category Promise
72
+ * @example
73
+ * ```
74
+ * const promise = createControlledPromise()
75
+ *
76
+ * await promise
77
+ *
78
+ * // in anther context:
79
+ * promise.resolve(data)
80
+ * ```
81
+ */
82
+ export function createControlledPromise<T>(): ControlledPromise<T> {
83
+ let resolve: any, reject: any
84
+ const promise = new Promise<T>((_resolve, _reject) => {
85
+ resolve = _resolve
86
+ reject = _reject
87
+ }) as ControlledPromise<T>
88
+ promise.resolve = resolve
89
+ promise.reject = reject
90
+ return promise
91
+ }
@@ -0,0 +1 @@
1
+ export { throttle, debounce } from 'throttle-debounce'
@@ -0,0 +1,7 @@
1
+ import { assert, describe, test } from 'vitest'
2
+
3
+ describe('example test', () => {
4
+ test('assert', () => {
5
+ assert.equal(1, 1)
6
+ })
7
+ })
@@ -0,0 +1,55 @@
1
+ # Stacks X-Ray
2
+
3
+ Visualize & debug your application logs.
4
+
5
+ ## ☘️ Features
6
+
7
+ - Works in browser & server
8
+ - Visualizes logs
9
+ - Debugs logs
10
+
11
+ ## 🤖 Usage
12
+
13
+ ```bash
14
+ pnpm i -D @stacksjs/x-ray
15
+ ```
16
+
17
+ Now, you can use it in your project:
18
+
19
+ ```ts
20
+ import xRay from '@stacksjs/x-ray'
21
+
22
+ // wip
23
+ ```
24
+
25
+ Learn more in the docs.
26
+
27
+ ## 🧪 Testing
28
+
29
+ ```bash
30
+ pnpm test
31
+ ```
32
+
33
+ ## 📈 Changelog
34
+
35
+ Please see our [releases](https://github.com/stacksjs/stacks/releases) page for more information on what has changed recently.
36
+
37
+ ## 💪🏼 Contributing
38
+
39
+ Please review the [Contributing Guide](https://github.com/stacksjs/contributing) for details.
40
+
41
+ ## 🏝 Community
42
+
43
+ For help, discussion about best practices, or any other conversation that would benefit from being searchable:
44
+
45
+ [Discussions on GitHub](https://github.com/stacksjs/stacks/discussions)
46
+
47
+ For casual chit-chat with others using this package:
48
+
49
+ [Join the Stacks Discord Server](https://discord.ow3.org)
50
+
51
+ ## 📄 License
52
+
53
+ The MIT License (MIT). Please see [LICENSE](https://github.com/stacksjs/stacks/tree/main/LICENSE.md) for more information.
54
+
55
+ Made with ❤️
@@ -0,0 +1,13 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>X Ray App</title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="./src/desktop/main.ts"></script>
12
+ </body>
13
+ </html>
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/mkdist@1.0.0_typescript@4.9.4/node_modules/mkdist/dist/cli.cjs" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/mkdist@1.0.0_typescript@4.9.4/node_modules/mkdist/dist/cli.cjs" "$@"
17
+ fi
@@ -0,0 +1,17 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6
+ esac
7
+
8
+ if [ -z "$NODE_PATH" ]; then
9
+ export NODE_PATH="/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
10
+ else
11
+ export NODE_PATH="$NODE_PATH:/home/runner/work/stacks/stacks/node_modules/.pnpm/node_modules"
12
+ fi
13
+ if [ -x "$basedir/node" ]; then
14
+ exec "$basedir/node" "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsc" "$@"
15
+ else
16
+ exec node "$basedir/../../../../../node_modules/.pnpm/typescript@4.9.4/node_modules/typescript/bin/tsc" "$@"
17
+ fi