@graphql-inspector/action 2.9.0 → 3.1.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.esm.js DELETED
@@ -1,431 +0,0 @@
1
- import { info, getInput, setFailed, error, setOutput } from '@actions/core';
2
- import { __awaiter } from 'tslib';
3
- import { printSchemaFromEndpoint, produceSchema, diff, CheckConclusion, createSummary } from '@graphql-inspector/github';
4
- import { readFileSync } from 'fs';
5
- import { resolve } from 'path';
6
- import { execSync } from 'child_process';
7
- import { getOctokit, context } from '@actions/github';
8
-
9
- // In ES2015 (or a polyfilled) environment, this will be Symbol.iterator
10
-
11
- var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';
12
-
13
- // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
14
- var nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;
15
-
16
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17
- var MAX_ARRAY_LENGTH = 10;
18
- var MAX_RECURSIVE_DEPTH = 2;
19
- /**
20
- * Used to print values in error messages.
21
- */
22
-
23
- function inspect(value) {
24
- return formatValue(value, []);
25
- }
26
-
27
- function formatValue(value, seenValues) {
28
- switch (_typeof(value)) {
29
- case 'string':
30
- return JSON.stringify(value);
31
-
32
- case 'function':
33
- return value.name ? "[function ".concat(value.name, "]") : '[function]';
34
-
35
- case 'object':
36
- if (value === null) {
37
- return 'null';
38
- }
39
-
40
- return formatObjectValue(value, seenValues);
41
-
42
- default:
43
- return String(value);
44
- }
45
- }
46
-
47
- function formatObjectValue(value, previouslySeenValues) {
48
- if (previouslySeenValues.indexOf(value) !== -1) {
49
- return '[Circular]';
50
- }
51
-
52
- var seenValues = [].concat(previouslySeenValues, [value]);
53
- var customInspectFn = getCustomFn(value);
54
-
55
- if (customInspectFn !== undefined) {
56
- var customValue = customInspectFn.call(value); // check for infinite recursion
57
-
58
- if (customValue !== value) {
59
- return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);
60
- }
61
- } else if (Array.isArray(value)) {
62
- return formatArray(value, seenValues);
63
- }
64
-
65
- return formatObject(value, seenValues);
66
- }
67
-
68
- function formatObject(object, seenValues) {
69
- var keys = Object.keys(object);
70
-
71
- if (keys.length === 0) {
72
- return '{}';
73
- }
74
-
75
- if (seenValues.length > MAX_RECURSIVE_DEPTH) {
76
- return '[' + getObjectTag(object) + ']';
77
- }
78
-
79
- var properties = keys.map(function (key) {
80
- var value = formatValue(object[key], seenValues);
81
- return key + ': ' + value;
82
- });
83
- return '{ ' + properties.join(', ') + ' }';
84
- }
85
-
86
- function formatArray(array, seenValues) {
87
- if (array.length === 0) {
88
- return '[]';
89
- }
90
-
91
- if (seenValues.length > MAX_RECURSIVE_DEPTH) {
92
- return '[Array]';
93
- }
94
-
95
- var len = Math.min(MAX_ARRAY_LENGTH, array.length);
96
- var remaining = array.length - len;
97
- var items = [];
98
-
99
- for (var i = 0; i < len; ++i) {
100
- items.push(formatValue(array[i], seenValues));
101
- }
102
-
103
- if (remaining === 1) {
104
- items.push('... 1 more item');
105
- } else if (remaining > 1) {
106
- items.push("... ".concat(remaining, " more items"));
107
- }
108
-
109
- return '[' + items.join(', ') + ']';
110
- }
111
-
112
- function getCustomFn(object) {
113
- var customInspectFn = object[String(nodejsCustomInspectSymbol)];
114
-
115
- if (typeof customInspectFn === 'function') {
116
- return customInspectFn;
117
- }
118
-
119
- if (typeof object.inspect === 'function') {
120
- return object.inspect;
121
- }
122
- }
123
-
124
- function getObjectTag(object) {
125
- var tag = Object.prototype.toString.call(object).replace(/^\[object /, '').replace(/]$/, '');
126
-
127
- if (tag === 'Object' && typeof object.constructor === 'function') {
128
- var name = object.constructor.name;
129
-
130
- if (typeof name === 'string' && name !== '') {
131
- return name;
132
- }
133
- }
134
-
135
- return tag;
136
- }
137
-
138
- function devAssert(condition, message) {
139
- var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')
140
-
141
- if (!booleanCondition) {
142
- throw new Error(message);
143
- }
144
- }
145
-
146
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
147
-
148
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
149
-
150
- /**
151
- * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are
152
- * optional, but they are useful for clients who store GraphQL documents in source files.
153
- * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might
154
- * be useful for `name` to be `"Foo.graphql"` and location to be `{ line: 40, column: 1 }`.
155
- * The `line` and `column` properties in `locationOffset` are 1-indexed.
156
- */
157
- var Source = /*#__PURE__*/function () {
158
- function Source(body) {
159
- var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';
160
- var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
161
- line: 1,
162
- column: 1
163
- };
164
- typeof body === 'string' || devAssert(0, "Body must be a string. Received: ".concat(inspect(body), "."));
165
- this.body = body;
166
- this.name = name;
167
- this.locationOffset = locationOffset;
168
- this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');
169
- this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');
170
- } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
171
-
172
-
173
- _createClass(Source, [{
174
- key: SYMBOL_TO_STRING_TAG,
175
- get: function get() {
176
- return 'Source';
177
- }
178
- }]);
179
-
180
- return Source;
181
- }();
182
-
183
- function batch(items, limit) {
184
- const batches = [];
185
- const batchesNum = Math.ceil(items.length / limit);
186
- // We still want to update check-run and send empty annotations
187
- if (batchesNum === 0) {
188
- return [[]];
189
- }
190
- for (let i = 0; i < batchesNum; i++) {
191
- const start = i * limit;
192
- const end = start + limit;
193
- batches.push(items.slice(start, end));
194
- }
195
- return batches;
196
- }
197
-
198
- const CHECK_NAME = 'GraphQL Inspector';
199
- function getCurrentCommitSha() {
200
- const sha = execSync(`git rev-parse HEAD`).toString().trim();
201
- try {
202
- const msg = execSync(`git show ${sha} -s --format=%s`).toString().trim();
203
- const PR_MSG = /Merge (\w+) into \w+/i;
204
- if (PR_MSG.test(msg)) {
205
- const result = PR_MSG.exec(msg);
206
- if (result) {
207
- return result[1];
208
- }
209
- }
210
- }
211
- catch (e) {
212
- //
213
- }
214
- return sha;
215
- }
216
- function run() {
217
- var _a, _b, _c;
218
- return __awaiter(this, void 0, void 0, function* () {
219
- info(`GraphQL Inspector started`);
220
- // env
221
- let ref = process.env.GITHUB_SHA;
222
- const commitSha = getCurrentCommitSha();
223
- info(`Ref: ${ref}`);
224
- info(`Commit SHA: ${commitSha}`);
225
- const token = getInput('github-token', { required: true });
226
- const checkName = getInput('name') || CHECK_NAME;
227
- let workspace = process.env.GITHUB_WORKSPACE;
228
- if (!workspace) {
229
- return setFailed('Failed to resolve workspace directory. GITHUB_WORKSPACE is missing');
230
- }
231
- const useExperimentalMerge = castToBoolean(getInput('experimental_merge'), false);
232
- const useAnnotations = castToBoolean(getInput('annotations'));
233
- const failOnBreaking = castToBoolean(getInput('fail-on-breaking'));
234
- const endpoint = getInput('endpoint');
235
- const approveLabel = getInput('approve-label') || 'approved-breaking-change';
236
- const octokit = getOctokit(token);
237
- // repo
238
- const { owner, repo } = context.repo;
239
- info(`Creating a check named "${checkName}"`);
240
- const check = yield octokit.checks.create({
241
- owner,
242
- repo,
243
- name: checkName,
244
- head_sha: commitSha,
245
- status: 'in_progress',
246
- });
247
- const checkId = check.data.id;
248
- info(`Check ID: ${checkId}`);
249
- const schemaPointer = getInput('schema', { required: true });
250
- const loadFile = fileLoader({
251
- octokit,
252
- owner,
253
- repo,
254
- });
255
- if (!schemaPointer) {
256
- error('No `schema` variable');
257
- return setFailed('Failed to find `schema` variable');
258
- }
259
- let [schemaRef, schemaPath] = schemaPointer.split(':');
260
- if (useExperimentalMerge && context.payload.pull_request) {
261
- ref = `refs/pull/${context.payload.pull_request.number}/merge`;
262
- workspace = undefined;
263
- info(`EXPERIMENTAL - Using Pull Request ${ref}`);
264
- const baseRef = (_b = (_a = context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.base) === null || _b === void 0 ? void 0 : _b.ref;
265
- if (baseRef) {
266
- schemaRef = baseRef;
267
- info(`EXPERIMENTAL - Using ${baseRef} as base schema ref`);
268
- }
269
- }
270
- if (endpoint) {
271
- schemaPath = schemaPointer;
272
- }
273
- const [oldFile, newFile] = yield Promise.all([
274
- endpoint
275
- ? printSchemaFromEndpoint(endpoint)
276
- : loadFile({
277
- ref: schemaRef,
278
- path: schemaPath,
279
- }),
280
- loadFile({
281
- path: schemaPath,
282
- ref,
283
- workspace,
284
- }),
285
- ]);
286
- info('Got both sources');
287
- const sources = {
288
- old: new Source(oldFile, endpoint || `${schemaRef}:${schemaPath}`),
289
- new: new Source(newFile, schemaPath),
290
- };
291
- const schemas = {
292
- old: produceSchema(sources.old),
293
- new: produceSchema(sources.new),
294
- };
295
- info(`Built both schemas`);
296
- info(`Start comparing schemas`);
297
- const action = yield diff({
298
- path: schemaPath,
299
- schemas,
300
- sources,
301
- });
302
- let conclusion = action.conclusion;
303
- let annotations = action.annotations || [];
304
- const changes = action.changes || [];
305
- setOutput('changes', `${changes.length || 0}`);
306
- info(`Changes: ${changes.length || 0}`);
307
- const hasApprovedBreakingChangeLabel = context.payload.pull_request
308
- ? (_c = context.payload.pull_request.labels) === null || _c === void 0 ? void 0 : _c.some((label) => label.name === approveLabel)
309
- : false;
310
- // Force Success when failOnBreaking is disabled
311
- if ((failOnBreaking === false || hasApprovedBreakingChangeLabel) && conclusion === CheckConclusion.Failure) {
312
- info('FailOnBreaking disabled. Forcing SUCCESS');
313
- conclusion = CheckConclusion.Success;
314
- }
315
- if (useAnnotations === false) {
316
- info(`Anotations are disabled. Skipping annotations...`);
317
- annotations = [];
318
- }
319
- const summary = createSummary(changes, 100, false);
320
- const title = conclusion === CheckConclusion.Failure
321
- ? 'Something is wrong with your schema'
322
- : 'Everything looks good';
323
- info(`Conclusion: ${conclusion}`);
324
- try {
325
- return yield updateCheckRun(octokit, checkId, {
326
- conclusion,
327
- output: { title, summary, annotations },
328
- });
329
- }
330
- catch (e) {
331
- // Error
332
- error(e.message || e);
333
- const title = 'Invalid config. Failed to add annotation';
334
- yield updateCheckRun(octokit, checkId, {
335
- conclusion: CheckConclusion.Failure,
336
- output: { title, summary: title, annotations: [] },
337
- });
338
- return setFailed(title);
339
- }
340
- });
341
- }
342
- function fileLoader({ octokit, owner, repo, }) {
343
- const query = /* GraphQL */ `
344
- query GetFile($repo: String!, $owner: String!, $expression: String!) {
345
- repository(name: $repo, owner: $owner) {
346
- object(expression: $expression) {
347
- ... on Blob {
348
- text
349
- }
350
- }
351
- }
352
- }
353
- `;
354
- return function loadFile(file) {
355
- var _a, _b;
356
- return __awaiter(this, void 0, void 0, function* () {
357
- if (file.workspace) {
358
- return readFileSync(resolve(file.workspace, file.path), {
359
- encoding: 'utf-8',
360
- });
361
- }
362
- const result = yield octokit.graphql(query, {
363
- repo,
364
- owner,
365
- expression: `${file.ref}:${file.path}`,
366
- });
367
- info(`Query ${file.ref}:${file.path} from ${owner}/${repo}`);
368
- try {
369
- if ((_b = (_a = result === null || result === void 0 ? void 0 : result.repository) === null || _a === void 0 ? void 0 : _a.object) === null || _b === void 0 ? void 0 : _b.text) {
370
- return result.repository.object.text;
371
- }
372
- throw new Error('result.repository.object.text is null');
373
- }
374
- catch (error) {
375
- console.log(result);
376
- console.error(error);
377
- throw new Error(`Failed to load '${file.path}' (ref: ${file.ref})`);
378
- }
379
- });
380
- };
381
- }
382
- function updateCheckRun(octokit, checkId, { conclusion, output }) {
383
- return __awaiter(this, void 0, void 0, function* () {
384
- info(`Updating check: ${checkId}`);
385
- const { title, summary, annotations = [] } = output;
386
- const batches = batch(annotations, 50);
387
- info(`annotations to be sent: ${annotations.length}`);
388
- yield octokit.checks.update(Object.assign(Object.assign({ check_run_id: checkId, completed_at: new Date().toISOString(), status: 'completed' }, context.repo), { conclusion, output: {
389
- title, summary
390
- } }));
391
- try {
392
- yield Promise.all(batches.map((chunk) => __awaiter(this, void 0, void 0, function* () {
393
- yield octokit.checks.update(Object.assign(Object.assign({ check_run_id: checkId }, context.repo), { output: {
394
- title,
395
- summary,
396
- annotations: chunk,
397
- } }));
398
- info(`annotations sent (${chunk.length})`);
399
- })));
400
- }
401
- catch (error$1) {
402
- error(`failed to send annotations: ${error$1}`);
403
- throw error$1;
404
- }
405
- // Fail
406
- if (conclusion === CheckConclusion.Failure) {
407
- return setFailed(output.title);
408
- }
409
- // Success or Neutral
410
- });
411
- }
412
- /**
413
- * Treats non-falsy value as true
414
- */
415
- function castToBoolean(value, defaultValue) {
416
- if (typeof value === 'boolean') {
417
- return value;
418
- }
419
- if (value === 'true' || value === 'false') {
420
- return value === 'true';
421
- }
422
- if (typeof defaultValue === 'boolean') {
423
- return defaultValue;
424
- }
425
- return true;
426
- }
427
-
428
- run().catch((e) => {
429
- setFailed(e.message || e);
430
- });
431
- //# sourceMappingURL=index.esm.js.map
package/index.esm.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../node_modules/graphql/polyfills/symbols.mjs","../../../node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","../../../node_modules/graphql/jsutils/inspect.mjs","../../../node_modules/graphql/jsutils/devAssert.mjs","../../../node_modules/graphql/language/source.mjs","../../../dist/action/src/utils.js","../../../dist/action/src/run.js","../../../dist/action/src/index.js"],"sourcesContent":["// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","export function batch(items, limit) {\n const batches = [];\n const batchesNum = Math.ceil(items.length / limit);\n // We still want to update check-run and send empty annotations\n if (batchesNum === 0) {\n return [[]];\n }\n for (let i = 0; i < batchesNum; i++) {\n const start = i * limit;\n const end = start + limit;\n batches.push(items.slice(start, end));\n }\n return batches;\n}\n//# sourceMappingURL=utils.js.map","import { __awaiter } from \"tslib\";\nimport { CheckConclusion, diff, createSummary, printSchemaFromEndpoint, produceSchema, } from '@graphql-inspector/github';\nimport { Source } from 'graphql';\nimport { readFileSync } from 'fs';\nimport { resolve } from 'path';\nimport { execSync } from 'child_process';\nimport * as core from '@actions/core';\nimport * as github from '@actions/github';\nimport { batch } from './utils';\nconst CHECK_NAME = 'GraphQL Inspector';\nfunction getCurrentCommitSha() {\n const sha = execSync(`git rev-parse HEAD`).toString().trim();\n try {\n const msg = execSync(`git show ${sha} -s --format=%s`).toString().trim();\n const PR_MSG = /Merge (\\w+) into \\w+/i;\n if (PR_MSG.test(msg)) {\n const result = PR_MSG.exec(msg);\n if (result) {\n return result[1];\n }\n }\n }\n catch (e) {\n //\n }\n return sha;\n}\nexport function run() {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n core.info(`GraphQL Inspector started`);\n // env\n let ref = process.env.GITHUB_SHA;\n const commitSha = getCurrentCommitSha();\n core.info(`Ref: ${ref}`);\n core.info(`Commit SHA: ${commitSha}`);\n const token = core.getInput('github-token', { required: true });\n const checkName = core.getInput('name') || CHECK_NAME;\n let workspace = process.env.GITHUB_WORKSPACE;\n if (!workspace) {\n return core.setFailed('Failed to resolve workspace directory. GITHUB_WORKSPACE is missing');\n }\n const useExperimentalMerge = castToBoolean(core.getInput('experimental_merge'), false);\n const useAnnotations = castToBoolean(core.getInput('annotations'));\n const failOnBreaking = castToBoolean(core.getInput('fail-on-breaking'));\n const endpoint = core.getInput('endpoint');\n const approveLabel = core.getInput('approve-label') || 'approved-breaking-change';\n const octokit = github.getOctokit(token);\n // repo\n const { owner, repo } = github.context.repo;\n core.info(`Creating a check named \"${checkName}\"`);\n const check = yield octokit.checks.create({\n owner,\n repo,\n name: checkName,\n head_sha: commitSha,\n status: 'in_progress',\n });\n const checkId = check.data.id;\n core.info(`Check ID: ${checkId}`);\n const schemaPointer = core.getInput('schema', { required: true });\n const loadFile = fileLoader({\n octokit,\n owner,\n repo,\n });\n if (!schemaPointer) {\n core.error('No `schema` variable');\n return core.setFailed('Failed to find `schema` variable');\n }\n let [schemaRef, schemaPath] = schemaPointer.split(':');\n if (useExperimentalMerge && github.context.payload.pull_request) {\n ref = `refs/pull/${github.context.payload.pull_request.number}/merge`;\n workspace = undefined;\n core.info(`EXPERIMENTAL - Using Pull Request ${ref}`);\n const baseRef = (_b = (_a = github.context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.base) === null || _b === void 0 ? void 0 : _b.ref;\n if (baseRef) {\n schemaRef = baseRef;\n core.info(`EXPERIMENTAL - Using ${baseRef} as base schema ref`);\n }\n }\n if (endpoint) {\n schemaPath = schemaPointer;\n }\n const [oldFile, newFile] = yield Promise.all([\n endpoint\n ? printSchemaFromEndpoint(endpoint)\n : loadFile({\n ref: schemaRef,\n path: schemaPath,\n }),\n loadFile({\n path: schemaPath,\n ref,\n workspace,\n }),\n ]);\n core.info('Got both sources');\n const sources = {\n old: new Source(oldFile, endpoint || `${schemaRef}:${schemaPath}`),\n new: new Source(newFile, schemaPath),\n };\n const schemas = {\n old: produceSchema(sources.old),\n new: produceSchema(sources.new),\n };\n core.info(`Built both schemas`);\n core.info(`Start comparing schemas`);\n const action = yield diff({\n path: schemaPath,\n schemas,\n sources,\n });\n let conclusion = action.conclusion;\n let annotations = action.annotations || [];\n const changes = action.changes || [];\n core.setOutput('changes', `${changes.length || 0}`);\n core.info(`Changes: ${changes.length || 0}`);\n const hasApprovedBreakingChangeLabel = github.context.payload.pull_request\n ? (_c = github.context.payload.pull_request.labels) === null || _c === void 0 ? void 0 : _c.some((label) => label.name === approveLabel)\n : false;\n // Force Success when failOnBreaking is disabled\n if ((failOnBreaking === false || hasApprovedBreakingChangeLabel) && conclusion === CheckConclusion.Failure) {\n core.info('FailOnBreaking disabled. Forcing SUCCESS');\n conclusion = CheckConclusion.Success;\n }\n if (useAnnotations === false) {\n core.info(`Anotations are disabled. Skipping annotations...`);\n annotations = [];\n }\n const summary = createSummary(changes, 100, false);\n const title = conclusion === CheckConclusion.Failure\n ? 'Something is wrong with your schema'\n : 'Everything looks good';\n core.info(`Conclusion: ${conclusion}`);\n try {\n return yield updateCheckRun(octokit, checkId, {\n conclusion,\n output: { title, summary, annotations },\n });\n }\n catch (e) {\n // Error\n core.error(e.message || e);\n const title = 'Invalid config. Failed to add annotation';\n yield updateCheckRun(octokit, checkId, {\n conclusion: CheckConclusion.Failure,\n output: { title, summary: title, annotations: [] },\n });\n return core.setFailed(title);\n }\n });\n}\nfunction fileLoader({ octokit, owner, repo, }) {\n const query = /* GraphQL */ `\n query GetFile($repo: String!, $owner: String!, $expression: String!) {\n repository(name: $repo, owner: $owner) {\n object(expression: $expression) {\n ... on Blob {\n text\n }\n }\n }\n }\n `;\n return function loadFile(file) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (file.workspace) {\n return readFileSync(resolve(file.workspace, file.path), {\n encoding: 'utf-8',\n });\n }\n const result = yield octokit.graphql(query, {\n repo,\n owner,\n expression: `${file.ref}:${file.path}`,\n });\n core.info(`Query ${file.ref}:${file.path} from ${owner}/${repo}`);\n try {\n if ((_b = (_a = result === null || result === void 0 ? void 0 : result.repository) === null || _a === void 0 ? void 0 : _a.object) === null || _b === void 0 ? void 0 : _b.text) {\n return result.repository.object.text;\n }\n throw new Error('result.repository.object.text is null');\n }\n catch (error) {\n console.log(result);\n console.error(error);\n throw new Error(`Failed to load '${file.path}' (ref: ${file.ref})`);\n }\n });\n };\n}\nfunction updateCheckRun(octokit, checkId, { conclusion, output }) {\n return __awaiter(this, void 0, void 0, function* () {\n core.info(`Updating check: ${checkId}`);\n const { title, summary, annotations = [] } = output;\n const batches = batch(annotations, 50);\n core.info(`annotations to be sent: ${annotations.length}`);\n yield octokit.checks.update(Object.assign(Object.assign({ check_run_id: checkId, completed_at: new Date().toISOString(), status: 'completed' }, github.context.repo), { conclusion, output: {\n title, summary\n } }));\n try {\n yield Promise.all(batches.map((chunk) => __awaiter(this, void 0, void 0, function* () {\n yield octokit.checks.update(Object.assign(Object.assign({ check_run_id: checkId }, github.context.repo), { output: {\n title,\n summary,\n annotations: chunk,\n } }));\n core.info(`annotations sent (${chunk.length})`);\n })));\n }\n catch (error) {\n core.error(`failed to send annotations: ${error}`);\n throw error;\n }\n // Fail\n if (conclusion === CheckConclusion.Failure) {\n return core.setFailed(output.title);\n }\n // Success or Neutral\n });\n}\n/**\n * Treats non-falsy value as true\n */\nfunction castToBoolean(value, defaultValue) {\n if (typeof value === 'boolean') {\n return value;\n }\n if (value === 'true' || value === 'false') {\n return value === 'true';\n }\n if (typeof defaultValue === 'boolean') {\n return defaultValue;\n }\n return true;\n}\n//# sourceMappingURL=run.js.map","import * as core from '@actions/core';\nimport { run } from './run';\nrun().catch((e) => {\n core.setFailed(e.message || e);\n});\n//# sourceMappingURL=index.js.map"],"names":["core.info","core.getInput","core.setFailed","github.getOctokit","github.context","core.error","core.setOutput","error"],"mappings":"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"}