@contentpass/react-native-contentpass-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/lib/commonjs/components/ContentpassConsentGate.js +149 -0
- package/lib/commonjs/components/ContentpassConsentGate.js.map +1 -0
- package/lib/commonjs/components/ContentpassLayer.js +176 -0
- package/lib/commonjs/components/ContentpassLayer.js.map +1 -0
- package/lib/commonjs/components/ContentpassLayerEvents.js +2 -0
- package/lib/commonjs/components/ContentpassLayerEvents.js.map +1 -0
- package/lib/commonjs/components/buildFirstLayerUrl.js +35 -0
- package/lib/commonjs/components/buildFirstLayerUrl.js.map +1 -0
- package/lib/commonjs/components/buildFirstLayerUrl.test.js +92 -0
- package/lib/commonjs/components/buildFirstLayerUrl.test.js.map +1 -0
- package/lib/commonjs/index.js +21 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/components/ContentpassConsentGate.js +142 -0
- package/lib/module/components/ContentpassConsentGate.js.map +1 -0
- package/lib/module/components/ContentpassLayer.js +171 -0
- package/lib/module/components/ContentpassLayer.js.map +1 -0
- package/lib/module/components/ContentpassLayerEvents.js +2 -0
- package/lib/module/components/ContentpassLayerEvents.js.map +1 -0
- package/lib/module/components/buildFirstLayerUrl.js +31 -0
- package/lib/module/components/buildFirstLayerUrl.js.map +1 -0
- package/lib/module/components/buildFirstLayerUrl.test.js +91 -0
- package/lib/module/components/buildFirstLayerUrl.test.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/react-native-contentpass/src/Contentpass.d.ts +41 -0
- package/lib/typescript/react-native-contentpass/src/Contentpass.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/OidcAuthStateStorage.d.ts +15 -0
- package/lib/typescript/react-native-contentpass/src/OidcAuthStateStorage.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/consts/oidcConsts.d.ts +4 -0
- package/lib/typescript/react-native-contentpass/src/consts/oidcConsts.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/fetchContentpassToken.d.ts +6 -0
- package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/fetchContentpassToken.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/parseContentpassToken.d.ts +17 -0
- package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/parseContentpassToken.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/validateSubscription.d.ts +2 -0
- package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/validateSubscription.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendPageViewEvent.d.ts +8 -0
- package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendPageViewEvent.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendStats.d.ts +11 -0
- package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendStats.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/index.d.ts +12 -0
- package/lib/typescript/react-native-contentpass/src/index.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/logger.d.ts +8 -0
- package/lib/typescript/react-native-contentpass/src/logger.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/sdkContext/ContentpassSdkProvider.d.ts +9 -0
- package/lib/typescript/react-native-contentpass/src/sdkContext/ContentpassSdkProvider.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/sdkContext/useContentpassSdk.d.ts +3 -0
- package/lib/typescript/react-native-contentpass/src/sdkContext/useContentpassSdk.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/sentryIntegration.d.ts +11 -0
- package/lib/typescript/react-native-contentpass/src/sentryIntegration.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/types/CmpAdapter.d.ts +14 -0
- package/lib/typescript/react-native-contentpass/src/types/CmpAdapter.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/types/ContentpassConfig.d.ts +11 -0
- package/lib/typescript/react-native-contentpass/src/types/ContentpassConfig.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/types/ContentpassState.d.ts +28 -0
- package/lib/typescript/react-native-contentpass/src/types/ContentpassState.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass/src/types/RefreshTokenStrategy.d.ts +6 -0
- package/lib/typescript/react-native-contentpass/src/types/RefreshTokenStrategy.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassConsentGate.d.ts +12 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassConsentGate.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayer.d.ts +10 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayer.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayerEvents.d.ts +7 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayerEvents.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/buildFirstLayerUrl.d.ts +8 -0
- package/lib/typescript/react-native-contentpass-ui/src/components/buildFirstLayerUrl.d.ts.map +1 -0
- package/lib/typescript/react-native-contentpass-ui/src/index.d.ts +3 -0
- package/lib/typescript/react-native-contentpass-ui/src/index.d.ts.map +1 -0
- package/package.json +90 -0
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @contentpass/react-native-contentpass-ui
|
|
2
|
+
|
|
3
|
+
React Native UI components for Contentpass layer rendering.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @contentpass/react-native-contentpass-ui
|
|
9
|
+
# or
|
|
10
|
+
yarn add @contentpass/react-native-contentpass-ui
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { YourComponent } from '@contentpass/react-native-contentpass-ui';
|
|
17
|
+
|
|
18
|
+
// Use the component
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Requirements
|
|
22
|
+
|
|
23
|
+
- React Native >= 0.76.0
|
|
24
|
+
- @contentpass/react-native-contentpass (peer dependency)
|
|
25
|
+
|
|
26
|
+
## License
|
|
27
|
+
|
|
28
|
+
MIT
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = ContentpassConsentGate;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _reactNativeContentpass = require("@contentpass/react-native-contentpass");
|
|
10
|
+
var _ContentpassLayer = _interopRequireDefault(require("./ContentpassLayer"));
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
+
function ContentpassConsentGate({
|
|
16
|
+
children,
|
|
17
|
+
cmpAdapter,
|
|
18
|
+
contentpassConfig,
|
|
19
|
+
hideAppWhenVisible = true,
|
|
20
|
+
onVisibilityChange
|
|
21
|
+
}) {
|
|
22
|
+
const sdk = (0, _reactNativeContentpass.useContentpassSdk)();
|
|
23
|
+
const [cmpReady, setCmpReady] = (0, _react.useState)(false);
|
|
24
|
+
const [hasFullConsent, setHasFullConsent] = (0, _react.useState)(false);
|
|
25
|
+
const [isVisible, setIsVisible] = (0, _react.useState)(false);
|
|
26
|
+
const [cpAuthState, setCpAuthState] = (0, _react.useState)(null);
|
|
27
|
+
const [isShowingSecondLayer, setIsShowingSecondLayer] = (0, _react.useState)(false);
|
|
28
|
+
const [isShowingContentpass, setIsShowingContentpass] = (0, _react.useState)(false);
|
|
29
|
+
const [purposesList, setPurposesList] = (0, _react.useState)([]);
|
|
30
|
+
const [vendorCount, setVendorCount] = (0, _react.useState)(0);
|
|
31
|
+
const layerEvents = (0, _react.useMemo)(() => {
|
|
32
|
+
return {
|
|
33
|
+
acceptAll: async () => {
|
|
34
|
+
try {
|
|
35
|
+
await cmpAdapter.acceptAll();
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error('Failed to accept all in CMP', error);
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
contentpass: async route => {
|
|
41
|
+
try {
|
|
42
|
+
setIsShowingContentpass(true);
|
|
43
|
+
await sdk.authenticate(route);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
console.error('Failed to authenticate Contentpass', error);
|
|
46
|
+
sdk.recoverFromError();
|
|
47
|
+
} finally {
|
|
48
|
+
setIsShowingContentpass(false);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
showSecondLayer: async view => {
|
|
52
|
+
setIsShowingSecondLayer(true);
|
|
53
|
+
try {
|
|
54
|
+
await cmpAdapter.showSecondLayer(view);
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error('Failed to show second layer in CMP', error);
|
|
57
|
+
} finally {
|
|
58
|
+
setIsShowingSecondLayer(false);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
sendEvent: (eventCategory, eventAction, eventLabel) => {
|
|
62
|
+
sdk.event(eventCategory, eventAction, eventLabel);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
}, [sdk, cmpAdapter]);
|
|
66
|
+
|
|
67
|
+
// Wait for the CMP to be ready
|
|
68
|
+
(0, _react.useEffect)(() => {
|
|
69
|
+
if (cmpReady) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
cmpAdapter?.waitForInit?.().then(() => {
|
|
73
|
+
setCmpReady(true);
|
|
74
|
+
});
|
|
75
|
+
}, [cmpReady, cmpAdapter]);
|
|
76
|
+
|
|
77
|
+
// Listen for consent status changes
|
|
78
|
+
(0, _react.useEffect)(() => {
|
|
79
|
+
if (!cmpReady) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
cmpAdapter?.onConsentStatusChange?.(v => setHasFullConsent(v));
|
|
83
|
+
cmpAdapter.getRequiredPurposes().then(v => setPurposesList(v));
|
|
84
|
+
cmpAdapter.getNumberOfVendors().then(v => setVendorCount(v));
|
|
85
|
+
}, [cmpReady, cmpAdapter, onVisibilityChange, isVisible]);
|
|
86
|
+
|
|
87
|
+
// Monitor the contentpass auth state
|
|
88
|
+
(0, _react.useEffect)(() => {
|
|
89
|
+
sdk.registerObserver(state => {
|
|
90
|
+
setCpAuthState(state);
|
|
91
|
+
});
|
|
92
|
+
}, [sdk]);
|
|
93
|
+
|
|
94
|
+
// Policy for setting the visibility of the consent layer
|
|
95
|
+
(0, _react.useEffect)(() => {
|
|
96
|
+
const invalidStates = [_reactNativeContentpass.ContentpassStateType.INITIALISING, _reactNativeContentpass.ContentpassStateType.ERROR];
|
|
97
|
+
if (!cmpReady || !cpAuthState || invalidStates.includes(cpAuthState.state)) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// FIXME do neither show app nor show the layer while
|
|
102
|
+
// second layer or contentpass funnel are shown
|
|
103
|
+
if (isShowingSecondLayer || isShowingContentpass) {
|
|
104
|
+
setIsVisible(false);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const isFine = cpAuthState.state === _reactNativeContentpass.ContentpassStateType.AUTHENTICATED || hasFullConsent;
|
|
108
|
+
const visible = !isFine;
|
|
109
|
+
console.log('>>> Changing visibility to', visible, isFine, cpAuthState.state, hasFullConsent);
|
|
110
|
+
if (visible !== isVisible) {
|
|
111
|
+
onVisibilityChange?.(visible);
|
|
112
|
+
}
|
|
113
|
+
setIsVisible(visible);
|
|
114
|
+
}, [cmpReady, cpAuthState, hasFullConsent, isShowingContentpass, isShowingSecondLayer, isVisible, onVisibilityChange]);
|
|
115
|
+
if (!isVisible) {
|
|
116
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
117
|
+
children: children
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
function renderContentpassLayer() {
|
|
121
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ContentpassLayer.default, {
|
|
122
|
+
eventHandler: layerEvents,
|
|
123
|
+
baseUrl: contentpassConfig.apiUrl,
|
|
124
|
+
planId: contentpassConfig.planId,
|
|
125
|
+
propertyId: contentpassConfig.propertyId,
|
|
126
|
+
purposesList: purposesList,
|
|
127
|
+
vendorCount: vendorCount
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (hideAppWhenVisible) {
|
|
131
|
+
return renderContentpassLayer();
|
|
132
|
+
}
|
|
133
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
134
|
+
style: styles.overlayContainer,
|
|
135
|
+
children: [children, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
136
|
+
style: styles.overlay,
|
|
137
|
+
children: renderContentpassLayer()
|
|
138
|
+
})]
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
const styles = _reactNative.StyleSheet.create({
|
|
142
|
+
overlayContainer: {
|
|
143
|
+
flex: 1
|
|
144
|
+
},
|
|
145
|
+
overlay: {
|
|
146
|
+
..._reactNative.StyleSheet.absoluteFillObject
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=ContentpassConsentGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeContentpass","_ContentpassLayer","_interopRequireDefault","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ContentpassConsentGate","children","cmpAdapter","contentpassConfig","hideAppWhenVisible","onVisibilityChange","sdk","useContentpassSdk","cmpReady","setCmpReady","useState","hasFullConsent","setHasFullConsent","isVisible","setIsVisible","cpAuthState","setCpAuthState","isShowingSecondLayer","setIsShowingSecondLayer","isShowingContentpass","setIsShowingContentpass","purposesList","setPurposesList","vendorCount","setVendorCount","layerEvents","useMemo","acceptAll","error","console","contentpass","route","authenticate","recoverFromError","showSecondLayer","view","sendEvent","eventCategory","eventAction","eventLabel","event","useEffect","waitForInit","then","onConsentStatusChange","v","getRequiredPurposes","getNumberOfVendors","registerObserver","state","invalidStates","ContentpassStateType","INITIALISING","ERROR","includes","isFine","AUTHENTICATED","visible","log","jsx","Fragment","renderContentpassLayer","eventHandler","baseUrl","apiUrl","planId","propertyId","jsxs","View","style","styles","overlayContainer","overlay","StyleSheet","create","flex","absoluteFillObject"],"sourceRoot":"../../../src","sources":["components/ContentpassConsentGate.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,uBAAA,GAAAF,OAAA;AASA,IAAAG,iBAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAAkD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAI,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAP,wBAAAO,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAWnC,SAASW,sBAAsBA,CAAC;EAC7CC,QAAQ;EACRC,UAAU;EACVC,iBAAiB;EACjBC,kBAAkB,GAAG,IAAI;EACzBC;AAC2B,CAAC,EAAE;EAC9B,MAAMC,GAAG,GAAG,IAAAC,yCAAiB,EAAC,CAAC;EAC/B,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EAC/C,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EAC3D,MAAM,CAACG,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAJ,eAAQ,EAAC,KAAK,CAAC;EACjD,MAAM,CAACK,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAN,eAAQ,EAA0B,IAAI,CAAC;EAC7E,MAAM,CAACO,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAR,eAAQ,EAAC,KAAK,CAAC;EACvE,MAAM,CAACS,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAV,eAAQ,EAAC,KAAK,CAAC;EAEvE,MAAM,CAACW,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAZ,eAAQ,EAAW,EAAE,CAAC;EAC9D,MAAM,CAACa,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAd,eAAQ,EAAC,CAAC,CAAC;EAEjD,MAAMe,WAAW,GAAG,IAAAC,cAAO,EAAC,MAAM;IAChC,OAAO;MACLC,SAAS,EAAE,MAAAA,CAAA,KAAY;QACrB,IAAI;UACF,MAAMzB,UAAU,CAACyB,SAAS,CAAC,CAAC;QAC9B,CAAC,CAAC,OAAOC,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;QACrD;MACF,CAAC;MACDE,WAAW,EAAE,MAAOC,KAAyB,IAAK;QAChD,IAAI;UACFX,uBAAuB,CAAC,IAAI,CAAC;UAC7B,MAAMd,GAAG,CAAC0B,YAAY,CAACD,KAAK,CAAC;QAC/B,CAAC,CAAC,OAAOH,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,oCAAoC,EAAEA,KAAK,CAAC;UAC1DtB,GAAG,CAAC2B,gBAAgB,CAAC,CAAC;QACxB,CAAC,SAAS;UACRb,uBAAuB,CAAC,KAAK,CAAC;QAChC;MACF,CAAC;MACDc,eAAe,EAAE,MAAOC,IAA0B,IAAK;QACrDjB,uBAAuB,CAAC,IAAI,CAAC;QAC7B,IAAI;UACF,MAAMhB,UAAU,CAACgC,eAAe,CAACC,IAAI,CAAC;QACxC,CAAC,CAAC,OAAOP,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,oCAAoC,EAAEA,KAAK,CAAC;QAC5D,CAAC,SAAS;UACRV,uBAAuB,CAAC,KAAK,CAAC;QAChC;MACF,CAAC;MACDkB,SAAS,EAAEA,CACTC,aAAqB,EACrBC,WAAmB,EACnBC,UAAkB,KACf;QACHjC,GAAG,CAACkC,KAAK,CAACH,aAAa,EAAEC,WAAW,EAAEC,UAAU,CAAC;MACnD;IACF,CAAC;EACH,CAAC,EAAE,CAACjC,GAAG,EAAEJ,UAAU,CAAC,CAAC;;EAErB;EACA,IAAAuC,gBAAS,EAAC,MAAM;IACd,IAAIjC,QAAQ,EAAE;MACZ;IACF;IAEAN,UAAU,EAAEwC,WAAW,GAAG,CAAC,CAACC,IAAI,CAAC,MAAM;MACrClC,WAAW,CAAC,IAAI,CAAC;IACnB,CAAC,CAAC;EACJ,CAAC,EAAE,CAACD,QAAQ,EAAEN,UAAU,CAAC,CAAC;;EAE1B;EACA,IAAAuC,gBAAS,EAAC,MAAM;IACd,IAAI,CAACjC,QAAQ,EAAE;MACb;IACF;IAEAN,UAAU,EAAE0C,qBAAqB,GAAIC,CAAU,IAAKjC,iBAAiB,CAACiC,CAAC,CAAC,CAAC;IACzE3C,UAAU,CAAC4C,mBAAmB,CAAC,CAAC,CAACH,IAAI,CAAEE,CAAW,IAAKvB,eAAe,CAACuB,CAAC,CAAC,CAAC;IAC1E3C,UAAU,CAAC6C,kBAAkB,CAAC,CAAC,CAACJ,IAAI,CAAEE,CAAS,IAAKrB,cAAc,CAACqB,CAAC,CAAC,CAAC;EACxE,CAAC,EAAE,CAACrC,QAAQ,EAAEN,UAAU,EAAEG,kBAAkB,EAAEQ,SAAS,CAAC,CAAC;;EAEzD;EACA,IAAA4B,gBAAS,EAAC,MAAM;IACdnC,GAAG,CAAC0C,gBAAgB,CAAEC,KAAK,IAAK;MAC9BjC,cAAc,CAACiC,KAAK,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC3C,GAAG,CAAC,CAAC;;EAET;EACA,IAAAmC,gBAAS,EAAC,MAAM;IACd,MAAMS,aAAa,GAAG,CACpBC,4CAAoB,CAACC,YAAY,EACjCD,4CAAoB,CAACE,KAAK,CAC3B;IACD,IACE,CAAC7C,QAAQ,IACT,CAACO,WAAW,IACZmC,aAAa,CAACI,QAAQ,CAACvC,WAAW,CAACkC,KAAK,CAAC,EACzC;MACA;IACF;;IAEA;IACA;IACA,IAAIhC,oBAAoB,IAAIE,oBAAoB,EAAE;MAChDL,YAAY,CAAC,KAAK,CAAC;MACnB;IACF;IAEA,MAAMyC,MAAM,GACVxC,WAAW,CAACkC,KAAK,KAAKE,4CAAoB,CAACK,aAAa,IACxD7C,cAAc;IAChB,MAAM8C,OAAO,GAAG,CAACF,MAAM;IACvB1B,OAAO,CAAC6B,GAAG,CACT,4BAA4B,EAC5BD,OAAO,EACPF,MAAM,EACNxC,WAAW,CAACkC,KAAK,EACjBtC,cACF,CAAC;IACD,IAAI8C,OAAO,KAAK5C,SAAS,EAAE;MACzBR,kBAAkB,GAAGoD,OAAO,CAAC;IAC/B;IACA3C,YAAY,CAAC2C,OAAO,CAAC;EACvB,CAAC,EAAE,CACDjD,QAAQ,EACRO,WAAW,EACXJ,cAAc,EACdQ,oBAAoB,EACpBF,oBAAoB,EACpBJ,SAAS,EACTR,kBAAkB,CACnB,CAAC;EAEF,IAAI,CAACQ,SAAS,EAAE;IACd,oBAAO,IAAAlC,WAAA,CAAAgF,GAAA,EAAAhF,WAAA,CAAAiF,QAAA;MAAA3D,QAAA,EAAGA;IAAQ,CAAG,CAAC;EACxB;EAEA,SAAS4D,sBAAsBA,CAAA,EAAG;IAChC,oBACE,IAAAlF,WAAA,CAAAgF,GAAA,EAAClF,iBAAA,CAAAK,OAAgB;MACfgF,YAAY,EAAErC,WAAY;MAC1BsC,OAAO,EAAE5D,iBAAiB,CAAC6D,MAAO;MAClCC,MAAM,EAAE9D,iBAAiB,CAAC8D,MAAO;MACjCC,UAAU,EAAE/D,iBAAiB,CAAC+D,UAAW;MACzC7C,YAAY,EAAEA,YAAa;MAC3BE,WAAW,EAAEA;IAAY,CAC1B,CAAC;EAEN;EAEA,IAAInB,kBAAkB,EAAE;IACtB,OAAOyD,sBAAsB,CAAC,CAAC;EACjC;EAEA,oBACE,IAAAlF,WAAA,CAAAwF,IAAA,EAAC5F,YAAA,CAAA6F,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,gBAAiB;IAAAtE,QAAA,GAClCA,QAAQ,eACT,IAAAtB,WAAA,CAAAgF,GAAA,EAACpF,YAAA,CAAA6F,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACE,OAAQ;MAAAvE,QAAA,EAAE4D,sBAAsB,CAAC;IAAC,CAAO,CAAC;EAAA,CAC1D,CAAC;AAEX;AAEA,MAAMS,MAAM,GAAGG,uBAAU,CAACC,MAAM,CAAC;EAC/BH,gBAAgB,EAAE;IAChBI,IAAI,EAAE;EACR,CAAC;EACDH,OAAO,EAAE;IACP,GAAGC,uBAAU,CAACG;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = ContentpassLayer;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _reactNativeWebview = require("react-native-webview");
|
|
9
|
+
var _buildFirstLayerUrl = _interopRequireDefault(require("./buildFirstLayerUrl"));
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
const MESSAGE_PROTOCOL = 'contentpass-first-layer';
|
|
14
|
+
const buildGlueCodeJs = firstLayerUrl => `
|
|
15
|
+
(function () {
|
|
16
|
+
try {
|
|
17
|
+
if (window.location.href === 'about:blank') {
|
|
18
|
+
var encodedUrl = '${encodeURIComponent(firstLayerUrl)}';
|
|
19
|
+
var decodedUrl = decodeURIComponent(encodedUrl);
|
|
20
|
+
window.location.href = decodedUrl;
|
|
21
|
+
}
|
|
22
|
+
} catch (e) {}
|
|
23
|
+
|
|
24
|
+
const originalPostMessage = window.postMessage;
|
|
25
|
+
window.postMessage = function (data) {
|
|
26
|
+
try {
|
|
27
|
+
window.ReactNativeWebView.postMessage(
|
|
28
|
+
typeof data === 'string' ? data : JSON.stringify(data)
|
|
29
|
+
);
|
|
30
|
+
} catch (e) {}
|
|
31
|
+
if (originalPostMessage) {
|
|
32
|
+
originalPostMessage.apply(window, arguments);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
true;
|
|
37
|
+
})();
|
|
38
|
+
`;
|
|
39
|
+
const styles = _reactNative.StyleSheet.create({
|
|
40
|
+
container: {
|
|
41
|
+
flex: 1,
|
|
42
|
+
backgroundColor: 'white'
|
|
43
|
+
},
|
|
44
|
+
webview: {
|
|
45
|
+
flex: 1,
|
|
46
|
+
backgroundColor: 'red'
|
|
47
|
+
},
|
|
48
|
+
error: {
|
|
49
|
+
flex: 1,
|
|
50
|
+
alignItems: 'center',
|
|
51
|
+
justifyContent: 'center',
|
|
52
|
+
padding: 16
|
|
53
|
+
},
|
|
54
|
+
errorText: {
|
|
55
|
+
fontSize: 14,
|
|
56
|
+
textAlign: 'center'
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
function ContentpassLayer({
|
|
60
|
+
baseUrl,
|
|
61
|
+
eventHandler,
|
|
62
|
+
planId,
|
|
63
|
+
propertyId,
|
|
64
|
+
purposesList,
|
|
65
|
+
vendorCount
|
|
66
|
+
}) {
|
|
67
|
+
const firstLayerUrl = (0, _react.useMemo)(() => {
|
|
68
|
+
return (0, _buildFirstLayerUrl.default)({
|
|
69
|
+
baseUrl,
|
|
70
|
+
propertyId,
|
|
71
|
+
planId,
|
|
72
|
+
purposesList,
|
|
73
|
+
vendorCount
|
|
74
|
+
});
|
|
75
|
+
}, [baseUrl, planId, propertyId, purposesList, vendorCount]);
|
|
76
|
+
const glueCodeJs = (0, _react.useMemo)(() => {
|
|
77
|
+
return buildGlueCodeJs(firstLayerUrl);
|
|
78
|
+
}, [firstLayerUrl]);
|
|
79
|
+
function handleMessage(event) {
|
|
80
|
+
let msg;
|
|
81
|
+
try {
|
|
82
|
+
msg = JSON.parse(event.nativeEvent.data);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error('Error parsing WebView message', error);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (!msg || msg.protocol !== MESSAGE_PROTOCOL) {
|
|
88
|
+
console.log('WebView message with unknown protocol', msg.protocol, msg);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (msg.type !== 'REQUEST') {
|
|
92
|
+
console.warn('WebView message with unknown type', msg.type, msg);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
console.debug('WebView message', msg);
|
|
96
|
+
switch (msg.action) {
|
|
97
|
+
case 'ENABLE_SCROLL_ON_PROPERTY':
|
|
98
|
+
// Ignore this message
|
|
99
|
+
break;
|
|
100
|
+
case 'GO_TO':
|
|
101
|
+
switch (msg.payload?.options?.page) {
|
|
102
|
+
case 'login':
|
|
103
|
+
case 'signup':
|
|
104
|
+
eventHandler.contentpass(msg.payload?.options?.page);
|
|
105
|
+
break;
|
|
106
|
+
default:
|
|
107
|
+
console.warn('WebView message with unknown page', msg.payload?.options?.page, msg);
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
case 'ACCEPT_ALL':
|
|
112
|
+
eventHandler.acceptAll();
|
|
113
|
+
break;
|
|
114
|
+
case 'SHOW_CMP_TOOL':
|
|
115
|
+
eventHandler.showSecondLayer('purpose');
|
|
116
|
+
break;
|
|
117
|
+
case 'SHOW_VENDOR_LIST_TOOL':
|
|
118
|
+
eventHandler.showSecondLayer('vendor');
|
|
119
|
+
break;
|
|
120
|
+
case 'SEND_EVENT':
|
|
121
|
+
if (Array.isArray(msg.payload)) {
|
|
122
|
+
eventHandler.sendEvent(msg.payload[0], msg.payload[1], msg.payload[2]);
|
|
123
|
+
} else {
|
|
124
|
+
console.warn('WebView message with unknown payload', msg.payload);
|
|
125
|
+
}
|
|
126
|
+
break;
|
|
127
|
+
default:
|
|
128
|
+
console.warn('WebView message with unknown action', msg.action, msg);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
133
|
+
style: styles.container,
|
|
134
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeWebview.WebView, {
|
|
135
|
+
source: {
|
|
136
|
+
uri: 'about:blank'
|
|
137
|
+
},
|
|
138
|
+
style: styles.webview,
|
|
139
|
+
originWhitelist: ['*'],
|
|
140
|
+
startInLoadingState: true,
|
|
141
|
+
javaScriptEnabled: true,
|
|
142
|
+
domStorageEnabled: true,
|
|
143
|
+
injectedJavaScript: glueCodeJs,
|
|
144
|
+
onMessage: event => {
|
|
145
|
+
handleMessage(event);
|
|
146
|
+
},
|
|
147
|
+
onShouldStartLoadWithRequest: request => {
|
|
148
|
+
console.debug('WebView request', request.url);
|
|
149
|
+
return true;
|
|
150
|
+
},
|
|
151
|
+
onLoadStart: () => {
|
|
152
|
+
console.debug('WebView load start');
|
|
153
|
+
},
|
|
154
|
+
onLoadEnd: () => {
|
|
155
|
+
console.debug('WebView load end');
|
|
156
|
+
},
|
|
157
|
+
onLoadProgress: event => {
|
|
158
|
+
console.debug('WebView progress', event.nativeEvent.progress);
|
|
159
|
+
},
|
|
160
|
+
onError: event => {
|
|
161
|
+
console.debug('WebView error', event.nativeEvent);
|
|
162
|
+
},
|
|
163
|
+
onHttpError: event => {
|
|
164
|
+
console.debug('WebView HTTP error', event.nativeEvent);
|
|
165
|
+
},
|
|
166
|
+
renderError: (errorDomain, errorCode, errorDesc) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
167
|
+
style: styles.error,
|
|
168
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
169
|
+
style: styles.errorText,
|
|
170
|
+
children: `WebView error (${errorDomain}:${errorCode}) ${errorDesc}`
|
|
171
|
+
})
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=ContentpassLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeWebview","_buildFirstLayerUrl","_interopRequireDefault","_react","_jsxRuntime","e","__esModule","default","MESSAGE_PROTOCOL","buildGlueCodeJs","firstLayerUrl","encodeURIComponent","styles","StyleSheet","create","container","flex","backgroundColor","webview","error","alignItems","justifyContent","padding","errorText","fontSize","textAlign","ContentpassLayer","baseUrl","eventHandler","planId","propertyId","purposesList","vendorCount","useMemo","buildFirstLayerUrl","glueCodeJs","handleMessage","event","msg","JSON","parse","nativeEvent","data","console","protocol","log","type","warn","debug","action","payload","options","page","contentpass","acceptAll","showSecondLayer","Array","isArray","sendEvent","jsx","View","style","children","WebView","source","uri","originWhitelist","startInLoadingState","javaScriptEnabled","domStorageEnabled","injectedJavaScript","onMessage","onShouldStartLoadWithRequest","request","url","onLoadStart","onLoadEnd","onLoadProgress","progress","onError","onHttpError","renderError","errorDomain","errorCode","errorDesc","Text"],"sourceRoot":"../../../src","sources":["components/ContentpassLayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["components/ContentpassLayerEvents.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = buildFirstLayerUrl;
|
|
7
|
+
// const THEME = 'classic';
|
|
8
|
+
// const THEME = 'classic-app';
|
|
9
|
+
const THEME = 'steps';
|
|
10
|
+
|
|
11
|
+
// FIXME pass something from this SDK?
|
|
12
|
+
const SDK_VERSION = '20260203105802-ef26e7d899';
|
|
13
|
+
function buildFirstLayerUrl({
|
|
14
|
+
baseUrl,
|
|
15
|
+
propertyId,
|
|
16
|
+
planId,
|
|
17
|
+
purposesList,
|
|
18
|
+
vendorCount
|
|
19
|
+
}) {
|
|
20
|
+
// FIXME handle trailing slash in baseUrl
|
|
21
|
+
const url = new URL(`${baseUrl}/first-layer/`);
|
|
22
|
+
url.searchParams.set('start', 'true');
|
|
23
|
+
url.searchParams.set('theme', THEME);
|
|
24
|
+
url.searchParams.set('v', SDK_VERSION);
|
|
25
|
+
url.searchParams.set('locale', 'en-US');
|
|
26
|
+
url.searchParams.set('planId', planId);
|
|
27
|
+
url.searchParams.set('propertyId', propertyId);
|
|
28
|
+
url.searchParams.set('purposesList', encodeURIComponent(purposesList.join(',')));
|
|
29
|
+
url.searchParams.set('vendorCount', vendorCount.toString());
|
|
30
|
+
// url.searchParams.set('config', 'undefined');
|
|
31
|
+
// FIXME why is it not able to handle the start=true parameter?
|
|
32
|
+
const firstLayerUrl = url.toString().replace('?start=true', '?start');
|
|
33
|
+
return firstLayerUrl;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=buildFirstLayerUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["THEME","SDK_VERSION","buildFirstLayerUrl","baseUrl","propertyId","planId","purposesList","vendorCount","url","URL","searchParams","set","encodeURIComponent","join","toString","firstLayerUrl","replace"],"sourceRoot":"../../../src","sources":["components/buildFirstLayerUrl.ts"],"mappings":";;;;;;AAAA;AACA;AACA,MAAMA,KAAK,GAAG,OAAO;;AAErB;AACA,MAAMC,WAAW,GAAG,2BAA2B;AAEhC,SAASC,kBAAkBA,CAAC;EACzCC,OAAO;EACPC,UAAU;EACVC,MAAM;EACNC,YAAY;EACZC;AAOF,CAAC,EAAU;EACT;EACA,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAC,GAAGN,OAAO,eAAe,CAAC;EAC9CK,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;EACrCH,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,OAAO,EAAEX,KAAK,CAAC;EACpCQ,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,GAAG,EAAEV,WAAW,CAAC;EACtCO,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;EACvCH,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,QAAQ,EAAEN,MAAM,CAAC;EACtCG,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,YAAY,EAAEP,UAAU,CAAC;EAC9CI,GAAG,CAACE,YAAY,CAACC,GAAG,CAClB,cAAc,EACdC,kBAAkB,CAACN,YAAY,CAACO,IAAI,CAAC,GAAG,CAAC,CAC3C,CAAC;EACDL,GAAG,CAACE,YAAY,CAACC,GAAG,CAAC,aAAa,EAAEJ,WAAW,CAACO,QAAQ,CAAC,CAAC,CAAC;EAC3D;EACA;EACA,MAAMC,aAAa,GAAGP,GAAG,CAACM,QAAQ,CAAC,CAAC,CAACE,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;EAErE,OAAOD,aAAa;AACtB","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _buildFirstLayerUrl = _interopRequireDefault(require("./buildFirstLayerUrl"));
|
|
4
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
+
describe('buildFirstLayerUrl', () => {
|
|
6
|
+
const defaultParams = {
|
|
7
|
+
baseUrl: 'https://example.com',
|
|
8
|
+
propertyId: 'prop-123',
|
|
9
|
+
planId: 'plan-456',
|
|
10
|
+
purposesList: ['analytics', 'marketing'],
|
|
11
|
+
vendorCount: 5
|
|
12
|
+
};
|
|
13
|
+
it('should build a URL with the correct base path', () => {
|
|
14
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
15
|
+
expect(url).toContain('https://example.com/first-layer/');
|
|
16
|
+
});
|
|
17
|
+
it('should include the start parameter without =true', () => {
|
|
18
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
19
|
+
expect(url).toContain('?start&');
|
|
20
|
+
expect(url).not.toContain('start=true');
|
|
21
|
+
});
|
|
22
|
+
it('should include the theme parameter', () => {
|
|
23
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
24
|
+
const parsed = new URL(url);
|
|
25
|
+
expect(parsed.searchParams.get('theme')).toBe('steps');
|
|
26
|
+
});
|
|
27
|
+
it('should include the SDK version parameter', () => {
|
|
28
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
29
|
+
const parsed = new URL(url);
|
|
30
|
+
expect(parsed.searchParams.get('v')).toBeTruthy();
|
|
31
|
+
});
|
|
32
|
+
it('should set locale to en-US', () => {
|
|
33
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
34
|
+
const parsed = new URL(url);
|
|
35
|
+
expect(parsed.searchParams.get('locale')).toBe('en-US');
|
|
36
|
+
});
|
|
37
|
+
it('should include the planId parameter', () => {
|
|
38
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
39
|
+
const parsed = new URL(url);
|
|
40
|
+
expect(parsed.searchParams.get('planId')).toBe('plan-456');
|
|
41
|
+
});
|
|
42
|
+
it('should include the propertyId parameter', () => {
|
|
43
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
44
|
+
const parsed = new URL(url);
|
|
45
|
+
expect(parsed.searchParams.get('propertyId')).toBe('prop-123');
|
|
46
|
+
});
|
|
47
|
+
it('should include the vendorCount as a string', () => {
|
|
48
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
49
|
+
const parsed = new URL(url);
|
|
50
|
+
expect(parsed.searchParams.get('vendorCount')).toBe('5');
|
|
51
|
+
});
|
|
52
|
+
it('should encode and join purposesList with commas', () => {
|
|
53
|
+
const url = (0, _buildFirstLayerUrl.default)(defaultParams);
|
|
54
|
+
const parsed = new URL(url);
|
|
55
|
+
const purposesList = parsed.searchParams.get('purposesList');
|
|
56
|
+
|
|
57
|
+
// The value is double-encoded: encodeURIComponent is called before set()
|
|
58
|
+
expect(purposesList).toBe(encodeURIComponent('analytics,marketing'));
|
|
59
|
+
});
|
|
60
|
+
it('should handle a single purpose in the list', () => {
|
|
61
|
+
const url = (0, _buildFirstLayerUrl.default)({
|
|
62
|
+
...defaultParams,
|
|
63
|
+
purposesList: ['analytics']
|
|
64
|
+
});
|
|
65
|
+
const parsed = new URL(url);
|
|
66
|
+
expect(parsed.searchParams.get('purposesList')).toBe(encodeURIComponent('analytics'));
|
|
67
|
+
});
|
|
68
|
+
it('should handle an empty purposes list', () => {
|
|
69
|
+
const url = (0, _buildFirstLayerUrl.default)({
|
|
70
|
+
...defaultParams,
|
|
71
|
+
purposesList: []
|
|
72
|
+
});
|
|
73
|
+
const parsed = new URL(url);
|
|
74
|
+
expect(parsed.searchParams.get('purposesList')).toBe(encodeURIComponent(''));
|
|
75
|
+
});
|
|
76
|
+
it('should handle vendorCount of 0', () => {
|
|
77
|
+
const url = (0, _buildFirstLayerUrl.default)({
|
|
78
|
+
...defaultParams,
|
|
79
|
+
vendorCount: 0
|
|
80
|
+
});
|
|
81
|
+
const parsed = new URL(url);
|
|
82
|
+
expect(parsed.searchParams.get('vendorCount')).toBe('0');
|
|
83
|
+
});
|
|
84
|
+
it('should handle a baseUrl with a trailing path', () => {
|
|
85
|
+
const url = (0, _buildFirstLayerUrl.default)({
|
|
86
|
+
...defaultParams,
|
|
87
|
+
baseUrl: 'https://cdn.example.com/consent'
|
|
88
|
+
});
|
|
89
|
+
expect(url).toContain('https://cdn.example.com/consent/first-layer/');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=buildFirstLayerUrl.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_buildFirstLayerUrl","_interopRequireDefault","require","e","__esModule","default","describe","defaultParams","baseUrl","propertyId","planId","purposesList","vendorCount","it","url","buildFirstLayerUrl","expect","toContain","not","parsed","URL","searchParams","get","toBe","toBeTruthy","encodeURIComponent"],"sourceRoot":"../../../src","sources":["components/buildFirstLayerUrl.test.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ContentpassConsentGate", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ContentpassConsentGate.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "ContentpassLayer", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _ContentpassLayer.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _ContentpassLayer = _interopRequireDefault(require("./components/ContentpassLayer"));
|
|
19
|
+
var _ContentpassConsentGate = _interopRequireDefault(require("./components/ContentpassConsentGate"));
|
|
20
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_ContentpassLayer","_interopRequireDefault","require","_ContentpassConsentGate","e","__esModule","default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAwF,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|