@flareapp/core 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -26,7 +26,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  }) : target, mod));
27
27
 
28
28
  //#endregion
29
- const require_urlAttributes = require('./urlAttributes-CNGTgOJp.cjs');
29
+ const require_urlAttributes = require('./urlAttributes-CEP6bOBn.cjs');
30
30
  let error_stack_parser = require("error-stack-parser");
31
31
  error_stack_parser = __toESM(error_stack_parser);
32
32
 
@@ -66,6 +66,11 @@ const BrowserSpanType = {
66
66
  Component: "browser_component",
67
67
  WebVital: "browser_web_vital"
68
68
  };
69
+ const BrowserSpanEventType = {
70
+ Click: "browser_click",
71
+ Input: "browser_input",
72
+ RouteChange: "browser_route_change"
73
+ };
69
74
 
70
75
  //#endregion
71
76
  //#region src/types.ts
@@ -175,6 +180,23 @@ var Api = class {
175
180
  }
176
181
  };
177
182
 
183
+ //#endregion
184
+ //#region src/breadcrumbs/recordBreadcrumb.ts
185
+ const MAX_BREADCRUMB_URL_LENGTH = 256;
186
+ function breadcrumbUrl(href, denylist) {
187
+ const redacted = require_urlAttributes.redactUrlQuery(href, denylist);
188
+ return redacted.length > MAX_BREADCRUMB_URL_LENGTH ? redacted.slice(0, MAX_BREADCRUMB_URL_LENGTH) : redacted;
189
+ }
190
+ function recordBreadcrumb(scopeProvider, config, type, attributes, startTimeUnixNano) {
191
+ if (!config.enableBreadcrumbs) return;
192
+ scopeProvider.active().addBreadcrumb({
193
+ type,
194
+ startTimeUnixNano,
195
+ endTimeUnixNano: null,
196
+ attributes
197
+ }, config.maxBreadcrumbs);
198
+ }
199
+
178
200
  //#endregion
179
201
  //#region src/telemetry/TelemetryBuffer.ts
180
202
  /**
@@ -633,6 +655,7 @@ function userIdentityAttributes(scope) {
633
655
  */
634
656
  var Scope = class {
635
657
  glows = [];
658
+ breadcrumbs = [];
636
659
  pendingAttributes = {};
637
660
  entryPoint = null;
638
661
  /** Caps at `maxGlowsPerReport` by dropping the oldest, so the payload stays bounded. */
@@ -643,6 +666,15 @@ var Scope = class {
643
666
  clearGlows() {
644
667
  this.glows = [];
645
668
  }
669
+ /** Drops the oldest when full. */
670
+ addBreadcrumb(breadcrumb, maxBreadcrumbs) {
671
+ if (maxBreadcrumbs <= 0) return;
672
+ this.breadcrumbs.push(breadcrumb);
673
+ if (this.breadcrumbs.length > maxBreadcrumbs) this.breadcrumbs = this.breadcrumbs.slice(this.breadcrumbs.length - maxBreadcrumbs);
674
+ }
675
+ clearBreadcrumbs() {
676
+ this.breadcrumbs = [];
677
+ }
646
678
  setAttribute(key, value) {
647
679
  this.pendingAttributes[key] = value;
648
680
  }
@@ -1413,6 +1445,8 @@ var Flare = class {
1413
1445
  sourcemapVersionId: require_urlAttributes.SOURCEMAP_VERSION,
1414
1446
  stage: "",
1415
1447
  maxGlowsPerReport: 30,
1448
+ enableBreadcrumbs: false,
1449
+ maxBreadcrumbs: 100,
1416
1450
  ingestUrl: "https://ingress.flareapp.io/v1/errors",
1417
1451
  reportBrowserExtensionErrors: false,
1418
1452
  debug: false,
@@ -1551,6 +1585,7 @@ var Flare = class {
1551
1585
  configure(config) {
1552
1586
  const wasLogsEnabled = this._config.enableLogs;
1553
1587
  const wasTracingEnabled = this._config.enableTracing;
1588
+ const wasBreadcrumbsEnabled = this._config.enableBreadcrumbs;
1554
1589
  this._config = {
1555
1590
  ...this._config,
1556
1591
  ...config
@@ -1560,6 +1595,7 @@ var Flare = class {
1560
1595
  if (config.urlDenylist !== void 0 || config.replaceDefaultUrlDenylist !== void 0) this._config.urlDenylist = require_urlAttributes.resolveDenylist(config.urlDenylist, config.replaceDefaultUrlDenylist ?? this._config.replaceDefaultUrlDenylist);
1561
1596
  if (wasLogsEnabled && this._config.enableLogs === false) this._logger.clear();
1562
1597
  if (config.key !== void 0) this._logger.flush();
1598
+ if (wasBreadcrumbsEnabled && this._config.enableBreadcrumbs === false) this.scopeProvider.active().clearBreadcrumbs();
1563
1599
  if (wasTracingEnabled && this._config.enableTracing === false) this._tracer.clear();
1564
1600
  if (config.key !== void 0) this._tracer.flush();
1565
1601
  return this;
@@ -1583,6 +1619,9 @@ var Flare = class {
1583
1619
  }, this._config.maxGlowsPerReport);
1584
1620
  return this;
1585
1621
  }
1622
+ addBreadcrumb(type, attributes, startTimeUnixNano) {
1623
+ recordBreadcrumb(this.scopeProvider, this._config, type, attributes, startTimeUnixNano);
1624
+ }
1586
1625
  clearGlows() {
1587
1626
  this.scopeProvider.active().clearGlows();
1588
1627
  return this;
@@ -1774,7 +1813,7 @@ var Flare = class {
1774
1813
  message: input.message,
1775
1814
  seenAtUnixNano: input.seenAtUnixNano,
1776
1815
  stacktrace: input.stacktrace,
1777
- events: require_urlAttributes.glowsToEvents(activeScope.glows),
1816
+ events: require_urlAttributes.timelineEvents(activeScope.glows, activeScope.breadcrumbs),
1778
1817
  attributes
1779
1818
  };
1780
1819
  if (input.isLog) report.isLog = true;
@@ -1793,6 +1832,7 @@ var Flare = class {
1793
1832
 
1794
1833
  //#endregion
1795
1834
  exports.Api = Api;
1835
+ exports.BrowserSpanEventType = BrowserSpanEventType;
1796
1836
  exports.BrowserSpanType = BrowserSpanType;
1797
1837
  exports.DEFAULT_MAX_LIVE_TRACES = DEFAULT_MAX_LIVE_TRACES;
1798
1838
  exports.DEFAULT_URL_DENYLIST = require_urlAttributes.DEFAULT_URL_DENYLIST;
@@ -1801,6 +1841,7 @@ exports.FrameworkName = FrameworkName;
1801
1841
  exports.GlobalScopeProvider = GlobalScopeProvider;
1802
1842
  exports.InMemoryActiveSpanHolder = InMemoryActiveSpanHolder;
1803
1843
  exports.Logger = Logger;
1844
+ exports.MAX_BREADCRUMB_URL_LENGTH = MAX_BREADCRUMB_URL_LENGTH;
1804
1845
  exports.NoopFlushScheduler = NoopFlushScheduler;
1805
1846
  exports.NullFileReader = NullFileReader;
1806
1847
  exports.Scope = Scope;
@@ -1809,6 +1850,7 @@ exports.Tracer = Tracer;
1809
1850
  exports.USER_IDENTITY_KEYS = USER_IDENTITY_KEYS;
1810
1851
  exports.assert = require_urlAttributes.assert;
1811
1852
  exports.assertKey = require_urlAttributes.assertKey;
1853
+ exports.breadcrumbUrl = breadcrumbUrl;
1812
1854
  exports.buildTraceparent = buildTraceparent;
1813
1855
  exports.buildTracesEnvelope = buildTracesEnvelope;
1814
1856
  exports.convertToError = require_urlAttributes.convertToError;
@@ -1823,6 +1865,7 @@ exports.glowsToEvents = require_urlAttributes.glowsToEvents;
1823
1865
  exports.now = require_urlAttributes.now;
1824
1866
  exports.parseTraceparent = parseTraceparent;
1825
1867
  exports.readLinesFromFile = readLinesFromFile;
1868
+ exports.recordBreadcrumb = recordBreadcrumb;
1826
1869
  exports.redactObjectValues = require_urlAttributes.redactObjectValues;
1827
1870
  exports.redactUrlQuery = require_urlAttributes.redactUrlQuery;
1828
1871
  exports.resolveDenylist = require_urlAttributes.resolveDenylist;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as User, A as BufferedSpan, B as OtelSpan, D as AttributeValue, E as AnyValue, F as Glow, G as Span, H as Report, I as KeyValue, J as SpanStatus, K as SpanEvent, L as LogsEnvelope, M as EntryPointHandler, N as EntryPointType, O as Attributes, P as Framework, Q as TracesSampler, R as MessageLevel, T as assert, U as SamplingContext, V as OverriddenGrouping, W as SdkInfo, X as StackFrame, Y as SpanStatusCode, Z as TracesEnvelope, _ as flatJsonStringify, a as SafeCloneOptions, b as createIdentityTagger, c as describeRejectionReason, d as redactObjectValues, et as BrowserSpanType, f as redactUrlQuery, g as glowsToEvents, h as now, j as Config, k as BufferedLog, l as routeRejection, m as safeDecode, n as urlAttributes, nt as FrameworkName, o as safeClone, p as resolveDenylist, q as SpanOptions, r as toCustomContext, s as RejectionReporter, tt as SpanTypeName, u as DEFAULT_URL_DENYLIST, v as extractCode, w as assertKey, x as convertToError, y as SdkTaggable, z as OtelLogRecord } from "./urlAttributes-CvOw6tU3.cjs";
1
+ import { $ as TracesSampler, A as BufferedLog, B as OtelLogRecord, D as AnyValue, E as assert, F as Framework, G as SdkInfo, H as OverriddenGrouping, I as Glow, J as SpanOptions, K as Span, L as KeyValue, M as Config, N as EntryPointHandler, O as AttributeValue, P as EntryPointType, Q as TracesEnvelope, R as LogsEnvelope, S as convertToError, T as assertKey, U as Report, V as OtelSpan, W as SamplingContext, X as SpanStatusCode, Y as SpanStatus, Z as StackFrame, _ as glowsToEvents, a as SafeCloneOptions, b as SdkTaggable, c as describeRejectionReason, d as redactObjectValues, et as User, f as redactUrlQuery, h as now, it as FrameworkName, j as BufferedSpan, k as Attributes, l as routeRejection, m as safeDecode, n as urlAttributes, nt as BrowserSpanType, o as safeClone, p as resolveDenylist, q as SpanEvent, r as toCustomContext, rt as SpanTypeName, s as RejectionReporter, tt as BrowserSpanEventType, u as DEFAULT_URL_DENYLIST, v as flatJsonStringify, x as createIdentityTagger, y as extractCode, z as MessageLevel } from "./urlAttributes-DSPpBmH-.cjs";
2
2
 
3
3
  //#region src/api/Api.d.ts
4
4
  declare class Api {
@@ -82,11 +82,15 @@ declare function userIdentityAttributes(scope: Scope): Attributes;
82
82
  */
83
83
  declare class Scope {
84
84
  glows: Glow[];
85
+ breadcrumbs: SpanEvent[];
85
86
  pendingAttributes: Attributes;
86
87
  entryPoint: EntryPointHandler | null;
87
88
  /** Caps at `maxGlowsPerReport` by dropping the oldest, so the payload stays bounded. */
88
89
  addGlow(glow: Glow, maxGlowsPerReport: number): void;
89
90
  clearGlows(): void;
91
+ /** Drops the oldest when full. */
92
+ addBreadcrumb(breadcrumb: SpanEvent, maxBreadcrumbs: number): void;
93
+ clearBreadcrumbs(): void;
90
94
  setAttribute(key: string, value: AttributeValue): void;
91
95
  /** Shallow: last write wins per key, nested objects are not deep-merged. */
92
96
  mergeAttributes(partial: Attributes): void;
@@ -277,6 +281,7 @@ declare class Flare {
277
281
  test(): Promise<void>;
278
282
  private testInternal;
279
283
  glow(name: string, level?: MessageLevel, data?: Record<string, unknown> | Record<string, unknown>[]): this;
284
+ protected addBreadcrumb(type: string, attributes: Attributes, startTimeUnixNano: number): void;
280
285
  clearGlows(): this;
281
286
  addContext(name: string, value: AttributeValue): this;
282
287
  addContextGroup(groupName: string, value: Record<string, AttributeValue>): this;
@@ -314,6 +319,11 @@ declare class Flare {
314
319
  sendReport(report: Report): Promise<void>;
315
320
  }
316
321
  //#endregion
322
+ //#region src/breadcrumbs/recordBreadcrumb.d.ts
323
+ declare const MAX_BREADCRUMB_URL_LENGTH = 256;
324
+ declare function breadcrumbUrl(href: string, denylist: RegExp): string;
325
+ declare function recordBreadcrumb(scopeProvider: ScopeProvider, config: Config, type: string, attributes: Attributes, startTimeUnixNano: number): void;
326
+ //#endregion
317
327
  //#region src/tracing/envelope.d.ts
318
328
  declare function buildTracesEnvelope(spans: BufferedSpan[], resourceAttributes: Attributes, scopeName: string, scopeVersion: string): TracesEnvelope;
319
329
  //#endregion
@@ -343,4 +353,4 @@ declare class NullFileReader implements FileReader {
343
353
  //#region src/stacktrace/createStackTrace.d.ts
344
354
  declare function createStackTrace(error: Error, debug: boolean, fileReader: FileReader): Promise<Array<StackFrame>>;
345
355
  //#endregion
346
- export { type ActiveSpanHolder, type AnyValue, Api, type AttributeValue, type Attributes, BrowserSpanType, type BufferedLog, type BufferedSpan, type Config, type ContextCollector, DEFAULT_MAX_LIVE_TRACES, DEFAULT_URL_DENYLIST, type EntryPointHandler, type EntryPointType, type FileReader, Flare, type FlushFn, type FlushScheduler, type Framework, FrameworkName, GlobalScopeProvider, type Glow, InMemoryActiveSpanHolder, type KeyValue, Logger, type LoggerDeps, type LogsEnvelope, type MessageLevel, NoopFlushScheduler, NullFileReader, type OtelLogRecord, type OtelSpan, type OverriddenGrouping, type RejectionReporter, type Report, type SafeCloneOptions, type SamplingContext, Scope, type ScopeProvider, type SdkInfo, type SdkTaggable, type Span, type SpanEvent, type SpanLifecycleEvent, type SpanLifecycleListener, type SpanOptions, type SpanPhase, type SpanStatus, SpanStatusCode, type SpanTypeName, type StackFrame, Tracer, type TracerDeps, type TracesEnvelope, type TracesSampler, USER_IDENTITY_KEYS, type User, assert, assertKey, buildTraceparent, buildTracesEnvelope, convertToError, createIdentityTagger, createStackTrace, defaultNowNano, describeRejectionReason, extractCode, flatJsonStringify, getCodeSnippet, glowsToEvents, now, parseTraceparent, readLinesFromFile, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, spanId, toCustomContext, urlAttributes, userIdentityAttributes };
356
+ export { type ActiveSpanHolder, type AnyValue, Api, type AttributeValue, type Attributes, BrowserSpanEventType, BrowserSpanType, type BufferedLog, type BufferedSpan, type Config, type ContextCollector, DEFAULT_MAX_LIVE_TRACES, DEFAULT_URL_DENYLIST, type EntryPointHandler, type EntryPointType, type FileReader, Flare, type FlushFn, type FlushScheduler, type Framework, FrameworkName, GlobalScopeProvider, type Glow, InMemoryActiveSpanHolder, type KeyValue, Logger, type LoggerDeps, type LogsEnvelope, MAX_BREADCRUMB_URL_LENGTH, type MessageLevel, NoopFlushScheduler, NullFileReader, type OtelLogRecord, type OtelSpan, type OverriddenGrouping, type RejectionReporter, type Report, type SafeCloneOptions, type SamplingContext, Scope, type ScopeProvider, type SdkInfo, type SdkTaggable, type Span, type SpanEvent, type SpanLifecycleEvent, type SpanLifecycleListener, type SpanOptions, type SpanPhase, type SpanStatus, SpanStatusCode, type SpanTypeName, type StackFrame, Tracer, type TracerDeps, type TracesEnvelope, type TracesSampler, USER_IDENTITY_KEYS, type User, assert, assertKey, breadcrumbUrl, buildTraceparent, buildTracesEnvelope, convertToError, createIdentityTagger, createStackTrace, defaultNowNano, describeRejectionReason, extractCode, flatJsonStringify, getCodeSnippet, glowsToEvents, now, parseTraceparent, readLinesFromFile, recordBreadcrumb, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, spanId, toCustomContext, urlAttributes, userIdentityAttributes };
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as User, A as BufferedSpan, B as OtelSpan, D as AttributeValue, E as AnyValue, F as Glow, G as Span, H as Report, I as KeyValue, J as SpanStatus, K as SpanEvent, L as LogsEnvelope, M as EntryPointHandler, N as EntryPointType, O as Attributes, P as Framework, Q as TracesSampler, R as MessageLevel, T as assert, U as SamplingContext, V as OverriddenGrouping, W as SdkInfo, X as StackFrame, Y as SpanStatusCode, Z as TracesEnvelope, _ as flatJsonStringify, a as SafeCloneOptions, b as createIdentityTagger, c as describeRejectionReason, d as redactObjectValues, et as BrowserSpanType, f as redactUrlQuery, g as glowsToEvents, h as now, j as Config, k as BufferedLog, l as routeRejection, m as safeDecode, n as urlAttributes, nt as FrameworkName, o as safeClone, p as resolveDenylist, q as SpanOptions, r as toCustomContext, s as RejectionReporter, tt as SpanTypeName, u as DEFAULT_URL_DENYLIST, v as extractCode, w as assertKey, x as convertToError, y as SdkTaggable, z as OtelLogRecord } from "./urlAttributes-B9BlkrfW.mjs";
1
+ import { $ as TracesSampler, A as BufferedLog, B as OtelLogRecord, D as AnyValue, E as assert, F as Framework, G as SdkInfo, H as OverriddenGrouping, I as Glow, J as SpanOptions, K as Span, L as KeyValue, M as Config, N as EntryPointHandler, O as AttributeValue, P as EntryPointType, Q as TracesEnvelope, R as LogsEnvelope, S as convertToError, T as assertKey, U as Report, V as OtelSpan, W as SamplingContext, X as SpanStatusCode, Y as SpanStatus, Z as StackFrame, _ as glowsToEvents, a as SafeCloneOptions, b as SdkTaggable, c as describeRejectionReason, d as redactObjectValues, et as User, f as redactUrlQuery, h as now, it as FrameworkName, j as BufferedSpan, k as Attributes, l as routeRejection, m as safeDecode, n as urlAttributes, nt as BrowserSpanType, o as safeClone, p as resolveDenylist, q as SpanEvent, r as toCustomContext, rt as SpanTypeName, s as RejectionReporter, tt as BrowserSpanEventType, u as DEFAULT_URL_DENYLIST, v as flatJsonStringify, x as createIdentityTagger, y as extractCode, z as MessageLevel } from "./urlAttributes-CYJKlJKi.mjs";
2
2
 
3
3
  //#region src/api/Api.d.ts
4
4
  declare class Api {
@@ -82,11 +82,15 @@ declare function userIdentityAttributes(scope: Scope): Attributes;
82
82
  */
83
83
  declare class Scope {
84
84
  glows: Glow[];
85
+ breadcrumbs: SpanEvent[];
85
86
  pendingAttributes: Attributes;
86
87
  entryPoint: EntryPointHandler | null;
87
88
  /** Caps at `maxGlowsPerReport` by dropping the oldest, so the payload stays bounded. */
88
89
  addGlow(glow: Glow, maxGlowsPerReport: number): void;
89
90
  clearGlows(): void;
91
+ /** Drops the oldest when full. */
92
+ addBreadcrumb(breadcrumb: SpanEvent, maxBreadcrumbs: number): void;
93
+ clearBreadcrumbs(): void;
90
94
  setAttribute(key: string, value: AttributeValue): void;
91
95
  /** Shallow: last write wins per key, nested objects are not deep-merged. */
92
96
  mergeAttributes(partial: Attributes): void;
@@ -277,6 +281,7 @@ declare class Flare {
277
281
  test(): Promise<void>;
278
282
  private testInternal;
279
283
  glow(name: string, level?: MessageLevel, data?: Record<string, unknown> | Record<string, unknown>[]): this;
284
+ protected addBreadcrumb(type: string, attributes: Attributes, startTimeUnixNano: number): void;
280
285
  clearGlows(): this;
281
286
  addContext(name: string, value: AttributeValue): this;
282
287
  addContextGroup(groupName: string, value: Record<string, AttributeValue>): this;
@@ -314,6 +319,11 @@ declare class Flare {
314
319
  sendReport(report: Report): Promise<void>;
315
320
  }
316
321
  //#endregion
322
+ //#region src/breadcrumbs/recordBreadcrumb.d.ts
323
+ declare const MAX_BREADCRUMB_URL_LENGTH = 256;
324
+ declare function breadcrumbUrl(href: string, denylist: RegExp): string;
325
+ declare function recordBreadcrumb(scopeProvider: ScopeProvider, config: Config, type: string, attributes: Attributes, startTimeUnixNano: number): void;
326
+ //#endregion
317
327
  //#region src/tracing/envelope.d.ts
318
328
  declare function buildTracesEnvelope(spans: BufferedSpan[], resourceAttributes: Attributes, scopeName: string, scopeVersion: string): TracesEnvelope;
319
329
  //#endregion
@@ -343,4 +353,4 @@ declare class NullFileReader implements FileReader {
343
353
  //#region src/stacktrace/createStackTrace.d.ts
344
354
  declare function createStackTrace(error: Error, debug: boolean, fileReader: FileReader): Promise<Array<StackFrame>>;
345
355
  //#endregion
346
- export { type ActiveSpanHolder, type AnyValue, Api, type AttributeValue, type Attributes, BrowserSpanType, type BufferedLog, type BufferedSpan, type Config, type ContextCollector, DEFAULT_MAX_LIVE_TRACES, DEFAULT_URL_DENYLIST, type EntryPointHandler, type EntryPointType, type FileReader, Flare, type FlushFn, type FlushScheduler, type Framework, FrameworkName, GlobalScopeProvider, type Glow, InMemoryActiveSpanHolder, type KeyValue, Logger, type LoggerDeps, type LogsEnvelope, type MessageLevel, NoopFlushScheduler, NullFileReader, type OtelLogRecord, type OtelSpan, type OverriddenGrouping, type RejectionReporter, type Report, type SafeCloneOptions, type SamplingContext, Scope, type ScopeProvider, type SdkInfo, type SdkTaggable, type Span, type SpanEvent, type SpanLifecycleEvent, type SpanLifecycleListener, type SpanOptions, type SpanPhase, type SpanStatus, SpanStatusCode, type SpanTypeName, type StackFrame, Tracer, type TracerDeps, type TracesEnvelope, type TracesSampler, USER_IDENTITY_KEYS, type User, assert, assertKey, buildTraceparent, buildTracesEnvelope, convertToError, createIdentityTagger, createStackTrace, defaultNowNano, describeRejectionReason, extractCode, flatJsonStringify, getCodeSnippet, glowsToEvents, now, parseTraceparent, readLinesFromFile, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, spanId, toCustomContext, urlAttributes, userIdentityAttributes };
356
+ export { type ActiveSpanHolder, type AnyValue, Api, type AttributeValue, type Attributes, BrowserSpanEventType, BrowserSpanType, type BufferedLog, type BufferedSpan, type Config, type ContextCollector, DEFAULT_MAX_LIVE_TRACES, DEFAULT_URL_DENYLIST, type EntryPointHandler, type EntryPointType, type FileReader, Flare, type FlushFn, type FlushScheduler, type Framework, FrameworkName, GlobalScopeProvider, type Glow, InMemoryActiveSpanHolder, type KeyValue, Logger, type LoggerDeps, type LogsEnvelope, MAX_BREADCRUMB_URL_LENGTH, type MessageLevel, NoopFlushScheduler, NullFileReader, type OtelLogRecord, type OtelSpan, type OverriddenGrouping, type RejectionReporter, type Report, type SafeCloneOptions, type SamplingContext, Scope, type ScopeProvider, type SdkInfo, type SdkTaggable, type Span, type SpanEvent, type SpanLifecycleEvent, type SpanLifecycleListener, type SpanOptions, type SpanPhase, type SpanStatus, SpanStatusCode, type SpanTypeName, type StackFrame, Tracer, type TracerDeps, type TracesEnvelope, type TracesSampler, USER_IDENTITY_KEYS, type User, assert, assertKey, breadcrumbUrl, buildTraceparent, buildTracesEnvelope, convertToError, createIdentityTagger, createStackTrace, defaultNowNano, describeRejectionReason, extractCode, flatJsonStringify, getCodeSnippet, glowsToEvents, now, parseTraceparent, readLinesFromFile, recordBreadcrumb, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, spanId, toCustomContext, urlAttributes, userIdentityAttributes };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { D as KEY, E as CLIENT_VERSION, O as SOURCEMAP_VERSION, T as assert, _ as createTraversalBudget, a as routeRejection, b as createIdentityTagger, c as redactUrlQuery, d as now, f as glowsToEvents, g as TRUNCATED, h as MAX_TRAVERSAL_DEPTH, i as describeRejectionReason, l as resolveDenylist, m as safeClone, n as urlAttributes, o as DEFAULT_URL_DENYLIST, p as flatJsonStringify, r as toCustomContext, s as redactObjectValues, u as safeDecode, v as spendNode, w as assertKey, x as convertToError, y as extractCode } from "./urlAttributes-D3gCx23B.mjs";
1
+ import { D as CLIENT_VERSION, E as assert, O as KEY, S as convertToError, T as assertKey, _ as TRUNCATED, a as routeRejection, b as extractCode, c as redactUrlQuery, d as now, f as timelineEvents, g as MAX_TRAVERSAL_DEPTH, h as safeClone, i as describeRejectionReason, k as SOURCEMAP_VERSION, l as resolveDenylist, m as flatJsonStringify, n as urlAttributes, o as DEFAULT_URL_DENYLIST, p as glowsToEvents, r as toCustomContext, s as redactObjectValues, u as safeDecode, v as createTraversalBudget, x as createIdentityTagger, y as spendNode } from "./urlAttributes-qNkR9fIF.mjs";
2
2
  import ErrorStackParser from "error-stack-parser";
3
3
 
4
4
  //#region src/framework.ts
@@ -37,6 +37,11 @@ const BrowserSpanType = {
37
37
  Component: "browser_component",
38
38
  WebVital: "browser_web_vital"
39
39
  };
40
+ const BrowserSpanEventType = {
41
+ Click: "browser_click",
42
+ Input: "browser_input",
43
+ RouteChange: "browser_route_change"
44
+ };
40
45
 
41
46
  //#endregion
42
47
  //#region src/types.ts
@@ -146,6 +151,23 @@ var Api = class {
146
151
  }
147
152
  };
148
153
 
154
+ //#endregion
155
+ //#region src/breadcrumbs/recordBreadcrumb.ts
156
+ const MAX_BREADCRUMB_URL_LENGTH = 256;
157
+ function breadcrumbUrl(href, denylist) {
158
+ const redacted = redactUrlQuery(href, denylist);
159
+ return redacted.length > MAX_BREADCRUMB_URL_LENGTH ? redacted.slice(0, MAX_BREADCRUMB_URL_LENGTH) : redacted;
160
+ }
161
+ function recordBreadcrumb(scopeProvider, config, type, attributes, startTimeUnixNano) {
162
+ if (!config.enableBreadcrumbs) return;
163
+ scopeProvider.active().addBreadcrumb({
164
+ type,
165
+ startTimeUnixNano,
166
+ endTimeUnixNano: null,
167
+ attributes
168
+ }, config.maxBreadcrumbs);
169
+ }
170
+
149
171
  //#endregion
150
172
  //#region src/telemetry/TelemetryBuffer.ts
151
173
  /**
@@ -604,6 +626,7 @@ function userIdentityAttributes(scope) {
604
626
  */
605
627
  var Scope = class {
606
628
  glows = [];
629
+ breadcrumbs = [];
607
630
  pendingAttributes = {};
608
631
  entryPoint = null;
609
632
  /** Caps at `maxGlowsPerReport` by dropping the oldest, so the payload stays bounded. */
@@ -614,6 +637,15 @@ var Scope = class {
614
637
  clearGlows() {
615
638
  this.glows = [];
616
639
  }
640
+ /** Drops the oldest when full. */
641
+ addBreadcrumb(breadcrumb, maxBreadcrumbs) {
642
+ if (maxBreadcrumbs <= 0) return;
643
+ this.breadcrumbs.push(breadcrumb);
644
+ if (this.breadcrumbs.length > maxBreadcrumbs) this.breadcrumbs = this.breadcrumbs.slice(this.breadcrumbs.length - maxBreadcrumbs);
645
+ }
646
+ clearBreadcrumbs() {
647
+ this.breadcrumbs = [];
648
+ }
617
649
  setAttribute(key, value) {
618
650
  this.pendingAttributes[key] = value;
619
651
  }
@@ -1384,6 +1416,8 @@ var Flare = class {
1384
1416
  sourcemapVersionId: SOURCEMAP_VERSION,
1385
1417
  stage: "",
1386
1418
  maxGlowsPerReport: 30,
1419
+ enableBreadcrumbs: false,
1420
+ maxBreadcrumbs: 100,
1387
1421
  ingestUrl: "https://ingress.flareapp.io/v1/errors",
1388
1422
  reportBrowserExtensionErrors: false,
1389
1423
  debug: false,
@@ -1522,6 +1556,7 @@ var Flare = class {
1522
1556
  configure(config) {
1523
1557
  const wasLogsEnabled = this._config.enableLogs;
1524
1558
  const wasTracingEnabled = this._config.enableTracing;
1559
+ const wasBreadcrumbsEnabled = this._config.enableBreadcrumbs;
1525
1560
  this._config = {
1526
1561
  ...this._config,
1527
1562
  ...config
@@ -1531,6 +1566,7 @@ var Flare = class {
1531
1566
  if (config.urlDenylist !== void 0 || config.replaceDefaultUrlDenylist !== void 0) this._config.urlDenylist = resolveDenylist(config.urlDenylist, config.replaceDefaultUrlDenylist ?? this._config.replaceDefaultUrlDenylist);
1532
1567
  if (wasLogsEnabled && this._config.enableLogs === false) this._logger.clear();
1533
1568
  if (config.key !== void 0) this._logger.flush();
1569
+ if (wasBreadcrumbsEnabled && this._config.enableBreadcrumbs === false) this.scopeProvider.active().clearBreadcrumbs();
1534
1570
  if (wasTracingEnabled && this._config.enableTracing === false) this._tracer.clear();
1535
1571
  if (config.key !== void 0) this._tracer.flush();
1536
1572
  return this;
@@ -1554,6 +1590,9 @@ var Flare = class {
1554
1590
  }, this._config.maxGlowsPerReport);
1555
1591
  return this;
1556
1592
  }
1593
+ addBreadcrumb(type, attributes, startTimeUnixNano) {
1594
+ recordBreadcrumb(this.scopeProvider, this._config, type, attributes, startTimeUnixNano);
1595
+ }
1557
1596
  clearGlows() {
1558
1597
  this.scopeProvider.active().clearGlows();
1559
1598
  return this;
@@ -1745,7 +1784,7 @@ var Flare = class {
1745
1784
  message: input.message,
1746
1785
  seenAtUnixNano: input.seenAtUnixNano,
1747
1786
  stacktrace: input.stacktrace,
1748
- events: glowsToEvents(activeScope.glows),
1787
+ events: timelineEvents(activeScope.glows, activeScope.breadcrumbs),
1749
1788
  attributes
1750
1789
  };
1751
1790
  if (input.isLog) report.isLog = true;
@@ -1763,4 +1802,4 @@ var Flare = class {
1763
1802
  };
1764
1803
 
1765
1804
  //#endregion
1766
- export { Api, BrowserSpanType, DEFAULT_MAX_LIVE_TRACES, DEFAULT_URL_DENYLIST, Flare, FrameworkName, GlobalScopeProvider, InMemoryActiveSpanHolder, Logger, NoopFlushScheduler, NullFileReader, Scope, SpanStatusCode, Tracer, USER_IDENTITY_KEYS, assert, assertKey, buildTraceparent, buildTracesEnvelope, convertToError, createIdentityTagger, createStackTrace, defaultNowNano, describeRejectionReason, extractCode, flatJsonStringify, getCodeSnippet, glowsToEvents, now, parseTraceparent, readLinesFromFile, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, spanId, toCustomContext, urlAttributes, userIdentityAttributes };
1805
+ export { Api, BrowserSpanEventType, BrowserSpanType, DEFAULT_MAX_LIVE_TRACES, DEFAULT_URL_DENYLIST, Flare, FrameworkName, GlobalScopeProvider, InMemoryActiveSpanHolder, Logger, MAX_BREADCRUMB_URL_LENGTH, NoopFlushScheduler, NullFileReader, Scope, SpanStatusCode, Tracer, USER_IDENTITY_KEYS, assert, assertKey, breadcrumbUrl, buildTraceparent, buildTracesEnvelope, convertToError, createIdentityTagger, createStackTrace, defaultNowNano, describeRejectionReason, extractCode, flatJsonStringify, getCodeSnippet, glowsToEvents, now, parseTraceparent, readLinesFromFile, recordBreadcrumb, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, spanId, toCustomContext, urlAttributes, userIdentityAttributes };
@@ -1,6 +1,6 @@
1
1
 
2
2
  //#region src/env/index.ts
3
- const CLIENT_VERSION = typeof process !== "undefined" && true ? "2.8.0" : "?";
3
+ const CLIENT_VERSION = typeof process !== "undefined" && true ? "2.9.0" : "?";
4
4
  const KEY = typeof FLARE_JS_KEY === "undefined" ? "" : FLARE_JS_KEY;
5
5
  const SOURCEMAP_VERSION = typeof FLARE_SOURCEMAP_VERSION === "undefined" ? "" : FLARE_SOURCEMAP_VERSION;
6
6
 
@@ -218,6 +218,15 @@ function glowsToEvents(glows) {
218
218
  }));
219
219
  }
220
220
 
221
+ //#endregion
222
+ //#region src/util/timelineEvents.ts
223
+ function byTime(a, b) {
224
+ return a.startTimeUnixNano - b.startTimeUnixNano;
225
+ }
226
+ function timelineEvents(glows, breadcrumbs) {
227
+ return [...glowsToEvents(glows), ...breadcrumbs].sort(byTime);
228
+ }
229
+
221
230
  //#endregion
222
231
  //#region src/util/now.ts
223
232
  function now() {
@@ -531,6 +540,12 @@ Object.defineProperty(exports, 'spendNode', {
531
540
  return spendNode;
532
541
  }
533
542
  });
543
+ Object.defineProperty(exports, 'timelineEvents', {
544
+ enumerable: true,
545
+ get: function () {
546
+ return timelineEvents;
547
+ }
548
+ });
534
549
  Object.defineProperty(exports, 'toCustomContext', {
535
550
  enumerable: true,
536
551
  get: function () {
@@ -37,6 +37,12 @@ declare const BrowserSpanType: {
37
37
  type BrowserSpanType = (typeof BrowserSpanType)[keyof typeof BrowserSpanType];
38
38
  /** Any other value stays legal, so a host SDK can stamp its own without a core release. */
39
39
  type SpanTypeName = BrowserSpanType | (string & {});
40
+ declare const BrowserSpanEventType: {
41
+ readonly Click: "browser_click";
42
+ readonly Input: "browser_input";
43
+ readonly RouteChange: "browser_route_change";
44
+ };
45
+ type BrowserSpanEventType = (typeof BrowserSpanEventType)[keyof typeof BrowserSpanEventType];
40
46
  //#endregion
41
47
  //#region src/types.d.ts
42
48
  type MessageLevel = 'debug' | 'info' | 'notice' | 'warning' | 'error' | 'critical' | 'alert' | 'emergency';
@@ -63,6 +69,8 @@ type Config = {
63
69
  sourcemapVersionId: string;
64
70
  stage: string;
65
71
  maxGlowsPerReport: number;
72
+ enableBreadcrumbs: boolean;
73
+ maxBreadcrumbs: number;
66
74
  reportBrowserExtensionErrors: boolean;
67
75
  ingestUrl: string;
68
76
  debug: boolean;
@@ -366,6 +374,9 @@ declare function flatJsonStringify(json: object): string;
366
374
  //#region src/util/glowsToEvents.d.ts
367
375
  declare function glowsToEvents(glows: Glow[]): SpanEvent[];
368
376
  //#endregion
377
+ //#region src/util/timelineEvents.d.ts
378
+ declare function timelineEvents(glows: Glow[], breadcrumbs: SpanEvent[]): SpanEvent[];
379
+ //#endregion
369
380
  //#region src/util/now.d.ts
370
381
  declare function now(): number;
371
382
  //#endregion
@@ -449,4 +460,4 @@ declare const MAX_URL_LENGTH = 2048;
449
460
  */
450
461
  declare function urlAttributes(url: string, denylist?: RegExp): Attributes;
451
462
  //#endregion
452
- export { User as $, BufferedSpan as A, OtelSpan as B, createComponentMatcher as C, AttributeValue as D, AnyValue as E, Glow as F, Span as G, Report as H, KeyValue as I, SpanStatus as J, SpanEvent as K, LogsEnvelope as L, EntryPointHandler as M, EntryPointType as N, Attributes as O, Framework as P, TracesSampler as Q, MessageLevel as R, ProfileComponentsOption as S, assert as T, SamplingContext as U, OverriddenGrouping as V, SdkInfo as W, StackFrame as X, SpanStatusCode as Y, TracesEnvelope as Z, flatJsonStringify as _, SafeCloneOptions as a, createIdentityTagger as b, describeRejectionReason as c, redactObjectValues as d, BrowserSpanType as et, redactUrlQuery as f, glowsToEvents as g, now as h, withoutStatefulFlags as i, Config as j, BufferedLog as k, routeRejection as l, safeDecode as m, urlAttributes as n, FrameworkName as nt, safeClone as o, resolveDenylist as p, SpanOptions as q, toCustomContext as r, RejectionReporter as s, MAX_URL_LENGTH as t, SpanTypeName as tt, DEFAULT_URL_DENYLIST as u, extractCode as v, assertKey as w, convertToError as x, SdkTaggable as y, OtelLogRecord as z };
463
+ export { TracesSampler as $, BufferedLog as A, OtelLogRecord as B, ProfileComponentsOption as C, AnyValue as D, assert as E, Framework as F, SdkInfo as G, OverriddenGrouping as H, Glow as I, SpanOptions as J, Span as K, KeyValue as L, Config as M, EntryPointHandler as N, AttributeValue as O, EntryPointType as P, TracesEnvelope as Q, LogsEnvelope as R, convertToError as S, assertKey as T, Report as U, OtelSpan as V, SamplingContext as W, SpanStatusCode as X, SpanStatus as Y, StackFrame as Z, glowsToEvents as _, SafeCloneOptions as a, SdkTaggable as b, describeRejectionReason as c, redactObjectValues as d, User as et, redactUrlQuery as f, timelineEvents as g, now as h, withoutStatefulFlags as i, FrameworkName as it, BufferedSpan as j, Attributes as k, routeRejection as l, safeDecode as m, urlAttributes as n, BrowserSpanType as nt, safeClone as o, resolveDenylist as p, SpanEvent as q, toCustomContext as r, SpanTypeName as rt, RejectionReporter as s, MAX_URL_LENGTH as t, BrowserSpanEventType as tt, DEFAULT_URL_DENYLIST as u, flatJsonStringify as v, createComponentMatcher as w, createIdentityTagger as x, extractCode as y, MessageLevel as z };
@@ -37,6 +37,12 @@ declare const BrowserSpanType: {
37
37
  type BrowserSpanType = (typeof BrowserSpanType)[keyof typeof BrowserSpanType];
38
38
  /** Any other value stays legal, so a host SDK can stamp its own without a core release. */
39
39
  type SpanTypeName = BrowserSpanType | (string & {});
40
+ declare const BrowserSpanEventType: {
41
+ readonly Click: "browser_click";
42
+ readonly Input: "browser_input";
43
+ readonly RouteChange: "browser_route_change";
44
+ };
45
+ type BrowserSpanEventType = (typeof BrowserSpanEventType)[keyof typeof BrowserSpanEventType];
40
46
  //#endregion
41
47
  //#region src/types.d.ts
42
48
  type MessageLevel = 'debug' | 'info' | 'notice' | 'warning' | 'error' | 'critical' | 'alert' | 'emergency';
@@ -63,6 +69,8 @@ type Config = {
63
69
  sourcemapVersionId: string;
64
70
  stage: string;
65
71
  maxGlowsPerReport: number;
72
+ enableBreadcrumbs: boolean;
73
+ maxBreadcrumbs: number;
66
74
  reportBrowserExtensionErrors: boolean;
67
75
  ingestUrl: string;
68
76
  debug: boolean;
@@ -366,6 +374,9 @@ declare function flatJsonStringify(json: object): string;
366
374
  //#region src/util/glowsToEvents.d.ts
367
375
  declare function glowsToEvents(glows: Glow[]): SpanEvent[];
368
376
  //#endregion
377
+ //#region src/util/timelineEvents.d.ts
378
+ declare function timelineEvents(glows: Glow[], breadcrumbs: SpanEvent[]): SpanEvent[];
379
+ //#endregion
369
380
  //#region src/util/now.d.ts
370
381
  declare function now(): number;
371
382
  //#endregion
@@ -449,4 +460,4 @@ declare const MAX_URL_LENGTH = 2048;
449
460
  */
450
461
  declare function urlAttributes(url: string, denylist?: RegExp): Attributes;
451
462
  //#endregion
452
- export { User as $, BufferedSpan as A, OtelSpan as B, createComponentMatcher as C, AttributeValue as D, AnyValue as E, Glow as F, Span as G, Report as H, KeyValue as I, SpanStatus as J, SpanEvent as K, LogsEnvelope as L, EntryPointHandler as M, EntryPointType as N, Attributes as O, Framework as P, TracesSampler as Q, MessageLevel as R, ProfileComponentsOption as S, assert as T, SamplingContext as U, OverriddenGrouping as V, SdkInfo as W, StackFrame as X, SpanStatusCode as Y, TracesEnvelope as Z, flatJsonStringify as _, SafeCloneOptions as a, createIdentityTagger as b, describeRejectionReason as c, redactObjectValues as d, BrowserSpanType as et, redactUrlQuery as f, glowsToEvents as g, now as h, withoutStatefulFlags as i, Config as j, BufferedLog as k, routeRejection as l, safeDecode as m, urlAttributes as n, FrameworkName as nt, safeClone as o, resolveDenylist as p, SpanOptions as q, toCustomContext as r, RejectionReporter as s, MAX_URL_LENGTH as t, SpanTypeName as tt, DEFAULT_URL_DENYLIST as u, extractCode as v, assertKey as w, convertToError as x, SdkTaggable as y, OtelLogRecord as z };
463
+ export { TracesSampler as $, BufferedLog as A, OtelLogRecord as B, ProfileComponentsOption as C, AnyValue as D, assert as E, Framework as F, SdkInfo as G, OverriddenGrouping as H, Glow as I, SpanOptions as J, Span as K, KeyValue as L, Config as M, EntryPointHandler as N, AttributeValue as O, EntryPointType as P, TracesEnvelope as Q, LogsEnvelope as R, convertToError as S, assertKey as T, Report as U, OtelSpan as V, SamplingContext as W, SpanStatusCode as X, SpanStatus as Y, StackFrame as Z, glowsToEvents as _, SafeCloneOptions as a, SdkTaggable as b, describeRejectionReason as c, redactObjectValues as d, User as et, redactUrlQuery as f, timelineEvents as g, now as h, withoutStatefulFlags as i, FrameworkName as it, BufferedSpan as j, Attributes as k, routeRejection as l, safeDecode as m, urlAttributes as n, BrowserSpanType as nt, safeClone as o, resolveDenylist as p, SpanEvent as q, toCustomContext as r, SpanTypeName as rt, RejectionReporter as s, MAX_URL_LENGTH as t, BrowserSpanEventType as tt, DEFAULT_URL_DENYLIST as u, flatJsonStringify as v, createComponentMatcher as w, createIdentityTagger as x, extractCode as y, MessageLevel as z };
@@ -1,5 +1,5 @@
1
1
  //#region src/env/index.ts
2
- const CLIENT_VERSION = typeof process !== "undefined" && true ? "2.8.0" : "?";
2
+ const CLIENT_VERSION = typeof process !== "undefined" && true ? "2.9.0" : "?";
3
3
  const KEY = typeof FLARE_JS_KEY === "undefined" ? "" : FLARE_JS_KEY;
4
4
  const SOURCEMAP_VERSION = typeof FLARE_SOURCEMAP_VERSION === "undefined" ? "" : FLARE_SOURCEMAP_VERSION;
5
5
 
@@ -217,6 +217,15 @@ function glowsToEvents(glows) {
217
217
  }));
218
218
  }
219
219
 
220
+ //#endregion
221
+ //#region src/util/timelineEvents.ts
222
+ function byTime(a, b) {
223
+ return a.startTimeUnixNano - b.startTimeUnixNano;
224
+ }
225
+ function timelineEvents(glows, breadcrumbs) {
226
+ return [...glowsToEvents(glows), ...breadcrumbs].sort(byTime);
227
+ }
228
+
220
229
  //#endregion
221
230
  //#region src/util/now.ts
222
231
  function now() {
@@ -380,4 +389,4 @@ function urlAttributes(url, denylist = DEFAULT_URL_DENYLIST) {
380
389
  }
381
390
 
382
391
  //#endregion
383
- export { withoutStatefulFlags as C, KEY as D, CLIENT_VERSION as E, SOURCEMAP_VERSION as O, createComponentMatcher as S, assert as T, createTraversalBudget as _, routeRejection as a, createIdentityTagger as b, redactUrlQuery as c, now as d, glowsToEvents as f, TRUNCATED as g, MAX_TRAVERSAL_DEPTH as h, describeRejectionReason as i, resolveDenylist as l, safeClone as m, urlAttributes as n, DEFAULT_URL_DENYLIST as o, flatJsonStringify as p, toCustomContext as r, redactObjectValues as s, MAX_URL_LENGTH as t, safeDecode as u, spendNode as v, assertKey as w, convertToError as x, extractCode as y };
392
+ export { createComponentMatcher as C, CLIENT_VERSION as D, assert as E, KEY as O, convertToError as S, assertKey as T, TRUNCATED as _, routeRejection as a, extractCode as b, redactUrlQuery as c, now as d, timelineEvents as f, MAX_TRAVERSAL_DEPTH as g, safeClone as h, describeRejectionReason as i, SOURCEMAP_VERSION as k, resolveDenylist as l, flatJsonStringify as m, urlAttributes as n, DEFAULT_URL_DENYLIST as o, glowsToEvents as p, toCustomContext as r, redactObjectValues as s, MAX_URL_LENGTH as t, safeDecode as u, createTraversalBudget as v, withoutStatefulFlags as w, createIdentityTagger as x, spendNode as y };
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_urlAttributes = require('../urlAttributes-CNGTgOJp.cjs');
2
+ const require_urlAttributes = require('../urlAttributes-CEP6bOBn.cjs');
3
3
 
4
4
  exports.DEFAULT_URL_DENYLIST = require_urlAttributes.DEFAULT_URL_DENYLIST;
5
5
  exports.MAX_URL_LENGTH = require_urlAttributes.MAX_URL_LENGTH;
@@ -19,6 +19,7 @@ exports.resolveDenylist = require_urlAttributes.resolveDenylist;
19
19
  exports.routeRejection = require_urlAttributes.routeRejection;
20
20
  exports.safeClone = require_urlAttributes.safeClone;
21
21
  exports.safeDecode = require_urlAttributes.safeDecode;
22
+ exports.timelineEvents = require_urlAttributes.timelineEvents;
22
23
  exports.toCustomContext = require_urlAttributes.toCustomContext;
23
24
  exports.urlAttributes = require_urlAttributes.urlAttributes;
24
25
  exports.withoutStatefulFlags = require_urlAttributes.withoutStatefulFlags;
@@ -1,2 +1,2 @@
1
- import { C as createComponentMatcher, S as ProfileComponentsOption, T as assert, _ as flatJsonStringify, a as SafeCloneOptions, b as createIdentityTagger, c as describeRejectionReason, d as redactObjectValues, f as redactUrlQuery, g as glowsToEvents, h as now, i as withoutStatefulFlags, l as routeRejection, m as safeDecode, n as urlAttributes, o as safeClone, p as resolveDenylist, r as toCustomContext, s as RejectionReporter, t as MAX_URL_LENGTH, u as DEFAULT_URL_DENYLIST, v as extractCode, w as assertKey, x as convertToError, y as SdkTaggable } from "../urlAttributes-CvOw6tU3.cjs";
2
- export { DEFAULT_URL_DENYLIST, MAX_URL_LENGTH, ProfileComponentsOption, RejectionReporter, SafeCloneOptions, SdkTaggable, assert, assertKey, convertToError, createComponentMatcher, createIdentityTagger, describeRejectionReason, extractCode, flatJsonStringify, glowsToEvents, now, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, toCustomContext, urlAttributes, withoutStatefulFlags };
1
+ import { C as ProfileComponentsOption, E as assert, S as convertToError, T as assertKey, _ as glowsToEvents, a as SafeCloneOptions, b as SdkTaggable, c as describeRejectionReason, d as redactObjectValues, f as redactUrlQuery, g as timelineEvents, h as now, i as withoutStatefulFlags, l as routeRejection, m as safeDecode, n as urlAttributes, o as safeClone, p as resolveDenylist, r as toCustomContext, s as RejectionReporter, t as MAX_URL_LENGTH, u as DEFAULT_URL_DENYLIST, v as flatJsonStringify, w as createComponentMatcher, x as createIdentityTagger, y as extractCode } from "../urlAttributes-DSPpBmH-.cjs";
2
+ export { DEFAULT_URL_DENYLIST, MAX_URL_LENGTH, ProfileComponentsOption, RejectionReporter, SafeCloneOptions, SdkTaggable, assert, assertKey, convertToError, createComponentMatcher, createIdentityTagger, describeRejectionReason, extractCode, flatJsonStringify, glowsToEvents, now, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, timelineEvents, toCustomContext, urlAttributes, withoutStatefulFlags };
@@ -1,2 +1,2 @@
1
- import { C as createComponentMatcher, S as ProfileComponentsOption, T as assert, _ as flatJsonStringify, a as SafeCloneOptions, b as createIdentityTagger, c as describeRejectionReason, d as redactObjectValues, f as redactUrlQuery, g as glowsToEvents, h as now, i as withoutStatefulFlags, l as routeRejection, m as safeDecode, n as urlAttributes, o as safeClone, p as resolveDenylist, r as toCustomContext, s as RejectionReporter, t as MAX_URL_LENGTH, u as DEFAULT_URL_DENYLIST, v as extractCode, w as assertKey, x as convertToError, y as SdkTaggable } from "../urlAttributes-B9BlkrfW.mjs";
2
- export { DEFAULT_URL_DENYLIST, MAX_URL_LENGTH, ProfileComponentsOption, RejectionReporter, SafeCloneOptions, SdkTaggable, assert, assertKey, convertToError, createComponentMatcher, createIdentityTagger, describeRejectionReason, extractCode, flatJsonStringify, glowsToEvents, now, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, toCustomContext, urlAttributes, withoutStatefulFlags };
1
+ import { C as ProfileComponentsOption, E as assert, S as convertToError, T as assertKey, _ as glowsToEvents, a as SafeCloneOptions, b as SdkTaggable, c as describeRejectionReason, d as redactObjectValues, f as redactUrlQuery, g as timelineEvents, h as now, i as withoutStatefulFlags, l as routeRejection, m as safeDecode, n as urlAttributes, o as safeClone, p as resolveDenylist, r as toCustomContext, s as RejectionReporter, t as MAX_URL_LENGTH, u as DEFAULT_URL_DENYLIST, v as flatJsonStringify, w as createComponentMatcher, x as createIdentityTagger, y as extractCode } from "../urlAttributes-CYJKlJKi.mjs";
2
+ export { DEFAULT_URL_DENYLIST, MAX_URL_LENGTH, ProfileComponentsOption, RejectionReporter, SafeCloneOptions, SdkTaggable, assert, assertKey, convertToError, createComponentMatcher, createIdentityTagger, describeRejectionReason, extractCode, flatJsonStringify, glowsToEvents, now, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, timelineEvents, toCustomContext, urlAttributes, withoutStatefulFlags };
@@ -1,3 +1,3 @@
1
- import { C as withoutStatefulFlags, S as createComponentMatcher, T as assert, a as routeRejection, b as createIdentityTagger, c as redactUrlQuery, d as now, f as glowsToEvents, i as describeRejectionReason, l as resolveDenylist, m as safeClone, n as urlAttributes, o as DEFAULT_URL_DENYLIST, p as flatJsonStringify, r as toCustomContext, s as redactObjectValues, t as MAX_URL_LENGTH, u as safeDecode, w as assertKey, x as convertToError, y as extractCode } from "../urlAttributes-D3gCx23B.mjs";
1
+ import { C as createComponentMatcher, E as assert, S as convertToError, T as assertKey, a as routeRejection, b as extractCode, c as redactUrlQuery, d as now, f as timelineEvents, h as safeClone, i as describeRejectionReason, l as resolveDenylist, m as flatJsonStringify, n as urlAttributes, o as DEFAULT_URL_DENYLIST, p as glowsToEvents, r as toCustomContext, s as redactObjectValues, t as MAX_URL_LENGTH, u as safeDecode, w as withoutStatefulFlags, x as createIdentityTagger } from "../urlAttributes-qNkR9fIF.mjs";
2
2
 
3
- export { DEFAULT_URL_DENYLIST, MAX_URL_LENGTH, assert, assertKey, convertToError, createComponentMatcher, createIdentityTagger, describeRejectionReason, extractCode, flatJsonStringify, glowsToEvents, now, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, toCustomContext, urlAttributes, withoutStatefulFlags };
3
+ export { DEFAULT_URL_DENYLIST, MAX_URL_LENGTH, assert, assertKey, convertToError, createComponentMatcher, createIdentityTagger, describeRejectionReason, extractCode, flatJsonStringify, glowsToEvents, now, redactObjectValues, redactUrlQuery, resolveDenylist, routeRejection, safeClone, safeDecode, timelineEvents, toCustomContext, urlAttributes, withoutStatefulFlags };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flareapp/core",
3
- "version": "2.8.0",
3
+ "version": "2.9.0",
4
4
  "description": "Environment-agnostic core for the Flare JS SDK",
5
5
  "homepage": "https://flareapp.io",
6
6
  "bugs": {