alepha 0.20.4 → 0.20.6
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/dist/api/audits/index.d.ts +391 -359
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/audits/index.js +23 -1
- package/dist/api/audits/index.js.map +1 -1
- package/dist/api/files/index.d.ts +18 -0
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/files/index.js +51 -0
- package/dist/api/files/index.js.map +1 -1
- package/dist/api/jobs/index.browser.js +33 -14
- package/dist/api/jobs/index.browser.js.map +1 -1
- package/dist/api/jobs/index.d.ts +452 -155
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +474 -159
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +32 -4
- package/dist/api/keys/index.d.ts.map +1 -1
- package/dist/api/keys/index.js +53 -0
- package/dist/api/keys/index.js.map +1 -1
- package/dist/api/notifications/index.d.ts +29 -1
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +55 -13
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/organizations/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +15 -0
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/parameters/index.js +37 -0
- package/dist/api/parameters/index.js.map +1 -1
- package/dist/api/payments/index.js.map +1 -1
- package/dist/api/users/index.d.ts +150 -9
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +237 -28
- package/dist/api/users/index.js.map +1 -1
- package/dist/api/verifications/index.d.ts +3 -3
- package/dist/api/verifications/index.js.map +1 -1
- package/dist/batch/index.js.map +1 -1
- package/dist/bin/index.js +0 -0
- package/dist/bucket/index.d.ts +18 -0
- package/dist/bucket/index.d.ts.map +1 -1
- package/dist/bucket/index.js +47 -0
- package/dist/bucket/index.js.map +1 -1
- package/dist/bucket/index.workerd.js +24 -0
- package/dist/bucket/index.workerd.js.map +1 -1
- package/dist/cache/core/index.d.ts +20 -3
- package/dist/cache/core/index.d.ts.map +1 -1
- package/dist/cache/core/index.js.map +1 -1
- package/dist/cache/core/index.workerd.js.map +1 -1
- package/dist/cache/database/index.d.ts +155 -0
- package/dist/cache/database/index.d.ts.map +1 -0
- package/dist/cache/database/index.js +266 -0
- package/dist/cache/database/index.js.map +1 -0
- package/dist/cache/redis/index.js.map +1 -1
- package/dist/captcha/index.js.map +1 -1
- package/dist/cli/config/index.js.map +1 -1
- package/dist/cli/core/index.d.ts +35 -5
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +85 -6
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/devtools/index.js.map +1 -1
- package/dist/cli/platform/index.js +1 -1
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/cli/vendor/index.js.map +1 -1
- package/dist/command/index.js.map +1 -1
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.browser.js.map +1 -1
- package/dist/crypto/index.js.map +1 -1
- package/dist/datetime/index.js.map +1 -1
- package/dist/email/brevo/index.js.map +1 -1
- package/dist/email/core/index.js.map +1 -1
- package/dist/email/core/index.workerd.js.map +1 -1
- package/dist/email/smtp/index.js.map +1 -1
- package/dist/fake/index.js.map +1 -1
- package/dist/lock/core/index.js.map +1 -1
- package/dist/lock/redis/index.js.map +1 -1
- package/dist/logger/index.js.map +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.bun.js.map +1 -1
- package/dist/orm/postgres/index.js.map +1 -1
- package/dist/queue/core/index.js.map +1 -1
- package/dist/queue/core/index.workerd.js.map +1 -1
- package/dist/queue/redis/index.js.map +1 -1
- package/dist/react/auth/index.browser.js.map +1 -1
- package/dist/react/auth/index.js.map +1 -1
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.js +2 -0
- package/dist/react/form/index.js.map +1 -1
- package/dist/react/head/index.browser.js.map +1 -1
- package/dist/react/head/index.js.map +1 -1
- package/dist/react/i18n/index.js.map +1 -1
- package/dist/react/intro/index.js.map +1 -1
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.js.map +1 -1
- package/dist/react/testing/index.js.map +1 -1
- package/dist/react/ui/index.js.map +1 -1
- package/dist/react/websocket/index.js.map +1 -1
- package/dist/redis/index.bun.js.map +1 -1
- package/dist/redis/index.js.map +1 -1
- package/dist/retry/index.js.map +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/scheduler/index.d.ts +22 -0
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +12 -0
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/index.workerd.js +12 -0
- package/dist/scheduler/index.workerd.js.map +1 -1
- package/dist/security/index.browser.js.map +1 -1
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.browser.js.map +1 -1
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.browser.js.map +1 -1
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/cors/index.js.map +1 -1
- package/dist/server/etag/index.js.map +1 -1
- package/dist/server/health/index.js.map +1 -1
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.js.map +1 -1
- package/dist/server/metrics/index.js.map +1 -1
- package/dist/server/proxy/index.js.map +1 -1
- package/dist/server/rate-limit/index.js.map +1 -1
- package/dist/server/static/index.js.map +1 -1
- package/dist/server/swagger/index.js.map +1 -1
- package/dist/sms/index.js.map +1 -1
- package/dist/system/index.browser.js.map +1 -1
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.workerd.js.map +1 -1
- package/dist/topic/core/index.js.map +1 -1
- package/dist/topic/redis/index.js.map +1 -1
- package/dist/websocket/index.browser.js +4 -0
- package/dist/websocket/index.browser.js.map +1 -1
- package/dist/websocket/index.js +10 -0
- package/dist/websocket/index.js.map +1 -1
- package/package.json +282 -272
- package/src/api/audits/controllers/AdminAuditController.ts +29 -0
- package/src/api/files/controllers/FileController.ts +24 -0
- package/src/api/files/services/FileService.ts +41 -0
- package/src/api/jobs/__tests__/$job.spec.ts +427 -2
- package/src/api/jobs/entities/jobExecutionEntity.ts +3 -3
- package/src/api/jobs/index.ts +47 -10
- package/src/api/jobs/primitives/$job.ts +22 -9
- package/src/api/jobs/providers/DirectJobDispatcher.ts +71 -0
- package/src/api/jobs/providers/JobDispatcher.ts +49 -0
- package/src/api/jobs/providers/JobProvider.ts +365 -142
- package/src/api/jobs/providers/JobQueueProvider.ts +43 -18
- package/src/api/jobs/schemas/jobConfigAtom.ts +4 -3
- package/src/api/jobs/schemas/jobExecutionResourceSchema.ts +11 -0
- package/src/api/jobs/schemas/jobRegistrationSchema.ts +4 -2
- package/src/api/jobs/services/JobService.ts +21 -11
- package/src/api/keys/controllers/AdminApiKeyController.ts +23 -0
- package/src/api/keys/services/ApiKeyService.ts +42 -0
- package/src/api/notifications/__tests__/AlephaApiNotifications.spec.ts +63 -0
- package/src/api/notifications/controllers/AdminNotificationController.ts +48 -1
- package/src/api/notifications/index.ts +13 -3
- package/src/api/notifications/jobs/NotificationJobs.ts +0 -6
- package/src/api/parameters/controllers/AdminParameterController.ts +26 -0
- package/src/api/parameters/services/ParameterProvider.ts +18 -0
- package/src/api/users/__tests__/Registration-emailMode.spec.ts +203 -0
- package/src/api/users/__tests__/UsernameSlugger.spec.ts +138 -0
- package/src/api/users/atoms/realmAuthSettingsAtom.ts +41 -3
- package/src/api/users/controllers/AdminSessionController.ts +29 -0
- package/src/api/users/controllers/AdminUserController.ts +32 -0
- package/src/api/users/index.ts +3 -0
- package/src/api/users/services/CredentialService.ts +5 -0
- package/src/api/users/services/RegistrationService.ts +49 -1
- package/src/api/users/services/SessionCrudService.ts +16 -0
- package/src/api/users/services/SessionService.ts +17 -59
- package/src/api/users/services/UsernameSlugger.ts +195 -0
- package/src/bucket/primitives/$bucket.ts +21 -0
- package/src/bucket/providers/CloudflareR2Provider.ts +15 -0
- package/src/bucket/providers/FileStorageProvider.ts +9 -0
- package/src/bucket/providers/LocalFileStorageProvider.ts +14 -0
- package/src/bucket/providers/MemoryFileStorageProvider.ts +9 -0
- package/src/bucket/providers/NodeS3BucketProvider.ts +35 -0
- package/src/cache/core/primitives/$cache.ts +20 -3
- package/src/cache/database/__tests__/DatabaseCacheProvider.behavior.spec.ts +203 -0
- package/src/cache/database/__tests__/DatabaseCacheProvider.spec.ts +110 -0
- package/src/cache/database/entities/cacheEntries.ts +55 -0
- package/src/cache/database/index.ts +36 -0
- package/src/cache/database/providers/DatabaseCacheProvider.ts +348 -0
- package/src/cli/core/services/ProjectScaffolder.ts +0 -2
- package/src/cli/core/tasks/BuildCloudflareTask.ts +17 -3
- package/src/cli/core/tasks/BuildSitemapTask.ts +7 -0
- package/src/cli/core/tasks/BuildVercelTask.ts +82 -3
- package/src/cli/platform/__tests__/detectResources.spec.ts +96 -0
- package/src/cli/platform/commands/platform.ts +7 -1
- package/src/scheduler/index.ts +14 -0
- package/src/scheduler/providers/CronProvider.ts +13 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/cli/devtools/atoms/devtoolsOptions.ts","../../../src/cli/devtools/index.ts"],"sourcesContent":["import { $atom, type Static, t } from \"alepha\";\n\n/**\n * Devtools configuration atom.\n *\n * Filled from the `devtools` section of `alepha.config.ts`.\n */\nexport const devtoolsOptions = $atom({\n name: \"alepha.cli.devtools.options\",\n description: \"Devtools plugin configuration\",\n schema: t.optional(\n t.object({\n /**\n * Hide the floating devtools button in the browser.\n *\n * The devtools UI is still accessible at `/__devtools/`.\n */\n hideButton: t.optional(t.boolean({ default: false })),\n }),\n ),\n});\n\n/**\n * Type for devtools options.\n */\nexport type DevtoolsOptions = Static<typeof devtoolsOptions.schema>;\n","import { readFile } from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { $context, $module, AlephaError } from \"alepha\";\nimport { ViteDevServerProvider } from \"alepha/cli\";\nimport {\n type DevtoolsOptions,\n devtoolsOptions,\n} from \"./atoms/devtoolsOptions.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nconst DEVTOOLS_OVERLAY_SCRIPT = `\n(function () {\n if (window.__alepha_devtools_injected) return;\n window.__alepha_devtools_injected = true;\n\n const STORAGE_KEY = \"alepha-devtools-open\";\n\n // Button\n const btn = document.createElement(\"button\");\n btn.id = \"alepha-devtools-btn\";\n btn.innerHTML = \\`<svg width=\"28\" height=\"28\" viewBox=\"0 0 300 300\" xmlns=\"http://www.w3.org/2000/svg\"><defs><linearGradient id=\"adb\" x1=\"142.3\" x2=\"159.6\" y1=\"123.3\" y2=\"176.7\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#33a72c\"/><stop offset=\"1\" stop-color=\"#2d8d40\"/></linearGradient><linearGradient id=\"adc\" x1=\"61.6\" x2=\"100.7\" y1=\"218.5\" y2=\"174\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#298e35\"/><stop offset=\"1\" stop-color=\"#327952\"/></linearGradient><linearGradient id=\"add\" x1=\"262.7\" x2=\"242.2\" y1=\"178.4\" y2=\"220.1\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#32a62d\"/><stop offset=\"1\" stop-color=\"#2d8d40\"/></linearGradient><linearGradient id=\"ade\" x1=\"81.2\" x2=\"69.1\" y1=\"126.7\" y2=\"92.3\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#299a2c\"/><stop offset=\"1\" stop-color=\"#51be40\"/></linearGradient><clipPath id=\"ada\"><path fill=\"none\" d=\"M0 0h300v241H0z\"/></clipPath></defs><g fill=\"none\" stroke-miterlimit=\"10\" clip-path=\"url(#ada)\"><path fill=\"url(#adb)\" d=\"M54 174a182 182 0 0 1 106-51c19-2 37-6 54-15l16-11 3-4 1 1 1 4 1 6v9c0 6-2 12-5 18l-1 4-7 8c-5 7-12 14-19 19l-4 2-11 7v1l-1-1-3 2a120 120 0 0 1-30 8l-8 1-20-1c-21-3-44-10-64 0-5 2-9 4-12 8l-9 9h1l14-9c7-4 15-6 23-7h7l25 3 3 1-2 5-3 5c-4 7-10 14-15 18l-4 3c-12 8-25 12-39 13h-5l-5 1h-8l-7-1H15c0-3 4-7 5-9l7-11 5-8c6-10 14-19 22-28z\"/><path fill=\"#1d524a\" d=\"M178 141c9-1 17-4 24-8l8-4-6 4c-9 7-20 11-32 13l-39 5h-5l-15 3 16 13 18 15-20-1c-21-3-44-10-64 0-5 2-9 4-12 8l-9 9h1l14-9c7-4 15-6 23-7h7l25 3 3 1-2 5-3 5c-4 7-10 14-15 18l-4 3c-12 8-25 12-39 13h-5l-5 1h-8l-7-1H15c0-3 4-7 5-9l7-11 5-8c6-10 14-19 22-28l4-2 23-14 11-5c21-7 43-9 65-9l21-3z\"/><path fill=\"url(#adc)\" d=\"M57 189c7-4 15-6 23-7h7l25 3 3 1-2 5-3 5c-4 7-10 14-15 18l-4 3c-12 8-25 12-39 13h-5l-4-9-2-5 5-2 9-4 10-5 10-4c5-2 10-3 14-6l3-1h-1a1136 1136 0 0 0-43 14c1-6 6-14 9-19 1 0 0 0 0 0z\"/><path fill=\"#2d6f4d\" d=\"m41 216 5-2 9-4 5 3c9 4 18 6 27 4h4c-12 8-25 12-39 13h-5l-4-9-2-5zm16-27s1 0 0 0c-3 5-8 13-9 19l-15 8c0-3 1-9 3-11l3-3 4-4 14-9z\"/><path fill=\"#49b63b\" d=\"M42 198h1l-4 4 3-4z\"/><path fill=\"#2d6f4d\" d=\"m113 154 15-3 11 2 18 8c11 6 23 8 35 5l8-2-11 7v1l-1-1-3 2a120 120 0 0 1-30 8l-8 1-18-15-16-13z\"/><path fill=\"#49b63b\" d=\"M81 158c2-4 11-7 15-8 18-6 36-7 55-8l12-1h15l-21 3c-22 0-44 2-65 9l-11 5z\"/><path fill=\"#2d913b\" d=\"m110 52 2-5 9-14c7-8 19-14 29-18l10-3 12-6 1-1 1 1 1 5v6l6 12 5 10 12 26 2 5 4 10 7 17 4 8c-9 5-20 9-30 12l-16 3-7-14-6-14-5-10-1-3-4 7-13 27-6 11-6 2-24 9 2-4c11-16 14-36 11-56l-3 1-9 5 1-3 9-21 2-5z\"/><path fill=\"#2d6f4d\" d=\"m175 17 6 12 5 10 12 26 2 5 4 10 7 17 4 8c-9 5-20 9-30 12l-16 3-7-14-6-14-5-10-1-3c0-2 5-8 6-10l1-2c9-13 17-28 18-45v-5z\"/><path fill=\"#1d524a\" d=\"m175 17 6 12 5 10 12 26 2 5-3-1-13-8-7 4 3 7-4 1-2-3-5-12-5 7a136 136 0 0 1-10 15l-3 2-1-3c0-2 5-8 6-10l1-2c9-13 17-28 18-45v-5z\"/><path fill=\"#2d6f4d\" d=\"m186 39 12 26 2 5-3-1-13-8-7 4-6-12 8-7 7-7z\"/><path fill=\"#2d913b\" d=\"m177 65 7-4 13 8 3 1 4 10-3 7-7 14-2 8-1-4-6-19a99 99 0 0 0-8-21zm-3 5 2 3 12 32h-1l-8 5c-4 1-9 0-13-2l-1-1c-1-8 2-15 4-22 1-5 2-10 5-15z\"/><path fill=\"#1d524a\" d=\"m110 52 2-5 9-14c7-8 19-14 29-18l10-3 12-6 1-1 1 1c-3 1-3 2-4 4l-11 14-5 5v1c-11 11-22 24-31 37l-5 6-6 11h1l6 12c3 7 8 13 14 17l-6 11-6 2-24 9 2-4c11-16 14-36 11-56l-3 1-9 5 1-3 9-21 2-5z\"/><path fill=\"#49b63b\" d=\"m110 52 2-5 9-14c7-8 19-14 29-18l10-3 12-6 1-1 1 1c-3 1-3 2-4 4l-11 14-5 5-8 7-13 11-5 6c-5-2-10-5-15-3l-3 2z\"/><path fill=\"#2d913b\" d=\"m110 52 3-2c5-2 10 1 15 3l-12 13-6 9-3 1-9 5 1-3 9-21 2-5z\"/><path fill=\"#2d6f4d\" d=\"M121 92c10-5 19-9 28-17l7-6c-1 2-6 8-6 10l-4 7-13 27c-6-4-11-10-14-17l-6-12 4-5 4 13z\"/><path fill=\"#49b63b\" d=\"m154 30-1 11c0 4-3 9-6 12-6 9-19 10-25 19-1 0-3 2-4 1l5-6c9-13 20-26 31-37z\"/><path fill=\"url(#add)\" d=\"m230 135 3 6 11 17 2 5 4 5 3 6 9 14 19 36 4 5c-2 2-19 2-22 2l-5-1h-2c-12 0-25-4-35-10l-4-3c-10-8-15-16-21-27l-7-18v-1l11-7 4-2c7-5 14-12 19-19l7-8z\"/><path fill=\"#1d524a\" d=\"m230 135 3 6 11 17 2 5 4 5 3 6h-1c-10-8-20-9-32-4l23 23 13 12 1 2-20-14-13-12-4-3-5-6c-2 0-2 3-2 5l-1 10c-1 8-2 11 1 19l2 6 2 5c-10-8-15-16-21-27l-7-18v-1l11-7 4-2c7-5 14-12 19-19l7-8z\"/><path fill=\"#2d6f4d\" d=\"m233 141 11 17 2 5 4 5 3 6h-1c-10-8-20-9-32-4l-7-9 15-15 5-5zm-16 76-2-5-2-6c-3-8-2-11-1-19l1-10c0-2 0-5 2-5l5 6 4 3h-1c0 4 8 22 11 26 6 10 15 18 25 22 2 0 3 0 4 2l-5-1h-2c-12 0-25-4-35-10l-4-3z\"/><path fill=\"#2d913b\" d=\"M110 75c3 20 0 40-11 56l-2 4a145 145 0 0 0-43 31l-5 4-11 15v-7l-1-10a143 143 0 0 1 5-29l9-20c13-18 32-29 52-37l4-3 3-4z\"/><path fill=\"url(#ade)\" d=\"m42 139 9-20c13-18 32-29 52-37l4-3-3 7c-4 5-8 11-13 15l-3 3c-6 6-13 12-18 19l-8 11-20 5z\"/><path fill=\"#1d524a\" d=\"M91 101c0 2-4 6-6 8-5 5-10 11-14 18l-9 13-4 9 5 1c4 0 16-9 19-7-10 7-20 14-28 23l-5 4-11 15v-7l-1-10a143 143 0 0 1 5-29l20-5 8-11c5-7 12-13 18-19l3-3z\"/><path fill=\"#2d6f4d\" d=\"m62 134-9 16-3 7-2 4c-3 3-8 5-10 8l-1-1a143 143 0 0 1 5-29l20-5zm0 6 11-5 7-4c5-1 14-2 19 0l-2 4-15 8c-3-2-15 7-19 7l-5-1 4-9z\"/></g></svg>\\`;\n Object.assign(btn.style, {\n position: \"fixed\", bottom: \"16px\", left: \"16px\", zIndex: \"99998\",\n width: \"40px\", height: \"40px\", borderRadius: \"50%\",\n background: \"#fff\", border: \"1px solid #2a2a4a\",\n cursor: \"pointer\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n boxShadow: \"0 2px 8px rgba(0,0,0,0.3)\", transition: \"all 0.2s\",\n padding: \"0\", fontSize: \"0\",\n });\n btn.addEventListener(\"mouseenter\", () => {\n btn.style.transform = \"scale(1.1)\";\n });\n btn.addEventListener(\"mouseleave\", () => {\n btn.style.transform = \"scale(1)\";\n });\n\n // Overlay\n const overlay = document.createElement(\"div\");\n overlay.id = \"alepha-devtools-overlay\";\n Object.assign(overlay.style, {\n position: \"fixed\", inset: \"0\", zIndex: \"99999\",\n background: \"rgba(0,0,0,0.6)\", backdropFilter: \"blur(2px)\",\n display: \"none\", alignItems: \"center\", justifyContent: \"center\",\n });\n\n // Panel\n const panel = document.createElement(\"div\");\n Object.assign(panel.style, {\n width: \"90vw\", height: \"85vh\", maxWidth: \"1400px\",\n borderRadius: \"12px\", overflow: \"hidden\",\n boxShadow: \"0 8px 32px rgba(0,0,0,0.5)\",\n border: \"1px solid #2a2a4a\",\n });\n\n const iframe = document.createElement(\"iframe\");\n iframe.style.cssText = \"width:100%;height:100%;border:none;\";\n\n panel.appendChild(iframe);\n overlay.appendChild(panel);\n document.body.appendChild(btn);\n document.body.appendChild(overlay);\n\n function open() {\n if (!iframe.src) iframe.src = \"/__devtools/\";\n overlay.style.display = \"flex\";\n btn.style.display = \"none\";\n sessionStorage.setItem(STORAGE_KEY, \"1\");\n }\n\n function close() {\n overlay.style.display = \"none\";\n btn.style.display = \"flex\";\n sessionStorage.removeItem(STORAGE_KEY);\n }\n\n btn.addEventListener(\"click\", open);\n overlay.addEventListener(\"click\", (e) => {\n if (e.target === overlay) close();\n });\n document.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Escape\" && overlay.style.display === \"flex\") close();\n });\n\n // Restore state after HMR\n if (sessionStorage.getItem(STORAGE_KEY)) open();\n})();\n`;\n\n/**\n * CLI plugin that integrates @alepha/devtools into the Vite dev server.\n *\n * This module is intentionally lightweight — it does NOT statically import\n * `@alepha/devtools` (which pulls in `alepha/react` and `.tsx` files).\n * Instead, it lazy-loads devtools via Vite's SSR module loader at runtime.\n *\n * Usage in `alepha.config.ts`:\n * ```ts\n * import { devtools } from \"alepha/cli/devtools\";\n *\n * export default defineConfig({\n * plugins: [devtools()],\n * });\n * ```\n *\n * @module alepha.devtools.plugin\n */\nexport const AlephaCliDevtoolsPlugin = $module({\n name: \"alepha.cli.plugins.devtools\",\n atoms: [devtoolsOptions],\n register: (alepha) => {\n const vite = alepha.inject(ViteDevServerProvider) as ViteDevServerProvider;\n\n const require = createRequire(import.meta.url);\n const pkgPath = require.resolve(\"@alepha/devtools/package.json\");\n const assetsPath = join(dirname(pkgPath), \"assets/ui\");\n\n process.env.VITE_ALEPHA_DEVTOOLS = \"true\";\n\n vite.addVitePlugin({\n name: \"alepha-devtools\",\n configureServer: (server) => {\n // Reload endpoint\n server.middlewares.use((req, res, next) => {\n if (req.url !== \"/__devtools/api/reload\" || req.method !== \"POST\") {\n return next();\n }\n\n vite.reload();\n res.writeHead(200, { \"content-type\": \"application/json\" });\n res.end(JSON.stringify({ ok: true }));\n });\n\n // Serve devtools HTML\n server.middlewares.use(async (req, res, next) => {\n const url = req.url || \"/\";\n\n if (\n !url.startsWith(\"/__devtools\") ||\n !req.headers.accept?.includes(\"text/html\")\n ) {\n return next();\n }\n\n const indexPath = join(assetsPath, \"index.html\");\n\n try {\n let html = await readFile(indexPath, \"utf-8\");\n html = html.replace(\n \"<head>\",\n `<head><script type=\"module\" src=\"/@vite/client\"></script>`,\n );\n\n res.writeHead(200, { \"content-type\": \"text/html\" });\n res.end(html);\n } catch {\n next();\n }\n });\n },\n transformIndexHtml: () => {\n const options = alepha.store.get(devtoolsOptions);\n if (options?.hideButton) return [];\n\n return [\n {\n tag: \"script\",\n attrs: { type: \"module\" },\n children: DEVTOOLS_OVERLAY_SCRIPT,\n injectTo: \"head\",\n },\n ];\n },\n });\n\n vite.onAlephaLoaded(async (appAlepha, server) => {\n try {\n const mod = await server.ssrLoadModule(\"@alepha/devtools\");\n appAlepha.with(mod.AlephaDevtools);\n } catch (err) {\n throw new AlephaError(\n \"Failed to load @alepha/devtools. Make sure the package is installed\",\n { cause: err },\n );\n }\n });\n },\n});\n\nexport const devtools = (options: DevtoolsOptions = {}) => {\n return () => {\n const { alepha } = $context();\n alepha.with(AlephaCliDevtoolsPlugin).set(devtoolsOptions, options);\n };\n};\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./atoms/devtoolsOptions.ts\";\n"],"mappings":";;;;;;;;;;;AAOA,MAAa,kBAAkB,MAAM;CACnC,MAAM;CACN,aAAa;CACb,QAAQ,EAAE,SACR,EAAE,OAAO;;;;;;AAMP,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,OAAO,CAAC,CAAC,EACtD,CAAC,CACH;CACF,CAAC;;;ACRF,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGhC,MAAa,0BAA0B,QAAQ;CAC7C,MAAM;CACN,OAAO,CAAC,gBAAgB;CACxB,WAAW,WAAW;EACpB,MAAM,OAAO,OAAO,OAAO,sBAAsB;EAIjD,MAAM,aAAa,KAAK,QAFR,cAAc,OAAO,KAAK,IACnB,CAAC,QAAQ,gCACO,CAAC,EAAE,YAAY;AAEtD,UAAQ,IAAI,uBAAuB;AAEnC,OAAK,cAAc;GACjB,MAAM;GACN,kBAAkB,WAAW;AAE3B,WAAO,YAAY,KAAK,KAAK,KAAK,SAAS;AACzC,SAAI,IAAI,QAAQ,4BAA4B,IAAI,WAAW,OACzD,QAAO,MAAM;AAGf,UAAK,QAAQ;AACb,SAAI,UAAU,KAAK,EAAE,gBAAgB,oBAAoB,CAAC;AAC1D,SAAI,IAAI,KAAK,UAAU,EAAE,IAAI,MAAM,CAAC,CAAC;MACrC;AAGF,WAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;AAG/C,SACE,EAHU,IAAI,OAAO,KAGhB,WAAW,cAAc,IAC9B,CAAC,IAAI,QAAQ,QAAQ,SAAS,YAAY,CAE1C,QAAO,MAAM;KAGf,MAAM,YAAY,KAAK,YAAY,aAAa;AAEhD,SAAI;MACF,IAAI,OAAO,MAAM,SAAS,WAAW,QAAQ;AAC7C,aAAO,KAAK,QACV,UACA,6DACD;AAED,UAAI,UAAU,KAAK,EAAE,gBAAgB,aAAa,CAAC;AACnD,UAAI,IAAI,KAAK;aACP;AACN,YAAM;;MAER;;GAEJ,0BAA0B;AAExB,QADgB,OAAO,MAAM,IAAI,gBACtB,EAAE,WAAY,QAAO,EAAE;AAElC,WAAO,CACL;KACE,KAAK;KACL,OAAO,EAAE,MAAM,UAAU;KACzB,UAAU;KACV,UAAU;KACX,CACF;;GAEJ,CAAC;AAEF,OAAK,eAAe,OAAO,WAAW,WAAW;AAC/C,OAAI;IACF,MAAM,MAAM,MAAM,OAAO,cAAc,mBAAmB;AAC1D,cAAU,KAAK,IAAI,eAAe;YAC3B,KAAK;AACZ,UAAM,IAAI,YACR,uEACA,EAAE,OAAO,KAAK,CACf;;IAEH;;CAEL,CAAC;AAEF,MAAa,YAAY,UAA2B,EAAE,KAAK;AACzD,cAAa;EACX,MAAM,EAAE,WAAW,UAAU;AAC7B,SAAO,KAAK,wBAAwB,CAAC,IAAI,iBAAiB,QAAQ"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/cli/devtools/atoms/devtoolsOptions.ts","../../../src/cli/devtools/index.ts"],"sourcesContent":["import { $atom, type Static, t } from \"alepha\";\n\n/**\n * Devtools configuration atom.\n *\n * Filled from the `devtools` section of `alepha.config.ts`.\n */\nexport const devtoolsOptions = $atom({\n name: \"alepha.cli.devtools.options\",\n description: \"Devtools plugin configuration\",\n schema: t.optional(\n t.object({\n /**\n * Hide the floating devtools button in the browser.\n *\n * The devtools UI is still accessible at `/__devtools/`.\n */\n hideButton: t.optional(t.boolean({ default: false })),\n }),\n ),\n});\n\n/**\n * Type for devtools options.\n */\nexport type DevtoolsOptions = Static<typeof devtoolsOptions.schema>;\n","import { readFile } from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { $context, $module, AlephaError } from \"alepha\";\nimport { ViteDevServerProvider } from \"alepha/cli\";\nimport {\n type DevtoolsOptions,\n devtoolsOptions,\n} from \"./atoms/devtoolsOptions.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nconst DEVTOOLS_OVERLAY_SCRIPT = `\n(function () {\n if (window.__alepha_devtools_injected) return;\n window.__alepha_devtools_injected = true;\n\n const STORAGE_KEY = \"alepha-devtools-open\";\n\n // Button\n const btn = document.createElement(\"button\");\n btn.id = \"alepha-devtools-btn\";\n btn.innerHTML = \\`<svg width=\"28\" height=\"28\" viewBox=\"0 0 300 300\" xmlns=\"http://www.w3.org/2000/svg\"><defs><linearGradient id=\"adb\" x1=\"142.3\" x2=\"159.6\" y1=\"123.3\" y2=\"176.7\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#33a72c\"/><stop offset=\"1\" stop-color=\"#2d8d40\"/></linearGradient><linearGradient id=\"adc\" x1=\"61.6\" x2=\"100.7\" y1=\"218.5\" y2=\"174\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#298e35\"/><stop offset=\"1\" stop-color=\"#327952\"/></linearGradient><linearGradient id=\"add\" x1=\"262.7\" x2=\"242.2\" y1=\"178.4\" y2=\"220.1\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#32a62d\"/><stop offset=\"1\" stop-color=\"#2d8d40\"/></linearGradient><linearGradient id=\"ade\" x1=\"81.2\" x2=\"69.1\" y1=\"126.7\" y2=\"92.3\" gradientUnits=\"userSpaceOnUse\"><stop offset=\"0\" stop-color=\"#299a2c\"/><stop offset=\"1\" stop-color=\"#51be40\"/></linearGradient><clipPath id=\"ada\"><path fill=\"none\" d=\"M0 0h300v241H0z\"/></clipPath></defs><g fill=\"none\" stroke-miterlimit=\"10\" clip-path=\"url(#ada)\"><path fill=\"url(#adb)\" d=\"M54 174a182 182 0 0 1 106-51c19-2 37-6 54-15l16-11 3-4 1 1 1 4 1 6v9c0 6-2 12-5 18l-1 4-7 8c-5 7-12 14-19 19l-4 2-11 7v1l-1-1-3 2a120 120 0 0 1-30 8l-8 1-20-1c-21-3-44-10-64 0-5 2-9 4-12 8l-9 9h1l14-9c7-4 15-6 23-7h7l25 3 3 1-2 5-3 5c-4 7-10 14-15 18l-4 3c-12 8-25 12-39 13h-5l-5 1h-8l-7-1H15c0-3 4-7 5-9l7-11 5-8c6-10 14-19 22-28z\"/><path fill=\"#1d524a\" d=\"M178 141c9-1 17-4 24-8l8-4-6 4c-9 7-20 11-32 13l-39 5h-5l-15 3 16 13 18 15-20-1c-21-3-44-10-64 0-5 2-9 4-12 8l-9 9h1l14-9c7-4 15-6 23-7h7l25 3 3 1-2 5-3 5c-4 7-10 14-15 18l-4 3c-12 8-25 12-39 13h-5l-5 1h-8l-7-1H15c0-3 4-7 5-9l7-11 5-8c6-10 14-19 22-28l4-2 23-14 11-5c21-7 43-9 65-9l21-3z\"/><path fill=\"url(#adc)\" d=\"M57 189c7-4 15-6 23-7h7l25 3 3 1-2 5-3 5c-4 7-10 14-15 18l-4 3c-12 8-25 12-39 13h-5l-4-9-2-5 5-2 9-4 10-5 10-4c5-2 10-3 14-6l3-1h-1a1136 1136 0 0 0-43 14c1-6 6-14 9-19 1 0 0 0 0 0z\"/><path fill=\"#2d6f4d\" d=\"m41 216 5-2 9-4 5 3c9 4 18 6 27 4h4c-12 8-25 12-39 13h-5l-4-9-2-5zm16-27s1 0 0 0c-3 5-8 13-9 19l-15 8c0-3 1-9 3-11l3-3 4-4 14-9z\"/><path fill=\"#49b63b\" d=\"M42 198h1l-4 4 3-4z\"/><path fill=\"#2d6f4d\" d=\"m113 154 15-3 11 2 18 8c11 6 23 8 35 5l8-2-11 7v1l-1-1-3 2a120 120 0 0 1-30 8l-8 1-18-15-16-13z\"/><path fill=\"#49b63b\" d=\"M81 158c2-4 11-7 15-8 18-6 36-7 55-8l12-1h15l-21 3c-22 0-44 2-65 9l-11 5z\"/><path fill=\"#2d913b\" d=\"m110 52 2-5 9-14c7-8 19-14 29-18l10-3 12-6 1-1 1 1 1 5v6l6 12 5 10 12 26 2 5 4 10 7 17 4 8c-9 5-20 9-30 12l-16 3-7-14-6-14-5-10-1-3-4 7-13 27-6 11-6 2-24 9 2-4c11-16 14-36 11-56l-3 1-9 5 1-3 9-21 2-5z\"/><path fill=\"#2d6f4d\" d=\"m175 17 6 12 5 10 12 26 2 5 4 10 7 17 4 8c-9 5-20 9-30 12l-16 3-7-14-6-14-5-10-1-3c0-2 5-8 6-10l1-2c9-13 17-28 18-45v-5z\"/><path fill=\"#1d524a\" d=\"m175 17 6 12 5 10 12 26 2 5-3-1-13-8-7 4 3 7-4 1-2-3-5-12-5 7a136 136 0 0 1-10 15l-3 2-1-3c0-2 5-8 6-10l1-2c9-13 17-28 18-45v-5z\"/><path fill=\"#2d6f4d\" d=\"m186 39 12 26 2 5-3-1-13-8-7 4-6-12 8-7 7-7z\"/><path fill=\"#2d913b\" d=\"m177 65 7-4 13 8 3 1 4 10-3 7-7 14-2 8-1-4-6-19a99 99 0 0 0-8-21zm-3 5 2 3 12 32h-1l-8 5c-4 1-9 0-13-2l-1-1c-1-8 2-15 4-22 1-5 2-10 5-15z\"/><path fill=\"#1d524a\" d=\"m110 52 2-5 9-14c7-8 19-14 29-18l10-3 12-6 1-1 1 1c-3 1-3 2-4 4l-11 14-5 5v1c-11 11-22 24-31 37l-5 6-6 11h1l6 12c3 7 8 13 14 17l-6 11-6 2-24 9 2-4c11-16 14-36 11-56l-3 1-9 5 1-3 9-21 2-5z\"/><path fill=\"#49b63b\" d=\"m110 52 2-5 9-14c7-8 19-14 29-18l10-3 12-6 1-1 1 1c-3 1-3 2-4 4l-11 14-5 5-8 7-13 11-5 6c-5-2-10-5-15-3l-3 2z\"/><path fill=\"#2d913b\" d=\"m110 52 3-2c5-2 10 1 15 3l-12 13-6 9-3 1-9 5 1-3 9-21 2-5z\"/><path fill=\"#2d6f4d\" d=\"M121 92c10-5 19-9 28-17l7-6c-1 2-6 8-6 10l-4 7-13 27c-6-4-11-10-14-17l-6-12 4-5 4 13z\"/><path fill=\"#49b63b\" d=\"m154 30-1 11c0 4-3 9-6 12-6 9-19 10-25 19-1 0-3 2-4 1l5-6c9-13 20-26 31-37z\"/><path fill=\"url(#add)\" d=\"m230 135 3 6 11 17 2 5 4 5 3 6 9 14 19 36 4 5c-2 2-19 2-22 2l-5-1h-2c-12 0-25-4-35-10l-4-3c-10-8-15-16-21-27l-7-18v-1l11-7 4-2c7-5 14-12 19-19l7-8z\"/><path fill=\"#1d524a\" d=\"m230 135 3 6 11 17 2 5 4 5 3 6h-1c-10-8-20-9-32-4l23 23 13 12 1 2-20-14-13-12-4-3-5-6c-2 0-2 3-2 5l-1 10c-1 8-2 11 1 19l2 6 2 5c-10-8-15-16-21-27l-7-18v-1l11-7 4-2c7-5 14-12 19-19l7-8z\"/><path fill=\"#2d6f4d\" d=\"m233 141 11 17 2 5 4 5 3 6h-1c-10-8-20-9-32-4l-7-9 15-15 5-5zm-16 76-2-5-2-6c-3-8-2-11-1-19l1-10c0-2 0-5 2-5l5 6 4 3h-1c0 4 8 22 11 26 6 10 15 18 25 22 2 0 3 0 4 2l-5-1h-2c-12 0-25-4-35-10l-4-3z\"/><path fill=\"#2d913b\" d=\"M110 75c3 20 0 40-11 56l-2 4a145 145 0 0 0-43 31l-5 4-11 15v-7l-1-10a143 143 0 0 1 5-29l9-20c13-18 32-29 52-37l4-3 3-4z\"/><path fill=\"url(#ade)\" d=\"m42 139 9-20c13-18 32-29 52-37l4-3-3 7c-4 5-8 11-13 15l-3 3c-6 6-13 12-18 19l-8 11-20 5z\"/><path fill=\"#1d524a\" d=\"M91 101c0 2-4 6-6 8-5 5-10 11-14 18l-9 13-4 9 5 1c4 0 16-9 19-7-10 7-20 14-28 23l-5 4-11 15v-7l-1-10a143 143 0 0 1 5-29l20-5 8-11c5-7 12-13 18-19l3-3z\"/><path fill=\"#2d6f4d\" d=\"m62 134-9 16-3 7-2 4c-3 3-8 5-10 8l-1-1a143 143 0 0 1 5-29l20-5zm0 6 11-5 7-4c5-1 14-2 19 0l-2 4-15 8c-3-2-15 7-19 7l-5-1 4-9z\"/></g></svg>\\`;\n Object.assign(btn.style, {\n position: \"fixed\", bottom: \"16px\", left: \"16px\", zIndex: \"99998\",\n width: \"40px\", height: \"40px\", borderRadius: \"50%\",\n background: \"#fff\", border: \"1px solid #2a2a4a\",\n cursor: \"pointer\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\",\n boxShadow: \"0 2px 8px rgba(0,0,0,0.3)\", transition: \"all 0.2s\",\n padding: \"0\", fontSize: \"0\",\n });\n btn.addEventListener(\"mouseenter\", () => {\n btn.style.transform = \"scale(1.1)\";\n });\n btn.addEventListener(\"mouseleave\", () => {\n btn.style.transform = \"scale(1)\";\n });\n\n // Overlay\n const overlay = document.createElement(\"div\");\n overlay.id = \"alepha-devtools-overlay\";\n Object.assign(overlay.style, {\n position: \"fixed\", inset: \"0\", zIndex: \"99999\",\n background: \"rgba(0,0,0,0.6)\", backdropFilter: \"blur(2px)\",\n display: \"none\", alignItems: \"center\", justifyContent: \"center\",\n });\n\n // Panel\n const panel = document.createElement(\"div\");\n Object.assign(panel.style, {\n width: \"90vw\", height: \"85vh\", maxWidth: \"1400px\",\n borderRadius: \"12px\", overflow: \"hidden\",\n boxShadow: \"0 8px 32px rgba(0,0,0,0.5)\",\n border: \"1px solid #2a2a4a\",\n });\n\n const iframe = document.createElement(\"iframe\");\n iframe.style.cssText = \"width:100%;height:100%;border:none;\";\n\n panel.appendChild(iframe);\n overlay.appendChild(panel);\n document.body.appendChild(btn);\n document.body.appendChild(overlay);\n\n function open() {\n if (!iframe.src) iframe.src = \"/__devtools/\";\n overlay.style.display = \"flex\";\n btn.style.display = \"none\";\n sessionStorage.setItem(STORAGE_KEY, \"1\");\n }\n\n function close() {\n overlay.style.display = \"none\";\n btn.style.display = \"flex\";\n sessionStorage.removeItem(STORAGE_KEY);\n }\n\n btn.addEventListener(\"click\", open);\n overlay.addEventListener(\"click\", (e) => {\n if (e.target === overlay) close();\n });\n document.addEventListener(\"keydown\", (e) => {\n if (e.key === \"Escape\" && overlay.style.display === \"flex\") close();\n });\n\n // Restore state after HMR\n if (sessionStorage.getItem(STORAGE_KEY)) open();\n})();\n`;\n\n/**\n * CLI plugin that integrates @alepha/devtools into the Vite dev server.\n *\n * This module is intentionally lightweight — it does NOT statically import\n * `@alepha/devtools` (which pulls in `alepha/react` and `.tsx` files).\n * Instead, it lazy-loads devtools via Vite's SSR module loader at runtime.\n *\n * Usage in `alepha.config.ts`:\n * ```ts\n * import { devtools } from \"alepha/cli/devtools\";\n *\n * export default defineConfig({\n * plugins: [devtools()],\n * });\n * ```\n *\n * @module alepha.devtools.plugin\n */\nexport const AlephaCliDevtoolsPlugin = $module({\n name: \"alepha.cli.plugins.devtools\",\n atoms: [devtoolsOptions],\n register: (alepha) => {\n const vite = alepha.inject(ViteDevServerProvider) as ViteDevServerProvider;\n\n const require = createRequire(import.meta.url);\n const pkgPath = require.resolve(\"@alepha/devtools/package.json\");\n const assetsPath = join(dirname(pkgPath), \"assets/ui\");\n\n process.env.VITE_ALEPHA_DEVTOOLS = \"true\";\n\n vite.addVitePlugin({\n name: \"alepha-devtools\",\n configureServer: (server) => {\n // Reload endpoint\n server.middlewares.use((req, res, next) => {\n if (req.url !== \"/__devtools/api/reload\" || req.method !== \"POST\") {\n return next();\n }\n\n vite.reload();\n res.writeHead(200, { \"content-type\": \"application/json\" });\n res.end(JSON.stringify({ ok: true }));\n });\n\n // Serve devtools HTML\n server.middlewares.use(async (req, res, next) => {\n const url = req.url || \"/\";\n\n if (\n !url.startsWith(\"/__devtools\") ||\n !req.headers.accept?.includes(\"text/html\")\n ) {\n return next();\n }\n\n const indexPath = join(assetsPath, \"index.html\");\n\n try {\n let html = await readFile(indexPath, \"utf-8\");\n html = html.replace(\n \"<head>\",\n `<head><script type=\"module\" src=\"/@vite/client\"></script>`,\n );\n\n res.writeHead(200, { \"content-type\": \"text/html\" });\n res.end(html);\n } catch {\n next();\n }\n });\n },\n transformIndexHtml: () => {\n const options = alepha.store.get(devtoolsOptions);\n if (options?.hideButton) return [];\n\n return [\n {\n tag: \"script\",\n attrs: { type: \"module\" },\n children: DEVTOOLS_OVERLAY_SCRIPT,\n injectTo: \"head\",\n },\n ];\n },\n });\n\n vite.onAlephaLoaded(async (appAlepha, server) => {\n try {\n const mod = await server.ssrLoadModule(\"@alepha/devtools\");\n appAlepha.with(mod.AlephaDevtools);\n } catch (err) {\n throw new AlephaError(\n \"Failed to load @alepha/devtools. Make sure the package is installed\",\n { cause: err },\n );\n }\n });\n },\n});\n\nexport const devtools = (options: DevtoolsOptions = {}) => {\n return () => {\n const { alepha } = $context();\n alepha.with(AlephaCliDevtoolsPlugin).set(devtoolsOptions, options);\n };\n};\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./atoms/devtoolsOptions.ts\";\n"],"mappings":";;;;;;;;;;;AAOA,MAAa,kBAAkB,MAAM;CACnC,MAAM;CACN,aAAa;CACb,QAAQ,EAAE,SACR,EAAE,OAAO;;;;;;AAMP,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,OAAO,CAAC,CAAC,EACtD,CAAC,CACH;CACF,CAAC;;;ACRF,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGhC,MAAa,0BAA0B,QAAQ;CAC7C,MAAM;CACN,OAAO,CAAC,gBAAgB;CACxB,WAAW,WAAW;EACpB,MAAM,OAAO,OAAO,OAAO,sBAAsB;EAIjD,MAAM,aAAa,KAAK,QAFR,cAAc,OAAO,KAAK,IACnB,CAAC,QAAQ,gCACO,CAAC,EAAE,YAAY;EAEtD,QAAQ,IAAI,uBAAuB;EAEnC,KAAK,cAAc;GACjB,MAAM;GACN,kBAAkB,WAAW;IAE3B,OAAO,YAAY,KAAK,KAAK,KAAK,SAAS;KACzC,IAAI,IAAI,QAAQ,4BAA4B,IAAI,WAAW,QACzD,OAAO,MAAM;KAGf,KAAK,QAAQ;KACb,IAAI,UAAU,KAAK,EAAE,gBAAgB,oBAAoB,CAAC;KAC1D,IAAI,IAAI,KAAK,UAAU,EAAE,IAAI,MAAM,CAAC,CAAC;MACrC;IAGF,OAAO,YAAY,IAAI,OAAO,KAAK,KAAK,SAAS;KAG/C,IACE,EAHU,IAAI,OAAO,KAGhB,WAAW,cAAc,IAC9B,CAAC,IAAI,QAAQ,QAAQ,SAAS,YAAY,EAE1C,OAAO,MAAM;KAGf,MAAM,YAAY,KAAK,YAAY,aAAa;KAEhD,IAAI;MACF,IAAI,OAAO,MAAM,SAAS,WAAW,QAAQ;MAC7C,OAAO,KAAK,QACV,UACA,6DACD;MAED,IAAI,UAAU,KAAK,EAAE,gBAAgB,aAAa,CAAC;MACnD,IAAI,IAAI,KAAK;aACP;MACN,MAAM;;MAER;;GAEJ,0BAA0B;IAExB,IADgB,OAAO,MAAM,IAAI,gBACtB,EAAE,YAAY,OAAO,EAAE;IAElC,OAAO,CACL;KACE,KAAK;KACL,OAAO,EAAE,MAAM,UAAU;KACzB,UAAU;KACV,UAAU;KACX,CACF;;GAEJ,CAAC;EAEF,KAAK,eAAe,OAAO,WAAW,WAAW;GAC/C,IAAI;IACF,MAAM,MAAM,MAAM,OAAO,cAAc,mBAAmB;IAC1D,UAAU,KAAK,IAAI,eAAe;YAC3B,KAAK;IACZ,MAAM,IAAI,YACR,uEACA,EAAE,OAAO,KAAK,CACf;;IAEH;;CAEL,CAAC;AAEF,MAAa,YAAY,UAA2B,EAAE,KAAK;CACzD,aAAa;EACX,MAAM,EAAE,WAAW,UAAU;EAC7B,OAAO,KAAK,wBAAwB,CAAC,IAAI,iBAAiB,QAAQ"}
|
|
@@ -2602,7 +2602,7 @@ var PlatformCommand = class {
|
|
|
2602
2602
|
hasBucket = alepha.primitives("$bucket").length > 0;
|
|
2603
2603
|
} catch {}
|
|
2604
2604
|
try {
|
|
2605
|
-
hasKV = alepha.primitives("cache").filter((it) => it.options?.provider
|
|
2605
|
+
hasKV = alepha.primitives("cache").filter((it) => it.options?.provider == null).length > 0;
|
|
2606
2606
|
} catch {}
|
|
2607
2607
|
try {
|
|
2608
2608
|
hasQueue = alepha.primitives("queue").length > 0;
|