exisjs 0.6.1 → 0.7.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/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +2 -8
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +33 -44
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/exports.d.ts.map +1 -1
- package/dist/cli/commands/exports.js +5 -32
- package/dist/cli/commands/exports.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +2 -13
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +27 -60
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +2 -6
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.js +11 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/routes.d.ts.map +1 -1
- package/dist/cli/routes.js +20 -8
- package/dist/cli/routes.js.map +1 -1
- package/dist/config/config.d.ts +2 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +3 -2
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +7 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/decorators/constants.d.ts +2 -2
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +2 -2
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core.d.ts +4 -3
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +7 -4
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/middleware.d.ts +0 -10
- package/dist/decorators/middleware.d.ts.map +1 -1
- package/dist/decorators/middleware.js +0 -25
- package/dist/decorators/middleware.js.map +1 -1
- package/dist/decorators/routing.d.ts +0 -2
- package/dist/decorators/routing.d.ts.map +1 -1
- package/dist/decorators/routing.js +1 -3
- package/dist/decorators/routing.js.map +1 -1
- package/dist/di/inject.d.ts +1 -2
- package/dist/di/inject.d.ts.map +1 -1
- package/dist/di/inject.js.map +1 -1
- package/dist/docs/ARCHITECTURE.md +46 -285
- package/dist/docs/BENCHMARKS.md +5 -5
- package/dist/docs/README.md +8 -11
- package/dist/docs/content/boundaries.mdx +151 -0
- package/dist/docs/content/cli/commands.mdx +66 -104
- package/dist/docs/content/cli/overview.mdx +37 -47
- package/dist/docs/content/cli/usage.mdx +29 -15
- package/dist/docs/content/decorators.mdx +107 -80
- package/dist/docs/content/installation.mdx +20 -1
- package/dist/docs/content/middleware.mdx +65 -291
- package/dist/docs/content/security.mdx +44 -246
- package/dist/docs/content/structure.mdx +227 -100
- package/dist/docs/content/validation.mdx +0 -17
- package/dist/docs/reference/decorators.mdx +24 -217
- package/dist/docs/reference/middleware.mdx +41 -217
- package/dist/docs/reference/validator.mdx +2 -5
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +16 -0
- package/dist/error/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/start-server.js +10 -0
- package/dist/lib/start-server.js.map +1 -1
- package/dist/logger/index.d.ts +81 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +142 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/middleware/dedupe.d.ts +1 -1
- package/dist/middleware/dedupe.js +1 -1
- package/dist/middleware/middleware.d.ts +3 -5
- package/dist/middleware/middleware.d.ts.map +1 -1
- package/dist/middleware/middleware.js +2 -6
- package/dist/middleware/middleware.js.map +1 -1
- package/dist/router/{gateway.d.ts → boundary.d.ts} +21 -13
- package/dist/router/boundary.d.ts.map +1 -0
- package/dist/router/boundary.js +11 -0
- package/dist/router/boundary.js.map +1 -0
- package/dist/router/index.d.ts +3 -6
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +3 -7
- package/dist/router/index.js.map +1 -1
- package/dist/router/route-builder.d.ts +0 -28
- package/dist/router/route-builder.d.ts.map +1 -1
- package/dist/router/route-builder.js +0 -4
- package/dist/router/route-builder.js.map +1 -1
- package/dist/router/route-scanner.d.ts +1 -2
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +216 -193
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts +4 -6
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +36 -72
- package/dist/router/router.js.map +1 -1
- package/dist/router/types.d.ts +2 -6
- package/dist/router/types.d.ts.map +1 -1
- package/dist/server/{bun-adapter.d.ts → adapters/bun-adapter.d.ts} +1 -1
- package/dist/server/adapters/bun-adapter.d.ts.map +1 -0
- package/dist/server/{bun-adapter.js → adapters/bun-adapter.js} +2 -24
- package/dist/server/adapters/bun-adapter.js.map +1 -0
- package/dist/server/{uws-adapter.d.ts → adapters/uws-adapter.d.ts} +1 -1
- package/dist/server/adapters/uws-adapter.d.ts.map +1 -0
- package/dist/server/{uws-adapter.js → adapters/uws-adapter.js} +1 -28
- package/dist/server/adapters/uws-adapter.js.map +1 -0
- package/dist/server/app.d.ts +9 -30
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +19 -134
- package/dist/server/app.js.map +1 -1
- package/dist/server/bootstrapper.d.ts +4 -15
- package/dist/server/bootstrapper.d.ts.map +1 -1
- package/dist/server/bootstrapper.js +30 -229
- package/dist/server/bootstrapper.js.map +1 -1
- package/dist/server/define.d.ts +2 -2
- package/dist/server/define.d.ts.map +1 -1
- package/dist/server/define.js +3 -3
- package/dist/server/define.js.map +1 -1
- package/dist/server/engines/bun-engine.d.ts +16 -0
- package/dist/server/engines/bun-engine.d.ts.map +1 -0
- package/dist/server/engines/bun-engine.js +41 -0
- package/dist/server/engines/bun-engine.js.map +1 -0
- package/dist/server/engines/engine.d.ts +16 -0
- package/dist/server/engines/engine.d.ts.map +1 -0
- package/dist/{queue/types.js → server/engines/engine.js} +1 -1
- package/dist/server/engines/engine.js.map +1 -0
- package/dist/server/engines/node-engine.d.ts +22 -0
- package/dist/server/engines/node-engine.d.ts.map +1 -0
- package/dist/server/engines/node-engine.js +130 -0
- package/dist/server/engines/node-engine.js.map +1 -0
- package/dist/server/engines/uws-engine.d.ts +16 -0
- package/dist/server/engines/uws-engine.d.ts.map +1 -0
- package/dist/server/engines/uws-engine.js +48 -0
- package/dist/server/engines/uws-engine.js.map +1 -0
- package/dist/server/request-handler.d.ts +0 -1
- package/dist/server/request-handler.d.ts.map +1 -1
- package/dist/server/request-handler.js +74 -48
- package/dist/server/request-handler.js.map +1 -1
- package/dist/server/request.d.ts +0 -8
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +0 -16
- package/dist/server/request.js.map +1 -1
- package/dist/utils/time.d.ts +6 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +15 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/validator/index.d.ts +1 -7
- package/dist/validator/index.d.ts.map +1 -1
- package/dist/validator/index.js +1 -5
- package/dist/validator/index.js.map +1 -1
- package/dist/validator/tex-types.d.ts +15 -2
- package/dist/validator/tex-types.d.ts.map +1 -1
- package/dist/validator/tex-types.js +8 -0
- package/dist/validator/tex-types.js.map +1 -1
- package/dist/validator/tex.d.ts.map +1 -1
- package/dist/validator/tex.js +21 -2
- package/dist/validator/tex.js.map +1 -1
- package/package.json +9 -151
- package/dist/adapters/aws-lambda.d.ts +0 -21
- package/dist/adapters/aws-lambda.d.ts.map +0 -1
- package/dist/adapters/aws-lambda.js +0 -125
- package/dist/adapters/aws-lambda.js.map +0 -1
- package/dist/adapters/bun.d.ts +0 -9
- package/dist/adapters/bun.d.ts.map +0 -1
- package/dist/adapters/bun.js +0 -23
- package/dist/adapters/bun.js.map +0 -1
- package/dist/adapters/cloudflare.d.ts +0 -10
- package/dist/adapters/cloudflare.d.ts.map +0 -1
- package/dist/adapters/cloudflare.js +0 -22
- package/dist/adapters/cloudflare.js.map +0 -1
- package/dist/adapters/deno.d.ts +0 -7
- package/dist/adapters/deno.d.ts.map +0 -1
- package/dist/adapters/deno.js +0 -21
- package/dist/adapters/deno.js.map +0 -1
- package/dist/adapters/fastly.d.ts +0 -6
- package/dist/adapters/fastly.d.ts.map +0 -1
- package/dist/adapters/fastly.js +0 -20
- package/dist/adapters/fastly.js.map +0 -1
- package/dist/adapters/fetch.d.ts +0 -30
- package/dist/adapters/fetch.d.ts.map +0 -1
- package/dist/adapters/fetch.js +0 -119
- package/dist/adapters/fetch.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -9
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -28
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/netlify.d.ts +0 -8
- package/dist/adapters/netlify.d.ts.map +0 -1
- package/dist/adapters/netlify.js +0 -20
- package/dist/adapters/netlify.js.map +0 -1
- package/dist/adapters/vercel.d.ts +0 -17
- package/dist/adapters/vercel.d.ts.map +0 -1
- package/dist/adapters/vercel.js +0 -23
- package/dist/adapters/vercel.js.map +0 -1
- package/dist/auth/index.d.ts +0 -8
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -49
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/jwt.d.ts +0 -20
- package/dist/auth/jwt.d.ts.map +0 -1
- package/dist/auth/jwt.js +0 -59
- package/dist/auth/jwt.js.map +0 -1
- package/dist/auth/oauth/core.d.ts +0 -96
- package/dist/auth/oauth/core.d.ts.map +0 -1
- package/dist/auth/oauth/core.js +0 -203
- package/dist/auth/oauth/core.js.map +0 -1
- package/dist/auth/oauth/index.d.ts +0 -45
- package/dist/auth/oauth/index.d.ts.map +0 -1
- package/dist/auth/oauth/index.js +0 -64
- package/dist/auth/oauth/index.js.map +0 -1
- package/dist/auth/oauth/middleware.d.ts +0 -63
- package/dist/auth/oauth/middleware.d.ts.map +0 -1
- package/dist/auth/oauth/middleware.js +0 -164
- package/dist/auth/oauth/middleware.js.map +0 -1
- package/dist/auth/oauth/providers/custom.d.ts +0 -41
- package/dist/auth/oauth/providers/custom.d.ts.map +0 -1
- package/dist/auth/oauth/providers/custom.js +0 -204
- package/dist/auth/oauth/providers/custom.js.map +0 -1
- package/dist/auth/oauth/providers/discord.d.ts +0 -23
- package/dist/auth/oauth/providers/discord.d.ts.map +0 -1
- package/dist/auth/oauth/providers/discord.js +0 -130
- package/dist/auth/oauth/providers/discord.js.map +0 -1
- package/dist/auth/oauth/providers/facebook.d.ts +0 -28
- package/dist/auth/oauth/providers/facebook.d.ts.map +0 -1
- package/dist/auth/oauth/providers/facebook.js +0 -124
- package/dist/auth/oauth/providers/facebook.js.map +0 -1
- package/dist/auth/oauth/providers/github.d.ts +0 -25
- package/dist/auth/oauth/providers/github.d.ts.map +0 -1
- package/dist/auth/oauth/providers/github.js +0 -132
- package/dist/auth/oauth/providers/github.js.map +0 -1
- package/dist/auth/oauth/providers/google.d.ts +0 -23
- package/dist/auth/oauth/providers/google.d.ts.map +0 -1
- package/dist/auth/oauth/providers/google.js +0 -134
- package/dist/auth/oauth/providers/google.js.map +0 -1
- package/dist/auth/oauth/providers/microsoft.d.ts +0 -28
- package/dist/auth/oauth/providers/microsoft.d.ts.map +0 -1
- package/dist/auth/oauth/providers/microsoft.js +0 -136
- package/dist/auth/oauth/providers/microsoft.js.map +0 -1
- package/dist/auth/oauth/types.d.ts +0 -158
- package/dist/auth/oauth/types.d.ts.map +0 -1
- package/dist/auth/oauth/types.js +0 -4
- package/dist/auth/oauth/types.js.map +0 -1
- package/dist/auth/password.d.ts +0 -25
- package/dist/auth/password.d.ts.map +0 -1
- package/dist/auth/password.js +0 -93
- package/dist/auth/password.js.map +0 -1
- package/dist/auth/rbac.d.ts +0 -10
- package/dist/auth/rbac.d.ts.map +0 -1
- package/dist/auth/rbac.js +0 -34
- package/dist/auth/rbac.js.map +0 -1
- package/dist/auth/session.d.ts +0 -26
- package/dist/auth/session.d.ts.map +0 -1
- package/dist/auth/session.js +0 -134
- package/dist/auth/session.js.map +0 -1
- package/dist/cache/index.d.ts +0 -4
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -25
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/store.d.ts +0 -58
- package/dist/cache/store.d.ts.map +0 -1
- package/dist/cache/store.js +0 -298
- package/dist/cache/store.js.map +0 -1
- package/dist/cron/parser.d.ts +0 -2
- package/dist/cron/parser.d.ts.map +0 -1
- package/dist/cron/parser.js +0 -52
- package/dist/cron/parser.js.map +0 -1
- package/dist/cron/scheduler.d.ts +0 -23
- package/dist/cron/scheduler.d.ts.map +0 -1
- package/dist/cron/scheduler.js +0 -114
- package/dist/cron/scheduler.js.map +0 -1
- package/dist/database/adapters/mongodb.d.ts +0 -58
- package/dist/database/adapters/mongodb.d.ts.map +0 -1
- package/dist/database/adapters/mongodb.js +0 -264
- package/dist/database/adapters/mongodb.js.map +0 -1
- package/dist/database/adapters/mysql.d.ts +0 -27
- package/dist/database/adapters/mysql.d.ts.map +0 -1
- package/dist/database/adapters/mysql.js +0 -188
- package/dist/database/adapters/mysql.js.map +0 -1
- package/dist/database/adapters/postgres.d.ts +0 -28
- package/dist/database/adapters/postgres.d.ts.map +0 -1
- package/dist/database/adapters/postgres.js +0 -174
- package/dist/database/adapters/postgres.js.map +0 -1
- package/dist/database/adapters/sqlite.d.ts +0 -27
- package/dist/database/adapters/sqlite.d.ts.map +0 -1
- package/dist/database/adapters/sqlite.js +0 -149
- package/dist/database/adapters/sqlite.js.map +0 -1
- package/dist/database/index.d.ts +0 -42
- package/dist/database/index.d.ts.map +0 -1
- package/dist/database/index.js +0 -58
- package/dist/database/index.js.map +0 -1
- package/dist/database/manager.d.ts +0 -141
- package/dist/database/manager.d.ts.map +0 -1
- package/dist/database/manager.js +0 -337
- package/dist/database/manager.js.map +0 -1
- package/dist/database/migration.d.ts +0 -57
- package/dist/database/migration.d.ts.map +0 -1
- package/dist/database/migration.js +0 -329
- package/dist/database/migration.js.map +0 -1
- package/dist/database/query-builder.d.ts +0 -95
- package/dist/database/query-builder.d.ts.map +0 -1
- package/dist/database/query-builder.js +0 -404
- package/dist/database/query-builder.js.map +0 -1
- package/dist/database/sql/index.d.ts +0 -18
- package/dist/database/sql/index.d.ts.map +0 -1
- package/dist/database/sql/index.js +0 -74
- package/dist/database/sql/index.js.map +0 -1
- package/dist/database/sql/schema.d.ts +0 -38
- package/dist/database/sql/schema.d.ts.map +0 -1
- package/dist/database/sql/schema.js +0 -80
- package/dist/database/sql/schema.js.map +0 -1
- package/dist/database/synchronizer.d.ts +0 -12
- package/dist/database/synchronizer.d.ts.map +0 -1
- package/dist/database/synchronizer.js +0 -82
- package/dist/database/synchronizer.js.map +0 -1
- package/dist/database/types.d.ts +0 -184
- package/dist/database/types.d.ts.map +0 -1
- package/dist/database/types.js +0 -4
- package/dist/database/types.js.map +0 -1
- package/dist/dataloader/dataloader.d.ts +0 -23
- package/dist/dataloader/dataloader.d.ts.map +0 -1
- package/dist/dataloader/dataloader.js +0 -98
- package/dist/dataloader/dataloader.js.map +0 -1
- package/dist/dataloader/index.d.ts +0 -3
- package/dist/dataloader/index.d.ts.map +0 -1
- package/dist/dataloader/index.js +0 -19
- package/dist/dataloader/index.js.map +0 -1
- package/dist/dataloader/registry.d.ts +0 -17
- package/dist/dataloader/registry.d.ts.map +0 -1
- package/dist/dataloader/registry.js +0 -47
- package/dist/dataloader/registry.js.map +0 -1
- package/dist/dev/dep-graph.d.ts +0 -2
- package/dist/dev/dep-graph.d.ts.map +0 -1
- package/dist/dev/dep-graph.js +0 -111
- package/dist/dev/dep-graph.js.map +0 -1
- package/dist/dev/hot-reload.d.ts +0 -30
- package/dist/dev/hot-reload.d.ts.map +0 -1
- package/dist/dev/hot-reload.js +0 -262
- package/dist/dev/hot-reload.js.map +0 -1
- package/dist/docs/content/adapters.mdx +0 -199
- package/dist/docs/content/cache.mdx +0 -239
- package/dist/docs/content/circuit-breaker.mdx +0 -130
- package/dist/docs/content/cron.mdx +0 -109
- package/dist/docs/content/database.mdx +0 -278
- package/dist/docs/content/gateways.mdx +0 -376
- package/dist/docs/content/oauth.mdx +0 -179
- package/dist/docs/content/queues.mdx +0 -177
- package/dist/docs/content/rpc.mdx +0 -146
- package/dist/docs/content/sse.mdx +0 -159
- package/dist/docs/content/websockets.mdx +0 -289
- package/dist/docs/integrations/README.md +0 -23
- package/dist/docs/integrations/jwt.mdx +0 -151
- package/dist/docs/integrations/mongo.mdx +0 -183
- package/dist/docs/integrations/observability.mdx +0 -125
- package/dist/docs/integrations/openai.mdx +0 -108
- package/dist/docs/integrations/postgres.mdx +0 -190
- package/dist/docs/integrations/posthog.mdx +0 -122
- package/dist/docs/integrations/redis.mdx +0 -141
- package/dist/docs/integrations/resend.mdx +0 -117
- package/dist/docs/integrations/s3.mdx +0 -122
- package/dist/docs/integrations/swagger.mdx +0 -113
- package/dist/docs/reference/adapters.mdx +0 -130
- package/dist/docs/reference/auth.mdx +0 -183
- package/dist/docs/reference/cache.mdx +0 -132
- package/dist/docs/reference/circuit-breaker.mdx +0 -71
- package/dist/docs/reference/queue.mdx +0 -155
- package/dist/docs/reference/storage.mdx +0 -116
- package/dist/docs/reference/swagger.mdx +0 -132
- package/dist/integrations/drizzle.d.ts +0 -10
- package/dist/integrations/drizzle.d.ts.map +0 -1
- package/dist/integrations/drizzle.js +0 -34
- package/dist/integrations/drizzle.js.map +0 -1
- package/dist/integrations/jwt.d.ts +0 -12
- package/dist/integrations/jwt.d.ts.map +0 -1
- package/dist/integrations/jwt.js +0 -29
- package/dist/integrations/jwt.js.map +0 -1
- package/dist/integrations/mongodb.d.ts +0 -13
- package/dist/integrations/mongodb.d.ts.map +0 -1
- package/dist/integrations/mongodb.js +0 -48
- package/dist/integrations/mongodb.js.map +0 -1
- package/dist/integrations/mongoose.d.ts +0 -13
- package/dist/integrations/mongoose.d.ts.map +0 -1
- package/dist/integrations/mongoose.js +0 -84
- package/dist/integrations/mongoose.js.map +0 -1
- package/dist/integrations/openai.d.ts +0 -12
- package/dist/integrations/openai.d.ts.map +0 -1
- package/dist/integrations/openai.js +0 -47
- package/dist/integrations/openai.js.map +0 -1
- package/dist/integrations/postgres.d.ts +0 -13
- package/dist/integrations/postgres.d.ts.map +0 -1
- package/dist/integrations/postgres.js +0 -55
- package/dist/integrations/postgres.js.map +0 -1
- package/dist/integrations/posthog.d.ts +0 -13
- package/dist/integrations/posthog.d.ts.map +0 -1
- package/dist/integrations/posthog.js +0 -49
- package/dist/integrations/posthog.js.map +0 -1
- package/dist/integrations/prisma.d.ts +0 -10
- package/dist/integrations/prisma.d.ts.map +0 -1
- package/dist/integrations/prisma.js +0 -39
- package/dist/integrations/prisma.js.map +0 -1
- package/dist/integrations/redis.d.ts +0 -12
- package/dist/integrations/redis.d.ts.map +0 -1
- package/dist/integrations/redis.js +0 -48
- package/dist/integrations/redis.js.map +0 -1
- package/dist/integrations/resend.d.ts +0 -12
- package/dist/integrations/resend.d.ts.map +0 -1
- package/dist/integrations/resend.js +0 -47
- package/dist/integrations/resend.js.map +0 -1
- package/dist/integrations/s3.d.ts +0 -15
- package/dist/integrations/s3.d.ts.map +0 -1
- package/dist/integrations/s3.js +0 -60
- package/dist/integrations/s3.js.map +0 -1
- package/dist/integrations/supabase.d.ts +0 -13
- package/dist/integrations/supabase.d.ts.map +0 -1
- package/dist/integrations/supabase.js +0 -51
- package/dist/integrations/supabase.js.map +0 -1
- package/dist/middleware/cache.d.ts +0 -21
- package/dist/middleware/cache.d.ts.map +0 -1
- package/dist/middleware/cache.js +0 -156
- package/dist/middleware/cache.js.map +0 -1
- package/dist/observability/health.d.ts +0 -23
- package/dist/observability/health.d.ts.map +0 -1
- package/dist/observability/health.js +0 -49
- package/dist/observability/health.js.map +0 -1
- package/dist/observability/index.d.ts +0 -4
- package/dist/observability/index.d.ts.map +0 -1
- package/dist/observability/index.js +0 -10
- package/dist/observability/index.js.map +0 -1
- package/dist/observability/metrics.d.ts +0 -6
- package/dist/observability/metrics.d.ts.map +0 -1
- package/dist/observability/metrics.js +0 -60
- package/dist/observability/metrics.js.map +0 -1
- package/dist/observability/otel.d.ts +0 -27
- package/dist/observability/otel.d.ts.map +0 -1
- package/dist/observability/otel.js +0 -45
- package/dist/observability/otel.js.map +0 -1
- package/dist/observability/prometheus.d.ts +0 -30
- package/dist/observability/prometheus.d.ts.map +0 -1
- package/dist/observability/prometheus.js +0 -31
- package/dist/observability/prometheus.js.map +0 -1
- package/dist/queue/client.d.ts +0 -13
- package/dist/queue/client.d.ts.map +0 -1
- package/dist/queue/client.js +0 -83
- package/dist/queue/client.js.map +0 -1
- package/dist/queue/drivers/MemoryDriver.d.ts +0 -21
- package/dist/queue/drivers/MemoryDriver.d.ts.map +0 -1
- package/dist/queue/drivers/MemoryDriver.js +0 -176
- package/dist/queue/drivers/MemoryDriver.js.map +0 -1
- package/dist/queue/drivers/RedisDriver.d.ts +0 -19
- package/dist/queue/drivers/RedisDriver.d.ts.map +0 -1
- package/dist/queue/drivers/RedisDriver.js +0 -130
- package/dist/queue/drivers/RedisDriver.js.map +0 -1
- package/dist/queue/index.d.ts +0 -18
- package/dist/queue/index.d.ts.map +0 -1
- package/dist/queue/index.js +0 -37
- package/dist/queue/index.js.map +0 -1
- package/dist/queue/manager.d.ts +0 -18
- package/dist/queue/manager.d.ts.map +0 -1
- package/dist/queue/manager.js +0 -59
- package/dist/queue/manager.js.map +0 -1
- package/dist/queue/types.d.ts +0 -55
- package/dist/queue/types.d.ts.map +0 -1
- package/dist/queue/types.js.map +0 -1
- package/dist/queue/worker.d.ts +0 -18
- package/dist/queue/worker.d.ts.map +0 -1
- package/dist/queue/worker.js +0 -176
- package/dist/queue/worker.js.map +0 -1
- package/dist/router/gateway.d.ts.map +0 -1
- package/dist/router/gateway.js +0 -11
- package/dist/router/gateway.js.map +0 -1
- package/dist/server/bun-adapter.d.ts.map +0 -1
- package/dist/server/bun-adapter.js.map +0 -1
- package/dist/server/sse.d.ts +0 -16
- package/dist/server/sse.d.ts.map +0 -1
- package/dist/server/sse.js +0 -51
- package/dist/server/sse.js.map +0 -1
- package/dist/server/uws-adapter.d.ts.map +0 -1
- package/dist/server/uws-adapter.js.map +0 -1
- package/dist/storage/index.d.ts +0 -15
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -7
- package/dist/storage/index.js.map +0 -1
- package/dist/swagger/index.d.ts +0 -9
- package/dist/swagger/index.d.ts.map +0 -1
- package/dist/swagger/index.js +0 -165
- package/dist/swagger/index.js.map +0 -1
- package/dist/threads/pool.d.ts +0 -14
- package/dist/threads/pool.d.ts.map +0 -1
- package/dist/threads/pool.js +0 -93
- package/dist/threads/pool.js.map +0 -1
- package/dist/threads/worker-runner.d.ts +0 -2
- package/dist/threads/worker-runner.d.ts.map +0 -1
- package/dist/threads/worker-runner.js +0 -71
- package/dist/threads/worker-runner.js.map +0 -1
- package/dist/validator/validator.d.ts +0 -360
- package/dist/validator/validator.d.ts.map +0 -1
- package/dist/validator/validator.js +0 -931
- package/dist/validator/validator.js.map +0 -1
- package/dist/websocket/orchestrator.d.ts +0 -11
- package/dist/websocket/orchestrator.d.ts.map +0 -1
- package/dist/websocket/orchestrator.js +0 -238
- package/dist/websocket/orchestrator.js.map +0 -1
- package/dist/websocket/server.d.ts +0 -66
- package/dist/websocket/server.d.ts.map +0 -1
- package/dist/websocket/server.js +0 -158
- package/dist/websocket/server.js.map +0 -1
- package/dist/websocket/socket.d.ts +0 -119
- package/dist/websocket/socket.d.ts.map +0 -1
- package/dist/websocket/socket.js +0 -242
- package/dist/websocket/socket.js.map +0 -1
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
# Decorators
|
|
2
2
|
|
|
3
|
-
ExisJS provides standard
|
|
3
|
+
ExisJS provides standard ECMAScript decorators for developers who prefer the Object-Oriented Programming (OOP) paradigm.
|
|
4
4
|
|
|
5
|
-
Because ExisJS does not rely on reflection libraries like `reflect-metadata`, these decorators are fast and memory-efficient.
|
|
5
|
+
Because ExisJS does not rely on reflection libraries like `reflect-metadata`, these decorators are fast, lightweight, and memory-efficient.
|
|
6
6
|
|
|
7
7
|
All decorators can be imported directly from `exisjs/decorators`.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
## 1.
|
|
11
|
+
## 1. Application & Boundary Decorators
|
|
12
12
|
|
|
13
|
-
ExisJS allows you to configure your root application and directory-scoped
|
|
13
|
+
ExisJS allows you to configure your root application and directory-scoped boundaries using decorators.
|
|
14
14
|
|
|
15
15
|
### `@Server(config)`
|
|
16
|
-
Used
|
|
16
|
+
Used in your entry point (e.g. `src/http/server.ts`) to configure plugins and root providers in an OOP style:
|
|
17
17
|
|
|
18
18
|
```typescript filename="src/http/server.ts"
|
|
19
19
|
import { Server } from 'exisjs/decorators'
|
|
20
|
-
import { metricsPlugin } from './plugins/metrics'
|
|
21
20
|
import type { App } from 'exisjs'
|
|
22
21
|
|
|
23
22
|
@Server({
|
|
24
|
-
plugins: [metricsPlugin],
|
|
25
23
|
providers: [['Logger', { useValue: console }]]
|
|
26
24
|
})
|
|
27
25
|
export default class RootServer {
|
|
@@ -31,44 +29,65 @@ export default class RootServer {
|
|
|
31
29
|
}
|
|
32
30
|
```
|
|
33
31
|
|
|
34
|
-
### `@
|
|
35
|
-
Used inside any folder (e.g. `src/http/admin/
|
|
32
|
+
### `@Boundary(config)`
|
|
33
|
+
Used inside any folder (e.g. `src/http/admin/boundary.ts`) to configure folder-scoped CORS, headers, exclusions, and DI providers:
|
|
36
34
|
|
|
37
|
-
```typescript filename="src/http/admin/
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
35
|
+
```typescript filename="src/http/admin/boundary.ts"
|
|
36
|
+
import { Boundary } from 'exisjs/decorators'
|
|
37
|
+
import type { Request, Response, Next, BoundaryContext } from 'exisjs/router'
|
|
38
|
+
import { UnauthorizedError } from 'exisjs/error'
|
|
40
39
|
|
|
41
|
-
@
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
metadata: { openapi: { tags: ['Admin'] } }
|
|
40
|
+
@Boundary({
|
|
41
|
+
cors: { origin: 'https://admin.yourdomain.com', credentials: true },
|
|
42
|
+
headers: { 'X-Admin-Api-Version': '2.0' },
|
|
43
|
+
exclude: ['/admin/health'],
|
|
46
44
|
})
|
|
47
|
-
export default class
|
|
45
|
+
export default class AdminBoundary {
|
|
46
|
+
// Chain step auto-detected by (req, res, next) signature
|
|
47
|
+
requireAuth(req: Request, res: Response, next: Next) {
|
|
48
|
+
if (!req.headers['x-api-key']) {
|
|
49
|
+
throw new UnauthorizedError('Missing API key')
|
|
50
|
+
}
|
|
51
|
+
next()
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Request wrapper auto-detected by handle(ctx, next)
|
|
55
|
+
async handle(ctx: BoundaryContext, next: Next) {
|
|
56
|
+
const start = Date.now()
|
|
57
|
+
const result = await next()
|
|
58
|
+
ctx.res.setHeader('X-Response-Time', `${Date.now() - start}ms`)
|
|
59
|
+
return result
|
|
60
|
+
}
|
|
61
|
+
}
|
|
48
62
|
```
|
|
49
63
|
|
|
50
64
|
---
|
|
51
65
|
|
|
52
|
-
##
|
|
66
|
+
## 2. Controllers & Routing
|
|
53
67
|
|
|
54
|
-
To map a class to a route prefix, use the `@Controller()` decorator.
|
|
68
|
+
To map a class to a route prefix, use the `@Controller()` decorator. HTTP method decorators then map class methods to specific endpoints.
|
|
55
69
|
|
|
56
70
|
```typescript filename="src/http/users/route.ts"
|
|
57
|
-
import { Controller, Get, Post, Put, Delete } from 'exisjs/decorators'
|
|
71
|
+
import { Controller, Get, Post, Put, Patch, Delete } from 'exisjs/decorators'
|
|
72
|
+
import { UserParamsSchema, CreateUserSchema } from './schema'
|
|
58
73
|
|
|
59
74
|
@Controller('/users')
|
|
60
75
|
export default class UsersController {
|
|
61
|
-
|
|
62
76
|
@Get('/')
|
|
63
77
|
async listUsers() {
|
|
64
78
|
return { users: [] }
|
|
65
79
|
}
|
|
66
80
|
|
|
67
|
-
@
|
|
81
|
+
@Get('/:id', UserParamsSchema)
|
|
82
|
+
async getUser() {
|
|
83
|
+
return { id: 1 }
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@Post('/', CreateUserSchema)
|
|
68
87
|
async createUser() {
|
|
69
88
|
return { success: true }
|
|
70
89
|
}
|
|
71
|
-
|
|
90
|
+
|
|
72
91
|
@Delete('/:id')
|
|
73
92
|
async deleteUser() {}
|
|
74
93
|
}
|
|
@@ -82,22 +101,21 @@ export default class UsersController {
|
|
|
82
101
|
- `@Delete(path?, schema?)`
|
|
83
102
|
- `@Options(path?, schema?)`
|
|
84
103
|
- `@Head(path?, schema?)`
|
|
104
|
+
- `@Connect(path?, schema?)`
|
|
105
|
+
- `@Trace(path?, schema?)`
|
|
85
106
|
- `@All(path?, schema?)`
|
|
86
|
-
- `@Ws(path?, schema?)` (For WebSockets)
|
|
87
|
-
- `@Sse(path?, schema?)` (For Server-Sent Events)
|
|
88
107
|
|
|
89
108
|
---
|
|
90
109
|
|
|
91
|
-
##
|
|
110
|
+
## 3. Request Parameters
|
|
92
111
|
|
|
93
|
-
|
|
112
|
+
Parameter decorators extract request properties and inject them directly into your method parameters:
|
|
94
113
|
|
|
95
114
|
```typescript filename="src/http/users/route.ts"
|
|
96
115
|
import { Controller, Post, Body, Param, Headers, Req, Res } from 'exisjs/decorators'
|
|
97
116
|
|
|
98
117
|
@Controller('/users')
|
|
99
118
|
export default class UsersController {
|
|
100
|
-
|
|
101
119
|
@Post('/:id')
|
|
102
120
|
async update(
|
|
103
121
|
@Param('id') id: string,
|
|
@@ -112,93 +130,102 @@ export default class UsersController {
|
|
|
112
130
|
```
|
|
113
131
|
|
|
114
132
|
### Available Parameter Decorators
|
|
115
|
-
- `@Body(
|
|
116
|
-
- `@Param(
|
|
117
|
-
- `@
|
|
118
|
-
- `@
|
|
119
|
-
- `@Req()`
|
|
120
|
-
- `@Res(
|
|
121
|
-
- `@Ip()`
|
|
122
|
-
- `@Next()`
|
|
123
|
-
- `@Session()` - Injects `req.session` (if a session plugin is active).
|
|
124
|
-
- `@Socket()` - Injects the `ExisWebSocket` (only valid in `@Ws` routes).
|
|
125
|
-
- `@Stream()` - Injects the `ExisSSE` stream (only valid in `@Sse` routes).
|
|
126
|
-
- `@UploadedFile()` / `@UploadedFiles()` - Automatically extracts multipart form-data files.
|
|
133
|
+
- `@Body(nameOrPipe?)` — Extracts `req.body` or runs through a validation schema/pipe.
|
|
134
|
+
- `@Param(nameOrPipe?)` — Extracts a route path param (e.g. `:id`).
|
|
135
|
+
- `@Headers(nameOrPipe?)` — Extracts a request header by name.
|
|
136
|
+
- `@HostParam(nameOrPipe?)` — Extracts a host subdomain parameter.
|
|
137
|
+
- `@Req()` — Injects the raw request object.
|
|
138
|
+
- `@Res(options?)` — Injects the response object (e.g. `{ passthrough: true }`).
|
|
139
|
+
- `@Ip()` — Injects the client IP address.
|
|
140
|
+
- `@Next()` — Injects the `next` function.
|
|
127
141
|
|
|
128
142
|
---
|
|
129
143
|
|
|
130
|
-
##
|
|
144
|
+
## 4. Middleware & Pipeline Decorators
|
|
131
145
|
|
|
132
|
-
You can bind
|
|
146
|
+
You can bind middleware, rate limiting, and idempotency to controllers or route methods using `@Use()` and utility decorators:
|
|
133
147
|
|
|
134
|
-
```typescript filename="src/http/
|
|
135
|
-
import { Controller,
|
|
148
|
+
```typescript filename="src/http/checkout/route.ts"
|
|
149
|
+
import { Controller, Post, Use, Idempotent } from 'exisjs/decorators'
|
|
136
150
|
import { requireAuth } from '../../middleware/auth'
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
@
|
|
142
|
-
@
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
@Get('/dashboard')
|
|
146
|
-
@UseGuards(RoleGuard) // Applies ONLY to this method
|
|
147
|
-
async getDashboard() {
|
|
148
|
-
return { secret: 'data' }
|
|
151
|
+
|
|
152
|
+
@Controller('/checkout')
|
|
153
|
+
@Use(requireAuth) // Applies to all routes in this controller
|
|
154
|
+
export default class CheckoutController {
|
|
155
|
+
@Post('/')
|
|
156
|
+
@Idempotent({ ttlMs: 86400000 }) // In-memory off-heap idempotency protection
|
|
157
|
+
async processPayment() {
|
|
158
|
+
return { success: true }
|
|
149
159
|
}
|
|
150
160
|
}
|
|
151
161
|
```
|
|
152
162
|
|
|
153
|
-
### Available Lifecycle Decorators
|
|
154
|
-
- `@Use(...middlewares)`
|
|
155
|
-
- `@
|
|
156
|
-
- `@UseInterceptors(...interceptors)` - Binds response Interceptors.
|
|
157
|
-
- `@UseFilters(...filters)` - Binds Exception Filters.
|
|
163
|
+
### Available Lifecycle & Middleware Decorators
|
|
164
|
+
- `@Use(...middlewares)` — Attaches middleware functions to a class or method.
|
|
165
|
+
- `@Idempotent(options?)` — Caches responses based on the `Idempotency-Key` header using off-heap native memory.
|
|
158
166
|
|
|
159
167
|
---
|
|
160
168
|
|
|
161
|
-
##
|
|
169
|
+
## 5. Response Modifiers
|
|
162
170
|
|
|
163
|
-
|
|
171
|
+
Modify HTTP response status codes, redirect clients, or set headers declaratively:
|
|
164
172
|
|
|
165
173
|
```typescript filename="src/http/api/route.ts"
|
|
166
|
-
import { Controller, Post, HttpCode, Header, Redirect } from 'exisjs/decorators'
|
|
174
|
+
import { Controller, Post, Get, HttpCode, Header, Redirect } from 'exisjs/decorators'
|
|
167
175
|
|
|
168
176
|
@Controller('/api')
|
|
169
177
|
export default class ApiController {
|
|
170
|
-
|
|
171
178
|
@Post('/create')
|
|
172
|
-
@HttpCode(201) // Forces
|
|
173
|
-
@Header('X-Custom-Version', '2.0')
|
|
179
|
+
@HttpCode(201) // Forces 201 Created
|
|
180
|
+
@Header('X-Custom-Version', '2.0')
|
|
174
181
|
async create() {
|
|
175
182
|
return { success: true }
|
|
176
183
|
}
|
|
177
|
-
|
|
184
|
+
|
|
178
185
|
@Get('/legacy')
|
|
179
|
-
@Redirect('/new-api', 301)
|
|
186
|
+
@Redirect('/new-api', 301)
|
|
180
187
|
async legacy() {}
|
|
181
188
|
}
|
|
182
189
|
```
|
|
183
190
|
|
|
184
191
|
### Available Response & Metadata Decorators
|
|
185
|
-
- `@HttpCode(code: number)`
|
|
186
|
-
- `@Header(name: string, value: string)`
|
|
187
|
-
- `@
|
|
188
|
-
- `@
|
|
189
|
-
- `@Permissions(...permissions: string[])`
|
|
192
|
+
- `@HttpCode(code: number)` — Sets the response HTTP status code.
|
|
193
|
+
- `@Header(name: string, value: string)` — Injects a response header.
|
|
194
|
+
- `@Returns(schema)` — Attaches response schema for OpenAPI/Swagger generation.
|
|
195
|
+
- `@Redirect(url: string, statusCode?: number)` — Redirects the client.
|
|
196
|
+
- `@Permissions(...permissions: string[])` — Attaches route permissions metadata.
|
|
197
|
+
- `@Hosts(...hosts: string[])` — Restricts route/controller to specific Host headers.
|
|
190
198
|
|
|
191
199
|
---
|
|
192
200
|
|
|
193
|
-
##
|
|
201
|
+
## 6. Dependency Injection
|
|
194
202
|
|
|
195
|
-
To mark a class as
|
|
203
|
+
To mark a service class as an injectable provider for the IoC container, use the `@Injectable()` decorator:
|
|
196
204
|
|
|
197
|
-
```typescript filename="src/
|
|
205
|
+
```typescript filename="src/http/users/service.ts"
|
|
198
206
|
import { Injectable } from 'exisjs/decorators'
|
|
199
207
|
|
|
200
208
|
@Injectable({ scope: 'singleton' })
|
|
201
|
-
export class
|
|
202
|
-
async
|
|
209
|
+
export class UserService {
|
|
210
|
+
async fetchUser(id: string) {
|
|
211
|
+
return { id, name: 'Alice' }
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
Inside your route classes or controllers, inject services via constructor injection:
|
|
217
|
+
|
|
218
|
+
```typescript filename="src/http/users/route.ts"
|
|
219
|
+
import { Controller, Get, Param } from 'exisjs/decorators'
|
|
220
|
+
import { UserService } from './service'
|
|
221
|
+
|
|
222
|
+
@Controller('/users')
|
|
223
|
+
export default class UsersController {
|
|
224
|
+
constructor(private userService: UserService) {}
|
|
225
|
+
|
|
226
|
+
@Get('/:id')
|
|
227
|
+
async getUser(@Param('id') id: string) {
|
|
228
|
+
return this.userService.fetchUser(id)
|
|
229
|
+
}
|
|
203
230
|
}
|
|
204
231
|
```
|
|
@@ -20,9 +20,28 @@ Please make sure that **Node.js (version >= 20)** is installed on your operating
|
|
|
20
20
|
Setting up a new project can be done using our CLI tool. Open your terminal and run the following command to scaffold a new ExisJS project:
|
|
21
21
|
|
|
22
22
|
<div className="my-6 max-w-lg">
|
|
23
|
-
<CopyCommand command="
|
|
23
|
+
<CopyCommand command="npm create exisjs@latest my-backend" />
|
|
24
24
|
</div>
|
|
25
25
|
|
|
26
|
+
You can also use your package manager of choice:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# npm
|
|
30
|
+
$ npm create exisjs@latest my-backend
|
|
31
|
+
|
|
32
|
+
# pnpm
|
|
33
|
+
$ pnpm create exisjs my-backend
|
|
34
|
+
|
|
35
|
+
# yarn
|
|
36
|
+
$ yarn create exisjs my-backend
|
|
37
|
+
|
|
38
|
+
# bun
|
|
39
|
+
$ bun create exisjs my-backend
|
|
40
|
+
|
|
41
|
+
# npx
|
|
42
|
+
$ npx create-exisjs@latest my-backend
|
|
43
|
+
```
|
|
44
|
+
|
|
26
45
|
The CLI will prompt you with a few simple questions to customize your project:
|
|
27
46
|
|
|
28
47
|
```text filename="Terminal"
|