@interfere/nest 0.0.1-canary.0 → 0.0.1-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -2
- package/dist/_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.cjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateMetadata.cjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateMetadata.mjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateParam.cjs +1 -0
- package/dist/_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateParam.mjs +1 -0
- package/dist/exception-filter.cjs +1 -0
- package/dist/exception-filter.d.cts +19 -0
- package/dist/exception-filter.d.mts +2 -1
- package/dist/exception-filter.mjs +2 -33
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.mjs +1 -5
- package/dist/init.cjs +1 -0
- package/dist/init.d.cts +22 -0
- package/dist/init.d.mts +12 -3
- package/dist/init.mjs +2 -21
- package/dist/module.cjs +1 -0
- package/dist/module.d.cts +14 -0
- package/dist/module.d.mts +2 -1
- package/dist/module.mjs +2 -20
- package/dist/package.cjs +1 -0
- package/dist/package.mjs +2 -0
- package/package.json +26 -14
- package/dist/_virtual/_@oxc-project_runtime@0.129.0/helpers/decorate.mjs +0 -9
- package/dist/_virtual/_@oxc-project_runtime@0.129.0/helpers/decorateMetadata.mjs +0 -6
- package/dist/_virtual/_@oxc-project_runtime@0.129.0/helpers/decorateParam.mjs +0 -8
- package/dist/exception-filter.d.mts.map +0 -1
- package/dist/exception-filter.mjs.map +0 -1
- package/dist/init.d.mts.map +0 -1
- package/dist/init.mjs.map +0 -1
- package/dist/module.d.mts.map +0 -1
- package/dist/module.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -15,7 +15,20 @@ bun add @interfere/nest
|
|
|
15
15
|
```ts
|
|
16
16
|
// instrument.ts — imported first in main.ts, before any @nestjs/* import
|
|
17
17
|
import { init } from "@interfere/nest";
|
|
18
|
-
|
|
18
|
+
init({ serviceName: "my-api" });
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
// main.ts
|
|
23
|
+
import "./instrument";
|
|
24
|
+
import { NestFactory } from "@nestjs/core";
|
|
25
|
+
import { AppModule } from "./app.module";
|
|
26
|
+
|
|
27
|
+
async function bootstrap() {
|
|
28
|
+
const app = await NestFactory.create(AppModule);
|
|
29
|
+
await app.listen(3000);
|
|
30
|
+
}
|
|
31
|
+
bootstrap();
|
|
19
32
|
```
|
|
20
33
|
|
|
21
34
|
```ts
|
|
@@ -27,4 +40,4 @@ import { InterfereModule } from "@interfere/nest";
|
|
|
27
40
|
export class AppModule {}
|
|
28
41
|
```
|
|
29
42
|
|
|
30
|
-
Set `
|
|
43
|
+
Set `INTERFERE_PUBLIC_KEY` to your surface's `interfere_pk_*` public key. Full docs at <https://interfere.com/docs>.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function __decorate(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}exports.__decorate=__decorate;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function __decorate(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r}export{__decorate};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function __decorateMetadata(k,v){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(k,v)}exports.__decorateMetadata=__decorateMetadata;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function __decorateMetadata(k,v){if(typeof Reflect==`object`&&typeof Reflect.metadata==`function`)return Reflect.metadata(k,v)}export{__decorateMetadata};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function __decorateParam(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}}exports.__decorateParam=__decorateParam;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function __decorateParam(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}}export{__decorateParam};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_decorateMetadata=require("./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateMetadata.cjs"),require_decorateParam=require("./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateParam.cjs"),require_decorate=require("./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.cjs");let _interfere_node=require("@interfere/node"),_nestjs_common=require("@nestjs/common"),_nestjs_core=require("@nestjs/core");var _ref;let InterfereExceptionFilter=class extends _nestjs_core.BaseExceptionFilter{constructor(adapterHost){super(adapterHost?.httpAdapter)}catch(exception,host){this.shouldReport(exception)&&(0,_interfere_node.captureError)(exception,this.extractRequest(host)),super.catch(exception,host)}shouldReport(exception){return exception instanceof _nestjs_common.HttpException?exception.getStatus()>=500:!0}extractRequest(host){if(host.getType()===`http`)return host.switchToHttp().getRequest()}};InterfereExceptionFilter=require_decorate.__decorate([(0,_nestjs_common.Catch)(),require_decorateParam.__decorateParam(0,(0,_nestjs_common.Optional)()),require_decorateParam.__decorateParam(0,(0,_nestjs_common.Inject)(_nestjs_core.HttpAdapterHost)),require_decorateMetadata.__decorateMetadata(`design:paramtypes`,[typeof(_ref=_nestjs_core.HttpAdapterHost!==void 0&&_nestjs_core.HttpAdapterHost)==`function`?_ref:Object])],InterfereExceptionFilter),Object.defineProperty(exports,"InterfereExceptionFilter",{enumerable:!0,get:function(){return InterfereExceptionFilter}});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ArgumentsHost, ExceptionFilter } from "@nestjs/common";
|
|
2
|
+
import { BaseExceptionFilter, HttpAdapterHost } from "@nestjs/core";
|
|
3
|
+
|
|
4
|
+
//#region src/exception-filter.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Forwards uncaught exceptions to Interfere, then delegates to Nest's
|
|
7
|
+
* default response shaping. Skips `HttpException` with status 4xx —
|
|
8
|
+
* client-fault errors are framework-handled and shouldn't bill against
|
|
9
|
+
* crash dashboards.
|
|
10
|
+
*/
|
|
11
|
+
declare class InterfereExceptionFilter extends BaseExceptionFilter implements ExceptionFilter {
|
|
12
|
+
constructor(adapterHost?: HttpAdapterHost);
|
|
13
|
+
catch(exception: unknown, host: ArgumentsHost): void;
|
|
14
|
+
private shouldReport;
|
|
15
|
+
private extractRequest;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { InterfereExceptionFilter };
|
|
19
|
+
//# sourceMappingURL=exception-filter.d.cts.map
|
|
@@ -1,33 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { __decorate } from "./_virtual/_@oxc-project_runtime@0.129.0/helpers/decorate.mjs";
|
|
4
|
-
import { captureError } from "@interfere/node";
|
|
5
|
-
import { Catch, HttpException, Inject, Optional } from "@nestjs/common";
|
|
6
|
-
import { BaseExceptionFilter, HttpAdapterHost } from "@nestjs/core";
|
|
7
|
-
//#region src/exception-filter.ts
|
|
8
|
-
var _ref;
|
|
9
|
-
let InterfereExceptionFilter = class InterfereExceptionFilter extends BaseExceptionFilter {
|
|
10
|
-
constructor(adapterHost) {
|
|
11
|
-
super(adapterHost?.httpAdapter);
|
|
12
|
-
}
|
|
13
|
-
catch(exception, host) {
|
|
14
|
-
if (this.shouldReport(exception)) captureError(exception, this.extractRequest(host));
|
|
15
|
-
super.catch(exception, host);
|
|
16
|
-
}
|
|
17
|
-
shouldReport(exception) {
|
|
18
|
-
if (exception instanceof HttpException) return exception.getStatus() >= 500;
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
extractRequest(host) {
|
|
22
|
-
if (host.getType() !== "http") return;
|
|
23
|
-
return host.switchToHttp().getRequest();
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
InterfereExceptionFilter = __decorate([
|
|
27
|
-
Catch(),
|
|
28
|
-
__decorateParam(0, Optional()),
|
|
29
|
-
__decorateParam(0, Inject(HttpAdapterHost)),
|
|
30
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref = typeof HttpAdapterHost !== "undefined" && HttpAdapterHost) === "function" ? _ref : Object])
|
|
31
|
-
], InterfereExceptionFilter);
|
|
32
|
-
//#endregion
|
|
33
|
-
export { InterfereExceptionFilter };
|
|
1
|
+
import{__decorateMetadata}from"./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateMetadata.mjs";import{__decorateParam}from"./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorateParam.mjs";import{__decorate}from"./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.mjs";import{captureError}from"@interfere/node";import{Catch,HttpException,Inject,Optional}from"@nestjs/common";import{BaseExceptionFilter,HttpAdapterHost}from"@nestjs/core";var _ref;let InterfereExceptionFilter=class extends BaseExceptionFilter{constructor(adapterHost){super(adapterHost?.httpAdapter)}catch(exception,host){this.shouldReport(exception)&&captureError(exception,this.extractRequest(host)),super.catch(exception,host)}shouldReport(exception){return exception instanceof HttpException?exception.getStatus()>=500:!0}extractRequest(host){if(host.getType()===`http`)return host.switchToHttp().getRequest()}};InterfereExceptionFilter=__decorate([Catch(),__decorateParam(0,Optional()),__decorateParam(0,Inject(HttpAdapterHost)),__decorateMetadata(`design:paramtypes`,[typeof(_ref=HttpAdapterHost!==void 0&&HttpAdapterHost)==`function`?_ref:Object])],InterfereExceptionFilter);export{InterfereExceptionFilter};
|
|
2
|
+
//# sourceMappingURL=exception-filter.mjs.map
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_exception_filter=require("./exception-filter.cjs"),require_init=require("./init.cjs"),require_module=require("./module.cjs");let _interfere_node=require("@interfere/node");Object.defineProperty(exports,"InterfereExceptionFilter",{enumerable:!0,get:function(){return require_exception_filter.InterfereExceptionFilter}}),Object.defineProperty(exports,"InterfereModule",{enumerable:!0,get:function(){return require_module.InterfereModule}}),Object.defineProperty(exports,"captureError",{enumerable:!0,get:function(){return _interfere_node.captureError}}),Object.defineProperty(exports,"captureMessage",{enumerable:!0,get:function(){return _interfere_node.captureMessage}}),Object.defineProperty(exports,"close",{enumerable:!0,get:function(){return _interfere_node.close}}),Object.defineProperty(exports,"flush",{enumerable:!0,get:function(){return _interfere_node.flush}}),exports.init=require_init.init,Object.defineProperty(exports,"withSpan",{enumerable:!0,get:function(){return _interfere_node.withSpan}});
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { InterfereExceptionFilter } from "./exception-filter.cjs";
|
|
2
|
+
import { InitOptions, init } from "./init.cjs";
|
|
3
|
+
import { InterfereModule } from "./module.cjs";
|
|
4
|
+
import { CaptureErrorContext, captureError, captureMessage, close, flush, withSpan } from "@interfere/node";
|
|
5
|
+
export { type CaptureErrorContext, type InitOptions, InterfereExceptionFilter, InterfereModule, captureError, captureMessage, close, flush, init, withSpan };
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { init } from "./init.mjs";
|
|
3
|
-
import { InterfereModule } from "./module.mjs";
|
|
4
|
-
import { captureError, captureMessage, close, flush, withSpan } from "@interfere/node";
|
|
5
|
-
export { InterfereExceptionFilter, InterfereModule, captureError, captureMessage, close, flush, init, withSpan };
|
|
1
|
+
import{InterfereExceptionFilter}from"./exception-filter.mjs";import{init}from"./init.mjs";import{InterfereModule}from"./module.mjs";import{captureError,captureMessage,close,flush,withSpan}from"@interfere/node";export{InterfereExceptionFilter,InterfereModule,captureError,captureMessage,close,flush,init,withSpan};
|
package/dist/init.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_package=require("./package.cjs");let _interfere_node=require("@interfere/node"),_opentelemetry_instrumentation=require("@opentelemetry/instrumentation"),_opentelemetry_instrumentation_nestjs_core=require("@opentelemetry/instrumentation-nestjs-core"),instrumented=!1;function init(options={}){instrumented||=((0,_opentelemetry_instrumentation.registerInstrumentations)({instrumentations:[new _opentelemetry_instrumentation_nestjs_core.NestInstrumentation]}),!0),(0,_interfere_node.init)(options),options.debug&&console.log(`[interfere] ${require_package.name}@${require_package.version} initialized`)}exports.init=init;
|
package/dist/init.d.cts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InitOptions as InitOptions$1 } from "@interfere/node";
|
|
2
|
+
|
|
3
|
+
//#region src/init.d.ts
|
|
4
|
+
interface InitOptions extends InitOptions$1 {
|
|
5
|
+
/**
|
|
6
|
+
* Log a one-line confirmation to `stdout` on successful init.
|
|
7
|
+
* Useful during integration to verify the SDK is wired up.
|
|
8
|
+
* Default `false`.
|
|
9
|
+
*/
|
|
10
|
+
readonly debug?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Bootstraps `@interfere/node` and registers
|
|
14
|
+
* `@opentelemetry/instrumentation-nestjs-core` for auto-spans across
|
|
15
|
+
* controllers, guards, pipes, interceptors, and middleware. Must run
|
|
16
|
+
* before `@nestjs/core` is imported — see the README for the
|
|
17
|
+
* `instrument.ts` pattern.
|
|
18
|
+
*/
|
|
19
|
+
declare function init(options?: InitOptions): void;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { InitOptions, init };
|
|
22
|
+
//# sourceMappingURL=init.d.cts.map
|
package/dist/init.d.mts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import { InitOptions
|
|
1
|
+
import { InitOptions as InitOptions$1 } from "@interfere/node";
|
|
2
2
|
|
|
3
3
|
//#region src/init.d.ts
|
|
4
|
+
interface InitOptions extends InitOptions$1 {
|
|
5
|
+
/**
|
|
6
|
+
* Log a one-line confirmation to `stdout` on successful init.
|
|
7
|
+
* Useful during integration to verify the SDK is wired up.
|
|
8
|
+
* Default `false`.
|
|
9
|
+
*/
|
|
10
|
+
readonly debug?: boolean;
|
|
11
|
+
}
|
|
4
12
|
/**
|
|
5
13
|
* Bootstraps `@interfere/node` and registers
|
|
6
14
|
* `@opentelemetry/instrumentation-nestjs-core` for auto-spans across
|
|
@@ -8,6 +16,7 @@ import { InitOptions, InitOptions as InitOptions$1 } from "@interfere/node";
|
|
|
8
16
|
* before `@nestjs/core` is imported — see the README for the
|
|
9
17
|
* `instrument.ts` pattern.
|
|
10
18
|
*/
|
|
11
|
-
declare function init(options?: InitOptions
|
|
19
|
+
declare function init(options?: InitOptions): void;
|
|
12
20
|
//#endregion
|
|
13
|
-
export {
|
|
21
|
+
export { InitOptions, init };
|
|
22
|
+
//# sourceMappingURL=init.d.mts.map
|
package/dist/init.mjs
CHANGED
|
@@ -1,21 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { NestInstrumentation } from "@opentelemetry/instrumentation-nestjs-core";
|
|
4
|
-
//#region src/init.ts
|
|
5
|
-
let instrumented = false;
|
|
6
|
-
/**
|
|
7
|
-
* Bootstraps `@interfere/node` and registers
|
|
8
|
-
* `@opentelemetry/instrumentation-nestjs-core` for auto-spans across
|
|
9
|
-
* controllers, guards, pipes, interceptors, and middleware. Must run
|
|
10
|
-
* before `@nestjs/core` is imported — see the README for the
|
|
11
|
-
* `instrument.ts` pattern.
|
|
12
|
-
*/
|
|
13
|
-
async function init(options = {}) {
|
|
14
|
-
if (!instrumented) {
|
|
15
|
-
registerInstrumentations({ instrumentations: [new NestInstrumentation()] });
|
|
16
|
-
instrumented = true;
|
|
17
|
-
}
|
|
18
|
-
await init$1(options);
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { init };
|
|
1
|
+
import{name,version}from"./package.mjs";import{init as init$1}from"@interfere/node";import{registerInstrumentations}from"@opentelemetry/instrumentation";import{NestInstrumentation}from"@opentelemetry/instrumentation-nestjs-core";let instrumented=!1;function init(options={}){instrumented||=(registerInstrumentations({instrumentations:[new NestInstrumentation]}),!0),init$1(options),options.debug&&console.log(`[interfere] ${name}@${version} initialized`)}export{init};
|
|
2
|
+
//# sourceMappingURL=init.mjs.map
|
package/dist/module.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_decorate=require("./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.cjs"),require_exception_filter=require("./exception-filter.cjs");let _nestjs_common=require("@nestjs/common"),_nestjs_core=require("@nestjs/core");var _InterfereModule;let InterfereModule=_InterfereModule=class{static forRoot(){return{module:_InterfereModule,providers:[{provide:_nestjs_core.APP_FILTER,useClass:require_exception_filter.InterfereExceptionFilter}]}}};InterfereModule=_InterfereModule=require_decorate.__decorate([(0,_nestjs_common.Module)({})],InterfereModule),Object.defineProperty(exports,"InterfereModule",{enumerable:!0,get:function(){return InterfereModule}});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DynamicModule } from "@nestjs/common";
|
|
2
|
+
|
|
3
|
+
//#region src/module.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Registers `InterfereExceptionFilter` as a global filter via
|
|
6
|
+
* `APP_FILTER`. Import once at the app root: `imports:
|
|
7
|
+
* [InterfereModule.forRoot()]`.
|
|
8
|
+
*/
|
|
9
|
+
declare class InterfereModule {
|
|
10
|
+
static forRoot(): DynamicModule;
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { InterfereModule };
|
|
14
|
+
//# sourceMappingURL=module.d.cts.map
|
package/dist/module.d.mts
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,20 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { Module } from "@nestjs/common";
|
|
4
|
-
import { APP_FILTER } from "@nestjs/core";
|
|
5
|
-
//#region src/module.ts
|
|
6
|
-
var _InterfereModule;
|
|
7
|
-
let InterfereModule = _InterfereModule = class InterfereModule {
|
|
8
|
-
static forRoot() {
|
|
9
|
-
return {
|
|
10
|
-
module: _InterfereModule,
|
|
11
|
-
providers: [{
|
|
12
|
-
provide: APP_FILTER,
|
|
13
|
-
useClass: InterfereExceptionFilter
|
|
14
|
-
}]
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
InterfereModule = _InterfereModule = __decorate([Module({})], InterfereModule);
|
|
19
|
-
//#endregion
|
|
20
|
-
export { InterfereModule };
|
|
1
|
+
import{__decorate}from"./_virtual/_@oxc-project_runtime@0.132.0/helpers/decorate.mjs";import{InterfereExceptionFilter}from"./exception-filter.mjs";import{Module}from"@nestjs/common";import{APP_FILTER}from"@nestjs/core";var _InterfereModule;let InterfereModule=_InterfereModule=class{static forRoot(){return{module:_InterfereModule,providers:[{provide:APP_FILTER,useClass:InterfereExceptionFilter}]}}};InterfereModule=_InterfereModule=__decorate([Module({})],InterfereModule);export{InterfereModule};
|
|
2
|
+
//# sourceMappingURL=module.mjs.map
|
package/dist/package.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var name=`@interfere/nest`,version=`0.0.1-canary.2`;Object.defineProperty(exports,"name",{enumerable:!0,get:function(){return name}}),Object.defineProperty(exports,"version",{enumerable:!0,get:function(){return version}});
|
package/dist/package.mjs
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interfere/nest",
|
|
3
|
-
"version": "0.0.1-canary.
|
|
3
|
+
"version": "0.0.1-canary.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "NestJS SDK for Interfere. Auto-captures uncaught exceptions from controllers, providers, and middleware via a global ExceptionFilter, plus re-exports the @interfere/node OTel instrumentation.",
|
|
6
6
|
"keywords": [
|
|
@@ -22,20 +22,32 @@
|
|
|
22
22
|
"directory": "src/packages/public/nest"
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
|
-
"dist"
|
|
25
|
+
"dist/**/*.cjs",
|
|
26
|
+
"dist/**/*.mjs",
|
|
27
|
+
"dist/**/*.d.cts",
|
|
28
|
+
"dist/**/*.d.mts",
|
|
29
|
+
"README.md"
|
|
26
30
|
],
|
|
27
31
|
"type": "module",
|
|
32
|
+
"main": "./dist/index.cjs",
|
|
33
|
+
"module": "./dist/index.mjs",
|
|
34
|
+
"types": "./dist/index.d.cts",
|
|
28
35
|
"exports": {
|
|
29
36
|
".": {
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
|
|
37
|
+
"monorepo": "./src/index.ts",
|
|
38
|
+
"import": {
|
|
39
|
+
"types": "./dist/index.d.mts",
|
|
40
|
+
"default": "./dist/index.mjs"
|
|
41
|
+
},
|
|
42
|
+
"require": {
|
|
43
|
+
"types": "./dist/index.d.cts",
|
|
44
|
+
"default": "./dist/index.cjs"
|
|
45
|
+
}
|
|
33
46
|
}
|
|
34
47
|
},
|
|
35
48
|
"sideEffects": false,
|
|
36
49
|
"publishConfig": {
|
|
37
|
-
"access": "public"
|
|
38
|
-
"tag": "canary"
|
|
50
|
+
"access": "public"
|
|
39
51
|
},
|
|
40
52
|
"scripts": {
|
|
41
53
|
"build": "tsdown",
|
|
@@ -43,19 +55,19 @@
|
|
|
43
55
|
"typecheck": "tsc --noEmit --incremental"
|
|
44
56
|
},
|
|
45
57
|
"dependencies": {
|
|
46
|
-
"@interfere/node": "^0.0.1-canary.
|
|
47
|
-
"@opentelemetry/instrumentation": "^0.
|
|
48
|
-
"@opentelemetry/instrumentation-nestjs-core": "^0.
|
|
58
|
+
"@interfere/node": "^0.0.1-canary.2",
|
|
59
|
+
"@opentelemetry/instrumentation": "^0.218.0",
|
|
60
|
+
"@opentelemetry/instrumentation-nestjs-core": "^0.64.0"
|
|
49
61
|
},
|
|
50
62
|
"peerDependencies": {
|
|
51
|
-
"@nestjs/common": "^10 || ^11",
|
|
52
|
-
"@nestjs/core": "^10 || ^11"
|
|
63
|
+
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
64
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0"
|
|
53
65
|
},
|
|
54
66
|
"devDependencies": {
|
|
55
67
|
"@interfere/test-utils": "^9.0.0",
|
|
56
68
|
"@interfere/typescript-config": "^9.0.0",
|
|
57
|
-
"@nestjs/common": "^11",
|
|
58
|
-
"@nestjs/core": "^11",
|
|
69
|
+
"@nestjs/common": "^10.0.0 || ^11.0.0",
|
|
70
|
+
"@nestjs/core": "^10.0.0 || ^11.0.0",
|
|
59
71
|
"@types/node": "^24.12.0",
|
|
60
72
|
"@vitest/coverage-v8": "^4.1.6",
|
|
61
73
|
"reflect-metadata": "^0.2",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
//#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
|
|
2
|
-
function __decorate(decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
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;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { __decorate };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exception-filter.d.mts","names":[],"sources":["../src/exception-filter.ts"],"mappings":";;;;;;AAkBA;;;;cACa,wBAAA,SACH,mBAAA,YACG,eAAA;cAG4B,WAAA,GAAc,eAAA;EAK5C,KAAA,CAAM,SAAA,WAAoB,IAAA,EAAM,aAAA;EAAA,QAOjC,YAAA;EAAA,QAOA,cAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exception-filter.mjs","names":[],"sources":["../src/exception-filter.ts"],"sourcesContent":["import { captureError } from \"@interfere/node\";\n\nimport {\n type ArgumentsHost,\n Catch,\n type ExceptionFilter,\n HttpException,\n Inject,\n Optional,\n} from \"@nestjs/common\";\nimport { BaseExceptionFilter, HttpAdapterHost } from \"@nestjs/core\";\n\n/**\n * Forwards uncaught exceptions to Interfere, then delegates to Nest's\n * default response shaping. Skips `HttpException` with status 4xx —\n * client-fault errors are framework-handled and shouldn't bill against\n * crash dashboards.\n */\n@Catch()\nexport class InterfereExceptionFilter\n extends BaseExceptionFilter\n implements ExceptionFilter\n{\n constructor(\n @Optional() @Inject(HttpAdapterHost) adapterHost?: HttpAdapterHost\n ) {\n super(adapterHost?.httpAdapter);\n }\n\n override catch(exception: unknown, host: ArgumentsHost): void {\n if (this.shouldReport(exception)) {\n captureError(exception, this.extractRequest(host));\n }\n super.catch(exception, host);\n }\n\n private shouldReport(exception: unknown): boolean {\n if (exception instanceof HttpException) {\n return exception.getStatus() >= 500;\n }\n return true;\n }\n\n private extractRequest(host: ArgumentsHost): unknown {\n if (host.getType() !== \"http\") {\n return;\n }\n return host.switchToHttp().getRequest();\n }\n}\n"],"mappings":";;;;;;;;AAmBO,IAAA,2BAAA,MAAM,iCACH,oBAEV;CACE,YACE,aACA;EACA,MAAM,aAAa,YAAY;;CAGjC,MAAe,WAAoB,MAA2B;EAC5D,IAAI,KAAK,aAAa,UAAU,EAC9B,aAAa,WAAW,KAAK,eAAe,KAAK,CAAC;EAEpD,MAAM,MAAM,WAAW,KAAK;;CAG9B,aAAqB,WAA6B;EAChD,IAAI,qBAAqB,eACvB,OAAO,UAAU,WAAW,IAAI;EAElC,OAAO;;CAGT,eAAuB,MAA8B;EACnD,IAAI,KAAK,SAAS,KAAK,QACrB;EAEF,OAAO,KAAK,cAAc,CAAC,YAAY;;;;CA7B1C,OAAO;oBAMH,UAAU,CAAA;oBAAE,OAAO,gBAAgB,CAAA"}
|
package/dist/init.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.mts","names":[],"sources":["../src/init.ts"],"mappings":";;;;;AAcA;;;;;iBAAsB,IAAA,CAAK,OAAA,GAAS,aAAA,GAAmB,OAAA"}
|
package/dist/init.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.mjs","names":["nodeInit"],"sources":["../src/init.ts"],"sourcesContent":["import { type InitOptions, init as nodeInit } from \"@interfere/node\";\n\nimport { registerInstrumentations } from \"@opentelemetry/instrumentation\";\nimport { NestInstrumentation } from \"@opentelemetry/instrumentation-nestjs-core\";\n\nlet instrumented = false;\n\n/**\n * Bootstraps `@interfere/node` and registers\n * `@opentelemetry/instrumentation-nestjs-core` for auto-spans across\n * controllers, guards, pipes, interceptors, and middleware. Must run\n * before `@nestjs/core` is imported — see the README for the\n * `instrument.ts` pattern.\n */\nexport async function init(options: InitOptions = {}): Promise<void> {\n if (!instrumented) {\n registerInstrumentations({\n instrumentations: [new NestInstrumentation()],\n });\n instrumented = true;\n }\n await nodeInit(options);\n}\n\nexport type { InitOptions } from \"@interfere/node\";\n"],"mappings":";;;;AAKA,IAAI,eAAe;;;;;;;;AASnB,eAAsB,KAAK,UAAuB,EAAE,EAAiB;CACnE,IAAI,CAAC,cAAc;EACjB,yBAAyB,EACvB,kBAAkB,CAAC,IAAI,qBAAqB,CAAC,EAC9C,CAAC;EACF,eAAe;;CAEjB,MAAMA,OAAS,QAAQ"}
|
package/dist/module.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.mts","names":[],"sources":["../src/module.ts"],"mappings":";;;;;AAUA;;;cACa,eAAA;EAAA,OACJ,OAAA,CAAA,GAAW,aAAA;AAAA"}
|
package/dist/module.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":[],"sources":["../src/module.ts"],"sourcesContent":["import { type DynamicModule, Module } from \"@nestjs/common\";\nimport { APP_FILTER } from \"@nestjs/core\";\n\nimport { InterfereExceptionFilter } from \"./exception-filter.js\";\n\n/**\n * Registers `InterfereExceptionFilter` as a global filter via\n * `APP_FILTER`. Import once at the app root: `imports:\n * [InterfereModule.forRoot()]`.\n */\n@Module({})\nexport class InterfereModule {\n static forRoot(): DynamicModule {\n return {\n module: InterfereModule,\n providers: [\n {\n provide: APP_FILTER,\n useClass: InterfereExceptionFilter,\n },\n ],\n };\n }\n}\n"],"mappings":";;;;;;AAWO,IAAA,kBAAA,mBAAA,MAAM,gBAAgB;CAC3B,OAAO,UAAyB;EAC9B,OAAO;GACL,QAAA;GACA,WAAW,CACT;IACE,SAAS;IACT,UAAU;IACX,CACF;GACF;;;iDAXJ,OAAO,EAAE,CAAC,CAAA,EAAA,gBAAA"}
|