exisjs 0.6.1 → 0.7.1
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 +9 -3
- 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 +7 -5
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +3 -2
- package/dist/config/env.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 +9 -2
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +3 -2
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core/metadata.d.ts +31 -0
- package/dist/decorators/core/metadata.d.ts.map +1 -1
- package/dist/decorators/core/metadata.js +110 -1
- package/dist/decorators/core/metadata.js.map +1 -1
- package/dist/decorators/core.d.ts +19 -4
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +29 -4
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/middleware.d.ts +17 -17
- package/dist/decorators/middleware.d.ts.map +1 -1
- package/dist/decorators/middleware.js +111 -208
- package/dist/decorators/middleware.js.map +1 -1
- package/dist/decorators/params.d.ts +54 -12
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js +40 -20
- package/dist/decorators/params.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 +3 -4
- package/dist/decorators/routing.js.map +1 -1
- package/dist/di/container.d.ts +5 -1
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +56 -8
- package/dist/di/container.js.map +1 -1
- package/dist/di/decorators.d.ts +30 -0
- package/dist/di/decorators.d.ts.map +1 -0
- package/dist/di/decorators.js +59 -0
- package/dist/di/decorators.js.map +1 -0
- package/dist/di/index.d.ts +1 -0
- package/dist/di/index.d.ts.map +1 -1
- package/dist/di/index.js +4 -1
- package/dist/di/index.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 +142 -81
- package/dist/docs/content/installation.mdx +20 -1
- package/dist/docs/content/middleware.mdx +65 -291
- package/dist/docs/content/modules.mdx +22 -1
- package/dist/docs/content/providers.mdx +33 -1
- 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 +34 -216
- package/dist/docs/reference/di.mdx +35 -11
- package/dist/docs/reference/logger.mdx +100 -0
- package/dist/docs/reference/middleware.mdx +41 -217
- package/dist/docs/reference/router.mdx +9 -9
- package/dist/docs/reference/validator.mdx +2 -5
- package/dist/error/errors.d.ts.map +1 -1
- package/dist/error/errors.js +19 -5
- package/dist/error/errors.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- 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/middleware/rate-limit.d.ts +0 -2
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +2 -14
- package/dist/middleware/rate-limit.js.map +1 -1
- package/dist/module/index.d.ts +2 -0
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +3 -1
- package/dist/module/index.js.map +1 -1
- package/dist/plugin/manager.d.ts +1 -1
- package/dist/plugin/manager.d.ts.map +1 -1
- package/dist/plugin/manager.js +47 -0
- package/dist/plugin/manager.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/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +33 -6
- package/dist/router/controller-registrar.js.map +1 -1
- 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 +2 -5
- 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 +225 -203
- 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 +10 -31
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +20 -135
- 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/server/response.d.ts.map +1 -1
- package/dist/server/response.js +2 -1
- package/dist/server/response.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/logger.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,136 @@ export default class UsersController {
|
|
|
112
130
|
```
|
|
113
131
|
|
|
114
132
|
### Available Parameter Decorators
|
|
115
|
-
- `@Body(
|
|
116
|
-
- `@Param(
|
|
117
|
-
- `@Query(
|
|
118
|
-
- `@Headers(
|
|
119
|
-
- `@
|
|
120
|
-
- `@
|
|
121
|
-
- `@
|
|
122
|
-
- `@
|
|
123
|
-
- `@
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
+
- `@QueryParam(nameOrPipe?)` / `@Query(nameOrPipe?)` — Extracts a query parameter from the URL query string.
|
|
136
|
+
- `@Headers(nameOrPipe?)` — Extracts a request header by name.
|
|
137
|
+
- `@HostParam(nameOrPipe?)` — Extracts a host subdomain parameter.
|
|
138
|
+
- `@Req()` — Injects the raw request object.
|
|
139
|
+
- `@Res(options?)` — Injects the response object (e.g. `{ passthrough: true }`).
|
|
140
|
+
- `@Ip()` — Injects the client IP address.
|
|
141
|
+
- `@Next()` — Injects the `next` function.
|
|
142
|
+
- `createParamDecorator(factory)` — Creates custom reusable route parameter decorators:
|
|
143
|
+
```typescript
|
|
144
|
+
export const CurrentUser = createParamDecorator((data: string | undefined, ctx) => {
|
|
145
|
+
return data ? ctx.req.user?.[data] : ctx.req.user
|
|
146
|
+
})
|
|
147
|
+
```
|
|
127
148
|
|
|
128
149
|
---
|
|
129
150
|
|
|
130
|
-
##
|
|
151
|
+
## 4. Middleware & Pipeline Decorators
|
|
131
152
|
|
|
132
|
-
You can bind
|
|
153
|
+
You can bind middlewares, guards, interceptors, and exception filters to controllers or route methods using the unified `@Use()` decorator:
|
|
133
154
|
|
|
134
|
-
```typescript filename="src/http/
|
|
135
|
-
import { Controller,
|
|
155
|
+
```typescript filename="src/http/checkout/route.ts"
|
|
156
|
+
import { Controller, Post, Use, Idempotent } from 'exisjs/decorators'
|
|
136
157
|
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' }
|
|
158
|
+
|
|
159
|
+
@Controller('/checkout')
|
|
160
|
+
@Use(requireAuth) // Applies to all routes in this controller
|
|
161
|
+
export default class CheckoutController {
|
|
162
|
+
@Post('/')
|
|
163
|
+
@Idempotent({ ttlMs: 86400000 }) // In-memory off-heap idempotency protection
|
|
164
|
+
async processPayment() {
|
|
165
|
+
return { success: true }
|
|
149
166
|
}
|
|
150
167
|
}
|
|
151
168
|
```
|
|
152
169
|
|
|
153
|
-
### Available Lifecycle Decorators
|
|
154
|
-
- `@Use(...middlewares)`
|
|
155
|
-
- `@
|
|
156
|
-
- `@UseInterceptors(...interceptors)` - Binds response Interceptors.
|
|
157
|
-
- `@UseFilters(...filters)` - Binds Exception Filters.
|
|
170
|
+
### Available Lifecycle & Middleware Decorators
|
|
171
|
+
- `@Use(...items)` — Unified decorator that attaches middlewares, guards (`canActivate`), interceptors (`intercept`), or exception filters (`catch`) to a class or method.
|
|
172
|
+
- `@Idempotent(options?)` — Caches responses based on the `Idempotency-Key` header using off-heap native memory.
|
|
158
173
|
|
|
159
174
|
---
|
|
160
175
|
|
|
161
|
-
##
|
|
176
|
+
## 5. Response & Metadata Modifiers
|
|
162
177
|
|
|
163
|
-
|
|
178
|
+
Modify HTTP response status codes, redirect clients, or set headers declaratively:
|
|
164
179
|
|
|
165
180
|
```typescript filename="src/http/api/route.ts"
|
|
166
|
-
import { Controller, Post, HttpCode, Header, Redirect } from 'exisjs/decorators'
|
|
181
|
+
import { Controller, Post, Get, HttpCode, Header, Redirect, SetMetadata, Reflector } from 'exisjs/decorators'
|
|
167
182
|
|
|
168
183
|
@Controller('/api')
|
|
184
|
+
@SetMetadata('roles', ['admin'])
|
|
169
185
|
export default class ApiController {
|
|
170
|
-
|
|
171
186
|
@Post('/create')
|
|
172
|
-
@HttpCode(201) // Forces
|
|
173
|
-
@Header('X-Custom-Version', '2.0')
|
|
187
|
+
@HttpCode(201) // Forces 201 Created
|
|
188
|
+
@Header('X-Custom-Version', '2.0')
|
|
189
|
+
@SetMetadata('permissions', ['write:api'])
|
|
174
190
|
async create() {
|
|
175
191
|
return { success: true }
|
|
176
192
|
}
|
|
177
|
-
|
|
193
|
+
|
|
178
194
|
@Get('/legacy')
|
|
179
|
-
@Redirect('/new-api', 301)
|
|
195
|
+
@Redirect('/new-api', 301)
|
|
180
196
|
async legacy() {}
|
|
181
197
|
}
|
|
182
198
|
```
|
|
183
199
|
|
|
184
200
|
### Available Response & Metadata Decorators
|
|
185
|
-
- `@HttpCode(code: number)`
|
|
186
|
-
- `@Header(name: string, value: string)`
|
|
187
|
-
- `@
|
|
188
|
-
- `@
|
|
189
|
-
- `@Permissions(...permissions: string[])`
|
|
201
|
+
- `@HttpCode(code: number)` — Sets the response HTTP status code.
|
|
202
|
+
- `@Header(name: string, value: string)` — Injects a response header.
|
|
203
|
+
- `@Returns(schema)` — Attaches response schema for OpenAPI/Swagger generation.
|
|
204
|
+
- `@Redirect(url: string, statusCode?: number)` — Redirects the client.
|
|
205
|
+
- `@Permissions(...permissions: string[])` — Attaches route permissions metadata.
|
|
206
|
+
- `@Hosts(...hosts: string[])` — Restricts route/controller to specific Host headers.
|
|
207
|
+
- `@SetMetadata(key, value)` — Attaches custom metadata to a class or method.
|
|
208
|
+
- `Reflector` — Static utility to inspect metadata attached via `@SetMetadata` across classes and methods (`Reflector.get`, `Reflector.getAllAndOverride`, `Reflector.getAllAndMerge`).
|
|
190
209
|
|
|
191
210
|
---
|
|
192
211
|
|
|
193
|
-
##
|
|
212
|
+
## 6. Dependency Injection & Modules
|
|
194
213
|
|
|
195
|
-
To mark a class as
|
|
214
|
+
To mark a service class as an injectable provider for the IoC container, use the `@Injectable()` decorator. ExisJS supports `singleton` (default), `request`, and `transient` scopes:
|
|
196
215
|
|
|
197
|
-
```typescript filename="src/
|
|
216
|
+
```typescript filename="src/http/users/service.ts"
|
|
198
217
|
import { Injectable } from 'exisjs/decorators'
|
|
199
218
|
|
|
200
|
-
@Injectable({ scope: '
|
|
201
|
-
export class
|
|
202
|
-
async
|
|
219
|
+
@Injectable({ scope: 'transient' })
|
|
220
|
+
export class UserService {
|
|
221
|
+
async fetchUser(id: string) {
|
|
222
|
+
return { id, name: 'Alice' }
|
|
223
|
+
}
|
|
203
224
|
}
|
|
204
225
|
```
|
|
226
|
+
|
|
227
|
+
### Constructor Parameter Injection (`@Inject` & `@Optional`)
|
|
228
|
+
|
|
229
|
+
You can inject dependencies using tokens or classes, and mark optional dependencies with `@Optional()`:
|
|
230
|
+
|
|
231
|
+
```typescript filename="src/http/users/route.ts"
|
|
232
|
+
import { Controller, Get, Param, Inject, Optional } from 'exisjs/decorators'
|
|
233
|
+
import { UserService } from './service'
|
|
234
|
+
|
|
235
|
+
@Controller('/users')
|
|
236
|
+
export default class UsersController {
|
|
237
|
+
constructor(
|
|
238
|
+
private userService: UserService,
|
|
239
|
+
@Inject('DATABASE_URL') private dbUrl: string,
|
|
240
|
+
@Optional() @Inject('ANALYTICS_SERVICE') private analytics?: any
|
|
241
|
+
) {}
|
|
242
|
+
|
|
243
|
+
@Get('/:id')
|
|
244
|
+
async getUser(@Param('id') id: string) {
|
|
245
|
+
return this.userService.fetchUser(id)
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Application Modules (`@Module`)
|
|
251
|
+
|
|
252
|
+
You can group controllers, providers, and imports into high-level OOP modules using `@Module`:
|
|
253
|
+
|
|
254
|
+
```typescript filename="src/http/users/users.module.ts"
|
|
255
|
+
import { Module } from 'exisjs/module' // or 'exisjs/decorators'
|
|
256
|
+
import UsersController from './route'
|
|
257
|
+
import { UserService } from './service'
|
|
258
|
+
|
|
259
|
+
@Module({
|
|
260
|
+
controllers: [UsersController],
|
|
261
|
+
providers: [UserService],
|
|
262
|
+
exports: [UserService]
|
|
263
|
+
})
|
|
264
|
+
export class UsersModule {}
|
|
265
|
+
```
|
|
@@ -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"
|