nitrostack 1.0.83 → 1.0.85
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +42 -137
- package/assets/gif/nitrocli.gif +0 -0
- package/assets/gif/nitrostudio-chat.gif +0 -0
- package/assets/gif/nitrostudio-main.gif +0 -0
- package/assets/gif/nitrostudio-testing.gif +0 -0
- package/package.json +15 -50
- package/dist/auth/__tests__/api-key.test.d.ts +0 -2
- package/dist/auth/__tests__/api-key.test.d.ts.map +0 -1
- package/dist/auth/__tests__/api-key.test.js +0 -156
- package/dist/auth/__tests__/api-key.test.js.map +0 -1
- package/dist/auth/__tests__/client.test.d.ts +0 -2
- package/dist/auth/__tests__/client.test.d.ts.map +0 -1
- package/dist/auth/__tests__/client.test.js +0 -173
- package/dist/auth/__tests__/client.test.js.map +0 -1
- package/dist/auth/__tests__/middleware.test.d.ts +0 -2
- package/dist/auth/__tests__/middleware.test.d.ts.map +0 -1
- package/dist/auth/__tests__/middleware.test.js +0 -232
- package/dist/auth/__tests__/middleware.test.js.map +0 -1
- package/dist/auth/__tests__/pkce.test.d.ts +0 -2
- package/dist/auth/__tests__/pkce.test.d.ts.map +0 -1
- package/dist/auth/__tests__/pkce.test.js +0 -110
- package/dist/auth/__tests__/pkce.test.js.map +0 -1
- package/dist/auth/__tests__/quick-setup.test.d.ts +0 -2
- package/dist/auth/__tests__/quick-setup.test.d.ts.map +0 -1
- package/dist/auth/__tests__/quick-setup.test.js +0 -95
- package/dist/auth/__tests__/quick-setup.test.js.map +0 -1
- package/dist/auth/__tests__/secure-secret.test.d.ts +0 -2
- package/dist/auth/__tests__/secure-secret.test.d.ts.map +0 -1
- package/dist/auth/__tests__/secure-secret.test.js +0 -104
- package/dist/auth/__tests__/secure-secret.test.js.map +0 -1
- package/dist/auth/__tests__/server-integration.test.d.ts +0 -2
- package/dist/auth/__tests__/server-integration.test.d.ts.map +0 -1
- package/dist/auth/__tests__/server-integration.test.js +0 -156
- package/dist/auth/__tests__/server-integration.test.js.map +0 -1
- package/dist/auth/__tests__/server-metadata.test.d.ts +0 -2
- package/dist/auth/__tests__/server-metadata.test.d.ts.map +0 -1
- package/dist/auth/__tests__/server-metadata.test.js +0 -72
- package/dist/auth/__tests__/server-metadata.test.js.map +0 -1
- package/dist/auth/__tests__/simple-jwt.test.d.ts +0 -2
- package/dist/auth/__tests__/simple-jwt.test.d.ts.map +0 -1
- package/dist/auth/__tests__/simple-jwt.test.js +0 -125
- package/dist/auth/__tests__/simple-jwt.test.js.map +0 -1
- package/dist/auth/__tests__/token-store.test.d.ts +0 -2
- package/dist/auth/__tests__/token-store.test.d.ts.map +0 -1
- package/dist/auth/__tests__/token-store.test.js +0 -167
- package/dist/auth/__tests__/token-store.test.js.map +0 -1
- package/dist/auth/__tests__/token-validation.test.d.ts +0 -2
- package/dist/auth/__tests__/token-validation.test.d.ts.map +0 -1
- package/dist/auth/__tests__/token-validation.test.js +0 -219
- package/dist/auth/__tests__/token-validation.test.js.map +0 -1
- package/dist/auth/api-key.d.ts +0 -118
- package/dist/auth/api-key.d.ts.map +0 -1
- package/dist/auth/api-key.js +0 -168
- package/dist/auth/api-key.js.map +0 -1
- package/dist/auth/client.d.ts +0 -151
- package/dist/auth/client.d.ts.map +0 -1
- package/dist/auth/client.js +0 -330
- package/dist/auth/client.js.map +0 -1
- package/dist/auth/index.d.ts +0 -31
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -46
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/middleware.d.ts +0 -95
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -260
- package/dist/auth/middleware.js.map +0 -1
- package/dist/auth/pkce.d.ts +0 -53
- package/dist/auth/pkce.d.ts.map +0 -1
- package/dist/auth/pkce.js +0 -105
- package/dist/auth/pkce.js.map +0 -1
- package/dist/auth/quick-setup.d.ts +0 -94
- package/dist/auth/quick-setup.d.ts.map +0 -1
- package/dist/auth/quick-setup.js +0 -210
- package/dist/auth/quick-setup.js.map +0 -1
- package/dist/auth/secure-secret.d.ts +0 -136
- package/dist/auth/secure-secret.d.ts.map +0 -1
- package/dist/auth/secure-secret.js +0 -182
- package/dist/auth/secure-secret.js.map +0 -1
- package/dist/auth/server-integration.d.ts +0 -97
- package/dist/auth/server-integration.d.ts.map +0 -1
- package/dist/auth/server-integration.js +0 -182
- package/dist/auth/server-integration.js.map +0 -1
- package/dist/auth/server-metadata.d.ts +0 -51
- package/dist/auth/server-metadata.d.ts.map +0 -1
- package/dist/auth/server-metadata.js +0 -106
- package/dist/auth/server-metadata.js.map +0 -1
- package/dist/auth/simple-jwt.d.ts +0 -174
- package/dist/auth/simple-jwt.d.ts.map +0 -1
- package/dist/auth/simple-jwt.js +0 -162
- package/dist/auth/simple-jwt.js.map +0 -1
- package/dist/auth/token-store.d.ts +0 -104
- package/dist/auth/token-store.d.ts.map +0 -1
- package/dist/auth/token-store.js +0 -205
- package/dist/auth/token-store.js.map +0 -1
- package/dist/auth/token-validation.d.ts +0 -59
- package/dist/auth/token-validation.d.ts.map +0 -1
- package/dist/auth/token-validation.js +0 -241
- package/dist/auth/token-validation.js.map +0 -1
- package/dist/auth/types.d.ts +0 -215
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/auth/types.js +0 -6
- package/dist/auth/types.js.map +0 -1
- package/dist/core/__tests__/app-decorator.test.d.ts +0 -2
- package/dist/core/__tests__/app-decorator.test.d.ts.map +0 -1
- package/dist/core/__tests__/app-decorator.test.js +0 -100
- package/dist/core/__tests__/app-decorator.test.js.map +0 -1
- package/dist/core/__tests__/app-factory.extended.test.d.ts +0 -2
- package/dist/core/__tests__/app-factory.extended.test.d.ts.map +0 -1
- package/dist/core/__tests__/app-factory.extended.test.js +0 -244
- package/dist/core/__tests__/app-factory.extended.test.js.map +0 -1
- package/dist/core/__tests__/builders.test.d.ts +0 -2
- package/dist/core/__tests__/builders.test.d.ts.map +0 -1
- package/dist/core/__tests__/builders.test.js +0 -98
- package/dist/core/__tests__/builders.test.js.map +0 -1
- package/dist/core/__tests__/component.test.d.ts +0 -2
- package/dist/core/__tests__/component.test.d.ts.map +0 -1
- package/dist/core/__tests__/component.test.js +0 -151
- package/dist/core/__tests__/component.test.js.map +0 -1
- package/dist/core/__tests__/config-module.test.d.ts +0 -2
- package/dist/core/__tests__/config-module.test.d.ts.map +0 -1
- package/dist/core/__tests__/config-module.test.js +0 -90
- package/dist/core/__tests__/config-module.test.js.map +0 -1
- package/dist/core/__tests__/core-modules.test.d.ts +0 -2
- package/dist/core/__tests__/core-modules.test.d.ts.map +0 -1
- package/dist/core/__tests__/core-modules.test.js +0 -36
- package/dist/core/__tests__/core-modules.test.js.map +0 -1
- package/dist/core/__tests__/di.test.d.ts +0 -2
- package/dist/core/__tests__/di.test.d.ts.map +0 -1
- package/dist/core/__tests__/di.test.js +0 -101
- package/dist/core/__tests__/di.test.js.map +0 -1
- package/dist/core/__tests__/errors.test.d.ts +0 -2
- package/dist/core/__tests__/errors.test.d.ts.map +0 -1
- package/dist/core/__tests__/errors.test.js +0 -109
- package/dist/core/__tests__/errors.test.js.map +0 -1
- package/dist/core/__tests__/final.blitz.test.d.ts +0 -2
- package/dist/core/__tests__/final.blitz.test.d.ts.map +0 -1
- package/dist/core/__tests__/final.blitz.test.js +0 -327
- package/dist/core/__tests__/final.blitz.test.js.map +0 -1
- package/dist/core/__tests__/jwt-module.test.d.ts +0 -2
- package/dist/core/__tests__/jwt-module.test.d.ts.map +0 -1
- package/dist/core/__tests__/jwt-module.test.js +0 -60
- package/dist/core/__tests__/jwt-module.test.js.map +0 -1
- package/dist/core/__tests__/logger.test.d.ts +0 -2
- package/dist/core/__tests__/logger.test.d.ts.map +0 -1
- package/dist/core/__tests__/logger.test.js +0 -83
- package/dist/core/__tests__/logger.test.js.map +0 -1
- package/dist/core/__tests__/models.test.d.ts +0 -2
- package/dist/core/__tests__/models.test.d.ts.map +0 -1
- package/dist/core/__tests__/models.test.js +0 -142
- package/dist/core/__tests__/models.test.js.map +0 -1
- package/dist/core/__tests__/module.test.d.ts +0 -2
- package/dist/core/__tests__/module.test.d.ts.map +0 -1
- package/dist/core/__tests__/module.test.js +0 -58
- package/dist/core/__tests__/module.test.js.map +0 -1
- package/dist/core/__tests__/oauth-module.test.d.ts +0 -2
- package/dist/core/__tests__/oauth-module.test.d.ts.map +0 -1
- package/dist/core/__tests__/oauth-module.test.js +0 -168
- package/dist/core/__tests__/oauth-module.test.js.map +0 -1
- package/dist/core/__tests__/oauth.extended.test.d.ts +0 -2
- package/dist/core/__tests__/oauth.extended.test.d.ts.map +0 -1
- package/dist/core/__tests__/oauth.extended.test.js +0 -146
- package/dist/core/__tests__/oauth.extended.test.js.map +0 -1
- package/dist/core/__tests__/prompt.test.d.ts +0 -2
- package/dist/core/__tests__/prompt.test.d.ts.map +0 -1
- package/dist/core/__tests__/prompt.test.js +0 -126
- package/dist/core/__tests__/prompt.test.js.map +0 -1
- package/dist/core/__tests__/resource.test.d.ts +0 -2
- package/dist/core/__tests__/resource.test.d.ts.map +0 -1
- package/dist/core/__tests__/resource.test.js +0 -173
- package/dist/core/__tests__/resource.test.js.map +0 -1
- package/dist/core/__tests__/server.extended.test.d.ts +0 -2
- package/dist/core/__tests__/server.extended.test.d.ts.map +0 -1
- package/dist/core/__tests__/server.extended.test.js +0 -242
- package/dist/core/__tests__/server.extended.test.js.map +0 -1
- package/dist/core/__tests__/server.test.d.ts +0 -2
- package/dist/core/__tests__/server.test.d.ts.map +0 -1
- package/dist/core/__tests__/server.test.js +0 -120
- package/dist/core/__tests__/server.test.js.map +0 -1
- package/dist/core/__tests__/transport.http.test.d.ts +0 -2
- package/dist/core/__tests__/transport.http.test.d.ts.map +0 -1
- package/dist/core/__tests__/transport.http.test.js +0 -119
- package/dist/core/__tests__/transport.http.test.js.map +0 -1
- package/dist/core/__tests__/transport.streamable.test.d.ts +0 -2
- package/dist/core/__tests__/transport.streamable.test.d.ts.map +0 -1
- package/dist/core/__tests__/transport.streamable.test.js +0 -168
- package/dist/core/__tests__/transport.streamable.test.js.map +0 -1
- package/dist/core/__tests__/transports.test.d.ts +0 -2
- package/dist/core/__tests__/transports.test.d.ts.map +0 -1
- package/dist/core/__tests__/transports.test.js +0 -12
- package/dist/core/__tests__/transports.test.js.map +0 -1
- package/dist/core/apikey-module.d.ts +0 -69
- package/dist/core/apikey-module.d.ts.map +0 -1
- package/dist/core/apikey-module.js +0 -114
- package/dist/core/apikey-module.js.map +0 -1
- package/dist/core/app-decorator.d.ts +0 -59
- package/dist/core/app-decorator.d.ts.map +0 -1
- package/dist/core/app-decorator.js +0 -322
- package/dist/core/app-decorator.js.map +0 -1
- package/dist/core/builders.d.ts +0 -50
- package/dist/core/builders.d.ts.map +0 -1
- package/dist/core/builders.js +0 -139
- package/dist/core/builders.js.map +0 -1
- package/dist/core/component.d.ts +0 -111
- package/dist/core/component.d.ts.map +0 -1
- package/dist/core/component.js +0 -228
- package/dist/core/component.js.map +0 -1
- package/dist/core/config-module.d.ts +0 -62
- package/dist/core/config-module.d.ts.map +0 -1
- package/dist/core/config-module.js +0 -94
- package/dist/core/config-module.js.map +0 -1
- package/dist/core/decorators/__tests__/decorators.test.d.ts +0 -2
- package/dist/core/decorators/__tests__/decorators.test.d.ts.map +0 -1
- package/dist/core/decorators/__tests__/decorators.test.js +0 -103
- package/dist/core/decorators/__tests__/decorators.test.js.map +0 -1
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts +0 -2
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts.map +0 -1
- package/dist/core/decorators/__tests__/extended-decorators.test.js +0 -194
- package/dist/core/decorators/__tests__/extended-decorators.test.js.map +0 -1
- package/dist/core/decorators/__tests__/health-check.test.d.ts +0 -2
- package/dist/core/decorators/__tests__/health-check.test.d.ts.map +0 -1
- package/dist/core/decorators/__tests__/health-check.test.js +0 -119
- package/dist/core/decorators/__tests__/health-check.test.js.map +0 -1
- package/dist/core/decorators/cache.decorator.d.ts +0 -61
- package/dist/core/decorators/cache.decorator.d.ts.map +0 -1
- package/dist/core/decorators/cache.decorator.js +0 -115
- package/dist/core/decorators/cache.decorator.js.map +0 -1
- package/dist/core/decorators/health-check.decorator.d.ts +0 -80
- package/dist/core/decorators/health-check.decorator.d.ts.map +0 -1
- package/dist/core/decorators/health-check.decorator.js +0 -153
- package/dist/core/decorators/health-check.decorator.js.map +0 -1
- package/dist/core/decorators/rate-limit.decorator.d.ts +0 -63
- package/dist/core/decorators/rate-limit.decorator.d.ts.map +0 -1
- package/dist/core/decorators/rate-limit.decorator.js +0 -129
- package/dist/core/decorators/rate-limit.decorator.js.map +0 -1
- package/dist/core/decorators.d.ts +0 -190
- package/dist/core/decorators.d.ts.map +0 -1
- package/dist/core/decorators.js +0 -170
- package/dist/core/decorators.js.map +0 -1
- package/dist/core/di/__tests__/container.test.d.ts +0 -2
- package/dist/core/di/__tests__/container.test.d.ts.map +0 -1
- package/dist/core/di/__tests__/container.test.js +0 -88
- package/dist/core/di/__tests__/container.test.js.map +0 -1
- package/dist/core/di/container.d.ts +0 -64
- package/dist/core/di/container.d.ts.map +0 -1
- package/dist/core/di/container.js +0 -105
- package/dist/core/di/container.js.map +0 -1
- package/dist/core/di/injectable.decorator.d.ts +0 -62
- package/dist/core/di/injectable.decorator.d.ts.map +0 -1
- package/dist/core/di/injectable.decorator.js +0 -66
- package/dist/core/di/injectable.decorator.js.map +0 -1
- package/dist/core/di/metadata-shim.d.ts +0 -31
- package/dist/core/di/metadata-shim.d.ts.map +0 -1
- package/dist/core/di/metadata-shim.js +0 -181
- package/dist/core/di/metadata-shim.js.map +0 -1
- package/dist/core/errors.d.ts +0 -54
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -87
- package/dist/core/errors.js.map +0 -1
- package/dist/core/events/__tests__/events.test.d.ts +0 -2
- package/dist/core/events/__tests__/events.test.d.ts.map +0 -1
- package/dist/core/events/__tests__/events.test.js +0 -177
- package/dist/core/events/__tests__/events.test.js.map +0 -1
- package/dist/core/events/event-emitter.d.ts +0 -50
- package/dist/core/events/event-emitter.d.ts.map +0 -1
- package/dist/core/events/event-emitter.js +0 -94
- package/dist/core/events/event-emitter.js.map +0 -1
- package/dist/core/events/event.decorator.d.ts +0 -48
- package/dist/core/events/event.decorator.d.ts.map +0 -1
- package/dist/core/events/event.decorator.js +0 -72
- package/dist/core/events/event.decorator.js.map +0 -1
- package/dist/core/events/log-emitter.d.ts +0 -14
- package/dist/core/events/log-emitter.d.ts.map +0 -1
- package/dist/core/events/log-emitter.js +0 -20
- package/dist/core/events/log-emitter.js.map +0 -1
- package/dist/core/filters/__tests__/filters.test.d.ts +0 -2
- package/dist/core/filters/__tests__/filters.test.d.ts.map +0 -1
- package/dist/core/filters/__tests__/filters.test.js +0 -72
- package/dist/core/filters/__tests__/filters.test.js.map +0 -1
- package/dist/core/filters/exception-filter.decorator.d.ts +0 -40
- package/dist/core/filters/exception-filter.decorator.d.ts.map +0 -1
- package/dist/core/filters/exception-filter.decorator.js +0 -54
- package/dist/core/filters/exception-filter.decorator.js.map +0 -1
- package/dist/core/filters/exception-filter.interface.d.ts +0 -39
- package/dist/core/filters/exception-filter.interface.d.ts.map +0 -1
- package/dist/core/filters/exception-filter.interface.js +0 -2
- package/dist/core/filters/exception-filter.interface.js.map +0 -1
- package/dist/core/guards/__tests__/guards.test.d.ts +0 -2
- package/dist/core/guards/__tests__/guards.test.d.ts.map +0 -1
- package/dist/core/guards/__tests__/guards.test.js +0 -55
- package/dist/core/guards/__tests__/guards.test.js.map +0 -1
- package/dist/core/guards/apikey.guard.d.ts +0 -22
- package/dist/core/guards/apikey.guard.d.ts.map +0 -1
- package/dist/core/guards/apikey.guard.js +0 -11
- package/dist/core/guards/apikey.guard.js.map +0 -1
- package/dist/core/guards/guard.interface.d.ts +0 -18
- package/dist/core/guards/guard.interface.d.ts.map +0 -1
- package/dist/core/guards/guard.interface.js +0 -2
- package/dist/core/guards/guard.interface.js.map +0 -1
- package/dist/core/guards/jwt.guard.d.ts +0 -18
- package/dist/core/guards/jwt.guard.d.ts.map +0 -1
- package/dist/core/guards/jwt.guard.js +0 -2
- package/dist/core/guards/jwt.guard.js.map +0 -1
- package/dist/core/guards/oauth.guard.d.ts +0 -35
- package/dist/core/guards/oauth.guard.d.ts.map +0 -1
- package/dist/core/guards/oauth.guard.js +0 -2
- package/dist/core/guards/oauth.guard.js.map +0 -1
- package/dist/core/guards/use-guards.decorator.d.ts +0 -25
- package/dist/core/guards/use-guards.decorator.d.ts.map +0 -1
- package/dist/core/guards/use-guards.decorator.js +0 -32
- package/dist/core/guards/use-guards.decorator.js.map +0 -1
- package/dist/core/health/__tests__/health.test.d.ts +0 -2
- package/dist/core/health/__tests__/health.test.d.ts.map +0 -1
- package/dist/core/health/__tests__/health.test.js +0 -31
- package/dist/core/health/__tests__/health.test.js.map +0 -1
- package/dist/core/health/health-checks.resource.d.ts +0 -14
- package/dist/core/health/health-checks.resource.d.ts.map +0 -1
- package/dist/core/health/health-checks.resource.js +0 -29
- package/dist/core/health/health-checks.resource.js.map +0 -1
- package/dist/core/index.d.ts +0 -57
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -59
- package/dist/core/index.js.map +0 -1
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts +0 -2
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts.map +0 -1
- package/dist/core/interceptors/__tests__/interceptors.test.js +0 -52
- package/dist/core/interceptors/__tests__/interceptors.test.js.map +0 -1
- package/dist/core/interceptors/interceptor.decorator.d.ts +0 -37
- package/dist/core/interceptors/interceptor.decorator.d.ts.map +0 -1
- package/dist/core/interceptors/interceptor.decorator.js +0 -51
- package/dist/core/interceptors/interceptor.decorator.js.map +0 -1
- package/dist/core/interceptors/interceptor.interface.d.ts +0 -31
- package/dist/core/interceptors/interceptor.interface.d.ts.map +0 -1
- package/dist/core/interceptors/interceptor.interface.js +0 -2
- package/dist/core/interceptors/interceptor.interface.js.map +0 -1
- package/dist/core/jwt-module.d.ts +0 -51
- package/dist/core/jwt-module.d.ts.map +0 -1
- package/dist/core/jwt-module.js +0 -52
- package/dist/core/jwt-module.js.map +0 -1
- package/dist/core/logger.d.ts +0 -18
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js +0 -53
- package/dist/core/logger.js.map +0 -1
- package/dist/core/middleware/__tests__/middleware.test.d.ts +0 -2
- package/dist/core/middleware/__tests__/middleware.test.d.ts.map +0 -1
- package/dist/core/middleware/__tests__/middleware.test.js +0 -105
- package/dist/core/middleware/__tests__/middleware.test.js.map +0 -1
- package/dist/core/middleware/middleware.decorator.d.ts +0 -39
- package/dist/core/middleware/middleware.decorator.d.ts.map +0 -1
- package/dist/core/middleware/middleware.decorator.js +0 -53
- package/dist/core/middleware/middleware.decorator.js.map +0 -1
- package/dist/core/middleware/middleware.interface.d.ts +0 -29
- package/dist/core/middleware/middleware.interface.d.ts.map +0 -1
- package/dist/core/middleware/middleware.interface.js +0 -2
- package/dist/core/middleware/middleware.interface.js.map +0 -1
- package/dist/core/module.d.ts +0 -93
- package/dist/core/module.d.ts.map +0 -1
- package/dist/core/module.js +0 -87
- package/dist/core/module.js.map +0 -1
- package/dist/core/oauth-module.d.ts +0 -123
- package/dist/core/oauth-module.d.ts.map +0 -1
- package/dist/core/oauth-module.js +0 -324
- package/dist/core/oauth-module.js.map +0 -1
- package/dist/core/pipes/__tests__/pipes.test.d.ts +0 -2
- package/dist/core/pipes/__tests__/pipes.test.d.ts.map +0 -1
- package/dist/core/pipes/__tests__/pipes.test.js +0 -164
- package/dist/core/pipes/__tests__/pipes.test.js.map +0 -1
- package/dist/core/pipes/pipe.decorator.d.ts +0 -64
- package/dist/core/pipes/pipe.decorator.d.ts.map +0 -1
- package/dist/core/pipes/pipe.decorator.js +0 -85
- package/dist/core/pipes/pipe.decorator.js.map +0 -1
- package/dist/core/pipes/pipe.interface.d.ts +0 -41
- package/dist/core/pipes/pipe.interface.d.ts.map +0 -1
- package/dist/core/pipes/pipe.interface.js +0 -2
- package/dist/core/pipes/pipe.interface.js.map +0 -1
- package/dist/core/prompt.d.ts +0 -46
- package/dist/core/prompt.d.ts.map +0 -1
- package/dist/core/prompt.js +0 -76
- package/dist/core/prompt.js.map +0 -1
- package/dist/core/resource.d.ts +0 -47
- package/dist/core/resource.d.ts.map +0 -1
- package/dist/core/resource.js +0 -90
- package/dist/core/resource.js.map +0 -1
- package/dist/core/server.d.ts +0 -129
- package/dist/core/server.d.ts.map +0 -1
- package/dist/core/server.js +0 -617
- package/dist/core/server.js.map +0 -1
- package/dist/core/tool.d.ts +0 -108
- package/dist/core/tool.d.ts.map +0 -1
- package/dist/core/tool.js +0 -241
- package/dist/core/tool.js.map +0 -1
- package/dist/core/transports/__tests__/transports.test.d.ts +0 -2
- package/dist/core/transports/__tests__/transports.test.d.ts.map +0 -1
- package/dist/core/transports/__tests__/transports.test.js +0 -249
- package/dist/core/transports/__tests__/transports.test.js.map +0 -1
- package/dist/core/transports/discovery-http-server.d.ts +0 -19
- package/dist/core/transports/discovery-http-server.d.ts.map +0 -1
- package/dist/core/transports/discovery-http-server.js +0 -54
- package/dist/core/transports/discovery-http-server.js.map +0 -1
- package/dist/core/transports/http-server.d.ts +0 -108
- package/dist/core/transports/http-server.d.ts.map +0 -1
- package/dist/core/transports/http-server.js +0 -293
- package/dist/core/transports/http-server.js.map +0 -1
- package/dist/core/transports/streamable-http.d.ts +0 -177
- package/dist/core/transports/streamable-http.d.ts.map +0 -1
- package/dist/core/transports/streamable-http.js +0 -1287
- package/dist/core/transports/streamable-http.js.map +0 -1
- package/dist/core/types.d.ts +0 -195
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -2
- package/dist/core/types.js.map +0 -1
- package/dist/core/widgets/__tests__/registry.test.d.ts +0 -2
- package/dist/core/widgets/__tests__/registry.test.d.ts.map +0 -1
- package/dist/core/widgets/__tests__/registry.test.js +0 -69
- package/dist/core/widgets/__tests__/registry.test.js.map +0 -1
- package/dist/core/widgets/widget-examples.resource.d.ts +0 -17
- package/dist/core/widgets/widget-examples.resource.d.ts.map +0 -1
- package/dist/core/widgets/widget-examples.resource.js +0 -28
- package/dist/core/widgets/widget-examples.resource.js.map +0 -1
- package/dist/core/widgets/widget-registry.d.ts +0 -56
- package/dist/core/widgets/widget-registry.d.ts.map +0 -1
- package/dist/core/widgets/widget-registry.js +0 -75
- package/dist/core/widgets/widget-registry.js.map +0 -1
- package/dist/testing/__tests__/testing.test.d.ts +0 -2
- package/dist/testing/__tests__/testing.test.d.ts.map +0 -1
- package/dist/testing/__tests__/testing.test.js +0 -167
- package/dist/testing/__tests__/testing.test.js.map +0 -1
- package/dist/testing/index.d.ts +0 -103
- package/dist/testing/index.d.ts.map +0 -1
- package/dist/testing/index.js +0 -161
- package/dist/testing/index.js.map +0 -1
- package/dist/ui-next/__tests__/ui-next.test.d.ts +0 -2
- package/dist/ui-next/__tests__/ui-next.test.d.ts.map +0 -1
- package/dist/ui-next/__tests__/ui-next.test.js +0 -74
- package/dist/ui-next/__tests__/ui-next.test.js.map +0 -1
- package/dist/ui-next/index.d.ts +0 -31
- package/dist/ui-next/index.d.ts.map +0 -1
- package/dist/ui-next/index.js +0 -687
- package/dist/ui-next/index.js.map +0 -1
package/dist/core/decorators.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
/**
|
|
3
|
-
* Metadata keys for decorators
|
|
4
|
-
*/
|
|
5
|
-
export const TOOL_METADATA = Symbol('tool:metadata');
|
|
6
|
-
export const WIDGET_METADATA = Symbol('widget:metadata');
|
|
7
|
-
export const RESOURCE_METADATA = Symbol('resource:metadata');
|
|
8
|
-
export const PROMPT_METADATA = Symbol('prompt:metadata');
|
|
9
|
-
export const GUARDS_METADATA = Symbol('guards:metadata');
|
|
10
|
-
/**
|
|
11
|
-
* Tool decorator - Marks a method as an MCP tool
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```typescript
|
|
15
|
-
* @Tool({
|
|
16
|
-
* name: 'login',
|
|
17
|
-
* description: 'Login with email and password',
|
|
18
|
-
* inputSchema: z.object({
|
|
19
|
-
* email: z.string().email(),
|
|
20
|
-
* password: z.string(),
|
|
21
|
-
* }),
|
|
22
|
-
* })
|
|
23
|
-
* async login(input: LoginInput, context: ExecutionContext) {
|
|
24
|
-
* // Implementation
|
|
25
|
-
* }
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export function Tool(options) {
|
|
29
|
-
return function (target, propertyKey, descriptor) {
|
|
30
|
-
// Get existing tools or create new array
|
|
31
|
-
const existingTools = Reflect.getMetadata(TOOL_METADATA, target.constructor) || [];
|
|
32
|
-
// Add this tool
|
|
33
|
-
existingTools.push({
|
|
34
|
-
methodName: String(propertyKey),
|
|
35
|
-
options,
|
|
36
|
-
});
|
|
37
|
-
// Store metadata on the class constructor
|
|
38
|
-
Reflect.defineMetadata(TOOL_METADATA, existingTools, target.constructor);
|
|
39
|
-
return descriptor;
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Widget decorator - Links a tool to a Next.js widget route
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```typescript
|
|
47
|
-
* @Tool({ name: 'login', ... })
|
|
48
|
-
* @Widget('login-result')
|
|
49
|
-
* async login(input: LoginInput, context: ExecutionContext) {
|
|
50
|
-
* // Implementation
|
|
51
|
-
* }
|
|
52
|
-
* ```
|
|
53
|
-
*/
|
|
54
|
-
export function Widget(routePath) {
|
|
55
|
-
return function (target, propertyKey, descriptor) {
|
|
56
|
-
// Store widget metadata
|
|
57
|
-
Reflect.defineMetadata(WIDGET_METADATA, routePath, target, String(propertyKey));
|
|
58
|
-
return descriptor;
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Resource decorator - Marks a method as an MCP resource
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* @Resource({
|
|
67
|
-
* uri: 'db://users/schema',
|
|
68
|
-
* name: 'User Schema',
|
|
69
|
-
* description: 'Database schema for users',
|
|
70
|
-
* })
|
|
71
|
-
* async getUserSchema(context: ExecutionContext) {
|
|
72
|
-
* // Return schema
|
|
73
|
-
* }
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
export function Resource(options) {
|
|
77
|
-
return function (target, propertyKey, descriptor) {
|
|
78
|
-
const existingResources = Reflect.getMetadata(RESOURCE_METADATA, target.constructor) || [];
|
|
79
|
-
existingResources.push({
|
|
80
|
-
methodName: String(propertyKey),
|
|
81
|
-
options,
|
|
82
|
-
});
|
|
83
|
-
Reflect.defineMetadata(RESOURCE_METADATA, existingResources, target.constructor);
|
|
84
|
-
return descriptor;
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Prompt decorator - Marks a method as an MCP prompt
|
|
89
|
-
*
|
|
90
|
-
* @example
|
|
91
|
-
* ```typescript
|
|
92
|
-
* @Prompt({
|
|
93
|
-
* name: 'authentication-help',
|
|
94
|
-
* description: 'Help with authentication',
|
|
95
|
-
* })
|
|
96
|
-
* async authHelp(args: PromptArgs, context: ExecutionContext) {
|
|
97
|
-
* // Return prompt messages
|
|
98
|
-
* }
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
export function Prompt(options) {
|
|
102
|
-
return function (target, propertyKey, descriptor) {
|
|
103
|
-
const existingPrompts = Reflect.getMetadata(PROMPT_METADATA, target.constructor) || [];
|
|
104
|
-
existingPrompts.push({
|
|
105
|
-
methodName: String(propertyKey),
|
|
106
|
-
options,
|
|
107
|
-
});
|
|
108
|
-
Reflect.defineMetadata(PROMPT_METADATA, existingPrompts, target.constructor);
|
|
109
|
-
return descriptor;
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Extract tool definitions from a decorated class
|
|
114
|
-
*/
|
|
115
|
-
export function extractTools(target) {
|
|
116
|
-
return Reflect.getMetadata(TOOL_METADATA, target) || [];
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Extract resource definitions from a decorated class
|
|
120
|
-
*/
|
|
121
|
-
export function extractResources(target) {
|
|
122
|
-
return Reflect.getMetadata(RESOURCE_METADATA, target) || [];
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Extract prompt definitions from a decorated class
|
|
126
|
-
*/
|
|
127
|
-
export function extractPrompts(target) {
|
|
128
|
-
return Reflect.getMetadata(PROMPT_METADATA, target) || [];
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Get widget metadata for a specific method
|
|
132
|
-
*/
|
|
133
|
-
export function getWidgetMetadata(target, methodName) {
|
|
134
|
-
return Reflect.getMetadata(WIDGET_METADATA, target, methodName);
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Get guards metadata for a specific method
|
|
138
|
-
*/
|
|
139
|
-
export function getGuardsMetadata(target, methodName) {
|
|
140
|
-
return Reflect.getMetadata(GUARDS_METADATA, target, methodName) || [];
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Initial tool decorator metadata key
|
|
144
|
-
*/
|
|
145
|
-
export const INITIAL_TOOL_METADATA = Symbol('initial_tool:metadata');
|
|
146
|
-
/**
|
|
147
|
-
* InitialTool decorator - Marks a tool to be automatically called when the client starts
|
|
148
|
-
*
|
|
149
|
-
* @example
|
|
150
|
-
* ```typescript
|
|
151
|
-
* @Tool({ ... })
|
|
152
|
-
* @InitialTool()
|
|
153
|
-
* async init(input: InitInput, context: ExecutionContext) {
|
|
154
|
-
* // Implementation
|
|
155
|
-
* }
|
|
156
|
-
* ```
|
|
157
|
-
*/
|
|
158
|
-
export function InitialTool() {
|
|
159
|
-
return function (target, propertyKey, descriptor) {
|
|
160
|
-
Reflect.defineMetadata(INITIAL_TOOL_METADATA, true, target, String(propertyKey));
|
|
161
|
-
return descriptor;
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Get initial tool metadata for a specific method
|
|
166
|
-
*/
|
|
167
|
-
export function getInitialToolMetadata(target, methodName) {
|
|
168
|
-
return Reflect.getMetadata(INITIAL_TOOL_METADATA, target, methodName) === true;
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=decorators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/core/decorators.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.test.d.ts","sourceRoot":"","sources":["../../../../src/core/di/__tests__/container.test.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAC"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { describe, it, expect, beforeEach } from '@jest/globals';
|
|
11
|
-
import 'reflect-metadata';
|
|
12
|
-
import { DIContainer } from '../container';
|
|
13
|
-
describe('DIContainer', () => {
|
|
14
|
-
let container;
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
container = DIContainer.getInstance();
|
|
17
|
-
container.clear();
|
|
18
|
-
});
|
|
19
|
-
afterEach(() => {
|
|
20
|
-
container.clear();
|
|
21
|
-
});
|
|
22
|
-
it('should be a singleton', () => {
|
|
23
|
-
const instance1 = DIContainer.getInstance();
|
|
24
|
-
const instance2 = DIContainer.getInstance();
|
|
25
|
-
expect(instance1).toBe(instance2);
|
|
26
|
-
});
|
|
27
|
-
it('should register and resolve a class provider', () => {
|
|
28
|
-
class TestService {
|
|
29
|
-
getValue() { return 'test'; }
|
|
30
|
-
}
|
|
31
|
-
container.register(TestService);
|
|
32
|
-
const instance = container.resolve(TestService);
|
|
33
|
-
expect(instance).toBeInstanceOf(TestService);
|
|
34
|
-
expect(instance.getValue()).toBe('test');
|
|
35
|
-
});
|
|
36
|
-
it('should return the same instance for singleton scope', () => {
|
|
37
|
-
class TestService {
|
|
38
|
-
}
|
|
39
|
-
container.register(TestService);
|
|
40
|
-
const instance1 = container.resolve(TestService);
|
|
41
|
-
const instance2 = container.resolve(TestService);
|
|
42
|
-
expect(instance1).toBe(instance2);
|
|
43
|
-
});
|
|
44
|
-
it('should register and resolve a value provider', () => {
|
|
45
|
-
const token = 'CONFIG';
|
|
46
|
-
const value = { apiKey: '123' };
|
|
47
|
-
container.registerValue(token, value);
|
|
48
|
-
const resolved = container.resolve(token);
|
|
49
|
-
expect(resolved).toBe(value);
|
|
50
|
-
});
|
|
51
|
-
it('should resolve dependencies recursively', () => {
|
|
52
|
-
class DepService {
|
|
53
|
-
getName() { return 'dep'; }
|
|
54
|
-
}
|
|
55
|
-
// We need to simulate metadata decoration or manually register generic class dependency
|
|
56
|
-
// Since we can't easily mock Reflect.metadata in the test without the decorator,
|
|
57
|
-
// we can assume the container works if we verify basic registration.
|
|
58
|
-
// However, for true integration, let's use a mock decorator approach or manual setup.
|
|
59
|
-
// Simulating @Injectable() behavior manually for the test environment
|
|
60
|
-
const Injectable = () => {
|
|
61
|
-
return (target) => { };
|
|
62
|
-
};
|
|
63
|
-
let ParentService = class ParentService {
|
|
64
|
-
dep;
|
|
65
|
-
constructor(dep) {
|
|
66
|
-
this.dep = dep;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
ParentService = __decorate([
|
|
70
|
-
Injectable(),
|
|
71
|
-
__metadata("design:paramtypes", [DepService])
|
|
72
|
-
], ParentService);
|
|
73
|
-
// Polyfill metadata for the test
|
|
74
|
-
Reflect.defineMetadata('design:paramtypes', [DepService], ParentService);
|
|
75
|
-
container.register(DepService);
|
|
76
|
-
container.register(ParentService);
|
|
77
|
-
const parent = container.resolve(ParentService);
|
|
78
|
-
expect(parent).toBeInstanceOf(ParentService);
|
|
79
|
-
expect(parent.dep).toBeInstanceOf(DepService);
|
|
80
|
-
expect(parent.dep.getName()).toBe('dep');
|
|
81
|
-
});
|
|
82
|
-
it('should throw error when resolving unregistered token', () => {
|
|
83
|
-
expect(() => {
|
|
84
|
-
container.resolve('UNREGISTERED');
|
|
85
|
-
}).toThrow(/Cannot resolve token/);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
//# sourceMappingURL=container.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.test.js","sourceRoot":"","sources":["../../../../src/core/di/__tests__/container.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
/**
|
|
3
|
-
* Token type for DI registration
|
|
4
|
-
* Can be a class constructor, string, or symbol
|
|
5
|
-
*/
|
|
6
|
-
export type InjectionToken<T = unknown> = (new (...args: any[]) => T) | string | symbol;
|
|
7
|
-
/**
|
|
8
|
-
* Provider type - a class constructor (using any[] for compatibility)
|
|
9
|
-
*/
|
|
10
|
-
type Provider<T = unknown> = new (...args: any[]) => T;
|
|
11
|
-
/**
|
|
12
|
-
* Dependency Injection Container
|
|
13
|
-
*
|
|
14
|
-
* Simple DI container for managing service instances and dependencies.
|
|
15
|
-
* Supports constructor injection and singleton pattern.
|
|
16
|
-
*/
|
|
17
|
-
export declare class DIContainer {
|
|
18
|
-
private static instance;
|
|
19
|
-
private providers;
|
|
20
|
-
private instances;
|
|
21
|
-
private constructor();
|
|
22
|
-
/**
|
|
23
|
-
* Get the singleton container instance
|
|
24
|
-
*/
|
|
25
|
-
static getInstance(): DIContainer;
|
|
26
|
-
/**
|
|
27
|
-
* Register a provider (class)
|
|
28
|
-
* @param token - The token to register (usually the class itself)
|
|
29
|
-
* @param provider - Optional provider class (defaults to token if it's a class)
|
|
30
|
-
*/
|
|
31
|
-
register<T>(token: InjectionToken<T>, provider?: Provider<T>): void;
|
|
32
|
-
/**
|
|
33
|
-
* Register a value directly
|
|
34
|
-
* @param token - The token to register
|
|
35
|
-
* @param value - The value to associate with the token
|
|
36
|
-
*/
|
|
37
|
-
registerValue<T>(token: InjectionToken<T>, value: T): void;
|
|
38
|
-
/**
|
|
39
|
-
* Resolve a dependency (get or create instance)
|
|
40
|
-
* @param token - The token to resolve
|
|
41
|
-
* @returns The resolved instance
|
|
42
|
-
*/
|
|
43
|
-
resolve<T>(token: InjectionToken<T>): T;
|
|
44
|
-
/**
|
|
45
|
-
* Get constructor dependencies from metadata
|
|
46
|
-
*
|
|
47
|
-
* Priority:
|
|
48
|
-
* 1. Explicit deps in @Injectable({ deps: [...] }) - works in ESM
|
|
49
|
-
* 2. @Inject() parameter decorators
|
|
50
|
-
* 3. design:paramtypes from TypeScript (may not work in ESM)
|
|
51
|
-
*/
|
|
52
|
-
private getDependencies;
|
|
53
|
-
/**
|
|
54
|
-
* Clear all registrations (useful for testing)
|
|
55
|
-
*/
|
|
56
|
-
clear(): void;
|
|
57
|
-
/**
|
|
58
|
-
* Check if a token is registered
|
|
59
|
-
* @param token - The token to check
|
|
60
|
-
*/
|
|
61
|
-
has(token: InjectionToken): boolean;
|
|
62
|
-
}
|
|
63
|
-
export {};
|
|
64
|
-
//# sourceMappingURL=container.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../src/core/di/container.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;;GAGG;AAEH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAClC,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,GAC3B,MAAM,GACN,MAAM,CAAC;AAEX;;GAEG;AAEH,KAAK,QAAQ,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,SAAS,CAA2C;IAE5D,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,WAAW;IAOjC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAInE;;;;OAIG;IACH,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI1D;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;IA8BvC;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;CAGpC"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
/**
|
|
3
|
-
* Dependency Injection Container
|
|
4
|
-
*
|
|
5
|
-
* Simple DI container for managing service instances and dependencies.
|
|
6
|
-
* Supports constructor injection and singleton pattern.
|
|
7
|
-
*/
|
|
8
|
-
export class DIContainer {
|
|
9
|
-
static instance;
|
|
10
|
-
providers = new Map();
|
|
11
|
-
instances = new Map();
|
|
12
|
-
constructor() { }
|
|
13
|
-
/**
|
|
14
|
-
* Get the singleton container instance
|
|
15
|
-
*/
|
|
16
|
-
static getInstance() {
|
|
17
|
-
if (!DIContainer.instance) {
|
|
18
|
-
DIContainer.instance = new DIContainer();
|
|
19
|
-
}
|
|
20
|
-
return DIContainer.instance;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Register a provider (class)
|
|
24
|
-
* @param token - The token to register (usually the class itself)
|
|
25
|
-
* @param provider - Optional provider class (defaults to token if it's a class)
|
|
26
|
-
*/
|
|
27
|
-
register(token, provider) {
|
|
28
|
-
this.providers.set(token, (provider || token));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Register a value directly
|
|
32
|
-
* @param token - The token to register
|
|
33
|
-
* @param value - The value to associate with the token
|
|
34
|
-
*/
|
|
35
|
-
registerValue(token, value) {
|
|
36
|
-
this.instances.set(token, value);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Resolve a dependency (get or create instance)
|
|
40
|
-
* @param token - The token to resolve
|
|
41
|
-
* @returns The resolved instance
|
|
42
|
-
*/
|
|
43
|
-
resolve(token) {
|
|
44
|
-
// Check if already instantiated
|
|
45
|
-
if (this.instances.has(token)) {
|
|
46
|
-
return this.instances.get(token);
|
|
47
|
-
}
|
|
48
|
-
// Get the provider
|
|
49
|
-
const provider = this.providers.get(token) || token;
|
|
50
|
-
// If provider is not a constructor function, throw error
|
|
51
|
-
if (typeof provider !== 'function') {
|
|
52
|
-
throw new Error(`Cannot resolve token "${String(token)}". No value or provider registered.`);
|
|
53
|
-
}
|
|
54
|
-
// Get constructor dependencies
|
|
55
|
-
const dependencies = this.getDependencies(provider);
|
|
56
|
-
// Resolve dependencies recursively
|
|
57
|
-
const resolvedDependencies = dependencies.map((dep) => this.resolve(dep));
|
|
58
|
-
// Create instance
|
|
59
|
-
const ProviderClass = provider;
|
|
60
|
-
const instance = new ProviderClass(...resolvedDependencies);
|
|
61
|
-
// Cache instance
|
|
62
|
-
this.instances.set(token, instance);
|
|
63
|
-
return instance;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Get constructor dependencies from metadata
|
|
67
|
-
*
|
|
68
|
-
* Priority:
|
|
69
|
-
* 1. Explicit deps in @Injectable({ deps: [...] }) - works in ESM
|
|
70
|
-
* 2. @Inject() parameter decorators
|
|
71
|
-
* 3. design:paramtypes from TypeScript (may not work in ESM)
|
|
72
|
-
*/
|
|
73
|
-
getDependencies(target) {
|
|
74
|
-
// FIRST: Check for explicit deps in @Injectable({ deps: [...] })
|
|
75
|
-
// This is the most reliable method for ESM compatibility
|
|
76
|
-
const explicitDeps = Reflect.getMetadata('nitrostack:deps', target);
|
|
77
|
-
if (explicitDeps && explicitDeps.length > 0) {
|
|
78
|
-
return explicitDeps;
|
|
79
|
-
}
|
|
80
|
-
// SECOND: Get design:paramtypes metadata set by TypeScript
|
|
81
|
-
// This may be empty in ESM if reflect-metadata wasn't loaded early enough
|
|
82
|
-
const params = Reflect.getMetadata('design:paramtypes', target) || [];
|
|
83
|
-
// Check for @Inject tokens which override the types
|
|
84
|
-
const injectTokens = Reflect.getMetadata('nitrostack:inject', target) || [];
|
|
85
|
-
// Merge: use inject tokens where specified, otherwise use the param type
|
|
86
|
-
return params.map((param, index) => {
|
|
87
|
-
return injectTokens[index] || param;
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Clear all registrations (useful for testing)
|
|
92
|
-
*/
|
|
93
|
-
clear() {
|
|
94
|
-
this.providers.clear();
|
|
95
|
-
this.instances.clear();
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Check if a token is registered
|
|
99
|
-
* @param token - The token to check
|
|
100
|
-
*/
|
|
101
|
-
has(token) {
|
|
102
|
-
return this.providers.has(token) || this.instances.has(token);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=container.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/core/di/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import { InjectionToken } from './container.js';
|
|
3
|
-
import type { ClassConstructor } from '../types.js';
|
|
4
|
-
/**
|
|
5
|
-
* Options for @Injectable decorator
|
|
6
|
-
*/
|
|
7
|
-
export interface InjectableOptions {
|
|
8
|
-
/**
|
|
9
|
-
* Explicit dependencies for ESM compatibility.
|
|
10
|
-
*
|
|
11
|
-
* In ESM environments, TypeScript's emitDecoratorMetadata may not work
|
|
12
|
-
* reliably due to module loading order. Use this to explicitly declare
|
|
13
|
-
* constructor dependencies.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* @Injectable({ deps: [DatabaseService, LoggerService] })
|
|
18
|
-
* export class UserService {
|
|
19
|
-
* constructor(private db: DatabaseService, private logger: LoggerService) {}
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
deps?: InjectionToken[];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Marks a class as injectable (can be used with DI)
|
|
27
|
-
*
|
|
28
|
-
* @example Basic usage (relies on TypeScript's emitDecoratorMetadata):
|
|
29
|
-
* ```typescript
|
|
30
|
-
* @Injectable()
|
|
31
|
-
* export class UserService {
|
|
32
|
-
* constructor(private db: DatabaseService) {}
|
|
33
|
-
* }
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @example With explicit deps (recommended for ESM compatibility):
|
|
37
|
-
* ```typescript
|
|
38
|
-
* @Injectable({ deps: [DatabaseService] })
|
|
39
|
-
* export class UserService {
|
|
40
|
-
* constructor(private db: DatabaseService) {}
|
|
41
|
-
* }
|
|
42
|
-
* ```
|
|
43
|
-
*/
|
|
44
|
-
export declare function Injectable(options?: InjectableOptions): ClassDecorator;
|
|
45
|
-
/**
|
|
46
|
-
* Inject a specific token (optional - for custom injection)
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```typescript
|
|
50
|
-
* constructor(@Inject('DATABASE_CONFIG') private config: DatabaseConfig) {}
|
|
51
|
-
* ```
|
|
52
|
-
*/
|
|
53
|
-
export declare function Inject(token: InjectionToken): ParameterDecorator;
|
|
54
|
-
/**
|
|
55
|
-
* Check if a class is injectable
|
|
56
|
-
*/
|
|
57
|
-
export declare function isInjectable(target: ClassConstructor): boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Get inject tokens for constructor parameters
|
|
60
|
-
*/
|
|
61
|
-
export declare function getInjectTokens(target: ClassConstructor): InjectionToken[];
|
|
62
|
-
//# sourceMappingURL=injectable.decorator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/di/injectable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAe,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAMpD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAetE;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,kBAAkB,CAMhE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,EAAE,CAE1E"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import { DIContainer } from './container.js';
|
|
3
|
-
const INJECTABLE_KEY = 'nitrostack:injectable';
|
|
4
|
-
const INJECT_KEY = 'nitrostack:inject';
|
|
5
|
-
const DEPS_KEY = 'nitrostack:deps';
|
|
6
|
-
/**
|
|
7
|
-
* Marks a class as injectable (can be used with DI)
|
|
8
|
-
*
|
|
9
|
-
* @example Basic usage (relies on TypeScript's emitDecoratorMetadata):
|
|
10
|
-
* ```typescript
|
|
11
|
-
* @Injectable()
|
|
12
|
-
* export class UserService {
|
|
13
|
-
* constructor(private db: DatabaseService) {}
|
|
14
|
-
* }
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* @example With explicit deps (recommended for ESM compatibility):
|
|
18
|
-
* ```typescript
|
|
19
|
-
* @Injectable({ deps: [DatabaseService] })
|
|
20
|
-
* export class UserService {
|
|
21
|
-
* constructor(private db: DatabaseService) {}
|
|
22
|
-
* }
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export function Injectable(options) {
|
|
26
|
-
return (target) => {
|
|
27
|
-
Reflect.defineMetadata(INJECTABLE_KEY, true, target);
|
|
28
|
-
// Store explicit deps if provided (for ESM compatibility)
|
|
29
|
-
if (options?.deps && options.deps.length > 0) {
|
|
30
|
-
Reflect.defineMetadata(DEPS_KEY, options.deps, target);
|
|
31
|
-
}
|
|
32
|
-
// Auto-register in DI container
|
|
33
|
-
const container = DIContainer.getInstance();
|
|
34
|
-
if (!container.has(target)) {
|
|
35
|
-
container.register(target);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Inject a specific token (optional - for custom injection)
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```typescript
|
|
44
|
-
* constructor(@Inject('DATABASE_CONFIG') private config: DatabaseConfig) {}
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export function Inject(token) {
|
|
48
|
-
return (target, propertyKey, parameterIndex) => {
|
|
49
|
-
const existingTokens = Reflect.getMetadata(INJECT_KEY, target) || [];
|
|
50
|
-
existingTokens[parameterIndex] = token;
|
|
51
|
-
Reflect.defineMetadata(INJECT_KEY, existingTokens, target);
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Check if a class is injectable
|
|
56
|
-
*/
|
|
57
|
-
export function isInjectable(target) {
|
|
58
|
-
return Reflect.getMetadata(INJECTABLE_KEY, target) === true;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get inject tokens for constructor parameters
|
|
62
|
-
*/
|
|
63
|
-
export function getInjectTokens(target) {
|
|
64
|
-
return Reflect.getMetadata(INJECT_KEY, target) || [];
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=injectable.decorator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"injectable.decorator.js","sourceRoot":"","sources":["../../../src/core/di/injectable.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAG7D,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAC/C,MAAM,UAAU,GAAG,mBAAmB,CAAC;AACvC,MAAM,QAAQ,GAAG,iBAAiB,CAAC;AAwBnC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CAAC,OAA2B;IACpD,OAAO,CAAC,MAAc,EAAE,EAAE;QACxB,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAErD,0DAA0D;QAC1D,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,gCAAgC;QAChC,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAA0B,CAAC,EAAE,CAAC;YAC/C,SAAS,CAAC,QAAQ,CAAC,MAA0B,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,KAAqB;IAC1C,OAAO,CAAC,MAAc,EAAE,WAAwC,EAAE,cAAsB,EAAE,EAAE;QAC1F,MAAM,cAAc,GAAqB,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvF,cAAc,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC;QACvC,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAwB;IACnD,OAAO,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metadata Shim for ESM Compatibility
|
|
3
|
-
*
|
|
4
|
-
* This shim ensures that decorator metadata is captured even when
|
|
5
|
-
* reflect-metadata hasn't loaded yet (common in ESM due to module hoisting).
|
|
6
|
-
*
|
|
7
|
-
* How it works:
|
|
8
|
-
* 1. Before reflect-metadata loads, we install stub functions
|
|
9
|
-
* 2. These stubs store metadata in a fallback WeakMap
|
|
10
|
-
* 3. Once reflect-metadata loads, we merge the fallback data
|
|
11
|
-
* 4. DIContainer checks both sources when resolving dependencies
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Check if we have fallback metadata for a target
|
|
15
|
-
*/
|
|
16
|
-
export declare function hasFallbackMetadata(target: object): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Get metadata from fallback storage (exported for DIContainer)
|
|
19
|
-
*/
|
|
20
|
-
export declare function getFallbackMetadata(metadataKey: string | symbol, target: object, propertyKey?: string | symbol): unknown;
|
|
21
|
-
/**
|
|
22
|
-
* Install the metadata shim
|
|
23
|
-
* This should be called as early as possible, before any decorated modules load
|
|
24
|
-
*/
|
|
25
|
-
export declare function installMetadataShim(): void;
|
|
26
|
-
/**
|
|
27
|
-
* Get metadata with fallback support
|
|
28
|
-
* This is the main function DIContainer should use
|
|
29
|
-
*/
|
|
30
|
-
export declare function getMetadataWithFallback(metadataKey: string | symbol, target: object, propertyKey?: string | symbol): unknown;
|
|
31
|
-
//# sourceMappingURL=metadata-shim.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-shim.d.ts","sourceRoot":"","sources":["../../../src/core/di/metadata-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkDH;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CA0G1C;AAaD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,GAAG,MAAM,EAC5B,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAC5B,OAAO,CAYT"}
|