wgc 0.60.3 → 0.62.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/commands/feature-flag/commands/list.d.ts +4 -0
- package/dist/commands/feature-flag/commands/list.js +66 -0
- package/dist/commands/feature-flag/commands/list.js.map +1 -0
- package/dist/commands/feature-flag/index.js +2 -0
- package/dist/commands/feature-flag/index.js.map +1 -1
- package/dist/commands/graph/federated-graph/commands/list.js +23 -7
- package/dist/commands/graph/federated-graph/commands/list.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
|
|
3
|
+
import { Command, program } from 'commander';
|
|
4
|
+
import pc from 'picocolors';
|
|
5
|
+
import Table from 'cli-table3';
|
|
6
|
+
import { joinLabel } from '@wundergraph/cosmo-shared';
|
|
7
|
+
import { resolve } from 'pathe';
|
|
8
|
+
import { getBaseHeaders } from '../../../core/config.js';
|
|
9
|
+
export default (opts) => {
|
|
10
|
+
const command = new Command('list');
|
|
11
|
+
command.description('Lists the feature flags.');
|
|
12
|
+
command.option('-n, --namespace [string]', 'The namespace of the feature flags. If not provided, it will list all feature flags.');
|
|
13
|
+
command.option('-o, --out [string]', 'Destination file for the json output.');
|
|
14
|
+
command.option('-j, --json', 'Prints to the console in json format instead of table');
|
|
15
|
+
command.action(async (options) => {
|
|
16
|
+
var _a, _b, _c;
|
|
17
|
+
const resp = await opts.client.platform.getFeatureFlags({
|
|
18
|
+
namespace: options.namespace,
|
|
19
|
+
limit: 0,
|
|
20
|
+
offset: 0,
|
|
21
|
+
}, {
|
|
22
|
+
headers: getBaseHeaders(),
|
|
23
|
+
});
|
|
24
|
+
if (((_a = resp.response) === null || _a === void 0 ? void 0 : _a.code) !== EnumStatusCode.OK) {
|
|
25
|
+
program.error(pc.red(`Could not fetch feature flags. ${(_c = (_b = resp.response) === null || _b === void 0 ? void 0 : _b.details) !== null && _c !== void 0 ? _c : ''}`));
|
|
26
|
+
}
|
|
27
|
+
if (options.out) {
|
|
28
|
+
const output = resp.featureFlags.map((f) => ({
|
|
29
|
+
name: f.name,
|
|
30
|
+
labels: f.labels.map((l) => joinLabel(l)),
|
|
31
|
+
isEnabled: f.isEnabled,
|
|
32
|
+
lastUpdatedAt: f.updatedAt,
|
|
33
|
+
namespace: f.namespace,
|
|
34
|
+
}));
|
|
35
|
+
await writeFile(resolve(options.out), JSON.stringify(output));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (options.json) {
|
|
39
|
+
console.log(JSON.stringify(resp.featureFlags));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const featureFlagsTable = new Table({
|
|
43
|
+
head: [
|
|
44
|
+
pc.bold(pc.white('NAME')),
|
|
45
|
+
pc.bold(pc.white('NAMESPACE')),
|
|
46
|
+
pc.bold(pc.white('LABELS')),
|
|
47
|
+
pc.bold(pc.white('ENABLED')),
|
|
48
|
+
pc.bold(pc.white('UPDATED_AT')),
|
|
49
|
+
],
|
|
50
|
+
colWidths: [20, 20, 30, 15, 30],
|
|
51
|
+
wordWrap: true,
|
|
52
|
+
});
|
|
53
|
+
for (const ff of resp.featureFlags) {
|
|
54
|
+
featureFlagsTable.push([
|
|
55
|
+
ff.name,
|
|
56
|
+
ff.namespace,
|
|
57
|
+
ff.labels.map((l) => joinLabel(l)).join(', ') || '-',
|
|
58
|
+
ff.isEnabled,
|
|
59
|
+
ff.updatedAt || '-',
|
|
60
|
+
]);
|
|
61
|
+
}
|
|
62
|
+
console.log(featureFlagsTable.toString());
|
|
63
|
+
});
|
|
64
|
+
return command;
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/feature-flag/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAWzD,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,CACZ,0BAA0B,EAC1B,sFAAsF,CACvF,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,uCAAuC,CAAC,CAAC;IAC9E,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,uDAAuD,CAAC,CAAC;IACtF,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;;QAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CACrD;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,EACD;YACE,OAAO,EAAE,cAAc,EAAE;SAC1B,CACF,CAAC;QAEF,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,MAAK,cAAc,CAAC,EAAE,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,kCAAkC,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,mCAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAClC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;gBACC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,aAAa,EAAE,CAAC,CAAC,SAAS;gBAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAuB,CAC3B,CAAC;YACF,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG,IAAI,KAAK,CAAC;YAClC,IAAI,EAAE;gBACJ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACzB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC9B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC5B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;aAChC;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/B,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACnC,iBAAiB,CAAC,IAAI,CAAC;gBACrB,EAAE,CAAC,IAAI;gBACP,EAAE,CAAC,SAAS;gBACZ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG;gBACpD,EAAE,CAAC,SAAS;gBACZ,EAAE,CAAC,SAAS,IAAI,GAAG;aACpB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -5,6 +5,7 @@ import DeleteFeatureFlagCommand from './commands/delete.js';
|
|
|
5
5
|
import EnableFeatureFlagCommand from './commands/enable.js';
|
|
6
6
|
import DisableFeatureFlagCommand from './commands/disable.js';
|
|
7
7
|
import UpdateFeatureFlagCommand from './commands/update.js';
|
|
8
|
+
import ListFeatureFlagCommand from './commands/list.js';
|
|
8
9
|
export default (opts) => {
|
|
9
10
|
const command = new Command('feature-flag').alias('ff');
|
|
10
11
|
command.description('Provides commands for creating and managing a feature flags.');
|
|
@@ -13,6 +14,7 @@ export default (opts) => {
|
|
|
13
14
|
command.addCommand(EnableFeatureFlagCommand(opts));
|
|
14
15
|
command.addCommand(DisableFeatureFlagCommand(opts));
|
|
15
16
|
command.addCommand(UpdateFeatureFlagCommand(opts));
|
|
17
|
+
command.addCommand(ListFeatureFlagCommand(opts));
|
|
16
18
|
command.hook('preAction', async () => {
|
|
17
19
|
await checkAuth();
|
|
18
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/feature-flag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,yBAAyB,MAAM,uBAAuB,CAAC;AAC9D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/feature-flag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,yBAAyB,MAAM,uBAAuB,CAAC;AAC9D,OAAO,wBAAwB,MAAM,sBAAsB,CAAC;AAC5D,OAAO,sBAAsB,MAAM,oBAAoB,CAAC;AAExD,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,WAAW,CAAC,8DAA8D,CAAC,CAAC;IAEpF,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjD,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,SAAS,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -14,6 +14,7 @@ export default (opts) => {
|
|
|
14
14
|
command.option('-o, --out [string]', 'Destination file for the json output.');
|
|
15
15
|
command.option('-r, --raw', 'Prints to the console in json format instead of table');
|
|
16
16
|
command.option('-j, --json', 'Prints to the console in json format instead of table');
|
|
17
|
+
command.option('--only-contracts', 'Filter to show contracts only');
|
|
17
18
|
command.action(async (options) => {
|
|
18
19
|
var _a, _b;
|
|
19
20
|
const resp = await opts.client.platform.getFederatedGraphs({
|
|
@@ -30,18 +31,31 @@ export default (opts) => {
|
|
|
30
31
|
console.log(pc.red((_b = resp.response) === null || _b === void 0 ? void 0 : _b.details));
|
|
31
32
|
program.error(pc.red('Could not fetch the federated graphs.'));
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
const filteredGraphs = [];
|
|
35
|
+
if (options.onlyContracts) {
|
|
36
|
+
filteredGraphs.push(...resp.graphs.filter((g) => !!g.contract));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
filteredGraphs.push(...resp.graphs);
|
|
40
|
+
}
|
|
41
|
+
if (filteredGraphs.length === 0) {
|
|
42
|
+
if (options.onlyContracts) {
|
|
43
|
+
console.log('No contracts found');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log('No federated graphs found');
|
|
47
|
+
}
|
|
35
48
|
process.exit(0);
|
|
36
49
|
}
|
|
37
50
|
if (options.out) {
|
|
38
|
-
const output =
|
|
51
|
+
const output = filteredGraphs.map((g) => ({
|
|
39
52
|
name: g.name,
|
|
40
53
|
namespace: g.namespace,
|
|
41
54
|
labelMatchers: g.labelMatchers,
|
|
42
55
|
routingURL: g.routingURL,
|
|
43
56
|
isComposable: g.isComposable,
|
|
44
57
|
lastUpdatedAt: g.lastUpdatedAt,
|
|
58
|
+
contract: g.contract,
|
|
45
59
|
}));
|
|
46
60
|
await writeFile(resolve(options.out), JSON.stringify(output));
|
|
47
61
|
process.exit(0);
|
|
@@ -50,7 +64,7 @@ export default (opts) => {
|
|
|
50
64
|
console.log(pc.yellow('Please use the --json option. The --raw option is deprecated.'));
|
|
51
65
|
}
|
|
52
66
|
if (options.raw || options.json) {
|
|
53
|
-
console.log(JSON.stringify(
|
|
67
|
+
console.log(JSON.stringify(filteredGraphs));
|
|
54
68
|
process.exit(0);
|
|
55
69
|
}
|
|
56
70
|
const graphsTable = new Table({
|
|
@@ -61,12 +75,13 @@ export default (opts) => {
|
|
|
61
75
|
pc.bold(pc.white('ROUTING_URL')),
|
|
62
76
|
pc.bold(pc.white('IS_COMPOSABLE')),
|
|
63
77
|
pc.bold(pc.white('UPDATED_AT')),
|
|
78
|
+
pc.bold(pc.white('IS_CONTRACT')),
|
|
64
79
|
],
|
|
65
|
-
colAligns: ['left', 'left', 'left', 'left', 'center', 'left'],
|
|
66
|
-
colWidths: [25, 25, 40, 70, 15, 30],
|
|
80
|
+
colAligns: ['left', 'left', 'left', 'left', 'center', 'left', 'center'],
|
|
81
|
+
colWidths: [25, 25, 40, 70, 15, 30, 15],
|
|
67
82
|
wordWrap: true,
|
|
68
83
|
});
|
|
69
|
-
for (const graph of
|
|
84
|
+
for (const graph of filteredGraphs) {
|
|
70
85
|
graphsTable.push([
|
|
71
86
|
graph.name,
|
|
72
87
|
graph.namespace,
|
|
@@ -74,6 +89,7 @@ export default (opts) => {
|
|
|
74
89
|
graph.routingURL,
|
|
75
90
|
graph.isComposable ? logSymbols.success : logSymbols.error,
|
|
76
91
|
graph.lastUpdatedAt,
|
|
92
|
+
graph.contract ? logSymbols.success : logSymbols.error,
|
|
77
93
|
]);
|
|
78
94
|
}
|
|
79
95
|
console.log(graphsTable.toString());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/graph/federated-graph/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAClF,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,OAAO,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../../src/commands/graph/federated-graph/commands/list.ts"],"names":[],"mappings":"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"}
|