wgc 0.78.3 → 0.79.1

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 CHANGED
@@ -22,10 +22,17 @@ npm install -g wgc --help
22
22
 
23
23
  ### Telemetry
24
24
 
25
- The CLI tool collects anonymous usage data to improve the tool. You can disable this by setting this variable in accordance to the [Console Do Not Track](https://consoledonottrack.com/) standard:
26
- ```shell
27
- export DO_NOT_TRACK=1
28
- ```
25
+ The CLI tool collects usage data to help us improve the tool and understand how users interact with it. You can disable telemetry in one of the following ways:
26
+
27
+ 1. Set the environment variable:
28
+ ```shell
29
+ export COSMO_TELEMETRY_DISABLED=true
30
+ ```
31
+
32
+ 2. Follow the [Console Do Not Track](https://consoledonottrack.com/) standard:
33
+ ```shell
34
+ export DO_NOT_TRACK=1
35
+ ```
29
36
 
30
37
  ### Development
31
38
 
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wgc",
3
- "version": "0.78.3",
3
+ "version": "0.79.1",
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",
@@ -67,6 +67,7 @@
67
67
  "ora": "^8.0.1",
68
68
  "pathe": "^1.1.1",
69
69
  "picocolors": "^1.0.0",
70
+ "posthog-node": "^4.17.1",
70
71
  "trieve-ts-sdk": "^0.0.80",
71
72
  "undici": "^6.21.1",
72
73
  "zod": "^3.22.4"
@@ -3,6 +3,7 @@ import { Command } from 'commander';
3
3
  import { CreateClient } from '../core/client/client.js';
4
4
  import { config, configDir } from '../core/config.js';
5
5
  import { checkForUpdates } from '../utils.js';
6
+ import { capture } from '../core/telemetry.js';
6
7
  import AuthCommands from './auth/index.js';
7
8
  import MonographCommands from './graph/monograph/index.js';
8
9
  import FederatedGraphCommands from './graph/federated-graph/index.js';
@@ -76,5 +77,26 @@ program.hook('preAction', async () => {
76
77
  mkdirSync(configDir, { recursive: true });
77
78
  await checkForUpdates();
78
79
  });
80
+ // Hook to capture command usage
81
+ program.hook('preAction', (thisCommand, actionCommand) => {
82
+ const commandPath = actionCommand.name();
83
+ const parentNames = [];
84
+ let current = actionCommand.parent;
85
+ // Build the full command path (e.g., "federated-graph publish")
86
+ while (current) {
87
+ if (current.name() !== '') {
88
+ parentNames.unshift(current.name());
89
+ }
90
+ current = current.parent;
91
+ }
92
+ const fullCommandPath = [...parentNames, commandPath].join(' ');
93
+ const args = actionCommand.args || [];
94
+ // Capture command execution event
95
+ capture('command_executed', {
96
+ command_path: fullCommandPath,
97
+ command_options: actionCommand.opts(),
98
+ command_args: args,
99
+ });
100
+ });
79
101
  export default program;
80
102
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { Command, program } from 'commander';
4
4
  import { resolve } from 'pathe';
5
5
  import pc from 'picocolors';
6
6
  import { VCSContext } from '@wundergraph/cosmo-connect/dist/platform/v1/platform_pb';
7
+ import { splitLabel } from '@wundergraph/cosmo-shared';
7
8
  import { config, getBaseHeaders } from '../../../core/config.js';
8
9
  import { verifyGitHubIntegration } from '../../../github.js';
9
10
  import { handleCheckResult } from '../../../handle-check-result.js';
@@ -15,6 +16,8 @@ export default (opts) => {
15
16
  command.option('--schema <path-to-schema>', 'The path of the new schema file.');
16
17
  command.option('--delete', 'Run checks in case the subgraph is deleted.');
17
18
  command.option('--skip-traffic-check', 'This will skip checking for client traffic and any breaking change will fail the run.');
19
+ command.option('--label [labels...]', 'The labels to apply to the subgraph. The labels are passed in the format <key>=<value> <key>=<value>.' +
20
+ ' This parameter is always ignored if the subgraph already exists.', []);
18
21
  command.action(async (name, options) => {
19
22
  let schemaFile;
20
23
  if (!options.schema && !options.delete) {
@@ -45,6 +48,7 @@ export default (opts) => {
45
48
  delete: options.delete,
46
49
  skipTrafficCheck: options.skipTrafficCheck,
47
50
  vcsContext,
51
+ labels: options.label.map((label) => splitLabel(label)),
48
52
  }, {
49
53
  headers: getBaseHeaders(),
50
54
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../src/commands/subgraph/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../src/commands/subgraph/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Initialize PostHog client
3
+ * This should be called once at the start of the CLI
4
+ */
5
+ export declare const initTelemetry: () => void;
6
+ /**
7
+ * Capture a usage event
8
+ */
9
+ export declare const capture: (eventName: string, properties?: Record<string, any>) => void;
10
+ /**
11
+ * Shutdown PostHog client - should be called before CLI exits
12
+ */
13
+ export declare const shutdownTelemetry: () => Promise<void>;
@@ -0,0 +1,109 @@
1
+ import os from 'node:os';
2
+ import { PostHog } from 'posthog-node';
3
+ import { config, getBaseHeaders } from './config.js';
4
+ // Environment variables to allow opting out of telemetry
5
+ // Support for COSMO_TELEMETRY_DISABLED and Console Do Not Track standard
6
+ const TELEMETRY_DISABLED = process.env.COSMO_TELEMETRY_DISABLED === 'true' || process.env.DO_NOT_TRACK === '1' || !process.env.POSTHOG_API_KEY;
7
+ let client = null;
8
+ // Detect if running in a CI environment
9
+ const isCI = () => {
10
+ return Boolean(process.env.CI || // Travis CI, CircleCI, GitLab CI, GitHub Actions, etc.
11
+ process.env.CONTINUOUS_INTEGRATION ||
12
+ process.env.BUILD_NUMBER || // Jenkins
13
+ process.env.TEAMCITY_VERSION || // TeamCity
14
+ process.env.GITLAB_CI ||
15
+ process.env.GITHUB_ACTIONS ||
16
+ process.env.BUILDKITE);
17
+ };
18
+ /**
19
+ * Initialize PostHog client
20
+ * This should be called once at the start of the CLI
21
+ */
22
+ export const initTelemetry = () => {
23
+ if (TELEMETRY_DISABLED) {
24
+ return;
25
+ }
26
+ const posthogApiKey = process.env.POSTHOG_API_KEY || '';
27
+ const posthogHost = process.env.POSTHOG_HOST || 'https://eu.i.posthog.com';
28
+ client = new PostHog(posthogApiKey, {
29
+ host: posthogHost,
30
+ flushAt: 1, // For CLI, we want to send events immediately
31
+ flushInterval: 0, // Don't wait to flush events
32
+ disableGeoip: false,
33
+ });
34
+ // Handle errors silently to not interrupt CLI operations
35
+ client.on('error', (err) => {
36
+ if (process.env.DEBUG) {
37
+ console.error('Telemetry error:', err);
38
+ }
39
+ });
40
+ };
41
+ /**
42
+ * Capture a usage event
43
+ */
44
+ export const capture = (eventName, properties = {}) => {
45
+ if (TELEMETRY_DISABLED || !client) {
46
+ return;
47
+ }
48
+ try {
49
+ const distinctId = getDistinctId();
50
+ const metadata = getMetadata();
51
+ client.capture({
52
+ distinctId,
53
+ event: eventName,
54
+ properties: {
55
+ ...metadata,
56
+ ...properties,
57
+ },
58
+ });
59
+ }
60
+ catch (err) {
61
+ // Silently fail to not disrupt CLI operations
62
+ if (process.env.DEBUG) {
63
+ console.error('Failed to capture telemetry event:', err);
64
+ }
65
+ }
66
+ };
67
+ /**
68
+ * Generate a consistent distinct ID
69
+ */
70
+ const getDistinctId = () => {
71
+ // Use organization slug if available
72
+ const headers = getBaseHeaders();
73
+ // Convert HeadersInit to Record to safely access properties
74
+ const headersRecord = Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, value.toString()]));
75
+ const organizationSlug = headersRecord['cosmo-org-slug'] || 'anonymous';
76
+ return `cli_${organizationSlug}`;
77
+ };
78
+ /**
79
+ * Get CLI metadata to include with all events
80
+ */
81
+ const getMetadata = () => {
82
+ var _a;
83
+ return {
84
+ cli_version: config.version,
85
+ node_version: process.version,
86
+ os_name: process.platform,
87
+ os_version: ((_a = process.release) === null || _a === void 0 ? void 0 : _a.name) || '',
88
+ platform: process.arch,
89
+ machine_id: os.hostname(),
90
+ is_ci: isCI(),
91
+ };
92
+ };
93
+ /**
94
+ * Shutdown PostHog client - should be called before CLI exits
95
+ */
96
+ export const shutdownTelemetry = async () => {
97
+ if (client) {
98
+ try {
99
+ await client.shutdown();
100
+ }
101
+ catch (err) {
102
+ // Silently fail
103
+ if (process.env.DEBUG) {
104
+ console.error('Failed to shutdown telemetry:', err);
105
+ }
106
+ }
107
+ }
108
+ };
109
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../src/core/telemetry.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -3,9 +3,12 @@ import * as dotenv from 'dotenv';
3
3
  import pc from 'picocolors';
4
4
  import boxen from 'boxen';
5
5
  import program from './commands/index.js';
6
+ import { initTelemetry, shutdownTelemetry } from './core/telemetry.js';
6
7
  dotenv.config();
8
+ initTelemetry();
7
9
  try {
8
10
  await program.parseAsync(process.argv);
11
+ await shutdownTelemetry();
9
12
  }
10
13
  catch (e) {
11
14
  console.log('');
@@ -24,5 +27,6 @@ Please try the below steps to solve the issue
24
27
  borderStyle: 'round',
25
28
  }));
26
29
  process.exitCode = 1;
30
+ await shutdownTelemetry();
27
31
  }
28
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAE1C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG;;;;MAIZ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;;MAE9B,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAAC;IAExE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,EAAE;QACb,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,OAAO;KACrB,CAAC,CACH,CAAC;IAEF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,aAAa,EAAE,CAAC;AAEhB,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG;;;;MAIZ,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;;MAE9B,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,EAAE,CAAC;IAExE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,EAAE;QACb,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,KAAK;QAClB,WAAW,EAAE,OAAO;KACrB,CAAC,CACH,CAAC;IAEF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAErB,MAAM,iBAAiB,EAAE,CAAC;AAC5B,CAAC"}