[eslint-rules] Add missing apollo key fields rule
This commit is contained in:
Родитель
3ac43a9045
Коммит
95b2c04de2
|
@ -22,6 +22,7 @@ GraphQL tooling & runtime support needed for MS Teams and beyond
|
|||
- [@graphitation/apollo-react-relay-duct-tape](./packages/apollo-react-relay-duct-tape): A compatibility wrapper that provides the react-relay API on top of Apollo Client.
|
||||
- [@graphitation/graphql-js-operation-payload-generator](./packages/graphql-js-operation-payload-generator): Generates a payload for a given GraphQL operation expressed in graphql-js AST and a GraphQL Schema.
|
||||
- [@graphitation/graphql-js-tag](./packages): A simple graphql-js AST based `graphql` tagged template function.
|
||||
- [@graphitation/graphql-eslint-rules](./packages/graphql-eslint-rules): Graphql eslint rules
|
||||
- [relay-compiler-language-graphitation](./packages/relay-compiler-language-graphitation): A relay-compiler plugin that wraps [the TypeScript plugin](https://github.com/relay-tools/relay-compiler-language-typescript) and augments it slightly for [@graphitation/apollo-react-relay-duct-tape](../apollo-react-relay-duct-tape)'s needs.
|
||||
|
||||
## Contributing
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"type": "minor",
|
||||
"comment": "Graphql eslint rules added",
|
||||
"packageName": "@graphitation/graphql-eslint-rules",
|
||||
"email": "jakubvejr@microsoft.com",
|
||||
"dependentChangeType": "patch"
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"extends": ["../../.eslintrc.json"],
|
||||
"root": true
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
/src/
|
||||
**/__tests__/
|
||||
.eslintrc.json
|
||||
tsconfig.json
|
||||
.tsbuildinfo
|
||||
CHANGELOG.json
|
|
@ -0,0 +1,5 @@
|
|||
# GraphQL eslint rules
|
||||
|
||||
This package contains eslint rules listed below
|
||||
|
||||
- missing-apollo-key-fields: Enforce selecting specific key fields when they are available on the GraphQL type
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"name": "@graphitation/graphql-eslint-rules",
|
||||
"license": "MIT",
|
||||
"version": "0.1.0",
|
||||
"main": "./src/index.ts",
|
||||
"scripts": {
|
||||
"build": "monorepo-scripts build",
|
||||
"lint": "monorepo-scripts lint",
|
||||
"test": "monorepo-scripts test",
|
||||
"types": "monorepo-scripts types",
|
||||
"just": "monorepo-scripts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@graphql-eslint/eslint-plugin": "^3.0.0",
|
||||
"@types/jest": "^26.0.22",
|
||||
"graphql": "^15.0.0",
|
||||
"monorepo-scripts": "*"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"graphql": "^15.0.0"
|
||||
},
|
||||
"publishConfig": {
|
||||
"main": "./lib/index",
|
||||
"types": "./lib/index.d.ts",
|
||||
"access": "public"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[` 1`] = `
|
||||
"> 1 | query { hasId { name } }
|
||||
| ^^^^^^^ Field(s) \\"id\\" must be selected (when available on a type). Please make sure to include it in your selection set!
|
||||
If you are using fragments, make sure that all used fragments specifies the field(s) \\"id\\"."
|
||||
`;
|
||||
|
||||
exports[` 2`] = `
|
||||
"> 1 | query { keyField { id name } }
|
||||
| ^^^^^^^^^^ Field(s) \\"objectId\\" must be selected (when available on a type). Please make sure to include it in your selection set!
|
||||
If you are using fragments, make sure that all used fragments specifies the field(s) \\"objectId\\"."
|
||||
`;
|
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* Taken from https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/packages/plugin/tests/require-id-when-available.spec.ts
|
||||
* MIT license https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/LICENSE
|
||||
*/
|
||||
|
||||
import { TextDecoder } from "util";
|
||||
global.TextDecoder = TextDecoder as any;
|
||||
|
||||
import {
|
||||
GraphQLRuleTester,
|
||||
ParserOptions,
|
||||
} from "@graphql-eslint/eslint-plugin";
|
||||
import rule, {
|
||||
REQUIRE_KEY_FIELDS_WHEN_AVAILABLE,
|
||||
} from "../missing-apollo-key-fields";
|
||||
|
||||
const TEST_SCHEMA = /* GraphQL */ `
|
||||
type Query {
|
||||
hasId: HasId!
|
||||
noId: NoId!
|
||||
vehicles: [Vehicle!]!
|
||||
keyField: [KeyFieldType]!
|
||||
flying: [Flying!]!
|
||||
}
|
||||
type NoId {
|
||||
name: String!
|
||||
}
|
||||
interface Vehicle {
|
||||
id: ID!
|
||||
}
|
||||
type Car implements Vehicle {
|
||||
id: ID!
|
||||
mileage: Int
|
||||
}
|
||||
interface Flying {
|
||||
hasWings: Boolean!
|
||||
}
|
||||
type Bird implements Flying {
|
||||
id: ID!
|
||||
hasWings: Boolean!
|
||||
}
|
||||
type KeyFieldType {
|
||||
objectId: ID!
|
||||
name: String!
|
||||
}
|
||||
type HasId {
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
`;
|
||||
|
||||
const WITH_SCHEMA = {
|
||||
parserOptions: <ParserOptions>{
|
||||
schema: TEST_SCHEMA,
|
||||
operations: [
|
||||
`fragment HasIdFields on HasId {
|
||||
id
|
||||
}`,
|
||||
],
|
||||
},
|
||||
};
|
||||
const ruleTester = new GraphQLRuleTester();
|
||||
|
||||
export const typePolicies = {
|
||||
KeyFieldType: {
|
||||
keyFields: ["objectId"],
|
||||
},
|
||||
};
|
||||
|
||||
ruleTester.runGraphQLTests("missing-apollo-key-fields", rule, {
|
||||
valid: [
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { noId { name } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { hasId { id name } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { keyField { objectId name } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { hasId { ...HasIdFields } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { vehicles { id ...on Car { id mileage } } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { vehicles { ...on Car { id mileage } } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { flying { ...on Bird { id } } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { vehicles { id ...on Car { mileage } } }`,
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
],
|
||||
invalid: [
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { hasId { name } }`,
|
||||
errors: [{ messageId: REQUIRE_KEY_FIELDS_WHEN_AVAILABLE }],
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { keyField { id name } }`,
|
||||
errors: [{ messageId: REQUIRE_KEY_FIELDS_WHEN_AVAILABLE }],
|
||||
options: [{ typePolicies }],
|
||||
},
|
||||
],
|
||||
});
|
|
@ -1,86 +0,0 @@
|
|||
/*
|
||||
* Taken from https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/packages/plugin/tests/require-id-when-available.spec.ts
|
||||
* MIT license https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/LICENSE
|
||||
*/
|
||||
|
||||
import { GraphQLRuleTester } from "../src/testkit";
|
||||
import rule from "../src/rules/require-id-when-available";
|
||||
import { ParserOptions } from "../src/types";
|
||||
|
||||
const TEST_SCHEMA = /* GraphQL */ `
|
||||
type Query {
|
||||
hasId: HasId!
|
||||
noId: NoId!
|
||||
vehicles: [Vehicle!]!
|
||||
flying: [Flying!]!
|
||||
}
|
||||
type NoId {
|
||||
name: String!
|
||||
}
|
||||
interface Vehicle {
|
||||
id: ID!
|
||||
}
|
||||
type Car implements Vehicle {
|
||||
id: ID!
|
||||
mileage: Int
|
||||
}
|
||||
interface Flying {
|
||||
hasWings: Boolean!
|
||||
}
|
||||
type Bird implements Flying {
|
||||
id: ID!
|
||||
hasWings: Boolean!
|
||||
}
|
||||
type HasId {
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
`;
|
||||
|
||||
const WITH_SCHEMA = {
|
||||
parserOptions: <ParserOptions>{
|
||||
schema: TEST_SCHEMA,
|
||||
operations: [
|
||||
`fragment HasIdFields on HasId {
|
||||
id
|
||||
}`,
|
||||
],
|
||||
},
|
||||
};
|
||||
const ruleTester = new GraphQLRuleTester();
|
||||
|
||||
ruleTester.runGraphQLTests("require-id-when-available", rule, {
|
||||
valid: [
|
||||
{ ...WITH_SCHEMA, code: `query { noId { name } }` },
|
||||
{ ...WITH_SCHEMA, code: `query { hasId { id name } }` },
|
||||
{ ...WITH_SCHEMA, code: `query { hasId { ...HasIdFields } }` },
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { vehicles { id ...on Car { id mileage } } }`,
|
||||
},
|
||||
{ ...WITH_SCHEMA, code: `query { vehicles { ...on Car { id mileage } } }` },
|
||||
{ ...WITH_SCHEMA, code: `query { flying { ...on Bird { id } } }` },
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { hasId { name } }`,
|
||||
options: [{ fieldName: "name" }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { vehicles { id ...on Car { mileage } } }`,
|
||||
},
|
||||
],
|
||||
invalid: [
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { hasId { name } }`,
|
||||
errors: [{ messageId: "REQUIRE_ID_WHEN_AVAILABLE" }],
|
||||
},
|
||||
{
|
||||
...WITH_SCHEMA,
|
||||
code: `query { hasId { id } }`,
|
||||
options: [{ fieldName: "name" }],
|
||||
errors: [{ messageId: "REQUIRE_ID_WHEN_AVAILABLE" }],
|
||||
},
|
||||
],
|
||||
});
|
|
@ -0,0 +1,2 @@
|
|||
import missingApolloKeyFields from "./missing-apollo-key-fields";
|
||||
export { missingApolloKeyFields as missingApolloKeyFieldsRule };
|
|
@ -0,0 +1,267 @@
|
|||
/*
|
||||
* Taken from https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/packages/plugin/src/rules/require-id-when-available.ts
|
||||
* MIT license https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/LICENSE
|
||||
*/
|
||||
|
||||
import {
|
||||
GraphQLInterfaceType,
|
||||
GraphQLObjectType,
|
||||
GraphQLOutputType,
|
||||
GraphQLNamedType,
|
||||
isNonNullType,
|
||||
isListType,
|
||||
} from "graphql";
|
||||
import { CategoryType } from "@graphql-eslint/eslint-plugin";
|
||||
|
||||
export const REQUIRE_KEY_FIELDS_WHEN_AVAILABLE = "missing-apollo-key-fields";
|
||||
const DEFAULT_KEY_FIELD_NAME = "id";
|
||||
|
||||
function getBaseType(type: GraphQLOutputType): GraphQLNamedType {
|
||||
if (isNonNullType(type) || isListType(type)) {
|
||||
return getBaseType(type.ofType);
|
||||
}
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
function checkRequiredParameters(ruleName: string, context: any) {
|
||||
if (!context.parserServices) {
|
||||
throw new Error(
|
||||
`Rule '${ruleName}' requires 'parserOptions.operations' to be set and loaded. See http://bit.ly/graphql-eslint-operations for more info`
|
||||
);
|
||||
}
|
||||
|
||||
if (!context.parserServices.siblingOperations.available) {
|
||||
throw new Error(
|
||||
`Rule '${ruleName}' requires 'parserOptions.operations' to be set and loaded. See http://bit.ly/graphql-eslint-operations for more info`
|
||||
);
|
||||
}
|
||||
|
||||
if (!context.parserServices.hasTypeInfo) {
|
||||
throw new Error(
|
||||
`Rule '${ruleName}' requires 'parserOptions.schema' to be set and schema to be loaded. See http://bit.ly/graphql-eslint-schema for more info`
|
||||
);
|
||||
}
|
||||
|
||||
if (!context.options[0]?.typePolicies) {
|
||||
throw new Error(
|
||||
`Rule '${ruleName}' requires option 'typePolicies' to be set.`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
function keyFieldsForType(
|
||||
type: GraphQLObjectType | GraphQLInterfaceType,
|
||||
typePolicies: any
|
||||
) {
|
||||
const keyFields: string[] = [];
|
||||
const typePolicy = typePolicies[type.name];
|
||||
if (typePolicy && typePolicy.keyFields) {
|
||||
if (Array.isArray(typePolicy.keyFields)) {
|
||||
typePolicy.keyFields.forEach((keyField: any) => {
|
||||
if (typeof keyField === "string") {
|
||||
keyFields.push(keyField);
|
||||
} else {
|
||||
throw new Error("Expected keyFields to be array of strings");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
throw new Error("Expected keyFields to be array of strings");
|
||||
}
|
||||
} else if (type.getFields().id !== undefined) {
|
||||
keyFields.push(DEFAULT_KEY_FIELD_NAME);
|
||||
}
|
||||
return keyFields;
|
||||
}
|
||||
|
||||
function getKeyFieldsObjectForCheck(keyFields: string[]) {
|
||||
return keyFields.reduce((acc, id) => {
|
||||
acc[id] = false;
|
||||
return acc;
|
||||
}, {} as Record<string, boolean>);
|
||||
}
|
||||
|
||||
function getUnusedKeyFields(keyFieldsObjectForCheck: Record<string, boolean>) {
|
||||
return Object.entries(keyFieldsObjectForCheck).reduce((acc, [key, value]) => {
|
||||
if (value) {
|
||||
return acc;
|
||||
}
|
||||
acc.push(key);
|
||||
return acc;
|
||||
}, [] as string[]);
|
||||
}
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
type: "problem",
|
||||
docs: {
|
||||
category: "Operations" as CategoryType,
|
||||
description: `Enforce selecting specific key fields when they are available on the GraphQL type.`,
|
||||
requiresSchema: true,
|
||||
requiresSiblings: true,
|
||||
examples: [
|
||||
{
|
||||
title: "Incorrect",
|
||||
code: /* GraphQL */ `
|
||||
# In your schema
|
||||
type User {
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
# Query
|
||||
query user {
|
||||
user {
|
||||
name
|
||||
}
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
title: "Correct",
|
||||
code: /* GraphQL */ `
|
||||
# In your schema
|
||||
type User {
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
# Query
|
||||
query user {
|
||||
user {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
messages: {
|
||||
[REQUIRE_KEY_FIELDS_WHEN_AVAILABLE]: `Field(s) "{{ fieldName }}" must be selected (when available on a type). Please make sure to include it in your selection set!\nIf you are using fragments, make sure that all used fragments {{checkedFragments}} specifies the field(s) "{{ fieldName }}".`,
|
||||
},
|
||||
schema: {
|
||||
type: "array",
|
||||
additionalItems: false,
|
||||
minItems: 0,
|
||||
maxItems: 1,
|
||||
items: {
|
||||
type: "object",
|
||||
properties: {
|
||||
fieldName: {
|
||||
type: "string",
|
||||
default: DEFAULT_KEY_FIELD_NAME,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
create(context: any) {
|
||||
return {
|
||||
SelectionSet(node: any) {
|
||||
checkRequiredParameters(REQUIRE_KEY_FIELDS_WHEN_AVAILABLE, context);
|
||||
const { typePolicies } = context.options[0];
|
||||
const siblings = context.parserServices.siblingOperations;
|
||||
|
||||
if (!node.selections || node.selections.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const typeInfo = node.typeInfo();
|
||||
if (typeInfo && typeInfo.gqlType) {
|
||||
const rawType = getBaseType(typeInfo.gqlType);
|
||||
if (
|
||||
rawType instanceof GraphQLObjectType ||
|
||||
rawType instanceof GraphQLInterfaceType
|
||||
) {
|
||||
const keyFields = keyFieldsForType(rawType, typePolicies);
|
||||
const checkedFragmentSpreads = new Set();
|
||||
|
||||
if (keyFields.length) {
|
||||
const keyFieldsFound = getKeyFieldsObjectForCheck(keyFields);
|
||||
|
||||
for (const selection of node.selections) {
|
||||
if (
|
||||
selection.kind === "Field" &&
|
||||
keyFieldsFound[selection.name.value] === false
|
||||
) {
|
||||
keyFieldsFound[selection.name.value] = true;
|
||||
} else if (selection.kind === "InlineFragment") {
|
||||
for (const fragmentSelection of selection.selectionSet
|
||||
?.selections || []) {
|
||||
if (
|
||||
fragmentSelection.kind === "Field" &&
|
||||
keyFieldsFound[fragmentSelection.name.value] === false
|
||||
) {
|
||||
keyFieldsFound[fragmentSelection.name.value] = true;
|
||||
}
|
||||
}
|
||||
} else if (selection.kind === "FragmentSpread") {
|
||||
const foundSpread = siblings.getFragment(
|
||||
selection.name.value
|
||||
);
|
||||
|
||||
if (foundSpread[0]) {
|
||||
checkedFragmentSpreads.add(
|
||||
foundSpread[0].document.name.value
|
||||
);
|
||||
|
||||
for (const fragmentSpreadSelection of foundSpread[0]
|
||||
.document.selectionSet?.selections || []) {
|
||||
if (
|
||||
fragmentSpreadSelection.kind === "Field" &&
|
||||
keyFieldsFound[fragmentSpreadSelection.name.value] ===
|
||||
false
|
||||
) {
|
||||
keyFieldsFound[
|
||||
fragmentSpreadSelection.name.value
|
||||
] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const { parent } = node;
|
||||
const hasIdFieldInInterfaceSelectionSet =
|
||||
parent &&
|
||||
parent.kind === "InlineFragment" &&
|
||||
parent.parent &&
|
||||
parent.parent.kind === "SelectionSet" &&
|
||||
keyFields.every((keyField) =>
|
||||
parent.parent.selections.some(
|
||||
(s: any) => s.kind === "Field" && s.name.value === keyField
|
||||
)
|
||||
);
|
||||
|
||||
const unusedKeyFields = getUnusedKeyFields(keyFieldsFound);
|
||||
if (
|
||||
unusedKeyFields.length &&
|
||||
!hasIdFieldInInterfaceSelectionSet
|
||||
) {
|
||||
context.report({
|
||||
loc: {
|
||||
start: {
|
||||
line: node.loc.start.line,
|
||||
column: node.loc.start.column - 1,
|
||||
},
|
||||
end: {
|
||||
line: node.loc.end.line,
|
||||
column: node.loc.end.column - 1,
|
||||
},
|
||||
},
|
||||
messageId: REQUIRE_KEY_FIELDS_WHEN_AVAILABLE,
|
||||
data: {
|
||||
checkedFragments:
|
||||
checkedFragmentSpreads.size === 0
|
||||
? ""
|
||||
: `(${Array.from(checkedFragmentSpreads).join(", ")})`,
|
||||
fieldName: unusedKeyFields.join(", "),
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
|
@ -1,188 +0,0 @@
|
|||
/*
|
||||
* Taken from https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/packages/plugin/src/rules/require-id-when-available.ts
|
||||
* MIT license https://github.com/dotansimha/graphql-eslint/blob/300f73be802bdd06432a5df34939521d1ce0d93b/LICENSE
|
||||
*/
|
||||
|
||||
import {
|
||||
requireGraphQLSchemaFromContext,
|
||||
requireSiblingsOperations,
|
||||
} from "../utils";
|
||||
import { GraphQLESLintRule } from "../types";
|
||||
import { GraphQLInterfaceType, GraphQLObjectType } from "graphql";
|
||||
import { getBaseType } from "../estree-parser";
|
||||
|
||||
const REQUIRE_ID_WHEN_AVAILABLE = "REQUIRE_ID_WHEN_AVAILABLE";
|
||||
const DEFAULT_ID_FIELD_NAME = "id";
|
||||
|
||||
type RequireIdWhenAvailableRuleConfig = { fieldName: string };
|
||||
|
||||
const rule: GraphQLESLintRule<[RequireIdWhenAvailableRuleConfig], true> = {
|
||||
meta: {
|
||||
type: "suggestion",
|
||||
docs: {
|
||||
category: "Operations",
|
||||
description:
|
||||
"Enforce selecting specific fields when they are available on the GraphQL type.",
|
||||
url:
|
||||
"https://github.com/dotansimha/graphql-eslint/blob/master/docs/rules/require-id-when-available.md",
|
||||
requiresSchema: true,
|
||||
requiresSiblings: true,
|
||||
examples: [
|
||||
{
|
||||
title: "Incorrect",
|
||||
code: /* GraphQL */ `
|
||||
# In your schema
|
||||
type User {
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
# Query
|
||||
query user {
|
||||
user {
|
||||
name
|
||||
}
|
||||
}
|
||||
`,
|
||||
},
|
||||
{
|
||||
title: "Correct",
|
||||
code: /* GraphQL */ `
|
||||
# In your schema
|
||||
type User {
|
||||
id: ID!
|
||||
name: String!
|
||||
}
|
||||
# Query
|
||||
query user {
|
||||
user {
|
||||
id
|
||||
name
|
||||
}
|
||||
}
|
||||
`,
|
||||
},
|
||||
],
|
||||
recommended: true,
|
||||
},
|
||||
messages: {
|
||||
[REQUIRE_ID_WHEN_AVAILABLE]: `Field "{{ fieldName }}" must be selected when it's available on a type. Please make sure to include it in your selection set!\nIf you are using fragments, make sure that all used fragments {{ checkedFragments }} specifies the field "{{ fieldName }}".`,
|
||||
},
|
||||
schema: {
|
||||
type: "array",
|
||||
maxItems: 1,
|
||||
items: {
|
||||
type: "object",
|
||||
additionalProperties: false,
|
||||
properties: {
|
||||
fieldName: {
|
||||
type: "string",
|
||||
default: DEFAULT_ID_FIELD_NAME,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
create(context) {
|
||||
return {
|
||||
SelectionSet(node) {
|
||||
requireGraphQLSchemaFromContext("require-id-when-available", context);
|
||||
const siblings = requireSiblingsOperations(
|
||||
"require-id-when-available",
|
||||
context
|
||||
);
|
||||
|
||||
const fieldName =
|
||||
(context.options[0] || {}).fieldName || DEFAULT_ID_FIELD_NAME;
|
||||
|
||||
if (!node.selections || node.selections.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const typeInfo = node.typeInfo();
|
||||
if (typeInfo && typeInfo.gqlType) {
|
||||
const rawType = getBaseType(typeInfo.gqlType);
|
||||
if (
|
||||
rawType instanceof GraphQLObjectType ||
|
||||
rawType instanceof GraphQLInterfaceType
|
||||
) {
|
||||
const fields = rawType.getFields();
|
||||
const hasIdFieldInType = !!fields[fieldName];
|
||||
const checkedFragmentSpreads: Set<string> = new Set();
|
||||
|
||||
if (hasIdFieldInType) {
|
||||
let found = false;
|
||||
|
||||
for (const selection of node.selections) {
|
||||
if (
|
||||
selection.kind === "Field" &&
|
||||
selection.name.value === fieldName
|
||||
) {
|
||||
found = true;
|
||||
} else if (selection.kind === "InlineFragment") {
|
||||
found = (selection.selectionSet?.selections || []).some(
|
||||
(s) => s.kind === "Field" && s.name.value === fieldName
|
||||
);
|
||||
} else if (selection.kind === "FragmentSpread") {
|
||||
const foundSpread = siblings.getFragment(
|
||||
selection.name.value
|
||||
);
|
||||
|
||||
if (foundSpread[0]) {
|
||||
checkedFragmentSpreads.add(
|
||||
foundSpread[0].document.name.value
|
||||
);
|
||||
|
||||
found = (
|
||||
foundSpread[0].document.selectionSet?.selections || []
|
||||
).some(
|
||||
(s) => s.kind === "Field" && s.name.value === fieldName
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (found) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const { parent } = node as any;
|
||||
const hasIdFieldInInterfaceSelectionSet =
|
||||
parent &&
|
||||
parent.kind === "InlineFragment" &&
|
||||
parent.parent &&
|
||||
parent.parent.kind === "SelectionSet" &&
|
||||
parent.parent.selections.some(
|
||||
(s) => s.kind === "Field" && s.name.value === fieldName
|
||||
);
|
||||
|
||||
if (!found && !hasIdFieldInInterfaceSelectionSet) {
|
||||
context.report({
|
||||
loc: {
|
||||
start: {
|
||||
line: node.loc.start.line,
|
||||
column: node.loc.start.column - 1,
|
||||
},
|
||||
end: {
|
||||
line: node.loc.end.line,
|
||||
column: node.loc.end.column - 1,
|
||||
},
|
||||
},
|
||||
messageId: REQUIRE_ID_WHEN_AVAILABLE,
|
||||
data: {
|
||||
checkedFragments:
|
||||
checkedFragmentSpreads.size === 0
|
||||
? ""
|
||||
: `(${Array.from(checkedFragmentSpreads).join(", ")})`,
|
||||
fieldName,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
export default rule;
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
"tsBuildInfoFile": ".tsbuildinfo",
|
||||
"rootDir": "src",
|
||||
"skipLibCheck": true,
|
||||
"outDir": "lib"
|
||||
},
|
||||
"include": ["src"],
|
||||
"references": []
|
||||
}
|
560
yarn.lock
560
yarn.lock
|
@ -133,6 +133,13 @@
|
|||
dependencies:
|
||||
"@babel/highlight" "^7.10.4"
|
||||
|
||||
"@babel/code-frame@7.16.0", "@babel/code-frame@^7.14.5", "@babel/code-frame@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431"
|
||||
integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==
|
||||
dependencies:
|
||||
"@babel/highlight" "^7.16.0"
|
||||
|
||||
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
|
||||
|
@ -201,6 +208,15 @@
|
|||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.15.4":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.0.tgz#d40f3d1d5075e62d3500bccb67f3daa8a95265b2"
|
||||
integrity sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.0"
|
||||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.12.13":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
|
||||
|
@ -238,6 +254,15 @@
|
|||
"@babel/template" "^7.12.13"
|
||||
"@babel/types" "^7.12.13"
|
||||
|
||||
"@babel/helper-function-name@^7.15.4":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481"
|
||||
integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==
|
||||
dependencies:
|
||||
"@babel/helper-get-function-arity" "^7.16.0"
|
||||
"@babel/template" "^7.16.0"
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.12.13":
|
||||
version "7.12.13"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
|
||||
|
@ -245,6 +270,20 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.12.13"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa"
|
||||
integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/helper-hoist-variables@^7.15.4":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a"
|
||||
integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12":
|
||||
version "7.13.12"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72"
|
||||
|
@ -316,11 +355,23 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.12.13"
|
||||
|
||||
"@babel/helper-split-export-declaration@^7.15.4":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438"
|
||||
integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==
|
||||
dependencies:
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/helper-validator-identifier@^7.12.11":
|
||||
version "7.12.11"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
|
||||
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
|
||||
|
||||
"@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
|
||||
version "7.15.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
|
||||
integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
|
||||
|
||||
"@babel/helper-validator-option@^7.12.17":
|
||||
version "7.12.17"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
|
||||
|
@ -344,6 +395,20 @@
|
|||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/highlight@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
|
||||
integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.15.7"
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@7.15.8":
|
||||
version "7.15.8"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.8.tgz#7bacdcbe71bdc3ff936d510c15dcea7cf0b99016"
|
||||
integrity sha512-BRYa3wcQnjS/nqI8Ac94pYYpJfojHVvVXJ97+IDCImX4Jc8W8Xv1+47enbruk+q1etOpsQNwnfFcNGw+gtPGxA==
|
||||
|
||||
"@babel/parser@^7.0.0", "@babel/parser@^7.13.15":
|
||||
version "7.13.15"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.15.tgz#8e66775fb523599acb6a289e12929fa5ab0954d8"
|
||||
|
@ -354,6 +419,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
|
||||
integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
|
||||
|
||||
"@babel/parser@^7.15.4", "@babel/parser@^7.16.0":
|
||||
version "7.16.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.4.tgz#d5f92f57cf2c74ffe9b37981c0e72fee7311372e"
|
||||
integrity sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==
|
||||
|
||||
"@babel/plugin-proposal-class-properties@^7.0.0":
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
|
||||
|
@ -644,6 +714,30 @@
|
|||
"@babel/parser" "^7.12.13"
|
||||
"@babel/types" "^7.12.13"
|
||||
|
||||
"@babel/template@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
|
||||
integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.16.0"
|
||||
"@babel/parser" "^7.16.0"
|
||||
"@babel/types" "^7.16.0"
|
||||
|
||||
"@babel/traverse@7.15.4":
|
||||
version "7.15.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
|
||||
integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.14.5"
|
||||
"@babel/generator" "^7.15.4"
|
||||
"@babel/helper-function-name" "^7.15.4"
|
||||
"@babel/helper-hoist-variables" "^7.15.4"
|
||||
"@babel/helper-split-export-declaration" "^7.15.4"
|
||||
"@babel/parser" "^7.15.4"
|
||||
"@babel/types" "^7.15.4"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/traverse@^7.0.0", "@babel/traverse@^7.13.15":
|
||||
version "7.13.15"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.15.tgz#c38bf7679334ddd4028e8e1f7b3aa5019f0dada7"
|
||||
|
@ -672,6 +766,14 @@
|
|||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@7.15.6":
|
||||
version "7.15.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
|
||||
integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.14.9"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.3.0", "@babel/types@^7.3.3":
|
||||
version "7.13.14"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d"
|
||||
|
@ -681,6 +783,14 @@
|
|||
lodash "^4.17.19"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.15.4", "@babel/types@^7.16.0":
|
||||
version "7.16.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
|
||||
integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.15.7"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@bcoe/v8-coverage@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||
|
@ -702,6 +812,16 @@
|
|||
is-absolute "^1.0.0"
|
||||
is-negated-glob "^1.0.0"
|
||||
|
||||
"@endemolshinegroup/cosmiconfig-typescript-loader@3.0.2":
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@endemolshinegroup/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-3.0.2.tgz#eea4635828dde372838b0909693ebd9aafeec22d"
|
||||
integrity sha512-QRVtqJuS1mcT56oHpVegkKBlgtWjXw/gHNWO3eL9oyB5Sc7HBoc2OLG/nYpVfT/Jejvo3NUrD0Udk7XgoyDKkA==
|
||||
dependencies:
|
||||
lodash.get "^4"
|
||||
make-error "^1"
|
||||
ts-node "^9"
|
||||
tslib "^2"
|
||||
|
||||
"@eslint/eslintrc@^0.4.0":
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547"
|
||||
|
@ -717,6 +837,122 @@
|
|||
minimatch "^3.0.4"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@graphql-eslint/eslint-plugin@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-eslint/eslint-plugin/-/eslint-plugin-3.0.0.tgz#d0f7d6e4f6f772312500abbf6c94c59d5cb52c12"
|
||||
integrity sha512-EfkMABrCbWhhArEGg4w2r/z8sEPp1fL0Ar3xFWBX9c11t5+T5XqGAGVxUi5vuEx9PrSqhYisPrxTibqNoxuEzQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "7.16.0"
|
||||
"@graphql-tools/code-file-loader" "7.2.2"
|
||||
"@graphql-tools/graphql-tag-pluck" "7.1.3"
|
||||
"@graphql-tools/import" "6.6.1"
|
||||
"@graphql-tools/utils" "8.5.3"
|
||||
graphql-config "4.1.0"
|
||||
graphql-depth-limit "1.1.0"
|
||||
lodash.lowercase "4.3.0"
|
||||
|
||||
"@graphql-tools/batch-execute@^8.3.1":
|
||||
version "8.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.3.1.tgz#0b74c54db5ac1c5b9a273baefc034c2343ebbb74"
|
||||
integrity sha512-63kHY8ZdoO5FoeDXYHnAak1R3ysMViMPwWC2XUblFckuVLMUPmB2ONje8rjr2CvzWBHAW8c1Zsex+U3xhKtGIA==
|
||||
dependencies:
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
dataloader "2.0.0"
|
||||
tslib "~2.3.0"
|
||||
value-or-promise "1.0.11"
|
||||
|
||||
"@graphql-tools/code-file-loader@7.2.2":
|
||||
version "7.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.2.2.tgz#79f8ce5723ee87ecb4d490d1497ac7e616340358"
|
||||
integrity sha512-AADyxqipGWLBl4N59CGPgv3i35UF1fQpJvbC5a6TXmcppnghD2olDLewOh1pIQrwxGAAh1S75XVIi28PTKYZhg==
|
||||
dependencies:
|
||||
"@graphql-tools/graphql-tag-pluck" "^7.1.3"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
globby "^11.0.3"
|
||||
tslib "~2.3.0"
|
||||
unixify "^1.0.0"
|
||||
|
||||
"@graphql-tools/delegate@^8.4.1", "@graphql-tools/delegate@^8.4.2":
|
||||
version "8.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-8.4.2.tgz#a61d45719855720304e3656800342cfa17d82558"
|
||||
integrity sha512-CjggOhiL4WtyG2I3kux+1/p8lQxSFHBj0gwa0NxnQ6Vsnpw7Ig5VP1ovPnitFuBv2k4QdC37Nj2xv2n7DRn8fw==
|
||||
dependencies:
|
||||
"@graphql-tools/batch-execute" "^8.3.1"
|
||||
"@graphql-tools/schema" "^8.3.1"
|
||||
"@graphql-tools/utils" "^8.5.3"
|
||||
dataloader "2.0.0"
|
||||
tslib "~2.3.0"
|
||||
value-or-promise "1.0.11"
|
||||
|
||||
"@graphql-tools/graphql-file-loader@^7.3.2":
|
||||
version "7.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.3.3.tgz#7cee2f84f08dc13fa756820b510248b857583d36"
|
||||
integrity sha512-6kUJZiNpYKVhum9E5wfl5PyLLupEDYdH7c8l6oMrk6c7EPEVs6iSUyB7yQoWrtJccJLULBW2CRQ5IHp5JYK0mA==
|
||||
dependencies:
|
||||
"@graphql-tools/import" "^6.5.7"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
globby "^11.0.3"
|
||||
tslib "~2.3.0"
|
||||
unixify "^1.0.0"
|
||||
|
||||
"@graphql-tools/graphql-tag-pluck@7.1.3", "@graphql-tools/graphql-tag-pluck@^7.1.3":
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.1.3.tgz#2c638aac84f279f95bf3da50b71f2b4b82641539"
|
||||
integrity sha512-zxVYLiAnNxFg6bnDZdNpLJNfjf6GHYLQsVHDcbYyQcWJzIaeWPylX/Q1gyvw8MFO4ICYExNPqgBA/is2kZBlHw==
|
||||
dependencies:
|
||||
"@babel/parser" "7.15.8"
|
||||
"@babel/traverse" "7.15.4"
|
||||
"@babel/types" "7.15.6"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/import@6.6.1", "@graphql-tools/import@^6.5.7":
|
||||
version "6.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.6.1.tgz#2a7e1ceda10103ffeb8652a48ddc47150b035485"
|
||||
integrity sha512-i9WA6k+erJMci822o9w9DoX+uncVBK60LGGYW8mdbhX0l7wEubUpA000thJ1aarCusYh0u+ZT9qX0HyVPXu25Q==
|
||||
dependencies:
|
||||
"@graphql-tools/utils" "8.5.3"
|
||||
resolve-from "5.0.0"
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/json-file-loader@^7.3.2":
|
||||
version "7.3.3"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.3.3.tgz#45cfde77b9dc4ab6c21575305ae537d2814d237f"
|
||||
integrity sha512-CN2Qk9rt+Gepa3rb3X/mpxYA5MIYLwZBPj2Njw6lbZ6AaxG+O1ArDCL5ACoiWiBimn1FCOM778uhRM9znd0b3Q==
|
||||
dependencies:
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
globby "^11.0.3"
|
||||
tslib "~2.3.0"
|
||||
unixify "^1.0.0"
|
||||
|
||||
"@graphql-tools/load@^7.4.1":
|
||||
version "7.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.4.1.tgz#aa572fcef11d6028097b6ef39c13fa9d62e5a441"
|
||||
integrity sha512-UvBodW5hRHpgBUBVz5K5VIhJDOTFIbRRAGD6sQ2l9J5FDKBEs3u/6JjZDzbdL96br94D5cEd2Tk6auaHpTn7mQ==
|
||||
dependencies:
|
||||
"@graphql-tools/schema" "8.3.1"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
p-limit "3.1.0"
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/merge@^8.2.1":
|
||||
version "8.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.2.1.tgz#bf83aa06a0cfc6a839e52a58057a84498d0d51ff"
|
||||
integrity sha512-Q240kcUszhXiAYudjuJgNuLgy9CryDP3wp83NOZQezfA6h3ByYKU7xI6DiKrdjyVaGpYN3ppUmdj0uf5GaXzMA==
|
||||
dependencies:
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/schema@8.3.1", "@graphql-tools/schema@^8.3.1":
|
||||
version "8.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.3.1.tgz#1ee9da494d2da457643b3c93502b94c3c4b68c74"
|
||||
integrity sha512-3R0AJFe715p4GwF067G5i0KCr/XIdvSfDLvTLEiTDQ8V/hwbOHEKHKWlEBHGRQwkG5lwFQlW1aOn7VnlPERnWQ==
|
||||
dependencies:
|
||||
"@graphql-tools/merge" "^8.2.1"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
tslib "~2.3.0"
|
||||
value-or-promise "1.0.11"
|
||||
|
||||
"@graphql-tools/schema@^7.1.5":
|
||||
version "7.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.1.5.tgz#07b24e52b182e736a6b77c829fc48b84d89aa711"
|
||||
|
@ -726,6 +962,38 @@
|
|||
tslib "~2.2.0"
|
||||
value-or-promise "1.0.6"
|
||||
|
||||
"@graphql-tools/url-loader@^7.4.2":
|
||||
version "7.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.5.2.tgz#fb3737fd1269ab61b195b63052179b6049d90ce1"
|
||||
integrity sha512-EilHqbhUY/qg55SSEdklDhPXgSz9+9a63SX3mcD8J2qwZHJD/wOLcyKs8m6BXfuGwUiuB0j3fmDSEVmva2onBg==
|
||||
dependencies:
|
||||
"@graphql-tools/delegate" "^8.4.1"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
"@graphql-tools/wrap" "^8.3.1"
|
||||
"@n1ru4l/graphql-live-query" "0.9.0"
|
||||
"@types/websocket" "1.0.4"
|
||||
"@types/ws" "^8.0.0"
|
||||
cross-undici-fetch "^0.0.20"
|
||||
dset "^3.1.0"
|
||||
extract-files "11.0.0"
|
||||
graphql-sse "^1.0.1"
|
||||
graphql-ws "^5.4.1"
|
||||
isomorphic-ws "4.0.1"
|
||||
meros "1.1.4"
|
||||
subscriptions-transport-ws "^0.11.0"
|
||||
sync-fetch "0.3.1"
|
||||
tslib "~2.3.0"
|
||||
valid-url "1.0.9"
|
||||
value-or-promise "1.0.11"
|
||||
ws "8.2.3"
|
||||
|
||||
"@graphql-tools/utils@8.5.3", "@graphql-tools/utils@^8.5.1", "@graphql-tools/utils@^8.5.3":
|
||||
version "8.5.3"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.5.3.tgz#404062e62cae9453501197039687749c4885356e"
|
||||
integrity sha512-HDNGWFVa8QQkoQB0H1lftvaO1X5xUaUDk1zr1qDe0xN1NL0E/CrQdJ5UKLqOvH4hkqVUPxQsyOoAZFkaH6rLHg==
|
||||
dependencies:
|
||||
tslib "~2.3.0"
|
||||
|
||||
"@graphql-tools/utils@^7.1.2":
|
||||
version "7.10.0"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.10.0.tgz#07a4cb5d1bec1ff1dc1d47a935919ee6abd38699"
|
||||
|
@ -735,11 +1003,27 @@
|
|||
camel-case "4.1.2"
|
||||
tslib "~2.2.0"
|
||||
|
||||
"@graphql-tools/wrap@^8.3.1":
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-8.3.2.tgz#d3bcecb7529d071e4ecc4dfc75b9566e3da79d4f"
|
||||
integrity sha512-7DcOBFB+Dd84x9dxSm7qS4iJONMyfLnCJb8A19vGPffpu4SMJ3sFcgwibKFu5l6mMUiigKgXna2RRgWI+02bKQ==
|
||||
dependencies:
|
||||
"@graphql-tools/delegate" "^8.4.2"
|
||||
"@graphql-tools/schema" "^8.3.1"
|
||||
"@graphql-tools/utils" "^8.5.3"
|
||||
tslib "~2.3.0"
|
||||
value-or-promise "1.0.11"
|
||||
|
||||
"@graphql-typed-document-node/core@^3.0.0":
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.0.tgz#0eee6373e11418bfe0b5638f654df7a4ca6a3950"
|
||||
integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg==
|
||||
|
||||
"@iarna/toml@^2.2.5":
|
||||
version "2.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
|
||||
integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==
|
||||
|
||||
"@istanbuljs/load-nyc-config@^1.0.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
|
||||
|
@ -935,6 +1219,11 @@
|
|||
memory-streams "^0.1.3"
|
||||
p-graph "^1.1.0"
|
||||
|
||||
"@n1ru4l/graphql-live-query@0.9.0":
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@n1ru4l/graphql-live-query/-/graphql-live-query-0.9.0.tgz#defaebdd31f625bee49e6745934f36312532b2bc"
|
||||
integrity sha512-BTpWy1e+FxN82RnLz4x1+JcEewVdfmUhV1C6/XYD5AjS7PQp9QFF7K8bCD6gzPTr2l+prvqOyVueQhFJxB1vfg==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.4":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
|
||||
|
@ -1324,6 +1613,20 @@
|
|||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/websocket@1.0.4":
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8"
|
||||
integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/ws@^8.0.0":
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.0.tgz#75faefbe2328f3b833cb8dc640658328990d04f3"
|
||||
integrity sha512-cyeefcUCgJlEk+hk2h3N+MqKKsPViQgF5boi9TTHSK+PoR9KWBb/C5ccPcDyAqgsbAYHTwulch725DV84+pSpg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/yargs-parser@*":
|
||||
version "20.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9"
|
||||
|
@ -1706,6 +2009,11 @@ array-unique@^0.3.2:
|
|||
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
||||
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
||||
|
||||
arrify@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
||||
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
|
||||
|
||||
arrify@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa"
|
||||
|
@ -1975,6 +2283,11 @@ backfill@^6.1.1:
|
|||
globby "^11.0.0"
|
||||
yargs "^16.1.1"
|
||||
|
||||
backo2@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
|
||||
integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
|
||||
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
|
@ -2133,7 +2446,7 @@ buffer-from@1.x, buffer-from@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
||||
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
|
||||
|
||||
buffer@^5.5.0:
|
||||
buffer@^5.5.0, buffer@^5.7.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||
|
@ -2455,6 +2768,24 @@ core-util-is@1.0.2, core-util-is@~1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||
|
||||
cosmiconfig-toml-loader@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig-toml-loader/-/cosmiconfig-toml-loader-1.0.0.tgz#0681383651cceff918177debe9084c0d3769509b"
|
||||
integrity sha512-H/2gurFWVi7xXvCyvsWRLCMekl4tITJcX0QEsDMpzxtuxDyM59xLatYNg4s/k9AA/HdtCYfj2su8mgA0GSDLDA==
|
||||
dependencies:
|
||||
"@iarna/toml" "^2.2.5"
|
||||
|
||||
cosmiconfig@7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
|
||||
integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
|
||||
dependencies:
|
||||
"@types/parse-json" "^4.0.0"
|
||||
import-fresh "^3.2.1"
|
||||
parse-json "^5.0.0"
|
||||
path-type "^4.0.0"
|
||||
yaml "^1.10.0"
|
||||
|
||||
cosmiconfig@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
|
||||
|
@ -2498,6 +2829,16 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2:
|
|||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
cross-undici-fetch@^0.0.20:
|
||||
version "0.0.20"
|
||||
resolved "https://registry.yarnpkg.com/cross-undici-fetch/-/cross-undici-fetch-0.0.20.tgz#6b7c5ac82a3601edd439f37275ac0319d77a120a"
|
||||
integrity sha512-5d3WBC4VRHpFndECK9bx4TngXrw0OUXdhX561Ty1ZoqMASz9uf55BblhTC1CO6GhMWnvk9SOqYEXQliq6D2P4A==
|
||||
dependencies:
|
||||
abort-controller "^3.0.0"
|
||||
form-data "^4.0.0"
|
||||
node-fetch "^2.6.5"
|
||||
undici "^4.9.3"
|
||||
|
||||
cssom@^0.4.4:
|
||||
version "0.4.4"
|
||||
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
|
||||
|
@ -2544,6 +2885,11 @@ data-urls@^2.0.0:
|
|||
whatwg-mimetype "^2.3.0"
|
||||
whatwg-url "^8.0.0"
|
||||
|
||||
dataloader@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f"
|
||||
integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==
|
||||
|
||||
debug@^2.2.0, debug@^2.3.3:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
|
@ -2673,6 +3019,11 @@ dotenv@^8.1.0:
|
|||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
|
||||
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
|
||||
|
||||
dset@^3.1.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.1.tgz#07de5af7a8d03eab337ad1a8ba77fe17bba61a8c"
|
||||
integrity sha512-hYf+jZNNqJBD2GiMYb+5mqOIX4R4RRHXU3qWMWYN+rqcR2/YpRL2bUHr8C8fU+5DNvqYjJ8YvMGSLuVPWU1cNg==
|
||||
|
||||
ecc-jsbn@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
|
||||
|
@ -2901,6 +3252,11 @@ event-target-shim@^5.0.0:
|
|||
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
|
||||
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
|
||||
|
||||
eventemitter3@^3.1.0:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
|
||||
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
|
||||
|
||||
events@^3.0.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
|
||||
|
@ -3010,6 +3366,11 @@ extglob@^2.0.4:
|
|||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
extract-files@11.0.0:
|
||||
version "11.0.0"
|
||||
resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a"
|
||||
integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==
|
||||
|
||||
extsprintf@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||
|
@ -3220,6 +3581,15 @@ form-data@^3.0.0:
|
|||
combined-stream "^1.0.8"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
form-data@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
|
||||
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.8"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
form-data@~2.3.2:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
|
||||
|
@ -3470,11 +3840,47 @@ globby@^11.0.0, globby@^11.0.1:
|
|||
merge2 "^1.3.0"
|
||||
slash "^3.0.0"
|
||||
|
||||
globby@^11.0.3:
|
||||
version "11.0.4"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5"
|
||||
integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==
|
||||
dependencies:
|
||||
array-union "^2.1.0"
|
||||
dir-glob "^3.0.1"
|
||||
fast-glob "^3.1.1"
|
||||
ignore "^5.1.4"
|
||||
merge2 "^1.3.0"
|
||||
slash "^3.0.0"
|
||||
|
||||
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
|
||||
version "4.2.6"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
|
||||
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
|
||||
|
||||
graphql-config@4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.1.0.tgz#a3b28d3fb537952ebeb69c75e4430605a10695e3"
|
||||
integrity sha512-Myqay6pmdcmX3KqoH+bMbeKZ1cTODpHS2CxF1ZzNnfTE+YUpGTcp01bOw6LpzamRb0T/WTYtGFbZeXGo9Hab2Q==
|
||||
dependencies:
|
||||
"@endemolshinegroup/cosmiconfig-typescript-loader" "3.0.2"
|
||||
"@graphql-tools/graphql-file-loader" "^7.3.2"
|
||||
"@graphql-tools/json-file-loader" "^7.3.2"
|
||||
"@graphql-tools/load" "^7.4.1"
|
||||
"@graphql-tools/merge" "^8.2.1"
|
||||
"@graphql-tools/url-loader" "^7.4.2"
|
||||
"@graphql-tools/utils" "^8.5.1"
|
||||
cosmiconfig "7.0.1"
|
||||
cosmiconfig-toml-loader "1.0.0"
|
||||
minimatch "3.0.4"
|
||||
string-env-interpolation "1.0.1"
|
||||
|
||||
graphql-depth-limit@1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/graphql-depth-limit/-/graphql-depth-limit-1.1.0.tgz#59fe6b2acea0ab30ee7344f4c75df39cc18244e8"
|
||||
integrity sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw==
|
||||
dependencies:
|
||||
arrify "^1.0.1"
|
||||
|
||||
graphql-jit@^0.5.1:
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/graphql-jit/-/graphql-jit-0.5.1.tgz#738cb2c772a65e9682f04f20dc8edac4365023da"
|
||||
|
@ -3487,6 +3893,11 @@ graphql-jit@^0.5.1:
|
|||
lodash.merge "4.6.2"
|
||||
lodash.mergewith "4.6.2"
|
||||
|
||||
graphql-sse@^1.0.1:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/graphql-sse/-/graphql-sse-1.0.6.tgz#4f98e0a06f2020542ed054399116108491263224"
|
||||
integrity sha512-y2mVBN2KwNrzxX2KBncQ6kzc6JWvecxuBernrl0j65hsr6MAS3+Yn8PTFSOgRmtolxugepxveyZVQEuaNEbw3w==
|
||||
|
||||
graphql-tag@^2.12.0:
|
||||
version "2.12.3"
|
||||
resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.3.tgz#ac47bf9d51c67c68ada8a33fd527143ed15bb647"
|
||||
|
@ -3494,6 +3905,11 @@ graphql-tag@^2.12.0:
|
|||
dependencies:
|
||||
tslib "^2.1.0"
|
||||
|
||||
graphql-ws@^5.4.1:
|
||||
version "5.5.5"
|
||||
resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.5.5.tgz#f375486d3f196e2a2527b503644693ae3a8670a9"
|
||||
integrity sha512-hvyIS71vs4Tu/yUYHPvGXsTgo0t3arU820+lT5VjZS2go0ewp2LqyCgxEN56CzOG7Iys52eRhHBiD1gGRdiQtw==
|
||||
|
||||
graphql@^14.5.3:
|
||||
version "14.7.0"
|
||||
resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72"
|
||||
|
@ -3996,6 +4412,11 @@ isobject@^3.0.0, isobject@^3.0.1:
|
|||
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
||||
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
|
||||
|
||||
isomorphic-ws@4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
|
||||
integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
|
||||
|
||||
isstream@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
|
@ -4042,7 +4463,7 @@ istanbul-reports@^3.0.2:
|
|||
html-escaper "^2.0.0"
|
||||
istanbul-lib-report "^3.0.0"
|
||||
|
||||
iterall@^1.2.2:
|
||||
iterall@^1.2.1, iterall@^1.2.2:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
|
||||
integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
|
||||
|
@ -4724,7 +5145,7 @@ lodash.flatten@^4.4.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
||||
integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=
|
||||
|
||||
lodash.get@^4.0.0:
|
||||
lodash.get@^4, lodash.get@^4.0.0:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
||||
|
@ -4734,6 +5155,11 @@ lodash.isequal@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
|
||||
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
|
||||
|
||||
lodash.lowercase@4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d"
|
||||
integrity sha1-RlFaztSssLcJMTMzOvBo5MOxTp0=
|
||||
|
||||
lodash.memoize@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
|
||||
|
@ -4792,7 +5218,7 @@ make-dir@^3.0.0:
|
|||
dependencies:
|
||||
semver "^6.0.0"
|
||||
|
||||
make-error@1.x, make-error@^1.1.1:
|
||||
make-error@1.x, make-error@^1, make-error@^1.1.1:
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
|
||||
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
||||
|
@ -4857,6 +5283,11 @@ merge2@^1.3.0:
|
|||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||
|
||||
meros@1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/meros/-/meros-1.1.4.tgz#c17994d3133db8b23807f62bec7f0cb276cfd948"
|
||||
integrity sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==
|
||||
|
||||
micromatch@^3.1.10, micromatch@^3.1.4:
|
||||
version "3.1.10"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
||||
|
@ -4909,7 +5340,7 @@ mimic-fn@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
minimatch@^3.0.4:
|
||||
minimatch@3.0.4, minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||
|
@ -5056,6 +5487,13 @@ node-fetch@2.6.1, node-fetch@^2.6.0:
|
|||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
|
||||
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
|
||||
|
||||
node-fetch@^2.6.1, node-fetch@^2.6.5:
|
||||
version "2.6.6"
|
||||
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89"
|
||||
integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==
|
||||
dependencies:
|
||||
whatwg-url "^5.0.0"
|
||||
|
||||
node-int64@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
|
||||
|
@ -5295,6 +5733,13 @@ p-graph@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/p-graph/-/p-graph-1.1.0.tgz#c914cf067f8d4abc31a8a3cfcb932c213845df6a"
|
||||
integrity sha512-IfwchSZEUfZHhdHrLSUPIbZfawOshc/UrTmdhT/BRjD428Fd78jVl4NUbIvWjUq+NxrenRjx8518VtQeIvbtMA==
|
||||
|
||||
p-limit@3.1.0, p-limit@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
|
||||
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
|
||||
dependencies:
|
||||
yocto-queue "^0.1.0"
|
||||
|
||||
p-limit@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
|
||||
|
@ -5302,13 +5747,6 @@ p-limit@^2.2.0:
|
|||
dependencies:
|
||||
p-try "^2.0.0"
|
||||
|
||||
p-limit@^3.0.2:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
|
||||
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
|
||||
dependencies:
|
||||
yocto-queue "^0.1.0"
|
||||
|
||||
p-locate@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
|
||||
|
@ -5867,16 +6305,16 @@ resolve-cwd@^3.0.0:
|
|||
dependencies:
|
||||
resolve-from "^5.0.0"
|
||||
|
||||
resolve-from@5.0.0, resolve-from@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
|
||||
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
|
||||
|
||||
resolve-from@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
||||
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
|
||||
|
||||
resolve-from@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
|
||||
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
|
||||
|
||||
resolve-url@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
|
@ -6265,6 +6703,11 @@ strict-uri-encode@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
|
||||
integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY=
|
||||
|
||||
string-env-interpolation@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152"
|
||||
integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==
|
||||
|
||||
string-length@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
|
||||
|
@ -6371,6 +6814,17 @@ strip-outer@^1.0.1:
|
|||
dependencies:
|
||||
escape-string-regexp "^1.0.2"
|
||||
|
||||
subscriptions-transport-ws@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz#baf88f050cba51d52afe781de5e81b3c31f89883"
|
||||
integrity sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==
|
||||
dependencies:
|
||||
backo2 "^1.0.2"
|
||||
eventemitter3 "^3.1.0"
|
||||
iterall "^1.2.1"
|
||||
symbol-observable "^1.0.4"
|
||||
ws "^5.2.0 || ^6.0.0 || ^7.0.0"
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
||||
|
@ -6400,6 +6854,11 @@ supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.1.0:
|
|||
has-flag "^4.0.0"
|
||||
supports-color "^7.0.0"
|
||||
|
||||
symbol-observable@^1.0.4:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
|
||||
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
|
||||
|
||||
symbol-observable@^2.0.0:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a"
|
||||
|
@ -6410,6 +6869,14 @@ symbol-tree@^3.2.4:
|
|||
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
|
||||
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
|
||||
|
||||
sync-fetch@0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.3.1.tgz#62aa82c4b4d43afd6906bfd7b5f92056458509f0"
|
||||
integrity sha512-xj5qiCDap/03kpci5a+qc5wSJjc8ZSixgG2EUmH1B8Ea2sfWclQA7eH40hiHPCtkCn6MCk4Wb+dqcXdCy2PP3g==
|
||||
dependencies:
|
||||
buffer "^5.7.0"
|
||||
node-fetch "^2.6.1"
|
||||
|
||||
table@^6.0.4:
|
||||
version "6.0.9"
|
||||
resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb"
|
||||
|
@ -6583,6 +7050,11 @@ tr46@^2.0.2:
|
|||
dependencies:
|
||||
punycode "^2.1.1"
|
||||
|
||||
tr46@~0.0.3:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
|
||||
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
|
||||
|
||||
trim-repeated@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
|
||||
|
@ -6634,7 +7106,7 @@ ts-node@^10.0.0:
|
|||
source-map-support "^0.5.17"
|
||||
yn "3.1.1"
|
||||
|
||||
ts-node@^9.1.1:
|
||||
ts-node@^9, ts-node@^9.1.1:
|
||||
version "9.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
|
||||
integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
|
||||
|
@ -6658,6 +7130,11 @@ tslib@^1.10.0, tslib@^1.8.1:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@^2, tslib@~2.3.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
||||
|
||||
tslib@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
|
||||
|
@ -6814,6 +7291,11 @@ undertaker@^1.3.0:
|
|||
object.reduce "^1.0.0"
|
||||
undertaker-registry "^1.0.0"
|
||||
|
||||
undici@^4.9.3:
|
||||
version "4.10.2"
|
||||
resolved "https://registry.yarnpkg.com/undici/-/undici-4.10.2.tgz#27e360f2d4202ef98dfc1c8e13dcd329660a6d7c"
|
||||
integrity sha512-QoQH4PpV3dqJwr4h1HazggbB4f5CBknvYANjI9hxXCml+AAzLoh4HBkce0Jc0wW/pmVbrus8Gfeo8QounE+/9g==
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
|
||||
|
@ -6834,6 +7316,13 @@ universalify@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
|
||||
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
|
||||
|
||||
unixify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090"
|
||||
integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=
|
||||
dependencies:
|
||||
normalize-path "^2.1.1"
|
||||
|
||||
unset-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
|
||||
|
@ -6893,6 +7382,11 @@ v8-to-istanbul@^7.0.0:
|
|||
convert-source-map "^1.6.0"
|
||||
source-map "^0.7.3"
|
||||
|
||||
valid-url@1.0.9:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200"
|
||||
integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=
|
||||
|
||||
validate-npm-package-license@^3.0.1:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
|
||||
|
@ -6906,6 +7400,11 @@ validator@^8.0.0:
|
|||
resolved "https://registry.yarnpkg.com/validator/-/validator-8.2.0.tgz#3c1237290e37092355344fef78c231249dab77b9"
|
||||
integrity sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==
|
||||
|
||||
value-or-promise@1.0.11:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140"
|
||||
integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==
|
||||
|
||||
value-or-promise@1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.6.tgz#218aa4794aa2ee24dcf48a29aba4413ed584747f"
|
||||
|
@ -6941,6 +7440,11 @@ walker@^1.0.7, walker@~1.0.5:
|
|||
dependencies:
|
||||
makeerror "1.0.x"
|
||||
|
||||
webidl-conversions@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||
integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
|
||||
|
||||
webidl-conversions@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
|
||||
|
@ -6971,6 +7475,14 @@ whatwg-mimetype@^2.3.0:
|
|||
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
|
||||
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
|
||||
|
||||
whatwg-url@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
|
||||
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0=
|
||||
dependencies:
|
||||
tr46 "~0.0.3"
|
||||
webidl-conversions "^3.0.0"
|
||||
|
||||
whatwg-url@^8.0.0, whatwg-url@^8.5.0:
|
||||
version "8.5.0"
|
||||
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3"
|
||||
|
@ -7088,6 +7600,16 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3:
|
|||
signal-exit "^3.0.2"
|
||||
typedarray-to-buffer "^3.1.5"
|
||||
|
||||
ws@8.2.3:
|
||||
version "8.2.3"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
|
||||
integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
|
||||
|
||||
"ws@^5.2.0 || ^6.0.0 || ^7.0.0":
|
||||
version "7.5.5"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881"
|
||||
integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==
|
||||
|
||||
ws@^7.4.4:
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59"
|
||||
|
@ -7136,7 +7658,7 @@ yallist@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
|
||||
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
||||
|
||||
yaml@^1.7.2:
|
||||
yaml@^1.10.0, yaml@^1.7.2:
|
||||
version "1.10.2"
|
||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
||||
|
|
Загрузка…
Ссылка в новой задаче