@stemy/backend 2.6.1 → 2.7.3

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 (117) hide show
  1. package/README.md +2 -2
  2. package/bundles/stemy-backend.umd.js +5553 -5465
  3. package/bundles/stemy-backend.umd.js.map +1 -1
  4. package/bundles/stemy-backend.umd.min.js +1 -1
  5. package/bundles/stemy-backend.umd.min.js.map +1 -1
  6. package/common-types.d.ts +226 -214
  7. package/esm2015/common-types.js +18 -18
  8. package/esm2015/public_api.js +338 -338
  9. package/esm2015/rest-controllers/assets.controller.js +116 -116
  10. package/esm2015/rest-controllers/auth.controller.js +75 -75
  11. package/esm2015/rest-controllers/gallery.controller.js +37 -37
  12. package/esm2015/rest-controllers/progresses.controller.js +57 -57
  13. package/esm2015/rest-middlewares/container.middleware.js +32 -32
  14. package/esm2015/rest-middlewares/error-handler.middleware.js +83 -83
  15. package/esm2015/rest-middlewares/language.middleware.js +28 -28
  16. package/esm2015/rest-middlewares/request-ended.middleware.js +25 -25
  17. package/esm2015/rest-middlewares/request-started.middleware.js +24 -24
  18. package/esm2015/rest-openapi.js +44 -44
  19. package/esm2015/services/asset-processor.js +101 -101
  20. package/esm2015/services/asset-resolver.js +53 -53
  21. package/esm2015/services/assets.js +110 -110
  22. package/esm2015/services/backend-provider.js +32 -32
  23. package/esm2015/services/cache-processor.js +34 -34
  24. package/esm2015/services/cache.js +94 -94
  25. package/esm2015/services/configuration.js +55 -55
  26. package/esm2015/services/endpoint-provider.js +29 -29
  27. package/esm2015/services/entities/asset.js +166 -112
  28. package/esm2015/services/entities/lazy-asset.js +93 -93
  29. package/esm2015/services/entities/progress.js +181 -181
  30. package/esm2015/services/fixtures.js +45 -45
  31. package/esm2015/services/gallery-cache.js +36 -36
  32. package/esm2015/services/gallery-image.js +48 -48
  33. package/esm2015/services/gallery.js +138 -138
  34. package/esm2015/services/id-generator.js +63 -63
  35. package/esm2015/services/job-manager.js +203 -203
  36. package/esm2015/services/lazy-assets.js +74 -74
  37. package/esm2015/services/mail-sender.js +59 -59
  38. package/esm2015/services/memory-cache.js +84 -84
  39. package/esm2015/services/mongo-connector.js +61 -61
  40. package/esm2015/services/progresses.js +91 -91
  41. package/esm2015/services/template-renderer.js +89 -89
  42. package/esm2015/services/translation-provider.js +31 -31
  43. package/esm2015/services/translator.js +85 -85
  44. package/esm2015/services/user-manager.js +47 -47
  45. package/esm2015/socket-controllers/progress.controller.js +82 -82
  46. package/esm2015/socket-middlewares/compression.middleware.js +19 -19
  47. package/esm2015/static.js +33 -33
  48. package/esm2015/stemy-backend.js +4 -4
  49. package/esm2015/utilities/di-container.js +84 -84
  50. package/esm2015/utilities/lazy-asset-generator.js +40 -40
  51. package/esm2015/utilities/tree.js +111 -111
  52. package/esm2015/utils.js +618 -601
  53. package/esm2015/validators.js +51 -51
  54. package/fesm2015/stemy-backend.js +3656 -3585
  55. package/fesm2015/stemy-backend.js.map +1 -1
  56. package/package.json +1 -1
  57. package/public_api.d.ts +33 -33
  58. package/rest-controllers/assets.controller.d.ts +16 -16
  59. package/rest-controllers/auth.controller.d.ts +14 -14
  60. package/rest-controllers/gallery.controller.d.ts +7 -7
  61. package/rest-controllers/progresses.controller.d.ts +9 -9
  62. package/rest-middlewares/container.middleware.d.ts +8 -8
  63. package/rest-middlewares/error-handler.middleware.d.ts +13 -13
  64. package/rest-middlewares/language.middleware.d.ts +8 -8
  65. package/rest-middlewares/request-ended.middleware.d.ts +5 -5
  66. package/rest-middlewares/request-started.middleware.d.ts +5 -5
  67. package/rest-openapi.d.ts +3 -3
  68. package/services/asset-processor.d.ts +12 -12
  69. package/services/asset-resolver.d.ts +9 -9
  70. package/services/assets.d.ts +19 -19
  71. package/services/backend-provider.d.ts +11 -11
  72. package/services/cache-processor.d.ts +4 -4
  73. package/services/cache.d.ts +23 -23
  74. package/services/configuration.d.ts +10 -10
  75. package/services/endpoint-provider.d.ts +4 -4
  76. package/services/entities/asset.d.ts +25 -23
  77. package/services/entities/lazy-asset.d.ts +29 -29
  78. package/services/entities/progress.d.ts +49 -49
  79. package/services/fixtures.d.ts +6 -6
  80. package/services/gallery-cache.d.ts +9 -9
  81. package/services/gallery-image.d.ts +11 -11
  82. package/services/gallery.d.ts +13 -13
  83. package/services/id-generator.d.ts +11 -11
  84. package/services/job-manager.d.ts +27 -27
  85. package/services/lazy-assets.d.ts +19 -19
  86. package/services/mail-sender.d.ts +20 -20
  87. package/services/memory-cache.d.ts +10 -10
  88. package/services/mongo-connector.d.ts +14 -14
  89. package/services/progresses.d.ts +18 -18
  90. package/services/template-renderer.d.ts +14 -14
  91. package/services/translation-provider.d.ts +10 -10
  92. package/services/translator.d.ts +15 -15
  93. package/services/user-manager.d.ts +6 -6
  94. package/socket-controllers/progress.controller.d.ts +10 -10
  95. package/socket-middlewares/compression.middleware.d.ts +4 -4
  96. package/static.d.ts +2 -2
  97. package/stemy-backend.d.ts +4 -4
  98. package/stemy-backend.metadata.json +1 -1
  99. package/utilities/di-container.d.ts +43 -43
  100. package/utilities/lazy-asset-generator.d.ts +15 -15
  101. package/utilities/tree.d.ts +14 -14
  102. package/utils.d.ts +76 -73
  103. package/validators.d.ts +7 -7
  104. package/di-container.d.ts +0 -40
  105. package/esm2015/di-container.js +0 -75
  106. package/esm2015/models/lazy-asset.js +0 -12
  107. package/esm2015/models/progress.js +0 -23
  108. package/esm2015/rest-middlewares/injector.middleware.js +0 -26
  109. package/esm2015/services/lazy-asset-helper.js +0 -74
  110. package/esm2015/services/logger.js +0 -14
  111. package/esm2015/services/progress-helper.js +0 -168
  112. package/models/lazy-asset.d.ts +0 -45
  113. package/models/progress.d.ts +0 -56
  114. package/rest-middlewares/injector.middleware.d.ts +0 -8
  115. package/services/lazy-asset-helper.d.ts +0 -15
  116. package/services/logger.d.ts +0 -2
  117. package/services/progress-helper.d.ts +0 -37
package/common-types.d.ts CHANGED
@@ -1,214 +1,226 @@
1
- /// <reference types="node" />
2
- import { Server } from "http";
3
- import { Request, Express } from "express";
4
- import { Socket, Server as SocketServer } from "socket.io";
5
- import { RoutingControllersOptions } from "routing-controllers";
6
- import { SocketControllersOptions } from "socket-controllers";
7
- import { ClassProvider, DependencyContainer, InjectionToken, TokenProvider, ValueProvider, RegistrationOptions } from "tsyringe";
8
- import { SchemaObject } from "openapi3-ts";
9
- import { Readable } from "stream";
10
- import { Moment } from "moment";
11
- export declare const Type: FunctionConstructor;
12
- export interface Type<T = object> extends Function {
13
- new (...args: any[]): T;
14
- }
15
- export interface FactoryProvider<T> {
16
- useFactory: (dc: IDependencyContainer) => T;
17
- }
18
- export interface ITree {
19
- readonly path: string;
20
- resolveService(): any;
21
- resolveLeaves(): Map<string, ITree>;
22
- resolveServices(): Map<string, any>;
23
- resolveAncestor(path: string): ITree;
24
- resolvePath(path: string, throwError?: boolean): ITree;
25
- }
26
- export interface IDependencyContainer extends DependencyContainer {
27
- readonly parent: IDependencyContainer;
28
- readonly tree: ITree;
29
- readonly registeredTokens: ReadonlyArray<InjectionToken>;
30
- createChildContainer(): IDependencyContainer;
31
- register<T>(token: InjectionToken<T>, provider: ValueProvider<T>): IDependencyContainer;
32
- register<T>(token: InjectionToken<T>, provider: FactoryProvider<T>): IDependencyContainer;
33
- register<T>(token: InjectionToken<T>, provider: TokenProvider<T>, options?: RegistrationOptions): IDependencyContainer;
34
- register<T>(token: InjectionToken<T>, provider: ClassProvider<T>, options?: RegistrationOptions): IDependencyContainer;
35
- register<T>(token: InjectionToken<T>, provider: Type<T>, options?: RegistrationOptions): IDependencyContainer;
36
- registerSingleton<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;
37
- registerSingleton<T>(token: Type<T>): IDependencyContainer;
38
- registerType<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;
39
- registerInstance<T>(token: InjectionToken<T>, instance: T): IDependencyContainer;
40
- get<T>(token: InjectionToken<T>): T;
41
- }
42
- export interface ClassBasedProvider<T> extends ClassProvider<T> {
43
- provide: InjectionToken;
44
- }
45
- export interface ValueBasedProvider<T> extends ValueProvider<T> {
46
- provide: InjectionToken;
47
- }
48
- export interface FactoryBasedProvider<T> extends FactoryProvider<T> {
49
- provide: InjectionToken;
50
- }
51
- export interface TokenBasedProvider<T> extends TokenProvider<T> {
52
- provide: InjectionToken;
53
- }
54
- export declare type SyringeProvider<T> = Type<T> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T> | TokenProvider<T>;
55
- export declare type Provider<T> = Type<T> | ClassBasedProvider<T> | ValueBasedProvider<T> | FactoryBasedProvider<T> | TokenBasedProvider<T>;
56
- export declare const FIXTURE: InjectionToken<IFixture>;
57
- export declare const JOB: InjectionToken<IJob>;
58
- export declare const EXPRESS: InjectionToken<Express>;
59
- export declare const HTTP_SERVER: InjectionToken<Server>;
60
- export declare const SOCKET_SERVER: InjectionToken<SocketServer>;
61
- export declare const PARAMETER: InjectionToken<Parameter>;
62
- export declare const DI_CONTAINER: InjectionToken<IDependencyContainer>;
63
- export interface IFixture {
64
- load(): Promise<any>;
65
- }
66
- export declare type SchemaConverter = (meta: any, options: any) => SchemaObject;
67
- export declare type ParamResolver = (value: string) => any;
68
- export declare class Parameter {
69
- readonly name: string;
70
- defaultValue: any;
71
- resolver: ParamResolver;
72
- constructor(name: string, defaultValue: any, resolver?: ParamResolver);
73
- }
74
- export interface IJob {
75
- process(): Promise<any>;
76
- }
77
- export interface IJobTask {
78
- start: () => this;
79
- stop: () => this;
80
- destroy: () => void;
81
- getStatus: () => string;
82
- }
83
- export declare type JobParams = {
84
- [name: string]: string | number | boolean;
85
- };
86
- export interface JobScheduleRange {
87
- min: number;
88
- max: number;
89
- }
90
- export declare type JobScheduleTime = string | number | JobScheduleRange | Array<string | number>;
91
- export interface IProgress {
92
- id?: string;
93
- message?: any;
94
- error?: any;
95
- percent?: number;
96
- current: number;
97
- remaining: number;
98
- createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress>;
99
- setMax(max: number): Promise<any>;
100
- setError(error: string): Promise<any>;
101
- advance(value?: number): Promise<any>;
102
- save(): Promise<any>;
103
- toJSON(): any;
104
- }
105
- export interface IAssetMeta {
106
- filename?: string;
107
- classified?: boolean;
108
- downloadCount?: number;
109
- firstDownload?: Date;
110
- lastDownload?: Date;
111
- [prop: string]: any;
112
- }
113
- export interface IAssetImageParams {
114
- rotation?: number;
115
- canvasScaleX?: number;
116
- canvasScaleY?: number;
117
- scaleX?: number;
118
- scaleY?: number;
119
- lazy?: boolean;
120
- }
121
- export interface IAsset {
122
- id?: string;
123
- filename?: string;
124
- contentType?: string;
125
- metadata?: IAssetMeta;
126
- stream: Readable;
127
- unlink(): Promise<string>;
128
- getBuffer(): Promise<Buffer>;
129
- download(metadata?: IAssetMeta): Promise<Readable>;
130
- downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable>;
131
- getImage(params?: IAssetImageParams): Promise<Readable>;
132
- toJSON(): any;
133
- }
134
- export interface ILazyAsset {
135
- id: string;
136
- jobName: string;
137
- jobParams: any;
138
- jobQue: string;
139
- progressId?: string;
140
- assetId?: string;
141
- unlink(): Promise<string>;
142
- startWorking(): void;
143
- loadAsset(): Promise<IAsset>;
144
- writeAsset(asset: IAsset): Promise<IAsset>;
145
- toJSON(): any;
146
- }
147
- export interface IUser {
148
- _id?: string;
149
- id?: string;
150
- email: string;
151
- password: string;
152
- roles: string[];
153
- }
154
- export interface IClientSocket extends Socket {
155
- interestedProgresses: Set<string>;
156
- }
157
- export interface IRequestBase<T> extends Request {
158
- id?: string;
159
- started?: Moment;
160
- ended?: Moment;
161
- container?: DependencyContainer;
162
- language?: string;
163
- user?: T;
164
- }
165
- export interface IRequest extends IRequestBase<IUser> {
166
- }
167
- export interface IGalleryImage {
168
- folder: string;
169
- thumb: string;
170
- big: string;
171
- serve(id: string): Promise<Buffer>;
172
- }
173
- export interface IGallerySize {
174
- width?: number;
175
- height?: number;
176
- }
177
- export interface IGalleryImageHandler {
178
- getOriginal(): Promise<Buffer>;
179
- writeResult(isThumb: boolean, buffer: Buffer): Promise<any>;
180
- hasResult(isThumb: boolean): Promise<boolean>;
181
- serveResult(isThumb: boolean): Promise<Buffer>;
182
- }
183
- export interface ITranslations {
184
- [key: string]: any;
185
- }
186
- export interface IPaginationMeta {
187
- total: number;
188
- [key: string]: any;
189
- }
190
- export interface IPaginationBase<T> {
191
- count: number;
192
- items: T[];
193
- meta?: IPaginationMeta;
194
- }
195
- export interface IPagination extends IPaginationBase<any> {
196
- }
197
- export interface IPaginationParams {
198
- page: number;
199
- limit: number;
200
- sort?: string;
201
- populate?: string[];
202
- [key: string]: any;
203
- }
204
- export declare type FontFormat = "opentype" | "truetype" | "woff" | "woff2" | "datafork";
205
- export interface IBackendConfig {
206
- rootFolder?: string;
207
- routePrefix?: string;
208
- params?: Parameter[];
209
- fixtures?: Type<IFixture>[];
210
- jobs?: Type<IJob>[];
211
- restOptions?: RoutingControllersOptions;
212
- socketOptions?: SocketControllersOptions;
213
- customValidation?: SchemaConverter | SchemaObject;
214
- }
1
+ /// <reference types="node" />
2
+ import { Server } from "http";
3
+ import { Request, Express } from "express";
4
+ import { Socket, Server as SocketServer } from "socket.io";
5
+ import { RoutingControllersOptions } from "routing-controllers";
6
+ import { SocketControllersOptions } from "socket-controllers";
7
+ import { ClassProvider, DependencyContainer, InjectionToken, TokenProvider, ValueProvider, RegistrationOptions } from "tsyringe";
8
+ import { SchemaObject } from "openapi3-ts";
9
+ import { Readable } from "stream";
10
+ import { Moment } from "moment";
11
+ export declare const Type: FunctionConstructor;
12
+ export interface Type<T = object> extends Function {
13
+ new (...args: any[]): T;
14
+ }
15
+ export interface FactoryProvider<T> {
16
+ useFactory: (dc: IDependencyContainer) => T;
17
+ }
18
+ export interface ITree {
19
+ readonly path: string;
20
+ resolveService(): any;
21
+ resolveLeaves(): Map<string, ITree>;
22
+ resolveServices(): Map<string, any>;
23
+ resolveAncestor(path: string): ITree;
24
+ resolvePath(path: string, throwError?: boolean): ITree;
25
+ }
26
+ export interface IDependencyContainer extends DependencyContainer {
27
+ readonly parent: IDependencyContainer;
28
+ readonly tree: ITree;
29
+ readonly registeredTokens: ReadonlyArray<InjectionToken>;
30
+ createChildContainer(): IDependencyContainer;
31
+ register<T>(token: InjectionToken<T>, provider: ValueProvider<T>): IDependencyContainer;
32
+ register<T>(token: InjectionToken<T>, provider: FactoryProvider<T>): IDependencyContainer;
33
+ register<T>(token: InjectionToken<T>, provider: TokenProvider<T>, options?: RegistrationOptions): IDependencyContainer;
34
+ register<T>(token: InjectionToken<T>, provider: ClassProvider<T>, options?: RegistrationOptions): IDependencyContainer;
35
+ register<T>(token: InjectionToken<T>, provider: Type<T>, options?: RegistrationOptions): IDependencyContainer;
36
+ registerSingleton<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;
37
+ registerSingleton<T>(token: Type<T>): IDependencyContainer;
38
+ registerType<T>(from: InjectionToken<T>, to: InjectionToken<T>): IDependencyContainer;
39
+ registerInstance<T>(token: InjectionToken<T>, instance: T): IDependencyContainer;
40
+ get<T>(token: InjectionToken<T>): T;
41
+ }
42
+ export interface ClassBasedProvider<T> extends ClassProvider<T> {
43
+ provide: InjectionToken;
44
+ }
45
+ export interface ValueBasedProvider<T> extends ValueProvider<T> {
46
+ provide: InjectionToken;
47
+ }
48
+ export interface FactoryBasedProvider<T> extends FactoryProvider<T> {
49
+ provide: InjectionToken;
50
+ }
51
+ export interface TokenBasedProvider<T> extends TokenProvider<T> {
52
+ provide: InjectionToken;
53
+ }
54
+ export declare type SyringeProvider<T> = Type<T> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T> | TokenProvider<T>;
55
+ export declare type Provider<T> = Type<T> | ClassBasedProvider<T> | ValueBasedProvider<T> | FactoryBasedProvider<T> | TokenBasedProvider<T>;
56
+ export declare const FIXTURE: InjectionToken<IFixture>;
57
+ export declare const JOB: InjectionToken<IJob>;
58
+ export declare const EXPRESS: InjectionToken<Express>;
59
+ export declare const HTTP_SERVER: InjectionToken<Server>;
60
+ export declare const SOCKET_SERVER: InjectionToken<SocketServer>;
61
+ export declare const PARAMETER: InjectionToken<Parameter>;
62
+ export declare const DI_CONTAINER: InjectionToken<IDependencyContainer>;
63
+ export interface IFixture {
64
+ load(): Promise<any>;
65
+ }
66
+ export declare type SchemaConverter = (meta: any, options: any) => SchemaObject;
67
+ export declare type ParamResolver = (value: string) => any;
68
+ export declare class Parameter {
69
+ readonly name: string;
70
+ defaultValue: any;
71
+ resolver: ParamResolver;
72
+ constructor(name: string, defaultValue: any, resolver?: ParamResolver);
73
+ }
74
+ export interface IJob {
75
+ process(): Promise<any>;
76
+ }
77
+ export interface IJobTask {
78
+ start: () => this;
79
+ stop: () => this;
80
+ destroy: () => void;
81
+ getStatus: () => string;
82
+ }
83
+ export declare type JobParams = {
84
+ [name: string]: string | number | boolean;
85
+ };
86
+ export interface JobScheduleRange {
87
+ min: number;
88
+ max: number;
89
+ }
90
+ export declare type JobScheduleTime = string | number | JobScheduleRange | Array<string | number>;
91
+ export interface IProgress {
92
+ id?: string;
93
+ message?: any;
94
+ error?: any;
95
+ percent?: number;
96
+ current: number;
97
+ remaining: number;
98
+ createSubProgress(progressValue: number, max?: number, message?: string): Promise<IProgress>;
99
+ setMax(max: number): Promise<any>;
100
+ setError(error: string): Promise<any>;
101
+ advance(value?: number): Promise<any>;
102
+ save(): Promise<any>;
103
+ toJSON(): any;
104
+ }
105
+ export interface IAssetCropInfo {
106
+ x: number;
107
+ y: number;
108
+ w: number;
109
+ h: number;
110
+ }
111
+ export interface IAssetMeta {
112
+ filename?: string;
113
+ classified?: boolean;
114
+ downloadCount?: number;
115
+ firstDownload?: Date;
116
+ lastDownload?: Date;
117
+ crop?: IAssetCropInfo;
118
+ cropBefore?: IAssetCropInfo;
119
+ cropAfter?: IAssetCropInfo;
120
+ [prop: string]: any;
121
+ }
122
+ export interface IAssetImageParams {
123
+ rotation?: number;
124
+ canvasScaleX?: number;
125
+ canvasScaleY?: number;
126
+ scaleX?: number;
127
+ scaleY?: number;
128
+ lazy?: boolean;
129
+ crop?: string | boolean;
130
+ cropBefore?: string | IAssetCropInfo;
131
+ cropAfter?: string | IAssetCropInfo;
132
+ }
133
+ export interface IAsset {
134
+ id?: string;
135
+ filename?: string;
136
+ contentType?: string;
137
+ metadata?: IAssetMeta;
138
+ stream: Readable;
139
+ unlink(): Promise<string>;
140
+ getBuffer(): Promise<Buffer>;
141
+ download(metadata?: IAssetMeta): Promise<Readable>;
142
+ downloadImage(params?: IAssetImageParams, metadata?: IAssetMeta): Promise<Readable>;
143
+ getImage(params?: IAssetImageParams): Promise<Readable>;
144
+ toJSON(): any;
145
+ }
146
+ export interface ILazyAsset {
147
+ id: string;
148
+ jobName: string;
149
+ jobParams: any;
150
+ jobQue: string;
151
+ progressId?: string;
152
+ assetId?: string;
153
+ unlink(): Promise<string>;
154
+ startWorking(): void;
155
+ loadAsset(): Promise<IAsset>;
156
+ writeAsset(asset: IAsset): Promise<IAsset>;
157
+ toJSON(): any;
158
+ }
159
+ export interface IUser {
160
+ _id?: string;
161
+ id?: string;
162
+ email: string;
163
+ password: string;
164
+ roles: string[];
165
+ }
166
+ export interface IClientSocket extends Socket {
167
+ interestedProgresses: Set<string>;
168
+ }
169
+ export interface IRequestBase<T> extends Request {
170
+ id?: string;
171
+ started?: Moment;
172
+ ended?: Moment;
173
+ container?: DependencyContainer;
174
+ language?: string;
175
+ user?: T;
176
+ }
177
+ export interface IRequest extends IRequestBase<IUser> {
178
+ }
179
+ export interface IGalleryImage {
180
+ folder: string;
181
+ thumb: string;
182
+ big: string;
183
+ serve(id: string): Promise<Buffer>;
184
+ }
185
+ export interface IGallerySize {
186
+ width?: number;
187
+ height?: number;
188
+ }
189
+ export interface IGalleryImageHandler {
190
+ getOriginal(): Promise<Buffer>;
191
+ writeResult(isThumb: boolean, buffer: Buffer): Promise<any>;
192
+ hasResult(isThumb: boolean): Promise<boolean>;
193
+ serveResult(isThumb: boolean): Promise<Buffer>;
194
+ }
195
+ export interface ITranslations {
196
+ [key: string]: any;
197
+ }
198
+ export interface IPaginationMeta {
199
+ total: number;
200
+ [key: string]: any;
201
+ }
202
+ export interface IPaginationBase<T> {
203
+ count: number;
204
+ items: T[];
205
+ meta?: IPaginationMeta;
206
+ }
207
+ export interface IPagination extends IPaginationBase<any> {
208
+ }
209
+ export interface IPaginationParams {
210
+ page: number;
211
+ limit: number;
212
+ sort?: string;
213
+ populate?: string[];
214
+ [key: string]: any;
215
+ }
216
+ export declare type FontFormat = "opentype" | "truetype" | "woff" | "woff2" | "datafork";
217
+ export interface IBackendConfig {
218
+ rootFolder?: string;
219
+ routePrefix?: string;
220
+ params?: Parameter[];
221
+ fixtures?: Type<IFixture>[];
222
+ jobs?: Type<IJob>[];
223
+ restOptions?: RoutingControllersOptions;
224
+ socketOptions?: SocketControllersOptions;
225
+ customValidation?: SchemaConverter | SchemaObject;
226
+ }
@@ -1,18 +1,18 @@
1
- // --- DI functions ---
2
- export const Type = Function;
3
- // --- Injection tokens ---
4
- export const FIXTURE = Symbol.for("fixture-token");
5
- export const JOB = Symbol.for("job-token");
6
- export const EXPRESS = Symbol.for("express-token");
7
- export const HTTP_SERVER = Symbol.for("http-server-token");
8
- export const SOCKET_SERVER = Symbol.for("socket-server-token");
9
- export const PARAMETER = Symbol.for("parameter-token");
10
- export const DI_CONTAINER = Symbol.for("di-container-token");
11
- export class Parameter {
12
- constructor(name, defaultValue, resolver = null) {
13
- this.name = name;
14
- this.defaultValue = defaultValue;
15
- this.resolver = resolver;
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUF3RDdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBNEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sU0FBUztJQUVsQixZQUFxQixJQUFZLEVBQVMsWUFBaUIsRUFBUyxXQUEwQixJQUFJO1FBQTdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBRWxHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VydmVyfSBmcm9tIFwiaHR0cFwiO1xuaW1wb3J0IHtSZXF1ZXN0LCBFeHByZXNzfSBmcm9tIFwiZXhwcmVzc1wiO1xuaW1wb3J0IHtTb2NrZXQsIFNlcnZlciBhcyBTb2NrZXRTZXJ2ZXJ9IGZyb20gXCJzb2NrZXQuaW9cIjtcbmltcG9ydCB7Um91dGluZ0NvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcbmltcG9ydCB7U29ja2V0Q29udHJvbGxlcnNPcHRpb25zfSBmcm9tIFwic29ja2V0LWNvbnRyb2xsZXJzXCI7XG5pbXBvcnQge1xuICAgIENsYXNzUHJvdmlkZXIsXG4gICAgRGVwZW5kZW5jeUNvbnRhaW5lcixcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBUb2tlblByb3ZpZGVyLFxuICAgIFZhbHVlUHJvdmlkZXIsXG4gICAgUmVnaXN0cmF0aW9uT3B0aW9uc1xufSBmcm9tIFwidHN5cmluZ2VcIjtcbmltcG9ydCB7U2NoZW1hT2JqZWN0fSBmcm9tIFwib3BlbmFwaTMtdHNcIjtcbmltcG9ydCBCdWZmZXIgZnJvbSBcImJ1ZmZlclwiO1xuaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xuaW1wb3J0IHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcblxuLy8gLS0tIERJIGZ1bmN0aW9ucyAtLS1cblxuZXhwb3J0IGNvbnN0IFR5cGUgPSBGdW5jdGlvbjtcblxuZXhwb3J0IGludGVyZmFjZSBUeXBlPFQgPSBvYmplY3Q+IGV4dGVuZHMgRnVuY3Rpb24ge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlQcm92aWRlcjxUPiB7XG4gICAgdXNlRmFjdG9yeTogKGRjOiBJRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4gVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZSB7XG4gICAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuICAgIHJlc29sdmVTZXJ2aWNlKCk6IGFueTtcbiAgICByZXNvbHZlTGVhdmVzKCk6IE1hcDxzdHJpbmcsIElUcmVlPjtcbiAgICByZXNvbHZlU2VydmljZXMoKTogTWFwPHN0cmluZywgYW55PjtcbiAgICByZXNvbHZlQW5jZXN0b3IocGF0aDogc3RyaW5nKTogSVRyZWU7XG4gICAgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0aHJvd0Vycm9yPzogYm9vbGVhbik6IElUcmVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5Q29udGFpbmVyIGV4dGVuZHMgRGVwZW5kZW5jeUNvbnRhaW5lciB7XG4gICAgcmVhZG9ubHkgcGFyZW50OiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcbiAgICByZWFkb25seSB0cmVlOiBJVHJlZTtcbiAgICByZWFkb25seSByZWdpc3RlcmVkVG9rZW5zOiBSZWFkb25seUFycmF5PEluamVjdGlvblRva2VuPjtcbiAgICBjcmVhdGVDaGlsZENvbnRhaW5lcigpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBWYWx1ZVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogRmFjdG9yeVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVG9rZW5Qcm92aWRlcjxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBDbGFzc1Byb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFR5cGU8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XG4gICAgcmVnaXN0ZXJTaW5nbGV0b248VD4oZnJvbTogSW5qZWN0aW9uVG9rZW48VD4sIHRvOiBJbmplY3Rpb25Ub2tlbjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xuICAgIHJlZ2lzdGVyU2luZ2xldG9uPFQ+KHRva2VuOiBUeXBlPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XG4gICAgcmVnaXN0ZXJUeXBlPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcbiAgICByZWdpc3Rlckluc3RhbmNlPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgaW5zdGFuY2U6IFQpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcbiAgICBnZXQ8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+KTogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBDbGFzc1Byb3ZpZGVyPFQ+IHtcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBWYWx1ZVByb3ZpZGVyPFQ+IHtcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWN0b3J5QmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIEZhY3RvcnlQcm92aWRlcjxUPiB7XG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5CYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgVG9rZW5Qcm92aWRlcjxUPiB7XG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XG59XG5cbmV4cG9ydCB0eXBlIFN5cmluZ2VQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc1Byb3ZpZGVyPFQ+IHwgVmFsdWVQcm92aWRlcjxUPiB8IEZhY3RvcnlQcm92aWRlcjxUPiB8IFRva2VuUHJvdmlkZXI8VD47XG5cbmV4cG9ydCB0eXBlIFByb3ZpZGVyPFQ+ID0gVHlwZTxUPiB8IENsYXNzQmFzZWRQcm92aWRlcjxUPiB8IFZhbHVlQmFzZWRQcm92aWRlcjxUPiB8IEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IHwgVG9rZW5CYXNlZFByb3ZpZGVyPFQ+O1xuXG4vLyAtLS0gSW5qZWN0aW9uIHRva2VucyAtLS1cblxuZXhwb3J0IGNvbnN0IEZJWFRVUkU6IEluamVjdGlvblRva2VuPElGaXh0dXJlPiA9IFN5bWJvbC5mb3IoXCJmaXh0dXJlLXRva2VuXCIpO1xuXG5leHBvcnQgY29uc3QgSk9COiBJbmplY3Rpb25Ub2tlbjxJSm9iPiA9IFN5bWJvbC5mb3IoXCJqb2ItdG9rZW5cIik7XG5cbmV4cG9ydCBjb25zdCBFWFBSRVNTOiBJbmplY3Rpb25Ub2tlbjxFeHByZXNzPiA9IFN5bWJvbC5mb3IoXCJleHByZXNzLXRva2VuXCIpO1xuXG5leHBvcnQgY29uc3QgSFRUUF9TRVJWRVI6IEluamVjdGlvblRva2VuPFNlcnZlcj4gPSBTeW1ib2wuZm9yKFwiaHR0cC1zZXJ2ZXItdG9rZW5cIik7XG5cbmV4cG9ydCBjb25zdCBTT0NLRVRfU0VSVkVSOiBJbmplY3Rpb25Ub2tlbjxTb2NrZXRTZXJ2ZXI+ID0gU3ltYm9sLmZvcihcInNvY2tldC1zZXJ2ZXItdG9rZW5cIik7XG5cbmV4cG9ydCBjb25zdCBQQVJBTUVURVI6IEluamVjdGlvblRva2VuPFBhcmFtZXRlcj4gPSBTeW1ib2wuZm9yKFwicGFyYW1ldGVyLXRva2VuXCIpO1xuXG5leHBvcnQgY29uc3QgRElfQ09OVEFJTkVSOiBJbmplY3Rpb25Ub2tlbjxJRGVwZW5kZW5jeUNvbnRhaW5lcj4gPSBTeW1ib2wuZm9yKFwiZGktY29udGFpbmVyLXRva2VuXCIpO1xuXG4vLyAtLS0gSW50ZXJmYWNlcyBhbmQgdXRpbGl0eSBjbGFzc2VzIC0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIElGaXh0dXJlIHtcbiAgICBsb2FkKCk6IFByb21pc2U8YW55Pjtcbn1cblxuZXhwb3J0IHR5cGUgU2NoZW1hQ29udmVydGVyID0gKFxuICAgIG1ldGE6IGFueSxcbiAgICBvcHRpb25zOiBhbnlcbikgPT4gU2NoZW1hT2JqZWN0O1xuXG5leHBvcnQgdHlwZSBQYXJhbVJlc29sdmVyID0gKHZhbHVlOiBzdHJpbmcpID0+IGFueTtcblxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBkZWZhdWx0VmFsdWU6IGFueSwgcHVibGljIHJlc29sdmVyOiBQYXJhbVJlc29sdmVyID0gbnVsbCkge1xuXG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElKb2Ige1xuICAgIHByb2Nlc3MoKTogUHJvbWlzZTxhbnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElKb2JUYXNrIHtcbiAgICBzdGFydDogKCkgPT4gdGhpcztcbiAgICBzdG9wOiAoKSA9PiB0aGlzO1xuICAgIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG4gICAgZ2V0U3RhdHVzOiAoKSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEpvYlBhcmFtcyA9IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9iU2NoZWR1bGVSYW5nZSB7XG4gICAgbWluOiBudW1iZXI7XG4gICAgbWF4OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEpvYlNjaGVkdWxlVGltZSA9IHN0cmluZyB8IG51bWJlciB8IEpvYlNjaGVkdWxlUmFuZ2UgfCBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XG4gICAgaWQ/OiBzdHJpbmc7XG4gICAgbWVzc2FnZT86IGFueTtcbiAgICBlcnJvcj86IGFueTtcbiAgICBwZXJjZW50PzogbnVtYmVyO1xuICAgIGN1cnJlbnQ6IG51bWJlcjtcbiAgICByZW1haW5pbmc6IG51bWJlcjtcbiAgICBjcmVhdGVTdWJQcm9ncmVzcyhwcm9ncmVzc1ZhbHVlOiBudW1iZXIsIG1heD86IG51bWJlciwgbWVzc2FnZT86IHN0cmluZyk6IFByb21pc2U8SVByb2dyZXNzPjtcbiAgICBzZXRNYXgobWF4OiBudW1iZXIpOiBQcm9taXNlPGFueT47XG4gICAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8YW55PjtcbiAgICBhZHZhbmNlKHZhbHVlPzogbnVtYmVyKTogUHJvbWlzZTxhbnk+O1xuICAgIHNhdmUoKTogUHJvbWlzZTxhbnk+O1xuICAgIHRvSlNPTigpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0TWV0YSB7XG4gICAgZmlsZW5hbWU/OiBzdHJpbmc7XG4gICAgY2xhc3NpZmllZD86IGJvb2xlYW47XG4gICAgZG93bmxvYWRDb3VudD86IG51bWJlcjtcbiAgICBmaXJzdERvd25sb2FkPzogRGF0ZTtcbiAgICBsYXN0RG93bmxvYWQ/OiBEYXRlO1xuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0SW1hZ2VQYXJhbXMge1xuICAgIHJvdGF0aW9uPzogbnVtYmVyO1xuICAgIGNhbnZhc1NjYWxlWD86IG51bWJlcjtcbiAgICBjYW52YXNTY2FsZVk/OiBudW1iZXI7XG4gICAgc2NhbGVYPzogbnVtYmVyO1xuICAgIHNjYWxlWT86IG51bWJlcjtcbiAgICBsYXp5PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQXNzZXQge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIGZpbGVuYW1lPzogc3RyaW5nO1xuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAgIG1ldGFkYXRhPzogSUFzc2V0TWV0YTtcbiAgICBzdHJlYW06IFJlYWRhYmxlLFxuICAgIHVubGluaygpOiBQcm9taXNlPHN0cmluZz47XG4gICAgZ2V0QnVmZmVyKCk6IFByb21pc2U8QnVmZmVyPjtcbiAgICBkb3dubG9hZChtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPjtcbiAgICBkb3dubG9hZEltYWdlKHBhcmFtcz86IElBc3NldEltYWdlUGFyYW1zLCBtZXRhZGF0YT86IElBc3NldE1ldGEpOiBQcm9taXNlPFJlYWRhYmxlPjtcbiAgICBnZXRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcyk6IFByb21pc2U8UmVhZGFibGU+O1xuICAgIHRvSlNPTigpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxhenlBc3NldCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBqb2JOYW1lOiBzdHJpbmc7XG4gICAgam9iUGFyYW1zOiBhbnk7XG4gICAgam9iUXVlOiBzdHJpbmc7XG4gICAgcHJvZ3Jlc3NJZD86IHN0cmluZztcbiAgICBhc3NldElkPzogc3RyaW5nO1xuICAgIHVubGluaygpOiBQcm9taXNlPHN0cmluZz47XG4gICAgc3RhcnRXb3JraW5nKCk6IHZvaWQ7XG4gICAgbG9hZEFzc2V0KCk6IFByb21pc2U8SUFzc2V0PjtcbiAgICB3cml0ZUFzc2V0KGFzc2V0OiBJQXNzZXQpOiBQcm9taXNlPElBc3NldD47XG4gICAgdG9KU09OKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XG4gICAgX2lkPzogc3RyaW5nO1xuICAgIGlkPzogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICByb2xlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNsaWVudFNvY2tldCBleHRlbmRzIFNvY2tldCB7XG4gICAgaW50ZXJlc3RlZFByb2dyZXNzZXM6IFNldDxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0QmFzZTxUPiBleHRlbmRzIFJlcXVlc3Qge1xuICAgIGlkPzogc3RyaW5nO1xuICAgIHN0YXJ0ZWQ/OiBNb21lbnQ7XG4gICAgZW5kZWQ/OiBNb21lbnQ7XG4gICAgY29udGFpbmVyPzogRGVwZW5kZW5jeUNvbnRhaW5lcjtcbiAgICBsYW5ndWFnZT86IHN0cmluZztcbiAgICB1c2VyPzogVDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdCBleHRlbmRzIElSZXF1ZXN0QmFzZTxJVXNlcj4ge1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdhbGxlcnlJbWFnZSB7XG4gICAgZm9sZGVyOiBzdHJpbmc7XG4gICAgdGh1bWI6IHN0cmluZztcbiAgICBiaWc6IHN0cmluZztcbiAgICBzZXJ2ZShpZDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdhbGxlcnlTaXplIHtcbiAgICB3aWR0aD86IG51bWJlcjtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdhbGxlcnlJbWFnZUhhbmRsZXIge1xuICAgIGdldE9yaWdpbmFsKCk6IFByb21pc2U8QnVmZmVyPjtcbiAgICB3cml0ZVJlc3VsdChpc1RodW1iOiBib29sZWFuLCBidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8YW55PjtcbiAgICBoYXNSZXN1bHQoaXNUaHVtYjogYm9vbGVhbik6IFByb21pc2U8Ym9vbGVhbj47XG4gICAgc2VydmVSZXN1bHQoaXNUaHVtYjogYm9vbGVhbik6IFByb21pc2U8QnVmZmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNsYXRpb25zIHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25NZXRhIHtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvbkJhc2U8VD4ge1xuICAgIGNvdW50OiBudW1iZXJcbiAgICBpdGVtczogVFtdO1xuICAgIG1ldGE/OiBJUGFnaW5hdGlvbk1ldGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb24gZXh0ZW5kcyBJUGFnaW5hdGlvbkJhc2U8YW55PiB7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvblBhcmFtcyB7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgc29ydD86IHN0cmluZztcbiAgICBwb3B1bGF0ZT86IHN0cmluZ1tdO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgRm9udEZvcm1hdCA9IFwib3BlbnR5cGVcIiB8IFwidHJ1ZXR5cGVcIiB8IFwid29mZlwiIHwgXCJ3b2ZmMlwiIHwgXCJkYXRhZm9ya1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElCYWNrZW5kQ29uZmlnIHtcbiAgICByb290Rm9sZGVyPzogc3RyaW5nO1xuICAgIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xuICAgIHBhcmFtcz86IFBhcmFtZXRlcltdO1xuICAgIGZpeHR1cmVzPzogVHlwZTxJRml4dHVyZT5bXTtcbiAgICBqb2JzPzogVHlwZTxJSm9iPltdO1xuICAgIHJlc3RPcHRpb25zPzogUm91dGluZ0NvbnRyb2xsZXJzT3B0aW9ucztcbiAgICBzb2NrZXRPcHRpb25zPzogU29ja2V0Q29udHJvbGxlcnNPcHRpb25zO1xuICAgIGN1c3RvbVZhbGlkYXRpb24/OiBTY2hlbWFDb252ZXJ0ZXIgfCBTY2hlbWFPYmplY3Q7XG59XG4iXX0=
1
+ // --- DI functions ---
2
+ export const Type = Function;
3
+ // --- Injection tokens ---
4
+ export const FIXTURE = Symbol.for("fixture-token");
5
+ export const JOB = Symbol.for("job-token");
6
+ export const EXPRESS = Symbol.for("express-token");
7
+ export const HTTP_SERVER = Symbol.for("http-server-token");
8
+ export const SOCKET_SERVER = Symbol.for("socket-server-token");
9
+ export const PARAMETER = Symbol.for("parameter-token");
10
+ export const DI_CONTAINER = Symbol.for("di-container-token");
11
+ export class Parameter {
12
+ constructor(name, defaultValue, resolver = null) {
13
+ this.name = name;
14
+ this.defaultValue = defaultValue;
15
+ this.resolver = resolver;
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1vbi10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrQkEsdUJBQXVCO0FBRXZCLE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUM7QUF3RDdCLDJCQUEyQjtBQUUzQixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQTZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUF5QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBNEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQTJCLE1BQU0sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQWlDLE1BQU0sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThCLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUVsRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQXlDLE1BQU0sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQWVuRyxNQUFNLE9BQU8sU0FBUztJQUVsQixZQUFxQixJQUFZLEVBQVMsWUFBaUIsRUFBUyxXQUEwQixJQUFJO1FBQTdFLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBSztRQUFTLGFBQVEsR0FBUixRQUFRLENBQXNCO0lBRWxHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U2VydmVyfSBmcm9tIFwiaHR0cFwiO1xyXG5pbXBvcnQge1JlcXVlc3QsIEV4cHJlc3N9IGZyb20gXCJleHByZXNzXCI7XHJcbmltcG9ydCB7U29ja2V0LCBTZXJ2ZXIgYXMgU29ja2V0U2VydmVyfSBmcm9tIFwic29ja2V0LmlvXCI7XHJcbmltcG9ydCB7Um91dGluZ0NvbnRyb2xsZXJzT3B0aW9uc30gZnJvbSBcInJvdXRpbmctY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtTb2NrZXRDb250cm9sbGVyc09wdGlvbnN9IGZyb20gXCJzb2NrZXQtY29udHJvbGxlcnNcIjtcclxuaW1wb3J0IHtcclxuICAgIENsYXNzUHJvdmlkZXIsXHJcbiAgICBEZXBlbmRlbmN5Q29udGFpbmVyLFxyXG4gICAgSW5qZWN0aW9uVG9rZW4sXHJcbiAgICBUb2tlblByb3ZpZGVyLFxyXG4gICAgVmFsdWVQcm92aWRlcixcclxuICAgIFJlZ2lzdHJhdGlvbk9wdGlvbnNcclxufSBmcm9tIFwidHN5cmluZ2VcIjtcclxuaW1wb3J0IHtTY2hlbWFPYmplY3R9IGZyb20gXCJvcGVuYXBpMy10c1wiO1xyXG5pbXBvcnQgQnVmZmVyIGZyb20gXCJidWZmZXJcIjtcclxuaW1wb3J0IHtSZWFkYWJsZX0gZnJvbSBcInN0cmVhbVwiO1xyXG5pbXBvcnQge01vbWVudH0gZnJvbSBcIm1vbWVudFwiO1xyXG5cclxuLy8gLS0tIERJIGZ1bmN0aW9ucyAtLS1cclxuXHJcbmV4cG9ydCBjb25zdCBUeXBlID0gRnVuY3Rpb247XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFR5cGU8VCA9IG9iamVjdD4gZXh0ZW5kcyBGdW5jdGlvbiB7XHJcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGYWN0b3J5UHJvdmlkZXI8VD4ge1xyXG4gICAgdXNlRmFjdG9yeTogKGRjOiBJRGVwZW5kZW5jeUNvbnRhaW5lcikgPT4gVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJlZSB7XHJcbiAgICByZWFkb25seSBwYXRoOiBzdHJpbmc7XHJcbiAgICByZXNvbHZlU2VydmljZSgpOiBhbnk7XHJcbiAgICByZXNvbHZlTGVhdmVzKCk6IE1hcDxzdHJpbmcsIElUcmVlPjtcclxuICAgIHJlc29sdmVTZXJ2aWNlcygpOiBNYXA8c3RyaW5nLCBhbnk+O1xyXG4gICAgcmVzb2x2ZUFuY2VzdG9yKHBhdGg6IHN0cmluZyk6IElUcmVlO1xyXG4gICAgcmVzb2x2ZVBhdGgocGF0aDogc3RyaW5nLCB0aHJvd0Vycm9yPzogYm9vbGVhbik6IElUcmVlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5Q29udGFpbmVyIGV4dGVuZHMgRGVwZW5kZW5jeUNvbnRhaW5lciB7XHJcbiAgICByZWFkb25seSBwYXJlbnQ6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVhZG9ubHkgdHJlZTogSVRyZWU7XHJcbiAgICByZWFkb25seSByZWdpc3RlcmVkVG9rZW5zOiBSZWFkb25seUFycmF5PEluamVjdGlvblRva2VuPjtcclxuICAgIGNyZWF0ZUNoaWxkQ29udGFpbmVyKCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogVmFsdWVQcm92aWRlcjxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogRmFjdG9yeVByb3ZpZGVyPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlcjxUPih0b2tlbjogSW5qZWN0aW9uVG9rZW48VD4sIHByb3ZpZGVyOiBUb2tlblByb3ZpZGVyPFQ+LCBvcHRpb25zPzogUmVnaXN0cmF0aW9uT3B0aW9ucyk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXI8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBwcm92aWRlcjogQ2xhc3NQcm92aWRlcjxUPiwgb3B0aW9ucz86IFJlZ2lzdHJhdGlvbk9wdGlvbnMpOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVyPFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPiwgcHJvdmlkZXI6IFR5cGU8VD4sIG9wdGlvbnM/OiBSZWdpc3RyYXRpb25PcHRpb25zKTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPihmcm9tOiBJbmplY3Rpb25Ub2tlbjxUPiwgdG86IEluamVjdGlvblRva2VuPFQ+KTogSURlcGVuZGVuY3lDb250YWluZXI7XHJcbiAgICByZWdpc3RlclNpbmdsZXRvbjxUPih0b2tlbjogVHlwZTxUPik6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgcmVnaXN0ZXJUeXBlPFQ+KGZyb206IEluamVjdGlvblRva2VuPFQ+LCB0bzogSW5qZWN0aW9uVG9rZW48VD4pOiBJRGVwZW5kZW5jeUNvbnRhaW5lcjtcclxuICAgIHJlZ2lzdGVySW5zdGFuY2U8VD4odG9rZW46IEluamVjdGlvblRva2VuPFQ+LCBpbnN0YW5jZTogVCk6IElEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgZ2V0PFQ+KHRva2VuOiBJbmplY3Rpb25Ub2tlbjxUPik6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xhc3NCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgQ2xhc3NQcm92aWRlcjxUPiB7XHJcbiAgICBwcm92aWRlOiBJbmplY3Rpb25Ub2tlbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gZXh0ZW5kcyBWYWx1ZVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlCYXNlZFByb3ZpZGVyPFQ+IGV4dGVuZHMgRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHByb3ZpZGU6IEluamVjdGlvblRva2VuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuQmFzZWRQcm92aWRlcjxUPiBleHRlbmRzIFRva2VuUHJvdmlkZXI8VD4ge1xyXG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFN5cmluZ2VQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc1Byb3ZpZGVyPFQ+IHwgVmFsdWVQcm92aWRlcjxUPiB8IEZhY3RvcnlQcm92aWRlcjxUPiB8IFRva2VuUHJvdmlkZXI8VD47XHJcblxyXG5leHBvcnQgdHlwZSBQcm92aWRlcjxUPiA9IFR5cGU8VD4gfCBDbGFzc0Jhc2VkUHJvdmlkZXI8VD4gfCBWYWx1ZUJhc2VkUHJvdmlkZXI8VD4gfCBGYWN0b3J5QmFzZWRQcm92aWRlcjxUPiB8IFRva2VuQmFzZWRQcm92aWRlcjxUPjtcclxuXHJcbi8vIC0tLSBJbmplY3Rpb24gdG9rZW5zIC0tLVxyXG5cclxuZXhwb3J0IGNvbnN0IEZJWFRVUkU6IEluamVjdGlvblRva2VuPElGaXh0dXJlPiA9IFN5bWJvbC5mb3IoXCJmaXh0dXJlLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEpPQjogSW5qZWN0aW9uVG9rZW48SUpvYj4gPSBTeW1ib2wuZm9yKFwiam9iLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IEVYUFJFU1M6IEluamVjdGlvblRva2VuPEV4cHJlc3M+ID0gU3ltYm9sLmZvcihcImV4cHJlc3MtdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgSFRUUF9TRVJWRVI6IEluamVjdGlvblRva2VuPFNlcnZlcj4gPSBTeW1ib2wuZm9yKFwiaHR0cC1zZXJ2ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgU09DS0VUX1NFUlZFUjogSW5qZWN0aW9uVG9rZW48U29ja2V0U2VydmVyPiA9IFN5bWJvbC5mb3IoXCJzb2NrZXQtc2VydmVyLXRva2VuXCIpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFBBUkFNRVRFUjogSW5qZWN0aW9uVG9rZW48UGFyYW1ldGVyPiA9IFN5bWJvbC5mb3IoXCJwYXJhbWV0ZXItdG9rZW5cIik7XHJcblxyXG5leHBvcnQgY29uc3QgRElfQ09OVEFJTkVSOiBJbmplY3Rpb25Ub2tlbjxJRGVwZW5kZW5jeUNvbnRhaW5lcj4gPSBTeW1ib2wuZm9yKFwiZGktY29udGFpbmVyLXRva2VuXCIpO1xyXG5cclxuLy8gLS0tIEludGVyZmFjZXMgYW5kIHV0aWxpdHkgY2xhc3NlcyAtLS1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUZpeHR1cmUge1xyXG4gICAgbG9hZCgpOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNjaGVtYUNvbnZlcnRlciA9IChcclxuICAgIG1ldGE6IGFueSxcclxuICAgIG9wdGlvbnM6IGFueVxyXG4pID0+IFNjaGVtYU9iamVjdDtcclxuXHJcbmV4cG9ydCB0eXBlIFBhcmFtUmVzb2x2ZXIgPSAodmFsdWU6IHN0cmluZykgPT4gYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgbmFtZTogc3RyaW5nLCBwdWJsaWMgZGVmYXVsdFZhbHVlOiBhbnksIHB1YmxpYyByZXNvbHZlcjogUGFyYW1SZXNvbHZlciA9IG51bGwpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUpvYiB7XHJcbiAgICBwcm9jZXNzKCk6IFByb21pc2U8YW55PjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJSm9iVGFzayB7XHJcbiAgICBzdGFydDogKCkgPT4gdGhpcztcclxuICAgIHN0b3A6ICgpID0+IHRoaXM7XHJcbiAgICBkZXN0cm95OiAoKSA9PiB2b2lkO1xyXG4gICAgZ2V0U3RhdHVzOiAoKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEpvYlBhcmFtcyA9IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEpvYlNjaGVkdWxlUmFuZ2Uge1xyXG4gICAgbWluOiBudW1iZXI7XHJcbiAgICBtYXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSm9iU2NoZWR1bGVUaW1lID0gc3RyaW5nIHwgbnVtYmVyIHwgSm9iU2NoZWR1bGVSYW5nZSB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQcm9ncmVzcyB7XHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIG1lc3NhZ2U/OiBhbnk7XHJcbiAgICBlcnJvcj86IGFueTtcclxuICAgIHBlcmNlbnQ/OiBudW1iZXI7XHJcbiAgICBjdXJyZW50OiBudW1iZXI7XHJcbiAgICByZW1haW5pbmc6IG51bWJlcjtcclxuICAgIGNyZWF0ZVN1YlByb2dyZXNzKHByb2dyZXNzVmFsdWU6IG51bWJlciwgbWF4PzogbnVtYmVyLCBtZXNzYWdlPzogc3RyaW5nKTogUHJvbWlzZTxJUHJvZ3Jlc3M+O1xyXG4gICAgc2V0TWF4KG1heDogbnVtYmVyKTogUHJvbWlzZTxhbnk+O1xyXG4gICAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZyk6IFByb21pc2U8YW55PjtcclxuICAgIGFkdmFuY2UodmFsdWU/OiBudW1iZXIpOiBQcm9taXNlPGFueT47XHJcbiAgICBzYXZlKCk6IFByb21pc2U8YW55PjtcclxuICAgIHRvSlNPTigpOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0Q3JvcEluZm8ge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgdzogbnVtYmVyO1xyXG4gICAgaDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBc3NldE1ldGEge1xyXG4gICAgZmlsZW5hbWU/OiBzdHJpbmc7XHJcbiAgICBjbGFzc2lmaWVkPzogYm9vbGVhbjtcclxuICAgIGRvd25sb2FkQ291bnQ/OiBudW1iZXI7XHJcbiAgICBmaXJzdERvd25sb2FkPzogRGF0ZTtcclxuICAgIGxhc3REb3dubG9hZD86IERhdGU7XHJcbiAgICBjcm9wPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQmVmb3JlPzogSUFzc2V0Q3JvcEluZm87XHJcbiAgICBjcm9wQWZ0ZXI/OiBJQXNzZXRDcm9wSW5mbztcclxuICAgIFtwcm9wOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0SW1hZ2VQYXJhbXMge1xyXG4gICAgcm90YXRpb24/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVg/OiBudW1iZXI7XHJcbiAgICBjYW52YXNTY2FsZVk/OiBudW1iZXI7XHJcbiAgICBzY2FsZVg/OiBudW1iZXI7XHJcbiAgICBzY2FsZVk/OiBudW1iZXI7XHJcbiAgICBsYXp5PzogYm9vbGVhbjtcclxuICAgIGNyb3A/OiBzdHJpbmcgfCBib29sZWFuO1xyXG4gICAgY3JvcEJlZm9yZT86IHN0cmluZyB8IElBc3NldENyb3BJbmZvO1xyXG4gICAgY3JvcEFmdGVyPzogc3RyaW5nIHwgSUFzc2V0Q3JvcEluZm87XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2V0IHtcclxuICAgIGlkPzogc3RyaW5nO1xyXG4gICAgZmlsZW5hbWU/OiBzdHJpbmc7XHJcbiAgICBjb250ZW50VHlwZT86IHN0cmluZztcclxuICAgIG1ldGFkYXRhPzogSUFzc2V0TWV0YTtcclxuICAgIHN0cmVhbTogUmVhZGFibGUsXHJcbiAgICB1bmxpbmsoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG4gICAgZ2V0QnVmZmVyKCk6IFByb21pc2U8QnVmZmVyPjtcclxuICAgIGRvd25sb2FkKG1ldGFkYXRhPzogSUFzc2V0TWV0YSk6IFByb21pc2U8UmVhZGFibGU+O1xyXG4gICAgZG93bmxvYWRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcywgbWV0YWRhdGE/OiBJQXNzZXRNZXRhKTogUHJvbWlzZTxSZWFkYWJsZT47XHJcbiAgICBnZXRJbWFnZShwYXJhbXM/OiBJQXNzZXRJbWFnZVBhcmFtcyk6IFByb21pc2U8UmVhZGFibGU+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTGF6eUFzc2V0IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBqb2JOYW1lOiBzdHJpbmc7XHJcbiAgICBqb2JQYXJhbXM6IGFueTtcclxuICAgIGpvYlF1ZTogc3RyaW5nO1xyXG4gICAgcHJvZ3Jlc3NJZD86IHN0cmluZztcclxuICAgIGFzc2V0SWQ/OiBzdHJpbmc7XHJcbiAgICB1bmxpbmsoKTogUHJvbWlzZTxzdHJpbmc+O1xyXG4gICAgc3RhcnRXb3JraW5nKCk6IHZvaWQ7XHJcbiAgICBsb2FkQXNzZXQoKTogUHJvbWlzZTxJQXNzZXQ+O1xyXG4gICAgd3JpdGVBc3NldChhc3NldDogSUFzc2V0KTogUHJvbWlzZTxJQXNzZXQ+O1xyXG4gICAgdG9KU09OKCk6IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVXNlciB7XHJcbiAgICBfaWQ/OiBzdHJpbmc7XHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICBwYXNzd29yZDogc3RyaW5nO1xyXG4gICAgcm9sZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnRTb2NrZXQgZXh0ZW5kcyBTb2NrZXQge1xyXG4gICAgaW50ZXJlc3RlZFByb2dyZXNzZXM6IFNldDxzdHJpbmc+O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElSZXF1ZXN0QmFzZTxUPiBleHRlbmRzIFJlcXVlc3Qge1xyXG4gICAgaWQ/OiBzdHJpbmc7XHJcbiAgICBzdGFydGVkPzogTW9tZW50O1xyXG4gICAgZW5kZWQ/OiBNb21lbnQ7XHJcbiAgICBjb250YWluZXI/OiBEZXBlbmRlbmN5Q29udGFpbmVyO1xyXG4gICAgbGFuZ3VhZ2U/OiBzdHJpbmc7XHJcbiAgICB1c2VyPzogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUmVxdWVzdCBleHRlbmRzIElSZXF1ZXN0QmFzZTxJVXNlcj4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlIHtcclxuICAgIGZvbGRlcjogc3RyaW5nO1xyXG4gICAgdGh1bWI6IHN0cmluZztcclxuICAgIGJpZzogc3RyaW5nO1xyXG4gICAgc2VydmUoaWQ6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPlxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElHYWxsZXJ5U2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJR2FsbGVyeUltYWdlSGFuZGxlciB7XHJcbiAgICBnZXRPcmlnaW5hbCgpOiBQcm9taXNlPEJ1ZmZlcj47XHJcbiAgICB3cml0ZVJlc3VsdChpc1RodW1iOiBib29sZWFuLCBidWZmZXI6IEJ1ZmZlcik6IFByb21pc2U8YW55PjtcclxuICAgIGhhc1Jlc3VsdChpc1RodW1iOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPjtcclxuICAgIHNlcnZlUmVzdWx0KGlzVGh1bWI6IGJvb2xlYW4pOiBQcm9taXNlPEJ1ZmZlcj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zbGF0aW9ucyB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25NZXRhIHtcclxuICAgIHRvdGFsOiBudW1iZXI7XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhZ2luYXRpb25CYXNlPFQ+IHtcclxuICAgIGNvdW50OiBudW1iZXJcclxuICAgIGl0ZW1zOiBUW107XHJcbiAgICBtZXRhPzogSVBhZ2luYXRpb25NZXRhO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYWdpbmF0aW9uIGV4dGVuZHMgSVBhZ2luYXRpb25CYXNlPGFueT4ge1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGFnaW5hdGlvblBhcmFtcyB7XHJcbiAgICBwYWdlOiBudW1iZXI7XHJcbiAgICBsaW1pdDogbnVtYmVyO1xyXG4gICAgc29ydD86IHN0cmluZztcclxuICAgIHBvcHVsYXRlPzogc3RyaW5nW107XHJcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZvbnRGb3JtYXQgPSBcIm9wZW50eXBlXCIgfCBcInRydWV0eXBlXCIgfCBcIndvZmZcIiB8IFwid29mZjJcIiB8IFwiZGF0YWZvcmtcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUJhY2tlbmRDb25maWcge1xyXG4gICAgcm9vdEZvbGRlcj86IHN0cmluZztcclxuICAgIHJvdXRlUHJlZml4Pzogc3RyaW5nO1xyXG4gICAgcGFyYW1zPzogUGFyYW1ldGVyW107XHJcbiAgICBmaXh0dXJlcz86IFR5cGU8SUZpeHR1cmU+W107XHJcbiAgICBqb2JzPzogVHlwZTxJSm9iPltdO1xyXG4gICAgcmVzdE9wdGlvbnM/OiBSb3V0aW5nQ29udHJvbGxlcnNPcHRpb25zO1xyXG4gICAgc29ja2V0T3B0aW9ucz86IFNvY2tldENvbnRyb2xsZXJzT3B0aW9ucztcclxuICAgIGN1c3RvbVZhbGlkYXRpb24/OiBTY2hlbWFDb252ZXJ0ZXIgfCBTY2hlbWFPYmplY3Q7XHJcbn1cclxuIl19