@clusterenvision/ui-framework 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +295 -0
  3. package/dist/ai-assistant-Db002XYC.d.ts +92 -0
  4. package/dist/ai-assistant-EobSUV70.d.cts +92 -0
  5. package/dist/browser-DnHpnWwE.d.cts +354 -0
  6. package/dist/browser-Dx4oKf5e.d.ts +354 -0
  7. package/dist/browser-signals-07qodpYT.d.cts +66 -0
  8. package/dist/browser-signals-07qodpYT.d.ts +66 -0
  9. package/dist/browser-signals.cjs +32 -0
  10. package/dist/browser-signals.cjs.map +1 -0
  11. package/dist/browser-signals.d.cts +1 -0
  12. package/dist/browser-signals.d.ts +1 -0
  13. package/dist/browser-signals.js +3 -0
  14. package/dist/browser-signals.js.map +1 -0
  15. package/dist/browser.cjs +197 -0
  16. package/dist/browser.cjs.map +1 -0
  17. package/dist/browser.d.cts +13 -0
  18. package/dist/browser.d.ts +13 -0
  19. package/dist/browser.js +12 -0
  20. package/dist/browser.js.map +1 -0
  21. package/dist/chunk-22HQL2Y4.js +568 -0
  22. package/dist/chunk-22HQL2Y4.js.map +1 -0
  23. package/dist/chunk-3ZBRNFEE.js +1525 -0
  24. package/dist/chunk-3ZBRNFEE.js.map +1 -0
  25. package/dist/chunk-4HRORR2Q.js +1953 -0
  26. package/dist/chunk-4HRORR2Q.js.map +1 -0
  27. package/dist/chunk-4L3UXVL5.cjs +68 -0
  28. package/dist/chunk-4L3UXVL5.cjs.map +1 -0
  29. package/dist/chunk-6BYWFGQY.cjs +226 -0
  30. package/dist/chunk-6BYWFGQY.cjs.map +1 -0
  31. package/dist/chunk-7SCIB5HP.js +57 -0
  32. package/dist/chunk-7SCIB5HP.js.map +1 -0
  33. package/dist/chunk-BBAUALNU.js +888 -0
  34. package/dist/chunk-BBAUALNU.js.map +1 -0
  35. package/dist/chunk-CHLDE4JQ.js +715 -0
  36. package/dist/chunk-CHLDE4JQ.js.map +1 -0
  37. package/dist/chunk-CXTAUXLG.cjs +71 -0
  38. package/dist/chunk-CXTAUXLG.cjs.map +1 -0
  39. package/dist/chunk-D2USIT6V.js +121 -0
  40. package/dist/chunk-D2USIT6V.js.map +1 -0
  41. package/dist/chunk-D3H5CGVD.js +36 -0
  42. package/dist/chunk-D3H5CGVD.js.map +1 -0
  43. package/dist/chunk-DQBX75NJ.js +92 -0
  44. package/dist/chunk-DQBX75NJ.js.map +1 -0
  45. package/dist/chunk-DRPG2DFX.js +208 -0
  46. package/dist/chunk-DRPG2DFX.js.map +1 -0
  47. package/dist/chunk-EFOOXCY7.cjs +41 -0
  48. package/dist/chunk-EFOOXCY7.cjs.map +1 -0
  49. package/dist/chunk-FFCZSYC7.cjs +906 -0
  50. package/dist/chunk-FFCZSYC7.cjs.map +1 -0
  51. package/dist/chunk-FNXIYAET.cjs +1593 -0
  52. package/dist/chunk-FNXIYAET.cjs.map +1 -0
  53. package/dist/chunk-I6GNUM3P.cjs +63 -0
  54. package/dist/chunk-I6GNUM3P.cjs.map +1 -0
  55. package/dist/chunk-IHAMVLRY.js +129 -0
  56. package/dist/chunk-IHAMVLRY.js.map +1 -0
  57. package/dist/chunk-IRBUKIRF.cjs +133 -0
  58. package/dist/chunk-IRBUKIRF.cjs.map +1 -0
  59. package/dist/chunk-KPG5HAHK.cjs +97 -0
  60. package/dist/chunk-KPG5HAHK.cjs.map +1 -0
  61. package/dist/chunk-N7Q2ESLG.cjs +130 -0
  62. package/dist/chunk-N7Q2ESLG.cjs.map +1 -0
  63. package/dist/chunk-PFBEIFVS.js +180 -0
  64. package/dist/chunk-PFBEIFVS.js.map +1 -0
  65. package/dist/chunk-PVZVFICK.cjs +318 -0
  66. package/dist/chunk-PVZVFICK.cjs.map +1 -0
  67. package/dist/chunk-Q3KH6HMU.js +305 -0
  68. package/dist/chunk-Q3KH6HMU.js.map +1 -0
  69. package/dist/chunk-QPAAV32J.cjs +1985 -0
  70. package/dist/chunk-QPAAV32J.cjs.map +1 -0
  71. package/dist/chunk-R6XQUMWT.cjs +61 -0
  72. package/dist/chunk-R6XQUMWT.cjs.map +1 -0
  73. package/dist/chunk-SA5UD5B6.js +92 -0
  74. package/dist/chunk-SA5UD5B6.js.map +1 -0
  75. package/dist/chunk-SM35JOYD.cjs +211 -0
  76. package/dist/chunk-SM35JOYD.cjs.map +1 -0
  77. package/dist/chunk-SZQNIMYI.cjs +592 -0
  78. package/dist/chunk-SZQNIMYI.cjs.map +1 -0
  79. package/dist/chunk-T6T7QE4J.js +224 -0
  80. package/dist/chunk-T6T7QE4J.js.map +1 -0
  81. package/dist/chunk-TIF372DZ.js +65 -0
  82. package/dist/chunk-TIF372DZ.js.map +1 -0
  83. package/dist/chunk-V6JCOBGY.js +69 -0
  84. package/dist/chunk-V6JCOBGY.js.map +1 -0
  85. package/dist/chunk-VHUXNDW2.cjs +189 -0
  86. package/dist/chunk-VHUXNDW2.cjs.map +1 -0
  87. package/dist/chunk-W3LNNY3U.cjs +729 -0
  88. package/dist/chunk-W3LNNY3U.cjs.map +1 -0
  89. package/dist/chunk-ZUWSU4OA.js +61 -0
  90. package/dist/chunk-ZUWSU4OA.js.map +1 -0
  91. package/dist/chunk-ZWUA2LPB.cjs +103 -0
  92. package/dist/chunk-ZWUA2LPB.cjs.map +1 -0
  93. package/dist/cli/index.cjs +566 -0
  94. package/dist/cli/index.cjs.map +1 -0
  95. package/dist/cli/index.d.cts +1 -0
  96. package/dist/cli/index.d.ts +1 -0
  97. package/dist/cli/index.js +558 -0
  98. package/dist/cli/index.js.map +1 -0
  99. package/dist/compiler/index.cjs +80 -0
  100. package/dist/compiler/index.cjs.map +1 -0
  101. package/dist/compiler/index.d.cts +130 -0
  102. package/dist/compiler/index.d.ts +130 -0
  103. package/dist/compiler/index.js +3 -0
  104. package/dist/compiler/index.js.map +1 -0
  105. package/dist/component-BVzvepw9.d.cts +90 -0
  106. package/dist/component-wTxZ2BPD.d.ts +90 -0
  107. package/dist/index-CpxDa60m.d.cts +644 -0
  108. package/dist/index-CpxDa60m.d.ts +644 -0
  109. package/dist/index.cjs +1356 -0
  110. package/dist/index.cjs.map +1 -0
  111. package/dist/index.d.cts +165 -0
  112. package/dist/index.d.ts +165 -0
  113. package/dist/index.js +772 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/lib/dom.cjs +102 -0
  116. package/dist/lib/dom.cjs.map +1 -0
  117. package/dist/lib/dom.d.cts +373 -0
  118. package/dist/lib/dom.d.ts +373 -0
  119. package/dist/lib/dom.js +3 -0
  120. package/dist/lib/dom.js.map +1 -0
  121. package/dist/lib/icons.cjs +20 -0
  122. package/dist/lib/icons.cjs.map +1 -0
  123. package/dist/lib/icons.d.cts +64 -0
  124. package/dist/lib/icons.d.ts +64 -0
  125. package/dist/lib/icons.js +3 -0
  126. package/dist/lib/icons.js.map +1 -0
  127. package/dist/lib/index.cjs +247 -0
  128. package/dist/lib/index.cjs.map +1 -0
  129. package/dist/lib/index.d.cts +30 -0
  130. package/dist/lib/index.d.ts +30 -0
  131. package/dist/lib/index.js +92 -0
  132. package/dist/lib/index.js.map +1 -0
  133. package/dist/lib/theme.cjs +56 -0
  134. package/dist/lib/theme.cjs.map +1 -0
  135. package/dist/lib/theme.d.cts +27 -0
  136. package/dist/lib/theme.d.ts +27 -0
  137. package/dist/lib/theme.js +3 -0
  138. package/dist/lib/theme.js.map +1 -0
  139. package/dist/router-B9kms5XQ.d.ts +124 -0
  140. package/dist/router-YnpW_sIK.d.cts +124 -0
  141. package/dist/runtime/adapters/angular.cjs +48 -0
  142. package/dist/runtime/adapters/angular.cjs.map +1 -0
  143. package/dist/runtime/adapters/angular.d.cts +38 -0
  144. package/dist/runtime/adapters/angular.d.ts +38 -0
  145. package/dist/runtime/adapters/angular.js +46 -0
  146. package/dist/runtime/adapters/angular.js.map +1 -0
  147. package/dist/runtime/adapters/react.cjs +41 -0
  148. package/dist/runtime/adapters/react.cjs.map +1 -0
  149. package/dist/runtime/adapters/react.d.cts +26 -0
  150. package/dist/runtime/adapters/react.d.ts +26 -0
  151. package/dist/runtime/adapters/react.js +39 -0
  152. package/dist/runtime/adapters/react.js.map +1 -0
  153. package/dist/runtime/adapters/vue.cjs +44 -0
  154. package/dist/runtime/adapters/vue.cjs.map +1 -0
  155. package/dist/runtime/adapters/vue.d.cts +37 -0
  156. package/dist/runtime/adapters/vue.d.ts +37 -0
  157. package/dist/runtime/adapters/vue.js +42 -0
  158. package/dist/runtime/adapters/vue.js.map +1 -0
  159. package/dist/runtime/components/ai-assistant.cjs +18 -0
  160. package/dist/runtime/components/ai-assistant.cjs.map +1 -0
  161. package/dist/runtime/components/ai-assistant.d.cts +8 -0
  162. package/dist/runtime/components/ai-assistant.d.ts +8 -0
  163. package/dist/runtime/components/ai-assistant.js +9 -0
  164. package/dist/runtime/components/ai-assistant.js.map +1 -0
  165. package/dist/runtime/components/ai-summary-card.cjs +18 -0
  166. package/dist/runtime/components/ai-summary-card.cjs.map +1 -0
  167. package/dist/runtime/components/ai-summary-card.d.cts +19 -0
  168. package/dist/runtime/components/ai-summary-card.d.ts +19 -0
  169. package/dist/runtime/components/ai-summary-card.js +9 -0
  170. package/dist/runtime/components/ai-summary-card.js.map +1 -0
  171. package/dist/runtime/router.cjs +429 -0
  172. package/dist/runtime/router.cjs.map +1 -0
  173. package/dist/runtime/router.d.cts +2 -0
  174. package/dist/runtime/router.d.ts +2 -0
  175. package/dist/runtime/router.js +421 -0
  176. package/dist/runtime/router.js.map +1 -0
  177. package/dist/runtime/server.cjs +125 -0
  178. package/dist/runtime/server.cjs.map +1 -0
  179. package/dist/runtime/server.d.cts +27 -0
  180. package/dist/runtime/server.d.ts +27 -0
  181. package/dist/runtime/server.js +117 -0
  182. package/dist/runtime/server.js.map +1 -0
  183. package/dist/runtime/workflow/index.cjs +282 -0
  184. package/dist/runtime/workflow/index.cjs.map +1 -0
  185. package/dist/runtime/workflow/index.d.cts +1 -0
  186. package/dist/runtime/workflow/index.d.ts +1 -0
  187. package/dist/runtime/workflow/index.js +5 -0
  188. package/dist/runtime/workflow/index.js.map +1 -0
  189. package/dist/tracing-DGdvMCEl.d.cts +109 -0
  190. package/dist/tracing-DGdvMCEl.d.ts +109 -0
  191. package/dist/types-C4RXXKfk.d.cts +76 -0
  192. package/dist/types-C4RXXKfk.d.ts +76 -0
  193. package/package.json +166 -0
@@ -0,0 +1,211 @@
1
+ 'use strict';
2
+
3
+ // src/runtime/shared/trace.js
4
+ function isNodeRuntime() {
5
+ return typeof process !== "undefined" && Boolean(process.versions?.node);
6
+ }
7
+ var cachedFsPromise = null;
8
+ function getFsPromises() {
9
+ if (cachedFsPromise) {
10
+ return cachedFsPromise;
11
+ }
12
+ if (!isNodeRuntime()) {
13
+ cachedFsPromise = Promise.reject(new Error("JsonlTraceExporter requires a file writer; provide the writer option when running outside Node.js."));
14
+ return cachedFsPromise;
15
+ }
16
+ cachedFsPromise = import('fs/promises');
17
+ return cachedFsPromise;
18
+ }
19
+ var JsonlTraceExporter = class {
20
+ constructor(options) {
21
+ this.options = options;
22
+ if (options.writer) {
23
+ this.writerPromise = Promise.resolve(options.writer);
24
+ } else {
25
+ this.writerPromise = getFsPromises();
26
+ }
27
+ }
28
+ async export(event) {
29
+ const writer = await this.writerPromise;
30
+ const normalized = normalizeEvent(event, this.options.redactor);
31
+ const payload = JSON.stringify({
32
+ ...normalized,
33
+ timestamp: normalized.timestamp.toISOString()
34
+ });
35
+ await writer.appendFile(this.options.filePath, `${payload}
36
+ `, "utf8");
37
+ }
38
+ async flush() {
39
+ }
40
+ };
41
+ var OtlpHttpTraceExporter = class {
42
+ constructor(options) {
43
+ this.options = options;
44
+ if (!options.url) {
45
+ throw new Error("OTLP exporter requires a collector url");
46
+ }
47
+ this.batchSize = Math.max(1, options.batchSize ?? 24);
48
+ this.flushIntervalMs = Math.max(250, options.flushIntervalMs ?? 2e3);
49
+ const globalFetch = typeof globalThis.fetch === "function" ? globalThis.fetch.bind(globalThis) : void 0;
50
+ const httpClient = options.httpClient ?? globalFetch;
51
+ if (!httpClient) {
52
+ throw new Error("fetch is not available in this runtime; provide an httpClient option");
53
+ }
54
+ this.httpClient = httpClient;
55
+ this.queue = [];
56
+ }
57
+ export(event) {
58
+ const normalized = normalizeEvent(event, this.options.redactor);
59
+ this.queue.push(normalized);
60
+ if (this.queue.length >= this.batchSize) {
61
+ void this.flush();
62
+ return;
63
+ }
64
+ this.timer ??= setTimeout(() => {
65
+ this.timer = void 0;
66
+ void this.flush();
67
+ }, this.flushIntervalMs);
68
+ }
69
+ async flush() {
70
+ if (this.timer) {
71
+ clearTimeout(this.timer);
72
+ this.timer = void 0;
73
+ }
74
+ if (!this.queue.length) {
75
+ return;
76
+ }
77
+ const batch = this.queue.splice(0);
78
+ await this.post(batch);
79
+ }
80
+ async shutdown() {
81
+ await this.flush();
82
+ }
83
+ async post(events) {
84
+ const payload = this.buildRequest(events);
85
+ try {
86
+ await this.httpClient(this.options.url, {
87
+ method: "POST",
88
+ headers: {
89
+ "content-type": "application/json",
90
+ ...this.options.headers
91
+ },
92
+ body: JSON.stringify(payload)
93
+ });
94
+ } catch (error) {
95
+ console.warn("Failed to export traces via OTLP", error);
96
+ }
97
+ }
98
+ buildRequest(events) {
99
+ return {
100
+ resourceSpans: [
101
+ {
102
+ resource: {
103
+ attributes: serializeAttributes({
104
+ "service.name": this.options.serviceName ?? "ce-ui",
105
+ ...this.options.resource
106
+ })
107
+ },
108
+ scopeSpans: [
109
+ {
110
+ scope: { name: this.options.scopeName ?? "ce-ui-runtime" },
111
+ spans: events.map((event) => this.toSpan(event))
112
+ }
113
+ ]
114
+ }
115
+ ]
116
+ };
117
+ }
118
+ toSpan(event) {
119
+ const timestamp = event.timestamp.getTime();
120
+ const timestampNano = String(timestamp * 1e6);
121
+ return {
122
+ traceId: generateTraceId(),
123
+ spanId: generateSpanId(),
124
+ name: event.type,
125
+ kind: 0,
126
+ startTimeUnixNano: timestampNano,
127
+ endTimeUnixNano: timestampNano,
128
+ attributes: serializeAttributes({
129
+ ...event.context,
130
+ ...event.attributes
131
+ }),
132
+ status: { code: 0 }
133
+ };
134
+ }
135
+ };
136
+ function normalizeEvent(event, redactor) {
137
+ const clone = {
138
+ type: event.type,
139
+ timestamp: event.timestamp instanceof Date ? event.timestamp : new Date(event.timestamp),
140
+ severity: event.severity,
141
+ attributes: event.attributes ? { ...event.attributes } : void 0,
142
+ context: event.context ? { ...event.context } : void 0
143
+ };
144
+ if (redactor) {
145
+ return redactor(clone);
146
+ }
147
+ return clone;
148
+ }
149
+ function serializeAttributes(source) {
150
+ if (!source) {
151
+ return [];
152
+ }
153
+ return Object.entries(source).filter(([, value]) => typeof value !== "undefined").map(([key, value]) => ({
154
+ key,
155
+ value: mapOtlpValue(value)
156
+ }));
157
+ }
158
+ function mapOtlpValue(value) {
159
+ if (typeof value === "string") {
160
+ return { stringValue: value };
161
+ }
162
+ if (typeof value === "number") {
163
+ if (Number.isInteger(value)) {
164
+ return { intValue: value.toString() };
165
+ }
166
+ return { doubleValue: value };
167
+ }
168
+ if (typeof value === "boolean") {
169
+ return { boolValue: value };
170
+ }
171
+ if (value instanceof Date) {
172
+ return { stringValue: value.toISOString() };
173
+ }
174
+ if (value == null) {
175
+ return { stringValue: "" };
176
+ }
177
+ return { stringValue: JSON.stringify(value) };
178
+ }
179
+ function safeRandomUUID() {
180
+ const globalCrypto = globalThis.crypto;
181
+ if (typeof globalCrypto?.randomUUID === "function") {
182
+ return globalCrypto.randomUUID();
183
+ }
184
+ return void 0;
185
+ }
186
+ function randomHex(length) {
187
+ let output = "";
188
+ for (let index = 0; index < length; index += 1) {
189
+ output += Math.floor(Math.random() * 16).toString(16);
190
+ }
191
+ return output;
192
+ }
193
+ function generateTraceId() {
194
+ const uuid = safeRandomUUID();
195
+ if (uuid) {
196
+ return uuid.replace(/-/g, "");
197
+ }
198
+ return randomHex(32);
199
+ }
200
+ function generateSpanId() {
201
+ const uuid = safeRandomUUID();
202
+ if (uuid) {
203
+ return uuid.replace(/-/g, "").slice(0, 16);
204
+ }
205
+ return randomHex(16);
206
+ }
207
+
208
+ exports.JsonlTraceExporter = JsonlTraceExporter;
209
+ exports.OtlpHttpTraceExporter = OtlpHttpTraceExporter;
210
+ //# sourceMappingURL=chunk-SM35JOYD.cjs.map
211
+ //# sourceMappingURL=chunk-SM35JOYD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/runtime/shared/trace.js"],"names":[],"mappings":"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","file":"chunk-SM35JOYD.cjs","sourcesContent":["function isNodeRuntime() {\n return typeof process !== 'undefined' && Boolean(process.versions?.node);\n}\n\nlet cachedFsPromise = null;\nfunction getFsPromises() {\n if (cachedFsPromise) {\n return cachedFsPromise;\n }\n if (!isNodeRuntime()) {\n cachedFsPromise = Promise.reject(new Error('JsonlTraceExporter requires a file writer; provide the writer option when running outside Node.js.'));\n return cachedFsPromise;\n }\n cachedFsPromise = import('node:fs/promises');\n return cachedFsPromise;\n}\n\nexport class JsonlTraceExporter {\n constructor(options) {\n this.options = options;\n if (options.writer) {\n this.writerPromise = Promise.resolve(options.writer);\n } else {\n this.writerPromise = getFsPromises();\n }\n }\n\n async export(event) {\n const writer = await this.writerPromise;\n const normalized = normalizeEvent(event, this.options.redactor);\n const payload = JSON.stringify({\n ...normalized,\n timestamp: normalized.timestamp.toISOString(),\n });\n await writer.appendFile(this.options.filePath, `${payload}\\n`, 'utf8');\n }\n\n async flush() {\n // no buffering, nothing to flush\n }\n}\n\nexport class OtlpHttpTraceExporter {\n constructor(options) {\n this.options = options;\n if (!options.url) {\n throw new Error('OTLP exporter requires a collector url');\n }\n this.batchSize = Math.max(1, options.batchSize ?? 24);\n this.flushIntervalMs = Math.max(250, options.flushIntervalMs ?? 2000);\n const globalFetch = typeof globalThis.fetch === 'function' ? globalThis.fetch.bind(globalThis) : undefined;\n const httpClient = options.httpClient ?? globalFetch;\n if (!httpClient) {\n throw new Error('fetch is not available in this runtime; provide an httpClient option');\n }\n this.httpClient = httpClient;\n this.queue = [];\n }\n\n export(event) {\n const normalized = normalizeEvent(event, this.options.redactor);\n this.queue.push(normalized);\n if (this.queue.length >= this.batchSize) {\n void this.flush();\n return;\n }\n this.timer ??= setTimeout(() => {\n this.timer = undefined;\n void this.flush();\n }, this.flushIntervalMs);\n }\n\n async flush() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n if (!this.queue.length) {\n return;\n }\n const batch = this.queue.splice(0);\n await this.post(batch);\n }\n\n async shutdown() {\n await this.flush();\n }\n\n async post(events) {\n const payload = this.buildRequest(events);\n try {\n await this.httpClient(this.options.url, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n ...this.options.headers,\n },\n body: JSON.stringify(payload),\n });\n } catch (error) {\n console.warn('Failed to export traces via OTLP', error);\n }\n }\n\n buildRequest(events) {\n return {\n resourceSpans: [\n {\n resource: {\n attributes: serializeAttributes({\n 'service.name': this.options.serviceName ?? 'ce-ui',\n ...this.options.resource,\n }),\n },\n scopeSpans: [\n {\n scope: { name: this.options.scopeName ?? 'ce-ui-runtime' },\n spans: events.map(event => this.toSpan(event)),\n },\n ],\n },\n ],\n };\n }\n\n toSpan(event) {\n const timestamp = event.timestamp.getTime();\n const timestampNano = String(timestamp * 1_000_000);\n return {\n traceId: generateTraceId(),\n spanId: generateSpanId(),\n name: event.type,\n kind: 0,\n startTimeUnixNano: timestampNano,\n endTimeUnixNano: timestampNano,\n attributes: serializeAttributes({\n ...event.context,\n ...event.attributes,\n }),\n status: { code: 0 },\n };\n }\n}\n\nfunction normalizeEvent(event, redactor) {\n const clone = {\n type: event.type,\n timestamp: event.timestamp instanceof Date ? event.timestamp : new Date(event.timestamp),\n severity: event.severity,\n attributes: event.attributes ? { ...event.attributes } : undefined,\n context: event.context ? { ...event.context } : undefined,\n };\n if (redactor) {\n return redactor(clone);\n }\n return clone;\n}\n\nfunction serializeAttributes(source) {\n if (!source) {\n return [];\n }\n return Object.entries(source)\n .filter(([, value]) => typeof value !== 'undefined')\n .map(([key, value]) => ({\n key,\n value: mapOtlpValue(value),\n }));\n}\n\nfunction mapOtlpValue(value) {\n if (typeof value === 'string') {\n return { stringValue: value };\n }\n if (typeof value === 'number') {\n if (Number.isInteger(value)) {\n return { intValue: value.toString() };\n }\n return { doubleValue: value };\n }\n if (typeof value === 'boolean') {\n return { boolValue: value };\n }\n if (value instanceof Date) {\n return { stringValue: value.toISOString() };\n }\n if (value == null) {\n return { stringValue: '' };\n }\n return { stringValue: JSON.stringify(value) };\n}\n\nfunction safeRandomUUID() {\n const globalCrypto = globalThis.crypto;\n if (typeof globalCrypto?.randomUUID === 'function') {\n return globalCrypto.randomUUID();\n }\n return undefined;\n}\n\nfunction randomHex(length) {\n let output = '';\n for (let index = 0; index < length; index += 1) {\n output += Math.floor(Math.random() * 16).toString(16);\n }\n return output;\n}\n\nfunction generateTraceId() {\n const uuid = safeRandomUUID();\n if (uuid) {\n return uuid.replace(/-/g, '');\n }\n return randomHex(32);\n}\n\nfunction generateSpanId() {\n const uuid = safeRandomUUID();\n if (uuid) {\n return uuid.replace(/-/g, '').slice(0, 16);\n }\n return randomHex(16);\n}\n"]}