@kubb/cli 5.0.0-beta.89 → 5.0.0-beta.91
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/{Telemetry-Cuzoes9Y.js → Telemetry-7z2tIqPm.js} +132 -138
- package/dist/Telemetry-7z2tIqPm.js.map +1 -0
- package/dist/{Telemetry-CwQYBgsg.cjs → Telemetry-xcWb-UWT.cjs} +149 -143
- package/dist/Telemetry-xcWb-UWT.cjs.map +1 -0
- package/dist/{errors-Dc_d7BfX.js → errors-CMvLO2NE.js} +2 -14
- package/dist/{errors-Dc_d7BfX.js.map → errors-CMvLO2NE.js.map} +1 -1
- package/dist/{errors-gxFK0vrp.cjs → errors-DNxBUo3k.cjs} +1 -19
- package/dist/{errors-gxFK0vrp.cjs.map → errors-DNxBUo3k.cjs.map} +1 -1
- package/dist/{generate-B_RPyXup.js → generate-C9fJvlhv.js} +2 -2
- package/dist/{generate-B_RPyXup.js.map → generate-C9fJvlhv.js.map} +1 -1
- package/dist/{generate-BqK0_4yf.cjs → generate-CIVRaeeA.cjs} +2 -2
- package/dist/{generate-BqK0_4yf.cjs.map → generate-CIVRaeeA.cjs.map} +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/{init-DnmDbSWX.cjs → init-BBmle7Oc.cjs} +3 -3
- package/dist/{init-DnmDbSWX.cjs.map → init-BBmle7Oc.cjs.map} +1 -1
- package/dist/{init-CcP9gG-e.js → init-DXjubhO6.js} +3 -3
- package/dist/{init-CcP9gG-e.js.map → init-DXjubhO6.js.map} +1 -1
- package/dist/{mcp-D01SwyWA.js → mcp-DLKKD_8s.js} +3 -3
- package/dist/{mcp-D01SwyWA.js.map → mcp-DLKKD_8s.js.map} +1 -1
- package/dist/{mcp-jY8xa57u.cjs → mcp-Dzgpeor_.cjs} +3 -3
- package/dist/{mcp-jY8xa57u.cjs.map → mcp-Dzgpeor_.cjs.map} +1 -1
- package/dist/{package-C-vta72c.cjs → package-Bsc6NeTU.cjs} +2 -2
- package/dist/package-Bsc6NeTU.cjs.map +1 -0
- package/dist/package-CaBsNdoM.js +6 -0
- package/dist/package-CaBsNdoM.js.map +1 -0
- package/dist/{run-C2op_xLp.js → run-BBS4Sc38.js} +44 -69
- package/dist/run-BBS4Sc38.js.map +1 -0
- package/dist/{run-3qq_Q4Tg.cjs → run-BNOCBw2y.cjs} +12 -3
- package/dist/run-BNOCBw2y.cjs.map +1 -0
- package/dist/{run-DYzUPE7Z.cjs → run-BdtVrLKu.cjs} +5 -5
- package/dist/run-BdtVrLKu.cjs.map +1 -0
- package/dist/{run-BzEbTlMp.cjs → run-Bgn3IPJt.cjs} +43 -69
- package/dist/run-Bgn3IPJt.cjs.map +1 -0
- package/dist/{run-yMRylOST.js → run-CINOocLR.js} +12 -3
- package/dist/run-CINOocLR.js.map +1 -0
- package/dist/{run-BFhNcn8b.js → run-CaOjZRiQ.js} +5 -5
- package/dist/run-CaOjZRiQ.js.map +1 -0
- package/dist/{run-B9FN0sHW.cjs → run-D2vd34xp.cjs} +5 -5
- package/dist/run-D2vd34xp.cjs.map +1 -0
- package/dist/{run-D0Gs_UzJ.js → run-lgrTO14E.js} +5 -5
- package/dist/run-lgrTO14E.js.map +1 -0
- package/dist/{validate-3IUPl8r5.cjs → validate-DaxZu9c3.cjs} +3 -3
- package/dist/{validate-3IUPl8r5.cjs.map → validate-DaxZu9c3.cjs.map} +1 -1
- package/dist/{validate-DNX7m3G5.js → validate-ugxFStuH.js} +3 -3
- package/dist/{validate-DNX7m3G5.js.map → validate-ugxFStuH.js.map} +1 -1
- package/package.json +6 -6
- package/dist/Telemetry-Cuzoes9Y.js.map +0 -1
- package/dist/Telemetry-CwQYBgsg.cjs.map +0 -1
- package/dist/package-C-vta72c.cjs.map +0 -1
- package/dist/package-CZ9FY0UC.js +0 -6
- package/dist/package-CZ9FY0UC.js.map +0 -1
- package/dist/run-3qq_Q4Tg.cjs.map +0 -1
- package/dist/run-B9FN0sHW.cjs.map +0 -1
- package/dist/run-BFhNcn8b.js.map +0 -1
- package/dist/run-BzEbTlMp.cjs.map +0 -1
- package/dist/run-C2op_xLp.js.map +0 -1
- package/dist/run-D0Gs_UzJ.js.map +0 -1
- package/dist/run-DYzUPE7Z.cjs.map +0 -1
- package/dist/run-yMRylOST.js.map +0 -1
package/README.md
CHANGED
|
@@ -104,7 +104,7 @@ npx kubb generate
|
|
|
104
104
|
|
|
105
105
|
| Flag | Short | Type | Default | Description |
|
|
106
106
|
| -------------------- | ----- | ------- | ------- | --------------------------------------------------------------------------------------------------- |
|
|
107
|
-
| `[input]` | | string | | OpenAPI file path
|
|
107
|
+
| `[input]` | | string | | OpenAPI file path or URL that overrides `input` in the config |
|
|
108
108
|
| `--config <path>` | `-c` | string | | Path to the Kubb config file |
|
|
109
109
|
| `--logLevel <level>` | `-l` | string | `info` | Log level: `silent`, `info`, or `verbose` |
|
|
110
110
|
| `--watch` | `-w` | boolean | `false` | Re-generate whenever the input file changes |
|
|
@@ -137,152 +137,146 @@ const QUIET_FLAGS = /* @__PURE__ */ new Set([
|
|
|
137
137
|
//#endregion
|
|
138
138
|
//#region src/Telemetry.ts
|
|
139
139
|
/**
|
|
140
|
-
*
|
|
141
|
-
* and `Telemetry.send(...)`. No file paths, OpenAPI specs, or secrets are sent, and sending fails
|
|
142
|
-
* silently so a failed request never breaks the run.
|
|
140
|
+
* Returns `true` when telemetry is disabled via `DO_NOT_TRACK` or `KUBB_DISABLE_TELEMETRY`.
|
|
143
141
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
142
|
+
function isDisabled() {
|
|
143
|
+
return process$1.env["DO_NOT_TRACK"] === "1" || process$1.env["DO_NOT_TRACK"] === "true" || process$1.env["KUBB_DISABLE_TELEMETRY"] === "1" || process$1.env["KUBB_DISABLE_TELEMETRY"] === "true";
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build an anonymous telemetry payload from a completed generation run.
|
|
147
|
+
*/
|
|
148
|
+
function buildTelemetryEvent(options) {
|
|
149
|
+
const [seconds, nanoseconds] = process$1.hrtime(options.hrStart);
|
|
150
|
+
const duration = Math.round(seconds * 1e3 + nanoseconds / 1e6);
|
|
151
|
+
return {
|
|
152
|
+
command: options.command,
|
|
153
|
+
kubbVersion: options.kubbVersion,
|
|
154
|
+
nodeVersion: process$1.versions.node.split(".")[0],
|
|
155
|
+
runtime: runtime.name,
|
|
156
|
+
runtimeVersion: runtime.version.split(".")[0],
|
|
157
|
+
platform: os.platform(),
|
|
158
|
+
ci: isCIEnvironment(),
|
|
159
|
+
plugins: options.plugins ?? [],
|
|
160
|
+
duration,
|
|
161
|
+
filesCreated: options.filesCreated ?? 0,
|
|
162
|
+
status: options.status
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Convert a {@link TelemetryEvent} into an OTLP-compatible JSON trace payload.
|
|
167
|
+
*
|
|
168
|
+
* @see https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/
|
|
169
|
+
*/
|
|
170
|
+
function buildOtlpPayload(event) {
|
|
171
|
+
const traceId = randomBytes(16).toString("hex");
|
|
172
|
+
const spanId = randomBytes(8).toString("hex");
|
|
173
|
+
const endTimeNs = BigInt(Date.now()) * 1000000n;
|
|
174
|
+
const startTimeNs = endTimeNs - BigInt(event.duration) * 1000000n;
|
|
175
|
+
const attributes = [
|
|
176
|
+
{
|
|
177
|
+
key: "kubb.command",
|
|
178
|
+
value: { stringValue: event.command }
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
key: "kubb.version",
|
|
182
|
+
value: { stringValue: event.kubbVersion }
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
key: "kubb.node_version",
|
|
186
|
+
value: { stringValue: event.nodeVersion }
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
key: "kubb.runtime",
|
|
190
|
+
value: { stringValue: event.runtime }
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
key: "kubb.runtime_version",
|
|
194
|
+
value: { stringValue: event.runtimeVersion }
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
key: "kubb.platform",
|
|
198
|
+
value: { stringValue: event.platform }
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
key: "kubb.ci",
|
|
202
|
+
value: { boolValue: event.ci }
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
key: "kubb.files_created",
|
|
206
|
+
value: { intValue: event.filesCreated }
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
key: "kubb.status",
|
|
210
|
+
value: { stringValue: event.status }
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
key: "kubb.plugins",
|
|
214
|
+
value: { arrayValue: { values: event.plugins.map((p) => ({ kvlistValue: { values: [{
|
|
215
|
+
key: "name",
|
|
216
|
+
value: { stringValue: p.name }
|
|
217
|
+
}, {
|
|
218
|
+
key: "options",
|
|
219
|
+
value: { stringValue: JSON.stringify({
|
|
220
|
+
...p.options,
|
|
221
|
+
usedEnumNames: void 0
|
|
222
|
+
}) }
|
|
223
|
+
}] } })) } }
|
|
224
|
+
}
|
|
225
|
+
];
|
|
226
|
+
return { resourceSpans: [{
|
|
227
|
+
resource: { attributes: [
|
|
182
228
|
{
|
|
183
|
-
key: "
|
|
184
|
-
value: { stringValue:
|
|
229
|
+
key: "service.name",
|
|
230
|
+
value: { stringValue: "kubb-core" }
|
|
185
231
|
},
|
|
186
232
|
{
|
|
187
|
-
key: "
|
|
233
|
+
key: "service.version",
|
|
188
234
|
value: { stringValue: event.kubbVersion }
|
|
189
235
|
},
|
|
190
236
|
{
|
|
191
|
-
key: "
|
|
192
|
-
value: { stringValue:
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
key: "kubb.runtime",
|
|
196
|
-
value: { stringValue: event.runtime }
|
|
197
|
-
},
|
|
198
|
-
{
|
|
199
|
-
key: "kubb.runtime_version",
|
|
200
|
-
value: { stringValue: event.runtimeVersion }
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
key: "kubb.platform",
|
|
204
|
-
value: { stringValue: event.platform }
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
key: "kubb.ci",
|
|
208
|
-
value: { boolValue: event.ci }
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
key: "kubb.files_created",
|
|
212
|
-
value: { intValue: event.filesCreated }
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
key: "kubb.status",
|
|
216
|
-
value: { stringValue: event.status }
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
key: "kubb.plugins",
|
|
220
|
-
value: { arrayValue: { values: event.plugins.map((p) => ({ kvlistValue: { values: [{
|
|
221
|
-
key: "name",
|
|
222
|
-
value: { stringValue: p.name }
|
|
223
|
-
}, {
|
|
224
|
-
key: "options",
|
|
225
|
-
value: { stringValue: JSON.stringify({
|
|
226
|
-
...p.options,
|
|
227
|
-
usedEnumNames: void 0
|
|
228
|
-
}) }
|
|
229
|
-
}] } })) } }
|
|
237
|
+
key: "telemetry.sdk.language",
|
|
238
|
+
value: { stringValue: "nodejs" }
|
|
230
239
|
}
|
|
231
|
-
]
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
] },
|
|
247
|
-
scopeSpans: [{
|
|
248
|
-
scope: {
|
|
249
|
-
name: "kubb-core",
|
|
250
|
-
version: event.kubbVersion
|
|
251
|
-
},
|
|
252
|
-
spans: [{
|
|
253
|
-
traceId,
|
|
254
|
-
spanId,
|
|
255
|
-
name: event.command,
|
|
256
|
-
kind: 1,
|
|
257
|
-
startTimeUnixNano: String(startTimeNs),
|
|
258
|
-
endTimeUnixNano: String(endTimeNs),
|
|
259
|
-
attributes,
|
|
260
|
-
status: { code: event.status === "success" ? 1 : 2 }
|
|
261
|
-
}]
|
|
240
|
+
] },
|
|
241
|
+
scopeSpans: [{
|
|
242
|
+
scope: {
|
|
243
|
+
name: "kubb-core",
|
|
244
|
+
version: event.kubbVersion
|
|
245
|
+
},
|
|
246
|
+
spans: [{
|
|
247
|
+
traceId,
|
|
248
|
+
spanId,
|
|
249
|
+
name: event.command,
|
|
250
|
+
kind: 1,
|
|
251
|
+
startTimeUnixNano: String(startTimeNs),
|
|
252
|
+
endTimeUnixNano: String(endTimeNs),
|
|
253
|
+
attributes,
|
|
254
|
+
status: { code: event.status === "success" ? 1 : 2 }
|
|
262
255
|
}]
|
|
263
|
-
}]
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
}
|
|
256
|
+
}]
|
|
257
|
+
}] };
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Send an anonymous telemetry event to the Kubb OTLP endpoint. Respects `DO_NOT_TRACK` and
|
|
261
|
+
* `KUBB_DISABLE_TELEMETRY`, and fails silently so telemetry never interrupts a run. No file
|
|
262
|
+
* paths, OpenAPI specs, or secrets are sent.
|
|
263
|
+
*/
|
|
264
|
+
async function sendTelemetry(event) {
|
|
265
|
+
if (isDisabled()) return;
|
|
266
|
+
try {
|
|
267
|
+
await fetch(`${OTLP_ENDPOINT}/v1/traces`, {
|
|
268
|
+
method: "POST",
|
|
269
|
+
headers: {
|
|
270
|
+
"Content-Type": "application/json",
|
|
271
|
+
"Kubb-Telemetry-Version": "1",
|
|
272
|
+
"Kubb-Telemetry-Source": "kubb-core"
|
|
273
|
+
},
|
|
274
|
+
body: JSON.stringify(buildOtlpPayload(event)),
|
|
275
|
+
signal: AbortSignal.timeout(5e3)
|
|
276
|
+
});
|
|
277
|
+
} catch (_e) {}
|
|
278
|
+
}
|
|
285
279
|
//#endregion
|
|
286
|
-
export {
|
|
280
|
+
export { QUIET_FLAGS as a, canUseTTY as c, KUBB_NPM_PACKAGE_URL as i, isDisabled as n, UPDATE_CHECK_TIMEOUT_MS as o, sendTelemetry as r, WATCHER_IGNORED_PATHS as s, buildTelemetryEvent as t };
|
|
287
281
|
|
|
288
|
-
//# sourceMappingURL=Telemetry-
|
|
282
|
+
//# sourceMappingURL=Telemetry-7z2tIqPm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Telemetry-7z2tIqPm.js","names":["process"],"sources":["../../../internals/utils/src/env.ts","../../../internals/utils/src/runtime.ts","../src/constants.ts","../src/Telemetry.ts"],"sourcesContent":["/**\n * Returns `true` when the process is running in a CI environment.\n * Covers GitHub Actions, GitLab CI, CircleCI, Travis CI, Jenkins, Bitbucket,\n * TeamCity, Buildkite, and Azure Pipelines.\n *\n * @example\n * ```ts\n * if (isCIEnvironment()) {\n * logger.level = 'error'\n * }\n * ```\n */\nexport function isCIEnvironment(): boolean {\n return !!(\n process.env.CI ||\n process.env.GITHUB_ACTIONS ||\n process.env.GITLAB_CI ||\n process.env.BITBUCKET_BUILD_NUMBER ||\n process.env.JENKINS_URL ||\n process.env.CIRCLECI ||\n process.env.TRAVIS ||\n process.env.TEAMCITY_VERSION ||\n process.env.BUILDKITE ||\n process.env.TF_BUILD\n )\n}\n\n/**\n * Returns `true` when the process has an interactive TTY with a valid terminal\n * width and is not running in CI.\n *\n * Some IDE-embedded terminals report `isTTY = true` but set `columns` to `0`,\n * which breaks clack's box-drawing helpers (they call `String.prototype.repeat`\n * with a negative count and throw a `RangeError`). We therefore require a\n * positive column count before declaring the TTY usable.\n *\n * @example\n * ```ts\n * if (canUseTTY()) {\n * renderProgressBar()\n * }\n * ```\n */\nexport function canUseTTY(): boolean {\n return process.stdout.isTTY && (process.stdout.columns ?? 0) > 0 && !isCIEnvironment()\n}\n","/**\n * Name of the JavaScript runtime executing the current process.\n */\ntype RuntimeName = 'bun' | 'deno' | 'node'\n\n/**\n * Detects the JavaScript runtime executing the current process and exposes its name and version.\n *\n * Prefer the shared {@link runtime} instance over constructing your own.\n */\nclass Runtime {\n /**\n * `true` when the current process is running under Bun.\n *\n * Detection keys off the global `Bun` object rather than `process.versions`,\n * because Bun polyfills `process.versions.node` for Node compatibility and would\n * otherwise look like Node.\n *\n * @example\n * ```ts\n * if (runtime.isBun) {\n * await Bun.write(path, data)\n * }\n * ```\n */\n get isBun(): boolean {\n return typeof Bun !== 'undefined'\n }\n\n /**\n * `true` when the current process is running under Deno.\n */\n get isDeno(): boolean {\n return typeof (globalThis as { Deno?: unknown }).Deno !== 'undefined'\n }\n\n /**\n * `true` when the current process is running under Node.\n *\n * Bun and Deno are excluded first so a polyfilled `process` does not register as Node.\n */\n get isNode(): boolean {\n return !this.isBun && !this.isDeno && typeof process !== 'undefined' && process.versions?.node != null\n }\n\n /**\n * Name of the runtime executing the current process.\n *\n * @example\n * ```ts\n * runtime.name // 'bun' when run with `bun kubb`, 'node' otherwise\n * ```\n */\n get name(): RuntimeName {\n if (this.isBun) return 'bun'\n if (this.isDeno) return 'deno'\n\n return 'node'\n }\n\n /**\n * Version of the active runtime, or an empty string when it cannot be read.\n *\n * @example\n * ```ts\n * runtime.version // '1.3.11' under Bun, '22.22.2' under Node\n * ```\n */\n get version(): string {\n if (this.isBun) return process.versions.bun ?? ''\n if (this.isDeno) return (globalThis as { Deno?: { version?: { deno?: string } } }).Deno?.version?.deno ?? ''\n\n return process.versions?.node ?? ''\n }\n}\n\n/**\n * Shared {@link Runtime} instance describing the JavaScript runtime executing the current process.\n */\nexport const runtime = new Runtime()\n","/**\n * NPM registry endpoint used to check for @kubb/cli updates.\n */\nexport const KUBB_NPM_PACKAGE_URL = 'https://registry.npmjs.org/@kubb/cli/latest' as const\n\n/**\n * OpenTelemetry ingestion endpoint for anonymous usage telemetry.\n */\nexport const OTLP_ENDPOINT = 'https://otlp.kubb.dev' as const\n\n/**\n * Glob pattern for paths the file watcher ignores.\n */\nexport const WATCHER_IGNORED_PATHS = '**/{.git,node_modules}/**' as const\n\n/**\n * Quiet window in milliseconds that collapses a burst of watcher events (an editor save emits\n * several) into a single rebuild.\n */\nexport const WATCHER_DEBOUNCE_MS = 100\n\n/**\n * Upper bound in milliseconds for the npm update check, so a slow registry never stalls a run.\n */\nexport const UPDATE_CHECK_TIMEOUT_MS = 3_000\n\n/**\n * Flags that short-circuit execution (help and version). The telemetry notice is suppressed for these.\n */\nexport const QUIET_FLAGS = new Set<string>(['--help', '-h', '--version', '-v'])\n","import { randomBytes } from 'node:crypto'\nimport os from 'node:os'\nimport process from 'node:process'\nimport { isCIEnvironment, runtime } from '@internals/utils'\nimport { OTLP_ENDPOINT } from './constants.ts'\n\ntype OtlpKeyValue = {\n key: string\n value:\n | { stringValue: string }\n | { boolValue: boolean }\n | { intValue: number }\n | { arrayValue: { values: Array<{ kvlistValue: { values: Array<OtlpKeyValue> } }> } }\n | { kvlistValue: { values: Array<OtlpKeyValue> } }\n}\n\ntype OtlpSpan = {\n traceId: string\n spanId: string\n name: string\n kind: 1\n startTimeUnixNano: string\n endTimeUnixNano: string\n attributes: Array<OtlpKeyValue>\n status: { code: 1 | 2 }\n}\n\ntype OtlpExportTraceServiceRequest = {\n resourceSpans: Array<{\n resource: { attributes: Array<OtlpKeyValue> }\n scopeSpans: Array<{\n scope: { name: string; version: string }\n spans: Array<OtlpSpan>\n }>\n }>\n}\n\n/**\n * Anonymous plugin name and options snapshot sent with each telemetry event.\n */\nexport type TelemetryPlugin = {\n /**\n * Plugin name as registered in the Kubb config, e.g. `'@kubb/plugin-ts'`.\n */\n name: string\n /**\n * Anonymized snapshot of the plugin options. Values are included but cannot be traced back to a user.\n */\n options: Record<string, unknown>\n}\n\n/**\n * Anonymous snapshot of a single Kubb run, built by {@link buildTelemetryEvent} and sent by {@link sendTelemetry}.\n */\nexport type TelemetryEvent = {\n command: string\n kubbVersion: string\n /**\n * Major version of Node that executed the run, e.g. `'22'`.\n */\n nodeVersion: string\n /**\n * Name of the JavaScript runtime that executed the run, `'bun'`, `'deno'`, or `'node'`.\n */\n runtime: string\n /**\n * Major version of the active runtime, e.g. `'1'` under Bun or `'22'` under Node.\n */\n runtimeVersion: string\n platform: string\n ci: boolean\n plugins: Array<TelemetryPlugin>\n duration: number\n filesCreated: number\n status: 'success' | 'failed'\n}\n\n/**\n * Returns `true` when telemetry is disabled via `DO_NOT_TRACK` or `KUBB_DISABLE_TELEMETRY`.\n */\nexport function isDisabled(): boolean {\n return (\n process.env['DO_NOT_TRACK'] === '1' ||\n process.env['DO_NOT_TRACK'] === 'true' ||\n process.env['KUBB_DISABLE_TELEMETRY'] === '1' ||\n process.env['KUBB_DISABLE_TELEMETRY'] === 'true'\n )\n}\n\n/**\n * Build an anonymous telemetry payload from a completed generation run.\n */\nexport function buildTelemetryEvent(options: {\n command: 'generate' | 'mcp' | 'validate' | 'agent'\n kubbVersion: string\n plugins?: Array<TelemetryPlugin>\n hrStart: [number, number]\n filesCreated?: number\n status: 'success' | 'failed'\n}): TelemetryEvent {\n const [seconds, nanoseconds] = process.hrtime(options.hrStart)\n const duration = Math.round(seconds * 1000 + nanoseconds / 1e6)\n\n return {\n command: options.command,\n kubbVersion: options.kubbVersion,\n nodeVersion: process.versions.node.split('.')[0] as string,\n runtime: runtime.name,\n runtimeVersion: runtime.version.split('.')[0] as string,\n platform: os.platform(),\n ci: isCIEnvironment(),\n plugins: options.plugins ?? [],\n duration,\n filesCreated: options.filesCreated ?? 0,\n status: options.status,\n }\n}\n\n/**\n * Convert a {@link TelemetryEvent} into an OTLP-compatible JSON trace payload.\n *\n * @see https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/\n */\nexport function buildOtlpPayload(event: TelemetryEvent): OtlpExportTraceServiceRequest {\n const traceId = randomBytes(16).toString('hex')\n const spanId = randomBytes(8).toString('hex')\n const endTimeNs = BigInt(Date.now()) * 1_000_000n\n const startTimeNs = endTimeNs - BigInt(event.duration) * 1_000_000n\n\n const attributes: Array<OtlpKeyValue> = [\n { key: 'kubb.command', value: { stringValue: event.command } },\n { key: 'kubb.version', value: { stringValue: event.kubbVersion } },\n { key: 'kubb.node_version', value: { stringValue: event.nodeVersion } },\n { key: 'kubb.runtime', value: { stringValue: event.runtime } },\n { key: 'kubb.runtime_version', value: { stringValue: event.runtimeVersion } },\n { key: 'kubb.platform', value: { stringValue: event.platform } },\n { key: 'kubb.ci', value: { boolValue: event.ci } },\n { key: 'kubb.files_created', value: { intValue: event.filesCreated } },\n { key: 'kubb.status', value: { stringValue: event.status } },\n {\n key: 'kubb.plugins',\n value: {\n arrayValue: {\n values: event.plugins.map((p) => ({\n kvlistValue: {\n values: [\n { key: 'name', value: { stringValue: p.name } },\n {\n key: 'options',\n value: {\n stringValue: JSON.stringify({\n ...p.options,\n usedEnumNames: undefined,\n }),\n },\n },\n ],\n },\n })),\n },\n },\n },\n ]\n\n return {\n resourceSpans: [\n {\n resource: {\n attributes: [\n { key: 'service.name', value: { stringValue: 'kubb-core' } },\n {\n key: 'service.version',\n value: { stringValue: event.kubbVersion },\n },\n { key: 'telemetry.sdk.language', value: { stringValue: 'nodejs' } },\n ],\n },\n scopeSpans: [\n {\n scope: { name: 'kubb-core', version: event.kubbVersion },\n spans: [\n {\n traceId,\n spanId,\n name: event.command,\n kind: 1,\n startTimeUnixNano: String(startTimeNs),\n endTimeUnixNano: String(endTimeNs),\n attributes,\n status: {\n code: event.status === 'success' ? 1 : 2,\n },\n },\n ],\n },\n ],\n },\n ],\n }\n}\n\n/**\n * Send an anonymous telemetry event to the Kubb OTLP endpoint. Respects `DO_NOT_TRACK` and\n * `KUBB_DISABLE_TELEMETRY`, and fails silently so telemetry never interrupts a run. No file\n * paths, OpenAPI specs, or secrets are sent.\n */\nexport async function sendTelemetry(event: TelemetryEvent): Promise<void> {\n if (isDisabled()) {\n return\n }\n\n try {\n await fetch(`${OTLP_ENDPOINT}/v1/traces`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Kubb-Telemetry-Version': '1',\n 'Kubb-Telemetry-Source': 'kubb-core',\n },\n body: JSON.stringify(buildOtlpPayload(event)),\n signal: AbortSignal.timeout(5_000),\n })\n } catch (_e) {\n // Fail silently, telemetry must never break the run\n }\n}\n"],"mappings":"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"}
|
|
@@ -139,151 +139,145 @@ const QUIET_FLAGS = /* @__PURE__ */ new Set([
|
|
|
139
139
|
//#endregion
|
|
140
140
|
//#region src/Telemetry.ts
|
|
141
141
|
/**
|
|
142
|
-
*
|
|
143
|
-
* and `Telemetry.send(...)`. No file paths, OpenAPI specs, or secrets are sent, and sending fails
|
|
144
|
-
* silently so a failed request never breaks the run.
|
|
142
|
+
* Returns `true` when telemetry is disabled via `DO_NOT_TRACK` or `KUBB_DISABLE_TELEMETRY`.
|
|
145
143
|
*/
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
144
|
+
function isDisabled() {
|
|
145
|
+
return node_process.default.env["DO_NOT_TRACK"] === "1" || node_process.default.env["DO_NOT_TRACK"] === "true" || node_process.default.env["KUBB_DISABLE_TELEMETRY"] === "1" || node_process.default.env["KUBB_DISABLE_TELEMETRY"] === "true";
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Build an anonymous telemetry payload from a completed generation run.
|
|
149
|
+
*/
|
|
150
|
+
function buildTelemetryEvent(options) {
|
|
151
|
+
const [seconds, nanoseconds] = node_process.default.hrtime(options.hrStart);
|
|
152
|
+
const duration = Math.round(seconds * 1e3 + nanoseconds / 1e6);
|
|
153
|
+
return {
|
|
154
|
+
command: options.command,
|
|
155
|
+
kubbVersion: options.kubbVersion,
|
|
156
|
+
nodeVersion: node_process.default.versions.node.split(".")[0],
|
|
157
|
+
runtime: runtime.name,
|
|
158
|
+
runtimeVersion: runtime.version.split(".")[0],
|
|
159
|
+
platform: node_os.default.platform(),
|
|
160
|
+
ci: isCIEnvironment(),
|
|
161
|
+
plugins: options.plugins ?? [],
|
|
162
|
+
duration,
|
|
163
|
+
filesCreated: options.filesCreated ?? 0,
|
|
164
|
+
status: options.status
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Convert a {@link TelemetryEvent} into an OTLP-compatible JSON trace payload.
|
|
169
|
+
*
|
|
170
|
+
* @see https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/
|
|
171
|
+
*/
|
|
172
|
+
function buildOtlpPayload(event) {
|
|
173
|
+
const traceId = (0, node_crypto.randomBytes)(16).toString("hex");
|
|
174
|
+
const spanId = (0, node_crypto.randomBytes)(8).toString("hex");
|
|
175
|
+
const endTimeNs = BigInt(Date.now()) * 1000000n;
|
|
176
|
+
const startTimeNs = endTimeNs - BigInt(event.duration) * 1000000n;
|
|
177
|
+
const attributes = [
|
|
178
|
+
{
|
|
179
|
+
key: "kubb.command",
|
|
180
|
+
value: { stringValue: event.command }
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
key: "kubb.version",
|
|
184
|
+
value: { stringValue: event.kubbVersion }
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
key: "kubb.node_version",
|
|
188
|
+
value: { stringValue: event.nodeVersion }
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
key: "kubb.runtime",
|
|
192
|
+
value: { stringValue: event.runtime }
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
key: "kubb.runtime_version",
|
|
196
|
+
value: { stringValue: event.runtimeVersion }
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
key: "kubb.platform",
|
|
200
|
+
value: { stringValue: event.platform }
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
key: "kubb.ci",
|
|
204
|
+
value: { boolValue: event.ci }
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
key: "kubb.files_created",
|
|
208
|
+
value: { intValue: event.filesCreated }
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
key: "kubb.status",
|
|
212
|
+
value: { stringValue: event.status }
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
key: "kubb.plugins",
|
|
216
|
+
value: { arrayValue: { values: event.plugins.map((p) => ({ kvlistValue: { values: [{
|
|
217
|
+
key: "name",
|
|
218
|
+
value: { stringValue: p.name }
|
|
219
|
+
}, {
|
|
220
|
+
key: "options",
|
|
221
|
+
value: { stringValue: JSON.stringify({
|
|
222
|
+
...p.options,
|
|
223
|
+
usedEnumNames: void 0
|
|
224
|
+
}) }
|
|
225
|
+
}] } })) } }
|
|
226
|
+
}
|
|
227
|
+
];
|
|
228
|
+
return { resourceSpans: [{
|
|
229
|
+
resource: { attributes: [
|
|
184
230
|
{
|
|
185
|
-
key: "
|
|
186
|
-
value: { stringValue:
|
|
231
|
+
key: "service.name",
|
|
232
|
+
value: { stringValue: "kubb-core" }
|
|
187
233
|
},
|
|
188
234
|
{
|
|
189
|
-
key: "
|
|
235
|
+
key: "service.version",
|
|
190
236
|
value: { stringValue: event.kubbVersion }
|
|
191
237
|
},
|
|
192
238
|
{
|
|
193
|
-
key: "
|
|
194
|
-
value: { stringValue:
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
key: "kubb.runtime",
|
|
198
|
-
value: { stringValue: event.runtime }
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
key: "kubb.runtime_version",
|
|
202
|
-
value: { stringValue: event.runtimeVersion }
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
key: "kubb.platform",
|
|
206
|
-
value: { stringValue: event.platform }
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
key: "kubb.ci",
|
|
210
|
-
value: { boolValue: event.ci }
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
key: "kubb.files_created",
|
|
214
|
-
value: { intValue: event.filesCreated }
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
key: "kubb.status",
|
|
218
|
-
value: { stringValue: event.status }
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
key: "kubb.plugins",
|
|
222
|
-
value: { arrayValue: { values: event.plugins.map((p) => ({ kvlistValue: { values: [{
|
|
223
|
-
key: "name",
|
|
224
|
-
value: { stringValue: p.name }
|
|
225
|
-
}, {
|
|
226
|
-
key: "options",
|
|
227
|
-
value: { stringValue: JSON.stringify({
|
|
228
|
-
...p.options,
|
|
229
|
-
usedEnumNames: void 0
|
|
230
|
-
}) }
|
|
231
|
-
}] } })) } }
|
|
239
|
+
key: "telemetry.sdk.language",
|
|
240
|
+
value: { stringValue: "nodejs" }
|
|
232
241
|
}
|
|
233
|
-
]
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
] },
|
|
249
|
-
scopeSpans: [{
|
|
250
|
-
scope: {
|
|
251
|
-
name: "kubb-core",
|
|
252
|
-
version: event.kubbVersion
|
|
253
|
-
},
|
|
254
|
-
spans: [{
|
|
255
|
-
traceId,
|
|
256
|
-
spanId,
|
|
257
|
-
name: event.command,
|
|
258
|
-
kind: 1,
|
|
259
|
-
startTimeUnixNano: String(startTimeNs),
|
|
260
|
-
endTimeUnixNano: String(endTimeNs),
|
|
261
|
-
attributes,
|
|
262
|
-
status: { code: event.status === "success" ? 1 : 2 }
|
|
263
|
-
}]
|
|
242
|
+
] },
|
|
243
|
+
scopeSpans: [{
|
|
244
|
+
scope: {
|
|
245
|
+
name: "kubb-core",
|
|
246
|
+
version: event.kubbVersion
|
|
247
|
+
},
|
|
248
|
+
spans: [{
|
|
249
|
+
traceId,
|
|
250
|
+
spanId,
|
|
251
|
+
name: event.command,
|
|
252
|
+
kind: 1,
|
|
253
|
+
startTimeUnixNano: String(startTimeNs),
|
|
254
|
+
endTimeUnixNano: String(endTimeNs),
|
|
255
|
+
attributes,
|
|
256
|
+
status: { code: event.status === "success" ? 1 : 2 }
|
|
264
257
|
}]
|
|
265
|
-
}]
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
258
|
+
}]
|
|
259
|
+
}] };
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Send an anonymous telemetry event to the Kubb OTLP endpoint. Respects `DO_NOT_TRACK` and
|
|
263
|
+
* `KUBB_DISABLE_TELEMETRY`, and fails silently so telemetry never interrupts a run. No file
|
|
264
|
+
* paths, OpenAPI specs, or secrets are sent.
|
|
265
|
+
*/
|
|
266
|
+
async function sendTelemetry(event) {
|
|
267
|
+
if (isDisabled()) return;
|
|
268
|
+
try {
|
|
269
|
+
await fetch(`${OTLP_ENDPOINT}/v1/traces`, {
|
|
270
|
+
method: "POST",
|
|
271
|
+
headers: {
|
|
272
|
+
"Content-Type": "application/json",
|
|
273
|
+
"Kubb-Telemetry-Version": "1",
|
|
274
|
+
"Kubb-Telemetry-Source": "kubb-core"
|
|
275
|
+
},
|
|
276
|
+
body: JSON.stringify(buildOtlpPayload(event)),
|
|
277
|
+
signal: AbortSignal.timeout(5e3)
|
|
278
|
+
});
|
|
279
|
+
} catch (_e) {}
|
|
280
|
+
}
|
|
287
281
|
//#endregion
|
|
288
282
|
Object.defineProperty(exports, "KUBB_NPM_PACKAGE_URL", {
|
|
289
283
|
enumerable: true,
|
|
@@ -297,12 +291,6 @@ Object.defineProperty(exports, "QUIET_FLAGS", {
|
|
|
297
291
|
return QUIET_FLAGS;
|
|
298
292
|
}
|
|
299
293
|
});
|
|
300
|
-
Object.defineProperty(exports, "Telemetry", {
|
|
301
|
-
enumerable: true,
|
|
302
|
-
get: function() {
|
|
303
|
-
return Telemetry;
|
|
304
|
-
}
|
|
305
|
-
});
|
|
306
294
|
Object.defineProperty(exports, "UPDATE_CHECK_TIMEOUT_MS", {
|
|
307
295
|
enumerable: true,
|
|
308
296
|
get: function() {
|
|
@@ -315,11 +303,29 @@ Object.defineProperty(exports, "WATCHER_IGNORED_PATHS", {
|
|
|
315
303
|
return WATCHER_IGNORED_PATHS;
|
|
316
304
|
}
|
|
317
305
|
});
|
|
306
|
+
Object.defineProperty(exports, "buildTelemetryEvent", {
|
|
307
|
+
enumerable: true,
|
|
308
|
+
get: function() {
|
|
309
|
+
return buildTelemetryEvent;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
318
312
|
Object.defineProperty(exports, "canUseTTY", {
|
|
319
313
|
enumerable: true,
|
|
320
314
|
get: function() {
|
|
321
315
|
return canUseTTY;
|
|
322
316
|
}
|
|
323
317
|
});
|
|
318
|
+
Object.defineProperty(exports, "isDisabled", {
|
|
319
|
+
enumerable: true,
|
|
320
|
+
get: function() {
|
|
321
|
+
return isDisabled;
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
Object.defineProperty(exports, "sendTelemetry", {
|
|
325
|
+
enumerable: true,
|
|
326
|
+
get: function() {
|
|
327
|
+
return sendTelemetry;
|
|
328
|
+
}
|
|
329
|
+
});
|
|
324
330
|
|
|
325
|
-
//# sourceMappingURL=Telemetry-
|
|
331
|
+
//# sourceMappingURL=Telemetry-xcWb-UWT.cjs.map
|