@amplytools/react-native-amply-sdk 0.15.0 → 0.15.1
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/cjs/campaignTouch.js +44 -0
- package/dist/cjs/campaignTouch.js.map +1 -0
- package/dist/cjs/hooks/useAmplySystemEvents.js +60 -0
- package/dist/cjs/hooks/useAmplySystemEvents.js.map +1 -0
- package/dist/cjs/index.js +723 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nativeModule.js +55 -0
- package/dist/cjs/nativeModule.js.map +1 -0
- package/dist/cjs/nativeSpecs/NativeAmplyModule.js +5 -0
- package/dist/cjs/nativeSpecs/NativeAmplyModule.js.map +1 -0
- package/dist/cjs/systemEventUtils.js +47 -0
- package/dist/cjs/systemEventUtils.js.map +1 -0
- package/dist/cjs/systemEvents.js +27 -0
- package/dist/cjs/systemEvents.js.map +1 -0
- package/docs/ARCHITECTURE.md +26 -19
- package/package.json +12 -6
- package/scripts/check-package.js +159 -0
- package/dist/index.js +0 -272
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -234
- package/dist/index.mjs.map +0 -1
- package/dist/plugin/index.d.ts +0 -6
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js +0 -186
- package/dist/plugin/index.js.map +0 -1
- package/dist/plugin/index.mjs +0 -169
- package/dist/plugin/index.mjs.map +0 -1
- package/dist/plugin/withAmply.d.ts +0 -12
- package/dist/plugin/withAmply.d.ts.map +0 -1
- package/dist/src/__tests__/appLanguage.test.d.ts +0 -2
- package/dist/src/__tests__/appLanguage.test.d.ts.map +0 -1
- package/dist/src/__tests__/appLanguage.test.js +0 -211
- package/dist/src/__tests__/campaignResolved.test.d.ts +0 -2
- package/dist/src/__tests__/campaignResolved.test.d.ts.map +0 -1
- package/dist/src/__tests__/campaignResolved.test.js +0 -208
- package/dist/src/__tests__/gateRegistrationLifecycle.test.d.ts +0 -2
- package/dist/src/__tests__/gateRegistrationLifecycle.test.d.ts.map +0 -1
- package/dist/src/__tests__/gateRegistrationLifecycle.test.js +0 -215
- package/dist/src/__tests__/handleUrl.test.d.ts +0 -2
- package/dist/src/__tests__/handleUrl.test.d.ts.map +0 -1
- package/dist/src/__tests__/handleUrl.test.js +0 -114
- package/dist/src/__tests__/index.test.d.ts +0 -2
- package/dist/src/__tests__/index.test.d.ts.map +0 -1
- package/dist/src/__tests__/index.test.js +0 -204
- package/dist/src/__tests__/lastCampaignTouch.test.d.ts +0 -2
- package/dist/src/__tests__/lastCampaignTouch.test.d.ts.map +0 -1
- package/dist/src/__tests__/lastCampaignTouch.test.js +0 -119
- package/dist/src/__tests__/systemEventUtils.test.d.ts +0 -2
- package/dist/src/__tests__/systemEventUtils.test.d.ts.map +0 -1
- package/dist/src/__tests__/systemEventUtils.test.js +0 -72
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/plugin/tsconfig.tsbuildinfo +0 -1
- package/src/__tests__/appLanguage.test.ts +0 -298
- package/src/__tests__/campaignResolved.test.ts +0 -294
- package/src/__tests__/gateRegistrationLifecycle.test.ts +0 -281
- package/src/__tests__/handleUrl.test.ts +0 -155
- package/src/__tests__/index.test.ts +0 -258
- package/src/__tests__/lastCampaignTouch.test.ts +0 -151
- package/src/__tests__/systemEventUtils.test.ts +0 -97
|
@@ -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"}
|