@plushanalytics/react-native-session-replay 1.2.6 → 3.0.2

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 (59) hide show
  1. package/README.md +138 -3
  2. package/android/src/main/java/com/posthogreactnativesessionreplay/PosthogReactNativeSessionReplayModule.kt +68 -27
  3. package/ios/PosthogReactNativeSessionReplay.mm +3 -0
  4. package/ios/PosthogReactNativeSessionReplay.swift +58 -31
  5. package/lib/commonjs/adapters/mobileReplayAdapter.js +135 -0
  6. package/lib/commonjs/adapters/mobileReplayAdapter.js.map +1 -0
  7. package/lib/commonjs/client.js +42 -0
  8. package/lib/commonjs/client.js.map +1 -0
  9. package/lib/commonjs/index.js +31 -37
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/nativeBridge.js +50 -0
  12. package/lib/commonjs/nativeBridge.js.map +1 -0
  13. package/lib/commonjs/provider.js +45 -0
  14. package/lib/commonjs/provider.js.map +1 -0
  15. package/lib/commonjs/types.js +6 -0
  16. package/lib/commonjs/types.js.map +1 -0
  17. package/lib/module/adapters/mobileReplayAdapter.js +130 -0
  18. package/lib/module/adapters/mobileReplayAdapter.js.map +1 -0
  19. package/lib/module/client.js +33 -0
  20. package/lib/module/client.js.map +1 -0
  21. package/lib/module/index.js +3 -33
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/nativeBridge.js +40 -0
  24. package/lib/module/nativeBridge.js.map +1 -0
  25. package/lib/module/provider.js +39 -0
  26. package/lib/module/provider.js.map +1 -0
  27. package/lib/module/types.js +4 -0
  28. package/lib/module/types.js.map +1 -0
  29. package/lib/typescript/commonjs/src/adapters/mobileReplayAdapter.d.ts +9 -0
  30. package/lib/typescript/commonjs/src/adapters/mobileReplayAdapter.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/src/client.d.ts +6 -0
  32. package/lib/typescript/commonjs/src/client.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/src/index.d.ts +4 -28
  34. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  35. package/lib/typescript/commonjs/src/nativeBridge.d.ts +31 -0
  36. package/lib/typescript/commonjs/src/nativeBridge.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/src/provider.d.ts +12 -0
  38. package/lib/typescript/commonjs/src/provider.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/src/types.d.ts +32 -0
  40. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  41. package/lib/typescript/module/src/adapters/mobileReplayAdapter.d.ts +9 -0
  42. package/lib/typescript/module/src/adapters/mobileReplayAdapter.d.ts.map +1 -0
  43. package/lib/typescript/module/src/client.d.ts +6 -0
  44. package/lib/typescript/module/src/client.d.ts.map +1 -0
  45. package/lib/typescript/module/src/index.d.ts +4 -28
  46. package/lib/typescript/module/src/index.d.ts.map +1 -1
  47. package/lib/typescript/module/src/nativeBridge.d.ts +31 -0
  48. package/lib/typescript/module/src/nativeBridge.d.ts.map +1 -0
  49. package/lib/typescript/module/src/provider.d.ts +12 -0
  50. package/lib/typescript/module/src/provider.d.ts.map +1 -0
  51. package/lib/typescript/module/src/types.d.ts +32 -0
  52. package/lib/typescript/module/src/types.d.ts.map +1 -0
  53. package/package.json +22 -25
  54. package/src/adapters/mobileReplayAdapter.ts +206 -0
  55. package/src/client.ts +43 -0
  56. package/src/index.tsx +25 -79
  57. package/src/nativeBridge.ts +86 -0
  58. package/src/provider.tsx +46 -0
  59. package/src/types.ts +73 -0
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "PlushAnalyticsClient", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _javascript.PlushAnalyticsClient;
10
+ }
11
+ });
12
+ exports.createPlushAnalyticsClient = createPlushAnalyticsClient;
13
+ var _javascript = require("@plushanalytics/javascript");
14
+ var _mobileReplayAdapter = require("./adapters/mobileReplayAdapter.js");
15
+ const DEFAULT_ENDPOINT = "https://apim-plushanalytics-prod-rwth6ltqgdxg2.azure-api.net/api";
16
+ function normalizeSource(value) {
17
+ if (typeof value !== "string") return undefined;
18
+ const trimmed = value.trim();
19
+ if (!trimmed) return undefined;
20
+ return trimmed.length > 64 ? trimmed.slice(0, 64) : trimmed;
21
+ }
22
+ function createPlushAnalyticsClient(config) {
23
+ const endpoint = config.endpoint ?? DEFAULT_ENDPOINT;
24
+ const source = normalizeSource(config.source) ?? "mobile";
25
+ const wrapped = {
26
+ ...config,
27
+ endpoint,
28
+ source,
29
+ replay: {
30
+ ...(config.replay ?? {}),
31
+ defaultRecorder: config.replay?.defaultRecorder ?? (0, _mobileReplayAdapter.createMobileReplayRecorderAdapter)({
32
+ apiKey: config.apiKey,
33
+ endpoint,
34
+ replayConfigDefaults: config.sessionReplayConfig
35
+ })
36
+ }
37
+ };
38
+ return (0, _javascript.createPlushAnalyticsClient)(wrapped);
39
+ }
40
+
41
+ // Re-export the type so consumers can pass platform-specific options while using the core surface.
42
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_javascript","require","_mobileReplayAdapter","DEFAULT_ENDPOINT","normalizeSource","value","undefined","trimmed","trim","length","slice","createPlushAnalyticsClient","config","endpoint","source","wrapped","replay","defaultRecorder","createMobileReplayRecorderAdapter","apiKey","replayConfigDefaults","sessionReplayConfig","createCoreClient"],"sourceRoot":"../../src","sources":["client.ts"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAIA,IAAAC,oBAAA,GAAAD,OAAA;AAKA,MAAME,gBAAgB,GAAG,kEAAkE;AAE3F,SAASC,eAAeA,CAACC,KAAc,EAAsB;EAC3D,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAOC,SAAS;EAC/C,MAAMC,OAAO,GAAGF,KAAK,CAACG,IAAI,CAAC,CAAC;EAC5B,IAAI,CAACD,OAAO,EAAE,OAAOD,SAAS;EAC9B,OAAOC,OAAO,CAACE,MAAM,GAAG,EAAE,GAAGF,OAAO,CAACG,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,OAAO;AAC7D;AAEO,SAASI,0BAA0BA,CAACC,MAA4B,EAAwB;EAC7F,MAAMC,QAAQ,GAAGD,MAAM,CAACC,QAAQ,IAAIV,gBAAgB;EACpD,MAAMW,MAAM,GAAGV,eAAe,CAACQ,MAAM,CAACE,MAAM,CAAC,IAAI,QAAQ;EAEzD,MAAMC,OAA6B,GAAG;IACpC,GAAGH,MAAM;IACTC,QAAQ;IACRC,MAAM;IACNE,MAAM,EAAE;MACN,IAAIJ,MAAM,CAACI,MAAM,IAAI,CAAC,CAAC,CAAC;MACxBC,eAAe,EACbL,MAAM,CAACI,MAAM,EAAEC,eAAe,IAC9B,IAAAC,sDAAiC,EAAC;QAChCC,MAAM,EAAEP,MAAM,CAACO,MAAM;QACrBN,QAAQ;QACRO,oBAAoB,EAAER,MAAM,CAACS;MAC/B,CAAC;IACL;EACF,CAAC;EAED,OAAO,IAAAC,sCAAgB,EAACP,OAAO,CAAC;AAClC;;AAEA","ignoreList":[]}
@@ -3,43 +3,37 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
7
- exports.endSession = endSession;
8
- exports.identify = identify;
9
- exports.isEnabled = isEnabled;
10
- exports.start = start;
11
- exports.startSession = startSession;
12
- var _reactNative = require("react-native");
13
- const LINKING_ERROR = `The package '@plushanalytics/react-native-session-replay' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
14
- ios: "- You have run 'pod install'\n",
15
- default: ''
16
- }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
17
- const PosthogReactNativeSessionReplay = _reactNative.NativeModules.PosthogReactNativeSessionReplay ? _reactNative.NativeModules.PosthogReactNativeSessionReplay : new Proxy({}, {
18
- get() {
19
- throw new Error(LINKING_ERROR);
6
+ Object.defineProperty(exports, "PlushAnalyticsClient", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _client.PlushAnalyticsClient;
20
10
  }
21
11
  });
22
- function start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig) {
23
- return PosthogReactNativeSessionReplay.start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig);
24
- }
25
- function startSession(sessionId) {
26
- return PosthogReactNativeSessionReplay.startSession(sessionId);
27
- }
28
- function endSession() {
29
- return PosthogReactNativeSessionReplay.endSession();
30
- }
31
- function isEnabled() {
32
- return PosthogReactNativeSessionReplay.isEnabled();
33
- }
34
- function identify(distinctId, anonymousId) {
35
- return PosthogReactNativeSessionReplay.identify(distinctId, anonymousId);
36
- }
37
- const PostHogReactNativeSessionReplay = {
38
- start,
39
- startSession,
40
- endSession,
41
- isEnabled,
42
- identify
43
- };
44
- var _default = exports.default = PostHogReactNativeSessionReplay;
12
+ Object.defineProperty(exports, "PlushAnalyticsProvider", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _provider.PlushAnalyticsProvider;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "createMobileReplayRecorderAdapter", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _mobileReplayAdapter.createMobileReplayRecorderAdapter;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "createPlushAnalyticsClient", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _client.createPlushAnalyticsClient;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "usePlushAnalytics", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _provider.usePlushAnalytics;
34
+ }
35
+ });
36
+ var _client = require("./client.js");
37
+ var _mobileReplayAdapter = require("./adapters/mobileReplayAdapter.js");
38
+ var _provider = require("./provider.js");
45
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","PosthogReactNativeSessionReplay","NativeModules","Proxy","get","Error","start","sessionId","sdkOptions","sdkReplayConfig","decideReplayConfig","startSession","endSession","isEnabled","identify","distinctId","anonymousId","PostHogReactNativeSessionReplay","_default","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GACjB,sGAAsG,GACtGC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,+BAA+B,GACnCC,0BAAa,CAACD,+BAA+B,GACzCC,0BAAa,CAACD,+BAA+B,GAC7C,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEA,SAASU,KAAKA,CACnBC,SAAiB,EACjBC,UAAkC,EAClCC,eAAuC,EACvCC,kBAA0C,EAC3B;EACf,OAAOT,+BAA+B,CAACK,KAAK,CAC1CC,SAAS,EACTC,UAAU,EACVC,eAAe,EACfC,kBACF,CAAC;AACH;AAEO,SAASC,YAAYA,CAACJ,SAAiB,EAAiB;EAC7D,OAAON,+BAA+B,CAACU,YAAY,CAACJ,SAAS,CAAC;AAChE;AAEO,SAASK,UAAUA,CAAA,EAAkB;EAC1C,OAAOX,+BAA+B,CAACW,UAAU,CAAC,CAAC;AACrD;AAEO,SAASC,SAASA,CAAA,EAAqB;EAC5C,OAAOZ,+BAA+B,CAACY,SAAS,CAAC,CAAC;AACpD;AAEO,SAASC,QAAQA,CACtBC,UAAkB,EAClBC,WAAmB,EACJ;EACf,OAAOf,+BAA+B,CAACa,QAAQ,CAACC,UAAU,EAAEC,WAAW,CAAC;AAC1E;AAmBA,MAAMC,+BAAsE,GAAG;EAC7EX,KAAK;EACLK,YAAY;EACZC,UAAU;EACVC,SAAS;EACTC;AACF,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAEaiB,+BAA+B","ignoreList":[]}
1
+ {"version":3,"names":["_client","require","_mobileReplayAdapter","_provider"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.endSession = endSession;
8
+ exports.flush = flush;
9
+ exports.identify = identify;
10
+ exports.isEnabled = isEnabled;
11
+ exports.start = start;
12
+ exports.startSession = startSession;
13
+ var _reactNative = require("react-native");
14
+ const LINKING_ERROR = `The package '@plushanalytics/react-native-session-replay' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
15
+ ios: "- You have run 'pod install'\n",
16
+ default: ''
17
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
18
+ const PosthogReactNativeSessionReplay = _reactNative.NativeModules.PosthogReactNativeSessionReplay ? _reactNative.NativeModules.PosthogReactNativeSessionReplay : new Proxy({}, {
19
+ get() {
20
+ throw new Error(LINKING_ERROR);
21
+ }
22
+ });
23
+ function start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig) {
24
+ return PosthogReactNativeSessionReplay.start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig);
25
+ }
26
+ function startSession(sessionId) {
27
+ return PosthogReactNativeSessionReplay.startSession(sessionId);
28
+ }
29
+ function endSession() {
30
+ return PosthogReactNativeSessionReplay.endSession();
31
+ }
32
+ function flush() {
33
+ return PosthogReactNativeSessionReplay.flush();
34
+ }
35
+ function isEnabled() {
36
+ return PosthogReactNativeSessionReplay.isEnabled();
37
+ }
38
+ function identify(distinctId, anonymousId) {
39
+ return PosthogReactNativeSessionReplay.identify(distinctId, anonymousId);
40
+ }
41
+ const PostHogReactNativeSessionReplay = {
42
+ start,
43
+ startSession,
44
+ endSession,
45
+ flush,
46
+ isEnabled,
47
+ identify
48
+ };
49
+ var _default = exports.default = PostHogReactNativeSessionReplay;
50
+ //# sourceMappingURL=nativeBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","LINKING_ERROR","Platform","select","ios","default","PosthogReactNativeSessionReplay","NativeModules","Proxy","get","Error","start","sessionId","sdkOptions","sdkReplayConfig","decideReplayConfig","startSession","endSession","flush","isEnabled","identify","distinctId","anonymousId","PostHogReactNativeSessionReplay","_default","exports"],"sourceRoot":"../../src","sources":["nativeBridge.ts"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAMC,aAAa,GACjB,sGAAsG,GACtGC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,+BAA+B,GACnCC,0BAAa,CAACD,+BAA+B,GACzCC,0BAAa,CAACD,+BAA+B,GAC7C,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEA,SAASU,KAAKA,CACnBC,SAAiB,EACjBC,UAAkC,EAClCC,eAAuC,EACvCC,kBAA0C,EAC3B;EACf,OAAOT,+BAA+B,CAACK,KAAK,CAC1CC,SAAS,EACTC,UAAU,EACVC,eAAe,EACfC,kBACF,CAAC;AACH;AAEO,SAASC,YAAYA,CAACJ,SAAiB,EAAiB;EAC7D,OAAON,+BAA+B,CAACU,YAAY,CAACJ,SAAS,CAAC;AAChE;AAEO,SAASK,UAAUA,CAAA,EAAkB;EAC1C,OAAOX,+BAA+B,CAACW,UAAU,CAAC,CAAC;AACrD;AAEO,SAASC,KAAKA,CAAA,EAAkB;EACrC,OAAOZ,+BAA+B,CAACY,KAAK,CAAC,CAAC;AAChD;AAEO,SAASC,SAASA,CAAA,EAAqB;EAC5C,OAAOb,+BAA+B,CAACa,SAAS,CAAC,CAAC;AACpD;AAEO,SAASC,QAAQA,CACtBC,UAAkB,EAClBC,WAAmB,EACJ;EACf,OAAOhB,+BAA+B,CAACc,QAAQ,CAACC,UAAU,EAAEC,WAAW,CAAC;AAC1E;AAqBA,MAAMC,+BAAsE,GAAG;EAC7EZ,KAAK;EACLK,YAAY;EACZC,UAAU;EACVC,KAAK;EACLC,SAAS;EACTC;AACF,CAAC;AAAC,IAAAI,QAAA,GAAAC,OAAA,CAAApB,OAAA,GAEakB,+BAA+B","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PlushAnalyticsProvider = PlushAnalyticsProvider;
7
+ exports.usePlushAnalytics = usePlushAnalytics;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _client = require("./client.js");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ const PlushAnalyticsContext = /*#__PURE__*/(0, _react.createContext)(null);
13
+ function PlushAnalyticsProvider({
14
+ children,
15
+ config,
16
+ client
17
+ }) {
18
+ const clientRef = (0, _react.useRef)(null);
19
+ if (!clientRef.current) {
20
+ if (client) {
21
+ clientRef.current = client;
22
+ } else if (config) {
23
+ clientRef.current = (0, _client.createPlushAnalyticsClient)(config);
24
+ } else {
25
+ throw new Error("PlushAnalyticsProvider requires either a `client` or `config` prop.");
26
+ }
27
+ }
28
+ (0, _react.useEffect)(() => {
29
+ return () => {
30
+ void clientRef.current?.shutdown();
31
+ };
32
+ }, []);
33
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PlushAnalyticsContext.Provider, {
34
+ value: clientRef.current,
35
+ children: children
36
+ });
37
+ }
38
+ function usePlushAnalytics() {
39
+ const context = (0, _react.useContext)(PlushAnalyticsContext);
40
+ if (!context) {
41
+ throw new Error("usePlushAnalytics must be used inside PlushAnalyticsProvider.");
42
+ }
43
+ return context;
44
+ }
45
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_client","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PlushAnalyticsContext","createContext","PlushAnalyticsProvider","children","config","client","clientRef","useRef","current","createPlushAnalyticsClient","Error","useEffect","shutdown","jsx","Provider","value","usePlushAnalytics","context","useContext"],"sourceRoot":"../../src","sources":["provider.tsx"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAAiF,IAAAE,WAAA,GAAAF,OAAA;AAAA,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AASjF,MAAMkB,qBAAqB,gBAAG,IAAAC,oBAAa,EAAwB,IAAI,CAAC;AAEjE,SAASC,sBAAsBA,CAAC;EACrCC,QAAQ;EACRC,MAAM;EACNC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,SAAS,GAAG,IAAAC,aAAM,EAA8B,IAAI,CAAC;EAE3D,IAAI,CAACD,SAAS,CAACE,OAAO,EAAE;IACtB,IAAIH,MAAM,EAAE;MACVC,SAAS,CAACE,OAAO,GAAGH,MAAM;IAC5B,CAAC,MAAM,IAAID,MAAM,EAAE;MACjBE,SAAS,CAACE,OAAO,GAAG,IAAAC,kCAA0B,EAACL,MAAM,CAAC;IACxD,CAAC,MAAM;MACL,MAAM,IAAIM,KAAK,CAAC,qEAAqE,CAAC;IACxF;EACF;EAEA,IAAAC,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACX,KAAKL,SAAS,CAACE,OAAO,EAAEI,QAAQ,CAAC,CAAC;IACpC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBAAO,IAAAhC,WAAA,CAAAiC,GAAA,EAACb,qBAAqB,CAACc,QAAQ;IAACC,KAAK,EAAET,SAAS,CAACE,OAAQ;IAAAL,QAAA,EAAEA;EAAQ,CAAiC,CAAC;AAC9G;AAEO,SAASa,iBAAiBA,CAAA,EAAmB;EAClD,MAAMC,OAAO,GAAG,IAAAC,iBAAU,EAAClB,qBAAqB,CAAC;EACjD,IAAI,CAACiB,OAAO,EAAE;IACZ,MAAM,IAAIP,KAAK,CAAC,+DAA+D,CAAC;EAClF;EAEA,OAAOO,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ import * as replayModule from "../nativeBridge.js";
4
+ const DEFAULT_SNAPSHOT_PATH = "/v1/events/batch";
5
+ const DEFAULT_THROTTLE_DELAY_MS = 1000;
6
+ const UUID_PATTERN = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;
7
+ function assertNonEmpty(value, field) {
8
+ if (!value || !value.trim()) {
9
+ throw new Error(`${field} is required.`);
10
+ }
11
+ }
12
+ function normalizeHost(value) {
13
+ return value.replace(/\/+$/, "");
14
+ }
15
+ function normalizeSnapshotPath(value) {
16
+ const trimmed = value?.trim();
17
+ if (!trimmed) return DEFAULT_SNAPSHOT_PATH;
18
+ return trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
19
+ }
20
+ function isUuid(value) {
21
+ return UUID_PATTERN.test(value);
22
+ }
23
+ function generateUuid() {
24
+ const cryptoApi = globalThis.crypto;
25
+ if (cryptoApi?.randomUUID) return cryptoApi.randomUUID();
26
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, char => {
27
+ const random = Math.floor(Math.random() * 16);
28
+ const resolved = char === "x" ? random : random & 0x3 | 0x8;
29
+ return resolved.toString(16);
30
+ });
31
+ }
32
+ function resolveSessionId(options) {
33
+ const requestedSessionId = options?.sessionId?.trim();
34
+ if (requestedSessionId && isUuid(requestedSessionId)) {
35
+ return requestedSessionId;
36
+ }
37
+ return generateUuid();
38
+ }
39
+ function assertNoPosthogDotCom(host) {
40
+ const lowered = host.toLowerCase();
41
+ const hostName = (() => {
42
+ try {
43
+ return new URL(host).hostname.toLowerCase();
44
+ } catch {
45
+ return lowered;
46
+ }
47
+ })();
48
+ if (hostName === "posthog.com" || hostName.endsWith(".posthog.com")) {
49
+ throw new Error("replayHost must not point to posthog.com (or a subdomain).");
50
+ }
51
+ }
52
+ function resolveMaskingValue(overrideConfig, defaultConfig, maskingKey, legacyKey) {
53
+ const overrideMaskingValue = overrideConfig?.masking?.[maskingKey];
54
+ if (typeof overrideMaskingValue === "boolean") {
55
+ return overrideMaskingValue;
56
+ }
57
+ const overrideLegacyValue = overrideConfig?.[legacyKey];
58
+ if (typeof overrideLegacyValue === "boolean") {
59
+ return overrideLegacyValue;
60
+ }
61
+ const defaultMaskingValue = defaultConfig?.masking?.[maskingKey];
62
+ if (typeof defaultMaskingValue === "boolean") {
63
+ return defaultMaskingValue;
64
+ }
65
+ return true;
66
+ }
67
+ function resolveReplayConfig(defaultConfig, overrideConfig) {
68
+ const enabled = overrideConfig?.enabled ?? defaultConfig?.enabled ?? true;
69
+ const captureLog = overrideConfig?.captureLog ?? defaultConfig?.captureLog ?? true;
70
+ const captureNetworkTelemetry = overrideConfig?.captureNetworkTelemetry ?? defaultConfig?.captureNetworkTelemetry ?? true;
71
+ const requestedThrottleDelayMs = overrideConfig?.throttleDelayMs ?? defaultConfig?.throttleDelayMs ?? DEFAULT_THROTTLE_DELAY_MS;
72
+ const throttleDelayMs = Number.isFinite(requestedThrottleDelayMs) && requestedThrottleDelayMs >= 0 ? requestedThrottleDelayMs : DEFAULT_THROTTLE_DELAY_MS;
73
+ return {
74
+ enabled,
75
+ maskAllTextInputs: resolveMaskingValue(overrideConfig, defaultConfig, "textInputs", "maskAllTextInputs"),
76
+ maskAllImages: resolveMaskingValue(overrideConfig, defaultConfig, "images", "maskAllImages"),
77
+ maskAllSandboxedViews: resolveMaskingValue(overrideConfig, defaultConfig, "sandboxedViews", "maskAllSandboxedViews"),
78
+ captureLog,
79
+ captureNetworkTelemetry,
80
+ throttleDelayMs
81
+ };
82
+ }
83
+ function toNativeReplayConfig(config) {
84
+ return {
85
+ maskAllTextInputs: config.maskAllTextInputs,
86
+ maskAllImages: config.maskAllImages,
87
+ maskAllSandboxedViews: config.maskAllSandboxedViews,
88
+ captureLog: config.captureLog,
89
+ captureNetworkTelemetry: config.captureNetworkTelemetry,
90
+ throttleDelayMs: config.throttleDelayMs
91
+ };
92
+ }
93
+ export function createMobileReplayRecorderAdapter(defaults) {
94
+ assertNonEmpty(defaults.apiKey, "apiKey");
95
+ assertNonEmpty(defaults.endpoint, "endpoint");
96
+ return {
97
+ start: async args => {
98
+ const options = args.options;
99
+ const resolvedReplayConfig = resolveReplayConfig(defaults.replayConfigDefaults, options?.replayConfig);
100
+ if (!resolvedReplayConfig.enabled) {
101
+ return () => {};
102
+ }
103
+ const host = normalizeHost(options?.replayHost?.trim() || defaults.endpoint);
104
+ assertNoPosthogDotCom(host);
105
+ const snapshotPath = normalizeSnapshotPath(options?.replaySnapshotPath);
106
+ const activeSessionId = resolveSessionId(options);
107
+ const sdkOptions = {
108
+ apiKey: defaults.apiKey,
109
+ host,
110
+ debug: false,
111
+ distinctId: options?.userId?.trim() || "",
112
+ anonymousId: "",
113
+ sdkVersion: "plushanalytics-react-native",
114
+ flushAt: 20
115
+ };
116
+ await replayModule.start(activeSessionId, sdkOptions, toNativeReplayConfig(resolvedReplayConfig), {
117
+ endpoint: snapshotPath
118
+ });
119
+ await replayModule.startSession(activeSessionId);
120
+ args.onSessionId?.(activeSessionId);
121
+ return () => {
122
+ void replayModule.endSession();
123
+ };
124
+ },
125
+ flush: async () => {
126
+ await replayModule.flush();
127
+ }
128
+ };
129
+ }
130
+ //# sourceMappingURL=mobileReplayAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["replayModule","DEFAULT_SNAPSHOT_PATH","DEFAULT_THROTTLE_DELAY_MS","UUID_PATTERN","assertNonEmpty","value","field","trim","Error","normalizeHost","replace","normalizeSnapshotPath","trimmed","startsWith","isUuid","test","generateUuid","cryptoApi","globalThis","crypto","randomUUID","char","random","Math","floor","resolved","toString","resolveSessionId","options","requestedSessionId","sessionId","assertNoPosthogDotCom","host","lowered","toLowerCase","hostName","URL","hostname","endsWith","resolveMaskingValue","overrideConfig","defaultConfig","maskingKey","legacyKey","overrideMaskingValue","masking","overrideLegacyValue","defaultMaskingValue","resolveReplayConfig","enabled","captureLog","captureNetworkTelemetry","requestedThrottleDelayMs","throttleDelayMs","Number","isFinite","maskAllTextInputs","maskAllImages","maskAllSandboxedViews","toNativeReplayConfig","config","createMobileReplayRecorderAdapter","defaults","apiKey","endpoint","start","args","resolvedReplayConfig","replayConfigDefaults","replayConfig","replayHost","snapshotPath","replaySnapshotPath","activeSessionId","sdkOptions","debug","distinctId","userId","anonymousId","sdkVersion","flushAt","startSession","onSessionId","endSession","flush"],"sourceRoot":"../../../src","sources":["adapters/mobileReplayAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ import { createPlushAnalyticsClient as createCoreClient, PlushAnalyticsClient } from "@plushanalytics/javascript";
4
+ import { createMobileReplayRecorderAdapter } from "./adapters/mobileReplayAdapter.js";
5
+ export { PlushAnalyticsClient };
6
+ const DEFAULT_ENDPOINT = "https://apim-plushanalytics-prod-rwth6ltqgdxg2.azure-api.net/api";
7
+ function normalizeSource(value) {
8
+ if (typeof value !== "string") return undefined;
9
+ const trimmed = value.trim();
10
+ if (!trimmed) return undefined;
11
+ return trimmed.length > 64 ? trimmed.slice(0, 64) : trimmed;
12
+ }
13
+ export function createPlushAnalyticsClient(config) {
14
+ const endpoint = config.endpoint ?? DEFAULT_ENDPOINT;
15
+ const source = normalizeSource(config.source) ?? "mobile";
16
+ const wrapped = {
17
+ ...config,
18
+ endpoint,
19
+ source,
20
+ replay: {
21
+ ...(config.replay ?? {}),
22
+ defaultRecorder: config.replay?.defaultRecorder ?? createMobileReplayRecorderAdapter({
23
+ apiKey: config.apiKey,
24
+ endpoint,
25
+ replayConfigDefaults: config.sessionReplayConfig
26
+ })
27
+ }
28
+ };
29
+ return createCoreClient(wrapped);
30
+ }
31
+
32
+ // Re-export the type so consumers can pass platform-specific options while using the core surface.
33
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createPlushAnalyticsClient","createCoreClient","PlushAnalyticsClient","createMobileReplayRecorderAdapter","DEFAULT_ENDPOINT","normalizeSource","value","undefined","trimmed","trim","length","slice","config","endpoint","source","wrapped","replay","defaultRecorder","apiKey","replayConfigDefaults","sessionReplayConfig"],"sourceRoot":"../../src","sources":["client.ts"],"mappings":";;AAAA,SACEA,0BAA0B,IAAIC,gBAAgB,EAC9CC,oBAAoB,QACf,4BAA4B;AACnC,SAASC,iCAAiC,QAAQ,mCAAgC;AAGlF,SAASD,oBAAoB;AAE7B,MAAME,gBAAgB,GAAG,kEAAkE;AAE3F,SAASC,eAAeA,CAACC,KAAc,EAAsB;EAC3D,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAOC,SAAS;EAC/C,MAAMC,OAAO,GAAGF,KAAK,CAACG,IAAI,CAAC,CAAC;EAC5B,IAAI,CAACD,OAAO,EAAE,OAAOD,SAAS;EAC9B,OAAOC,OAAO,CAACE,MAAM,GAAG,EAAE,GAAGF,OAAO,CAACG,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,OAAO;AAC7D;AAEA,OAAO,SAASR,0BAA0BA,CAACY,MAA4B,EAAwB;EAC7F,MAAMC,QAAQ,GAAGD,MAAM,CAACC,QAAQ,IAAIT,gBAAgB;EACpD,MAAMU,MAAM,GAAGT,eAAe,CAACO,MAAM,CAACE,MAAM,CAAC,IAAI,QAAQ;EAEzD,MAAMC,OAA6B,GAAG;IACpC,GAAGH,MAAM;IACTC,QAAQ;IACRC,MAAM;IACNE,MAAM,EAAE;MACN,IAAIJ,MAAM,CAACI,MAAM,IAAI,CAAC,CAAC,CAAC;MACxBC,eAAe,EACbL,MAAM,CAACI,MAAM,EAAEC,eAAe,IAC9Bd,iCAAiC,CAAC;QAChCe,MAAM,EAAEN,MAAM,CAACM,MAAM;QACrBL,QAAQ;QACRM,oBAAoB,EAAEP,MAAM,CAACQ;MAC/B,CAAC;IACL;EACF,CAAC;EAED,OAAOnB,gBAAgB,CAACc,OAAO,CAAC;AAClC;;AAEA","ignoreList":[]}
@@ -1,36 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { NativeModules, Platform } from 'react-native';
4
- const LINKING_ERROR = `The package '@plushanalytics/react-native-session-replay' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
5
- ios: "- You have run 'pod install'\n",
6
- default: ''
7
- }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
8
- const PosthogReactNativeSessionReplay = NativeModules.PosthogReactNativeSessionReplay ? NativeModules.PosthogReactNativeSessionReplay : new Proxy({}, {
9
- get() {
10
- throw new Error(LINKING_ERROR);
11
- }
12
- });
13
- export function start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig) {
14
- return PosthogReactNativeSessionReplay.start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig);
15
- }
16
- export function startSession(sessionId) {
17
- return PosthogReactNativeSessionReplay.startSession(sessionId);
18
- }
19
- export function endSession() {
20
- return PosthogReactNativeSessionReplay.endSession();
21
- }
22
- export function isEnabled() {
23
- return PosthogReactNativeSessionReplay.isEnabled();
24
- }
25
- export function identify(distinctId, anonymousId) {
26
- return PosthogReactNativeSessionReplay.identify(distinctId, anonymousId);
27
- }
28
- const PostHogReactNativeSessionReplay = {
29
- start,
30
- startSession,
31
- endSession,
32
- isEnabled,
33
- identify
34
- };
35
- export default PostHogReactNativeSessionReplay;
3
+ export { createPlushAnalyticsClient, PlushAnalyticsClient } from "./client.js";
4
+ export { createMobileReplayRecorderAdapter } from "./adapters/mobileReplayAdapter.js";
5
+ export { PlushAnalyticsProvider, usePlushAnalytics } from "./provider.js";
36
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","PosthogReactNativeSessionReplay","Proxy","get","Error","start","sessionId","sdkOptions","sdkReplayConfig","decideReplayConfig","startSession","endSession","isEnabled","identify","distinctId","anonymousId","PostHogReactNativeSessionReplay"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,sGAAsG,GACtGD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,+BAA+B,GACnCN,aAAa,CAACM,+BAA+B,GACzCN,aAAa,CAACM,+BAA+B,GAC7C,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEP,OAAO,SAASQ,KAAKA,CACnBC,SAAiB,EACjBC,UAAkC,EAClCC,eAAuC,EACvCC,kBAA0C,EAC3B;EACf,OAAOR,+BAA+B,CAACI,KAAK,CAC1CC,SAAS,EACTC,UAAU,EACVC,eAAe,EACfC,kBACF,CAAC;AACH;AAEA,OAAO,SAASC,YAAYA,CAACJ,SAAiB,EAAiB;EAC7D,OAAOL,+BAA+B,CAACS,YAAY,CAACJ,SAAS,CAAC;AAChE;AAEA,OAAO,SAASK,UAAUA,CAAA,EAAkB;EAC1C,OAAOV,+BAA+B,CAACU,UAAU,CAAC,CAAC;AACrD;AAEA,OAAO,SAASC,SAASA,CAAA,EAAqB;EAC5C,OAAOX,+BAA+B,CAACW,SAAS,CAAC,CAAC;AACpD;AAEA,OAAO,SAASC,QAAQA,CACtBC,UAAkB,EAClBC,WAAmB,EACJ;EACf,OAAOd,+BAA+B,CAACY,QAAQ,CAACC,UAAU,EAAEC,WAAW,CAAC;AAC1E;AAmBA,MAAMC,+BAAsE,GAAG;EAC7EX,KAAK;EACLK,YAAY;EACZC,UAAU;EACVC,SAAS;EACTC;AACF,CAAC;AAED,eAAeG,+BAA+B","ignoreList":[]}
1
+ {"version":3,"names":["createPlushAnalyticsClient","PlushAnalyticsClient","createMobileReplayRecorderAdapter","PlushAnalyticsProvider","usePlushAnalytics"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,0BAA0B,EAAEC,oBAAoB,QAAQ,aAAU;AAC3E,SAASC,iCAAiC,QAAQ,mCAAgC;AAClF,SAASC,sBAAsB,EAAEC,iBAAiB,QAAQ,eAAY","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ import { NativeModules, Platform } from 'react-native';
4
+ const LINKING_ERROR = `The package '@plushanalytics/react-native-session-replay' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
5
+ ios: "- You have run 'pod install'\n",
6
+ default: ''
7
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
8
+ const PosthogReactNativeSessionReplay = NativeModules.PosthogReactNativeSessionReplay ? NativeModules.PosthogReactNativeSessionReplay : new Proxy({}, {
9
+ get() {
10
+ throw new Error(LINKING_ERROR);
11
+ }
12
+ });
13
+ export function start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig) {
14
+ return PosthogReactNativeSessionReplay.start(sessionId, sdkOptions, sdkReplayConfig, decideReplayConfig);
15
+ }
16
+ export function startSession(sessionId) {
17
+ return PosthogReactNativeSessionReplay.startSession(sessionId);
18
+ }
19
+ export function endSession() {
20
+ return PosthogReactNativeSessionReplay.endSession();
21
+ }
22
+ export function flush() {
23
+ return PosthogReactNativeSessionReplay.flush();
24
+ }
25
+ export function isEnabled() {
26
+ return PosthogReactNativeSessionReplay.isEnabled();
27
+ }
28
+ export function identify(distinctId, anonymousId) {
29
+ return PosthogReactNativeSessionReplay.identify(distinctId, anonymousId);
30
+ }
31
+ const PostHogReactNativeSessionReplay = {
32
+ start,
33
+ startSession,
34
+ endSession,
35
+ flush,
36
+ isEnabled,
37
+ identify
38
+ };
39
+ export default PostHogReactNativeSessionReplay;
40
+ //# sourceMappingURL=nativeBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","PosthogReactNativeSessionReplay","Proxy","get","Error","start","sessionId","sdkOptions","sdkReplayConfig","decideReplayConfig","startSession","endSession","flush","isEnabled","identify","distinctId","anonymousId","PostHogReactNativeSessionReplay"],"sourceRoot":"../../src","sources":["nativeBridge.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,sGAAsG,GACtGD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,+BAA+B,GACnCN,aAAa,CAACM,+BAA+B,GACzCN,aAAa,CAACM,+BAA+B,GAC7C,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEP,OAAO,SAASQ,KAAKA,CACnBC,SAAiB,EACjBC,UAAkC,EAClCC,eAAuC,EACvCC,kBAA0C,EAC3B;EACf,OAAOR,+BAA+B,CAACI,KAAK,CAC1CC,SAAS,EACTC,UAAU,EACVC,eAAe,EACfC,kBACF,CAAC;AACH;AAEA,OAAO,SAASC,YAAYA,CAACJ,SAAiB,EAAiB;EAC7D,OAAOL,+BAA+B,CAACS,YAAY,CAACJ,SAAS,CAAC;AAChE;AAEA,OAAO,SAASK,UAAUA,CAAA,EAAkB;EAC1C,OAAOV,+BAA+B,CAACU,UAAU,CAAC,CAAC;AACrD;AAEA,OAAO,SAASC,KAAKA,CAAA,EAAkB;EACrC,OAAOX,+BAA+B,CAACW,KAAK,CAAC,CAAC;AAChD;AAEA,OAAO,SAASC,SAASA,CAAA,EAAqB;EAC5C,OAAOZ,+BAA+B,CAACY,SAAS,CAAC,CAAC;AACpD;AAEA,OAAO,SAASC,QAAQA,CACtBC,UAAkB,EAClBC,WAAmB,EACJ;EACf,OAAOf,+BAA+B,CAACa,QAAQ,CAACC,UAAU,EAAEC,WAAW,CAAC;AAC1E;AAqBA,MAAMC,+BAAsE,GAAG;EAC7EZ,KAAK;EACLK,YAAY;EACZC,UAAU;EACVC,KAAK;EACLC,SAAS;EACTC;AACF,CAAC;AAED,eAAeG,+BAA+B","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useContext, useEffect, useRef } from "react";
4
+ import { createPlushAnalyticsClient } from "./client.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const PlushAnalyticsContext = /*#__PURE__*/createContext(null);
7
+ export function PlushAnalyticsProvider({
8
+ children,
9
+ config,
10
+ client
11
+ }) {
12
+ const clientRef = useRef(null);
13
+ if (!clientRef.current) {
14
+ if (client) {
15
+ clientRef.current = client;
16
+ } else if (config) {
17
+ clientRef.current = createPlushAnalyticsClient(config);
18
+ } else {
19
+ throw new Error("PlushAnalyticsProvider requires either a `client` or `config` prop.");
20
+ }
21
+ }
22
+ useEffect(() => {
23
+ return () => {
24
+ void clientRef.current?.shutdown();
25
+ };
26
+ }, []);
27
+ return /*#__PURE__*/_jsx(PlushAnalyticsContext.Provider, {
28
+ value: clientRef.current,
29
+ children: children
30
+ });
31
+ }
32
+ export function usePlushAnalytics() {
33
+ const context = useContext(PlushAnalyticsContext);
34
+ if (!context) {
35
+ throw new Error("usePlushAnalytics must be used inside PlushAnalyticsProvider.");
36
+ }
37
+ return context;
38
+ }
39
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","createContext","useContext","useEffect","useRef","createPlushAnalyticsClient","jsx","_jsx","PlushAnalyticsContext","PlushAnalyticsProvider","children","config","client","clientRef","current","Error","shutdown","Provider","value","usePlushAnalytics","context"],"sourceRoot":"../../src","sources":["provider.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC3E,SAASC,0BAA0B,QAAmC,aAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASjF,MAAMC,qBAAqB,gBAAGP,aAAa,CAAwB,IAAI,CAAC;AAExE,OAAO,SAASQ,sBAAsBA,CAAC;EACrCC,QAAQ;EACRC,MAAM;EACNC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,SAAS,GAAGT,MAAM,CAA8B,IAAI,CAAC;EAE3D,IAAI,CAACS,SAAS,CAACC,OAAO,EAAE;IACtB,IAAIF,MAAM,EAAE;MACVC,SAAS,CAACC,OAAO,GAAGF,MAAM;IAC5B,CAAC,MAAM,IAAID,MAAM,EAAE;MACjBE,SAAS,CAACC,OAAO,GAAGT,0BAA0B,CAACM,MAAM,CAAC;IACxD,CAAC,MAAM;MACL,MAAM,IAAII,KAAK,CAAC,qEAAqE,CAAC;IACxF;EACF;EAEAZ,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX,KAAKU,SAAS,CAACC,OAAO,EAAEE,QAAQ,CAAC,CAAC;IACpC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBAAOT,IAAA,CAACC,qBAAqB,CAACS,QAAQ;IAACC,KAAK,EAAEL,SAAS,CAACC,OAAQ;IAAAJ,QAAA,EAAEA;EAAQ,CAAiC,CAAC;AAC9G;AAEA,OAAO,SAASS,iBAAiBA,CAAA,EAAmB;EAClD,MAAMC,OAAO,GAAGlB,UAAU,CAACM,qBAAqB,CAAC;EACjD,IAAI,CAACY,OAAO,EAAE;IACZ,MAAM,IAAIL,KAAK,CAAC,+DAA+D,CAAC;EAClF;EAEA,OAAOK,OAAO;AAChB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type { ReplayRecorderAdapter, SessionReplayConfig } from "../types";
2
+ type AdapterDefaults = {
3
+ apiKey: string;
4
+ endpoint: string;
5
+ replayConfigDefaults?: SessionReplayConfig;
6
+ };
7
+ export declare function createMobileReplayRecorderAdapter(defaults: AdapterDefaults): ReplayRecorderAdapter;
8
+ export {};
9
+ //# sourceMappingURL=mobileReplayAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobileReplayAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/adapters/mobileReplayAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,qBAAqB,EAErB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAGlB,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAoJF,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,eAAe,GAAG,qBAAqB,CA6ClG"}
@@ -0,0 +1,6 @@
1
+ import { PlushAnalyticsClient } from "@plushanalytics/javascript";
2
+ import type { PlushAnalyticsConfig, SessionRecordingOptions } from "./types";
3
+ export { PlushAnalyticsClient };
4
+ export declare function createPlushAnalyticsClient(config: PlushAnalyticsConfig): PlushAnalyticsClient;
5
+ export type { SessionRecordingOptions };
6
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAWhC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAqB7F;AAGD,YAAY,EAAE,uBAAuB,EAAE,CAAC"}