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