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.
- package/.gitignore +12 -0
- package/README.md +369 -27
- package/auto-imports.d.ts +862 -0
- package/buddy/README.md +414 -0
- package/{bin → buddy/bin}/stacks.mjs +0 -0
- package/buddy/build.config.ts +17 -0
- package/buddy/node_modules/.bin/only-allow +17 -0
- package/buddy/node_modules/.bin/pnpm +17 -0
- package/buddy/node_modules/.bin/pnpx +17 -0
- package/buddy/node_modules/.bin/tsc +17 -0
- package/buddy/node_modules/.bin/tsserver +17 -0
- package/buddy/node_modules/.bin/unbuild +17 -0
- package/buddy/package.json +183 -0
- package/buddy/src/cli.ts +49 -0
- package/buddy/src/commands/add.ts +63 -0
- package/buddy/src/commands/build.ts +111 -0
- package/buddy/src/commands/clean.ts +18 -0
- package/buddy/src/commands/commit.ts +18 -0
- package/buddy/src/commands/create.ts +129 -0
- package/buddy/src/commands/dev.ts +96 -0
- package/buddy/src/commands/example.ts +65 -0
- package/buddy/src/commands/fresh.ts +18 -0
- package/buddy/src/commands/generate.ts +110 -0
- package/buddy/src/commands/index.ts +18 -0
- package/buddy/src/commands/key.ts +18 -0
- package/buddy/src/commands/lint.ts +27 -0
- package/buddy/src/commands/make.ts +219 -0
- package/buddy/src/commands/preinstall.ts +18 -0
- package/buddy/src/commands/prepublish.ts +19 -0
- package/buddy/src/commands/release.ts +28 -0
- package/buddy/src/commands/setup.ts +26 -0
- package/buddy/src/commands/test.ts +41 -0
- package/buddy/src/commands/types.ts +26 -0
- package/buddy/src/commands/update.ts +108 -0
- package/buddy/src/index.ts +17 -0
- package/components/vue/dist/.gitkeep +0 -0
- package/components/vue/index.html +13 -0
- package/components/vue/main.ts +18 -0
- package/components/vue/package.json +41 -0
- package/components/web/dist/.gitkeep +0 -0
- package/components/web/package.json +41 -0
- package/components.d.ts +22 -0
- package/core/actions/README.md +58 -0
- package/core/actions/node_modules/.bin/esno +17 -0
- package/core/actions/node_modules/.bin/markdown-it +17 -0
- package/core/actions/node_modules/.bin/mkdist +17 -0
- package/core/actions/node_modules/.bin/tsc +17 -0
- package/core/actions/node_modules/.bin/tsserver +17 -0
- package/core/actions/package.json +68 -0
- package/core/actions/src/add.ts +32 -0
- package/core/actions/src/build.ts +93 -0
- package/core/actions/src/clean.ts +25 -0
- package/core/actions/src/commit.ts +19 -0
- package/core/actions/src/copy-types.ts +22 -0
- package/core/actions/src/dev.ts +55 -0
- package/core/actions/src/examples.ts +48 -0
- package/core/actions/src/fresh.ts +27 -0
- package/core/actions/src/generate-component-meta.ts +15 -0
- package/core/actions/src/generate-ide-helpers.ts +19 -0
- package/core/actions/src/generate-lib-entries.ts +17 -0
- package/core/actions/src/generate-package-json.ts +11 -0
- package/core/actions/src/generate-vscode-custom-data.ts +16 -0
- package/core/actions/src/generate-vue-compat.ts +10 -0
- package/core/actions/src/generate.ts +119 -0
- package/core/actions/src/helpers/component-meta.ts +93 -0
- package/core/actions/src/helpers/index.ts +6 -0
- package/core/actions/src/helpers/lib-entries.ts +130 -0
- package/core/actions/src/helpers/package-json.ts +95 -0
- package/core/actions/src/helpers/utils.ts +30 -0
- package/core/actions/src/helpers/vscode-custom-data.ts +28 -0
- package/core/actions/src/helpers/vue-compat.ts +17 -0
- package/core/actions/src/index.ts +1 -0
- package/core/actions/src/key.ts +48 -0
- package/core/actions/src/lint.ts +36 -0
- package/core/actions/src/make.ts +249 -0
- package/core/actions/src/preinstall.ts +27 -0
- package/core/actions/src/prepublish.ts +16 -0
- package/core/actions/src/release.ts +32 -0
- package/core/actions/src/test.ts +61 -0
- package/core/actions/src/types.ts +23 -0
- package/core/actions/src/update.ts +149 -0
- package/core/actions/test.ts +10 -0
- package/core/actions/tests/example.test.ts +7 -0
- package/core/ai/README.md +62 -0
- package/core/ai/node_modules/.bin/mkdist +17 -0
- package/core/ai/node_modules/.bin/tsc +17 -0
- package/core/ai/node_modules/.bin/tsserver +17 -0
- package/core/ai/package.json +55 -0
- package/core/ai/src/drivers/openai.ts +1 -0
- package/core/ai/src/index.ts +1 -0
- package/core/ai/tests/example.test.ts +7 -0
- package/core/alias/README.md +62 -0
- package/core/alias/node_modules/.bin/mkdist +17 -0
- package/core/alias/node_modules/.bin/tsc +17 -0
- package/core/alias/node_modules/.bin/tsserver +17 -0
- package/core/alias/package.json +51 -0
- package/core/alias/src/index.ts +84 -0
- package/core/alias/tests/example.test.ts +7 -0
- package/core/arrays/README.md +59 -0
- package/core/arrays/node_modules/.bin/mkdist +17 -0
- package/core/arrays/node_modules/.bin/tsc +17 -0
- package/core/arrays/node_modules/.bin/tsserver +17 -0
- package/core/arrays/package.json +55 -0
- package/core/arrays/src/index.ts +208 -0
- package/core/arrays/tests/example.test.ts +7 -0
- package/core/auth/README.md +59 -0
- package/core/auth/node_modules/.bin/mkdist +17 -0
- package/core/auth/node_modules/.bin/tsc +17 -0
- package/core/auth/node_modules/.bin/tsserver +17 -0
- package/core/auth/package.json +49 -0
- package/core/auth/src/index.ts +3 -0
- package/core/auth/tests/example.test.ts +7 -0
- package/core/build/README.md +59 -0
- package/core/build/entries/README.md +7 -0
- package/core/build/node_modules/.bin/mkdist +17 -0
- package/core/build/node_modules/.bin/tsc +17 -0
- package/core/build/node_modules/.bin/tsserver +17 -0
- package/core/build/node_modules/.bin/unbuild +17 -0
- package/core/build/node_modules/.bin/vite +17 -0
- package/core/build/node_modules/.bin/vite-ssg +17 -0
- package/core/build/node_modules/.bin/vue-docgen-web-types +17 -0
- package/core/build/package.json +76 -0
- package/core/build/src/desktop.ts +27 -0
- package/core/build/src/example-vue.ts +24 -0
- package/core/build/src/example-wc.ts +24 -0
- package/core/build/src/functions.ts +56 -0
- package/core/build/src/index.ts +7 -0
- package/core/build/src/pages.ts +50 -0
- package/core/build/src/stacks.ts +198 -0
- package/core/build/src/vue-components.ts +74 -0
- package/core/build/src/web-components.ts +61 -0
- package/core/build/tests/example.test.ts +7 -0
- package/core/build/web-types.config.cjs +4 -0
- package/core/build/web-types.ts +14 -0
- package/core/cache/README.md +59 -0
- package/core/cache/node_modules/.bin/mkdist +17 -0
- package/core/cache/node_modules/.bin/tsc +17 -0
- package/core/cache/node_modules/.bin/tsserver +17 -0
- package/core/cache/package.json +60 -0
- package/core/cache/src/drivers/dynamodb.ts +117 -0
- package/core/cache/src/drivers/memcached.ts +20 -0
- package/core/cache/src/drivers/redis.ts +41 -0
- package/core/cache/src/index.ts +3 -0
- package/core/cache/tests/DynamoDB.test.ts +149 -0
- package/core/cache/tests/Memcached.test.ts +52 -0
- package/core/cache/tests/Redis.test.ts +82 -0
- package/core/cache/vite.config.ts +7 -0
- package/core/cli/README.md +129 -0
- package/core/cli/node_modules/.bin/esno +17 -0
- package/core/cli/node_modules/.bin/mkdist +17 -0
- package/core/cli/package.json +69 -0
- package/core/cli/src/actions/index.ts +2 -0
- package/core/cli/src/actions/install.ts +22 -0
- package/core/cli/src/actions/run.ts +72 -0
- package/core/cli/src/command.ts +7 -0
- package/core/cli/src/console.ts +6 -0
- package/core/cli/src/helpers.ts +58 -0
- package/core/cli/src/index.ts +8 -0
- package/core/cli/src/spinner.ts +3 -0
- package/core/cli/src/utilities.ts +1 -0
- package/core/cli/tests/example.test.ts +7 -0
- package/core/cloud/README.md +59 -0
- package/core/cloud/dist/actions/README.md +53 -0
- package/core/cloud/node_modules/.bin/mkdist +17 -0
- package/core/cloud/node_modules/.bin/tsc +17 -0
- package/core/cloud/node_modules/.bin/tsserver +17 -0
- package/core/cloud/package.json +53 -0
- package/core/cloud/src/actions/README.md +53 -0
- package/core/cloud/src/index.ts +1 -0
- package/core/cloud/tests/example.test.ts +7 -0
- package/core/collections/README.md +71 -0
- package/core/collections/node_modules/.bin/mkdist +17 -0
- package/core/collections/node_modules/.bin/tsc +17 -0
- package/core/collections/node_modules/.bin/tsserver +17 -0
- package/core/collections/package.json +56 -0
- package/core/collections/src/index.ts +1 -0
- package/core/collections/tests/example.test.ts +7 -0
- package/core/config/README.md +53 -0
- package/core/config/build.config.ts +13 -0
- package/core/config/node_modules/.bin/mkdist +17 -0
- package/core/config/node_modules/.bin/tsc +17 -0
- package/core/config/node_modules/.bin/tsserver +17 -0
- package/core/config/node_modules/.bin/unbuild +17 -0
- package/core/config/package.json +53 -0
- package/core/config/src/helpers.ts +30 -0
- package/core/config/src/index.ts +17 -0
- package/core/config/tests/example.test.ts +7 -0
- package/core/dashboard/README.md +74 -0
- package/core/dashboard/node_modules/.bin/mkdist +17 -0
- package/core/dashboard/package.json +52 -0
- package/core/dashboard/src/index.ts +0 -0
- package/core/dashboard/tests/example.test.ts +7 -0
- package/core/database/README.md +59 -0
- package/core/database/node_modules/.bin/mkdist +17 -0
- package/core/database/node_modules/.bin/tsc +17 -0
- package/core/database/node_modules/.bin/tsserver +17 -0
- package/core/database/package.json +59 -0
- package/core/database/src/factory/index.ts +70 -0
- package/core/database/src/index.ts +3 -0
- package/core/database/src/migrations/index.ts +5 -0
- package/core/database/src/seeder/index.ts +10 -0
- package/core/database/tests/example.test.ts +7 -0
- package/core/datetime/README.md +66 -0
- package/core/datetime/node_modules/.bin/mkdist +17 -0
- package/core/datetime/node_modules/.bin/tsc +17 -0
- package/core/datetime/node_modules/.bin/tsserver +17 -0
- package/core/datetime/package.json +55 -0
- package/core/datetime/src/index.ts +6 -0
- package/core/datetime/tests/example.test.ts +7 -0
- package/core/desktop/README.md +49 -0
- package/core/desktop/node_modules/.bin/mkdist +17 -0
- package/core/desktop/node_modules/.bin/tauri +17 -0
- package/core/desktop/node_modules/.bin/tsc +17 -0
- package/core/desktop/node_modules/.bin/tsserver +17 -0
- package/core/desktop/package.json +69 -0
- package/core/desktop/src/drivers/tauri/index.ts +1 -0
- package/core/desktop/src/index.ts +1 -0
- package/core/desktop/tests/example.test.ts +7 -0
- package/core/docs/README.md +59 -0
- package/core/docs/node_modules/.bin/mkdist +17 -0
- package/core/docs/node_modules/.bin/tsc +17 -0
- package/core/docs/node_modules/.bin/tsserver +17 -0
- package/core/docs/node_modules/.bin/vitepress +17 -0
- package/core/docs/package.json +53 -0
- package/core/docs/src/index.ts +4 -0
- package/core/docs/tests/example.test.ts +7 -0
- package/core/domains/README.md +56 -0
- package/core/domains/node_modules/.bin/mkdist +17 -0
- package/core/domains/node_modules/.bin/tsc +17 -0
- package/core/domains/node_modules/.bin/tsserver +17 -0
- package/core/domains/package.json +52 -0
- package/core/domains/src/index.ts +1 -0
- package/core/domains/tests/example.test.ts +7 -0
- package/core/drivers/README.md +53 -0
- package/core/drivers/node_modules/.bin/mkdist +17 -0
- package/core/drivers/node_modules/.bin/tsc +17 -0
- package/core/drivers/node_modules/.bin/tsserver +17 -0
- package/core/drivers/package.json +53 -0
- package/core/drivers/src/index.ts +10 -0
- package/core/drivers/tests/example.test.ts +7 -0
- package/core/email/README.md +89 -0
- package/core/email/node_modules/.bin/mkdist +17 -0
- package/core/email/node_modules/.bin/tsc +17 -0
- package/core/email/node_modules/.bin/tsserver +17 -0
- package/core/email/package.json +57 -0
- package/core/email/src/index.ts +1 -0
- package/core/email/tests/example.test.ts +7 -0
- package/core/error-handling/README.md +131 -0
- package/core/error-handling/node_modules/.bin/mkdist +17 -0
- package/core/error-handling/node_modules/.bin/tsc +17 -0
- package/core/error-handling/node_modules/.bin/tsserver +17 -0
- package/core/error-handling/package.json +55 -0
- package/core/error-handling/src/index.ts +15 -0
- package/core/error-handling/tests/example.test.ts +7 -0
- package/core/git/README.md +69 -0
- package/core/git/node_modules/.bin/bumpp +17 -0
- package/core/git/node_modules/.bin/commitizen +17 -0
- package/core/git/node_modules/.bin/conventional-changelog +17 -0
- package/core/git/node_modules/.bin/cz +17 -0
- package/core/git/node_modules/.bin/giget +17 -0
- package/core/git/node_modules/.bin/git-cz +17 -0
- package/core/git/node_modules/.bin/mkdist +17 -0
- package/core/git/node_modules/.bin/simple-git-hooks +17 -0
- package/core/git/node_modules/.bin/tsc +17 -0
- package/core/git/node_modules/.bin/tsserver +17 -0
- package/core/git/package.json +59 -0
- package/core/git/src/index.ts +1 -0
- package/core/git/tests/example.test.ts +7 -0
- package/core/lint/README.md +73 -0
- package/core/lint/node_modules/.bin/eslint +17 -0
- package/core/lint/node_modules/.bin/lint-staged +17 -0
- package/core/lint/node_modules/.bin/mkdist +17 -0
- package/core/lint/node_modules/.bin/tsc +17 -0
- package/core/lint/node_modules/.bin/tsserver +17 -0
- package/core/lint/package.json +58 -0
- package/core/lint/src/index.ts +3 -0
- package/core/lint/tests/example.test.ts +7 -0
- package/core/logging/README.md +58 -0
- package/core/logging/debug-test.ts +8 -0
- package/core/logging/node_modules/.bin/mkdist +17 -0
- package/core/logging/node_modules/.bin/tsc +17 -0
- package/core/logging/node_modules/.bin/tsserver +17 -0
- package/core/logging/package.json +55 -0
- package/core/logging/src/index.ts +15 -0
- package/core/logging/tests/example.test.ts +7 -0
- package/core/modules/README.md +51 -0
- package/core/modules/node_modules/.bin/mkdist +17 -0
- package/core/modules/node_modules/.bin/tsc +17 -0
- package/core/modules/node_modules/.bin/tsserver +17 -0
- package/core/modules/package.json +54 -0
- package/core/modules/src/i18n.ts +23 -0
- package/core/modules/src/nprogress.ts +12 -0
- package/core/modules/src/pwa.ts +12 -0
- package/core/modules/tests/example.test.ts +7 -0
- package/core/notifications/README.md +89 -0
- package/core/notifications/build.config.ts +14 -0
- package/core/notifications/node_modules/.bin/maizzle +17 -0
- package/core/notifications/node_modules/.bin/mkdist +17 -0
- package/core/notifications/node_modules/.bin/tsc +17 -0
- package/core/notifications/node_modules/.bin/tsserver +17 -0
- package/core/notifications/node_modules/.bin/unbuild +17 -0
- package/core/notifications/package.json +88 -0
- package/core/notifications/src/drivers/chat/discord.ts +15 -0
- package/core/notifications/src/drivers/chat/index.ts +2 -0
- package/core/notifications/src/drivers/chat/slack.ts +22 -0
- package/core/notifications/src/drivers/email/actions/send.ts +36 -0
- package/core/notifications/src/drivers/email/emailjs.ts +21 -0
- package/core/notifications/src/drivers/email/index.ts +9 -0
- package/core/notifications/src/drivers/email/mailgun.ts +19 -0
- package/core/notifications/src/drivers/email/mailjet.ts +18 -0
- package/core/notifications/src/drivers/email/mandrill.ts +17 -0
- package/core/notifications/src/drivers/email/netcore.ts +17 -0
- package/core/notifications/src/drivers/email/nodemailer.ts +21 -0
- package/core/notifications/src/drivers/email/postmark.ts +17 -0
- package/core/notifications/src/drivers/email/sendgrid.ts +18 -0
- package/core/notifications/src/drivers/email/ses.ts +19 -0
- package/core/notifications/src/drivers/email/tailwind.config.ts +37 -0
- package/core/notifications/src/drivers/sms/gupshup.ts +21 -0
- package/core/notifications/src/drivers/sms/index.ts +8 -0
- package/core/notifications/src/drivers/sms/nexmo.ts +22 -0
- package/core/notifications/src/drivers/sms/plivo.ts +22 -0
- package/core/notifications/src/drivers/sms/sms77.ts +21 -0
- package/core/notifications/src/drivers/sms/sns.ts +22 -0
- package/core/notifications/src/drivers/sms/telnyx.ts +22 -0
- package/core/notifications/src/drivers/sms/termii.ts +21 -0
- package/core/notifications/src/drivers/sms/twilio.ts +22 -0
- package/core/notifications/src/index.ts +25 -0
- package/core/notifications/src/utils/config.ts +5 -0
- package/core/notifications/src/utils/template.html +8 -0
- package/core/notifications/tests/chat/Slack.test.ts +24 -0
- package/core/notifications/tests/email/Mailgun.test.ts +29 -0
- package/core/notifications/tests/email/Sendgrid.test.ts +30 -0
- package/core/notifications/tests/example.test.ts +7 -0
- package/core/notifications/tests/sms/Twilio.test.ts +27 -0
- package/core/objects/README.md +71 -0
- package/core/objects/node_modules/.bin/mkdist +17 -0
- package/core/objects/node_modules/.bin/tsc +17 -0
- package/core/objects/node_modules/.bin/tsserver +17 -0
- package/core/objects/package.json +53 -0
- package/core/objects/src/index.ts +130 -0
- package/core/objects/tests/example.test.ts +7 -0
- package/core/path/README.md +64 -0
- package/core/path/node_modules/.bin/mkdist +17 -0
- package/core/path/node_modules/.bin/tsc +17 -0
- package/core/path/node_modules/.bin/tsserver +17 -0
- package/core/path/package.json +55 -0
- package/core/path/src/index.ts +353 -0
- package/core/path/tests/example.test.ts +7 -0
- package/core/payments/README.md +64 -0
- package/core/payments/node_modules/.bin/mkdist +17 -0
- package/core/payments/node_modules/.bin/tsc +17 -0
- package/core/payments/node_modules/.bin/tsserver +17 -0
- package/core/payments/package.json +52 -0
- package/core/payments/src/drivers/stripe.ts +1 -0
- package/core/payments/src/index.ts +1 -0
- package/core/payments/tests/example.test.ts +7 -0
- package/core/realtime/README.md +59 -0
- package/core/realtime/node_modules/.bin/mkdist +17 -0
- package/core/realtime/node_modules/.bin/tsc +17 -0
- package/core/realtime/node_modules/.bin/tsserver +17 -0
- package/core/realtime/package.json +51 -0
- package/core/realtime/src/drivers/index.ts +3 -0
- package/core/realtime/src/index.ts +3 -0
- package/core/realtime/tests/example.test.ts +7 -0
- package/core/router/README.md +59 -0
- package/core/router/node_modules/.bin/mkdist +17 -0
- package/core/router/node_modules/.bin/tsc +17 -0
- package/core/router/node_modules/.bin/tsserver +17 -0
- package/core/router/package.json +54 -0
- package/core/router/src/index.ts +14 -0
- package/core/router/tests/example.test.ts +7 -0
- package/core/search-engine/README.md +66 -0
- package/core/search-engine/node_modules/.bin/mkdist +17 -0
- package/core/search-engine/node_modules/.bin/tsc +17 -0
- package/core/search-engine/node_modules/.bin/tsserver +17 -0
- package/core/search-engine/package.json +64 -0
- package/core/search-engine/src/drivers/meilisearch.ts +37 -0
- package/core/search-engine/src/helpers.ts +74 -0
- package/core/search-engine/src/index.ts +56 -0
- package/core/search-engine/tests/example.test.ts +7 -0
- package/core/security/README.md +66 -0
- package/core/security/node_modules/.bin/mkdist +17 -0
- package/core/security/node_modules/.bin/tsc +17 -0
- package/core/security/node_modules/.bin/tsserver +17 -0
- package/core/security/package.json +57 -0
- package/core/security/src/crypt.ts +14 -0
- package/core/security/src/hash.ts +52 -0
- package/core/security/src/index.ts +3 -0
- package/core/security/src/key.ts +11 -0
- package/core/security/tests/example.test.ts +7 -0
- package/core/server/README.md +51 -0
- package/core/server/node_modules/.bin/mkdist +17 -0
- package/core/server/node_modules/.bin/nitro +17 -0
- package/core/server/node_modules/.bin/nitropack +17 -0
- package/core/server/node_modules/.bin/tsc +17 -0
- package/core/server/node_modules/.bin/tsserver +17 -0
- package/core/server/node_modules/.bin/vite +17 -0
- package/core/server/package.json +59 -0
- package/core/server/src/config.ts +6 -0
- package/core/server/src/index.ts +5 -0
- package/core/server/src/nitro.config.ts +6 -0
- package/core/server/tests/example.test.ts +7 -0
- package/core/storage/README.md +74 -0
- package/core/storage/node_modules/.bin/mkdist +17 -0
- package/core/storage/node_modules/.bin/tsc +17 -0
- package/core/storage/node_modules/.bin/tsserver +17 -0
- package/core/storage/package.json +62 -0
- package/core/storage/src/index.ts +193 -0
- package/core/storage/tests/example.test.ts +7 -0
- package/core/strings/README.md +68 -0
- package/core/strings/build.config.ts +15 -0
- package/core/strings/node_modules/.bin/mkdist +17 -0
- package/core/strings/node_modules/.bin/tsc +17 -0
- package/core/strings/node_modules/.bin/tsserver +17 -0
- package/core/strings/node_modules/.bin/unbuild +17 -0
- package/core/strings/package.json +69 -0
- package/core/strings/src/index.ts +97 -0
- package/core/strings/tests/example.test.ts +7 -0
- package/core/testing/README.md +59 -0
- package/core/testing/node_modules/.bin/mkdist +17 -0
- package/core/testing/node_modules/.bin/tsc +17 -0
- package/core/testing/node_modules/.bin/tsserver +17 -0
- package/core/testing/node_modules/.bin/vitest +17 -0
- package/core/testing/package.json +57 -0
- package/core/testing/src/index.ts +1 -0
- package/core/types/README.md +59 -0
- package/core/types/node_modules/.bin/markdown-it +17 -0
- package/core/types/node_modules/.bin/mkdist +17 -0
- package/core/types/node_modules/.bin/tsc +17 -0
- package/core/types/node_modules/.bin/tsserver +17 -0
- package/core/types/node_modules/.bin/vite-ssg +17 -0
- package/core/types/node_modules/.bin/vitepress +17 -0
- package/core/types/package.json +71 -0
- package/core/types/src/app.ts +140 -0
- package/core/types/src/auto-imports.ts +3 -0
- package/core/types/src/build.ts +2 -0
- package/core/types/src/cli.ts +198 -0
- package/core/types/src/components.ts +66 -0
- package/core/types/src/database.ts +3 -0
- package/core/types/src/debug.ts +6 -0
- package/core/types/src/deploy.ts +11 -0
- package/core/types/src/docs.ts +3 -0
- package/core/types/src/errors.ts +6 -0
- package/core/types/src/exit-code.ts +10 -0
- package/core/types/src/fs.ts +17 -0
- package/core/types/src/git.ts +131 -0
- package/core/types/src/hashing.ts +107 -0
- package/core/types/src/i18n.ts +19 -0
- package/core/types/src/index.ts +28 -0
- package/core/types/src/inspect.ts +10 -0
- package/core/types/src/layout.ts +8 -0
- package/core/types/src/library.ts +148 -0
- package/core/types/src/manifest.ts +9 -0
- package/core/types/src/markdown.ts +198 -0
- package/core/types/src/notifications.ts +9 -0
- package/core/types/src/pages.ts +8 -0
- package/core/types/src/promise.ts +1 -0
- package/core/types/src/pwa.ts +8 -0
- package/core/types/src/search-engine.ts +118 -0
- package/core/types/src/ssg.ts +3 -0
- package/core/types/src/ui.ts +184 -0
- package/core/types/src/utils.ts +38 -0
- package/core/ui/README.md +66 -0
- package/core/ui/node_modules/.bin/mkdist +17 -0
- package/core/ui/node_modules/.bin/tsc +17 -0
- package/core/ui/node_modules/.bin/tsserver +17 -0
- package/core/ui/node_modules/.bin/vue-tsc +17 -0
- package/core/ui/package.json +66 -0
- package/core/ui/src/index.ts +17 -0
- package/core/ui/src/unocss.ts +45 -0
- package/core/ui/tests/example.test.ts +7 -0
- package/core/utils/node_modules/.bin/esno +17 -0
- package/core/utils/node_modules/.bin/mkdist +17 -0
- package/core/utils/node_modules/.bin/rimraf +17 -0
- package/core/utils/node_modules/.bin/tsc +17 -0
- package/core/utils/node_modules/.bin/tsserver +17 -0
- package/core/utils/package.json +77 -0
- package/core/utils/src/base.ts +10 -0
- package/core/utils/src/function.ts +32 -0
- package/core/utils/src/guards.ts +39 -0
- package/core/utils/src/helpers.ts +134 -0
- package/core/utils/src/index.ts +13 -0
- package/core/utils/src/is.ts +12 -0
- package/core/utils/src/p.ts +118 -0
- package/core/utils/src/promise.ts +91 -0
- package/core/utils/src/vendor.ts +1 -0
- package/core/utils/tests/example.test.ts +7 -0
- package/core/x-ray/README.md +55 -0
- package/core/x-ray/index.html +13 -0
- package/core/x-ray/node_modules/.bin/mkdist +17 -0
- package/core/x-ray/node_modules/.bin/tsc +17 -0
- package/core/x-ray/node_modules/.bin/tsserver +17 -0
- package/core/x-ray/package.json +63 -0
- package/core/x-ray/routes/index.ts +19 -0
- package/core/x-ray/src/client.ts +14 -0
- package/core/x-ray/src/desktop/api/nitro.config.ts +18 -0
- package/core/x-ray/src/desktop/api/routes/api/logs.ts +7 -0
- package/core/x-ray/src/desktop/api/routes/api/store-logs.ts +22 -0
- package/core/x-ray/src/desktop/api/src/types.ts +7 -0
- package/core/x-ray/src/desktop/api/storage/index.ts +7 -0
- package/core/x-ray/src/desktop/app.vue +377 -0
- package/core/x-ray/src/desktop/functions/http.ts +26 -0
- package/core/x-ray/src/desktop/functions/types.ts +7 -0
- package/core/x-ray/src/desktop/main.ts +14 -0
- package/core/x-ray/src/desktop/modules/counter/mod.vue +44 -0
- package/core/x-ray/src/desktop/modules/fetcher/mod.vue +63 -0
- package/core/x-ray/src/desktop/plugins/unified/unified-app.ts +5 -0
- package/core/x-ray/src/desktop/plugins/unified/unified-styles.scss +0 -0
- package/core/x-ray/src/desktop/services/http.ts +45 -0
- package/core/x-ray/src/desktop/styles/app.scss +0 -0
- package/core/x-ray/src/http.ts +26 -0
- package/core/x-ray/src/index.ts +42 -0
- package/core/x-ray/src/ray.config.js +27 -0
- package/core/x-ray/src/types.ts +7 -0
- package/core/x-ray/tests/example.test.ts +7 -0
- package/custom-elements.json +14 -0
- package/examples/vue/App.vue +12 -0
- package/examples/vue/favicon.png +0 -0
- package/examples/vue/index.html +20 -0
- package/examples/web/favicon.png +0 -0
- package/examples/web/index.html +13 -0
- package/functions/package.json +41 -0
- package/netlify.toml +18 -0
- package/package.json +69 -99
- package/pages/App.vue +26 -0
- package/pages/index.html +23 -0
- package/pages/main.ts +26 -0
- package/pages/public/_headers +3 -0
- package/pages/public/favicon-dark.svg +3 -0
- package/pages/public/favicon.svg +3 -0
- package/pages/public/pwa-192x192.png +0 -0
- package/pages/public/pwa-512x512.png +0 -0
- package/pages/public/safari-pinned-tab.svg +41 -0
- package/pages/styles/main.css +29 -0
- package/pages/styles/markdown.css +28 -0
- package/shims.d.ts +29 -0
- package/simple-git-hooks.cjs +4 -0
- package/tsconfig.json +115 -0
- package/vitest.config.ts +21 -0
- 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,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
|