@tsdevstack/nest-common 0.1.4
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 +21 -0
- package/README.md +111 -0
- package/dist/auth/auth-user.interface.d.ts +62 -0
- package/dist/auth/auth.guard.d.ts +181 -0
- package/dist/auth/auth.guard.test.d.ts +1 -0
- package/dist/auth/auth.module.d.ts +45 -0
- package/dist/auth/index.d.ts +17 -0
- package/dist/auth/partner-api.decorator.d.ts +42 -0
- package/dist/auth/partner.decorator.d.ts +60 -0
- package/dist/auth/partner.decorator.test.d.ts +1 -0
- package/dist/auth/public.decorator.d.ts +42 -0
- package/dist/auth/public.decorator.test.d.ts +1 -0
- package/dist/auth/utils/extract-user-from-headers.d.ts +45 -0
- package/dist/auth/utils/extract-user-from-headers.test.d.ts +1 -0
- package/dist/auth/utils/index.d.ts +8 -0
- package/dist/auth/utils/parse-header-value.d.ts +40 -0
- package/dist/auth/utils/parse-header-value.test.d.ts +1 -0
- package/dist/auth/utils/to-camel-case.d.ts +18 -0
- package/dist/auth/utils/to-camel-case.test.d.ts +1 -0
- package/dist/bootstrap/create-app.d.ts +31 -0
- package/dist/bootstrap/create-app.test.d.ts +1 -0
- package/dist/bootstrap/start-worker.d.ts +24 -0
- package/dist/bootstrap/start-worker.test.d.ts +1 -0
- package/dist/bull/bull-config.module.d.ts +22 -0
- package/dist/bull/bull-config.module.test.d.ts +1 -0
- package/dist/bull/index.d.ts +1 -0
- package/dist/config/load-framework-config.d.ts +32 -0
- package/dist/config/load-framework-config.test.d.ts +1 -0
- package/dist/database/prisma-connection.d.ts +48 -0
- package/dist/database/prisma-connection.test.d.ts +1 -0
- package/dist/email-rate-limit/email-rate-limit.decorator.d.ts +8 -0
- package/dist/email-rate-limit/email-rate-limit.decorator.test.d.ts +1 -0
- package/dist/email-rate-limit/email-rate-limit.guard.d.ts +11 -0
- package/dist/email-rate-limit/email-rate-limit.guard.test.d.ts +1 -0
- package/dist/email-rate-limit/email-rate-limit.module.d.ts +2 -0
- package/dist/health/health.controller.d.ts +11 -0
- package/dist/health/health.controller.test.d.ts +1 -0
- package/dist/health/health.interface.d.ts +31 -0
- package/dist/health/health.module.d.ts +5 -0
- package/dist/health/health.service.d.ts +12 -0
- package/dist/health/health.service.test.d.ts +1 -0
- package/dist/health/index.d.ts +6 -0
- package/dist/health/indicators/memory.indicator.d.ts +7 -0
- package/dist/health/indicators/memory.indicator.test.d.ts +1 -0
- package/dist/health/indicators/redis.indicator.d.ts +7 -0
- package/dist/health/indicators/redis.indicator.test.d.ts +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +9 -0
- package/dist/index.mjs +9 -0
- package/dist/logging/index.d.ts +6 -0
- package/dist/logging/logger.interface.d.ts +29 -0
- package/dist/logging/logger.module.d.ts +14 -0
- package/dist/logging/logger.service.d.ts +31 -0
- package/dist/logging/logger.service.test.d.ts +1 -0
- package/dist/logging/logging.interceptor.d.ts +8 -0
- package/dist/logging/logging.interceptor.test.d.ts +1 -0
- package/dist/metrics/index.d.ts +5 -0
- package/dist/metrics/metrics.controller.d.ts +7 -0
- package/dist/metrics/metrics.controller.test.d.ts +1 -0
- package/dist/metrics/metrics.interceptor.d.ts +9 -0
- package/dist/metrics/metrics.interceptor.test.d.ts +1 -0
- package/dist/metrics/metrics.interface.d.ts +17 -0
- package/dist/metrics/metrics.module.d.ts +5 -0
- package/dist/metrics/metrics.service.d.ts +79 -0
- package/dist/metrics/metrics.service.test.d.ts +1 -0
- package/dist/notifications/index.d.ts +15 -0
- package/dist/notifications/interfaces/email-options.interface.d.ts +23 -0
- package/dist/notifications/interfaces/index.d.ts +6 -0
- package/dist/notifications/interfaces/push-options.interface.d.ts +16 -0
- package/dist/notifications/interfaces/sms-options.interface.d.ts +12 -0
- package/dist/notifications/notification.module.d.ts +2 -0
- package/dist/notifications/notification.module.test.d.ts +1 -0
- package/dist/notifications/notification.service.d.ts +28 -0
- package/dist/notifications/notification.service.test.d.ts +1 -0
- package/dist/notifications/providers/email/console.provider.d.ts +9 -0
- package/dist/notifications/providers/email/console.provider.test.d.ts +1 -0
- package/dist/notifications/providers/email/resend.provider.d.ts +24 -0
- package/dist/notifications/providers/email/resend.provider.test.d.ts +1 -0
- package/dist/notifications/providers/email-provider.interface.d.ts +17 -0
- package/dist/observability/index.d.ts +2 -0
- package/dist/observability/observability.interface.d.ts +32 -0
- package/dist/observability/observability.module.d.ts +24 -0
- package/dist/observability/observability.module.test.d.ts +1 -0
- package/dist/open-api-docs/create-swagger-document.d.ts +10 -0
- package/dist/open-api-docs/create-swagger-document.test.d.ts +1 -0
- package/dist/open-api-docs/generate-swagger-docs.d.ts +12 -0
- package/dist/open-api-docs/generate-swagger-docs.test.d.ts +1 -0
- package/dist/rate-limit/rate-limit-headers.interceptor.d.ts +5 -0
- package/dist/rate-limit/rate-limit-headers.interceptor.test.d.ts +1 -0
- package/dist/rate-limit/rate-limit.decorator.d.ts +11 -0
- package/dist/rate-limit/rate-limit.decorator.test.d.ts +1 -0
- package/dist/rate-limit/rate-limit.guard.d.ts +13 -0
- package/dist/rate-limit/rate-limit.guard.test.d.ts +1 -0
- package/dist/rate-limit/rate-limit.module.d.ts +2 -0
- package/dist/redis/redis.module.d.ts +2 -0
- package/dist/redis/redis.service.d.ts +17 -0
- package/dist/redis/redis.service.test.d.ts +1 -0
- package/dist/scheduler/index.d.ts +1 -0
- package/dist/scheduler/scheduler.guard.d.ts +73 -0
- package/dist/scheduler/scheduler.guard.test.d.ts +1 -0
- package/dist/secrets/index.d.ts +10 -0
- package/dist/secrets/providers/aws.provider.d.ts +56 -0
- package/dist/secrets/providers/aws.provider.test.d.ts +1 -0
- package/dist/secrets/providers/azure.provider.d.ts +70 -0
- package/dist/secrets/providers/azure.provider.test.d.ts +1 -0
- package/dist/secrets/providers/cloud-provider-adapter.d.ts +50 -0
- package/dist/secrets/providers/cloud-provider-adapter.test.d.ts +1 -0
- package/dist/secrets/providers/cloud-provider.interface.d.ts +86 -0
- package/dist/secrets/providers/gcp.provider.d.ts +64 -0
- package/dist/secrets/providers/gcp.provider.test.d.ts +1 -0
- package/dist/secrets/providers/local.provider.d.ts +82 -0
- package/dist/secrets/providers/local.provider.test.d.ts +1 -0
- package/dist/secrets/providers/provider-factory.d.ts +39 -0
- package/dist/secrets/providers/provider-factory.test.d.ts +1 -0
- package/dist/secrets/secrets.interface.d.ts +93 -0
- package/dist/secrets/secrets.module.d.ts +24 -0
- package/dist/secrets/secrets.service.d.ts +70 -0
- package/dist/secrets/secrets.service.test.d.ts +1 -0
- package/dist/service-client/base-service-client.d.ts +113 -0
- package/dist/service-client/base-service-client.test.d.ts +1 -0
- package/dist/service-client/filter-forward-headers.d.ts +11 -0
- package/dist/service-client/filter-forward-headers.test.d.ts +1 -0
- package/dist/telemetry/index.d.ts +4 -0
- package/dist/telemetry/telemetry.interface.d.ts +33 -0
- package/dist/telemetry/telemetry.module.d.ts +5 -0
- package/dist/telemetry/telemetry.service.d.ts +39 -0
- package/dist/telemetry/telemetry.service.test.d.ts +1 -0
- package/dist/telemetry/tracing.interceptor.d.ts +11 -0
- package/dist/telemetry/tracing.interceptor.test.d.ts +1 -0
- package/dist/utils/package-json.d.ts +25 -0
- package/package.json +102 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface TelemetryModuleOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Service name for identification in telemetry
|
|
4
|
+
* Default: SERVICE_NAME env var
|
|
5
|
+
*/
|
|
6
|
+
serviceName?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Service version
|
|
9
|
+
* Default: '1.0.0'
|
|
10
|
+
*/
|
|
11
|
+
serviceVersion?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Enable metrics collection
|
|
14
|
+
* Default: true
|
|
15
|
+
*/
|
|
16
|
+
metrics?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Enable tracing
|
|
19
|
+
* Default: true
|
|
20
|
+
*/
|
|
21
|
+
tracing?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* OTLP base endpoint (Jaeger, OTEL Collector, etc.)
|
|
24
|
+
* The /v1/traces path is appended automatically.
|
|
25
|
+
* Default: OTEL_EXPORTER_OTLP_ENDPOINT env var or 'http://localhost:4318'
|
|
26
|
+
*/
|
|
27
|
+
tracingEndpoint?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Port for Prometheus metrics endpoint (handled by OTEL exporter)
|
|
30
|
+
* Default: uses existing /metrics controller
|
|
31
|
+
*/
|
|
32
|
+
prometheusPort?: number;
|
|
33
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
|
|
2
|
+
import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
|
|
3
|
+
import { type Meter, type Tracer } from '@opentelemetry/api';
|
|
4
|
+
import type { TelemetryModuleOptions } from './telemetry.interface';
|
|
5
|
+
export declare class TelemetryService implements OnModuleInit, OnModuleDestroy {
|
|
6
|
+
private meterProvider;
|
|
7
|
+
private prometheusExporter;
|
|
8
|
+
private tracerProvider;
|
|
9
|
+
private readonly serviceName;
|
|
10
|
+
private readonly serviceVersion;
|
|
11
|
+
private readonly metricsEnabled;
|
|
12
|
+
private readonly tracingEnabled;
|
|
13
|
+
private readonly tracingEndpoint;
|
|
14
|
+
constructor(options: TelemetryModuleOptions);
|
|
15
|
+
onModuleInit(): void;
|
|
16
|
+
private initializeMetrics;
|
|
17
|
+
private initializeTracing;
|
|
18
|
+
onModuleDestroy(): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Get a meter for creating metrics
|
|
21
|
+
*/
|
|
22
|
+
getMeter(name?: string): Meter;
|
|
23
|
+
/**
|
|
24
|
+
* Get a tracer for creating spans
|
|
25
|
+
*/
|
|
26
|
+
getTracer(name?: string): Tracer;
|
|
27
|
+
/**
|
|
28
|
+
* Get the service name
|
|
29
|
+
*/
|
|
30
|
+
getServiceName(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Check if tracing is enabled
|
|
33
|
+
*/
|
|
34
|
+
isTracingEnabled(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get the Prometheus exporter for custom handling
|
|
37
|
+
*/
|
|
38
|
+
getPrometheusExporter(): PrometheusExporter | null;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { TelemetryService } from './telemetry.service';
|
|
4
|
+
export declare class TracingInterceptor implements NestInterceptor {
|
|
5
|
+
private readonly telemetryService;
|
|
6
|
+
constructor(telemetryService: TelemetryService);
|
|
7
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<unknown>;
|
|
8
|
+
private isInfrastructureEndpoint;
|
|
9
|
+
private finishSpan;
|
|
10
|
+
private finishSpanWithError;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface PackageJson {
|
|
2
|
+
name: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
author?: string | {
|
|
6
|
+
name: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Read package.json from current working directory
|
|
11
|
+
* Used by runtime code to get service metadata
|
|
12
|
+
*
|
|
13
|
+
* Note: This function does NOT validate the service name.
|
|
14
|
+
* Validation happens at dev/build time via CLI.
|
|
15
|
+
*/
|
|
16
|
+
export declare function readPackageJson(): PackageJson;
|
|
17
|
+
/**
|
|
18
|
+
* Extract author name from package.json author field
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractAuthor(packageJson: PackageJson): string;
|
|
21
|
+
/**
|
|
22
|
+
* Convert service name to title case
|
|
23
|
+
* Example: "auth-service" -> "Auth Service"
|
|
24
|
+
*/
|
|
25
|
+
export declare function titleCase(str: string): string;
|
package/package.json
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tsdevstack/nest-common",
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "Shared NestJS modules for tsdevstack microservices — auth, rate limiting, secrets, observability, and more",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"author": "tsdevstack",
|
|
7
|
+
"private": false,
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/tsdevstack/nest-common.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/tsdevstack/nest-common",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/tsdevstack/nest-common/issues"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"tsdevstack",
|
|
19
|
+
"nestjs",
|
|
20
|
+
"microservices",
|
|
21
|
+
"auth",
|
|
22
|
+
"rate-limiting",
|
|
23
|
+
"secrets-management",
|
|
24
|
+
"observability",
|
|
25
|
+
"opentelemetry",
|
|
26
|
+
"prisma",
|
|
27
|
+
"redis"
|
|
28
|
+
],
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=18.0.0"
|
|
31
|
+
},
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./dist/index.d.ts",
|
|
35
|
+
"import": "./dist/index.mjs",
|
|
36
|
+
"require": "./dist/index.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"main": "./dist/index.js",
|
|
40
|
+
"types": "./dist/index.d.ts",
|
|
41
|
+
"files": [
|
|
42
|
+
"dist"
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"build": "rslib build",
|
|
46
|
+
"dev": "tsc --noEmit --watch",
|
|
47
|
+
"format": "prettier --write .",
|
|
48
|
+
"lint": "eslint .",
|
|
49
|
+
"test": "rstest run",
|
|
50
|
+
"tsc": "tsc --noEmit"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@aws-sdk/client-secrets-manager": "^3.984.0",
|
|
54
|
+
"@azure/identity": "^4.13.0",
|
|
55
|
+
"@azure/keyvault-secrets": "^4.10.0",
|
|
56
|
+
"@google-cloud/secret-manager": "^6.1.1",
|
|
57
|
+
"@nestjs/bullmq": "^11.0.0",
|
|
58
|
+
"@nestjs/common": "^11.0.1",
|
|
59
|
+
"@nestjs/config": "^4.0.0",
|
|
60
|
+
"@nestjs/core": "^11.0.1",
|
|
61
|
+
"@nestjs/jwt": "^11.0.0",
|
|
62
|
+
"@nestjs/swagger": "11.2.0",
|
|
63
|
+
"@opentelemetry/api": "^1.9.0",
|
|
64
|
+
"@opentelemetry/exporter-prometheus": "^0.57.2",
|
|
65
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.57.2",
|
|
66
|
+
"@opentelemetry/instrumentation-http": "^0.57.2",
|
|
67
|
+
"@opentelemetry/resources": "^1.30.1",
|
|
68
|
+
"@opentelemetry/sdk-metrics": "^1.30.1",
|
|
69
|
+
"@opentelemetry/sdk-node": "^0.57.2",
|
|
70
|
+
"@opentelemetry/sdk-trace-node": "^1.30.1",
|
|
71
|
+
"@opentelemetry/semantic-conventions": "^1.38.0",
|
|
72
|
+
"@prisma/adapter-pg": "^7.4.0",
|
|
73
|
+
"@prisma/client": "^7.4.0",
|
|
74
|
+
"bullmq": "^5.0.0",
|
|
75
|
+
"compression": "^1.8.0",
|
|
76
|
+
"dotenv": "^16.0.0",
|
|
77
|
+
"express": "^5.0.0",
|
|
78
|
+
"google-auth-library": "^9.0.0",
|
|
79
|
+
"helmet": "^8.1.0",
|
|
80
|
+
"ioredis": "^5.6.1",
|
|
81
|
+
"pg": "^8.13.1",
|
|
82
|
+
"pino": "^10.1.0",
|
|
83
|
+
"resend": "^6.6.0",
|
|
84
|
+
"rxjs": "^7.8.1"
|
|
85
|
+
},
|
|
86
|
+
"devDependencies": {
|
|
87
|
+
"@eslint/js": "^9.39.0",
|
|
88
|
+
"@rslib/core": "^0.19.6",
|
|
89
|
+
"@rstest/adapter-rslib": "^0.2.0",
|
|
90
|
+
"@rstest/core": "^0.8.5",
|
|
91
|
+
"@types/compression": "^1.8.1",
|
|
92
|
+
"@types/express": "^5.0.0",
|
|
93
|
+
"@types/node": "^24.10.0",
|
|
94
|
+
"@types/pg": "^8.11.11",
|
|
95
|
+
"eslint": "^9.39.0",
|
|
96
|
+
"globals": "^16.4.0",
|
|
97
|
+
"pino-pretty": "^13.1.2",
|
|
98
|
+
"prettier": "^3.6.2",
|
|
99
|
+
"typescript": "^5.9.3",
|
|
100
|
+
"typescript-eslint": "^8.46.2"
|
|
101
|
+
}
|
|
102
|
+
}
|