Socket
Socket
Sign inDemoInstall

@graphql-inspector/validate-command

Package Overview
Dependencies
Maintainers
1
Versions
525
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@graphql-inspector/validate-command - npm Package Compare versions

Comparing version 0.0.0-canary.57e2caa to 0.0.0-canary.58ffd99

120

index.cjs.js
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
const tslib = require('tslib');

@@ -9,5 +11,47 @@ const commands = require('@graphql-inspector/commands');

function handler({ schema, documents, strictFragments, maxDepth, apollo, keepClientFields, failOnDeprecated, }) {
const invalidDocuments = core.validate(schema, documents.map((doc) => new graphql.Source(graphql.print(doc.document), doc.location)), {
strictFragments,
maxDepth,
apollo,
keepClientFields,
});
if (!invalidDocuments.length) {
logger.Logger.success('All documents are valid');
}
else {
const errorsCount = countErrors(invalidDocuments);
const deprecated = countDeprecated(invalidDocuments);
if (errorsCount) {
logger.Logger.log(`\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\n`);
invalidDocuments.forEach((doc) => {
if (doc.errors.length) {
renderInvalidDocument(doc).forEach((line) => {
logger.Logger.log(line);
});
}
});
}
else if (!failOnDeprecated) {
logger.Logger.success('All documents are valid');
}
if (deprecated) {
logger.Logger.info(`\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\n`);
invalidDocuments.forEach((doc) => {
if (doc.deprecated.length) {
renderDeprecatedUsageInDocument(doc, failOnDeprecated).forEach((line) => {
logger.Logger.log(line);
});
}
});
}
if (errorsCount || (deprecated && failOnDeprecated)) {
process.exit(1);
}
}
}
const index = commands.createCommand((api) => {
const { loaders } = api;
return {
command: 'validate [documents] [schema]',
command: 'validate <documents> <schema>',
describe: 'Validate Fragments and Operations',

@@ -19,2 +63,3 @@ builder(yargs) {

type: 'string',
demandOption: true,
})

@@ -24,6 +69,7 @@ .positional('documents', {

type: 'string',
demandOption: true,
})
.options({
d: {
alias: 'deprecated',
deprecated: {
alias: 'd',
describe: 'Fail on deprecated usage',

@@ -33,7 +79,2 @@ type: 'boolean',

},
c: {
alias: 'config',
describe: 'Use GraphQL Config to find schema and documents',
type: 'boolean',
},
noStrictFragments: {

@@ -62,52 +103,22 @@ describe: 'Do not fail on duplicated fragment names',

return tslib.__awaiter(this, void 0, void 0, function* () {
const { loaders, pickPointers } = api;
const { headers, token } = commands.parseGlobalArgs(args);
const pointer = yield pickPointers(args, {
schema: true,
documents: true,
});
const schema = yield loaders.loadSchema(pointer.schema, {
const apollo = args.apollo || false;
const maxDepth = args.maxDepth || undefined;
const strictFragments = !args.noStrictFragments;
const keepClientFields = args.keepClientFields || false;
const failOnDeprecated = args.deprecated;
const schema = yield loaders.loadSchema(args.schema, {
headers,
token,
});
const documents = yield loaders.loadDocuments(pointer.documents);
const invalidDocuments = core.validate(schema, documents.map((doc) => new graphql.Source(graphql.print(doc.document), doc.location)), {
strictFragments: !args.noStrictFragments,
maxDepth: args.maxDepth || undefined,
apollo: args.apollo || false,
keepClientFields: args.keepClientFields || false,
const documents = yield loaders.loadDocuments(args.documents);
return handler({
schema,
documents,
apollo,
maxDepth,
strictFragments,
keepClientFields,
failOnDeprecated,
});
if (!invalidDocuments.length) {
logger.Logger.success('All documents are valid');
}
else {
const errorsCount = countErrors(invalidDocuments);
const deprecated = countDeprecated(invalidDocuments);
if (errorsCount) {
logger.Logger.log(`\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\n`);
invalidDocuments.forEach((doc) => {
if (doc.errors.length) {
renderInvalidDocument(doc).forEach((line) => {
logger.Logger.log(line);
});
}
});
}
else if (!args.deprecated) {
logger.Logger.success('All documents are valid');
}
if (deprecated) {
logger.Logger.info(`\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\n`);
invalidDocuments.forEach((doc) => {
if (doc.deprecated.length) {
renderDeprecatedUsageInDocument(doc, args.deprecated).forEach((line) => {
logger.Logger.log(line);
});
}
});
}
if (errorsCount || (deprecated && args.deprecated)) {
process.exit(1);
}
}
});

@@ -153,3 +164,4 @@ },

module.exports = index;
exports.default = index;
exports.handler = handler;
//# sourceMappingURL=index.cjs.js.map

@@ -1,11 +0,23 @@

import { GlobalArgs } from '@graphql-inspector/commands';
declare const _default: import("../../commands/src").CommandFactory<{}, {
schema?: string | undefined;
documents?: string | undefined;
deprecated?: boolean | undefined;
import { GlobalArgs, CommandFactory } from '@graphql-inspector/commands';
import { Source as DocumentSource } from '@graphql-tools/utils';
import { GraphQLSchema } from 'graphql';
export { CommandFactory };
export declare function handler({ schema, documents, strictFragments, maxDepth, apollo, keepClientFields, failOnDeprecated, }: {
schema: GraphQLSchema;
documents: DocumentSource[];
failOnDeprecated: boolean;
strictFragments: boolean;
apollo: boolean;
keepClientFields: boolean;
maxDepth?: number;
}): void;
declare const _default: CommandFactory<{}, {
schema: string;
documents: string;
deprecated: boolean;
noStrictFragments: boolean;
apollo?: boolean | undefined;
keepClientFields?: boolean | undefined;
apollo: boolean;
keepClientFields: boolean;
maxDepth?: number | undefined;
} & GlobalArgs>;
export default _default;

@@ -7,5 +7,47 @@ import { __awaiter } from 'tslib';

function handler({ schema, documents, strictFragments, maxDepth, apollo, keepClientFields, failOnDeprecated, }) {
const invalidDocuments = validate(schema, documents.map((doc) => new Source(print(doc.document), doc.location)), {
strictFragments,
maxDepth,
apollo,
keepClientFields,
});
if (!invalidDocuments.length) {
Logger.success('All documents are valid');
}
else {
const errorsCount = countErrors(invalidDocuments);
const deprecated = countDeprecated(invalidDocuments);
if (errorsCount) {
Logger.log(`\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\n`);
invalidDocuments.forEach((doc) => {
if (doc.errors.length) {
renderInvalidDocument(doc).forEach((line) => {
Logger.log(line);
});
}
});
}
else if (!failOnDeprecated) {
Logger.success('All documents are valid');
}
if (deprecated) {
Logger.info(`\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\n`);
invalidDocuments.forEach((doc) => {
if (doc.deprecated.length) {
renderDeprecatedUsageInDocument(doc, failOnDeprecated).forEach((line) => {
Logger.log(line);
});
}
});
}
if (errorsCount || (deprecated && failOnDeprecated)) {
process.exit(1);
}
}
}
const index = createCommand((api) => {
const { loaders } = api;
return {
command: 'validate [documents] [schema]',
command: 'validate <documents> <schema>',
describe: 'Validate Fragments and Operations',

@@ -17,2 +59,3 @@ builder(yargs) {

type: 'string',
demandOption: true,
})

@@ -22,6 +65,7 @@ .positional('documents', {

type: 'string',
demandOption: true,
})
.options({
d: {
alias: 'deprecated',
deprecated: {
alias: 'd',
describe: 'Fail on deprecated usage',

@@ -31,7 +75,2 @@ type: 'boolean',

},
c: {
alias: 'config',
describe: 'Use GraphQL Config to find schema and documents',
type: 'boolean',
},
noStrictFragments: {

@@ -60,52 +99,22 @@ describe: 'Do not fail on duplicated fragment names',

return __awaiter(this, void 0, void 0, function* () {
const { loaders, pickPointers } = api;
const { headers, token } = parseGlobalArgs(args);
const pointer = yield pickPointers(args, {
schema: true,
documents: true,
});
const schema = yield loaders.loadSchema(pointer.schema, {
const apollo = args.apollo || false;
const maxDepth = args.maxDepth || undefined;
const strictFragments = !args.noStrictFragments;
const keepClientFields = args.keepClientFields || false;
const failOnDeprecated = args.deprecated;
const schema = yield loaders.loadSchema(args.schema, {
headers,
token,
});
const documents = yield loaders.loadDocuments(pointer.documents);
const invalidDocuments = validate(schema, documents.map((doc) => new Source(print(doc.document), doc.location)), {
strictFragments: !args.noStrictFragments,
maxDepth: args.maxDepth || undefined,
apollo: args.apollo || false,
keepClientFields: args.keepClientFields || false,
const documents = yield loaders.loadDocuments(args.documents);
return handler({
schema,
documents,
apollo,
maxDepth,
strictFragments,
keepClientFields,
failOnDeprecated,
});
if (!invalidDocuments.length) {
Logger.success('All documents are valid');
}
else {
const errorsCount = countErrors(invalidDocuments);
const deprecated = countDeprecated(invalidDocuments);
if (errorsCount) {
Logger.log(`\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\n`);
invalidDocuments.forEach((doc) => {
if (doc.errors.length) {
renderInvalidDocument(doc).forEach((line) => {
Logger.log(line);
});
}
});
}
else if (!args.deprecated) {
Logger.success('All documents are valid');
}
if (deprecated) {
Logger.info(`\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\n`);
invalidDocuments.forEach((doc) => {
if (doc.deprecated.length) {
renderDeprecatedUsageInDocument(doc, args.deprecated).forEach((line) => {
Logger.log(line);
});
}
});
}
if (errorsCount || (deprecated && args.deprecated)) {
process.exit(1);
}
}
});

@@ -152,2 +161,3 @@ },

export default index;
export { handler };
//# sourceMappingURL=index.esm.js.map
{
"name": "@graphql-inspector/validate-command",
"version": "0.0.0-canary.57e2caa",
"version": "0.0.0-canary.58ffd99",
"description": "Validate Documents in GraphQL Inspector",
"sideEffects": false,
"peerDependencies": {

@@ -9,6 +10,6 @@ "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0"

"dependencies": {
"@graphql-inspector/commands": "0.0.0-canary.57e2caa",
"@graphql-inspector/core": "0.0.0-canary.57e2caa",
"@graphql-inspector/logger": "0.0.0-canary.57e2caa",
"tslib": "^1.11.1"
"@graphql-inspector/commands": "0.0.0-canary.58ffd99",
"@graphql-inspector/core": "0.0.0-canary.58ffd99",
"@graphql-inspector/logger": "0.0.0-canary.58ffd99",
"tslib": "^2.0.0"
},

@@ -15,0 +16,0 @@ "repository": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc