@redocly/client-generator 0.6.0 → 0.7.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.
Files changed (96) hide show
  1. package/README.md +3 -3
  2. package/eject-assets/generators/cli/docs.ts +1 -1
  3. package/eject-assets/generators/cli/engine-source.ts +1 -1
  4. package/eject-assets/generators/cli/index.ts +2 -2
  5. package/eject-assets/generators/cli/render.ts +1 -1
  6. package/eject-assets/generators/go/client.ts +1 -1
  7. package/eject-assets/generators/go/descriptor.ts +1 -1
  8. package/eject-assets/generators/go/index.ts +2 -2
  9. package/eject-assets/generators/go/models.ts +1 -1
  10. package/eject-assets/generators/go/naming.ts +1 -1
  11. package/eject-assets/generators/go/operations.ts +1 -1
  12. package/eject-assets/generators/go/pagination.ts +1 -1
  13. package/eject-assets/generators/go/types.ts +1 -1
  14. package/eject-assets/generators/mock/faker.ts +1 -1
  15. package/eject-assets/generators/mock/index.ts +2 -2
  16. package/eject-assets/generators/mock/render.ts +1 -1
  17. package/eject-assets/generators/mock/sample.ts +1 -1
  18. package/eject-assets/generators/mock/values.ts +1 -1
  19. package/eject-assets/generators/php/client.ts +1 -1
  20. package/eject-assets/generators/php/descriptor.ts +1 -1
  21. package/eject-assets/generators/php/index.ts +2 -2
  22. package/eject-assets/generators/php/models.ts +1 -1
  23. package/eject-assets/generators/php/naming.ts +1 -1
  24. package/eject-assets/generators/php/operations.ts +1 -1
  25. package/eject-assets/generators/php/pagination.ts +1 -1
  26. package/eject-assets/generators/php/types.ts +1 -1
  27. package/eject-assets/generators/python/client.ts +1 -1
  28. package/eject-assets/generators/python/descriptor.ts +1 -1
  29. package/eject-assets/generators/python/index.ts +2 -2
  30. package/eject-assets/generators/python/models.ts +1 -1
  31. package/eject-assets/generators/python/naming.ts +1 -1
  32. package/eject-assets/generators/python/operations.ts +1 -1
  33. package/eject-assets/generators/python/pagination.ts +1 -1
  34. package/eject-assets/generators/python/types.ts +1 -1
  35. package/eject-assets/generators/swr/index.ts +2 -2
  36. package/eject-assets/generators/swr/render.ts +1 -1
  37. package/eject-assets/generators/tanstack-query/index.ts +2 -2
  38. package/eject-assets/generators/tanstack-query/render.ts +1 -1
  39. package/eject-assets/generators/transformers/index.ts +2 -2
  40. package/eject-assets/generators/transformers/render.ts +1 -1
  41. package/eject-assets/generators/typescript/banner.ts +1 -1
  42. package/eject-assets/generators/typescript/client.ts +1 -1
  43. package/eject-assets/generators/typescript/descriptor.ts +1 -1
  44. package/eject-assets/generators/typescript/index.ts +29 -3
  45. package/eject-assets/generators/typescript/inline-runtime.ts +1 -1
  46. package/eject-assets/generators/typescript/operation-signature.ts +1 -1
  47. package/eject-assets/generators/typescript/operation-types.ts +1 -1
  48. package/eject-assets/generators/typescript/operations.ts +1 -1
  49. package/eject-assets/generators/typescript/response-headers.ts +1 -1
  50. package/eject-assets/generators/typescript/type-guards.ts +1 -1
  51. package/eject-assets/generators/typescript/types.ts +1 -1
  52. package/eject-assets/generators/zod/index.ts +2 -2
  53. package/eject-assets/generators/zod/schemas.ts +1 -1
  54. package/eject-assets/skills/typescript-generator/SKILL.md +19 -0
  55. package/lib/generators/meta.d.ts.map +1 -1
  56. package/lib/generators/meta.js +3 -0
  57. package/lib/generators/meta.js.map +1 -1
  58. package/lib/generators/types.d.ts +1 -0
  59. package/lib/generators/types.d.ts.map +1 -1
  60. package/lib/generators/typescript/index.d.ts.map +1 -1
  61. package/lib/generators/typescript/index.js +18 -2
  62. package/lib/generators/typescript/index.js.map +1 -1
  63. package/lib/generators/typescript/runtime/send.d.ts +2 -1
  64. package/lib/generators/typescript/runtime/send.d.ts.map +1 -1
  65. package/lib/generators/typescript/runtime/send.js +107 -56
  66. package/lib/generators/typescript/runtime/send.js.map +1 -1
  67. package/lib/generators/typescript/runtime/types.d.ts +1 -1
  68. package/lib/generators/typescript/runtime/types.d.ts.map +1 -1
  69. package/lib/generators/typescript/telemetry/telemetry.d.ts +24 -0
  70. package/lib/generators/typescript/telemetry/telemetry.d.ts.map +1 -0
  71. package/lib/generators/typescript/telemetry/telemetry.js +265 -0
  72. package/lib/generators/typescript/telemetry/telemetry.js.map +1 -0
  73. package/lib/index.d.ts +1 -1
  74. package/lib/index.d.ts.map +1 -1
  75. package/lib/index.js.map +1 -1
  76. package/lib/pipeline.d.ts.map +1 -1
  77. package/lib/pipeline.js +1 -0
  78. package/lib/pipeline.js.map +1 -1
  79. package/lib/runtime-contract.d.ts +8 -1
  80. package/lib/runtime-contract.d.ts.map +1 -1
  81. package/lib/runtime-contract.js.map +1 -1
  82. package/lib/runtime-sources/telemetry.d.ts +2 -0
  83. package/lib/runtime-sources/telemetry.d.ts.map +1 -0
  84. package/lib/runtime-sources/telemetry.js +3 -0
  85. package/lib/runtime-sources/telemetry.js.map +1 -0
  86. package/lib/runtime-sources/typescript.d.ts +5 -5
  87. package/lib/runtime-sources/typescript.d.ts.map +1 -1
  88. package/lib/runtime-sources/typescript.js +5 -4
  89. package/lib/runtime-sources/typescript.js.map +1 -1
  90. package/lib/runtime-sources.d.ts +1 -0
  91. package/lib/runtime-sources.d.ts.map +1 -1
  92. package/lib/runtime-sources.js +1 -0
  93. package/lib/runtime-sources.js.map +1 -1
  94. package/lib/types.d.ts +1 -0
  95. package/lib/types.d.ts.map +1 -1
  96. package/package.json +2 -2
@@ -0,0 +1,265 @@
1
+ const GENERATOR_VERSION = 'dev';
2
+ const DEFAULT_ENDPOINT = 'https://otel.cloud.redocly.com/v1/traces';
3
+ const EVENT_TYPE = 'com.redocly.sdkUsage.aggregated';
4
+ const SEND_TIMEOUT_MS = 3000;
5
+ const SERVICE_NAME = 'redocly-sdk';
6
+ const STATUS_CLASSES = [
7
+ '2xx',
8
+ '3xx',
9
+ '4xx',
10
+ '5xx',
11
+ 'network_error',
12
+ 'timeout',
13
+ 'aborted',
14
+ ];
15
+ const LATENCY_BUCKETS = [
16
+ { bucket: 'lt_100ms', belowMs: 100 },
17
+ { bucket: 'lt_300ms', belowMs: 300 },
18
+ { bucket: 'lt_1s', belowMs: 1000 },
19
+ { bucket: 'lt_3s', belowMs: 3000 },
20
+ { bucket: 'lt_10s', belowMs: 10000 },
21
+ { bucket: 'gte_10s', belowMs: Infinity },
22
+ ];
23
+ const activeWindows = new Set();
24
+ const pendingSends = new Set();
25
+ let exitHookInstalled = false;
26
+ function nodeProcess() {
27
+ return globalThis.process;
28
+ }
29
+ function telemetryDisabled() {
30
+ const runtimeProcess = nodeProcess();
31
+ if (runtimeProcess === undefined)
32
+ return true;
33
+ // A browser bundle can add a `process` shim, so also check for `document`.
34
+ if (typeof document !== 'undefined')
35
+ return true;
36
+ const env = runtimeProcess.env ?? {};
37
+ if (env.REDOCLY_SDK_TELEMETRY === 'off')
38
+ return true;
39
+ if (env.DO_NOT_TRACK === '1')
40
+ return true;
41
+ return false;
42
+ }
43
+ export async function flush() {
44
+ for (const flushWindow of activeWindows)
45
+ void flushWindow();
46
+ await Promise.all(pendingSends);
47
+ }
48
+ export function telemetry(options) {
49
+ if (telemetryDisabled())
50
+ return {};
51
+ const intervalMs = options.flushIntervalMs ?? 60_000;
52
+ const endpoint = options.endpoint ?? DEFAULT_ENDPOINT;
53
+ const sink = options.sink ?? ((events) => sendOtlp(endpoint, events));
54
+ const versions = nodeProcess()?.versions ?? {};
55
+ let runtime = 'node';
56
+ let runtimeVersion = versions.node ?? '';
57
+ if (versions.bun !== undefined) {
58
+ runtime = 'bun';
59
+ runtimeVersion = versions.bun;
60
+ }
61
+ else if (versions.deno !== undefined) {
62
+ runtime = 'deno';
63
+ runtimeVersion = versions.deno;
64
+ }
65
+ const sdk = {
66
+ name: options.sdkName,
67
+ version: options.sdkVersion,
68
+ generator_version: GENERATOR_VERSION,
69
+ language: 'typescript',
70
+ runtime,
71
+ runtime_version: runtimeVersion,
72
+ client: options.client,
73
+ };
74
+ let counts = new Map();
75
+ let windowStart = 0;
76
+ let timer;
77
+ async function flushWindow() {
78
+ if (counts.size === 0)
79
+ return;
80
+ if (timer !== undefined)
81
+ clearTimeout(timer);
82
+ timer = undefined;
83
+ activeWindows.delete(flushWindow);
84
+ const events = toEvents(counts, windowStart, Date.now() - windowStart, options.sdkName, sdk);
85
+ counts = new Map();
86
+ if (telemetryDisabled())
87
+ return;
88
+ const send = Promise.resolve()
89
+ .then(() => sink(events))
90
+ .catch(() => undefined);
91
+ pendingSends.add(send);
92
+ await send;
93
+ pendingSends.delete(send);
94
+ }
95
+ installExitHook();
96
+ return {
97
+ onSettled: (ctx, call) => {
98
+ if (counts.size === 0) {
99
+ windowStart = Date.now();
100
+ timer = setTimeout(() => void flushWindow(), intervalMs);
101
+ unrefTimer(timer);
102
+ activeWindows.add(flushWindow);
103
+ }
104
+ let operation = counts.get(ctx.operation.id);
105
+ if (operation === undefined) {
106
+ operation = emptyCounts();
107
+ counts.set(ctx.operation.id, operation);
108
+ }
109
+ record(operation, call);
110
+ },
111
+ };
112
+ }
113
+ function installExitHook() {
114
+ if (exitHookInstalled)
115
+ return;
116
+ exitHookInstalled = true;
117
+ nodeProcess()?.on?.('beforeExit', () => void flush());
118
+ }
119
+ function unrefTimer(timer) {
120
+ if (timer instanceof Object && 'unref' in timer && typeof timer.unref === 'function') {
121
+ timer.unref();
122
+ }
123
+ }
124
+ function emptyCounts() {
125
+ return {
126
+ calls: 0,
127
+ attempts: 0,
128
+ durationSumMs: 0,
129
+ status: { '2xx': 0, '3xx': 0, '4xx': 0, '5xx': 0, network_error: 0, timeout: 0, aborted: 0 },
130
+ latency: { lt_100ms: 0, lt_300ms: 0, lt_1s: 0, lt_3s: 0, lt_10s: 0, gte_10s: 0 },
131
+ };
132
+ }
133
+ function record(operation, call) {
134
+ operation.calls += 1;
135
+ operation.attempts += call.attempts;
136
+ operation.durationSumMs += call.durationMs;
137
+ operation.status[statusClass(call)] += 1;
138
+ for (const { bucket, belowMs } of LATENCY_BUCKETS) {
139
+ if (call.durationMs < belowMs) {
140
+ operation.latency[bucket] += 1;
141
+ break;
142
+ }
143
+ }
144
+ }
145
+ function statusClass(call) {
146
+ if (call.response === undefined) {
147
+ if (call.error instanceof Error && call.error.name === 'TimeoutError')
148
+ return 'timeout';
149
+ if (call.error instanceof Error && call.error.name === 'AbortError')
150
+ return 'aborted';
151
+ return 'network_error';
152
+ }
153
+ const status = call.response.status;
154
+ if (status >= 500)
155
+ return '5xx';
156
+ if (status >= 400)
157
+ return '4xx';
158
+ if (status >= 300)
159
+ return '3xx';
160
+ return '2xx';
161
+ }
162
+ function toEvents(counts, windowStart, windowMs, source, sdk) {
163
+ const events = [];
164
+ for (const [operationId, operation] of counts) {
165
+ const usage = {
166
+ operation_id: operationId,
167
+ window_ms: windowMs,
168
+ calls: operation.calls,
169
+ attempts: operation.attempts,
170
+ duration_sum_ms: operation.durationSumMs,
171
+ };
172
+ for (const statusClass of STATUS_CLASSES) {
173
+ const count = operation.status[statusClass];
174
+ if (count > 0) {
175
+ usage[`status_${statusClass}`] = count;
176
+ }
177
+ }
178
+ for (const { bucket } of LATENCY_BUCKETS) {
179
+ const count = operation.latency[bucket];
180
+ if (count > 0) {
181
+ usage[`latency_${bucket}`] = count;
182
+ }
183
+ }
184
+ events.push({
185
+ id: `evt_${randomHex(16)}`,
186
+ type: EVENT_TYPE,
187
+ source,
188
+ time: new Date(windowStart).toISOString(),
189
+ data: { usage, sdk },
190
+ });
191
+ }
192
+ return events;
193
+ }
194
+ async function sendOtlp(endpoint, events) {
195
+ const response = await fetch(endpoint, {
196
+ method: 'POST',
197
+ // One send per window, so the socket is never reused: close it instead of keeping it idle.
198
+ headers: { 'Content-Type': 'application/json', Connection: 'close' },
199
+ body: JSON.stringify(toOtlpRequest(events)),
200
+ signal: AbortSignal.timeout(SEND_TIMEOUT_MS),
201
+ });
202
+ await response.body?.cancel();
203
+ }
204
+ function toOtlpRequest(events) {
205
+ const spans = [];
206
+ for (const event of events) {
207
+ const timeUnixNano = `${Date.parse(event.time)}000000`;
208
+ const attributes = [
209
+ attribute('cloudevents.event_id', event.id),
210
+ attribute('cloudevents.event_type', event.type),
211
+ attribute('cloudevents.event_source', event.source),
212
+ attribute('cloudevents.event_spec_version', '1.0'),
213
+ attribute('cloudevents.event_data_content_type', 'application/json; charset=utf-8'),
214
+ attribute('cloudevents.event_time', event.time),
215
+ attribute('cloudevents.event_subject', ''),
216
+ attribute('cloudevents.event_origin', SERVICE_NAME),
217
+ attribute('cloudevents.event_object', 'event'),
218
+ attribute('cloudevents.event_category', 'product'),
219
+ attribute('cloudevents.event_signal', 'metric'),
220
+ ];
221
+ for (const [key, value] of Object.entries(event.data.usage)) {
222
+ attributes.push(attribute(`cloudevents.event_data.usage.${key}`, value));
223
+ }
224
+ for (const [key, value] of Object.entries(event.data.sdk)) {
225
+ attributes.push(attribute(`cloudevents.event_data.sdk.${key}`, value));
226
+ }
227
+ spans.push({
228
+ traceId: randomHex(16),
229
+ spanId: randomHex(8),
230
+ name: `event.${event.type}`,
231
+ kind: 1,
232
+ startTimeUnixNano: timeUnixNano,
233
+ endTimeUnixNano: timeUnixNano,
234
+ attributes,
235
+ });
236
+ }
237
+ return {
238
+ resourceSpans: [
239
+ {
240
+ resource: {
241
+ attributes: [
242
+ attribute('service.name', SERVICE_NAME),
243
+ attribute('service.version', GENERATOR_VERSION),
244
+ ],
245
+ },
246
+ scopeSpans: [{ scope: { name: 'redocly-sdk-telemetry' }, spans }],
247
+ },
248
+ ],
249
+ };
250
+ }
251
+ function attribute(key, value) {
252
+ if (typeof value === 'string')
253
+ return { key, value: { stringValue: value } };
254
+ if (Number.isInteger(value))
255
+ return { key, value: { intValue: value } };
256
+ return { key, value: { doubleValue: value } };
257
+ }
258
+ function randomHex(byteCount) {
259
+ const bytes = crypto.getRandomValues(new Uint8Array(byteCount));
260
+ let hex = '';
261
+ for (const byte of bytes)
262
+ hex += byte.toString(16).padStart(2, '0');
263
+ return hex;
264
+ }
265
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../../src/generators/typescript/telemetry/telemetry.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from './authoring/index.js';
2
2
  export { NotSupportedError } from './errors.js';
3
3
  export { defineClientSetup } from './runtime-contract.js';
4
- export type { ClientSetup, ClientSetupConfig, Middleware, OperationContext, RequestContext, RetryConfig, RetryContext, RetryStrategy, } from './runtime-contract.js';
4
+ export type { ClientSetup, ClientSetupConfig, Middleware, OperationContext, RequestContext, RetryConfig, RetryContext, RetryStrategy, SettledCall, } from './runtime-contract.js';
5
5
  export type { ResponseHeaderSpec } from './runtime-contract.js';
6
6
  export type { ModelPagination, PaginationSpec } from './pagination.js';
7
7
  export { resolveSchemaPointer } from './pagination.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EACV,aAAa,EACb,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzF,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAG/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EACV,aAAa,EACb,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACzF,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/C,cAAc,aAAa,CAAC;AAE5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE9E,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAG/B"}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,oFAAoF;AACpF,qFAAqF;AACrF,wFAAwF;AACxF,sDAAsD;AAEtD,iFAAiF;AACjF,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAc1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,mFAAmF;AACnF,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,sFAAsF;AACtF,yFAAyF;AACzF,qFAAqF;AACrF,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAmB5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,6EAA6E;AAC7E,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAI5B,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,oFAAoF;AACpF,qFAAqF;AACrF,wFAAwF;AACxF,sDAAsD;AAEtD,iFAAiF;AACjF,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAe1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,mFAAmF;AACnF,6BAA6B;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,sFAAsF;AACtF,yFAAyF;AACzF,qFAAqF;AACrF,8BAA8B;AAC9B,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAmB5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,6EAA6E;AAC7E,6EAA6E;AAC7E,cAAc,aAAa,CAAC;AAI5B,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,OAAO,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGtF,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAc9E,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,oFAAoF;IACpF,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC3C,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD,GACA,aAAa,EAAE,CAuEjB;AAmFD,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAkH/B"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAGtF,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAc9E,wBAAgB,aAAa,CAC3B,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,oFAAoF;IACpF,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC3C,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD,GACA,aAAa,EAAE,CAuEjB;AAmFD,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAmH/B"}
package/lib/pipeline.js CHANGED
@@ -214,6 +214,7 @@ export async function generateClient(options) {
214
214
  mockData: options.mockData,
215
215
  mockSeed: options.mockSeed,
216
216
  queryKeyPrefix: options.queryKeyPrefix,
217
+ telemetry: options.telemetry,
217
218
  setup: setupBlock,
218
219
  runtime: options.runtime,
219
220
  importExt: options.importExt,
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,uEAAuE;AACvE,qEAAqE;AACrE,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,qCAAqC;AAErC,OAAO,EACL,KAAK,EACL,MAAM,EACN,aAAa,EACb,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAQ5D,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAiB,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAwB,MAAM,iBAAiB,CAAC;AAG/E;;;;GAIG;AACH,uFAAuF;AACvF,sFAAsF;AACtF,MAAM,YAAY,GAAG;IACnB,+DAA+D;IAC/D,0EAA0E;CAC3E,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,KAAe,EACf,OAUC;IAED,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,mFAAmF;IACnF,iFAAiF;IACjF,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC9C,MAAM,KAAK,GAAG;YACZ,KAAK;YACL,MAAM;YACN,MAAM;YACN,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,UAAU;YAC5B,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;SACnD,CAAC;QACF,IAAI,SAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,gFAAgF;YAChF,6EAA6E;YAC7E,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC/D,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,aAAa,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACzB,SAAS,CAAC,IAAI,CACZ,CAAC,IAAI,EAAE,EAAE,CACP,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CACzF,EACD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,kEAAkE,CACrF,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CACb,cAAc,IAAI,qDAAqD,IAAI,CAAC,IAAI,EAAE,CACnF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,CAAC,IAAI,0CAA0C,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,6EAA6E;YAC7E,gFAAgF;YAChF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IACD,qFAAqF;IACrF,0EAA0E;IAC1E,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CACT,gFAAgF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACpH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,KAAe;IAC7C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI;gBAClB,GAAG,EAAE,CAAC,UAAU;gBAChB,GAAG,EAAE,CAAC,WAAW;gBACjB,GAAG,EAAE,CAAC,YAAY;gBAClB,GAAG,EAAE,CAAC,YAAY;aACnB,EAAE,CAAC;gBACF,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;gBAAE,SAAS;YAClC,MAAM,CAAC,IAAI,CACT,+BAA+B,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,QAAQ,CAAC;iBACzE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;iBAC1B,IAAI,CACH,IAAI,CACL,yNAAyN,CAC7N,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CACzB,QAAwB,EACxB,KAAe,EACf,IAAiB,EACjB,QAAkB,EAClB,QAA0C,EAC1C,UAAkB,EAClB,UAA4B;IAE5B,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,EAAE,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAC7D,6FAA6F;QAC7F,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,OAAO,GAAG,QAAQ;aACrB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;aACxF,MAAM,CAAC,CAAC,MAAM,EAAwB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAClE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QAC1E,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,kGAAkG;AAClG,SAAS,eAAe,CAAC,QAAwB,EAAE,IAAY,EAAE,MAAc;IAC7E,kEAAkE;IAClE,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;IAC/F,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC/C,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3F,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/B,OAAO,GAAG,cAAc,IAAI,MAAM,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B;IAE9B,4EAA4E;IAC5E,qFAAqF;IACrF,6DAA6D;IAC7D,IACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,MAAM,CAAC,EAC9F,CAAC;QACD,MAAM,IAAI,KAAK,CACb,gBAAgB,OAAO,CAAC,MAAM,yGAAyG,CACxI,CAAC;IACJ,CAAC;IACD,iFAAiF;IACjF,mFAAmF;IACnF,mFAAmF;IACnF,IAAI,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,iBAAiB,CACzB,kFAAkF,OAAO,CAAC,KAAK,GAAG,CACnG,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,UAAU,GACd,OAAO,KAAK,MAAM;QAChB,CAAC,CAAC,6EAA6E;YAC7E,iEAAiE;YACjE,iBAAiB,CAAC,QAA8C,CAAC;QACnE,CAAC,CAAC,QAAQ,CAAC;IACf,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACxC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE9B,0FAA0F;IAC1F,oFAAoF;IACpF,kFAAkF;IAClF,IAAI,UAA8B,CAAC;IACnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,6EAA6E;QAC7E,kFAAkF;QAClF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7E,UAAU,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,+EAA+E;IAC/E,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE;QAChE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAC;IAEH,iFAAiF;IACjF,+CAA+C;IAC/C,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,IAAI,GAAgB;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,UAAU;QACV,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC;IACF,4EAA4E;IAC5E,oFAAoF;IACpF,kCAAkC;IAClC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE;QACjC,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,QAAQ;QAC1C,IAAI;QACJ,UAAU;QACV,UAAU,EAAE,QAAQ;QACpB,gBAAgB;QAChB,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,kBAAkB,CAChC,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,CACX,CAAC;QACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,oBAAoB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,OAAO;QACL,UAAU;QACV,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,KAAK,EAAE,OAAO;KACf,CAAC;AACJ,CAAC"}
@@ -47,12 +47,19 @@ export type ApiErrorLike = globalThis.Error & {
47
47
  statusText: string;
48
48
  body: unknown;
49
49
  };
50
- /** One interceptor: any subset of the three hooks. */
50
+ export type SettledCall = {
51
+ response?: Response;
52
+ error?: unknown;
53
+ attempts: number;
54
+ durationMs: number;
55
+ };
56
+ /** One interceptor: any subset of the four hooks. */
51
57
  export type Middleware<Op extends OperationContext = OperationContext> = {
52
58
  onRequest?: (ctx: RequestContext<Op>) => void | Promise<void>;
53
59
  onResponse?: (response: Response, ctx: RequestContext<Op>) => Response | void | Promise<Response | void>;
54
60
  /** Throw mode only: may map/replace the error. */
55
61
  onError?: (error: ApiErrorLike, ctx: RequestContext<Op>) => globalThis.Error | Promise<globalThis.Error>;
62
+ onSettled?: (ctx: RequestContext<Op>, call: SettledCall) => void | Promise<void>;
56
63
  };
57
64
  /**
58
65
  * The spec-independent subset of a client's `ClientConfig` a publisher may bake in
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-contract.d.ts","sourceRoot":"","sources":["../src/runtime-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-contract.d.ts","sourceRoot":"","sources":["../src/runtime-contract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-contract.js","sourceRoot":"","sources":["../src/runtime-contract.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AA6FjF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"runtime-contract.js","sourceRoot":"","sources":["../src/runtime-contract.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,iFAAiF;AACjF,oFAAoF;AACpF,iFAAiF;AAqGjF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const TELEMETRY_RUNTIME_SOURCE = "import type { Middleware, SettledCall } from '../../../runtime-contract.js';\n\nconst GENERATOR_VERSION: string = 'dev';\nconst DEFAULT_ENDPOINT = 'https://otel.cloud.redocly.com/v1/traces';\nconst EVENT_TYPE = 'com.redocly.sdkUsage.aggregated';\nconst SEND_TIMEOUT_MS = 3000;\nconst SERVICE_NAME = 'redocly-sdk';\n\ntype StatusClass = '2xx' | '3xx' | '4xx' | '5xx' | 'network_error' | 'timeout' | 'aborted';\ntype LatencyBucket = 'lt_100ms' | 'lt_300ms' | 'lt_1s' | 'lt_3s' | 'lt_10s' | 'gte_10s';\n\nconst STATUS_CLASSES: StatusClass[] = [\n '2xx',\n '3xx',\n '4xx',\n '5xx',\n 'network_error',\n 'timeout',\n 'aborted',\n];\nconst LATENCY_BUCKETS: Array<{ bucket: LatencyBucket; belowMs: number }> = [\n { bucket: 'lt_100ms', belowMs: 100 },\n { bucket: 'lt_300ms', belowMs: 300 },\n { bucket: 'lt_1s', belowMs: 1000 },\n { bucket: 'lt_3s', belowMs: 3000 },\n { bucket: 'lt_10s', belowMs: 10000 },\n { bucket: 'gte_10s', belowMs: Infinity },\n];\n\nexport type SdkUsageEvent = {\n id: string;\n type: typeof EVENT_TYPE;\n source: string;\n time: string;\n data: {\n usage: Record<string, string | number>;\n sdk: Record<string, string>;\n };\n};\n\nexport type TelemetryOptions = {\n sdkName: string;\n sdkVersion: string;\n client: string;\n sink?: (events: SdkUsageEvent[]) => void | Promise<void>;\n endpoint?: string;\n flushIntervalMs?: number;\n};\n\ntype OperationCounts = {\n calls: number;\n attempts: number;\n durationSumMs: number;\n status: Record<StatusClass, number>;\n latency: Record<LatencyBucket, number>;\n};\n\ntype ProcessLike = {\n env?: Record<string, string | undefined>;\n versions?: { node?: string; bun?: string; deno?: string };\n on?: (event: 'beforeExit', listener: () => void) => void;\n};\n\nconst activeWindows = new Set<() => Promise<void>>();\nconst pendingSends = new Set<Promise<void>>();\nlet exitHookInstalled = false;\n\nfunction nodeProcess(): ProcessLike | undefined {\n return (globalThis as { process?: ProcessLike }).process;\n}\n\nfunction telemetryDisabled(): boolean {\n const runtimeProcess = nodeProcess();\n if (runtimeProcess === undefined) return true;\n // A browser bundle can add a `process` shim, so also check for `document`.\n if (typeof document !== 'undefined') return true;\n const env = runtimeProcess.env ?? {};\n if (env.REDOCLY_SDK_TELEMETRY === 'off') return true;\n if (env.DO_NOT_TRACK === '1') return true;\n return false;\n}\n\nexport async function flush(): Promise<void> {\n for (const flushWindow of activeWindows) void flushWindow();\n await Promise.all(pendingSends);\n}\n\nexport function telemetry(options: TelemetryOptions): Middleware {\n if (telemetryDisabled()) return {};\n const intervalMs = options.flushIntervalMs ?? 60_000;\n const endpoint = options.endpoint ?? DEFAULT_ENDPOINT;\n const sink = options.sink ?? ((events: SdkUsageEvent[]) => sendOtlp(endpoint, events));\n const versions = nodeProcess()?.versions ?? {};\n let runtime = 'node';\n let runtimeVersion = versions.node ?? '';\n if (versions.bun !== undefined) {\n runtime = 'bun';\n runtimeVersion = versions.bun;\n } else if (versions.deno !== undefined) {\n runtime = 'deno';\n runtimeVersion = versions.deno;\n }\n const sdk: Record<string, string> = {\n name: options.sdkName,\n version: options.sdkVersion,\n generator_version: GENERATOR_VERSION,\n language: 'typescript',\n runtime,\n runtime_version: runtimeVersion,\n client: options.client,\n };\n let counts = new Map<string, OperationCounts>();\n let windowStart = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n async function flushWindow(): Promise<void> {\n if (counts.size === 0) return;\n if (timer !== undefined) clearTimeout(timer);\n timer = undefined;\n activeWindows.delete(flushWindow);\n const events = toEvents(counts, windowStart, Date.now() - windowStart, options.sdkName, sdk);\n counts = new Map();\n if (telemetryDisabled()) return;\n const send = Promise.resolve()\n .then(() => sink(events))\n .catch(() => undefined);\n pendingSends.add(send);\n await send;\n pendingSends.delete(send);\n }\n\n installExitHook();\n\n return {\n onSettled: (ctx, call) => {\n if (counts.size === 0) {\n windowStart = Date.now();\n timer = setTimeout(() => void flushWindow(), intervalMs);\n unrefTimer(timer);\n activeWindows.add(flushWindow);\n }\n let operation = counts.get(ctx.operation.id);\n if (operation === undefined) {\n operation = emptyCounts();\n counts.set(ctx.operation.id, operation);\n }\n record(operation, call);\n },\n };\n}\n\nfunction installExitHook(): void {\n if (exitHookInstalled) return;\n exitHookInstalled = true;\n nodeProcess()?.on?.('beforeExit', () => void flush());\n}\n\nfunction unrefTimer(timer: unknown): void {\n if (timer instanceof Object && 'unref' in timer && typeof timer.unref === 'function') {\n timer.unref();\n }\n}\n\nfunction emptyCounts(): OperationCounts {\n return {\n calls: 0,\n attempts: 0,\n durationSumMs: 0,\n status: { '2xx': 0, '3xx': 0, '4xx': 0, '5xx': 0, network_error: 0, timeout: 0, aborted: 0 },\n latency: { lt_100ms: 0, lt_300ms: 0, lt_1s: 0, lt_3s: 0, lt_10s: 0, gte_10s: 0 },\n };\n}\n\nfunction record(operation: OperationCounts, call: SettledCall): void {\n operation.calls += 1;\n operation.attempts += call.attempts;\n operation.durationSumMs += call.durationMs;\n operation.status[statusClass(call)] += 1;\n for (const { bucket, belowMs } of LATENCY_BUCKETS) {\n if (call.durationMs < belowMs) {\n operation.latency[bucket] += 1;\n break;\n }\n }\n}\n\nfunction statusClass(call: SettledCall): StatusClass {\n if (call.response === undefined) {\n if (call.error instanceof Error && call.error.name === 'TimeoutError') return 'timeout';\n if (call.error instanceof Error && call.error.name === 'AbortError') return 'aborted';\n return 'network_error';\n }\n const status = call.response.status;\n if (status >= 500) return '5xx';\n if (status >= 400) return '4xx';\n if (status >= 300) return '3xx';\n return '2xx';\n}\n\nfunction toEvents(\n counts: Map<string, OperationCounts>,\n windowStart: number,\n windowMs: number,\n source: string,\n sdk: Record<string, string>\n): SdkUsageEvent[] {\n const events: SdkUsageEvent[] = [];\n for (const [operationId, operation] of counts) {\n const usage: Record<string, string | number> = {\n operation_id: operationId,\n window_ms: windowMs,\n calls: operation.calls,\n attempts: operation.attempts,\n duration_sum_ms: operation.durationSumMs,\n };\n for (const statusClass of STATUS_CLASSES) {\n const count = operation.status[statusClass];\n if (count > 0) {\n usage[`status_${statusClass}`] = count;\n }\n }\n for (const { bucket } of LATENCY_BUCKETS) {\n const count = operation.latency[bucket];\n if (count > 0) {\n usage[`latency_${bucket}`] = count;\n }\n }\n events.push({\n id: `evt_${randomHex(16)}`,\n type: EVENT_TYPE,\n source,\n time: new Date(windowStart).toISOString(),\n data: { usage, sdk },\n });\n }\n return events;\n}\n\nasync function sendOtlp(endpoint: string, events: SdkUsageEvent[]): Promise<void> {\n const response = await fetch(endpoint, {\n method: 'POST',\n // One send per window, so the socket is never reused: close it instead of keeping it idle.\n headers: { 'Content-Type': 'application/json', Connection: 'close' },\n body: JSON.stringify(toOtlpRequest(events)),\n signal: AbortSignal.timeout(SEND_TIMEOUT_MS),\n });\n await response.body?.cancel();\n}\n\ntype OtlpValue = { stringValue: string } | { intValue: number } | { doubleValue: number };\ntype OtlpAttribute = { key: string; value: OtlpValue };\n\nfunction toOtlpRequest(events: SdkUsageEvent[]) {\n const spans = [];\n for (const event of events) {\n const timeUnixNano = `${Date.parse(event.time)}000000`;\n const attributes: OtlpAttribute[] = [\n attribute('cloudevents.event_id', event.id),\n attribute('cloudevents.event_type', event.type),\n attribute('cloudevents.event_source', event.source),\n attribute('cloudevents.event_spec_version', '1.0'),\n attribute('cloudevents.event_data_content_type', 'application/json; charset=utf-8'),\n attribute('cloudevents.event_time', event.time),\n attribute('cloudevents.event_subject', ''),\n attribute('cloudevents.event_origin', SERVICE_NAME),\n attribute('cloudevents.event_object', 'event'),\n attribute('cloudevents.event_category', 'product'),\n attribute('cloudevents.event_signal', 'metric'),\n ];\n for (const [key, value] of Object.entries(event.data.usage)) {\n attributes.push(attribute(`cloudevents.event_data.usage.${key}`, value));\n }\n for (const [key, value] of Object.entries(event.data.sdk)) {\n attributes.push(attribute(`cloudevents.event_data.sdk.${key}`, value));\n }\n spans.push({\n traceId: randomHex(16),\n spanId: randomHex(8),\n name: `event.${event.type}`,\n kind: 1,\n startTimeUnixNano: timeUnixNano,\n endTimeUnixNano: timeUnixNano,\n attributes,\n });\n }\n return {\n resourceSpans: [\n {\n resource: {\n attributes: [\n attribute('service.name', SERVICE_NAME),\n attribute('service.version', GENERATOR_VERSION),\n ],\n },\n scopeSpans: [{ scope: { name: 'redocly-sdk-telemetry' }, spans }],\n },\n ],\n };\n}\n\nfunction attribute(key: string, value: string | number): OtlpAttribute {\n if (typeof value === 'string') return { key, value: { stringValue: value } };\n if (Number.isInteger(value)) return { key, value: { intValue: value } };\n return { key, value: { doubleValue: value } };\n}\n\nfunction randomHex(byteCount: number): string {\n const bytes = crypto.getRandomValues(new Uint8Array(byteCount));\n let hex = '';\n for (const byte of bytes) hex += byte.toString(16).padStart(2, '0');\n return hex;\n}\n";
2
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/runtime-sources/telemetry.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,wBAAwB,49TACs7T,CAAC"}
@@ -0,0 +1,3 @@
1
+ // GENERATED by scripts/generate-runtime-sources.mjs — do not edit. Regenerated on install (`prepare`); manually: `npm run prepare -w @redocly/client-generator`.
2
+ export const TELEMETRY_RUNTIME_SOURCE = "import type { Middleware, SettledCall } from '../../../runtime-contract.js';\n\nconst GENERATOR_VERSION: string = 'dev';\nconst DEFAULT_ENDPOINT = 'https://otel.cloud.redocly.com/v1/traces';\nconst EVENT_TYPE = 'com.redocly.sdkUsage.aggregated';\nconst SEND_TIMEOUT_MS = 3000;\nconst SERVICE_NAME = 'redocly-sdk';\n\ntype StatusClass = '2xx' | '3xx' | '4xx' | '5xx' | 'network_error' | 'timeout' | 'aborted';\ntype LatencyBucket = 'lt_100ms' | 'lt_300ms' | 'lt_1s' | 'lt_3s' | 'lt_10s' | 'gte_10s';\n\nconst STATUS_CLASSES: StatusClass[] = [\n '2xx',\n '3xx',\n '4xx',\n '5xx',\n 'network_error',\n 'timeout',\n 'aborted',\n];\nconst LATENCY_BUCKETS: Array<{ bucket: LatencyBucket; belowMs: number }> = [\n { bucket: 'lt_100ms', belowMs: 100 },\n { bucket: 'lt_300ms', belowMs: 300 },\n { bucket: 'lt_1s', belowMs: 1000 },\n { bucket: 'lt_3s', belowMs: 3000 },\n { bucket: 'lt_10s', belowMs: 10000 },\n { bucket: 'gte_10s', belowMs: Infinity },\n];\n\nexport type SdkUsageEvent = {\n id: string;\n type: typeof EVENT_TYPE;\n source: string;\n time: string;\n data: {\n usage: Record<string, string | number>;\n sdk: Record<string, string>;\n };\n};\n\nexport type TelemetryOptions = {\n sdkName: string;\n sdkVersion: string;\n client: string;\n sink?: (events: SdkUsageEvent[]) => void | Promise<void>;\n endpoint?: string;\n flushIntervalMs?: number;\n};\n\ntype OperationCounts = {\n calls: number;\n attempts: number;\n durationSumMs: number;\n status: Record<StatusClass, number>;\n latency: Record<LatencyBucket, number>;\n};\n\ntype ProcessLike = {\n env?: Record<string, string | undefined>;\n versions?: { node?: string; bun?: string; deno?: string };\n on?: (event: 'beforeExit', listener: () => void) => void;\n};\n\nconst activeWindows = new Set<() => Promise<void>>();\nconst pendingSends = new Set<Promise<void>>();\nlet exitHookInstalled = false;\n\nfunction nodeProcess(): ProcessLike | undefined {\n return (globalThis as { process?: ProcessLike }).process;\n}\n\nfunction telemetryDisabled(): boolean {\n const runtimeProcess = nodeProcess();\n if (runtimeProcess === undefined) return true;\n // A browser bundle can add a `process` shim, so also check for `document`.\n if (typeof document !== 'undefined') return true;\n const env = runtimeProcess.env ?? {};\n if (env.REDOCLY_SDK_TELEMETRY === 'off') return true;\n if (env.DO_NOT_TRACK === '1') return true;\n return false;\n}\n\nexport async function flush(): Promise<void> {\n for (const flushWindow of activeWindows) void flushWindow();\n await Promise.all(pendingSends);\n}\n\nexport function telemetry(options: TelemetryOptions): Middleware {\n if (telemetryDisabled()) return {};\n const intervalMs = options.flushIntervalMs ?? 60_000;\n const endpoint = options.endpoint ?? DEFAULT_ENDPOINT;\n const sink = options.sink ?? ((events: SdkUsageEvent[]) => sendOtlp(endpoint, events));\n const versions = nodeProcess()?.versions ?? {};\n let runtime = 'node';\n let runtimeVersion = versions.node ?? '';\n if (versions.bun !== undefined) {\n runtime = 'bun';\n runtimeVersion = versions.bun;\n } else if (versions.deno !== undefined) {\n runtime = 'deno';\n runtimeVersion = versions.deno;\n }\n const sdk: Record<string, string> = {\n name: options.sdkName,\n version: options.sdkVersion,\n generator_version: GENERATOR_VERSION,\n language: 'typescript',\n runtime,\n runtime_version: runtimeVersion,\n client: options.client,\n };\n let counts = new Map<string, OperationCounts>();\n let windowStart = 0;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n async function flushWindow(): Promise<void> {\n if (counts.size === 0) return;\n if (timer !== undefined) clearTimeout(timer);\n timer = undefined;\n activeWindows.delete(flushWindow);\n const events = toEvents(counts, windowStart, Date.now() - windowStart, options.sdkName, sdk);\n counts = new Map();\n if (telemetryDisabled()) return;\n const send = Promise.resolve()\n .then(() => sink(events))\n .catch(() => undefined);\n pendingSends.add(send);\n await send;\n pendingSends.delete(send);\n }\n\n installExitHook();\n\n return {\n onSettled: (ctx, call) => {\n if (counts.size === 0) {\n windowStart = Date.now();\n timer = setTimeout(() => void flushWindow(), intervalMs);\n unrefTimer(timer);\n activeWindows.add(flushWindow);\n }\n let operation = counts.get(ctx.operation.id);\n if (operation === undefined) {\n operation = emptyCounts();\n counts.set(ctx.operation.id, operation);\n }\n record(operation, call);\n },\n };\n}\n\nfunction installExitHook(): void {\n if (exitHookInstalled) return;\n exitHookInstalled = true;\n nodeProcess()?.on?.('beforeExit', () => void flush());\n}\n\nfunction unrefTimer(timer: unknown): void {\n if (timer instanceof Object && 'unref' in timer && typeof timer.unref === 'function') {\n timer.unref();\n }\n}\n\nfunction emptyCounts(): OperationCounts {\n return {\n calls: 0,\n attempts: 0,\n durationSumMs: 0,\n status: { '2xx': 0, '3xx': 0, '4xx': 0, '5xx': 0, network_error: 0, timeout: 0, aborted: 0 },\n latency: { lt_100ms: 0, lt_300ms: 0, lt_1s: 0, lt_3s: 0, lt_10s: 0, gte_10s: 0 },\n };\n}\n\nfunction record(operation: OperationCounts, call: SettledCall): void {\n operation.calls += 1;\n operation.attempts += call.attempts;\n operation.durationSumMs += call.durationMs;\n operation.status[statusClass(call)] += 1;\n for (const { bucket, belowMs } of LATENCY_BUCKETS) {\n if (call.durationMs < belowMs) {\n operation.latency[bucket] += 1;\n break;\n }\n }\n}\n\nfunction statusClass(call: SettledCall): StatusClass {\n if (call.response === undefined) {\n if (call.error instanceof Error && call.error.name === 'TimeoutError') return 'timeout';\n if (call.error instanceof Error && call.error.name === 'AbortError') return 'aborted';\n return 'network_error';\n }\n const status = call.response.status;\n if (status >= 500) return '5xx';\n if (status >= 400) return '4xx';\n if (status >= 300) return '3xx';\n return '2xx';\n}\n\nfunction toEvents(\n counts: Map<string, OperationCounts>,\n windowStart: number,\n windowMs: number,\n source: string,\n sdk: Record<string, string>\n): SdkUsageEvent[] {\n const events: SdkUsageEvent[] = [];\n for (const [operationId, operation] of counts) {\n const usage: Record<string, string | number> = {\n operation_id: operationId,\n window_ms: windowMs,\n calls: operation.calls,\n attempts: operation.attempts,\n duration_sum_ms: operation.durationSumMs,\n };\n for (const statusClass of STATUS_CLASSES) {\n const count = operation.status[statusClass];\n if (count > 0) {\n usage[`status_${statusClass}`] = count;\n }\n }\n for (const { bucket } of LATENCY_BUCKETS) {\n const count = operation.latency[bucket];\n if (count > 0) {\n usage[`latency_${bucket}`] = count;\n }\n }\n events.push({\n id: `evt_${randomHex(16)}`,\n type: EVENT_TYPE,\n source,\n time: new Date(windowStart).toISOString(),\n data: { usage, sdk },\n });\n }\n return events;\n}\n\nasync function sendOtlp(endpoint: string, events: SdkUsageEvent[]): Promise<void> {\n const response = await fetch(endpoint, {\n method: 'POST',\n // One send per window, so the socket is never reused: close it instead of keeping it idle.\n headers: { 'Content-Type': 'application/json', Connection: 'close' },\n body: JSON.stringify(toOtlpRequest(events)),\n signal: AbortSignal.timeout(SEND_TIMEOUT_MS),\n });\n await response.body?.cancel();\n}\n\ntype OtlpValue = { stringValue: string } | { intValue: number } | { doubleValue: number };\ntype OtlpAttribute = { key: string; value: OtlpValue };\n\nfunction toOtlpRequest(events: SdkUsageEvent[]) {\n const spans = [];\n for (const event of events) {\n const timeUnixNano = `${Date.parse(event.time)}000000`;\n const attributes: OtlpAttribute[] = [\n attribute('cloudevents.event_id', event.id),\n attribute('cloudevents.event_type', event.type),\n attribute('cloudevents.event_source', event.source),\n attribute('cloudevents.event_spec_version', '1.0'),\n attribute('cloudevents.event_data_content_type', 'application/json; charset=utf-8'),\n attribute('cloudevents.event_time', event.time),\n attribute('cloudevents.event_subject', ''),\n attribute('cloudevents.event_origin', SERVICE_NAME),\n attribute('cloudevents.event_object', 'event'),\n attribute('cloudevents.event_category', 'product'),\n attribute('cloudevents.event_signal', 'metric'),\n ];\n for (const [key, value] of Object.entries(event.data.usage)) {\n attributes.push(attribute(`cloudevents.event_data.usage.${key}`, value));\n }\n for (const [key, value] of Object.entries(event.data.sdk)) {\n attributes.push(attribute(`cloudevents.event_data.sdk.${key}`, value));\n }\n spans.push({\n traceId: randomHex(16),\n spanId: randomHex(8),\n name: `event.${event.type}`,\n kind: 1,\n startTimeUnixNano: timeUnixNano,\n endTimeUnixNano: timeUnixNano,\n attributes,\n });\n }\n return {\n resourceSpans: [\n {\n resource: {\n attributes: [\n attribute('service.name', SERVICE_NAME),\n attribute('service.version', GENERATOR_VERSION),\n ],\n },\n scopeSpans: [{ scope: { name: 'redocly-sdk-telemetry' }, spans }],\n },\n ],\n };\n}\n\nfunction attribute(key: string, value: string | number): OtlpAttribute {\n if (typeof value === 'string') return { key, value: { stringValue: value } };\n if (Number.isInteger(value)) return { key, value: { intValue: value } };\n return { key, value: { doubleValue: value } };\n}\n\nfunction randomHex(byteCount: number): string {\n const bytes = crypto.getRandomValues(new Uint8Array(byteCount));\n let hex = '';\n for (const byte of bytes) hex += byte.toString(16).padStart(2, '0');\n return hex;\n}\n";
3
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/runtime-sources/telemetry.ts"],"names":[],"mappings":"AAAA,iKAAiK;AACjK,MAAM,CAAC,MAAM,wBAAwB,GACnC,y9TAAy9T,CAAC"}