@typescript-eslint/type-utils 6.19.1-alpha.0 → 6.19.1-alpha.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"isUnsafeAssignment.d.ts","sourceRoot":"","sources":["../src/isUnsafeAssignment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAItC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,EAAE,CAAC,IAAI,EACjB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAC/B,KAAK,GAAG;IAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA;CAAE,CA8DhD"}
1
+ {"version":3,"file":"isUnsafeAssignment.d.ts","sourceRoot":"","sources":["../src/isUnsafeAssignment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAItC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,EAAE,CAAC,IAAI,EACjB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,GAC/B,KAAK,GAAG;IAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC;IAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA;CAAE,CAQhD"}
@@ -38,6 +38,10 @@ const predicates_1 = require("./predicates");
38
38
  * @returns false if it's safe, or an object with the two types if it's unsafe
39
39
  */
40
40
  function isUnsafeAssignment(type, receiver, checker, senderNode) {
41
+ return isUnsafeAssignmentWorker(type, receiver, checker, senderNode, new Map());
42
+ }
43
+ exports.isUnsafeAssignment = isUnsafeAssignment;
44
+ function isUnsafeAssignmentWorker(type, receiver, checker, senderNode, visited) {
41
45
  if ((0, predicates_1.isTypeAnyType)(type)) {
42
46
  // Allow assignment of any ==> unknown.
43
47
  if ((0, predicates_1.isTypeUnknownType)(receiver)) {
@@ -47,6 +51,16 @@ function isUnsafeAssignment(type, receiver, checker, senderNode) {
47
51
  return { sender: type, receiver };
48
52
  }
49
53
  }
54
+ const typeAlreadyVisited = visited.get(type);
55
+ if (typeAlreadyVisited) {
56
+ if (typeAlreadyVisited.has(receiver)) {
57
+ return false;
58
+ }
59
+ typeAlreadyVisited.add(receiver);
60
+ }
61
+ else {
62
+ visited.set(type, new Set([receiver]));
63
+ }
50
64
  if (tsutils.isTypeReference(type) && tsutils.isTypeReference(receiver)) {
51
65
  // TODO - figure out how to handle cases like this,
52
66
  // where the types are assignable, but not the same type
@@ -80,7 +94,7 @@ function isUnsafeAssignment(type, receiver, checker, senderNode) {
80
94
  for (let i = 0; i < typeArguments.length; i += 1) {
81
95
  const arg = typeArguments[i];
82
96
  const receiverArg = receiverTypeArguments[i];
83
- const unsafe = isUnsafeAssignment(arg, receiverArg, checker, senderNode);
97
+ const unsafe = isUnsafeAssignmentWorker(arg, receiverArg, checker, senderNode, visited);
84
98
  if (unsafe) {
85
99
  return { sender: type, receiver };
86
100
  }
@@ -89,5 +103,4 @@ function isUnsafeAssignment(type, receiver, checker, senderNode) {
89
103
  }
90
104
  return false;
91
105
  }
92
- exports.isUnsafeAssignment = isUnsafeAssignment;
93
106
  //# sourceMappingURL=isUnsafeAssignment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isUnsafeAssignment.js","sourceRoot":"","sources":["../src/isUnsafeAssignment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAA0D;AAC1D,sDAAwC;AAGxC,6CAAgE;AAEhE;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,IAAa,EACb,QAAiB,EACjB,OAAuB,EACvB,UAAgC;IAEhC,IAAI,IAAA,0BAAa,EAAC,IAAI,CAAC,EAAE,CAAC;QACxB,uCAAuC;QACvC,IAAI,IAAA,8BAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAA,0BAAa,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,mDAAmD;QACnD,wDAAwD;QACxD;;;;;;;;;UASE;QAEF,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,mGAAmG;YACnG,+DAA+D;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,UAAU,EAAE,IAAI,KAAK,sBAAc,CAAC,aAAa;YACjD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;YACpD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YAChC,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACjC,UAAU,CAAC,aAAa,IAAI,IAAI,EAChC,CAAC;YACD,qCAAqC;YACrC,sFAAsF;YACtF,4FAA4F;YAC5F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAC/C,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;QAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACzE,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAnED,gDAmEC"}
1
+ {"version":3,"file":"isUnsafeAssignment.js","sourceRoot":"","sources":["../src/isUnsafeAssignment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAA0D;AAC1D,sDAAwC;AAGxC,6CAAgE;AAEhE;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAChC,IAAa,EACb,QAAiB,EACjB,OAAuB,EACvB,UAAgC;IAEhC,OAAO,wBAAwB,CAC7B,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,IAAI,GAAG,EAAE,CACV,CAAC;AACJ,CAAC;AAbD,gDAaC;AAED,SAAS,wBAAwB,CAC/B,IAAa,EACb,QAAiB,EACjB,OAAuB,EACvB,UAAgC,EAChC,OAAmC;IAEnC,IAAI,IAAA,0BAAa,EAAC,IAAI,CAAC,EAAE,CAAC;QACxB,uCAAuC;QACvC,IAAI,IAAA,8BAAiB,EAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAA,0BAAa,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,kBAAkB,EAAE,CAAC;QACvB,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvE,mDAAmD;QACnD,wDAAwD;QACxD;;;;;;;;;UASE;QAEF,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpC,mGAAmG;YACnG,+DAA+D;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IACE,UAAU,EAAE,IAAI,KAAK,sBAAc,CAAC,aAAa;YACjD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,UAAU;YACpD,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK;YAChC,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACjC,UAAU,CAAC,aAAa,IAAI,IAAI,EAChC,CAAC;YACD,qCAAqC;YACrC,sFAAsF;YACtF,4FAA4F;YAC5F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAC/C,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC;QAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,wBAAwB,CACrC,GAAG,EACH,WAAW,EACX,OAAO,EACP,UAAU,EACV,OAAO,CACR,CAAC;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typescript-eslint/type-utils",
3
- "version": "6.19.1-alpha.0",
3
+ "version": "6.19.1-alpha.1",
4
4
  "description": "Type utilities for working with TypeScript + ESLint together",
5
5
  "files": [
6
6
  "dist",
@@ -45,13 +45,13 @@
45
45
  "typecheck": "tsc -p tsconfig.json --noEmit"
46
46
  },
47
47
  "dependencies": {
48
- "@typescript-eslint/typescript-estree": "6.19.1-alpha.0",
49
- "@typescript-eslint/utils": "6.19.1-alpha.0",
48
+ "@typescript-eslint/typescript-estree": "6.19.1-alpha.1",
49
+ "@typescript-eslint/utils": "6.19.1-alpha.1",
50
50
  "debug": "^4.3.4",
51
51
  "ts-api-utils": "^1.0.1"
52
52
  },
53
53
  "devDependencies": {
54
- "@typescript-eslint/parser": "6.19.1-alpha.0",
54
+ "@typescript-eslint/parser": "6.19.1-alpha.1",
55
55
  "ajv": "^6.10.0",
56
56
  "downlevel-dts": "*",
57
57
  "jest": "29.7.0",