eslint-cdk-plugin 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +29 -2
  2. package/dist/index.cjs +783 -0
  3. package/dist/index.d.ts +51 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.mjs +755 -39
  6. package/package.json +22 -9
  7. package/src/index.ts +69 -0
  8. package/src/rules/no-class-in-interface.ts +56 -0
  9. package/src/rules/no-construct-stack-suffix.ts +86 -0
  10. package/src/rules/no-import-private.ts +60 -0
  11. package/src/rules/no-mutable-props-interface.ts +58 -0
  12. package/src/rules/no-mutable-public-fields.ts +75 -0
  13. package/src/rules/no-parent-name-construct-id-match.ts +312 -0
  14. package/src/rules/no-public-class-fields.ts +148 -0
  15. package/src/rules/no-variable-construct-id.ts +101 -0
  16. package/src/rules/pascal-case-construct-id.ts +95 -0
  17. package/src/rules/require-passing-this.ts +51 -0
  18. package/src/types/symbolFlags.ts +6 -0
  19. package/src/utils/convertString.ts +20 -0
  20. package/src/utils/typeCheck.ts +57 -0
  21. package/dist/index.d.mts +0 -31
  22. package/dist/index.mjs.map +0 -1
  23. package/dist/no-class-in-interface-props.d.mts +0 -2
  24. package/dist/no-class-in-interface-props.mjs +0 -45
  25. package/dist/no-class-in-interface-props.mjs.map +0 -1
  26. package/dist/no-construct-stack-suffix.d.mts +0 -2
  27. package/dist/no-construct-stack-suffix.mjs +0 -64
  28. package/dist/no-construct-stack-suffix.mjs.map +0 -1
  29. package/dist/no-import-private.d.mts +0 -2
  30. package/dist/no-import-private.mjs +0 -37
  31. package/dist/no-import-private.mjs.map +0 -1
  32. package/dist/no-mutable-props-interface.d.mts +0 -2
  33. package/dist/no-mutable-props-interface.mjs +0 -44
  34. package/dist/no-mutable-props-interface.mjs.map +0 -1
  35. package/dist/no-mutable-public-fields.d.mts +0 -2
  36. package/dist/no-mutable-public-fields.mjs +0 -57
  37. package/dist/no-mutable-public-fields.mjs.map +0 -1
  38. package/dist/no-parent-name-construct-id-match.d.mts +0 -2
  39. package/dist/no-parent-name-construct-id-match.mjs +0 -218
  40. package/dist/no-parent-name-construct-id-match.mjs.map +0 -1
  41. package/dist/no-public-class-fields.d.mts +0 -2
  42. package/dist/no-public-class-fields.mjs +0 -105
  43. package/dist/no-public-class-fields.mjs.map +0 -1
  44. package/dist/no-variable-construct-id.d.mts +0 -2
  45. package/dist/no-variable-construct-id.mjs +0 -63
  46. package/dist/no-variable-construct-id.mjs.map +0 -1
  47. package/dist/pascal-case-construct-id.d.mts +0 -2
  48. package/dist/pascal-case-construct-id.mjs +0 -62
  49. package/dist/pascal-case-construct-id.mjs.map +0 -1
  50. package/dist/require-passing-this.d.mts +0 -2
  51. package/dist/require-passing-this.mjs +0 -39
  52. package/dist/require-passing-this.mjs.map +0 -1
  53. package/dist/utils/convertString.d.mts +0 -1
  54. package/dist/utils/convertString.mjs +0 -13
  55. package/dist/utils/convertString.mjs.map +0 -1
  56. package/dist/utils/typeCheck.d.mts +0 -3
  57. package/dist/utils/typeCheck.mjs +0 -16
  58. package/dist/utils/typeCheck.mjs.map +0 -1
@@ -1,105 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils, } from "@typescript-eslint/utils";
2
- import { SymbolFlags } from "typescript";
3
- import { isConstructOrStackType } from "./utils/typeCheck.mjs";
4
- export const noPublicClassFields = ESLintUtils.RuleCreator.withoutDocs({
5
- meta: {
6
- type: "problem",
7
- docs: {
8
- description: "Disallow class types in public class fields",
9
- },
10
- messages: {
11
- noPublicClassFields: "Public field '{{ propertyName }}' should not use class type '{{ typeName }}'. Consider using an interface or type alias instead.",
12
- },
13
- schema: [],
14
- },
15
- defaultOptions: [],
16
- create(context) {
17
- const parserServices = ESLintUtils.getParserServices(context);
18
- const typeChecker = parserServices.program.getTypeChecker();
19
- return {
20
- ClassDeclaration(node) {
21
- const type = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(node));
22
- if (!isConstructOrStackType(type)) {
23
- return;
24
- }
25
- validateClassMember({
26
- node,
27
- context,
28
- parserServices,
29
- typeChecker,
30
- });
31
- const constructor = node.body.body.find((member) => member.type === AST_NODE_TYPES.MethodDefinition &&
32
- member.kind === "constructor");
33
- if (!constructor ||
34
- constructor.value.type !== AST_NODE_TYPES.FunctionExpression) {
35
- return;
36
- }
37
- validateConstructorParameterProperty({
38
- constructor,
39
- context,
40
- parserServices,
41
- typeChecker,
42
- });
43
- },
44
- };
45
- },
46
- });
47
- const validateClassMember = ({ node, context, parserServices, typeChecker, }) => {
48
- for (const member of node.body.body) {
49
- if (member.type !== AST_NODE_TYPES.PropertyDefinition ||
50
- member.key.type !== AST_NODE_TYPES.Identifier) {
51
- continue;
52
- }
53
- if (["private", "protected"].includes(member.accessibility ?? "")) {
54
- continue;
55
- }
56
- if (!member.typeAnnotation) {
57
- continue;
58
- }
59
- const tsNode = parserServices.esTreeNodeToTSNodeMap.get(member);
60
- const type = typeChecker.getTypeAtLocation(tsNode);
61
- if (!type.symbol)
62
- continue;
63
- const isClass = type.symbol.flags === SymbolFlags.Class;
64
- if (!isClass)
65
- continue;
66
- context.report({
67
- node: member,
68
- messageId: "noPublicClassFields",
69
- data: {
70
- propertyName: member.key.name,
71
- typeName: type.symbol.name,
72
- },
73
- });
74
- }
75
- };
76
- const validateConstructorParameterProperty = ({ constructor, context, parserServices, typeChecker, }) => {
77
- for (const param of constructor.value.params) {
78
- if (param.type !== AST_NODE_TYPES.TSParameterProperty ||
79
- param.parameter.type !== AST_NODE_TYPES.Identifier) {
80
- continue;
81
- }
82
- if (["private", "protected"].includes(param.accessibility ?? "")) {
83
- continue;
84
- }
85
- if (!param.parameter.typeAnnotation) {
86
- continue;
87
- }
88
- const tsNode = parserServices.esTreeNodeToTSNodeMap.get(param);
89
- const type = typeChecker.getTypeAtLocation(tsNode);
90
- if (!type.symbol)
91
- continue;
92
- const isClass = type.symbol.flags === SymbolFlags.Class;
93
- if (!isClass)
94
- continue;
95
- context.report({
96
- node: param,
97
- messageId: "noPublicClassFields",
98
- data: {
99
- propertyName: param.parameter.name,
100
- typeName: type.symbol.name,
101
- },
102
- });
103
- }
104
- };
105
- //# sourceMappingURL=no-public-class-fields.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-public-class-fields.mjs","sourceRoot":"","sources":["../src/no-public-class-fields.mts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noVariableConstructId: ESLintUtils.RuleModule<"noVariableConstructId", [], unknown, ESLintUtils.RuleListener>;
@@ -1,63 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils, } from "@typescript-eslint/utils";
2
- import { isConstructType } from "./utils/typeCheck.mjs";
3
- export const noVariableConstructId = ESLintUtils.RuleCreator.withoutDocs({
4
- meta: {
5
- type: "problem",
6
- docs: {
7
- description: `Enforce using literal strings for Construct ID.`,
8
- },
9
- messages: {
10
- noVariableConstructId: "Shouldn't use a parameter as a Construct ID.",
11
- },
12
- schema: [],
13
- },
14
- defaultOptions: [],
15
- create(context) {
16
- const parserServices = ESLintUtils.getParserServices(context);
17
- const typeChecker = parserServices.program.getTypeChecker();
18
- return {
19
- NewExpression(node) {
20
- const type = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(node));
21
- if (!isConstructType(type)) {
22
- return;
23
- }
24
- if (node.arguments.length < 2)
25
- return;
26
- validateConstructId(node, context, node);
27
- },
28
- };
29
- },
30
- });
31
- const validateConstructId = (node, context, expression) => {
32
- if (expression.arguments.length < 2 || isInsideLoop(node)) {
33
- return;
34
- }
35
- const secondArg = expression.arguments[1];
36
- if (secondArg.type === AST_NODE_TYPES.Literal &&
37
- typeof secondArg.value === "string") {
38
- return;
39
- }
40
- if (secondArg.type === AST_NODE_TYPES.TemplateLiteral &&
41
- !secondArg.expressions.length) {
42
- return;
43
- }
44
- context.report({
45
- node,
46
- messageId: "noVariableConstructId",
47
- });
48
- };
49
- const isInsideLoop = (node) => {
50
- let current = node.parent;
51
- while (current) {
52
- if (current.type === AST_NODE_TYPES.ForStatement ||
53
- current.type === AST_NODE_TYPES.ForInStatement ||
54
- current.type === AST_NODE_TYPES.ForOfStatement ||
55
- current.type === AST_NODE_TYPES.WhileStatement ||
56
- current.type === AST_NODE_TYPES.DoWhileStatement) {
57
- return true;
58
- }
59
- current = current.parent;
60
- }
61
- return false;
62
- };
63
- //# sourceMappingURL=no-variable-construct-id.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"no-variable-construct-id.mjs","sourceRoot":"","sources":["../src/no-variable-construct-id.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AASxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACvE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,iDAAiD;SAC/D;QACD,QAAQ,EAAE;YACR,qBAAqB,EAAE,8CAA8C;SACtE;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAE5D,OAAO;YACL,aAAa,CAAC,IAAI;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CACxC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/C,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,OAAO;gBACT,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO;gBAEtC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAKH,MAAM,mBAAmB,GAAG,CAC1B,IAAmB,EACnB,OAAgB,EAChB,UAAkC,EAClC,EAAE;IACF,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1D,OAAO;IACT,CAAC;IAGD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAG1C,IACE,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACzC,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EACnC,CAAC;QACD,OAAO;IACT,CAAC;IAGD,IACE,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;QACjD,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAC7B,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC;QACb,IAAI;QACJ,SAAS,EAAE,uBAAuB;KACnC,CAAC,CAAC;AACL,CAAC,CAAC;AAKF,MAAM,YAAY,GAAG,CAAC,IAAmB,EAAW,EAAE;IACpD,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC1B,OAAO,OAAO,EAAE,CAAC;QACf,IACE,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,YAAY;YAC5C,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc;YAC9C,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc;YAC9C,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc;YAC9C,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,EAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const pascalCaseConstructId: ESLintUtils.RuleModule<"pascalCaseConstructId", [], unknown, ESLintUtils.RuleListener>;
@@ -1,62 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils, } from "@typescript-eslint/utils";
2
- import { toPascalCase } from "./utils/convertString.mjs";
3
- import { isConstructOrStackType } from "./utils/typeCheck.mjs";
4
- const QUOTE_TYPE = {
5
- SINGLE: "'",
6
- DOUBLE: '"',
7
- };
8
- export const pascalCaseConstructId = ESLintUtils.RuleCreator.withoutDocs({
9
- meta: {
10
- type: "problem",
11
- docs: {
12
- description: "Enforce PascalCase for Construct ID.",
13
- },
14
- messages: {
15
- pascalCaseConstructId: "Construct ID must be PascalCase.",
16
- },
17
- schema: [],
18
- fixable: "code",
19
- },
20
- defaultOptions: [],
21
- create(context) {
22
- const parserServices = ESLintUtils.getParserServices(context);
23
- const typeChecker = parserServices.program.getTypeChecker();
24
- return {
25
- NewExpression(node) {
26
- const type = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(node));
27
- if (!isConstructOrStackType(type)) {
28
- return;
29
- }
30
- if (node.arguments.length < 2)
31
- return;
32
- validateConstructId(node, context, node);
33
- },
34
- };
35
- },
36
- });
37
- const isPascalCase = (str) => {
38
- return /^[A-Z][a-zA-Z0-9]*$/.test(str);
39
- };
40
- const validateConstructId = (node, context, expression) => {
41
- if (expression.arguments.length < 2)
42
- return;
43
- const secondArg = expression.arguments[1];
44
- if (secondArg.type !== AST_NODE_TYPES.Literal ||
45
- typeof secondArg.value !== "string") {
46
- return;
47
- }
48
- const quote = secondArg.raw?.startsWith('"')
49
- ? QUOTE_TYPE.DOUBLE
50
- : QUOTE_TYPE.SINGLE;
51
- if (!isPascalCase(secondArg.value)) {
52
- context.report({
53
- node,
54
- messageId: "pascalCaseConstructId",
55
- fix: (fixer) => {
56
- const pascalCaseValue = toPascalCase(secondArg.value);
57
- return fixer.replaceText(secondArg, `${quote}${pascalCaseValue}${quote}`);
58
- },
59
- });
60
- }
61
- };
62
- //# sourceMappingURL=pascal-case-construct-id.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pascal-case-construct-id.mjs","sourceRoot":"","sources":["../src/pascal-case-construct-id.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,WAAW,GAGZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;CACH,CAAC;AAaX,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACvE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,sCAAsC;SACpD;QACD,QAAQ,EAAE;YACR,qBAAqB,EAAE,kCAAkC;SAC1D;QACD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,MAAM;KAChB;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5D,OAAO;YACL,aAAa,CAAC,IAAI;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CACxC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/C,CAAC;gBACF,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClC,OAAO;gBACT,CAAC;gBAED,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO;gBAEtC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAOH,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;IACnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC,CAAC;AAKF,MAAM,mBAAmB,GAAG,CAC1B,IAAmB,EACnB,OAAgB,EAChB,UAAkC,EAClC,EAAE;IACF,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAG5C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1C,IACE,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO;QACzC,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EACnC,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAc,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC;QACrD,CAAC,CAAC,UAAU,CAAC,MAAM;QACnB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAEtB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC;YACb,IAAI;YACJ,SAAS,EAAE,uBAAuB;YAClC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,eAAe,GAAG,YAAY,CAAC,SAAS,CAAC,KAAe,CAAC,CAAC;gBAChE,OAAO,KAAK,CAAC,WAAW,CACtB,SAAS,EACT,GAAG,KAAK,GAAG,eAAe,GAAG,KAAK,EAAE,CACrC,CAAC;YACJ,CAAC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const requirePassingThis: ESLintUtils.RuleModule<"requirePassingThis", [], unknown, ESLintUtils.RuleListener>;
@@ -1,39 +0,0 @@
1
- import { AST_NODE_TYPES, ESLintUtils } from "@typescript-eslint/utils";
2
- import { isConstructType } from "./utils/typeCheck.mjs";
3
- export const requirePassingThis = ESLintUtils.RuleCreator.withoutDocs({
4
- meta: {
5
- type: "problem",
6
- docs: {
7
- description: "Require passing `this` in a constructor.",
8
- },
9
- messages: {
10
- requirePassingThis: "Require passing `this` in a constructor.",
11
- },
12
- schema: [],
13
- fixable: "code",
14
- },
15
- defaultOptions: [],
16
- create(context) {
17
- const parserServices = ESLintUtils.getParserServices(context);
18
- const typeChecker = parserServices.program.getTypeChecker();
19
- return {
20
- NewExpression(node) {
21
- const type = typeChecker.getTypeAtLocation(parserServices.esTreeNodeToTSNodeMap.get(node));
22
- if (!isConstructType(type) || !node.arguments.length) {
23
- return;
24
- }
25
- const argument = node.arguments[0];
26
- if (argument.type !== AST_NODE_TYPES.ThisExpression) {
27
- context.report({
28
- node,
29
- messageId: "requirePassingThis",
30
- fix: (fixer) => {
31
- return fixer.replaceText(argument, "this");
32
- },
33
- });
34
- }
35
- },
36
- };
37
- },
38
- });
39
- //# sourceMappingURL=require-passing-this.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"require-passing-this.mjs","sourceRoot":"","sources":["../src/require-passing-this.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC;IACpE,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,0CAA0C;SACxD;QACD,QAAQ,EAAE;YACR,kBAAkB,EAAE,0CAA0C;SAC/D;QACD,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,MAAM;KAChB;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5D,OAAO;YACL,aAAa,CAAC,IAAI;gBAChB,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CACxC,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAC/C,CAAC;gBAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;oBACrD,OAAO;gBACT,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAEnC,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE,CAAC;oBACpD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,oBAAoB;wBAC/B,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;4BACb,OAAO,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAC7C,CAAC;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export declare const toPascalCase: (str: string) => string;
@@ -1,13 +0,0 @@
1
- export const toPascalCase = (str) => {
2
- return str
3
- .split(/[-_\s]/)
4
- .map((word) => {
5
- return word
6
- .replace(/([A-Z])/g, " $1")
7
- .split(/\s+/)
8
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
9
- .join("");
10
- })
11
- .join("");
12
- };
13
- //# sourceMappingURL=convertString.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertString.mjs","sourceRoot":"","sources":["../../src/utils/convertString.mts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;IAClD,OAAO,GAAG;SACP,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAEZ,OAAO,IAAI;aACR,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aAC1B,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CACrE;aACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Type } from "typescript";
2
- export declare const isConstructOrStackType: (type: Type) => boolean;
3
- export declare const isConstructType: (type: Type) => boolean;
@@ -1,16 +0,0 @@
1
- export const isConstructOrStackType = (type) => {
2
- return isTargetSuperClassType(type, ["Construct", "Stack"]);
3
- };
4
- export const isConstructType = (type) => {
5
- return isTargetSuperClassType(type, ["Construct"]);
6
- };
7
- const isTargetSuperClassType = (type, targetSuperClasses) => {
8
- if (!type.symbol)
9
- return false;
10
- if (targetSuperClasses.some((suffix) => type.symbol.name.endsWith(suffix))) {
11
- return true;
12
- }
13
- const baseTypes = type.getBaseTypes() || [];
14
- return baseTypes.some((baseType) => isConstructOrStackType(baseType));
15
- };
16
- //# sourceMappingURL=typeCheck.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typeCheck.mjs","sourceRoot":"","sources":["../../src/utils/typeCheck.mts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAU,EAAW,EAAE;IAC5D,OAAO,sBAAsB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAU,EAAW,EAAE;IACrD,OAAO,sBAAsB,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAQF,MAAM,sBAAsB,GAAG,CAC7B,IAAU,EACV,kBAAoC,EAC3B,EAAE;IACX,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAG/B,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAC5C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC"}