@depup/nitro 3.0.260311-beta-depup.0
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/LICENSE +27 -0
- package/README.md +32 -0
- package/changes.json +14 -0
- package/dist/THIRD-PARTY-LICENSES.md +1646 -0
- package/dist/_build/common.mjs +29361 -0
- package/dist/_build/rolldown.mjs +173 -0
- package/dist/_build/rollup.mjs +194 -0
- package/dist/_build/vite.build.mjs +18 -0
- package/dist/_chunks/nitro.mjs +1159 -0
- package/dist/_chunks/nitro2.mjs +102 -0
- package/dist/_chunks/nitro3.mjs +129 -0
- package/dist/_chunks/utils.mjs +272 -0
- package/dist/_common.mjs +35 -0
- package/dist/_dev.d.mts +12 -0
- package/dist/_dev.mjs +519 -0
- package/dist/_libs/_.mjs +3 -0
- package/dist/_libs/_2.mjs +2 -0
- package/dist/_libs/_3.mjs +3 -0
- package/dist/_libs/_4.mjs +2 -0
- package/dist/_libs/_5.mjs +3 -0
- package/dist/_libs/_6.mjs +4 -0
- package/dist/_libs/_7.mjs +5 -0
- package/dist/_libs/c12+rc9.mjs +812 -0
- package/dist/_libs/c12+readdirp+chokidar.d.mts +230 -0
- package/dist/_libs/citty.mjs +361 -0
- package/dist/_libs/commondir+is-reference.mjs +1311 -0
- package/dist/_libs/compatx.d.mts +47 -0
- package/dist/_libs/compatx.mjs +45 -0
- package/dist/_libs/esbuild.d.mts +20 -0
- package/dist/_libs/escape-string-regexp.mjs +7 -0
- package/dist/_libs/estree+pluginutils.d.mts +241 -0
- package/dist/_libs/estree-walker.mjs +184 -0
- package/dist/_libs/exsolve.d.mts +1 -0
- package/dist/_libs/hasown+resolve+deepmerge.mjs +1949 -0
- package/dist/_libs/httpxy.d.mts +82 -0
- package/dist/_libs/httpxy.mjs +671 -0
- package/dist/_libs/js-tokens.d.mts +1 -0
- package/dist/_libs/klona.mjs +37 -0
- package/dist/_libs/magic-string.d.mts +220 -0
- package/dist/_libs/mlly.d.mts +57 -0
- package/dist/_libs/nypm+tinyexec.mjs +845 -0
- package/dist/_libs/perfect-debounce.mjs +88 -0
- package/dist/_libs/pkg-types.d.mts +23 -0
- package/dist/_libs/plugin-alias.mjs +64 -0
- package/dist/_libs/plugin-inject.mjs +131 -0
- package/dist/_libs/plugin-json.mjs +34 -0
- package/dist/_libs/pluginutils.mjs +646 -0
- package/dist/_libs/readdirp+chokidar.mjs +1606 -0
- package/dist/_libs/remapping.mjs +115 -0
- package/dist/_libs/resolve-uri+gen-mapping.mjs +442 -0
- package/dist/_libs/rou3.d.mts +44 -0
- package/dist/_libs/rou3.mjs +496 -0
- package/dist/_libs/std-env.d.mts +12 -0
- package/dist/_libs/strip-literal.d.mts +1 -0
- package/dist/_libs/tsconfck.mjs +813 -0
- package/dist/_libs/ultrahtml.mjs +127 -0
- package/dist/_libs/unimport+unplugin.mjs +1684 -0
- package/dist/_libs/unplugin+unimport.d.mts +423 -0
- package/dist/_libs/unwasm.d.mts +29 -0
- package/dist/_presets.mjs +1759 -0
- package/dist/builder.d.mts +64 -0
- package/dist/builder.mjs +15 -0
- package/dist/cli/_chunks/build.mjs +47 -0
- package/dist/cli/_chunks/common.mjs +14 -0
- package/dist/cli/_chunks/deploy.mjs +40 -0
- package/dist/cli/_chunks/dev.mjs +62 -0
- package/dist/cli/_chunks/docs.mjs +30 -0
- package/dist/cli/_chunks/list.mjs +25 -0
- package/dist/cli/_chunks/prepare.mjs +17 -0
- package/dist/cli/_chunks/preview.mjs +51 -0
- package/dist/cli/_chunks/run.mjs +53 -0
- package/dist/cli/_chunks/task.mjs +14 -0
- package/dist/cli/index.d.mts +1 -0
- package/dist/cli/index.mjs +22 -0
- package/dist/node_modules/@poppinss/colors/build/index.js +139 -0
- package/dist/node_modules/@poppinss/colors/package.json +118 -0
- package/dist/node_modules/@poppinss/dumper/build/chunk-26HALFTP.js +602 -0
- package/dist/node_modules/@poppinss/dumper/build/formatters/console/main.js +441 -0
- package/dist/node_modules/@poppinss/dumper/build/formatters/html/main.js +725 -0
- package/dist/node_modules/@poppinss/dumper/package.json +122 -0
- package/dist/node_modules/@poppinss/exception/build/index.js +44 -0
- package/dist/node_modules/@poppinss/exception/package.json +109 -0
- package/dist/node_modules/@sindresorhus/is/distribution/index.js +1354 -0
- package/dist/node_modules/@sindresorhus/is/distribution/utilities.js +3 -0
- package/dist/node_modules/@sindresorhus/is/package.json +81 -0
- package/dist/node_modules/@speed-highlight/core/dist/index.js +4 -0
- package/dist/node_modules/@speed-highlight/core/dist/terminal.js +2 -0
- package/dist/node_modules/@speed-highlight/core/package.json +94 -0
- package/dist/node_modules/cookie-es/dist/index.mjs +262 -0
- package/dist/node_modules/cookie-es/package.json +37 -0
- package/dist/node_modules/croner/dist/croner.js +1 -0
- package/dist/node_modules/croner/package.json +73 -0
- package/dist/node_modules/defu/dist/defu.mjs +69 -0
- package/dist/node_modules/defu/package.json +43 -0
- package/dist/node_modules/destr/dist/index.mjs +72 -0
- package/dist/node_modules/destr/package.json +47 -0
- package/dist/node_modules/error-stack-parser-es/dist/index.mjs +38 -0
- package/dist/node_modules/error-stack-parser-es/dist/lite.mjs +167 -0
- package/dist/node_modules/error-stack-parser-es/package.json +83 -0
- package/dist/node_modules/get-port-please/dist/index.mjs +430 -0
- package/dist/node_modules/get-port-please/package.json +39 -0
- package/dist/node_modules/kleur/index.mjs +110 -0
- package/dist/node_modules/kleur/package.json +51 -0
- package/dist/node_modules/rendu/dist/index.mjs +380 -0
- package/dist/node_modules/rendu/package.json +47 -0
- package/dist/node_modules/scule/dist/index.mjs +80 -0
- package/dist/node_modules/scule/package.json +43 -0
- package/dist/node_modules/source-map/lib/array-set.js +100 -0
- package/dist/node_modules/source-map/lib/base64-vlq.js +94 -0
- package/dist/node_modules/source-map/lib/base64.js +19 -0
- package/dist/node_modules/source-map/lib/binary-search.js +113 -0
- package/dist/node_modules/source-map/lib/mapping-list.js +83 -0
- package/dist/node_modules/source-map/lib/mappings.wasm +0 -0
- package/dist/node_modules/source-map/lib/read-wasm.js +27 -0
- package/dist/node_modules/source-map/lib/source-map-consumer.js +1081 -0
- package/dist/node_modules/source-map/lib/source-map-generator.js +439 -0
- package/dist/node_modules/source-map/lib/source-node.js +430 -0
- package/dist/node_modules/source-map/lib/url.js +13 -0
- package/dist/node_modules/source-map/lib/util.js +444 -0
- package/dist/node_modules/source-map/lib/wasm.js +138 -0
- package/dist/node_modules/source-map/package.json +79 -0
- package/dist/node_modules/source-map/source-map.js +10 -0
- package/dist/node_modules/supports-color/index.js +202 -0
- package/dist/node_modules/supports-color/package.json +64 -0
- package/dist/node_modules/ufo/dist/index.mjs +645 -0
- package/dist/node_modules/ufo/package.json +48 -0
- package/dist/node_modules/unctx/dist/index.mjs +131 -0
- package/dist/node_modules/unctx/package.json +67 -0
- package/dist/node_modules/youch/build/helpers-B9BQYaS6.js +23 -0
- package/dist/node_modules/youch/build/index.js +212 -0
- package/dist/node_modules/youch/build/public/error_cause/style.css +5 -0
- package/dist/node_modules/youch/build/public/error_info/script.js +13 -0
- package/dist/node_modules/youch/build/public/error_info/style.css +145 -0
- package/dist/node_modules/youch/build/public/error_metadata/style.css +3 -0
- package/dist/node_modules/youch/build/public/error_stack/script.js +72 -0
- package/dist/node_modules/youch/build/public/error_stack/style.css +219 -0
- package/dist/node_modules/youch/build/public/error_stack_source/style.css +123 -0
- package/dist/node_modules/youch/build/public/header/script.js +14 -0
- package/dist/node_modules/youch/build/public/header/style.css +56 -0
- package/dist/node_modules/youch/build/public/layout/script.js +12 -0
- package/dist/node_modules/youch/build/public/layout/style.css +435 -0
- package/dist/node_modules/youch/build/public_dir-C5bujZKB.js +25 -0
- package/dist/node_modules/youch/build/src/templates/error_cause/main.js +44 -0
- package/dist/node_modules/youch/build/src/templates/error_info/main.js +72 -0
- package/dist/node_modules/youch/build/src/templates/error_metadata/main.js +65 -0
- package/dist/node_modules/youch/build/src/templates/error_stack/main.js +152 -0
- package/dist/node_modules/youch/build/src/templates/error_stack_source/main.js +46 -0
- package/dist/node_modules/youch/build/src/templates/header/main.js +24 -0
- package/dist/node_modules/youch/build/src/templates/layout/main.js +27 -0
- package/dist/node_modules/youch/package.json +135 -0
- package/dist/node_modules/youch-core/build/index.js +316 -0
- package/dist/node_modules/youch-core/package.json +124 -0
- package/dist/presets/_nitro/runtime/nitro-dev.mjs +20 -0
- package/dist/presets/_nitro/runtime/nitro-prerenderer.mjs +15 -0
- package/dist/presets/_nitro/runtime/service-worker.mjs +23 -0
- package/dist/presets/aws-amplify/runtime/aws-amplify.mjs +14 -0
- package/dist/presets/aws-lambda/runtime/_utils.mjs +116 -0
- package/dist/presets/aws-lambda/runtime/aws-lambda-streaming.mjs +31 -0
- package/dist/presets/aws-lambda/runtime/aws-lambda.mjs +13 -0
- package/dist/presets/azure/runtime/_utils.mjs +50 -0
- package/dist/presets/azure/runtime/azure-swa.mjs +30 -0
- package/dist/presets/bun/runtime/bun.mjs +40 -0
- package/dist/presets/cloudflare/runtime/_module-handler.mjs +87 -0
- package/dist/presets/cloudflare/runtime/cloudflare-durable.mjs +72 -0
- package/dist/presets/cloudflare/runtime/cloudflare-module.mjs +17 -0
- package/dist/presets/cloudflare/runtime/cloudflare-pages.mjs +39 -0
- package/dist/presets/cloudflare/runtime/plugin.dev.mjs +96 -0
- package/dist/presets/cloudflare/runtime/shims/workers.dev.mjs +27 -0
- package/dist/presets/deno/runtime/deno-deploy.mjs +19 -0
- package/dist/presets/deno/runtime/deno-server.mjs +39 -0
- package/dist/presets/netlify/runtime/netlify-edge.mjs +20 -0
- package/dist/presets/netlify/runtime/netlify.mjs +20 -0
- package/dist/presets/node/runtime/node-cluster.mjs +54 -0
- package/dist/presets/node/runtime/node-middleware.mjs +14 -0
- package/dist/presets/node/runtime/node-server.mjs +47 -0
- package/dist/presets/standard/runtime/server.mjs +4 -0
- package/dist/presets/stormkit/runtime/stormkit.mjs +27 -0
- package/dist/presets/vercel/runtime/cron-handler.mjs +25 -0
- package/dist/presets/vercel/runtime/isr.mjs +19 -0
- package/dist/presets/vercel/runtime/vercel.node.mjs +24 -0
- package/dist/presets/vercel/runtime/vercel.web.mjs +23 -0
- package/dist/presets/winterjs/runtime/winterjs.mjs +91 -0
- package/dist/presets/zeabur/runtime/zeabur.mjs +4 -0
- package/dist/presets/zephyr/runtime/server.mjs +3 -0
- package/dist/runtime/app.d.mts +1 -0
- package/dist/runtime/app.mjs +1 -0
- package/dist/runtime/cache.d.mts +1 -0
- package/dist/runtime/cache.mjs +1 -0
- package/dist/runtime/config.d.mts +3 -0
- package/dist/runtime/config.mjs +4 -0
- package/dist/runtime/context.d.mts +1 -0
- package/dist/runtime/context.mjs +1 -0
- package/dist/runtime/database.d.mts +1 -0
- package/dist/runtime/database.mjs +1 -0
- package/dist/runtime/internal/app.d.mts +16 -0
- package/dist/runtime/internal/app.mjs +208 -0
- package/dist/runtime/internal/cache.d.mts +7 -0
- package/dist/runtime/internal/cache.mjs +41 -0
- package/dist/runtime/internal/context.d.mts +14 -0
- package/dist/runtime/internal/context.mjs +24 -0
- package/dist/runtime/internal/database.d.mts +2 -0
- package/dist/runtime/internal/database.mjs +12 -0
- package/dist/runtime/internal/empty.mjs +0 -0
- package/dist/runtime/internal/error/dev.d.mts +10 -0
- package/dist/runtime/internal/error/dev.mjs +121 -0
- package/dist/runtime/internal/error/hooks.d.mts +1 -0
- package/dist/runtime/internal/error/hooks.mjs +9 -0
- package/dist/runtime/internal/error/prod.d.mts +6 -0
- package/dist/runtime/internal/error/prod.mjs +40 -0
- package/dist/runtime/internal/error/utils.d.mts +8 -0
- package/dist/runtime/internal/error/utils.mjs +3 -0
- package/dist/runtime/internal/meta.d.mts +2 -0
- package/dist/runtime/internal/meta.mjs +3 -0
- package/dist/runtime/internal/plugin.d.mts +3 -0
- package/dist/runtime/internal/plugin.mjs +4 -0
- package/dist/runtime/internal/route-rules.d.mts +9 -0
- package/dist/runtime/internal/route-rules.mjs +72 -0
- package/dist/runtime/internal/routes/dev-tasks.d.mts +3 -0
- package/dist/runtime/internal/routes/dev-tasks.mjs +25 -0
- package/dist/runtime/internal/routes/openapi.d.mts +3 -0
- package/dist/runtime/internal/routes/openapi.mjs +94 -0
- package/dist/runtime/internal/routes/renderer-template.d.mts +2 -0
- package/dist/runtime/internal/routes/renderer-template.dev.d.mts +3 -0
- package/dist/runtime/internal/routes/renderer-template.dev.mjs +19 -0
- package/dist/runtime/internal/routes/renderer-template.mjs +4 -0
- package/dist/runtime/internal/routes/scalar.d.mts +3 -0
- package/dist/runtime/internal/routes/scalar.mjs +193 -0
- package/dist/runtime/internal/routes/swagger.d.mts +3 -0
- package/dist/runtime/internal/routes/swagger.mjs +42 -0
- package/dist/runtime/internal/runtime-config.d.mts +9 -0
- package/dist/runtime/internal/runtime-config.mjs +54 -0
- package/dist/runtime/internal/static.d.mts +3 -0
- package/dist/runtime/internal/static.mjs +67 -0
- package/dist/runtime/internal/storage.d.mts +2 -0
- package/dist/runtime/internal/storage.mjs +6 -0
- package/dist/runtime/internal/task.d.mts +19 -0
- package/dist/runtime/internal/task.mjs +69 -0
- package/dist/runtime/internal/vite/dev-entry.mjs +18 -0
- package/dist/runtime/internal/vite/dev-worker.mjs +264 -0
- package/dist/runtime/internal/vite/ssr-renderer.mjs +6 -0
- package/dist/runtime/meta.d.mts +5 -0
- package/dist/runtime/meta.mjs +27 -0
- package/dist/runtime/nitro.d.mts +11 -0
- package/dist/runtime/nitro.mjs +34 -0
- package/dist/runtime/runtime-config.d.mts +1 -0
- package/dist/runtime/runtime-config.mjs +1 -0
- package/dist/runtime/storage.d.mts +1 -0
- package/dist/runtime/storage.mjs +1 -0
- package/dist/runtime/task.d.mts +1 -0
- package/dist/runtime/task.mjs +1 -0
- package/dist/runtime/virtual/_runtime_warn.d.mts +1 -0
- package/dist/runtime/virtual/_runtime_warn.mjs +5 -0
- package/dist/runtime/virtual/database.d.mts +8 -0
- package/dist/runtime/virtual/database.mjs +2 -0
- package/dist/runtime/virtual/error-handler.d.mts +6 -0
- package/dist/runtime/virtual/error-handler.mjs +9 -0
- package/dist/runtime/virtual/feature-flags.d.mts +7 -0
- package/dist/runtime/virtual/feature-flags.mjs +7 -0
- package/dist/runtime/virtual/plugins.d.mts +3 -0
- package/dist/runtime/virtual/plugins.mjs +2 -0
- package/dist/runtime/virtual/polyfills.d.mts +3 -0
- package/dist/runtime/virtual/polyfills.mjs +2 -0
- package/dist/runtime/virtual/public-assets.d.mts +9 -0
- package/dist/runtime/virtual/public-assets.mjs +8 -0
- package/dist/runtime/virtual/renderer-template.d.mts +4 -0
- package/dist/runtime/virtual/renderer-template.mjs +7 -0
- package/dist/runtime/virtual/routing-meta.d.mts +7 -0
- package/dist/runtime/virtual/routing-meta.mjs +2 -0
- package/dist/runtime/virtual/routing.d.mts +8 -0
- package/dist/runtime/virtual/routing.mjs +11 -0
- package/dist/runtime/virtual/runtime-config.d.mts +3 -0
- package/dist/runtime/virtual/runtime-config.mjs +5 -0
- package/dist/runtime/virtual/server-assets.d.mts +7 -0
- package/dist/runtime/virtual/server-assets.mjs +12 -0
- package/dist/runtime/virtual/storage.d.mts +3 -0
- package/dist/runtime/virtual/storage.mjs +5 -0
- package/dist/runtime/virtual/tasks.d.mts +10 -0
- package/dist/runtime/virtual/tasks.mjs +3 -0
- package/dist/runtime/vite.d.mts +8 -0
- package/dist/runtime/vite.mjs +9 -0
- package/dist/types/index.d.mts +3010 -0
- package/dist/types/index.mjs +1 -0
- package/dist/vite.d.mts +52 -0
- package/dist/vite.mjs +740 -0
- package/lib/h3.d.mts +1 -0
- package/lib/h3.mjs +1 -0
- package/lib/tsconfig.json +27 -0
- package/lib/vite.types.d.mts +26 -0
- package/lib/vite.types.mjs +2 -0
- package/package.json +256 -0
- package/skills/nitro/SKILL.md +10 -0
- package/skills/nitro/docs/TOC.md +83 -0
- package/skills/nitro/docs/_navigation.json +679 -0
- package/skills/nitro/docs/config/index.md +1147 -0
- package/skills/nitro/docs/deploy/index.md +64 -0
- package/skills/nitro/docs/deploy/providers/alwaysdata.md +50 -0
- package/skills/nitro/docs/deploy/providers/aws-amplify.md +81 -0
- package/skills/nitro/docs/deploy/providers/aws.md +47 -0
- package/skills/nitro/docs/deploy/providers/azure.md +72 -0
- package/skills/nitro/docs/deploy/providers/cleavr.md +33 -0
- package/skills/nitro/docs/deploy/providers/cloudflare.md +375 -0
- package/skills/nitro/docs/deploy/providers/deno-deploy.md +66 -0
- package/skills/nitro/docs/deploy/providers/digitalocean.md +46 -0
- package/skills/nitro/docs/deploy/providers/firebase.md +32 -0
- package/skills/nitro/docs/deploy/providers/flightcontrol.md +67 -0
- package/skills/nitro/docs/deploy/providers/genezio.md +67 -0
- package/skills/nitro/docs/deploy/providers/github-pages.md +68 -0
- package/skills/nitro/docs/deploy/providers/gitlab-pages.md +37 -0
- package/skills/nitro/docs/deploy/providers/heroku.md +84 -0
- package/skills/nitro/docs/deploy/providers/iis.md +38 -0
- package/skills/nitro/docs/deploy/providers/koyeb.md +109 -0
- package/skills/nitro/docs/deploy/providers/netlify.md +47 -0
- package/skills/nitro/docs/deploy/providers/platform-sh.md +37 -0
- package/skills/nitro/docs/deploy/providers/render.md +37 -0
- package/skills/nitro/docs/deploy/providers/stormkit.md +24 -0
- package/skills/nitro/docs/deploy/providers/vercel.md +179 -0
- package/skills/nitro/docs/deploy/providers/zeabur.md +19 -0
- package/skills/nitro/docs/deploy/providers/zephyr.md +99 -0
- package/skills/nitro/docs/deploy/providers/zerops.md +102 -0
- package/skills/nitro/docs/deploy/runtimes/bun.md +15 -0
- package/skills/nitro/docs/deploy/runtimes/deno.md +19 -0
- package/skills/nitro/docs/deploy/runtimes/node.md +63 -0
- package/skills/nitro/docs/docs/assets.md +166 -0
- package/skills/nitro/docs/docs/cache.md +408 -0
- package/skills/nitro/docs/docs/configuration.md +256 -0
- package/skills/nitro/docs/docs/database.md +185 -0
- package/skills/nitro/docs/docs/index.md +56 -0
- package/skills/nitro/docs/docs/lifecycle.md +204 -0
- package/skills/nitro/docs/docs/migration.md +215 -0
- package/skills/nitro/docs/docs/nightly.md +31 -0
- package/skills/nitro/docs/docs/plugins.md +164 -0
- package/skills/nitro/docs/docs/quick-start.md +110 -0
- package/skills/nitro/docs/docs/renderer.md +322 -0
- package/skills/nitro/docs/docs/routing.md +711 -0
- package/skills/nitro/docs/docs/server-entry.md +239 -0
- package/skills/nitro/docs/docs/storage.md +261 -0
- package/skills/nitro/docs/docs/tasks.md +277 -0
- package/skills/nitro/docs/examples/api-routes.md +145 -0
- package/skills/nitro/docs/examples/auto-imports.md +93 -0
- package/skills/nitro/docs/examples/cached-handler.md +81 -0
- package/skills/nitro/docs/examples/custom-error-handler.md +98 -0
- package/skills/nitro/docs/examples/database.md +157 -0
- package/skills/nitro/docs/examples/elysia.md +70 -0
- package/skills/nitro/docs/examples/express.md +78 -0
- package/skills/nitro/docs/examples/fastify.md +79 -0
- package/skills/nitro/docs/examples/hello-world.md +68 -0
- package/skills/nitro/docs/examples/hono.md +74 -0
- package/skills/nitro/docs/examples/import-alias.md +100 -0
- package/skills/nitro/docs/examples/index.md +3 -0
- package/skills/nitro/docs/examples/middleware.md +91 -0
- package/skills/nitro/docs/examples/mono-jsx.md +68 -0
- package/skills/nitro/docs/examples/nano-jsx.md +70 -0
- package/skills/nitro/docs/examples/plugins.md +91 -0
- package/skills/nitro/docs/examples/renderer.md +113 -0
- package/skills/nitro/docs/examples/runtime-config.md +97 -0
- package/skills/nitro/docs/examples/server-fetch.md +87 -0
- package/skills/nitro/docs/examples/shiki.md +198 -0
- package/skills/nitro/docs/examples/virtual-routes.md +74 -0
- package/skills/nitro/docs/examples/vite-nitro-plugin.md +79 -0
- package/skills/nitro/docs/examples/vite-rsc.md +1041 -0
- package/skills/nitro/docs/examples/vite-ssr-html.md +217 -0
- package/skills/nitro/docs/examples/vite-ssr-preact.md +247 -0
- package/skills/nitro/docs/examples/vite-ssr-react.md +226 -0
- package/skills/nitro/docs/examples/vite-ssr-solid.md +256 -0
- package/skills/nitro/docs/examples/vite-ssr-tsr-react.md +442 -0
- package/skills/nitro/docs/examples/vite-ssr-tss-react.md +444 -0
- package/skills/nitro/docs/examples/vite-ssr-vue-router.md +616 -0
- package/skills/nitro/docs/examples/vite-trpc.md +335 -0
- package/skills/nitro/docs/examples/websocket.md +282 -0
- package/skills/nitro/docs/index.md +121 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
# Nitro Server Entry
|
|
2
|
+
|
|
3
|
+
> Use a server entry to create a global middleware that runs for all routes before they are matched.
|
|
4
|
+
|
|
5
|
+
The server entry is a special handler in Nitro that acts as a global middleware, running for every incoming request before routes are matched. It's commonly used for cross-cutting concerns like authentication, logging, request preprocessing, or creating custom routing logic.
|
|
6
|
+
|
|
7
|
+
## Auto-detected `server.ts`
|
|
8
|
+
|
|
9
|
+
By default, Nitro automatically looks for a `server.ts` (or `.js`, `.mjs`, `.mts`, `.tsx`, `.jsx`) file in your project root directory.
|
|
10
|
+
|
|
11
|
+
If found, Nitro will use it as the server entry and run it for all incoming requests.
|
|
12
|
+
|
|
13
|
+
<code-group>
|
|
14
|
+
|
|
15
|
+
```ts [server.ts]
|
|
16
|
+
export default {
|
|
17
|
+
async fetch(req: Request) {
|
|
18
|
+
const url = new URL(req.url);
|
|
19
|
+
|
|
20
|
+
// Handle specific routes
|
|
21
|
+
if (url.pathname === "/health") {
|
|
22
|
+
return new Response("OK", {
|
|
23
|
+
status: 200,
|
|
24
|
+
headers: { "content-type": "text/plain" }
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Add custom headers to all requests
|
|
29
|
+
// Return nothing to continue to the next handler
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```ts [routes/api/hello.ts]
|
|
35
|
+
import { defineHandler } from "nitro";
|
|
36
|
+
|
|
37
|
+
export default defineHandler((event) => {
|
|
38
|
+
return { hello: "API" };
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
</code-group>
|
|
42
|
+
|
|
43
|
+
<tip>
|
|
44
|
+
|
|
45
|
+
When `server.ts` is detected, Nitro will log in the terminal: `Detected \`server.ts` as server entry.`
|
|
46
|
+
</tip>
|
|
47
|
+
|
|
48
|
+
With this setup:
|
|
49
|
+
|
|
50
|
+
- `/health` → Handled by server entry (returns a response)
|
|
51
|
+
- `/api/hello` → Handled by the API route handler directly
|
|
52
|
+
- `/about`, etc. → Server entry runs first, then continues to the renderer if no response is returned
|
|
53
|
+
|
|
54
|
+
## Framework compatibility
|
|
55
|
+
The server entry is a great way to integrate with other frameworks. Any framework that exposes a standard Web `fetch(request: Request): Response` interface can be used as a server entry.
|
|
56
|
+
|
|
57
|
+
### Web-compatible frameworks
|
|
58
|
+
|
|
59
|
+
Frameworks that implement the Web `fetch` API work directly with `server.ts`:
|
|
60
|
+
|
|
61
|
+
<tabs>
|
|
62
|
+
|
|
63
|
+
<tabs-item>
|
|
64
|
+
|
|
65
|
+
```ts [server.ts]
|
|
66
|
+
import { H3 } from "h3";
|
|
67
|
+
|
|
68
|
+
const app = new H3()
|
|
69
|
+
|
|
70
|
+
app.get("/", () => "⚡️ Hello from H3!");
|
|
71
|
+
|
|
72
|
+
export default app;
|
|
73
|
+
```
|
|
74
|
+
</tabs-item>
|
|
75
|
+
|
|
76
|
+
<tabs-item>
|
|
77
|
+
|
|
78
|
+
```ts [server.ts]
|
|
79
|
+
import { Hono } from "hono";
|
|
80
|
+
|
|
81
|
+
const app = new Hono();
|
|
82
|
+
|
|
83
|
+
app.get("/", (c) => c.text("🔥 Hello from Hono!"));
|
|
84
|
+
|
|
85
|
+
export default app;
|
|
86
|
+
```
|
|
87
|
+
</tabs-item>
|
|
88
|
+
|
|
89
|
+
<tabs-item>
|
|
90
|
+
|
|
91
|
+
```ts [server.ts]
|
|
92
|
+
import { Elysia } from "elysia";
|
|
93
|
+
|
|
94
|
+
const app = new Elysia();
|
|
95
|
+
|
|
96
|
+
app.get("/", () => "🦊 Hello from Elysia!");
|
|
97
|
+
|
|
98
|
+
export default app.compile();
|
|
99
|
+
```
|
|
100
|
+
</tabs-item>
|
|
101
|
+
</tabs>
|
|
102
|
+
|
|
103
|
+
### Node.js frameworks
|
|
104
|
+
|
|
105
|
+
For Node.js frameworks that use `(req, res)` style handlers (like [Express](https://expressjs.com/) or [Fastify](https://fastify.dev/)), name your server entry file `server.node.ts` instead of `server.ts`. Nitro will automatically detect the `.node.` suffix and convert the Node.js handler to a web-compatible fetch handler using [`srvx`](https://srvx.h3.dev/).
|
|
106
|
+
|
|
107
|
+
<tabs>
|
|
108
|
+
|
|
109
|
+
<tabs-item>
|
|
110
|
+
|
|
111
|
+
```ts [server.node.ts]
|
|
112
|
+
import Express from "express";
|
|
113
|
+
|
|
114
|
+
const app = Express();
|
|
115
|
+
|
|
116
|
+
app.use("/", (_req, res) => {
|
|
117
|
+
res.send("Hello from Express with Nitro!");
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
export default app;
|
|
121
|
+
```
|
|
122
|
+
</tabs-item>
|
|
123
|
+
|
|
124
|
+
<tabs-item>
|
|
125
|
+
|
|
126
|
+
```ts [server.node.ts]
|
|
127
|
+
import Fastify from "fastify";
|
|
128
|
+
|
|
129
|
+
const app = Fastify();
|
|
130
|
+
|
|
131
|
+
app.get("/", () => "Hello, Fastify with Nitro!");
|
|
132
|
+
|
|
133
|
+
await app.ready();
|
|
134
|
+
|
|
135
|
+
export default app.routing;
|
|
136
|
+
```
|
|
137
|
+
</tabs-item>
|
|
138
|
+
</tabs>
|
|
139
|
+
|
|
140
|
+
## Configuration
|
|
141
|
+
|
|
142
|
+
### Custom server entry file
|
|
143
|
+
|
|
144
|
+
You can specify a custom server entry file using the `serverEntry` option in your Nitro configuration:
|
|
145
|
+
|
|
146
|
+
```ts [nitro.config.ts]
|
|
147
|
+
import { defineNitroConfig } from "nitro/config";
|
|
148
|
+
|
|
149
|
+
export default defineNitroConfig({
|
|
150
|
+
serverEntry: "./nitro.server.ts"
|
|
151
|
+
})
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
You can also provide an object with `handler` and `format` options:
|
|
155
|
+
|
|
156
|
+
```ts [nitro.config.ts]
|
|
157
|
+
import { defineNitroConfig } from "nitro/config";
|
|
158
|
+
|
|
159
|
+
export default defineNitroConfig({
|
|
160
|
+
serverEntry: {
|
|
161
|
+
handler: "./server.ts",
|
|
162
|
+
format: "node" // "web" (default) or "node"
|
|
163
|
+
}
|
|
164
|
+
})
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Handler format
|
|
168
|
+
|
|
169
|
+
The `format` option controls how Nitro treats the default export of your server entry:
|
|
170
|
+
|
|
171
|
+
- **`"web"`** (default) — Expects a Web-compatible handler with a `fetch(request: Request): Response` method.
|
|
172
|
+
- **`"node"`** — Expects a Node.js-style `(req, res)` handler. Nitro automatically converts it to a web-compatible handler.
|
|
173
|
+
When auto-detecting, the format is determined by the filename: `server.node.ts` uses `"node"` format, while `server.ts` uses `"web"` format.
|
|
174
|
+
|
|
175
|
+
### Disabling server entry
|
|
176
|
+
|
|
177
|
+
Set `serverEntry` to `false` to disable auto-detection and prevent Nitro from using any server entry:
|
|
178
|
+
|
|
179
|
+
```ts [nitro.config.ts]
|
|
180
|
+
import { defineNitroConfig } from "nitro/config";
|
|
181
|
+
|
|
182
|
+
export default defineNitroConfig({
|
|
183
|
+
serverEntry: false
|
|
184
|
+
})
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Using event handler
|
|
188
|
+
|
|
189
|
+
You can also export an event handler using `defineHandler` for better type inference and access to the h3 event object:
|
|
190
|
+
|
|
191
|
+
```ts [server.ts]
|
|
192
|
+
import { defineHandler } from "nitro";
|
|
193
|
+
|
|
194
|
+
export default defineHandler((event) => {
|
|
195
|
+
// Add custom context
|
|
196
|
+
event.context.requestId = crypto.randomUUID();
|
|
197
|
+
event.context.timestamp = Date.now();
|
|
198
|
+
|
|
199
|
+
// Log the request
|
|
200
|
+
console.log(`[${event.context.requestId}] ${event.method} ${event.path}`);
|
|
201
|
+
|
|
202
|
+
// Continue to the next handler (don't return anything)
|
|
203
|
+
});
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
<important>
|
|
207
|
+
|
|
208
|
+
If your server entry returns `undefined` or doesn't return anything, the request will continue to be processed by routes and the renderer. If it returns a response, the request lifecycle stops there.
|
|
209
|
+
</important>
|
|
210
|
+
|
|
211
|
+
## Request lifecycle
|
|
212
|
+
|
|
213
|
+
The server entry is registered as a catch-all (`/**`) route handler. When a specific route (like `/api/hello`) matches a request, that route handler takes priority. For requests that don't match any specific route, the server entry runs before the renderer:
|
|
214
|
+
|
|
215
|
+
```md
|
|
216
|
+
1. Server hook: `request`
|
|
217
|
+
2. Route rules (headers, redirects, etc.)
|
|
218
|
+
3. Global middleware (middleware/)
|
|
219
|
+
4. Route matching:
|
|
220
|
+
a. Specific routes (routes/) ← if matched, handles the request
|
|
221
|
+
b. Server entry ← runs for unmatched routes
|
|
222
|
+
c. Renderer (renderer.ts or index.html)
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
When both a server entry and a renderer exist, they are chained: the server entry runs first, and if it doesn't return a response, the renderer handles the request.
|
|
226
|
+
|
|
227
|
+
## Development mode
|
|
228
|
+
|
|
229
|
+
During development, Nitro watches for changes to your server entry file. When the file is created, modified, or deleted, the dev server automatically reloads to pick up the changes.
|
|
230
|
+
|
|
231
|
+
## Best practices
|
|
232
|
+
|
|
233
|
+
- Use server entry for cross-cutting concerns that affect **all routes**
|
|
234
|
+
- Return `undefined` to continue processing, return a response to terminate
|
|
235
|
+
- Keep server entry logic lightweight for better performance
|
|
236
|
+
- Use global middleware for modular concerns instead of one large server entry
|
|
237
|
+
- Consider using [Nitro plugins](/docs/plugins) for initialization logic
|
|
238
|
+
- Avoid heavy computation in server entry (it runs for every request)
|
|
239
|
+
- Don't use server entry for route-specific logic (use route handlers instead as they are more performant)
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# KV Storage
|
|
2
|
+
|
|
3
|
+
> Nitro provides a built-in storage layer that can abstract filesystem or database or any other data source.
|
|
4
|
+
|
|
5
|
+
Nitro has built-in integration with [unstorage](https://unstorage.unjs.io) to provide a runtime agnostic persistent layer.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
To use the storage layer, you can use the `useStorage()` utility to access the storage instance.
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { useStorage } from "nitro/storage";
|
|
13
|
+
|
|
14
|
+
// Default storage (in-memory)
|
|
15
|
+
await useStorage().setItem("test:foo", { hello: "world" });
|
|
16
|
+
const value = await useStorage().getItem("test:foo");
|
|
17
|
+
|
|
18
|
+
// You can specify a base prefix with useStorage(base)
|
|
19
|
+
const testStorage = useStorage("test");
|
|
20
|
+
await testStorage.setItem("foo", { hello: "world" });
|
|
21
|
+
await testStorage.getItem("foo"); // { hello: "world" }
|
|
22
|
+
|
|
23
|
+
// You can use generics to type the return value
|
|
24
|
+
await useStorage<{ hello: string }>("test").getItem("foo");
|
|
25
|
+
await useStorage("test").getItem<{ hello: string }>("foo");
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
<read-more></read-more>
|
|
29
|
+
|
|
30
|
+
### Available methods
|
|
31
|
+
|
|
32
|
+
The storage instance returned by `useStorage()` provides the following methods:
|
|
33
|
+
|
|
34
|
+
| Method | Description |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| `getItem(key)` | Get the value of a key. Returns `null` if the key does not exist. |
|
|
37
|
+
| `getItems(items)` | Get multiple items at once. Accepts an array of keys or `{ key, options }` objects. |
|
|
38
|
+
| `getItemRaw(key)` | Get the raw value of a key without parsing. Useful for binary data. |
|
|
39
|
+
| `setItem(key, value)` | Set the value of a key. |
|
|
40
|
+
| `setItems(items)` | Set multiple items at once. Accepts an array of `{ key, value }` objects. |
|
|
41
|
+
| `setItemRaw(key, value)` | Set the raw value of a key without serialization. |
|
|
42
|
+
| `hasItem(key)` | Check if a key exists. Returns a boolean. |
|
|
43
|
+
| `removeItem(key)` | Remove a key from storage. |
|
|
44
|
+
| `getKeys(base?)` | Get all keys, optionally filtered by a base prefix. |
|
|
45
|
+
| `clear(base?)` | Clear all keys, optionally filtered by a base prefix. |
|
|
46
|
+
| `getMeta(key)` | Get metadata for a key (e.g., `mtime`, `atime`, `ttl`). |
|
|
47
|
+
| `setMeta(key, meta)` | Set metadata for a key. |
|
|
48
|
+
| `removeMeta(key)` | Remove metadata for a key. |
|
|
49
|
+
| `mount(base, driver)` | Dynamically mount a storage driver at a base path. |
|
|
50
|
+
| `unmount(base)` | Unmount a storage driver from a base path. |
|
|
51
|
+
| `watch(callback)` | Watch for changes. Callback receives `(event, key)` where event is `"update"` or `"remove"`. |
|
|
52
|
+
| `unwatch()` | Stop watching for changes. |
|
|
53
|
+
|
|
54
|
+
Shorthand aliases are also available: `get`, `set`, `has`, `del`, `remove`, `keys`.
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import { useStorage } from "nitro/storage";
|
|
58
|
+
|
|
59
|
+
// Get all keys under a prefix
|
|
60
|
+
const keys = await useStorage("test").getKeys();
|
|
61
|
+
|
|
62
|
+
// Check if a key exists
|
|
63
|
+
const exists = await useStorage().hasItem("test:foo");
|
|
64
|
+
|
|
65
|
+
// Remove a key
|
|
66
|
+
await useStorage().removeItem("test:foo");
|
|
67
|
+
|
|
68
|
+
// Get raw binary data
|
|
69
|
+
const raw = await useStorage().getItemRaw("assets/server:image.png");
|
|
70
|
+
|
|
71
|
+
// Get metadata (type, etag, mtime, etc.)
|
|
72
|
+
const meta = await useStorage("assets/server").getMeta("file.txt");
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Configuration
|
|
76
|
+
|
|
77
|
+
You can mount one or multiple custom storage drivers using the `storage` option.
|
|
78
|
+
|
|
79
|
+
The key is the mount point name, and the value is the driver name and configuration.
|
|
80
|
+
|
|
81
|
+
```ts [nitro.config.ts]
|
|
82
|
+
import { defineNitroConfig } from "nitro/config";
|
|
83
|
+
|
|
84
|
+
export default defineNitroConfig({
|
|
85
|
+
storage: {
|
|
86
|
+
redis: {
|
|
87
|
+
driver: "redis",
|
|
88
|
+
/* redis connector options */
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
})
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Then, you can use the redis storage using the `useStorage("redis")` function.
|
|
95
|
+
|
|
96
|
+
<read-more>
|
|
97
|
+
|
|
98
|
+
You can find the driver list on [unstorage documentation](https://unstorage.unjs.io/) with their configuration.
|
|
99
|
+
</read-more>
|
|
100
|
+
|
|
101
|
+
### Development storage
|
|
102
|
+
|
|
103
|
+
You can use the `devStorage` option to override storage configuration during development and prerendering.
|
|
104
|
+
|
|
105
|
+
This is useful when your production driver is not available in development (e.g., a managed Redis instance).
|
|
106
|
+
|
|
107
|
+
```ts [nitro.config.ts]
|
|
108
|
+
import { defineNitroConfig } from "nitro/config";
|
|
109
|
+
|
|
110
|
+
export default defineNitroConfig({
|
|
111
|
+
storage: {
|
|
112
|
+
db: {
|
|
113
|
+
driver: "redis",
|
|
114
|
+
host: "prod.example.com",
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
devStorage: {
|
|
118
|
+
db: {
|
|
119
|
+
driver: "fs",
|
|
120
|
+
base: "./.data/db"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
})
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
When running in development mode, `devStorage` mounts are merged on top of `storage` mounts, allowing you to use a local filesystem driver or an in-memory driver while developing.
|
|
127
|
+
|
|
128
|
+
## Built-in mount points
|
|
129
|
+
|
|
130
|
+
Nitro automatically mounts the following storage paths:
|
|
131
|
+
|
|
132
|
+
### `/assets`
|
|
133
|
+
|
|
134
|
+
Server assets are mounted at the `/assets` base path. This mount point provides read-only access to bundled server assets (see [Server assets](#server-assets)).
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
import { useStorage } from "nitro/storage";
|
|
138
|
+
|
|
139
|
+
// Access server assets via the /assets mount
|
|
140
|
+
const content = await useStorage("assets/server").getItem("my-file.txt");
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Default (in-memory)
|
|
144
|
+
|
|
145
|
+
The root storage (without a base path) uses an in-memory driver by default. Data stored here is not persisted across restarts.
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
import { useStorage } from "nitro/storage";
|
|
149
|
+
|
|
150
|
+
// In-memory by default, not persisted
|
|
151
|
+
await useStorage().setItem("counter", 1);
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
To persist data, mount a driver with a persistent backend (e.g., `fs`, `redis`, etc.) using the `storage` configuration option.
|
|
155
|
+
|
|
156
|
+
## Server assets
|
|
157
|
+
|
|
158
|
+
Nitro allows you to bundle files from an `assets/` directory at the root of your project. These files are accessible at runtime via the `assets/server` storage mount.
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
my-project/
|
|
162
|
+
assets/
|
|
163
|
+
data.json
|
|
164
|
+
templates/
|
|
165
|
+
welcome.html
|
|
166
|
+
server/
|
|
167
|
+
routes/
|
|
168
|
+
index.ts
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
```ts [server/routes/index.ts]
|
|
172
|
+
import { useStorage } from "nitro/storage";
|
|
173
|
+
|
|
174
|
+
export default defineHandler(async () => {
|
|
175
|
+
const serverAssets = useStorage("assets/server");
|
|
176
|
+
|
|
177
|
+
const keys = await serverAssets.getKeys();
|
|
178
|
+
const data = await serverAssets.getItem("data.json");
|
|
179
|
+
const template = await serverAssets.getItem("templates/welcome.html");
|
|
180
|
+
|
|
181
|
+
return { keys, data, template };
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Custom asset directories
|
|
186
|
+
|
|
187
|
+
You can register additional asset directories using the `serverAssets` config option:
|
|
188
|
+
|
|
189
|
+
```ts [nitro.config.ts]
|
|
190
|
+
import { defineNitroConfig } from "nitro/config";
|
|
191
|
+
|
|
192
|
+
export default defineNitroConfig({
|
|
193
|
+
serverAssets: [
|
|
194
|
+
{
|
|
195
|
+
baseName: "templates",
|
|
196
|
+
dir: "./templates",
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
})
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Custom asset directories are accessible under `assets/<baseName>`:
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
import { useStorage } from "nitro/storage";
|
|
206
|
+
|
|
207
|
+
const templates = useStorage("assets/templates");
|
|
208
|
+
const keys = await templates.getKeys();
|
|
209
|
+
const html = await templates.getItem("email.html");
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Asset metadata
|
|
213
|
+
|
|
214
|
+
Server assets include metadata such as content type, ETag, and modification time:
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
import { useStorage } from "nitro/storage";
|
|
218
|
+
|
|
219
|
+
const serverAssets = useStorage("assets/server");
|
|
220
|
+
|
|
221
|
+
const meta = await serverAssets.getMeta("image.png");
|
|
222
|
+
// { type: "image/png", etag: "\"...\"", mtime: "2024-01-01T00:00:00.000Z" }
|
|
223
|
+
|
|
224
|
+
// Useful for setting response headers
|
|
225
|
+
const raw = await serverAssets.getItemRaw("image.png");
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
<note>
|
|
229
|
+
|
|
230
|
+
In development, server assets are read directly from the filesystem. In production, they are bundled and inlined into the build output.
|
|
231
|
+
</note>
|
|
232
|
+
|
|
233
|
+
## Runtime configuration
|
|
234
|
+
|
|
235
|
+
In scenarios where the mount point configuration is not known until runtime, Nitro can dynamically add mount points during startup using [plugins](/docs/plugins).
|
|
236
|
+
|
|
237
|
+
```ts [plugins/storage.ts]
|
|
238
|
+
import { useStorage } from "nitro/storage";
|
|
239
|
+
import { definePlugin } from "nitro";
|
|
240
|
+
import redisDriver from "unstorage/drivers/redis";
|
|
241
|
+
|
|
242
|
+
export default definePlugin(() => {
|
|
243
|
+
const storage = useStorage()
|
|
244
|
+
|
|
245
|
+
// Dynamically pass in credentials from runtime configuration, or other sources
|
|
246
|
+
const driver = redisDriver({
|
|
247
|
+
base: "redis",
|
|
248
|
+
host: process.env.REDIS_HOST,
|
|
249
|
+
port: process.env.REDIS_PORT,
|
|
250
|
+
/* other redis connector options */
|
|
251
|
+
})
|
|
252
|
+
|
|
253
|
+
// Mount driver
|
|
254
|
+
storage.mount("redis", driver)
|
|
255
|
+
})
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
<warning>
|
|
259
|
+
|
|
260
|
+
This is a temporary workaround, with a better solution coming in the future! Keep a lookout on the GitHub issue [here](https://github.com/nitrojs/nitro/issues/1161#issuecomment-1511444675).
|
|
261
|
+
</warning>
|