Skip to content

Commit 0c91b68

Browse files
committedNov 20, 2021
Add test for generated-typescript-types and fixed bugs resulting from that
1 parent ead1352 commit 0c91b68

5 files changed

+1838
-52
lines changed
 

‎eslint-plugin-relay.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ module.exports = {
5858
'relay/must-colocate-fragment-spreads': 'error',
5959
'relay/function-required-argument': 'error',
6060
'relay/hook-required-argument': 'error'
61-
},
61+
}
6262
},
6363
'ts-strict': {
6464
rules: {
@@ -71,7 +71,7 @@ module.exports = {
7171
'relay/must-colocate-fragment-spreads': 'error',
7272
'relay/function-required-argument': 'error',
7373
'relay/hook-required-argument': 'error'
74-
},
75-
},
74+
}
75+
}
7676
}
7777
};

‎package.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
"graphql": "^14.0.0 || ^15.0.0"
2222
},
2323
"devDependencies": {
24+
"@typescript-eslint/parser": "^5.4.0",
2425
"babel-eslint": "^10.1.0",
2526
"eslint": "^7.8.0",
2627
"eslint-config-prettier": "^6.11.0",
2728
"eslint-plugin-prettier": "^3.1.4",
2829
"mocha": "^9.1.3",
29-
"prettier": "^2.4.1"
30+
"prettier": "^2.4.1",
31+
"typescript": "^4.5.2"
3032
}
3133
}

‎src/rule-generated-typescript-types.js

+86-43
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
'use strict';
99

10-
const utils = require('eslint-plugin-relay/src/utils');
10+
const utils = require('./utils');
1111
const shouldLint = utils.shouldLint;
1212
const getGraphQLAST = utils.getGraphQLAST;
1313

@@ -90,7 +90,7 @@ function getPropTypeProperty(
9090
}
9191
visitedProps.add(propType);
9292
const spreadsToVisit = [];
93-
if (propType.type === 'GenericTypeAnnotation') {
93+
if (propType.type === 'TSTypeReference') {
9494
return getPropTypeProperty(
9595
context,
9696
typeAliasMap,
@@ -99,28 +99,14 @@ function getPropTypeProperty(
9999
visitedProps
100100
);
101101
}
102-
if (propType.type !== 'ObjectTypeAnnotation') {
102+
if (propType.type !== 'TSTypeLiteral') {
103103
return null;
104104
}
105-
for (const property of propType.properties) {
105+
for (const property of propType.members) {
106106
if (property.type === 'ObjectTypeSpreadProperty') {
107107
spreadsToVisit.push(property);
108108
} else {
109-
// HACK: Type annotations don't currently expose a 'key' property:
110-
// https://github.com/babel/babel-eslint/issues/307
111-
112-
let tokenIndex = 0;
113-
if (property.static) {
114-
tokenIndex++;
115-
}
116-
if (property.variance) {
117-
tokenIndex++;
118-
}
119-
120-
if (
121-
context.getSourceCode().getFirstToken(property, tokenIndex).value ===
122-
propName
123-
) {
109+
if (property.key.name === propName) {
124110
return property;
125111
}
126112
}
@@ -165,7 +151,7 @@ function validateObjectTypeAnnotation(
165151
propName
166152
);
167153

168-
const atleastOnePropertyExists = !!propType.properties[0];
154+
const atleastOnePropertyExists = !!propType.members[0];
169155

170156
if (!propTypeProperty) {
171157
if (onlyVerify) {
@@ -195,7 +181,7 @@ function validateObjectTypeAnnotation(
195181
if (atleastOnePropertyExists) {
196182
fixes.push(
197183
fixer.insertTextBefore(
198-
propType.properties[0],
184+
propType.members[0],
199185
`${propName}: ${type}, `
200186
)
201187
);
@@ -210,14 +196,54 @@ function validateObjectTypeAnnotation(
210196
return false;
211197
}
212198
if (
213-
propTypeProperty.value.type === 'NullableTypeAnnotation' &&
214-
propTypeProperty.value.typeAnnotation.type === 'GenericTypeAnnotation' &&
215-
propTypeProperty.value.typeAnnotation.id.name === type
199+
propTypeProperty.type === 'TSPropertySignature' &&
200+
propTypeProperty.typeAnnotation.type === 'TSTypeAnnotation'
216201
) {
217-
return true;
202+
// If we have a TSTypeAnnotation here, it must be a TSTypeReference to the generated type, otherwise we have an invalid reference here
203+
if (
204+
propTypeProperty.typeAnnotation.typeAnnotation.type ===
205+
'TSTypeReference' &&
206+
propTypeProperty.typeAnnotation.typeAnnotation.typeName.name === type
207+
) {
208+
return true;
209+
}
210+
211+
if (onlyVerify) {
212+
return false;
213+
}
214+
215+
context.report({
216+
message:
217+
'Component property `{{prop}}` expects to use the generated ' +
218+
'`{{type}}` typescript type. See https://facebook.github.io/relay/docs/en/graphql-in-relay.html#importing-generated-definitions',
219+
data: {
220+
prop: propName,
221+
type
222+
},
223+
fix: options.fix
224+
? fixer => {
225+
const whitespace = ' '.repeat(Component.parent.loc.start.column);
226+
return [
227+
genImportFixer(
228+
fixer,
229+
importFixRange,
230+
type,
231+
options.haste,
232+
whitespace
233+
),
234+
fixer.replaceText(
235+
propTypeProperty.typeAnnotation.typeAnnotation,
236+
type
237+
)
238+
];
239+
}
240+
: null,
241+
loc: Component.loc
242+
});
243+
return false;
218244
}
219245
if (
220-
propTypeProperty.value.type !== 'GenericTypeAnnotation' ||
246+
propTypeProperty.type !== 'TSTypeReference' ||
221247
propTypeProperty.value.id.name !== type
222248
) {
223249
if (onlyVerify) {
@@ -226,7 +252,7 @@ function validateObjectTypeAnnotation(
226252
context.report({
227253
message:
228254
'Component property `{{prop}}` expects to use the generated ' +
229-
'`{{type}}` flow type. See https://facebook.github.io/relay/docs/en/graphql-in-relay.html#importing-generated-definitions',
255+
'`{{type}}` typescript type. See https://facebook.github.io/relay/docs/en/graphql-in-relay.html#importing-generated-definitions',
230256
data: {
231257
prop: propName,
232258
type
@@ -257,7 +283,7 @@ function extractReadOnlyType(genericType) {
257283
let currentType = genericType;
258284
while (
259285
currentType != null &&
260-
currentType.type === 'GenericTypeAnnotation' &&
286+
currentType.type === 'TSTypeReference' &&
261287
currentType.id.name === '$ReadOnly' &&
262288
currentType.typeParameters &&
263289
currentType.typeParameters.type === 'TypeParameterInstantiation' &&
@@ -273,10 +299,10 @@ function resolveTypeAlias(genericType, typeAliasMap) {
273299
let currentType = genericType;
274300
while (
275301
currentType != null &&
276-
currentType.type === 'GenericTypeAnnotation' &&
277-
typeAliasMap[currentType.id.name] != null
302+
currentType.type === 'TSTypeReference' &&
303+
typeAliasMap[currentType.typeName.name] != null
278304
) {
279-
currentType = typeAliasMap[currentType.id.name];
305+
currentType = typeAliasMap[currentType.typeName.name];
280306
}
281307
return currentType;
282308
}
@@ -325,7 +351,7 @@ module.exports = {
325351
if (arg.type === 'Identifier') {
326352
const name = arg.name;
327353
let scope = context.getScope();
328-
while (scope && scope.type != 'global') {
354+
while (scope != null) {
329355
for (const variable of scope.variables) {
330356
if (variable.name === name) {
331357
const definition = variable.defs.find(
@@ -435,8 +461,8 @@ module.exports = {
435461
requires.push(node);
436462
}
437463
},
438-
TypeAlias(node) {
439-
typeAliasMap[node.id.name] = node.right;
464+
TSTypeAliasDeclaration(node) {
465+
typeAliasMap[node.id.name] = node.typeAnnotation;
440466
},
441467

442468
/**
@@ -564,6 +590,23 @@ module.exports = {
564590
});
565591
},
566592

593+
/**
594+
* Find useMutation() calls without type arguments.
595+
*/
596+
'CallExpression[callee.name=useMutation]:not([typeParameters])'(node) {
597+
const queryName = getDefinitionName(node.arguments[0]);
598+
context.report({
599+
node,
600+
message: `The \`useMutation\` hook should be used with an explicit generated Typescript type, e.g.: useMutation<{{queryName}}>(...)`,
601+
data: {
602+
queryName: queryName
603+
},
604+
fix:
605+
queryName != null && options.fix
606+
? createTypeImportFixer(node, queryName, queryName)
607+
: null
608+
});
609+
},
567610
/**
568611
* Find usePaginationFragment() calls without type arguments.
569612
*/
@@ -794,7 +837,7 @@ module.exports = {
794837
// There exists a prop typeAnnotation. Let's look at how it's
795838
// structured
796839
switch (propType.type) {
797-
case 'ObjectTypeAnnotation': {
840+
case 'TSTypeLiteral': {
798841
validateObjectTypeAnnotation(
799842
context,
800843
Component,
@@ -806,7 +849,7 @@ module.exports = {
806849
);
807850
break;
808851
}
809-
case 'GenericTypeAnnotation': {
852+
case 'TSTypeReference': {
810853
const aliasedObjectType = extractReadOnlyType(
811854
resolveTypeAlias(propType, typeAliasMap)
812855
);
@@ -816,7 +859,7 @@ module.exports = {
816859
break;
817860
}
818861
switch (aliasedObjectType.type) {
819-
case 'ObjectTypeAnnotation': {
862+
case 'TSTypeLiteral': {
820863
validateObjectTypeAnnotation(
821864
context,
822865
Component,
@@ -828,23 +871,23 @@ module.exports = {
828871
);
829872
break;
830873
}
831-
case 'IntersectionTypeAnnotation': {
874+
case 'TSIntersectionType': {
832875
const objectTypes = aliasedObjectType.types
833876
.map(intersectedType => {
834-
if (intersectedType.type === 'GenericTypeAnnotation') {
877+
if (intersectedType.type === 'TSTypeReference') {
835878
return extractReadOnlyType(
836879
resolveTypeAlias(intersectedType, typeAliasMap)
837880
);
838881
}
839-
if (intersectedType.type === 'ObjectTypeAnnotation') {
882+
if (intersectedType.type === 'TSTypeLiteral') {
840883
return intersectedType;
841884
}
842885
})
843886
.filter(maybeObjectType => {
844-
// GenericTypeAnnotation may not map to an object type
887+
// TSTypeReference may not map to an object type
845888
return (
846889
maybeObjectType &&
847-
maybeObjectType.type === 'ObjectTypeAnnotation'
890+
maybeObjectType.type === 'TSTypeLiteral'
848891
);
849892
});
850893
if (!objectTypes.length) {
@@ -887,7 +930,7 @@ module.exports = {
887930
context.report({
888931
message:
889932
'Component property `{{prop}}` expects to use the ' +
890-
'generated `{{type}}` flow type. See https://facebook.github.io/relay/docs/en/graphql-in-relay.html#importing-generated-definitions',
933+
'generated `{{type}}` typescript type. See https://facebook.github.io/relay/docs/en/graphql-in-relay.html#importing-generated-definitions',
891934
data: {
892935
prop: propName,
893936
type: importedPropType

‎test/generated-typescript-types.js

+1,567
Large diffs are not rendered by default.

‎yarn.lock

+179-5
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,71 @@
135135
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
136136
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
137137

138+
"@nodelib/fs.scandir@2.1.5":
139+
version "2.1.5"
140+
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
141+
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
142+
dependencies:
143+
"@nodelib/fs.stat" "2.0.5"
144+
run-parallel "^1.1.9"
145+
146+
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
147+
version "2.0.5"
148+
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
149+
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
150+
151+
"@nodelib/fs.walk@^1.2.3":
152+
version "1.2.8"
153+
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
154+
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
155+
dependencies:
156+
"@nodelib/fs.scandir" "2.1.5"
157+
fastq "^1.6.0"
158+
159+
"@typescript-eslint/parser@^5.4.0":
160+
version "5.4.0"
161+
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.4.0.tgz#3aa83ce349d66e39b84151f6d5464928044ca9e3"
162+
integrity sha512-JoB41EmxiYpaEsRwpZEYAJ9XQURPFer8hpkIW9GiaspVLX8oqbqNM8P4EP8HOZg96yaALiLEVWllA2E8vwsIKw==
163+
dependencies:
164+
"@typescript-eslint/scope-manager" "5.4.0"
165+
"@typescript-eslint/types" "5.4.0"
166+
"@typescript-eslint/typescript-estree" "5.4.0"
167+
debug "^4.3.2"
168+
169+
"@typescript-eslint/scope-manager@5.4.0":
170+
version "5.4.0"
171+
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.4.0.tgz#aaab08415f4a9cf32b870c7750ae8ba4607126a1"
172+
integrity sha512-pRxFjYwoi8R+n+sibjgF9iUiAELU9ihPBtHzocyW8v8D8G8KeQvXTsW7+CBYIyTYsmhtNk50QPGLE3vrvhM5KA==
173+
dependencies:
174+
"@typescript-eslint/types" "5.4.0"
175+
"@typescript-eslint/visitor-keys" "5.4.0"
176+
177+
"@typescript-eslint/types@5.4.0":
178+
version "5.4.0"
179+
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.4.0.tgz#b1c130f4b381b77bec19696c6e3366f9781ce8f2"
180+
integrity sha512-GjXNpmn+n1LvnttarX+sPD6+S7giO+9LxDIGlRl4wK3a7qMWALOHYuVSZpPTfEIklYjaWuMtfKdeByx0AcaThA==
181+
182+
"@typescript-eslint/typescript-estree@5.4.0":
183+
version "5.4.0"
184+
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.4.0.tgz#fe524fb308973c68ebeb7428f3b64499a6ba5fc0"
185+
integrity sha512-nhlNoBdhKuwiLMx6GrybPT3SFILm5Gij2YBdPEPFlYNFAXUJWX6QRgvi/lwVoadaQEFsizohs6aFRMqsXI2ewA==
186+
dependencies:
187+
"@typescript-eslint/types" "5.4.0"
188+
"@typescript-eslint/visitor-keys" "5.4.0"
189+
debug "^4.3.2"
190+
globby "^11.0.4"
191+
is-glob "^4.0.3"
192+
semver "^7.3.5"
193+
tsutils "^3.21.0"
194+
195+
"@typescript-eslint/visitor-keys@5.4.0":
196+
version "5.4.0"
197+
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.4.0.tgz#09bc28efd3621f292fe88c86eef3bf4893364c8c"
198+
integrity sha512-PVbax7MeE7tdLfW5SA0fs8NGVVr+buMPrcj+CWYWPXsZCH8qZ1THufDzbXm1xrZ2b2PA1iENJ0sRq5fuUtvsJg==
199+
dependencies:
200+
"@typescript-eslint/types" "5.4.0"
201+
eslint-visitor-keys "^3.0.0"
202+
138203
"@ungap/promise-all-settled@1.1.2":
139204
version "1.1.2"
140205
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
@@ -214,6 +279,11 @@ argparse@^2.0.1:
214279
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
215280
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
216281

282+
array-union@^2.1.0:
283+
version "2.1.0"
284+
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
285+
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
286+
217287
astral-regex@^2.0.0:
218288
version "2.0.0"
219289
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
@@ -249,7 +319,7 @@ brace-expansion@^1.1.7:
249319
balanced-match "^1.0.0"
250320
concat-map "0.0.1"
251321

252-
braces@~3.0.2:
322+
braces@^3.0.1, braces@~3.0.2:
253323
version "3.0.2"
254324
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
255325
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -350,7 +420,7 @@ cross-spawn@^7.0.2:
350420
shebang-command "^2.0.0"
351421
which "^2.0.1"
352422

353-
debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
423+
debug@4.3.2, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2:
354424
version "4.3.2"
355425
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
356426
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
@@ -372,6 +442,13 @@ diff@5.0.0:
372442
resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
373443
integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
374444

445+
dir-glob@^3.0.1:
446+
version "3.0.1"
447+
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
448+
integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
449+
dependencies:
450+
path-type "^4.0.0"
451+
375452
doctrine@^3.0.0:
376453
version "3.0.0"
377454
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -445,6 +522,11 @@ eslint-visitor-keys@^2.0.0:
445522
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
446523
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
447524

525+
eslint-visitor-keys@^3.0.0:
526+
version "3.1.0"
527+
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz#eee4acea891814cda67a7d8812d9647dd0179af2"
528+
integrity sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==
529+
448530
eslint@^7.8.0:
449531
version "7.32.0"
450532
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
@@ -544,6 +626,17 @@ fast-diff@^1.1.2:
544626
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
545627
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
546628

629+
fast-glob@^3.1.1:
630+
version "3.2.7"
631+
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1"
632+
integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==
633+
dependencies:
634+
"@nodelib/fs.stat" "^2.0.2"
635+
"@nodelib/fs.walk" "^1.2.3"
636+
glob-parent "^5.1.2"
637+
merge2 "^1.3.0"
638+
micromatch "^4.0.4"
639+
547640
fast-json-stable-stringify@^2.0.0:
548641
version "2.1.0"
549642
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -554,6 +647,13 @@ fast-levenshtein@^2.0.6:
554647
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
555648
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
556649

650+
fastq@^1.6.0:
651+
version "1.13.0"
652+
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
653+
integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
654+
dependencies:
655+
reusify "^1.0.4"
656+
557657
file-entry-cache@^6.0.1:
558658
version "6.0.1"
559659
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
@@ -667,6 +767,18 @@ globals@^13.6.0, globals@^13.9.0:
667767
dependencies:
668768
type-fest "^0.20.2"
669769

770+
globby@^11.0.4:
771+
version "11.0.4"
772+
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
773+
integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
774+
dependencies:
775+
array-union "^2.1.0"
776+
dir-glob "^3.0.1"
777+
fast-glob "^3.1.1"
778+
ignore "^5.1.4"
779+
merge2 "^1.3.0"
780+
slash "^3.0.0"
781+
670782
"graphql@^14.0.0 || ^15.0.0":
671783
version "15.7.2"
672784
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.7.2.tgz#85ab0eeb83722977151b3feb4d631b5f2ab287ef"
@@ -704,6 +816,11 @@ ignore@^4.0.6:
704816
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
705817
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
706818

819+
ignore@^5.1.4:
820+
version "5.1.9"
821+
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb"
822+
integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ==
823+
707824
import-fresh@^3.0.0, import-fresh@^3.2.1:
708825
version "3.3.0"
709826
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -754,7 +871,7 @@ is-fullwidth-code-point@^3.0.0:
754871
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
755872
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
756873

757-
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
874+
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
758875
version "4.0.3"
759876
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
760877
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
@@ -861,6 +978,19 @@ lru-cache@^6.0.0:
861978
dependencies:
862979
yallist "^4.0.0"
863980

981+
merge2@^1.3.0:
982+
version "1.4.1"
983+
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
984+
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
985+
986+
micromatch@^4.0.4:
987+
version "4.0.4"
988+
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9"
989+
integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
990+
dependencies:
991+
braces "^3.0.1"
992+
picomatch "^2.2.3"
993+
864994
minimatch@3.0.4, minimatch@^3.0.4:
865995
version "3.0.4"
866996
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -983,7 +1113,12 @@ path-parse@^1.0.6:
9831113
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
9841114
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
9851115

986-
picomatch@^2.0.4, picomatch@^2.2.1:
1116+
path-type@^4.0.0:
1117+
version "4.0.0"
1118+
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
1119+
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
1120+
1121+
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
9871122
version "2.3.0"
9881123
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
9891124
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
@@ -1015,6 +1150,11 @@ punycode@^2.1.0:
10151150
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
10161151
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
10171152

1153+
queue-microtask@^1.2.2:
1154+
version "1.2.3"
1155+
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
1156+
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
1157+
10181158
randombytes@^2.1.0:
10191159
version "2.1.0"
10201160
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -1057,19 +1197,31 @@ resolve@^1.12.0:
10571197
is-core-module "^2.2.0"
10581198
path-parse "^1.0.6"
10591199

1200+
reusify@^1.0.4:
1201+
version "1.0.4"
1202+
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
1203+
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
1204+
10601205
rimraf@^3.0.2:
10611206
version "3.0.2"
10621207
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
10631208
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
10641209
dependencies:
10651210
glob "^7.1.3"
10661211

1212+
run-parallel@^1.1.9:
1213+
version "1.2.0"
1214+
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
1215+
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
1216+
dependencies:
1217+
queue-microtask "^1.2.2"
1218+
10671219
safe-buffer@^5.1.0:
10681220
version "5.2.1"
10691221
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
10701222
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
10711223

1072-
semver@^7.2.1:
1224+
semver@^7.2.1, semver@^7.3.5:
10731225
version "7.3.5"
10741226
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
10751227
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
@@ -1095,6 +1247,11 @@ shebang-regex@^3.0.0:
10951247
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
10961248
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
10971249

1250+
slash@^3.0.0:
1251+
version "3.0.0"
1252+
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
1253+
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
1254+
10981255
slice-ansi@^4.0.0:
10991256
version "4.0.0"
11001257
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
@@ -1184,6 +1341,18 @@ to-regex-range@^5.0.1:
11841341
dependencies:
11851342
is-number "^7.0.0"
11861343

1344+
tslib@^1.8.1:
1345+
version "1.14.1"
1346+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
1347+
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
1348+
1349+
tsutils@^3.21.0:
1350+
version "3.21.0"
1351+
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
1352+
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
1353+
dependencies:
1354+
tslib "^1.8.1"
1355+
11871356
type-check@^0.4.0, type-check@~0.4.0:
11881357
version "0.4.0"
11891358
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@@ -1196,6 +1365,11 @@ type-fest@^0.20.2:
11961365
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
11971366
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
11981367

1368+
typescript@^4.5.2:
1369+
version "4.5.2"
1370+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998"
1371+
integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==
1372+
11991373
uri-js@^4.2.2:
12001374
version "4.4.1"
12011375
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"

0 commit comments

Comments
 (0)
Please sign in to comment.