@nest-boot/eslint-plugin 5.1.2 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintrc.js CHANGED
@@ -1,19 +1,12 @@
1
- "use strict";
2
-
3
1
  module.exports = {
4
2
  root: true,
5
- extends: [
6
- "eslint:recommended",
7
- "plugin:eslint-plugin/recommended",
8
- "plugin:node/recommended",
9
- ],
10
- env: {
11
- node: true,
12
- },
3
+ extends: ["@nest-boot/eslint-config"],
13
4
  overrides: [
14
5
  {
15
- files: ["tests/**/*.js"],
16
- env: { mocha: true },
6
+ files: ["*.ts"],
7
+ parserOptions: {
8
+ project: ["tsconfig.json"],
9
+ },
17
10
  },
18
11
  ],
19
12
  };
@@ -0,0 +1,4 @@
1
+
2
+ > @nest-boot/eslint-plugin@0.0.0-development build /home/runner/work/nest-boot/nest-boot/packages/eslint-plugin
3
+ > tsc
4
+
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.rules = void 0;
7
+ const rules_1 = __importDefault(require("./rules"));
8
+ exports.rules = rules_1.default;
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAEnB,gBAFF,eAAK,CAEE"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@typescript-eslint/utils");
4
+ const createRule_1 = require("../utils/createRule");
5
+ exports.default = (0, createRule_1.createRule)({
6
+ meta: {
7
+ type: "problem",
8
+ docs: {
9
+ description: "实体字段不能使用可选属性和非空断言",
10
+ },
11
+ fixable: "code",
12
+ schema: [],
13
+ messages: {
14
+ entityPropertyNoOptionalOrNonNullAssertion: "实体字段不能使用可选属性和非空断言。",
15
+ },
16
+ },
17
+ defaultOptions: [{}],
18
+ create(context) {
19
+ return {
20
+ ClassDeclaration(node) {
21
+ if (node.decorators.some((decorator) => {
22
+ return (decorator.expression.type === utils_1.AST_NODE_TYPES.CallExpression &&
23
+ decorator.expression.callee.type === utils_1.AST_NODE_TYPES.Identifier &&
24
+ decorator.expression.callee.name === "Entity");
25
+ })) {
26
+ // 遍历类属性
27
+ node.body.body.forEach((property) => {
28
+ // 检查是否有 @Property、@ManyToOne 或 @PrimaryKey 装饰器
29
+ if (property.type === utils_1.AST_NODE_TYPES.PropertyDefinition &&
30
+ property.decorators &&
31
+ property.decorators.some((decorator) => {
32
+ return (decorator.expression.type === utils_1.AST_NODE_TYPES.CallExpression &&
33
+ decorator.expression.callee.type ===
34
+ utils_1.AST_NODE_TYPES.Identifier &&
35
+ ["Property", "ManyToOne", "PrimaryKey"].includes(decorator.expression.callee.name));
36
+ })) {
37
+ if (property.optional || property.definite) {
38
+ context.report({
39
+ node: property,
40
+ messageId: "entityPropertyNoOptionalOrNonNullAssertion",
41
+ fix: (fixer) => {
42
+ const tokenBefore = context.sourceCode.getTokenBefore(property.key);
43
+ const propertyStart = tokenBefore && tokenBefore.range[1] < property.range[0]
44
+ ? tokenBefore.range[1]
45
+ : property.range[0];
46
+ const propertyEnd = property.range[1];
47
+ // 从属性中移除 ? 或 ! 符号
48
+ const fixedPropertyText = context.sourceCode
49
+ .getText()
50
+ .slice(propertyStart, propertyEnd)
51
+ .replace(/\?|!/, "");
52
+ return fixer.replaceTextRange([propertyStart, propertyEnd], fixedPropertyText);
53
+ },
54
+ });
55
+ }
56
+ }
57
+ });
58
+ }
59
+ },
60
+ };
61
+ },
62
+ });
63
+ //# sourceMappingURL=entity-property-no-optional-or-non-null-assertion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-property-no-optional-or-non-null-assertion.js","sourceRoot":"","sources":["../../src/rules/entity-property-no-optional-or-non-null-assertion.ts"],"names":[],"mappings":";;AAAA,oDAA0D;AAE1D,oDAAiD;AAEjD,kBAAe,IAAA,uBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,mBAAmB;SACjC;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,0CAA0C,EACxC,oBAAoB;SACvB;KACF;IACD,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,gBAAgB,CAAC,IAAI;gBACnB,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;oBACjC,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc;wBAC3D,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;wBAC9D,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAC9C,CAAC;gBACJ,CAAC,CAAC,EACF;oBACA,QAAQ;oBACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;wBAClC,+CAA+C;wBAC/C,IACE,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB;4BACnD,QAAQ,CAAC,UAAU;4BACnB,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;gCACrC,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc;oCAC3D,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;wCAC9B,sBAAc,CAAC,UAAU;oCAC3B,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAC9C,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACjC,CACF,CAAC;4BACJ,CAAC,CAAC,EACF;4BACA,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,EAAE;gCAC1C,OAAO,CAAC,MAAM,CAAC;oCACb,IAAI,EAAE,QAAQ;oCACd,SAAS,EAAE,4CAA4C;oCACvD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;wCACb,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,CACnD,QAAQ,CAAC,GAAG,CACb,CAAC;wCACF,MAAM,aAAa,GACjB,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;4CACrD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;4CACtB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wCAEtC,kBAAkB;wCAClB,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU;6CACzC,OAAO,EAAE;6CACT,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC;6CACjC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;wCAEvB,OAAO,KAAK,CAAC,gBAAgB,CAC3B,CAAC,aAAa,EAAE,WAAW,CAAC,EAC5B,iBAAiB,CAClB,CAAC;oCACJ,CAAC;iCACF,CAAC,CAAC;6BACJ;yBACF;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@typescript-eslint/utils");
4
+ const createRule_1 = require("../utils/createRule");
5
+ exports.default = (0, createRule_1.createRule)({
6
+ meta: {
7
+ type: "problem",
8
+ docs: {
9
+ description: "实体字段可为空时属性类型",
10
+ },
11
+ fixable: "code",
12
+ schema: [],
13
+ messages: {
14
+ entityPropertyNullable: "@Property({ nullable: true }) 属性类型需包含 null。",
15
+ },
16
+ },
17
+ defaultOptions: [{}],
18
+ create(context) {
19
+ return {
20
+ ClassDeclaration(node) {
21
+ // 检查是否有 @Entity 装饰器
22
+ if (node.decorators.some((decorator) => {
23
+ return (decorator.expression.type === utils_1.AST_NODE_TYPES.CallExpression &&
24
+ decorator.expression.callee.type === utils_1.AST_NODE_TYPES.Identifier &&
25
+ decorator.expression.callee.name === "Entity");
26
+ })) {
27
+ // 遍历类属性
28
+ node.body.body.forEach((property) => {
29
+ // 检查是否有 @Property() 装饰器
30
+ if (property.type === utils_1.AST_NODE_TYPES.PropertyDefinition) {
31
+ const propertyDecorator = property.decorators.find((decorator) => {
32
+ return (decorator.expression.type ===
33
+ utils_1.AST_NODE_TYPES.CallExpression &&
34
+ decorator.expression.callee.type ===
35
+ utils_1.AST_NODE_TYPES.Identifier &&
36
+ decorator.expression.callee.name === "Property");
37
+ });
38
+ if (typeof propertyDecorator === "undefined") {
39
+ return;
40
+ }
41
+ // 检查 @Property() 装饰器 nullable 参数是否为 true
42
+ if (propertyDecorator.expression.type ===
43
+ utils_1.AST_NODE_TYPES.CallExpression &&
44
+ propertyDecorator.expression.arguments[0]?.type ===
45
+ utils_1.AST_NODE_TYPES.ObjectExpression &&
46
+ propertyDecorator.expression.arguments[0]?.properties?.some((prop) => {
47
+ return (prop.type === utils_1.AST_NODE_TYPES.Property &&
48
+ prop.key.type === utils_1.AST_NODE_TYPES.Identifier &&
49
+ prop.key.name === "nullable" &&
50
+ prop.value.type === utils_1.AST_NODE_TYPES.Literal &&
51
+ prop.value.value === true);
52
+ })) {
53
+ const typeAnnotation = property.typeAnnotation;
54
+ if (typeof typeAnnotation === "undefined") {
55
+ return;
56
+ }
57
+ // 检查属性类型是否包含 null
58
+ if (!(typeAnnotation.type === utils_1.AST_NODE_TYPES.TSTypeAnnotation &&
59
+ typeAnnotation.typeAnnotation.type ===
60
+ utils_1.AST_NODE_TYPES.TSUnionType &&
61
+ typeAnnotation.typeAnnotation.types.some((type) => type.type === utils_1.AST_NODE_TYPES.TSNullKeyword))) {
62
+ context.report({
63
+ node: property,
64
+ messageId: "entityPropertyNullable",
65
+ fix: (fixer) => {
66
+ const typeAnnotationStart = typeAnnotation.range[0];
67
+ const typeAnnotationEnd = typeAnnotation.range[1];
68
+ const originalType = context.sourceCode.getText(typeAnnotation);
69
+ return fixer.replaceTextRange([typeAnnotationStart, typeAnnotationEnd], `${originalType} | null${property.value ? "" : " = null"}`);
70
+ },
71
+ });
72
+ }
73
+ }
74
+ }
75
+ });
76
+ }
77
+ },
78
+ };
79
+ },
80
+ });
81
+ //# sourceMappingURL=entity-property-nullable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-property-nullable.js","sourceRoot":"","sources":["../../src/rules/entity-property-nullable.ts"],"names":[],"mappings":";;AAAA,oDAA0D;AAE1D,oDAAiD;AAEjD,kBAAe,IAAA,uBAAU,EAAC;IACxB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,cAAc;SAC5B;QACD,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,sBAAsB,EACpB,6CAA6C;SAChD;KACF;IACD,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,gBAAgB,CAAC,IAAI;gBACnB,oBAAoB;gBACpB,IACE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;oBACjC,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc;wBAC3D,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;wBAC9D,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAC9C,CAAC;gBACJ,CAAC,CAAC,EACF;oBACA,QAAQ;oBACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;wBAClC,wBAAwB;wBACxB,IAAI,QAAQ,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,EAAE;4BACvD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAChD,CAAC,SAAS,EAAE,EAAE;gCACZ,OAAO,CACL,SAAS,CAAC,UAAU,CAAC,IAAI;oCACvB,sBAAc,CAAC,cAAc;oCAC/B,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI;wCAC9B,sBAAc,CAAC,UAAU;oCAC3B,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAChD,CAAC;4BACJ,CAAC,CACF,CAAC;4BAEF,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE;gCAC5C,OAAO;6BACR;4BAED,yCAAyC;4BACzC,IACE,iBAAiB,CAAC,UAAU,CAAC,IAAI;gCAC/B,sBAAc,CAAC,cAAc;gCAC/B,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI;oCAC7C,sBAAc,CAAC,gBAAgB;gCACjC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CACzD,CAAC,IAAI,EAAE,EAAE;oCACP,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,QAAQ;wCACrC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;wCAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU;wCAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,OAAO;wCAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAC1B,CAAC;gCACJ,CAAC,CACF,EACD;gCACA,MAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;gCAE/C,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;oCACzC,OAAO;iCACR;gCAED,kBAAkB;gCAClB,IACE,CAAC,CACC,cAAc,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;oCACvD,cAAc,CAAC,cAAc,CAAC,IAAI;wCAChC,sBAAc,CAAC,WAAW;oCAC5B,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,aAAa,CACrD,CACF,EACD;oCACA,OAAO,CAAC,MAAM,CAAC;wCACb,IAAI,EAAE,QAAQ;wCACd,SAAS,EAAE,wBAAwB;wCACnC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;4CACb,MAAM,mBAAmB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4CACpD,MAAM,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;4CAClD,MAAM,YAAY,GAChB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;4CAE7C,OAAO,KAAK,CAAC,gBAAgB,CAC3B,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EACxC,GAAG,YAAY,UACb,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SACxB,EAAE,CACH,CAAC;wCACJ,CAAC;qCACF,CAAC,CAAC;iCACJ;6BACF;yBACF;oBACH,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const entity_property_no_optional_or_non_null_assertion_1 = __importDefault(require("./entity-property-no-optional-or-non-null-assertion"));
7
+ const entity_property_nullable_1 = __importDefault(require("./entity-property-nullable"));
8
+ exports.default = {
9
+ "entity-property-no-optional-or-non-null-assertion": entity_property_no_optional_or_non_null_assertion_1.default,
10
+ "entity-property-nullable": entity_property_nullable_1.default,
11
+ };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":";;;;;AAAA,4IAA6G;AAC7G,0FAAgE;AAEhE,kBAAe;IACb,mDAAmD,EACjD,2DAA0C;IAC5C,0BAA0B,EAAE,kCAAsB;CACnD,CAAC"}
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/typescript.d.ts","../node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts","../node_modules/@typescript-eslint/types/dist/lib.d.ts","../node_modules/@typescript-eslint/types/dist/parser-options.d.ts","../node_modules/@typescript-eslint/types/dist/ts-estree.d.ts","../node_modules/@typescript-eslint/types/dist/index.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/ts-nodes.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/index.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/parser-options.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/parser.d.ts","../node_modules/@typescript-eslint/visitor-keys/dist/get-keys.d.ts","../node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.d.ts","../node_modules/@typescript-eslint/visitor-keys/dist/index.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/simple-traverse.d.ts","../../../node_modules/typescript/lib/tsserverlibrary.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/ExpiringCache.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/parseSettings/index.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/create-program/shared.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/create-program/useProvidedPrograms.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/create-program/getScriptKind.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/version-check.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/getModifiers.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/node-utils.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/clear-caches.d.ts","../node_modules/@typescript-eslint/typescript-estree/dist/index.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-estree.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/AST.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/ParserOptions.d.ts","../node_modules/@typescript-eslint/utils/dist/json-schema.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/DefinitionType.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/DefinitionBase.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/CatchClauseDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/ClassNameDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/FunctionNameDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/ImplicitGlobalVariableDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/ImportBindingDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/ParameterDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/TSEnumMemberDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/TSEnumNameDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/TSModuleNameDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/TypeDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/VariableDefinition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/Definition.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/definition/index.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/variable/VariableBase.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/variable/ESLintScopeVariable.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/variable/Variable.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/variable/ImplicitLibVariable.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/variable/index.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/referencer/Reference.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeType.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/GlobalScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ModuleScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/TSModuleScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ScopeBase.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/CatchScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ClassScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ClassStaticBlockScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ConditionalTypeScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ForScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionExpressionNameScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/FunctionTypeScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/MappedTypeScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/SwitchScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/TSEnumScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/TypeScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/WithScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/Scope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/ClassFieldInitializerScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/ScopeManager.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/BlockScope.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/scope/index.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/referencer/VisitorBase.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/referencer/PatternVisitor.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/referencer/Visitor.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/referencer/index.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/analyze.d.ts","../node_modules/@typescript-eslint/scope-manager/dist/index.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/Scope.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/SourceCode.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/Linter.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/CLIEngine.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/ESLint.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/RuleTester.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-eslint/index.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/astUtilities.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/PatternMatcher.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/predicates.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/ReferenceTracker.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/scopeAnalysis.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/eslint-utils/index.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/helpers.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/misc.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/predicates.d.ts","../node_modules/@typescript-eslint/utils/dist/ast-utils/index.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/applyDefault.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/InferTypesFromRule.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/deepMerge.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/nullThrows.d.ts","../node_modules/@typescript-eslint/utils/dist/eslint-utils/index.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-utils/isArray.d.ts","../node_modules/@typescript-eslint/utils/dist/ts-utils/index.d.ts","../node_modules/@typescript-eslint/utils/dist/index.d.ts","../src/utils/createRule.ts","../src/rules/entity-property-no-optional-or-non-null-assertion.ts","../src/rules/entity-property-nullable.ts","../src/rules/index.ts","../src/index.ts","../../../node_modules/@types/argparse/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/dom-events.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/globals.global.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/bonjour/index.d.ts","../../../node_modules/keyv/src/index.d.ts","../../../node_modules/@types/http-cache-semantics/index.d.ts","../../../node_modules/@types/responselike/index.d.ts","../../../node_modules/@types/cacheable-request/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/connect-history-api-fallback/index.d.ts","../../../node_modules/@types/cookiejar/index.d.ts","../../../node_modules/@types/eslint/helpers.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@types/eslint-scope/index.d.ts","../../../node_modules/@types/serve-static/node_modules/@types/mime/Mime.d.ts","../../../node_modules/@types/serve-static/node_modules/@types/mime/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/unist/index.d.ts","../../../node_modules/@types/hast/index.d.ts","../../../node_modules/@types/history/DOMUtils.d.ts","../../../node_modules/@types/history/createBrowserHistory.d.ts","../../../node_modules/@types/history/createHashHistory.d.ts","../../../node_modules/@types/history/createMemoryHistory.d.ts","../../../node_modules/@types/history/LocationUtils.d.ts","../../../node_modules/@types/history/PathUtils.d.ts","../../../node_modules/@types/history/index.d.ts","../../../node_modules/@types/html-minifier-terser/index.d.ts","../../../node_modules/@types/http-proxy/index.d.ts","../../../node_modules/i18next/index.d.ts","../../../node_modules/@types/i18next-fs-backend/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json5/index.d.ts","../../../node_modules/@types/keyv/index.d.ts","../../../node_modules/@types/lodash/common/common.d.ts","../../../node_modules/@types/lodash/common/array.d.ts","../../../node_modules/@types/lodash/common/collection.d.ts","../../../node_modules/@types/lodash/common/date.d.ts","../../../node_modules/@types/lodash/common/function.d.ts","../../../node_modules/@types/lodash/common/lang.d.ts","../../../node_modules/@types/lodash/common/math.d.ts","../../../node_modules/@types/lodash/common/number.d.ts","../../../node_modules/@types/lodash/common/object.d.ts","../../../node_modules/@types/lodash/common/seq.d.ts","../../../node_modules/@types/lodash/common/string.d.ts","../../../node_modules/@types/lodash/common/util.d.ts","../../../node_modules/@types/lodash/index.d.ts","../../../node_modules/@types/long/index.d.ts","../../../node_modules/@types/mdast/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/nodemailer/lib/dkim/index.d.ts","../../../node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","../../../node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","../../../node_modules/@types/nodemailer/lib/mailer/index.d.ts","../../../node_modules/@types/nodemailer/lib/mime-node/index.d.ts","../../../node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","../../../node_modules/@types/nodemailer/lib/shared/index.d.ts","../../../node_modules/@types/nodemailer/lib/json-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","../../../node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","../../../node_modules/@types/nodemailer/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/@types/parse5/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/prismjs/index.d.ts","../../../node_modules/@types/prop-types/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/scheduler/tracing.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react-router/index.d.ts","../../../node_modules/@types/react-router-config/index.d.ts","../../../node_modules/@types/react-router-dom/index.d.ts","../../../node_modules/@types/redis-info/index.d.ts","../../../node_modules/@types/retry/index.d.ts","../../../node_modules/@types/sax/index.d.ts","../../../node_modules/@types/scheduler/index.d.ts","../../../node_modules/@types/semver/classes/semver.d.ts","../../../node_modules/@types/semver/functions/parse.d.ts","../../../node_modules/@types/semver/functions/valid.d.ts","../../../node_modules/@types/semver/functions/clean.d.ts","../../../node_modules/@types/semver/functions/inc.d.ts","../../../node_modules/@types/semver/functions/diff.d.ts","../../../node_modules/@types/semver/functions/major.d.ts","../../../node_modules/@types/semver/functions/minor.d.ts","../../../node_modules/@types/semver/functions/patch.d.ts","../../../node_modules/@types/semver/functions/prerelease.d.ts","../../../node_modules/@types/semver/functions/compare.d.ts","../../../node_modules/@types/semver/functions/rcompare.d.ts","../../../node_modules/@types/semver/functions/compare-loose.d.ts","../../../node_modules/@types/semver/functions/compare-build.d.ts","../../../node_modules/@types/semver/functions/sort.d.ts","../../../node_modules/@types/semver/functions/rsort.d.ts","../../../node_modules/@types/semver/functions/gt.d.ts","../../../node_modules/@types/semver/functions/lt.d.ts","../../../node_modules/@types/semver/functions/eq.d.ts","../../../node_modules/@types/semver/functions/neq.d.ts","../../../node_modules/@types/semver/functions/gte.d.ts","../../../node_modules/@types/semver/functions/lte.d.ts","../../../node_modules/@types/semver/functions/cmp.d.ts","../../../node_modules/@types/semver/functions/coerce.d.ts","../../../node_modules/@types/semver/classes/comparator.d.ts","../../../node_modules/@types/semver/classes/range.d.ts","../../../node_modules/@types/semver/functions/satisfies.d.ts","../../../node_modules/@types/semver/ranges/max-satisfying.d.ts","../../../node_modules/@types/semver/ranges/min-satisfying.d.ts","../../../node_modules/@types/semver/ranges/to-comparators.d.ts","../../../node_modules/@types/semver/ranges/min-version.d.ts","../../../node_modules/@types/semver/ranges/valid.d.ts","../../../node_modules/@types/semver/ranges/outside.d.ts","../../../node_modules/@types/semver/ranges/gtr.d.ts","../../../node_modules/@types/semver/ranges/ltr.d.ts","../../../node_modules/@types/semver/ranges/intersects.d.ts","../../../node_modules/@types/semver/ranges/simplify.d.ts","../../../node_modules/@types/semver/ranges/subset.d.ts","../../../node_modules/@types/semver/internals/identifiers.d.ts","../../../node_modules/@types/semver/index.d.ts","../../../node_modules/@types/serve-index/index.d.ts","../../../node_modules/@types/sockjs/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@types/superagent/index.d.ts","../../../node_modules/@types/supertest/index.d.ts","../../../node_modules/@types/validator/lib/isBoolean.d.ts","../../../node_modules/@types/validator/lib/isEmail.d.ts","../../../node_modules/@types/validator/lib/isFQDN.d.ts","../../../node_modules/@types/validator/lib/isIBAN.d.ts","../../../node_modules/@types/validator/lib/isISO31661Alpha2.d.ts","../../../node_modules/@types/validator/lib/isISO4217.d.ts","../../../node_modules/@types/validator/lib/isURL.d.ts","../../../node_modules/@types/validator/lib/isTaxID.d.ts","../../../node_modules/@types/validator/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","impliedFormat":1},{"version":"27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true,"impliedFormat":1},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true,"impliedFormat":1},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true,"impliedFormat":1},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true,"impliedFormat":1},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true,"impliedFormat":1},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true,"impliedFormat":1},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true,"impliedFormat":1},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true,"impliedFormat":1},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"13c7df0f621df902903f6d0c024385acf3d466abda99fa208f340ff95948ba84","impliedFormat":1},{"version":"5fdc76f73665495b07f992ad0be2d8db16cbb9dc7fa4f78c52394b8e61015678","impliedFormat":1},{"version":"ac5c6aefe784ae554ccef97ab165378535dc055402198667b75a4909387e7e8a","impliedFormat":1},{"version":"35b04d2c49afd9ce2742e3aeb54996ef3938101b656de07595bbac71a6ad3264","impliedFormat":1},{"version":"fcf764882c18b958c2a487ad1093d6c9630df63f1e90995b157fe052e9fcc632","impliedFormat":1},{"version":"92ebc3261b20037c4e078cd3d26bccedb719b3eec653925e103b6ced4a936c0d","impliedFormat":1},{"version":"09281df25923a9c185d228d64dc7df00c20bbeb939d097792a9be48dd459ba84","impliedFormat":1},{"version":"09ead3c1c5fa27523924f52730691a7e4e6caa925374f23037e17e84940319be","impliedFormat":1},{"version":"7c6ad54ea23ada6d5573084dd2cc7a4e5850245ec6e39bd3af6a09572cef6ff4","impliedFormat":1},{"version":"31573cbc2e73e351a7c7f65ef1b98500e0370feea1fd0d542e8e25ca89acdffa","impliedFormat":1},{"version":"4db3355a7ec7c08b53f649f1cb202940d296a3664edc636da349f778be092a58","impliedFormat":1},{"version":"b181ff38cfb4c79fb7aa7ef163c06e84fe5b0c3b7a286848a0eaa5b2ec38c706","impliedFormat":1},{"version":"a8c65d6931f57824f95012e902b3c4aaed39aa655183d13a7f7487dcb1bcbf00","impliedFormat":1},{"version":"9a5cece9b6895a117590afa088b6b91db167e25b00e5de1cb5885898fad0a270","impliedFormat":1},{"version":"4d567f85f7734b209da4129603c0ceb307209d9de0e4abdae83ba2916032ce29","impliedFormat":1},{"version":"f30c3003055e769101fba9f2a196d33ef8a61100a4bd553383e35ec3afd97cd1","impliedFormat":1},{"version":"088c5271f0f9a316acfaa4d62e09ae333ac7756b5eb8c7e4be82d9324ebca3a7","impliedFormat":1},{"version":"daccf8e3adc587b94fa66367cab7c1d2380165d90139c09394f7003d736c4b67","impliedFormat":1},{"version":"29ac96666b3a92086e8a704580f5f8437337ad80ef948be324de25637d56b3c4","impliedFormat":1},{"version":"3884455a26771bbc6f010da73045949047b5949fc24881e21fafdca913fb40cf","impliedFormat":1},{"version":"2c757867a2d1c49a365da450bd4dbaf0c5facc7f0434c5ce647a8293e49dc453","impliedFormat":1},{"version":"87a714642be4042162972ed9aa51c52893325e707e1a0343ef6372815f42d4df","impliedFormat":1},{"version":"5d1201e776c3167527653c835035e4ad29cd79e0d6b139aa250ca74899e0741e","impliedFormat":1},{"version":"fd2f8b9665ddb090f4b92885fc596464a77bd537517fd8b6355e3024edd01ed3","impliedFormat":1},{"version":"9acc441d14a127dea0228cd2645203c3285b296f452f723f850dc2941d2b9c7e","impliedFormat":1},{"version":"dc8405dfcfcf77ddfff1cdf02bbc715733618325559d30f228d116b7c3a591f5","impliedFormat":1},{"version":"bac5187f95f7b26f068c22b90693d33a659eb402f15bcc6dd7e1006b534c5105","impliedFormat":1},{"version":"0e7a46e217fb2dbf1058e5abcd5dfe9ea7d7060cbe54d92e0bb56f2aa2b8672d","impliedFormat":1},{"version":"17a3603c479b3ec90e1d0b39112dee575c8127b7148a24144ce8d8593ed2f672","impliedFormat":1},{"version":"2a79737ec344a4e233e1259992eea87f5c218be345fb5f9c9610bd6f5a6a9d8b","impliedFormat":1},{"version":"857864124c3a81507e55dcd7ed8cfa3f0c0f14dcee7acf94ed598cb25526d278","impliedFormat":1},{"version":"d7d0467a410b10bf3e2c27f4b2fc73de27eeb389f84be633f256bf3f0accafac","impliedFormat":1},{"version":"55e5a83c57e75329952d4138a50cf1564ac2dfd0669c2e01fa9f50ee68196ced","impliedFormat":1},{"version":"50b410acd8c96105e69d93826137269413e120758411ba1dbb992b901e6a2e55","impliedFormat":1},{"version":"0d4e5400743b35d420d83f1a33add04e1be352d45c98f2777708ca40cbb525e6","impliedFormat":1},{"version":"a49a99c6fc351fa5491d7b7efa0dc5666f1400b57f2063ed8f362a93f2f98797","impliedFormat":1},{"version":"e4f5face52c9781d20d2127cf405288a8007cf2e15e87574f677916e534e706a","impliedFormat":1},{"version":"892bf5856b242f0769a7a87c05ca17a7f2075450cbaa0ab589b8944b03804a93","impliedFormat":1},{"version":"34bc4ae02c19ebf98cefa8f4505bcb87413a60fd2544d7d4e6193acbc4108dda","impliedFormat":1},{"version":"5eee4649c790eaab36ab3e1aa60c807ce0e8aaf9a025c90fb40e60b5f5684e6c","impliedFormat":1},{"version":"30d6dc9b525dd82df213f2ce4a2aa0b2935b3ae5366ea164f96e6c08f0968ac2","impliedFormat":1},{"version":"ebe7db5bd9df714d7dddaf077a0a5ab6cf33740c1e39ca0274beeb96bc86828c","impliedFormat":1},{"version":"4a091e7847acab6fe0536b507db54b71270d22fe98513728658e446b08941c8e","impliedFormat":1},{"version":"c467f362b3da83f87dff5bae2f330f17c8086eba5f8eb5240b12b049a7f77db5","impliedFormat":1},{"version":"ad42060f3e0f92a294748f19d9490a8a6a980fb40dda0fd4627991d1361862cc","impliedFormat":1},{"version":"ecbfb361d752394a3728d319a93d0a208c5a00960ec1e5763d23b5944a00e35d","impliedFormat":1},{"version":"60a6e14c616a9977e7e0e196977721232e6977952d0324be4fb932a07d1679e1","impliedFormat":1},{"version":"bd76bdc3263ffb0ca3353fb6a525e8d14323768e48b91927f9ba87183d20fff1","impliedFormat":1},{"version":"2d94e74a3f71bbafeab55ec22b10151b89ae85587bc65f00b83344899ee52e2c","impliedFormat":1},{"version":"711789984a100da43d3e498c17ae14d9702f03fa0fc32cb07bd789a405bf4ab6","impliedFormat":1},{"version":"281d01063c2dd246078dd4079bd7827d2680e74cfc19490d3705675022336683","impliedFormat":1},{"version":"1a9cdf3bfd9f257233439cb40238352fe1c6128005290ecabf5c09633d58e1bd","impliedFormat":1},{"version":"f92d1a32779136c5707ea3a9bfcaa66c719598b7221da13d7b4843d60b7cb1ce","impliedFormat":1},{"version":"abc44e24a9e4d448c16be0592efe21c226348f2cabc4a29baaca1a9d20603e48","impliedFormat":1},{"version":"6d6a44413b5561347e604b9136c09074efd84fac96f105b9e1b65ce2e1c4a105","impliedFormat":1},{"version":"0471d30e55be2eca003ccde4240963c61ed191ef664704aa9d714f66518004ae","impliedFormat":1},{"version":"d1a685ef40d9553092a6da3f019344e9555808f8c79cd837a2b1479a89aff86e","impliedFormat":1},{"version":"78febe79c300eb4e36b21a5f92c64b55659f9b1b4fdac3cccb9481b28e2572a2","impliedFormat":1},{"version":"9a0dbf7e661a3dc3d1842bd0fa64e001037e9086b5c6c3d46c34400afb9c8689","impliedFormat":1},{"version":"b8dffdc3b519083310f3405512c60e673170dd0cef15407f65f9e82790091b1a","impliedFormat":1},{"version":"0cf8620ca1bb4e8b07545a3ae165f49db3daf0fd184e435e0eb1aa16ba512174","impliedFormat":1},{"version":"3c72d7ec3a861bfbc632454bf0bfc514aa965ed26ec1f9450108258a3b6430a7","impliedFormat":1},{"version":"024e0a74ebd335b4c675747eee99453b53813d5ff3ad6cbaa81942a4f4ed57da","impliedFormat":1},{"version":"1eee1bcd570bda3524753ec72a47e4b1597d5fc362a6a83ec4bdc3195320f281","impliedFormat":1},{"version":"3416ba78c03a35b340a9f76647353292a656110f5327c2145fec97ff71f61ba6","impliedFormat":1},{"version":"0e0be8210df9c573b64f81f18a1c284c83d72b472abdfc840cf40cc0a1db3465","impliedFormat":1},{"version":"5199370d76f8fcb993ce69295f10a287d633de43a64a78fd5d2a367a31c4b258","impliedFormat":1},{"version":"aae56a4211c19ab565a4377a606ed2ff444264399560aa9f52b308e650880ecb","impliedFormat":1},{"version":"5b717f6f0f351120cdf828e55537e3e61ea96f82a1a160faa5b9ae39a75c6f68","impliedFormat":1},{"version":"083ae29c6fb50d676b29fd5965144fa7950ac4e3ee4fdf57c587bb3194013ae8","impliedFormat":1},{"version":"7c6b13ae7496db0387dea584ed361ed5ad7f9ee3426da3305a1526c4eedf8c5e","impliedFormat":1},{"version":"830bdfdf80f77b0579625d71c7a810cd07650261990cdbf25c4f6797ee883b1b","impliedFormat":1},{"version":"16bb3683a72c89bbc51886628bbd22522148d2aa3615422eba481bcade151df7","impliedFormat":1},{"version":"55fa234a04eacdf253e0b46d72f6e3bd8a044339c43547a29cf3b9f29ccd050d","impliedFormat":1},{"version":"7be205d4105a61ee771ec1563c6003bcdd7e17bd4a69bd43e0f49756f09e2587","impliedFormat":1},{"version":"f7a240307887227c5dafbea0de4e10ec4726f75b95704965853c7101fcd7e741","impliedFormat":1},{"version":"d2312207819e8646ffd59367976ee611f0865c5b1d1518269a005f58eaf1ccf2","impliedFormat":1},{"version":"0e002469c8f37a8eb2cb874bdbddd2099f0fd0b2f8cd8eec879740d1c1fae256","impliedFormat":1},{"version":"20173928a097871e7ce47443e237a9b34c38f80d62e025d831699ea7671458a0","impliedFormat":1},{"version":"d21aceffdb1f9352ca7867c5d31de852de9fb756564f1eb56afeebcb7016444f","impliedFormat":1},{"version":"ae826fd8f6c1c292b6134b449344f2d2ef7af2386b067293396e6f10435d256c","impliedFormat":1},{"version":"f459d3a7885bb253c3ee856df1d803f3c10a0c40026fbba1692706a44c16250b","impliedFormat":1},{"version":"db286b017e13e73c9a4cf03c54110fd59f15f6243450acb6b5c11f318f445446","impliedFormat":1},{"version":"e4ee78d09f1cf85b98ee93c3a7687ba99225c18ab247eb847bbcc2bcaab720f2","impliedFormat":1},{"version":"3e06cb270db9d24be116909e202bb95d8b8f8217d42f9e7fba2fa94a916c50c1","impliedFormat":1},{"version":"828c8fa27ae26629cce25c9cc378198766e6c1966438ad3bd2e52807b5b6cf93","impliedFormat":1},{"version":"1ec43c294985c43b59b796fde2caaa95f53591732a5838f7adba9d8e55706dea","impliedFormat":1},{"version":"4fc9a9e2734a295b7ae8dc298c1c2890eb9c287c36c44f22b1534c03aa36deab","impliedFormat":1},{"version":"ad9008da988f63bb7b2fd85a58ae667cdd8d978536bb630a84b6a694be10a5d0","impliedFormat":1},{"version":"aca83cac8fe43118ecfe54444c2ef2bdb336423ccd862977771e89343f40a4c4","impliedFormat":1},{"version":"0cc1286108470352e586a04ad379421501ad5d548aa2106b831faa4d32d07947","impliedFormat":1},{"version":"890f3f3432ebdd5d189e8d6f7331ec491eaa8509bbc3a4317e2eddc4456be74f","impliedFormat":1},{"version":"4ac4ec0b295bca800f86f2959e9ebfe82f29dcf527d3fa67b677f67af73e89d6","impliedFormat":1},{"version":"e54a2a6f1738dc52e9dbfa3c2735fc13d82e2a525d1b66c3852490becc5f1917","impliedFormat":1},{"version":"a97990e77a23aea39060610aef4b4bb92154d5330ecb0b557324ba4c14a1db41","impliedFormat":1},{"version":"4aabb1f4f45128392bd94b8af72fc8c00dc9d64f8546a5f3461d17200a40d639","impliedFormat":1},{"version":"4888f20319cb26b99def6b5a9cadc99043fa873ad73c7f26c1ef8caff3cb2fb7","impliedFormat":1},{"version":"9214ad4df1a68ca7c523811e56b17cace032fcb206709b113b10305ac95a90c4","impliedFormat":1},{"version":"b90283ab6c36fc580b06cb293629a9b37eaba24e17ff9ae2f0d874a3f3a962a1","impliedFormat":1},{"version":"79129be37db7700e76de4bb0871234a32e30ae918f2ee344fb5b199dcb411a5d","impliedFormat":1},{"version":"3fb726be8191982a491831b5b05e07f1fa559f1fc598e35fd3900e5858fcc87a","impliedFormat":1},{"version":"417ef79fe6efb251f3bb9db0ee97369a5deae34d06bab67ee47652692bb70ebc","impliedFormat":1},{"version":"c1beed12f98c8144b237faf7fffae475c389a09957a751db3e7c76bf0af17a7b","impliedFormat":1},{"version":"ad8b4616cf417549fa0e88803ab8ecdae1e9be932ad21f2e1d33e9fff2697c02","impliedFormat":1},{"version":"1d6184940abe741966bf954c47e84de3f714cb65cc3bd2af3c819819e6443052","impliedFormat":1},{"version":"1133d81507762b29ae29162f46e1569aa5d2724d40b5adc77830f08e6abe1bf8","impliedFormat":1},{"version":"79e7eb72b4d9ca2d268460d35fa7bfe01db96e93659752bd5fc5cbf5c5be8294","impliedFormat":1},{"version":"9e972232b831687462c01ab9d949a53f3b2799a0b9f7825078240d22319f038a","impliedFormat":1},{"version":"2da2b946df1f0ac928ed168d49420401775ce8175bca15addad490544bcde612","impliedFormat":1},{"version":"e4569118b710bac625d6fafb8d8f5181215be7f5e993acb2be203efb03d7de70","impliedFormat":1},{"version":"7c751107fadfdaf95f8c2170a9fd2014602ed256f56a6c006b1e67fdf7d7b6c1","impliedFormat":1},{"version":"cf47e5088715f4db33e782f52c1f3734a979aab732aad111552c1b15452251bc","impliedFormat":1},{"version":"97e8c6779fe4d0221dbe7b6141f9f627a80c106bf7c30364addd5234a40f3368","impliedFormat":1},{"version":"5b851e42eca40d35bd00e169cd382c71b0348120b47bcfcc8a866f16da7fcc7a","impliedFormat":1},{"version":"dc3b172ee27054dbcedcf5007b78c256021db936f6313a9ce9a3ecbb503fd646","impliedFormat":1},{"version":"ac65f04c2df0218cb8e54f012745cbfcc3c0e67c1f6b1e557d88842bbb72e2db","impliedFormat":1},{"version":"cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","impliedFormat":1},{"version":"a2e86df4db576d80704e25293cec6f20fc6101a11f4747440e2eef58fb3c860c","impliedFormat":1},{"version":"93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","impliedFormat":1},{"version":"6704f0b54df85640baaeebd86c9d4a1dbb661d5a4d57a75bc84162f562f6531d","impliedFormat":1},{"version":"9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","impliedFormat":1},{"version":"587f13f1e8157bd8cec0adda0de4ef558bb8573daa9d518d1e2af38e87ecc91f","impliedFormat":1},{"version":"a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a","impliedFormat":1},{"version":"bce910d9164785c9f0d4dcea4be359f5f92130c7c7833dea6138ab1db310a1f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a435e0c814f58f23e9a0979045ec0ef5909aac95a70986e8bcce30c27dff228","impliedFormat":1},{"version":"c81c51f43e343b6d89114b17341fb9d381c4ccbb25e0ee77532376052c801ba7","affectsGlobalScope":true,"impliedFormat":1},{"version":"db71be322f07f769200108aa19b79a75dd19a187c9dca2a30c4537b233aa2863","impliedFormat":1},{"version":"57135ce61976a8b1dadd01bb412406d1805b90db6e8ecb726d0d78e0b5f76050","impliedFormat":1},{"version":"49479e21a040c0177d1b1bc05a124c0383df7a08a0726ad4d9457619642e875a","affectsGlobalScope":true,"impliedFormat":1},{"version":"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","impliedFormat":1},{"version":"f302f3a47d7758f67f2afc753b9375d6504dde05d2e6ecdb1df50abbb131fc89","impliedFormat":1},{"version":"3690133deae19c8127c5505fcb67b04bdc9eb053796008538a9b9abbb70d85aa","impliedFormat":1},{"version":"5b1c0a23f464f894e7c2b2b6c56df7b9afa60ed48c5345f8618d389a636b2108","impliedFormat":1},{"version":"be2b092f2765222757c6441b86c53a5ea8dfed47bbc43eab4c5fe37942c866b3","impliedFormat":1},{"version":"8e6b05abc98adba15e1ac78e137c64576c74002e301d682e66feb77a23907ab8","impliedFormat":1},{"version":"1ca735bb3d407b2af4fbee7665f3a0a83be52168c728cc209755060ba7ed67bd","impliedFormat":1},{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true,"impliedFormat":1},{"version":"b85c02e14ecb2a873dad5a1de72319b265160ba48f1b83661aeb3bba1366c1bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a2ba0c9af860ac3e77b35ed01fd96d15986f17aa22fe40f188ae556fb1070df","impliedFormat":1},{"version":"fc3764040518a1008dd04bdc80964591b566b896283e00df85c95851c1f46237","impliedFormat":1},{"version":"55709608060f77965c270ac10ac646286589f1bd1cb174fff1778a2dd9a7ef31","impliedFormat":1},{"version":"790623a47c5eda62910098884ecb154dc0e5f3a23fc36c1bfb3b5b9ed44e2c2d","impliedFormat":1},{"version":"42b40e40f2a358cda332456214fad311e1806a6abf3cebaaac72496e07556642","impliedFormat":1},{"version":"354612fe1d49ecc9551ea3a27d94eef2887b64ef4a71f72ca444efe0f2f0ba80","impliedFormat":1},{"version":"ac0c77cd7db52b3c278bdd1452ce754014835493d05b84535f46854fdc2063b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9f36877501f2ce0e276e993c93cd2cf325e78d0409ec4612b1eb9d6a537e60b","impliedFormat":1},{"version":"5e2b91328a540a0933ab5c2203f4358918e6f0fe7505d22840a891a6117735f1","impliedFormat":1},{"version":"3abc3512fa04aa0230f59ea1019311fd8667bd935d28306311dccc8b17e79d5d","impliedFormat":1},{"version":"14a50dafe3f45713f7f27cb6320dff07c6ac31678f07959c2134260061bf91ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"19da7150ca062323b1db6311a6ef058c9b0a39cc64d836b5e9b75d301869653b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1349077576abb41f0e9c78ec30762ff75b710208aff77f5fdcc6a8c8ce6289dd","impliedFormat":1},{"version":"e2ce82603102b5c0563f59fb40314cc1ff95a4d521a66ad14146e130ea80d89c","impliedFormat":1},{"version":"a3e0395220255a350aa9c6d56f882bfcb5b85c19fddf5419ec822cf22246a26d","impliedFormat":1},{"version":"c27b01e8ddff5cd280711af5e13aecd9a3228d1c256ea797dd64f8fdec5f7df5","impliedFormat":1},{"version":"898840e876dfd21843db9f2aa6ae38ba2eab550eb780ff62b894b9fbfebfae6b","impliedFormat":1},{"version":"0cab4d7d4edc40cd3af9eea7c3ed6d1016910c0954c49c4297e479bf3822a625","impliedFormat":1},{"version":"1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","impliedFormat":1},{"version":"785e5be57d4f20f290a20e7b0c6263f6c57fd6e51283050756cef07d6d651c68","impliedFormat":1},{"version":"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","impliedFormat":1},{"version":"164deb2409ac5f4da3cd139dbcee7f7d66753d90363a4d7e2db8d8874f272270","impliedFormat":1},{"version":"ffc62d73b4fa10ca8c59f8802df88efefe447025730a24ee977b60adedc5bf37","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab294c4b7279318ee2a8fdf681305457ecc05970c94108d304933f18823eeac1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ad08154d9602429522cac965a715fde27d421d69b24756c5d291877dda75353e","impliedFormat":1},{"version":"5bc85813bfcb6907cc3a960fec8734a29d7884e0e372515147720c5991b8bc22","impliedFormat":1},{"version":"812b25f798033c202baedf386a1ccc41f9191b122f089bffd10fdccce99fba11","impliedFormat":1},{"version":"993325544790073f77e945bee046d53988c0bc3ac5695c9cf8098166feb82661","impliedFormat":1},{"version":"75dd741ca6a6c8d2437a6ca8349b64b816421dbf9fe82dd026afaba965576962","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e08c360c9b5961ecb0537b703e253842b3ded53151ee07024148219b61a8baf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2ce2210032ccaff7710e2abf6a722e62c54960458e73e356b6a365c93ab6ca66","impliedFormat":1},{"version":"92db194ef7d208d5e4b6242a3434573fd142a621ff996d84cc9dbba3553277d0","impliedFormat":1},{"version":"16a3080e885ed52d4017c902227a8d0d8daf723d062bec9e45627c6fdcd6699b","impliedFormat":1},{"version":"0bd9543cd8fc0959c76fb8f4f5a26626c2ed62ef4be98fd857bce268066db0a2","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ca6858a0cbcd74d7db72d7b14c5360a928d1d16748a55ecfa6bfaff8b83071b","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebf3434b09c527078aa74139ff367fffa64fea32a01d6c06fb0a69b0ecadf43e","impliedFormat":1},{"version":"6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","impliedFormat":1},{"version":"afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","impliedFormat":1},{"version":"d78e5898c8de5e0f934eee83f680262de005caa268d137101b833fd932f95e07","impliedFormat":1},{"version":"92edb6e257fa64d3baae647490e041912684f5dc1f243d0aedd60b4b383ff50b","impliedFormat":1},{"version":"cab425b5559edac18327eb2c3c0f47e7e9f71b667290b7689faafd28aac69eae","impliedFormat":1},{"version":"3cfb0cb51cc2c2e1b313d7c4df04dbf7e5bda0a133c6b309bf6af77cf614b971","impliedFormat":1},{"version":"f992cd6cc0bcbaa4e6c810468c90f2d8595f8c6c3cf050c806397d3de8585562","impliedFormat":1},{"version":"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","impliedFormat":1},{"version":"aad5ffa61406b8e19524738fcf0e6fda8b3485bba98626268fdf252d1b2b630a","impliedFormat":1},{"version":"16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","impliedFormat":1},{"version":"ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc","impliedFormat":1},{"version":"352fc8497a30bc806d7defa0043d85802e5f35a7688731ee9a21456f5cb32a94","affectsGlobalScope":true,"impliedFormat":1},{"version":"9c230a07d657b3c65ad79e819b0c362a8ebcc0730f9a3d552a26ea632e2bfd53","impliedFormat":1},{"version":"8d48b8f8a377ade8dd1f000625bc276eea067f2529cc9cafdf082d17142107d6","impliedFormat":1},{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true,"impliedFormat":1},{"version":"bee89e1eb6425eb49894f3f25e4562dc2564e84e5aa7610b7e13d8ecddf8f5db","impliedFormat":1},{"version":"dca41e86e89dfb2e85e6935260250f02eb6683b86c2fa16bec729ddd1bcd9b4b","impliedFormat":1},{"version":"38130105639567286970d255e8f246dea9518995a8061208bfd728dfa57bb9c6","impliedFormat":1},{"version":"e050a0afcdbb269720a900c85076d18e0c1ab73e580202a2bf6964978181222a","impliedFormat":1},{"version":"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","impliedFormat":1},{"version":"951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","impliedFormat":1},{"version":"f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","impliedFormat":1},{"version":"f7a9cb83c8fbc081a8b605880d191e0d0527cde2c1b2b2b623beca8f0203a2cd","impliedFormat":1},{"version":"43cdd474c5aa3340da4816bb8f1ae7f3b1bcf9e70d997afc36a0f2c432378c84","impliedFormat":1},{"version":"bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","impliedFormat":1},{"version":"cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","impliedFormat":1},{"version":"3d2cd8f3047fff04a71e7037a6a4cb9f4accb28dbd8c0d83164d414811025af0","impliedFormat":1},{"version":"271cde49dfd9b398ccc91bb3aaa43854cf76f4d14e10fed91cbac649aa6cbc63","affectsGlobalScope":true,"impliedFormat":1},{"version":"2bcecd31f1b4281710c666843fc55133a0ee25b143e59f35f49c62e168123f4b","impliedFormat":1},{"version":"a6273756fa05f794b64fe1aff45f4371d444f51ed0257f9364a8b25f3501915d","impliedFormat":1},{"version":"9c4e644fe9bf08d93c93bd892705842189fe345163f8896849d5964d21b56b78","impliedFormat":1},{"version":"25d91fb9ed77a828cc6c7a863236fb712dafcd52f816eec481bd0c1f589f4404","impliedFormat":1},{"version":"4cd14cea22eed1bfb0dc76183e56989f897ac5b14c0e2a819e5162eafdcfe243","impliedFormat":1},{"version":"8d32432f68ca4ce93ad717823976f2db2add94c70c19602bf87ee67fe51df48b","impliedFormat":1},{"version":"ee65fe452abe1309389c5f50710f24114e08a302d40708101c4aa950a2a7d044","impliedFormat":1},{"version":"1d96568a72657f762763c920d3804868db48d638abd87ddcd82bcb200ef9625c","impliedFormat":1},{"version":"c1a660a90d6565c602fa458f53849140c9008b7000ce8823443a2b1ae9ca46a3","impliedFormat":1},{"version":"d0cace556e7818ff62a68da0dc704f6fd44e04c201886d610c186743adced2dd","impliedFormat":1},{"version":"8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","impliedFormat":1},{"version":"7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","impliedFormat":1},{"version":"f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","impliedFormat":1},{"version":"6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"6d969939c4a63f70f2aa49e88da6f64b655c8e6799612807bef41ccff6ea0da9","impliedFormat":1},{"version":"b2fdcc3836d425833af10e536ae5491c34e218bc71870f12a401720f874b6ce4","affectsGlobalScope":true,"impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"fec943fdb3275eb6e006b35e04a8e2e99e9adf3f4b969ddf15315ac7575a93e4","impliedFormat":1},{"version":"675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","impliedFormat":1},{"version":"458111fc89d11d2151277c822dfdc1a28fa5b6b2493cf942e37d4cd0a6ee5f22","impliedFormat":1},{"version":"19c816167e076e7c24f074389c6cf3ed87bdbb917d1ea439ca281f9d26db2439","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"febf0b2de54781102b00f61653b21377390a048fbf5262718c91860d11ff34a6","impliedFormat":1},{"version":"98f9d826db9cd99d27a01a59ee5f22863df00ccf1aaf43e1d7db80ebf716f7c3","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"dcd91d3b697cb650b95db5471189b99815af5db2a1cd28760f91e0b12ede8ed5","impliedFormat":1},{"version":"3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","impliedFormat":1},{"version":"3cf0d343c2276842a5b617f22ba82af6322c7cfe8bb52238ffc0c491a3c21019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"f2eff8704452659641164876c1ef0df4174659ce7311b0665798ea3f556fa9ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","impliedFormat":1},{"version":"5774751340e987a6a9e4a5dcc03ff68a6515adc2b91423e1af2f660fc8f30e81","impliedFormat":1},{"version":"209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","impliedFormat":1},{"version":"6a9c5127096b35264eb7cd21b2417bfc1d42cceca9ba4ce2bb0c3410b7816042","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"626bccaba2f61f03abe558a39501631565389a748bc47dd52b305c80176333c1","impliedFormat":1},{"version":"3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","impliedFormat":1},{"version":"bb654d426b82e0846cd4bd7de91d637039ecdfd63c94447373490178f80846fe","impliedFormat":1},{"version":"db90f54098b237753ac9c846e39cd49aa538dcad07a2e1c68a138f3c0f8e621d","impliedFormat":1},{"version":"92ad68795c32309fb43576cacb38bd2677deeed38f5730dcd4a8c5e65463ae15","impliedFormat":1},{"version":"5564deece7541bc67e5b14dd37baf08eb9c6e9141daf96087c72aca0c95ca175","impliedFormat":1},{"version":"eecb2ea10a1500dcc6bdeff14be1fb43806f63a9b8562e16e1b4fc8baa8dfa8d","impliedFormat":1},{"version":"42afc923a527717a83432adb4a172eb87cabd235d94c9a8c4af2ffe88ab72cd0","impliedFormat":1},{"version":"f3d84d6f83cf131e4db335dc8100898adbeb01dd4cf4e2fe695ab220eac98be4","impliedFormat":1},{"version":"6521aaade4e1d23cbc4b665083b004aeaca23f3347ba2422f88d1828968a0056","impliedFormat":1},{"version":"e79130cf2ba010f2b79747bf43b086252ad041b130768331a1144c0a86185877","impliedFormat":1},{"version":"e9709ed827c40789c669736fc78e2ab603605e8e81325d1e6d7a5eb451810dd0","impliedFormat":1},{"version":"dafce7a7b279977940b6b4b50017625e4f922f73094433d2875994bdc0b27e87","impliedFormat":1},{"version":"6fc76efbb61d3336833ef44ff3f37552667f26c2a73b368f3b4b259f19f2c234","impliedFormat":1},{"version":"479496e5bb48f2f5e981ef646665bc09fd9ab080e86e9ea882ca4369411604af","impliedFormat":1},{"version":"6c559dee3c6251c261b67df08e01d4cbc89cbd7a63300150c636705733cebfff","impliedFormat":1},{"version":"6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","impliedFormat":1},{"version":"2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","impliedFormat":1},{"version":"c555dd691dd05955e99cd93dd99c685a65e5287813ccb5e6bfde951183248e26","impliedFormat":1},{"version":"d88a5e779faf033be3d52142a04fbe1cb96009868e3bbdd296b2bc6c59e06c0e","impliedFormat":1},{"version":"6484309596f594ae824513336bd2a2e04a1902b06bb149fa904f5cae5fbe5c50","impliedFormat":1},{"version":"6a386ff939f180ae8ef064699d8b7b6e62bc2731a62d7fbf5e02589383838dea","impliedFormat":1},{"version":"549df62b64a71004aee17685b445a8289013daf96246ce4d9b087d13d7a27a61","affectsGlobalScope":true,"impliedFormat":1},{"version":"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","impliedFormat":1},{"version":"f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5","impliedFormat":1},{"version":"74a5b16408f6c27e335559a4eb4b640b7cacc5d4839b659bf262c5e97b6c2b5d","affectsGlobalScope":true,"impliedFormat":1},{"version":"1d4bc73751d6ec6285331d1ca378904f55d9e5e8aeaa69bc45b675c3df83e778","impliedFormat":1},{"version":"2ffcb0c75e294706a4d425ee3ead87826a4cda729fa901c6c605e68948adaf55","impliedFormat":1},{"version":"8017277c3843df85296d8730f9edf097d68d7d5f9bc9d8124fcacf17ecfd487e","impliedFormat":1},{"version":"a49108f8acab6461c1fa16f7344476622b149cd27e0f02eb34d57e5aa297a8f4","impliedFormat":1},{"version":"199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","impliedFormat":1},{"version":"8b3ba0006858bfefa8fd045d446377e0fb1738baa819a1f7e4a520644a0dc131","impliedFormat":1},{"version":"7ccce4adb23a87a044c257685613126b47160f6975b224cea5f6af36c7f37514","impliedFormat":1},{"version":"2b93035328f7778d200252681c1d86285d501ed424825a18f81e4c3028aa51d9","impliedFormat":1},{"version":"2ac9c8332c5f8510b8bdd571f8271e0f39b0577714d5e95c1e79a12b2616f069","impliedFormat":1},{"version":"42c21aa963e7b86fa00801d96e88b36803188018d5ad91db2a9101bccd40b3ff","impliedFormat":1},{"version":"d31eb848cdebb4c55b4893b335a7c0cca95ad66dee13cbb7d0893810c0a9c301","impliedFormat":1},{"version":"b9f96255e1048ed2ea33ec553122716f0e57fc1c3ad778e9aa15f5b46547bd23","impliedFormat":1},{"version":"7a9e0a564fee396cacf706523b5aeed96e04c6b871a8bebefad78499fbffc5bc","impliedFormat":1},{"version":"906c751ef5822ec0dadcea2f0e9db64a33fb4ee926cc9f7efa38afe5d5371b2a","impliedFormat":1},{"version":"5387c049e9702f2d2d7ece1a74836a14b47fbebe9bbeb19f94c580a37c855351","impliedFormat":1},{"version":"c68391fb9efad5d99ff332c65b1606248c4e4a9f1dd9a087204242b56c7126d6","impliedFormat":1},{"version":"e9cf02252d3a0ced987d24845dcb1f11c1be5541f17e5daa44c6de2d18138d0c","impliedFormat":1},{"version":"e8b02b879754d85f48489294f99147aeccc352c760d95a6fe2b6e49cd400b2fe","impliedFormat":1},{"version":"9f6908ab3d8a86c68b86e38578afc7095114e66b2fc36a2a96e9252aac3998e0","impliedFormat":1},{"version":"0eedb2344442b143ddcd788f87096961cd8572b64f10b4afc3356aa0460171c6","impliedFormat":1},{"version":"71405cc70f183d029cc5018375f6c35117ffdaf11846c35ebf85ee3956b1b2a6","impliedFormat":1},{"version":"c68baff4d8ba346130e9753cefe2e487a16731bf17e05fdacc81e8c9a26aae9d","impliedFormat":1},{"version":"2cd15528d8bb5d0453aa339b4b52e0696e8b07e790c153831c642c3dea5ac8af","impliedFormat":1},{"version":"479d622e66283ffa9883fbc33e441f7fc928b2277ff30aacbec7b7761b4e9579","impliedFormat":1},{"version":"ade307876dc5ca267ca308d09e737b611505e015c535863f22420a11fffc1c54","impliedFormat":1},{"version":"f8cdefa3e0dee639eccbe9794b46f90291e5fd3989fcba60d2f08fde56179fb9","impliedFormat":1},{"version":"86c5a62f99aac7053976e317dbe9acb2eaf903aaf3d2e5bb1cafe5c2df7b37a8","impliedFormat":1},{"version":"2b300954ce01a8343866f737656e13243e86e5baef51bd0631b21dcef1f6e954","impliedFormat":1},{"version":"a2d409a9ffd872d6b9d78ead00baa116bbc73cfa959fce9a2f29d3227876b2a1","impliedFormat":1},{"version":"b288936f560cd71f4a6002953290de9ff8dfbfbf37f5a9391be5c83322324898","impliedFormat":1},{"version":"61178a781ef82e0ff54f9430397e71e8f365fc1e3725e0e5346f2de7b0d50dfa","impliedFormat":1},{"version":"6a6ccb37feb3aad32d9be026a3337db195979cd5727a616fc0f557e974101a54","impliedFormat":1},{"version":"c649ea79205c029a02272ef55b7ab14ada0903db26144d2205021f24727ac7a3","impliedFormat":1},{"version":"38e2b02897c6357bbcff729ef84c736727b45cc152abe95a7567caccdfad2a1d","impliedFormat":1},{"version":"d6610ea7e0b1a7686dba062a1e5544dd7d34140f4545305b7c6afaebfb348341","impliedFormat":1},{"version":"3dee35db743bdba2c8d19aece7ac049bde6fa587e195d86547c882784e6ba34c","impliedFormat":1},{"version":"b15e55c5fa977c2f25ca0b1db52cfa2d1fd4bf0baf90a8b90d4a7678ca462ff1","impliedFormat":1},{"version":"f41d30972724714763a2698ae949fbc463afb203b5fa7c4ad7e4de0871129a17","impliedFormat":1},{"version":"843dd7b6a7c6269fd43827303f5cbe65c1fecabc30b4670a50d5a15d57daeeb9","impliedFormat":1},{"version":"f06d8b8567ee9fd799bf7f806efe93b67683ef24f4dea5b23ef12edff4434d9d","impliedFormat":1},{"version":"6017384f697ff38bc3ef6a546df5b230c3c31329db84cbfe686c83bec011e2b2","impliedFormat":1},{"version":"e1a5b30d9248549ca0c0bb1d653bafae20c64c4aa5928cc4cd3017b55c2177b0","impliedFormat":1},{"version":"a593632d5878f17295bd53e1c77f27bf4c15212822f764a2bfc1702f4b413fa0","impliedFormat":1},{"version":"a868a534ba1c2ca9060b8a13b0ffbbbf78b4be7b0ff80d8c75b02773f7192c29","impliedFormat":1},{"version":"da7545aba8f54a50fde23e2ede00158dc8112560d934cee58098dfb03aae9b9d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"a1a261624efb3a00ff346b13580f70f3463b8cdcc58b60f5793ff11785d52cab","impliedFormat":1},{"version":"acebfe99678cf7cddcddc3435222cf132052b1226e902daac9fbb495c321a9b5","impliedFormat":1},{"version":"82b1f9a6eefef7386aebe22ac49f23b806421e82dbf35c6e5b7132d79e4165da","impliedFormat":1},{"version":"b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"214f291323316651737db8ca0db4c14ae568a429e59fc5b4f364dd80fe72d5f6","impliedFormat":1},{"version":"76232dbb982272b182a76ad8745a9b02724dc9896e2328ce360e2c56c64c9778","impliedFormat":1},{"version":"ecb3f7a39c52816137f9a87278225ce7f522c6e493c46bb2fff2c2cc2ba0e2d4","impliedFormat":1},{"version":"31d26ca7224d3ef8d3d5e1e95aefba1c841dcb94edcdf9aaa23c7de437f0e4a2","impliedFormat":1},{"version":"c5b3da7e2ecd5968f723282aba49d8d1a2e178d0afe48998dad93f81e2724091","impliedFormat":1},{"version":"3e4ba3ecd2f4b94e22c38ff57b944e43591cac6fd4d83e3f58157f04524d8da6","impliedFormat":1},{"version":"4b8e57cbc17c20af9d4824447c89f0749f3aa1ec7267e4b982c95b1e2a01fab7","impliedFormat":1},{"version":"37d6dd79947b8c3f5eb759bd092d7c9b844d3655e547d16c3f2138d8d637674e","impliedFormat":1},{"version":"b027979b9e4e83be23db2d81e01d973b91fefe677feb93823486a83762f65012","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"8172c4921b17572f5a5dc50146b23a8200bb0f127bde20b015e1dc55b684703f","impliedFormat":1},{"version":"2dd1d4cea14cead7a7fc9eec8f40593089dff0de8c0199458446143c9b8c4ea9","impliedFormat":1},{"version":"70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","impliedFormat":1},{"version":"e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750","impliedFormat":1}],"root":[[158,162]],"options":{"allowSyntheticDefaultImports":true,"declaration":false,"declarationMap":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"outDir":"./","removeComments":false,"skipLibCheck":true,"sourceMap":true,"strict":true,"target":8},"fileIdsList":[[164,216],[216],[216,267],[164,165,166,167,168,216],[164,166,216],[189,216,223,224],[180,216,223],[186,189,215,216,223,227,228,229],[215,216,223,235],[189,216,223],[216,239,241],[216,238,239,240],[186,189,216,223,232,233,234],[216,225,234,235,246],[187,216,223],[216,249],[216,257],[216,251,257],[216,252,253,254,255,256],[186,189,191,194,204,215,216,223],[216,260],[216,262],[216,263],[216,269,272],[186,216,223],[216,276,278,279,280,281,282,283,284,285,286,287,288],[216,276,277,279,280,281,282,283,284,285,286,287,288],[216,277,278,279,280,281,282,283,284,285,286,287,288],[216,276,277,278,280,281,282,283,284,285,286,287,288],[216,276,277,278,279,281,282,283,284,285,286,287,288],[216,276,277,278,279,280,282,283,284,285,286,287,288],[216,276,277,278,279,280,281,283,284,285,286,287,288],[216,276,277,278,279,280,281,282,284,285,286,287,288],[216,276,277,278,279,280,281,282,283,285,286,287,288],[216,276,277,278,279,280,281,282,283,284,286,287,288],[216,276,277,278,279,280,281,282,283,284,285,287,288],[216,276,277,278,279,280,281,282,283,284,285,286,288],[216,276,277,278,279,280,281,282,283,284,285,286,287],[189,215,216,223,293,294],[189,204,216,223],[170,216],[173,216],[174,179,207,216],[175,186,187,194,204,215,216],[175,176,186,194,216],[177,216],[178,179,187,195,216],[179,204,212,216],[180,182,186,194,216],[181,216],[182,183,216],[186,216],[184,186,216],[186,187,188,204,215,216],[186,187,188,201,204,207,216],[216,220],[182,186,189,194,204,215,216],[186,187,189,190,194,204,212,215,216],[189,191,204,212,215,216],[170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222],[186,192,216],[193,215,216],[182,186,194,204,216],[195,216],[196,216],[173,197,216],[198,214,216,220],[199,216],[200,216],[186,201,202,216],[201,203,216,218],[174,186,204,205,206,207,216],[174,204,206,216],[204,205,216],[207,216],[208,216],[204,216],[186,210,211,216],[210,211,216],[179,194,204,212,216],[213,216],[194,214,216],[174,189,200,215,216],[179,216],[204,216,217],[216,218],[216,219],[174,179,186,188,197,204,215,216,218,220],[204,216,221],[216,223,297,299,303,304,305,306,307,308],[204,216,223],[186,216,223,297,299,300,302,309],[186,194,204,215,216,223,296,297,298,300,301,302,309],[204,216,223,299,300],[204,216,223,299,301],[216,223,297,299,300,302,309],[204,216,223,301],[186,194,204,212,216,223,298,300,302],[186,216,223,297,299,300,301,302,309],[186,204,216,223,297,298,299,300,301,302,309],[186,204,216,223,297,299,300,302,309],[189,204,216,223,302],[216,257,319,320],[216,257,319],[216,315,316,317,318],[216,327,366],[216,327,351,366],[216,366],[216,327],[216,327,352,366],[216,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365],[216,352,366],[187,204,216,223,231],[187,216,247],[189,216,223,244,245],[216,244],[216,243],[174,187,189,204,216,223,237],[216,371],[216,373,374,375,376,377,378,379,380],[216,381],[186,189,191,204,212,215,216,221,223],[216,383],[173,216,223,265,271],[216,269],[216,266,270],[216,268],[54,98,108,119,122,216],[54,120,127,216],[54,79,80,216],[81,82,83,84,85,86,87,88,89,90,91,216],[54,79,216],[79,81,82,83,84,85,86,87,88,89,90,91,92,216],[93,98,99,120,122,124,125,128,216],[54,123,216],[54,98,122,216],[54,99,120,122,125,216],[54,123,124,216],[54,62,216],[126,216],[54,100,105,118,120,216],[54,98,99,100,105,118,120,216],[54,98,100,105,118,120,216],[101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,119,121,216],[54,93,98,99,100,101,102,103,104,118,120,216],[100,101,102,103,104,106,107,109,110,111,112,113,114,115,116,117,118,119,121,216],[54,94,216],[95,96,122,216],[94,216],[54,93,99,122,216],[95,96,97,216],[49,216],[50,51,52,53,216],[49,51,216],[50,53,216],[49,66,216],[49,67,216],[57,58,59,63,67,68,69,70,71,72,73,216],[49,57,216],[54,216],[49,57,64,65,67,216],[49,54,57,216],[49,57,58,216],[57,62,216],[49,54,55,216],[54,55,56,216],[75,137,216],[138,139,140,141,142,216],[75,216],[143,144,145,146,216],[137,216],[132,216],[148,149,150,151,152,153,216],[75,78,137,147,154,156,216],[132,133,216],[133,216],[75,77,130,131,132,216],[75,76,78,130,131,133,216],[75,77,132,133,216],[129,216],[75,130,216],[76,77,130,131,132,133,134,135,136,216],[54,74,216],[155,216],[60,61,216],[161,216],[157,158,216],[159,160,216],[157,216]],"referencedMap":[[166,1],[164,2],[265,2],[268,3],[267,2],[163,2],[169,4],[165,1],[167,5],[168,1],[225,6],[226,7],[230,8],[236,9],[224,10],[237,2],[242,11],[238,2],[241,12],[239,2],[235,13],[247,14],[248,15],[250,16],[251,2],[255,17],[256,17],[252,18],[253,18],[254,18],[257,19],[258,2],[228,2],[245,2],[259,20],[261,21],[262,2],[263,22],[264,23],[273,24],[240,2],[274,2],[275,25],[277,26],[278,27],[276,28],[279,29],[280,30],[281,31],[282,32],[283,33],[284,34],[285,35],[286,36],[287,37],[288,38],[289,2],[290,16],[231,2],[291,2],[292,2],[294,2],[295,39],[293,40],[170,41],[171,41],[173,42],[174,43],[175,44],[176,45],[177,46],[178,47],[179,48],[180,49],[181,50],[182,51],[183,51],[185,52],[184,53],[186,52],[187,54],[188,55],[172,56],[222,2],[189,57],[190,58],[191,59],[223,60],[192,61],[193,62],[194,63],[195,64],[196,65],[197,66],[198,67],[199,68],[200,69],[201,70],[202,70],[203,71],[204,72],[206,73],[205,74],[207,75],[208,76],[209,77],[210,78],[211,79],[212,80],[213,81],[214,82],[215,83],[216,84],[217,85],[218,86],[219,87],[220,88],[221,89],[309,90],[296,91],[303,92],[299,93],[297,94],[300,95],[304,96],[305,92],[302,97],[301,98],[306,99],[307,100],[308,101],[298,102],[310,2],[311,2],[312,2],[313,2],[314,2],[315,2],[234,2],[233,2],[321,103],[322,103],[320,104],[316,2],[319,105],[323,2],[229,40],[324,2],[325,91],[326,2],[318,2],[351,106],[352,107],[327,108],[330,108],[349,106],[350,106],[340,106],[339,109],[337,106],[332,106],[345,106],[343,106],[347,106],[331,106],[344,106],[348,106],[333,106],[334,106],[346,106],[328,106],[335,106],[336,106],[338,106],[342,106],[353,110],[341,106],[329,106],[366,111],[365,2],[360,110],[362,112],[361,110],[354,110],[355,110],[357,110],[359,110],[363,112],[364,112],[356,112],[358,112],[232,113],[367,114],[246,115],[243,116],[244,117],[368,10],[369,2],[371,118],[372,119],[249,2],[381,120],[373,121],[374,2],[375,2],[376,2],[377,2],[378,2],[380,2],[379,2],[382,122],[383,2],[384,123],[370,2],[266,2],[317,2],[272,124],[260,2],[270,125],[271,126],[227,52],[269,127],[47,2],[48,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[33,2],[30,2],[31,2],[32,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[8,2],[45,2],[42,2],[43,2],[44,2],[1,2],[46,2],[64,2],[49,2],[120,128],[128,129],[81,130],[82,130],[92,131],[80,132],[79,2],[83,130],[84,130],[85,130],[86,130],[87,130],[88,130],[89,130],[90,130],[91,130],[93,133],[129,134],[124,135],[99,136],[126,137],[125,138],[123,139],[127,140],[121,141],[106,141],[119,141],[107,141],[108,141],[109,141],[110,141],[111,141],[101,142],[112,141],[102,143],[113,141],[103,141],[118,144],[105,145],[100,2],[114,141],[115,141],[104,141],[116,141],[117,141],[122,146],[95,147],[97,148],[96,149],[94,150],[98,151],[50,152],[54,153],[51,2],[52,154],[53,155],[73,2],[69,152],[67,156],[68,157],[71,152],[74,158],[72,159],[65,160],[66,161],[58,162],[59,163],[63,164],[56,165],[57,166],[55,152],[70,2],[139,2],[141,167],[138,167],[143,168],[140,169],[142,167],[144,169],[147,170],[145,169],[146,169],[150,171],[151,172],[148,2],[152,2],[149,167],[154,173],[153,2],[157,174],[78,2],[76,169],[134,175],[135,176],[133,177],[77,160],[132,178],[136,179],[130,180],[131,181],[137,182],[75,183],[156,184],[155,2],[60,160],[62,185],[61,2],[162,186],[159,187],[160,187],[161,188],[158,189]],"exportedModulesMap":[[166,1],[164,2],[265,2],[268,3],[267,2],[163,2],[169,4],[165,1],[167,5],[168,1],[225,6],[226,7],[230,8],[236,9],[224,10],[237,2],[242,11],[238,2],[241,12],[239,2],[235,13],[247,14],[248,15],[250,16],[251,2],[255,17],[256,17],[252,18],[253,18],[254,18],[257,19],[258,2],[228,2],[245,2],[259,20],[261,21],[262,2],[263,22],[264,23],[273,24],[240,2],[274,2],[275,25],[277,26],[278,27],[276,28],[279,29],[280,30],[281,31],[282,32],[283,33],[284,34],[285,35],[286,36],[287,37],[288,38],[289,2],[290,16],[231,2],[291,2],[292,2],[294,2],[295,39],[293,40],[170,41],[171,41],[173,42],[174,43],[175,44],[176,45],[177,46],[178,47],[179,48],[180,49],[181,50],[182,51],[183,51],[185,52],[184,53],[186,52],[187,54],[188,55],[172,56],[222,2],[189,57],[190,58],[191,59],[223,60],[192,61],[193,62],[194,63],[195,64],[196,65],[197,66],[198,67],[199,68],[200,69],[201,70],[202,70],[203,71],[204,72],[206,73],[205,74],[207,75],[208,76],[209,77],[210,78],[211,79],[212,80],[213,81],[214,82],[215,83],[216,84],[217,85],[218,86],[219,87],[220,88],[221,89],[309,90],[296,91],[303,92],[299,93],[297,94],[300,95],[304,96],[305,92],[302,97],[301,98],[306,99],[307,100],[308,101],[298,102],[310,2],[311,2],[312,2],[313,2],[314,2],[315,2],[234,2],[233,2],[321,103],[322,103],[320,104],[316,2],[319,105],[323,2],[229,40],[324,2],[325,91],[326,2],[318,2],[351,106],[352,107],[327,108],[330,108],[349,106],[350,106],[340,106],[339,109],[337,106],[332,106],[345,106],[343,106],[347,106],[331,106],[344,106],[348,106],[333,106],[334,106],[346,106],[328,106],[335,106],[336,106],[338,106],[342,106],[353,110],[341,106],[329,106],[366,111],[365,2],[360,110],[362,112],[361,110],[354,110],[355,110],[357,110],[359,110],[363,112],[364,112],[356,112],[358,112],[232,113],[367,114],[246,115],[243,116],[244,117],[368,10],[369,2],[371,118],[372,119],[249,2],[381,120],[373,121],[374,2],[375,2],[376,2],[377,2],[378,2],[380,2],[379,2],[382,122],[383,2],[384,123],[370,2],[266,2],[317,2],[272,124],[260,2],[270,125],[271,126],[227,52],[269,127],[47,2],[48,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[4,2],[22,2],[19,2],[20,2],[21,2],[23,2],[24,2],[25,2],[5,2],[26,2],[27,2],[28,2],[29,2],[6,2],[33,2],[30,2],[31,2],[32,2],[34,2],[7,2],[35,2],[40,2],[41,2],[36,2],[37,2],[38,2],[39,2],[8,2],[45,2],[42,2],[43,2],[44,2],[1,2],[46,2],[64,2],[49,2],[120,128],[128,129],[81,130],[82,130],[92,131],[80,132],[79,2],[83,130],[84,130],[85,130],[86,130],[87,130],[88,130],[89,130],[90,130],[91,130],[93,133],[129,134],[124,135],[99,136],[126,137],[125,138],[123,139],[127,140],[121,141],[106,141],[119,141],[107,141],[108,141],[109,141],[110,141],[111,141],[101,142],[112,141],[102,143],[113,141],[103,141],[118,144],[105,145],[100,2],[114,141],[115,141],[104,141],[116,141],[117,141],[122,146],[95,147],[97,148],[96,149],[94,150],[98,151],[50,152],[54,153],[51,2],[52,154],[53,155],[73,2],[69,152],[67,156],[68,157],[71,152],[74,158],[72,159],[65,160],[66,161],[58,162],[59,163],[63,164],[56,165],[57,166],[55,152],[70,2],[139,2],[141,167],[138,167],[143,168],[140,169],[142,167],[144,169],[147,170],[145,169],[146,169],[150,171],[151,172],[148,2],[152,2],[149,167],[154,173],[153,2],[157,174],[78,2],[76,169],[134,175],[135,176],[133,177],[77,160],[132,178],[136,179],[130,180],[131,181],[137,182],[75,183],[156,184],[155,2],[60,160],[62,185],[61,2],[162,186],[159,187],[160,187],[161,188],[158,189]],"semanticDiagnosticsPerFile":[166,164,265,268,267,163,169,165,167,168,225,226,230,236,224,237,242,238,241,239,235,247,248,250,251,255,256,252,253,254,257,258,228,245,259,261,262,263,264,273,240,274,275,277,278,276,279,280,281,282,283,284,285,286,287,288,289,290,231,291,292,294,295,293,170,171,173,174,175,176,177,178,179,180,181,182,183,185,184,186,187,188,172,222,189,190,191,223,192,193,194,195,196,197,198,199,200,201,202,203,204,206,205,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,309,296,303,299,297,300,304,305,302,301,306,307,308,298,310,311,312,313,314,315,234,233,321,322,320,316,319,323,229,324,325,326,318,351,352,327,330,349,350,340,339,337,332,345,343,347,331,344,348,333,334,346,328,335,336,338,342,353,341,329,366,365,360,362,361,354,355,357,359,363,364,356,358,232,367,246,243,244,368,369,371,372,249,381,373,374,375,376,377,378,380,379,382,383,384,370,266,317,272,260,270,271,227,269,47,48,10,9,2,11,12,13,14,15,16,17,18,3,4,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,34,7,35,40,41,36,37,38,39,8,45,42,43,44,1,46,64,49,120,128,81,82,92,80,79,83,84,85,86,87,88,89,90,91,93,129,124,99,126,125,123,127,121,106,119,107,108,109,110,111,101,112,102,113,103,118,105,100,114,115,104,116,117,122,95,97,96,94,98,50,54,51,52,53,73,69,67,68,71,74,72,65,66,58,59,63,56,57,55,70,139,141,138,143,140,142,144,147,145,146,150,151,148,152,149,154,153,157,78,76,134,135,133,77,132,136,130,131,137,75,156,155,60,62,61,162,159,160,161,158]},"version":"5.1.6"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRule = void 0;
4
+ const utils_1 = require("@typescript-eslint/utils");
5
+ exports.createRule = utils_1.ESLintUtils.RuleCreator.withoutDocs;
6
+ //# sourceMappingURL=createRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRule.js","sourceRoot":"","sources":["../../src/utils/createRule.ts"],"names":[],"mappings":";;;AAAA,oDAAuD;AAE1C,QAAA,UAAU,GAAG,mBAAW,CAAC,WAAW,CAAC,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@nest-boot/eslint-plugin",
3
- "version": "5.1.2",
3
+ "version": "5.2.0",
4
4
  "license": "MIT",
5
- "main": "./lib/index.js",
6
- "exports": "./lib/index.js",
5
+ "main": "./dist/index.js",
6
+ "exports": "./dist/index.js",
7
7
  "scripts": {
8
+ "build": "tsc",
9
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
10
+ "dev": "tsc --watch",
8
11
  "lint": "npm-run-all \"lint:*\"",
9
12
  "lint:eslint-docs": "npm-run-all \"update:eslint-docs -- --check\"",
10
13
  "lint:js": "eslint .",
@@ -12,15 +15,14 @@
12
15
  "update:eslint-docs": "eslint-doc-generator"
13
16
  },
14
17
  "dependencies": {
15
- "requireindex": "^1.2.0"
18
+ "@typescript-eslint/utils": "^6.4.0"
16
19
  },
17
20
  "devDependencies": {
18
21
  "eslint": "^8.19.0",
19
22
  "eslint-doc-generator": "^1.0.0",
20
- "eslint-plugin-eslint-plugin": "^5.0.0",
21
- "eslint-plugin-node": "^11.1.0",
22
23
  "mocha": "^10.0.0",
23
- "npm-run-all": "^4.1.5"
24
+ "npm-run-all": "^4.1.5",
25
+ "typescript": "^5.1.6"
24
26
  },
25
27
  "peerDependencies": {
26
28
  "eslint": "^8.0.0"
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ import rules from "./rules";
2
+
3
+ export { rules };
@@ -1,17 +1,12 @@
1
- /**
2
- * @fileoverview 实体字段不能使用可选属性和非空断言
3
- * @author D4rkCr0w
4
- */
5
- "use strict";
1
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
6
2
 
7
- /** @type {import('eslint').Rule.RuleModule} */
8
- module.exports = {
3
+ import { createRule } from "../utils/createRule";
4
+
5
+ export default createRule({
9
6
  meta: {
10
7
  type: "problem",
11
8
  docs: {
12
9
  description: "实体字段不能使用可选属性和非空断言",
13
- recommended: false,
14
- url: null,
15
10
  },
16
11
  fixable: "code",
17
12
  schema: [],
@@ -20,26 +15,33 @@ module.exports = {
20
15
  "实体字段不能使用可选属性和非空断言。",
21
16
  },
22
17
  },
23
-
18
+ defaultOptions: [{}],
24
19
  create(context) {
25
20
  return {
26
21
  ClassDeclaration(node) {
27
- // 检查是否有 @Entity 装饰器
28
22
  if (
29
- node.decorators &&
30
- node.decorators.some(
31
- (decorator) => decorator.expression.callee.name === "Entity",
32
- )
23
+ node.decorators.some((decorator) => {
24
+ return (
25
+ decorator.expression.type === AST_NODE_TYPES.CallExpression &&
26
+ decorator.expression.callee.type === AST_NODE_TYPES.Identifier &&
27
+ decorator.expression.callee.name === "Entity"
28
+ );
29
+ })
33
30
  ) {
34
31
  // 遍历类属性
35
32
  node.body.body.forEach((property) => {
36
33
  // 检查是否有 @Property、@ManyToOne 或 @PrimaryKey 装饰器
37
34
  if (
38
- property.type === "PropertyDefinition" &&
35
+ property.type === AST_NODE_TYPES.PropertyDefinition &&
39
36
  property.decorators &&
40
37
  property.decorators.some((decorator) => {
41
- return ["Property", "ManyToOne", "PrimaryKey"].includes(
42
- decorator.expression.callee.name,
38
+ return (
39
+ decorator.expression.type === AST_NODE_TYPES.CallExpression &&
40
+ decorator.expression.callee.type ===
41
+ AST_NODE_TYPES.Identifier &&
42
+ ["Property", "ManyToOne", "PrimaryKey"].includes(
43
+ decorator.expression.callee.name,
44
+ )
43
45
  );
44
46
  })
45
47
  ) {
@@ -76,4 +78,4 @@ module.exports = {
76
78
  },
77
79
  };
78
80
  },
79
- };
81
+ });
@@ -0,0 +1,112 @@
1
+ import { AST_NODE_TYPES } from "@typescript-eslint/utils";
2
+
3
+ import { createRule } from "../utils/createRule";
4
+
5
+ export default createRule({
6
+ meta: {
7
+ type: "problem",
8
+ docs: {
9
+ description: "实体字段可为空时属性类型",
10
+ },
11
+ fixable: "code",
12
+ schema: [],
13
+ messages: {
14
+ entityPropertyNullable:
15
+ "@Property({ nullable: true }) 属性类型需包含 null。",
16
+ },
17
+ },
18
+ defaultOptions: [{}],
19
+ create(context) {
20
+ return {
21
+ ClassDeclaration(node) {
22
+ // 检查是否有 @Entity 装饰器
23
+ if (
24
+ node.decorators.some((decorator) => {
25
+ return (
26
+ decorator.expression.type === AST_NODE_TYPES.CallExpression &&
27
+ decorator.expression.callee.type === AST_NODE_TYPES.Identifier &&
28
+ decorator.expression.callee.name === "Entity"
29
+ );
30
+ })
31
+ ) {
32
+ // 遍历类属性
33
+ node.body.body.forEach((property) => {
34
+ // 检查是否有 @Property() 装饰器
35
+ if (property.type === AST_NODE_TYPES.PropertyDefinition) {
36
+ const propertyDecorator = property.decorators.find(
37
+ (decorator) => {
38
+ return (
39
+ decorator.expression.type ===
40
+ AST_NODE_TYPES.CallExpression &&
41
+ decorator.expression.callee.type ===
42
+ AST_NODE_TYPES.Identifier &&
43
+ decorator.expression.callee.name === "Property"
44
+ );
45
+ },
46
+ );
47
+
48
+ if (typeof propertyDecorator === "undefined") {
49
+ return;
50
+ }
51
+
52
+ // 检查 @Property() 装饰器 nullable 参数是否为 true
53
+ if (
54
+ propertyDecorator.expression.type ===
55
+ AST_NODE_TYPES.CallExpression &&
56
+ propertyDecorator.expression.arguments[0]?.type ===
57
+ AST_NODE_TYPES.ObjectExpression &&
58
+ propertyDecorator.expression.arguments[0]?.properties?.some(
59
+ (prop) => {
60
+ return (
61
+ prop.type === AST_NODE_TYPES.Property &&
62
+ prop.key.type === AST_NODE_TYPES.Identifier &&
63
+ prop.key.name === "nullable" &&
64
+ prop.value.type === AST_NODE_TYPES.Literal &&
65
+ prop.value.value === true
66
+ );
67
+ },
68
+ )
69
+ ) {
70
+ const typeAnnotation = property.typeAnnotation;
71
+
72
+ if (typeof typeAnnotation === "undefined") {
73
+ return;
74
+ }
75
+
76
+ // 检查属性类型是否包含 null
77
+ if (
78
+ !(
79
+ typeAnnotation.type === AST_NODE_TYPES.TSTypeAnnotation &&
80
+ typeAnnotation.typeAnnotation.type ===
81
+ AST_NODE_TYPES.TSUnionType &&
82
+ typeAnnotation.typeAnnotation.types.some(
83
+ (type) => type.type === AST_NODE_TYPES.TSNullKeyword,
84
+ )
85
+ )
86
+ ) {
87
+ context.report({
88
+ node: property,
89
+ messageId: "entityPropertyNullable",
90
+ fix: (fixer) => {
91
+ const typeAnnotationStart = typeAnnotation.range[0];
92
+ const typeAnnotationEnd = typeAnnotation.range[1];
93
+ const originalType =
94
+ context.sourceCode.getText(typeAnnotation);
95
+
96
+ return fixer.replaceTextRange(
97
+ [typeAnnotationStart, typeAnnotationEnd],
98
+ `${originalType} | null${
99
+ property.value ? "" : " = null"
100
+ }`,
101
+ );
102
+ },
103
+ });
104
+ }
105
+ }
106
+ }
107
+ });
108
+ }
109
+ },
110
+ };
111
+ },
112
+ });
@@ -0,0 +1,8 @@
1
+ import entityPropertyNoOptionalOrNonNullAssertion from "./entity-property-no-optional-or-non-null-assertion";
2
+ import entityPropertyNullable from "./entity-property-nullable";
3
+
4
+ export default {
5
+ "entity-property-no-optional-or-non-null-assertion":
6
+ entityPropertyNoOptionalOrNonNullAssertion,
7
+ "entity-property-nullable": entityPropertyNullable,
8
+ };
@@ -0,0 +1,3 @@
1
+ import { ESLintUtils } from "@typescript-eslint/utils";
2
+
3
+ export const createRule = ESLintUtils.RuleCreator.withoutDocs;
package/tsconfig.json ADDED
@@ -0,0 +1,13 @@
1
+ {
2
+ "extends": "@nest-boot/tsconfig/library.json",
3
+ "include": ["src"],
4
+ "compilerOptions": {
5
+ "module": "commonjs",
6
+ "moduleResolution": "nodenext",
7
+ "target": "ES2021",
8
+ "lib": ["ES2021"],
9
+ "outDir": "./dist",
10
+ "declaration": false,
11
+ "declarationMap": false
12
+ }
13
+ }
@@ -1,31 +0,0 @@
1
- # 实体字段不能使用可选属性和非空断言 (`entity-property-no-optional-or-non-null-assertion`)
2
-
3
- Please describe the origin of the rule here.
4
-
5
- ## Rule Details
6
-
7
- This rule aims to...
8
-
9
- Examples of **incorrect** code for this rule:
10
-
11
- ```js
12
- // fill me in
13
- ```
14
-
15
- Examples of **correct** code for this rule:
16
-
17
- ```js
18
- // fill me in
19
- ```
20
-
21
- ### Options
22
-
23
- If there are any options, describe them here. Otherwise, delete this section.
24
-
25
- ## When Not To Use It
26
-
27
- Give a short description of when it would be appropriate to turn off this rule.
28
-
29
- ## Further Reading
30
-
31
- If there are other links that describe the issue this rule addresses, please include them here in a bulleted list.
@@ -1,31 +0,0 @@
1
- # 实体字段可为空时属性类型 (`entity-property-nullable-type`)
2
-
3
- Please describe the origin of the rule here.
4
-
5
- ## Rule Details
6
-
7
- This rule aims to...
8
-
9
- Examples of **incorrect** code for this rule:
10
-
11
- ```js
12
- // fill me in
13
- ```
14
-
15
- Examples of **correct** code for this rule:
16
-
17
- ```js
18
- // fill me in
19
- ```
20
-
21
- ### Options
22
-
23
- If there are any options, describe them here. Otherwise, delete this section.
24
-
25
- ## When Not To Use It
26
-
27
- Give a short description of when it would be appropriate to turn off this rule.
28
-
29
- ## Further Reading
30
-
31
- If there are other links that describe the issue this rule addresses, please include them here in a bulleted list.
package/lib/index.js DELETED
@@ -1,22 +0,0 @@
1
- /**
2
- * @fileoverview Nest Boot 定制规则
3
- * @author @nest-boot/eslint-plugin
4
- */
5
- "use strict";
6
-
7
- //------------------------------------------------------------------------------
8
- // Requirements
9
- //------------------------------------------------------------------------------
10
-
11
- const requireIndex = require("requireindex");
12
-
13
- //------------------------------------------------------------------------------
14
- // Plugin Definition
15
- //------------------------------------------------------------------------------
16
-
17
-
18
- // import all rules in lib/rules
19
- module.exports.rules = requireIndex(__dirname + "/rules");
20
-
21
-
22
-
@@ -1,91 +0,0 @@
1
- /**
2
- * @fileoverview 实体字段可为空时属性类型
3
- * @author D4rkCr0w
4
- */
5
- "use strict";
6
-
7
- /** @type {import('eslint').Rule.RuleModule} */
8
- module.exports = {
9
- meta: {
10
- type: "problem",
11
- docs: {
12
- description: "实体字段可为空时属性类型",
13
- recommended: false,
14
- url: null,
15
- },
16
- fixable: "code",
17
- schema: [],
18
- messages: {
19
- entityPropertyNullable:
20
- "@Property({ nullable: true }) 属性类型需包含 null。",
21
- },
22
- },
23
-
24
- create(context) {
25
- return {
26
- ClassDeclaration(node) {
27
- // 检查是否有 @Entity 装饰器
28
- if (
29
- node.decorators &&
30
- node.decorators.some(
31
- (decorator) => decorator.expression.callee.name === "Entity",
32
- )
33
- ) {
34
- // 遍历类属性
35
- node.body.body.forEach((property) => {
36
- // 检查是否有 @Property() 装饰器
37
- if (property.type === "PropertyDefinition" && property.decorators) {
38
- const propertyDecorator = property.decorators.find(
39
- (decorator) => decorator.expression.callee.name === "Property",
40
- );
41
-
42
- // 检查 @Property() 装饰器 nullable 参数是否为 true
43
- if (
44
- propertyDecorator &&
45
- propertyDecorator.expression.arguments[0] &&
46
- propertyDecorator.expression.arguments[0].properties &&
47
- propertyDecorator.expression.arguments[0].properties.some(
48
- (prop) =>
49
- prop.key.name === "nullable" &&
50
- prop.value.type === "Literal" &&
51
- prop.value.value === true,
52
- )
53
- ) {
54
- // 检查属性类型是否包含 null
55
- if (
56
- !property.typeAnnotation ||
57
- property.typeAnnotation.typeAnnotation.type !==
58
- "TSUnionType" ||
59
- !property.typeAnnotation.typeAnnotation.types.some(
60
- (type) => type.type === "TSNullKeyword",
61
- )
62
- ) {
63
- context.report({
64
- node: property,
65
- messageId: "entityPropertyNullable",
66
- fix: (fixer) => {
67
- const typeAnnotationStart =
68
- property.typeAnnotation.range[0];
69
- const typeAnnotationEnd =
70
- property.typeAnnotation.range[1];
71
- const originalType = context.sourceCode.getText(
72
- property.typeAnnotation,
73
- );
74
-
75
- return fixer.replaceTextRange(
76
- [typeAnnotationStart, typeAnnotationEnd],
77
- `${originalType} | null${
78
- property.value ? "" : " = null"
79
- }`,
80
- );
81
- },
82
- });
83
- }
84
- }
85
- }
86
- });
87
- }
88
- },
89
- };
90
- },
91
- };
@@ -1,31 +0,0 @@
1
- /**
2
- * @fileoverview 实体字段不能使用可选属性和非空断言
3
- * @author 实体字段不能使用可选属性和非空断言
4
- */
5
- "use strict";
6
-
7
- //------------------------------------------------------------------------------
8
- // Requirements
9
- //------------------------------------------------------------------------------
10
-
11
- const rule = require("../../../lib/rules/entity-property-no-optional-or-non-null-assertion"),
12
- RuleTester = require("eslint").RuleTester;
13
-
14
-
15
- //------------------------------------------------------------------------------
16
- // Tests
17
- //------------------------------------------------------------------------------
18
-
19
- const ruleTester = new RuleTester();
20
- ruleTester.run("entity-property-no-optional-or-non-null-assertion", rule, {
21
- valid: [
22
- // give me some code that won't trigger a warning
23
- ],
24
-
25
- invalid: [
26
- {
27
- code: "",
28
- errors: [{ message: "Fill me in.", type: "Me too" }],
29
- },
30
- ],
31
- });
@@ -1,30 +0,0 @@
1
- /**
2
- * @fileoverview 实体字段可为空时属性类型
3
- * @author 实体字段可为空时属性类型需要包含 null
4
- */
5
- "use strict";
6
-
7
- //------------------------------------------------------------------------------
8
- // Requirements
9
- //------------------------------------------------------------------------------
10
-
11
- const rule = require("../../../lib/rules/entity-property-nullable"),
12
- RuleTester = require("eslint").RuleTester;
13
-
14
- //------------------------------------------------------------------------------
15
- // Tests
16
- //------------------------------------------------------------------------------
17
-
18
- const ruleTester = new RuleTester();
19
- ruleTester.run("entity-property-nullable", rule, {
20
- valid: [
21
- // give me some code that won't trigger a warning
22
- ],
23
-
24
- invalid: [
25
- {
26
- code: "",
27
- errors: [{ message: "Fill me in.", type: "Me too" }],
28
- },
29
- ],
30
- });