@ogcio/o11y-sdk-react 0.6.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/sdk-core/lib/redaction/ip-redactor.d.ts.map +1 -1
  2. package/dist/sdk-core/lib/redaction/ip-redactor.js +37 -10
  3. package/dist/sdk-core/lib/redaction/ip-redactor.js.map +1 -1
  4. package/dist/sdk-core/lib/redaction/ppsn-redactor.d.ts.map +1 -1
  5. package/dist/sdk-core/lib/redaction/ppsn-redactor.js +16 -4
  6. package/dist/sdk-core/lib/redaction/ppsn-redactor.js.map +1 -1
  7. package/dist/sdk-core/lib/utils/data-structures.js +1 -1
  8. package/dist/sdk-core/lib/utils/data-structures.js.map +1 -1
  9. package/dist/sdk-react/index.d.ts +1 -0
  10. package/dist/sdk-react/index.d.ts.map +1 -1
  11. package/dist/sdk-react/index.js +1 -0
  12. package/dist/sdk-react/index.js.map +1 -1
  13. package/dist/sdk-react/lib/hooks/index.d.ts +2 -0
  14. package/dist/sdk-react/lib/hooks/index.d.ts.map +1 -0
  15. package/dist/sdk-react/lib/hooks/index.js +2 -0
  16. package/dist/sdk-react/lib/hooks/index.js.map +1 -0
  17. package/dist/sdk-react/lib/hooks/useFaro.d.ts +14 -0
  18. package/dist/sdk-react/lib/hooks/useFaro.d.ts.map +1 -0
  19. package/dist/sdk-react/lib/hooks/useFaro.js +22 -0
  20. package/dist/sdk-react/lib/hooks/useFaro.js.map +1 -0
  21. package/dist/sdk-react/lib/index.d.ts +10 -1
  22. package/dist/sdk-react/lib/index.d.ts.map +1 -1
  23. package/dist/sdk-react/lib/index.js +1 -1
  24. package/dist/sdk-react/lib/index.js.map +1 -1
  25. package/dist/sdk-react/lib/instrumentation.faro.d.ts.map +1 -1
  26. package/dist/sdk-react/lib/instrumentation.faro.js +1 -0
  27. package/dist/sdk-react/lib/instrumentation.faro.js.map +1 -1
  28. package/dist/sdk-react/lib/utils.d.ts +9 -0
  29. package/dist/sdk-react/lib/utils.d.ts.map +1 -0
  30. package/dist/sdk-react/lib/utils.js +10 -0
  31. package/dist/sdk-react/lib/utils.js.map +1 -0
  32. package/dist/sdk-react/vitest.config.js +1 -1
  33. package/dist/sdk-react/vitest.config.js.map +1 -1
  34. package/package.json +16 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ip-redactor.d.ts","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ip-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,UAAW,SAAQ,aAAa;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC6G;IAC/I,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC6jB;IAE/lB,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAoBzD"}
1
+ {"version":3,"file":"ip-redactor.d.ts","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ip-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,UAAW,SAAQ,aAAa;IAE3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CACgG;IAElI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CACk5B;IAEp7B,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CAuDzD"}
@@ -1,17 +1,44 @@
1
1
  import { BasicRedactor } from "./basic-redactor.js";
2
2
  export class IpRedactor extends BasicRedactor {
3
- static IPV4_REGEX = /(?<!\d)(?:%[0-9A-Fa-f]{2})?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}(?:%[0-9A-Fa-f]{2})?(?!\d)/gi;
4
- static IPV6_REGEX = /(?<![0-9a-f:])(?:%[0-9A-Fa-f]{2})?((?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|:(?::[0-9A-Fa-f]{1,4}){1,7}|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?::[0-9A-Fa-f]{1,4}){1,6}|:(?::[0-9A-Fa-f]{1,4}){1,7}:?|(?:[0-9A-Fa-f]{1,4}:){1,4}:(?:25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})(?:%[0-9A-Fa-f]{2})?(?![0-9a-f:])/gi;
3
+ // iOS < 16.6 compatible: no lookbehind/lookahead
4
+ static IPV4_REGEX = /(?:%[0-9A-Fa-f]{2})?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}(?:%[0-9A-Fa-f]{2})?/gi;
5
+ // Comprehensive IPv6 regex without lookbehind - matches all standard formats including :: compression
6
+ static IPV6_REGEX = /(?:%[0-9A-Fa-f]{2})?((?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|::(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4}|[0-9A-Fa-f]{1,4}::(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){2}::(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){3}::(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){4}::(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){5}::(?:[0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){6}::[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|(?:[0-9A-Fa-f]{1,4}:){1,4}:(?:25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(?:\\.(?:25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})(?:%[0-9A-Fa-f]{2})?/gi;
5
7
  redact(value) {
6
8
  const counters = {};
7
- const redactedValue = value
8
- .replace(IpRedactor.IPV4_REGEX, () => {
9
- counters["IPv4"] = (counters["IPv4"] || 0) + 1;
10
- return "[REDACTED IPV4]";
11
- })
12
- .replace(IpRedactor.IPV6_REGEX, () => {
13
- counters["IPv6"] = (counters["IPv6"] || 0) + 1;
14
- return "[REDACTED IPV6]";
9
+ // First pass: redact IPv4 with boundary checking
10
+ const tempValue = value.replace(IpRedactor.IPV4_REGEX, (match, ...args) => {
11
+ const offset = args[args.length - 2];
12
+ const before = offset > 0 ? value[offset - 1] : "";
13
+ const after = offset + match.length < value.length
14
+ ? value[offset + match.length]
15
+ : "";
16
+ // Check if surrounded by non-digit characters
17
+ const isValidBefore = !before || !/\d/.test(before);
18
+ const isValidAfter = !after || !/\d/.test(after);
19
+ if (isValidBefore && isValidAfter) {
20
+ counters["IPv4"] = (counters["IPv4"] || 0) + 1;
21
+ return "[REDACTED IPV4]";
22
+ }
23
+ return match;
24
+ });
25
+ // Second pass: redact IPv6 with boundary checking
26
+ const redactedValue = tempValue.replace(IpRedactor.IPV6_REGEX, (match, ...args) => {
27
+ const offset = args[args.length - 2];
28
+ const before = offset > 0 ? tempValue[offset - 1] : "";
29
+ const after = offset + match.length < tempValue.length
30
+ ? tempValue[offset + match.length]
31
+ : "";
32
+ // For IPv6:
33
+ // Reject if there's a colon before (indicating :::)
34
+ // Reject if there's a hex digit or colon after
35
+ const isValidBefore = !before || !/[0-9a-f:]/i.test(before);
36
+ const isValidAfter = !after || !/[0-9a-f:]/i.test(after);
37
+ if (isValidBefore && isValidAfter) {
38
+ counters["IPv6"] = (counters["IPv6"] || 0) + 1;
39
+ return "[REDACTED IPV6]";
40
+ }
41
+ return match;
15
42
  });
16
43
  return {
17
44
  redactedValue: redactedValue,
@@ -1 +1 @@
1
- {"version":3,"file":"ip-redactor.js","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ip-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,OAAO,UAAW,SAAQ,aAAa;IACnC,MAAM,CAAU,UAAU,GAChC,4IAA4I,CAAC;IACvI,MAAM,CAAU,UAAU,GAChC,4lBAA4lB,CAAC;IAErlB,MAAM,CACd,KAAa;QAEb,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,MAAM,aAAa,GAAG,KAAK;aACxB,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE;YACnC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC;aACD,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE;YACnC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE;gBACP,QAAQ;aACT;SACF,CAAC;IACJ,CAAC"}
1
+ {"version":3,"file":"ip-redactor.js","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ip-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,OAAO,UAAW,SAAQ,aAAa;IAC3C,iDAAiD;IACzC,MAAM,CAAU,UAAU,GAChC,+HAA+H,CAAC;IAClI,sGAAsG;IAC9F,MAAM,CAAU,UAAU,GAChC,i7BAAi7B,CAAC;IAE16B,MAAM,CACd,KAAa;QAEb,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,iDAAiD;QACjD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YACxE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,KAAK,GACT,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBAClC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC,CAAC,EAAE,CAAC;YAET,8CAA8C;YAC9C,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEjD,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;gBAClC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/C,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CACrC,UAAU,CAAC,UAAU,EACrB,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,GACT,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM;gBACtC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAClC,CAAC,CAAC,EAAE,CAAC;YAET,YAAY;YACZ,oDAAoD;YACpD,+CAA+C;YAC/C,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEzD,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;gBAClC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC/C,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CACF,CAAC;QAEF,OAAO;YACL,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE;gBACP,QAAQ;aACT;SACF,CAAC;IACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ppsn-redactor.d.ts","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ppsn-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,YAAa,SAAQ,aAAa;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAC0B;IAE5D,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CAehD"}
1
+ {"version":3,"file":"ppsn-redactor.d.ts","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ppsn-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,YAAa,SAAQ,aAAa;IAE7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAA0B;IAE5D,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,MAAM,GACZ,eAAe,CAAC;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CAgChD"}
@@ -1,11 +1,23 @@
1
1
  import { BasicRedactor } from "./basic-redactor.js";
2
2
  export class PpsnRedactor extends BasicRedactor {
3
- static PPSN_REGEX = /(?<!([0-9]|[a-z]))[0-9]{7}[a-z]{1,2}(?!([0-9]|[a-z]))/gi;
3
+ // iOS < 16.6 compatible: no lookbehind/lookahead
4
+ static PPSN_REGEX = /[0-9]{7}[a-z]{1,2}/gi;
4
5
  redact(value) {
5
6
  let redactedCounter = 0;
6
- const redactedValue = value.replace(PpsnRedactor.PPSN_REGEX, (_) => {
7
- redactedCounter++;
8
- return "[REDACTED PPSN]";
7
+ // Boundary checking to replace lookbehind/lookahead
8
+ const redactedValue = value.replace(PpsnRedactor.PPSN_REGEX, (match, offset) => {
9
+ const before = offset > 0 ? value[offset - 1] : "";
10
+ const after = offset + match.length < value.length
11
+ ? value[offset + match.length]
12
+ : "";
13
+ // Check if surrounded by non-alphanumeric characters
14
+ const isValidBefore = !before || !/[0-9a-z]/i.test(before);
15
+ const isValidAfter = !after || !/[0-9a-z]/i.test(after);
16
+ if (isValidBefore && isValidAfter) {
17
+ redactedCounter++;
18
+ return "[REDACTED PPSN]";
19
+ }
20
+ return match;
9
21
  });
10
22
  return {
11
23
  redactedValue: redactedValue,
@@ -1 +1 @@
1
- {"version":3,"file":"ppsn-redactor.js","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ppsn-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,OAAO,YAAa,SAAQ,aAAa;IACrC,MAAM,CAAU,UAAU,GAChC,yDAAyD,CAAC;IAElD,MAAM,CACd,KAAa;QAEb,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;YACjE,eAAe,EAAE,CAAC;YAClB,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE;gBACP,eAAe;aAChB;SACF,CAAC;IACJ,CAAC"}
1
+ {"version":3,"file":"ppsn-redactor.js","sourceRoot":"","sources":["../../../../../sdk-core/lib/redaction/ppsn-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,OAAO,YAAa,SAAQ,aAAa;IAC7C,iDAAiD;IACzC,MAAM,CAAU,UAAU,GAAG,sBAAsB,CAAC;IAElD,MAAM,CACd,KAAa;QAEb,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,oDAAoD;QACpD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CACjC,YAAY,CAAC,UAAU,EACvB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,KAAK,GACT,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBAClC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC,CAAC,EAAE,CAAC;YAET,qDAAqD;YACrD,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExD,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;gBAClC,eAAe,EAAE,CAAC;gBAClB,OAAO,iBAAiB,CAAC;YAC3B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CACF,CAAC;QAEF,OAAO;YACL,aAAa,EAAE,aAAa;YAC5B,OAAO,EAAE;gBACP,eAAe;aAChB;SACF,CAAC;IACJ,CAAC"}
@@ -33,7 +33,7 @@ export function _recursiveObjectClean(value, source, redactors) {
33
33
  value == null) {
34
34
  return value;
35
35
  }
36
- if (value instanceof Uint8Array) {
36
+ if (ArrayBuffer.isView(value)) {
37
37
  try {
38
38
  const decoded = decoder.decode(value);
39
39
  const sanitized = _cleanStringPII(decoded, source, redactors);
@@ -1 +1 @@
1
- {"version":3,"file":"data-structures.js","sourceRoot":"","sources":["../../../../../sdk-core/lib/utils/data-structures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAIlE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAAS,EACT,SAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,GAAqB,QAAQ,CAAC;IACtC,IAAI,YAAY,GAAW,KAAK,CAAC;IAEjC,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,aAAqB,EAAE,eAAe,EAAU,EAAE,CACjD,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EACtD,YAAY,CACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAQ,EACR,MAAS,EACT,SAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAM,CAAC;IACxD,CAAC;IAED,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,KAAK,IAAI,IAAI,EACb,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAM,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAC3C,CAAC;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,SAAS,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,SAAc,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"data-structures.js","sourceRoot":"","sources":["../../../../../sdk-core/lib/utils/data-structures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAIlE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAAS,EACT,SAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,GAAqB,QAAQ,CAAC;IACtC,IAAI,YAAY,GAAW,KAAK,CAAC;IAEjC,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,aAAqB,EAAE,eAAe,EAAU,EAAE,CACjD,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EACtD,YAAY,CACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,KAAQ,EACR,MAAS,EACT,SAA0B;IAE1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAM,CAAC;IACxD,CAAC;IAED,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,KAAK,IAAI,IAAI,EACb,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAM,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAC3C,CAAC;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,SAAS,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,SAAc,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { type Faro, withFaroErrorBoundary, withFaroProfiler } from "@grafana/faro-react";
2
2
  import buildFaroInstrumentation from "./lib/instrumentation.faro.js";
3
3
  export * from "./lib/index.js";
4
+ export * from "./lib/utils.js";
4
5
  export { withFaroErrorBoundary, withFaroProfiler };
5
6
  export type { Faro };
6
7
  export { buildFaroInstrumentation as instrumentFaro };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;AACnD,YAAY,EAAE,IAAI,EAAE,CAAC;AACrB,OAAO,EAAE,wBAAwB,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,IAAI,EACT,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;AACnD,YAAY,EAAE,IAAI,EAAE,CAAC;AACrB,OAAO,EAAE,wBAAwB,IAAI,cAAc,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { withFaroErrorBoundary, withFaroProfiler, } from "@grafana/faro-react";
2
2
  import buildFaroInstrumentation from "./lib/instrumentation.faro.js";
3
3
  export * from "./lib/index.js";
4
+ export * from "./lib/utils.js";
4
5
  export { withFaroErrorBoundary, withFaroProfiler };
5
6
  export { buildFaroInstrumentation as instrumentFaro };
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;AAEnD,OAAO,EAAE,wBAAwB,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAErE,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAC;AAEnD,OAAO,EAAE,wBAAwB,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./useFaro.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./useFaro.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { FaroSDKConfig } from "../../index.js";
2
+ export declare const useFaro: ({ config }: {
3
+ config: FaroSDKConfig;
4
+ }) => void;
5
+ type FaroWrapperProps = {
6
+ children: React.ReactNode;
7
+ config: FaroSDKConfig;
8
+ };
9
+ export declare const FaroWrapper: React.FC<FaroWrapperProps>;
10
+ export declare const withFaro: (Component: React.ComponentType<unknown>, options?: {
11
+ profiling?: boolean;
12
+ }) => React.FC;
13
+ export {};
14
+ //# sourceMappingURL=useFaro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFaro.d.ts","sourceRoot":"","sources":["../../../../lib/hooks/useFaro.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAId,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,OAAO,GAAI,YAAY;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,SAQ5D,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAMlD,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,WAAW,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,EACvC,UAAU;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,KAChC,KAAK,CAAC,EAMR,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { instrumentFaro, withFaroErrorBoundary, withFaroProfiler, } from "../../index.js";
2
+ import { useEffect, useRef } from "react";
3
+ export const useFaro = ({ config }) => {
4
+ const faroRef = useRef(undefined);
5
+ useEffect(() => {
6
+ if (!faroRef.current && config.collectorUrl) {
7
+ faroRef.current = instrumentFaro(config);
8
+ }
9
+ }, [config]);
10
+ };
11
+ export const FaroWrapper = ({ children, config, }) => {
12
+ useFaro({ config });
13
+ return children;
14
+ };
15
+ export const withFaro = (Component, options) => {
16
+ const enableProfiling = options?.profiling ?? false;
17
+ if (enableProfiling) {
18
+ return withFaroProfiler(Component);
19
+ }
20
+ return withFaroErrorBoundary(Component, {});
21
+ };
22
+ //# sourceMappingURL=useFaro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFaro.js","sourceRoot":"","sources":["../../../../lib/hooks/useFaro.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACd,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,MAAM,EAA6B,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAmB,SAAS,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YAC5C,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EACtD,QAAQ,EACR,MAAM,GACP,EAAE,EAAE;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACpB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,SAAuC,EACvC,OAAiC,EACvB,EAAE;IACZ,MAAM,eAAe,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;IACpD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,qBAAqB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { BasicRedactor } from "../../sdk-core/lib/redaction/basic-redactor.js";
2
+ import type { MetaApp } from "@grafana/faro-core/dist/types/metas/index.js";
2
3
  interface SDKConfig {
3
4
  /**
4
5
  * The opentelemetry collector entrypoint GRPC url.
@@ -26,6 +27,14 @@ interface SDKConfig {
26
27
  * @default batch
27
28
  */
28
29
  collectorMode?: SDKCollectorMode;
30
+ /**
31
+ * Custom app metadata fields to be added to the signal.
32
+ * see https://grafana.com/docs/grafana-cloud/monitor-applications/frontend-observability/architecture/metas/ for more details
33
+ *
34
+ * @type MetaApp
35
+ * @default { name: this.serviceName }
36
+ */
37
+ appMeta?: MetaApp;
29
38
  }
30
39
  export interface FaroSDKConfig extends SDKConfig {
31
40
  /**
@@ -62,5 +71,5 @@ export interface FaroSDKConfig extends SDKConfig {
62
71
  }
63
72
  export type SDKCollectorMode = "single" | "batch";
64
73
  export type SDKLogLevel = "NONE" | "ERROR" | "WARN" | "INFO" | "DEBUG" | "VERBOSE" | "ALL";
65
- export {};
74
+ export * from "./hooks/index.js";
66
75
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAE/E,UAAU,SAAS;IACjB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;;WAGG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;;WAGG;QACH,EAAE,CAAC,EAAE,OAAO,CAAC;QACb;;;WAGG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;QACf;;;WAGG;QACH,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8CAA8C,CAAC;AAE5E,UAAU,SAAS;IACjB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;;WAGG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;;WAGG;QACH,EAAE,CAAC,EAAE,OAAO,CAAC;QACb;;;WAGG;QACH,IAAI,CAAC,EAAE,OAAO,CAAC;QACf;;;WAGG;QACH,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,KAAK,CAAC;AAEV,cAAc,kBAAkB,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export * from "./hooks/index.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAqFA,cAAc,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.faro.d.ts","sourceRoot":"","sources":["../../../lib/instrumentation.faro.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,EACV,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,MAAM,CAAC,EAAE,aAAa,GACrB,IAAI,GAAG,SAAS,CA8ElB"}
1
+ {"version":3,"file":"instrumentation.faro.d.ts","sourceRoot":"","sources":["../../../lib/instrumentation.faro.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,EACV,MAAM,qBAAqB,CAAC;AAO7B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD,MAAM,CAAC,OAAO,UAAU,wBAAwB,CAC9C,MAAM,CAAC,EAAE,aAAa,GACrB,IAAI,GAAG,SAAS,CA+ElB"}
@@ -38,6 +38,7 @@ export default function buildFaroInstrumentation(config) {
38
38
  url: config.collectorUrl,
39
39
  app: {
40
40
  name: config.serviceName,
41
+ ...(config.appMeta ?? {}),
41
42
  },
42
43
  batching: {
43
44
  enabled: !(config.collectorMode === "single"),
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.faro.js","sourceRoot":"","sources":["../../../lib/instrumentation.faro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.faro.js","sourceRoot":"","sources":["../../../lib/instrumentation.faro.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Faro } from "@grafana/faro-react";
2
+ /**
3
+ * Retrieves the current session ID from a provided Faro instance.
4
+ *
5
+ * @param {Faro} faro - The Faro instance to get the session from.
6
+ * @returns {string | undefined} The ID of the current session, or `undefined` if no session exists.
7
+ */
8
+ export declare function getSessionId(faro: Faro): string | undefined;
9
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAE3D"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Retrieves the current session ID from a provided Faro instance.
3
+ *
4
+ * @param {Faro} faro - The Faro instance to get the session from.
5
+ * @returns {string | undefined} The ID of the current session, or `undefined` if no session exists.
6
+ */
7
+ export function getSessionId(faro) {
8
+ return faro.api.getSession()?.id;
9
+ }
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC;AACnC,CAAC"}
@@ -20,7 +20,7 @@ export default defineConfig({
20
20
  clean: true,
21
21
  },
22
22
  reporters: ["default", ["junit", { outputFile: "test-report.xml" }]],
23
- environment: "node",
23
+ environment: "jsdom",
24
24
  },
25
25
  });
26
26
  //# sourceMappingURL=vitest.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,+BAA+B,EAAE,cAAc,CAAC;QAC1D,OAAO,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,CAAC;QAC/D,WAAW,EAAE;YACX,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC;aACd;SACF;QACD,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,gBAAgB,EAAE,UAAU;YAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;YAC/B,KAAK,EAAE,IAAI;SACZ;QACD,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACpE,WAAW,EAAE,MAAM;KACpB;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../../vitest.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,CAAC,+BAA+B,EAAE,cAAc,CAAC;QAC1D,OAAO,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,oBAAoB,CAAC;QAC/D,WAAW,EAAE;YACX,OAAO,EAAE;gBACP,UAAU,EAAE,CAAC;aACd;SACF;QACD,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,MAAM;QACnB,QAAQ,EAAE;YACR,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,gBAAgB,EAAE,UAAU;YAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;YAC/B,KAAK,EAAE,IAAI;SACZ;QACD,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACpE,WAAW,EAAE,OAAO;KACrB;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ogcio/o11y-sdk-react",
3
- "version": "0.6.2",
3
+ "version": "0.8.0",
4
4
  "description": "Opentelemetry standard instrumentation SDK for React based project",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -22,9 +22,9 @@
22
22
  "author": "team:ogcio/observability",
23
23
  "license": "ISC",
24
24
  "dependencies": {
25
- "@grafana/faro-react": "1.19.0",
26
- "@grafana/faro-web-sdk": "1.19.0",
27
- "@grafana/faro-web-tracing": "1.19.0",
25
+ "@grafana/faro-react": "2.1.0",
26
+ "@grafana/faro-web-sdk": "2.1.0",
27
+ "@grafana/faro-web-tracing": "2.1.0",
28
28
  "@opentelemetry/api": "1.9.0",
29
29
  "@opentelemetry/core": "2.2.0",
30
30
  "@opentelemetry/instrumentation-document-load": "0.54.0",
@@ -32,13 +32,22 @@
32
32
  "@opentelemetry/instrumentation-user-interaction": "0.53.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@types/node": "24.10.0",
36
- "@grafana/faro-core": "1.19.0",
35
+ "@grafana/faro-core": "2.1.0",
36
+ "@testing-library/react": "^16.3.1",
37
+ "@types/node": "25.0.3",
38
+ "@types/react": "19.2.7",
37
39
  "@vitest/coverage-v8": "3.2.4",
38
- "tsx": "4.20.6",
40
+ "jsdom": "^27.3.0",
41
+ "react": "19.2.3",
42
+ "react-dom": "19.2.3",
43
+ "tsx": "4.21.0",
39
44
  "typescript": "5.9.3",
40
45
  "vitest": "3.2.4"
41
46
  },
47
+ "peerDependencies": {
48
+ "react": "^18.0.0 || ^19.0.0",
49
+ "react-dom": "^18.0.0 || ^19.0.0"
50
+ },
42
51
  "scripts": {
43
52
  "build": "rm -rf dist && tsc -p tsconfig.json",
44
53
  "test": "vitest"