gorsee 0.2.3 → 0.2.5
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/README.md +261 -213
- package/dist-pkg/ai/artifact-lifecycle.d.ts +25 -0
- package/dist-pkg/ai/artifact-lifecycle.js +98 -0
- package/dist-pkg/ai/bridge.d.ts +26 -0
- package/dist-pkg/ai/bridge.js +82 -0
- package/dist-pkg/ai/bundle.d.ts +46 -0
- package/dist-pkg/ai/bundle.js +247 -0
- package/dist-pkg/ai/contracts.d.ts +1 -0
- package/dist-pkg/ai/contracts.js +1 -0
- package/dist-pkg/ai/ide.d.ts +37 -0
- package/dist-pkg/ai/ide.js +56 -0
- package/dist-pkg/ai/index.d.ts +85 -0
- package/dist-pkg/ai/index.js +267 -0
- package/dist-pkg/ai/json.d.ts +6 -0
- package/dist-pkg/ai/json.js +14 -0
- package/dist-pkg/ai/mcp.d.ts +28 -0
- package/dist-pkg/ai/mcp.js +152 -0
- package/dist-pkg/ai/session-pack.d.ts +28 -0
- package/dist-pkg/ai/session-pack.js +57 -0
- package/dist-pkg/ai/store.d.ts +67 -0
- package/dist-pkg/ai/store.js +174 -0
- package/dist-pkg/ai/summary.d.ts +57 -0
- package/dist-pkg/ai/summary.js +148 -0
- package/dist-pkg/ai/watch.d.ts +15 -0
- package/dist-pkg/ai/watch.js +66 -0
- package/dist-pkg/auth/action-tokens.d.ts +50 -0
- package/dist-pkg/auth/action-tokens.js +79 -0
- package/dist-pkg/auth/index.d.ts +70 -0
- package/dist-pkg/auth/index.js +199 -0
- package/dist-pkg/auth/redis-session-store.d.ts +7 -0
- package/dist-pkg/auth/redis-session-store.js +42 -0
- package/dist-pkg/auth/signing.d.ts +4 -0
- package/dist-pkg/auth/signing.js +33 -0
- package/dist-pkg/auth/sqlite-session-store.d.ts +12 -0
- package/dist-pkg/auth/sqlite-session-store.js +83 -0
- package/dist-pkg/auth/store-utils.d.ts +2 -0
- package/dist-pkg/auth/store-utils.js +20 -0
- package/dist-pkg/bin/gorsee.js +2 -0
- package/dist-pkg/build/backends/experimental-rolldown.d.ts +6 -0
- package/dist-pkg/build/backends/experimental-rolldown.js +9 -0
- package/dist-pkg/build/backends/register.d.ts +7 -0
- package/dist-pkg/build/backends/register.js +24 -0
- package/dist-pkg/build/backends/rolldown.d.ts +16 -0
- package/dist-pkg/build/backends/rolldown.js +176 -0
- package/dist-pkg/build/client-backend.d.ts +31 -0
- package/dist-pkg/build/client-backend.js +97 -0
- package/dist-pkg/build/client.d.ts +12 -0
- package/dist-pkg/build/client.js +93 -0
- package/dist-pkg/build/css-modules.d.ts +10 -0
- package/dist-pkg/build/css-modules.js +51 -0
- package/dist-pkg/build/devalue-parse.d.ts +1 -0
- package/dist-pkg/build/devalue-parse.js +1 -0
- package/dist-pkg/build/diagnostics.d.ts +20 -0
- package/dist-pkg/build/diagnostics.js +35 -0
- package/dist-pkg/build/fixtures.d.ts +7 -0
- package/dist-pkg/build/fixtures.js +60 -0
- package/dist-pkg/build/framework-imports.d.ts +4 -0
- package/dist-pkg/build/framework-imports.js +58 -0
- package/dist-pkg/build/init.d.ts +1 -0
- package/dist-pkg/build/init.js +6 -0
- package/dist-pkg/build/manifest.d.ts +3 -0
- package/dist-pkg/build/manifest.js +23 -0
- package/dist-pkg/build/parity.d.ts +32 -0
- package/dist-pkg/build/parity.js +71 -0
- package/dist-pkg/build/plugin.d.ts +11 -0
- package/dist-pkg/build/plugin.js +8 -0
- package/dist-pkg/build/readiness.d.ts +11 -0
- package/dist-pkg/build/readiness.js +18 -0
- package/dist-pkg/build/route-client-transform.d.ts +17 -0
- package/dist-pkg/build/route-client-transform.js +48 -0
- package/dist-pkg/build/route-metadata.d.ts +6 -0
- package/dist-pkg/build/route-metadata.js +8 -0
- package/dist-pkg/build/rpc-transform.d.ts +1 -0
- package/dist-pkg/build/rpc-transform.js +44 -0
- package/dist-pkg/build/server-bundle.d.ts +4 -0
- package/dist-pkg/build/server-bundle.js +261 -0
- package/dist-pkg/build/server-strip.d.ts +2 -0
- package/dist-pkg/build/server-strip.js +32 -0
- package/dist-pkg/build/ssg.d.ts +12 -0
- package/dist-pkg/build/ssg.js +36 -0
- package/dist-pkg/cli/bun-plugin.d.ts +2 -0
- package/dist-pkg/cli/bun-plugin.js +14 -0
- package/dist-pkg/cli/canonical-import-rewrite.d.ts +18 -0
- package/dist-pkg/cli/canonical-import-rewrite.js +94 -0
- package/dist-pkg/cli/canonical-imports.d.ts +8 -0
- package/dist-pkg/cli/canonical-imports.js +131 -0
- package/dist-pkg/cli/check-ast.d.ts +20 -0
- package/dist-pkg/cli/check-ast.js +126 -0
- package/dist-pkg/cli/cmd-ai.d.ts +4 -0
- package/dist-pkg/cli/cmd-ai.js +290 -0
- package/dist-pkg/cli/cmd-build.d.ts +12 -0
- package/dist-pkg/cli/cmd-build.js +198 -0
- package/dist-pkg/cli/cmd-check.d.ts +25 -0
- package/dist-pkg/cli/cmd-check.js +573 -0
- package/dist-pkg/cli/cmd-create.d.ts +6 -0
- package/dist-pkg/cli/cmd-create.js +600 -0
- package/dist-pkg/cli/cmd-deploy.d.ts +6 -0
- package/dist-pkg/cli/cmd-deploy.js +381 -0
- package/dist-pkg/cli/cmd-dev.d.ts +5 -0
- package/dist-pkg/cli/cmd-dev.js +5 -0
- package/dist-pkg/cli/cmd-docs.d.ts +50 -0
- package/dist-pkg/cli/cmd-docs.js +122 -0
- package/dist-pkg/cli/cmd-generate.d.ts +12 -0
- package/dist-pkg/cli/cmd-generate.js +320 -0
- package/dist-pkg/cli/cmd-migrate.d.ts +7 -0
- package/dist-pkg/cli/cmd-migrate.js +42 -0
- package/dist-pkg/cli/cmd-routes.d.ts +6 -0
- package/dist-pkg/cli/cmd-routes.js +24 -0
- package/dist-pkg/cli/cmd-start.d.ts +13 -0
- package/dist-pkg/cli/cmd-start.js +32 -0
- package/dist-pkg/cli/cmd-test.d.ts +20 -0
- package/dist-pkg/cli/cmd-test.js +103 -0
- package/dist-pkg/cli/cmd-typegen.d.ts +7 -0
- package/dist-pkg/cli/cmd-typegen.js +66 -0
- package/dist-pkg/cli/cmd-upgrade.d.ts +38 -0
- package/dist-pkg/cli/cmd-upgrade.js +232 -0
- package/dist-pkg/cli/context.d.ts +4 -0
- package/dist-pkg/cli/context.js +4 -0
- package/dist-pkg/cli/framework-md.d.ts +1 -0
- package/dist-pkg/cli/framework-md.js +391 -0
- package/dist-pkg/cli/index.d.ts +6 -0
- package/dist-pkg/cli/index.js +106 -0
- package/dist-pkg/cli/release-version.d.ts +2 -0
- package/dist-pkg/cli/release-version.js +33 -0
- package/dist-pkg/client.d.ts +16 -0
- package/dist-pkg/client.js +71 -0
- package/dist-pkg/compat.d.ts +1 -0
- package/dist-pkg/compat.js +1 -0
- package/dist-pkg/compiler/analysis-backend.d.ts +20 -0
- package/dist-pkg/compiler/analysis-backend.js +164 -0
- package/dist-pkg/compiler/backends/experimental-oxc.d.ts +6 -0
- package/dist-pkg/compiler/backends/experimental-oxc.js +9 -0
- package/dist-pkg/compiler/backends/oxc.d.ts +16 -0
- package/dist-pkg/compiler/backends/oxc.js +198 -0
- package/dist-pkg/compiler/backends/register.d.ts +7 -0
- package/dist-pkg/compiler/backends/register.js +22 -0
- package/dist-pkg/compiler/fixtures.d.ts +2 -0
- package/dist-pkg/compiler/fixtures.js +118 -0
- package/dist-pkg/compiler/init.d.ts +1 -0
- package/dist-pkg/compiler/init.js +6 -0
- package/dist-pkg/compiler/module-analysis.d.ts +13 -0
- package/dist-pkg/compiler/module-analysis.js +50 -0
- package/dist-pkg/compiler/parity.d.ts +35 -0
- package/dist-pkg/compiler/parity.js +89 -0
- package/dist-pkg/compiler/readiness.d.ts +11 -0
- package/dist-pkg/compiler/readiness.js +18 -0
- package/dist-pkg/compiler/route-facts.d.ts +34 -0
- package/dist-pkg/compiler/route-facts.js +75 -0
- package/dist-pkg/content/index.d.ts +27 -0
- package/dist-pkg/content/index.js +287 -0
- package/dist-pkg/db/index.d.ts +3 -0
- package/dist-pkg/db/index.js +6 -0
- package/dist-pkg/db/migrate.d.ts +7 -0
- package/dist-pkg/db/migrate.js +53 -0
- package/dist-pkg/db/postgres.d.ts +29 -0
- package/dist-pkg/db/postgres.js +59 -0
- package/dist-pkg/db/sqlite.d.ts +10 -0
- package/dist-pkg/db/sqlite.js +22 -0
- package/dist-pkg/deploy/cloudflare.d.ts +8 -0
- package/{src/deploy/cloudflare.ts → dist-pkg/deploy/cloudflare.js} +24 -26
- package/dist-pkg/deploy/conformance.d.ts +21 -0
- package/dist-pkg/deploy/conformance.js +98 -0
- package/dist-pkg/deploy/dockerfile.d.ts +3 -0
- package/{src/deploy/dockerfile.ts → dist-pkg/deploy/dockerfile.js} +8 -10
- package/dist-pkg/deploy/fly.d.ts +3 -0
- package/{src/deploy/fly.ts → dist-pkg/deploy/fly.js} +11 -12
- package/dist-pkg/deploy/index.d.ts +6 -0
- package/dist-pkg/deploy/index.js +26 -0
- package/dist-pkg/deploy/netlify.d.ts +2 -0
- package/{src/deploy/netlify.ts → dist-pkg/deploy/netlify.js} +17 -11
- package/dist-pkg/deploy/runtime.d.ts +2 -0
- package/dist-pkg/deploy/runtime.js +3 -0
- package/dist-pkg/deploy/vercel.d.ts +22 -0
- package/dist-pkg/deploy/vercel.js +53 -0
- package/dist-pkg/dev/error-overlay.d.ts +1 -0
- package/{src/dev/error-overlay.ts → dist-pkg/dev/error-overlay.js} +13 -23
- package/dist-pkg/dev/hmr.d.ts +30 -0
- package/dist-pkg/dev/hmr.js +86 -0
- package/dist-pkg/dev/partial-handler.d.ts +9 -0
- package/dist-pkg/dev/partial-handler.js +24 -0
- package/dist-pkg/dev/request-handler.d.ts +30 -0
- package/dist-pkg/dev/request-handler.js +67 -0
- package/dist-pkg/dev/watcher.d.ts +6 -0
- package/dist-pkg/dev/watcher.js +34 -0
- package/dist-pkg/dev.d.ts +11 -0
- package/dist-pkg/dev.js +268 -0
- package/dist-pkg/env/index.d.ts +3 -0
- package/dist-pkg/env/index.js +57 -0
- package/dist-pkg/errors/catalog.d.ts +9 -0
- package/{src/errors/catalog.ts → dist-pkg/errors/catalog.js} +8 -24
- package/dist-pkg/errors/formatter.d.ts +22 -0
- package/dist-pkg/errors/formatter.js +43 -0
- package/dist-pkg/errors/index.d.ts +2 -0
- package/dist-pkg/errors/index.js +2 -0
- package/dist-pkg/forms/action.d.ts +15 -0
- package/dist-pkg/forms/action.js +20 -0
- package/dist-pkg/forms/index.d.ts +4 -0
- package/dist-pkg/forms/index.js +12 -0
- package/dist-pkg/i18n/index.d.ts +61 -0
- package/dist-pkg/i18n/index.js +147 -0
- package/dist-pkg/index-client.d.ts +1 -0
- package/dist-pkg/index-client.js +1 -0
- package/dist-pkg/index.d.ts +32 -0
- package/dist-pkg/index.js +79 -0
- package/dist-pkg/jsx-runtime-client.d.ts +8 -0
- package/dist-pkg/jsx-runtime-client.js +1 -0
- package/dist-pkg/jsx-runtime.d.ts +13 -0
- package/dist-pkg/jsx-runtime.js +5 -0
- package/dist-pkg/jsx-types-html.d.ts +221 -0
- package/dist-pkg/jsx-types-html.js +0 -0
- package/dist-pkg/log/index.d.ts +8 -0
- package/dist-pkg/log/index.js +55 -0
- package/dist-pkg/plugins/drizzle.d.ts +16 -0
- package/dist-pkg/plugins/drizzle.js +50 -0
- package/dist-pkg/plugins/index.d.ts +62 -0
- package/dist-pkg/plugins/index.js +147 -0
- package/dist-pkg/plugins/lucia.d.ts +26 -0
- package/dist-pkg/plugins/lucia.js +63 -0
- package/dist-pkg/plugins/prisma.d.ts +14 -0
- package/dist-pkg/plugins/prisma.js +57 -0
- package/dist-pkg/plugins/resend.d.ts +21 -0
- package/dist-pkg/plugins/resend.js +45 -0
- package/dist-pkg/plugins/s3.d.ts +18 -0
- package/dist-pkg/plugins/s3.js +63 -0
- package/dist-pkg/plugins/stripe.d.ts +32 -0
- package/dist-pkg/plugins/stripe.js +69 -0
- package/dist-pkg/plugins/tailwind.d.ts +15 -0
- package/dist-pkg/plugins/tailwind.js +58 -0
- package/dist-pkg/prod.d.ts +21 -0
- package/dist-pkg/prod.js +347 -0
- package/dist-pkg/reactive/computed.d.ts +3 -0
- package/dist-pkg/reactive/computed.js +15 -0
- package/dist-pkg/reactive/data.d.ts +25 -0
- package/dist-pkg/reactive/data.js +56 -0
- package/dist-pkg/reactive/diagnostics.d.ts +100 -0
- package/dist-pkg/reactive/diagnostics.js +363 -0
- package/dist-pkg/reactive/effect.d.ts +3 -0
- package/dist-pkg/reactive/effect.js +6 -0
- package/dist-pkg/reactive/index.d.ts +9 -0
- package/dist-pkg/reactive/index.js +18 -0
- package/dist-pkg/reactive/live.d.ts +15 -0
- package/dist-pkg/reactive/live.js +58 -0
- package/dist-pkg/reactive/optimistic.d.ts +20 -0
- package/dist-pkg/reactive/optimistic.js +54 -0
- package/dist-pkg/reactive/resource.d.ts +25 -0
- package/dist-pkg/reactive/resource.js +97 -0
- package/dist-pkg/reactive/signal.d.ts +4 -0
- package/dist-pkg/reactive/signal.js +17 -0
- package/dist-pkg/reactive/store.d.ts +6 -0
- package/dist-pkg/reactive/store.js +19 -0
- package/dist-pkg/router/index.d.ts +2 -0
- package/dist-pkg/router/index.js +2 -0
- package/dist-pkg/router/matcher.d.ts +7 -0
- package/dist-pkg/router/matcher.js +40 -0
- package/dist-pkg/router/scanner.d.ts +14 -0
- package/dist-pkg/router/scanner.js +141 -0
- package/dist-pkg/routes/index.d.ts +1 -0
- package/dist-pkg/routes/index.js +10 -0
- package/dist-pkg/runtime/app-config.d.ts +26 -0
- package/dist-pkg/runtime/app-config.js +69 -0
- package/dist-pkg/runtime/client.d.ts +3 -0
- package/dist-pkg/runtime/client.js +31 -0
- package/dist-pkg/runtime/devtools.d.ts +64 -0
- package/dist-pkg/runtime/devtools.js +132 -0
- package/dist-pkg/runtime/error-boundary.d.ts +6 -0
- package/dist-pkg/runtime/error-boundary.js +17 -0
- package/dist-pkg/runtime/event-replay.d.ts +3 -0
- package/{src/runtime/event-replay.ts → dist-pkg/runtime/event-replay.js} +7 -22
- package/dist-pkg/runtime/event-source.d.ts +7 -0
- package/dist-pkg/runtime/event-source.js +24 -0
- package/dist-pkg/runtime/form.d.ts +24 -0
- package/dist-pkg/runtime/form.js +59 -0
- package/dist-pkg/runtime/head.d.ts +7 -0
- package/dist-pkg/runtime/head.js +90 -0
- package/dist-pkg/runtime/html-escape.d.ts +7 -0
- package/dist-pkg/runtime/html-escape.js +39 -0
- package/dist-pkg/runtime/hydration.d.ts +15 -0
- package/dist-pkg/runtime/hydration.js +103 -0
- package/dist-pkg/runtime/image.d.ts +49 -0
- package/dist-pkg/runtime/image.js +144 -0
- package/dist-pkg/runtime/index.d.ts +17 -0
- package/dist-pkg/runtime/index.js +59 -0
- package/dist-pkg/runtime/island-hydrator.d.ts +12 -0
- package/dist-pkg/runtime/island-hydrator.js +49 -0
- package/dist-pkg/runtime/island.d.ts +19 -0
- package/dist-pkg/runtime/island.js +36 -0
- package/dist-pkg/runtime/jsx-runtime.d.ts +12 -0
- package/dist-pkg/runtime/jsx-runtime.js +173 -0
- package/dist-pkg/runtime/link.d.ts +16 -0
- package/dist-pkg/runtime/link.js +47 -0
- package/dist-pkg/runtime/project.d.ts +37 -0
- package/dist-pkg/runtime/project.js +36 -0
- package/dist-pkg/runtime/renderable.d.ts +6 -0
- package/dist-pkg/runtime/renderable.js +0 -0
- package/dist-pkg/runtime/router.d.ts +47 -0
- package/dist-pkg/runtime/router.js +476 -0
- package/dist-pkg/runtime/server.d.ts +8 -0
- package/dist-pkg/runtime/server.js +71 -0
- package/dist-pkg/runtime/stream.d.ts +29 -0
- package/dist-pkg/runtime/stream.js +106 -0
- package/dist-pkg/runtime/suspense.d.ts +6 -0
- package/dist-pkg/runtime/suspense.js +16 -0
- package/dist-pkg/runtime/typed-routes.d.ts +24 -0
- package/dist-pkg/runtime/typed-routes.js +77 -0
- package/dist-pkg/runtime/validated-form.d.ts +40 -0
- package/dist-pkg/runtime/validated-form.js +120 -0
- package/dist-pkg/security/cors.d.ts +10 -0
- package/dist-pkg/security/cors.js +56 -0
- package/dist-pkg/security/csrf.d.ts +9 -0
- package/dist-pkg/security/csrf.js +53 -0
- package/dist-pkg/security/headers.d.ts +11 -0
- package/dist-pkg/security/headers.js +31 -0
- package/dist-pkg/security/index.d.ts +5 -0
- package/dist-pkg/security/index.js +5 -0
- package/dist-pkg/security/rate-limit.d.ts +10 -0
- package/dist-pkg/security/rate-limit.js +49 -0
- package/dist-pkg/security/redis-rate-limit.d.ts +14 -0
- package/dist-pkg/security/redis-rate-limit.js +23 -0
- package/dist-pkg/server/action.d.ts +21 -0
- package/dist-pkg/server/action.js +64 -0
- package/dist-pkg/server/cache-utils.d.ts +2 -0
- package/dist-pkg/server/cache-utils.js +26 -0
- package/dist-pkg/server/cache.d.ts +33 -0
- package/dist-pkg/server/cache.js +236 -0
- package/dist-pkg/server/compress.d.ts +2 -0
- package/dist-pkg/server/compress.js +49 -0
- package/dist-pkg/server/endpoint-execution.d.ts +28 -0
- package/dist-pkg/server/endpoint-execution.js +37 -0
- package/dist-pkg/server/etag.d.ts +3 -0
- package/dist-pkg/server/etag.js +18 -0
- package/dist-pkg/server/guard.d.ts +16 -0
- package/dist-pkg/server/guard.js +45 -0
- package/dist-pkg/server/html-shell.d.ts +12 -0
- package/dist-pkg/server/html-shell.js +52 -0
- package/dist-pkg/server/index.d.ts +36 -0
- package/dist-pkg/server/index.js +170 -0
- package/dist-pkg/server/jobs.d.ts +41 -0
- package/dist-pkg/server/jobs.js +81 -0
- package/dist-pkg/server/manifest.d.ts +19 -0
- package/dist-pkg/server/manifest.js +36 -0
- package/dist-pkg/server/middleware.d.ts +39 -0
- package/dist-pkg/server/middleware.js +122 -0
- package/dist-pkg/server/mime.d.ts +1 -0
- package/{src/server/mime.ts → dist-pkg/server/mime.js} +6 -17
- package/dist-pkg/server/not-found.d.ts +6 -0
- package/dist-pkg/server/not-found.js +24 -0
- package/dist-pkg/server/page-render.d.ts +29 -0
- package/dist-pkg/server/page-render.js +67 -0
- package/dist-pkg/server/partial-navigation.d.ts +4 -0
- package/dist-pkg/server/partial-navigation.js +16 -0
- package/dist-pkg/server/pipe.d.ts +9 -0
- package/dist-pkg/server/pipe.js +32 -0
- package/dist-pkg/server/redis-cache-store.d.ts +10 -0
- package/dist-pkg/server/redis-cache-store.js +73 -0
- package/dist-pkg/server/redis-client.d.ts +37 -0
- package/dist-pkg/server/redis-client.js +37 -0
- package/dist-pkg/server/request-policy.d.ts +55 -0
- package/dist-pkg/server/request-policy.js +216 -0
- package/dist-pkg/server/request-preflight.d.ts +23 -0
- package/dist-pkg/server/request-preflight.js +45 -0
- package/dist-pkg/server/request-security-policy.d.ts +17 -0
- package/dist-pkg/server/request-security-policy.js +34 -0
- package/dist-pkg/server/request-surface.d.ts +8 -0
- package/dist-pkg/server/request-surface.js +19 -0
- package/dist-pkg/server/route-request.d.ts +31 -0
- package/dist-pkg/server/route-request.js +112 -0
- package/dist-pkg/server/route-response.d.ts +22 -0
- package/dist-pkg/server/route-response.js +58 -0
- package/dist-pkg/server/rpc-hash.d.ts +2 -0
- package/dist-pkg/server/rpc-hash.js +7 -0
- package/dist-pkg/server/rpc-protocol.d.ts +22 -0
- package/dist-pkg/server/rpc-protocol.js +28 -0
- package/dist-pkg/server/rpc-utils.d.ts +2 -0
- package/dist-pkg/server/rpc-utils.js +26 -0
- package/dist-pkg/server/rpc.d.ts +20 -0
- package/dist-pkg/server/rpc.js +147 -0
- package/dist-pkg/server/runtime-dispatch.d.ts +19 -0
- package/dist-pkg/server/runtime-dispatch.js +67 -0
- package/dist-pkg/server/server-execution.d.ts +22 -0
- package/dist-pkg/server/server-execution.js +53 -0
- package/dist-pkg/server/sqlite-cache-store.d.ts +13 -0
- package/dist-pkg/server/sqlite-cache-store.js +88 -0
- package/dist-pkg/server/sse.d.ts +9 -0
- package/dist-pkg/server/sse.js +34 -0
- package/dist-pkg/server/static-file.d.ts +9 -0
- package/dist-pkg/server/static-file.js +43 -0
- package/dist-pkg/server/ws.d.ts +18 -0
- package/dist-pkg/server/ws.js +40 -0
- package/dist-pkg/server-entry.d.ts +19 -0
- package/dist-pkg/server-entry.js +93 -0
- package/dist-pkg/testing/index.d.ts +98 -0
- package/dist-pkg/testing/index.js +254 -0
- package/dist-pkg/types/index.d.ts +4 -0
- package/dist-pkg/types/index.js +4 -0
- package/dist-pkg/types/safe-html.d.ts +7 -0
- package/dist-pkg/types/safe-html.js +19 -0
- package/dist-pkg/types/safe-sql.d.ts +8 -0
- package/dist-pkg/types/safe-sql.js +14 -0
- package/dist-pkg/types/safe-url.d.ts +7 -0
- package/dist-pkg/types/safe-url.js +20 -0
- package/dist-pkg/types/user-input.d.ts +9 -0
- package/dist-pkg/types/user-input.js +3 -0
- package/dist-pkg/unsafe/index.d.ts +12 -0
- package/dist-pkg/unsafe/index.js +6 -0
- package/package.json +102 -44
- package/bin/gorsee.js +0 -14
- package/src/auth/index.ts +0 -178
- package/src/auth/redis-session-store.ts +0 -46
- package/src/auth/sqlite-session-store.ts +0 -98
- package/src/auth/store-utils.ts +0 -21
- package/src/build/client.ts +0 -139
- package/src/build/css-modules.ts +0 -69
- package/src/build/devalue-parse.ts +0 -2
- package/src/build/manifest.ts +0 -34
- package/src/build/route-metadata.ts +0 -12
- package/src/build/rpc-transform.ts +0 -62
- package/src/build/server-strip.ts +0 -87
- package/src/build/ssg.ts +0 -70
- package/src/cli/bun-plugin.ts +0 -58
- package/src/cli/cmd-build.ts +0 -153
- package/src/cli/cmd-check.ts +0 -239
- package/src/cli/cmd-create.ts +0 -328
- package/src/cli/cmd-deploy.ts +0 -149
- package/src/cli/cmd-dev.ts +0 -13
- package/src/cli/cmd-docs.ts +0 -152
- package/src/cli/cmd-generate.ts +0 -155
- package/src/cli/cmd-migrate.ts +0 -53
- package/src/cli/cmd-routes.ts +0 -36
- package/src/cli/cmd-start.ts +0 -30
- package/src/cli/cmd-test.ts +0 -129
- package/src/cli/cmd-typegen.ts +0 -93
- package/src/cli/cmd-upgrade.ts +0 -143
- package/src/cli/context.ts +0 -12
- package/src/cli/framework-md.ts +0 -223
- package/src/cli/index.ts +0 -107
- package/src/client.ts +0 -26
- package/src/db/index.ts +0 -2
- package/src/db/migrate.ts +0 -89
- package/src/db/sqlite.ts +0 -40
- package/src/deploy/index.ts +0 -31
- package/src/deploy/vercel.ts +0 -94
- package/src/dev/hmr.ts +0 -31
- package/src/dev/partial-handler.ts +0 -52
- package/src/dev/request-handler.ts +0 -127
- package/src/dev/watcher.ts +0 -48
- package/src/dev.ts +0 -208
- package/src/env/index.ts +0 -74
- package/src/errors/formatter.ts +0 -63
- package/src/errors/index.ts +0 -2
- package/src/i18n/index.ts +0 -72
- package/src/index-client.ts +0 -4
- package/src/index.ts +0 -43
- package/src/jsx-runtime-client.ts +0 -13
- package/src/jsx-runtime.ts +0 -20
- package/src/jsx-types-html.ts +0 -242
- package/src/log/index.ts +0 -44
- package/src/plugins/drizzle.ts +0 -84
- package/src/plugins/index.ts +0 -86
- package/src/plugins/lucia.ts +0 -111
- package/src/plugins/prisma.ts +0 -85
- package/src/plugins/resend.ts +0 -78
- package/src/plugins/s3.ts +0 -102
- package/src/plugins/stripe.ts +0 -133
- package/src/plugins/tailwind.ts +0 -92
- package/src/prod.ts +0 -252
- package/src/reactive/computed.ts +0 -7
- package/src/reactive/effect.ts +0 -7
- package/src/reactive/index.ts +0 -7
- package/src/reactive/live.ts +0 -97
- package/src/reactive/optimistic.ts +0 -83
- package/src/reactive/resource.ts +0 -138
- package/src/reactive/signal.ts +0 -20
- package/src/reactive/store.ts +0 -36
- package/src/router/index.ts +0 -2
- package/src/router/matcher.ts +0 -53
- package/src/router/scanner.ts +0 -206
- package/src/runtime/client.ts +0 -28
- package/src/runtime/error-boundary.ts +0 -35
- package/src/runtime/form.ts +0 -49
- package/src/runtime/head.ts +0 -113
- package/src/runtime/html-escape.ts +0 -30
- package/src/runtime/hydration.ts +0 -95
- package/src/runtime/image.ts +0 -48
- package/src/runtime/index.ts +0 -12
- package/src/runtime/island-hydrator.ts +0 -84
- package/src/runtime/island.ts +0 -88
- package/src/runtime/jsx-runtime.ts +0 -167
- package/src/runtime/link.ts +0 -45
- package/src/runtime/project.ts +0 -73
- package/src/runtime/router.ts +0 -224
- package/src/runtime/server.ts +0 -102
- package/src/runtime/stream.ts +0 -182
- package/src/runtime/suspense.ts +0 -37
- package/src/runtime/typed-routes.ts +0 -26
- package/src/runtime/validated-form.ts +0 -106
- package/src/security/cors.ts +0 -80
- package/src/security/csrf.ts +0 -85
- package/src/security/headers.ts +0 -50
- package/src/security/index.ts +0 -4
- package/src/security/rate-limit.ts +0 -80
- package/src/server/action.ts +0 -48
- package/src/server/cache-utils.ts +0 -23
- package/src/server/cache.ts +0 -125
- package/src/server/compress.ts +0 -60
- package/src/server/etag.ts +0 -23
- package/src/server/guard.ts +0 -69
- package/src/server/html-shell.ts +0 -69
- package/src/server/index.ts +0 -57
- package/src/server/manifest.ts +0 -36
- package/src/server/middleware.ts +0 -159
- package/src/server/not-found.ts +0 -35
- package/src/server/page-render.ts +0 -123
- package/src/server/pipe.ts +0 -46
- package/src/server/redis-cache-store.ts +0 -87
- package/src/server/redis-client.ts +0 -71
- package/src/server/request-preflight.ts +0 -45
- package/src/server/route-request.ts +0 -72
- package/src/server/rpc-hash.ts +0 -17
- package/src/server/rpc-utils.ts +0 -27
- package/src/server/rpc.ts +0 -177
- package/src/server/sqlite-cache-store.ts +0 -109
- package/src/server/sse.ts +0 -96
- package/src/server/static-file.ts +0 -63
- package/src/server/ws.ts +0 -56
- package/src/server-entry.ts +0 -36
- package/src/testing/index.ts +0 -74
- package/src/types/index.ts +0 -4
- package/src/types/safe-html.ts +0 -32
- package/src/types/safe-sql.ts +0 -28
- package/src/types/safe-url.ts +0 -40
- package/src/types/user-input.ts +0 -12
- package/src/unsafe/index.ts +0 -18
package/src/jsx-types-html.ts
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
// HTML intrinsic element types for JSX autocomplete
|
|
2
|
-
|
|
3
|
-
type EventHandler = (event: Event) => void
|
|
4
|
-
interface HTMLAttributes {
|
|
5
|
-
// Core
|
|
6
|
-
id?: string
|
|
7
|
-
class?: string
|
|
8
|
-
className?: string
|
|
9
|
-
style?: string | Record<string, string | number | (() => string | number)>
|
|
10
|
-
title?: string
|
|
11
|
-
tabIndex?: number
|
|
12
|
-
hidden?: boolean
|
|
13
|
-
children?: unknown
|
|
14
|
-
|
|
15
|
-
// Accessibility
|
|
16
|
-
role?: string
|
|
17
|
-
|
|
18
|
-
// Events (on:event pattern)
|
|
19
|
-
"on:click"?: EventHandler
|
|
20
|
-
"on:dblclick"?: EventHandler
|
|
21
|
-
"on:mousedown"?: EventHandler
|
|
22
|
-
"on:mouseup"?: EventHandler
|
|
23
|
-
"on:mouseover"?: EventHandler
|
|
24
|
-
"on:mouseout"?: EventHandler
|
|
25
|
-
"on:mousemove"?: EventHandler
|
|
26
|
-
"on:keydown"?: (event: KeyboardEvent) => void
|
|
27
|
-
"on:keyup"?: (event: KeyboardEvent) => void
|
|
28
|
-
"on:keypress"?: (event: KeyboardEvent) => void
|
|
29
|
-
"on:focus"?: (event: FocusEvent) => void
|
|
30
|
-
"on:blur"?: (event: FocusEvent) => void
|
|
31
|
-
"on:input"?: (event: InputEvent) => void
|
|
32
|
-
"on:change"?: EventHandler
|
|
33
|
-
"on:submit"?: (event: SubmitEvent) => void
|
|
34
|
-
"on:scroll"?: EventHandler
|
|
35
|
-
"on:touchstart"?: EventHandler
|
|
36
|
-
"on:touchend"?: EventHandler
|
|
37
|
-
"on:touchmove"?: EventHandler
|
|
38
|
-
|
|
39
|
-
// Data attributes
|
|
40
|
-
[key: `data-${string}`]: string | number | boolean | undefined
|
|
41
|
-
// Aria attributes
|
|
42
|
-
[key: `aria-${string}`]: string | number | boolean | undefined
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
interface AnchorAttributes extends HTMLAttributes {
|
|
46
|
-
href?: string
|
|
47
|
-
target?: string
|
|
48
|
-
rel?: string
|
|
49
|
-
download?: string | boolean
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
interface ImgAttributes extends HTMLAttributes {
|
|
53
|
-
src?: string
|
|
54
|
-
alt?: string
|
|
55
|
-
width?: number | string
|
|
56
|
-
height?: number | string
|
|
57
|
-
loading?: "lazy" | "eager"
|
|
58
|
-
decoding?: "async" | "auto" | "sync"
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
interface InputAttributes extends HTMLAttributes {
|
|
62
|
-
type?: string
|
|
63
|
-
name?: string
|
|
64
|
-
value?: string | number
|
|
65
|
-
checked?: boolean
|
|
66
|
-
disabled?: boolean
|
|
67
|
-
placeholder?: string
|
|
68
|
-
required?: boolean
|
|
69
|
-
readonly?: boolean
|
|
70
|
-
min?: number | string
|
|
71
|
-
max?: number | string
|
|
72
|
-
step?: number | string
|
|
73
|
-
pattern?: string
|
|
74
|
-
autocomplete?: string
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
interface FormAttributes extends HTMLAttributes {
|
|
78
|
-
action?: string
|
|
79
|
-
method?: string
|
|
80
|
-
enctype?: string
|
|
81
|
-
novalidate?: boolean
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
interface ButtonAttributes extends HTMLAttributes {
|
|
85
|
-
type?: "button" | "submit" | "reset"
|
|
86
|
-
disabled?: boolean
|
|
87
|
-
name?: string
|
|
88
|
-
value?: string
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
interface SelectAttributes extends HTMLAttributes {
|
|
92
|
-
name?: string
|
|
93
|
-
value?: string
|
|
94
|
-
disabled?: boolean
|
|
95
|
-
multiple?: boolean
|
|
96
|
-
required?: boolean
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
interface TextareaAttributes extends HTMLAttributes {
|
|
100
|
-
name?: string
|
|
101
|
-
value?: string
|
|
102
|
-
placeholder?: string
|
|
103
|
-
rows?: number
|
|
104
|
-
cols?: number
|
|
105
|
-
disabled?: boolean
|
|
106
|
-
required?: boolean
|
|
107
|
-
readonly?: boolean
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
interface OptionAttributes extends HTMLAttributes {
|
|
111
|
-
value?: string
|
|
112
|
-
selected?: boolean
|
|
113
|
-
disabled?: boolean
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
interface LabelAttributes extends HTMLAttributes {
|
|
117
|
-
for?: string
|
|
118
|
-
htmlFor?: string
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
interface MetaAttributes extends HTMLAttributes {
|
|
122
|
-
name?: string
|
|
123
|
-
content?: string
|
|
124
|
-
charset?: string
|
|
125
|
-
"http-equiv"?: string
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
interface LinkAttributes extends HTMLAttributes {
|
|
129
|
-
href?: string
|
|
130
|
-
rel?: string
|
|
131
|
-
type?: string
|
|
132
|
-
media?: string
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
interface ScriptAttributes extends HTMLAttributes {
|
|
136
|
-
src?: string
|
|
137
|
-
type?: string
|
|
138
|
-
async?: boolean
|
|
139
|
-
defer?: boolean
|
|
140
|
-
nonce?: string
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
interface IframeAttributes extends HTMLAttributes {
|
|
144
|
-
src?: string
|
|
145
|
-
srcdoc?: string
|
|
146
|
-
width?: number | string
|
|
147
|
-
height?: number | string
|
|
148
|
-
sandbox?: string
|
|
149
|
-
allow?: string
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
interface TableCellAttributes extends HTMLAttributes {
|
|
153
|
-
colspan?: number
|
|
154
|
-
rowspan?: number
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export interface GorseeIntrinsicElements {
|
|
158
|
-
// Structural
|
|
159
|
-
div: HTMLAttributes
|
|
160
|
-
span: HTMLAttributes
|
|
161
|
-
p: HTMLAttributes
|
|
162
|
-
main: HTMLAttributes
|
|
163
|
-
section: HTMLAttributes
|
|
164
|
-
article: HTMLAttributes
|
|
165
|
-
aside: HTMLAttributes
|
|
166
|
-
header: HTMLAttributes
|
|
167
|
-
footer: HTMLAttributes
|
|
168
|
-
nav: HTMLAttributes
|
|
169
|
-
|
|
170
|
-
// Headings
|
|
171
|
-
h1: HTMLAttributes
|
|
172
|
-
h2: HTMLAttributes
|
|
173
|
-
h3: HTMLAttributes
|
|
174
|
-
h4: HTMLAttributes
|
|
175
|
-
h5: HTMLAttributes
|
|
176
|
-
h6: HTMLAttributes
|
|
177
|
-
|
|
178
|
-
// Text
|
|
179
|
-
a: AnchorAttributes
|
|
180
|
-
strong: HTMLAttributes
|
|
181
|
-
em: HTMLAttributes
|
|
182
|
-
b: HTMLAttributes
|
|
183
|
-
i: HTMLAttributes
|
|
184
|
-
small: HTMLAttributes
|
|
185
|
-
code: HTMLAttributes
|
|
186
|
-
pre: HTMLAttributes
|
|
187
|
-
blockquote: HTMLAttributes
|
|
188
|
-
br: HTMLAttributes
|
|
189
|
-
hr: HTMLAttributes
|
|
190
|
-
|
|
191
|
-
// Lists
|
|
192
|
-
ul: HTMLAttributes
|
|
193
|
-
ol: HTMLAttributes
|
|
194
|
-
li: HTMLAttributes
|
|
195
|
-
dl: HTMLAttributes
|
|
196
|
-
dt: HTMLAttributes
|
|
197
|
-
dd: HTMLAttributes
|
|
198
|
-
|
|
199
|
-
// Forms
|
|
200
|
-
form: FormAttributes
|
|
201
|
-
input: InputAttributes
|
|
202
|
-
button: ButtonAttributes
|
|
203
|
-
select: SelectAttributes
|
|
204
|
-
textarea: TextareaAttributes
|
|
205
|
-
option: OptionAttributes
|
|
206
|
-
label: LabelAttributes
|
|
207
|
-
fieldset: HTMLAttributes
|
|
208
|
-
legend: HTMLAttributes
|
|
209
|
-
|
|
210
|
-
// Media
|
|
211
|
-
img: ImgAttributes
|
|
212
|
-
video: HTMLAttributes & { src?: string; controls?: boolean; autoplay?: boolean }
|
|
213
|
-
audio: HTMLAttributes & { src?: string; controls?: boolean }
|
|
214
|
-
source: HTMLAttributes & { src?: string; type?: string }
|
|
215
|
-
canvas: HTMLAttributes & { width?: number; height?: number }
|
|
216
|
-
svg: HTMLAttributes & { viewBox?: string; xmlns?: string; width?: number | string; height?: number | string }
|
|
217
|
-
|
|
218
|
-
// Table
|
|
219
|
-
table: HTMLAttributes
|
|
220
|
-
thead: HTMLAttributes
|
|
221
|
-
tbody: HTMLAttributes
|
|
222
|
-
tfoot: HTMLAttributes
|
|
223
|
-
tr: HTMLAttributes
|
|
224
|
-
th: TableCellAttributes
|
|
225
|
-
td: TableCellAttributes
|
|
226
|
-
|
|
227
|
-
// Other
|
|
228
|
-
iframe: IframeAttributes
|
|
229
|
-
details: HTMLAttributes
|
|
230
|
-
summary: HTMLAttributes
|
|
231
|
-
dialog: HTMLAttributes & { open?: boolean }
|
|
232
|
-
template: HTMLAttributes
|
|
233
|
-
slot: HTMLAttributes
|
|
234
|
-
meta: MetaAttributes
|
|
235
|
-
link: LinkAttributes
|
|
236
|
-
script: ScriptAttributes
|
|
237
|
-
style: HTMLAttributes
|
|
238
|
-
title: HTMLAttributes
|
|
239
|
-
|
|
240
|
-
// Fallback for any element
|
|
241
|
-
[elemName: string]: HTMLAttributes
|
|
242
|
-
}
|
package/src/log/index.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export type LogLevel = "off" | "error" | "info" | "verbose" | "debug"
|
|
2
|
-
|
|
3
|
-
const LEVELS: Record<LogLevel, number> = {
|
|
4
|
-
off: 0,
|
|
5
|
-
error: 1,
|
|
6
|
-
info: 2,
|
|
7
|
-
verbose: 3,
|
|
8
|
-
debug: 4,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
let currentLevel: LogLevel = "info"
|
|
12
|
-
|
|
13
|
-
export function setLogLevel(level: LogLevel): void {
|
|
14
|
-
currentLevel = level
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function shouldLog(level: LogLevel): boolean {
|
|
18
|
-
return LEVELS[level] <= LEVELS[currentLevel]
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function formatEntry(level: string, message: string, data?: Record<string, unknown>): string {
|
|
22
|
-
const entry = {
|
|
23
|
-
level,
|
|
24
|
-
message,
|
|
25
|
-
timestamp: new Date().toISOString(),
|
|
26
|
-
...data,
|
|
27
|
-
}
|
|
28
|
-
return JSON.stringify(entry)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export const log = {
|
|
32
|
-
error(message: string, data?: Record<string, unknown>): void {
|
|
33
|
-
if (shouldLog("error")) console.error(formatEntry("error", message, data))
|
|
34
|
-
},
|
|
35
|
-
info(message: string, data?: Record<string, unknown>): void {
|
|
36
|
-
if (shouldLog("info")) console.log(formatEntry("info", message, data))
|
|
37
|
-
},
|
|
38
|
-
verbose(message: string, data?: Record<string, unknown>): void {
|
|
39
|
-
if (shouldLog("verbose")) console.log(formatEntry("verbose", message, data))
|
|
40
|
-
},
|
|
41
|
-
debug(message: string, data?: Record<string, unknown>): void {
|
|
42
|
-
if (shouldLog("debug")) console.log(formatEntry("debug", message, data))
|
|
43
|
-
},
|
|
44
|
-
}
|
package/src/plugins/drizzle.ts
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
// Drizzle ORM integration plugin -- zero external dependencies
|
|
2
|
-
|
|
3
|
-
import type { MiddlewareFn, Context } from "../server/middleware.ts"
|
|
4
|
-
import type { GorseePlugin } from "./index.ts"
|
|
5
|
-
import { definePlugin } from "./index.ts"
|
|
6
|
-
|
|
7
|
-
export interface DrizzlePluginConfig {
|
|
8
|
-
schema: string
|
|
9
|
-
out: string
|
|
10
|
-
dialect: "sqlite" | "postgres" | "mysql"
|
|
11
|
-
connectionUrl?: string
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let drizzleInstance: unknown = null
|
|
15
|
-
|
|
16
|
-
/** Returns the current drizzle instance (available after setup) */
|
|
17
|
-
export function getDrizzle<T = unknown>(): T {
|
|
18
|
-
if (!drizzleInstance) {
|
|
19
|
-
throw new Error("Drizzle not initialized. Did you register drizzlePlugin?")
|
|
20
|
-
}
|
|
21
|
-
return drizzleInstance as T
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** Middleware that attaches drizzle instance to ctx.locals.db */
|
|
25
|
-
export function drizzleMiddleware(instance: unknown): MiddlewareFn {
|
|
26
|
-
return async (ctx: Context, next) => {
|
|
27
|
-
ctx.locals.db = instance
|
|
28
|
-
return next()
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** Generates drizzle.config.ts content string */
|
|
33
|
-
export function generateDrizzleConfig(config: DrizzlePluginConfig): string {
|
|
34
|
-
const dbCredentials =
|
|
35
|
-
config.dialect === "sqlite"
|
|
36
|
-
? `{ url: "${config.connectionUrl ?? "./data.db"}" }`
|
|
37
|
-
: `{ connectionString: "${config.connectionUrl ?? ""}" }`
|
|
38
|
-
|
|
39
|
-
return `import { defineConfig } from "drizzle-kit"
|
|
40
|
-
|
|
41
|
-
export default defineConfig({
|
|
42
|
-
schema: "${config.schema}",
|
|
43
|
-
out: "${config.out}",
|
|
44
|
-
dialect: "${config.dialect}",
|
|
45
|
-
dbCredentials: ${dbCredentials},
|
|
46
|
-
})
|
|
47
|
-
`
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** Creates a Drizzle ORM integration plugin */
|
|
51
|
-
export function drizzlePlugin(config: DrizzlePluginConfig): GorseePlugin {
|
|
52
|
-
return definePlugin({
|
|
53
|
-
name: "gorsee-drizzle",
|
|
54
|
-
|
|
55
|
-
async setup(app) {
|
|
56
|
-
if (config.dialect === "sqlite") {
|
|
57
|
-
const { Database } = await import("bun:sqlite" as string)
|
|
58
|
-
const db = new Database(config.connectionUrl ?? "./data.db")
|
|
59
|
-
db.exec("PRAGMA journal_mode=WAL")
|
|
60
|
-
|
|
61
|
-
// Dynamic import for drizzle-orm/bun-sqlite
|
|
62
|
-
try {
|
|
63
|
-
const { drizzle } = await import("drizzle-orm/bun-sqlite" as string)
|
|
64
|
-
drizzleInstance = drizzle(db)
|
|
65
|
-
} catch {
|
|
66
|
-
// If drizzle-orm not installed, store raw db
|
|
67
|
-
drizzleInstance = db
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
// For postgres/mysql, store connection URL for user to configure
|
|
71
|
-
drizzleInstance = { dialect: config.dialect, url: config.connectionUrl }
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
app.addMiddleware(drizzleMiddleware(drizzleInstance))
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
async teardown() {
|
|
78
|
-
if (drizzleInstance && typeof (drizzleInstance as any).close === "function") {
|
|
79
|
-
;(drizzleInstance as any).close()
|
|
80
|
-
}
|
|
81
|
-
drizzleInstance = null
|
|
82
|
-
},
|
|
83
|
-
})
|
|
84
|
-
}
|
package/src/plugins/index.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
// Gorsee plugin system -- lifecycle management for framework extensions
|
|
2
|
-
|
|
3
|
-
import type { MiddlewareFn, Context } from "../server/middleware.ts"
|
|
4
|
-
|
|
5
|
-
export interface GorseePlugin {
|
|
6
|
-
name: string
|
|
7
|
-
/** Hook into server startup */
|
|
8
|
-
setup?: (app: PluginContext) => void | Promise<void>
|
|
9
|
-
/** Add middleware to every request */
|
|
10
|
-
middleware?: MiddlewareFn
|
|
11
|
-
/** Hook into build pipeline */
|
|
12
|
-
buildPlugins?: () => import("bun").BunPlugin[]
|
|
13
|
-
/** Cleanup on shutdown */
|
|
14
|
-
teardown?: () => void | Promise<void>
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export interface PluginContext {
|
|
18
|
-
/** Register a middleware */
|
|
19
|
-
addMiddleware(mw: MiddlewareFn): void
|
|
20
|
-
/** Register a route programmatically */
|
|
21
|
-
addRoute(path: string, handler: (ctx: Context) => Promise<Response>): void
|
|
22
|
-
/** Access app config */
|
|
23
|
-
config: Record<string, unknown>
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/** Identity helper for type inference */
|
|
27
|
-
export function definePlugin(plugin: GorseePlugin): GorseePlugin {
|
|
28
|
-
return plugin
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export interface PluginRunner {
|
|
32
|
-
register(plugin: GorseePlugin): void
|
|
33
|
-
setupAll(): Promise<void>
|
|
34
|
-
teardownAll(): Promise<void>
|
|
35
|
-
getMiddlewares(): MiddlewareFn[]
|
|
36
|
-
getBuildPlugins(): import("bun").BunPlugin[]
|
|
37
|
-
getRoutes(): Map<string, (ctx: Context) => Promise<Response>>
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/** Creates a plugin runner that manages the full plugin lifecycle */
|
|
41
|
-
export function createPluginRunner(
|
|
42
|
-
config: Record<string, unknown> = {},
|
|
43
|
-
): PluginRunner {
|
|
44
|
-
const plugins: GorseePlugin[] = []
|
|
45
|
-
const middlewares: MiddlewareFn[] = []
|
|
46
|
-
const routes = new Map<string, (ctx: Context) => Promise<Response>>()
|
|
47
|
-
|
|
48
|
-
const pluginCtx: PluginContext = {
|
|
49
|
-
addMiddleware: (mw) => middlewares.push(mw),
|
|
50
|
-
addRoute: (path, handler) => routes.set(path, handler),
|
|
51
|
-
config,
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
register(plugin: GorseePlugin) {
|
|
56
|
-
plugins.push(plugin)
|
|
57
|
-
if (plugin.middleware) {
|
|
58
|
-
middlewares.push(plugin.middleware)
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
async setupAll() {
|
|
63
|
-
for (const plugin of plugins) {
|
|
64
|
-
if (plugin.setup) await plugin.setup(pluginCtx)
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
async teardownAll() {
|
|
69
|
-
for (const plugin of [...plugins].reverse()) {
|
|
70
|
-
if (plugin.teardown) await plugin.teardown()
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
getMiddlewares: () => [...middlewares],
|
|
75
|
-
|
|
76
|
-
getBuildPlugins() {
|
|
77
|
-
const result: import("bun").BunPlugin[] = []
|
|
78
|
-
for (const plugin of plugins) {
|
|
79
|
-
if (plugin.buildPlugins) result.push(...plugin.buildPlugins())
|
|
80
|
-
}
|
|
81
|
-
return result
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
getRoutes: () => new Map(routes),
|
|
85
|
-
}
|
|
86
|
-
}
|
package/src/plugins/lucia.ts
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
// Lucia auth adapter plugin -- session management integration
|
|
2
|
-
|
|
3
|
-
import type { MiddlewareFn, Context } from "../server/middleware.ts"
|
|
4
|
-
import type { GorseePlugin } from "./index.ts"
|
|
5
|
-
import { definePlugin } from "./index.ts"
|
|
6
|
-
|
|
7
|
-
export interface LuciaPluginConfig {
|
|
8
|
-
adapter: "sqlite" | "prisma" | "drizzle"
|
|
9
|
-
sessionTable?: string
|
|
10
|
-
userTable?: string
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface LuciaInstance {
|
|
14
|
-
validateSession(sessionId: string): Promise<{ session: unknown; user: unknown } | null>
|
|
15
|
-
createSession(userId: string, attributes?: Record<string, unknown>): Promise<{ id: string }>
|
|
16
|
-
invalidateSession(sessionId: string): Promise<void>
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
let luciaInstance: LuciaInstance | null = null
|
|
20
|
-
|
|
21
|
-
/** Returns the Lucia instance (available after setup) */
|
|
22
|
-
export function getLucia(): LuciaInstance {
|
|
23
|
-
if (!luciaInstance) {
|
|
24
|
-
throw new Error("Lucia not initialized. Did you register luciaPlugin?")
|
|
25
|
-
}
|
|
26
|
-
return luciaInstance
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** Extracts current session from context (set by middleware) */
|
|
30
|
-
export function getSession(ctx: Context): unknown | null {
|
|
31
|
-
return ctx.locals.session ?? null
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/** Extracts current user from context (set by middleware) */
|
|
35
|
-
export function getUser(ctx: Context): unknown | null {
|
|
36
|
-
return ctx.locals.user ?? null
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/** Creates the session validation middleware */
|
|
40
|
-
function createSessionMiddleware(): MiddlewareFn {
|
|
41
|
-
return async (ctx: Context, next) => {
|
|
42
|
-
ctx.locals.session = null
|
|
43
|
-
ctx.locals.user = null
|
|
44
|
-
|
|
45
|
-
const sessionId =
|
|
46
|
-
ctx.cookies.get("auth_session") ??
|
|
47
|
-
ctx.request.headers.get("Authorization")?.replace("Bearer ", "") ??
|
|
48
|
-
null
|
|
49
|
-
|
|
50
|
-
if (sessionId && luciaInstance) {
|
|
51
|
-
try {
|
|
52
|
-
const result = await luciaInstance.validateSession(sessionId)
|
|
53
|
-
if (result) {
|
|
54
|
-
ctx.locals.session = result.session
|
|
55
|
-
ctx.locals.user = result.user
|
|
56
|
-
}
|
|
57
|
-
} catch {
|
|
58
|
-
// Invalid session -- continue without auth
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return next()
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/** Creates a Lucia auth integration plugin */
|
|
67
|
-
export function luciaPlugin(config: LuciaPluginConfig): GorseePlugin {
|
|
68
|
-
return definePlugin({
|
|
69
|
-
name: "gorsee-lucia",
|
|
70
|
-
|
|
71
|
-
async setup() {
|
|
72
|
-
try {
|
|
73
|
-
const { Lucia } = await import("lucia" as string)
|
|
74
|
-
let adapter: unknown
|
|
75
|
-
|
|
76
|
-
if (config.adapter === "sqlite") {
|
|
77
|
-
const { BunSQLiteAdapter } = await import("@lucia-auth/adapter-sqlite" as string)
|
|
78
|
-
const { Database } = await import("bun:sqlite" as string)
|
|
79
|
-
const db = new Database("./data.db")
|
|
80
|
-
adapter = new BunSQLiteAdapter(db, {
|
|
81
|
-
session: config.sessionTable ?? "session",
|
|
82
|
-
user: config.userTable ?? "user",
|
|
83
|
-
})
|
|
84
|
-
} else if (config.adapter === "prisma") {
|
|
85
|
-
const { PrismaAdapter } = await import("@lucia-auth/adapter-prisma" as string)
|
|
86
|
-
const { PrismaClient } = await import("@prisma/client" as string)
|
|
87
|
-
adapter = new PrismaAdapter(new PrismaClient(), {
|
|
88
|
-
session: config.sessionTable ?? "session",
|
|
89
|
-
user: config.userTable ?? "user",
|
|
90
|
-
})
|
|
91
|
-
} else {
|
|
92
|
-
// Drizzle adapter -- user must configure separately
|
|
93
|
-
adapter = null
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (adapter) {
|
|
97
|
-
luciaInstance = new Lucia(adapter) as unknown as LuciaInstance
|
|
98
|
-
}
|
|
99
|
-
} catch {
|
|
100
|
-
// Lucia not installed -- instance stays null
|
|
101
|
-
luciaInstance = null
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
|
|
105
|
-
middleware: createSessionMiddleware(),
|
|
106
|
-
|
|
107
|
-
async teardown() {
|
|
108
|
-
luciaInstance = null
|
|
109
|
-
},
|
|
110
|
-
})
|
|
111
|
-
}
|
package/src/plugins/prisma.ts
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
// Prisma integration plugin -- zero external dependencies
|
|
2
|
-
|
|
3
|
-
import type { MiddlewareFn, Context } from "../server/middleware.ts"
|
|
4
|
-
import type { GorseePlugin } from "./index.ts"
|
|
5
|
-
import { definePlugin } from "./index.ts"
|
|
6
|
-
|
|
7
|
-
export interface PrismaPluginConfig {
|
|
8
|
-
schemaPath?: string
|
|
9
|
-
datasourceUrl?: string
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
let prismaClient: unknown = null
|
|
13
|
-
|
|
14
|
-
/** Returns the current Prisma client (available after setup) */
|
|
15
|
-
export function getPrisma<T = unknown>(): T {
|
|
16
|
-
if (!prismaClient) {
|
|
17
|
-
throw new Error("Prisma not initialized. Did you register prismaPlugin?")
|
|
18
|
-
}
|
|
19
|
-
return prismaClient as T
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** Middleware that attaches prisma to ctx.locals.prisma */
|
|
23
|
-
export function prismaMiddleware(client: unknown): MiddlewareFn {
|
|
24
|
-
return async (ctx: Context, next) => {
|
|
25
|
-
ctx.locals.prisma = client
|
|
26
|
-
return next()
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** Generates a basic schema.prisma content string */
|
|
31
|
-
export function generatePrismaSchema(config: PrismaPluginConfig): string {
|
|
32
|
-
const url = config.datasourceUrl ?? "file:./dev.db"
|
|
33
|
-
const provider = url.startsWith("file:") ? "sqlite"
|
|
34
|
-
: url.startsWith("postgres") ? "postgresql"
|
|
35
|
-
: "mysql"
|
|
36
|
-
|
|
37
|
-
return `generator client {
|
|
38
|
-
provider = "prisma-client-js"
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
datasource db {
|
|
42
|
-
provider = "${provider}"
|
|
43
|
-
url = "${url}"
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Add your models below
|
|
47
|
-
// model User {
|
|
48
|
-
// id Int @id @default(autoincrement())
|
|
49
|
-
// email String @unique
|
|
50
|
-
// name String?
|
|
51
|
-
// }
|
|
52
|
-
`
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Creates a Prisma integration plugin */
|
|
56
|
-
export function prismaPlugin(config: PrismaPluginConfig = {}): GorseePlugin {
|
|
57
|
-
return definePlugin({
|
|
58
|
-
name: "gorsee-prisma",
|
|
59
|
-
|
|
60
|
-
async setup(app) {
|
|
61
|
-
try {
|
|
62
|
-
// Dynamic import -- PrismaClient must be generated by user
|
|
63
|
-
const { PrismaClient } = await import("@prisma/client" as string)
|
|
64
|
-
prismaClient = new PrismaClient({
|
|
65
|
-
datasourceUrl: config.datasourceUrl,
|
|
66
|
-
})
|
|
67
|
-
} catch {
|
|
68
|
-
// If @prisma/client not available, create a placeholder
|
|
69
|
-
prismaClient = {
|
|
70
|
-
_placeholder: true,
|
|
71
|
-
_message: "Run `bunx prisma generate` to create the client",
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
app.addMiddleware(prismaMiddleware(prismaClient))
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
async teardown() {
|
|
79
|
-
if (prismaClient && typeof (prismaClient as any).$disconnect === "function") {
|
|
80
|
-
await (prismaClient as any).$disconnect()
|
|
81
|
-
}
|
|
82
|
-
prismaClient = null
|
|
83
|
-
},
|
|
84
|
-
})
|
|
85
|
-
}
|