@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.
Files changed (41) hide show
  1. package/.eslintrc.json +104 -0
  2. package/.github/workflows/build-and-test.yml +22 -0
  3. package/.github/workflows/publish-package-to-npmjs.yml +5 -0
  4. package/CHANGELOG.md +3 -3
  5. package/README.md +2 -0
  6. package/coverage/clover.xml +578 -0
  7. package/coverage/coverage-final.json +12 -0
  8. package/coverage/lcov-report/base.css +224 -0
  9. package/coverage/lcov-report/block-navigation.js +87 -0
  10. package/coverage/lcov-report/favicon.png +0 -0
  11. package/coverage/lcov-report/index.html +146 -0
  12. package/coverage/lcov-report/prettify.css +1 -0
  13. package/coverage/lcov-report/prettify.js +2 -0
  14. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  15. package/coverage/lcov-report/sorter.js +196 -0
  16. package/coverage/lcov.info +1095 -0
  17. package/lefthook.yml +2 -2
  18. package/package.json +18 -10
  19. package/tsconfig.json +1 -1
  20. package/.eslintrc.js +0 -106
  21. package/dist/Client.js +0 -198
  22. package/dist/Client.js.map +0 -1
  23. package/dist/Method.js +0 -7
  24. package/dist/Method.js.map +0 -1
  25. package/dist/Root.js +0 -66
  26. package/dist/Root.js.map +0 -1
  27. package/dist/Service.js +0 -471
  28. package/dist/Service.js.map +0 -1
  29. package/dist/index.js +0 -22
  30. package/dist/index.js.map +0 -1
  31. package/dist/injector.js +0 -39
  32. package/dist/injector.js.map +0 -1
  33. package/dist/interfaces.js +0 -4
  34. package/dist/interfaces.js.map +0 -1
  35. package/dist/types/Client.d.ts +0 -28
  36. package/dist/types/Method.d.ts +0 -6
  37. package/dist/types/Root.d.ts +0 -25
  38. package/dist/types/Service.d.ts +0 -100
  39. package/dist/types/index.d.ts +0 -5
  40. package/dist/types/injector.d.ts +0 -11
  41. package/dist/types/interfaces.d.ts +0 -81
@@ -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
- }
@@ -1,5 +0,0 @@
1
- export * from './Service';
2
- export * from './Client';
3
- export * from './Method';
4
- export * from './injector';
5
- export * from './interfaces';
@@ -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
- }