wgc 0.31.0 → 0.32.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/.eslintrc CHANGED
@@ -1,5 +1,8 @@
1
1
  {
2
- "extends": ["eslint-config-unjs"],
2
+ "extends": ["eslint-config-unjs", "plugin:require-extensions/recommended"],
3
+ "plugins": [
4
+ "require-extensions"
5
+ ],
3
6
  "rules": {
4
7
  "space-before-function-paren": 0,
5
8
  "arrow-parens": 0,
package/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ Binaries are attached to the github release otherwise all images can be found [h
4
4
  All notable changes to this project will be documented in this file.
5
5
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
6
6
 
7
+ # [0.32.0](https://github.com/wundergraph/cosmo/compare/wgc@0.31.1...wgc@0.32.0) (2023-11-29)
8
+
9
+ ### Features
10
+
11
+ * accept custom operation IDs for persisted operations ([#302](https://github.com/wundergraph/cosmo/issues/302)) ([a535a62](https://github.com/wundergraph/cosmo/commit/a535a62bb7f70d2e58d1a04066fb74e78d932653)) (@fiam)
12
+
13
+ ## [0.31.1](https://github.com/wundergraph/cosmo/compare/wgc@0.31.0...wgc@0.31.1) (2023-11-28)
14
+
15
+ **Note:** Version bump only for package wgc
16
+
7
17
  # [0.31.0](https://github.com/wundergraph/cosmo/compare/wgc@0.30.1...wgc@0.31.0) (2023-11-24)
8
18
 
9
19
  ### Features
@@ -1,5 +1,6 @@
1
1
  import { Command } from 'commander';
2
+ import { PersistedOperation } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
2
3
  import { BaseCommandOptions } from '../../../core/types/types.js';
3
- export declare const parseOperations: (contents: string) => string[];
4
+ export declare const parseOperations: (contents: string) => PersistedOperation[];
4
5
  declare const _default: (opts: BaseCommandOptions) => Command;
5
6
  export default _default;
@@ -1,8 +1,9 @@
1
+ import crypto from 'node:crypto';
1
2
  import { readFile } from 'node:fs/promises';
2
3
  import { Command } from 'commander';
3
4
  import pc from 'picocolors';
4
5
  import { EnumStatusCode } from '@wundergraph/cosmo-connect/dist/common/common_pb';
5
- import { PublishedOperationStatus } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
6
+ import { PublishedOperationStatus, PersistedOperation } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
6
7
  import { baseHeaders } from '../../../core/config.js';
7
8
  const collect = (value, previous) => {
8
9
  return [...previous, value];
@@ -12,22 +13,65 @@ const parseApolloPersistedQueryManifest = (data) => {
12
13
  if (data.version !== 1) {
13
14
  throw new Error(`unknown Apollo persisted query manifest version ${data.version}`);
14
15
  }
15
- return (_b = (_a = data.operations) === null || _a === void 0 ? void 0 : _a.map((op) => op.body).filter((x) => !!x)) !== null && _b !== void 0 ? _b : [];
16
+ return ((_b = (_a = data.operations) === null || _a === void 0 ? void 0 : _a.filter((op) => op.id && op.body).map((op) => new PersistedOperation({ id: op.id, contents: op.body }))) !== null && _b !== void 0 ? _b : []);
16
17
  };
17
- const parseOperationsJson = (data) => {
18
- if (data.format === 'apollo-persisted-query-manifest') {
19
- return parseApolloPersistedQueryManifest(data);
20
- }
18
+ const isRelayQueryMap = (data) => {
21
19
  // Check if all elements are 2-element arrays of strings. In that case
22
20
  // the data is a relay query map
23
- if (Array.isArray(data) &&
21
+ return (Array.isArray(data) &&
24
22
  data.length ===
25
23
  data.filter((x) => Array.isArray(x) && x.length === 2 && typeof x[0] === 'string' && typeof x[1] === 'string')
26
- .length) {
27
- return data.map((x) => x[1]).filter((x) => !!x);
24
+ .length);
25
+ };
26
+ const parseRelayQueryMap = (data) => {
27
+ return data.map((x) => new PersistedOperation({ id: x[0], contents: x[1] }));
28
+ };
29
+ const isRelayQueryObject = (data) => {
30
+ return Object.keys(data).every((key) => typeof key === 'string' && typeof data[key] === 'string');
31
+ };
32
+ const parseRelayQueryObject = (data) => {
33
+ return Object.keys(data).map((key) => new PersistedOperation({ id: key, contents: data[key] }));
34
+ };
35
+ const parseOperationsJson = (data) => {
36
+ if (data.format === 'apollo-persisted-query-manifest') {
37
+ return parseApolloPersistedQueryManifest(data);
38
+ }
39
+ if (isRelayQueryMap(data)) {
40
+ return parseRelayQueryMap(data);
41
+ }
42
+ if (isRelayQueryObject(data)) {
43
+ return parseRelayQueryObject(data);
28
44
  }
29
45
  throw new Error(`unknown data format`);
30
46
  };
47
+ const humanReadableOperationStatus = (status) => {
48
+ switch (status) {
49
+ case PublishedOperationStatus.CREATED: {
50
+ return 'created';
51
+ }
52
+ case PublishedOperationStatus.UP_TO_DATE: {
53
+ return 'up to date';
54
+ }
55
+ case PublishedOperationStatus.CONFLICT: {
56
+ return 'conflict';
57
+ }
58
+ }
59
+ throw new Error('unknown operation status');
60
+ };
61
+ const jsonOperationStatus = (status) => {
62
+ switch (status) {
63
+ case PublishedOperationStatus.CREATED: {
64
+ return 'created';
65
+ }
66
+ case PublishedOperationStatus.UP_TO_DATE: {
67
+ return 'up_to_date';
68
+ }
69
+ case PublishedOperationStatus.CONFLICT: {
70
+ return 'conflict';
71
+ }
72
+ }
73
+ throw new Error('unknown operation status');
74
+ };
31
75
  export const parseOperations = (contents) => {
32
76
  let data;
33
77
  try {
@@ -35,7 +79,8 @@ export const parseOperations = (contents) => {
35
79
  }
36
80
  catch {
37
81
  // Assume it's plain graphql
38
- return [contents];
82
+ const id = crypto.createHash('sha256').update(contents).digest('hex');
83
+ return [new PersistedOperation({ id, contents })];
39
84
  }
40
85
  return parseOperationsJson(data);
41
86
  };
@@ -46,9 +91,10 @@ export default (opts) => {
46
91
  command.requiredOption('-c, --client <client-name>', 'The client identifier to register the operations to');
47
92
  command.requiredOption('-f, --file <file>', 'The file with the operations to push - supports .graphql, .gql and .json manifests from Apollo and Relay', collect, []);
48
93
  command.option('-q, --quiet', 'Do not print any output', false);
94
+ command.option('--allow-conflicts', 'Exit with success even if there are conflicts', false);
49
95
  command.option('--format <output-format>', 'Output format: supported ones are text and json', 'text');
50
96
  command.action(async (name, options) => {
51
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
97
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
52
98
  if (options.file.length === 0) {
53
99
  command.error(pc.red('No files provided'));
54
100
  }
@@ -74,22 +120,29 @@ export default (opts) => {
74
120
  switch (options.format) {
75
121
  case 'text': {
76
122
  for (const op of result.operations) {
77
- console.log(pc.green(`pushed operation ${op.hash} (${op.status === PublishedOperationStatus.CREATED ? 'created' : 'up to date'})`));
123
+ console.log(pc.green(`pushed operation ${op.id} (${op.hash}) (${humanReadableOperationStatus(op.status)})`));
78
124
  }
79
125
  const upToDate = ((_c = (_b = result.operations) === null || _b === void 0 ? void 0 : _b.filter((op) => op.status === PublishedOperationStatus.UP_TO_DATE)) !== null && _c !== void 0 ? _c : [])
80
126
  .length;
81
127
  const created = ((_e = (_d = result.operations) === null || _d === void 0 ? void 0 : _d.filter((op) => op.status === PublishedOperationStatus.CREATED)) !== null && _e !== void 0 ? _e : [])
82
128
  .length;
83
- console.log(pc.green(`pushed ${(_g = (_f = result.operations) === null || _f === void 0 ? void 0 : _f.length) !== null && _g !== void 0 ? _g : 0} operations: ${created} created, ${upToDate} up to date`));
129
+ const conflict = ((_g = (_f = result.operations) === null || _f === void 0 ? void 0 : _f.filter((op) => op.status === PublishedOperationStatus.CONFLICT)) !== null && _g !== void 0 ? _g : [])
130
+ .length;
131
+ const color = conflict === 0 ? pc.green : pc.yellow;
132
+ console.log(color(`pushed ${(_j = (_h = result.operations) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0} operations: ${created} created, ${upToDate} up to date, ${conflict} conflicts`));
133
+ if (conflict > 0 && !options.allowConflicts) {
134
+ command.error(pc.red('conflicts detected'));
135
+ }
84
136
  break;
85
137
  }
86
138
  case 'json': {
87
139
  const returnedOperations = {};
88
140
  for (let ii = 0; ii < result.operations.length; ii++) {
89
141
  const op = result.operations[ii];
90
- returnedOperations[op.hash] = {
91
- body: operations[ii],
92
- status: op.status === PublishedOperationStatus.CREATED ? 'created' : 'up_to_date',
142
+ returnedOperations[op.id] = {
143
+ hash: op.hash,
144
+ contents: operations[ii].contents,
145
+ status: jsonOperationStatus(op.status),
93
146
  };
94
147
  }
95
148
  console.log(JSON.stringify(returnedOperations, null, 2));
@@ -98,7 +151,7 @@ export default (opts) => {
98
151
  }
99
152
  }
100
153
  else {
101
- command.error(pc.red(`could not push operations: ${(_j = (_h = result.response) === null || _h === void 0 ? void 0 : _h.details) !== null && _j !== void 0 ? _j : 'unknown error'}`));
154
+ command.error(pc.red(`could not push operations: ${(_l = (_k = result.response) === null || _k === void 0 ? void 0 : _k.details) !== null && _l !== void 0 ? _l : 'unknown error'}`));
102
155
  }
103
156
  });
104
157
  return command;
@@ -1 +1 @@
1
- {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/commands/operations/commands/push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../src/commands/operations/commands/push.ts"],"names":[],"mappings":"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"}