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
package/dist/dev/dep-graph.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateDependencyGraph = generateDependencyGraph;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const node_fs_1 = require("node:fs");
|
|
10
|
-
async function generateDependencyGraph(apiDir, cwd) {
|
|
11
|
-
const graph = new Map();
|
|
12
|
-
const visited = new Set();
|
|
13
|
-
const routeFiles = await findRouteFiles(apiDir);
|
|
14
|
-
for (const routeFile of routeFiles) {
|
|
15
|
-
await processFile(routeFile, routeFile, cwd, graph, visited);
|
|
16
|
-
}
|
|
17
|
-
// Also save to .exis/dev/dependency-graph.json (skip during tests)
|
|
18
|
-
if (process.env.NODE_ENV !== 'test' && process.env.__EXIS_TEST !== 'true') {
|
|
19
|
-
const exisDevPath = node_path_1.default.join(cwd, '.exis', 'dev');
|
|
20
|
-
try {
|
|
21
|
-
await promises_1.default.mkdir(exisDevPath, { recursive: true });
|
|
22
|
-
const serializable = {};
|
|
23
|
-
for (const [dep, routes] of graph.entries()) {
|
|
24
|
-
serializable[node_path_1.default.relative(cwd, dep)] = Array.from(routes).map((r) => node_path_1.default.relative(cwd, r));
|
|
25
|
-
}
|
|
26
|
-
await promises_1.default.writeFile(node_path_1.default.join(exisDevPath, 'dependency-graph.json'), JSON.stringify(serializable, null, 2));
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
// Ignore errors saving
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return graph;
|
|
33
|
-
}
|
|
34
|
-
async function findRouteFiles(dir) {
|
|
35
|
-
const files = [];
|
|
36
|
-
const entries = await promises_1.default.readdir(dir, { withFileTypes: true });
|
|
37
|
-
for (const entry of entries) {
|
|
38
|
-
const fullPath = node_path_1.default.join(dir, entry.name);
|
|
39
|
-
if (entry.isDirectory()) {
|
|
40
|
-
files.push(...(await findRouteFiles(fullPath)));
|
|
41
|
-
}
|
|
42
|
-
else if (entry.name === 'route.ts' || entry.name === 'route.js') {
|
|
43
|
-
files.push(fullPath);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return files;
|
|
47
|
-
}
|
|
48
|
-
async function processFile(filePath, routeFilePath, cwd, graph, visited) {
|
|
49
|
-
const visitKey = `${filePath}:${routeFilePath}`;
|
|
50
|
-
if (visited.has(visitKey))
|
|
51
|
-
return;
|
|
52
|
-
visited.add(visitKey);
|
|
53
|
-
let content;
|
|
54
|
-
try {
|
|
55
|
-
content = await promises_1.default.readFile(filePath, 'utf8');
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
const importRegex = /(?:import|export)(?:\s+(?:[^'"]*)\s+from\s+)?['"]([^'"]+)['"]|import\(['"]([^'"]+)['"]\)/g;
|
|
61
|
-
let match;
|
|
62
|
-
while ((match = importRegex.exec(content)) !== null) {
|
|
63
|
-
const importPath = match[1] || match[2];
|
|
64
|
-
if (!importPath)
|
|
65
|
-
continue;
|
|
66
|
-
if (importPath.startsWith('.')) {
|
|
67
|
-
const resolved = resolveImport(filePath, importPath);
|
|
68
|
-
if (resolved) {
|
|
69
|
-
addEdge(resolved, routeFilePath, graph);
|
|
70
|
-
await processFile(resolved, routeFilePath, cwd, graph, visited);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
else if (importPath.startsWith('@/')) {
|
|
74
|
-
const resolved = resolveAlias(cwd, importPath);
|
|
75
|
-
if (resolved) {
|
|
76
|
-
addEdge(resolved, routeFilePath, graph);
|
|
77
|
-
await processFile(resolved, routeFilePath, cwd, graph, visited);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function addEdge(dependency, dependent, graph) {
|
|
83
|
-
const dep = node_path_1.default.resolve(dependency);
|
|
84
|
-
const dest = node_path_1.default.resolve(dependent);
|
|
85
|
-
if (!graph.has(dep))
|
|
86
|
-
graph.set(dep, new Set());
|
|
87
|
-
graph.get(dep).add(dest);
|
|
88
|
-
}
|
|
89
|
-
function resolveImport(importerFile, importPath) {
|
|
90
|
-
const dir = node_path_1.default.dirname(importerFile);
|
|
91
|
-
const target = node_path_1.default.join(dir, importPath);
|
|
92
|
-
return resolveFile(target);
|
|
93
|
-
}
|
|
94
|
-
function resolveAlias(cwd, importPath) {
|
|
95
|
-
const target = node_path_1.default.join(cwd, 'src', importPath.slice(2));
|
|
96
|
-
return resolveFile(target);
|
|
97
|
-
}
|
|
98
|
-
function resolveFile(basePath) {
|
|
99
|
-
if (basePath.endsWith('.ts') || basePath.endsWith('.js')) {
|
|
100
|
-
if ((0, node_fs_1.existsSync)(basePath))
|
|
101
|
-
return basePath;
|
|
102
|
-
}
|
|
103
|
-
const extensions = ['.ts', '.js', '/index.ts', '/index.js'];
|
|
104
|
-
for (const ext of extensions) {
|
|
105
|
-
const fullPath = basePath + ext;
|
|
106
|
-
if ((0, node_fs_1.existsSync)(fullPath))
|
|
107
|
-
return fullPath;
|
|
108
|
-
}
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=dep-graph.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dep-graph.js","sourceRoot":"","sources":["../../src/dev/dep-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/dev/hot-reload.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { Router } from '../router/router';
|
|
2
|
-
interface HotReloaderOptions {
|
|
3
|
-
apiDirs: string[];
|
|
4
|
-
router: Router;
|
|
5
|
-
routeMap: Map<string, string>;
|
|
6
|
-
mountRoute: (filePath: string, routePath: string) => Promise<void>;
|
|
7
|
-
clearCache: () => void;
|
|
8
|
-
}
|
|
9
|
-
export declare class HotReloader {
|
|
10
|
-
private apiDirs;
|
|
11
|
-
private router;
|
|
12
|
-
private routeMap;
|
|
13
|
-
private mountRoute;
|
|
14
|
-
private clearCache;
|
|
15
|
-
private watcher;
|
|
16
|
-
private depGraph;
|
|
17
|
-
constructor(opts: HotReloaderOptions);
|
|
18
|
-
start(): Promise<void>;
|
|
19
|
-
private isRouteFile;
|
|
20
|
-
private isGatewayFile;
|
|
21
|
-
private handleFileChange;
|
|
22
|
-
private handleChange;
|
|
23
|
-
private handleAdd;
|
|
24
|
-
private handleDelete;
|
|
25
|
-
private invalidateCache;
|
|
26
|
-
private filePathToRoutePath;
|
|
27
|
-
stop(): Promise<void>;
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=hot-reload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hot-reload.d.ts","sourceRoot":"","sources":["../../src/dev/hot-reload.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAsB9C,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,UAAU,CAAwD;IAC1E,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,QAAQ,CAAiC;gBAErC,IAAI,EAAE,kBAAkB;IAQ9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C5B,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,aAAa;YAKP,gBAAgB;YA6BhB,YAAY;YAyCZ,SAAS;IAiCvB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,mBAAmB;IAoCrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAM5B"}
|
package/dist/dev/hot-reload.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.HotReloader = void 0;
|
|
40
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
41
|
-
const error_overlay_1 = require("../dev/error-overlay");
|
|
42
|
-
const dep_graph_1 = require("../dev/dep-graph");
|
|
43
|
-
const c = {
|
|
44
|
-
green: '\x1b[32m',
|
|
45
|
-
cyan: '\x1b[36m',
|
|
46
|
-
yellow: '\x1b[33m',
|
|
47
|
-
red: '\x1b[31m',
|
|
48
|
-
gray: '\x1b[90m',
|
|
49
|
-
bold: '\x1b[1m',
|
|
50
|
-
reset: '\x1b[0m',
|
|
51
|
-
};
|
|
52
|
-
function ts() {
|
|
53
|
-
const now = new Date();
|
|
54
|
-
const h = String(now.getHours()).padStart(2, '0');
|
|
55
|
-
const m = String(now.getMinutes()).padStart(2, '0');
|
|
56
|
-
const s = String(now.getSeconds()).padStart(2, '0');
|
|
57
|
-
return `${c.gray}[${h}:${m}:${s}]${c.reset}`;
|
|
58
|
-
}
|
|
59
|
-
class HotReloader {
|
|
60
|
-
constructor(opts) {
|
|
61
|
-
this.watcher = null;
|
|
62
|
-
this.depGraph = new Map();
|
|
63
|
-
this.apiDirs = opts.apiDirs;
|
|
64
|
-
this.router = opts.router;
|
|
65
|
-
this.routeMap = opts.routeMap;
|
|
66
|
-
this.mountRoute = opts.mountRoute;
|
|
67
|
-
this.clearCache = opts.clearCache;
|
|
68
|
-
}
|
|
69
|
-
async start() {
|
|
70
|
-
let chokidar;
|
|
71
|
-
try {
|
|
72
|
-
chokidar = await Promise.resolve().then(() => __importStar(require('chokidar')));
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return; // chokidar not available, skip HRR
|
|
76
|
-
}
|
|
77
|
-
this.depGraph = new Map();
|
|
78
|
-
for (const dir of this.apiDirs) {
|
|
79
|
-
const graph = await (0, dep_graph_1.generateDependencyGraph)(dir, process.cwd());
|
|
80
|
-
for (const [k, v] of graph) {
|
|
81
|
-
this.depGraph.set(k, v);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
const watchDirs = this.apiDirs.map((dir) => {
|
|
85
|
-
return node_path_1.default.dirname(dir); // e.g. src/http -> src, http -> .
|
|
86
|
-
});
|
|
87
|
-
// De-duplicate watchDirs
|
|
88
|
-
const uniqueWatchDirs = Array.from(new Set(watchDirs)).map((d) => node_path_1.default.resolve(process.cwd(), d));
|
|
89
|
-
this.watcher = chokidar.watch(uniqueWatchDirs, {
|
|
90
|
-
ignoreInitial: true,
|
|
91
|
-
ignored: ['**/node_modules/**', '**/.exis/**'],
|
|
92
|
-
});
|
|
93
|
-
this.watcher.on('change', async (filePath) => {
|
|
94
|
-
await this.handleFileChange(filePath);
|
|
95
|
-
});
|
|
96
|
-
this.watcher.on('add', async (filePath) => {
|
|
97
|
-
if (this.isRouteFile(filePath)) {
|
|
98
|
-
this.handleAdd(filePath);
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
this.watcher.on('unlink', (filePath) => {
|
|
102
|
-
if (this.isRouteFile(filePath)) {
|
|
103
|
-
this.handleDelete(filePath);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
isRouteFile(filePath) {
|
|
108
|
-
const base = node_path_1.default.basename(filePath);
|
|
109
|
-
return base === 'route.ts' || base === 'route.js';
|
|
110
|
-
}
|
|
111
|
-
isGatewayFile(filePath) {
|
|
112
|
-
const base = node_path_1.default.basename(filePath);
|
|
113
|
-
return base === 'gateway.ts' || base === 'gateway.js';
|
|
114
|
-
}
|
|
115
|
-
async handleFileChange(filePath) {
|
|
116
|
-
const normalized = node_path_1.default.resolve(filePath);
|
|
117
|
-
if (this.isRouteFile(normalized)) {
|
|
118
|
-
return this.handleChange(normalized);
|
|
119
|
-
}
|
|
120
|
-
if (this.isGatewayFile(normalized)) {
|
|
121
|
-
const gatewayDir = node_path_1.default.dirname(normalized);
|
|
122
|
-
this.invalidateCache(normalized);
|
|
123
|
-
for (const [routeFile] of this.routeMap) {
|
|
124
|
-
if (routeFile.startsWith(gatewayDir)) {
|
|
125
|
-
await this.handleChange(routeFile);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
if (this.depGraph.has(normalized)) {
|
|
131
|
-
const dependents = this.depGraph.get(normalized);
|
|
132
|
-
if (dependents.size > 0) {
|
|
133
|
-
this.invalidateCache(normalized);
|
|
134
|
-
for (const routeFile of dependents) {
|
|
135
|
-
await this.handleChange(routeFile);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
async handleChange(filePath) {
|
|
141
|
-
const start = performance.now();
|
|
142
|
-
const normalized = node_path_1.default.resolve(filePath);
|
|
143
|
-
const routePath = this.routeMap.get(normalized);
|
|
144
|
-
if (!routePath) {
|
|
145
|
-
// Unknown route file, try to compute the route path
|
|
146
|
-
return this.handleAdd(filePath);
|
|
147
|
-
}
|
|
148
|
-
// 1. Remove old routes from this file
|
|
149
|
-
this.router.removeRoutesBySource(normalized);
|
|
150
|
-
// 2. Clear the module cache so we get a fresh import
|
|
151
|
-
this.invalidateCache(normalized);
|
|
152
|
-
// 3. Re-import and mount
|
|
153
|
-
try {
|
|
154
|
-
await this.mountRoute(normalized, routePath);
|
|
155
|
-
// Update dependency graph
|
|
156
|
-
this.depGraph = new Map();
|
|
157
|
-
for (const dir of this.apiDirs) {
|
|
158
|
-
const graph = await (0, dep_graph_1.generateDependencyGraph)(dir, process.cwd());
|
|
159
|
-
for (const [k, v] of graph) {
|
|
160
|
-
this.depGraph.set(k, v);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
const elapsed = Math.round(performance.now() - start);
|
|
164
|
-
const relative = node_path_1.default
|
|
165
|
-
.relative(process.cwd(), normalized)
|
|
166
|
-
.replace(/\\/g, '/');
|
|
167
|
-
console.log(`${ts()} ${c.green}HMR:${c.reset} Reloaded ${c.cyan}${relative}${c.reset} in ${elapsed}ms`);
|
|
168
|
-
}
|
|
169
|
-
catch (err) {
|
|
170
|
-
(0, error_overlay_1.formatDevError)(err, normalized);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
async handleAdd(filePath) {
|
|
174
|
-
const normalized = node_path_1.default.resolve(filePath);
|
|
175
|
-
// Compute the route path from the file path
|
|
176
|
-
const routePath = this.filePathToRoutePath(normalized);
|
|
177
|
-
if (!routePath)
|
|
178
|
-
return;
|
|
179
|
-
this.routeMap.set(normalized, routePath);
|
|
180
|
-
try {
|
|
181
|
-
this.invalidateCache(normalized);
|
|
182
|
-
await this.mountRoute(normalized, routePath);
|
|
183
|
-
// Update dependency graph for the new file
|
|
184
|
-
this.depGraph = new Map();
|
|
185
|
-
for (const dir of this.apiDirs) {
|
|
186
|
-
const graph = await (0, dep_graph_1.generateDependencyGraph)(dir, process.cwd());
|
|
187
|
-
for (const [k, v] of graph) {
|
|
188
|
-
this.depGraph.set(k, v);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
const relative = node_path_1.default
|
|
192
|
-
.relative(process.cwd(), normalized)
|
|
193
|
-
.replace(/\\/g, '/');
|
|
194
|
-
console.log(`${ts()} ${c.green}HMR:${c.reset} Added route ${c.cyan}${relative}${c.reset} → ${c.yellow}${routePath}${c.reset}`);
|
|
195
|
-
}
|
|
196
|
-
catch (err) {
|
|
197
|
-
(0, error_overlay_1.formatDevError)(err, normalized);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
handleDelete(filePath) {
|
|
201
|
-
const normalized = node_path_1.default.resolve(filePath);
|
|
202
|
-
const removed = this.router.removeRoutesBySource(normalized);
|
|
203
|
-
this.routeMap.delete(normalized);
|
|
204
|
-
if (removed > 0) {
|
|
205
|
-
const relative = node_path_1.default
|
|
206
|
-
.relative(process.cwd(), normalized)
|
|
207
|
-
.replace(/\\/g, '/');
|
|
208
|
-
console.log(`${ts()} ${c.red}HMR:${c.reset} Removed route ${c.cyan}${relative}${c.reset} (${removed} handler${removed > 1 ? 's' : ''})`);
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
invalidateCache(filePath) {
|
|
212
|
-
// Clear CommonJS cache
|
|
213
|
-
const resolved = require.resolve(filePath);
|
|
214
|
-
if (resolved && require.cache[resolved]) {
|
|
215
|
-
delete require.cache[resolved];
|
|
216
|
-
}
|
|
217
|
-
// For ESM, we append a cache-busting query param on the import URL
|
|
218
|
-
// This is handled in the mountRoute function
|
|
219
|
-
this.clearCache();
|
|
220
|
-
}
|
|
221
|
-
filePathToRoutePath(filePath) {
|
|
222
|
-
let matchedApiDir = null;
|
|
223
|
-
for (const dir of this.apiDirs) {
|
|
224
|
-
if (filePath.startsWith(node_path_1.default.resolve(dir))) {
|
|
225
|
-
matchedApiDir = dir;
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
if (!matchedApiDir)
|
|
230
|
-
return null;
|
|
231
|
-
const relative = node_path_1.default.relative(matchedApiDir, filePath).replace(/\\/g, '/');
|
|
232
|
-
// Remove route.ts / route.js from the end
|
|
233
|
-
const dir = node_path_1.default.dirname(relative);
|
|
234
|
-
let routePath = '/api';
|
|
235
|
-
if (dir !== '.') {
|
|
236
|
-
const segments = dir.split('/').map((segment) => {
|
|
237
|
-
// Skip (group) folders
|
|
238
|
-
if (segment.startsWith('(') && segment.endsWith(')'))
|
|
239
|
-
return null;
|
|
240
|
-
// [...slug] catch-all
|
|
241
|
-
if (segment.startsWith('[...') && segment.endsWith(']')) {
|
|
242
|
-
return '*' + segment.slice(4, -1);
|
|
243
|
-
}
|
|
244
|
-
// [id] dynamic param
|
|
245
|
-
return segment.replace(/\[(.*?)\]/g, ':$1');
|
|
246
|
-
});
|
|
247
|
-
const validSegments = segments.filter(Boolean);
|
|
248
|
-
if (validSegments.length > 0) {
|
|
249
|
-
routePath += '/' + validSegments.join('/');
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
return routePath;
|
|
253
|
-
}
|
|
254
|
-
async stop() {
|
|
255
|
-
if (this.watcher) {
|
|
256
|
-
await this.watcher.close();
|
|
257
|
-
this.watcher = null;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
exports.HotReloader = HotReloader;
|
|
262
|
-
//# sourceMappingURL=hot-reload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hot-reload.js","sourceRoot":"","sources":["../../src/dev/hot-reload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
nextUrl: "/"
|
|
3
|
-
nextTitle: "Back to Home"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Adapters & Serverless
|
|
7
|
-
|
|
8
|
-
ExisJS was engineered using modern web standards (Fetch API, Request/Response patterns). Because of this, ExisJS can run across various JavaScript runtimes.
|
|
9
|
-
|
|
10
|
-
To deploy your ExisJS application to serverless or edge environments, you simply wrap your `app` with the corresponding adapter from `exisjs/adapters`.
|
|
11
|
-
|
|
12
|
-
Every adapter handles **lazy initialization** automatically—your routes, plugins, and lifecycle hooks (`onStart`) are bootstrapped on the very first incoming request (cold start), so you never have to worry about manual setup in serverless environments.
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Available Adapters
|
|
17
|
-
|
|
18
|
-
| Adapter | Import | Environment |
|
|
19
|
-
|---------|--------|-------------|
|
|
20
|
-
| `vercel` | `exisjs/adapters` | Vercel Serverless Functions |
|
|
21
|
-
| `aws` | `exisjs/adapters` | AWS Lambda + API Gateway |
|
|
22
|
-
| `cloudflare` | `exisjs/adapters` | Cloudflare Workers |
|
|
23
|
-
| `netlify` | `exisjs/adapters` | Netlify Edge Functions |
|
|
24
|
-
| `deno` | `exisjs/adapters` | Deno Deploy / Deno.serve |
|
|
25
|
-
| `bun` | `exisjs/adapters` | Bun.serve |
|
|
26
|
-
| `fastly` | `exisjs/adapters` | Fastly Compute@Edge |
|
|
27
|
-
|
|
28
|
-
> [!WARNING]
|
|
29
|
-
> **Edge Limitations**: When deploying to Edge runtimes (Cloudflare Workers, Vercel Edge, Netlify Edge, Fastly), some Node.js specific features will not function. Specifically:
|
|
30
|
-
> - **Queues & Cron**: Background jobs and scheduled tasks require a long-running process and are unsupported on Edge.
|
|
31
|
-
> - **WebSockets**: State-heavy WebSockets are not supported via the standard Edge Fetch adapters.
|
|
32
|
-
> - **FileSystem Cache**: `FileSystemCacheStore` cannot write to a filesystem on Edge. You must configure a `RedisCacheStore` if you need caching on the Edge.
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Vercel
|
|
37
|
-
|
|
38
|
-
To deploy an ExisJS app to Vercel, create an `api/index.js` entrypoint that wraps your app with the `vercel` adapter.
|
|
39
|
-
|
|
40
|
-
```javascript filename="api/index.js"
|
|
41
|
-
import { dirname, join } from "node:path";
|
|
42
|
-
import { fileURLToPath } from "node:url";
|
|
43
|
-
import { vercel } from "exisjs/adapters";
|
|
44
|
-
|
|
45
|
-
const projectRoot = join(dirname(fileURLToPath(import.meta.url)), "..");
|
|
46
|
-
|
|
47
|
-
// We use a dynamic import with a file URL to prevent Vercel's bundler (@vercel/node)
|
|
48
|
-
// from statically cloning dependencies (like Mongoose) into the entrypoint.
|
|
49
|
-
// This ensures your dynamic routes and server use the exact same module instances.
|
|
50
|
-
const serverPath = join(projectRoot, ".exis", "server", "src", "http", "server.js");
|
|
51
|
-
const { default: app } = await import("file://" + serverPath);
|
|
52
|
-
|
|
53
|
-
export default vercel(app, { cwd: projectRoot });
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Then configure `vercel.json` to route all traffic to this function and bundle the compiled `.exis` directory:
|
|
57
|
-
|
|
58
|
-
```json filename="vercel.json"
|
|
59
|
-
{
|
|
60
|
-
"version": 2,
|
|
61
|
-
"buildCommand": "npm run build",
|
|
62
|
-
"functions": {
|
|
63
|
-
"api/index.js": {
|
|
64
|
-
"includeFiles": ".exis/**/*"
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
"rewrites": [
|
|
68
|
-
{ "source": "/(.*)", "destination": "/api/index" }
|
|
69
|
-
]
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
> **Note:** ExisJS compiles your application into the `.exis/` directory during `exisjs build`. The `includeFiles` configuration ensures Vercel bundles these compiled files alongside your serverless function. You also need a `public/` directory (even an empty one with a `.keep` file) to prevent Vercel's missing output directory error.
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## AWS Lambda
|
|
78
|
-
|
|
79
|
-
Deploying an ExisJS API as an AWS Lambda function (behind API Gateway) takes one line of code. The `aws` adapter converts API Gateway events into native Node.js HTTP streams that ExisJS understands.
|
|
80
|
-
|
|
81
|
-
```typescript filename="src/lambda.ts"
|
|
82
|
-
import app from './http/server'
|
|
83
|
-
import { aws } from 'exisjs/adapters'
|
|
84
|
-
|
|
85
|
-
// Export the AWS Lambda handler
|
|
86
|
-
export const handler = aws(app)
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
The adapter automatically handles:
|
|
90
|
-
- Mapping `httpMethod`, `path`, and `queryStringParameters` from API Gateway events
|
|
91
|
-
- Converting headers and request bodies
|
|
92
|
-
- Collecting the response stream and returning a properly formatted `APIGatewayResult`
|
|
93
|
-
- Base64 encoding for binary responses
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
## Cloudflare Workers
|
|
98
|
-
|
|
99
|
-
ExisJS works on Cloudflare Workers using the Web Standard Fetch API.
|
|
100
|
-
|
|
101
|
-
```typescript filename="src/worker.ts"
|
|
102
|
-
import app from './http/server'
|
|
103
|
-
import { cloudflare } from 'exisjs/adapters'
|
|
104
|
-
|
|
105
|
-
export default cloudflare(app)
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
The adapter returns an object with a `fetch` method that Cloudflare Workers expects. Your `env` and `ctx` (execution context) are automatically passed through to your route handlers.
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Netlify
|
|
113
|
-
|
|
114
|
-
Netlify Edge Functions use the Web Standard Fetch API, which ExisJS supports.
|
|
115
|
-
|
|
116
|
-
```typescript filename="netlify/edge-functions/api.ts"
|
|
117
|
-
import app from '../../src/http/server'
|
|
118
|
-
import { netlify } from 'exisjs/adapters'
|
|
119
|
-
|
|
120
|
-
export default netlify(app)
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
The adapter wraps your app and passes both the incoming `Request` and Netlify's `Context` object through to ExisJS.
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## Deno
|
|
128
|
-
|
|
129
|
-
Deno natively supports the Web Standard Fetch API, so ExisJS runs on it without any compatibility layers.
|
|
130
|
-
|
|
131
|
-
```typescript filename="src/main.ts"
|
|
132
|
-
import app from './http/server'
|
|
133
|
-
import { deno } from 'exisjs/adapters'
|
|
134
|
-
|
|
135
|
-
Deno.serve({ port: 8000 }, deno(app))
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Bun
|
|
141
|
-
|
|
142
|
-
Bun provides a native HTTP server. The `bun` adapter ties directly into Bun's `serve` function.
|
|
143
|
-
|
|
144
|
-
```typescript filename="src/main.ts"
|
|
145
|
-
import app from './http/server'
|
|
146
|
-
import { bun } from 'exisjs/adapters'
|
|
147
|
-
|
|
148
|
-
Bun.serve({
|
|
149
|
-
port: 3000,
|
|
150
|
-
...bun(app)
|
|
151
|
-
})
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## Fastly Compute@Edge
|
|
157
|
-
|
|
158
|
-
Fastly's Compute@Edge platform runs your code at the network edge. The `fastly` adapter integrates with Fastly's event-driven model.
|
|
159
|
-
|
|
160
|
-
```typescript filename="src/index.ts"
|
|
161
|
-
import app from './http/server'
|
|
162
|
-
import { fastly } from 'exisjs/adapters'
|
|
163
|
-
|
|
164
|
-
addEventListener('fetch', fastly(app))
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
## The Fetch Adapter (Building Custom Adapters)
|
|
170
|
-
|
|
171
|
-
Under the hood, ExisJS provides a universal **Fetch adapter** (`handleFetch`) that bridges the gap between the Web Standard `Request`/`Response` API and ExisJS's internal Node.js-style request pipeline.
|
|
172
|
-
|
|
173
|
-
Every edge/serverless adapter (Cloudflare, Deno, Bun, Netlify, Fastly) ultimately calls `app.fetch()`, which internally uses `handleFetch` to:
|
|
174
|
-
|
|
175
|
-
1. **Convert** a Web Standard `Request` into a Node.js-compatible `IncomingMessage` (via `FetchIncomingMessage`)
|
|
176
|
-
2. **Route** the request through ExisJS's full middleware and routing pipeline
|
|
177
|
-
3. **Collect** the response and convert it back into a Web Standard `Response` (via `FetchServerResponse`)
|
|
178
|
-
|
|
179
|
-
This means you can create your own custom adapter for **any** runtime that supports the Fetch API:
|
|
180
|
-
|
|
181
|
-
```typescript filename="src/my-custom-adapter.ts"
|
|
182
|
-
import app from './http/server'
|
|
183
|
-
|
|
184
|
-
// app.fetch() works anywhere that has the Web Standard Request/Response API
|
|
185
|
-
const server = createMyCustomServer({
|
|
186
|
-
async handler(request: Request): Promise<Response> {
|
|
187
|
-
return app.fetch(request)
|
|
188
|
-
}
|
|
189
|
-
})
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
The `app.fetch()` method accepts an optional `env` and `ctx` parameter, which are passed through to your route handlers—allowing platform-specific features (like Cloudflare's KV bindings or Deno's connection info) to be accessed from within your ExisJS routes.
|
|
193
|
-
|
|
194
|
-
```typescript
|
|
195
|
-
// Signature
|
|
196
|
-
app.fetch(request: Request, env?: any, ctx?: any): Promise<Response>
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
This architecture ensures that ExisJS remains portable. Your application code stays the same—only the deployment wrapper changes.
|