ソースを参照

class-validator plugin: tempopary `validationHasErrors` condition

sanex3339 8 年 前
コミット
4ad4c2a20f
3 ファイル変更14 行追加9 行削除
  1. 6 3
      dist/index.js
  2. 7 4
      src/Options.ts
  3. 1 2
      test/dev/test.ts

+ 6 - 3
dist/index.js

@@ -1060,8 +1060,11 @@ var Options = function () {
         _classCallCheck(this, Options);
 
         Object.assign(this, Object.assign({}, DefaultPreset_1.DEFAULT_PRESET, obfuscatorOptions));
-        var errors = class_validator_1.validateSync(this, Options.validatorOptions);
-        if (errors.length) {
+        var errors = class_validator_1.validateSync(this, Options.validatorOptions),
+            validationHasErrors = errors.some(function (error) {
+            return Object.keys(error.constraints).length > 0;
+        });
+        if (validationHasErrors) {
             throw new ReferenceError("Validation failed. errors:\n" + Options.formatErrors(errors));
         }
         Object.assign(this, OptionsNormalizer_1.OptionsNormalizer.normalizeOptions(this));
@@ -1128,7 +1131,7 @@ __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)],
 __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "sourceMap", void 0);
 __decorate([class_validator_1.IsIn(['inline', 'separate']), __metadata('design:type', String)], Options.prototype, "sourceMapMode", void 0);
 __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "unicodeArray", void 0);
-__decorate([class_validator_1.IsInt(), class_validator_1.Min(0), class_validator_1.Max(1), __metadata('design:type', Number)], Options.prototype, "unicodeArrayThreshold", void 0);
+__decorate([class_validator_1.IsNumber(), class_validator_1.Min(0), class_validator_1.Max(1), __metadata('design:type', Number)], Options.prototype, "unicodeArrayThreshold", void 0);
 __decorate([class_validator_1.IsBoolean(), __metadata('design:type', Boolean)], Options.prototype, "wrapUnicodeArrayCalls", void 0);
 exports.Options = Options;
 

+ 7 - 4
src/Options.ts

@@ -1,4 +1,4 @@
-import { IsBoolean, IsIn, IsInt, IsString, Min, Max, validateSync, ValidationError, ValidatorOptions } from 'class-validator';
+import { IsBoolean, IsIn, IsNumber, IsString, Min, Max, validateSync, ValidationError, ValidatorOptions } from 'class-validator';
 
 import { IObfuscatorOptions } from "./interfaces/IObfuscatorOptions";
 import { IOptions } from "./interfaces/IOptions";
@@ -90,7 +90,7 @@ export class Options implements IOptions {
     /**
      * @type {number}
      */
-    @IsInt()
+    @IsNumber()
     @Min(0)
     @Max(1)
     public readonly unicodeArrayThreshold: number;
@@ -107,9 +107,12 @@ export class Options implements IOptions {
     constructor (obfuscatorOptions: IObfuscatorOptions) {
         Object.assign(this, Object.assign({}, DEFAULT_PRESET, obfuscatorOptions));
 
-        let errors: ValidationError[] = validateSync(this, Options.validatorOptions);
+        let errors: ValidationError[] = validateSync(this, Options.validatorOptions),
+            validationHasErrors: boolean = errors.some((error: ValidationError): boolean => {
+                return Object.keys(error.constraints).length > 0;
+            });
 
-        if (errors.length) {
+        if (validationHasErrors) {
             throw new ReferenceError(`Validation failed. errors:\n${Options.formatErrors(errors)}`);
         }
 

+ 1 - 2
test/dev/test.ts

@@ -60,8 +60,7 @@ let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
     `,
     {
         disableConsoleOutput: false,
-        encodeUnicodeLiterals: true,
-        unicodeArrayThreshold: -1
+        encodeUnicodeLiterals: true
     }
 ).getObfuscatedCode();