@graphql-inspector/validate-command 0.0.0-canary.02a53c5 → 0.0.0-canary.0f79587

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.d.ts CHANGED
@@ -29,5 +29,6 @@ declare const _default: CommandFactory<{}, {
29
29
  relativePaths?: boolean | undefined;
30
30
  output?: string | undefined;
31
31
  silent?: boolean | undefined;
32
+ ignore?: string[] | undefined;
32
33
  } & GlobalArgs>;
33
34
  export default _default;
@@ -17,9 +17,6 @@ function handler({ schema, documents, strictFragments, maxDepth, apollo, keepCli
17
17
  apollo,
18
18
  keepClientFields,
19
19
  });
20
- if (filter) {
21
- invalidDocuments = invalidDocuments.filter((doc) => filter.some((filepath) => doc.source.name.includes(filepath)));
22
- }
23
20
  if (!invalidDocuments.length) {
24
21
  logger.Logger.success('All documents are valid');
25
22
  }
@@ -37,7 +34,7 @@ function handler({ schema, documents, strictFragments, maxDepth, apollo, keepCli
37
34
  if (!silent) {
38
35
  logger.Logger.log(`\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\n`);
39
36
  }
40
- printInvalidDocuments(invalidDocuments, 'errors', true, silent);
37
+ printInvalidDocuments(useFilter(invalidDocuments, filter), 'errors', true, silent);
41
38
  }
42
39
  else {
43
40
  logger.Logger.success('All documents are valid');
@@ -46,12 +43,12 @@ function handler({ schema, documents, strictFragments, maxDepth, apollo, keepCli
46
43
  if (!silent) {
47
44
  logger.Logger.info(`\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\n`);
48
45
  }
49
- printInvalidDocuments(invalidDocuments, 'deprecated', false, silent);
46
+ printInvalidDocuments(useFilter(invalidDocuments, filter), 'deprecated', false, silent);
50
47
  }
51
48
  if (output) {
52
49
  fs.writeFileSync(output, JSON.stringify({
53
50
  status: !shouldFailProcess,
54
- documents: invalidDocuments,
51
+ documents: useFilter(invalidDocuments, filter),
55
52
  }, null, 2), {
56
53
  encoding: 'utf-8',
57
54
  });
@@ -77,6 +74,12 @@ function useRelativePaths(docs) {
77
74
  return doc;
78
75
  });
79
76
  }
77
+ function useFilter(docs, patterns) {
78
+ if (!patterns || !patterns.length) {
79
+ return docs;
80
+ }
81
+ return docs.filter((doc) => patterns.some((filepath) => doc.source.name.includes(filepath)));
82
+ }
80
83
  const index = commands.createCommand((api) => {
81
84
  const { loaders } = api;
82
85
  return {
@@ -125,6 +128,11 @@ const index = commands.createCommand((api) => {
125
128
  array: true,
126
129
  type: 'string',
127
130
  },
131
+ ignore: {
132
+ describe: 'Ignore and do not load these files (supports glob)',
133
+ array: true,
134
+ type: 'string',
135
+ },
128
136
  onlyErrors: {
129
137
  describe: 'Show only errors',
130
138
  type: 'boolean',
@@ -162,12 +170,15 @@ const index = commands.createCommand((api) => {
162
170
  const silent = args.silent || false;
163
171
  const relativePaths = args.relativePaths || false;
164
172
  const onlyErrors = args.onlyErrors || false;
173
+ const ignore = args.ignore || [];
165
174
  const schema = yield loaders.loadSchema(args.schema, {
166
175
  headers,
167
176
  token,
168
177
  method,
169
178
  }, apolloFederation, aws);
170
- const documents = yield loaders.loadDocuments(args.documents);
179
+ const documents = yield loaders.loadDocuments(args.documents, {
180
+ ignore,
181
+ });
171
182
  return handler({
172
183
  schema,
173
184
  documents,
@@ -225,4 +236,3 @@ function renderErrors(sourceName, errors, isError = false) {
225
236
 
226
237
  exports.default = index;
227
238
  exports.handler = handler;
228
- //# sourceMappingURL=index.cjs.js.map
@@ -13,9 +13,6 @@ function handler({ schema, documents, strictFragments, maxDepth, apollo, keepCli
13
13
  apollo,
14
14
  keepClientFields,
15
15
  });
16
- if (filter) {
17
- invalidDocuments = invalidDocuments.filter((doc) => filter.some((filepath) => doc.source.name.includes(filepath)));
18
- }
19
16
  if (!invalidDocuments.length) {
20
17
  Logger.success('All documents are valid');
21
18
  }
@@ -33,7 +30,7 @@ function handler({ schema, documents, strictFragments, maxDepth, apollo, keepCli
33
30
  if (!silent) {
34
31
  Logger.log(`\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\n`);
35
32
  }
36
- printInvalidDocuments(invalidDocuments, 'errors', true, silent);
33
+ printInvalidDocuments(useFilter(invalidDocuments, filter), 'errors', true, silent);
37
34
  }
38
35
  else {
39
36
  Logger.success('All documents are valid');
@@ -42,12 +39,12 @@ function handler({ schema, documents, strictFragments, maxDepth, apollo, keepCli
42
39
  if (!silent) {
43
40
  Logger.info(`\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\n`);
44
41
  }
45
- printInvalidDocuments(invalidDocuments, 'deprecated', false, silent);
42
+ printInvalidDocuments(useFilter(invalidDocuments, filter), 'deprecated', false, silent);
46
43
  }
47
44
  if (output) {
48
45
  writeFileSync(output, JSON.stringify({
49
46
  status: !shouldFailProcess,
50
- documents: invalidDocuments,
47
+ documents: useFilter(invalidDocuments, filter),
51
48
  }, null, 2), {
52
49
  encoding: 'utf-8',
53
50
  });
@@ -73,6 +70,12 @@ function useRelativePaths(docs) {
73
70
  return doc;
74
71
  });
75
72
  }
73
+ function useFilter(docs, patterns) {
74
+ if (!patterns || !patterns.length) {
75
+ return docs;
76
+ }
77
+ return docs.filter((doc) => patterns.some((filepath) => doc.source.name.includes(filepath)));
78
+ }
76
79
  const index = createCommand((api) => {
77
80
  const { loaders } = api;
78
81
  return {
@@ -121,6 +124,11 @@ const index = createCommand((api) => {
121
124
  array: true,
122
125
  type: 'string',
123
126
  },
127
+ ignore: {
128
+ describe: 'Ignore and do not load these files (supports glob)',
129
+ array: true,
130
+ type: 'string',
131
+ },
124
132
  onlyErrors: {
125
133
  describe: 'Show only errors',
126
134
  type: 'boolean',
@@ -158,12 +166,15 @@ const index = createCommand((api) => {
158
166
  const silent = args.silent || false;
159
167
  const relativePaths = args.relativePaths || false;
160
168
  const onlyErrors = args.onlyErrors || false;
169
+ const ignore = args.ignore || [];
161
170
  const schema = yield loaders.loadSchema(args.schema, {
162
171
  headers,
163
172
  token,
164
173
  method,
165
174
  }, apolloFederation, aws);
166
- const documents = yield loaders.loadDocuments(args.documents);
175
+ const documents = yield loaders.loadDocuments(args.documents, {
176
+ ignore,
177
+ });
167
178
  return handler({
168
179
  schema,
169
180
  documents,
@@ -221,4 +232,3 @@ function renderErrors(sourceName, errors, isError = false) {
221
232
 
222
233
  export default index;
223
234
  export { handler };
224
- //# sourceMappingURL=index.esm.js.map
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@graphql-inspector/validate-command",
3
- "version": "0.0.0-canary.02a53c5",
3
+ "version": "0.0.0-canary.0f79587",
4
4
  "description": "Validate Documents in GraphQL Inspector",
5
5
  "sideEffects": false,
6
6
  "peerDependencies": {
7
- "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0"
7
+ "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0"
8
8
  },
9
9
  "dependencies": {
10
- "@graphql-inspector/commands": "0.0.0-canary.02a53c5",
11
- "@graphql-inspector/core": "0.0.0-canary.02a53c5",
12
- "@graphql-inspector/logger": "0.0.0-canary.02a53c5",
10
+ "@graphql-inspector/commands": "0.0.0-canary.0f79587",
11
+ "@graphql-inspector/core": "0.0.0-canary.0f79587",
12
+ "@graphql-inspector/logger": "0.0.0-canary.0f79587",
13
13
  "tslib": "^2.0.0"
14
14
  },
15
15
  "repository": {
@@ -29,10 +29,20 @@
29
29
  "url": "https://github.com/kamilkisiela"
30
30
  },
31
31
  "license": "MIT",
32
- "main": "index.cjs.js",
33
- "module": "index.esm.js",
32
+ "main": "index.js",
33
+ "module": "index.mjs",
34
34
  "typings": "index.d.ts",
35
35
  "typescript": {
36
36
  "definition": "index.d.ts"
37
+ },
38
+ "exports": {
39
+ ".": {
40
+ "require": "./index.js",
41
+ "import": "./index.mjs"
42
+ },
43
+ "./*": {
44
+ "require": "./*.js",
45
+ "import": "./*.mjs"
46
+ }
37
47
  }
38
48
  }
package/index.cjs.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../dist/commands/validate/src/index.js"],"sourcesContent":["import { __awaiter } from \"tslib\";\nimport { createCommand, parseGlobalArgs, } from '@graphql-inspector/commands';\nimport { Logger, bolderize, chalk } from '@graphql-inspector/logger';\nimport { validate as validateDocuments, } from '@graphql-inspector/core';\nimport { relative } from 'path';\nimport { writeFileSync } from 'fs';\nimport { Source, print } from 'graphql';\nexport function handler({ schema, documents, strictFragments, maxDepth, apollo, keepClientFields, failOnDeprecated, filter, onlyErrors, relativePaths, output, silent, }) {\n let invalidDocuments = validateDocuments(schema, documents.map((doc) => new Source(print(doc.document), doc.location)), {\n strictFragments,\n maxDepth,\n apollo,\n keepClientFields,\n });\n if (filter) {\n invalidDocuments = invalidDocuments.filter((doc) => filter.some((filepath) => doc.source.name.includes(filepath)));\n }\n if (!invalidDocuments.length) {\n Logger.success('All documents are valid');\n }\n else {\n if (failOnDeprecated) {\n invalidDocuments = moveDeprecatedToErrors(invalidDocuments);\n }\n if (relativePaths) {\n invalidDocuments = useRelativePaths(invalidDocuments);\n }\n const errorsCount = countErrors(invalidDocuments);\n const deprecated = countDeprecated(invalidDocuments);\n const shouldFailProcess = errorsCount > 0;\n if (errorsCount) {\n if (!silent) {\n Logger.log(`\\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\\n`);\n }\n printInvalidDocuments(invalidDocuments, 'errors', true, silent);\n }\n else {\n Logger.success('All documents are valid');\n }\n if (deprecated && !onlyErrors) {\n if (!silent) {\n Logger.info(`\\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\\n`);\n }\n printInvalidDocuments(invalidDocuments, 'deprecated', false, silent);\n }\n if (output) {\n writeFileSync(output, JSON.stringify({\n status: !shouldFailProcess,\n documents: invalidDocuments,\n }, null, 2), {\n encoding: 'utf-8',\n });\n }\n if (shouldFailProcess) {\n process.exit(1);\n }\n }\n}\nfunction moveDeprecatedToErrors(docs) {\n return docs.map((doc) => {\n var _a, _b;\n return ({\n source: doc.source,\n errors: [...((_a = doc.errors) !== null && _a !== void 0 ? _a : []), ...((_b = doc.deprecated) !== null && _b !== void 0 ? _b : [])],\n deprecated: [],\n });\n });\n}\nfunction useRelativePaths(docs) {\n return docs.map((doc) => {\n doc.source.name = relative(process.cwd(), doc.source.name);\n return doc;\n });\n}\nexport default createCommand((api) => {\n const { loaders } = api;\n return {\n command: 'validate <documents> <schema>',\n describe: 'Validate Fragments and Operations',\n builder(yargs) {\n return yargs\n .positional('schema', {\n describe: 'Point to a schema',\n type: 'string',\n demandOption: true,\n })\n .positional('documents', {\n describe: 'Point to documents',\n type: 'string',\n demandOption: true,\n })\n .options({\n deprecated: {\n alias: 'd',\n describe: 'Fail on deprecated usage',\n type: 'boolean',\n default: false,\n },\n noStrictFragments: {\n describe: 'Do not fail on duplicated fragment names',\n type: 'boolean',\n default: false,\n },\n maxDepth: {\n describe: 'Fail on deep operations',\n type: 'number',\n },\n apollo: {\n describe: 'Support Apollo directives',\n type: 'boolean',\n default: false,\n },\n keepClientFields: {\n describe: 'Keeps the fields with @client, but removes @client directive from them',\n type: 'boolean',\n default: false,\n },\n filter: {\n describe: 'Show results only from a list of files (or file)',\n array: true,\n type: 'string',\n },\n onlyErrors: {\n describe: 'Show only errors',\n type: 'boolean',\n default: false,\n },\n relativePaths: {\n describe: 'Show relative paths',\n type: 'boolean',\n default: false,\n },\n silent: {\n describe: 'Do not print results',\n type: 'boolean',\n default: false,\n },\n output: {\n describe: 'Output JSON file',\n type: 'string',\n },\n });\n },\n handler(args) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const { headers, token } = parseGlobalArgs(args);\n const apollo = args.apollo || false;\n const aws = args.aws || false;\n const apolloFederation = args.federation || false;\n const method = ((_a = args.method) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || 'POST';\n const maxDepth = args.maxDepth || undefined;\n const strictFragments = !args.noStrictFragments;\n const keepClientFields = args.keepClientFields || false;\n const failOnDeprecated = args.deprecated;\n const output = args.output;\n const silent = args.silent || false;\n const relativePaths = args.relativePaths || false;\n const onlyErrors = args.onlyErrors || false;\n const schema = yield loaders.loadSchema(args.schema, {\n headers,\n token,\n method,\n }, apolloFederation, aws);\n const documents = yield loaders.loadDocuments(args.documents);\n return handler({\n schema,\n documents,\n apollo,\n maxDepth,\n strictFragments,\n keepClientFields,\n failOnDeprecated,\n filter: args.filter,\n silent,\n output,\n relativePaths,\n onlyErrors,\n });\n });\n },\n };\n});\nfunction countErrors(invalidDocuments) {\n if (invalidDocuments.length) {\n return invalidDocuments.filter((doc) => doc.errors && doc.errors.length)\n .length;\n }\n return 0;\n}\nfunction countDeprecated(invalidDocuments) {\n if (invalidDocuments.length) {\n return invalidDocuments.filter((doc) => doc.deprecated && doc.deprecated.length).length;\n }\n return 0;\n}\nfunction printInvalidDocuments(invalidDocuments, listKey, isError = false, silent = false) {\n if (silent) {\n return;\n }\n invalidDocuments.forEach((doc) => {\n if (doc.errors.length) {\n renderErrors(doc.source.name, doc[listKey], isError).forEach((line) => {\n Logger.log(line);\n });\n }\n });\n}\nfunction renderErrors(sourceName, errors, isError = false) {\n const errorsAsString = errors\n .map((e) => ` - ${bolderize(e.message)}`)\n .join('\\n');\n return [\n isError ? chalk.redBright('error') : chalk.yellowBright('warn'),\n `in ${sourceName}:\\n\\n`,\n errorsAsString,\n '\\n\\n',\n ];\n}\n//# sourceMappingURL=index.js.map"],"names":["validateDocuments","Source","print","Logger","writeFileSync","relative","createCommand","__awaiter","parseGlobalArgs","bolderize","chalk"],"mappings":"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"}
package/index.esm.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../dist/commands/validate/src/index.js"],"sourcesContent":["import { __awaiter } from \"tslib\";\nimport { createCommand, parseGlobalArgs, } from '@graphql-inspector/commands';\nimport { Logger, bolderize, chalk } from '@graphql-inspector/logger';\nimport { validate as validateDocuments, } from '@graphql-inspector/core';\nimport { relative } from 'path';\nimport { writeFileSync } from 'fs';\nimport { Source, print } from 'graphql';\nexport function handler({ schema, documents, strictFragments, maxDepth, apollo, keepClientFields, failOnDeprecated, filter, onlyErrors, relativePaths, output, silent, }) {\n let invalidDocuments = validateDocuments(schema, documents.map((doc) => new Source(print(doc.document), doc.location)), {\n strictFragments,\n maxDepth,\n apollo,\n keepClientFields,\n });\n if (filter) {\n invalidDocuments = invalidDocuments.filter((doc) => filter.some((filepath) => doc.source.name.includes(filepath)));\n }\n if (!invalidDocuments.length) {\n Logger.success('All documents are valid');\n }\n else {\n if (failOnDeprecated) {\n invalidDocuments = moveDeprecatedToErrors(invalidDocuments);\n }\n if (relativePaths) {\n invalidDocuments = useRelativePaths(invalidDocuments);\n }\n const errorsCount = countErrors(invalidDocuments);\n const deprecated = countDeprecated(invalidDocuments);\n const shouldFailProcess = errorsCount > 0;\n if (errorsCount) {\n if (!silent) {\n Logger.log(`\\nDetected ${errorsCount} invalid document${errorsCount > 1 ? 's' : ''}:\\n`);\n }\n printInvalidDocuments(invalidDocuments, 'errors', true, silent);\n }\n else {\n Logger.success('All documents are valid');\n }\n if (deprecated && !onlyErrors) {\n if (!silent) {\n Logger.info(`\\nDetected ${deprecated} document${deprecated > 1 ? 's' : ''} with deprecated fields:\\n`);\n }\n printInvalidDocuments(invalidDocuments, 'deprecated', false, silent);\n }\n if (output) {\n writeFileSync(output, JSON.stringify({\n status: !shouldFailProcess,\n documents: invalidDocuments,\n }, null, 2), {\n encoding: 'utf-8',\n });\n }\n if (shouldFailProcess) {\n process.exit(1);\n }\n }\n}\nfunction moveDeprecatedToErrors(docs) {\n return docs.map((doc) => {\n var _a, _b;\n return ({\n source: doc.source,\n errors: [...((_a = doc.errors) !== null && _a !== void 0 ? _a : []), ...((_b = doc.deprecated) !== null && _b !== void 0 ? _b : [])],\n deprecated: [],\n });\n });\n}\nfunction useRelativePaths(docs) {\n return docs.map((doc) => {\n doc.source.name = relative(process.cwd(), doc.source.name);\n return doc;\n });\n}\nexport default createCommand((api) => {\n const { loaders } = api;\n return {\n command: 'validate <documents> <schema>',\n describe: 'Validate Fragments and Operations',\n builder(yargs) {\n return yargs\n .positional('schema', {\n describe: 'Point to a schema',\n type: 'string',\n demandOption: true,\n })\n .positional('documents', {\n describe: 'Point to documents',\n type: 'string',\n demandOption: true,\n })\n .options({\n deprecated: {\n alias: 'd',\n describe: 'Fail on deprecated usage',\n type: 'boolean',\n default: false,\n },\n noStrictFragments: {\n describe: 'Do not fail on duplicated fragment names',\n type: 'boolean',\n default: false,\n },\n maxDepth: {\n describe: 'Fail on deep operations',\n type: 'number',\n },\n apollo: {\n describe: 'Support Apollo directives',\n type: 'boolean',\n default: false,\n },\n keepClientFields: {\n describe: 'Keeps the fields with @client, but removes @client directive from them',\n type: 'boolean',\n default: false,\n },\n filter: {\n describe: 'Show results only from a list of files (or file)',\n array: true,\n type: 'string',\n },\n onlyErrors: {\n describe: 'Show only errors',\n type: 'boolean',\n default: false,\n },\n relativePaths: {\n describe: 'Show relative paths',\n type: 'boolean',\n default: false,\n },\n silent: {\n describe: 'Do not print results',\n type: 'boolean',\n default: false,\n },\n output: {\n describe: 'Output JSON file',\n type: 'string',\n },\n });\n },\n handler(args) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const { headers, token } = parseGlobalArgs(args);\n const apollo = args.apollo || false;\n const aws = args.aws || false;\n const apolloFederation = args.federation || false;\n const method = ((_a = args.method) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || 'POST';\n const maxDepth = args.maxDepth || undefined;\n const strictFragments = !args.noStrictFragments;\n const keepClientFields = args.keepClientFields || false;\n const failOnDeprecated = args.deprecated;\n const output = args.output;\n const silent = args.silent || false;\n const relativePaths = args.relativePaths || false;\n const onlyErrors = args.onlyErrors || false;\n const schema = yield loaders.loadSchema(args.schema, {\n headers,\n token,\n method,\n }, apolloFederation, aws);\n const documents = yield loaders.loadDocuments(args.documents);\n return handler({\n schema,\n documents,\n apollo,\n maxDepth,\n strictFragments,\n keepClientFields,\n failOnDeprecated,\n filter: args.filter,\n silent,\n output,\n relativePaths,\n onlyErrors,\n });\n });\n },\n };\n});\nfunction countErrors(invalidDocuments) {\n if (invalidDocuments.length) {\n return invalidDocuments.filter((doc) => doc.errors && doc.errors.length)\n .length;\n }\n return 0;\n}\nfunction countDeprecated(invalidDocuments) {\n if (invalidDocuments.length) {\n return invalidDocuments.filter((doc) => doc.deprecated && doc.deprecated.length).length;\n }\n return 0;\n}\nfunction printInvalidDocuments(invalidDocuments, listKey, isError = false, silent = false) {\n if (silent) {\n return;\n }\n invalidDocuments.forEach((doc) => {\n if (doc.errors.length) {\n renderErrors(doc.source.name, doc[listKey], isError).forEach((line) => {\n Logger.log(line);\n });\n }\n });\n}\nfunction renderErrors(sourceName, errors, isError = false) {\n const errorsAsString = errors\n .map((e) => ` - ${bolderize(e.message)}`)\n .join('\\n');\n return [\n isError ? chalk.redBright('error') : chalk.yellowBright('warn'),\n `in ${sourceName}:\\n\\n`,\n errorsAsString,\n '\\n\\n',\n ];\n}\n//# sourceMappingURL=index.js.map"],"names":["validateDocuments"],"mappings":"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"}