@envelop/extended-validation 1.1.0 → 1.2.0-alpha-e8998c9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +4 -5
- package/index.mjs +1 -2
- package/package.json +2 -2
- package/index.js.map +0 -1
- package/index.mjs.map +0 -1
package/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const graphql = require('graphql');
|
|
6
|
-
const
|
|
6
|
+
const values_js = require('graphql/execution/values.js');
|
|
7
7
|
|
|
8
8
|
const SYMBOL_EXTENDED_VALIDATION_RULES = Symbol('SYMBOL_EXTENDED_VALIDATION_RULES');
|
|
9
9
|
const useExtendedValidation = (options) => {
|
|
@@ -71,11 +71,11 @@ const OneOfInputObjectsRule = (validationContext, executionArgs) => {
|
|
|
71
71
|
if (!fieldType) {
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
74
|
-
const values
|
|
74
|
+
const values = values_js.getArgumentValues(fieldType, node, executionArgs.variableValues);
|
|
75
75
|
if (fieldType) {
|
|
76
76
|
const isOneOfFieldType = ((_b = fieldType.extensions) === null || _b === void 0 ? void 0 : _b.oneOf) || (fieldType.astNode && getDirectiveFromAstNode(fieldType.astNode, 'oneOf'));
|
|
77
77
|
if (isOneOfFieldType) {
|
|
78
|
-
if (Object.keys(values
|
|
78
|
+
if (Object.keys(values).length !== 1) {
|
|
79
79
|
validationContext.reportError(new graphql.GraphQLError(`Exactly one key must be specified for input for field "${fieldType.type.toString()}.${node.name.value}"`, [node]));
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -83,7 +83,7 @@ const OneOfInputObjectsRule = (validationContext, executionArgs) => {
|
|
|
83
83
|
for (const arg of node.arguments) {
|
|
84
84
|
const argType = fieldType.args.find(typeArg => typeArg.name === arg.name.value);
|
|
85
85
|
if (argType) {
|
|
86
|
-
traverseVariables(validationContext, arg, argType.type, values
|
|
86
|
+
traverseVariables(validationContext, arg, argType.type, values[arg.name.value]);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}
|
|
@@ -130,4 +130,3 @@ exports.OneOfInputObjectsRule = OneOfInputObjectsRule;
|
|
|
130
130
|
exports.getDirectiveFromAstNode = getDirectiveFromAstNode;
|
|
131
131
|
exports.unwrapType = unwrapType;
|
|
132
132
|
exports.useExtendedValidation = useExtendedValidation;
|
|
133
|
-
//# sourceMappingURL=index.js.map
|
package/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TypeInfo, ValidationContext, visitInParallel, visit, visitWithTypeInfo, isNonNullType, isListType, GraphQLError, GraphQLInputObjectType } from 'graphql';
|
|
2
|
-
import { getArgumentValues } from 'graphql/execution/values';
|
|
2
|
+
import { getArgumentValues } from 'graphql/execution/values.js';
|
|
3
3
|
|
|
4
4
|
const SYMBOL_EXTENDED_VALIDATION_RULES = Symbol('SYMBOL_EXTENDED_VALIDATION_RULES');
|
|
5
5
|
const useExtendedValidation = (options) => {
|
|
@@ -122,4 +122,3 @@ function traverseVariables(validationContext, arg, graphqlType, currentValue) {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
export { ONE_OF_DIRECTIVE_SDL, OneOfInputObjectsRule, getDirectiveFromAstNode, unwrapType, useExtendedValidation };
|
|
125
|
-
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@envelop/extended-validation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0-alpha-e8998c9.0",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"graphql": "^14.0.0 || ^15.0.0"
|
|
6
|
+
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
|
|
7
7
|
},
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../dist/plugins/extended-validation/src/plugin.js","../../../dist/plugins/extended-validation/src/common.js","../../../dist/plugins/extended-validation/src/rules/one-of.js"],"sourcesContent":["import { TypeInfo, ValidationContext, visit, visitInParallel, visitWithTypeInfo, } from 'graphql';\nconst SYMBOL_EXTENDED_VALIDATION_RULES = Symbol('SYMBOL_EXTENDED_VALIDATION_RULES');\nexport const useExtendedValidation = (options) => {\n let schemaTypeInfo;\n return {\n onSchemaChange({ schema }) {\n schemaTypeInfo = new TypeInfo(schema);\n },\n onParse({ context, extendContext }) {\n var _a;\n const rules = (_a = context === null || context === void 0 ? void 0 : context[SYMBOL_EXTENDED_VALIDATION_RULES]) !== null && _a !== void 0 ? _a : [];\n rules.push(...options.rules);\n extendContext({\n [SYMBOL_EXTENDED_VALIDATION_RULES]: rules,\n });\n },\n onExecute({ args, setResultAndStopExecution }) {\n const rules = args.contextValue[SYMBOL_EXTENDED_VALIDATION_RULES];\n const errors = [];\n const typeInfo = schemaTypeInfo || new TypeInfo(args.schema);\n const validationContext = new ValidationContext(args.schema, args.document, typeInfo, e => {\n errors.push(e);\n });\n const visitor = visitInParallel(rules.map(rule => rule(validationContext, args)));\n visit(args.document, visitWithTypeInfo(typeInfo, visitor));\n for (const rule of rules) {\n rule(validationContext, args);\n }\n if (errors.length > 0) {\n let result = {\n data: null,\n errors,\n };\n if (options.onValidationFailed) {\n options.onValidationFailed({ args, result, setResult: newResult => (result = newResult) });\n }\n return setResultAndStopExecution(result);\n }\n },\n };\n};\n//# sourceMappingURL=plugin.js.map","import { isListType, isNonNullType, } from 'graphql';\nexport function getDirectiveFromAstNode(astNode, names) {\n const directives = astNode.directives || [];\n const namesArr = Array.isArray(names) ? names : [names];\n const authDirective = directives.find(d => namesArr.includes(d.name.value));\n return authDirective || null;\n}\nexport function unwrapType(type) {\n if (isNonNullType(type) || isListType(type)) {\n return unwrapType(type.ofType);\n }\n return type;\n}\n//# sourceMappingURL=common.js.map","import { GraphQLError, GraphQLInputObjectType, isListType } from 'graphql';\nimport { getArgumentValues } from 'graphql/execution/values';\nimport { getDirectiveFromAstNode, unwrapType } from '../common';\nexport const ONE_OF_DIRECTIVE_SDL = /* GraphQL */ `\n directive @oneOf on INPUT_OBJECT | FIELD_DEFINITION\n`;\nexport const OneOfInputObjectsRule = (validationContext, executionArgs) => {\n return {\n Field: node => {\n var _a, _b;\n if ((_a = node.arguments) === null || _a === void 0 ? void 0 : _a.length) {\n const fieldType = validationContext.getFieldDef();\n if (!fieldType) {\n return;\n }\n const values = getArgumentValues(fieldType, node, executionArgs.variableValues);\n if (fieldType) {\n const isOneOfFieldType = ((_b = fieldType.extensions) === null || _b === void 0 ? void 0 : _b.oneOf) || (fieldType.astNode && getDirectiveFromAstNode(fieldType.astNode, 'oneOf'));\n if (isOneOfFieldType) {\n if (Object.keys(values).length !== 1) {\n validationContext.reportError(new GraphQLError(`Exactly one key must be specified for input for field \"${fieldType.type.toString()}.${node.name.value}\"`, [node]));\n }\n }\n }\n for (const arg of node.arguments) {\n const argType = fieldType.args.find(typeArg => typeArg.name === arg.name.value);\n if (argType) {\n traverseVariables(validationContext, arg, argType.type, values[arg.name.value]);\n }\n }\n }\n },\n };\n};\nfunction traverseVariables(validationContext, arg, graphqlType, currentValue) {\n var _a;\n // if the current value is empty we don't need to traverse deeper\n // if it shouldn't be empty, the \"original\" validation phase should complain.\n if (currentValue == null) {\n return;\n }\n if (isListType(graphqlType)) {\n if (!Array.isArray(currentValue)) {\n // because of graphql type coercion a single object should be treated as an array of one object\n currentValue = [currentValue];\n }\n currentValue.forEach(value => {\n traverseVariables(validationContext, arg, graphqlType.ofType, value);\n });\n return;\n }\n if (typeof currentValue !== 'object' || currentValue == null) {\n // in case the value is not an object, the \"original\" validation phase should complain.\n return;\n }\n const inputType = unwrapType(graphqlType);\n const isOneOfInputType = ((_a = inputType.extensions) === null || _a === void 0 ? void 0 : _a.oneOf) || (inputType.astNode && getDirectiveFromAstNode(inputType.astNode, 'oneOf'));\n if (isOneOfInputType) {\n if (Object.keys(currentValue).length !== 1) {\n validationContext.reportError(new GraphQLError(`Exactly one key must be specified for input type \"${inputType.name}\"`, [arg]));\n }\n }\n if (inputType instanceof GraphQLInputObjectType) {\n for (const [name, fieldConfig] of Object.entries(inputType.getFields())) {\n traverseVariables(validationContext, arg, fieldConfig.type, currentValue[name]);\n }\n }\n}\n//# sourceMappingURL=one-of.js.map"],"names":["TypeInfo","ValidationContext","visitInParallel","visit","visitWithTypeInfo","isNonNullType","isListType","values","getArgumentValues","GraphQLError","GraphQLInputObjectType"],"mappings":"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"}
|
package/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../dist/plugins/extended-validation/src/plugin.js","../../../dist/plugins/extended-validation/src/common.js","../../../dist/plugins/extended-validation/src/rules/one-of.js"],"sourcesContent":["import { TypeInfo, ValidationContext, visit, visitInParallel, visitWithTypeInfo, } from 'graphql';\nconst SYMBOL_EXTENDED_VALIDATION_RULES = Symbol('SYMBOL_EXTENDED_VALIDATION_RULES');\nexport const useExtendedValidation = (options) => {\n let schemaTypeInfo;\n return {\n onSchemaChange({ schema }) {\n schemaTypeInfo = new TypeInfo(schema);\n },\n onParse({ context, extendContext }) {\n var _a;\n const rules = (_a = context === null || context === void 0 ? void 0 : context[SYMBOL_EXTENDED_VALIDATION_RULES]) !== null && _a !== void 0 ? _a : [];\n rules.push(...options.rules);\n extendContext({\n [SYMBOL_EXTENDED_VALIDATION_RULES]: rules,\n });\n },\n onExecute({ args, setResultAndStopExecution }) {\n const rules = args.contextValue[SYMBOL_EXTENDED_VALIDATION_RULES];\n const errors = [];\n const typeInfo = schemaTypeInfo || new TypeInfo(args.schema);\n const validationContext = new ValidationContext(args.schema, args.document, typeInfo, e => {\n errors.push(e);\n });\n const visitor = visitInParallel(rules.map(rule => rule(validationContext, args)));\n visit(args.document, visitWithTypeInfo(typeInfo, visitor));\n for (const rule of rules) {\n rule(validationContext, args);\n }\n if (errors.length > 0) {\n let result = {\n data: null,\n errors,\n };\n if (options.onValidationFailed) {\n options.onValidationFailed({ args, result, setResult: newResult => (result = newResult) });\n }\n return setResultAndStopExecution(result);\n }\n },\n };\n};\n//# sourceMappingURL=plugin.js.map","import { isListType, isNonNullType, } from 'graphql';\nexport function getDirectiveFromAstNode(astNode, names) {\n const directives = astNode.directives || [];\n const namesArr = Array.isArray(names) ? names : [names];\n const authDirective = directives.find(d => namesArr.includes(d.name.value));\n return authDirective || null;\n}\nexport function unwrapType(type) {\n if (isNonNullType(type) || isListType(type)) {\n return unwrapType(type.ofType);\n }\n return type;\n}\n//# sourceMappingURL=common.js.map","import { GraphQLError, GraphQLInputObjectType, isListType } from 'graphql';\nimport { getArgumentValues } from 'graphql/execution/values';\nimport { getDirectiveFromAstNode, unwrapType } from '../common';\nexport const ONE_OF_DIRECTIVE_SDL = /* GraphQL */ `\n directive @oneOf on INPUT_OBJECT | FIELD_DEFINITION\n`;\nexport const OneOfInputObjectsRule = (validationContext, executionArgs) => {\n return {\n Field: node => {\n var _a, _b;\n if ((_a = node.arguments) === null || _a === void 0 ? void 0 : _a.length) {\n const fieldType = validationContext.getFieldDef();\n if (!fieldType) {\n return;\n }\n const values = getArgumentValues(fieldType, node, executionArgs.variableValues);\n if (fieldType) {\n const isOneOfFieldType = ((_b = fieldType.extensions) === null || _b === void 0 ? void 0 : _b.oneOf) || (fieldType.astNode && getDirectiveFromAstNode(fieldType.astNode, 'oneOf'));\n if (isOneOfFieldType) {\n if (Object.keys(values).length !== 1) {\n validationContext.reportError(new GraphQLError(`Exactly one key must be specified for input for field \"${fieldType.type.toString()}.${node.name.value}\"`, [node]));\n }\n }\n }\n for (const arg of node.arguments) {\n const argType = fieldType.args.find(typeArg => typeArg.name === arg.name.value);\n if (argType) {\n traverseVariables(validationContext, arg, argType.type, values[arg.name.value]);\n }\n }\n }\n },\n };\n};\nfunction traverseVariables(validationContext, arg, graphqlType, currentValue) {\n var _a;\n // if the current value is empty we don't need to traverse deeper\n // if it shouldn't be empty, the \"original\" validation phase should complain.\n if (currentValue == null) {\n return;\n }\n if (isListType(graphqlType)) {\n if (!Array.isArray(currentValue)) {\n // because of graphql type coercion a single object should be treated as an array of one object\n currentValue = [currentValue];\n }\n currentValue.forEach(value => {\n traverseVariables(validationContext, arg, graphqlType.ofType, value);\n });\n return;\n }\n if (typeof currentValue !== 'object' || currentValue == null) {\n // in case the value is not an object, the \"original\" validation phase should complain.\n return;\n }\n const inputType = unwrapType(graphqlType);\n const isOneOfInputType = ((_a = inputType.extensions) === null || _a === void 0 ? void 0 : _a.oneOf) || (inputType.astNode && getDirectiveFromAstNode(inputType.astNode, 'oneOf'));\n if (isOneOfInputType) {\n if (Object.keys(currentValue).length !== 1) {\n validationContext.reportError(new GraphQLError(`Exactly one key must be specified for input type \"${inputType.name}\"`, [arg]));\n }\n }\n if (inputType instanceof GraphQLInputObjectType) {\n for (const [name, fieldConfig] of Object.entries(inputType.getFields())) {\n traverseVariables(validationContext, arg, fieldConfig.type, currentValue[name]);\n }\n }\n}\n//# sourceMappingURL=one-of.js.map"],"names":[],"mappings":"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"}
|