gorsee 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +283 -212
- 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 +173 -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} +44 -28
- 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 +53 -0
- package/dist-pkg/plugins/index.d.ts +62 -0
- package/dist-pkg/plugins/index.js +159 -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 +60 -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 +70 -0
- package/dist-pkg/reactive/optimistic.d.ts +20 -0
- package/dist-pkg/reactive/optimistic.js +67 -0
- package/dist-pkg/reactive/resource.d.ts +25 -0
- package/dist-pkg/reactive/resource.js +153 -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 +42 -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} +20 -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 +65 -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 +74 -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 +176 -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 +487 -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 +77 -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 +83 -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 +127 -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 +27 -0
- package/dist-pkg/server/page-render.d.ts +29 -0
- package/dist-pkg/server/page-render.js +70 -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 +46 -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 +61 -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 +257 -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 +110 -45
- package/bin/gorsee.js +0 -2
- package/src/auth/index.ts +0 -178
- package/src/auth/redis-session-store.ts +0 -46
- package/src/auth/sqlite-session-store.ts +0 -98
- package/src/auth/store-utils.ts +0 -21
- package/src/build/client.ts +0 -139
- package/src/build/css-modules.ts +0 -69
- package/src/build/devalue-parse.ts +0 -2
- package/src/build/manifest.ts +0 -34
- package/src/build/route-metadata.ts +0 -12
- package/src/build/rpc-transform.ts +0 -62
- package/src/build/server-strip.ts +0 -87
- package/src/build/ssg.ts +0 -70
- package/src/cli/bun-plugin.ts +0 -58
- package/src/cli/cmd-build.ts +0 -153
- package/src/cli/cmd-check.ts +0 -239
- package/src/cli/cmd-create.ts +0 -328
- package/src/cli/cmd-deploy.ts +0 -149
- package/src/cli/cmd-dev.ts +0 -13
- package/src/cli/cmd-docs.ts +0 -152
- package/src/cli/cmd-generate.ts +0 -155
- package/src/cli/cmd-migrate.ts +0 -53
- package/src/cli/cmd-routes.ts +0 -36
- package/src/cli/cmd-start.ts +0 -30
- package/src/cli/cmd-test.ts +0 -129
- package/src/cli/cmd-typegen.ts +0 -93
- package/src/cli/cmd-upgrade.ts +0 -143
- package/src/cli/context.ts +0 -12
- package/src/cli/framework-md.ts +0 -223
- package/src/cli/index.ts +0 -107
- package/src/client.ts +0 -26
- package/src/db/index.ts +0 -2
- package/src/db/migrate.ts +0 -89
- package/src/db/sqlite.ts +0 -40
- package/src/deploy/index.ts +0 -31
- package/src/deploy/vercel.ts +0 -94
- package/src/dev/hmr.ts +0 -31
- package/src/dev/partial-handler.ts +0 -52
- package/src/dev/request-handler.ts +0 -127
- package/src/dev/watcher.ts +0 -48
- package/src/dev.ts +0 -208
- package/src/env/index.ts +0 -74
- package/src/errors/formatter.ts +0 -63
- package/src/errors/index.ts +0 -2
- package/src/i18n/index.ts +0 -72
- package/src/index-client.ts +0 -4
- package/src/index.ts +0 -43
- package/src/jsx-runtime-client.ts +0 -13
- package/src/jsx-runtime.ts +0 -20
- package/src/jsx-types-html.ts +0 -242
- package/src/log/index.ts +0 -44
- package/src/plugins/drizzle.ts +0 -84
- package/src/plugins/index.ts +0 -86
- package/src/plugins/lucia.ts +0 -111
- package/src/plugins/prisma.ts +0 -85
- package/src/plugins/resend.ts +0 -78
- package/src/plugins/s3.ts +0 -102
- package/src/plugins/stripe.ts +0 -133
- package/src/plugins/tailwind.ts +0 -92
- package/src/prod.ts +0 -252
- package/src/reactive/computed.ts +0 -7
- package/src/reactive/effect.ts +0 -7
- package/src/reactive/index.ts +0 -7
- package/src/reactive/live.ts +0 -97
- package/src/reactive/optimistic.ts +0 -83
- package/src/reactive/resource.ts +0 -138
- package/src/reactive/signal.ts +0 -20
- package/src/reactive/store.ts +0 -36
- package/src/router/index.ts +0 -2
- package/src/router/matcher.ts +0 -53
- package/src/router/scanner.ts +0 -206
- package/src/runtime/client.ts +0 -28
- package/src/runtime/error-boundary.ts +0 -35
- package/src/runtime/form.ts +0 -49
- package/src/runtime/head.ts +0 -113
- package/src/runtime/html-escape.ts +0 -30
- package/src/runtime/hydration.ts +0 -95
- package/src/runtime/image.ts +0 -48
- package/src/runtime/index.ts +0 -12
- package/src/runtime/island-hydrator.ts +0 -84
- package/src/runtime/island.ts +0 -88
- package/src/runtime/jsx-runtime.ts +0 -167
- package/src/runtime/link.ts +0 -45
- package/src/runtime/project.ts +0 -73
- package/src/runtime/router.ts +0 -224
- package/src/runtime/server.ts +0 -102
- package/src/runtime/stream.ts +0 -182
- package/src/runtime/suspense.ts +0 -37
- package/src/runtime/typed-routes.ts +0 -26
- package/src/runtime/validated-form.ts +0 -106
- package/src/security/cors.ts +0 -80
- package/src/security/csrf.ts +0 -85
- package/src/security/headers.ts +0 -50
- package/src/security/index.ts +0 -4
- package/src/security/rate-limit.ts +0 -80
- package/src/server/action.ts +0 -48
- package/src/server/cache-utils.ts +0 -23
- package/src/server/cache.ts +0 -125
- package/src/server/compress.ts +0 -60
- package/src/server/etag.ts +0 -23
- package/src/server/guard.ts +0 -69
- package/src/server/html-shell.ts +0 -69
- package/src/server/index.ts +0 -57
- package/src/server/manifest.ts +0 -36
- package/src/server/middleware.ts +0 -159
- package/src/server/not-found.ts +0 -35
- package/src/server/page-render.ts +0 -123
- package/src/server/pipe.ts +0 -46
- package/src/server/redis-cache-store.ts +0 -87
- package/src/server/redis-client.ts +0 -71
- package/src/server/request-preflight.ts +0 -45
- package/src/server/route-request.ts +0 -72
- package/src/server/rpc-hash.ts +0 -17
- package/src/server/rpc-utils.ts +0 -27
- package/src/server/rpc.ts +0 -177
- package/src/server/sqlite-cache-store.ts +0 -109
- package/src/server/sse.ts +0 -96
- package/src/server/static-file.ts +0 -63
- package/src/server/ws.ts +0 -56
- package/src/server-entry.ts +0 -36
- package/src/testing/index.ts +0 -74
- package/src/types/index.ts +0 -4
- package/src/types/safe-html.ts +0 -32
- package/src/types/safe-sql.ts +0 -28
- package/src/types/safe-url.ts +0 -40
- package/src/types/user-input.ts +0 -12
- package/src/unsafe/index.ts +0 -18
package/src/cli/cmd-generate.ts
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
// gorsee generate <entity> -- scaffold CRUD routes + migration
|
|
2
|
-
// Example: gorsee generate posts -> routes/posts/index.tsx, routes/posts/[id].tsx, etc.
|
|
3
|
-
|
|
4
|
-
import { join } from "node:path"
|
|
5
|
-
import { mkdir, writeFile } from "node:fs/promises"
|
|
6
|
-
import { createMigration } from "../db/migrate.ts"
|
|
7
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
8
|
-
|
|
9
|
-
function capitalize(s: string): string {
|
|
10
|
-
return s.charAt(0).toUpperCase() + s.slice(1)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function singularize(s: string): string {
|
|
14
|
-
if (s.endsWith("ies")) return s.slice(0, -3) + "y"
|
|
15
|
-
if (s.endsWith("ses") || s.endsWith("xes") || s.endsWith("zes")) return s.slice(0, -2)
|
|
16
|
-
if (s.endsWith("s") && !s.endsWith("ss")) return s.slice(0, -1)
|
|
17
|
-
return s
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function listRoute(entity: string, singular: string): string {
|
|
21
|
-
const cap = capitalize(singular)
|
|
22
|
-
return `import { Head, Link } from "gorsee/client"
|
|
23
|
-
import { SafeSQL } from "gorsee/types"
|
|
24
|
-
import type { Context } from "gorsee/server"
|
|
25
|
-
|
|
26
|
-
export async function loader(ctx: Context) {
|
|
27
|
-
const db = ctx.locals.db
|
|
28
|
-
// TODO: Replace with your DB query
|
|
29
|
-
return { ${entity}: [] as { id: number; title: string }[] }
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export default function ${capitalize(entity)}ListPage(props: { data: { ${entity}: { id: number; title: string }[] } }) {
|
|
33
|
-
return (
|
|
34
|
-
<div>
|
|
35
|
-
<Head><title>${capitalize(entity)}</title></Head>
|
|
36
|
-
<h1>${capitalize(entity)}</h1>
|
|
37
|
-
<Link href="/${entity}/new">Create New ${cap}</Link>
|
|
38
|
-
<ul>
|
|
39
|
-
{props.data.${entity}.map((item) => (
|
|
40
|
-
<li>
|
|
41
|
-
<Link href={\`/${entity}/\${item.id}\`}>{item.title}</Link>
|
|
42
|
-
</li>
|
|
43
|
-
))}
|
|
44
|
-
</ul>
|
|
45
|
-
</div>
|
|
46
|
-
)
|
|
47
|
-
}
|
|
48
|
-
`
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function detailRoute(entity: string, singular: string): string {
|
|
52
|
-
const cap = capitalize(singular)
|
|
53
|
-
return `import { Head, Link } from "gorsee/client"
|
|
54
|
-
import type { Context } from "gorsee/server"
|
|
55
|
-
|
|
56
|
-
export async function loader(ctx: Context) {
|
|
57
|
-
const id = ctx.params.id
|
|
58
|
-
// TODO: Replace with your DB query
|
|
59
|
-
return { ${singular}: { id: Number(id), title: "${cap} " + id } }
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export default function ${cap}DetailPage(props: { data: { ${singular}: { id: number; title: string } }; params: { id: string } }) {
|
|
63
|
-
const item = props.data.${singular}
|
|
64
|
-
return (
|
|
65
|
-
<div>
|
|
66
|
-
<Head><title>{item.title}</title></Head>
|
|
67
|
-
<h1>{item.title}</h1>
|
|
68
|
-
<Link href="/${entity}">Back to ${capitalize(entity)}</Link>
|
|
69
|
-
</div>
|
|
70
|
-
)
|
|
71
|
-
}
|
|
72
|
-
`
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function newRoute(entity: string, singular: string): string {
|
|
76
|
-
const cap = capitalize(singular)
|
|
77
|
-
return `import { Head, Link } from "gorsee/client"
|
|
78
|
-
import { defineAction, parseFormData } from "gorsee/server"
|
|
79
|
-
|
|
80
|
-
export const action = defineAction(async (ctx) => {
|
|
81
|
-
const data = await parseFormData(ctx.request)
|
|
82
|
-
// TODO: Insert into database
|
|
83
|
-
return ctx.redirect("/${entity}")
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
export default function New${cap}Page() {
|
|
87
|
-
return (
|
|
88
|
-
<div>
|
|
89
|
-
<Head><title>New ${cap}</title></Head>
|
|
90
|
-
<h1>New ${cap}</h1>
|
|
91
|
-
<form method="POST">
|
|
92
|
-
<label>Title: <input name="title" required /></label>
|
|
93
|
-
<button type="submit">Create</button>
|
|
94
|
-
</form>
|
|
95
|
-
<Link href="/${entity}">Cancel</Link>
|
|
96
|
-
</div>
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
`
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function migrationSQL(entity: string): string {
|
|
103
|
-
return `-- Create ${entity} table
|
|
104
|
-
CREATE TABLE IF NOT EXISTS ${entity} (
|
|
105
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
106
|
-
title TEXT NOT NULL,
|
|
107
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
108
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
109
|
-
);
|
|
110
|
-
`
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export interface GenerateCommandOptions extends RuntimeOptions {}
|
|
114
|
-
|
|
115
|
-
export async function generateCrudScaffold(args: string[], options: GenerateCommandOptions = {}) {
|
|
116
|
-
const entity = args[0]
|
|
117
|
-
if (!entity) {
|
|
118
|
-
console.error("Usage: gorsee generate <entity-name>")
|
|
119
|
-
console.error("Example: gorsee generate posts")
|
|
120
|
-
process.exit(1)
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const { cwd, paths } = createProjectContext(options)
|
|
124
|
-
const singular = singularize(entity)
|
|
125
|
-
const routeDir = join(paths.routesDir, entity)
|
|
126
|
-
|
|
127
|
-
console.log(`\n Generating CRUD for: ${entity}\n`)
|
|
128
|
-
|
|
129
|
-
await mkdir(routeDir, { recursive: true })
|
|
130
|
-
|
|
131
|
-
await writeFile(join(routeDir, "index.tsx"), listRoute(entity, singular))
|
|
132
|
-
await writeFile(join(routeDir, "[id].tsx"), detailRoute(entity, singular))
|
|
133
|
-
await writeFile(join(routeDir, "new.tsx"), newRoute(entity, singular))
|
|
134
|
-
|
|
135
|
-
// Create migration
|
|
136
|
-
const migrationDir = paths.migrationsDir
|
|
137
|
-
await mkdir(migrationDir, { recursive: true })
|
|
138
|
-
const migrationFile = await createMigration(migrationDir, `create_${entity}`)
|
|
139
|
-
const migrationPath = join(migrationDir, migrationFile)
|
|
140
|
-
await writeFile(migrationPath, migrationSQL(entity))
|
|
141
|
-
|
|
142
|
-
console.log(" Created:")
|
|
143
|
-
console.log(` routes/${entity}/index.tsx -- list page`)
|
|
144
|
-
console.log(` routes/${entity}/[id].tsx -- detail page`)
|
|
145
|
-
console.log(` routes/${entity}/new.tsx -- create form`)
|
|
146
|
-
console.log(` migrations/${migrationFile}`)
|
|
147
|
-
console.log()
|
|
148
|
-
console.log(" Next: run `gorsee migrate` to apply the migration")
|
|
149
|
-
console.log()
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/** @deprecated Use generateCrudScaffold() for programmatic access. */
|
|
153
|
-
export async function runGenerate(args: string[], options: GenerateCommandOptions = {}) {
|
|
154
|
-
return generateCrudScaffold(args, options)
|
|
155
|
-
}
|
package/src/cli/cmd-migrate.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// gorsee migrate -- run database migrations
|
|
2
|
-
// gorsee migrate create <name> -- create new migration file
|
|
3
|
-
|
|
4
|
-
import { runMigrations, createMigration } from "../db/migrate.ts"
|
|
5
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
6
|
-
|
|
7
|
-
export interface MigrateCommandOptions extends RuntimeOptions {
|
|
8
|
-
dbPath?: string
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export async function runProjectMigrations(args: string[], options: MigrateCommandOptions = {}) {
|
|
12
|
-
const { env, paths } = createProjectContext(options)
|
|
13
|
-
const subcommand = args[0]
|
|
14
|
-
|
|
15
|
-
if (subcommand === "create") {
|
|
16
|
-
const name = args[1]
|
|
17
|
-
if (!name) {
|
|
18
|
-
console.error("Usage: gorsee migrate create <migration-name>")
|
|
19
|
-
process.exit(1)
|
|
20
|
-
}
|
|
21
|
-
const filename = await createMigration(paths.migrationsDir, name)
|
|
22
|
-
console.log(`\n Created: migrations/${filename}\n`)
|
|
23
|
-
return
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
// Default: run pending migrations
|
|
27
|
-
const dbPath = options.dbPath ?? env.DATABASE_URL ?? paths.dataFile
|
|
28
|
-
console.log("\n Running migrations...\n")
|
|
29
|
-
|
|
30
|
-
const result = await runMigrations(dbPath, paths.migrationsDir)
|
|
31
|
-
|
|
32
|
-
if (result.applied.length > 0) {
|
|
33
|
-
console.log(" Applied:")
|
|
34
|
-
for (const m of result.applied) console.log(` + ${m}`)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (result.skipped.length > 0) {
|
|
38
|
-
console.log(` Skipped: ${result.skipped.length} (already applied)`)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (result.errors.length > 0) {
|
|
42
|
-
console.log("\n Errors:")
|
|
43
|
-
for (const e of result.errors) console.error(` ! ${e}`)
|
|
44
|
-
process.exit(1)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
console.log(`\n Done: ${result.applied.length} migration(s) applied\n`)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** @deprecated Use runProjectMigrations() for programmatic access. */
|
|
51
|
-
export async function runMigrate(args: string[], options: MigrateCommandOptions = {}) {
|
|
52
|
-
return runProjectMigrations(args, options)
|
|
53
|
-
}
|
package/src/cli/cmd-routes.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// gorsee routes -- list all routes
|
|
2
|
-
|
|
3
|
-
import { createRouter } from "../router/scanner.ts"
|
|
4
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
5
|
-
|
|
6
|
-
export interface RoutesCommandOptions extends RuntimeOptions {}
|
|
7
|
-
|
|
8
|
-
export async function listRoutes(options: RoutesCommandOptions = {}) {
|
|
9
|
-
const { cwd, paths } = createProjectContext(options)
|
|
10
|
-
const routes = await createRouter(paths.routesDir)
|
|
11
|
-
|
|
12
|
-
if (routes.length === 0) {
|
|
13
|
-
console.log("\n No routes found in routes/\n")
|
|
14
|
-
return
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
console.log("\n Routes:\n")
|
|
18
|
-
console.log(" " + "Path".padEnd(25) + "File".padEnd(40) + "Params")
|
|
19
|
-
console.log(" " + "-".repeat(70))
|
|
20
|
-
|
|
21
|
-
for (const route of routes) {
|
|
22
|
-
const params = route.params.length > 0 ? route.params.join(", ") : "-"
|
|
23
|
-
console.log(
|
|
24
|
-
" " +
|
|
25
|
-
route.path.padEnd(25) +
|
|
26
|
-
route.filePath.replace(cwd + "/", "").padEnd(40) +
|
|
27
|
-
params
|
|
28
|
-
)
|
|
29
|
-
}
|
|
30
|
-
console.log()
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/** @deprecated Use listRoutes() for programmatic access. */
|
|
34
|
-
export async function runRoutes(_args: string[], options: RoutesCommandOptions = {}) {
|
|
35
|
-
return listRoutes(options)
|
|
36
|
-
}
|
package/src/cli/cmd-start.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
// gorsee start -- starts production server from dist/
|
|
2
|
-
|
|
3
|
-
import { join } from "node:path"
|
|
4
|
-
import { stat } from "node:fs/promises"
|
|
5
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
6
|
-
|
|
7
|
-
export interface StartCommandOptions extends RuntimeOptions {
|
|
8
|
-
port?: number
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export async function startBuiltProject(options: StartCommandOptions = {}) {
|
|
12
|
-
const { paths } = createProjectContext(options)
|
|
13
|
-
|
|
14
|
-
// Verify build exists
|
|
15
|
-
try {
|
|
16
|
-
await stat(join(paths.distDir, "manifest.json"))
|
|
17
|
-
} catch {
|
|
18
|
-
console.error("\n Error: No production build found.")
|
|
19
|
-
console.error(" Run `gorsee build` first.\n")
|
|
20
|
-
process.exit(1)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const { startProductionServer } = await import("../prod.ts")
|
|
24
|
-
await startProductionServer({ cwd: paths.cwd, port: options.port })
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** @deprecated Use startBuiltProject() for programmatic access. */
|
|
28
|
-
export async function runStart(_args: string[], options: StartCommandOptions = {}) {
|
|
29
|
-
return startBuiltProject(options)
|
|
30
|
-
}
|
package/src/cli/cmd-test.ts
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
// gorsee test -- smart test runner wrapping bun test
|
|
2
|
-
|
|
3
|
-
import { readdir, stat } from "node:fs/promises"
|
|
4
|
-
import { join } from "node:path"
|
|
5
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
6
|
-
|
|
7
|
-
interface TestFlags {
|
|
8
|
-
watch: boolean
|
|
9
|
-
coverage: boolean
|
|
10
|
-
filter: string | null
|
|
11
|
-
e2e: boolean
|
|
12
|
-
unit: boolean
|
|
13
|
-
integration: boolean
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function parseFlags(args: string[]): TestFlags {
|
|
17
|
-
const flags: TestFlags = {
|
|
18
|
-
watch: false,
|
|
19
|
-
coverage: false,
|
|
20
|
-
filter: null,
|
|
21
|
-
e2e: false,
|
|
22
|
-
unit: false,
|
|
23
|
-
integration: false,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
for (let i = 0; i < args.length; i++) {
|
|
27
|
-
const arg = args[i]!
|
|
28
|
-
if (arg === "--watch") flags.watch = true
|
|
29
|
-
else if (arg === "--coverage") flags.coverage = true
|
|
30
|
-
else if (arg === "--filter" && args[i + 1]) flags.filter = args[++i]!
|
|
31
|
-
else if (arg === "--e2e") flags.e2e = true
|
|
32
|
-
else if (arg === "--unit") flags.unit = true
|
|
33
|
-
else if (arg === "--integration") flags.integration = true
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return flags
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async function findTestFiles(dir: string, pattern: RegExp): Promise<string[]> {
|
|
40
|
-
const results: string[] = []
|
|
41
|
-
let entries: string[]
|
|
42
|
-
try {
|
|
43
|
-
entries = await readdir(dir)
|
|
44
|
-
} catch {
|
|
45
|
-
return results
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
for (const entry of entries) {
|
|
49
|
-
if (entry === "node_modules" || entry === "dist") continue
|
|
50
|
-
const fullPath = join(dir, entry)
|
|
51
|
-
const s = await stat(fullPath)
|
|
52
|
-
if (s.isDirectory()) {
|
|
53
|
-
results.push(...(await findTestFiles(fullPath, pattern)))
|
|
54
|
-
} else if (pattern.test(fullPath)) {
|
|
55
|
-
results.push(fullPath)
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return results
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function getTestPattern(flags: TestFlags): RegExp {
|
|
62
|
-
if (flags.e2e) return /(?:\.e2e\.test\.ts$|e2e\/.*\.test\.ts$)/
|
|
63
|
-
if (flags.integration) return /(?:\.integration\.test\.ts$|tests\/integration\/.*\.test\.ts$)/
|
|
64
|
-
if (flags.unit) return /(?:\.unit\.test\.ts$|tests\/unit\/.*\.test\.ts$)/
|
|
65
|
-
return /\.test\.ts$/
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/** Build bun test args from parsed flags */
|
|
69
|
-
export function buildTestArgs(flags: TestFlags, files: string[]): string[] {
|
|
70
|
-
const bunArgs = ["test"]
|
|
71
|
-
|
|
72
|
-
if (flags.watch) bunArgs.push("--watch")
|
|
73
|
-
if (flags.coverage) bunArgs.push("--coverage")
|
|
74
|
-
if (flags.filter) {
|
|
75
|
-
bunArgs.push("--bail", "--filter", flags.filter)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
bunArgs.push(...files)
|
|
79
|
-
return bunArgs
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export interface TestCommandOptions extends RuntimeOptions {}
|
|
83
|
-
|
|
84
|
-
export async function runTests(args: string[], options: TestCommandOptions = {}) {
|
|
85
|
-
const { cwd, env } = createProjectContext(options)
|
|
86
|
-
const flags = parseFlags(args)
|
|
87
|
-
const pattern = getTestPattern(flags)
|
|
88
|
-
|
|
89
|
-
const files = await findTestFiles(cwd, pattern)
|
|
90
|
-
|
|
91
|
-
if (files.length === 0) {
|
|
92
|
-
const kind = flags.e2e ? "e2e" : flags.integration ? "integration" : flags.unit ? "unit" : "any"
|
|
93
|
-
console.log(`\n No ${kind} test files found.\n`)
|
|
94
|
-
return
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
console.log(`\n Running ${files.length} test file(s)...\n`)
|
|
98
|
-
|
|
99
|
-
const bunArgs = buildTestArgs(flags, files)
|
|
100
|
-
|
|
101
|
-
const proc = Bun.spawn(["bun", ...bunArgs], {
|
|
102
|
-
cwd,
|
|
103
|
-
stdout: "inherit",
|
|
104
|
-
stderr: "inherit",
|
|
105
|
-
env: {
|
|
106
|
-
...env,
|
|
107
|
-
NODE_ENV: "test",
|
|
108
|
-
GORSEE_TEST: "1",
|
|
109
|
-
},
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
const exitCode = await proc.exited
|
|
113
|
-
|
|
114
|
-
console.log()
|
|
115
|
-
if (exitCode === 0) {
|
|
116
|
-
console.log(` Tests passed (${files.length} file(s))`)
|
|
117
|
-
} else {
|
|
118
|
-
console.log(` Tests failed (exit code ${exitCode})`)
|
|
119
|
-
process.exit(exitCode)
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/** @deprecated Use runTests() for programmatic access. */
|
|
124
|
-
export async function runTest(args: string[], options: TestCommandOptions = {}) {
|
|
125
|
-
return runTests(args, options)
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// Re-export for testing
|
|
129
|
-
export { parseFlags, findTestFiles, getTestPattern }
|
package/src/cli/cmd-typegen.ts
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
// CLI command: gorsee typegen
|
|
2
|
-
// Generates TypeScript route types from file-based routes
|
|
3
|
-
|
|
4
|
-
import { join } from "node:path"
|
|
5
|
-
import { mkdir, writeFile } from "node:fs/promises"
|
|
6
|
-
import { createRouter, type Route } from "../router/index.ts"
|
|
7
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
8
|
-
|
|
9
|
-
const OUTPUT_DIR = ".gorsee"
|
|
10
|
-
const TYPES_FILE = "routes.d.ts"
|
|
11
|
-
|
|
12
|
-
function extractParams(route: Route): Record<string, "string"> {
|
|
13
|
-
const params: Record<string, "string"> = {}
|
|
14
|
-
for (const p of route.params) {
|
|
15
|
-
params[p] = "string"
|
|
16
|
-
}
|
|
17
|
-
return params
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function formatParamsType(params: Record<string, "string">): string {
|
|
21
|
-
const entries = Object.entries(params)
|
|
22
|
-
if (entries.length === 0) return "{}"
|
|
23
|
-
const fields = entries.map(([key, type]) => `${key}: ${type}`)
|
|
24
|
-
return `{ ${fields.join("; ")} }`
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function generateDeclaration(routes: Route[]): string {
|
|
28
|
-
const lines: string[] = [
|
|
29
|
-
"// Auto-generated by gorsee typegen",
|
|
30
|
-
"// Do not edit manually — re-run `gorsee typegen` after adding routes",
|
|
31
|
-
"",
|
|
32
|
-
'declare module "gorsee/routes" {',
|
|
33
|
-
" interface RouteParams {",
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
for (const route of routes) {
|
|
37
|
-
const params = extractParams(route)
|
|
38
|
-
const paramsType = formatParamsType(params)
|
|
39
|
-
lines.push(` "${route.path}": ${paramsType}`)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
lines.push(" }")
|
|
43
|
-
lines.push("")
|
|
44
|
-
lines.push(" type RoutePath = keyof RouteParams")
|
|
45
|
-
lines.push("")
|
|
46
|
-
lines.push(
|
|
47
|
-
" function typedLink<P extends RoutePath>(path: P, params: RouteParams[P]): string",
|
|
48
|
-
)
|
|
49
|
-
lines.push(
|
|
50
|
-
" function typedNavigate<P extends RoutePath>(path: P, params: RouteParams[P]): Promise<void>",
|
|
51
|
-
)
|
|
52
|
-
lines.push("}")
|
|
53
|
-
lines.push("")
|
|
54
|
-
|
|
55
|
-
return lines.join("\n")
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface TypegenCommandOptions extends RuntimeOptions {
|
|
59
|
-
routesDir?: string
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export async function generateRouteTypes(args: string[], options: TypegenCommandOptions = {}): Promise<void> {
|
|
63
|
-
const { cwd, paths } = createProjectContext(options)
|
|
64
|
-
const routesDir = options.routesDir ?? args[0] ?? paths.routesDir
|
|
65
|
-
|
|
66
|
-
console.log(`Scanning routes in: ${routesDir}`)
|
|
67
|
-
|
|
68
|
-
const routes = await createRouter(routesDir)
|
|
69
|
-
|
|
70
|
-
if (routes.length === 0) {
|
|
71
|
-
console.warn("No routes found. Make sure your routes/ directory exists.")
|
|
72
|
-
return
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const outputDir = join(cwd, OUTPUT_DIR)
|
|
76
|
-
await mkdir(outputDir, { recursive: true })
|
|
77
|
-
|
|
78
|
-
const declaration = generateDeclaration(routes)
|
|
79
|
-
const typesPath = join(outputDir, TYPES_FILE)
|
|
80
|
-
await writeFile(typesPath, declaration, "utf-8")
|
|
81
|
-
|
|
82
|
-
console.log(`Generated ${typesPath}`)
|
|
83
|
-
console.log(` ${routes.length} route(s):`)
|
|
84
|
-
for (const route of routes) {
|
|
85
|
-
const params = route.params.length > 0 ? ` [${route.params.join(", ")}]` : ""
|
|
86
|
-
console.log(` ${route.path}${params}`)
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/** @deprecated Use generateRouteTypes() for programmatic access. */
|
|
91
|
-
export async function runTypegen(args: string[], options: TypegenCommandOptions = {}): Promise<void> {
|
|
92
|
-
return generateRouteTypes(args, options)
|
|
93
|
-
}
|
package/src/cli/cmd-upgrade.ts
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
// gorsee upgrade -- upgrade framework version with migration guidance
|
|
2
|
-
|
|
3
|
-
import { readFile } from "node:fs/promises"
|
|
4
|
-
import { join } from "node:path"
|
|
5
|
-
import { createProjectContext, type RuntimeOptions } from "../runtime/project.ts"
|
|
6
|
-
|
|
7
|
-
interface UpgradeFlags {
|
|
8
|
-
check: boolean
|
|
9
|
-
force: boolean
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function parseUpgradeFlags(args: string[]): UpgradeFlags {
|
|
13
|
-
const flags: UpgradeFlags = { check: false, force: false }
|
|
14
|
-
for (const arg of args) {
|
|
15
|
-
if (arg === "--check") flags.check = true
|
|
16
|
-
else if (arg === "--force") flags.force = true
|
|
17
|
-
}
|
|
18
|
-
return flags
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/** Compare semver strings: -1 (a < b), 0 (equal), 1 (a > b) */
|
|
22
|
-
export function compareVersions(a: string, b: string): number {
|
|
23
|
-
const pa = a.replace(/^v/, "").split(".").map(Number)
|
|
24
|
-
const pb = b.replace(/^v/, "").split(".").map(Number)
|
|
25
|
-
for (let i = 0; i < 3; i++) {
|
|
26
|
-
const va = pa[i] ?? 0
|
|
27
|
-
const vb = pb[i] ?? 0
|
|
28
|
-
if (va < vb) return -1
|
|
29
|
-
if (va > vb) return 1
|
|
30
|
-
}
|
|
31
|
-
return 0
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
async function getCurrentVersion(cwd: string): Promise<string | null> {
|
|
35
|
-
try {
|
|
36
|
-
const pkg = await readFile(join(cwd, "node_modules/gorsee/package.json"), "utf-8")
|
|
37
|
-
return JSON.parse(pkg).version ?? null
|
|
38
|
-
} catch {
|
|
39
|
-
return null
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export const NPM_REGISTRY_URL = "https://registry.npmjs.org/gorsee/latest"
|
|
44
|
-
|
|
45
|
-
async function fetchLatestVersion(): Promise<string | null> {
|
|
46
|
-
try {
|
|
47
|
-
const res = await fetch(NPM_REGISTRY_URL)
|
|
48
|
-
if (!res.ok) return null
|
|
49
|
-
const data = (await res.json()) as { version?: string }
|
|
50
|
-
return data.version ?? null
|
|
51
|
-
} catch {
|
|
52
|
-
return null
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async function checkMigrationHints(cwd: string): Promise<string[]> {
|
|
57
|
-
const hints: string[] = []
|
|
58
|
-
|
|
59
|
-
// Check tsconfig.json jsx setting
|
|
60
|
-
try {
|
|
61
|
-
const tsconfig = await readFile(join(cwd, "tsconfig.json"), "utf-8")
|
|
62
|
-
const parsed = JSON.parse(tsconfig)
|
|
63
|
-
if (parsed.compilerOptions?.jsx !== "react-jsx") {
|
|
64
|
-
hints.push("tsconfig.json: set compilerOptions.jsx to \"react-jsx\"")
|
|
65
|
-
}
|
|
66
|
-
} catch { /* no tsconfig */ }
|
|
67
|
-
|
|
68
|
-
// Check for deprecated app.config.ts keys
|
|
69
|
-
try {
|
|
70
|
-
const config = await readFile(join(cwd, "app.config.ts"), "utf-8")
|
|
71
|
-
if (config.includes("ssr:")) {
|
|
72
|
-
hints.push("app.config.ts: 'ssr' key is deprecated, use 'rendering' instead")
|
|
73
|
-
}
|
|
74
|
-
} catch { /* no config */ }
|
|
75
|
-
|
|
76
|
-
return hints
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export interface UpgradeCommandOptions extends RuntimeOptions {}
|
|
80
|
-
|
|
81
|
-
export async function upgradeFramework(args: string[], options: UpgradeCommandOptions = {}) {
|
|
82
|
-
const { cwd } = createProjectContext(options)
|
|
83
|
-
const flags = parseUpgradeFlags(args)
|
|
84
|
-
|
|
85
|
-
const current = await getCurrentVersion(cwd)
|
|
86
|
-
if (!current) {
|
|
87
|
-
console.log("\n Gorsee.js not found in node_modules. Run: bun add gorsee\n")
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
console.log(`\n Current version: v${current}`)
|
|
92
|
-
|
|
93
|
-
const latest = await fetchLatestVersion()
|
|
94
|
-
if (!latest) {
|
|
95
|
-
console.log(" Could not fetch latest version from npm registry.\n")
|
|
96
|
-
return
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (compareVersions(current, latest) >= 0) {
|
|
100
|
-
console.log(` Already up to date (v${current})\n`)
|
|
101
|
-
return
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
console.log(` Latest version: v${latest}`)
|
|
105
|
-
console.log(` Upgrade: v${current} -> v${latest}`)
|
|
106
|
-
|
|
107
|
-
if (flags.check) {
|
|
108
|
-
console.log()
|
|
109
|
-
return
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (!flags.force) {
|
|
113
|
-
console.log("\n Run with --force to install, or confirm interactively.")
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
console.log("\n Installing gorsee@latest...")
|
|
117
|
-
const proc = Bun.spawn(["bun", "add", "gorsee@latest"], {
|
|
118
|
-
cwd,
|
|
119
|
-
stdout: "inherit",
|
|
120
|
-
stderr: "inherit",
|
|
121
|
-
})
|
|
122
|
-
const exitCode = await proc.exited
|
|
123
|
-
|
|
124
|
-
if (exitCode !== 0) {
|
|
125
|
-
console.log(`\n Install failed (exit code ${exitCode})\n`)
|
|
126
|
-
process.exit(exitCode)
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const hints = await checkMigrationHints(cwd)
|
|
130
|
-
if (hints.length > 0) {
|
|
131
|
-
console.log("\n Migration hints:")
|
|
132
|
-
for (const hint of hints) {
|
|
133
|
-
console.log(` - ${hint}`)
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
console.log(`\n Upgraded successfully to v${latest}\n`)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/** @deprecated Use upgradeFramework() for programmatic access. */
|
|
141
|
-
export async function runUpgrade(args: string[], options: UpgradeCommandOptions = {}) {
|
|
142
|
-
return upgradeFramework(args, options)
|
|
143
|
-
}
|
package/src/cli/context.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/** @deprecated Import shared project context from "../runtime/project" in new code. */
|
|
2
|
-
export {
|
|
3
|
-
createProjectContext as createCommandContext,
|
|
4
|
-
resolveProjectPaths,
|
|
5
|
-
} from "../runtime/project.ts"
|
|
6
|
-
|
|
7
|
-
/** @deprecated Import shared runtime types from "../runtime/project" in new code. */
|
|
8
|
-
export type {
|
|
9
|
-
RuntimeOptions as CommandRuntimeOptions,
|
|
10
|
-
ProjectContext as CommandContext,
|
|
11
|
-
ProjectPaths,
|
|
12
|
-
} from "../runtime/project.ts"
|