@lad-tech/nsc-toolkit 1.2.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +104 -0
- package/.github/workflows/build-and-test.yml +22 -0
- package/.github/workflows/publish-package-to-npmjs.yml +5 -0
- package/CHANGELOG.md +3 -3
- package/README.md +2 -0
- package/coverage/clover.xml +578 -0
- package/coverage/coverage-final.json +12 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +146 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +1095 -0
- package/lefthook.yml +2 -2
- package/package.json +18 -10
- package/tsconfig.json +1 -1
- package/.eslintrc.js +0 -106
- package/dist/Client.js +0 -198
- package/dist/Client.js.map +0 -1
- package/dist/Method.js +0 -7
- package/dist/Method.js.map +0 -1
- package/dist/Root.js +0 -66
- package/dist/Root.js.map +0 -1
- package/dist/Service.js +0 -471
- package/dist/Service.js.map +0 -1
- package/dist/index.js +0 -22
- package/dist/index.js.map +0 -1
- package/dist/injector.js +0 -39
- package/dist/injector.js.map +0 -1
- package/dist/interfaces.js +0 -4
- package/dist/interfaces.js.map +0 -1
- package/dist/types/Client.d.ts +0 -28
- package/dist/types/Method.d.ts +0 -6
- package/dist/types/Root.d.ts +0 -25
- package/dist/types/Service.d.ts +0 -100
- package/dist/types/index.d.ts +0 -5
- package/dist/types/injector.d.ts +0 -11
- package/dist/types/interfaces.d.ts +0 -81
package/dist/types/Service.d.ts
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { Root } from './Root';
|
|
2
|
-
import { Emitter, ServiceOptions, Baggage, ExternalBaggage, ClientService } from './interfaces';
|
|
3
|
-
export declare class Service<E extends Emitter = {}> extends Root {
|
|
4
|
-
private options;
|
|
5
|
-
emitter: E;
|
|
6
|
-
private serviceName;
|
|
7
|
-
private httpServer?;
|
|
8
|
-
private httpProbServer?;
|
|
9
|
-
protected httpPort?: number;
|
|
10
|
-
protected ipAddress?: string;
|
|
11
|
-
private subscriptions;
|
|
12
|
-
private httpMethods;
|
|
13
|
-
private rootSpans;
|
|
14
|
-
private serviceInStoppingProcess;
|
|
15
|
-
constructor(options: ServiceOptions<E>);
|
|
16
|
-
/**
|
|
17
|
-
* Create global Tracer
|
|
18
|
-
*/
|
|
19
|
-
private createTracer;
|
|
20
|
-
/**
|
|
21
|
-
* Wrapper for async methods. Create span
|
|
22
|
-
*/
|
|
23
|
-
private perform;
|
|
24
|
-
/**
|
|
25
|
-
* Creating an object to inject into Method (business logic)
|
|
26
|
-
*/
|
|
27
|
-
private createObjectWithDependencies;
|
|
28
|
-
/**
|
|
29
|
-
* Create Method (business logic) context
|
|
30
|
-
*/
|
|
31
|
-
private createMethodContext;
|
|
32
|
-
/**
|
|
33
|
-
* Create Baggage from span. Expired one-on-one business logic call
|
|
34
|
-
*/
|
|
35
|
-
private getNextBaggage;
|
|
36
|
-
/**
|
|
37
|
-
* If there is no baggage. For example, in HTTP Gateway
|
|
38
|
-
*/
|
|
39
|
-
getRootBaggage(subject: string, headers?: ExternalBaggage, ownTimeout?: number): {
|
|
40
|
-
expired: number;
|
|
41
|
-
traceId: string;
|
|
42
|
-
spanId: string;
|
|
43
|
-
traceFlags: number;
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* End root baggage
|
|
47
|
-
*/
|
|
48
|
-
endRootSpan(traceId: string, error?: Error): void;
|
|
49
|
-
buildService<C extends ClientService>(Client: C, baggage?: Baggage): InstanceType<C>;
|
|
50
|
-
/**
|
|
51
|
-
* Create service Method for send HTTP settings
|
|
52
|
-
*/
|
|
53
|
-
private runServiceMethodForHttp;
|
|
54
|
-
private makeHttpSingleResponse;
|
|
55
|
-
/**
|
|
56
|
-
* Create transform stream for convert object to string in stream pipeline
|
|
57
|
-
*/
|
|
58
|
-
private getStringifyTransform;
|
|
59
|
-
private makeHttpStreamResponse;
|
|
60
|
-
/**
|
|
61
|
-
* Up HTTP server and start listen http routes
|
|
62
|
-
*/
|
|
63
|
-
private buildHTTPHandlers;
|
|
64
|
-
/**
|
|
65
|
-
* Run business logic for request
|
|
66
|
-
*/
|
|
67
|
-
private handled;
|
|
68
|
-
/**
|
|
69
|
-
* Start service. Subscribe for subject and up http server
|
|
70
|
-
*/
|
|
71
|
-
start(): Promise<void>;
|
|
72
|
-
/**
|
|
73
|
-
* Correct finish all connections
|
|
74
|
-
*/
|
|
75
|
-
private cleanupAndExit;
|
|
76
|
-
/**
|
|
77
|
-
* Handler for OS Signal
|
|
78
|
-
*/
|
|
79
|
-
private handleSignal;
|
|
80
|
-
/**
|
|
81
|
-
* Handler for Force OS Signal
|
|
82
|
-
*/
|
|
83
|
-
private handleFatalError;
|
|
84
|
-
/**
|
|
85
|
-
* Register listeners for Graceful Shutdown
|
|
86
|
-
*/
|
|
87
|
-
private registerGracefulShutdown;
|
|
88
|
-
/**
|
|
89
|
-
* Up Probe Route for container orchestration service
|
|
90
|
-
*/
|
|
91
|
-
private upProbeRoutes;
|
|
92
|
-
/**
|
|
93
|
-
* Build message for broker
|
|
94
|
-
*/
|
|
95
|
-
private buildMessage;
|
|
96
|
-
private upHTTPServer;
|
|
97
|
-
private getMyIpV4;
|
|
98
|
-
private getHttpSettings;
|
|
99
|
-
private getBaggageFromHTTPHeader;
|
|
100
|
-
}
|
package/dist/types/index.d.ts
DELETED
package/dist/types/injector.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import 'reflect-metadata';
|
|
2
|
-
import { Method, ClientService } from './interfaces';
|
|
3
|
-
export declare type Instance = Record<string, (props: unknown) => Promise<unknown>>;
|
|
4
|
-
export declare type Dependence = ClientService<unknown>;
|
|
5
|
-
export declare type DependenceStorage = Map<string, Dependence>;
|
|
6
|
-
export declare type InstanceStorage = Map<string, Instance>;
|
|
7
|
-
export declare const ServiceContainer: Map<string, DependenceStorage>;
|
|
8
|
-
export declare const InstanceContainer: Map<string, InstanceStorage>;
|
|
9
|
-
export declare function related<T extends Method>(target: T): void;
|
|
10
|
-
export declare function service(dependence: Dependence): (target: any, dependenceName: string) => void;
|
|
11
|
-
export declare function instance(instance: Instance): (target: any, instanceName: string) => void;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { NatsConnection } from 'nats';
|
|
2
|
-
import type { Client } from './Client';
|
|
3
|
-
import type { Logs } from '@lad-tech/toolbelt';
|
|
4
|
-
export interface MethodOptions {
|
|
5
|
-
useStream?: {
|
|
6
|
-
request?: boolean;
|
|
7
|
-
response?: boolean;
|
|
8
|
-
};
|
|
9
|
-
cache?: number;
|
|
10
|
-
timeout?: number;
|
|
11
|
-
runTimeValidation?: {
|
|
12
|
-
request?: boolean;
|
|
13
|
-
response?: boolean;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
export interface MethodSettings {
|
|
17
|
-
action: string;
|
|
18
|
-
options?: MethodOptions;
|
|
19
|
-
request?: Record<string, unknown>;
|
|
20
|
-
response?: Record<string, unknown>;
|
|
21
|
-
}
|
|
22
|
-
export interface Method {
|
|
23
|
-
settings: MethodSettings;
|
|
24
|
-
new (): {
|
|
25
|
-
handler: (params: any) => Promise<any>;
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
export declare type ClientService<C = Client> = new (natsConnection: NatsConnection, baggage?: Baggage, cache?: CacheSettings, loggerOutputFormatter?: Logs.OutputFormatter) => C;
|
|
29
|
-
export declare type Baggage = {
|
|
30
|
-
traceId: string;
|
|
31
|
-
spanId: string;
|
|
32
|
-
traceFlags: number;
|
|
33
|
-
expired?: number;
|
|
34
|
-
};
|
|
35
|
-
export declare type ExternalBaggage = {
|
|
36
|
-
'nsc-expired'?: number;
|
|
37
|
-
'nsc-trace-id'?: string;
|
|
38
|
-
'nsc-span-id'?: string;
|
|
39
|
-
'nsc-trace-flags'?: number;
|
|
40
|
-
};
|
|
41
|
-
export interface Message<M = any> {
|
|
42
|
-
payload: M;
|
|
43
|
-
baggage?: Baggage;
|
|
44
|
-
error?: {
|
|
45
|
-
message: string;
|
|
46
|
-
code?: number;
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export declare type Emitter = Record<string, (params: unknown) => void>;
|
|
50
|
-
export interface CacheSettings {
|
|
51
|
-
service: CacheService;
|
|
52
|
-
timeout: number;
|
|
53
|
-
}
|
|
54
|
-
export interface GracefulShutdownAdditionalService {
|
|
55
|
-
close: () => Promise<any>;
|
|
56
|
-
}
|
|
57
|
-
export interface ServiceOptions<E extends Emitter> {
|
|
58
|
-
name: string;
|
|
59
|
-
brokerConnection: NatsConnection;
|
|
60
|
-
methods: Method[];
|
|
61
|
-
events: keyof E extends [] ? [] : [keyof E];
|
|
62
|
-
cache?: CacheSettings;
|
|
63
|
-
loggerOutputFormatter?: Logs.OutputFormatter;
|
|
64
|
-
gracefulShutdown?: {
|
|
65
|
-
additional?: GracefulShutdownAdditionalService[];
|
|
66
|
-
timeout?: number;
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
export interface Listener<E extends Emitter> {
|
|
70
|
-
on<A extends keyof E>(action: A, handler: E[A]): void;
|
|
71
|
-
off<A extends keyof E>(action: A, handler: E[A]): void;
|
|
72
|
-
}
|
|
73
|
-
export interface HttpSettings {
|
|
74
|
-
ip?: string;
|
|
75
|
-
port?: number;
|
|
76
|
-
}
|
|
77
|
-
export interface CacheService {
|
|
78
|
-
set: (key: string, value: string, expired?: number) => Promise<void>;
|
|
79
|
-
get: (key: string) => Promise<string | undefined>;
|
|
80
|
-
delete: (key: string) => Promise<void>;
|
|
81
|
-
}
|