silgi 0.43.28 → 0.50.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/README.md +103 -1
- package/dist/_virtual/_rolldown/runtime.mjs +5 -0
- package/dist/adapters/_fetch-adapter.d.mts +18 -0
- package/dist/adapters/_fetch-adapter.mjs +53 -0
- package/dist/adapters/astro.d.mts +15 -0
- package/dist/adapters/astro.mjs +31 -0
- package/dist/adapters/aws-lambda.d.mts +42 -0
- package/dist/adapters/aws-lambda.mjs +92 -0
- package/dist/adapters/express.d.mts +16 -0
- package/dist/adapters/express.mjs +110 -0
- package/dist/adapters/message-port.d.mts +42 -0
- package/dist/adapters/message-port.mjs +132 -0
- package/dist/adapters/nestjs.d.mts +25 -0
- package/dist/adapters/nestjs.mjs +83 -0
- package/dist/adapters/nextjs.d.mts +14 -0
- package/dist/adapters/nextjs.mjs +29 -0
- package/dist/adapters/peer.d.mts +27 -0
- package/dist/adapters/peer.mjs +36 -0
- package/dist/adapters/remix.d.mts +15 -0
- package/dist/adapters/remix.mjs +30 -0
- package/dist/adapters/solidstart.d.mts +12 -0
- package/dist/adapters/solidstart.mjs +29 -0
- package/dist/adapters/sveltekit.d.mts +14 -0
- package/dist/adapters/sveltekit.mjs +30 -0
- package/dist/broker/index.d.mts +62 -0
- package/dist/broker/index.mjs +153 -0
- package/dist/broker/nats.d.mts +33 -0
- package/dist/broker/nats.mjs +31 -0
- package/dist/broker/redis.d.mts +51 -0
- package/dist/broker/redis.mjs +92 -0
- package/dist/builder.d.mts +55 -0
- package/dist/builder.mjs +70 -0
- package/dist/callable.d.mts +19 -0
- package/dist/callable.mjs +42 -0
- package/dist/caller.mjs +90 -0
- package/dist/client/adapters/fetch/index.d.mts +15 -0
- package/dist/client/adapters/fetch/index.mjs +57 -0
- package/dist/client/adapters/ofetch/index.d.mts +55 -0
- package/dist/client/adapters/ofetch/index.mjs +91 -0
- package/dist/client/adapters/websocket/index.d.mts +20 -0
- package/dist/client/adapters/websocket/index.mjs +101 -0
- package/dist/client/client.d.mts +37 -0
- package/dist/client/client.mjs +80 -0
- package/dist/client/consume.d.mts +50 -0
- package/dist/client/consume.mjs +66 -0
- package/dist/client/dynamic-link.d.mts +16 -0
- package/dist/client/dynamic-link.mjs +19 -0
- package/dist/client/index.d.mts +6 -0
- package/dist/client/index.mjs +5 -0
- package/dist/client/interceptor.d.mts +31 -0
- package/dist/client/interceptor.mjs +34 -0
- package/dist/client/openapi.d.mts +29 -0
- package/dist/client/openapi.mjs +89 -0
- package/dist/client/plugins/batch.d.mts +26 -0
- package/dist/client/plugins/batch.mjs +64 -0
- package/dist/client/plugins/circuit-breaker.d.mts +24 -0
- package/dist/client/plugins/circuit-breaker.mjs +60 -0
- package/dist/client/plugins/csrf.d.mts +13 -0
- package/dist/client/plugins/csrf.mjs +20 -0
- package/dist/client/plugins/dedupe.d.mts +10 -0
- package/dist/client/plugins/dedupe.mjs +28 -0
- package/dist/client/plugins/index.d.mts +8 -0
- package/dist/client/plugins/index.mjs +8 -0
- package/dist/client/plugins/otel.d.mts +12 -0
- package/dist/client/plugins/otel.mjs +27 -0
- package/dist/client/plugins/retry.d.mts +34 -0
- package/dist/client/plugins/retry.mjs +79 -0
- package/dist/client/plugins/timeout.d.mts +10 -0
- package/dist/client/plugins/timeout.mjs +14 -0
- package/dist/client/server.d.mts +16 -0
- package/dist/client/server.mjs +59 -0
- package/dist/client/types.d.mts +29 -0
- package/dist/codec/devalue.d.mts +21 -0
- package/dist/codec/devalue.mjs +33 -0
- package/dist/codec/msgpack.d.mts +18 -0
- package/dist/codec/msgpack.mjs +45 -0
- package/dist/codec/sanitize.mjs +38 -0
- package/dist/codegen/emitters.d.mts +51 -0
- package/dist/codegen/emitters.mjs +143 -0
- package/dist/codegen/generate.d.mts +25 -0
- package/dist/codegen/generate.mjs +224 -0
- package/dist/codegen/index.d.mts +44 -0
- package/dist/codegen/index.mjs +103 -0
- package/dist/codegen/parse.d.mts +124 -0
- package/dist/codegen/parse.mjs +135 -0
- package/dist/codegen/preserve.d.mts +21 -0
- package/dist/codegen/preserve.mjs +62 -0
- package/dist/codegen/schema-to-code.d.mts +57 -0
- package/dist/codegen/schema-to-code.mjs +167 -0
- package/dist/compile.d.mts +46 -0
- package/dist/compile.mjs +332 -0
- package/dist/core/codec.mjs +67 -0
- package/dist/core/context-bridge.mjs +11 -0
- package/dist/core/dispatch.mjs +62 -0
- package/dist/core/error.d.mts +99 -60
- package/dist/core/error.mjs +125 -92
- package/dist/core/handler.d.mts +6 -0
- package/dist/core/handler.mjs +153 -0
- package/dist/core/input.mjs +49 -0
- package/dist/core/iterator.d.mts +17 -0
- package/dist/core/iterator.mjs +79 -0
- package/dist/core/router-utils.mjs +22 -0
- package/dist/core/schema.d.mts +20 -0
- package/dist/core/schema.mjs +33 -0
- package/dist/core/serve.d.mts +51 -0
- package/dist/core/serve.mjs +76 -0
- package/dist/core/sse.d.mts +18 -0
- package/dist/core/sse.mjs +110 -0
- package/dist/core/storage.d.mts +17 -4
- package/dist/core/storage.mjs +60 -13
- package/dist/core/task.d.mts +62 -0
- package/dist/core/task.mjs +165 -0
- package/dist/core/trace-map.d.mts +13 -0
- package/dist/core/trace-map.mjs +13 -0
- package/dist/core/url.mjs +28 -0
- package/dist/core/utils.mjs +24 -0
- package/dist/index.d.mts +17 -21
- package/dist/index.mjs +14 -22
- package/dist/integrations/ai/index.d.mts +25 -0
- package/dist/integrations/ai/index.mjs +117 -0
- package/dist/integrations/better-auth/index.d.mts +41 -0
- package/dist/integrations/better-auth/index.mjs +331 -0
- package/dist/integrations/drizzle/index.d.mts +27 -0
- package/dist/integrations/drizzle/index.mjs +285 -0
- package/dist/integrations/hey-api/index.d.mts +2 -0
- package/dist/integrations/hey-api/index.mjs +2 -0
- package/dist/integrations/hey-api/to-client.d.mts +20 -0
- package/dist/integrations/hey-api/to-client.mjs +39 -0
- package/dist/integrations/pinia-colada/general-utils.d.mts +13 -0
- package/dist/integrations/pinia-colada/general-utils.mjs +9 -0
- package/dist/integrations/pinia-colada/index.d.mts +6 -0
- package/dist/integrations/pinia-colada/index.mjs +5 -0
- package/dist/integrations/pinia-colada/key.d.mts +11 -0
- package/dist/integrations/pinia-colada/key.mjs +11 -0
- package/dist/integrations/pinia-colada/procedure-utils.d.mts +25 -0
- package/dist/integrations/pinia-colada/procedure-utils.mjs +33 -0
- package/dist/integrations/pinia-colada/router-utils.d.mts +17 -0
- package/dist/integrations/pinia-colada/router-utils.mjs +30 -0
- package/dist/integrations/pinia-colada/types.d.mts +25 -0
- package/dist/integrations/react/index.d.mts +83 -0
- package/dist/integrations/react/index.mjs +196 -0
- package/dist/integrations/tanstack-query/index.d.mts +120 -0
- package/dist/integrations/tanstack-query/index.mjs +100 -0
- package/dist/integrations/tanstack-query/ssr.d.mts +60 -0
- package/dist/integrations/tanstack-query/ssr.mjs +102 -0
- package/dist/integrations/zod/converter.d.mts +75 -0
- package/dist/integrations/zod/converter.mjs +345 -0
- package/dist/integrations/zod/index.d.mts +2 -0
- package/dist/integrations/zod/index.mjs +2 -0
- package/dist/lazy.d.mts +22 -0
- package/dist/lazy.mjs +34 -0
- package/dist/lifecycle.d.mts +36 -0
- package/dist/lifecycle.mjs +46 -0
- package/dist/map-input.d.mts +17 -0
- package/dist/map-input.mjs +47 -0
- package/dist/plugins/analytics/accumulator.d.mts +24 -0
- package/dist/plugins/analytics/accumulator.mjs +91 -0
- package/dist/plugins/analytics/alerts.d.mts +59 -0
- package/dist/plugins/analytics/alerts.mjs +140 -0
- package/dist/plugins/analytics/collector.d.mts +38 -0
- package/dist/plugins/analytics/collector.mjs +275 -0
- package/dist/plugins/analytics/cost.d.mts +61 -0
- package/dist/plugins/analytics/cost.mjs +97 -0
- package/dist/plugins/analytics/export.d.mts +7 -0
- package/dist/plugins/analytics/export.mjs +86 -0
- package/dist/plugins/analytics/normalize.mjs +144 -0
- package/dist/plugins/analytics/query.mjs +164 -0
- package/dist/plugins/analytics/request-id.mjs +34 -0
- package/dist/plugins/analytics/routes.d.mts +11 -0
- package/dist/plugins/analytics/routes.mjs +211 -0
- package/dist/plugins/analytics/sse.d.mts +31 -0
- package/dist/plugins/analytics/sse.mjs +74 -0
- package/dist/plugins/analytics/store.mjs +103 -0
- package/dist/plugins/analytics/timeseries.d.mts +50 -0
- package/dist/plugins/analytics/timeseries.mjs +169 -0
- package/dist/plugins/analytics/trace.d.mts +48 -0
- package/dist/plugins/analytics/trace.mjs +83 -0
- package/dist/plugins/analytics/types.d.mts +145 -0
- package/dist/plugins/analytics/types.mjs +40 -0
- package/dist/plugins/analytics/utils.d.mts +4 -0
- package/dist/plugins/analytics/utils.mjs +56 -0
- package/dist/plugins/analytics.d.mts +18 -0
- package/dist/plugins/analytics.mjs +188 -0
- package/dist/plugins/batch-server.d.mts +20 -0
- package/dist/plugins/batch-server.mjs +91 -0
- package/dist/plugins/body-limit.d.mts +19 -0
- package/dist/plugins/body-limit.mjs +49 -0
- package/dist/plugins/cache.d.mts +170 -0
- package/dist/plugins/cache.mjs +212 -0
- package/dist/plugins/coerce.d.mts +24 -0
- package/dist/plugins/coerce.mjs +70 -0
- package/dist/plugins/cookies.d.mts +14 -0
- package/dist/plugins/cookies.mjs +48 -0
- package/dist/plugins/cors.d.mts +43 -0
- package/dist/plugins/cors.mjs +62 -0
- package/dist/plugins/file-upload.d.mts +38 -0
- package/dist/plugins/file-upload.mjs +102 -0
- package/dist/plugins/index.d.mts +18 -0
- package/dist/plugins/index.mjs +17 -0
- package/dist/plugins/otel.d.mts +35 -0
- package/dist/plugins/otel.mjs +40 -0
- package/dist/plugins/pino.d.mts +60 -0
- package/dist/plugins/pino.mjs +42 -0
- package/dist/plugins/pubsub.d.mts +50 -0
- package/dist/plugins/pubsub.mjs +53 -0
- package/dist/plugins/ratelimit.d.mts +53 -0
- package/dist/plugins/ratelimit.mjs +92 -0
- package/dist/plugins/signing.d.mts +41 -0
- package/dist/plugins/signing.mjs +118 -0
- package/dist/plugins/strict-get.d.mts +10 -0
- package/dist/plugins/strict-get.mjs +33 -0
- package/dist/scalar.d.mts +49 -0
- package/dist/scalar.mjs +311 -0
- package/dist/silgi.d.mts +144 -0
- package/dist/silgi.mjs +164 -0
- package/dist/trpc-interop.d.mts +22 -0
- package/dist/trpc-interop.mjs +68 -0
- package/dist/types.d.mts +108 -0
- package/dist/ws.d.mts +88 -0
- package/dist/ws.mjs +205 -0
- package/lib/dashboard/index.html +120 -0
- package/lib/ocache.d.mts +1 -0
- package/lib/ocache.mjs +1 -0
- package/lib/ofetch.d.mts +1 -0
- package/lib/ofetch.mjs +1 -0
- package/lib/srvx.d.mts +1 -0
- package/lib/srvx.mjs +1 -0
- package/lib/unstorage.d.mts +1 -0
- package/lib/unstorage.mjs +1 -0
- package/package.json +314 -150
- package/dist/build.d.mts +0 -3
- package/dist/build.mjs +0 -4
- package/dist/cli/build/build.mjs +0 -15
- package/dist/cli/build/dev.d.mts +0 -10
- package/dist/cli/build/dev.mjs +0 -91
- package/dist/cli/build/prepare.d.mts +0 -6
- package/dist/cli/build/prepare.mjs +0 -15
- package/dist/cli/commands/commands.mjs +0 -90
- package/dist/cli/commands/env.mjs +0 -53
- package/dist/cli/commands/init.mjs +0 -84
- package/dist/cli/commands/install.mjs +0 -52
- package/dist/cli/commands/prepare.mjs +0 -65
- package/dist/cli/commands/reset.mjs +0 -46
- package/dist/cli/commands/run.mjs +0 -31
- package/dist/cli/commands/watch.mjs +0 -153
- package/dist/cli/config/defaults.mjs +0 -117
- package/dist/cli/config/index.d.mts +0 -3
- package/dist/cli/config/index.mjs +0 -4
- package/dist/cli/config/loader.d.mts +0 -6
- package/dist/cli/config/loader.mjs +0 -71
- package/dist/cli/config/resolvers/compatibility.mjs +0 -71
- package/dist/cli/config/resolvers/imports.mjs +0 -35
- package/dist/cli/config/resolvers/paths.mjs +0 -98
- package/dist/cli/config/resolvers/storage.mjs +0 -23
- package/dist/cli/config/resolvers/url.mjs +0 -9
- package/dist/cli/config/types.d.mts +0 -14
- package/dist/cli/config/types.mjs +0 -147
- package/dist/cli/core/apiful.mjs +0 -36
- package/dist/cli/core/devServer.mjs +0 -10
- package/dist/cli/core/env.mjs +0 -68
- package/dist/cli/core/installPackage.mjs +0 -60
- package/dist/cli/core/runtimeConfig.mjs +0 -70
- package/dist/cli/core/scan.mjs +0 -35
- package/dist/cli/core/silgi.mjs +0 -111
- package/dist/cli/framework/emptyFramework.mjs +0 -7
- package/dist/cli/framework/h3.mjs +0 -55
- package/dist/cli/framework/index.mjs +0 -15
- package/dist/cli/framework/nitro.mjs +0 -24
- package/dist/cli/framework/nuxt.mjs +0 -10
- package/dist/cli/index.d.mts +0 -1
- package/dist/cli/index.mjs +0 -29
- package/dist/cli/module/exportScan.mjs +0 -180
- package/dist/cli/module/install.mjs +0 -49
- package/dist/cli/module/scan.mjs +0 -193
- package/dist/cli/scan/prepareCommands.mjs +0 -40
- package/dist/cli/scan/prepareConfigs.mjs +0 -33
- package/dist/cli/scan/prepareCoreFile.mjs +0 -118
- package/dist/cli/scan/prepareScanFile.mjs +0 -59
- package/dist/cli/scan/prepareSchema.mjs +0 -128
- package/dist/cli/scan/scanExportFile.mjs +0 -288
- package/dist/cli/scan/writeCoreFile.mjs +0 -22
- package/dist/cli/scan/writeTypesAndFiles.mjs +0 -72
- package/dist/cli/utils/cancel.mjs +0 -14
- package/dist/cli/utils/common.mjs +0 -15
- package/dist/cli/utils/compatibility.mjs +0 -33
- package/dist/cli/utils/debug.mjs +0 -11
- package/dist/cli/utils/ignore.mjs +0 -56
- package/dist/cli/utils/processManager.mjs +0 -170
- package/dist/cli/utils/readScanFile.mjs +0 -58
- package/dist/cli/utils/storage.mjs +0 -23
- package/dist/core/context.d.mts +0 -30
- package/dist/core/context.mjs +0 -32
- package/dist/core/createSilgi.d.mts +0 -6
- package/dist/core/createSilgi.mjs +0 -153
- package/dist/core/event.d.mts +0 -26
- package/dist/core/event.mjs +0 -44
- package/dist/core/index.d.mts +0 -25
- package/dist/core/index.mjs +0 -30
- package/dist/core/orchestrate.mjs +0 -115
- package/dist/core/response.d.mts +0 -20
- package/dist/core/response.mjs +0 -105
- package/dist/core/silgi.d.mts +0 -19
- package/dist/core/silgi.mjs +0 -141
- package/dist/core/silgiApp.d.mts +0 -9
- package/dist/core/silgiApp.mjs +0 -23
- package/dist/core/unctx.d.mts +0 -21
- package/dist/core/unctx.mjs +0 -35
- package/dist/core/utils/event-stream.d.mts +0 -53
- package/dist/core/utils/event-stream.mjs +0 -38
- package/dist/core/utils/event.d.mts +0 -8
- package/dist/core/utils/event.mjs +0 -12
- package/dist/core/utils/internal/event-stream.d.mts +0 -45
- package/dist/core/utils/internal/event-stream.mjs +0 -137
- package/dist/core/utils/internal/obj.mjs +0 -9
- package/dist/core/utils/internal/object.mjs +0 -29
- package/dist/core/utils/internal/query.mjs +0 -73
- package/dist/core/utils/internal/req.mjs +0 -35
- package/dist/core/utils/merge.d.mts +0 -14
- package/dist/core/utils/merge.mjs +0 -27
- package/dist/core/utils/middleware.d.mts +0 -14
- package/dist/core/utils/middleware.mjs +0 -12
- package/dist/core/utils/request.mjs +0 -35
- package/dist/core/utils/resolver.d.mts +0 -7
- package/dist/core/utils/resolver.mjs +0 -29
- package/dist/core/utils/runtime.d.mts +0 -7
- package/dist/core/utils/runtime.mjs +0 -20
- package/dist/core/utils/sanitize.mjs +0 -22
- package/dist/core/utils/schema.d.mts +0 -34
- package/dist/core/utils/schema.mjs +0 -33
- package/dist/core/utils/service.d.mts +0 -13
- package/dist/core/utils/service.mjs +0 -19
- package/dist/core/utils/shared.d.mts +0 -6
- package/dist/core/utils/shared.mjs +0 -7
- package/dist/core/utils/storage.d.mts +0 -24
- package/dist/core/utils/storage.mjs +0 -54
- package/dist/kit/add/add-commands.d.mts +0 -6
- package/dist/kit/add/add-commands.mjs +0 -12
- package/dist/kit/add/add-core-file.d.mts +0 -9
- package/dist/kit/add/add-core-file.mjs +0 -11
- package/dist/kit/add/add-imports.d.mts +0 -14
- package/dist/kit/add/add-imports.mjs +0 -56
- package/dist/kit/add/add-npm.d.mts +0 -14
- package/dist/kit/add/add-npm.mjs +0 -23
- package/dist/kit/define.d.mts +0 -28
- package/dist/kit/define.mjs +0 -25
- package/dist/kit/errors.d.mts +0 -6
- package/dist/kit/errors.mjs +0 -11
- package/dist/kit/esm.d.mts +0 -11
- package/dist/kit/esm.mjs +0 -21
- package/dist/kit/fs.d.mts +0 -4
- package/dist/kit/fs.mjs +0 -13
- package/dist/kit/function-utils.d.mts +0 -27
- package/dist/kit/function-utils.mjs +0 -75
- package/dist/kit/gen.d.mts +0 -5
- package/dist/kit/gen.mjs +0 -26
- package/dist/kit/hash.d.mts +0 -4
- package/dist/kit/hash.mjs +0 -10
- package/dist/kit/index.d.mts +0 -22
- package/dist/kit/index.mjs +0 -23
- package/dist/kit/isFramework.d.mts +0 -6
- package/dist/kit/isFramework.mjs +0 -21
- package/dist/kit/logger.d.mts +0 -6
- package/dist/kit/logger.mjs +0 -10
- package/dist/kit/migration.d.mts +0 -113
- package/dist/kit/migration.mjs +0 -301
- package/dist/kit/module.d.mts +0 -14
- package/dist/kit/module.mjs +0 -53
- package/dist/kit/path.d.mts +0 -7
- package/dist/kit/path.mjs +0 -26
- package/dist/kit/preset.d.mts +0 -8
- package/dist/kit/preset.mjs +0 -11
- package/dist/kit/resolve.d.mts +0 -37
- package/dist/kit/resolve.mjs +0 -82
- package/dist/kit/template.d.mts +0 -19
- package/dist/kit/template.mjs +0 -91
- package/dist/kit/useRequest.d.mts +0 -19
- package/dist/kit/useRequest.mjs +0 -63
- package/dist/kit/utils.d.mts +0 -34
- package/dist/kit/utils.mjs +0 -91
- package/dist/package.mjs +0 -176
- package/dist/presets/_all.gen.d.mts +0 -6
- package/dist/presets/_all.gen.mjs +0 -18
- package/dist/presets/_resolve.d.mts +0 -12
- package/dist/presets/_resolve.mjs +0 -57
- package/dist/presets/_types.gen.d.mts +0 -8
- package/dist/presets/_types.gen.mjs +0 -5
- package/dist/presets/h3/preset.d.mts +0 -6
- package/dist/presets/h3/preset.mjs +0 -35
- package/dist/presets/hono/preset.d.mts +0 -6
- package/dist/presets/hono/preset.mjs +0 -30
- package/dist/presets/index.d.mts +0 -3
- package/dist/presets/index.mjs +0 -3
- package/dist/presets/nitro/preset.d.mts +0 -6
- package/dist/presets/nitro/preset.mjs +0 -37
- package/dist/presets/npmpackage/preset.d.mts +0 -6
- package/dist/presets/npmpackage/preset.mjs +0 -29
- package/dist/presets/nuxt/preset.d.mts +0 -6
- package/dist/presets/nuxt/preset.mjs +0 -41
- package/dist/runtime/index.d.mts +0 -4
- package/dist/runtime/index.mjs +0 -5
- package/dist/runtime/internal/config.d.mts +0 -11
- package/dist/runtime/internal/config.mjs +0 -97
- package/dist/runtime/internal/debug.d.mts +0 -6
- package/dist/runtime/internal/debug.mjs +0 -11
- package/dist/runtime/internal/defu.d.mts +0 -4
- package/dist/runtime/internal/defu.mjs +0 -9
- package/dist/runtime/internal/index.d.mts +0 -7
- package/dist/runtime/internal/index.mjs +0 -8
- package/dist/runtime/internal/nitro.d.mts +0 -6
- package/dist/runtime/internal/nitro.mjs +0 -36
- package/dist/runtime/internal/nuxt.d.mts +0 -12
- package/dist/runtime/internal/nuxt.mjs +0 -16
- package/dist/runtime/internal/ofetch.d.mts +0 -8
- package/dist/runtime/internal/ofetch.mjs +0 -39
- package/dist/runtime/internal/plugin.d.mts +0 -7
- package/dist/runtime/internal/plugin.mjs +0 -8
- package/dist/types/cliConfig.d.mts +0 -288
- package/dist/types/cliConfig.mjs +0 -0
- package/dist/types/cliHooks.d.mts +0 -142
- package/dist/types/cliHooks.mjs +0 -0
- package/dist/types/compatibility.d.mts +0 -13
- package/dist/types/compatibility.mjs +0 -0
- package/dist/types/config.d.mts +0 -46
- package/dist/types/config.mjs +0 -0
- package/dist/types/dotenv.d.mts +0 -29
- package/dist/types/dotenv.mjs +0 -0
- package/dist/types/event.d.mts +0 -63
- package/dist/types/event.mjs +0 -0
- package/dist/types/global.d.mts +0 -24
- package/dist/types/global.mjs +0 -0
- package/dist/types/helper.d.mts +0 -25
- package/dist/types/helper.mjs +0 -0
- package/dist/types/hooks.d.mts +0 -37
- package/dist/types/hooks.mjs +0 -0
- package/dist/types/index.d.mts +0 -26
- package/dist/types/index.mjs +0 -0
- package/dist/types/kits.d.mts +0 -32
- package/dist/types/kits.mjs +0 -0
- package/dist/types/middleware.d.mts +0 -31
- package/dist/types/middleware.mjs +0 -0
- package/dist/types/module.d.mts +0 -102
- package/dist/types/module.mjs +0 -0
- package/dist/types/preset.d.mts +0 -20
- package/dist/types/preset.mjs +0 -0
- package/dist/types/route.d.mts +0 -59
- package/dist/types/route.mjs +0 -0
- package/dist/types/runtime/index.d.mts +0 -5
- package/dist/types/runtime/index.mjs +0 -0
- package/dist/types/runtime/nuxt.d.mts +0 -13
- package/dist/types/runtime/nuxt.mjs +0 -0
- package/dist/types/runtime/ofetch.d.mts +0 -14
- package/dist/types/runtime/ofetch.mjs +0 -0
- package/dist/types/runtime/plugin.d.mts +0 -8
- package/dist/types/runtime/plugin.mjs +0 -0
- package/dist/types/runtime/silgi.d.mts +0 -11
- package/dist/types/runtime/silgi.mjs +0 -0
- package/dist/types/schema.d.mts +0 -86
- package/dist/types/schema.mjs +0 -0
- package/dist/types/service.d.mts +0 -102
- package/dist/types/service.mjs +0 -0
- package/dist/types/shared.d.mts +0 -19
- package/dist/types/shared.mjs +0 -0
- package/dist/types/silgi.d.mts +0 -71
- package/dist/types/silgi.mjs +0 -0
- package/dist/types/silgiCLI.d.mts +0 -118
- package/dist/types/silgiCLI.mjs +0 -0
- package/dist/types/standard-schema.d.mts +0 -61
- package/dist/types/standard-schema.mjs +0 -0
- package/dist/types/storage.d.mts +0 -30
- package/dist/types/storage.mjs +0 -0
- package/dist/types/tree-kill.d.mts +0 -18
- package/dist/types/tree-kill.mjs +0 -0
- package/lib/config.d.mts +0 -7
- package/lib/config.mjs +0 -5
- package/lib/meta.d.mts +0 -4
- package/lib/meta.mjs +0 -6
- package/lib/runtime-meta.d.mts +0 -4
- package/lib/runtime-meta.mjs +0 -32
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { __require } from "../../_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
import { SilgiError, toSilgiError } from "../../core/error.mjs";
|
|
3
|
+
import { compileProcedure } from "../../compile.mjs";
|
|
4
|
+
//#region src/integrations/react/index.ts
|
|
5
|
+
/**
|
|
6
|
+
* React Server Actions — v2 integration.
|
|
7
|
+
*
|
|
8
|
+
* Creates type-safe server actions from v2 procedures.
|
|
9
|
+
* Returns [error, data] tuples instead of throwing.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Create a server action from a v2 ProcedureDef.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* // app/actions.ts
|
|
17
|
+
* "use server"
|
|
18
|
+
* import { createAction } from "silgi/react"
|
|
19
|
+
*
|
|
20
|
+
* export const createUser = createAction(appRouter.users.create)
|
|
21
|
+
*
|
|
22
|
+
* // app/page.tsx
|
|
23
|
+
* const [error, user] = await createUser({ name: "Alice" })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
function createAction(procedure) {
|
|
27
|
+
const handler = compileProcedure(procedure);
|
|
28
|
+
return async (input) => {
|
|
29
|
+
try {
|
|
30
|
+
const result = handler(Object.create(null), input, new AbortController().signal);
|
|
31
|
+
return [null, result instanceof Promise ? await result : result];
|
|
32
|
+
} catch (error) {
|
|
33
|
+
if (isFrameworkError(error)) throw error;
|
|
34
|
+
return [(error instanceof SilgiError ? error : toSilgiError(error)).toJSON(), void 0];
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a FormData-accepting server action from a v2 procedure.
|
|
40
|
+
*/
|
|
41
|
+
function createFormAction(procedure, options) {
|
|
42
|
+
const action = createAction(procedure);
|
|
43
|
+
const parse = options?.parseFormData ?? defaultFormDataParser;
|
|
44
|
+
return (formData) => action(parse(formData));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create actions for all procedures in a router.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const actions = createActions(appRouter)
|
|
52
|
+
* const [error, users] = await actions.users.list({ limit: 10 })
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
function createActions(router) {
|
|
56
|
+
const result = {};
|
|
57
|
+
for (const [key, value] of Object.entries(router)) if (isProcedureDef(value)) result[key] = createAction(value);
|
|
58
|
+
else if (typeof value === "object" && value !== null) result[key] = createActions(value);
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* React hook for calling server actions with loading/error state.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```tsx
|
|
66
|
+
* const { execute, data, error, isPending } = useServerAction(createUser)
|
|
67
|
+
*
|
|
68
|
+
* <button onClick={() => execute({ name: "Alice" })} disabled={isPending}>
|
|
69
|
+
* {isPending ? "Creating..." : "Create User"}
|
|
70
|
+
* </button>
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
function useServerAction(action) {
|
|
74
|
+
const { useState, useCallback, useRef } = __require("react");
|
|
75
|
+
const [data, setData] = useState(void 0);
|
|
76
|
+
const [error, setError] = useState(null);
|
|
77
|
+
const [isPending, setIsPending] = useState(false);
|
|
78
|
+
const mountedRef = useRef(true);
|
|
79
|
+
const { useEffect } = __require("react");
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
mountedRef.current = true;
|
|
82
|
+
return () => {
|
|
83
|
+
mountedRef.current = false;
|
|
84
|
+
};
|
|
85
|
+
}, []);
|
|
86
|
+
return {
|
|
87
|
+
execute: useCallback(async (input) => {
|
|
88
|
+
setIsPending(true);
|
|
89
|
+
setError(null);
|
|
90
|
+
try {
|
|
91
|
+
const [err, result] = await action(input);
|
|
92
|
+
if (!mountedRef.current) return;
|
|
93
|
+
if (err) {
|
|
94
|
+
setError(err);
|
|
95
|
+
setData(void 0);
|
|
96
|
+
} else {
|
|
97
|
+
setData(result);
|
|
98
|
+
setError(null);
|
|
99
|
+
}
|
|
100
|
+
return [err, result];
|
|
101
|
+
} finally {
|
|
102
|
+
if (mountedRef.current) setIsPending(false);
|
|
103
|
+
}
|
|
104
|
+
}, [action]),
|
|
105
|
+
data,
|
|
106
|
+
error,
|
|
107
|
+
isPending,
|
|
108
|
+
reset: useCallback(() => {
|
|
109
|
+
setData(void 0);
|
|
110
|
+
setError(null);
|
|
111
|
+
setIsPending(false);
|
|
112
|
+
}, [])
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* React hook for server actions with optimistic UI updates.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```tsx
|
|
120
|
+
* const { execute, data, optimisticData, isPending } = useOptimisticServerAction(updateUser, {
|
|
121
|
+
* optimistic: (input) => ({ ...currentUser, ...input }),
|
|
122
|
+
* })
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
function useOptimisticServerAction(action, options) {
|
|
126
|
+
const { useState, useCallback, useRef } = __require("react");
|
|
127
|
+
const { useEffect } = __require("react");
|
|
128
|
+
const [data, setData] = useState(void 0);
|
|
129
|
+
const [optimisticData, setOptimisticData] = useState(void 0);
|
|
130
|
+
const [error, setError] = useState(null);
|
|
131
|
+
const [isPending, setIsPending] = useState(false);
|
|
132
|
+
const mountedRef = useRef(true);
|
|
133
|
+
useEffect(() => {
|
|
134
|
+
mountedRef.current = true;
|
|
135
|
+
return () => {
|
|
136
|
+
mountedRef.current = false;
|
|
137
|
+
};
|
|
138
|
+
}, []);
|
|
139
|
+
return {
|
|
140
|
+
execute: useCallback(async (input) => {
|
|
141
|
+
setIsPending(true);
|
|
142
|
+
setError(null);
|
|
143
|
+
setOptimisticData(options.optimistic(input));
|
|
144
|
+
try {
|
|
145
|
+
const [err, result] = await action(input);
|
|
146
|
+
if (!mountedRef.current) return;
|
|
147
|
+
if (err) {
|
|
148
|
+
setError(err);
|
|
149
|
+
setOptimisticData(void 0);
|
|
150
|
+
} else {
|
|
151
|
+
setData(result);
|
|
152
|
+
setOptimisticData(void 0);
|
|
153
|
+
}
|
|
154
|
+
return [err, result];
|
|
155
|
+
} catch (e) {
|
|
156
|
+
if (mountedRef.current) setOptimisticData(void 0);
|
|
157
|
+
throw e;
|
|
158
|
+
} finally {
|
|
159
|
+
if (mountedRef.current) setIsPending(false);
|
|
160
|
+
}
|
|
161
|
+
}, [action, options.optimistic]),
|
|
162
|
+
data,
|
|
163
|
+
optimisticData,
|
|
164
|
+
displayData: optimisticData ?? data,
|
|
165
|
+
error,
|
|
166
|
+
isPending
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function isProcedureDef(v) {
|
|
170
|
+
return typeof v === "object" && v !== null && "type" in v && "resolve" in v;
|
|
171
|
+
}
|
|
172
|
+
function isFrameworkError(error) {
|
|
173
|
+
if (typeof error !== "object" || error === null) return false;
|
|
174
|
+
if (typeof error.digest === "string" && error.digest.startsWith("NEXT_")) return true;
|
|
175
|
+
if (error.isNotFound === true) return true;
|
|
176
|
+
if (error instanceof Response) return true;
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
function defaultFormDataParser(formData) {
|
|
180
|
+
const result = {};
|
|
181
|
+
for (const [key, value] of formData.entries()) setNestedValue(result, key, typeof value === "object" && "size" in value && value.size === 0 ? void 0 : value);
|
|
182
|
+
return result;
|
|
183
|
+
}
|
|
184
|
+
function setNestedValue(obj, path, value) {
|
|
185
|
+
const keys = path.split("[").map((k) => k.replace("]", ""));
|
|
186
|
+
let current = obj;
|
|
187
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
188
|
+
const k = keys[i];
|
|
189
|
+
const next = keys[i + 1];
|
|
190
|
+
if (!(k in current)) current[k] = /^\d+$/.test(next) ? [] : {};
|
|
191
|
+
current = current[k];
|
|
192
|
+
}
|
|
193
|
+
current[keys[keys.length - 1]] = value;
|
|
194
|
+
}
|
|
195
|
+
//#endregion
|
|
196
|
+
export { createAction, createActions, createFormAction, useOptimisticServerAction, useServerAction };
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { Client, NestedClient } from "../../client/types.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/tanstack-query/index.d.ts
|
|
4
|
+
type OperationType = 'query' | 'infinite' | 'mutation';
|
|
5
|
+
type OperationKey = [path: readonly string[], options: {
|
|
6
|
+
type?: OperationType;
|
|
7
|
+
input?: unknown;
|
|
8
|
+
}];
|
|
9
|
+
declare function generateKey(path: readonly string[], options?: {
|
|
10
|
+
type?: OperationType;
|
|
11
|
+
input?: unknown;
|
|
12
|
+
}): OperationKey;
|
|
13
|
+
interface QueryOptionsIn<TInput, TOutput, _TError> {
|
|
14
|
+
input: TInput;
|
|
15
|
+
queryKey?: unknown[];
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
staleTime?: number;
|
|
18
|
+
gcTime?: number;
|
|
19
|
+
refetchInterval?: number | false;
|
|
20
|
+
retry?: boolean | number;
|
|
21
|
+
select?: (data: TOutput) => unknown;
|
|
22
|
+
}
|
|
23
|
+
interface MutationOptionsIn<TInput, TOutput, TError> {
|
|
24
|
+
onSuccess?: (data: TOutput, input: TInput) => void;
|
|
25
|
+
onError?: (error: TError, input: TInput) => void;
|
|
26
|
+
onSettled?: (data: TOutput | undefined, error: TError | null, input: TInput) => void;
|
|
27
|
+
retry?: boolean | number;
|
|
28
|
+
}
|
|
29
|
+
/** Sentinel value to disable a query in a type-safe way. */
|
|
30
|
+
declare const skipToken: unique symbol;
|
|
31
|
+
type SkipToken = typeof skipToken;
|
|
32
|
+
interface InfiniteQueryOptionsIn<TInput, TOutput, _TError, TPageParam> {
|
|
33
|
+
input: (pageParam: TPageParam) => TInput;
|
|
34
|
+
initialPageParam: TPageParam;
|
|
35
|
+
getNextPageParam: (lastPage: TOutput, allPages: TOutput[], lastPageParam: TPageParam) => TPageParam | undefined;
|
|
36
|
+
queryKey?: unknown[];
|
|
37
|
+
enabled?: boolean;
|
|
38
|
+
staleTime?: number;
|
|
39
|
+
gcTime?: number;
|
|
40
|
+
}
|
|
41
|
+
interface ProcedureQueryUtils<TInput, TOutput, TError> {
|
|
42
|
+
/** Direct call to the procedure */
|
|
43
|
+
call: (input: TInput, options?: {
|
|
44
|
+
signal?: AbortSignal;
|
|
45
|
+
}) => Promise<TOutput>;
|
|
46
|
+
/** Generate a query key for this procedure */
|
|
47
|
+
queryKey: (input?: TInput) => OperationKey;
|
|
48
|
+
/** Generate full query options for useQuery. Pass `skipToken` as input to disable. */
|
|
49
|
+
queryOptions: (options: QueryOptionsIn<TInput | SkipToken, TOutput, TError>) => {
|
|
50
|
+
queryKey: OperationKey;
|
|
51
|
+
queryFn: (ctx: {
|
|
52
|
+
signal: AbortSignal;
|
|
53
|
+
}) => Promise<TOutput>;
|
|
54
|
+
enabled?: boolean;
|
|
55
|
+
staleTime?: number;
|
|
56
|
+
gcTime?: number;
|
|
57
|
+
refetchInterval?: number | false;
|
|
58
|
+
retry?: boolean | number;
|
|
59
|
+
select?: (data: TOutput) => unknown;
|
|
60
|
+
};
|
|
61
|
+
/** Generate infinite query options for useInfiniteQuery */
|
|
62
|
+
infiniteOptions: <TPageParam = number>(options: InfiniteQueryOptionsIn<TInput, TOutput, TError, TPageParam>) => {
|
|
63
|
+
queryKey: OperationKey;
|
|
64
|
+
queryFn: (ctx: {
|
|
65
|
+
signal: AbortSignal;
|
|
66
|
+
pageParam: TPageParam;
|
|
67
|
+
}) => Promise<TOutput>;
|
|
68
|
+
initialPageParam: TPageParam;
|
|
69
|
+
getNextPageParam: (lastPage: TOutput, allPages: TOutput[], lastPageParam: TPageParam) => TPageParam | undefined;
|
|
70
|
+
enabled?: boolean;
|
|
71
|
+
staleTime?: number;
|
|
72
|
+
gcTime?: number;
|
|
73
|
+
};
|
|
74
|
+
/** Generate streamed query options — data appends to array as events arrive */
|
|
75
|
+
streamedOptions: (options: QueryOptionsIn<TInput, TOutput[], TError>) => {
|
|
76
|
+
queryKey: OperationKey;
|
|
77
|
+
queryFn: (ctx: {
|
|
78
|
+
signal: AbortSignal;
|
|
79
|
+
}) => Promise<TOutput[]>;
|
|
80
|
+
enabled?: boolean;
|
|
81
|
+
staleTime?: number;
|
|
82
|
+
gcTime?: number;
|
|
83
|
+
};
|
|
84
|
+
/** Generate live query options — latest event replaces previous data */
|
|
85
|
+
liveOptions: (options: QueryOptionsIn<TInput, TOutput, TError>) => {
|
|
86
|
+
queryKey: OperationKey;
|
|
87
|
+
queryFn: (ctx: {
|
|
88
|
+
signal: AbortSignal;
|
|
89
|
+
}) => Promise<TOutput>;
|
|
90
|
+
refetchInterval: number;
|
|
91
|
+
enabled?: boolean;
|
|
92
|
+
staleTime?: number;
|
|
93
|
+
gcTime?: number;
|
|
94
|
+
};
|
|
95
|
+
/** Generate a mutation key */
|
|
96
|
+
mutationKey: () => OperationKey;
|
|
97
|
+
/** Generate full mutation options for useMutation */
|
|
98
|
+
mutationOptions: (options?: MutationOptionsIn<TInput, TOutput, TError>) => {
|
|
99
|
+
mutationKey: OperationKey;
|
|
100
|
+
mutationFn: (input: TInput) => Promise<TOutput>;
|
|
101
|
+
onSuccess?: (data: TOutput, input: TInput) => void;
|
|
102
|
+
onError?: (error: TError, input: TInput) => void;
|
|
103
|
+
onSettled?: (data: TOutput | undefined, error: TError | null, input: TInput) => void;
|
|
104
|
+
retry?: boolean | number;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
interface GeneralUtils {
|
|
108
|
+
/** Generate a key prefix for bulk invalidation */
|
|
109
|
+
key: (input?: unknown) => OperationKey;
|
|
110
|
+
}
|
|
111
|
+
type QueryUtils<T extends NestedClient> = T extends Client<any, infer TInput, infer TOutput, infer TError> ? ProcedureQueryUtils<TInput, TOutput, TError> & GeneralUtils : T extends Record<string, NestedClient> ? { [K in keyof T]: QueryUtils<T[K]> } & GeneralUtils : GeneralUtils;
|
|
112
|
+
/**
|
|
113
|
+
* Create TanStack Query utilities from a Silgi client.
|
|
114
|
+
*
|
|
115
|
+
* Returns a recursive proxy that mirrors the client structure,
|
|
116
|
+
* with `.queryOptions()`, `.mutationOptions()`, `.queryKey()` at each level.
|
|
117
|
+
*/
|
|
118
|
+
declare function createQueryUtils<T extends NestedClient>(client: T, path?: readonly string[]): QueryUtils<T>;
|
|
119
|
+
//#endregion
|
|
120
|
+
export { GeneralUtils, InfiniteQueryOptionsIn, MutationOptionsIn, OperationKey, OperationType, ProcedureQueryUtils, QueryOptionsIn, QueryUtils, SkipToken, createQueryUtils, generateKey, skipToken };
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
//#region src/integrations/tanstack-query/index.ts
|
|
2
|
+
function generateKey(path, options) {
|
|
3
|
+
const keyOptions = {};
|
|
4
|
+
if (options?.type) keyOptions.type = options.type;
|
|
5
|
+
if (options?.input !== void 0) keyOptions.input = options.input;
|
|
6
|
+
return [path, keyOptions];
|
|
7
|
+
}
|
|
8
|
+
/** Sentinel value to disable a query in a type-safe way. */
|
|
9
|
+
const skipToken = Symbol.for("silgi.skipToken");
|
|
10
|
+
function createProcedureUtils(client, path) {
|
|
11
|
+
return {
|
|
12
|
+
call: (input, options) => client(input, options),
|
|
13
|
+
queryKey: (input) => generateKey(path, {
|
|
14
|
+
type: "query",
|
|
15
|
+
input
|
|
16
|
+
}),
|
|
17
|
+
queryOptions: (options) => {
|
|
18
|
+
const isSkipped = options.input === skipToken;
|
|
19
|
+
return {
|
|
20
|
+
queryKey: options.queryKey ? options.queryKey : generateKey(path, {
|
|
21
|
+
type: "query",
|
|
22
|
+
input: isSkipped ? void 0 : options.input
|
|
23
|
+
}),
|
|
24
|
+
queryFn: ({ signal }) => client(options.input, { signal }),
|
|
25
|
+
...isSkipped && { enabled: false },
|
|
26
|
+
...options.enabled !== void 0 && { enabled: options.enabled },
|
|
27
|
+
...options.staleTime !== void 0 && { staleTime: options.staleTime },
|
|
28
|
+
...options.gcTime !== void 0 && { gcTime: options.gcTime },
|
|
29
|
+
...options.refetchInterval !== void 0 && { refetchInterval: options.refetchInterval },
|
|
30
|
+
...options.retry !== void 0 && { retry: options.retry },
|
|
31
|
+
...options.select !== void 0 && { select: options.select }
|
|
32
|
+
};
|
|
33
|
+
},
|
|
34
|
+
infiniteOptions: (options) => ({
|
|
35
|
+
queryKey: options.queryKey ? options.queryKey : generateKey(path, { type: "infinite" }),
|
|
36
|
+
queryFn: ({ signal, pageParam }) => client(options.input(pageParam), { signal }),
|
|
37
|
+
initialPageParam: options.initialPageParam,
|
|
38
|
+
getNextPageParam: options.getNextPageParam,
|
|
39
|
+
...options.enabled !== void 0 && { enabled: options.enabled },
|
|
40
|
+
...options.staleTime !== void 0 && { staleTime: options.staleTime },
|
|
41
|
+
...options.gcTime !== void 0 && { gcTime: options.gcTime }
|
|
42
|
+
}),
|
|
43
|
+
streamedOptions: (options) => ({
|
|
44
|
+
queryKey: options.queryKey ? options.queryKey : generateKey(path, {
|
|
45
|
+
type: "query",
|
|
46
|
+
input: options.input
|
|
47
|
+
}),
|
|
48
|
+
queryFn: async ({ signal }) => {
|
|
49
|
+
const result = await client(options.input, { signal });
|
|
50
|
+
if (result && typeof result === "object" && Symbol.asyncIterator in result) {
|
|
51
|
+
const items = [];
|
|
52
|
+
for await (const item of result) items.push(item);
|
|
53
|
+
return items;
|
|
54
|
+
}
|
|
55
|
+
return Array.isArray(result) ? result : [result];
|
|
56
|
+
},
|
|
57
|
+
...options.enabled !== void 0 && { enabled: options.enabled },
|
|
58
|
+
...options.staleTime !== void 0 && { staleTime: options.staleTime },
|
|
59
|
+
...options.gcTime !== void 0 && { gcTime: options.gcTime }
|
|
60
|
+
}),
|
|
61
|
+
liveOptions: (options) => ({
|
|
62
|
+
queryKey: options.queryKey ? options.queryKey : generateKey(path, {
|
|
63
|
+
type: "query",
|
|
64
|
+
input: options.input
|
|
65
|
+
}),
|
|
66
|
+
queryFn: ({ signal }) => client(options.input, { signal }),
|
|
67
|
+
refetchInterval: options.refetchInterval ?? 1e3,
|
|
68
|
+
...options.enabled !== void 0 && { enabled: options.enabled },
|
|
69
|
+
...options.staleTime !== void 0 && { staleTime: options.staleTime },
|
|
70
|
+
...options.gcTime !== void 0 && { gcTime: options.gcTime }
|
|
71
|
+
}),
|
|
72
|
+
mutationKey: () => generateKey(path, { type: "mutation" }),
|
|
73
|
+
mutationOptions: (options) => ({
|
|
74
|
+
mutationKey: generateKey(path, { type: "mutation" }),
|
|
75
|
+
mutationFn: (input) => client(input),
|
|
76
|
+
...options
|
|
77
|
+
})
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create TanStack Query utilities from a Silgi client.
|
|
82
|
+
*
|
|
83
|
+
* Returns a recursive proxy that mirrors the client structure,
|
|
84
|
+
* with `.queryOptions()`, `.mutationOptions()`, `.queryKey()` at each level.
|
|
85
|
+
*/
|
|
86
|
+
function createQueryUtils(client, path = []) {
|
|
87
|
+
const generalUtils = { key: (input) => generateKey(path, input !== void 0 ? { input } : void 0) };
|
|
88
|
+
const procedureUtils = typeof client === "function" ? createProcedureUtils(client, path) : {};
|
|
89
|
+
return new Proxy({}, { get(_target, prop) {
|
|
90
|
+
if (prop === "then") return void 0;
|
|
91
|
+
if (prop === "key") return generalUtils.key;
|
|
92
|
+
if (typeof prop === "string" && prop in procedureUtils) return procedureUtils[prop];
|
|
93
|
+
if (typeof prop === "string") {
|
|
94
|
+
const child = client[prop];
|
|
95
|
+
if (child) return createQueryUtils(child, [...path, prop]);
|
|
96
|
+
}
|
|
97
|
+
} });
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { createQueryUtils, generateKey, skipToken };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//#region src/integrations/tanstack-query/ssr.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* SSR Hydration for TanStack Query — prevent refetch waterfalls.
|
|
4
|
+
*
|
|
5
|
+
* Prefetch queries on the server and dehydrate them for the client.
|
|
6
|
+
* The client hydrates without refetching — zero waterfall.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // Server (SSR)
|
|
11
|
+
* import { prefetchQueries, dehydrate } from "silgi/tanstack-query/ssr"
|
|
12
|
+
*
|
|
13
|
+
* const queryClient = new QueryClient()
|
|
14
|
+
* await prefetchQueries(queryClient, utils, [
|
|
15
|
+
* utils.users.list.queryOptions({ input: { limit: 10 } }),
|
|
16
|
+
* utils.health.queryOptions({ input: undefined }),
|
|
17
|
+
* ])
|
|
18
|
+
* const dehydratedState = dehydrate(queryClient)
|
|
19
|
+
*
|
|
20
|
+
* // Client
|
|
21
|
+
* <HydrationBoundary state={dehydratedState}>
|
|
22
|
+
* <App />
|
|
23
|
+
* </HydrationBoundary>
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Prefetch multiple queries on the server.
|
|
28
|
+
* Pass the same options you'd use with `useQuery`.
|
|
29
|
+
*/
|
|
30
|
+
declare function prefetchQueries(queryClient: any, ...optionsArray: Array<{
|
|
31
|
+
queryKey: unknown;
|
|
32
|
+
queryFn: Function;
|
|
33
|
+
} | Array<{
|
|
34
|
+
queryKey: unknown;
|
|
35
|
+
queryFn: Function;
|
|
36
|
+
}>>): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Dehydrate the query client for SSR transfer.
|
|
39
|
+
* Uses TanStack Query's standalone dehydrate() function.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { dehydrate } from "@tanstack/react-query"
|
|
44
|
+
* import { dehydrate as silgiDehydrate } from "silgi/tanstack-query/ssr"
|
|
45
|
+
*
|
|
46
|
+
* // Preferred: pass TanStack Query's dehydrate function
|
|
47
|
+
* const state = silgiDehydrate(queryClient)
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
declare function dehydrate(queryClient: any): unknown;
|
|
51
|
+
/**
|
|
52
|
+
* Create a custom serializer for SSR hydration that handles
|
|
53
|
+
* Silgi-specific types (Date, Map, etc.) during dehydration.
|
|
54
|
+
*/
|
|
55
|
+
declare function createSSRSerializer(): {
|
|
56
|
+
serialize: (value: unknown) => string;
|
|
57
|
+
deserialize: (text: string) => unknown;
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
export { createSSRSerializer, dehydrate, prefetchQueries };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { __require } from "../../_virtual/_rolldown/runtime.mjs";
|
|
2
|
+
//#region src/integrations/tanstack-query/ssr.ts
|
|
3
|
+
/**
|
|
4
|
+
* SSR Hydration for TanStack Query — prevent refetch waterfalls.
|
|
5
|
+
*
|
|
6
|
+
* Prefetch queries on the server and dehydrate them for the client.
|
|
7
|
+
* The client hydrates without refetching — zero waterfall.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* // Server (SSR)
|
|
12
|
+
* import { prefetchQueries, dehydrate } from "silgi/tanstack-query/ssr"
|
|
13
|
+
*
|
|
14
|
+
* const queryClient = new QueryClient()
|
|
15
|
+
* await prefetchQueries(queryClient, utils, [
|
|
16
|
+
* utils.users.list.queryOptions({ input: { limit: 10 } }),
|
|
17
|
+
* utils.health.queryOptions({ input: undefined }),
|
|
18
|
+
* ])
|
|
19
|
+
* const dehydratedState = dehydrate(queryClient)
|
|
20
|
+
*
|
|
21
|
+
* // Client
|
|
22
|
+
* <HydrationBoundary state={dehydratedState}>
|
|
23
|
+
* <App />
|
|
24
|
+
* </HydrationBoundary>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Prefetch multiple queries on the server.
|
|
29
|
+
* Pass the same options you'd use with `useQuery`.
|
|
30
|
+
*/
|
|
31
|
+
async function prefetchQueries(queryClient, ...optionsArray) {
|
|
32
|
+
const flat = optionsArray.flat();
|
|
33
|
+
await Promise.all(flat.map((opts) => queryClient.prefetchQuery(opts)));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Dehydrate the query client for SSR transfer.
|
|
37
|
+
* Uses TanStack Query's standalone dehydrate() function.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { dehydrate } from "@tanstack/react-query"
|
|
42
|
+
* import { dehydrate as silgiDehydrate } from "silgi/tanstack-query/ssr"
|
|
43
|
+
*
|
|
44
|
+
* // Preferred: pass TanStack Query's dehydrate function
|
|
45
|
+
* const state = silgiDehydrate(queryClient)
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
function dehydrate(queryClient) {
|
|
49
|
+
try {
|
|
50
|
+
const tq = __require("@tanstack/react-query");
|
|
51
|
+
if (typeof tq.dehydrate === "function") return tq.dehydrate(queryClient);
|
|
52
|
+
} catch {}
|
|
53
|
+
const cache = queryClient.getQueryCache?.();
|
|
54
|
+
if (!cache) return {};
|
|
55
|
+
return { queries: cache.getAll().map((query) => ({
|
|
56
|
+
queryKey: query.queryKey,
|
|
57
|
+
state: query.state
|
|
58
|
+
})) };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a custom serializer for SSR hydration that handles
|
|
62
|
+
* Silgi-specific types (Date, Map, etc.) during dehydration.
|
|
63
|
+
*/
|
|
64
|
+
function createSSRSerializer() {
|
|
65
|
+
return {
|
|
66
|
+
serialize: (value) => {
|
|
67
|
+
return JSON.stringify(value, function(_key, val) {
|
|
68
|
+
const original = this[_key];
|
|
69
|
+
if (original instanceof Date) return {
|
|
70
|
+
__type: "Date",
|
|
71
|
+
value: original.toISOString()
|
|
72
|
+
};
|
|
73
|
+
if (original instanceof Map) return {
|
|
74
|
+
__type: "Map",
|
|
75
|
+
value: Array.from(original.entries())
|
|
76
|
+
};
|
|
77
|
+
if (original instanceof Set) return {
|
|
78
|
+
__type: "Set",
|
|
79
|
+
value: Array.from(original)
|
|
80
|
+
};
|
|
81
|
+
if (typeof original === "bigint") return {
|
|
82
|
+
__type: "BigInt",
|
|
83
|
+
value: original.toString()
|
|
84
|
+
};
|
|
85
|
+
return val;
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
deserialize: (text) => {
|
|
89
|
+
return JSON.parse(text, (_key, val) => {
|
|
90
|
+
if (val && typeof val === "object" && "__type" in val) switch (val.__type) {
|
|
91
|
+
case "Date": return new Date(val.value);
|
|
92
|
+
case "Map": return new Map(val.value);
|
|
93
|
+
case "Set": return new Set(val.value);
|
|
94
|
+
case "BigInt": return BigInt(val.value);
|
|
95
|
+
}
|
|
96
|
+
return val;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//#endregion
|
|
102
|
+
export { createSSRSerializer, dehydrate, prefetchQueries };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { AnySchema } from "../../core/schema.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/zod/converter.d.ts
|
|
4
|
+
type JSONSchema = {
|
|
5
|
+
type?: string | string[];
|
|
6
|
+
format?: string;
|
|
7
|
+
properties?: Record<string, JSONSchema>;
|
|
8
|
+
required?: string[];
|
|
9
|
+
items?: JSONSchema;
|
|
10
|
+
prefixItems?: JSONSchema[];
|
|
11
|
+
anyOf?: JSONSchema[];
|
|
12
|
+
oneOf?: JSONSchema[];
|
|
13
|
+
allOf?: JSONSchema[];
|
|
14
|
+
not?: JSONSchema;
|
|
15
|
+
enum?: unknown[];
|
|
16
|
+
const?: unknown;
|
|
17
|
+
$ref?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
title?: string;
|
|
20
|
+
default?: unknown;
|
|
21
|
+
examples?: unknown[];
|
|
22
|
+
deprecated?: boolean;
|
|
23
|
+
readOnly?: boolean;
|
|
24
|
+
minimum?: number;
|
|
25
|
+
maximum?: number;
|
|
26
|
+
exclusiveMinimum?: number;
|
|
27
|
+
exclusiveMaximum?: number;
|
|
28
|
+
multipleOf?: number;
|
|
29
|
+
minLength?: number;
|
|
30
|
+
maxLength?: number;
|
|
31
|
+
pattern?: string;
|
|
32
|
+
minItems?: number;
|
|
33
|
+
maxItems?: number;
|
|
34
|
+
uniqueItems?: boolean;
|
|
35
|
+
minProperties?: number;
|
|
36
|
+
maxProperties?: number;
|
|
37
|
+
additionalProperties?: boolean | JSONSchema;
|
|
38
|
+
'x-native-type'?: string;
|
|
39
|
+
[key: string]: unknown;
|
|
40
|
+
};
|
|
41
|
+
interface ConvertOptions {
|
|
42
|
+
/** 'input' uses pre-transform types, 'output' uses post-transform */
|
|
43
|
+
strategy: 'input' | 'output';
|
|
44
|
+
/** Max recursion depth before falling back to {} */
|
|
45
|
+
maxDepth?: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Convert a Standard Schema to JSON Schema.
|
|
49
|
+
* Returns [required, jsonSchema] tuple.
|
|
50
|
+
*/
|
|
51
|
+
interface SchemaConverter {
|
|
52
|
+
condition(schema: AnySchema): boolean;
|
|
53
|
+
convert(schema: AnySchema, options: ConvertOptions): [required: boolean, schema: JSONSchema];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Composite converter — tries each converter in order.
|
|
57
|
+
*/
|
|
58
|
+
declare class CompositeSchemaConverter {
|
|
59
|
+
#private;
|
|
60
|
+
constructor(converters: SchemaConverter[]);
|
|
61
|
+
convert(schema: AnySchema | undefined, options: ConvertOptions): [boolean, JSONSchema];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Zod v4 → JSON Schema converter.
|
|
65
|
+
*/
|
|
66
|
+
declare class ZodSchemaConverter implements SchemaConverter {
|
|
67
|
+
#private;
|
|
68
|
+
constructor(options?: {
|
|
69
|
+
maxDepth?: number;
|
|
70
|
+
});
|
|
71
|
+
condition(schema: AnySchema): boolean;
|
|
72
|
+
convert(schema: AnySchema, options: ConvertOptions): [boolean, JSONSchema];
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { CompositeSchemaConverter, ConvertOptions, JSONSchema, SchemaConverter, ZodSchemaConverter };
|