@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.
Files changed (71) hide show
  1. package/README.md +28 -0
  2. package/lib/commonjs/components/ContentpassConsentGate.js +149 -0
  3. package/lib/commonjs/components/ContentpassConsentGate.js.map +1 -0
  4. package/lib/commonjs/components/ContentpassLayer.js +176 -0
  5. package/lib/commonjs/components/ContentpassLayer.js.map +1 -0
  6. package/lib/commonjs/components/ContentpassLayerEvents.js +2 -0
  7. package/lib/commonjs/components/ContentpassLayerEvents.js.map +1 -0
  8. package/lib/commonjs/components/buildFirstLayerUrl.js +35 -0
  9. package/lib/commonjs/components/buildFirstLayerUrl.js.map +1 -0
  10. package/lib/commonjs/components/buildFirstLayerUrl.test.js +92 -0
  11. package/lib/commonjs/components/buildFirstLayerUrl.test.js.map +1 -0
  12. package/lib/commonjs/index.js +21 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/package.json +1 -0
  15. package/lib/module/components/ContentpassConsentGate.js +142 -0
  16. package/lib/module/components/ContentpassConsentGate.js.map +1 -0
  17. package/lib/module/components/ContentpassLayer.js +171 -0
  18. package/lib/module/components/ContentpassLayer.js.map +1 -0
  19. package/lib/module/components/ContentpassLayerEvents.js +2 -0
  20. package/lib/module/components/ContentpassLayerEvents.js.map +1 -0
  21. package/lib/module/components/buildFirstLayerUrl.js +31 -0
  22. package/lib/module/components/buildFirstLayerUrl.js.map +1 -0
  23. package/lib/module/components/buildFirstLayerUrl.test.js +91 -0
  24. package/lib/module/components/buildFirstLayerUrl.test.js.map +1 -0
  25. package/lib/module/index.js +5 -0
  26. package/lib/module/index.js.map +1 -0
  27. package/lib/typescript/react-native-contentpass/src/Contentpass.d.ts +41 -0
  28. package/lib/typescript/react-native-contentpass/src/Contentpass.d.ts.map +1 -0
  29. package/lib/typescript/react-native-contentpass/src/OidcAuthStateStorage.d.ts +15 -0
  30. package/lib/typescript/react-native-contentpass/src/OidcAuthStateStorage.d.ts.map +1 -0
  31. package/lib/typescript/react-native-contentpass/src/consts/oidcConsts.d.ts +4 -0
  32. package/lib/typescript/react-native-contentpass/src/consts/oidcConsts.d.ts.map +1 -0
  33. package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/fetchContentpassToken.d.ts +6 -0
  34. package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/fetchContentpassToken.d.ts.map +1 -0
  35. package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/parseContentpassToken.d.ts +17 -0
  36. package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/parseContentpassToken.d.ts.map +1 -0
  37. package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/validateSubscription.d.ts +2 -0
  38. package/lib/typescript/react-native-contentpass/src/contentpassTokenUtils/validateSubscription.d.ts.map +1 -0
  39. package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendPageViewEvent.d.ts +8 -0
  40. package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendPageViewEvent.d.ts.map +1 -0
  41. package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendStats.d.ts +11 -0
  42. package/lib/typescript/react-native-contentpass/src/countImpressionUtils/sendStats.d.ts.map +1 -0
  43. package/lib/typescript/react-native-contentpass/src/index.d.ts +12 -0
  44. package/lib/typescript/react-native-contentpass/src/index.d.ts.map +1 -0
  45. package/lib/typescript/react-native-contentpass/src/logger.d.ts +8 -0
  46. package/lib/typescript/react-native-contentpass/src/logger.d.ts.map +1 -0
  47. package/lib/typescript/react-native-contentpass/src/sdkContext/ContentpassSdkProvider.d.ts +9 -0
  48. package/lib/typescript/react-native-contentpass/src/sdkContext/ContentpassSdkProvider.d.ts.map +1 -0
  49. package/lib/typescript/react-native-contentpass/src/sdkContext/useContentpassSdk.d.ts +3 -0
  50. package/lib/typescript/react-native-contentpass/src/sdkContext/useContentpassSdk.d.ts.map +1 -0
  51. package/lib/typescript/react-native-contentpass/src/sentryIntegration.d.ts +11 -0
  52. package/lib/typescript/react-native-contentpass/src/sentryIntegration.d.ts.map +1 -0
  53. package/lib/typescript/react-native-contentpass/src/types/CmpAdapter.d.ts +14 -0
  54. package/lib/typescript/react-native-contentpass/src/types/CmpAdapter.d.ts.map +1 -0
  55. package/lib/typescript/react-native-contentpass/src/types/ContentpassConfig.d.ts +11 -0
  56. package/lib/typescript/react-native-contentpass/src/types/ContentpassConfig.d.ts.map +1 -0
  57. package/lib/typescript/react-native-contentpass/src/types/ContentpassState.d.ts +28 -0
  58. package/lib/typescript/react-native-contentpass/src/types/ContentpassState.d.ts.map +1 -0
  59. package/lib/typescript/react-native-contentpass/src/types/RefreshTokenStrategy.d.ts +6 -0
  60. package/lib/typescript/react-native-contentpass/src/types/RefreshTokenStrategy.d.ts.map +1 -0
  61. package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassConsentGate.d.ts +12 -0
  62. package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassConsentGate.d.ts.map +1 -0
  63. package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayer.d.ts +10 -0
  64. package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayer.d.ts.map +1 -0
  65. package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayerEvents.d.ts +7 -0
  66. package/lib/typescript/react-native-contentpass-ui/src/components/ContentpassLayerEvents.d.ts.map +1 -0
  67. package/lib/typescript/react-native-contentpass-ui/src/components/buildFirstLayerUrl.d.ts +8 -0
  68. package/lib/typescript/react-native-contentpass-ui/src/components/buildFirstLayerUrl.d.ts.map +1 -0
  69. package/lib/typescript/react-native-contentpass-ui/src/index.d.ts +3 -0
  70. package/lib/typescript/react-native-contentpass-ui/src/index.d.ts.map +1 -0
  71. 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":"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","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,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=ContentpassLayerEvents.js.map
@@ -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"}