exisjs 0.7.6 → 0.7.8
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/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +12 -0
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/clean.d.ts +5 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +30 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +15 -1
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +6 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +57 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/index.js +16 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/manifest.d.ts +1 -0
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +161 -23
- package/dist/cli/manifest.js.map +1 -1
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +9 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/types.d.ts +4 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/cron/expressions.d.ts +45 -0
- package/dist/cron/expressions.d.ts.map +1 -0
- package/dist/cron/expressions.js +87 -0
- package/dist/cron/expressions.js.map +1 -0
- package/dist/cron/index.d.ts +6 -0
- package/dist/cron/index.d.ts.map +1 -0
- package/dist/cron/index.js +22 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron/job.d.ts +50 -0
- package/dist/cron/job.d.ts.map +1 -0
- package/dist/cron/job.js +247 -0
- package/dist/cron/job.js.map +1 -0
- package/dist/cron/manager.d.ts +105 -0
- package/dist/cron/manager.d.ts.map +1 -0
- package/dist/cron/manager.js +245 -0
- package/dist/cron/manager.js.map +1 -0
- package/dist/cron/parser.d.ts +22 -0
- package/dist/cron/parser.d.ts.map +1 -0
- package/dist/cron/parser.js +269 -0
- package/dist/cron/parser.js.map +1 -0
- package/dist/cron/types.d.ts +76 -0
- package/dist/cron/types.d.ts.map +1 -0
- package/dist/cron/types.js +3 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/decorators/constants.d.ts +2 -0
- package/dist/decorators/constants.d.ts.map +1 -1
- package/dist/decorators/constants.js +3 -1
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/core.d.ts +29 -11
- package/dist/decorators/core.d.ts.map +1 -1
- package/dist/decorators/core.js +49 -11
- package/dist/decorators/core.js.map +1 -1
- package/dist/decorators/cron.d.ts +57 -0
- package/dist/decorators/cron.d.ts.map +1 -0
- package/dist/decorators/cron.js +143 -0
- package/dist/decorators/cron.js.map +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +2 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/params.d.ts +97 -2
- package/dist/decorators/params.d.ts.map +1 -1
- package/dist/decorators/params.js +94 -2
- package/dist/decorators/params.js.map +1 -1
- package/dist/decorators/routing.d.ts +81 -16
- package/dist/decorators/routing.d.ts.map +1 -1
- package/dist/decorators/routing.js +81 -16
- package/dist/decorators/routing.js.map +1 -1
- package/dist/docs/content/cron.mdx +196 -0
- package/dist/docs/content/errors.mdx +58 -9
- package/dist/docs/content/structure.mdx +1 -1
- package/dist/docs/content/swagger.mdx +289 -0
- package/dist/docs/reference/cron.mdx +300 -0
- package/dist/docs/reference/decorators.mdx +8 -0
- package/dist/docs/reference/error.mdx +44 -0
- package/dist/docs/reference/swagger.mdx +226 -0
- package/dist/docs/reference/validator.mdx +1 -1
- package/dist/router/boundary.d.ts +24 -2
- package/dist/router/boundary.d.ts.map +1 -1
- package/dist/router/boundary.js +24 -2
- package/dist/router/boundary.js.map +1 -1
- package/dist/router/controller-registrar.d.ts.map +1 -1
- package/dist/router/controller-registrar.js +52 -3
- package/dist/router/controller-registrar.js.map +1 -1
- package/dist/router/route-builder.d.ts +196 -33
- package/dist/router/route-builder.d.ts.map +1 -1
- package/dist/router/route-builder.js +171 -11
- package/dist/router/route-builder.js.map +1 -1
- package/dist/router/route-scanner.d.ts +6 -0
- package/dist/router/route-scanner.d.ts.map +1 -1
- package/dist/router/route-scanner.js +69 -812
- package/dist/router/route-scanner.js.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +27 -0
- package/dist/router/router.js.map +1 -1
- package/dist/router/scanner/boundary-loader.d.ts +18 -0
- package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
- package/dist/router/scanner/boundary-loader.js +539 -0
- package/dist/router/scanner/boundary-loader.js.map +1 -0
- package/dist/router/scanner/cron-mounter.d.ts +15 -0
- package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
- package/dist/router/scanner/cron-mounter.js +216 -0
- package/dist/router/scanner/cron-mounter.js.map +1 -0
- package/dist/router/scanner/error-mounter.d.ts +14 -0
- package/dist/router/scanner/error-mounter.d.ts.map +1 -0
- package/dist/router/scanner/error-mounter.js +200 -0
- package/dist/router/scanner/error-mounter.js.map +1 -0
- package/dist/router/scanner/fs-scanner.d.ts +25 -0
- package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
- package/dist/router/scanner/fs-scanner.js +115 -0
- package/dist/router/scanner/fs-scanner.js.map +1 -0
- package/dist/router/scanner/functional-compiler.d.ts +9 -0
- package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
- package/dist/router/scanner/functional-compiler.js +233 -0
- package/dist/router/scanner/functional-compiler.js.map +1 -0
- package/dist/router/scanner/index.d.ts +9 -0
- package/dist/router/scanner/index.d.ts.map +1 -0
- package/dist/router/scanner/index.js +19 -0
- package/dist/router/scanner/index.js.map +1 -0
- package/dist/router/types.d.ts +15 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/server/app.d.ts +2 -0
- package/dist/server/app.d.ts.map +1 -1
- package/dist/server/app.js +3 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/helpers/body-parser.d.ts +18 -0
- package/dist/server/helpers/body-parser.d.ts.map +1 -0
- package/dist/server/helpers/body-parser.js +246 -0
- package/dist/server/helpers/body-parser.js.map +1 -0
- package/dist/server/helpers/cookie.d.ts +4 -0
- package/dist/server/helpers/cookie.d.ts.map +1 -0
- package/dist/server/helpers/cookie.js +61 -0
- package/dist/server/helpers/cookie.js.map +1 -0
- package/dist/server/helpers/etag.d.ts +3 -0
- package/dist/server/helpers/etag.d.ts.map +1 -0
- package/dist/server/helpers/etag.js +25 -0
- package/dist/server/helpers/etag.js.map +1 -0
- package/dist/server/helpers/index.d.ts +6 -0
- package/dist/server/helpers/index.d.ts.map +1 -0
- package/dist/server/helpers/index.js +21 -0
- package/dist/server/helpers/index.js.map +1 -0
- package/dist/server/helpers/ip.d.ts +9 -0
- package/dist/server/helpers/ip.d.ts.map +1 -0
- package/dist/server/helpers/ip.js +62 -0
- package/dist/server/helpers/ip.js.map +1 -0
- package/dist/server/helpers/stream.d.ts +4 -0
- package/dist/server/helpers/stream.d.ts.map +1 -0
- package/dist/server/helpers/stream.js +193 -0
- package/dist/server/helpers/stream.js.map +1 -0
- package/dist/server/request.d.ts +1 -139
- package/dist/server/request.d.ts.map +1 -1
- package/dist/server/request.js +19 -433
- package/dist/server/request.js.map +1 -1
- package/dist/server/response.d.ts +105 -158
- package/dist/server/response.d.ts.map +1 -1
- package/dist/server/response.js +121 -423
- package/dist/server/response.js.map +1 -1
- package/dist/swagger/decorators.d.ts +81 -0
- package/dist/swagger/decorators.d.ts.map +1 -0
- package/dist/swagger/decorators.js +172 -0
- package/dist/swagger/decorators.js.map +1 -0
- package/dist/swagger/generator.d.ts +19 -0
- package/dist/swagger/generator.d.ts.map +1 -0
- package/dist/swagger/generator.js +344 -0
- package/dist/swagger/generator.js.map +1 -0
- package/dist/swagger/index.d.ts +31 -0
- package/dist/swagger/index.d.ts.map +1 -0
- package/dist/swagger/index.js +53 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/swagger/mounter.d.ts +7 -0
- package/dist/swagger/mounter.d.ts.map +1 -0
- package/dist/swagger/mounter.js +56 -0
- package/dist/swagger/mounter.js.map +1 -0
- package/dist/swagger/types.d.ts +190 -0
- package/dist/swagger/types.d.ts.map +1 -0
- package/dist/swagger/types.js +3 -0
- package/dist/swagger/types.js.map +1 -0
- package/dist/swagger/ui.d.ts +6 -0
- package/dist/swagger/ui.d.ts.map +1 -0
- package/dist/swagger/ui.js +118 -0
- package/dist/swagger/ui.js.map +1 -0
- package/dist/validator/builder.d.ts +223 -0
- package/dist/validator/builder.d.ts.map +1 -0
- package/dist/validator/builder.js +517 -0
- package/dist/validator/builder.js.map +1 -0
- package/dist/validator/engine.d.ts +19 -0
- package/dist/validator/engine.d.ts.map +1 -0
- package/dist/validator/engine.js +568 -0
- package/dist/validator/engine.js.map +1 -0
- package/dist/validator/error.d.ts +12 -0
- package/dist/validator/error.d.ts.map +1 -0
- package/dist/validator/error.js +63 -0
- package/dist/validator/error.js.map +1 -0
- package/dist/validator/pagination.d.ts +40 -0
- package/dist/validator/pagination.d.ts.map +1 -0
- package/dist/validator/pagination.js +60 -0
- package/dist/validator/pagination.js.map +1 -0
- package/dist/validator/tex.d.ts +6 -158
- package/dist/validator/tex.d.ts.map +1 -1
- package/dist/validator/tex.js +14 -971
- package/dist/validator/tex.js.map +1 -1
- package/dist/validator/types.d.ts +83 -0
- package/dist/validator/types.d.ts.map +1 -0
- package/dist/validator/types.js +3 -0
- package/dist/validator/types.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { CronJobOptions } from '../cron/types';
|
|
2
|
+
export interface DecoratedCronJobMeta {
|
|
3
|
+
methodName: string;
|
|
4
|
+
options: CronJobOptions;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Extracts decorated cron jobs from a class constructor or prototype.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getCronJobsFromClass(target: any): DecoratedCronJobMeta[];
|
|
10
|
+
/**
|
|
11
|
+
* Method decorator to schedule a method on a class as a Cron Job.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* @Injectable()
|
|
16
|
+
* export class CleanupService {
|
|
17
|
+
* @Cron('0 0 * * *', { name: 'nightly-purge', timezone: 'UTC', preventOverlap: true })
|
|
18
|
+
* async purgeOldSessions() {
|
|
19
|
+
* // Run nightly
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function Cron(schedule: string, options?: Omit<CronJobOptions, 'schedule' | 'run' | 'handle'>): any;
|
|
25
|
+
/**
|
|
26
|
+
* Method decorator to schedule a method on a class to run at recurring millisecond intervals.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* @Injectable()
|
|
31
|
+
* export class HealthService {
|
|
32
|
+
* @Interval(60000, { name: 'health-check' })
|
|
33
|
+
* async pingHealth() {
|
|
34
|
+
* // Runs every 60s
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function Interval(ms: number, options?: Omit<CronJobOptions, 'interval' | 'run' | 'handle'>): any;
|
|
40
|
+
/**
|
|
41
|
+
* Method decorator to schedule a method on a class to run once after a millisecond delay after server start.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* @Injectable()
|
|
46
|
+
* export class CacheService {
|
|
47
|
+
* @Timeout(5000, { name: 'warmup-cache' })
|
|
48
|
+
* async warmupCache() {
|
|
49
|
+
* // Runs once 5s after startup
|
|
50
|
+
* }
|
|
51
|
+
* }
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function TimeoutTask(ms: number, options?: Omit<CronJobOptions, 'timeout' | 'run' | 'handle'>): any;
|
|
55
|
+
export declare const ScheduledTimeout: typeof TimeoutTask;
|
|
56
|
+
export declare const Scheduled: typeof Cron;
|
|
57
|
+
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/decorators/cron.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,cAAc,CAAA;CACxB;AAiDD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,GAAG,GAAG,oBAAoB,EAAE,CAuBxE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAM,GAChE,GAAG,CAYL;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAM,GAChE,GAAG,CAYL;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAM,GAC/D,GAAG,CAYL;AAED,eAAO,MAAM,gBAAgB,oBAAc,CAAA;AAC3C,eAAO,MAAM,SAAS,aAAO,CAAA"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Scheduled = exports.ScheduledTimeout = void 0;
|
|
4
|
+
exports.getCronJobsFromClass = getCronJobsFromClass;
|
|
5
|
+
exports.Cron = Cron;
|
|
6
|
+
exports.Interval = Interval;
|
|
7
|
+
exports.TimeoutTask = TimeoutTask;
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const metadata_1 = require("./core/metadata");
|
|
10
|
+
function applyCronDecorator(target, contextOrPropertyKey, descriptor, cronOptions) {
|
|
11
|
+
const isStandard = typeof contextOrPropertyKey === 'object' &&
|
|
12
|
+
contextOrPropertyKey !== null &&
|
|
13
|
+
'name' in contextOrPropertyKey;
|
|
14
|
+
if (isStandard) {
|
|
15
|
+
const methodName = String(contextOrPropertyKey.name);
|
|
16
|
+
const options = {
|
|
17
|
+
...cronOptions,
|
|
18
|
+
name: cronOptions.name || methodName,
|
|
19
|
+
};
|
|
20
|
+
metadata_1.MetadataEngine.set(target, constants_1.CRON_META, {
|
|
21
|
+
methodName,
|
|
22
|
+
options,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const proto = typeof target === 'function' && target.prototype
|
|
27
|
+
? target.prototype
|
|
28
|
+
: target || {};
|
|
29
|
+
const fn = descriptor ? descriptor.value : proto[contextOrPropertyKey];
|
|
30
|
+
const methodName = String(contextOrPropertyKey || descriptor?.name || '');
|
|
31
|
+
const options = {
|
|
32
|
+
...cronOptions,
|
|
33
|
+
name: cronOptions.name || methodName,
|
|
34
|
+
};
|
|
35
|
+
metadata_1.MetadataEngine.push(proto, constants_1.CRON_REGISTRY, {
|
|
36
|
+
methodName,
|
|
37
|
+
options,
|
|
38
|
+
});
|
|
39
|
+
if (fn && typeof fn === 'function') {
|
|
40
|
+
metadata_1.MetadataEngine.set(fn, constants_1.CRON_META, {
|
|
41
|
+
methodName,
|
|
42
|
+
options,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extracts decorated cron jobs from a class constructor or prototype.
|
|
49
|
+
*/
|
|
50
|
+
function getCronJobsFromClass(target) {
|
|
51
|
+
const proto = typeof target === 'function' ? target.prototype : target;
|
|
52
|
+
if (!proto)
|
|
53
|
+
return [];
|
|
54
|
+
const registry = [
|
|
55
|
+
...(metadata_1.MetadataEngine.get(proto, constants_1.CRON_REGISTRY) || []),
|
|
56
|
+
];
|
|
57
|
+
for (const key of Object.getOwnPropertyNames(proto)) {
|
|
58
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, key);
|
|
59
|
+
if (descriptor && typeof descriptor.value === 'function') {
|
|
60
|
+
const fn = descriptor.value;
|
|
61
|
+
const cronMeta = metadata_1.MetadataEngine.get(fn, constants_1.CRON_META);
|
|
62
|
+
if (cronMeta) {
|
|
63
|
+
const exists = registry.some((c) => c.methodName === key);
|
|
64
|
+
if (!exists) {
|
|
65
|
+
registry.push({ ...cronMeta, methodName: key });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return registry;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Method decorator to schedule a method on a class as a Cron Job.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* @Injectable()
|
|
78
|
+
* export class CleanupService {
|
|
79
|
+
* @Cron('0 0 * * *', { name: 'nightly-purge', timezone: 'UTC', preventOverlap: true })
|
|
80
|
+
* async purgeOldSessions() {
|
|
81
|
+
* // Run nightly
|
|
82
|
+
* }
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
function Cron(schedule, options = {}) {
|
|
87
|
+
return function (target, contextOrPropertyKey, descriptor) {
|
|
88
|
+
applyCronDecorator(target, contextOrPropertyKey, descriptor, {
|
|
89
|
+
...options,
|
|
90
|
+
schedule,
|
|
91
|
+
});
|
|
92
|
+
return descriptor;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Method decorator to schedule a method on a class to run at recurring millisecond intervals.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```typescript
|
|
100
|
+
* @Injectable()
|
|
101
|
+
* export class HealthService {
|
|
102
|
+
* @Interval(60000, { name: 'health-check' })
|
|
103
|
+
* async pingHealth() {
|
|
104
|
+
* // Runs every 60s
|
|
105
|
+
* }
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
function Interval(ms, options = {}) {
|
|
110
|
+
return function (target, contextOrPropertyKey, descriptor) {
|
|
111
|
+
applyCronDecorator(target, contextOrPropertyKey, descriptor, {
|
|
112
|
+
...options,
|
|
113
|
+
interval: ms,
|
|
114
|
+
});
|
|
115
|
+
return descriptor;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Method decorator to schedule a method on a class to run once after a millisecond delay after server start.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* @Injectable()
|
|
124
|
+
* export class CacheService {
|
|
125
|
+
* @Timeout(5000, { name: 'warmup-cache' })
|
|
126
|
+
* async warmupCache() {
|
|
127
|
+
* // Runs once 5s after startup
|
|
128
|
+
* }
|
|
129
|
+
* }
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
function TimeoutTask(ms, options = {}) {
|
|
133
|
+
return function (target, contextOrPropertyKey, descriptor) {
|
|
134
|
+
applyCronDecorator(target, contextOrPropertyKey, descriptor, {
|
|
135
|
+
...options,
|
|
136
|
+
timeout: ms,
|
|
137
|
+
});
|
|
138
|
+
return descriptor;
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
exports.ScheduledTimeout = TimeoutTask;
|
|
142
|
+
exports.Scheduled = Cron;
|
|
143
|
+
//# sourceMappingURL=cron.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/decorators/cron.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA;AACtB,cAAc,uBAAuB,CAAA"}
|
package/dist/decorators/index.js
CHANGED
|
@@ -22,4 +22,6 @@ __exportStar(require("./params"), exports);
|
|
|
22
22
|
__exportStar(require("./middleware"), exports);
|
|
23
23
|
__exportStar(require("./response"), exports);
|
|
24
24
|
__exportStar(require("./upload"), exports);
|
|
25
|
+
__exportStar(require("./cron"), exports);
|
|
26
|
+
__exportStar(require("../swagger/decorators"), exports);
|
|
25
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,yCAAsB;AACtB,+CAA4B;AAC5B,4CAAyB;AACzB,2CAAwB;AACxB,+CAA4B;AAC5B,6CAA0B;AAC1B,2CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,yCAAsB;AACtB,+CAA4B;AAC5B,4CAAyB;AACzB,2CAAwB;AACxB,+CAA4B;AAC5B,6CAA0B;AAC1B,2CAAwB;AACxB,yCAAsB;AACtB,wDAAqC"}
|
|
@@ -15,7 +15,10 @@ export type CustomParamFactory<TData = any, TResult = any> = (data: TData, ctx:
|
|
|
15
15
|
/**
|
|
16
16
|
* Creates a custom route parameter decorator.
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* @param factory Function extracting custom data from request context
|
|
19
|
+
* @returns Parameter decorator
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
19
22
|
* ```ts
|
|
20
23
|
* export const CurrentUser = createParamDecorator(
|
|
21
24
|
* (data: string | undefined, ctx) => {
|
|
@@ -31,35 +34,127 @@ export type CustomParamFactory<TData = any, TResult = any> = (data: TData, ctx:
|
|
|
31
34
|
*/
|
|
32
35
|
export declare function createParamDecorator<TData = any>(factory: CustomParamFactory<TData>): (data?: TData, ...pipes: any[]) => ParameterDecorator;
|
|
33
36
|
export declare function createParamDecorator(type: string, nameOrPipe?: string | any, ...pipes: any[]): ParameterDecorator;
|
|
37
|
+
/**
|
|
38
|
+
* Injects a route parameter from the URL path (e.g. `:id`).
|
|
39
|
+
*
|
|
40
|
+
* @param name Parameter name matching the route path placeholder
|
|
41
|
+
* @param pipes Optional validation pipes
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* @Get('/:id')
|
|
46
|
+
* getUser(@Param('id') id: string) {
|
|
47
|
+
* return { id }
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
34
51
|
export declare const Param: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
52
|
+
/**
|
|
53
|
+
* Injects the parsed request body into a controller method argument.
|
|
54
|
+
*
|
|
55
|
+
* @param nameOrPipe Optional body property key or validation pipe/schema
|
|
56
|
+
* @param pipes Optional transformation pipes
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* @Post('/')
|
|
61
|
+
* createUser(@Body() body: CreateUserDto) {
|
|
62
|
+
* return body
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
35
66
|
export declare const Body: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
67
|
+
/**
|
|
68
|
+
* Injects request headers or a specific header value.
|
|
69
|
+
*
|
|
70
|
+
* @param name Optional header name (case-insensitive)
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* @Get('/')
|
|
75
|
+
* getInfo(@Headers('authorization') auth: string) {}
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
36
78
|
export declare const Headers: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
37
79
|
export declare const HostParam: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
80
|
+
/**
|
|
81
|
+
* Injects the ExisJS request instance (`ExisRequest`).
|
|
82
|
+
*/
|
|
38
83
|
export declare const Req: () => ParameterDecorator;
|
|
39
84
|
export declare const Socket: () => ParameterDecorator;
|
|
40
85
|
export declare const Stream: () => ParameterDecorator;
|
|
86
|
+
/**
|
|
87
|
+
* Injects the active session object if session middleware is enabled.
|
|
88
|
+
*/
|
|
41
89
|
export declare const Session: () => ParameterDecorator;
|
|
42
90
|
export declare const Next: () => ParameterDecorator;
|
|
91
|
+
/**
|
|
92
|
+
* Injects the client's IP address.
|
|
93
|
+
*/
|
|
43
94
|
export declare const Ip: () => ParameterDecorator;
|
|
95
|
+
/**
|
|
96
|
+
* Injects an uploaded file from multipart form data.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```ts
|
|
100
|
+
* @Post('/avatar')
|
|
101
|
+
* @Upload()
|
|
102
|
+
* uploadAvatar(@UploadedFile() file: ExisFile) {
|
|
103
|
+
* return { filename: file.filename, size: file.size }
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
44
107
|
export declare const UploadedFile: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
108
|
+
/**
|
|
109
|
+
* Injects all uploaded files from multipart form data.
|
|
110
|
+
*/
|
|
45
111
|
export declare const UploadedFiles: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
112
|
+
/**
|
|
113
|
+
* Injects all parsed request cookies as a key-value record.
|
|
114
|
+
*/
|
|
46
115
|
export declare const Cookies: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
116
|
+
/**
|
|
117
|
+
* Injects a specific cookie by name.
|
|
118
|
+
*/
|
|
47
119
|
export declare const Cookie: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
120
|
+
/**
|
|
121
|
+
* Injects custom execution state from AsyncLocalStorage context.
|
|
122
|
+
*/
|
|
48
123
|
export declare const State: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
124
|
+
/**
|
|
125
|
+
* Injects the ExisJS App application instance.
|
|
126
|
+
*/
|
|
49
127
|
export declare const AppCtx: () => ParameterDecorator;
|
|
50
128
|
export declare const Fields: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
129
|
+
/**
|
|
130
|
+
* Injects the ExisJS response instance (`ExisResponse`).
|
|
131
|
+
* By default, injecting `@Res()` switches the handler into manual response mode unless `{ passthrough: true }` is specified.
|
|
132
|
+
*
|
|
133
|
+
* @param options Pass `{ passthrough: true }` to allow returning values from handler while retaining response object access
|
|
134
|
+
*/
|
|
51
135
|
export declare const Res: (options?: {
|
|
52
136
|
passthrough?: boolean;
|
|
53
137
|
}) => any;
|
|
54
138
|
/**
|
|
55
139
|
* Injects a query parameter from the URL query string.
|
|
56
140
|
*
|
|
57
|
-
*
|
|
141
|
+
* @example
|
|
58
142
|
* ```ts
|
|
59
143
|
* @Get('/search')
|
|
60
144
|
* search(@QueryParam('q') q: string) { return { q }; }
|
|
61
145
|
* ```
|
|
62
146
|
*/
|
|
63
147
|
export declare const QueryParam: (nameOrPipe?: string | any, ...pipes: any[]) => ParameterDecorator;
|
|
148
|
+
/**
|
|
149
|
+
* Injects query parameters from the URL query string, or defines a QUERY HTTP route.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* @Get('/search')
|
|
154
|
+
* search(@Query('q') query: string) {
|
|
155
|
+
* return { query }
|
|
156
|
+
* }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
64
159
|
export declare function Query(pathOrName?: string | any, schemaOrPipe?: RouteSchema<any, any, any, any> | any, ...pipes: any[]): any;
|
|
65
160
|
//# sourceMappingURL=params.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/decorators/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/decorators/params.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ exports.createParamDecorator = createParamDecorator;
|
|
|
5
5
|
exports.Query = Query;
|
|
6
6
|
const constants_1 = require("./constants");
|
|
7
7
|
const metadata_1 = require("./core/metadata");
|
|
8
|
+
const logger_1 = require("../logger");
|
|
8
9
|
function createParamDecorator(typeOrFactory, nameOrPipe, ...pipes) {
|
|
9
10
|
if (typeof typeOrFactory === 'function') {
|
|
10
11
|
const factory = typeOrFactory;
|
|
@@ -39,9 +40,36 @@ function createParamDecorator(typeOrFactory, nameOrPipe, ...pipes) {
|
|
|
39
40
|
paramMeta[parameterIndex] = { type, name, pipes: allPipes };
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Injects a route parameter from the URL path (e.g. `:id`).
|
|
45
|
+
*
|
|
46
|
+
* @param name Parameter name matching the route path placeholder
|
|
47
|
+
* @param pipes Optional validation pipes
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* @Get('/:id')
|
|
52
|
+
* getUser(@Param('id') id: string) {
|
|
53
|
+
* return { id }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
43
57
|
const Param = (nameOrPipe, ...pipes) => createParamDecorator('param', nameOrPipe, ...pipes);
|
|
44
58
|
exports.Param = Param;
|
|
59
|
+
/**
|
|
60
|
+
* Injects the parsed request body into a controller method argument.
|
|
61
|
+
*
|
|
62
|
+
* @param nameOrPipe Optional body property key or validation pipe/schema
|
|
63
|
+
* @param pipes Optional transformation pipes
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* @Post('/')
|
|
68
|
+
* createUser(@Body() body: CreateUserDto) {
|
|
69
|
+
* return body
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
45
73
|
const Body = (nameOrPipe, ...pipes) => {
|
|
46
74
|
if (nameOrPipe === undefined && pipes.length === 0) {
|
|
47
75
|
logger_1.logger.warn(`@Body() decorator used without a validation schema or pipe. It is highly recommended to validate incoming payloads.`);
|
|
@@ -49,36 +77,89 @@ const Body = (nameOrPipe, ...pipes) => {
|
|
|
49
77
|
return createParamDecorator('body', nameOrPipe, ...pipes);
|
|
50
78
|
};
|
|
51
79
|
exports.Body = Body;
|
|
80
|
+
/**
|
|
81
|
+
* Injects request headers or a specific header value.
|
|
82
|
+
*
|
|
83
|
+
* @param name Optional header name (case-insensitive)
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* @Get('/')
|
|
88
|
+
* getInfo(@Headers('authorization') auth: string) {}
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
52
91
|
const Headers = (nameOrPipe, ...pipes) => createParamDecorator('header', nameOrPipe, ...pipes);
|
|
53
92
|
exports.Headers = Headers;
|
|
54
93
|
const HostParam = (nameOrPipe, ...pipes) => createParamDecorator('host', nameOrPipe, ...pipes);
|
|
55
94
|
exports.HostParam = HostParam;
|
|
95
|
+
/**
|
|
96
|
+
* Injects the ExisJS request instance (`ExisRequest`).
|
|
97
|
+
*/
|
|
56
98
|
const Req = () => createParamDecorator('req');
|
|
57
99
|
exports.Req = Req;
|
|
58
100
|
const Socket = () => createParamDecorator('socket');
|
|
59
101
|
exports.Socket = Socket;
|
|
60
102
|
const Stream = () => createParamDecorator('stream');
|
|
61
103
|
exports.Stream = Stream;
|
|
104
|
+
/**
|
|
105
|
+
* Injects the active session object if session middleware is enabled.
|
|
106
|
+
*/
|
|
62
107
|
const Session = () => createParamDecorator('session');
|
|
63
108
|
exports.Session = Session;
|
|
64
109
|
const Next = () => createParamDecorator('next');
|
|
65
110
|
exports.Next = Next;
|
|
111
|
+
/**
|
|
112
|
+
* Injects the client's IP address.
|
|
113
|
+
*/
|
|
66
114
|
const Ip = () => createParamDecorator('ip');
|
|
67
115
|
exports.Ip = Ip;
|
|
116
|
+
/**
|
|
117
|
+
* Injects an uploaded file from multipart form data.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* @Post('/avatar')
|
|
122
|
+
* @Upload()
|
|
123
|
+
* uploadAvatar(@UploadedFile() file: ExisFile) {
|
|
124
|
+
* return { filename: file.filename, size: file.size }
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
68
128
|
const UploadedFile = (nameOrPipe, ...pipes) => createParamDecorator('uploadedFile', nameOrPipe, ...pipes);
|
|
69
129
|
exports.UploadedFile = UploadedFile;
|
|
130
|
+
/**
|
|
131
|
+
* Injects all uploaded files from multipart form data.
|
|
132
|
+
*/
|
|
70
133
|
const UploadedFiles = (nameOrPipe, ...pipes) => createParamDecorator('uploadedFiles', nameOrPipe, ...pipes);
|
|
71
134
|
exports.UploadedFiles = UploadedFiles;
|
|
135
|
+
/**
|
|
136
|
+
* Injects all parsed request cookies as a key-value record.
|
|
137
|
+
*/
|
|
72
138
|
const Cookies = (nameOrPipe, ...pipes) => createParamDecorator('cookies', nameOrPipe, ...pipes);
|
|
73
139
|
exports.Cookies = Cookies;
|
|
140
|
+
/**
|
|
141
|
+
* Injects a specific cookie by name.
|
|
142
|
+
*/
|
|
74
143
|
const Cookie = (nameOrPipe, ...pipes) => createParamDecorator('cookie', nameOrPipe, ...pipes);
|
|
75
144
|
exports.Cookie = Cookie;
|
|
145
|
+
/**
|
|
146
|
+
* Injects custom execution state from AsyncLocalStorage context.
|
|
147
|
+
*/
|
|
76
148
|
const State = (nameOrPipe, ...pipes) => createParamDecorator('state', nameOrPipe, ...pipes);
|
|
77
149
|
exports.State = State;
|
|
150
|
+
/**
|
|
151
|
+
* Injects the ExisJS App application instance.
|
|
152
|
+
*/
|
|
78
153
|
const AppCtx = () => createParamDecorator('app');
|
|
79
154
|
exports.AppCtx = AppCtx;
|
|
80
155
|
const Fields = (nameOrPipe, ...pipes) => createParamDecorator('fields', nameOrPipe, ...pipes);
|
|
81
156
|
exports.Fields = Fields;
|
|
157
|
+
/**
|
|
158
|
+
* Injects the ExisJS response instance (`ExisResponse`).
|
|
159
|
+
* By default, injecting `@Res()` switches the handler into manual response mode unless `{ passthrough: true }` is specified.
|
|
160
|
+
*
|
|
161
|
+
* @param options Pass `{ passthrough: true }` to allow returning values from handler while retaining response object access
|
|
162
|
+
*/
|
|
82
163
|
const Res = (options) => {
|
|
83
164
|
return function (target, propertyKey, parameterIndex) {
|
|
84
165
|
const fn = target[propertyKey];
|
|
@@ -92,7 +173,7 @@ exports.Res = Res;
|
|
|
92
173
|
/**
|
|
93
174
|
* Injects a query parameter from the URL query string.
|
|
94
175
|
*
|
|
95
|
-
*
|
|
176
|
+
* @example
|
|
96
177
|
* ```ts
|
|
97
178
|
* @Get('/search')
|
|
98
179
|
* search(@QueryParam('q') q: string) { return { q }; }
|
|
@@ -100,6 +181,17 @@ exports.Res = Res;
|
|
|
100
181
|
*/
|
|
101
182
|
const QueryParam = (nameOrPipe, ...pipes) => createParamDecorator('query', nameOrPipe, ...pipes);
|
|
102
183
|
exports.QueryParam = QueryParam;
|
|
184
|
+
/**
|
|
185
|
+
* Injects query parameters from the URL query string, or defines a QUERY HTTP route.
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* ```ts
|
|
189
|
+
* @Get('/search')
|
|
190
|
+
* search(@Query('q') query: string) {
|
|
191
|
+
* return { query }
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
103
195
|
function Query(pathOrName, schemaOrPipe, ...pipes) {
|
|
104
196
|
return function (target, contextOrPropertyKey, descriptorOrIndex) {
|
|
105
197
|
const isParam = typeof descriptorOrIndex === 'number' ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/decorators/params.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/decorators/params.ts"],"names":[],"mappings":";;;AAwDA,oDAsDC;AA0KD,sBA4CC;AAnUD,2CAKoB;AACpB,8CAAgD;AAChD,sCAAkC;AAgDlC,SAAgB,oBAAoB,CAClC,aAA+C,EAC/C,UAAyB,EACzB,GAAG,KAAY;IAEf,IAAI,OAAO,aAAa,KAAK,UAAU,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,CAAA;QAC7B,OAAO,UAAU,UAAgB,EAAE,GAAG,WAAkB;YACtD,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB;gBAEtB,MAAM,MAAM,GACV,OAAO,UAAU,KAAK,UAAU;oBAChC,CAAC,OAAO,UAAU,KAAK,QAAQ;wBAC7B,UAAU,KAAK,IAAI;wBACnB,CAAC,OAAO,UAAU,CAAC,SAAS,KAAK,UAAU;4BACzC,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAA;gBAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;gBAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;gBAEpE,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;gBAC9B,MAAM,SAAS,GAAG,yBAAc,CAAC,IAAI,CACnC,EAAE,EACF,+BAAmB,EACnB,EAAE,CACH,CAAA;gBACD,SAAS,CAAC,cAAc,CAAC,GAAG;oBAC1B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,IAAI;oBACV,aAAa,EAAE,OAAO;oBACtB,KAAK,EAAE,QAAQ;iBAChB,CAAA;YACH,CAAC,CAAA;QACH,CAAC,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAA;IAC1B,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB;QAEtB,MAAM,MAAM,GACV,OAAO,UAAU,KAAK,UAAU;YAChC,CAAC,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;QAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAExD,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,yBAAc,CAAC,IAAI,CAAQ,EAAE,EAAE,+BAAmB,EAAE,EAAE,CAAC,CAAA;QACzE,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;IAC7D,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,MAAM,KAAK,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CAClE,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADxC,QAAA,KAAK,SACmC;AAErD;;;;;;;;;;;;;GAaG;AACI,MAAM,IAAI,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE;IACjE,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,eAAM,CAAC,IAAI,CACT,qHAAqH,CACtH,CAAA;IACH,CAAC;IACD,OAAO,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AAC3D,CAAC,CAAA;AAPY,QAAA,IAAI,QAOhB;AAED;;;;;;;;;;GAUG;AACI,MAAM,OAAO,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACpE,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADzC,QAAA,OAAO,WACkC;AAE/C,MAAM,SAAS,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACtE,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADvC,QAAA,SAAS,aAC8B;AAEpD;;GAEG;AACI,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;AAAvC,QAAA,GAAG,OAAoC;AAE7C,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;AAA7C,QAAA,MAAM,UAAuC;AACnD,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;AAA7C,QAAA,MAAM,UAAuC;AAE1D;;GAEG;AACI,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;AAA/C,QAAA,OAAO,WAAwC;AAErD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;AAAzC,QAAA,IAAI,QAAqC;AAEtD;;GAEG;AACI,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;AAArC,QAAA,EAAE,MAAmC;AAElD;;;;;;;;;;;GAWG;AACI,MAAM,YAAY,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACzE,oBAAoB,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AAD/C,QAAA,YAAY,gBACmC;AAE5D;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CAC1E,oBAAoB,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADhD,QAAA,aAAa,iBACmC;AAE7D;;GAEG;AACI,MAAM,OAAO,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACpE,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AAD1C,QAAA,OAAO,WACmC;AAEvD;;GAEG;AACI,MAAM,MAAM,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACnE,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADzC,QAAA,MAAM,UACmC;AAEtD;;GAEG;AACI,MAAM,KAAK,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CAClE,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADxC,QAAA,KAAK,SACmC;AAErD;;GAEG;AACI,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;AAA1C,QAAA,MAAM,UAAoC;AAEhD,MAAM,MAAM,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACnE,oBAAoB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADzC,QAAA,MAAM,UACmC;AAEtD;;;;;GAKG;AACI,MAAM,GAAG,GAAG,CAAC,OAAmC,EAAO,EAAE;IAC9D,OAAO,UACL,MAAW,EACX,WAA4B,EAC5B,cAAsB;QAEtB,MAAM,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;QAC9B,MAAM,SAAS,GAAG,yBAAc,CAAC,IAAI,CAAQ,EAAE,EAAE,+BAAmB,EAAE,EAAE,CAAC,CAAA;QACzE,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;QAE3C,MAAM,SAAS,GAAG,yBAAc,CAAC,IAAI,CAAM,EAAE,EAAE,+BAAmB,EAAE,EAAE,CAAC,CAAA;QACvE,SAAS,CAAC,SAAS,GAAG,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7C,CAAC,CAAA;AACH,CAAC,CAAA;AAbY,QAAA,GAAG,OAaf;AAED;;;;;;;;GAQG;AACI,MAAM,UAAU,GAAG,CAAC,UAAyB,EAAE,GAAG,KAAY,EAAE,EAAE,CACvE,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC,CAAA;AADxC,QAAA,UAAU,cAC8B;AAErD;;;;;;;;;;GAUG;AACH,SAAgB,KAAK,CACnB,UAAyB,EACzB,YAAoD,EACpD,GAAG,KAAY;IAEf,OAAO,UACL,MAAW,EACX,oBAA4C,EAC5C,iBAAuB;QAEvB,MAAM,OAAO,GACX,OAAO,iBAAiB,KAAK,QAAQ;YACrC,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;QAErE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAQ,IAAA,kBAAU,EAAC,UAAU,EAAE,YAAY,EAAE,GAAG,KAAK,CAAS,CAC5D,MAAM,EACN,oBAAoB,EACpB,iBAAiB,CAClB,CAAA;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAA;YAC7B,IACE,OAAO,oBAAoB,KAAK,QAAQ;gBACxC,oBAAoB,KAAK,IAAI;gBAC7B,MAAM,IAAI,oBAAoB,EAC9B,CAAC;gBACD,yBAAc,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAU,EAAE;oBACrC,MAAM,EAAE,OAAO;oBACf,IAAI;oBACJ,MAAM,EAAE,YAAY;iBACrB,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;gBACtE,MAAM,IAAI,GAAG,oBAAoB,IAAI,iBAAiB,EAAE,IAAI,CAAA;gBAC5D,yBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,0BAAc,EAAE;oBACzC,MAAM,EAAE,OAAO;oBACf,IAAI;oBACJ,MAAM,EAAE,YAAY;oBACpB,WAAW,EAAE,IAAI;iBAClB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|