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
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { executeEndpointRequest } from "./endpoint-execution.js";
|
|
2
|
+
import { createTraceIds, emitAIEvent } from "../ai/index.js";
|
|
3
|
+
export async function executeServerExecution(options) {
|
|
4
|
+
const trace = options.trace?.requestId && options.trace?.traceId && options.trace?.spanId ? options.trace : createTraceIds(options.trace), pathname = new URL(options.request.url).pathname;
|
|
5
|
+
await emitAIEvent({
|
|
6
|
+
kind: `${options.kind}.start`,
|
|
7
|
+
severity: "info",
|
|
8
|
+
source: "runtime",
|
|
9
|
+
message: `${options.kind} request received`,
|
|
10
|
+
requestId: trace.requestId,
|
|
11
|
+
traceId: trace.traceId,
|
|
12
|
+
spanId: trace.spanId,
|
|
13
|
+
parentSpanId: trace.parentSpanId,
|
|
14
|
+
route: options.route,
|
|
15
|
+
data: {
|
|
16
|
+
method: options.request.method,
|
|
17
|
+
pathname,
|
|
18
|
+
middlewareCount: options.middlewares?.length ?? 0
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const response = await executeEndpointRequest({
|
|
22
|
+
request: options.request,
|
|
23
|
+
kind: options.kind,
|
|
24
|
+
params: options.params,
|
|
25
|
+
middlewares: options.middlewares,
|
|
26
|
+
trustedOrigin: options.trustedOrigin,
|
|
27
|
+
trustForwardedHeaders: options.trustForwardedHeaders,
|
|
28
|
+
securityPolicy: options.securityPolicy,
|
|
29
|
+
trace,
|
|
30
|
+
handler: async (context) => options.handler({
|
|
31
|
+
...context,
|
|
32
|
+
kind: options.kind,
|
|
33
|
+
trace
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
await emitAIEvent({
|
|
37
|
+
kind: `${options.kind}.finish`,
|
|
38
|
+
severity: response.status >= 400 ? "warn" : "info",
|
|
39
|
+
source: "runtime",
|
|
40
|
+
message: `${options.kind} request completed`,
|
|
41
|
+
requestId: trace.requestId,
|
|
42
|
+
traceId: trace.traceId,
|
|
43
|
+
spanId: trace.spanId,
|
|
44
|
+
parentSpanId: trace.parentSpanId,
|
|
45
|
+
route: options.route,
|
|
46
|
+
data: {
|
|
47
|
+
method: options.request.method,
|
|
48
|
+
pathname,
|
|
49
|
+
status: response.status
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return response;
|
|
53
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CacheStore } from "./cache.js";
|
|
2
|
+
interface SQLiteCacheStoreOptions {
|
|
3
|
+
maxEntryAgeMs?: number;
|
|
4
|
+
pruneExpiredOnInit?: boolean;
|
|
5
|
+
pruneExpiredOnGet?: boolean;
|
|
6
|
+
pruneExpiredOnSet?: boolean;
|
|
7
|
+
pruneExpiredOnKeys?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function createSQLiteCacheStore(path?: string, options?: SQLiteCacheStoreOptions): CacheStore & {
|
|
10
|
+
close(): void;
|
|
11
|
+
deleteExpired(now?: number): number;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Database } from "bun:sqlite";
|
|
2
|
+
import { safeJSONParse } from "../ai/json.js";
|
|
3
|
+
function ensureCacheTable(sqlite) {
|
|
4
|
+
sqlite.run(`
|
|
5
|
+
CREATE TABLE IF NOT EXISTS gorsee_route_cache (
|
|
6
|
+
cache_key TEXT PRIMARY KEY,
|
|
7
|
+
body TEXT NOT NULL,
|
|
8
|
+
headers TEXT NOT NULL,
|
|
9
|
+
status INTEGER NOT NULL,
|
|
10
|
+
created_at INTEGER NOT NULL,
|
|
11
|
+
revalidating INTEGER NOT NULL DEFAULT 0
|
|
12
|
+
)
|
|
13
|
+
`);
|
|
14
|
+
}
|
|
15
|
+
function pruneExpiredRows(sqlite, maxEntryAgeMs, now = Date.now()) {
|
|
16
|
+
const cutoff = now - maxEntryAgeMs;
|
|
17
|
+
return sqlite.prepare("DELETE FROM gorsee_route_cache WHERE created_at <= ?1").run(cutoff).changes ?? 0;
|
|
18
|
+
}
|
|
19
|
+
export function createSQLiteCacheStore(path = ":memory:", options = {}) {
|
|
20
|
+
const sqlite = new Database(path);
|
|
21
|
+
sqlite.run("PRAGMA journal_mode=WAL;");
|
|
22
|
+
ensureCacheTable(sqlite);
|
|
23
|
+
const {
|
|
24
|
+
maxEntryAgeMs = 86400000,
|
|
25
|
+
pruneExpiredOnInit = !0,
|
|
26
|
+
pruneExpiredOnGet = !0,
|
|
27
|
+
pruneExpiredOnSet = !0,
|
|
28
|
+
pruneExpiredOnKeys = !0
|
|
29
|
+
} = options;
|
|
30
|
+
if (pruneExpiredOnInit)
|
|
31
|
+
pruneExpiredRows(sqlite, maxEntryAgeMs);
|
|
32
|
+
return {
|
|
33
|
+
async get(key) {
|
|
34
|
+
if (pruneExpiredOnGet)
|
|
35
|
+
pruneExpiredRows(sqlite, maxEntryAgeMs);
|
|
36
|
+
const row = sqlite.prepare(`
|
|
37
|
+
SELECT body, headers, status, created_at, revalidating
|
|
38
|
+
FROM gorsee_route_cache
|
|
39
|
+
WHERE cache_key = ?1
|
|
40
|
+
`).get(key);
|
|
41
|
+
if (!row)
|
|
42
|
+
return;
|
|
43
|
+
const headers = safeJSONParse(row.headers);
|
|
44
|
+
if (!headers) {
|
|
45
|
+
sqlite.prepare("DELETE FROM gorsee_route_cache WHERE cache_key = ?1").run(key);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
body: row.body,
|
|
50
|
+
headers,
|
|
51
|
+
status: row.status,
|
|
52
|
+
createdAt: row.created_at,
|
|
53
|
+
revalidating: row.revalidating === 1
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
async set(key, entry) {
|
|
57
|
+
if (pruneExpiredOnSet)
|
|
58
|
+
pruneExpiredRows(sqlite, maxEntryAgeMs);
|
|
59
|
+
sqlite.prepare(`
|
|
60
|
+
INSERT INTO gorsee_route_cache (cache_key, body, headers, status, created_at, revalidating)
|
|
61
|
+
VALUES (?1, ?2, ?3, ?4, ?5, ?6)
|
|
62
|
+
ON CONFLICT(cache_key) DO UPDATE SET
|
|
63
|
+
body = excluded.body,
|
|
64
|
+
headers = excluded.headers,
|
|
65
|
+
status = excluded.status,
|
|
66
|
+
created_at = excluded.created_at,
|
|
67
|
+
revalidating = excluded.revalidating
|
|
68
|
+
`).run(key, entry.body, JSON.stringify(entry.headers), entry.status, entry.createdAt, entry.revalidating ? 1 : 0);
|
|
69
|
+
},
|
|
70
|
+
async delete(key) {
|
|
71
|
+
sqlite.prepare("DELETE FROM gorsee_route_cache WHERE cache_key = ?1").run(key);
|
|
72
|
+
},
|
|
73
|
+
async clear() {
|
|
74
|
+
sqlite.prepare("DELETE FROM gorsee_route_cache").run();
|
|
75
|
+
},
|
|
76
|
+
async keys() {
|
|
77
|
+
if (pruneExpiredOnKeys)
|
|
78
|
+
pruneExpiredRows(sqlite, maxEntryAgeMs);
|
|
79
|
+
return sqlite.prepare("SELECT cache_key FROM gorsee_route_cache").all().map((row) => row.cache_key);
|
|
80
|
+
},
|
|
81
|
+
deleteExpired(now = Date.now()) {
|
|
82
|
+
return pruneExpiredRows(sqlite, maxEntryAgeMs, now);
|
|
83
|
+
},
|
|
84
|
+
close() {
|
|
85
|
+
sqlite.close();
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface SSEOptions {
|
|
2
|
+
headers?: Record<string, string>;
|
|
3
|
+
}
|
|
4
|
+
export interface SSEStream {
|
|
5
|
+
response: Response;
|
|
6
|
+
send: (event: string, data: unknown) => void;
|
|
7
|
+
close: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createSSEStream(options?: SSEOptions): SSEStream;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export function createSSEStream(options) {
|
|
2
|
+
let controller = null;
|
|
3
|
+
const encoder = new TextEncoder, stream = new ReadableStream({
|
|
4
|
+
start(ctrl) {
|
|
5
|
+
controller = ctrl;
|
|
6
|
+
},
|
|
7
|
+
cancel() {
|
|
8
|
+
controller = null;
|
|
9
|
+
}
|
|
10
|
+
}), response = new Response(stream, {
|
|
11
|
+
headers: {
|
|
12
|
+
"Content-Type": "text/event-stream",
|
|
13
|
+
"Cache-Control": "no-cache",
|
|
14
|
+
Connection: "keep-alive",
|
|
15
|
+
...options?.headers
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
function send(event, data) {
|
|
19
|
+
if (!controller)
|
|
20
|
+
return;
|
|
21
|
+
const payload = `event: ${event}
|
|
22
|
+
data: ${JSON.stringify(data)}
|
|
23
|
+
|
|
24
|
+
`;
|
|
25
|
+
controller.enqueue(encoder.encode(payload));
|
|
26
|
+
}
|
|
27
|
+
function close() {
|
|
28
|
+
if (controller) {
|
|
29
|
+
controller.close();
|
|
30
|
+
controller = null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { response, send, close };
|
|
34
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface StaticFileOptions {
|
|
2
|
+
contentType?: string;
|
|
3
|
+
cacheControl?: string;
|
|
4
|
+
request?: Request;
|
|
5
|
+
etag?: boolean;
|
|
6
|
+
extraHeaders?: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare function serveStaticFile(rootDir: string, relativePath: string, options?: StaticFileOptions): Promise<Response | null>;
|
|
9
|
+
export declare function servePrefixedStaticFile(pathname: string, prefix: string, rootDir: string, options?: StaticFileOptions): Promise<Response | null>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getMimeType } from "./mime.js";
|
|
2
|
+
import { fileETag, isNotModified } from "./etag.js";
|
|
3
|
+
import { readFile, realpath } from "node:fs/promises";
|
|
4
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
5
|
+
export async function serveStaticFile(rootDir, relativePath, options = {}) {
|
|
6
|
+
const {
|
|
7
|
+
contentType,
|
|
8
|
+
cacheControl,
|
|
9
|
+
request,
|
|
10
|
+
etag = !1,
|
|
11
|
+
extraHeaders = {}
|
|
12
|
+
} = options;
|
|
13
|
+
try {
|
|
14
|
+
const rootPath = await realpath(resolve(rootDir)), candidatePath = resolve(rootPath, relativePath), filePath = await realpath(candidatePath).catch(() => candidatePath), relativePathFromRoot = relative(rootPath, filePath);
|
|
15
|
+
if (relativePathFromRoot.startsWith("..") || isAbsolute(relativePathFromRoot))
|
|
16
|
+
return null;
|
|
17
|
+
const fileBuffer = await readFile(filePath).catch(() => null);
|
|
18
|
+
if (!fileBuffer)
|
|
19
|
+
return null;
|
|
20
|
+
const headers = {
|
|
21
|
+
"Content-Type": contentType ?? getMimeType(filePath),
|
|
22
|
+
...extraHeaders
|
|
23
|
+
};
|
|
24
|
+
if (cacheControl)
|
|
25
|
+
headers["Cache-Control"] = cacheControl;
|
|
26
|
+
if (etag) {
|
|
27
|
+
const tag = await fileETag(filePath);
|
|
28
|
+
if (tag && request && isNotModified(request, tag))
|
|
29
|
+
return new Response(null, { status: 304, headers: extraHeaders });
|
|
30
|
+
if (tag)
|
|
31
|
+
headers.ETag = tag;
|
|
32
|
+
}
|
|
33
|
+
return new Response(fileBuffer, { headers });
|
|
34
|
+
} catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function servePrefixedStaticFile(pathname, prefix, rootDir, options = {}) {
|
|
39
|
+
if (!pathname.startsWith(prefix))
|
|
40
|
+
return null;
|
|
41
|
+
const relativePath = pathname.slice(prefix.length);
|
|
42
|
+
return serveStaticFile(rootDir, relativePath, options);
|
|
43
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface WSContext {
|
|
2
|
+
send(data: string | ArrayBuffer): void;
|
|
3
|
+
close(code?: number, reason?: string): void;
|
|
4
|
+
id: string;
|
|
5
|
+
}
|
|
6
|
+
export type WSHandler = {
|
|
7
|
+
open?: (ws: WSContext) => void;
|
|
8
|
+
message?: (ws: WSContext, data: string | ArrayBuffer) => void;
|
|
9
|
+
close?: (ws: WSContext) => void;
|
|
10
|
+
};
|
|
11
|
+
export declare function joinRoom(room: string, ws: WSContext): void;
|
|
12
|
+
export declare function leaveRoom(room: string, ws: WSContext): void;
|
|
13
|
+
export declare function broadcastToRoom(room: string, data: string, exclude?: WSContext): void;
|
|
14
|
+
export declare function getRoomSize(room: string): number;
|
|
15
|
+
export declare function createWSContext(ws: {
|
|
16
|
+
send(data: string | ArrayBuffer): void;
|
|
17
|
+
close(code?: number, reason?: string): void;
|
|
18
|
+
}): WSContext;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const rooms = new Map;
|
|
2
|
+
export function joinRoom(room, ws) {
|
|
3
|
+
let members = rooms.get(room);
|
|
4
|
+
if (!members) {
|
|
5
|
+
members = new Set;
|
|
6
|
+
rooms.set(room, members);
|
|
7
|
+
}
|
|
8
|
+
members.add(ws);
|
|
9
|
+
}
|
|
10
|
+
export function leaveRoom(room, ws) {
|
|
11
|
+
const members = rooms.get(room);
|
|
12
|
+
if (!members)
|
|
13
|
+
return;
|
|
14
|
+
members.delete(ws);
|
|
15
|
+
if (members.size === 0)
|
|
16
|
+
rooms.delete(room);
|
|
17
|
+
}
|
|
18
|
+
export function broadcastToRoom(room, data, exclude) {
|
|
19
|
+
const members = rooms.get(room);
|
|
20
|
+
if (!members)
|
|
21
|
+
return;
|
|
22
|
+
for (const ws of members) {
|
|
23
|
+
if (ws === exclude)
|
|
24
|
+
continue;
|
|
25
|
+
try {
|
|
26
|
+
ws.send(data);
|
|
27
|
+
} catch {}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function getRoomSize(room) {
|
|
31
|
+
return rooms.get(room)?.size ?? 0;
|
|
32
|
+
}
|
|
33
|
+
let wsIdCounter = 0;
|
|
34
|
+
export function createWSContext(ws) {
|
|
35
|
+
return {
|
|
36
|
+
send: (data) => ws.send(data),
|
|
37
|
+
close: (code, reason) => ws.close(code, reason),
|
|
38
|
+
id: `ws_${++wsIdCounter}`
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./server/index.js";
|
|
2
|
+
/** @deprecated Prefer "gorsee/auth" when auth is the primary concern. */
|
|
3
|
+
export { createAuth, createMemorySessionStore, createNamespacedSessionStore, createRedisSessionStore, createSQLiteSessionStore, createAuthActionTokenManager, createMemoryAuthActionTokenStore, sessionHasRole, sessionHasPermission, type AuthConfig, type AuthEvent, type AuthEventHandler, type AuthActionTokenClaims, type AuthActionTokenPurpose, type AuthActionTokenReplayStore, type PermissionResolver, type Session, type SessionStore, } from "./auth/index.js";
|
|
4
|
+
/** @deprecated Prefer "gorsee/db" when data access is the primary concern. */
|
|
5
|
+
export { createDB, createPostgresDB, toPostgresSQL, type DB, type PostgresDB, type PostgresClientLike, type PostgresConnectionLike, type PostgresPoolLike, type PostgresQueryResult, runMigrations, createMigration, type MigrationResult, } from "./db/index.js";
|
|
6
|
+
/** @deprecated Prefer "gorsee/security" when security policy is the primary concern. */
|
|
7
|
+
export { securityHeaders, type SecurityConfig, csrfProtection, createCSRFMiddleware, generateCSRFToken, validateCSRFToken, createRateLimiter, createRedisRateLimiter, parseRateLimitWindow, type RateLimiter, type AsyncRateLimiter, type AsyncRateLimitResult, cors, type CORSOptions, } from "./security/index.js";
|
|
8
|
+
/** @deprecated Prefer "gorsee/env" when environment loading is the primary concern. */
|
|
9
|
+
export { env, getPublicEnv, loadEnv } from "./env/index.js";
|
|
10
|
+
/** @deprecated Prefer "gorsee/log" when structured logging is the primary concern. */
|
|
11
|
+
export { log, setLogLevel } from "./log/index.js";
|
|
12
|
+
/** @deprecated Prefer "gorsee/ai" when AI tooling is the primary concern. */
|
|
13
|
+
export { buildAIHealthReport, buildAIContextBundle, buildIDEProjection, configureAIObservability, createAIMCPServer, createAIContextPacket, createAIBridgeHandler, createAIBridgeServer, createIDEProjectionWatcher, createLineReader, emitAIDiagnostic, emitAIEvent, createTraceIds, readAIDiagnosticsSnapshot, readAIEvents, renderAIContextBundleMarkdown, renderAIContextMarkdown, resolveAISessionPackPaths, resolveIDEProjectionPaths, resolveAIStorePaths, resolveAIObservabilityConfig, runWithAITrace, writeAISessionPack, writeIDEProjection, type AIMCPServerOptions, type AIContextPacket, type AIContextBundle, type AIContextSnippet, type AIHealthReport, type AIEvent, type AIEventSeverity, type IDEProjection, type IDEProjectionPaths, type IDEProjectionWatcher, type IDEProjectionWatcherOptions, type AISessionPackConfig, type AISessionPackPaths, type AIStorePaths, type AITraceContext, type AIDiagnostic, type AIObservabilityConfig, type AIBridgeConfig, type AIBridgeServer, type AIBridgeHandler, type AIBridgeServerOptions, type AIBridgeSnapshot, } from "./ai/index.js";
|
|
14
|
+
export { createNodeRedisLikeClient, createIORedisLikeClient, deleteExpiredRedisKeys, type RedisLikeClient, type NodeRedisClientLike, type IORedisClientLike, } from "./server/redis-client.js";
|
|
15
|
+
export { createMemoryJobQueue, defineJob, type JobContext, type JobDefinition, type JobEnqueueOptions, type JobQueue, type JobRunResult, type EnqueuedJob, } from "./server/jobs.js";
|
|
16
|
+
/** @deprecated Prefer "gorsee/i18n" when locale contracts are the primary concern. */
|
|
17
|
+
export { setupI18n, loadLocale, getLocale, getLocales, getDefaultLocale, getFallbackLocales, setLocale, t, plural, negotiateLocale, resolveLocaleFromPath, stripLocalePrefix, withLocalePath, buildHreflangLinks, formatNumber, formatDate, formatRelativeTime, type I18nConfig, type LocaleNegotiationInput, type LocaleNegotiationResult, } from "./i18n/index.js";
|
|
18
|
+
/** @deprecated Prefer "gorsee/content" when content contracts are the primary concern. */
|
|
19
|
+
export { loadContentCollection, parseFrontmatter, extractExcerpt, queryContent, getContentEntryBySlug, type ContentCollectionOptions, type ContentEntry, type ContentQueryOptions, } from "./content/index.js";
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export * from "./server/index.js";
|
|
2
|
+
export {
|
|
3
|
+
createAuth,
|
|
4
|
+
createMemorySessionStore,
|
|
5
|
+
createNamespacedSessionStore,
|
|
6
|
+
createRedisSessionStore,
|
|
7
|
+
createSQLiteSessionStore,
|
|
8
|
+
createAuthActionTokenManager,
|
|
9
|
+
createMemoryAuthActionTokenStore,
|
|
10
|
+
sessionHasRole,
|
|
11
|
+
sessionHasPermission
|
|
12
|
+
} from "./auth/index.js";
|
|
13
|
+
export {
|
|
14
|
+
createDB,
|
|
15
|
+
createPostgresDB,
|
|
16
|
+
toPostgresSQL,
|
|
17
|
+
runMigrations,
|
|
18
|
+
createMigration
|
|
19
|
+
} from "./db/index.js";
|
|
20
|
+
export {
|
|
21
|
+
securityHeaders,
|
|
22
|
+
csrfProtection,
|
|
23
|
+
createCSRFMiddleware,
|
|
24
|
+
generateCSRFToken,
|
|
25
|
+
validateCSRFToken,
|
|
26
|
+
createRateLimiter,
|
|
27
|
+
createRedisRateLimiter,
|
|
28
|
+
parseRateLimitWindow,
|
|
29
|
+
cors
|
|
30
|
+
} from "./security/index.js";
|
|
31
|
+
export { env, getPublicEnv, loadEnv } from "./env/index.js";
|
|
32
|
+
export { log, setLogLevel } from "./log/index.js";
|
|
33
|
+
export {
|
|
34
|
+
buildAIHealthReport,
|
|
35
|
+
buildAIContextBundle,
|
|
36
|
+
buildIDEProjection,
|
|
37
|
+
configureAIObservability,
|
|
38
|
+
createAIMCPServer,
|
|
39
|
+
createAIContextPacket,
|
|
40
|
+
createAIBridgeHandler,
|
|
41
|
+
createAIBridgeServer,
|
|
42
|
+
createIDEProjectionWatcher,
|
|
43
|
+
createLineReader,
|
|
44
|
+
emitAIDiagnostic,
|
|
45
|
+
emitAIEvent,
|
|
46
|
+
createTraceIds,
|
|
47
|
+
readAIDiagnosticsSnapshot,
|
|
48
|
+
readAIEvents,
|
|
49
|
+
renderAIContextBundleMarkdown,
|
|
50
|
+
renderAIContextMarkdown,
|
|
51
|
+
resolveAISessionPackPaths,
|
|
52
|
+
resolveIDEProjectionPaths,
|
|
53
|
+
resolveAIStorePaths,
|
|
54
|
+
resolveAIObservabilityConfig,
|
|
55
|
+
runWithAITrace,
|
|
56
|
+
writeAISessionPack,
|
|
57
|
+
writeIDEProjection
|
|
58
|
+
} from "./ai/index.js";
|
|
59
|
+
export {
|
|
60
|
+
createNodeRedisLikeClient,
|
|
61
|
+
createIORedisLikeClient,
|
|
62
|
+
deleteExpiredRedisKeys
|
|
63
|
+
} from "./server/redis-client.js";
|
|
64
|
+
export {
|
|
65
|
+
createMemoryJobQueue,
|
|
66
|
+
defineJob
|
|
67
|
+
} from "./server/jobs.js";
|
|
68
|
+
export {
|
|
69
|
+
setupI18n,
|
|
70
|
+
loadLocale,
|
|
71
|
+
getLocale,
|
|
72
|
+
getLocales,
|
|
73
|
+
getDefaultLocale,
|
|
74
|
+
getFallbackLocales,
|
|
75
|
+
setLocale,
|
|
76
|
+
t,
|
|
77
|
+
plural,
|
|
78
|
+
negotiateLocale,
|
|
79
|
+
resolveLocaleFromPath,
|
|
80
|
+
stripLocalePrefix,
|
|
81
|
+
withLocalePath,
|
|
82
|
+
buildHreflangLinks,
|
|
83
|
+
formatNumber,
|
|
84
|
+
formatDate,
|
|
85
|
+
formatRelativeTime
|
|
86
|
+
} from "./i18n/index.js";
|
|
87
|
+
export {
|
|
88
|
+
loadContentCollection,
|
|
89
|
+
parseFrontmatter,
|
|
90
|
+
extractExcerpt,
|
|
91
|
+
queryContent,
|
|
92
|
+
getContentEntryBySlug
|
|
93
|
+
} from "./content/index.js";
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { type ActionFn, type ActionResult } from "../server/action.js";
|
|
2
|
+
import { type DeployArtifactConformanceInput, type DeployArtifactConformanceResult } from "../deploy/conformance.js";
|
|
3
|
+
import { type Context, type MiddlewareFn } from "../server/middleware.js";
|
|
4
|
+
import { type GorseePlugin, type PluginCapability, type PluginDescriptor, type PluginPhase } from "../plugins/index.js";
|
|
5
|
+
/** Create a mock request for testing */
|
|
6
|
+
export declare function createTestRequest(path: string, options?: {
|
|
7
|
+
method?: string;
|
|
8
|
+
headers?: Record<string, string>;
|
|
9
|
+
body?: string | Record<string, unknown>;
|
|
10
|
+
}): Request;
|
|
11
|
+
/** Create a test context for middleware/loader testing */
|
|
12
|
+
export declare function createTestContext(path: string, options?: {
|
|
13
|
+
method?: string;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
params?: Record<string, string>;
|
|
16
|
+
body?: string | Record<string, unknown>;
|
|
17
|
+
}): Context;
|
|
18
|
+
/** Run a middleware function with a test context and handler */
|
|
19
|
+
export declare function runTestMiddleware(middleware: MiddlewareFn, ctx: Context, handler?: () => Promise<Response>): Promise<Response>;
|
|
20
|
+
/** Render a component to HTML string for snapshot/assertion testing */
|
|
21
|
+
export declare function renderComponent(component: Function, props?: Record<string, unknown>): string;
|
|
22
|
+
/** Test a loader function directly */
|
|
23
|
+
export declare function testLoader<T>(loader: (ctx: Context) => Promise<T>, path: string, options?: {
|
|
24
|
+
params?: Record<string, string>;
|
|
25
|
+
headers?: Record<string, string>;
|
|
26
|
+
}): Promise<T>;
|
|
27
|
+
/** Test an action function through the same wrapper used by the runtime. */
|
|
28
|
+
export declare function testAction<T>(action: ActionFn<T>, path: string, options?: {
|
|
29
|
+
method?: string;
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
params?: Record<string, string>;
|
|
32
|
+
body?: string | Record<string, unknown>;
|
|
33
|
+
}): Promise<ActionResult<T>>;
|
|
34
|
+
/** Test a route handler directly with a framework context. */
|
|
35
|
+
export declare function testRouteHandler(handler: (ctx: Context) => Response | Promise<Response>, path: string, options?: {
|
|
36
|
+
method?: string;
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
params?: Record<string, string>;
|
|
39
|
+
body?: string | Record<string, unknown>;
|
|
40
|
+
}): Promise<Response>;
|
|
41
|
+
/** Validate generated deploy artifacts against explicit contract tokens. */
|
|
42
|
+
export declare function testDeployArtifactConformance(input: DeployArtifactConformanceInput): DeployArtifactConformanceResult;
|
|
43
|
+
/** Assert generated deploy artifacts satisfy explicit contract tokens. */
|
|
44
|
+
export declare function assertTestDeployArtifactConformance(input: DeployArtifactConformanceInput): void;
|
|
45
|
+
export interface FixtureFile {
|
|
46
|
+
path: string;
|
|
47
|
+
content: string;
|
|
48
|
+
}
|
|
49
|
+
export interface FixtureAppHarness {
|
|
50
|
+
rootDir: string;
|
|
51
|
+
write(): Promise<void>;
|
|
52
|
+
read(path: string): Promise<string>;
|
|
53
|
+
listFiles(): Promise<string[]>;
|
|
54
|
+
cleanup(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
export interface WorkspaceFixturePackage {
|
|
57
|
+
path: string;
|
|
58
|
+
files: FixtureFile[];
|
|
59
|
+
}
|
|
60
|
+
export interface WorkspaceFixtureHarness extends FixtureAppHarness {
|
|
61
|
+
}
|
|
62
|
+
export declare function createFixtureAppHarness(files: FixtureFile[], rootDir?: string): Promise<FixtureAppHarness>;
|
|
63
|
+
export declare function createWorkspaceFixtureHarness(packages: WorkspaceFixturePackage[], rootFiles?: FixtureFile[], rootDir?: string): Promise<WorkspaceFixtureHarness>;
|
|
64
|
+
export interface PluginConformanceExpectation {
|
|
65
|
+
middlewareCount?: number;
|
|
66
|
+
routePaths?: string[];
|
|
67
|
+
buildPluginNames?: string[];
|
|
68
|
+
capabilities?: PluginCapability[];
|
|
69
|
+
pluginOrder?: string[];
|
|
70
|
+
}
|
|
71
|
+
export interface PluginConformanceResult {
|
|
72
|
+
middlewareCount: number;
|
|
73
|
+
routePaths: string[];
|
|
74
|
+
buildPluginNames: string[];
|
|
75
|
+
capabilities: PluginCapability[];
|
|
76
|
+
pluginOrder: string[];
|
|
77
|
+
descriptors: PluginDescriptor[];
|
|
78
|
+
}
|
|
79
|
+
export interface PluginConformanceHarness {
|
|
80
|
+
register(plugin: GorseePlugin): void;
|
|
81
|
+
setupAll(): Promise<void>;
|
|
82
|
+
runPhase(phase: PluginPhase): Promise<void>;
|
|
83
|
+
teardownAll(): Promise<void>;
|
|
84
|
+
getResult(): PluginConformanceResult;
|
|
85
|
+
testRoute(path: string, requestPath?: string): Promise<Response>;
|
|
86
|
+
}
|
|
87
|
+
export declare function createPluginConformanceHarness(config?: Record<string, unknown>): PluginConformanceHarness;
|
|
88
|
+
export declare function validatePluginConformance(plugin: GorseePlugin, expectation?: PluginConformanceExpectation, config?: Record<string, unknown>): Promise<PluginConformanceResult>;
|
|
89
|
+
export interface RuntimeFixture {
|
|
90
|
+
htmlWrites: string[];
|
|
91
|
+
historyWrites: string[];
|
|
92
|
+
removedCssCount: () => number;
|
|
93
|
+
setFetch(handler: typeof fetch): void;
|
|
94
|
+
navigate(url: string, pushState?: boolean): Promise<void>;
|
|
95
|
+
cleanup(): void;
|
|
96
|
+
}
|
|
97
|
+
/** Install a lightweight browser-like fixture for router/runtime tests. */
|
|
98
|
+
export declare function createRuntimeFixture(): RuntimeFixture;
|