@sailfish-ai/sf-veritas 0.2.4 → 0.2.6

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 (44) hide show
  1. package/README.md +120 -0
  2. package/dist/funcSpanTransformer-TjdooSrw.cjs +1 -0
  3. package/dist/funcSpanTransformer-sqmZLAcs.js +750 -0
  4. package/dist/plugins/funcspanEsbuildPlugin.cjs +1 -1
  5. package/dist/plugins/funcspanEsbuildPlugin.mjs +1 -1
  6. package/dist/plugins/funcspanRollupPlugin.cjs +1 -1
  7. package/dist/plugins/funcspanRollupPlugin.mjs +1 -1
  8. package/dist/plugins/funcspanTscPlugin.cjs +1 -1
  9. package/dist/plugins/funcspanTscPlugin.mjs +1 -1
  10. package/dist/plugins/funcspanVitePlugin.cjs +1 -1
  11. package/dist/plugins/funcspanVitePlugin.mjs +1 -1
  12. package/dist/plugins/funcspanWebpackLoader.cjs +1 -1
  13. package/dist/plugins/funcspanWebpackLoader.mjs +65 -8
  14. package/dist/plugins/funcspanWebpackPlugin.cjs +1 -1
  15. package/dist/plugins/funcspanWebpackPlugin.mjs +24 -24
  16. package/dist/runtime/register.cjs +1 -0
  17. package/dist/runtime/register.mjs +27 -0
  18. package/dist/sf-veritas.cjs +16 -52
  19. package/dist/sf-veritas.mjs +573 -811
  20. package/dist/types/functionSpanTransmitter.d.ts +15 -1
  21. package/dist/types/index.d.ts +2 -0
  22. package/dist/types/patches/workerPool/argumentCapture.d.ts +47 -0
  23. package/dist/types/patches/workerPool/index.d.ts +19 -0
  24. package/dist/types/patches/workerPool/patchCrypto.d.ts +9 -0
  25. package/dist/types/patches/workerPool/patchDns.d.ts +10 -0
  26. package/dist/types/patches/workerPool/patchFs.d.ts +9 -0
  27. package/dist/types/patches/workerPool/patchZlib.d.ts +9 -0
  28. package/dist/types/patches/workerPool/workerPoolTypes.d.ts +70 -0
  29. package/dist/types/plugins/funcspanWebpackPlugin.d.ts +20 -0
  30. package/dist/types/plugins/workerPoolTransformer.d.ts +42 -0
  31. package/dist/types/requestUtils.d.ts +1 -0
  32. package/dist/types/runtime/register.d.ts +56 -0
  33. package/dist/types/worker-pool-capture.d.ts +9 -0
  34. package/dist/types/workerPoolConfig.d.ts +22 -0
  35. package/dist/types/workerPoolSpanCapture.d.ts +36 -0
  36. package/dist/worker-pool-capture.cjs +1 -0
  37. package/dist/worker-pool-capture.mjs +4 -0
  38. package/dist/workerPoolSpanCapture-BOnYC4s3.js +705 -0
  39. package/dist/workerPoolSpanCapture-CNEouInA.cjs +83 -0
  40. package/package.json +17 -1
  41. package/dist/funcSpanTransformer-CTddGtUV.cjs +0 -1
  42. package/dist/funcSpanTransformer-coYDqcrs.js +0 -136
  43. package/dist/source-map-Cr6YkjTd.js +0 -631
  44. package/dist/source-map-rHHEdpre.cjs +0 -1
@@ -1,262 +1,25 @@
1
- var Ge = Object.defineProperty;
2
- var ve = (o, e, t) => e in o ? Ge(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
- var C = (o, e, t) => ve(o, typeof e != "symbol" ? e + "" : e, t);
4
- import { AsyncLocalStorage as ie } from "async_hooks";
5
- import * as k from "fs";
6
- import { readFileSync as pe } from "fs";
7
- import { s as he } from "./source-map-Cr6YkjTd.js";
8
- import { Worker as Ne } from "worker_threads";
9
- import * as v from "path";
10
- import { glob as Be } from "glob";
11
- const Z = [];
12
- for (let o = 0; o < 256; ++o) Z.push((o + 256).toString(16).slice(1));
13
- let O;
14
- const We = new Uint8Array(16), re = { randomUUID: typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto) };
15
- function R(o, e, t) {
16
- if (re.randomUUID && !o) return re.randomUUID();
17
- const n = (o = o || {}).random ?? o.rng?.() ?? (function() {
18
- if (!O) {
19
- if (typeof crypto > "u" || !crypto.getRandomValues) throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
20
- O = crypto.getRandomValues.bind(crypto);
21
- }
22
- return O(We);
23
- })();
24
- if (n.length < 16) throw new Error("Random bytes length must be >= 16");
25
- return n[6] = 15 & n[6] | 64, n[8] = 63 & n[8] | 128, (function(i, s = 0) {
26
- return (Z[i[s + 0]] + Z[i[s + 1]] + Z[i[s + 2]] + Z[i[s + 3]] + "-" + Z[i[s + 4]] + Z[i[s + 5]] + "-" + Z[i[s + 6]] + Z[i[s + 7]] + "-" + Z[i[s + 8]] + Z[i[s + 9]] + "-" + Z[i[s + 10]] + Z[i[s + 11]] + Z[i[s + 12]] + Z[i[s + 13]] + Z[i[s + 14]] + Z[i[s + 15]]).toLowerCase();
27
- })(n);
28
- }
29
- class Fe {
30
- constructor(e) {
31
- C(this, "apiKey");
32
- C(this, "apiGraphqlEndpoint");
33
- C(this, "sfDebug");
34
- C(this, "serviceIdentifier");
35
- C(this, "serviceVersion");
36
- C(this, "serviceUUID");
37
- C(this, "serviceAdditionalMetadata");
38
- C(this, "profilingModeEnabled");
39
- C(this, "profilingMaxDepth");
40
- C(this, "profilingMaxVariableSizeKb");
41
- C(this, "domainsToNotPropagateHeadersTo");
42
- C(this, "nodeModulesToCollectLocalVariablesOn");
43
- C(this, "printConfigurationStatuses");
44
- C(this, "logLevel");
45
- C(this, "stackDepthLocals");
46
- C(this, "stackDepthCodeTraceDepth");
47
- C(this, "packageLibraryType");
48
- C(this, "version");
49
- C(this, "gitSha");
50
- C(this, "_serviceIdentificationReceived", !1);
51
- this.apiKey = e.apiKey, this.apiGraphqlEndpoint = e?.apiGraphqlEndpoint || process.env.SAILFISH_GRAPHQL_ENDPOINT || "https://api-service.sailfishqa.com/graphql/", this.sfDebug = e?.debug === !0 || process.env.SF_DEBUG === "true", this.serviceIdentifier = e?.serviceIdentifier || process.env.SERVICE_IDENTIFIER, this.serviceUUID = R(), this.serviceVersion = e?.serviceVersion || process.env.SERVICE_VERSION, this.gitSha = e?.gitSha || process.env.GIT_SHA || process.env.VERCEL_GIT_COMMIT_SHA, this.serviceAdditionalMetadata = e?.serviceAdditionalMetadata || {}, this.profilingModeEnabled = e?.profilingModeEnabled ?? !1, this.profilingMaxDepth = e?.profilingMaxDepth ?? 5, this.profilingMaxVariableSizeKb = e?.profilingMaxVariableSizeKb ?? 25, this.domainsToNotPropagateHeadersTo = e?.domainsToNotPropagateHeadersTo || [], this.nodeModulesToCollectLocalVariablesOn = e?.nodeModulesToCollectLocalVariablesOn || ["_all_"], this.printConfigurationStatuses = process.env.PRINT_CONFIGURATION_STATUSES || "true", this.logLevel = process.env.LOG_LEVEL || "INFO", this.stackDepthLocals = process.env.SAILFISH_EXCEPTION_STACK_DEPTH_LOCALS !== void 0 ? parseInt(process.env.SAILFISH_EXCEPTION_STACK_DEPTH_LOCALS, 10) : 5, isNaN(this.stackDepthLocals) && (this.stackDepthLocals = -1), this.stackDepthCodeTraceDepth = process.env.SAILFISH_EXCEPTION_STACK_DEPTH_CODE_TRACE_DEPTH !== void 0 ? parseInt(process.env.SAILFISH_EXCEPTION_STACK_DEPTH_CODE_TRACE_DEPTH, 10) : -1, isNaN(this.stackDepthCodeTraceDepth) && (this.stackDepthCodeTraceDepth = -1), this.packageLibraryType = "JS/TS BACKEND", this.version = this.getPackageVersion();
52
- }
53
- getPackageVersion() {
54
- return "0.1.15";
55
- }
56
- get serviceIdentificationReceived() {
57
- return this._serviceIdentificationReceived;
58
- }
59
- setServiceIdentificationReceived(e) {
60
- this._serviceIdentificationReceived = e;
61
- }
62
- }
63
- const me = Symbol.for("sailfish.sf_config");
64
- function z() {
65
- return globalThis[me];
66
- }
67
- function Ve(o) {
68
- const e = z();
69
- if (e) return { config: e };
70
- const t = new Fe(o);
71
- return (function(n) {
72
- globalThis[me] = n;
73
- })(t), t.sfDebug && console.log("[[getOrCreateConfig]] Created global config:", t), { config: t };
74
- }
75
- function l() {
76
- const o = z();
77
- if (!o) throw new Error("Configuration has not been initialized. Call getOrCreateConfig(options) first.");
78
- return o;
79
- }
80
- const ae = Symbol.for("sf.ctx.storeAls"), W = globalThis, P = W[ae] ?? (W[ae] = new ie()), Ae = ["identitytoolkit.googleapis.com", "t.co", "*.twitter.com", "*.gravatar.com", "*.googleapis.com", "*.amazonaws.com", "*.smooch.io", "*.zendesk.com"], ce = Symbol.for("sf.ctx.als"), K = W[ce] ?? (W[ce] = new ie()), ge = Symbol.for("sf.ctx.sessionRegistry"), Y = W[ge] ?? (W[ge] = /* @__PURE__ */ new Map()), E = { handledExceptions: /* @__PURE__ */ new Set(), reentrancyGuardLoggingActive: !1, reentrancyGuardLoggingPreActive: !1, reentrancyGuardPrintActive: !1, reentrancyGuardPrintPreActive: !1, reentrancyGuardExceptionActive: !1, reentrancyGuardExceptionPreActive: !1, excludedDomains: new Set(Ae), supportedDomains: /* @__PURE__ */ new Set() }, V = class V {
81
- constructor() {
82
- }
83
- current() {
84
- return P.getStore();
85
- }
86
- ensureStore() {
87
- const e = this.current();
88
- if (e) return e;
89
- const t = /* @__PURE__ */ new Map();
90
- return P.enterWith(t), t;
91
- }
92
- runWith(e, t) {
93
- const n = this.current() ?? /* @__PURE__ */ new Map(), i = new Map(n);
94
- for (const [s, g] of Object.entries(e)) i.set(s, g);
95
- return P.run(i, t);
96
- }
97
- static getInstance() {
98
- return W[V.GLOBAL_MANAGER_SYMBOL] || (W[V.GLOBAL_MANAGER_SYMBOL] = new V()), W[V.GLOBAL_MANAGER_SYMBOL];
99
- }
100
- getCurrentContext() {
101
- return K.getStore() || E;
102
- }
103
- setCurrentContext(e) {
104
- const t = K.getStore() || E;
105
- K.enterWith({ ...t, ...e });
106
- }
107
- ensureSession(e) {
108
- let t = Y.get(e);
109
- return t || (t = { ...E }, Y.set(e, t)), t;
110
- }
111
- getContextFor(e) {
112
- return Y.get(e) ?? E;
113
- }
114
- updateContextFor(e, t) {
115
- const n = this.ensureSession(e);
116
- Y.set(e, { ...n, ...t });
117
- }
118
- runWithSession(e, t) {
119
- const n = { ...this.ensureSession(e) };
120
- return K.run(n, t);
121
- }
122
- deleteSession(e) {
123
- Y.delete(e);
124
- }
125
- getTraceId() {
126
- return this.getCurrentContext().traceId;
127
- }
128
- getPageVisitUUID() {
129
- return this.getCurrentContext().pageVisitUUID;
130
- }
131
- setTraceId(e) {
132
- this.setCurrentContext({ traceId: e });
133
- }
134
- setPageVisitUUID(e) {
135
- this.setCurrentContext({ pageVisitUUID: e });
136
- }
137
- getCurrentFunctionSpanId() {
138
- return this.getCurrentContext().currentFunctionSpanId;
139
- }
140
- setCurrentFunctionSpanId(e) {
141
- this.setCurrentContext({ currentFunctionSpanId: e });
142
- }
143
- clearCurrentFunctionSpanId() {
144
- this.setCurrentContext({ currentFunctionSpanId: void 0 });
145
- }
146
- getOrSetSfTraceId(e, t = !1) {
147
- let n = this.getTraceId();
148
- return n || (n = e || (t ? R() : `nonsession-applogs-v3/${l().apiKey}/${R()}`), this.setTraceId(n), l().sfDebug && console.log(" Created new trace ID:", n), n);
149
- }
150
- getOrSetPageVisitUUID() {
151
- let e = this.getPageVisitUUID();
152
- return e || (e = R(), this.setPageVisitUUID(e), l().sfDebug && console.log(" Created new page visit UUID:", e), e);
153
- }
154
- getHandledExceptions() {
155
- return this.getCurrentContext().handledExceptions;
156
- }
157
- markExceptionHandled(e) {
158
- const t = this.getHandledExceptions();
159
- t.add(e), this.setCurrentContext({ handledExceptions: t });
160
- }
161
- hasHandledException(e) {
162
- return this.getHandledExceptions().has(e);
163
- }
164
- resetHandledExceptions() {
165
- this.setCurrentContext({ handledExceptions: /* @__PURE__ */ new Set() });
166
- }
167
- getExcludedDomains() {
168
- return this.getCurrentContext().excludedDomains;
169
- }
170
- getSupportedDomains() {
171
- return this.getCurrentContext().supportedDomains;
172
- }
173
- addSupportedDomains(e) {
174
- this.getCurrentContext().supportedDomains.add(e.toLowerCase().trim());
175
- }
176
- setTraceIdFor(e, t) {
177
- this.updateContextFor(e, { traceId: t });
178
- }
179
- setPageVisitUUIDFor(e, t) {
180
- this.updateContextFor(e, { pageVisitUUID: t });
181
- }
182
- };
183
- C(V, "GLOBAL_MANAGER_SYMBOL", Symbol.for("sf.ctx.manager"));
184
- let G = V;
185
- function it(o) {
186
- const e = { ...G.getInstance().getCurrentContext() };
187
- K.run(e, () => {
188
- o();
189
- });
190
- }
191
- function M() {
192
- return G.getInstance().getCurrentFunctionSpanId();
193
- }
194
- class w {
195
- constructor() {
196
- C(this, "apiKey");
197
- C(this, "endpoint");
198
- C(this, "queryType", "mutation");
199
- C(this, "operationName", "");
200
- C(this, "serviceUUID", l().serviceUUID);
201
- C(this, "contextManager");
202
- this.apiKey = l().apiKey, this.endpoint = l().apiGraphqlEndpoint, this.contextManager = G.getInstance();
203
- }
204
- get queryName() {
205
- return this.operationName ? this.operationName.charAt(0).toLowerCase() + this.operationName.slice(1) : "";
206
- }
207
- getDefaultVariables() {
208
- const e = Date.now().toString(), t = this.contextManager.getOrSetSfTraceId(), n = this.contextManager.getCurrentFunctionSpanId();
209
- return { apiKey: this.apiKey, serviceUuid: this.serviceUUID, sessionId: t, timestampMs: e, parentSpanId: n };
210
- }
211
- getVariables(e = {}) {
212
- return { ...this.getDefaultVariables(), ...e };
213
- }
214
- setOperationName(e) {
215
- this.operationName = e;
216
- }
217
- setEndpoint(e) {
218
- this.endpoint = e;
219
- }
220
- setServiceUUID(e) {
221
- this.serviceUUID = e;
222
- }
223
- }
224
- const we = fetch;
225
- async function F(o, e, t, n) {
226
- try {
227
- const i = l();
228
- let s;
229
- try {
230
- s = JSON.stringify({ query: t, variables: n, operationName: e });
231
- } catch {
232
- s = JSON.stringify({ query: t, operationName: e });
233
- }
234
- we(o, { method: "POST", headers: { "Content-Type": "application/json" }, body: s }).then(async (g) => {
235
- if (!g.ok) return void (i.sfDebug && console.error(`GraphQL request failed with status ${g.status} for ${e}`));
236
- const r = await g.json();
237
- r.errors?.length ? (function(a, c, d) {
238
- const I = a && typeof a == "object" && !Array.isArray(a) ? Object.keys(a)[0] : void 0;
239
- console.error(I === "identifyServiceDetails" ? `IdentifyServiceDetails NOT sent successfully for service: UUID=${d.serviceUUID}` : `GraphQL request failed with errors: ${JSON.stringify(c)} for operation key ${I}`);
240
- })(r.data, r.errors, i) : i.sfDebug && (function(a, c, d) {
241
- const I = a && typeof a == "object" && !Array.isArray(a) ? Object.keys(a)[0] : void 0, h = a[I] || !1;
242
- I === "identifyServiceDetails" && (d.setServiceIdentificationReceived(h), l().sfDebug && console.log(`IdentifyServiceDetails sent successfully for service: UUID=${d.serviceUUID}; serviceIdentificationReceived=${I === "identifyServiceDetails" ? h : "N/A"}`));
243
- })(r.data, 0, i);
244
- }).catch((g) => {
245
- i.sfDebug && (console.error(`[RequestUtils] Fetch error for ${e} to ${o}:`, g), g.cause && console.error("[RequestUtils] Error cause:", g.cause));
246
- });
247
- } catch (i) {
248
- l().sfDebug && console.error("Error sending data to GraphQL server:", i);
249
- }
250
- }
251
- class X extends w {
1
+ var Ae = Object.defineProperty;
2
+ var fe = (o, e, t) => e in o ? Ae(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t;
3
+ var A = (o, e, t) => fe(o, typeof e != "symbol" ? e + "" : e, t);
4
+ import { B as F, g as d, n as W, C as N, s as ye, a as Ze, D as Ge, b as le, p as de, v as Ie, d as $, e as ue, f as Se, m as R, c as _, h as Be, i as X, j as We, k as Ce, t as E, F as ve } from "./workerPoolSpanCapture-BOnYC4s3.js";
5
+ import { r as Ct } from "./workerPoolSpanCapture-BOnYC4s3.js";
6
+ import * as L from "fs";
7
+ import { readFileSync as pe, appendFileSync as Ne } from "fs";
8
+ import { s as me } from "./funcSpanTransformer-sqmZLAcs.js";
9
+ import { t as mt } from "./funcSpanTransformer-sqmZLAcs.js";
10
+ import { Worker as Fe, threadId as J } from "worker_threads";
11
+ import { createRequire as we } from "node:module";
12
+ import * as G from "path";
13
+ import { glob as Ve } from "glob";
14
+ class Y extends F {
252
15
  constructor() {
253
16
  super(), this.setOperationName("IdentifyServiceDetails");
254
17
  }
255
18
  async doSend(e) {
256
- if (!l().serviceIdentificationReceived) try {
19
+ if (!d().serviceIdentificationReceived) try {
257
20
  this.send();
258
21
  } catch (t) {
259
- l().sfDebug && console.error(" Error during service identification:", t);
22
+ d().sfDebug && console.error(" Error during service identification:", t);
260
23
  }
261
24
  }
262
25
  async send() {
@@ -284,8 +47,8 @@ class X extends w {
284
47
  gitSha: $gitSha,
285
48
  )
286
49
  }
287
- `, t = this.getVariables({ serviceIdentifier: l().serviceIdentifier, serviceVersion: l().serviceVersion, library: l().packageLibraryType, version: l().version, serviceAdditionalMetadata: l().serviceAdditionalMetadata, gitSha: l().gitSha || "" });
288
- F(this.endpoint, this.operationName, e, t);
50
+ `, t = this.getVariables({ serviceIdentifier: d().serviceIdentifier, serviceVersion: d().serviceVersion, library: d().packageLibraryType, version: d().version, serviceAdditionalMetadata: d().serviceAdditionalMetadata, gitSha: d().gitSha || "" });
51
+ W(this.endpoint, this.operationName, e, t);
289
52
  }
290
53
  }
291
54
  function He(o) {
@@ -295,31 +58,31 @@ function He(o) {
295
58
  return !1;
296
59
  }
297
60
  }
298
- class Re extends w {
61
+ class Ye extends F {
299
62
  constructor() {
300
63
  super();
301
- C(this, "serviceIdentifier", new X());
64
+ A(this, "serviceIdentifier", new Y());
302
65
  this.setOperationName("CollectMetadata");
303
66
  }
304
67
  async sendAppIdentifier() {
305
68
  this.serviceIdentifier.doSend({});
306
69
  }
307
- async doSend(t, n, i, s) {
308
- this.sendAppIdentifier(), this.send(t, n, i, s);
70
+ async doSend(t, s, n, i) {
71
+ this.sendAppIdentifier(), this.send(t, s, n, i);
309
72
  }
310
- async send(t, n, i, s) {
311
- if (!n && !s) throw new Error('Must pass in either traits or traits_json to "add_or_update_traits"');
73
+ async send(t, s, n, i) {
74
+ if (!s && !i) throw new Error('Must pass in either traits or traits_json to "add_or_update_traits"');
312
75
  let g = [];
313
- if (!s) {
314
- const a = (function(c) {
315
- const d = {}, I = [];
316
- if (c) for (const [h, p] of Object.entries(c)) He(p) ? d[h] = p : I.push(h);
317
- return { traitsJson: JSON.stringify(d), excludedFields: I };
318
- })(n);
319
- s = a.traitsJson, g = a.excludedFields;
76
+ if (!i) {
77
+ const c = (function(a) {
78
+ const l = {}, I = [];
79
+ if (a) for (const [p, C] of Object.entries(a)) He(C) ? l[p] = C : I.push(p);
80
+ return { traitsJson: JSON.stringify(l), excludedFields: I };
81
+ })(s);
82
+ i = c.traitsJson, g = c.excludedFields;
320
83
  }
321
- const r = this.getVariables({ userId: t, traitsJson: s, excludedFields: g, override: i, library: l().packageLibraryType, version: l().version });
322
- F(this.endpoint, this.operationName, this.getQuery(), r);
84
+ const r = this.getVariables({ userId: t, traitsJson: i, excludedFields: g, override: n, library: d().packageLibraryType, version: d().version });
85
+ W(this.endpoint, this.operationName, this.getQuery(), r);
323
86
  }
324
87
  getQuery() {
325
88
  return `
@@ -329,23 +92,23 @@ class Re extends w {
329
92
  `;
330
93
  }
331
94
  }
332
- class be {
95
+ class he {
333
96
  constructor(e) {
334
- C(this, "metadataTransmitter");
335
- this.apiKey = e, this.metadataTransmitter = new Re();
97
+ A(this, "metadataTransmitter");
98
+ this.apiKey = e, this.metadataTransmitter = new Ye();
336
99
  }
337
- identify(e, t, n, i = !1) {
338
- t || n ? this.addOrUpdateMetadata(e, t, n, i) : this.addOrUpdateMetadata(e, {}, void 0, i);
100
+ identify(e, t, s, n = !1) {
101
+ t || s ? this.addOrUpdateMetadata(e, t, s, n) : this.addOrUpdateMetadata(e, {}, void 0, n);
339
102
  }
340
- addOrUpdateMetadata(e, t = {}, n, i = !1) {
341
- if (!t && !n) throw new Error('Must pass in either traits or traitsJson to "addOrUpdateMetadata"');
342
- l().sfDebug && console.log(" [[DEBUG - addOrUpdateMetadata]] Starting operation"), l().sfDebug && console.log(" addOrUpdateMetadata...SENDING DATA...", e, t, n), this.metadataTransmitter.doSend(e, t, i, n);
103
+ addOrUpdateMetadata(e, t = {}, s, n = !1) {
104
+ if (!t && !s) throw new Error('Must pass in either traits or traitsJson to "addOrUpdateMetadata"');
105
+ d().sfDebug && console.log(" [[DEBUG - addOrUpdateMetadata]] Starting operation"), d().sfDebug && console.log(" addOrUpdateMetadata...SENDING DATA...", e, t, s), this.metadataTransmitter.doSend(e, t, n, s);
343
106
  }
344
107
  }
345
- class oe extends w {
108
+ class Q extends F {
346
109
  constructor() {
347
110
  super();
348
- C(this, "serviceIdentifier", new X());
111
+ A(this, "serviceIdentifier", new Y());
349
112
  }
350
113
  async sendAppIdentifier() {
351
114
  this.serviceIdentifier.doSend({});
@@ -355,10 +118,10 @@ class oe extends w {
355
118
  }
356
119
  async send(t) {
357
120
  try {
358
- const n = Array.isArray(t) ? t : [t, "default"], i = this.getVariables({ contents: n[0], level: n[1] });
359
- F(this.endpoint, this.operationName, this.getQuery(), i);
360
- } catch (n) {
361
- l().sfDebug && console.error("🚨 Error in send():", n);
121
+ const s = Array.isArray(t) ? t : [t, "default"], n = this.getVariables({ contents: s[0], level: s[1] });
122
+ W(this.endpoint, this.operationName, this.getQuery(), n);
123
+ } catch (s) {
124
+ d().sfDebug && console.error("🚨 Error in send():", s);
362
125
  }
363
126
  }
364
127
  getQuery() {
@@ -385,121 +148,121 @@ class oe extends w {
385
148
  `;
386
149
  }
387
150
  }
388
- const N = {};
389
- class T {
390
- constructor({ file: e, line: t, function: n, code: i, locals: s = {}, offender: g = !1, column: r }) {
391
- C(this, "file");
392
- C(this, "line");
393
- C(this, "function");
394
- C(this, "code");
395
- C(this, "locals");
396
- C(this, "offender");
397
- C(this, "column");
398
- this.file = e, this.line = t, this.function = n, this.code = i, this.locals = s, this.offender = g, this.column = r;
151
+ const S = {};
152
+ class V {
153
+ constructor({ file: e, line: t, function: s, code: n, locals: i = {}, offender: g = !1, column: r }) {
154
+ A(this, "file");
155
+ A(this, "line");
156
+ A(this, "function");
157
+ A(this, "code");
158
+ A(this, "locals");
159
+ A(this, "offender");
160
+ A(this, "column");
161
+ this.file = e, this.line = t, this.function = s, this.code = n, this.locals = i, this.offender = g, this.column = r;
399
162
  }
400
163
  toDict() {
401
- const e = { file: this.file, line: this.line, function: this.function, code: this.code, locals: Object.fromEntries(Object.entries(this.locals).map(([t, n]) => [t, String(n)])) };
164
+ const e = { file: this.file, line: this.line, function: this.function, code: this.code, locals: Object.fromEntries(Object.entries(this.locals).map(([t, s]) => [t, String(s)])) };
402
165
  return this.offender && (e.offender = this.offender), this.column !== void 0 && (e.column = this.column), e;
403
166
  }
404
167
  toJson() {
405
168
  return JSON.stringify(this.toDict());
406
169
  }
407
170
  }
408
- class L {
171
+ class k {
409
172
  static encode(e) {
410
- return e instanceof T ? e.toDict() : Array.isArray(e) ? e.map((t) => L.encode(t)) : typeof e == "object" && e !== null ? JSON.stringify(e) : e;
173
+ return e instanceof V ? e.toDict() : Array.isArray(e) ? e.map((t) => k.encode(t)) : typeof e == "object" && e !== null ? JSON.stringify(e) : e;
411
174
  }
412
175
  static stringify(e) {
413
- return JSON.stringify(L.encode(e), (t, n) => n instanceof T ? n.toDict() : n);
176
+ return JSON.stringify(k.encode(e), (t, s) => s instanceof V ? s.toDict() : s);
414
177
  }
415
178
  }
416
- let B, U = 0;
417
- function Ye(o) {
418
- l().sfDebug && console.log("Initializing Exception Interceptor...");
179
+ let B, w = 0;
180
+ function Re(o) {
181
+ d().sfDebug && console.log("Initializing Exception Interceptor...");
419
182
  try {
420
183
  const r = (function() {
421
184
  if (B !== void 0) return B;
422
- const a = process.env || {}, c = Ie(a.SF_IS_LOCAL);
423
- if (c !== void 0) return B = c;
424
- const d = (a.SF_ENV || a.NODE_ENV || "").toLowerCase();
425
- if (["local", "dev", "development"].includes(d)) return B = !0;
426
- if (["KUBERNETES_SERVICE_HOST", "AWS_EXECUTION_ENV", "ECS_CONTAINER_METADATA_URI", "ECS_CONTAINER_METADATA_URI_V4", "GAE_ENV", "K_SERVICE", "GOOGLE_CLOUD_PROJECT", "WEBSITE_INSTANCE_ID", "VERCEL", "NETLIFY", "DYNO", "RENDER", "FLY_APP_NAME", "RAILWAY_STATIC_URL", "CF_PAGES", "CLOUDFLARE"].some((h) => !!a[h])) return B = !1;
427
- const I = (N.hostname?.() || a.HOSTNAME || "").toLowerCase();
185
+ const c = process.env || {}, a = ne(c.SF_IS_LOCAL);
186
+ if (a !== void 0) return B = a;
187
+ const l = (c.SF_ENV || c.NODE_ENV || "").toLowerCase();
188
+ if (["local", "dev", "development"].includes(l)) return B = !0;
189
+ if (["KUBERNETES_SERVICE_HOST", "AWS_EXECUTION_ENV", "ECS_CONTAINER_METADATA_URI", "ECS_CONTAINER_METADATA_URI_V4", "GAE_ENV", "K_SERVICE", "GOOGLE_CLOUD_PROJECT", "WEBSITE_INSTANCE_ID", "VERCEL", "NETLIFY", "DYNO", "RENDER", "FLY_APP_NAME", "RAILWAY_STATIC_URL", "CF_PAGES", "CLOUDFLARE"].some((p) => !!c[p])) return B = !1;
190
+ const I = (S.hostname?.() || c.HOSTNAME || "").toLowerCase();
428
191
  return I === "localhost" || I.endsWith(".local") || I.includes("local") ? B = !0 : B = !1;
429
192
  })();
430
- o?.setSupplementalFields?.({ isFromLocalService: r }), (async function(a) {
431
- if (de) return;
432
- de = !0;
433
- const c = process.env || {};
434
- if (Ie(c.SF_IS_LOCAL) === void 0)
193
+ o?.setSupplementalFields?.({ isFromLocalService: r }), (async function(c) {
194
+ if (te) return;
195
+ te = !0;
196
+ const a = process.env || {};
197
+ if (ne(a.SF_IS_LOCAL) === void 0)
435
198
  try {
436
- await (async function(d) {
437
- const I = j("http://169.254.169.254/latest/meta-data/", {}, d), h = j("http://metadata.google.internal/computeMetadata/v1/instance/", { "Metadata-Flavor": "Google" }, d), p = j("http://169.254.169.254/metadata/instance?api-version=2021-02-01", { Metadata: "true" }, d);
438
- return (await Promise.allSettled([I, h, p])).some((u) => u.status === "fulfilled" && (u.value === "ok" || u.value === "http_error"));
439
- })(150) && B && (B = !1, a?.setSupplementalFields?.({ isFromLocalService: !1 }));
199
+ await (async function(l) {
200
+ const I = D("http://169.254.169.254/latest/meta-data/", {}, l), p = D("http://metadata.google.internal/computeMetadata/v1/instance/", { "Metadata-Flavor": "Google" }, l), C = D("http://169.254.169.254/metadata/instance?api-version=2021-02-01", { Metadata: "true" }, l);
201
+ return (await Promise.allSettled([I, p, C])).some((u) => u.status === "fulfilled" && (u.value === "ok" || u.value === "http_error"));
202
+ })(150) && B && (B = !1, c?.setSupplementalFields?.({ isFromLocalService: !1 }));
440
203
  } catch {
441
204
  }
442
205
  })(o).catch(() => {
443
206
  });
444
207
  } catch {
445
208
  }
446
- const e = new Ne(new URL("data:application/javascript;base64,aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gImluc3BlY3Rvci9wcm9taXNlcyI7CmltcG9ydCB7IHBhcmVudFBvcnQsIHdvcmtlckRhdGEgfSBmcm9tICJ3b3JrZXJfdGhyZWFkcyI7CgpnbG9iYWwuc2ZEZWJ1ZyA9IHVuZGVmaW5lZDsKZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMgPSB1bmRlZmluZWQ7Cmdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSB1bmRlZmluZWQ7CgovKioKICogUHJvY2Vzc2VzIGNhbGwgZnJhbWVzIGZyb20gYW4gZXhjZXB0aW9uIGFuZCBwb3N0cyB0aGVtIHZpYSB0aGUgV29ya2Vy4oCZcyBwYXJlbnRQb3J0LgogKgogKiBAcGFyYW0gc2Vzc2lvbiAtIFRoZSBEZXZUb29scyBzZXNzaW9uIG9yIHNpbWlsYXIgb2JqZWN0IHlvdSB1c2UgdG8gcXVlcnkgZm9yIHNjcmlwdCBzb3VyY2VzLgogKiBAcGFyYW0gY2FsbEZyYW1lcyAtIEFuIGFycmF5IG9mIGNhbGwgZnJhbWUgb2JqZWN0cy4KICogQHBhcmFtIGRlc2NyaXB0aW9uTGluZXMgLSBBbiBhcnJheSBvZiBsaW5lcyBmcm9tIHRoZSBlcnJvcuKAmXMgZGVzY3JpcHRpb24sIGVhY2ggdHlwaWNhbGx5IGJlZ2lubmluZyB3aXRoICJhdCAiLgogKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0KICovCmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzQ2FsbEZyYW1lcyhzZXNzaW9uLCBjYWxsRnJhbWVzLCBkZXNjcmlwdGlvbkxpbmVzKSB7CiAgLyoqCiAgICogTGltaXQgdGhlIGNhbGwgZnJhbWVzIHRvIHRoZSBtYXhpbXVtIGRlcHRoIHNwZWNpZmllZCBieSBnbG9iYWwuc3RhY2tEZXB0aExvY2Fscy4KICAgKiBUaGlzIGFzc3VtZXMgdGhhdCBnbG9iYWwuc3RhY2tEZXB0aExvY2FscyBpcyBkZWZpbmVkIGFzIGEgbnVtYmVyLgogICAqLwogIGNvbnN0IGxpbWl0ZWRDYWxsRnJhbWVzID0gY2FsbEZyYW1lcy5zbGljZSgwLCBnbG9iYWwuc3RhY2tEZXB0aExvY2Fscyk7CgogIGNvbnN0IGZyYW1lcyA9IGF3YWl0IFByb21pc2UuYWxsKAogICAgbGltaXRlZENhbGxGcmFtZXMubWFwKGFzeW5jIChmcmFtZSwgaW5kZXgpID0+IHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCB7IGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIHVybCwgc2NvcGVDaGFpbiB9ID0gZnJhbWU7CiAgICAgICAgLy8gRmluZCB0aGUgbG9jYWwgc2NvcGUsIGlmIGFueQogICAgICAgIGNvbnN0IGxvY2FsU2NvcGUgPSBzY29wZUNoYWluLmZpbmQoKHNjb3BlKSA9PiBzY29wZS50eXBlID09PSAibG9jYWwiKTsKCiAgICAgICAgbGV0IGNvZGUgPSAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgIC8vIFVzZSBlaXRoZXIgdGhlIFVSTCBvciB0aGUgZGVzY3JpcHRpb24gbGluZSBmb3IgZmlsZSByZWZlcmVuY2UKICAgICAgICBsZXQgZmlsZSA9ICIiOwogICAgICAgIGlmICh1cmwgJiYgdXJsLnRyaW0oKSAhPT0gIiIpIHsKICAgICAgICAgIGZpbGUgPSB1cmw7CiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbkxpbmVzW2luZGV4XSkgewogICAgICAgICAgZmlsZSA9IGRlc2NyaXB0aW9uTGluZXNbaW5kZXhdLnRyaW0oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmlsZSA9ICI8dW5rbm93bj4iOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHZhbGlkIGxvY2F0aW9uIGFuZCBzY3JpcHRJZCwgZmV0Y2ggdGhlIGNvZGUgbGluZQogICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5zY3JpcHRJZCkgewogICAgICAgICAgY29uc3Qgc2NyaXB0SWQgPSBsb2NhdGlvbi5zY3JpcHRJZDsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHsgc2NyaXB0U291cmNlIH0gPSBhd2FpdCBzZXNzaW9uLnBvc3QoCiAgICAgICAgICAgICAgIkRlYnVnZ2VyLmdldFNjcmlwdFNvdXJjZSIsCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2NyaXB0SWQsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgY29uc3Qgc291cmNlTGluZXMgPSBzY3JpcHRTb3VyY2Uuc3BsaXQoIlxuIik7CiAgICAgICAgICAgIGNvZGUgPSBzb3VyY2VMaW5lc1tsb2NhdGlvbi5saW5lTnVtYmVyXSB8fCAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIEZhaWxlZCB0byBmZXRjaCBzY3JpcHQgc291cmNlOiIsIGVycik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEZldGNoIGxvY2FsIHZhcmlhYmxlcyBpZiB0aGVyZSdzIGFuIG9iamVjdElkCiAgICAgICAgY29uc3QgbG9jYWxzID0gbG9jYWxTY29wZT8ub2JqZWN0Py5vYmplY3RJZAogICAgICAgICAgPyBhd2FpdCBmZXRjaExvY2FsVmFyaWFibGVzKHNlc3Npb24sIGxvY2FsU2NvcGUub2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgOiB7fTsKCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUgfHwgIjxhbm9ueW1vdXM+IiwKICAgICAgICAgIGxvY2FscywKICAgICAgICAgIGZpbGUsCiAgICAgICAgICBsaW5lOiBsb2NhdGlvbj8ubGluZU51bWJlciB8fCAwLAogICAgICAgICAgY29kZSwKICAgICAgICB9OwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRXJyb3IgcHJvY2Vzc2luZyBjYWxsIGZyYW1lOiIsIGVycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiAiPGVycm9yPiIsCiAgICAgICAgICBsb2NhbHM6IHt9LAogICAgICAgICAgZmlsZTogIjx1bmtub3duPiIsCiAgICAgICAgICBsaW5lOiAwLAogICAgICAgICAgY29kZTogIjxub3QgY2FwdHVyZWQ+IiwKICAgICAgICB9OwogICAgICB9CiAgICB9KSwKICApOwogIC8vIFBvc3QgZXhjZXB0aW9uIGRhdGEKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJleGNlcHRpb24iLCBmcmFtZXMgfSk7Cn0KCi8qKgogKiBIYW5kbGVzIHRoZSAicGF1c2VkIiBzdGF0ZSBvZiB0aGUgZGVidWdnZXIgYW5kIHByb2Nlc3NlcyBleGNlcHRpb25zIG9yIHByb21pc2UgcmVqZWN0aW9ucy4KICogQHBhcmFtIHtTZXNzaW9ufSBzZXNzaW9uIC0gVGhlIGRlYnVnZ2luZyBzZXNzaW9uIGluc3RhbmNlLgogKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zIC0gUGFyYW1ldGVycyBmcm9tIHRoZSAicGF1c2VkIiBldmVudC4KICovCmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVBhdXNlZChzZXNzaW9uLCBwYXJhbXMpIHsKICBjb25zdCB7IHJlYXNvbiwgZGF0YSwgY2FsbEZyYW1lcyB9ID0gcGFyYW1zOwoKICBpZiAocmVhc29uICE9PSAiZXhjZXB0aW9uIiAmJiByZWFzb24gIT09ICJwcm9taXNlUmVqZWN0aW9uIikgewogICAgcmV0dXJuOwogIH0KCiAgLy8gRGVmaW5lIHJlZ2V4IHBhdHRlcm5zIHRvIGlkZW50aWZ5IG5vbi1hcHBsaWNhdGlvbiBzb3VyY2UgZXJyb3JzLgogIGNvbnN0IG5vbkFwcFBhdHRlcm5zID0gWwogICAgL25vZGU6aW50ZXJuYWwvLAogICAgL2ludGVybmFsXC8vLAogICAgL25vZGVfbW9kdWxlcy8sCiAgICAvbm9kZTpmcy8sCiAgXTsKCiAgbGV0IGZpcnN0RnJhbWVMaW5lID0gIiI7CiAgbGV0IGRlc2NyaXB0aW9uTGluZXMgPSBbXTsKCiAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEuZGVzY3JpcHRpb24gPT09ICJzdHJpbmciKSB7CiAgICAvLyBTcGxpdCB0aGUgZGVzY3JpcHRpb24gaW50byBsaW5lcyBhbmQgZmlsdGVyIHRvIGtlZXAgb25seSBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggImF0ICIKICAgIGRlc2NyaXB0aW9uTGluZXMgPSBkYXRhLmRlc2NyaXB0aW9uCiAgICAgIC5zcGxpdCgiXG4iKQogICAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCJhdCAiKSk7CgogICAgLy8gVXNlIHRoZSBmaXJzdCBjYWxsIGZyYW1lIGxpbmUgZnJvbSB0aGUgZGVzY3JpcHRpb24gZm9yIGZpbHRlcmluZy4KICAgIGZpcnN0RnJhbWVMaW5lID0gZGVzY3JpcHRpb25MaW5lc1swXSB8fCAiIjsKICAgIGlmICghZmlyc3RGcmFtZUxpbmUpIHsKICAgICAgLy8gSWYsIGZvciBzb21lIHJlYXNvbiwgdGhlcmUncyBubyBmcmFtZSwgYmFpbCBvdXQKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSAibm9uLWFwcCIgZXJyb3IKICAgIGNvbnN0IGVycm9yRnJvbU5vbkFwcCA9IG5vbkFwcFBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+CiAgICAgIHBhdHRlcm4udGVzdChmaXJzdEZyYW1lTGluZS50cmltKCkpLAogICAgKTsKCiAgICAvLyBDb252ZXJ0IGBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uYCB0byBhbiBhcnJheSBmb3Igc2FmZXR5CiAgICBjb25zdCBub2RlTW9kdWxlc0xpc3QgPSBBcnJheS5pc0FycmF5KAogICAgICBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uLAogICAgKQogICAgICA/IGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24KICAgICAgOiBbXTsKICAgIGlmIChlcnJvckZyb21Ob25BcHApIHsKICAgICAgLy8gSWYgdGhlIGVycm9yIGlzIGZyb20gYSBub24tYXBwIHNvdXJjZSwgd2UgaGF2ZSBhIGZldyBzY2VuYXJpb3M6CiAgICAgIGlmIChub2RlTW9kdWxlc0xpc3QuaW5jbHVkZXMoIl9fYWxsX18iKSkgewogICAgICAgIC8vIElmIHRoZSBsaXN0IGluY2x1ZGVzIF9fYWxsX18sIGNhcHR1cmUgbG9jYWwgdmFyaWFibGVzIGZyb20gKmFsbCogbm9kZV9tb2R1bGVzCiAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGlzIGZyb20gbm9uLWFwcCBzb3VyY2UsIGJ1dCBjYXB0dXJpbmcgZHVlIHRvIF9fYWxsX18gcnVsZS4iLAogICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgLy8gQ29udGludWUgKGRvIE5PVCByZXR1cm4pLi4uCiAgICAgIH0gZWxzZSBpZiAobm9kZU1vZHVsZXNMaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAvLyBDaGVjayBpZiB0aGUgZmlyc3QgZnJhbWUgcmVmZXJlbmNlcyBvbmUgb2YgdGhlIG1vZHVsZXMgd2UgYWxsb3cgY2FwdHVyaW5nIGZyb20KICAgICAgICBjb25zdCBpc0Zyb21BbGxvd2VkTm9kZU1vZHVsZSA9IG5vZGVNb2R1bGVzTGlzdC5zb21lKChtb2R1bGVOYW1lKSA9PgogICAgICAgICAgZmlyc3RGcmFtZUxpbmUuaW5jbHVkZXMoYCR7bW9kdWxlTmFtZX1gKSwKICAgICAgICApOwoKICAgICAgICBpZiAoIWlzRnJvbUFsbG93ZWROb2RlTW9kdWxlKSB7CiAgICAgICAgICAvLyBOb3QgZnJvbSBhbiBhbGxvd2VkIG5vZGUgbW9kdWxlID0+IHJldHVybiBlYXJseQogICAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAgICJbV29ya2VyXSBFcnJvciBhcHBlYXJzIHRvIGJlIHRyaWdnZXJlZCBmcm9tIG5vbi1hcHBsaWNhdGlvbiBzb3VyY2VzOyBpZ25vcmluZy4iLAogICAgICAgICAgICApOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBPdGhlcndpc2UsIGl0J3MgZnJvbSBhbiBhbGxvd2VkIG5vZGUgbW9kdWxlLCBzbyBjb250aW51ZQogICAgICB9IGVsc2UgewogICAgICAgIC8vIElmIHRoZSBsaXN0IGlzIGVtcHR5LCBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvciBhbmQgaWdub3JlIG5vbi1hcHBsaWNhdGlvbiBlcnJvcnMKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAiW1dvcmtlcl0gRXJyb3IgYXBwZWFycyB0byBiZSB0cmlnZ2VyZWQgZnJvbSBub24tYXBwbGljYXRpb24gc291cmNlczsgaWdub3JpbmcuIiwKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQoKICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQsIHRoZSBlcnJvciBpcyBlaXRoZXIgZnJvbSBhcHAgY29kZSwgb3IgZnJvbSBhIG5vZGUgbW9kdWxlIGFsbG93ZWQgYnkgdGhlIGxpc3QKICAgIC8vID0+IFByb2NlZWQgd2l0aCBjYXB0dXJpbmcgbG9jYWwgdmFyaWFibGVzLCBldGMuCiAgICBhd2FpdCBwcm9jZXNzQ2FsbEZyYW1lcyhzZXNzaW9uLCBjYWxsRnJhbWVzLCBkZXNjcmlwdGlvbkxpbmVzKTsKICB9IGVsc2UgewogICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YS5kZXNjcmlwdGlvbiBvciBpdCdzIG5vdCBhIHN0cmluZywganVzdCByZXR1cm4KICAgIHJldHVybjsKICB9Cn0KCi8qKgogKiBJbml0aWFsaXplcyB0aGUgZGVidWdnZXIgYW5kIHNldHMgdXAgZXZlbnQgbGlzdGVuZXJzIGZvciBleGNlcHRpb25zIGFuZCBwcm9taXNlIHJlamVjdGlvbnMuCiAqLwphc3luYyBmdW5jdGlvbiBzdGFydERlYnVnZ2VyKCkgewogIHBhcmVudFBvcnQ/LnBvc3RNZXNzYWdlKHsgdHlwZTogIm1lc3NhZ2UiLCByZWFkeVRvR2V0UGFyYW1ldGVyczogdHJ1ZSB9KTsKCiAgbGV0IHJlc29sdmVNZXNzYWdlUHJvbWlzZTsKICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICByZXNvbHZlTWVzc2FnZVByb21pc2UgPSByZXNvbHZlOwogIH0pOwogIGxldCBpc1BhdXNlZCA9IGZhbHNlOwoKICBwYXJlbnRQb3J0Py5vbigibWVzc2FnZSIsIChtZXNzYWdlKSA9PiB7CiAgICB0cnkgewogICAgICBpZiAobWVzc2FnZT8udHlwZSA9PT0gInByb2Nlc3NFeGNlcHRpb24iKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoCiAgICAgICAgbWVzc2FnZT8uc2ZEZWJ1ZyAhPT0gdW5kZWZpbmVkICYmCiAgICAgICAgbWVzc2FnZT8uc3RhY2tEZXB0aExvY2FscyAhPT0gdW5kZWZpbmVkCiAgICAgICkgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5sb2coIlVwZGF0aW5nIGdsb2JhbCBkZWJ1ZyB2YXJpYWJsZXMuLi4iKTsKICAgICAgICB9CgogICAgICAgIGdsb2JhbC5zZkRlYnVnID0gbWVzc2FnZS5zZkRlYnVnOwogICAgICAgIGdsb2JhbC5zdGFja0RlcHRoTG9jYWxzID0gbWVzc2FnZS5zdGFja0RlcHRoTG9jYWxzOwogICAgICAgIGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPQogICAgICAgICAgbWVzc2FnZS5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT247CgogICAgICAgIHJlc29sdmVNZXNzYWdlUHJvbWlzZSgpOwogICAgICB9CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCLinYwgRXJyb3IgaW4gbWVzc2FnZSBoYW5kbGluZzoiLCBlcnJvcik7CiAgICAgIH0KICAgIH0KICB9KTsKCiAgYXdhaXQgbWVzc2FnZVByb21pc2U7CgogIHRyeSB7CiAgICBjb25zdCBzZXNzaW9uID0gbmV3IFNlc3Npb24oKTsKICAgIHNlc3Npb24uY29ubmVjdFRvTWFpblRocmVhZCgpOwoKICAgIHNlc3Npb24ub24oIkRlYnVnZ2VyLnJlc3VtZWQiLCAoKSA9PiB7CiAgICAgIGlzUGF1c2VkID0gZmFsc2U7CiAgICB9KTsKCiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgaXNQYXVzZWQgPSB0cnVlOwogICAgICBoYW5kbGVQYXVzZWQoc2Vzc2lvbiwgZXZlbnQucGFyYW1zKS50aGVuKAogICAgICAgIGFzeW5jICgpID0+IHsKICAgICAgICAgIC8vIEFmdGVyIHRoZSBwYXVzZSB3b3JrIGlzIGNvbXBsZXRlLCByZXN1bWUgZXhlY3V0aW9uIQogICAgICAgICAgaWYgKGlzUGF1c2VkKSB7CiAgICAgICAgICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIucmVzdW1lIik7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhc3luYyAoXykgPT4gewogICAgICAgICAgaWYgKGlzUGF1c2VkKSB7CiAgICAgICAgICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIucmVzdW1lIik7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgKTsKICAgIH0pOwoKICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIuZW5hYmxlIik7CgogICAgY29uc3QgY2FwdHVyZUFsbCA9IHdvcmtlckRhdGEuY2FwdHVyZUFsbEV4Y2VwdGlvbnMgIT09IGZhbHNlOwogICAgYXdhaXQgc2Vzc2lvbi5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIsIHsKICAgICAgc3RhdGU6IGNhcHR1cmVBbGwgPyAiYWxsIiA6ICJ1bmNhdWdodCIsCiAgICB9KTsKICB9IGNhdGNoIChlcnJvcikgewogICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIGVycm9yICIsIGVycm9yKTsKICAgIH0KICB9CgogIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgY29uc29sZS5sb2coIltXb3JrZXJdIERlYnVnZ2VyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwogIH0KfQoKYXN5bmMgZnVuY3Rpb24gdW5yb2xsT2JqZWN0KHNlc3Npb24sIG9iamVjdElkLCBuYW1lLCB2YXJzKSB7CiAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlLAogIH0pOwoKICB2YXJzW25hbWVdID0gcHJvcGVydGllcy5yZXN1bHQKICAgIC5tYXAoKHYpID0+IFt2Lm5hbWUsIHYudmFsdWU/LnZhbHVlXSkKICAgIC5yZWR1Y2UoKG9iaiwgW2tleSwgdmFsXSkgPT4gewogICAgICBvYmpba2V5XSA9IHZhbDsKICAgICAgcmV0dXJuIG9iajsKICAgIH0sIHt9KTsKfQoKYXN5bmMgZnVuY3Rpb24gdW5yb2xsQXJyYXkoc2Vzc2lvbiwgb2JqZWN0SWQsIG5hbWUsIHZhcnMpIHsKICBjb25zdCBwcm9wZXJ0aWVzID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICBvYmplY3RJZDogb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlLAogIH0pOwogIHZhcnNbbmFtZV0gPSBwcm9wZXJ0aWVzLnJlc3VsdAogICAgLmZpbHRlcigodikgPT4gdi5uYW1lICE9PSAibGVuZ3RoIiAmJiAhaXNOYU4ocGFyc2VJbnQodi5uYW1lLCAxMCkpKQogICAgLnNvcnQoKGEsIGIpID0+IHBhcnNlSW50KGEubmFtZSwgMTApIC0gcGFyc2VJbnQoYi5uYW1lLCAxMCkpCiAgICAubWFwKCh2KSA9PiB2LnZhbHVlPy52YWx1ZSk7Cn0KCmZ1bmN0aW9uIHVucm9sbE90aGVyKHByb3AsIHZhcnMpIHsKICBpZiAoIXByb3AudmFsdWUpIHsKICAgIHJldHVybjsKICB9CgogIGlmICgidmFsdWUiIGluIHByb3AudmFsdWUpIHsKICAgIGlmIChwcm9wLnZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQgfHwgcHJvcC52YWx1ZS52YWx1ZSA9PT0gbnVsbCkgewogICAgICB2YXJzW3Byb3AubmFtZV0gPSBgPCR7cHJvcC52YWx1ZS52YWx1ZX0+YDsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhcnNbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUudmFsdWU7CiAgICByZXR1cm47CiAgfQoKICBpZiAoImRlc2NyaXB0aW9uIiBpbiBwcm9wLnZhbHVlICYmIHByb3AudmFsdWUudHlwZSAhPT0gImZ1bmN0aW9uIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gYDwke3Byb3AudmFsdWUuZGVzY3JpcHRpb259PmA7CiAgICByZXR1cm47CiAgfQoKICBpZiAocHJvcC52YWx1ZS50eXBlID09PSAidW5kZWZpbmVkIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gIjx1bmRlZmluZWQ+IjsKICAgIHJldHVybjsKICB9Cn0KCi8qKgogKiBGZXRjaGVzIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QgSUQuCiAqIEBwYXJhbSB7U2Vzc2lvbn0gc2Vzc2lvbiAtIFRoZSBkZWJ1Z2dpbmcgc2Vzc2lvbiBpbnN0YW5jZS4KICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdElkIC0gVGhlIG9iamVjdCBJRCByZXByZXNlbnRpbmcgdGhlIGxvY2FsIHNjb3BlLgogKiBAcmV0dXJucyB7b2JqZWN0fSBBIGtleS12YWx1ZSBtYXAgb2YgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHRoZWlyIHZhbHVlcy4KICovCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9jYWxWYXJpYWJsZXMoc2Vzc2lvbiwgb2JqZWN0SWQpIHsKICBpZiAoIW9iamVjdElkKSByZXR1cm4ge307CgogIHRyeSB7CiAgICBjb25zdCB7IHJlc3VsdCB9ID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICAgIG9iamVjdElkLAogICAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlLAogICAgfSk7CgogICAgY29uc3QgcHJvcGVydGllcyA9IHJlc3VsdDsKICAgIGlmIChwcm9wZXJ0aWVzKSB7CiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHt9OwogICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykgewogICAgICAgIGlmIChwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYgcHJvcD8udmFsdWUuY2xhc3NOYW1lID09PSAiQXJyYXkiKSB7CiAgICAgICAgICBjb25zdCBpZCA9IHByb3AudmFsdWUub2JqZWN0SWQ7CiAgICAgICAgICBhd2FpdCB1bnJvbGxBcnJheShzZXNzaW9uLCBpZCwgcHJvcC5uYW1lLCB2YXJpYWJsZXMpOwogICAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICBwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYKICAgICAgICAgIHByb3A/LnZhbHVlPy5jbGFzc05hbWUgPT09ICJPYmplY3QiCiAgICAgICAgKSB7CiAgICAgICAgICBjb25zdCBpZCA9IHByb3AudmFsdWUub2JqZWN0SWQ7CiAgICAgICAgICBhd2FpdCB1bnJvbGxPYmplY3Qoc2Vzc2lvbiwgaWQsIHByb3AubmFtZSwgdmFyaWFibGVzKTsKICAgICAgICB9IGVsc2UgaWYgKHByb3A/LnZhbHVlKSB7CiAgICAgICAgICB1bnJvbGxPdGhlcihwcm9wLCB2YXJpYWJsZXMpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdmFyaWFibGVzOwogICAgfQogIH0gY2F0Y2ggKGVycikgewogICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIEZhaWxlZCB0byBmZXRjaCBsb2NhbCB2YXJpYWJsZXM6IiwgZXJyKTsKICAgIH0KICAgIHJldHVybiB7fTsKICB9Cn0KCnN0YXJ0RGVidWdnZXIoKS5jYXRjaCgoZXJyb3IpID0+IHsKICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIEZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlcjoiLCBlcnJvcik7CiAgfQp9KTsKCi8vIEtlZXAgdGhlIHdvcmtlciBhbGl2ZQpzZXRJbnRlcnZhbCgoKSA9PiB7fSwgMTAwMDApOwo="), { workerData: { captureAllExceptions: !0 } });
209
+ const e = new Fe(new URL("data:application/javascript;base64,aW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gImluc3BlY3Rvci9wcm9taXNlcyI7CmltcG9ydCB7IHBhcmVudFBvcnQsIHdvcmtlckRhdGEgfSBmcm9tICJ3b3JrZXJfdGhyZWFkcyI7CgpnbG9iYWwuc2ZEZWJ1ZyA9IHVuZGVmaW5lZDsKZ2xvYmFsLnN0YWNrRGVwdGhMb2NhbHMgPSB1bmRlZmluZWQ7Cmdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPSB1bmRlZmluZWQ7CgovKioKICogUHJvY2Vzc2VzIGNhbGwgZnJhbWVzIGZyb20gYW4gZXhjZXB0aW9uIGFuZCBwb3N0cyB0aGVtIHZpYSB0aGUgV29ya2Vy4oCZcyBwYXJlbnRQb3J0LgogKgogKiBAcGFyYW0gc2Vzc2lvbiAtIFRoZSBEZXZUb29scyBzZXNzaW9uIG9yIHNpbWlsYXIgb2JqZWN0IHlvdSB1c2UgdG8gcXVlcnkgZm9yIHNjcmlwdCBzb3VyY2VzLgogKiBAcGFyYW0gY2FsbEZyYW1lcyAtIEFuIGFycmF5IG9mIGNhbGwgZnJhbWUgb2JqZWN0cy4KICogQHBhcmFtIGRlc2NyaXB0aW9uTGluZXMgLSBBbiBhcnJheSBvZiBsaW5lcyBmcm9tIHRoZSBlcnJvcuKAmXMgZGVzY3JpcHRpb24sIGVhY2ggdHlwaWNhbGx5IGJlZ2lubmluZyB3aXRoICJhdCAiLgogKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0KICovCmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzQ2FsbEZyYW1lcyhzZXNzaW9uLCBjYWxsRnJhbWVzLCBkZXNjcmlwdGlvbkxpbmVzKSB7CiAgLyoqCiAgICogTGltaXQgdGhlIGNhbGwgZnJhbWVzIHRvIHRoZSBtYXhpbXVtIGRlcHRoIHNwZWNpZmllZCBieSBnbG9iYWwuc3RhY2tEZXB0aExvY2Fscy4KICAgKiBUaGlzIGFzc3VtZXMgdGhhdCBnbG9iYWwuc3RhY2tEZXB0aExvY2FscyBpcyBkZWZpbmVkIGFzIGEgbnVtYmVyLgogICAqLwogIGNvbnN0IGxpbWl0ZWRDYWxsRnJhbWVzID0gY2FsbEZyYW1lcy5zbGljZSgwLCBnbG9iYWwuc3RhY2tEZXB0aExvY2Fscyk7CgogIGNvbnN0IGZyYW1lcyA9IGF3YWl0IFByb21pc2UuYWxsKAogICAgbGltaXRlZENhbGxGcmFtZXMubWFwKGFzeW5jIChmcmFtZSwgaW5kZXgpID0+IHsKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCB7IGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24sIHVybCwgc2NvcGVDaGFpbiB9ID0gZnJhbWU7CiAgICAgICAgLy8gRmluZCB0aGUgbG9jYWwgc2NvcGUsIGlmIGFueQogICAgICAgIGNvbnN0IGxvY2FsU2NvcGUgPSBzY29wZUNoYWluLmZpbmQoKHNjb3BlKSA9PiBzY29wZS50eXBlID09PSAibG9jYWwiKTsKCiAgICAgICAgbGV0IGNvZGUgPSAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgIC8vIFVzZSBlaXRoZXIgdGhlIFVSTCBvciB0aGUgZGVzY3JpcHRpb24gbGluZSBmb3IgZmlsZSByZWZlcmVuY2UKICAgICAgICBsZXQgZmlsZSA9ICIiOwogICAgICAgIGlmICh1cmwgJiYgdXJsLnRyaW0oKSAhPT0gIiIpIHsKICAgICAgICAgIGZpbGUgPSB1cmw7CiAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdGlvbkxpbmVzW2luZGV4XSkgewogICAgICAgICAgZmlsZSA9IGRlc2NyaXB0aW9uTGluZXNbaW5kZXhdLnRyaW0oKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmlsZSA9ICI8dW5rbm93bj4iOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHZhbGlkIGxvY2F0aW9uIGFuZCBzY3JpcHRJZCwgZmV0Y2ggdGhlIGNvZGUgbGluZQogICAgICAgIGlmIChsb2NhdGlvbiAmJiBsb2NhdGlvbi5zY3JpcHRJZCkgewogICAgICAgICAgY29uc3Qgc2NyaXB0SWQgPSBsb2NhdGlvbi5zY3JpcHRJZDsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHsgc2NyaXB0U291cmNlIH0gPSBhd2FpdCBzZXNzaW9uLnBvc3QoCiAgICAgICAgICAgICAgIkRlYnVnZ2VyLmdldFNjcmlwdFNvdXJjZSIsCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2NyaXB0SWQsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgY29uc3Qgc291cmNlTGluZXMgPSBzY3JpcHRTb3VyY2Uuc3BsaXQoIlxuIik7CiAgICAgICAgICAgIGNvZGUgPSBzb3VyY2VMaW5lc1tsb2NhdGlvbi5saW5lTnVtYmVyXSB8fCAiPG5vdCBjYXB0dXJlZD4iOwogICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIEZhaWxlZCB0byBmZXRjaCBzY3JpcHQgc291cmNlOiIsIGVycik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEZldGNoIGxvY2FsIHZhcmlhYmxlcyBpZiB0aGVyZSdzIGFuIG9iamVjdElkCiAgICAgICAgY29uc3QgbG9jYWxzID0gbG9jYWxTY29wZT8ub2JqZWN0Py5vYmplY3RJZAogICAgICAgICAgPyBhd2FpdCBmZXRjaExvY2FsVmFyaWFibGVzKHNlc3Npb24sIGxvY2FsU2NvcGUub2JqZWN0Lm9iamVjdElkKQogICAgICAgICAgOiB7fTsKCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiBmdW5jdGlvbk5hbWUgfHwgIjxhbm9ueW1vdXM+IiwKICAgICAgICAgIGxvY2FscywKICAgICAgICAgIGZpbGUsCiAgICAgICAgICBsaW5lOiBsb2NhdGlvbj8ubGluZU51bWJlciB8fCAwLAogICAgICAgICAgY29kZSwKICAgICAgICB9OwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5lcnJvcigiW1dvcmtlcl0gRXJyb3IgcHJvY2Vzc2luZyBjYWxsIGZyYW1lOiIsIGVycm9yKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGZ1bmN0aW9uOiAiPGVycm9yPiIsCiAgICAgICAgICBsb2NhbHM6IHt9LAogICAgICAgICAgZmlsZTogIjx1bmtub3duPiIsCiAgICAgICAgICBsaW5lOiAwLAogICAgICAgICAgY29kZTogIjxub3QgY2FwdHVyZWQ+IiwKICAgICAgICB9OwogICAgICB9CiAgICB9KSwKICApOwogIC8vIFBvc3QgZXhjZXB0aW9uIGRhdGEKICBwYXJlbnRQb3J0Py5wb3N0TWVzc2FnZSh7IHR5cGU6ICJleGNlcHRpb24iLCBmcmFtZXMgfSk7Cn0KCi8qKgogKiBIYW5kbGVzIHRoZSAicGF1c2VkIiBzdGF0ZSBvZiB0aGUgZGVidWdnZXIgYW5kIHByb2Nlc3NlcyBleGNlcHRpb25zIG9yIHByb21pc2UgcmVqZWN0aW9ucy4KICogQHBhcmFtIHtTZXNzaW9ufSBzZXNzaW9uIC0gVGhlIGRlYnVnZ2luZyBzZXNzaW9uIGluc3RhbmNlLgogKiBAcGFyYW0ge29iamVjdH0gcGFyYW1zIC0gUGFyYW1ldGVycyBmcm9tIHRoZSAicGF1c2VkIiBldmVudC4KICovCmFzeW5jIGZ1bmN0aW9uIGhhbmRsZVBhdXNlZChzZXNzaW9uLCBwYXJhbXMpIHsKICBjb25zdCB7IHJlYXNvbiwgZGF0YSwgY2FsbEZyYW1lcyB9ID0gcGFyYW1zOwoKICBpZiAocmVhc29uICE9PSAiZXhjZXB0aW9uIiAmJiByZWFzb24gIT09ICJwcm9taXNlUmVqZWN0aW9uIikgewogICAgcmV0dXJuOwogIH0KCiAgLy8gRGVmaW5lIHJlZ2V4IHBhdHRlcm5zIHRvIGlkZW50aWZ5IG5vbi1hcHBsaWNhdGlvbiBzb3VyY2UgZXJyb3JzLgogIGNvbnN0IG5vbkFwcFBhdHRlcm5zID0gWwogICAgL25vZGU6aW50ZXJuYWwvLAogICAgL2ludGVybmFsXC8vLAogICAgL25vZGVfbW9kdWxlcy8sCiAgICAvbm9kZTpmcy8sCiAgXTsKCiAgbGV0IGZpcnN0RnJhbWVMaW5lID0gIiI7CiAgbGV0IGRlc2NyaXB0aW9uTGluZXMgPSBbXTsKCiAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEuZGVzY3JpcHRpb24gPT09ICJzdHJpbmciKSB7CiAgICAvLyBTcGxpdCB0aGUgZGVzY3JpcHRpb24gaW50byBsaW5lcyBhbmQgZmlsdGVyIHRvIGtlZXAgb25seSBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggImF0ICIKICAgIGRlc2NyaXB0aW9uTGluZXMgPSBkYXRhLmRlc2NyaXB0aW9uCiAgICAgIC5zcGxpdCgiXG4iKQogICAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCJhdCAiKSk7CgogICAgLy8gVXNlIHRoZSBmaXJzdCBjYWxsIGZyYW1lIGxpbmUgZnJvbSB0aGUgZGVzY3JpcHRpb24gZm9yIGZpbHRlcmluZy4KICAgIGZpcnN0RnJhbWVMaW5lID0gZGVzY3JpcHRpb25MaW5lc1swXSB8fCAiIjsKICAgIGlmICghZmlyc3RGcmFtZUxpbmUpIHsKICAgICAgLy8gSWYsIGZvciBzb21lIHJlYXNvbiwgdGhlcmUncyBubyBmcmFtZSwgYmFpbCBvdXQKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSAibm9uLWFwcCIgZXJyb3IKICAgIGNvbnN0IGVycm9yRnJvbU5vbkFwcCA9IG5vbkFwcFBhdHRlcm5zLnNvbWUoKHBhdHRlcm4pID0+CiAgICAgIHBhdHRlcm4udGVzdChmaXJzdEZyYW1lTGluZS50cmltKCkpLAogICAgKTsKCiAgICAvLyBDb252ZXJ0IGBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uYCB0byBhbiBhcnJheSBmb3Igc2FmZXR5CiAgICBjb25zdCBub2RlTW9kdWxlc0xpc3QgPSBBcnJheS5pc0FycmF5KAogICAgICBnbG9iYWwubm9kZU1vZHVsZXNUb0NvbGxlY3RMb2NhbFZhcmlhYmxlc09uLAogICAgKQogICAgICA/IGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24KICAgICAgOiBbXTsKICAgIGlmIChlcnJvckZyb21Ob25BcHApIHsKICAgICAgLy8gSWYgdGhlIGVycm9yIGlzIGZyb20gYSBub24tYXBwIHNvdXJjZSwgd2UgaGF2ZSBhIGZldyBzY2VuYXJpb3M6CiAgICAgIGlmIChub2RlTW9kdWxlc0xpc3QuaW5jbHVkZXMoIl9fYWxsX18iKSkgewogICAgICAgIC8vIElmIHRoZSBsaXN0IGluY2x1ZGVzIF9fYWxsX18sIGNhcHR1cmUgbG9jYWwgdmFyaWFibGVzIGZyb20gKmFsbCogbm9kZV9tb2R1bGVzCiAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygKICAgICAgICAgICAgIltXb3JrZXJdIEVycm9yIGlzIGZyb20gbm9uLWFwcCBzb3VyY2UsIGJ1dCBjYXB0dXJpbmcgZHVlIHRvIF9fYWxsX18gcnVsZS4iLAogICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgLy8gQ29udGludWUgKGRvIE5PVCByZXR1cm4pLi4uCiAgICAgIH0gZWxzZSBpZiAobm9kZU1vZHVsZXNMaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAvLyBDaGVjayBpZiB0aGUgZmlyc3QgZnJhbWUgcmVmZXJlbmNlcyBvbmUgb2YgdGhlIG1vZHVsZXMgd2UgYWxsb3cgY2FwdHVyaW5nIGZyb20KICAgICAgICBjb25zdCBpc0Zyb21BbGxvd2VkTm9kZU1vZHVsZSA9IG5vZGVNb2R1bGVzTGlzdC5zb21lKChtb2R1bGVOYW1lKSA9PgogICAgICAgICAgZmlyc3RGcmFtZUxpbmUuaW5jbHVkZXMoYCR7bW9kdWxlTmFtZX1gKSwKICAgICAgICApOwoKICAgICAgICBpZiAoIWlzRnJvbUFsbG93ZWROb2RlTW9kdWxlKSB7CiAgICAgICAgICAvLyBOb3QgZnJvbSBhbiBhbGxvd2VkIG5vZGUgbW9kdWxlID0+IHJldHVybiBlYXJseQogICAgICAgICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAgICJbV29ya2VyXSBFcnJvciBhcHBlYXJzIHRvIGJlIHRyaWdnZXJlZCBmcm9tIG5vbi1hcHBsaWNhdGlvbiBzb3VyY2VzOyBpZ25vcmluZy4iLAogICAgICAgICAgICApOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBPdGhlcndpc2UsIGl0J3MgZnJvbSBhbiBhbGxvd2VkIG5vZGUgbW9kdWxlLCBzbyBjb250aW51ZQogICAgICB9IGVsc2UgewogICAgICAgIC8vIElmIHRoZSBsaXN0IGlzIGVtcHR5LCBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvciBhbmQgaWdub3JlIG5vbi1hcHBsaWNhdGlvbiBlcnJvcnMKICAgICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKAogICAgICAgICAgICAiW1dvcmtlcl0gRXJyb3IgYXBwZWFycyB0byBiZSB0cmlnZ2VyZWQgZnJvbSBub24tYXBwbGljYXRpb24gc291cmNlczsgaWdub3JpbmcuIiwKICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQoKICAgIC8vIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQsIHRoZSBlcnJvciBpcyBlaXRoZXIgZnJvbSBhcHAgY29kZSwgb3IgZnJvbSBhIG5vZGUgbW9kdWxlIGFsbG93ZWQgYnkgdGhlIGxpc3QKICAgIC8vID0+IFByb2NlZWQgd2l0aCBjYXB0dXJpbmcgbG9jYWwgdmFyaWFibGVzLCBldGMuCiAgICBhd2FpdCBwcm9jZXNzQ2FsbEZyYW1lcyhzZXNzaW9uLCBjYWxsRnJhbWVzLCBkZXNjcmlwdGlvbkxpbmVzKTsKICB9IGVsc2UgewogICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YS5kZXNjcmlwdGlvbiBvciBpdCdzIG5vdCBhIHN0cmluZywganVzdCByZXR1cm4KICAgIHJldHVybjsKICB9Cn0KCi8qKgogKiBJbml0aWFsaXplcyB0aGUgZGVidWdnZXIgYW5kIHNldHMgdXAgZXZlbnQgbGlzdGVuZXJzIGZvciBleGNlcHRpb25zIGFuZCBwcm9taXNlIHJlamVjdGlvbnMuCiAqLwphc3luYyBmdW5jdGlvbiBzdGFydERlYnVnZ2VyKCkgewogIHBhcmVudFBvcnQ/LnBvc3RNZXNzYWdlKHsgdHlwZTogIm1lc3NhZ2UiLCByZWFkeVRvR2V0UGFyYW1ldGVyczogdHJ1ZSB9KTsKCiAgbGV0IHJlc29sdmVNZXNzYWdlUHJvbWlzZTsKICBjb25zdCBtZXNzYWdlUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICByZXNvbHZlTWVzc2FnZVByb21pc2UgPSByZXNvbHZlOwogIH0pOwogIGxldCBpc1BhdXNlZCA9IGZhbHNlOwoKICBwYXJlbnRQb3J0Py5vbigibWVzc2FnZSIsIChtZXNzYWdlKSA9PiB7CiAgICB0cnkgewogICAgICBpZiAobWVzc2FnZT8udHlwZSA9PT0gInByb2Nlc3NFeGNlcHRpb24iKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoCiAgICAgICAgbWVzc2FnZT8uc2ZEZWJ1ZyAhPT0gdW5kZWZpbmVkICYmCiAgICAgICAgbWVzc2FnZT8uc3RhY2tEZXB0aExvY2FscyAhPT0gdW5kZWZpbmVkCiAgICAgICkgewogICAgICAgIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgICAgICAgY29uc29sZS5sb2coIlVwZGF0aW5nIGdsb2JhbCBkZWJ1ZyB2YXJpYWJsZXMuLi4iKTsKICAgICAgICB9CgogICAgICAgIGdsb2JhbC5zZkRlYnVnID0gbWVzc2FnZS5zZkRlYnVnOwogICAgICAgIGdsb2JhbC5zdGFja0RlcHRoTG9jYWxzID0gbWVzc2FnZS5zdGFja0RlcHRoTG9jYWxzOwogICAgICAgIGdsb2JhbC5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT24gPQogICAgICAgICAgbWVzc2FnZS5ub2RlTW9kdWxlc1RvQ29sbGVjdExvY2FsVmFyaWFibGVzT247CgogICAgICAgIHJlc29sdmVNZXNzYWdlUHJvbWlzZSgpOwogICAgICB9CiAgICB9IGNhdGNoIChlcnJvcikgewogICAgICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCLinYwgRXJyb3IgaW4gbWVzc2FnZSBoYW5kbGluZzoiLCBlcnJvcik7CiAgICAgIH0KICAgIH0KICB9KTsKCiAgYXdhaXQgbWVzc2FnZVByb21pc2U7CgogIHRyeSB7CiAgICBjb25zdCBzZXNzaW9uID0gbmV3IFNlc3Npb24oKTsKICAgIHNlc3Npb24uY29ubmVjdFRvTWFpblRocmVhZCgpOwoKICAgIHNlc3Npb24ub24oIkRlYnVnZ2VyLnJlc3VtZWQiLCAoKSA9PiB7CiAgICAgIGlzUGF1c2VkID0gZmFsc2U7CiAgICB9KTsKCiAgICBzZXNzaW9uLm9uKCJEZWJ1Z2dlci5wYXVzZWQiLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICAgaXNQYXVzZWQgPSB0cnVlOwogICAgICBoYW5kbGVQYXVzZWQoc2Vzc2lvbiwgZXZlbnQucGFyYW1zKS50aGVuKAogICAgICAgIGFzeW5jICgpID0+IHsKICAgICAgICAgIC8vIEFmdGVyIHRoZSBwYXVzZSB3b3JrIGlzIGNvbXBsZXRlLCByZXN1bWUgZXhlY3V0aW9uIQogICAgICAgICAgaWYgKGlzUGF1c2VkKSB7CiAgICAgICAgICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIucmVzdW1lIik7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBhc3luYyAoXykgPT4gewogICAgICAgICAgaWYgKGlzUGF1c2VkKSB7CiAgICAgICAgICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIucmVzdW1lIik7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgKTsKICAgIH0pOwoKICAgIGF3YWl0IHNlc3Npb24ucG9zdCgiRGVidWdnZXIuZW5hYmxlIik7CgogICAgY29uc3QgY2FwdHVyZUFsbCA9IHdvcmtlckRhdGEuY2FwdHVyZUFsbEV4Y2VwdGlvbnMgIT09IGZhbHNlOwogICAgYXdhaXQgc2Vzc2lvbi5wb3N0KCJEZWJ1Z2dlci5zZXRQYXVzZU9uRXhjZXB0aW9ucyIsIHsKICAgICAgc3RhdGU6IGNhcHR1cmVBbGwgPyAiYWxsIiA6ICJ1bmNhdWdodCIsCiAgICB9KTsKICB9IGNhdGNoIChlcnJvcikgewogICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIGVycm9yICIsIGVycm9yKTsKICAgIH0KICB9CgogIGlmIChnbG9iYWwuc2ZEZWJ1ZykgewogICAgY29uc29sZS5sb2coIltXb3JrZXJdIERlYnVnZ2VyIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LiIpOwogIH0KfQoKYXN5bmMgZnVuY3Rpb24gdW5yb2xsT2JqZWN0KHNlc3Npb24sIG9iamVjdElkLCBuYW1lLCB2YXJzKSB7CiAgY29uc3QgcHJvcGVydGllcyA9IGF3YWl0IHNlc3Npb24ucG9zdCgiUnVudGltZS5nZXRQcm9wZXJ0aWVzIiwgewogICAgb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlLAogIH0pOwoKICB2YXJzW25hbWVdID0gcHJvcGVydGllcy5yZXN1bHQKICAgIC5tYXAoKHYpID0+IFt2Lm5hbWUsIHYudmFsdWU/LnZhbHVlXSkKICAgIC5yZWR1Y2UoKG9iaiwgW2tleSwgdmFsXSkgPT4gewogICAgICBvYmpba2V5XSA9IHZhbDsKICAgICAgcmV0dXJuIG9iajsKICAgIH0sIHt9KTsKfQoKYXN5bmMgZnVuY3Rpb24gdW5yb2xsQXJyYXkoc2Vzc2lvbiwgb2JqZWN0SWQsIG5hbWUsIHZhcnMpIHsKICBjb25zdCBwcm9wZXJ0aWVzID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICBvYmplY3RJZDogb2JqZWN0SWQsCiAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlLAogIH0pOwogIHZhcnNbbmFtZV0gPSBwcm9wZXJ0aWVzLnJlc3VsdAogICAgLmZpbHRlcigodikgPT4gdi5uYW1lICE9PSAibGVuZ3RoIiAmJiAhaXNOYU4ocGFyc2VJbnQodi5uYW1lLCAxMCkpKQogICAgLnNvcnQoKGEsIGIpID0+IHBhcnNlSW50KGEubmFtZSwgMTApIC0gcGFyc2VJbnQoYi5uYW1lLCAxMCkpCiAgICAubWFwKCh2KSA9PiB2LnZhbHVlPy52YWx1ZSk7Cn0KCmZ1bmN0aW9uIHVucm9sbE90aGVyKHByb3AsIHZhcnMpIHsKICBpZiAoIXByb3AudmFsdWUpIHsKICAgIHJldHVybjsKICB9CgogIGlmICgidmFsdWUiIGluIHByb3AudmFsdWUpIHsKICAgIGlmIChwcm9wLnZhbHVlLnZhbHVlID09PSB1bmRlZmluZWQgfHwgcHJvcC52YWx1ZS52YWx1ZSA9PT0gbnVsbCkgewogICAgICB2YXJzW3Byb3AubmFtZV0gPSBgPCR7cHJvcC52YWx1ZS52YWx1ZX0+YDsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhcnNbcHJvcC5uYW1lXSA9IHByb3AudmFsdWUudmFsdWU7CiAgICByZXR1cm47CiAgfQoKICBpZiAoImRlc2NyaXB0aW9uIiBpbiBwcm9wLnZhbHVlICYmIHByb3AudmFsdWUudHlwZSAhPT0gImZ1bmN0aW9uIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gYDwke3Byb3AudmFsdWUuZGVzY3JpcHRpb259PmA7CiAgICByZXR1cm47CiAgfQoKICBpZiAocHJvcC52YWx1ZS50eXBlID09PSAidW5kZWZpbmVkIikgewogICAgdmFyc1twcm9wLm5hbWVdID0gIjx1bmRlZmluZWQ+IjsKICAgIHJldHVybjsKICB9Cn0KCi8qKgogKiBGZXRjaGVzIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBnaXZlbiBvYmplY3QgSUQuCiAqIEBwYXJhbSB7U2Vzc2lvbn0gc2Vzc2lvbiAtIFRoZSBkZWJ1Z2dpbmcgc2Vzc2lvbiBpbnN0YW5jZS4KICogQHBhcmFtIHtzdHJpbmd9IG9iamVjdElkIC0gVGhlIG9iamVjdCBJRCByZXByZXNlbnRpbmcgdGhlIGxvY2FsIHNjb3BlLgogKiBAcmV0dXJucyB7b2JqZWN0fSBBIGtleS12YWx1ZSBtYXAgb2YgbG9jYWwgdmFyaWFibGUgbmFtZXMgYW5kIHRoZWlyIHZhbHVlcy4KICovCmFzeW5jIGZ1bmN0aW9uIGZldGNoTG9jYWxWYXJpYWJsZXMoc2Vzc2lvbiwgb2JqZWN0SWQpIHsKICBpZiAoIW9iamVjdElkKSByZXR1cm4ge307CgogIHRyeSB7CiAgICBjb25zdCB7IHJlc3VsdCB9ID0gYXdhaXQgc2Vzc2lvbi5wb3N0KCJSdW50aW1lLmdldFByb3BlcnRpZXMiLCB7CiAgICAgIG9iamVjdElkLAogICAgICBvd25Qcm9wZXJ0aWVzOiB0cnVlLAogICAgfSk7CgogICAgY29uc3QgcHJvcGVydGllcyA9IHJlc3VsdDsKICAgIGlmIChwcm9wZXJ0aWVzKSB7CiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IHt9OwogICAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykgewogICAgICAgIGlmIChwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYgcHJvcD8udmFsdWUuY2xhc3NOYW1lID09PSAiQXJyYXkiKSB7CiAgICAgICAgICBjb25zdCBpZCA9IHByb3AudmFsdWUub2JqZWN0SWQ7CiAgICAgICAgICBhd2FpdCB1bnJvbGxBcnJheShzZXNzaW9uLCBpZCwgcHJvcC5uYW1lLCB2YXJpYWJsZXMpOwogICAgICAgIH0gZWxzZSBpZiAoCiAgICAgICAgICBwcm9wPy52YWx1ZT8ub2JqZWN0SWQgJiYKICAgICAgICAgIHByb3A/LnZhbHVlPy5jbGFzc05hbWUgPT09ICJPYmplY3QiCiAgICAgICAgKSB7CiAgICAgICAgICBjb25zdCBpZCA9IHByb3AudmFsdWUub2JqZWN0SWQ7CiAgICAgICAgICBhd2FpdCB1bnJvbGxPYmplY3Qoc2Vzc2lvbiwgaWQsIHByb3AubmFtZSwgdmFyaWFibGVzKTsKICAgICAgICB9IGVsc2UgaWYgKHByb3A/LnZhbHVlKSB7CiAgICAgICAgICB1bnJvbGxPdGhlcihwcm9wLCB2YXJpYWJsZXMpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdmFyaWFibGVzOwogICAgfQogIH0gY2F0Y2ggKGVycikgewogICAgaWYgKGdsb2JhbC5zZkRlYnVnKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIEZhaWxlZCB0byBmZXRjaCBsb2NhbCB2YXJpYWJsZXM6IiwgZXJyKTsKICAgIH0KICAgIHJldHVybiB7fTsKICB9Cn0KCnN0YXJ0RGVidWdnZXIoKS5jYXRjaCgoZXJyb3IpID0+IHsKICBpZiAoZ2xvYmFsLnNmRGVidWcpIHsKICAgIGNvbnNvbGUuZXJyb3IoIltXb3JrZXJdIEZhaWxlZCB0byBzdGFydCBkZWJ1Z2dlcjoiLCBlcnJvcik7CiAgfQp9KTsKCi8vIEtlZXAgdGhlIHdvcmtlciBhbGl2ZQpzZXRJbnRlcnZhbCgoKSA9PiB7fSwgMTAwMDApOwo="), { workerData: { captureAllExceptions: !0 } });
447
210
  let t = null;
448
- const n = /* @__PURE__ */ new WeakMap();
211
+ const s = /* @__PURE__ */ new WeakMap();
449
212
  e.on("message", (r) => {
450
- if (typeof r == "string" && l().sfDebug && console.log(`[Worker] ${r}`), r.readyToGetParameters && e.postMessage({ sfDebug: l().sfDebug, stackDepthLocals: l().stackDepthLocals, nodeModulesToCollectLocalVariablesOn: l().nodeModulesToCollectLocalVariablesOn }), r.type === "exception") {
451
- const { frames: a } = r, c = t;
452
- if (!c) return;
453
- const d = n.get(c), I = (function(p) {
454
- return p ? p.split(`
213
+ if (typeof r == "string" && d().sfDebug && console.log(`[Worker] ${r}`), r.readyToGetParameters && e.postMessage({ sfDebug: d().sfDebug, stackDepthLocals: d().stackDepthLocals, nodeModulesToCollectLocalVariablesOn: d().nodeModulesToCollectLocalVariablesOn }), r.type === "exception") {
214
+ const { frames: c } = r, a = t;
215
+ if (!a) return;
216
+ const l = s.get(a), I = (function(C) {
217
+ return C ? C.split(`
455
218
  `).slice(1).map((u) => {
456
219
  const m = /at (.+?) \((.+):(\d+):(\d+)\)/.exec(u) || /at (.+):(\d+):(\d+)/.exec(u);
457
220
  if (m) {
458
- const [, A, y, b, f] = m;
459
- return new T({ function: A || "<anonymous>", locals: {}, file: y || "<unknown>", line: parseInt(b, 10) || 0, code: "<not captured>", column: parseInt(f) || 0 });
221
+ const [, h, Z, b, y] = m;
222
+ return new V({ function: h || "<anonymous>", locals: {}, file: Z || "<unknown>", line: parseInt(b, 10) || 0, code: "<not captured>", column: parseInt(y) || 0 });
460
223
  }
461
- return new T({ function: "<unknown>", locals: {}, file: "<unknown>", line: 0, code: "<not captured>", column: 0 });
224
+ return new V({ function: "<unknown>", locals: {}, file: "<unknown>", line: 0, code: "<not captured>", column: 0 });
462
225
  }) : [];
463
- })(c.stack), h = (function(p, u) {
226
+ })(a.stack), p = (function(C, u) {
464
227
  const m = [];
465
- let A = -1, y = -1;
466
- for (let b = 0; b < p.length; b++) {
467
- const f = Ke(p[b].file);
468
- if (y = b, f !== "<unknown>") {
469
- for (let S = 0; S < u.length; S++) {
470
- const x = u[S];
471
- if (fe(x, f) || typeof x.file == "string" && x.file.includes(f)) {
472
- A = S, U = 0, l().sfDebug && console.log(`✅ Matched Frame Found: ${f} @ Debugger Frame ${S}`);
228
+ let h = -1, Z = -1;
229
+ for (let b = 0; b < C.length; b++) {
230
+ const y = Je(C[b].file);
231
+ if (Z = b, y !== "<unknown>") {
232
+ for (let f = 0; f < u.length; f++) {
233
+ const v = u[f];
234
+ if (be(v, y) || typeof v.file == "string" && v.file.includes(y)) {
235
+ h = f, w = 0, d().sfDebug && console.log(`✅ Matched Frame Found: ${y} @ Debugger Frame ${f}`);
473
236
  break;
474
237
  }
475
238
  }
476
- if (A !== -1) break;
239
+ if (h !== -1) break;
477
240
  }
478
241
  }
479
- if (A === -1) return U === 10 ? (U = 0, p) : (++U, l().sfDebug && console.log(`"❌ No matching frame found. Checking once again, Attempt N ${U}"`), []);
480
- l().sfDebug && console.log(`🔄 Merging from matched index ${A} onward...`);
242
+ if (h === -1) return w === 10 ? (w = 0, C) : (++w, d().sfDebug && console.log(`"❌ No matching frame found. Checking once again, Attempt N ${w}"`), []);
243
+ d().sfDebug && console.log(`🔄 Merging from matched index ${h} onward...`);
481
244
  for (let b = 0; b < u.length; b++) {
482
- const f = p[y + b], S = u[A + b];
483
- m.push(new T({ function: S?.function || f?.function || "<anonymous>", locals: S?.locals || f?.locals || {}, file: f?.file || S?.file || "<unknown>", line: S?.line || f?.line || 0, code: S?.code || f?.code || "<not captured>" }));
245
+ const y = C[Z + b], f = u[h + b];
246
+ m.push(new V({ function: f?.function || y?.function || "<anonymous>", locals: f?.locals || y?.locals || {}, file: y?.file || f?.file || "<unknown>", line: f?.line || y?.line || 0, code: f?.code || y?.code || "<not captured>" }));
484
247
  }
485
248
  return m;
486
- })(I, a || []);
487
- if (h.length !== 0) {
249
+ })(I, c || []);
250
+ if (p.length !== 0) {
488
251
  t = null;
489
- const p = l().stackDepthCodeTraceDepth, u = p === -1 ? h : h.slice(0, p + 1), m = Math.min(u.length, I.length);
490
- for (let f = 0; f < m; f++) (async () => {
491
- const S = Ue(u[f].file, I[f].line, I[f].column);
492
- S && (S.content != null && (u[f].code = S.content), S.file != null && (u[f].file = S.file));
252
+ const C = d().stackDepthCodeTraceDepth, u = C === -1 ? p : p.slice(0, C + 1), m = Math.min(u.length, I.length);
253
+ for (let y = 0; y < m; y++) (async () => {
254
+ const f = Xe(u[y].file, I[y].line, I[y].column);
255
+ f && (f.content != null && (u[y].code = f.content), f.file != null && (u[y].file = f.file));
493
256
  })();
494
257
  o.setOperationName("CollectExceptions");
495
- const A = c.message ? `${c.name}: ${c.message}` : c.name;
496
- l().sfDebug && console.log("error message is : ", A);
497
- const y = G.getInstance(), b = n.get(c);
498
- b ? (y.setTraceIdFor(b, b), y.runWithSession(b, () => {
499
- y.setTraceId(b), o.doSend(A, u);
500
- })) : o.doSend(A, u), d ? G.getInstance().runWithSession(d, () => {
501
- o.doSend(A, u);
502
- }) : o.doSend(A, u);
258
+ const h = a.message ? `${a.name}: ${a.message}` : a.name;
259
+ d().sfDebug && console.log("error message is : ", h);
260
+ const Z = N.getInstance(), b = s.get(a);
261
+ b ? (Z.setTraceIdFor(b, b), Z.runWithSession(b, () => {
262
+ Z.setTraceId(b), o.doSend(h, u);
263
+ })) : o.doSend(h, u), l ? N.getInstance().runWithSession(l, () => {
264
+ o.doSend(h, u);
265
+ }) : o.doSend(h, u);
503
266
  }
504
267
  }
505
268
  }), e.on("error", (r) => {
@@ -507,115 +270,115 @@ function Ye(o) {
507
270
  }), e.on("exit", (r) => {
508
271
  console.error(`[Worker] Exited with code ${r}`);
509
272
  }), e.unref();
510
- const i = Error, s = /* @__PURE__ */ new Set();
273
+ const n = Error, i = /* @__PURE__ */ new Set();
511
274
  function g(...r) {
512
- const a = Reflect.construct(i, r);
513
- Reflect.setPrototypeOf(a, g.prototype);
275
+ const c = Reflect.construct(n, r);
276
+ Reflect.setPrototypeOf(c, g.prototype);
514
277
  try {
515
- const d = G.getInstance().getTraceId();
516
- n.set(a, d);
278
+ const l = N.getInstance().getTraceId();
279
+ s.set(c, l);
517
280
  } catch {
518
281
  }
519
- i.captureStackTrace && i.captureStackTrace(a, g);
520
- const c = `${a.message}:${a.stack?.split(`
282
+ n.captureStackTrace && n.captureStackTrace(c, g);
283
+ const a = `${c.message}:${c.stack?.split(`
521
284
  `)[1]?.trim()}`;
522
- if (!s.has(c)) {
523
- s.add(c), t = a;
524
- const d = G.getInstance().getTraceId();
525
- n.set(a, d), e.postMessage({ type: "processException", error: a.message });
285
+ if (!i.has(a)) {
286
+ i.add(a), t = c;
287
+ const l = N.getInstance().getTraceId();
288
+ s.set(c, l), e.postMessage({ type: "processException", error: c.message });
526
289
  }
527
- return a;
290
+ return c;
528
291
  }
529
- g.prototype = Object.create(i.prototype, { constructor: { value: g, enumerable: !1, writable: !0, configurable: !0 } }), Object.setPrototypeOf(g, i), globalThis.Error = g;
292
+ g.prototype = Object.create(n.prototype, { constructor: { value: g, enumerable: !1, writable: !0, configurable: !0 } }), Object.setPrototypeOf(g, n), globalThis.Error = g;
530
293
  }
531
- function le(o) {
294
+ function ee(o) {
532
295
  return o = (o = (o = o.replace(/^webpack:\/\/[^\/]+\/\.?\//, "")).replace(/^.*\/pages\//, "pages/")).replace(/\.(js|ts)$/, "");
533
296
  }
534
- function Ue(o, e, t) {
535
- const n = (function(s) {
536
- s.startsWith("at ") && (s = s.slice(3).trim());
537
- const g = s.match(/^(.*?)(:\d+)+(\.map)?$/);
538
- return g ? g[1] : s;
297
+ function Xe(o, e, t) {
298
+ const s = (function(i) {
299
+ i.startsWith("at ") && (i = i.slice(3).trim());
300
+ const g = i.match(/^(.*?)(:\d+)+(\.map)?$/);
301
+ return g ? g[1] : i;
539
302
  })(o);
540
- if (!n || n === "<unknown>") return null;
541
- const i = n + ".map";
303
+ if (!s || s === "<unknown>") return null;
304
+ const n = s + ".map";
542
305
  try {
543
- const s = pe(i, "utf-8");
544
- if (s) {
545
- const g = JSON.parse(s);
546
- let r = new he.SourceMapConsumer(g).originalPositionFor({ line: e, column: t });
547
- if (n && r.source) {
548
- const a = le(n), c = g.sources.findIndex((d) => le(d) === a);
549
- if (c === -1) l().sfDebug && console.log(`Source file "${n}" not found in the source map.`);
306
+ const i = pe(n, "utf-8");
307
+ if (i) {
308
+ const g = JSON.parse(i);
309
+ let r = new me.SourceMapConsumer(g).originalPositionFor({ line: e, column: t });
310
+ if (s && r.source) {
311
+ const c = ee(s), a = g.sources.findIndex((l) => ee(l) === c);
312
+ if (a === -1) d().sfDebug && console.log(`Source file "${s}" not found in the source map.`);
550
313
  else {
551
- const d = g.sourcesContent[c], I = g.names.join(",");
552
- if (d)
553
- return { content: d.split(`
314
+ const l = g.sourcesContent[a], I = g.names.join(",");
315
+ if (l)
316
+ return { content: l.split(`
554
317
  `).slice(r.line - 1, r.line + 20).join(`
555
318
  `), name: I, file: r.source };
556
- l().sfDebug && console.log(`No source content available for file "${n}".`);
319
+ d().sfDebug && console.log(`No source content available for file "${s}".`);
557
320
  }
558
321
  }
559
322
  return { content: g.sourcesContent[0], name: g.names[0], file: g.file };
560
323
  }
561
- } catch (s) {
562
- l().sfDebug && console.log(`Cant read/parse "${i}: Error - ".`, s);
324
+ } catch (i) {
325
+ d().sfDebug && console.log(`Cant read/parse "${n}: Error - ".`, i);
563
326
  }
564
327
  return null;
565
328
  }
566
- function Ke(o) {
329
+ function Je(o) {
567
330
  return o?.split("/").pop() || "<unknown>";
568
331
  }
569
- function fe(o, e) {
332
+ function be(o, e) {
570
333
  if (!o || typeof o != "object") return !1;
571
334
  for (const t of Object.values(o))
572
- if (typeof t == "string" && t.includes(e) || typeof t == "object" && fe(t, e)) return !0;
335
+ if (typeof t == "string" && t.includes(e) || typeof t == "object" && be(t, e)) return !0;
573
336
  return !1;
574
337
  }
575
- let de = !1;
576
- function Ie(o) {
338
+ let te = !1;
339
+ function ne(o) {
577
340
  if (!o) return;
578
341
  const e = o.toLowerCase().trim();
579
342
  return !!["1", "true", "yes", "on"].includes(e) || !["0", "false", "no", "off"].includes(e) && void 0;
580
343
  }
581
- function j(o, e, t) {
582
- return new Promise((n) => {
344
+ function D(o, e, t) {
345
+ return new Promise((s) => {
583
346
  try {
584
- const i = new URL(o), s = (i.protocol, N).request({ method: "GET", hostname: i.hostname, port: i.port || (i.protocol === "https:" ? 443 : 80), path: i.pathname + (i.search || ""), headers: e }, (g) => {
585
- g.resume(), g.statusCode && g.statusCode >= 200 && g.statusCode < 400 ? n("ok") : n("http_error");
347
+ const n = new URL(o), i = (n.protocol, S).request({ method: "GET", hostname: n.hostname, port: n.port || (n.protocol === "https:" ? 443 : 80), path: n.pathname + (n.search || ""), headers: e }, (g) => {
348
+ g.resume(), g.statusCode && g.statusCode >= 200 && g.statusCode < 400 ? s("ok") : s("http_error");
586
349
  });
587
- s.on("error", () => n("error")), s.setTimeout(t, () => {
588
- s.destroy(), n("timeout");
589
- }), s.end();
350
+ i.on("error", () => s("error")), i.setTimeout(t, () => {
351
+ i.destroy(), s("timeout");
352
+ }), i.end();
590
353
  } catch {
591
- n("error");
354
+ s("error");
592
355
  }
593
356
  });
594
357
  }
595
- class Te extends w {
358
+ class Ke extends F {
596
359
  constructor() {
597
360
  super();
598
- C(this, "serviceIdentifier", new X());
599
- C(this, "supplementalFields", {});
361
+ A(this, "serviceIdentifier", new Y());
362
+ A(this, "supplementalFields", {});
600
363
  this.setOperationName("CollectExceptions");
601
364
  }
602
365
  setSupplementalFields(t) {
603
366
  this.supplementalFields = { ...this.supplementalFields, ...t };
604
367
  }
605
368
  normalizedSupplementalForGraphQL() {
606
- const { isFromLocalService: t } = this.supplementalFields, n = {};
607
- return t !== void 0 && (n.isFromLocalService = t), n;
369
+ const { isFromLocalService: t } = this.supplementalFields, s = {};
370
+ return t !== void 0 && (s.isFromLocalService = t), s;
608
371
  }
609
372
  async sendAppIdentifier() {
610
373
  this.serviceIdentifier.doSend({});
611
374
  }
612
- async doSend(t, n) {
613
- this.sendAppIdentifier(), this.send(t, n);
375
+ async doSend(t, s) {
376
+ this.sendAppIdentifier(), this.send(t, s);
614
377
  }
615
- async send(t, n) {
616
- l().sfDebug && console.log(" SENDING EXCEPTION...");
617
- const i = JSON.stringify(L.encode(n)), s = this.normalizedSupplementalForGraphQL(), g = this.getVariables({ exceptionMessage: t, traceJson: i, reentrancyGuardPreactive: !1, library: l().packageLibraryType, version: l().version, ...s });
618
- F(this.endpoint, this.operationName, this.getQuery(), g);
378
+ async send(t, s) {
379
+ d().sfDebug && console.log(" SENDING EXCEPTION...");
380
+ const n = JSON.stringify(k.encode(s)), i = this.normalizedSupplementalForGraphQL(), g = this.getVariables({ exceptionMessage: t, traceJson: n, reentrancyGuardPreactive: !1, library: d().packageLibraryType, version: d().version, ...i });
381
+ W(this.endpoint, this.operationName, this.getQuery(), g);
619
382
  }
620
383
  getQuery() {
621
384
  return `
@@ -649,86 +412,44 @@ class Te extends w {
649
412
  `;
650
413
  }
651
414
  }
652
- const ue = "getting request source code";
653
- var $ = ((o) => (o.UNKNOWN = "unknown", o.ANONYMOUS = "anonymous", o.NOT_CAPTURED = "not captured", o))($ || {});
654
- const Q = "http:", q = "https:";
655
- function ye() {
656
- return { capture_arguments: H(process.env.SF_FUNCSPAN_CAPTURE_ARGUMENTS, !0), capture_return_value: H(process.env.SF_FUNCSPAN_CAPTURE_RETURN_VALUE, !0), arg_limit_mb: parseInt(process.env.SF_FUNCSPAN_ARG_LIMIT_MB || "1", 10), return_limit_mb: parseInt(process.env.SF_FUNCSPAN_RETURN_LIMIT_MB || "1", 10), autocapture_all_child_functions: H(process.env.SF_FUNCSPAN_AUTOCAPTURE_ALL_CHILD_FUNCTIONS, !1), sample_rate: parseFloat(process.env.SF_FUNCSPAN_SAMPLE_RATE || "1.0"), enable_sampling: H(process.env.SF_FUNCSPAN_ENABLE_SAMPLING, !1), capture_sf_veritas: H(process.env.SF_FUNCSPAN_CAPTURE_SF_VERITAS, !1), parse_json_strings: H(process.env.SF_FUNCSPAN_PARSE_JSON_STRINGS, !1) };
657
- }
658
- function ot() {
659
- return { capture_arguments: !1, capture_return_value: !1, arg_limit_mb: 1, return_limit_mb: 1, autocapture_all_child_functions: !1, sample_rate: 0, enable_sampling: !1, capture_sf_veritas: !1, parse_json_strings: !1 };
660
- }
661
- function Se(o) {
662
- try {
663
- const e = o.split("-");
664
- return e.length !== 9 ? (console.error(`[FuncSpan] Invalid header format: expected 9 parts, got ${e.length}`), null) : { capture_arguments: e[0] === "1", capture_return_value: e[1] === "1", arg_limit_mb: parseInt(e[2], 10), return_limit_mb: parseInt(e[3], 10), autocapture_all_child_functions: e[4] === "1", sample_rate: parseFloat(e[5]), enable_sampling: e[6] === "1", capture_sf_veritas: e[7] === "1", parse_json_strings: e[8] === "1" };
665
- } catch (e) {
666
- return console.error(`[FuncSpan] Failed to parse header override "${o}":`, e), null;
667
- }
668
- }
669
- function H(o, e) {
670
- if (!o) return e;
671
- const t = o.toLowerCase();
672
- return t === "true" || t === "1" || t === "yes";
673
- }
674
- const se = new ie();
675
- function Je(o) {
676
- se.enterWith(o);
677
- }
678
- function Ze() {
679
- return se.getStore();
680
- }
681
- function Xe() {
682
- se.enterWith(void 0);
683
- }
684
- function _(...o) {
685
- const e = {};
686
- for (const t of o) for (const n in t) t[n] !== void 0 && (e[n] = t[n]);
687
- return e;
688
- }
689
- function ee(o, e) {
690
- try {
691
- const t = JSON.stringify(o).length / 1048576;
692
- return t <= e ? o : { _truncated: !0, _originalSizeMB: t.toFixed(2), _limitMB: e, _preview: JSON.stringify(o).substring(0, 500) + "..." };
693
- } catch {
694
- return { _error: "Failed to serialize data", _type: typeof o };
695
- }
696
- }
697
- let Ce = !1;
698
- function Ee() {
699
- const o = l().sfDebug;
700
- if (Ce) return void (o && console.log("[patchNodeHttpInbound] Already installed, skipping."));
415
+ const oe = "getting request source code";
416
+ var z = ((o) => (o.UNKNOWN = "unknown", o.ANONYMOUS = "anonymous", o.NOT_CAPTURED = "not captured", o))(z || {});
417
+ const x = "http:", P = "https:", _e = we(import.meta.url);
418
+ let se = !1;
419
+ function ze() {
420
+ const o = d().sfDebug;
421
+ if (se) return void (o && console.log("[patchNodeHttpInbound] Already installed, skipping."));
701
422
  let e;
702
- Ce = !0;
423
+ se = !0;
703
424
  try {
704
- e = require("node:http"), o && console.log("[patchNodeHttpInbound] node:http required successfully.");
705
- } catch (i) {
706
- return void console.error("Failed to require node:http:", i);
425
+ e = _e("node:http"), o && console.log("[patchNodeHttpInbound] node:http required successfully.");
426
+ } catch (n) {
427
+ return void console.error("Failed to require node:http:", n);
707
428
  }
708
429
  if (!e?.Server?.prototype) return void (o && console.log("[patchNodeHttpInbound] http.Server.prototype not found."));
709
- const t = e.Server.prototype, n = t.emit;
710
- n && !t.__sf_inbound_patched__ ? (Object.defineProperty(t, "__sf_inbound_patched__", { value: !0, enumerable: !1, configurable: !1, writable: !1 }), o && console.log("[patchNodeHttpInbound] Patching http.Server.prototype.emit."), t.emit = function(i, ...s) {
711
- if (i !== "request") return o && console.log(`[patchNodeHttpInbound] Passing through event: ${i}`), n.call(this, i, ...s);
712
- const g = s[0], r = s[1], a = (function(p) {
430
+ const t = e.Server.prototype, s = t.emit;
431
+ s && !t.__sf_inbound_patched__ ? (Object.defineProperty(t, "__sf_inbound_patched__", { value: !0, enumerable: !1, configurable: !1, writable: !1 }), o && console.log("[patchNodeHttpInbound] Patching http.Server.prototype.emit."), t.emit = function(n, ...i) {
432
+ if (n !== "request") return o && console.log(`[patchNodeHttpInbound] Passing through event: ${n}`), s.call(this, n, ...i);
433
+ const g = i[0], r = i[1], c = (function(C) {
713
434
  const u = {};
714
- if (!p) return u;
715
- for (const [m, A] of Object.entries(p)) A != null && (Array.isArray(A) ? u[m.toLowerCase()] = A.join(", ") : u[m.toLowerCase()] = String(A));
435
+ if (!C) return u;
436
+ for (const [m, h] of Object.entries(C)) h != null && (Array.isArray(h) ? u[m.toLowerCase()] = h.join(", ") : u[m.toLowerCase()] = String(h));
716
437
  return u;
717
- })(g?.headers), c = a["x-sf3-rid"], d = a["x-sf3-functionspancaptureoverride"];
718
- o && (console.log("[patchNodeHttpInbound] Intercepted request event."), console.log("[patchNodeHttpInbound] Inbound headers:", a), console.log("[patchNodeHttpInbound] Trace header:", c), console.log("[patchNodeHttpInbound] FuncSpan override header:", d));
719
- const I = G.getInstance();
720
- I.setTraceId(c);
721
- const h = I.getTraceId();
722
- return o && console.log("[patchNodeHttpInbound] Context traceId set:", h), I.runWith({ inboundHeaders: a, ...c ? { traceId: c } : {} }, () => {
723
- c && I.setTraceId(c), d && (Je(d), o && console.log("[patchNodeHttpInbound] FuncSpan override set:", d)), o && console.log("[patchNodeHttpInbound] Running request handler in context.");
724
- const p = () => {
725
- o && console.log("[patchNodeHttpInbound] Response finished/closed for traceId:", I.getTraceId()), d && (Xe(), o && console.log("[patchNodeHttpInbound] FuncSpan override cleared"));
438
+ })(g?.headers), a = c["x-sf3-rid"], l = c["x-sf3-functionspancaptureoverride"];
439
+ o && (console.log("[patchNodeHttpInbound] Intercepted request event."), console.log("[patchNodeHttpInbound] Inbound headers:", c), console.log("[patchNodeHttpInbound] Trace header:", a), console.log("[patchNodeHttpInbound] FuncSpan override header:", l));
440
+ const I = N.getInstance();
441
+ I.setTraceId(a);
442
+ const p = I.getTraceId();
443
+ return o && console.log("[patchNodeHttpInbound] Context traceId set:", p), I.runWith({ inboundHeaders: c, ...a ? { traceId: a } : {} }, () => {
444
+ a && I.setTraceId(a), l && (ye(l), o && console.log("[patchNodeHttpInbound] FuncSpan override set:", l)), o && console.log("[patchNodeHttpInbound] Running request handler in context.");
445
+ const C = () => {
446
+ o && console.log("[patchNodeHttpInbound] Response finished/closed for traceId:", I.getTraceId()), l && (Ze(), o && console.log("[patchNodeHttpInbound] FuncSpan override cleared"));
726
447
  };
727
- return r.on("finish", p), r.on("close", p), n.call(this, i, g, r);
448
+ return r.on("finish", C), r.on("close", C), s.call(this, n, g, r);
728
449
  });
729
450
  }) : o && console.log("[patchNodeHttpInbound] Already patched, skipping.");
730
451
  }
731
- class _e extends oe {
452
+ class ke extends Q {
732
453
  constructor() {
733
454
  super(), this.setOperationName("DomainsToNotPassHeaderTo");
734
455
  }
@@ -748,14 +469,14 @@ class _e extends oe {
748
469
  domains: $domains
749
470
  )
750
471
  }
751
- `, n = { apiKey: this.apiKey, serviceUuid: this.serviceUUID, domains: e };
752
- F(this.endpoint, this.operationName, t, n);
472
+ `, s = { apiKey: this.apiKey, serviceUuid: this.serviceUUID, domains: e };
473
+ W(this.endpoint, this.operationName, t, s);
753
474
  }
754
475
  }
755
- class De extends w {
476
+ class Ue extends F {
756
477
  constructor() {
757
478
  super();
758
- C(this, "serviceIdentifier", new X());
479
+ A(this, "serviceIdentifier", new Y());
759
480
  this.setOperationName("CollectNetworkHops");
760
481
  }
761
482
  async sendAppIdentifier() {
@@ -765,8 +486,8 @@ class De extends w {
765
486
  this.sendAppIdentifier(), this.send(t);
766
487
  }
767
488
  async send(t) {
768
- const { name: n, column: i, line: s, entrypoint: g, retryWithoutTraceId: r } = t, a = this.getVariables({ name: n, column: i, line: s, entrypoint: g, retryWithoutTraceId: r });
769
- F(this.endpoint, this.operationName, this.getQuery(), a);
489
+ const { name: s, column: n, line: i, entrypoint: g, retryWithoutTraceId: r } = t, c = this.getVariables({ name: s, column: n, line: i, entrypoint: g, retryWithoutTraceId: r });
490
+ W(this.endpoint, this.operationName, this.getQuery(), c);
770
491
  }
771
492
  getQuery() {
772
493
  return `
@@ -796,10 +517,10 @@ class De extends w {
796
517
  `;
797
518
  }
798
519
  }
799
- class $e extends w {
520
+ class Te extends F {
800
521
  constructor() {
801
522
  super();
802
- C(this, "serviceIdentifier", new X());
523
+ A(this, "serviceIdentifier", new Y());
803
524
  this.setOperationName("CollectNetworkRequest");
804
525
  }
805
526
  async sendAppIdentifier() {
@@ -819,188 +540,188 @@ class $e extends w {
819
540
  `;
820
541
  }
821
542
  async send(t) {
822
- const n = { data: { ...t } };
823
- await F(this.endpoint, this.operationName, this.getQuery(), n);
543
+ const s = { data: { ...t } };
544
+ await W(this.endpoint, this.operationName, this.getQuery(), s);
824
545
  }
825
546
  }
826
- const te = [400, 403];
827
- class Le {
547
+ const O = [400, 403];
548
+ class $e {
828
549
  constructor(e = []) {
829
- C(this, "HEADER_TRACING", "X-Sf3-Rid");
830
- C(this, "HEADER_LOG_GUARD", "reentrancy_guard_logging_preactive");
831
- C(this, "HEADER_PRINT_GUARD", "reentrancy_guard_print_preactive");
832
- C(this, "HEADER_EXCEPTION_GUARD", "reentrancy_guard_exception_preactive");
833
- C(this, "contextManager");
834
- this.contextManager = G.getInstance(), e?.forEach((t) => {
550
+ A(this, "HEADER_TRACING", "X-Sf3-Rid");
551
+ A(this, "HEADER_LOG_GUARD", "reentrancy_guard_logging_preactive");
552
+ A(this, "HEADER_PRINT_GUARD", "reentrancy_guard_print_preactive");
553
+ A(this, "HEADER_EXCEPTION_GUARD", "reentrancy_guard_exception_preactive");
554
+ A(this, "contextManager");
555
+ this.contextManager = N.getInstance(), e?.forEach((t) => {
835
556
  typeof t == "string" && t.trim() && this.contextManager.getExcludedDomains().add(t);
836
- }), l().sfDebug && console.log("[RequestInterceptor] Initialized with static excluded domains.");
557
+ }), d().sfDebug && console.log("[RequestInterceptor] Initialized with static excluded domains.");
837
558
  }
838
559
  extractIdsFromTraceHeader(e, t = this.HEADER_TRACING) {
839
- let n;
840
- if (e instanceof Headers) n = e.get(t) ?? void 0;
560
+ let s;
561
+ if (e instanceof Headers) s = e.get(t) ?? void 0;
841
562
  else {
842
- const s = t.toLowerCase();
843
- for (const [g, r] of Object.entries(e)) if (g.toLowerCase() === s) {
844
- n = r;
563
+ const i = t.toLowerCase();
564
+ for (const [g, r] of Object.entries(e)) if (g.toLowerCase() === i) {
565
+ s = r;
845
566
  break;
846
567
  }
847
568
  }
848
- if (!n) return {};
849
- const i = n.split("/").filter(Boolean);
850
- return i.length < 3 ? {} : { sessionId: i[0], pageVisitId: i[1], requestId: i[i.length - 1] };
569
+ if (!s) return {};
570
+ const n = s.split("/").filter(Boolean);
571
+ return n.length < 3 ? {} : { sessionId: n[0], pageVisitId: n[1], requestId: n[n.length - 1] };
851
572
  }
852
573
  parseStackFrame(e) {
853
574
  const t = /\((.*):(\d+):(\d+)\)$/.exec(e.trim());
854
575
  if (!t) return null;
855
- const [, n, i, s] = t;
856
- return { filePath: n, line: parseInt(i, 10), column: parseInt(s, 10) };
576
+ const [, s, n, i] = t;
577
+ return { filePath: s, line: parseInt(n, 10), column: parseInt(i, 10) };
857
578
  }
858
- async getOriginalPosition(e, t, n) {
859
- let i = { source: e, line: t, column: n, name: null };
860
- const s = e + ".map";
579
+ async getOriginalPosition(e, t, s) {
580
+ let n = { source: e, line: t, column: s, name: null };
581
+ const i = e + ".map";
861
582
  try {
862
- const g = JSON.parse(pe(s, "utf-8"));
863
- let r = (await new he.SourceMapConsumer(g)).originalPositionFor({ line: t, column: n });
864
- r.source && (i = r);
583
+ const g = JSON.parse(pe(i, "utf-8"));
584
+ let r = (await new me.SourceMapConsumer(g)).originalPositionFor({ line: t, column: s });
585
+ r.source && (n = r);
865
586
  } catch (g) {
866
- l().sfDebug && console.error(`Could not read/parse map file at ${s}:`, g);
587
+ d().sfDebug && console.error(`Could not read/parse map file at ${i}:`, g);
867
588
  }
868
- return { originalPos: i };
589
+ return { originalPos: n };
869
590
  }
870
- captureFirstUserLines(e, t = 10, n = !1) {
871
- const i = l().sfDebug ? 10 : t, s = Error.stackTraceLimit;
872
- Error.stackTraceLimit = Math.max(s, i);
873
- const g = new Error(ue);
874
- ue in Error && Error.captureStackTrace(g, this.captureFirstUserLines);
591
+ captureFirstUserLines(e, t = 10, s = !1) {
592
+ const n = d().sfDebug ? 10 : t, i = Error.stackTraceLimit;
593
+ Error.stackTraceLimit = Math.max(i, n);
594
+ const g = new Error(oe);
595
+ oe in Error && Error.captureStackTrace(g, this.captureFirstUserLines);
875
596
  const r = g.stack || "";
876
- Error.stackTraceLimit = s;
877
- const a = r.split(`
878
- `).slice(1), c = [];
879
- for (const d of a)
880
- if (!(d.includes("node:internal") || d.includes("internal/modules") || d.includes("internal/process") || d.includes("node_modules") || d.includes(".next/server/chunks") || d.includes("RequestInterceptor") || d.includes("contextManager") || d.includes("setupConfig")) && (c.push(d.trim()), c.length >= t)) break;
881
- for (const d of c) {
882
- const I = this.parseStackFrame(d);
597
+ Error.stackTraceLimit = i;
598
+ const c = r.split(`
599
+ `).slice(1), a = [];
600
+ for (const l of c)
601
+ if (!(l.includes("node:internal") || l.includes("internal/modules") || l.includes("internal/process") || l.includes("node_modules") || l.includes(".next/server/chunks") || l.includes("RequestInterceptor") || l.includes("contextManager") || l.includes("setupConfig")) && (a.push(l.trim()), a.length >= t)) break;
602
+ for (const l of a) {
603
+ const I = this.parseStackFrame(l);
883
604
  I ? (async () => {
884
- const { originalPos: h } = await this.getOriginalPosition(I.filePath, I.line, I.column);
885
- if (h) {
886
- l().sfDebug && console.log("[RequestInterceptor] First user code line:", h);
887
- const p = { line: h.line?.toString() || $.UNKNOWN, column: h.column?.toString() || $.NOT_CAPTURED, name: h.name || $.NOT_CAPTURED, entrypoint: h.source, retryWithoutTraceId: n };
888
- e.doSend(p);
605
+ const { originalPos: p } = await this.getOriginalPosition(I.filePath, I.line, I.column);
606
+ if (p) {
607
+ d().sfDebug && console.log("[RequestInterceptor] First user code line:", p);
608
+ const C = { line: p.line?.toString() || z.UNKNOWN, column: p.column?.toString() || z.NOT_CAPTURED, name: p.name || z.NOT_CAPTURED, entrypoint: p.source, retryWithoutTraceId: s };
609
+ e.doSend(C);
889
610
  }
890
- })() : l().sfDebug && console.error("Could not parse stack line:", d);
611
+ })() : d().sfDebug && console.error("Could not parse stack line:", l);
891
612
  }
892
613
  }
893
614
  addReentrancyGuardHeaders(e) {
894
615
  e.set(this.HEADER_LOG_GUARD, "true"), e.set(this.HEADER_PRINT_GUARD, "true"), e.set(this.HEADER_EXCEPTION_GUARD, "true");
895
616
  }
896
617
  shouldPropagateHeaders(e) {
897
- return !Ae.some((t) => new RegExp(`^${t.replace(/\*/g, ".*")}$`).test(e));
618
+ return !Ge.some((t) => new RegExp(`^${t.replace(/\*/g, ".*")}$`).test(e));
898
619
  }
899
620
  addTracingHeaders(e, t) {
900
- const n = new URL(t).hostname, i = this.shouldPropagateHeaders(n);
901
- return i ? this.addTracingHeader(e, t) : l().sfDebug && console.error(`[RequestInterceptor] Excluded domain: ${n}`), i;
621
+ const s = new URL(t).hostname, n = this.shouldPropagateHeaders(s);
622
+ return n ? this.addTracingHeader(e, t) : d().sfDebug && console.error(`[RequestInterceptor] Excluded domain: ${s}`), n;
902
623
  }
903
624
  addTracingHeader(e, t) {
904
- const n = Ze();
905
- if (n) {
906
- const r = Se(n);
907
- if (r && r.sample_rate === 0) return void (l().sfDebug && console.log(`[RequestInterceptor] Function span tracking disabled (sample_rate=0), skipping tracing header for ${t}`));
625
+ const s = le();
626
+ if (s) {
627
+ const r = de(s);
628
+ if (r && r.sample_rate === 0) return void (d().sfDebug && console.log(`[RequestInterceptor] Function span tracking disabled (sample_rate=0), skipping tracing header for ${t}`));
908
629
  }
909
- const i = this.contextManager.getOrSetSfTraceId(), s = this.contextManager.getOrSetPageVisitUUID(), g = R();
910
- e.set(this.HEADER_TRACING, `${i}/${s}/${g}`), l().sfDebug && console.log(`[RequestInterceptor] Added tracing header for ${t}`);
630
+ const n = this.contextManager.getOrSetSfTraceId(), i = this.contextManager.getOrSetPageVisitUUID(), g = Ie();
631
+ e.set(this.HEADER_TRACING, `${n}/${i}/${g}`), d().sfDebug && console.log(`[RequestInterceptor] Added tracing header for ${t}`);
911
632
  }
912
633
  patchFetch(e, t) {
913
- const n = globalThis.fetch;
914
- typeof n == "function" ? globalThis.fetch = async (i, s) => {
915
- const g = new Headers(s?.headers);
916
- if (g.get(this.HEADER_LOG_GUARD) === "true" || g.get(this.HEADER_PRINT_GUARD) === "true" || g.get(this.HEADER_EXCEPTION_GUARD) === "true") return n(i, s);
634
+ const s = globalThis.fetch;
635
+ typeof s == "function" ? globalThis.fetch = async (n, i) => {
636
+ const g = new Headers(i?.headers);
637
+ if (g.get(this.HEADER_LOG_GUARD) === "true" || g.get(this.HEADER_PRINT_GUARD) === "true" || g.get(this.HEADER_EXCEPTION_GUARD) === "true") return s(n, i);
917
638
  this.captureFirstUserLines(e);
918
639
  const r = Date.now();
919
- let a;
920
- typeof i == "string" || i instanceof URL ? a = i.toString() : i instanceof Request ? (a = i.url, i.headers.forEach((u, m) => {
640
+ let c;
641
+ typeof n == "string" || n instanceof URL ? c = n.toString() : n instanceof Request ? (c = n.url, n.headers.forEach((u, m) => {
921
642
  g.set(m, u);
922
- })) : l().sfDebug && console.error("[Sailfish RequestInterceptor] Invalid fetch input."), l().sfDebug && console.log("[RequestInterceptor] Fetching request to:", a);
923
- const c = new URL(a).hostname, d = new Headers(g), I = this.addTracingHeaders(g, a), h = { ...s, headers: g };
924
- let p;
643
+ })) : d().sfDebug && console.error("[Sailfish RequestInterceptor] Invalid fetch input."), d().sfDebug && console.log("[RequestInterceptor] Fetching request to:", c);
644
+ const a = new URL(c).hostname, l = new Headers(g), I = this.addTracingHeaders(g, c), p = { ...i, headers: g };
645
+ let C;
925
646
  try {
926
647
  let u = !1;
927
- this.addTracingHeaders(d, a), p = await n(a, h), I && te.includes(p.status) ? (p = await n(a, { ...s, headers: d }), u = !0, this.captureFirstUserLines(e, 10, u)) : this.contextManager.addSupportedDomains(c);
648
+ this.addTracingHeaders(l, c), C = await s(c, p), I && O.includes(C.status) ? (C = await s(c, { ...i, headers: l }), u = !0, this.captureFirstUserLines(e, 10, u)) : this.contextManager.addSupportedDomains(a);
928
649
  const m = Date.now();
929
- l().sfDebug && console.log(`[RequestInterceptor] Fetch completed: ${a}, Status: ${p.status}, Duration: ${m - r}ms`);
930
- const { sessionId: A, pageVisitId: y, requestId: b } = this.extractIdsFromTraceHeader(g);
931
- return t.doSend({ apiKey: l().apiKey, requestId: b, pageVisitId: y, recordingSessionId: A, serviceUuid: l().serviceUUID, timestampStart: r.toString(), timestampEnd: m.toString(), responseCode: p.status, success: !0, error: null, url: a, method: h.method || "GET", retryWithoutTraceId: u, parentSpanId: M() }), p;
650
+ d().sfDebug && console.log(`[RequestInterceptor] Fetch completed: ${c}, Status: ${C.status}, Duration: ${m - r}ms`);
651
+ const { sessionId: h, pageVisitId: Z, requestId: b } = this.extractIdsFromTraceHeader(g);
652
+ return t.doSend({ apiKey: d().apiKey, requestId: b, pageVisitId: Z, recordingSessionId: h, serviceUuid: d().serviceUUID, timestampStart: r.toString(), timestampEnd: m.toString(), responseCode: C.status, success: !0, error: null, url: c, method: p.method || "GET", retryWithoutTraceId: u, parentSpanId: $() }), C;
932
653
  } catch (u) {
933
654
  const m = Date.now();
934
- l().sfDebug && console.error(`[RequestInterceptor] Fetch failed: ${a}, Error: ${u}, Duration: ${m - r}ms`);
655
+ d().sfDebug && console.error(`[RequestInterceptor] Fetch failed: ${c}, Error: ${u}, Duration: ${m - r}ms`);
935
656
  }
936
- } : l().sfDebug && console.error("[RequestInterceptor] Fetch not available.");
657
+ } : d().sfDebug && console.error("[RequestInterceptor] Fetch not available.");
937
658
  }
938
659
  patchHttp(e, t) {
939
- if (l().sfDebug && console.log("[RequestInterceptor] Initializing HTTP/HTTPS request patch..."), !N || typeof N.request != "function") return void (l().sfDebug && console.log("[RequestInterceptor] HTTP/HTTPS not available."));
940
- const n = N.request.bind(N), i = N.request.bind(N);
941
- N.request = function(s, g) {
660
+ if (d().sfDebug && console.log("[RequestInterceptor] Initializing HTTP/HTTPS request patch..."), !S || typeof S.request != "function") return void (d().sfDebug && console.log("[RequestInterceptor] HTTP/HTTPS not available."));
661
+ const s = S.request.bind(S), n = S.request.bind(S);
662
+ S.request = function(i, g) {
942
663
  let r;
943
664
  try {
944
- if (typeof s == "string") {
945
- const c = new URL(s);
946
- r = { protocol: c.protocol || Q, hostname: c.hostname, path: c.pathname + c.search, headers: {} };
947
- } else s instanceof URL ? r = { protocol: s.protocol || Q, hostname: s.hostname, path: s.pathname + s.search, headers: {} } : (r = { ...s }, r.protocol || (r.protocol = Q));
665
+ if (typeof i == "string") {
666
+ const a = new URL(i);
667
+ r = { protocol: a.protocol || x, hostname: a.hostname, path: a.pathname + a.search, headers: {} };
668
+ } else i instanceof URL ? r = { protocol: i.protocol || x, hostname: i.hostname, path: i.pathname + i.search, headers: {} } : (r = { ...i }, r.protocol || (r.protocol = x));
948
669
  if (r.headers) {
949
- const c = `${r.protocol}//${r.hostname}`;
950
- this.addTracingHeaders(r.headers, c), this.captureFirstUserLines(e);
951
- } else l().sfDebug && console.warn("[RequestInterceptor] No headers found in HTTP request options. Skipping header addition.");
952
- } catch (c) {
953
- throw l().sfDebug && console.error("[RequestInterceptor] Error while processing HTTP request options:", c), c;
670
+ const a = `${r.protocol}//${r.hostname}`;
671
+ this.addTracingHeaders(r.headers, a), this.captureFirstUserLines(e);
672
+ } else d().sfDebug && console.warn("[RequestInterceptor] No headers found in HTTP request options. Skipping header addition.");
673
+ } catch (a) {
674
+ throw d().sfDebug && console.error("[RequestInterceptor] Error while processing HTTP request options:", a), a;
954
675
  }
955
- let a = !1;
956
- return n(r, (c) => {
957
- const d = `${r.protocol}//${r.hostname}`;
958
- if (r.headers && this.shouldPropagateHeaders(new URL(d).hostname) && te.includes(c.statusCode || 0)) {
676
+ let c = !1;
677
+ return s(r, (a) => {
678
+ const l = `${r.protocol}//${r.hostname}`;
679
+ if (r.headers && this.shouldPropagateHeaders(new URL(l).hostname) && O.includes(a.statusCode || 0)) {
959
680
  r.hostname;
960
681
  const u = { ...r, headers: { ...r.headers } };
961
- delete u.headers[this.HEADER_TRACING], n(u, g), a = !0, this.captureFirstUserLines(e, 10, a);
682
+ delete u.headers[this.HEADER_TRACING], s(u, g), c = !0, this.captureFirstUserLines(e, 10, c);
962
683
  }
963
- const { sessionId: I, pageVisitId: h, requestId: p } = this.extractIdsFromTraceHeader(r.headers);
964
- t.doSend({ apiKey: l().apiKey, requestId: p, pageVisitId: h, recordingSessionId: I, serviceUuid: l().serviceUUID, timestampStart: Date.now().toString(), timestampEnd: Date.now().toString(), responseCode: c.statusCode || 0, success: !!c.statusCode && c.statusCode < 400, error: null, url: d, method: r.method || "GET", retryWithoutTraceId: a, parentSpanId: M() }), g?.(c);
684
+ const { sessionId: I, pageVisitId: p, requestId: C } = this.extractIdsFromTraceHeader(r.headers);
685
+ t.doSend({ apiKey: d().apiKey, requestId: C, pageVisitId: p, recordingSessionId: I, serviceUuid: d().serviceUUID, timestampStart: Date.now().toString(), timestampEnd: Date.now().toString(), responseCode: a.statusCode || 0, success: !!a.statusCode && a.statusCode < 400, error: null, url: l, method: r.method || "GET", retryWithoutTraceId: c, parentSpanId: $() }), g?.(a);
965
686
  });
966
- }, N.request = function(s, g) {
687
+ }, S.request = function(i, g) {
967
688
  let r;
968
689
  try {
969
- if (typeof s == "string") {
970
- const c = new URL(s);
971
- r = { protocol: c.protocol || q, hostname: c.hostname, path: c.pathname + c.search, headers: {} };
972
- } else s instanceof URL ? r = { protocol: s.protocol || q, hostname: s.hostname, path: s.pathname + s.search, headers: {} } : (r = { ...s }, r.protocol || (r.protocol = q));
690
+ if (typeof i == "string") {
691
+ const a = new URL(i);
692
+ r = { protocol: a.protocol || P, hostname: a.hostname, path: a.pathname + a.search, headers: {} };
693
+ } else i instanceof URL ? r = { protocol: i.protocol || P, hostname: i.hostname, path: i.pathname + i.search, headers: {} } : (r = { ...i }, r.protocol || (r.protocol = P));
973
694
  if (r.headers) {
974
- const c = `${r.protocol}//${r.hostname}`;
975
- this.addTracingHeaders(r.headers, c);
976
- } else l().sfDebug && console.warn("[RequestInterceptor] No headers found in HTTPS request options. Skipping header addition.");
977
- } catch (c) {
978
- throw l().sfDebug && console.error("[RequestInterceptor] Error while processing HTTPS request options:", c), c;
695
+ const a = `${r.protocol}//${r.hostname}`;
696
+ this.addTracingHeaders(r.headers, a);
697
+ } else d().sfDebug && console.warn("[RequestInterceptor] No headers found in HTTPS request options. Skipping header addition.");
698
+ } catch (a) {
699
+ throw d().sfDebug && console.error("[RequestInterceptor] Error while processing HTTPS request options:", a), a;
979
700
  }
980
- let a = !1;
981
- return i(r, (c) => {
982
- const d = `${r.protocol}//${r.hostname}`;
983
- if (r.headers && this.shouldPropagateHeaders(new URL(d).hostname) && te.includes(c.statusCode || 0)) {
701
+ let c = !1;
702
+ return n(r, (a) => {
703
+ const l = `${r.protocol}//${r.hostname}`;
704
+ if (r.headers && this.shouldPropagateHeaders(new URL(l).hostname) && O.includes(a.statusCode || 0)) {
984
705
  const u = { ...r, headers: { ...r.headers } };
985
- delete u.headers[this.HEADER_TRACING], i(u, g), a = !0, this.captureFirstUserLines(e, 10, a);
706
+ delete u.headers[this.HEADER_TRACING], n(u, g), c = !0, this.captureFirstUserLines(e, 10, c);
986
707
  }
987
- const { sessionId: I, pageVisitId: h, requestId: p } = this.extractIdsFromTraceHeader(r.headers);
988
- t.doSend({ apiKey: l().apiKey, requestId: p, pageVisitId: h, recordingSessionId: I, serviceUuid: l().serviceUUID, timestampStart: Date.now().toString(), timestampEnd: Date.now().toString(), responseCode: c.statusCode || 0, success: !!c.statusCode && c.statusCode < 400, error: null, url: d, method: r.method || "GET", retryWithoutTraceId: a, parentSpanId: M() }), g?.(c);
708
+ const { sessionId: I, pageVisitId: p, requestId: C } = this.extractIdsFromTraceHeader(r.headers);
709
+ t.doSend({ apiKey: d().apiKey, requestId: C, pageVisitId: p, recordingSessionId: I, serviceUuid: d().serviceUUID, timestampStart: Date.now().toString(), timestampEnd: Date.now().toString(), responseCode: a.statusCode || 0, success: !!a.statusCode && a.statusCode < 400, error: null, url: l, method: r.method || "GET", retryWithoutTraceId: c, parentSpanId: $() }), g?.(a);
989
710
  });
990
- }, l().sfDebug && console.log("✅ HTTP and HTTPS request methods patched globally.");
711
+ }, d().sfDebug && console.log("✅ HTTP and HTTPS request methods patched globally.");
991
712
  }
992
713
  tryPatch(e, t) {
993
714
  try {
994
715
  require.resolve(t), e(), console.log(`[RequestInterceptor] Patched ${t}`);
995
- } catch (n) {
996
- console.warn(`[RequestInterceptor] Could not patch ${t}: ${n.message}`);
716
+ } catch (s) {
717
+ console.warn(`[RequestInterceptor] Could not patch ${t}: ${s.message}`);
997
718
  }
998
719
  }
999
720
  getExcludedDomains() {
1000
721
  return [...this.contextManager.getExcludedDomains()];
1001
722
  }
1002
723
  }
1003
- class ze extends oe {
724
+ class Ee extends Q {
1004
725
  constructor() {
1005
726
  super(), this.setOperationName("UpdateServiceDetails");
1006
727
  }
@@ -1028,293 +749,334 @@ class ze extends oe {
1028
749
  gitSha: $gitSha,
1029
750
  )
1030
751
  }
1031
- `, t = this.getVariables({ serviceIdentifier: l().serviceIdentifier, serviceVersion: l().serviceVersion, serviceAdditionalMetadata: l().serviceAdditionalMetadata, gitSha: l().gitSha || "" });
1032
- F(this.endpoint, this.operationName, e, t);
752
+ `, t = this.getVariables({ serviceIdentifier: d().serviceIdentifier, serviceVersion: d().serviceVersion, serviceAdditionalMetadata: d().serviceAdditionalMetadata, gitSha: d().gitSha || "" });
753
+ W(this.endpoint, this.operationName, e, t);
1033
754
  }
1034
755
  }
1035
- class xe {
756
+ class Le {
1036
757
  constructor(e = [process.cwd()], t = !1) {
1037
- C(this, "rootPaths");
1038
- C(this, "fileConfigs", /* @__PURE__ */ new Map());
1039
- C(this, "functionConfigs", /* @__PURE__ */ new Map());
1040
- C(this, "directoryConfigs", /* @__PURE__ */ new Map());
1041
- C(this, "hasSailfishFiles", !1);
1042
- C(this, "debug");
758
+ A(this, "rootPaths");
759
+ A(this, "fileConfigs", /* @__PURE__ */ new Map());
760
+ A(this, "functionConfigs", /* @__PURE__ */ new Map());
761
+ A(this, "directoryConfigs", /* @__PURE__ */ new Map());
762
+ A(this, "hasSailfishFiles", !1);
763
+ A(this, "debug");
1043
764
  this.rootPaths = e, this.debug = t || process.env.SF_DEBUG === "true";
1044
765
  }
1045
766
  async loadAllConfigs() {
1046
767
  this.debug && console.log("[FuncSpan ConfigLoader] Scanning for .sailfish files in:", this.rootPaths);
1047
768
  const e = [];
1048
- for (const t of this.rootPaths) k.existsSync(t) ? await this._walkDirectory(t, e) : this.debug && console.log(`[FuncSpan ConfigLoader] Root path does not exist: ${t}`);
769
+ for (const t of this.rootPaths) L.existsSync(t) ? await this._walkDirectory(t, e) : this.debug && console.log(`[FuncSpan ConfigLoader] Root path does not exist: ${t}`);
1049
770
  e.length > 0 ? (this.hasSailfishFiles = !0, this.debug && (console.log(`[FuncSpan ConfigLoader] Found ${e.length} .sailfish files:`), e.forEach((t) => console.log(`[FuncSpan ConfigLoader] - ${t}`)))) : this.debug && console.log("[FuncSpan ConfigLoader] No .sailfish files found - function spans disabled by default");
1050
771
  for (const t of e) await this._loadConfigFile(t);
1051
772
  await this._resolveInheritance(), this.debug && console.log(`[FuncSpan ConfigLoader] Loaded ${this.fileConfigs.size} file configs, ${this.functionConfigs.size} function configs`);
1052
773
  }
1053
774
  getConfig(e, t) {
1054
- const n = this.hasSailfishFiles ? ye() : { capture_arguments: !1, capture_return_value: !1, arg_limit_mb: 1, return_limit_mb: 1, autocapture_all_child_functions: !1, sample_rate: 0, enable_sampling: !1, capture_sf_veritas: !1, parse_json_strings: !1 }, i = this._getDirectoryConfig(e), s = v.normalize(e), g = this.fileConfigs.get(s) || {};
775
+ const s = this.hasSailfishFiles ? ue() : Se(), n = this._getDirectoryConfig(e), i = G.normalize(e), g = this.fileConfigs.get(i) || {};
1055
776
  let r = {};
1056
777
  if (t) {
1057
- const a = this.functionConfigs.get(s);
1058
- a && (r = a.get(t) || {});
778
+ const c = this.functionConfigs.get(i);
779
+ c && (r = c.get(t) || {});
1059
780
  }
1060
- return _(n, i, g, r);
781
+ return R(s, n, g, r);
1061
782
  }
1062
783
  async _walkDirectory(e, t) {
1063
784
  try {
1064
- const n = k.readdirSync(e, { withFileTypes: !0 });
1065
- for (const i of n) {
1066
- const s = v.join(e, i.name);
1067
- i.isFile() && i.name === ".sailfish" ? t.push(s) : i.name === "node_modules" || i.isDirectory() && i.name.startsWith(".") && i.name !== ".sailfish" || i.isDirectory() && await this._walkDirectory(s, t);
785
+ const s = L.readdirSync(e, { withFileTypes: !0 });
786
+ for (const n of s) {
787
+ const i = G.join(e, n.name);
788
+ n.isFile() && n.name === ".sailfish" ? t.push(i) : n.name === "node_modules" || n.isDirectory() && n.name.startsWith(".") && n.name !== ".sailfish" || n.isDirectory() && await this._walkDirectory(i, t);
1068
789
  }
1069
- } catch (n) {
1070
- this.debug && console.error(`[FuncSpan ConfigLoader] Error walking directory ${e}:`, n);
790
+ } catch (s) {
791
+ this.debug && console.error(`[FuncSpan ConfigLoader] Error walking directory ${e}:`, s);
1071
792
  }
1072
793
  }
1073
794
  async _loadConfigFile(e) {
1074
795
  try {
1075
- const t = k.readFileSync(e, "utf-8"), n = v.dirname(e);
1076
- let i = null;
796
+ const t = L.readFileSync(e, "utf-8"), s = G.dirname(e);
797
+ let n = null;
1077
798
  try {
1078
- i = JSON.parse(t);
799
+ n = JSON.parse(t);
1079
800
  } catch {
1080
801
  try {
1081
- i = require("js-yaml").load(t);
1082
- } catch (s) {
1083
- return void (this.debug && console.error(`[FuncSpan ConfigLoader] Failed to parse ${e} as JSON or YAML:`, s));
802
+ n = require("js-yaml").load(t);
803
+ } catch (i) {
804
+ return void (this.debug && console.error(`[FuncSpan ConfigLoader] Failed to parse ${e} as JSON or YAML:`, i));
1084
805
  }
1085
806
  }
1086
- if (!i) return;
1087
- i.default && this.directoryConfigs.set(n, i.default), i.files && await this._expandFileGlobs(n, i.files, i.default || {}), i.functions && this._storeFunctionConfigs(n, i.functions, i.default || {}), this.debug && (console.log(`[FuncSpan ConfigLoader] Loaded config from ${e}`), console.log(`[FuncSpan ConfigLoader] Directory: ${n}`), console.log(`[FuncSpan ConfigLoader] Has default: ${!!i.default}`), console.log(`[FuncSpan ConfigLoader] File patterns: ${Object.keys(i.files || {}).length}`), console.log(`[FuncSpan ConfigLoader] Functions: ${Object.keys(i.functions || {}).length}`));
807
+ if (!n) return;
808
+ n.default && this.directoryConfigs.set(s, n.default), n.files && await this._expandFileGlobs(s, n.files, n.default || {}), n.functions && this._storeFunctionConfigs(s, n.functions, n.default || {}), this.debug && (console.log(`[FuncSpan ConfigLoader] Loaded config from ${e}`), console.log(`[FuncSpan ConfigLoader] Directory: ${s}`), console.log(`[FuncSpan ConfigLoader] Has default: ${!!n.default}`), console.log(`[FuncSpan ConfigLoader] File patterns: ${Object.keys(n.files || {}).length}`), console.log(`[FuncSpan ConfigLoader] Functions: ${Object.keys(n.functions || {}).length}`));
1088
809
  } catch (t) {
1089
810
  this.debug && console.error(`[FuncSpan ConfigLoader] Error loading ${e}:`, t);
1090
811
  }
1091
812
  }
1092
- async _expandFileGlobs(e, t, n) {
1093
- for (const [i, s] of Object.entries(t)) try {
1094
- const g = v.join(e, i), r = await Be(g, { absolute: !0, nodir: !0, ignore: ["**/node_modules/**", "**/.git/**"] });
1095
- this.debug && console.log(`[FuncSpan ConfigLoader] Pattern '${i}' matched ${r.length} files`);
1096
- for (const a of r) {
1097
- const c = v.normalize(a), d = _(n, s);
1098
- this.fileConfigs.set(c, d), this.debug && r.length <= 5 && console.log(`[FuncSpan ConfigLoader] - ${a}`);
813
+ async _expandFileGlobs(e, t, s) {
814
+ for (const [n, i] of Object.entries(t)) try {
815
+ const g = G.join(e, n), r = await Ve(g, { absolute: !0, nodir: !0, ignore: ["**/node_modules/**", "**/.git/**"] });
816
+ this.debug && console.log(`[FuncSpan ConfigLoader] Pattern '${n}' matched ${r.length} files`);
817
+ for (const c of r) {
818
+ const a = G.normalize(c), l = R(s, i);
819
+ this.fileConfigs.set(a, l), this.debug && r.length <= 5 && console.log(`[FuncSpan ConfigLoader] - ${c}`);
1099
820
  }
1100
821
  } catch (g) {
1101
- this.debug && console.error(`[FuncSpan ConfigLoader] Error expanding glob '${i}':`, g);
822
+ this.debug && console.error(`[FuncSpan ConfigLoader] Error expanding glob '${n}':`, g);
1102
823
  }
1103
824
  }
1104
- _storeFunctionConfigs(e, t, n) {
1105
- for (const [i, s] of Object.entries(t)) {
1106
- const g = i.split("::");
825
+ _storeFunctionConfigs(e, t, s) {
826
+ for (const [n, i] of Object.entries(t)) {
827
+ const g = n.split("::");
1107
828
  if (g.length !== 2) {
1108
- this.debug && console.warn(`[FuncSpan ConfigLoader] Invalid function pattern '${i}' (expected format: 'file.ts::functionName')`);
829
+ this.debug && console.warn(`[FuncSpan ConfigLoader] Invalid function pattern '${n}' (expected format: 'file.ts::functionName')`);
1109
830
  continue;
1110
831
  }
1111
- const [r, a] = g, c = v.normalize(v.join(e, r));
1112
- this.functionConfigs.has(c) || this.functionConfigs.set(c, /* @__PURE__ */ new Map());
1113
- const d = this.functionConfigs.get(c), I = _(n, s);
1114
- d.set(a, I), this.debug && console.log(`[FuncSpan ConfigLoader] Function config: ${c}::${a}`);
832
+ const [r, c] = g, a = G.normalize(G.join(e, r));
833
+ this.functionConfigs.has(a) || this.functionConfigs.set(a, /* @__PURE__ */ new Map());
834
+ const l = this.functionConfigs.get(a), I = R(s, i);
835
+ l.set(c, I), this.debug && console.log(`[FuncSpan ConfigLoader] Function config: ${a}::${c}`);
1115
836
  }
1116
837
  }
1117
838
  async _resolveInheritance() {
1118
839
  }
1119
840
  _getDirectoryConfig(e) {
1120
- let t = v.dirname(v.normalize(e));
1121
- const n = [];
1122
- for (; t && t !== v.dirname(t); ) {
1123
- const i = this.directoryConfigs.get(t);
1124
- i && n.unshift(i), t = v.dirname(t);
841
+ let t = G.dirname(G.normalize(e));
842
+ const s = [];
843
+ for (; t && t !== G.dirname(t); ) {
844
+ const n = this.directoryConfigs.get(t);
845
+ n && s.unshift(n), t = G.dirname(t);
1125
846
  }
1126
- return n.reduce((i, s) => _(i, s), {});
847
+ return s.reduce((n, i) => R(n, i), {});
1127
848
  }
1128
849
  }
1129
- let J = null;
1130
- async function ke(o, e) {
1131
- J = new xe(o, e), await J.loadAllConfigs();
850
+ let H = null;
851
+ async function De(o, e) {
852
+ H = new Le(o, e), await H.loadAllConfigs();
1132
853
  }
1133
- function Oe(o, e) {
1134
- return J ? J.getConfig(o, e) : (process.env.SF_DEBUG === "true" && console.log("[FuncSpan ConfigLoader] Config loader not initialized, using env config for worker process"), ye());
854
+ function xe(o, e) {
855
+ return H ? H.getConfig(o, e) : (process.env.SF_DEBUG === "true" && console.log("[FuncSpan ConfigLoader] Config loader not initialized, using env config for worker process"), ue());
1135
856
  }
1136
857
  function Pe() {
1137
- return J !== null;
858
+ return H !== null;
859
+ }
860
+ const Oe = ["readFile", "writeFile", "appendFile", "readdir", "stat", "lstat", "fstat", "access", "open", "close", "read", "write", "chmod", "mkdir", "rmdir", "unlink", "rename"], ie = ["lookup", "resolve", "resolve4", "resolve6", "resolveAny", "resolveMx", "resolveNs", "resolveTxt", "reverse"], je = ["pbkdf2", "randomBytes", "scrypt", "generateKeyPair"], Me = ["gzip", "gunzip", "deflate", "inflate", "deflateRaw", "inflateRaw", "brotliCompress", "brotliDecompress"];
861
+ let re = !1, ae = !1;
862
+ function Qe() {
863
+ if (!ae) try {
864
+ const o = require("node:dns");
865
+ if (o.__sf_worker_pool_patched__) return;
866
+ Object.defineProperty(o, "__sf_worker_pool_patched__", { value: !0, enumerable: !1, writable: !1, configurable: !1 });
867
+ for (const e of ie) if (typeof o[e] == "function") {
868
+ const t = o[e];
869
+ o[e] = function(...s) {
870
+ const n = s[0];
871
+ return typeof n == "string" && (n === "localhost" || n === "127.0.0.1") ? t.apply(this, s) : typeof s[s.length - 1] == "function" ? _("dns", e, t, s, this) : t.apply(this, s);
872
+ }, Object.defineProperty(o[e], "name", { value: e, writable: !1 });
873
+ }
874
+ (function(e) {
875
+ if (!e.promises) return void (process.env.SF_DEBUG === "true" && console.log("[WorkerPool] dns.promises not available, skipping"));
876
+ if (!e.promises.__sf_worker_pool_patched__) {
877
+ Object.defineProperty(e.promises, "__sf_worker_pool_patched__", { value: !0, enumerable: !1, writable: !1, configurable: !1 });
878
+ for (const t of ie) if (typeof e.promises[t] == "function") {
879
+ const s = e.promises[t];
880
+ e.promises[t] = function(...n) {
881
+ const i = n[0];
882
+ return typeof i != "string" || i !== "localhost" && i !== "127.0.0.1" ? Be("dns", t, s, n, this) : s.apply(this, n);
883
+ }, Object.defineProperty(e.promises[t], "name", { value: t, writable: !1 });
884
+ }
885
+ process.env.SF_DEBUG === "true" && console.log("[WorkerPool] dns.promises module patched successfully");
886
+ }
887
+ })(o), ae = !0, process.env.SF_DEBUG === "true" && console.log("[WorkerPool] dns module patched successfully");
888
+ } catch (o) {
889
+ console.error("[WorkerPool] Error patching dns module:", o);
890
+ }
891
+ }
892
+ let ce = !1, ge = !1, M = !1;
893
+ function qe() {
894
+ if (M) return;
895
+ const o = process.env.SF_DEBUG === "true";
896
+ o && console.log("[WorkerPool] Initializing worker pool patching..."), X("fs") && (o && console.log("[WorkerPool] Patching fs module..."), (function() {
897
+ if (!re) try {
898
+ const e = require("node:fs");
899
+ if (e.__sf_worker_pool_patched__) return;
900
+ Object.defineProperty(e, "__sf_worker_pool_patched__", { value: !0, enumerable: !1, writable: !1, configurable: !1 });
901
+ for (const t of Oe) if (typeof e[t] == "function") {
902
+ const s = e[t];
903
+ e[t] = function(...n) {
904
+ return typeof n[n.length - 1] == "function" ? _("fs", t, s, n, this) : s.apply(this, n);
905
+ }, Object.defineProperty(e[t], "name", { value: t, writable: !1 });
906
+ }
907
+ re = !0, process.env.SF_DEBUG === "true" && console.log("[WorkerPool] fs module patched successfully");
908
+ } catch (e) {
909
+ console.error("[WorkerPool] Error patching fs module:", e);
910
+ }
911
+ })()), X("dns") && (o && console.log("[WorkerPool] Patching dns module..."), Qe()), X("crypto") && (o && console.log("[WorkerPool] Patching crypto module..."), (function() {
912
+ if (!ce) try {
913
+ const e = require("node:crypto");
914
+ if (e.__sf_worker_pool_patched__) return;
915
+ Object.defineProperty(e, "__sf_worker_pool_patched__", { value: !0, enumerable: !1, writable: !1, configurable: !1 });
916
+ for (const t of je) if (typeof e[t] == "function") {
917
+ const s = e[t];
918
+ e[t] = function(...n) {
919
+ return typeof n[n.length - 1] == "function" ? _("crypto", t, s, n, this) : s.apply(this, n);
920
+ }, Object.defineProperty(e[t], "name", { value: t, writable: !1 });
921
+ }
922
+ ce = !0, process.env.SF_DEBUG === "true" && console.log("[WorkerPool] crypto module patched successfully");
923
+ } catch (e) {
924
+ console.error("[WorkerPool] Error patching crypto module:", e);
925
+ }
926
+ })()), X("zlib") && (o && console.log("[WorkerPool] Patching zlib module..."), (function() {
927
+ if (!ge) try {
928
+ const e = require("node:zlib");
929
+ if (e.__sf_worker_pool_patched__) return;
930
+ Object.defineProperty(e, "__sf_worker_pool_patched__", { value: !0, enumerable: !1, writable: !1, configurable: !1 });
931
+ for (const t of Me) if (typeof e[t] == "function") {
932
+ const s = e[t];
933
+ e[t] = function(...n) {
934
+ return typeof n[n.length - 1] == "function" ? _("zlib", t, s, n, this) : s.apply(this, n);
935
+ }, Object.defineProperty(e[t], "name", { value: t, writable: !1 });
936
+ }
937
+ ge = !0, process.env.SF_DEBUG === "true" && console.log("[WorkerPool] zlib module patched successfully");
938
+ } catch (e) {
939
+ console.error("[WorkerPool] Error patching zlib module:", e);
940
+ }
941
+ })()), M = !0, o && console.log("[WorkerPool] Worker pool patching initialized");
1138
942
  }
1139
- function st(o) {
943
+ function et() {
944
+ return M;
945
+ }
946
+ function ct(o) {
1140
947
  if (!o || !o.apiKey) {
1141
- const i = `The required API Key is not provided: ${JSON.stringify(o)}`;
1142
- console.error(i);
948
+ const n = `The required API Key is not provided: ${JSON.stringify(o)}`;
949
+ console.error(n);
1143
950
  }
1144
- const { config: e } = Ve(o);
951
+ const { config: e } = We(o);
1145
952
  if (e.sfDebug && console.log("Updated configuration after applying options:", e), !e.apiKey || !e.apiGraphqlEndpoint) {
1146
- const i = `The required config is not provided: ${JSON.stringify(e)}`;
1147
- throw console.error(i), new Error(i);
1148
- }
1149
- Pe() || ke(void 0, e.sfDebug).catch((i) => {
1150
- e.sfDebug && console.error("[FuncSpan] Failed to initialize config loader:", i);
1151
- });
1152
- const t = new oe();
1153
- t.setServiceUUID(e.serviceUUID), (function(i) {
1154
- function s(I, h) {
1155
- i.setOperationName("CollectLogs"), i.doSend([h, I]);
953
+ const n = `The required config is not provided: ${JSON.stringify(e)}`;
954
+ throw console.error(n), new Error(n);
955
+ }
956
+ Pe() || De(void 0, e.sfDebug).catch((n) => {
957
+ e.sfDebug && console.error("[FuncSpan] Failed to initialize config loader:", n);
958
+ }), et() || (qe(), e.sfDebug && console.log("[setupInterceptors] Worker pool patching initialized (DNS tracking enabled)"));
959
+ const t = new Q();
960
+ t.setServiceUUID(e.serviceUUID), (function(n) {
961
+ function i(I, p) {
962
+ n.setOperationName("CollectLogs"), n.doSend([p, I]);
1156
963
  }
1157
- const g = console.log.bind(console), r = console.error.bind(console), a = console.warn.bind(console), c = console.info.bind(console), d = console.debug.bind(console);
964
+ const g = console.log.bind(console), r = console.error.bind(console), c = console.warn.bind(console), a = console.info.bind(console), l = console.debug.bind(console);
1158
965
  console.log = (...I) => {
1159
- s("INFO", I.join(" ")), g(...I);
966
+ i("INFO", I.join(" ")), g(...I);
1160
967
  }, console.error = (...I) => {
1161
- s("ERROR", I.join(" ")), r(...I);
968
+ i("ERROR", I.join(" ")), r(...I);
1162
969
  }, console.warn = (...I) => {
1163
- s("WARN", I.join(" ")), a(...I);
970
+ i("WARN", I.join(" ")), c(...I);
1164
971
  }, console.info = (...I) => {
1165
- s("INFO", I.join(" ")), c(...I);
1166
- }, l().logLevel === "DEBUG" && (console.debug = (...I) => {
1167
- s("DEBUG", I.join(" ")), d(...I);
972
+ i("INFO", I.join(" ")), a(...I);
973
+ }, d().logLevel === "DEBUG" && (console.debug = (...I) => {
974
+ i("DEBUG", I.join(" ")), l(...I);
1168
975
  });
1169
- })(t), (function(i = []) {
1170
- const s = new Le(i);
1171
- new _e().doSend(s.getExcludedDomains());
1172
- const g = new De(), r = new $e();
1173
- s.patchFetch(g, r), s.patchHttp(g, r);
976
+ })(t), (function(n = []) {
977
+ const i = new $e(n);
978
+ new ke().doSend(i.getExcludedDomains());
979
+ const g = new Ue(), r = new Te();
980
+ i.patchFetch(g, r), i.patchHttp(g, r);
1174
981
  })(e.domainsToNotPropagateHeadersTo);
1175
- const n = new Te();
1176
- n.setServiceUUID(e.serviceUUID), Ye(n), Ee(), new ze().send();
1177
- }
1178
- function rt(o, e, t, n = !1) {
1179
- const i = l();
1180
- new be(i.apiKey).identify(o, e, t, n);
982
+ const s = new Ke();
983
+ s.setServiceUUID(e.serviceUUID), Re(s), ze(), new Ee().send();
1181
984
  }
1182
- function at(o, e = {}, t, n = !1) {
1183
- const i = l();
1184
- new be(i.apiKey).addOrUpdateMetadata(o, e, t, n);
985
+ function gt(o, e, t, s = !1) {
986
+ const n = d();
987
+ new he(n.apiKey).identify(o, e, t, s);
1185
988
  }
1186
- class Me extends w {
1187
- constructor() {
1188
- super(), this.operationName = "CollectFunctionSpans";
1189
- }
1190
- send(e) {
1191
- const t = l().sfDebug;
1192
- t && console.log(`[FunctionSpanTransmitter] Preparing to send ${e.length} function span(s)`);
1193
- for (const n of e) try {
1194
- let i;
1195
- if (n.result !== void 0 && n.result !== null) {
1196
- const g = typeof n.result;
1197
- i = JSON.stringify({ type: g, has_value: !0, value: n.result });
1198
- } else i = n.result === null ? JSON.stringify({ type: "null", has_value: !0, value: null }) : JSON.stringify({ type: "undefined", has_value: !1, value: null });
1199
- const s = this.getVariables({ library: "JS/TS BACKEND", version: l().version, spanId: n.spanId, parentSpanId: n.parentSpanId, filePath: n.filePath, lineNumber: n.metadata.line, columnNumber: n.metadata.column, functionName: n.functionName, arguments: JSON.stringify(n.args || {}), returnValue: i, startTimeNs: (1e6 * Date.now() - 1e6 * n.duration).toString(), durationNs: (1e6 * n.duration).toString() });
1200
- t && (console.log(`[FunctionSpanTransmitter] Sending GraphQL mutation to ${this.endpoint}`), console.log("[FunctionSpanTransmitter] Variables:", JSON.stringify(s, null, 2))), F(this.endpoint, this.operationName, this.getQuery(), s), t && console.log(`[FunctionSpanTransmitter] Queued function span for ${n.functionName}`);
1201
- } catch (i) {
1202
- console.error(`[FunctionSpanTransmitter] Error preparing function span for ${n.functionName}:`, i);
1203
- }
1204
- }
1205
- getQuery() {
1206
- return `
1207
- ${this.queryType} ${this.operationName}(
1208
- $apiKey: String!,
1209
- $serviceUuid: String!,
1210
- $sessionId: String!,
1211
- $timestampMs: String!,
1212
- $parentSpanId: String,
1213
- $library: String!,
1214
- $version: String!,
1215
- $spanId: String!,
1216
- $filePath: String!,
1217
- $lineNumber: Int!,
1218
- $columnNumber: Int!,
1219
- $functionName: String!,
1220
- $arguments: String!,
1221
- $returnValue: String,
1222
- $startTimeNs: String!,
1223
- $durationNs: String!
1224
- ) {
1225
- ${this.queryName}(
1226
- apiKey: $apiKey,
1227
- serviceUuid: $serviceUuid,
1228
- sessionId: $sessionId,
1229
- timestampMs: $timestampMs,
1230
- parentSpanId: $parentSpanId,
1231
- library: $library,
1232
- version: $version,
1233
- spanId: $spanId,
1234
- filePath: $filePath,
1235
- lineNumber: $lineNumber,
1236
- columnNumber: $columnNumber,
1237
- functionName: $functionName,
1238
- arguments: $arguments,
1239
- returnValue: $returnValue,
1240
- startTimeNs: $startTimeNs,
1241
- durationNs: $durationNs
1242
- )
1243
- }
1244
- `;
1245
- }
989
+ function lt(o, e = {}, t, s = !1) {
990
+ const n = d();
991
+ new he(n.apiKey).addOrUpdateMetadata(o, e, t, s);
1246
992
  }
1247
- let ne = null;
1248
- function ct(o, e, t, n) {
1249
- const i = function(...s) {
1250
- const g = z(), r = g?.sfDebug || !1;
993
+ let j = null;
994
+ function dt(o, e, t, s) {
995
+ const n = function(...i) {
996
+ const g = Ce(), r = g?.sfDebug || !1;
1251
997
  r && console.log(`[FuncSpan] captureFunctionSpan wrapper called for ${t}::${e}`);
1252
- const a = (function(u, m) {
1253
- const A = Ze();
1254
- if (A) {
1255
- const y = Se(A);
1256
- if (y) return process.env.SF_DEBUG === "true" && console.log(`[FuncSpan] Using HTTP header override for ${u}::${m}`), y;
998
+ const c = (function(m, h) {
999
+ const Z = le();
1000
+ if (Z) {
1001
+ const b = de(Z);
1002
+ if (b) return process.env.SF_DEBUG === "true" && console.log(`[FuncSpan] Using HTTP header override for ${m}::${h}`), b;
1003
+ }
1004
+ try {
1005
+ return xe(m, h);
1006
+ } catch {
1007
+ return { sample_rate: process.env.SF_FUNCSPAN_SAMPLE_RATE ? parseFloat(process.env.SF_FUNCSPAN_SAMPLE_RATE) : 1, capture_arguments: !0, capture_return_value: !0, arg_limit_mb: 1, return_limit_mb: 1, enable_sampling: !1, autocapture_all_child_functions: !1, capture_sf_veritas: !1, parse_json_strings: !1 };
1257
1008
  }
1258
- return Oe(u, m);
1259
1009
  })(t, e);
1260
- if (r && console.log(`[FuncSpan] Config for ${t}::${e}:`, a), a.enable_sampling && a.sample_rate < 1 && Math.random() > a.sample_rate) return r && console.log(`[FuncSpan] Skipping ${e} due to sampling`), o.apply(this, s);
1261
- if (a.sample_rate === 0) return r && console.log(`[FuncSpan] Skipping ${e} - sample_rate is 0.0`), o.apply(this, s);
1010
+ if (r && console.log(`[FuncSpan] Config for ${t}::${e}:`, c), c.enable_sampling && c.sample_rate < 1 && Math.random() > c.sample_rate) return r && console.log(`[FuncSpan] Skipping ${e} due to sampling`), o.apply(this, i);
1011
+ if (c.sample_rate === 0) return r && console.log(`[FuncSpan] Skipping ${e} - sample_rate is 0.0`), o.apply(this, i);
1262
1012
  r && console.log(`[FuncSpan] Capturing function span for ${e}`);
1263
- const c = G.getInstance(), d = c.getCurrentFunctionSpanId(), I = R();
1264
- c.setCurrentFunctionSpanId(I);
1265
- const h = Date.now();
1266
- let p = null;
1267
- a.capture_arguments && (p = {}, n.paramNames.forEach((u, m) => {
1268
- m < s.length && (p[u] = s[m]);
1269
- }), p && a.arg_limit_mb > 0 && (p = ee(p, a.arg_limit_mb)));
1013
+ const a = N.getInstance(), l = a.getCurrentFunctionSpanId(), I = Ie();
1014
+ a.setCurrentFunctionSpanId(I);
1015
+ const p = process.hrtime.bigint(), C = Date.now();
1016
+ let u = null;
1017
+ c.capture_arguments && (u = {}, s.paramNames.forEach((m, h) => {
1018
+ h < i.length && (u[m] = i[h]);
1019
+ }), u && c.arg_limit_mb > 0 && (u = E(u, c.arg_limit_mb)));
1270
1020
  try {
1271
- const u = o.apply(this, s);
1272
- if (u && typeof u.then == "function") return u.then((y) => {
1273
- const b = Date.now();
1274
- let f = null;
1275
- return a.capture_return_value && a.return_limit_mb > 0 && (f = ee(y, a.return_limit_mb)), D({ functionName: e, filePath: t, metadata: n, args: p, result: f, error: null, duration: b - h, async: !0, spanId: I, parentSpanId: d }), d ? c.setCurrentFunctionSpanId(d) : c.clearCurrentFunctionSpanId(), y;
1276
- }, (y) => {
1277
- const b = Date.now();
1278
- throw D({ functionName: e, filePath: t, metadata: n, args: p, result: null, error: y?.message || String(y), duration: b - h, async: !0, spanId: I, parentSpanId: d }), d ? c.setCurrentFunctionSpanId(d) : c.clearCurrentFunctionSpanId(), y;
1021
+ const m = o.apply(this, i);
1022
+ if (m && typeof m.then == "function") return l ? a.setCurrentFunctionSpanId(l) : a.clearCurrentFunctionSpanId(), m.then((f) => {
1023
+ const v = process.hrtime.bigint(), U = Date.now(), T = Number(v - p);
1024
+ let q = null;
1025
+ return c.capture_return_value && c.return_limit_mb > 0 && (q = E(f, c.return_limit_mb)), K({ functionName: e, filePath: t, metadata: s, args: u, result: q, error: null, duration: U - C, durationNs: T, startTimeNs: p.toString(), async: !0, spanId: I, parentSpanId: l, pid: process.pid, threadId: J }), f;
1026
+ }, (f) => {
1027
+ const v = process.hrtime.bigint(), U = Date.now(), T = Number(v - p);
1028
+ throw K({ functionName: e, filePath: t, metadata: s, args: u, result: null, error: f?.message || String(f), duration: U - C, durationNs: T, startTimeNs: p.toString(), async: !0, spanId: I, parentSpanId: l, pid: process.pid, threadId: J }), f;
1279
1029
  });
1280
- const m = Date.now();
1281
- let A = null;
1282
- return a.capture_return_value && a.return_limit_mb > 0 && (A = ee(u, a.return_limit_mb)), D({ functionName: e, filePath: t, metadata: n, args: p, result: A, error: null, duration: m - h, async: !1, spanId: I, parentSpanId: d }), d ? c.setCurrentFunctionSpanId(d) : c.clearCurrentFunctionSpanId(), u;
1283
- } catch (u) {
1284
- const m = Date.now();
1285
- throw D({ functionName: e, filePath: t, metadata: n, args: p, result: null, error: u?.message || String(u), duration: m - h, async: !1, spanId: I, parentSpanId: d }), d ? c.setCurrentFunctionSpanId(d) : c.clearCurrentFunctionSpanId(), u;
1030
+ const h = process.hrtime.bigint(), Z = Date.now(), b = Number(h - p);
1031
+ let y = null;
1032
+ return c.capture_return_value && c.return_limit_mb > 0 && (y = E(m, c.return_limit_mb)), K({ functionName: e, filePath: t, metadata: s, args: u, result: y, error: null, duration: Z - C, durationNs: b, startTimeNs: p.toString(), async: !1, spanId: I, parentSpanId: l, pid: process.pid, threadId: J }), l ? a.setCurrentFunctionSpanId(l) : a.clearCurrentFunctionSpanId(), m;
1033
+ } catch (m) {
1034
+ const h = process.hrtime.bigint(), Z = Date.now(), b = Number(h - p);
1035
+ throw K({ functionName: e, filePath: t, metadata: s, args: u, result: null, error: m?.message || String(m), duration: Z - C, durationNs: b, startTimeNs: p.toString(), async: !1, spanId: I, parentSpanId: l, pid: process.pid, threadId: J }), l ? a.setCurrentFunctionSpanId(l) : a.clearCurrentFunctionSpanId(), m;
1286
1036
  }
1287
1037
  };
1288
- Object.defineProperty(i, "name", { value: e, writable: !1 });
1289
- for (const s in o) o.hasOwnProperty(s) && (i[s] = o[s]);
1290
- return i;
1038
+ Object.defineProperty(n, "name", { value: e, writable: !1 });
1039
+ for (const i in o) o.hasOwnProperty(i) && (n[i] = o[i]);
1040
+ return n;
1291
1041
  }
1292
- function D(o) {
1293
- const e = z(), t = e?.sfDebug || !1;
1042
+ function K(o) {
1043
+ const e = Ce(), t = e?.sfDebug || !1;
1294
1044
  t && console.log("[FuncSpan] captureSpanData called for:", { function: o.functionName, file: o.filePath, duration: `${o.duration}ms`, async: o.async, error: o.error, spanId: o.spanId });
1295
- const n = { functionName: o.functionName, filePath: o.filePath, metadata: o.metadata, args: o.args, result: o.result, error: o.error, duration: o.duration, async: o.async, spanId: o.spanId, parentSpanId: o.parentSpanId };
1296
- t && console.log("[FuncSpan] Sending function span to transmitter:", n);
1297
- try {
1298
- (ne || (ne = new Me()), ne).send([n]), t && console.log("[FuncSpan] Function span sent successfully");
1045
+ const s = { functionName: o.functionName, filePath: o.filePath, metadata: o.metadata, args: o.args, result: o.result, error: o.error, duration: o.duration, durationNs: o.durationNs, async: o.async, spanId: o.spanId, parentSpanId: o.parentSpanId };
1046
+ process.env.SF_FUNCSPAN_CONSOLE_OUTPUT === "true" && console.log(`
1047
+ 📊 Function Span:`, { function: `${o.functionName} (${o.filePath}:${o.metadata.line}:${o.metadata.column})`, duration: `${o.duration.toFixed(2)}ms`, arguments: o.args, result: o.error ? `Error: ${o.error}` : o.result, spanId: o.spanId, parentSpanId: o.parentSpanId || "none" });
1048
+ const n = process.env.SF_FUNCSPAN_JSONL_FILE;
1049
+ if (n) try {
1050
+ const i = n === "true" || n === "1" ? "funcspans.jsonl" : n, g = Date.now(), r = process.hrtime.bigint(), c = BigInt(o.startTimeNs), a = Number(r - c) / 1e6, l = new Date(g - a).toISOString(), I = JSON.stringify({ timestamp: l, functionName: o.functionName, filePath: o.filePath, line: o.metadata.line, column: o.metadata.column, duration: o.duration, durationNs: o.durationNs, startTimeNs: o.startTimeNs, arguments: o.args, returnValue: o.error ? { error: String(o.error) } : o.result, spanId: o.spanId, parentSpanId: o.parentSpanId, async: o.async, pid: o.pid, threadId: o.threadId }) + `
1051
+ `;
1052
+ Ne(i, I, "utf-8");
1053
+ } catch (i) {
1054
+ console.error("[FuncSpan] Error writing to JSONL file:", i);
1055
+ }
1056
+ if (t && console.log("[FuncSpan] Sending function span to transmitter:", s), process.env.SF_FUNCSPAN_SKIP_BACKEND !== "true") try {
1057
+ (j || (j = new ve()), j).send([s]), t && console.log("[FuncSpan] Function span sent successfully");
1299
1058
  } catch (i) {
1300
- console.error("[FuncSpan] Error sending function span:", i);
1059
+ t && console.error("[FuncSpan] Error sending function span:", i);
1301
1060
  }
1302
1061
  }
1303
1062
  export {
1304
- G as ContextManager,
1305
- at as addOrUpdateMetadata,
1306
- ct as captureFunctionSpan,
1307
- Xe as clearFuncspanOverride,
1308
- M as getCurrentFunctionSpanId,
1309
- ot as getDefaultConfig,
1310
- ye as getEnvConfig,
1311
- Ze as getFuncspanOverride,
1312
- Oe as getGlobalConfig,
1313
- rt as identify,
1314
- ke as initializeConfigLoader,
1063
+ N as ContextManager,
1064
+ lt as addOrUpdateMetadata,
1065
+ dt as captureFunctionSpan,
1066
+ Ze as clearFuncspanOverride,
1067
+ $ as getCurrentFunctionSpanId,
1068
+ Se as getDefaultConfig,
1069
+ ue as getEnvConfig,
1070
+ le as getFuncspanOverride,
1071
+ xe as getGlobalConfig,
1072
+ gt as identify,
1073
+ De as initializeConfigLoader,
1074
+ qe as initializeWorkerPoolPatching,
1315
1075
  Pe as isConfigLoaderInitialized,
1316
- Se as parseHeaderOverride,
1317
- it as runWithContext,
1318
- Je as setFuncspanOverride,
1319
- st as setupInterceptors
1076
+ et as isWorkerPoolInitialized,
1077
+ de as parseHeaderOverride,
1078
+ Ct as runWithContext,
1079
+ ye as setFuncspanOverride,
1080
+ ct as setupInterceptors,
1081
+ mt as transformFunctionSpans
1320
1082
  };