moost 0.2.10 → 0.2.12
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/index.cjs +88 -67
- package/dist/index.d.ts +7 -2
- package/dist/index.mjs +88 -67
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -220,48 +220,6 @@ function runPipes(pipes, initialValue, metas, level, restoreCtx) {
|
|
|
220
220
|
});
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
exports.TPipePriority = void 0;
|
|
224
|
-
(function (TPipePriority) {
|
|
225
|
-
TPipePriority[TPipePriority["BEFORE_RESOLVE"] = 0] = "BEFORE_RESOLVE";
|
|
226
|
-
TPipePriority[TPipePriority["RESOLVE"] = 1] = "RESOLVE";
|
|
227
|
-
TPipePriority[TPipePriority["AFTER_RESOLVE"] = 2] = "AFTER_RESOLVE";
|
|
228
|
-
TPipePriority[TPipePriority["BEFORE_TRANSFORM"] = 3] = "BEFORE_TRANSFORM";
|
|
229
|
-
TPipePriority[TPipePriority["TRANSFORM"] = 4] = "TRANSFORM";
|
|
230
|
-
TPipePriority[TPipePriority["AFTER_TRANSFORM"] = 5] = "AFTER_TRANSFORM";
|
|
231
|
-
TPipePriority[TPipePriority["BEFORE_VALIDATE"] = 6] = "BEFORE_VALIDATE";
|
|
232
|
-
TPipePriority[TPipePriority["VALIDATE"] = 7] = "VALIDATE";
|
|
233
|
-
TPipePriority[TPipePriority["AFTER_VALIDATE"] = 8] = "AFTER_VALIDATE";
|
|
234
|
-
})(exports.TPipePriority || (exports.TPipePriority = {}));
|
|
235
|
-
|
|
236
|
-
const resolvePipe = (_value, metas, level) => {
|
|
237
|
-
var _a, _b, _c, _d;
|
|
238
|
-
let resolver;
|
|
239
|
-
if (level === 'PARAM') {
|
|
240
|
-
resolver = (_a = metas.paramMeta) === null || _a === void 0 ? void 0 : _a.resolver;
|
|
241
|
-
}
|
|
242
|
-
else if (level === 'PROP') {
|
|
243
|
-
resolver = (_b = metas.propMeta) === null || _b === void 0 ? void 0 : _b.resolver;
|
|
244
|
-
}
|
|
245
|
-
else if (level === 'METHOD') {
|
|
246
|
-
resolver = (_c = metas.methodMeta) === null || _c === void 0 ? void 0 : _c.resolver;
|
|
247
|
-
}
|
|
248
|
-
else if (level === 'CLASS') {
|
|
249
|
-
resolver = (_d = metas.classMeta) === null || _d === void 0 ? void 0 : _d.resolver;
|
|
250
|
-
}
|
|
251
|
-
if (resolver) {
|
|
252
|
-
return resolver(metas, level);
|
|
253
|
-
}
|
|
254
|
-
return undefined;
|
|
255
|
-
};
|
|
256
|
-
resolvePipe.priority = exports.TPipePriority.RESOLVE;
|
|
257
|
-
|
|
258
|
-
const sharedPipes = [
|
|
259
|
-
{
|
|
260
|
-
handler: resolvePipe,
|
|
261
|
-
priority: exports.TPipePriority.RESOLVE,
|
|
262
|
-
},
|
|
263
|
-
];
|
|
264
|
-
|
|
265
223
|
const sharedMoostInfact = getNewMoostInfact();
|
|
266
224
|
function getMoostInfact() {
|
|
267
225
|
return sharedMoostInfact;
|
|
@@ -280,18 +238,18 @@ function getNewMoostInfact() {
|
|
|
280
238
|
};
|
|
281
239
|
return infactMeta;
|
|
282
240
|
},
|
|
283
|
-
resolveParam(paramMeta, classMeta) {
|
|
284
|
-
if (paramMeta.
|
|
285
|
-
return runPipes(
|
|
241
|
+
resolveParam({ paramMeta, classMeta, customData }) {
|
|
242
|
+
if (paramMeta && customData && customData.pipes) {
|
|
243
|
+
return runPipes(customData.pipes, undefined, { paramMeta, classMeta: classMeta }, 'PARAM');
|
|
286
244
|
}
|
|
287
245
|
},
|
|
288
246
|
describeProp(classConstructor, key) {
|
|
289
247
|
const meta = getMoostMate().read(classConstructor, key);
|
|
290
248
|
return meta;
|
|
291
249
|
},
|
|
292
|
-
resolveProp(instance, key, initialValue, propMeta, classMeta) {
|
|
293
|
-
if (propMeta.
|
|
294
|
-
return runPipes(
|
|
250
|
+
resolveProp({ instance, key, initialValue, propMeta, classMeta, customData }) {
|
|
251
|
+
if (propMeta && customData && customData.pipes) {
|
|
252
|
+
return runPipes(customData.pipes, initialValue, { instance, key, propMeta, classMeta: classMeta }, 'PROP');
|
|
295
253
|
}
|
|
296
254
|
},
|
|
297
255
|
storeProvideRegByInstance: true,
|
|
@@ -329,7 +287,10 @@ function getCallableFn(targetInstance, fn, restoreCtx) {
|
|
|
329
287
|
if (meta === null || meta === void 0 ? void 0 : meta.injectable) {
|
|
330
288
|
const infact = getMoostInfact();
|
|
331
289
|
infact.silent(meta.injectable === 'FOR_EVENT');
|
|
332
|
-
const instance = yield infact.getForInstance(targetInstance, fn,
|
|
290
|
+
const instance = yield infact.getForInstance(targetInstance, fn, {
|
|
291
|
+
syncContextFn: () => { restoreCtx && restoreCtx(); },
|
|
292
|
+
customData: { pipes: meta.pipes },
|
|
293
|
+
});
|
|
333
294
|
infact.silent(false);
|
|
334
295
|
return ((...args) => {
|
|
335
296
|
return instance.handler(...args);
|
|
@@ -419,7 +380,7 @@ function bindControllerMethods(options) {
|
|
|
419
380
|
continue;
|
|
420
381
|
// preparing interceptors
|
|
421
382
|
const interceptors = [...(opts.interceptors || []), ...(meta.interceptors || []), ...(methodMeta.interceptors || [])].sort((a, b) => a.priority - b.priority);
|
|
422
|
-
const getIterceptorHandler = () =>
|
|
383
|
+
const getIterceptorHandler = () => {
|
|
423
384
|
const interceptorHandlers = [];
|
|
424
385
|
for (const { handler } of interceptors) {
|
|
425
386
|
const interceptorMeta = mate.read(handler);
|
|
@@ -435,10 +396,10 @@ function bindControllerMethods(options) {
|
|
|
435
396
|
interceptorHandlers.push(handler);
|
|
436
397
|
}
|
|
437
398
|
}
|
|
438
|
-
return new InterceptorHandler(interceptorHandlers);
|
|
439
|
-
}
|
|
399
|
+
return Promise.resolve(new InterceptorHandler(interceptorHandlers));
|
|
400
|
+
};
|
|
440
401
|
// preparing pipes
|
|
441
|
-
const pipes = [...(opts.pipes || []), ...(
|
|
402
|
+
const pipes = [...(opts.pipes || []), ...(methodMeta.pipes || [])];
|
|
442
403
|
const argsPipes = [];
|
|
443
404
|
for (const p of methodMeta.params || []) {
|
|
444
405
|
argsPipes.push({
|
|
@@ -476,7 +437,7 @@ function bindControllerMethods(options) {
|
|
|
476
437
|
handlers: methodMeta.handlers,
|
|
477
438
|
getIterceptorHandler,
|
|
478
439
|
resolveArgs,
|
|
479
|
-
logHandler: opts.silent ? (
|
|
440
|
+
logHandler: opts.silent ? () => { } : (eventName) => log(`• ${eventName} ${'[0m' + '[2m' + '[32m'}→ ${classConstructor.name}.${'[36m'}${method}${'[32m'}()`),
|
|
480
441
|
});
|
|
481
442
|
}
|
|
482
443
|
}
|
|
@@ -664,6 +625,48 @@ function IsBoolean(...args) {
|
|
|
664
625
|
return Validate(valido$1.validoIsBoolean(...args));
|
|
665
626
|
}
|
|
666
627
|
|
|
628
|
+
exports.TPipePriority = void 0;
|
|
629
|
+
(function (TPipePriority) {
|
|
630
|
+
TPipePriority[TPipePriority["BEFORE_RESOLVE"] = 0] = "BEFORE_RESOLVE";
|
|
631
|
+
TPipePriority[TPipePriority["RESOLVE"] = 1] = "RESOLVE";
|
|
632
|
+
TPipePriority[TPipePriority["AFTER_RESOLVE"] = 2] = "AFTER_RESOLVE";
|
|
633
|
+
TPipePriority[TPipePriority["BEFORE_TRANSFORM"] = 3] = "BEFORE_TRANSFORM";
|
|
634
|
+
TPipePriority[TPipePriority["TRANSFORM"] = 4] = "TRANSFORM";
|
|
635
|
+
TPipePriority[TPipePriority["AFTER_TRANSFORM"] = 5] = "AFTER_TRANSFORM";
|
|
636
|
+
TPipePriority[TPipePriority["BEFORE_VALIDATE"] = 6] = "BEFORE_VALIDATE";
|
|
637
|
+
TPipePriority[TPipePriority["VALIDATE"] = 7] = "VALIDATE";
|
|
638
|
+
TPipePriority[TPipePriority["AFTER_VALIDATE"] = 8] = "AFTER_VALIDATE";
|
|
639
|
+
})(exports.TPipePriority || (exports.TPipePriority = {}));
|
|
640
|
+
|
|
641
|
+
const resolvePipe = (_value, metas, level) => {
|
|
642
|
+
var _a, _b, _c, _d;
|
|
643
|
+
let resolver;
|
|
644
|
+
if (level === 'PARAM') {
|
|
645
|
+
resolver = (_a = metas.paramMeta) === null || _a === void 0 ? void 0 : _a.resolver;
|
|
646
|
+
}
|
|
647
|
+
else if (level === 'PROP') {
|
|
648
|
+
resolver = (_b = metas.propMeta) === null || _b === void 0 ? void 0 : _b.resolver;
|
|
649
|
+
}
|
|
650
|
+
else if (level === 'METHOD') {
|
|
651
|
+
resolver = (_c = metas.methodMeta) === null || _c === void 0 ? void 0 : _c.resolver;
|
|
652
|
+
}
|
|
653
|
+
else if (level === 'CLASS') {
|
|
654
|
+
resolver = (_d = metas.classMeta) === null || _d === void 0 ? void 0 : _d.resolver;
|
|
655
|
+
}
|
|
656
|
+
if (resolver) {
|
|
657
|
+
return resolver(metas, level);
|
|
658
|
+
}
|
|
659
|
+
return undefined;
|
|
660
|
+
};
|
|
661
|
+
resolvePipe.priority = exports.TPipePriority.RESOLVE;
|
|
662
|
+
|
|
663
|
+
const sharedPipes = [
|
|
664
|
+
{
|
|
665
|
+
handler: resolvePipe,
|
|
666
|
+
priority: exports.TPipePriority.RESOLVE,
|
|
667
|
+
},
|
|
668
|
+
];
|
|
669
|
+
|
|
667
670
|
const valido = new valido$1.Valido({
|
|
668
671
|
getDtoMeta(value, _type) {
|
|
669
672
|
let type = _type;
|
|
@@ -736,9 +739,11 @@ class Moost {
|
|
|
736
739
|
const classMeta = meta.read(controller);
|
|
737
740
|
const infact = getMoostInfact();
|
|
738
741
|
const isControllerConsructor = mate.isConstructor(controller);
|
|
742
|
+
const pipes = [...this.pipes, ...((classMeta === null || classMeta === void 0 ? void 0 : classMeta.pipes) || [])].sort((a, b) => a.priority - b.priority);
|
|
739
743
|
let instance;
|
|
744
|
+
const infactOpts = { provide, customData: { pipes } };
|
|
740
745
|
if (isControllerConsructor && ((classMeta === null || classMeta === void 0 ? void 0 : classMeta.injectable) === 'SINGLETON' || (classMeta === null || classMeta === void 0 ? void 0 : classMeta.injectable) === true)) {
|
|
741
|
-
instance = (yield infact.get(controller,
|
|
746
|
+
instance = (yield infact.get(controller, infactOpts));
|
|
742
747
|
}
|
|
743
748
|
else if (!isControllerConsructor) {
|
|
744
749
|
instance = controller;
|
|
@@ -746,10 +751,12 @@ class Moost {
|
|
|
746
751
|
}
|
|
747
752
|
// getInstance - instance factory for resolving SINGLETON and FOR_EVENT instance
|
|
748
753
|
const getInstance = instance ? () => Promise.resolve(instance) : () => __awaiter(this, void 0, void 0, function* () {
|
|
754
|
+
var _c;
|
|
749
755
|
// if (!instance) {
|
|
750
756
|
infact.silent();
|
|
751
|
-
const
|
|
752
|
-
infact.
|
|
757
|
+
const { restoreCtx } = eventCore.useEventContext();
|
|
758
|
+
const instance = yield infact.get(controller, Object.assign(Object.assign({}, infactOpts), { syncContextFn: restoreCtx }));
|
|
759
|
+
infact.silent(!!((_c = this.options) === null || _c === void 0 ? void 0 : _c.silent));
|
|
753
760
|
// }
|
|
754
761
|
return instance;
|
|
755
762
|
});
|
|
@@ -762,7 +769,7 @@ class Moost {
|
|
|
762
769
|
globalPrefix,
|
|
763
770
|
replaceOwnPrefix,
|
|
764
771
|
interceptors: [...this.interceptors],
|
|
765
|
-
pipes
|
|
772
|
+
pipes,
|
|
766
773
|
provide: (classMeta === null || classMeta === void 0 ? void 0 : classMeta.provide) || {},
|
|
767
774
|
});
|
|
768
775
|
if (classMeta && classMeta.importController) {
|
|
@@ -915,17 +922,31 @@ function firstString(errors) {
|
|
|
915
922
|
return '';
|
|
916
923
|
}
|
|
917
924
|
const validatePipe = (opts) => {
|
|
918
|
-
const pipe = (_value,
|
|
919
|
-
const { restoreCtx } =
|
|
925
|
+
const pipe = (_value, metas, level) => __awaiter(void 0, void 0, void 0, function* () {
|
|
926
|
+
const { restoreCtx } = eventCore.useEventContext();
|
|
920
927
|
const valido = getMoostValido();
|
|
921
|
-
|
|
928
|
+
let meta = {};
|
|
929
|
+
if (level === 'PARAM') {
|
|
930
|
+
meta = metas.paramMeta || {};
|
|
931
|
+
}
|
|
932
|
+
else if (level === 'PROP') {
|
|
933
|
+
meta = metas.propMeta || {};
|
|
934
|
+
}
|
|
935
|
+
else if (level === 'METHOD') {
|
|
936
|
+
meta = metas.methodMeta || {};
|
|
937
|
+
}
|
|
938
|
+
else if (level === 'CLASS') {
|
|
939
|
+
meta = metas.classMeta || {};
|
|
940
|
+
}
|
|
941
|
+
const result = yield valido.validateParam(_value, meta, undefined, undefined, undefined, undefined, 0, 0, (opts === null || opts === void 0 ? void 0 : opts.errorLimit) || DEFAULT_ERROR_LIMIT, restoreCtx);
|
|
922
942
|
if (result !== true) {
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
message
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
943
|
+
const message = typeof result === 'string' ? result : firstString(result);
|
|
944
|
+
if (opts === null || opts === void 0 ? void 0 : opts.errorCb) {
|
|
945
|
+
opts.errorCb(message, result);
|
|
946
|
+
}
|
|
947
|
+
else {
|
|
948
|
+
throw new Error('Validation error: ' + message);
|
|
949
|
+
}
|
|
929
950
|
}
|
|
930
951
|
return _value;
|
|
931
952
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -32,11 +32,11 @@ export declare function Dto(dtoOptions?: TValidoDtoOptions): ClassDecorator;
|
|
|
32
32
|
|
|
33
33
|
export declare const genericTypesCastPipe: (strict?: boolean) => TPipeFn;
|
|
34
34
|
|
|
35
|
-
export declare function getMoostInfact(): Infact<TMoostMetadata, TMoostMetadata, TMoostParamsMetadata>;
|
|
35
|
+
export declare function getMoostInfact(): Infact<TMoostMetadata, TMoostMetadata, TMoostParamsMetadata, TCustom>;
|
|
36
36
|
|
|
37
37
|
export declare function getMoostMate(): Mate<TMoostMetadata>;
|
|
38
38
|
|
|
39
|
-
export declare function getNewMoostInfact(): Infact<TMoostMetadata, TMoostMetadata, TMoostParamsMetadata>;
|
|
39
|
+
export declare function getNewMoostInfact(): Infact<TMoostMetadata, TMoostMetadata, TMoostParamsMetadata, TCustom>;
|
|
40
40
|
|
|
41
41
|
export declare function Id(value: string): MethodDecorator & ClassDecorator & ParameterDecorator & PropertyDecorator;
|
|
42
42
|
|
|
@@ -188,6 +188,10 @@ declare interface TCommonMoostMeta {
|
|
|
188
188
|
resolver?: (metas: TPipeMetas, level: TDecoratorLevel) => unknown;
|
|
189
189
|
}
|
|
190
190
|
|
|
191
|
+
declare interface TCustom {
|
|
192
|
+
pipes?: TPipeData[];
|
|
193
|
+
}
|
|
194
|
+
|
|
191
195
|
declare type TDecoratorLevel = 'CLASS' | 'METHOD' | 'PROP' | 'PARAM';
|
|
192
196
|
|
|
193
197
|
declare interface TEmpty {
|
|
@@ -327,6 +331,7 @@ export declare interface TValidateArrayOptions<T = unknown> {
|
|
|
327
331
|
|
|
328
332
|
declare interface TValidatePipeOptions {
|
|
329
333
|
errorLimit?: number;
|
|
334
|
+
errorCb?: (message: string, details: string | TObject) => unknown;
|
|
330
335
|
}
|
|
331
336
|
|
|
332
337
|
export declare function useControllerMeta<T extends TMoostMetadata = TMoostMetadata>(): {
|
package/dist/index.mjs
CHANGED
|
@@ -218,48 +218,6 @@ function runPipes(pipes, initialValue, metas, level, restoreCtx) {
|
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
var TPipePriority;
|
|
222
|
-
(function (TPipePriority) {
|
|
223
|
-
TPipePriority[TPipePriority["BEFORE_RESOLVE"] = 0] = "BEFORE_RESOLVE";
|
|
224
|
-
TPipePriority[TPipePriority["RESOLVE"] = 1] = "RESOLVE";
|
|
225
|
-
TPipePriority[TPipePriority["AFTER_RESOLVE"] = 2] = "AFTER_RESOLVE";
|
|
226
|
-
TPipePriority[TPipePriority["BEFORE_TRANSFORM"] = 3] = "BEFORE_TRANSFORM";
|
|
227
|
-
TPipePriority[TPipePriority["TRANSFORM"] = 4] = "TRANSFORM";
|
|
228
|
-
TPipePriority[TPipePriority["AFTER_TRANSFORM"] = 5] = "AFTER_TRANSFORM";
|
|
229
|
-
TPipePriority[TPipePriority["BEFORE_VALIDATE"] = 6] = "BEFORE_VALIDATE";
|
|
230
|
-
TPipePriority[TPipePriority["VALIDATE"] = 7] = "VALIDATE";
|
|
231
|
-
TPipePriority[TPipePriority["AFTER_VALIDATE"] = 8] = "AFTER_VALIDATE";
|
|
232
|
-
})(TPipePriority || (TPipePriority = {}));
|
|
233
|
-
|
|
234
|
-
const resolvePipe = (_value, metas, level) => {
|
|
235
|
-
var _a, _b, _c, _d;
|
|
236
|
-
let resolver;
|
|
237
|
-
if (level === 'PARAM') {
|
|
238
|
-
resolver = (_a = metas.paramMeta) === null || _a === void 0 ? void 0 : _a.resolver;
|
|
239
|
-
}
|
|
240
|
-
else if (level === 'PROP') {
|
|
241
|
-
resolver = (_b = metas.propMeta) === null || _b === void 0 ? void 0 : _b.resolver;
|
|
242
|
-
}
|
|
243
|
-
else if (level === 'METHOD') {
|
|
244
|
-
resolver = (_c = metas.methodMeta) === null || _c === void 0 ? void 0 : _c.resolver;
|
|
245
|
-
}
|
|
246
|
-
else if (level === 'CLASS') {
|
|
247
|
-
resolver = (_d = metas.classMeta) === null || _d === void 0 ? void 0 : _d.resolver;
|
|
248
|
-
}
|
|
249
|
-
if (resolver) {
|
|
250
|
-
return resolver(metas, level);
|
|
251
|
-
}
|
|
252
|
-
return undefined;
|
|
253
|
-
};
|
|
254
|
-
resolvePipe.priority = TPipePriority.RESOLVE;
|
|
255
|
-
|
|
256
|
-
const sharedPipes = [
|
|
257
|
-
{
|
|
258
|
-
handler: resolvePipe,
|
|
259
|
-
priority: TPipePriority.RESOLVE,
|
|
260
|
-
},
|
|
261
|
-
];
|
|
262
|
-
|
|
263
221
|
const sharedMoostInfact = getNewMoostInfact();
|
|
264
222
|
function getMoostInfact() {
|
|
265
223
|
return sharedMoostInfact;
|
|
@@ -278,18 +236,18 @@ function getNewMoostInfact() {
|
|
|
278
236
|
};
|
|
279
237
|
return infactMeta;
|
|
280
238
|
},
|
|
281
|
-
resolveParam(paramMeta, classMeta) {
|
|
282
|
-
if (paramMeta.
|
|
283
|
-
return runPipes(
|
|
239
|
+
resolveParam({ paramMeta, classMeta, customData }) {
|
|
240
|
+
if (paramMeta && customData && customData.pipes) {
|
|
241
|
+
return runPipes(customData.pipes, undefined, { paramMeta, classMeta: classMeta }, 'PARAM');
|
|
284
242
|
}
|
|
285
243
|
},
|
|
286
244
|
describeProp(classConstructor, key) {
|
|
287
245
|
const meta = getMoostMate().read(classConstructor, key);
|
|
288
246
|
return meta;
|
|
289
247
|
},
|
|
290
|
-
resolveProp(instance, key, initialValue, propMeta, classMeta) {
|
|
291
|
-
if (propMeta.
|
|
292
|
-
return runPipes(
|
|
248
|
+
resolveProp({ instance, key, initialValue, propMeta, classMeta, customData }) {
|
|
249
|
+
if (propMeta && customData && customData.pipes) {
|
|
250
|
+
return runPipes(customData.pipes, initialValue, { instance, key, propMeta, classMeta: classMeta }, 'PROP');
|
|
293
251
|
}
|
|
294
252
|
},
|
|
295
253
|
storeProvideRegByInstance: true,
|
|
@@ -327,7 +285,10 @@ function getCallableFn(targetInstance, fn, restoreCtx) {
|
|
|
327
285
|
if (meta === null || meta === void 0 ? void 0 : meta.injectable) {
|
|
328
286
|
const infact = getMoostInfact();
|
|
329
287
|
infact.silent(meta.injectable === 'FOR_EVENT');
|
|
330
|
-
const instance = yield infact.getForInstance(targetInstance, fn,
|
|
288
|
+
const instance = yield infact.getForInstance(targetInstance, fn, {
|
|
289
|
+
syncContextFn: () => { restoreCtx && restoreCtx(); },
|
|
290
|
+
customData: { pipes: meta.pipes },
|
|
291
|
+
});
|
|
331
292
|
infact.silent(false);
|
|
332
293
|
return ((...args) => {
|
|
333
294
|
return instance.handler(...args);
|
|
@@ -417,7 +378,7 @@ function bindControllerMethods(options) {
|
|
|
417
378
|
continue;
|
|
418
379
|
// preparing interceptors
|
|
419
380
|
const interceptors = [...(opts.interceptors || []), ...(meta.interceptors || []), ...(methodMeta.interceptors || [])].sort((a, b) => a.priority - b.priority);
|
|
420
|
-
const getIterceptorHandler = () =>
|
|
381
|
+
const getIterceptorHandler = () => {
|
|
421
382
|
const interceptorHandlers = [];
|
|
422
383
|
for (const { handler } of interceptors) {
|
|
423
384
|
const interceptorMeta = mate.read(handler);
|
|
@@ -433,10 +394,10 @@ function bindControllerMethods(options) {
|
|
|
433
394
|
interceptorHandlers.push(handler);
|
|
434
395
|
}
|
|
435
396
|
}
|
|
436
|
-
return new InterceptorHandler(interceptorHandlers);
|
|
437
|
-
}
|
|
397
|
+
return Promise.resolve(new InterceptorHandler(interceptorHandlers));
|
|
398
|
+
};
|
|
438
399
|
// preparing pipes
|
|
439
|
-
const pipes = [...(opts.pipes || []), ...(
|
|
400
|
+
const pipes = [...(opts.pipes || []), ...(methodMeta.pipes || [])];
|
|
440
401
|
const argsPipes = [];
|
|
441
402
|
for (const p of methodMeta.params || []) {
|
|
442
403
|
argsPipes.push({
|
|
@@ -474,7 +435,7 @@ function bindControllerMethods(options) {
|
|
|
474
435
|
handlers: methodMeta.handlers,
|
|
475
436
|
getIterceptorHandler,
|
|
476
437
|
resolveArgs,
|
|
477
|
-
logHandler: opts.silent ? (
|
|
438
|
+
logHandler: opts.silent ? () => { } : (eventName) => log(`• ${eventName} ${'[0m' + '[2m' + '[32m'}→ ${classConstructor.name}.${'[36m'}${method}${'[32m'}()`),
|
|
478
439
|
});
|
|
479
440
|
}
|
|
480
441
|
}
|
|
@@ -662,6 +623,48 @@ function IsBoolean(...args) {
|
|
|
662
623
|
return Validate(validoIsBoolean(...args));
|
|
663
624
|
}
|
|
664
625
|
|
|
626
|
+
var TPipePriority;
|
|
627
|
+
(function (TPipePriority) {
|
|
628
|
+
TPipePriority[TPipePriority["BEFORE_RESOLVE"] = 0] = "BEFORE_RESOLVE";
|
|
629
|
+
TPipePriority[TPipePriority["RESOLVE"] = 1] = "RESOLVE";
|
|
630
|
+
TPipePriority[TPipePriority["AFTER_RESOLVE"] = 2] = "AFTER_RESOLVE";
|
|
631
|
+
TPipePriority[TPipePriority["BEFORE_TRANSFORM"] = 3] = "BEFORE_TRANSFORM";
|
|
632
|
+
TPipePriority[TPipePriority["TRANSFORM"] = 4] = "TRANSFORM";
|
|
633
|
+
TPipePriority[TPipePriority["AFTER_TRANSFORM"] = 5] = "AFTER_TRANSFORM";
|
|
634
|
+
TPipePriority[TPipePriority["BEFORE_VALIDATE"] = 6] = "BEFORE_VALIDATE";
|
|
635
|
+
TPipePriority[TPipePriority["VALIDATE"] = 7] = "VALIDATE";
|
|
636
|
+
TPipePriority[TPipePriority["AFTER_VALIDATE"] = 8] = "AFTER_VALIDATE";
|
|
637
|
+
})(TPipePriority || (TPipePriority = {}));
|
|
638
|
+
|
|
639
|
+
const resolvePipe = (_value, metas, level) => {
|
|
640
|
+
var _a, _b, _c, _d;
|
|
641
|
+
let resolver;
|
|
642
|
+
if (level === 'PARAM') {
|
|
643
|
+
resolver = (_a = metas.paramMeta) === null || _a === void 0 ? void 0 : _a.resolver;
|
|
644
|
+
}
|
|
645
|
+
else if (level === 'PROP') {
|
|
646
|
+
resolver = (_b = metas.propMeta) === null || _b === void 0 ? void 0 : _b.resolver;
|
|
647
|
+
}
|
|
648
|
+
else if (level === 'METHOD') {
|
|
649
|
+
resolver = (_c = metas.methodMeta) === null || _c === void 0 ? void 0 : _c.resolver;
|
|
650
|
+
}
|
|
651
|
+
else if (level === 'CLASS') {
|
|
652
|
+
resolver = (_d = metas.classMeta) === null || _d === void 0 ? void 0 : _d.resolver;
|
|
653
|
+
}
|
|
654
|
+
if (resolver) {
|
|
655
|
+
return resolver(metas, level);
|
|
656
|
+
}
|
|
657
|
+
return undefined;
|
|
658
|
+
};
|
|
659
|
+
resolvePipe.priority = TPipePriority.RESOLVE;
|
|
660
|
+
|
|
661
|
+
const sharedPipes = [
|
|
662
|
+
{
|
|
663
|
+
handler: resolvePipe,
|
|
664
|
+
priority: TPipePriority.RESOLVE,
|
|
665
|
+
},
|
|
666
|
+
];
|
|
667
|
+
|
|
665
668
|
const valido = new Valido({
|
|
666
669
|
getDtoMeta(value, _type) {
|
|
667
670
|
let type = _type;
|
|
@@ -734,9 +737,11 @@ class Moost {
|
|
|
734
737
|
const classMeta = meta.read(controller);
|
|
735
738
|
const infact = getMoostInfact();
|
|
736
739
|
const isControllerConsructor = isConstructor(controller);
|
|
740
|
+
const pipes = [...this.pipes, ...((classMeta === null || classMeta === void 0 ? void 0 : classMeta.pipes) || [])].sort((a, b) => a.priority - b.priority);
|
|
737
741
|
let instance;
|
|
742
|
+
const infactOpts = { provide, customData: { pipes } };
|
|
738
743
|
if (isControllerConsructor && ((classMeta === null || classMeta === void 0 ? void 0 : classMeta.injectable) === 'SINGLETON' || (classMeta === null || classMeta === void 0 ? void 0 : classMeta.injectable) === true)) {
|
|
739
|
-
instance = (yield infact.get(controller,
|
|
744
|
+
instance = (yield infact.get(controller, infactOpts));
|
|
740
745
|
}
|
|
741
746
|
else if (!isControllerConsructor) {
|
|
742
747
|
instance = controller;
|
|
@@ -744,10 +749,12 @@ class Moost {
|
|
|
744
749
|
}
|
|
745
750
|
// getInstance - instance factory for resolving SINGLETON and FOR_EVENT instance
|
|
746
751
|
const getInstance = instance ? () => Promise.resolve(instance) : () => __awaiter(this, void 0, void 0, function* () {
|
|
752
|
+
var _c;
|
|
747
753
|
// if (!instance) {
|
|
748
754
|
infact.silent();
|
|
749
|
-
const
|
|
750
|
-
infact.
|
|
755
|
+
const { restoreCtx } = useEventContext();
|
|
756
|
+
const instance = yield infact.get(controller, Object.assign(Object.assign({}, infactOpts), { syncContextFn: restoreCtx }));
|
|
757
|
+
infact.silent(!!((_c = this.options) === null || _c === void 0 ? void 0 : _c.silent));
|
|
751
758
|
// }
|
|
752
759
|
return instance;
|
|
753
760
|
});
|
|
@@ -760,7 +767,7 @@ class Moost {
|
|
|
760
767
|
globalPrefix,
|
|
761
768
|
replaceOwnPrefix,
|
|
762
769
|
interceptors: [...this.interceptors],
|
|
763
|
-
pipes
|
|
770
|
+
pipes,
|
|
764
771
|
provide: (classMeta === null || classMeta === void 0 ? void 0 : classMeta.provide) || {},
|
|
765
772
|
});
|
|
766
773
|
if (classMeta && classMeta.importController) {
|
|
@@ -913,17 +920,31 @@ function firstString(errors) {
|
|
|
913
920
|
return '';
|
|
914
921
|
}
|
|
915
922
|
const validatePipe = (opts) => {
|
|
916
|
-
const pipe = (_value,
|
|
917
|
-
const { restoreCtx } =
|
|
923
|
+
const pipe = (_value, metas, level) => __awaiter(void 0, void 0, void 0, function* () {
|
|
924
|
+
const { restoreCtx } = useEventContext();
|
|
918
925
|
const valido = getMoostValido();
|
|
919
|
-
|
|
926
|
+
let meta = {};
|
|
927
|
+
if (level === 'PARAM') {
|
|
928
|
+
meta = metas.paramMeta || {};
|
|
929
|
+
}
|
|
930
|
+
else if (level === 'PROP') {
|
|
931
|
+
meta = metas.propMeta || {};
|
|
932
|
+
}
|
|
933
|
+
else if (level === 'METHOD') {
|
|
934
|
+
meta = metas.methodMeta || {};
|
|
935
|
+
}
|
|
936
|
+
else if (level === 'CLASS') {
|
|
937
|
+
meta = metas.classMeta || {};
|
|
938
|
+
}
|
|
939
|
+
const result = yield valido.validateParam(_value, meta, undefined, undefined, undefined, undefined, 0, 0, (opts === null || opts === void 0 ? void 0 : opts.errorLimit) || DEFAULT_ERROR_LIMIT, restoreCtx);
|
|
920
940
|
if (result !== true) {
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
message
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
941
|
+
const message = typeof result === 'string' ? result : firstString(result);
|
|
942
|
+
if (opts === null || opts === void 0 ? void 0 : opts.errorCb) {
|
|
943
|
+
opts.errorCb(message, result);
|
|
944
|
+
}
|
|
945
|
+
else {
|
|
946
|
+
throw new Error('Validation error: ' + message);
|
|
947
|
+
}
|
|
927
948
|
}
|
|
928
949
|
return _value;
|
|
929
950
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "moost",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.12",
|
|
4
4
|
"description": "moost",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"prostojs"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@prostojs/infact": "^0.1.
|
|
25
|
+
"@prostojs/infact": "^0.1.4",
|
|
26
26
|
"@prostojs/mate": "^0.1.12",
|
|
27
27
|
"@prostojs/valido": "^0.0.2",
|
|
28
28
|
"@wooksjs/event-core": "^0.2.6",
|