wgc 0.77.2 → 0.78.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/dist/package.json +1 -1
- package/dist/src/commands/index.js +4 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/mcp/tools/subgraph-verify-schema-changes.js +6 -3
- package/dist/src/commands/mcp/tools/subgraph-verify-schema-changes.js.map +1 -1
- package/dist/src/commands/proposal/commands/create.d.ts +4 -0
- package/dist/src/commands/proposal/commands/create.js +64 -0
- package/dist/src/commands/proposal/commands/create.js.map +1 -0
- package/dist/src/commands/proposal/commands/update.d.ts +4 -0
- package/dist/src/commands/proposal/commands/update.js +69 -0
- package/dist/src/commands/proposal/commands/update.js.map +1 -0
- package/dist/src/commands/proposal/index.d.ts +4 -0
- package/dist/src/commands/proposal/index.js +15 -0
- package/dist/src/commands/proposal/index.js.map +1 -0
- package/dist/src/commands/proposal/utils.d.ts +12 -0
- package/dist/src/commands/proposal/utils.js +90 -0
- package/dist/src/commands/proposal/utils.js.map +1 -0
- package/dist/src/commands/subgraph/commands/delete.js +10 -0
- package/dist/src/commands/subgraph/commands/delete.js.map +1 -1
- package/dist/src/commands/subgraph/commands/publish.js +14 -0
- package/dist/src/commands/subgraph/commands/publish.js.map +1 -1
- package/dist/src/handle-check-result.d.ts +1 -1
- package/dist/src/handle-check-result.js +12 -0
- package/dist/src/handle-check-result.js.map +1 -1
- package/dist/src/handle-proposal-result.d.ts +9 -0
- package/dist/src/handle-proposal-result.js +219 -0
- package/dist/src/handle-proposal-result.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
2
|
+
import Table from 'cli-table3';
|
|
3
|
+
import logSymbols from 'log-symbols';
|
|
4
|
+
import pc from 'picocolors';
|
|
5
|
+
/**
|
|
6
|
+
* Shared handler for proposal command responses (both create and update).
|
|
7
|
+
* Displays schema changes, composition errors, and other issues.
|
|
8
|
+
*/
|
|
9
|
+
export const handleProposalResult = (resp, proposalName, isCreate = false) => {
|
|
10
|
+
var _a, _b, _c, _d, _e, _f;
|
|
11
|
+
const changesTable = new Table({
|
|
12
|
+
head: [
|
|
13
|
+
pc.bold(pc.white('SUBGRAPH_NAME')),
|
|
14
|
+
pc.bold(pc.white('CHANGE')),
|
|
15
|
+
pc.bold(pc.white('TYPE')),
|
|
16
|
+
pc.bold(pc.white('DESCRIPTION')),
|
|
17
|
+
],
|
|
18
|
+
wordWrap: true,
|
|
19
|
+
});
|
|
20
|
+
const compositionErrorsTable = new Table({
|
|
21
|
+
head: [pc.bold(pc.white('ERROR_MESSAGE'))],
|
|
22
|
+
colWidths: [120],
|
|
23
|
+
wordWrap: true,
|
|
24
|
+
});
|
|
25
|
+
const compositionWarningsTable = new Table({
|
|
26
|
+
head: [pc.bold(pc.white('WARNING_MESSAGE'))],
|
|
27
|
+
colWidths: [120],
|
|
28
|
+
wordWrap: true,
|
|
29
|
+
});
|
|
30
|
+
const lintIssuesTable = new Table({
|
|
31
|
+
head: [
|
|
32
|
+
pc.bold(pc.white('SUBGRAPH_NAME')),
|
|
33
|
+
pc.bold(pc.white('LINT_RULE')),
|
|
34
|
+
pc.bold(pc.white('ERROR_MESSAGE')),
|
|
35
|
+
pc.bold(pc.white('LINE NUMBER')),
|
|
36
|
+
],
|
|
37
|
+
colAligns: ['left', 'left', 'center'],
|
|
38
|
+
wordWrap: true,
|
|
39
|
+
});
|
|
40
|
+
const graphPruningIssuesTable = new Table({
|
|
41
|
+
head: [
|
|
42
|
+
pc.bold(pc.white('SUBGRAPH_NAME')),
|
|
43
|
+
pc.bold(pc.white('RULE')),
|
|
44
|
+
pc.bold(pc.white('FIELD_PATH')),
|
|
45
|
+
pc.bold(pc.white('MESSAGE')),
|
|
46
|
+
pc.bold(pc.white('LINE NUMBER')),
|
|
47
|
+
],
|
|
48
|
+
colAligns: ['left', 'left', 'left', 'center'],
|
|
49
|
+
wordWrap: true,
|
|
50
|
+
});
|
|
51
|
+
let success = false;
|
|
52
|
+
let finalStatement = '';
|
|
53
|
+
let successMessage = '';
|
|
54
|
+
let studioCheckUrl = '';
|
|
55
|
+
if (resp.checkUrl) {
|
|
56
|
+
studioCheckUrl = `${pc.bold('Open in studio')}: ${resp.checkUrl}`;
|
|
57
|
+
}
|
|
58
|
+
if (((_a = resp.response) === null || _a === void 0 ? void 0 : _a.code) === EnumStatusCode.OK) {
|
|
59
|
+
successMessage = isCreate
|
|
60
|
+
? pc.green(`Proposal '${proposalName}' was created successfully.`)
|
|
61
|
+
: pc.green(`Proposal '${proposalName}' was updated successfully.`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
message: ((_b = resp.response) === null || _b === void 0 ? void 0 : _b.details)
|
|
67
|
+
? pc.red(pc.bold(resp.response.details))
|
|
68
|
+
: pc.red(`Failed to ${isCreate ? 'create' : 'update'} proposal.`),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Handle successful response
|
|
72
|
+
if (resp.nonBreakingChanges.length === 0 &&
|
|
73
|
+
resp.breakingChanges.length === 0 &&
|
|
74
|
+
resp.compositionErrors.length === 0 &&
|
|
75
|
+
resp.lintErrors.length === 0 &&
|
|
76
|
+
resp.lintWarnings.length === 0 &&
|
|
77
|
+
resp.graphPruneErrors.length === 0 &&
|
|
78
|
+
resp.graphPruneWarnings.length === 0) {
|
|
79
|
+
console.log(`\nDetected no changes.\nDetected no lint issues.\nDetected no graph pruning issues.\n\n${studioCheckUrl}\n`);
|
|
80
|
+
success = true;
|
|
81
|
+
return { success: true, message: successMessage };
|
|
82
|
+
}
|
|
83
|
+
console.log(`\nChecking the proposed schema`);
|
|
84
|
+
// No operations usage stats mean the check was not performed against any live traffic
|
|
85
|
+
if (resp.operationUsageStats) {
|
|
86
|
+
if (resp.operationUsageStats.totalOperations === 0) {
|
|
87
|
+
// Composition errors are still considered failures, otherwise we can consider this a success
|
|
88
|
+
// because no operations were affected by the change
|
|
89
|
+
success =
|
|
90
|
+
resp.compositionErrors.length === 0 && resp.lintErrors.length === 0 && resp.graphPruneErrors.length === 0;
|
|
91
|
+
console.log(`No operations were affected by this schema change.`);
|
|
92
|
+
finalStatement = `This schema change didn't affect any operations from existing client traffic.`;
|
|
93
|
+
}
|
|
94
|
+
else if (resp.operationUsageStats.totalOperations === resp.operationUsageStats.safeOperations) {
|
|
95
|
+
// This is also a success because changes to these operations were marked as safe
|
|
96
|
+
success =
|
|
97
|
+
resp.compositionErrors.length === 0 && resp.lintErrors.length === 0 && resp.graphPruneErrors.length === 0;
|
|
98
|
+
console.log(`${resp.operationUsageStats.totalOperations} operations were considered safe due to overrides.`);
|
|
99
|
+
finalStatement = `This schema change affected operations with safe overrides.`;
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Composition and breaking errors are considered failures because operations were affected by the change
|
|
103
|
+
success =
|
|
104
|
+
resp.breakingChanges.length === 0 &&
|
|
105
|
+
resp.compositionErrors.length === 0 &&
|
|
106
|
+
resp.lintErrors.length === 0 &&
|
|
107
|
+
resp.graphPruneErrors.length === 0;
|
|
108
|
+
const { breakingChanges, operationUsageStats } = resp;
|
|
109
|
+
const { totalOperations, safeOperations, firstSeenAt, lastSeenAt } = operationUsageStats;
|
|
110
|
+
if (breakingChanges.length > 0) {
|
|
111
|
+
const warningMessage = [logSymbols.warning, ` Found ${pc.bold(breakingChanges.length)} breaking changes.`];
|
|
112
|
+
if (totalOperations > 0) {
|
|
113
|
+
warningMessage.push(`${pc.bold(totalOperations - safeOperations)} operations impacted.`);
|
|
114
|
+
}
|
|
115
|
+
if (safeOperations > 0) {
|
|
116
|
+
warningMessage.push(`In addition, ${safeOperations} operations marked safe due to overrides.`);
|
|
117
|
+
}
|
|
118
|
+
console.log(warningMessage.join(''));
|
|
119
|
+
finalStatement = `This check has encountered ${pc.bold(`${breakingChanges.length}`)} breaking changes that would break operations from existing client traffic.`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (resp.nonBreakingChanges.length > 0 || resp.breakingChanges.length > 0) {
|
|
124
|
+
console.log('\nDetected the following changes:');
|
|
125
|
+
if (resp.breakingChanges.length > 0) {
|
|
126
|
+
for (const breakingChange of resp.breakingChanges) {
|
|
127
|
+
changesTable.push([
|
|
128
|
+
breakingChange.subgraphName || '-',
|
|
129
|
+
`${logSymbols.error} ${pc.red('BREAKING')}`,
|
|
130
|
+
breakingChange.changeType,
|
|
131
|
+
breakingChange.message,
|
|
132
|
+
]);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (resp.nonBreakingChanges.length > 0) {
|
|
136
|
+
for (const nonBreakingChange of resp.nonBreakingChanges) {
|
|
137
|
+
changesTable.push([
|
|
138
|
+
nonBreakingChange.subgraphName || '-',
|
|
139
|
+
`${logSymbols.success} NON-BREAKING`,
|
|
140
|
+
nonBreakingChange.changeType,
|
|
141
|
+
nonBreakingChange.message,
|
|
142
|
+
]);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
console.log(changesTable.toString());
|
|
146
|
+
}
|
|
147
|
+
if (resp.compositionErrors.length > 0) {
|
|
148
|
+
console.log(pc.red('\nDetected composition errors:'));
|
|
149
|
+
for (const compositionError of resp.compositionErrors) {
|
|
150
|
+
compositionErrorsTable.push([compositionError.message]);
|
|
151
|
+
}
|
|
152
|
+
console.log(compositionErrorsTable.toString());
|
|
153
|
+
}
|
|
154
|
+
if (resp.compositionWarnings.length > 0) {
|
|
155
|
+
console.log(pc.yellow(`\nDetected composition warnings:`));
|
|
156
|
+
for (const compositionWarning of resp.compositionWarnings) {
|
|
157
|
+
compositionWarningsTable.push([compositionWarning.message]);
|
|
158
|
+
}
|
|
159
|
+
console.log(compositionWarningsTable.toString());
|
|
160
|
+
}
|
|
161
|
+
if (resp.lintErrors.length > 0 || resp.lintWarnings.length > 0) {
|
|
162
|
+
console.log('\nDetected lint issues:');
|
|
163
|
+
for (const error of resp.lintErrors) {
|
|
164
|
+
lintIssuesTable.push([
|
|
165
|
+
error.subgraphName || '-',
|
|
166
|
+
`${logSymbols.error} ${pc.red(error.lintRuleType)}`,
|
|
167
|
+
error.message,
|
|
168
|
+
(_c = error.issueLocation) === null || _c === void 0 ? void 0 : _c.line,
|
|
169
|
+
]);
|
|
170
|
+
}
|
|
171
|
+
for (const warning of resp.lintWarnings) {
|
|
172
|
+
lintIssuesTable.push([
|
|
173
|
+
warning.subgraphName || '-',
|
|
174
|
+
`${logSymbols.warning} ${pc.yellow(warning.lintRuleType)}`,
|
|
175
|
+
warning.message,
|
|
176
|
+
(_d = warning.issueLocation) === null || _d === void 0 ? void 0 : _d.line,
|
|
177
|
+
]);
|
|
178
|
+
}
|
|
179
|
+
console.log(lintIssuesTable.toString());
|
|
180
|
+
}
|
|
181
|
+
if (resp.graphPruneErrors.length > 0 || resp.graphPruneWarnings.length > 0) {
|
|
182
|
+
console.log('\nDetected graph pruning issues:');
|
|
183
|
+
for (const error of resp.graphPruneErrors) {
|
|
184
|
+
graphPruningIssuesTable.push([
|
|
185
|
+
error.subgraphName || '-',
|
|
186
|
+
`${logSymbols.error} ${pc.red(error.graphPruningRuleType)}`,
|
|
187
|
+
error.fieldPath,
|
|
188
|
+
error.message,
|
|
189
|
+
((_e = error.issueLocation) === null || _e === void 0 ? void 0 : _e.line) || '-',
|
|
190
|
+
]);
|
|
191
|
+
}
|
|
192
|
+
for (const warning of resp.graphPruneWarnings) {
|
|
193
|
+
graphPruningIssuesTable.push([
|
|
194
|
+
warning.subgraphName || '-',
|
|
195
|
+
`${logSymbols.warning} ${pc.yellow(warning.graphPruningRuleType)}`,
|
|
196
|
+
warning.fieldPath,
|
|
197
|
+
warning.message,
|
|
198
|
+
((_f = warning.issueLocation) === null || _f === void 0 ? void 0 : _f.line) || '-',
|
|
199
|
+
]);
|
|
200
|
+
}
|
|
201
|
+
console.log(graphPruningIssuesTable.toString());
|
|
202
|
+
}
|
|
203
|
+
if (success) {
|
|
204
|
+
console.log('\n' +
|
|
205
|
+
logSymbols.success +
|
|
206
|
+
pc.green(` Schema check with the proposed schemas passed. ${finalStatement}`) +
|
|
207
|
+
'\n\n' +
|
|
208
|
+
studioCheckUrl +
|
|
209
|
+
'\n');
|
|
210
|
+
return { success: true, message: successMessage };
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
console.error('\n' +
|
|
214
|
+
logSymbols.error +
|
|
215
|
+
pc.red(` Schema check with the proposed schemas failed. ${finalStatement}\nSee https://cosmo-docs.wundergraph.com/studio/schema-checks for more information on resolving schema check errors.\n${studioCheckUrl}\n`));
|
|
216
|
+
return { success: true, message: successMessage };
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
//# sourceMappingURL=handle-proposal-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-proposal-result.js","sourceRoot":"","sources":["../../src/handle-proposal-result.ts"],"names":[],"mappings":"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"}
|