@nitrostack/core 1.0.11 → 1.0.13
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/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +17 -0
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/token-validation.d.ts.map +1 -1
- package/dist/auth/token-validation.js +12 -2
- package/dist/auth/token-validation.js.map +1 -1
- package/dist/core/app-decorator.d.ts +6 -0
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +5 -3
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +14 -4
- package/dist/core/builders.js.map +1 -1
- package/dist/core/decorators.d.ts +30 -0
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +42 -4
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/di/container.d.ts +18 -0
- package/dist/core/di/container.d.ts.map +1 -1
- package/dist/core/di/container.js +31 -0
- package/dist/core/di/container.js.map +1 -1
- package/dist/core/di/injectable.decorator.d.ts.map +1 -1
- package/dist/core/di/injectable.decorator.js +2 -1
- package/dist/core/di/injectable.decorator.js.map +1 -1
- package/dist/core/events/event.decorator.d.ts.map +1 -1
- package/dist/core/events/event.decorator.js +2 -1
- package/dist/core/events/event.decorator.js.map +1 -1
- package/dist/core/index.d.ts +4 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/lifecycle.d.ts +44 -0
- package/dist/core/lifecycle.d.ts.map +1 -0
- package/dist/core/lifecycle.js +62 -0
- package/dist/core/lifecycle.js.map +1 -0
- package/dist/core/oauth-module.d.ts +76 -5
- package/dist/core/oauth-module.d.ts.map +1 -1
- package/dist/core/oauth-module.js +343 -83
- package/dist/core/oauth-module.js.map +1 -1
- package/dist/core/pipes/pipe.decorator.d.ts.map +1 -1
- package/dist/core/pipes/pipe.decorator.js +2 -1
- package/dist/core/pipes/pipe.decorator.js.map +1 -1
- package/dist/core/prompt.d.ts +0 -3
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +28 -1
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/server.d.ts +39 -26
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +222 -102
- package/dist/core/server.js.map +1 -1
- package/dist/core/transports/streamable-http.d.ts +64 -61
- package/dist/core/transports/streamable-http.d.ts.map +1 -1
- package/dist/core/transports/streamable-http.js +1591 -823
- package/dist/core/transports/streamable-http.js.map +1 -1
- package/package.json +5 -7
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,gFAAgF;QAChF,MAAM,cAAc,GAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9F,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"event.decorator.d.ts","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B;;GAEG;AACH,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAWtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAEvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWtF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAMjE"}
|
|
@@ -29,7 +29,8 @@ const EVENT_HANDLER_KEY = 'nitrostack:event_handler';
|
|
|
29
29
|
export function OnEvent(event) {
|
|
30
30
|
return (target, propertyKey, descriptor) => {
|
|
31
31
|
const targetWithConstructor = target;
|
|
32
|
-
|
|
32
|
+
// Clone to avoid mutating a parent class's handler array when subclassing.
|
|
33
|
+
const existingHandlers = [...(Reflect.getMetadata(EVENT_HANDLER_KEY, targetWithConstructor.constructor) || [])];
|
|
33
34
|
existingHandlers.push({
|
|
34
35
|
event,
|
|
35
36
|
methodName: propertyKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.decorator.js","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,MAAM,qBAAqB,GAAG,MAAiC,CAAC;QAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"event.decorator.js","sourceRoot":"","sources":["../../../src/core/events/event.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACtF,MAAM,qBAAqB,GAAG,MAAiC,CAAC;QAChE,2EAA2E;QAC3E,MAAM,gBAAgB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChH,gBAAgB,CAAC,IAAI,CAAC;YACpB,KAAK;YACL,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjG,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,OAAO,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAA0C;IAC9E,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,gBAAgB,CAAE,QAAoC,CAAC,WAAW,CAAC,CAAC;IAErF,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,GAAG,IAAe;IACzD,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3C,0CAA0C;IAC1C,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACzC,OAAO,CAAC,KAAK,CAAC,8BAA8B,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ export * from './errors.js';
|
|
|
14
14
|
export { TaskManager, TaskContext, TaskNotFoundError, TaskAlreadyTerminalError, InvalidTaskTransitionError, TaskCancelledError, TaskAugmentationRequiredError, TaskExpiredError, isTerminalStatus, TERMINAL_STATUSES, } from './task.js';
|
|
15
15
|
export type { TaskStatus, TaskData, TaskParams, CreateTaskResult, TaskSupportLevel, } from './task.js';
|
|
16
16
|
export type { McpServerConfig, ToolDefinition, ToolAnnotations, ToolResultContent, ResourceLink, EmbeddedResource, ResourceDefinition, ResourceTemplateDefinition, ResourceAnnotations, PromptDefinition, ExecutionContext, Logger, AuthContext, JsonValue, JsonValueOrUndefined, JsonObject, JsonArray, JsonPrimitive, Constructor, ClassConstructor, } from './types.js';
|
|
17
|
-
export { Tool as ToolDecorator, Widget, Resource as ResourceDecorator, Prompt as PromptDecorator, extractTools, extractResources, extractPrompts, getWidgetMetadata, getGuardsMetadata, InitialTool, } from './decorators.js';
|
|
18
|
-
export type { ToolOptions, ToolInvocationMessages, ResourceOptions, PromptOptions, WidgetCspOptions, WidgetRouteMetadata, } from './decorators.js';
|
|
17
|
+
export { Tool as ToolDecorator, Widget, Resource as ResourceDecorator, Prompt as PromptDecorator, Controller as ControllerDecorator, getControllerPrefix, extractTools, extractResources, extractPrompts, getWidgetMetadata, getGuardsMetadata, InitialTool, getInitialToolMetadata, } from './decorators.js';
|
|
18
|
+
export type { ToolOptions, ToolInvocationMessages, ResourceOptions, PromptOptions, ControllerOptions, WidgetCspOptions, WidgetRouteMetadata, } from './decorators.js';
|
|
19
19
|
export { Module, createModule, isModule, getModuleMetadata, } from './module.js';
|
|
20
20
|
export type { ModuleMetadata, ModuleImport, DynamicModule, Provider, } from './module.js';
|
|
21
21
|
export type { Guard, GuardConstructor } from './guards/guard.interface.js';
|
|
@@ -53,6 +53,8 @@ export { ConfigModule, ConfigService } from './config-module.js';
|
|
|
53
53
|
export type { ConfigModuleOptions } from './config-module.js';
|
|
54
54
|
export { McpApp, McpApplicationFactory, getMcpAppMetadata } from './app-decorator.js';
|
|
55
55
|
export type { McpAppOptions } from './app-decorator.js';
|
|
56
|
+
export { triggerLifecycleHook } from './lifecycle.js';
|
|
57
|
+
export type { OnModuleInit, OnApplicationBootstrap, OnModuleDestroy, BeforeApplicationShutdown, OnApplicationShutdown, LifecycleHookName, LifecycleHookOptions, } from './lifecycle.js';
|
|
56
58
|
/**
|
|
57
59
|
* MIME type for MCP Apps widgets
|
|
58
60
|
* Compatible with both MCP Apps spec and OpenAI Apps SDK
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAG9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG1D,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,WAAW,EACX,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,IAAI,IAAI,aAAa,EACrB,MAAM,EACN,QAAQ,IAAI,iBAAiB,EAC7B,MAAM,IAAI,eAAe,EACzB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -22,7 +22,7 @@ export * from './errors.js';
|
|
|
22
22
|
// ========== MCP Tasks ==========
|
|
23
23
|
export { TaskManager, TaskContext, TaskNotFoundError, TaskAlreadyTerminalError, InvalidTaskTransitionError, TaskCancelledError, TaskAugmentationRequiredError, TaskExpiredError, isTerminalStatus, TERMINAL_STATUSES, } from './task.js';
|
|
24
24
|
// ========== V3 Decorators ==========
|
|
25
|
-
export { Tool as ToolDecorator, Widget, Resource as ResourceDecorator, Prompt as PromptDecorator, extractTools, extractResources, extractPrompts, getWidgetMetadata, getGuardsMetadata, InitialTool, } from './decorators.js';
|
|
25
|
+
export { Tool as ToolDecorator, Widget, Resource as ResourceDecorator, Prompt as PromptDecorator, Controller as ControllerDecorator, getControllerPrefix, extractTools, extractResources, extractPrompts, getWidgetMetadata, getGuardsMetadata, InitialTool, getInitialToolMetadata, } from './decorators.js';
|
|
26
26
|
// ========== V3 Modules ==========
|
|
27
27
|
export { Module, createModule, isModule, getModuleMetadata, } from './module.js';
|
|
28
28
|
export { UseGuards, getGuardsMetadata as getGuardsMetadataFromDecorator } from './guards/use-guards.decorator.js';
|
|
@@ -52,6 +52,8 @@ export { OnEvent, getEventHandlers, registerEventHandlers, emitEvent } from './e
|
|
|
52
52
|
export { ConfigModule, ConfigService } from './config-module.js';
|
|
53
53
|
// ========== V3 Application Bootstrap ==========
|
|
54
54
|
export { McpApp, McpApplicationFactory, getMcpAppMetadata } from './app-decorator.js';
|
|
55
|
+
// ========== V3 Lifecycle Hooks ==========
|
|
56
|
+
export { triggerLifecycleHook } from './lifecycle.js';
|
|
55
57
|
// ========== MCP Apps / OpenAI Apps SDK Constants ==========
|
|
56
58
|
/**
|
|
57
59
|
* MIME type for MCP Apps widgets
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gDAAgD;AAChD,OAAO,kBAAkB,CAAC;AAE1B,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE7D,aAAa;AACb,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO;AACP,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,WAAW;AACX,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEnG,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEnD,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE5D,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1D,SAAS;AACT,cAAc,aAAa,CAAC;AAE5B,kCAAkC;AAClC,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,6BAA6B,EAC7B,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAkCnB,sCAAsC;AACtC,OAAO,EACL,IAAI,IAAI,aAAa,EACrB,MAAM,EACN,QAAQ,IAAI,iBAAiB,EAC7B,MAAM,IAAI,eAAe,EACzB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NitroStack Lifecycle Interfaces
|
|
3
|
+
*
|
|
4
|
+
* NestJS-style lifecycle hook interfaces for modules, controllers, and providers.
|
|
5
|
+
*/
|
|
6
|
+
export interface OnModuleInit {
|
|
7
|
+
onModuleInit(): Promise<void> | void;
|
|
8
|
+
}
|
|
9
|
+
export interface OnApplicationBootstrap {
|
|
10
|
+
onApplicationBootstrap(): Promise<void> | void;
|
|
11
|
+
}
|
|
12
|
+
export interface OnModuleDestroy {
|
|
13
|
+
onModuleDestroy(): Promise<void> | void;
|
|
14
|
+
}
|
|
15
|
+
export interface BeforeApplicationShutdown {
|
|
16
|
+
beforeApplicationShutdown(signal?: string): Promise<void> | void;
|
|
17
|
+
}
|
|
18
|
+
export interface OnApplicationShutdown {
|
|
19
|
+
onApplicationShutdown(signal?: string): Promise<void> | void;
|
|
20
|
+
}
|
|
21
|
+
export type LifecycleHookName = 'onModuleInit' | 'onApplicationBootstrap' | 'onModuleDestroy' | 'beforeApplicationShutdown' | 'onApplicationShutdown';
|
|
22
|
+
export type LifecycleHookOptions = {
|
|
23
|
+
safe?: boolean;
|
|
24
|
+
logger?: {
|
|
25
|
+
error(msg: string, meta?: unknown): void;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Triggers a lifecycle hook sequentially across all instances that implement it.
|
|
30
|
+
*
|
|
31
|
+
* Note: callers typically pass `DIContainer.getInstances()`, which includes every
|
|
32
|
+
* resolved DI entry -- providers, controllers, modules, and values registered via
|
|
33
|
+
* `registerValue()` (e.g. the logger or the server itself). Only instances that
|
|
34
|
+
* actually expose a matching hook method are invoked; everything else (primitives,
|
|
35
|
+
* plain values without the hook) is skipped. Keep this in mind if a registered
|
|
36
|
+
* value coincidentally defines a method named like a lifecycle hook.
|
|
37
|
+
*
|
|
38
|
+
* @param instances Array of resolved instances to check
|
|
39
|
+
* @param hookName Name of the hook method (e.g. 'onModuleInit')
|
|
40
|
+
* @param options Optional safe-mode / logger settings
|
|
41
|
+
* @param args Arguments to pass to the hook method
|
|
42
|
+
*/
|
|
43
|
+
export declare function triggerLifecycleHook(instances: unknown[], hookName: LifecycleHookName, options?: LifecycleHookOptions, ...args: unknown[]): Promise<void>;
|
|
44
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,YAAY;IAC3B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,yBAAyB;IACxC,yBAAyB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED,MAAM,MAAM,iBAAiB,GACzB,cAAc,GACd,wBAAwB,GACxB,iBAAiB,GACjB,2BAA2B,GAC3B,uBAAuB,CAAC;AAE5B,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;CACvD,CAAC;AAaF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,OAAO,EAAE,EACpB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,oBAAoB,EAC9B,GAAG,IAAI,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NitroStack Lifecycle Interfaces
|
|
3
|
+
*
|
|
4
|
+
* NestJS-style lifecycle hook interfaces for modules, controllers, and providers.
|
|
5
|
+
*/
|
|
6
|
+
function getInstanceLabel(instance) {
|
|
7
|
+
if (typeof instance === 'function') {
|
|
8
|
+
return instance.name || 'Function';
|
|
9
|
+
}
|
|
10
|
+
const ctor = instance.constructor;
|
|
11
|
+
if (typeof ctor === 'function' && ctor !== Object && ctor.name) {
|
|
12
|
+
return ctor.name;
|
|
13
|
+
}
|
|
14
|
+
return 'Object';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Triggers a lifecycle hook sequentially across all instances that implement it.
|
|
18
|
+
*
|
|
19
|
+
* Note: callers typically pass `DIContainer.getInstances()`, which includes every
|
|
20
|
+
* resolved DI entry -- providers, controllers, modules, and values registered via
|
|
21
|
+
* `registerValue()` (e.g. the logger or the server itself). Only instances that
|
|
22
|
+
* actually expose a matching hook method are invoked; everything else (primitives,
|
|
23
|
+
* plain values without the hook) is skipped. Keep this in mind if a registered
|
|
24
|
+
* value coincidentally defines a method named like a lifecycle hook.
|
|
25
|
+
*
|
|
26
|
+
* @param instances Array of resolved instances to check
|
|
27
|
+
* @param hookName Name of the hook method (e.g. 'onModuleInit')
|
|
28
|
+
* @param options Optional safe-mode / logger settings
|
|
29
|
+
* @param args Arguments to pass to the hook method
|
|
30
|
+
*/
|
|
31
|
+
export async function triggerLifecycleHook(instances, hookName, options, ...args) {
|
|
32
|
+
const isSafe = options?.safe ?? false;
|
|
33
|
+
const logger = options?.logger;
|
|
34
|
+
// Deduplicate instances to prevent executing hooks multiple times on aliased/multi-token registrations
|
|
35
|
+
const uniqueInstances = Array.from(new Set(instances));
|
|
36
|
+
for (const instance of uniqueInstances) {
|
|
37
|
+
// Only the cheap, non-throwing type guard stays outside the try. The
|
|
38
|
+
// `hookName in instance` check and the property read can trigger Proxy traps
|
|
39
|
+
// or throwing getters, so they must run inside the try to respect safe mode.
|
|
40
|
+
if (!instance || (typeof instance !== 'object' && typeof instance !== 'function')) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
if (!(hookName in instance)) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const hookMethod = instance[hookName];
|
|
48
|
+
if (typeof hookMethod !== 'function') {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
await hookMethod.apply(instance, args);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (!isSafe) {
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
const errMsg = error instanceof Error ? error.message : String(error);
|
|
58
|
+
logger?.error(`Failed to execute lifecycle hook ${hookName} on ${getInstanceLabel(instance)}: ${errMsg}`, { error });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkCH,SAAS,gBAAgB,CAAC,QAAoD;IAC5E,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;IAClC,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAoB,EACpB,QAA2B,EAC3B,OAA8B,EAC9B,GAAG,IAAe;IAElB,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAE/B,uGAAuG;IACvG,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvD,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,qEAAqE;QACrE,6EAA6E;QAC7E,6EAA6E;QAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU,CAAC,EAAE,CAAC;YAClF,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,MAAM,UAAU,GAAI,QAAoC,CAAC,QAAQ,CAAC,CAAC;YACnE,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACrC,SAAS;YACX,CAAC;YACD,MAAM,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,EAAE,KAAK,CACX,oCAAoC,QAAQ,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,EAC1F,EAAE,KAAK,EAAE,CACV,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -65,6 +65,56 @@ export interface OAuthModuleConfig {
|
|
|
65
65
|
* Additional validation logic beyond spec requirements
|
|
66
66
|
*/
|
|
67
67
|
customValidation?: (token: unknown) => Promise<boolean> | boolean;
|
|
68
|
+
/**
|
|
69
|
+
* JWKS URI (RFC 7517)
|
|
70
|
+
* The authorization server's JWKS endpoint for signature verification
|
|
71
|
+
*/
|
|
72
|
+
jwksUri?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Token Cache Seconds
|
|
75
|
+
* In-memory cache expiration for token introspection (defaults to 300)
|
|
76
|
+
*/
|
|
77
|
+
tokenCacheSeconds?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Enable the Dynamic Client Registration endpoint (RFC 7591) at /oauth/v2/register.
|
|
80
|
+
* Disabled by default. When disabled, the endpoint responds 404 and
|
|
81
|
+
* `registration_endpoint` is omitted from advertised metadata.
|
|
82
|
+
* Can also be enabled via the OAUTH_ENABLE_CLIENT_REGISTRATION=true env var.
|
|
83
|
+
*/
|
|
84
|
+
enableClientRegistration?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Static client id returned by the registration endpoint.
|
|
87
|
+
* Falls back to the OAUTH_CLIENT_ID environment variable. No literal default.
|
|
88
|
+
*/
|
|
89
|
+
staticClientId?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Static client secret returned by the registration endpoint.
|
|
92
|
+
* Falls back to the OAUTH_CLIENT_SECRET environment variable. No literal default.
|
|
93
|
+
*/
|
|
94
|
+
staticClientSecret?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Allow the insecure, signature-less JWT decode fallback in `validateToken`
|
|
97
|
+
* when neither `tokenIntrospectionEndpoint` nor `jwksUri` is configured.
|
|
98
|
+
*
|
|
99
|
+
* Disabled by default: without a configured verifier, tokens are rejected
|
|
100
|
+
* (fail closed). Only enable for local development or tests where unsigned
|
|
101
|
+
* tokens are intentionally used. NEVER enable in production.
|
|
102
|
+
*/
|
|
103
|
+
allowInsecureTokenDecode?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Whether OAuth authentication is enforced.
|
|
106
|
+
*
|
|
107
|
+
* Resolved from the `OAUTH_REQUIRED` environment variable when not set
|
|
108
|
+
* explicitly, and defaults to `false` (dev-friendly). When `false`, the OAuth
|
|
109
|
+
* module and its discovery endpoints stay configured, but requests are NOT
|
|
110
|
+
* required to carry a valid token (protected endpoints are reachable openly).
|
|
111
|
+
*
|
|
112
|
+
* When `true`, auth is enforced (fail-closed). If no token verifier
|
|
113
|
+
* (`jwksUri` or `tokenIntrospectionEndpoint`) is configured, the server still
|
|
114
|
+
* starts and logs a warning, but all protected requests are rejected until a
|
|
115
|
+
* verifier is configured.
|
|
116
|
+
*/
|
|
117
|
+
required?: boolean;
|
|
68
118
|
}
|
|
69
119
|
import { NitroStackServer } from './server.js';
|
|
70
120
|
import { Logger } from './types.js';
|
|
@@ -90,7 +140,21 @@ export declare class OAuthModule {
|
|
|
90
140
|
private static config;
|
|
91
141
|
private static discoveryInfo;
|
|
92
142
|
private discoveryServer;
|
|
143
|
+
private static discoveryMetadataCache;
|
|
144
|
+
private static discoveryMetadataInflight;
|
|
145
|
+
/** Max time to wait for an upstream metadata document before giving up. */
|
|
146
|
+
private static readonly UPSTREAM_FETCH_TIMEOUT_MS;
|
|
147
|
+
/** How long to remember that an upstream lookup failed, to avoid refetch storms. */
|
|
148
|
+
private static readonly NEGATIVE_CACHE_TTL_MS;
|
|
149
|
+
private fetchUpstreamMetadata;
|
|
150
|
+
private buildBaseUrl;
|
|
93
151
|
private wellKnownHandler;
|
|
152
|
+
/**
|
|
153
|
+
* Whether the static Dynamic Client Registration endpoint is enabled.
|
|
154
|
+
* Requires explicit opt-in AND a configured client id (never a literal default).
|
|
155
|
+
*/
|
|
156
|
+
private isClientRegistrationEnabled;
|
|
157
|
+
private registrationHandler;
|
|
94
158
|
private resourceMetadataHandler;
|
|
95
159
|
constructor(config: OAuthModuleConfig, server: NitroStackServer, logger: Logger);
|
|
96
160
|
onModuleInit(): void;
|
|
@@ -99,6 +163,11 @@ export declare class OAuthModule {
|
|
|
99
163
|
* Priority: OAUTH_DISCOVERY_PORT > MCP_SERVER_PORT > PORT > config > 3005
|
|
100
164
|
*/
|
|
101
165
|
private getPreferredPort;
|
|
166
|
+
/**
|
|
167
|
+
* Emit a clear, one-time startup log describing the current enforcement mode,
|
|
168
|
+
* so a misconfigured or intentionally-open server is obvious in the logs.
|
|
169
|
+
*/
|
|
170
|
+
private logEnforcementMode;
|
|
102
171
|
start(): Promise<void>;
|
|
103
172
|
/**
|
|
104
173
|
* Update the static discovery info
|
|
@@ -130,6 +199,13 @@ export declare class OAuthModule {
|
|
|
130
199
|
* Get current OAuth configuration
|
|
131
200
|
*/
|
|
132
201
|
static getConfig(): OAuthModuleConfig | null;
|
|
202
|
+
/**
|
|
203
|
+
* Whether OAuth authentication is enforced.
|
|
204
|
+
*
|
|
205
|
+
* Returns `false` when the module is unconfigured or `required` is not `true`,
|
|
206
|
+
* in which case protected endpoints are reachable without a token.
|
|
207
|
+
*/
|
|
208
|
+
static isAuthRequired(): boolean;
|
|
133
209
|
/**
|
|
134
210
|
* Validate an access token
|
|
135
211
|
*
|
|
@@ -144,11 +220,6 @@ export declare class OAuthModule {
|
|
|
144
220
|
payload?: Record<string, unknown>;
|
|
145
221
|
error?: string;
|
|
146
222
|
}>;
|
|
147
|
-
/**
|
|
148
|
-
* Introspect token using RFC 7662
|
|
149
|
-
* @private
|
|
150
|
-
*/
|
|
151
|
-
private static introspectToken;
|
|
152
223
|
/**
|
|
153
224
|
* Decode JWT token (without validation)
|
|
154
225
|
* @private
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-module.d.ts","sourceRoot":"","sources":["../../src/core/oauth-module.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IAEpC;;;OAGG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-module.d.ts","sourceRoot":"","sources":["../../src/core/oauth-module.ts"],"names":[],"mappings":"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"}
|