wgc 0.115.1 → 0.117.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/README.md +1 -1
- package/dist/package.json +21 -21
- package/dist/src/commands/demo/api.d.ts +78 -0
- package/dist/src/commands/demo/api.js +152 -0
- package/dist/src/commands/demo/api.js.map +1 -0
- package/dist/src/commands/demo/command.d.ts +2 -0
- package/dist/src/commands/demo/command.js +425 -0
- package/dist/src/commands/demo/command.js.map +1 -0
- package/dist/src/commands/demo/index.d.ts +4 -0
- package/dist/src/commands/demo/index.js +13 -0
- package/dist/src/commands/demo/index.js.map +1 -0
- package/dist/src/commands/demo/types.d.ts +2 -0
- package/dist/src/commands/demo/types.js +2 -0
- package/dist/src/commands/demo/types.js.map +1 -0
- package/dist/src/commands/demo/util.d.ts +77 -0
- package/dist/src/commands/demo/util.js +482 -0
- package/dist/src/commands/demo/util.js.map +1 -0
- package/dist/src/commands/index.js +4 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/router/commands/plugin/commands/publish.js +37 -157
- package/dist/src/commands/router/commands/plugin/commands/publish.js.map +1 -1
- package/dist/src/commands/router/commands/token/commands/create.js +17 -23
- package/dist/src/commands/router/commands/token/commands/create.js.map +1 -1
- package/dist/src/commands/router/commands/token/commands/delete.js +8 -14
- package/dist/src/commands/router/commands/token/commands/delete.js.map +1 -1
- package/dist/src/core/config.d.ts +14 -0
- package/dist/src/core/config.js +14 -0
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/plugin-publish.d.ts +65 -0
- package/dist/src/core/plugin-publish.js +192 -0
- package/dist/src/core/plugin-publish.js.map +1 -0
- package/dist/src/core/router-token.d.ts +30 -0
- package/dist/src/core/router-token.js +45 -0
- package/dist/src/core/router-token.js.map +1 -0
- package/dist/src/utils.d.ts +20 -0
- package/dist/src/utils.js +99 -1
- package/dist/src/utils.js.map +1 -1
- package/dist/test/demo/command.test.d.ts +1 -0
- package/dist/test/demo/command.test.js +396 -0
- package/dist/test/demo/command.test.js.map +1 -0
- package/dist/test/demo/util.test.d.ts +1 -0
- package/dist/test/demo/util.test.js +310 -0
- package/dist/test/demo/util.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -19
package/README.md
CHANGED
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wgc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.117.0",
|
|
4
4
|
"description": "The official CLI tool to manage the GraphQL Federation Platform Cosmo",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
],
|
|
42
42
|
"license": "Apache-2.0",
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@bufbuild/protobuf": "
|
|
45
|
-
"@connectrpc/connect": "
|
|
46
|
-
"@connectrpc/connect-node": "
|
|
47
|
-
"@graphql-tools/utils": "
|
|
44
|
+
"@bufbuild/protobuf": "catalog:",
|
|
45
|
+
"@connectrpc/connect": "catalog:",
|
|
46
|
+
"@connectrpc/connect-node": "catalog:",
|
|
47
|
+
"@graphql-tools/utils": "catalog:",
|
|
48
48
|
"@modelcontextprotocol/sdk": "1.26.0",
|
|
49
49
|
"@octokit/rest": "22.0.0",
|
|
50
50
|
"@wundergraph/composition": "workspace:*",
|
|
@@ -52,24 +52,24 @@
|
|
|
52
52
|
"@wundergraph/cosmo-shared": "workspace:*",
|
|
53
53
|
"@wundergraph/protographic": "workspace:*",
|
|
54
54
|
"ajv": "8.18.0",
|
|
55
|
-
"axios": "
|
|
55
|
+
"axios": "catalog:",
|
|
56
56
|
"boxen": "7.1.1",
|
|
57
57
|
"cli-progress": "3.12.0",
|
|
58
58
|
"cli-table3": "0.6.3",
|
|
59
59
|
"commander": "11.1.0",
|
|
60
|
-
"date-fns": "
|
|
60
|
+
"date-fns": "catalog:",
|
|
61
61
|
"decompress": "4.2.1",
|
|
62
|
-
"dotenv": "
|
|
62
|
+
"dotenv": "catalog:",
|
|
63
63
|
"env-ci": "11.1.0",
|
|
64
64
|
"env-paths": "3.0.0",
|
|
65
65
|
"execa": "9.5.2",
|
|
66
66
|
"fs-extra": "11.3.0",
|
|
67
|
-
"graphql": "
|
|
67
|
+
"graphql": "catalog:",
|
|
68
68
|
"https-proxy-agent": "7.0.5",
|
|
69
69
|
"inquirer": "9.2.7",
|
|
70
70
|
"js-yaml": "4.1.1",
|
|
71
71
|
"jwt-decode": "3.1.2",
|
|
72
|
-
"lodash-es": "
|
|
72
|
+
"lodash-es": "catalog:",
|
|
73
73
|
"log-symbols": "5.1.0",
|
|
74
74
|
"octokit": "4.1.3",
|
|
75
75
|
"open": "9.1.0",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"tar": "7.5.11",
|
|
84
84
|
"trieve-ts-sdk": "0.0.80",
|
|
85
85
|
"undici": "6.24.0",
|
|
86
|
-
"zod": "
|
|
86
|
+
"zod": "catalog:"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
89
|
"@types/bun": "1.2.3",
|
|
@@ -94,18 +94,18 @@
|
|
|
94
94
|
"@types/fs-extra": "11.0.4",
|
|
95
95
|
"@types/inquirer": "9.0.3",
|
|
96
96
|
"@types/js-yaml": "4.0.5",
|
|
97
|
-
"@types/lodash-es": "
|
|
98
|
-
"@types/node": "
|
|
97
|
+
"@types/lodash-es": "catalog:",
|
|
98
|
+
"@types/node": "catalog:",
|
|
99
99
|
"@types/prompts": "2.4.9",
|
|
100
100
|
"@types/semver": "7.7.0",
|
|
101
|
-
"@vitest/coverage-v8": "
|
|
102
|
-
"del-cli": "
|
|
103
|
-
"eslint": "
|
|
104
|
-
"eslint-config-unjs": "
|
|
105
|
-
"eslint-plugin-require-extensions": "
|
|
106
|
-
"tsx": "
|
|
107
|
-
"typescript": "
|
|
108
|
-
"vitest": "
|
|
101
|
+
"@vitest/coverage-v8": "catalog:",
|
|
102
|
+
"del-cli": "catalog:",
|
|
103
|
+
"eslint": "catalog:",
|
|
104
|
+
"eslint-config-unjs": "catalog:",
|
|
105
|
+
"eslint-plugin-require-extensions": "catalog:",
|
|
106
|
+
"tsx": "catalog:",
|
|
107
|
+
"typescript": "catalog:",
|
|
108
|
+
"vitest": "catalog:"
|
|
109
109
|
},
|
|
110
110
|
"gitHead": "c37aed755e1b19ed91d30f9b5f7041e15c56901a"
|
|
111
111
|
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { FederatedGraph, Subgraph } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
|
|
2
|
+
import type { BaseCommandOptions } from '../../core/types/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Retrieve user information [email] and [organization name]
|
|
5
|
+
*/
|
|
6
|
+
export declare function fetchUserInfo(client: BaseCommandOptions['client']): Promise<{
|
|
7
|
+
userInfo: import("@wundergraph/cosmo-connect/dist/platform/v1/platform_pb").WhoAmIResponse;
|
|
8
|
+
error: null;
|
|
9
|
+
} | {
|
|
10
|
+
userInfo: null;
|
|
11
|
+
error: Error;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Retrieve onboarding record. Provides information about allowed [status]:
|
|
15
|
+
* [error] | [not-allowed] | [ok]
|
|
16
|
+
* If record exists, returns [onboarding] metadata.
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkExistingOnboarding(client: BaseCommandOptions['client']): Promise<{
|
|
19
|
+
readonly error: Error;
|
|
20
|
+
readonly status: "error";
|
|
21
|
+
readonly onboarding?: undefined;
|
|
22
|
+
} | {
|
|
23
|
+
readonly status: "not-allowed";
|
|
24
|
+
readonly error?: undefined;
|
|
25
|
+
readonly onboarding?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
readonly onboarding: {
|
|
28
|
+
readonly finishedAt: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
readonly status: "ok";
|
|
31
|
+
readonly error?: undefined;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves federated graph by [name] *demo*. Missing federated graph
|
|
35
|
+
* is a valid state.
|
|
36
|
+
*/
|
|
37
|
+
export declare function fetchFederatedGraphByName(client: BaseCommandOptions['client'], { name, namespace }: {
|
|
38
|
+
name: string;
|
|
39
|
+
namespace: string;
|
|
40
|
+
}): Promise<{
|
|
41
|
+
data: {
|
|
42
|
+
graph: FederatedGraph | undefined;
|
|
43
|
+
subgraphs: Subgraph[];
|
|
44
|
+
};
|
|
45
|
+
error: null;
|
|
46
|
+
} | {
|
|
47
|
+
data: null;
|
|
48
|
+
error: null;
|
|
49
|
+
} | {
|
|
50
|
+
data: null;
|
|
51
|
+
error: Error;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Cleans up the federated graph by [name] _demo_ and its related
|
|
55
|
+
* subgraphs.
|
|
56
|
+
*/
|
|
57
|
+
export declare function cleanUpFederatedGraph(client: BaseCommandOptions['client'], graphData: {
|
|
58
|
+
graph: FederatedGraph;
|
|
59
|
+
subgraphs: Subgraph[];
|
|
60
|
+
}): Promise<{
|
|
61
|
+
error: Error;
|
|
62
|
+
} | {
|
|
63
|
+
error: null;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* Creates federated graph using default [name] and [namespace], with pre-defined
|
|
67
|
+
* [labelMatcher] which identify the graph as _demo_.
|
|
68
|
+
*/
|
|
69
|
+
export declare function createFederatedGraph(client: BaseCommandOptions['client'], options: {
|
|
70
|
+
name: string;
|
|
71
|
+
namespace: string;
|
|
72
|
+
labelMatcher: string;
|
|
73
|
+
routingUrl: URL;
|
|
74
|
+
}): Promise<{
|
|
75
|
+
error: null;
|
|
76
|
+
} | {
|
|
77
|
+
error: Error;
|
|
78
|
+
}>;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
2
|
+
import { getBaseHeaders } from '../../core/config.js';
|
|
3
|
+
/**
|
|
4
|
+
* Retrieve user information [email] and [organization name]
|
|
5
|
+
*/
|
|
6
|
+
export async function fetchUserInfo(client) {
|
|
7
|
+
var _a, _b, _c;
|
|
8
|
+
try {
|
|
9
|
+
const response = await client.platform.whoAmI({}, {
|
|
10
|
+
headers: getBaseHeaders(),
|
|
11
|
+
});
|
|
12
|
+
switch ((_a = response.response) === null || _a === void 0 ? void 0 : _a.code) {
|
|
13
|
+
case EnumStatusCode.OK: {
|
|
14
|
+
return {
|
|
15
|
+
userInfo: response,
|
|
16
|
+
error: null,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
default: {
|
|
20
|
+
return {
|
|
21
|
+
userInfo: null,
|
|
22
|
+
error: new Error((_c = (_b = response.response) === null || _b === void 0 ? void 0 : _b.details) !== null && _c !== void 0 ? _c : 'An unknown error occurred.'),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return {
|
|
29
|
+
userInfo: null,
|
|
30
|
+
error: err instanceof Error ? err : new Error('An unknown error occurred.'),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Retrieve onboarding record. Provides information about allowed [status]:
|
|
36
|
+
* [error] | [not-allowed] | [ok]
|
|
37
|
+
* If record exists, returns [onboarding] metadata.
|
|
38
|
+
*/
|
|
39
|
+
export async function checkExistingOnboarding(client) {
|
|
40
|
+
var _a;
|
|
41
|
+
const { response, finishedAt, enabled } = await client.platform.getOnboarding({}, {
|
|
42
|
+
headers: getBaseHeaders(),
|
|
43
|
+
});
|
|
44
|
+
if ((response === null || response === void 0 ? void 0 : response.code) !== EnumStatusCode.OK) {
|
|
45
|
+
return {
|
|
46
|
+
error: new Error((_a = response === null || response === void 0 ? void 0 : response.details) !== null && _a !== void 0 ? _a : 'Failed to fetch onboarding metadata.'),
|
|
47
|
+
status: 'error',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (!enabled) {
|
|
51
|
+
return {
|
|
52
|
+
status: 'not-allowed',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
onboarding: {
|
|
57
|
+
finishedAt,
|
|
58
|
+
},
|
|
59
|
+
status: 'ok',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Retrieves federated graph by [name] *demo*. Missing federated graph
|
|
64
|
+
* is a valid state.
|
|
65
|
+
*/
|
|
66
|
+
export async function fetchFederatedGraphByName(client, { name, namespace }) {
|
|
67
|
+
var _a;
|
|
68
|
+
const { response, graph, subgraphs } = await client.platform.getFederatedGraphByName({
|
|
69
|
+
name,
|
|
70
|
+
namespace,
|
|
71
|
+
}, {
|
|
72
|
+
headers: getBaseHeaders(),
|
|
73
|
+
});
|
|
74
|
+
switch (response === null || response === void 0 ? void 0 : response.code) {
|
|
75
|
+
case EnumStatusCode.OK: {
|
|
76
|
+
return { data: { graph, subgraphs }, error: null };
|
|
77
|
+
}
|
|
78
|
+
case EnumStatusCode.ERR_NOT_FOUND: {
|
|
79
|
+
return { data: null, error: null };
|
|
80
|
+
}
|
|
81
|
+
default: {
|
|
82
|
+
return {
|
|
83
|
+
data: null,
|
|
84
|
+
error: new Error((_a = response === null || response === void 0 ? void 0 : response.details) !== null && _a !== void 0 ? _a : 'An unknown error occured'),
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Cleans up the federated graph by [name] _demo_ and its related
|
|
91
|
+
* subgraphs.
|
|
92
|
+
*/
|
|
93
|
+
export async function cleanUpFederatedGraph(client, graphData) {
|
|
94
|
+
var _a, _b, _c;
|
|
95
|
+
const subgraphDeleteResponses = await Promise.all(graphData.subgraphs.map(({ name, namespace }) => client.platform.deleteFederatedSubgraph({
|
|
96
|
+
namespace,
|
|
97
|
+
subgraphName: name,
|
|
98
|
+
disableResolvabilityValidation: false,
|
|
99
|
+
}, {
|
|
100
|
+
headers: getBaseHeaders(),
|
|
101
|
+
})));
|
|
102
|
+
const failedSubgraphDeleteResponses = subgraphDeleteResponses.filter(({ response }) => (response === null || response === void 0 ? void 0 : response.code) !== EnumStatusCode.OK);
|
|
103
|
+
if (failedSubgraphDeleteResponses.length > 0) {
|
|
104
|
+
return {
|
|
105
|
+
error: new Error(failedSubgraphDeleteResponses.map(({ response }) => { var _a; return (_a = response === null || response === void 0 ? void 0 : response.details) !== null && _a !== void 0 ? _a : 'Unknown error occurred.'; }).join('. ')),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const federatedGraphDeleteResponse = await client.platform.deleteFederatedGraph({
|
|
109
|
+
name: graphData.graph.name,
|
|
110
|
+
namespace: graphData.graph.namespace,
|
|
111
|
+
}, {
|
|
112
|
+
headers: getBaseHeaders(),
|
|
113
|
+
});
|
|
114
|
+
switch ((_a = federatedGraphDeleteResponse.response) === null || _a === void 0 ? void 0 : _a.code) {
|
|
115
|
+
case EnumStatusCode.OK: {
|
|
116
|
+
return {
|
|
117
|
+
error: null,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
default: {
|
|
121
|
+
return {
|
|
122
|
+
error: new Error((_c = (_b = federatedGraphDeleteResponse.response) === null || _b === void 0 ? void 0 : _b.details) !== null && _c !== void 0 ? _c : 'Unknown error occurred.'),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Creates federated graph using default [name] and [namespace], with pre-defined
|
|
129
|
+
* [labelMatcher] which identify the graph as _demo_.
|
|
130
|
+
*/
|
|
131
|
+
export async function createFederatedGraph(client, options) {
|
|
132
|
+
var _a, _b, _c;
|
|
133
|
+
const createFedGraphResponse = await client.platform.createFederatedGraph({
|
|
134
|
+
name: options.name,
|
|
135
|
+
namespace: options.namespace,
|
|
136
|
+
routingUrl: options.routingUrl.toString(),
|
|
137
|
+
labelMatchers: [options.labelMatcher],
|
|
138
|
+
}, {
|
|
139
|
+
headers: getBaseHeaders(),
|
|
140
|
+
});
|
|
141
|
+
switch ((_a = createFedGraphResponse.response) === null || _a === void 0 ? void 0 : _a.code) {
|
|
142
|
+
case EnumStatusCode.OK: {
|
|
143
|
+
return { error: null };
|
|
144
|
+
}
|
|
145
|
+
default: {
|
|
146
|
+
return {
|
|
147
|
+
error: new Error((_c = (_b = createFedGraphResponse.response) === null || _b === void 0 ? void 0 : _b.details) !== null && _c !== void 0 ? _c : 'An unknown error occured'),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/commands/demo/api.ts"],"names":[],"mappings":"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"}
|