@amplytools/react-native-amply-sdk 0.15.0 → 0.15.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 (61) hide show
  1. package/AmplyReactNative.podspec +1 -1
  2. package/android/build.gradle +1 -1
  3. package/dist/cjs/campaignTouch.js +44 -0
  4. package/dist/cjs/campaignTouch.js.map +1 -0
  5. package/dist/cjs/hooks/useAmplySystemEvents.js +60 -0
  6. package/dist/cjs/hooks/useAmplySystemEvents.js.map +1 -0
  7. package/dist/cjs/index.js +723 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/nativeModule.js +55 -0
  10. package/dist/cjs/nativeModule.js.map +1 -0
  11. package/dist/cjs/nativeSpecs/NativeAmplyModule.js +5 -0
  12. package/dist/cjs/nativeSpecs/NativeAmplyModule.js.map +1 -0
  13. package/dist/cjs/systemEventUtils.js +47 -0
  14. package/dist/cjs/systemEventUtils.js.map +1 -0
  15. package/dist/cjs/systemEvents.js +27 -0
  16. package/dist/cjs/systemEvents.js.map +1 -0
  17. package/docs/ARCHITECTURE.md +26 -19
  18. package/package.json +12 -6
  19. package/scripts/check-package.js +159 -0
  20. package/dist/index.js +0 -272
  21. package/dist/index.js.map +0 -1
  22. package/dist/index.mjs +0 -234
  23. package/dist/index.mjs.map +0 -1
  24. package/dist/plugin/index.d.ts +0 -6
  25. package/dist/plugin/index.d.ts.map +0 -1
  26. package/dist/plugin/index.js +0 -186
  27. package/dist/plugin/index.js.map +0 -1
  28. package/dist/plugin/index.mjs +0 -169
  29. package/dist/plugin/index.mjs.map +0 -1
  30. package/dist/plugin/withAmply.d.ts +0 -12
  31. package/dist/plugin/withAmply.d.ts.map +0 -1
  32. package/dist/src/__tests__/appLanguage.test.d.ts +0 -2
  33. package/dist/src/__tests__/appLanguage.test.d.ts.map +0 -1
  34. package/dist/src/__tests__/appLanguage.test.js +0 -211
  35. package/dist/src/__tests__/campaignResolved.test.d.ts +0 -2
  36. package/dist/src/__tests__/campaignResolved.test.d.ts.map +0 -1
  37. package/dist/src/__tests__/campaignResolved.test.js +0 -208
  38. package/dist/src/__tests__/gateRegistrationLifecycle.test.d.ts +0 -2
  39. package/dist/src/__tests__/gateRegistrationLifecycle.test.d.ts.map +0 -1
  40. package/dist/src/__tests__/gateRegistrationLifecycle.test.js +0 -215
  41. package/dist/src/__tests__/handleUrl.test.d.ts +0 -2
  42. package/dist/src/__tests__/handleUrl.test.d.ts.map +0 -1
  43. package/dist/src/__tests__/handleUrl.test.js +0 -114
  44. package/dist/src/__tests__/index.test.d.ts +0 -2
  45. package/dist/src/__tests__/index.test.d.ts.map +0 -1
  46. package/dist/src/__tests__/index.test.js +0 -204
  47. package/dist/src/__tests__/lastCampaignTouch.test.d.ts +0 -2
  48. package/dist/src/__tests__/lastCampaignTouch.test.d.ts.map +0 -1
  49. package/dist/src/__tests__/lastCampaignTouch.test.js +0 -119
  50. package/dist/src/__tests__/systemEventUtils.test.d.ts +0 -2
  51. package/dist/src/__tests__/systemEventUtils.test.d.ts.map +0 -1
  52. package/dist/src/__tests__/systemEventUtils.test.js +0 -72
  53. package/dist/tsconfig.tsbuildinfo +0 -1
  54. package/plugin/tsconfig.tsbuildinfo +0 -1
  55. package/src/__tests__/appLanguage.test.ts +0 -298
  56. package/src/__tests__/campaignResolved.test.ts +0 -294
  57. package/src/__tests__/gateRegistrationLifecycle.test.ts +0 -281
  58. package/src/__tests__/handleUrl.test.ts +0 -155
  59. package/src/__tests__/index.test.ts +0 -258
  60. package/src/__tests__/lastCampaignTouch.test.ts +0 -151
  61. package/src/__tests__/systemEventUtils.test.ts +0 -97
@@ -22,7 +22,7 @@ Pod::Spec.new do |s|
22
22
  s.dependency 'React-RCTFabric'
23
23
 
24
24
  # Amply KMP SDK from CocoaPods
25
- s.dependency 'AmplySDK', '~> 0.15.0'
25
+ s.dependency 'AmplySDK', '~> 0.15.1'
26
26
 
27
27
  s.libraries = 'c++'
28
28
  s.pod_target_xcconfig = {
@@ -15,7 +15,7 @@ buildscript {
15
15
  apply plugin: 'com.android.library'
16
16
  apply plugin: 'org.jetbrains.kotlin.android'
17
17
 
18
- def amplySdkVersion = project.findProperty('amplySdkVersion') ?: System.getenv('AMPLY_SDK_VERSION') ?: '0.15.0'
18
+ def amplySdkVersion = project.findProperty('amplySdkVersion') ?: System.getenv('AMPLY_SDK_VERSION') ?: '0.15.1'
19
19
  group = 'tools.amply'
20
20
  version = amplySdkVersion
21
21
 
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertValidWithinMs = assertValidWithinMs;
4
+ exports.toCampaignTouch = toCampaignTouch;
5
+ /** Thrown (as a rejection) by `getLastCampaignTouch` for a window that is not a usable number. */
6
+ function assertValidWithinMs(withinMs) {
7
+ if (typeof withinMs !== 'number' || !Number.isFinite(withinMs) || withinMs < 0) {
8
+ throw new RangeError(`[Amply] getLastCampaignTouch: withinMs must be a finite number >= 0, got ${String(withinMs)}`);
9
+ }
10
+ }
11
+ function toKind(raw) {
12
+ if (typeof raw !== 'string') {
13
+ return null;
14
+ }
15
+ const lowered = raw.toLowerCase();
16
+ return lowered === 'shown' || lowered === 'engaged' ? lowered : null;
17
+ }
18
+ /**
19
+ * Narrows what the native bridge resolved to the public type. Anything it cannot read as a
20
+ * touch becomes null with a warning: the caller asked "was there a campaign", and a payload this
21
+ * bridge does not understand is not one it can vouch for.
22
+ */
23
+ function toCampaignTouch(payload) {
24
+ if (payload == null) {
25
+ return null;
26
+ }
27
+ const kind = toKind(payload.kind);
28
+ const isReadable = kind !== null &&
29
+ typeof payload.campaignId === 'string' &&
30
+ payload.campaignId.length > 0 &&
31
+ typeof payload.atMs === 'number' &&
32
+ Number.isFinite(payload.atMs);
33
+ if (!isReadable) {
34
+ console.warn('[Amply] getLastCampaignTouch: ignoring an unreadable native payload', payload);
35
+ return null;
36
+ }
37
+ return {
38
+ campaignId: payload.campaignId,
39
+ campaignName: typeof payload.campaignName === 'string' ? payload.campaignName : '',
40
+ kind,
41
+ atMs: payload.atMs,
42
+ };
43
+ }
44
+ //# sourceMappingURL=campaignTouch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaignTouch.js","sourceRoot":"","sources":["../../src/campaignTouch.ts"],"names":[],"mappings":";;AA+BA,kDAMC;AAeD,0CAqBC;AA3CD,kGAAkG;AAClG,SAAgB,mBAAmB,CAAC,QAAiB;IACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,UAAU,CAClB,4EAA4E,MAAM,CAAC,QAAQ,CAAC,EAAE,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,GAAY;IAC1B,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,OAAgD;IAC9E,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,UAAU,GACd,IAAI,KAAK,IAAI;QACb,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;QACtC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC7B,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,qEAAqE,EAAE,OAAO,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QAClF,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAmplySystemEvents = useAmplySystemEvents;
4
+ const react_1 = require("react");
5
+ const systemEvents_1 = require("../systemEvents");
6
+ function useAmplySystemEvents(options = {}) {
7
+ const { maxEntries = 50, dedupe = true, onEvent } = options;
8
+ const [events, setEvents] = (0, react_1.useState)([]);
9
+ const seenKeysRef = (0, react_1.useRef)(new Set());
10
+ const handlerRef = (0, react_1.useRef)(onEvent);
11
+ (0, react_1.useEffect)(() => {
12
+ handlerRef.current = onEvent;
13
+ }, [onEvent]);
14
+ (0, react_1.useEffect)(() => {
15
+ let unsubscribe;
16
+ let isMounted = true;
17
+ (0, systemEvents_1.addSystemEventListener)(event => {
18
+ var _a;
19
+ if (!isMounted) {
20
+ return;
21
+ }
22
+ if (dedupe) {
23
+ const key = `${event.name}-${event.timestamp}`;
24
+ if (seenKeysRef.current.has(key)) {
25
+ return;
26
+ }
27
+ seenKeysRef.current.add(key);
28
+ }
29
+ (_a = handlerRef.current) === null || _a === void 0 ? void 0 : _a.call(handlerRef, event);
30
+ setEvents(prev => {
31
+ const next = [...prev, event];
32
+ if (next.length > maxEntries) {
33
+ next.splice(0, next.length - maxEntries);
34
+ }
35
+ return next;
36
+ });
37
+ })
38
+ .then(unsub => {
39
+ if (!isMounted) {
40
+ unsub();
41
+ }
42
+ else {
43
+ unsubscribe = unsub;
44
+ }
45
+ })
46
+ .catch(error => {
47
+ console.warn('[Amply] system event listener error', error);
48
+ });
49
+ return () => {
50
+ isMounted = false;
51
+ unsubscribe === null || unsubscribe === void 0 ? void 0 : unsubscribe();
52
+ };
53
+ }, [dedupe, maxEntries]);
54
+ const reset = (0, react_1.useCallback)(() => {
55
+ seenKeysRef.current.clear();
56
+ setEvents([]);
57
+ }, []);
58
+ return { events, reset };
59
+ }
60
+ //# sourceMappingURL=useAmplySystemEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAmplySystemEvents.js","sourceRoot":"","sources":["../../../src/hooks/useAmplySystemEvents.ts"],"names":[],"mappings":";;AAeA,oDA2DC;AA1ED,iCAA+D;AAE/D,kDAAuD;AAavD,SAAgB,oBAAoB,CAClC,UAAuC,EAAE;IAEzC,MAAM,EAAC,UAAU,GAAG,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAC,GAAG,OAAO,CAAC;IAC1D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAgB,EAAE,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAA,cAAM,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAA,cAAM,EAAiB,OAAO,CAAC,CAAC;IAEnD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,WAAqC,CAAC;QAC1C,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,IAAA,qCAAsB,EAAC,KAAK,CAAC,EAAE;;YAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC/C,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjC,OAAO;gBACT,CAAC;gBACD,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,MAAA,UAAU,CAAC,OAAO,2DAAG,KAAK,CAAC,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,EAAE;gBACf,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9B,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;oBAC7B,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACC,IAAI,CAAC,KAAK,CAAC,EAAE;YACZ,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,KAAK,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;YAClB,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAEzB,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC7B,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC;AACzB,CAAC"}