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,254 @@
|
|
|
1
|
+
import { mkdir, mkdtemp, readFile, readdir, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { handleAction } from "../server/action.js";
|
|
5
|
+
import {
|
|
6
|
+
assertDeployArtifactConformance,
|
|
7
|
+
validateDeployArtifactConformance
|
|
8
|
+
} from "../deploy/conformance.js";
|
|
9
|
+
import { createContext, runMiddlewareChain } from "../server/middleware.js";
|
|
10
|
+
import { createPluginRunner } from "../plugins/index.js";
|
|
11
|
+
import { renderToString, ssrJsx } from "../runtime/server.js";
|
|
12
|
+
import { navigate } from "../runtime/router.js";
|
|
13
|
+
export function createTestRequest(path, options = {}) {
|
|
14
|
+
const { method = "GET", headers = {}, body } = options, url = `http://localhost${path}`, init = { method, headers };
|
|
15
|
+
if (body)
|
|
16
|
+
if (typeof body === "object") {
|
|
17
|
+
init.body = JSON.stringify(body);
|
|
18
|
+
init.headers["Content-Type"] = "application/json";
|
|
19
|
+
} else
|
|
20
|
+
init.body = body;
|
|
21
|
+
return new Request(url, init);
|
|
22
|
+
}
|
|
23
|
+
export function createTestContext(path, options = {}) {
|
|
24
|
+
const { params = {}, ...reqOpts } = options, request = createTestRequest(path, reqOpts);
|
|
25
|
+
return createContext(request, params);
|
|
26
|
+
}
|
|
27
|
+
export async function runTestMiddleware(middleware, ctx, handler) {
|
|
28
|
+
return runMiddlewareChain([middleware], ctx, handler ?? (async () => new Response("OK")));
|
|
29
|
+
}
|
|
30
|
+
export function renderComponent(component, props = {}) {
|
|
31
|
+
const vnode = ssrJsx(component, props);
|
|
32
|
+
return renderToString(vnode);
|
|
33
|
+
}
|
|
34
|
+
export async function testLoader(loader, path, options = {}) {
|
|
35
|
+
const ctx = createTestContext(path, options);
|
|
36
|
+
return loader(ctx);
|
|
37
|
+
}
|
|
38
|
+
export async function testAction(action, path, options = {}) {
|
|
39
|
+
const ctx = createTestContext(path, {
|
|
40
|
+
method: options.method ?? "POST",
|
|
41
|
+
headers: options.headers,
|
|
42
|
+
params: options.params,
|
|
43
|
+
body: options.body
|
|
44
|
+
});
|
|
45
|
+
return handleAction(action, ctx);
|
|
46
|
+
}
|
|
47
|
+
export async function testRouteHandler(handler, path, options = {}) {
|
|
48
|
+
const ctx = createTestContext(path, options);
|
|
49
|
+
return handler(ctx);
|
|
50
|
+
}
|
|
51
|
+
export function testDeployArtifactConformance(input) {
|
|
52
|
+
return validateDeployArtifactConformance(input);
|
|
53
|
+
}
|
|
54
|
+
export function assertTestDeployArtifactConformance(input) {
|
|
55
|
+
assertDeployArtifactConformance(input);
|
|
56
|
+
}
|
|
57
|
+
export async function createFixtureAppHarness(files, rootDir) {
|
|
58
|
+
const fixtureRoot = rootDir ?? await mkdtemp(join(tmpdir(), "gorsee-fixture-app-"));
|
|
59
|
+
return {
|
|
60
|
+
rootDir: fixtureRoot,
|
|
61
|
+
async write() {
|
|
62
|
+
for (const file of files) {
|
|
63
|
+
const absolutePath = join(fixtureRoot, file.path);
|
|
64
|
+
await mkdir(join(absolutePath, ".."), { recursive: !0 });
|
|
65
|
+
await writeFile(absolutePath, file.content, "utf-8");
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
read(path) {
|
|
69
|
+
return readFile(join(fixtureRoot, path), "utf-8");
|
|
70
|
+
},
|
|
71
|
+
async listFiles() {
|
|
72
|
+
return listRelativeFiles(fixtureRoot);
|
|
73
|
+
},
|
|
74
|
+
cleanup() {
|
|
75
|
+
return rm(fixtureRoot, { recursive: !0, force: !0 });
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export async function createWorkspaceFixtureHarness(packages, rootFiles = [], rootDir) {
|
|
80
|
+
const fixtureRoot = rootDir ?? await mkdtemp(join(tmpdir(), "gorsee-fixture-workspace-")), workspaceFiles = [
|
|
81
|
+
...rootFiles,
|
|
82
|
+
...packages.flatMap((pkg) => pkg.files.map((file) => ({
|
|
83
|
+
path: join(pkg.path, file.path),
|
|
84
|
+
content: file.content
|
|
85
|
+
})))
|
|
86
|
+
];
|
|
87
|
+
return createFixtureAppHarness(workspaceFiles, fixtureRoot);
|
|
88
|
+
}
|
|
89
|
+
export function createPluginConformanceHarness(config = {}) {
|
|
90
|
+
const runner = createPluginRunner(config);
|
|
91
|
+
return {
|
|
92
|
+
register(plugin) {
|
|
93
|
+
runner.register(plugin);
|
|
94
|
+
},
|
|
95
|
+
setupAll() {
|
|
96
|
+
return runner.setupAll();
|
|
97
|
+
},
|
|
98
|
+
runPhase(phase) {
|
|
99
|
+
return runner.runPhase(phase);
|
|
100
|
+
},
|
|
101
|
+
teardownAll() {
|
|
102
|
+
return runner.teardownAll();
|
|
103
|
+
},
|
|
104
|
+
getResult() {
|
|
105
|
+
const descriptors = runner.getPluginDescriptors();
|
|
106
|
+
return {
|
|
107
|
+
middlewareCount: runner.getMiddlewares().length,
|
|
108
|
+
routePaths: [...runner.getRoutes().keys()].sort(),
|
|
109
|
+
buildPluginNames: runner.getBuildPlugins().map((plugin) => plugin.name).sort(),
|
|
110
|
+
capabilities: runner.getCapabilities(),
|
|
111
|
+
pluginOrder: descriptors.map((descriptor) => descriptor.name),
|
|
112
|
+
descriptors
|
|
113
|
+
};
|
|
114
|
+
},
|
|
115
|
+
async testRoute(path, requestPath = path) {
|
|
116
|
+
const route = runner.getRoutes().get(path);
|
|
117
|
+
if (!route)
|
|
118
|
+
throw Error(`plugin conformance route not found: ${path}`);
|
|
119
|
+
return route(createTestContext(requestPath));
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export async function validatePluginConformance(plugin, expectation = {}, config = {}) {
|
|
124
|
+
const harness = createPluginConformanceHarness(config);
|
|
125
|
+
harness.register(plugin);
|
|
126
|
+
await harness.setupAll();
|
|
127
|
+
try {
|
|
128
|
+
const result = harness.getResult();
|
|
129
|
+
if (expectation.middlewareCount !== void 0 && result.middlewareCount !== expectation.middlewareCount)
|
|
130
|
+
throw Error(`plugin conformance middleware mismatch: expected ${expectation.middlewareCount}, received ${result.middlewareCount}`);
|
|
131
|
+
if (expectation.routePaths) {
|
|
132
|
+
const expected = [...expectation.routePaths].sort();
|
|
133
|
+
if (JSON.stringify(result.routePaths) !== JSON.stringify(expected))
|
|
134
|
+
throw Error(`plugin conformance routes mismatch: expected ${expected.join(", ")}, received ${result.routePaths.join(", ")}`);
|
|
135
|
+
}
|
|
136
|
+
if (expectation.buildPluginNames) {
|
|
137
|
+
const expected = [...expectation.buildPluginNames].sort();
|
|
138
|
+
if (JSON.stringify(result.buildPluginNames) !== JSON.stringify(expected))
|
|
139
|
+
throw Error(`plugin conformance build plugins mismatch: expected ${expected.join(", ")}, received ${result.buildPluginNames.join(", ")}`);
|
|
140
|
+
}
|
|
141
|
+
if (expectation.capabilities) {
|
|
142
|
+
const expected = [...expectation.capabilities].sort();
|
|
143
|
+
if (JSON.stringify(result.capabilities) !== JSON.stringify(expected))
|
|
144
|
+
throw Error(`plugin conformance capabilities mismatch: expected ${expected.join(", ")}, received ${result.capabilities.join(", ")}`);
|
|
145
|
+
}
|
|
146
|
+
if (expectation.pluginOrder) {
|
|
147
|
+
const expected = [...expectation.pluginOrder];
|
|
148
|
+
if (JSON.stringify(result.pluginOrder) !== JSON.stringify(expected))
|
|
149
|
+
throw Error(`plugin conformance order mismatch: expected ${expected.join(", ")}, received ${result.pluginOrder.join(", ")}`);
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
} finally {
|
|
153
|
+
await harness.teardownAll();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
export function createRuntimeFixture() {
|
|
157
|
+
const { document: originalDocument, window: originalWindow, history: originalHistory, location: originalLocation, fetch: originalFetch } = globalThis, htmlWrites = [], historyWrites = [];
|
|
158
|
+
let removedCss = 0;
|
|
159
|
+
const dataScript = {
|
|
160
|
+
textContent: "",
|
|
161
|
+
remove() {
|
|
162
|
+
this.textContent = "";
|
|
163
|
+
}
|
|
164
|
+
}, container = {
|
|
165
|
+
replaceChildren(...nodes) {
|
|
166
|
+
htmlWrites.push(nodes.map((node) => node.html ?? "").join(""));
|
|
167
|
+
},
|
|
168
|
+
contains() {
|
|
169
|
+
return !1;
|
|
170
|
+
},
|
|
171
|
+
querySelector() {
|
|
172
|
+
return null;
|
|
173
|
+
},
|
|
174
|
+
querySelectorAll() {
|
|
175
|
+
return [];
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
globalThis.document = {
|
|
179
|
+
title: "",
|
|
180
|
+
activeElement: null,
|
|
181
|
+
head: { appendChild() {} },
|
|
182
|
+
body: { appendChild() {} },
|
|
183
|
+
createElement(tag) {
|
|
184
|
+
if (tag === "template")
|
|
185
|
+
return {
|
|
186
|
+
content: { childNodes: [] },
|
|
187
|
+
set innerHTML(html) {
|
|
188
|
+
this.content.childNodes = [{ html }];
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
return {
|
|
192
|
+
dataset: {},
|
|
193
|
+
setAttribute() {}
|
|
194
|
+
};
|
|
195
|
+
},
|
|
196
|
+
getElementById(id) {
|
|
197
|
+
if (id === "app")
|
|
198
|
+
return container;
|
|
199
|
+
if (id === "__GORSEE_DATA__")
|
|
200
|
+
return dataScript;
|
|
201
|
+
return null;
|
|
202
|
+
},
|
|
203
|
+
querySelectorAll() {
|
|
204
|
+
return [{
|
|
205
|
+
remove() {
|
|
206
|
+
removedCss++;
|
|
207
|
+
}
|
|
208
|
+
}];
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
globalThis.window = {
|
|
212
|
+
scrollTo() {}
|
|
213
|
+
};
|
|
214
|
+
globalThis.history = {
|
|
215
|
+
pushState(_state, _title, url) {
|
|
216
|
+
historyWrites.push(url);
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
globalThis.location = {
|
|
220
|
+
pathname: "/",
|
|
221
|
+
search: "",
|
|
222
|
+
origin: "http://localhost"
|
|
223
|
+
};
|
|
224
|
+
return {
|
|
225
|
+
htmlWrites,
|
|
226
|
+
historyWrites,
|
|
227
|
+
removedCssCount: () => removedCss,
|
|
228
|
+
setFetch(handler) {
|
|
229
|
+
globalThis.fetch = handler;
|
|
230
|
+
},
|
|
231
|
+
navigate(url, pushState = !0) {
|
|
232
|
+
return navigate(url, pushState);
|
|
233
|
+
},
|
|
234
|
+
cleanup() {
|
|
235
|
+
globalThis.document = originalDocument;
|
|
236
|
+
globalThis.window = originalWindow;
|
|
237
|
+
globalThis.history = originalHistory;
|
|
238
|
+
globalThis.location = originalLocation;
|
|
239
|
+
globalThis.fetch = originalFetch;
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
async function listRelativeFiles(rootDir, baseDir = rootDir) {
|
|
244
|
+
const entries = await readdir(rootDir, { withFileTypes: !0 }), files = [];
|
|
245
|
+
for (const entry of entries) {
|
|
246
|
+
const absolutePath = join(rootDir, entry.name);
|
|
247
|
+
if (entry.isDirectory()) {
|
|
248
|
+
files.push(...await listRelativeFiles(absolutePath, baseDir));
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
files.push(absolutePath.slice(baseDir.length + 1));
|
|
252
|
+
}
|
|
253
|
+
return files.sort();
|
|
254
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const __safeHTMLBrand: unique symbol;
|
|
2
|
+
export type SafeHTMLValue = string & {
|
|
3
|
+
readonly [__safeHTMLBrand]: true;
|
|
4
|
+
};
|
|
5
|
+
export declare function sanitize(raw: string): SafeHTMLValue;
|
|
6
|
+
export declare function SafeHTML(strings: TemplateStringsArray, ...values: unknown[]): SafeHTMLValue;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const ESCAPE_MAP = {
|
|
2
|
+
"&": "&",
|
|
3
|
+
"<": "<",
|
|
4
|
+
">": ">",
|
|
5
|
+
'"': """,
|
|
6
|
+
"'": "'"
|
|
7
|
+
}, ESCAPE_RE = /[&<>"']/g;
|
|
8
|
+
export function sanitize(raw) {
|
|
9
|
+
return raw.replace(ESCAPE_RE, (ch) => ESCAPE_MAP[ch] ?? ch);
|
|
10
|
+
}
|
|
11
|
+
export function SafeHTML(strings, ...values) {
|
|
12
|
+
const parts = [];
|
|
13
|
+
for (let i = 0;i < strings.length; i++) {
|
|
14
|
+
parts.push(strings[i]);
|
|
15
|
+
if (i < values.length)
|
|
16
|
+
parts.push(sanitize(String(values[i])));
|
|
17
|
+
}
|
|
18
|
+
return parts.join("");
|
|
19
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
declare const __safeSQLBrand: unique symbol;
|
|
2
|
+
export interface SafeSQLValue {
|
|
3
|
+
readonly text: string;
|
|
4
|
+
readonly params: readonly unknown[];
|
|
5
|
+
readonly [__safeSQLBrand]: true;
|
|
6
|
+
}
|
|
7
|
+
export declare function SafeSQL(strings: TemplateStringsArray, ...values: unknown[]): SafeSQLValue;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function SafeSQL(strings, ...values) {
|
|
2
|
+
const parts = [], params = [];
|
|
3
|
+
for (let i = 0;i < strings.length; i++) {
|
|
4
|
+
parts.push(strings[i]);
|
|
5
|
+
if (i < values.length) {
|
|
6
|
+
params.push(values[i]);
|
|
7
|
+
parts.push("?");
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
text: parts.join(""),
|
|
12
|
+
params
|
|
13
|
+
};
|
|
14
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const __safeURLBrand: unique symbol;
|
|
2
|
+
export type SafeURLValue = string & {
|
|
3
|
+
readonly [__safeURLBrand]: true;
|
|
4
|
+
};
|
|
5
|
+
export declare function validateURL(raw: string): SafeURLValue;
|
|
6
|
+
export declare function SafeURL(strings: TemplateStringsArray, ...values: unknown[]): SafeURLValue;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const ALLOWED_PROTOCOLS = ["http:", "https:", "mailto:"], DANGEROUS_PROTOCOLS = ["javascript:", "data:", "vbscript:", "blob:"];
|
|
2
|
+
export function validateURL(raw) {
|
|
3
|
+
const lower = raw.trim().toLowerCase();
|
|
4
|
+
for (const proto of DANGEROUS_PROTOCOLS)
|
|
5
|
+
if (lower.startsWith(proto))
|
|
6
|
+
throw Error(`[GORSEE E005] Dangerous URL protocol: "${proto}" is not allowed`);
|
|
7
|
+
let url;
|
|
8
|
+
try {
|
|
9
|
+
url = new URL(raw);
|
|
10
|
+
} catch {
|
|
11
|
+
return raw;
|
|
12
|
+
}
|
|
13
|
+
if (!ALLOWED_PROTOCOLS.includes(url.protocol))
|
|
14
|
+
throw Error(`[GORSEE E005] Disallowed URL protocol: "${url.protocol}". Allowed: ${ALLOWED_PROTOCOLS.join(", ")}`);
|
|
15
|
+
return raw;
|
|
16
|
+
}
|
|
17
|
+
export function SafeURL(strings, ...values) {
|
|
18
|
+
const raw = String.raw(strings, ...values.map(String));
|
|
19
|
+
return validateURL(raw);
|
|
20
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const __userInputBrand: unique symbol;
|
|
2
|
+
export type UserInput<T> = T & {
|
|
3
|
+
readonly [__userInputBrand]: true;
|
|
4
|
+
};
|
|
5
|
+
export interface ValidationSchema<T> {
|
|
6
|
+
parse(raw: unknown): T;
|
|
7
|
+
}
|
|
8
|
+
export declare function validate<T>(schema: ValidationSchema<T>, raw: unknown): UserInput<T>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SafeSQLValue } from "../types/safe-sql.js";
|
|
2
|
+
import type { SafeHTMLValue } from "../types/safe-html.js";
|
|
3
|
+
/**
|
|
4
|
+
* DANGER: Bypasses SQL safety. Only use when you know the string is safe.
|
|
5
|
+
* This function exists as an explicit escape hatch -- its name signals danger.
|
|
6
|
+
*/
|
|
7
|
+
export declare function unsafeSQL(raw: string): SafeSQLValue;
|
|
8
|
+
/**
|
|
9
|
+
* DANGER: Bypasses HTML sanitization. Only use for trusted content.
|
|
10
|
+
* This function exists as an explicit escape hatch -- its name signals danger.
|
|
11
|
+
*/
|
|
12
|
+
export declare function unsafeHTML(raw: string): SafeHTMLValue;
|
package/package.json
CHANGED
|
@@ -1,82 +1,140 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gorsee",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.5",
|
|
4
|
+
"description": "AI-first reactive full-stack TypeScript framework for deterministic human and agent collaboration",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"packageManager": "bun@1.3.9",
|
|
6
7
|
"license": "MIT",
|
|
7
8
|
"author": "Oleg Gorsky",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/AYKGorsee/gorsee-js.git"
|
|
11
|
-
},
|
|
12
|
-
"homepage": "https://github.com/AYKGorsee/gorsee-js#readme",
|
|
13
9
|
"keywords": [
|
|
10
|
+
"ai-first",
|
|
11
|
+
"agentic",
|
|
14
12
|
"framework",
|
|
15
13
|
"typescript",
|
|
16
14
|
"fullstack",
|
|
17
15
|
"ssr",
|
|
18
16
|
"islands",
|
|
19
17
|
"reactive",
|
|
18
|
+
"signals",
|
|
20
19
|
"bun",
|
|
21
20
|
"jsx",
|
|
22
21
|
"web-framework"
|
|
23
22
|
],
|
|
24
23
|
"bin": {
|
|
25
|
-
"gorsee": "bin/gorsee.js"
|
|
24
|
+
"gorsee": "dist-pkg/bin/gorsee.js"
|
|
26
25
|
},
|
|
27
26
|
"exports": {
|
|
28
|
-
".": "./
|
|
29
|
-
"./compat": "./
|
|
30
|
-
"./client": "./
|
|
31
|
-
"./reactive": "./
|
|
32
|
-
"./server": "./
|
|
33
|
-
"./types": "./
|
|
34
|
-
"./db": "./
|
|
35
|
-
"./router": "./
|
|
36
|
-
"./log": "./
|
|
37
|
-
"./unsafe": "./
|
|
38
|
-
"./runtime": "./
|
|
39
|
-
"./security": "./
|
|
40
|
-
"./
|
|
41
|
-
"./jsx-
|
|
42
|
-
"./
|
|
43
|
-
"./
|
|
44
|
-
"./
|
|
45
|
-
"./
|
|
46
|
-
"./
|
|
47
|
-
"./
|
|
48
|
-
"./
|
|
49
|
-
"./
|
|
50
|
-
"./
|
|
51
|
-
"./plugins
|
|
52
|
-
"./plugins/
|
|
53
|
-
"./plugins/
|
|
54
|
-
"./plugins/
|
|
55
|
-
"./plugins/
|
|
56
|
-
"./
|
|
27
|
+
".": "./dist-pkg/index.js",
|
|
28
|
+
"./compat": "./dist-pkg/compat.js",
|
|
29
|
+
"./client": "./dist-pkg/client.js",
|
|
30
|
+
"./reactive": "./dist-pkg/reactive/index.js",
|
|
31
|
+
"./server": "./dist-pkg/server-entry.js",
|
|
32
|
+
"./types": "./dist-pkg/types/index.js",
|
|
33
|
+
"./db": "./dist-pkg/db/index.js",
|
|
34
|
+
"./router": "./dist-pkg/router/index.js",
|
|
35
|
+
"./log": "./dist-pkg/log/index.js",
|
|
36
|
+
"./unsafe": "./dist-pkg/unsafe/index.js",
|
|
37
|
+
"./runtime": "./dist-pkg/runtime/index.js",
|
|
38
|
+
"./security": "./dist-pkg/security/index.js",
|
|
39
|
+
"./ai": "./dist-pkg/ai/index.js",
|
|
40
|
+
"./jsx-runtime": "./dist-pkg/jsx-runtime.js",
|
|
41
|
+
"./jsx-dev-runtime": "./dist-pkg/jsx-runtime.js",
|
|
42
|
+
"./testing": "./dist-pkg/testing/index.js",
|
|
43
|
+
"./i18n": "./dist-pkg/i18n/index.js",
|
|
44
|
+
"./content": "./dist-pkg/content/index.js",
|
|
45
|
+
"./env": "./dist-pkg/env/index.js",
|
|
46
|
+
"./auth": "./dist-pkg/auth/index.js",
|
|
47
|
+
"./forms": "./dist-pkg/forms/index.js",
|
|
48
|
+
"./routes": "./dist-pkg/routes/index.js",
|
|
49
|
+
"./cli/cmd-create": "./dist-pkg/cli/cmd-create.js",
|
|
50
|
+
"./plugins": "./dist-pkg/plugins/index.js",
|
|
51
|
+
"./plugins/drizzle": "./dist-pkg/plugins/drizzle.js",
|
|
52
|
+
"./plugins/prisma": "./dist-pkg/plugins/prisma.js",
|
|
53
|
+
"./plugins/tailwind": "./dist-pkg/plugins/tailwind.js",
|
|
54
|
+
"./plugins/lucia": "./dist-pkg/plugins/lucia.js",
|
|
55
|
+
"./plugins/s3": "./dist-pkg/plugins/s3.js",
|
|
56
|
+
"./plugins/resend": "./dist-pkg/plugins/resend.js",
|
|
57
|
+
"./plugins/stripe": "./dist-pkg/plugins/stripe.js",
|
|
58
|
+
"./deploy": "./dist-pkg/deploy/index.js"
|
|
57
59
|
},
|
|
58
60
|
"files": [
|
|
59
|
-
"
|
|
60
|
-
"bin/",
|
|
61
|
+
"dist-pkg/",
|
|
61
62
|
"README.md",
|
|
62
63
|
"LICENSE"
|
|
63
64
|
],
|
|
64
65
|
"scripts": {
|
|
65
66
|
"test": "bun test",
|
|
67
|
+
"test:security": "bun test tests/security tests/server/request-policy.test.ts tests/server/request-security-policy.test.ts tests/server/request-preflight.test.ts tests/server/route-request-security.test.ts tests/server/runtime-dispatch.test.ts tests/dev/hmr-security.test.ts tests/integration/dev-prod-parity.test.ts tests/integration/production-runtime.test.ts",
|
|
68
|
+
"test:confidence": "bun test tests/build/entrypoints-boundary.test.ts tests/integration/dev-prod-auth-cache-parity.test.ts tests/integration/dev-prod-cache-rpc-parity.test.ts tests/integration/production-large-app-runtime.test.ts tests/integration/canonical-recipes-runtime.test.ts",
|
|
69
|
+
"test:provider-smoke": "bun test tests/deploy/provider-smoke.test.ts",
|
|
70
|
+
"test:browser-smoke": "node scripts/browser-smoke.mjs",
|
|
71
|
+
"product:policy": "node scripts/product-policy-check.mjs",
|
|
72
|
+
"ai:policy": "node scripts/ai-policy-check.mjs",
|
|
73
|
+
"dx:policy": "node scripts/dx-policy-check.mjs",
|
|
74
|
+
"maturity:policy": "node scripts/maturity-policy-check.mjs",
|
|
75
|
+
"runtime:policy": "node scripts/runtime-diagnostics-policy-check.mjs",
|
|
76
|
+
"compiler:audit": "node scripts/compiler-platform-audit.mjs",
|
|
77
|
+
"compiler:parity": "node scripts/compiler-backend-parity.mjs",
|
|
78
|
+
"compiler:canary": "node scripts/compiler-backend-parity.mjs && bun test tests/cli/programmatic-runtime.test.ts tests/compiler/init.test.ts",
|
|
79
|
+
"compiler:promotion:check": "node scripts/compiler-promotion-check.mjs",
|
|
80
|
+
"compiler:dossier:check": "node scripts/compiler-dossier-check.mjs",
|
|
81
|
+
"compiler:default:rehearsal": "node scripts/compiler-backend-parity.mjs && bun test tests/cli/programmatic-runtime.test.ts tests/compiler/init.test.ts && node scripts/compiler-dossier-check.mjs && node scripts/backend-default-switch-review-check.mjs",
|
|
82
|
+
"compiler:default:rehearsal:check": "node scripts/compiler-default-switch-rehearsal-check.mjs",
|
|
83
|
+
"build:parity": "bun scripts/build-backend-parity.mjs",
|
|
84
|
+
"build:canary": "bun scripts/build-backend-parity.mjs && bun test tests/cli/programmatic-runtime.test.ts tests/build/init.test.ts tests/integration/production-backend-parity.test.ts",
|
|
85
|
+
"build:promotion:check": "node scripts/build-promotion-check.mjs",
|
|
86
|
+
"build:dossier:check": "node scripts/build-dossier-check.mjs",
|
|
87
|
+
"build:default:rehearsal": "bun scripts/build-backend-parity.mjs && bun test tests/cli/programmatic-runtime.test.ts tests/build/init.test.ts tests/integration/production-backend-parity.test.ts && node scripts/build-dossier-check.mjs && node scripts/backend-default-switch-review-check.mjs",
|
|
88
|
+
"build:default:rehearsal:check": "node scripts/build-default-switch-rehearsal-check.mjs",
|
|
89
|
+
"backend:switch:evidence:check": "node scripts/backend-switch-evidence-check.mjs",
|
|
90
|
+
"backend:default-switch:review:check": "node scripts/backend-default-switch-review-check.mjs",
|
|
91
|
+
"backend:candidate:verify": "bun run backend:candidate:evidence:verify && node scripts/release-train-check.mjs && node scripts/release-checklist-check.mjs && node scripts/ci-policy-check.mjs",
|
|
92
|
+
"benchmarks:policy": "node scripts/benchmark-policy-check.mjs",
|
|
93
|
+
"benchmarks:realworld:check": "node scripts/realworld-benchmark-check.mjs",
|
|
94
|
+
"examples:policy": "node scripts/examples-policy-check.mjs",
|
|
95
|
+
"proof:policy": "node scripts/proof-surface-check.mjs",
|
|
96
|
+
"repo:policy": "node scripts/repo-policy-check.mjs",
|
|
97
|
+
"ci:policy": "node scripts/ci-policy-check.mjs",
|
|
98
|
+
"verify:security": "bun run check && bun run product:policy && bun run ai:policy && bun run dx:policy && bun run maturity:policy && bun run runtime:policy && bun run benchmarks:policy && bun run benchmarks:realworld:check && bun run examples:policy && bun run proof:policy && bun run repo:policy && bun run ci:policy && bun run compiler:promotion:check && bun run build:promotion:check && bun run backend:switch:evidence:check && bun run backend:default-switch:review:check && bun run backend:candidate:rollout:check && bun run compiler:default:rehearsal:check && bun run build:default:rehearsal:check && bun run test:security && bun run test:confidence",
|
|
66
99
|
"check": "tsc --noEmit",
|
|
100
|
+
"install:matrix": "node scripts/install-matrix-check.mjs",
|
|
67
101
|
"dev": "bun run src/dev.ts",
|
|
102
|
+
"ai:package:vscode": "node scripts/package-vscode-ai-extension.mjs",
|
|
103
|
+
"ai:build:vsix": "node scripts/package-vscode-ai-extension.mjs",
|
|
104
|
+
"release:extension": "node scripts/release-vscode-extension.mjs",
|
|
105
|
+
"release:stable:check": "node scripts/release-channel-check.mjs stable",
|
|
106
|
+
"release:canary:check": "node scripts/release-channel-check.mjs canary",
|
|
107
|
+
"release:rc:check": "node scripts/release-channel-check.mjs rc",
|
|
108
|
+
"release:version:stable": "node scripts/release-version-plan.mjs stable",
|
|
109
|
+
"release:version:canary": "node scripts/release-version-plan.mjs canary",
|
|
110
|
+
"release:version:rc": "node scripts/release-version-plan.mjs rc",
|
|
111
|
+
"release:checklist:check": "node scripts/release-checklist-check.mjs",
|
|
112
|
+
"release:train:check": "node scripts/release-train-check.mjs",
|
|
68
113
|
"release:check": "node scripts/release-check.mjs",
|
|
69
|
-
"
|
|
114
|
+
"release:smoke": "node scripts/release-smoke.mjs",
|
|
115
|
+
"package:build": "bun run scripts/build-publish-artifacts.ts",
|
|
116
|
+
"prepack": "node scripts/prepack-package.mjs",
|
|
117
|
+
"postpack": "node scripts/postpack-package.mjs",
|
|
118
|
+
"release:verify": "npm run verify:security && bun test && npm run release:train:check && npm run release:checklist:check && npm run backend:candidate:verify && npm run install:matrix && npm run release:extension && npm run release:check && npm run release:smoke",
|
|
119
|
+
"prepublishOnly": "npm run verify:security && bun test && npm run release:train:check && npm run release:checklist:check && npm run backend:candidate:verify && npm run install:matrix && npm run release:extension && npm run release:check && npm run release:smoke",
|
|
120
|
+
"backend:candidate:rollout:check": "node scripts/backend-candidate-rollout-check.mjs",
|
|
121
|
+
"compiler:evidence:verify": "bun run compiler:parity && bun test tests/cli/cmd-docs.test.ts tests/cli/cmd-check.test.ts tests/cli/programmatic-runtime.test.ts tests/compiler/init.test.ts tests/compiler/module-analysis-parity.test.ts tests/compiler/oxc.test.ts tests/compiler/route-facts-contract.test.ts && node scripts/compiler-dossier-check.mjs && node scripts/compiler-promotion-check.mjs && node scripts/compiler-evidence-check.mjs",
|
|
122
|
+
"build:evidence:verify": "bun run build:parity && bun test tests/build/artifact-parity.test.ts tests/build/rolldown-runtime-contract.test.ts tests/build/build-diagnostics.test.ts tests/cli/programmatic-runtime.test.ts tests/build/init.test.ts tests/integration/production-backend-parity.test.ts && bun run test:browser-smoke && node scripts/build-dossier-check.mjs && node scripts/build-promotion-check.mjs && node scripts/build-evidence-check.mjs",
|
|
123
|
+
"backend:candidate:evidence:verify": "bun run compiler:evidence:verify && bun run build:evidence:verify && node scripts/backend-candidate-evidence-check.mjs && node scripts/backend-default-switch-review-check.mjs && node scripts/backend-switch-evidence-check.mjs"
|
|
70
124
|
},
|
|
71
125
|
"engines": {
|
|
72
126
|
"bun": ">=1.0.0"
|
|
73
127
|
},
|
|
74
128
|
"dependencies": {
|
|
75
|
-
"alien-signals": "
|
|
76
|
-
"devalue": "
|
|
129
|
+
"alien-signals": "3.1.2",
|
|
130
|
+
"devalue": "5.6.3",
|
|
131
|
+
"oxc-parser": "0.116.0",
|
|
132
|
+
"rolldown": "1.0.0-rc.7",
|
|
133
|
+
"typescript": "5.9.3"
|
|
77
134
|
},
|
|
78
135
|
"devDependencies": {
|
|
79
136
|
"@types/bun": "latest",
|
|
80
|
-
"
|
|
81
|
-
}
|
|
137
|
+
"playwright": "1.58.2"
|
|
138
|
+
},
|
|
139
|
+
"types": "./dist-pkg/index.d.ts"
|
|
82
140
|
}
|
package/bin/gorsee.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { execSync } from "child_process";
|
|
3
|
-
import { join, dirname } from "path";
|
|
4
|
-
import { fileURLToPath } from "url";
|
|
5
|
-
|
|
6
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
-
const cli = join(__dirname, "..", "src", "cli", "index.ts");
|
|
8
|
-
const args = process.argv.slice(2).join(" ");
|
|
9
|
-
|
|
10
|
-
try {
|
|
11
|
-
execSync(`bun ${cli} ${args}`, { stdio: "inherit" });
|
|
12
|
-
} catch (e) {
|
|
13
|
-
process.exit(e.status || 1);
|
|
14
|
-
}
|