@contentpass/react-native-contentpass 0.3.18 → 0.4.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.
Files changed (96) hide show
  1. package/README.md +109 -79
  2. package/docs/CONTRIBUTING.md +7 -7
  3. package/lib/commonjs/Contentpass.js +38 -25
  4. package/lib/commonjs/Contentpass.js.map +1 -1
  5. package/lib/commonjs/Contentpass.test.js +455 -0
  6. package/lib/commonjs/Contentpass.test.js.map +1 -0
  7. package/lib/commonjs/OidcAuthStateStorage.test.js +59 -0
  8. package/lib/commonjs/OidcAuthStateStorage.test.js.map +1 -0
  9. package/lib/commonjs/contentpassTokenUtils/fetchContentpassToken.test.js +45 -0
  10. package/lib/commonjs/contentpassTokenUtils/fetchContentpassToken.test.js.map +1 -0
  11. package/lib/commonjs/contentpassTokenUtils/parseContentpassToken.test.js +31 -0
  12. package/lib/commonjs/contentpassTokenUtils/parseContentpassToken.test.js.map +1 -0
  13. package/lib/commonjs/contentpassTokenUtils/validateSubscription.test.js +73 -0
  14. package/lib/commonjs/contentpassTokenUtils/validateSubscription.test.js.map +1 -0
  15. package/lib/commonjs/countImpressionUtils/sendPageViewEvent.test.js +35 -0
  16. package/lib/commonjs/countImpressionUtils/sendPageViewEvent.test.js.map +1 -0
  17. package/lib/commonjs/countImpressionUtils/sendStats.js +1 -1
  18. package/lib/commonjs/countImpressionUtils/sendStats.js.map +1 -1
  19. package/lib/commonjs/countImpressionUtils/sendStats.test.js +39 -0
  20. package/lib/commonjs/countImpressionUtils/sendStats.test.js.map +1 -0
  21. package/lib/commonjs/index.js +2 -0
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/logger.test.js +42 -0
  24. package/lib/commonjs/logger.test.js.map +1 -0
  25. package/lib/commonjs/package.json +1 -0
  26. package/lib/commonjs/sdkContext/ContentpassSdkProvder.test.js +33 -0
  27. package/lib/commonjs/sdkContext/ContentpassSdkProvder.test.js.map +1 -0
  28. package/lib/commonjs/sdkContext/useContentpassSdk.test.js +37 -0
  29. package/lib/commonjs/sdkContext/useContentpassSdk.test.js.map +1 -0
  30. package/lib/commonjs/sdkContext/useContentpassState.js +26 -0
  31. package/lib/commonjs/sdkContext/useContentpassState.js.map +1 -0
  32. package/lib/commonjs/sentryIntegration.test.js +131 -0
  33. package/lib/commonjs/sentryIntegration.test.js.map +1 -0
  34. package/lib/commonjs/types/CmpAdapter.js +2 -0
  35. package/lib/commonjs/types/CmpAdapter.js.map +1 -0
  36. package/lib/module/Contentpass.js +38 -25
  37. package/lib/module/Contentpass.js.map +1 -1
  38. package/lib/module/Contentpass.test.js +448 -0
  39. package/lib/module/Contentpass.test.js.map +1 -0
  40. package/lib/module/OidcAuthStateStorage.test.js +56 -0
  41. package/lib/module/OidcAuthStateStorage.test.js.map +1 -0
  42. package/lib/module/contentpassTokenUtils/fetchContentpassToken.test.js +44 -0
  43. package/lib/module/contentpassTokenUtils/fetchContentpassToken.test.js.map +1 -0
  44. package/lib/module/contentpassTokenUtils/parseContentpassToken.test.js +30 -0
  45. package/lib/module/contentpassTokenUtils/parseContentpassToken.test.js.map +1 -0
  46. package/lib/module/contentpassTokenUtils/validateSubscription.test.js +70 -0
  47. package/lib/module/contentpassTokenUtils/validateSubscription.test.js.map +1 -0
  48. package/lib/module/countImpressionUtils/sendPageViewEvent.test.js +34 -0
  49. package/lib/module/countImpressionUtils/sendPageViewEvent.test.js.map +1 -0
  50. package/lib/module/countImpressionUtils/sendStats.js +1 -1
  51. package/lib/module/countImpressionUtils/sendStats.js.map +1 -1
  52. package/lib/module/countImpressionUtils/sendStats.test.js +38 -0
  53. package/lib/module/countImpressionUtils/sendStats.test.js.map +1 -0
  54. package/lib/module/index.js +6 -3
  55. package/lib/module/index.js.map +1 -1
  56. package/lib/module/logger.test.js +40 -0
  57. package/lib/module/logger.test.js.map +1 -0
  58. package/lib/module/package.json +1 -0
  59. package/lib/module/sdkContext/ContentpassSdkProvder.test.js +32 -0
  60. package/lib/module/sdkContext/ContentpassSdkProvder.test.js.map +1 -0
  61. package/lib/module/sdkContext/useContentpassSdk.test.js +36 -0
  62. package/lib/module/sdkContext/useContentpassSdk.test.js.map +1 -0
  63. package/lib/module/sdkContext/useContentpassState.js +21 -0
  64. package/lib/module/sdkContext/useContentpassState.js.map +1 -0
  65. package/lib/module/sentryIntegration.test.js +128 -0
  66. package/lib/module/sentryIntegration.test.js.map +1 -0
  67. package/lib/module/types/CmpAdapter.js +2 -0
  68. package/lib/module/types/CmpAdapter.js.map +1 -0
  69. package/lib/typescript/commonjs/src/Contentpass.d.ts +8 -5
  70. package/lib/typescript/commonjs/src/Contentpass.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/src/countImpressionUtils/sendStats.d.ts +1 -0
  72. package/lib/typescript/commonjs/src/countImpressionUtils/sendStats.d.ts.map +1 -1
  73. package/lib/typescript/commonjs/src/index.d.ts +11 -6
  74. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/src/logger.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/src/sdkContext/ContentpassSdkProvider.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/src/sdkContext/useContentpassState.d.ts +4 -0
  78. package/lib/typescript/commonjs/src/sdkContext/useContentpassState.d.ts.map +1 -0
  79. package/lib/typescript/commonjs/src/sentryIntegration.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/types/CmpAdapter.d.ts +14 -0
  81. package/lib/typescript/commonjs/src/types/CmpAdapter.d.ts.map +1 -0
  82. package/lib/typescript/module/src/Contentpass.d.ts +8 -5
  83. package/lib/typescript/module/src/Contentpass.d.ts.map +1 -1
  84. package/lib/typescript/module/src/countImpressionUtils/sendStats.d.ts +1 -0
  85. package/lib/typescript/module/src/countImpressionUtils/sendStats.d.ts.map +1 -1
  86. package/lib/typescript/module/src/index.d.ts +11 -6
  87. package/lib/typescript/module/src/index.d.ts.map +1 -1
  88. package/lib/typescript/module/src/logger.d.ts.map +1 -1
  89. package/lib/typescript/module/src/sdkContext/ContentpassSdkProvider.d.ts.map +1 -1
  90. package/lib/typescript/module/src/sdkContext/useContentpassState.d.ts +4 -0
  91. package/lib/typescript/module/src/sdkContext/useContentpassState.d.ts.map +1 -0
  92. package/lib/typescript/module/src/sentryIntegration.d.ts.map +1 -1
  93. package/lib/typescript/module/src/types/CmpAdapter.d.ts +14 -0
  94. package/lib/typescript/module/src/types/CmpAdapter.d.ts.map +1 -0
  95. package/package.json +24 -59
  96. package/LICENSE +0 -20
package/README.md CHANGED
@@ -1,150 +1,180 @@
1
1
  # @contentpass/react-native-contentpass
2
2
 
3
- Contentpass React Native SDK enables easy integration of Contentpass functionality into your React Native applications.
3
+ The core Contentpass SDK for React Native. Handles OAuth 2.0 authentication, subscription validation, and impression tracking for Contentpass-enabled apps.
4
4
 
5
5
  ## Installation
6
- Install the package using npm or Yarn:
7
6
 
8
- ```sh
7
+ ```bash
9
8
  npm install @contentpass/react-native-contentpass
9
+ # or
10
+ yarn add @contentpass/react-native-contentpass
10
11
  ```
11
12
 
12
- or
13
+ ### Peer dependencies
13
14
 
14
- ```sh
15
- yarn add @contentpass/react-native-contentpass
16
- ```
15
+ The following peer dependencies must be installed:
17
16
 
18
- ### Peer Dependencies
19
- The following peer dependencies must also be installed:
20
- - [react](https://github.com/facebook/react) (Required for React Native projects.)
21
- - [react-native](https://github.com/facebook/react-native) (Core React Native framework)
22
- - [react-native-app-auth](https://github.com/FormidableLabs/react-native-app-auth) (Used for OAuth 2.0 authentication)
23
- - [react-native-encrypted-storage](https://github.com/emeraldsanto/react-native-encrypted-storage) (Ensures secure storage of authentication tokens)
17
+ - [react](https://github.com/facebook/react)
18
+ - [react-native](https://github.com/facebook/react-native)
19
+ - [react-native-app-auth](https://github.com/FormidableLabs/react-native-app-auth) OAuth 2.0 authentication
20
+ - [react-native-encrypted-storage](https://github.com/emeraldsanto/react-native-encrypted-storage) secure token storage
21
+
22
+ Some peer dependencies require additional native setup. Refer to their official guides:
24
23
 
25
- Some dependencies require additional setup in the native code. Refer to their official guides:
26
24
  - [react-native-app-auth setup](https://commerce.nearform.com/open-source/react-native-app-auth/docs#setup)
27
25
  - [react-native-encrypted-storage setup](https://github.com/emeraldsanto/react-native-encrypted-storage?tab=readme-ov-file#installation)
28
26
 
29
27
  ### Expo support
30
- If you are using Expo, you need to run the following command to enable modifications to the `ios` and `android` directories:
31
28
 
32
- ```sh
29
+ If you are using Expo, run the following command to enable native directory modifications:
30
+
31
+ ```bash
33
32
  npx expo prebuild
34
33
  ```
35
34
 
36
35
  ## Usage
37
36
 
38
37
  ### Initialization
39
- Wrap your app's root component with ContentpassSdkProvider. The provider requires a configuration object (contentpassConfig) with the following properties:
40
- - `propertyId` - Your unique property ID (ask Contentpass team for details)
41
- - `planId` - The ID of the plan you want to check the user's subscription status against (ask Contentpass team for details)
42
- - `issuer` - The OAuth 2.0 server URL (e.g. `https://my.contentpass.net`)
43
- - `redirectUrl` - the redirect URL of your app to which the OAuth2 server will redirect after the authentication
44
- - `samplingRate` - Optional: The rate at which the SDK will send impression events for unauthenticated users. Default is 0.05 (5%)
45
- - `logLevel` - Optional: The log level for the SDK. By default logger is disabled. Possible values are 'info', 'warn', 'error' and 'debug'
46
38
 
39
+ Wrap your app's root component with `ContentpassSdkProvider`:
47
40
 
48
- ```jsx
49
- import React from 'react';
41
+ ```tsx
50
42
  import { ContentpassSdkProvider } from '@contentpass/react-native-contentpass';
51
43
 
52
44
  const contentpassConfig = {
53
45
  propertyId: 'property-id',
54
46
  planId: 'plan-id',
55
47
  issuer: 'https://my.contentpass.net',
48
+ apiUrl: 'https://api.contentpass.net',
56
49
  redirectUrl: 'com.yourapp://oauthredirect',
57
- samplingRate: 0.1,
58
- logLevel: 'info'
50
+ samplingRate: 0.1, // optional, default 0.05
51
+ logLevel: 'info', // optional, default disabled
59
52
  };
60
53
 
61
- const App = () => {
54
+ export default function App() {
62
55
  return (
63
56
  <ContentpassSdkProvider contentpassConfig={contentpassConfig}>
64
57
  <YourApp />
65
58
  </ContentpassSdkProvider>
66
59
  );
67
- };
68
-
69
- export default App;
60
+ }
70
61
  ```
71
62
 
72
- ### SDK Methods
73
- The SDK exposes the following methods through the `useContentpassSdk` hook:
74
-
75
- ### authenticate
76
- Initiates the OAuth 2.0 authentication process via a modal interface. It validates the user’s active Contentpass subscriptions
77
- upon successful authentication.
78
-
79
- ### countImpression
80
- Tracks and increments the impression count for the current user. This method should be invoked whenever a user views a
81
- piece of content. It applies to all users, whether authenticated or unauthenticated.
63
+ ### Configuration
82
64
 
83
- ### registerObserver
84
- Registers a callback function to listen for changes in the user’s authentication and subscription status. The observer function
85
- receives a state object describing the current status (see the exported [ContentpassState](./src/types/ContentpassState.ts) type).
65
+ | Property | Type | Required | Description |
66
+ |----------|------|----------|-------------|
67
+ | `propertyId` | `string` | Yes | Your unique property ID (provided by Contentpass). |
68
+ | `planId` | `string` | Yes | The plan ID to check subscriptions against (provided by Contentpass). |
69
+ | `issuer` | `string` | Yes | The OAuth 2.0 server URL (e.g. `https://my.contentpass.net`). |
70
+ | `apiUrl` | `string` | Yes | The Contentpass API base URL. |
71
+ | `redirectUrl` | `string` | Yes | The deep-link URL your app registers for OAuth redirects. |
72
+ | `samplingRate` | `number` | No | Rate at which impression events are sent for unauthenticated users. Default `0.05` (5%). |
73
+ | `logLevel` | `'debug' \| 'info' \| 'warn' \| 'error'` | No | SDK log level. Logging is disabled by default. |
86
74
 
87
- ### unregisterObserver
88
- Unregisters a previously registered observer. The observer will no longer receive updates.
89
-
90
- ### logout
91
- Logs the user out by clearing all stored authentication tokens.
75
+ ### SDK methods
92
76
 
93
- ### recoverFromError
94
- During background token refresh, an error state may occur due to poor or no internet connection. This is indicated by the
95
- `state` switching to `ERROR`. The state object includes a reference to the original exception that was thrown. As the SDK
96
- does not monitor the device's connection state, you must notify the SDK when the network connection has been reestablished
97
- or improved. The SDK will then refresh and revalidate the user's authentication tokens.
77
+ Access the SDK via the `useContentpassSdk` hook:
98
78
 
99
- ```jsx
100
- import React, { useEffect } from 'react';
79
+ ```tsx
101
80
  import { useContentpassSdk } from '@contentpass/react-native-contentpass';
102
- import { Button, View } from 'react-native';
103
81
 
104
- const YourApp = () => {
82
+ function MyComponent() {
105
83
  const {
106
84
  authenticate,
107
85
  countImpression,
108
86
  registerObserver,
109
87
  unregisterObserver,
110
88
  logout,
111
- recoverFromError
89
+ recoverFromError,
90
+ event,
112
91
  } = useContentpassSdk();
113
92
 
93
+ // ...
94
+ }
95
+ ```
96
+
97
+ #### `authenticate(route?)`
98
+
99
+ Initiates the OAuth 2.0 authentication flow via a modal interface. Validates the user's active Contentpass subscription upon success.
100
+
101
+ - `route` (optional): `'login'` or `'signup'` to pre-select the auth screen.
102
+
103
+ #### `countImpression()`
104
+
105
+ Tracks an impression for the current user. Call this whenever a user views a piece of content. Applies to both authenticated and unauthenticated users (subject to `samplingRate` for unauthenticated users).
106
+
107
+ #### `registerObserver(observer)`
108
+
109
+ Registers a callback that fires whenever the authentication/subscription state changes. The callback receives a `ContentpassState` object.
110
+
111
+ #### `unregisterObserver(observer)`
112
+
113
+ Removes a previously registered observer.
114
+
115
+ #### `logout()`
116
+
117
+ Logs the user out by clearing all stored authentication tokens.
118
+
119
+ #### `recoverFromError()`
120
+
121
+ When a background token refresh fails (e.g. due to network issues), the state transitions to `ERROR`. Call this method once connectivity is restored to retry token validation.
122
+
123
+ #### `event(eventCategory, eventAction, eventLabel?, samplingRate?)`
124
+
125
+ Sends a custom analytics event to Contentpass.
126
+
127
+ ### State types
128
+
129
+ The observer callback receives one of the following states:
130
+
131
+ | State | `hasValidSubscription` | Description |
132
+ |-------|------------------------|-------------|
133
+ | `INITIALISING` | — | SDK is starting up and restoring any stored session. |
134
+ | `UNAUTHENTICATED` | `false` | No user is logged in. |
135
+ | `AUTHENTICATED` | `boolean` | User is logged in. `hasValidSubscription` indicates whether they have an active plan. |
136
+ | `ERROR` | — | A background token refresh failed. Contains an `error` property with the original exception. |
137
+
138
+ ```tsx
139
+ import {
140
+ ContentpassStateType,
141
+ useContentpassSdk,
142
+ } from '@contentpass/react-native-contentpass';
143
+ import { useEffect } from 'react';
144
+
145
+ function MyComponent() {
146
+ const { registerObserver, unregisterObserver } = useContentpassSdk();
147
+
114
148
  useEffect(() => {
115
149
  const observer = (state) => {
116
- console.log('Contentpass state changed:', state);
150
+ switch (state.state) {
151
+ case ContentpassStateType.AUTHENTICATED:
152
+ console.log('Subscription active:', state.hasValidSubscription);
153
+ break;
154
+ case ContentpassStateType.ERROR:
155
+ console.error('SDK error:', state.error);
156
+ break;
157
+ }
117
158
  };
118
159
 
119
160
  registerObserver(observer);
161
+ return () => unregisterObserver(observer);
162
+ }, [registerObserver, unregisterObserver]);
163
+ }
164
+ ```
120
165
 
121
- return () => {
122
- unregisterObserver(observer);
123
- };
124
- }, []);
166
+ ### CMP adapter interface
125
167
 
126
- return (
127
- <View>
128
- <Button onPress={authenticate} title={'Authenticate'} />
129
- <Button onPress={countImpression} title={'Count Impression'} />
130
- </View>
131
- );
132
- };
133
- ```
168
+ This package also exports the `CmpAdapter` type, which defines the interface that consent management platform adapters must implement to work with Contentpass. See [`@contentpass/react-native-contentpass-cmp-onetrust`](../react-native-contentpass-cmp-onetrust) for a ready-made OneTrust adapter.
134
169
 
135
170
  ## Integration with Sourcepoint SDK
136
171
 
137
- See the [Sourcepoint SDK documentation](docs/SOURCEPOINT_SDK_INTEGRATION.md) for information on integrating the Contentpass SDK with the Sourcepoint SDK.
172
+ See the [Sourcepoint SDK integration guide](./docs/SOURCEPOINT_SDK_INTEGRATION.md).
138
173
 
139
174
  ## Contributing
140
175
 
141
- See the [contributing guide](docs/CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
142
-
176
+ See the [contributing guide](./docs/CONTRIBUTING.md).
143
177
 
144
178
  ## License
145
179
 
146
180
  MIT
147
-
148
- ---
149
-
150
- Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -41,18 +41,18 @@ yarn
41
41
 
42
42
  > Since the project relies on Yarn workspaces, you cannot use [`npm`](https://github.com/npm/cli) for development.
43
43
 
44
- The [example app](/example/) and [expo example app](/expoExample/) demonstrates usage of the library. You need to run it to test any changes you make.
45
- The default [configuration](../sharedExample/src/contentpassConfig.ts) in example apps points to contentpass testing environment.
44
+ The [example app](/examples/example/) and [expo example app](/examples/expoExample/) demonstrates usage of the library. You need to run it to test any changes you make.
45
+ The default [configuration](../../../examples/sharedExample/src/contentpassConfig.ts) in example apps points to contentpass testing environment.
46
46
  You can change it to any other environment by updating the `contentpassConfig.ts` file.
47
47
 
48
48
  It is configured to use the local version of the library, so any changes you make to the library's source code will be reflected in the example apps.
49
49
  Changes to the library's JavaScript code will be reflected in the example apps without a rebuild, but native code changes will require a rebuild of the example app.
50
50
 
51
51
  If you want to use Android Studio or XCode to edit the native code, you can open the
52
- - `example/android`
53
- - `example/ios`
54
- - `expoExample/android`
55
- - `expoExample/ios`
52
+ - `examples/example/android`
53
+ - `examples/example/ios`
54
+ - `examples/expoExample/android`
55
+ - `examples/expoExample/ios`
56
56
  directories respectively in those editors. To edit the Objective-C or Swift files, open `ios/ContentpassExample.xcworkspace` in XCode and find the source files at `Pods > Development Pods > contentpass-react-native-contentpass`.
57
57
 
58
58
  To edit the Java or Kotlin files, open `android` in Android studio and find the source files at `@contentpass/react-native-contentpass` under `Android`.
@@ -88,7 +88,7 @@ yarn expo-example android
88
88
 
89
89
  To run the example apps on iOS:
90
90
 
91
- **NOTE**: You need to run `bundle install` in the `example/ios` directory before running the following command.
91
+ **NOTE**: You need to run `bundle install` in the `examples/example/ios` directory before running the following command.
92
92
  `bundle install` commands is responsible for installing the required dependencies for the iOS project.
93
93
 
94
94
  ```sh
@@ -31,6 +31,8 @@ class Contentpass {
31
31
  if (config.logLevel) {
32
32
  (0, _logger.enableLogger)(config.logLevel);
33
33
  }
34
+ this.config = config;
35
+ this.instanceId = _reactNativeUuid.default.v4();
34
36
  _logger.default.debug('Contentpass initialised with config', config);
35
37
  if (config.samplingRate && (config.samplingRate < 0 || config.samplingRate > 1)) {
36
38
  _logger.default.error('Sampling rate must be between 0 and 1');
@@ -38,13 +40,12 @@ class Contentpass {
38
40
  }
39
41
  this.samplingRate = config.samplingRate || DEFAULT_SAMPLING_RATE;
40
42
  this.authStateStorage = new _OidcAuthStateStorage.default(config.propertyId);
41
- this.config = config;
42
43
  (0, _sentryIntegration.initSentry)({
43
44
  propertyId: config.propertyId
44
45
  });
45
46
  this.initialiseAuthState();
46
47
  }
47
- authenticate = async () => {
48
+ authenticate = async route => {
48
49
  _logger.default.info('Starting authentication flow');
49
50
  let result;
50
51
  try {
@@ -54,7 +55,7 @@ class Contentpass {
54
55
  issuer: this.config.issuer,
55
56
  scopes: _oidcConsts.SCOPES,
56
57
  additionalParameters: {
57
- cp_route: 'login',
58
+ cp_route: route || 'login',
58
59
  prompt: 'consent',
59
60
  cp_property: this.config.propertyId,
60
61
  cp_plan: this.config.planId
@@ -73,6 +74,35 @@ class Contentpass {
73
74
  _logger.default.info('Authentication flow finished, checking subscription...');
74
75
  await this.onNewAuthState(result);
75
76
  };
77
+ event = async (eventCategory, eventAction, eventLabel, samplingRate) => {
78
+ const generatedSample = Math.random();
79
+ const activeSamplingRate = samplingRate ?? this.samplingRate;
80
+ if (generatedSample >= activeSamplingRate) {
81
+ return;
82
+ }
83
+ _logger.default.info('Sending event', {
84
+ eventCategory,
85
+ eventAction,
86
+ eventLabel,
87
+ samplingRate: activeSamplingRate
88
+ });
89
+ const publicId = this.config.propertyId.slice(0, 8);
90
+ const payload = {
91
+ ea: eventAction,
92
+ ec: eventCategory,
93
+ el: eventLabel,
94
+ cpabid: this.instanceId,
95
+ cppid: publicId,
96
+ cpsr: activeSamplingRate
97
+ };
98
+ try {
99
+ await (0, _sendStats.default)(this.config.apiUrl, payload);
100
+ } catch (err) {
101
+ (0, _sentryIntegration.reportError)(err, {
102
+ msg: 'Failed to send event'
103
+ });
104
+ }
105
+ };
76
106
  registerObserver(observer) {
77
107
  _logger.default.info('Registering observer');
78
108
  if (this.contentpassStateObservers.includes(observer)) {
@@ -101,6 +131,9 @@ class Contentpass {
101
131
  await this.initialiseAuthState();
102
132
  };
103
133
  countImpression = async () => {
134
+ // Generate a new impression id to be used per impression
135
+ // This mimics the behaviour of the web SDK when in SPA mode
136
+ this.instanceId = _reactNativeUuid.default.v4();
104
137
  await Promise.all([this.countPaidImpressionWhenUserHasValidSub(), this.countSampledImpression()]);
105
138
  };
106
139
  countPaidImpressionWhenUserHasValidSub = async () => {
@@ -108,11 +141,10 @@ class Contentpass {
108
141
  return;
109
142
  }
110
143
  _logger.default.info('Counting paid impression');
111
- const impressionId = _reactNativeUuid.default.v4();
112
144
  try {
113
145
  await (0, _sendPageViewEvent.default)(this.config.apiUrl, {
114
146
  propertyId: this.config.propertyId,
115
- impressionId,
147
+ impressionId: this.instanceId,
116
148
  accessToken: this.oidcAuthState.accessToken
117
149
  });
118
150
  } catch (err) {
@@ -122,26 +154,7 @@ class Contentpass {
122
154
  }
123
155
  };
124
156
  countSampledImpression = async () => {
125
- const generatedSample = Math.random();
126
- const publicId = this.config.propertyId.slice(0, 8);
127
- const instanceId = _reactNativeUuid.default.v4();
128
- if (generatedSample >= this.samplingRate) {
129
- return;
130
- }
131
- _logger.default.info('Counting sampled impression');
132
- try {
133
- await (0, _sendStats.default)(this.config.apiUrl, {
134
- ea: 'load',
135
- ec: 'tcf-sampled',
136
- cpabid: instanceId,
137
- cppid: publicId,
138
- cpsr: this.samplingRate
139
- });
140
- } catch (err) {
141
- (0, _sentryIntegration.reportError)(err, {
142
- msg: 'Failed to count sampled impression'
143
- });
144
- }
157
+ this.event('tcf-sampled', 'load');
145
158
  };
146
159
  initialiseAuthState = async () => {
147
160
  const authState = await this.authStateStorage.getOidcAuthState();
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeUuid","_interopRequireDefault","require","_OidcAuthStateStorage","_ContentpassState","_reactNativeAppAuth","_oidcConsts","_RefreshTokenStrategy","_fetchContentpassToken","_validateSubscription","_sentryIntegration","_sendStats","_sendPageViewEvent","_logger","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","DEFAULT_SAMPLING_RATE","Contentpass","contentpassState","state","ContentpassStateType","INITIALISING","contentpassStateObservers","oidcAuthState","refreshTimer","constructor","config","logLevel","enableLogger","logger","debug","samplingRate","error","Error","authStateStorage","OidcAuthStateStorage","propertyId","initSentry","initialiseAuthState","authenticate","info","result","authorize","clientId","redirectUrl","issuer","scopes","SCOPES","additionalParameters","cp_route","prompt","cp_property","cp_plan","planId","err","reportError","msg","changeContentpassState","ERROR","onNewAuthState","registerObserver","observer","includes","push","unregisterObserver","filter","o","logout","clearOidcAuthState","UNAUTHENTICATED","hasValidSubscription","recoverFromError","countImpression","Promise","all","countPaidImpressionWhenUserHasValidSub","countSampledImpression","hasValidSubscriptionAndAccessToken","impressionId","uuid","v4","sendPageViewEvent","apiUrl","accessToken","generatedSample","Math","random","publicId","slice","instanceId","sendStats","ea","ec","cpabid","cppid","cpsr","authState","getOidcAuthState","storeOidcAuthState","strategy","setupRefreshTimer","RefreshTokenStrategy","INSTANTLY","contentpassToken","fetchContentpassToken","idToken","validateSubscription","AUTHENTICATED","accessTokenExpirationDate","warn","NO_REFRESH","now","Date","expirationDate","timeDiff","getTime","refreshToken","clearTimeout","setTimeout","TIMER_SET","counter","refreshResult","refresh","onRefreshTokenError","REFRESH_TOKEN_RETRIES","delay","resolve","forEach","exports"],"sourceRoot":"../../src","sources":["Contentpass.ts"],"mappings":";;;;;;AAAA,IAAAA,gBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,iBAAA,GAAAF,OAAA;AAIA,IAAAG,mBAAA,GAAAH,OAAA;AAKA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,sBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,qBAAA,GAAAR,sBAAA,CAAAC,OAAA;AAEA,IAAAQ,kBAAA,GAAAR,OAAA;AACA,IAAAS,UAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,kBAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,OAAA,GAAAC,uBAAA,CAAAZ,OAAA;AAAgD,SAAAa,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,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,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAvB,uBAAAe,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAEhD,MAAMmB,qBAAqB,GAAG,IAAI;AAanB,MAAMC,WAAW,CAAiC;EAKvDC,gBAAgB,GAAqB;IAC3CC,KAAK,EAAEC,sCAAoB,CAACC;EAC9B,CAAC;EACOC,yBAAyB,GAA0B,EAAE;EACrDC,aAAa,GAAyB,IAAI;EAC1CC,YAAY,GAA0B,IAAI;EAElDC,WAAWA,CAACC,MAAyB,EAAE;IACrC,IAAIA,MAAM,CAACC,QAAQ,EAAE;MACnB,IAAAC,oBAAY,EAACF,MAAM,CAACC,QAAQ,CAAC;IAC/B;IAEAE,eAAM,CAACC,KAAK,CAAC,qCAAqC,EAAEJ,MAAM,CAAC;IAC3D,IACEA,MAAM,CAACK,YAAY,KAClBL,MAAM,CAACK,YAAY,GAAG,CAAC,IAAIL,MAAM,CAACK,YAAY,GAAG,CAAC,CAAC,EACpD;MACAF,eAAM,CAACG,KAAK,CAAC,uCAAuC,CAAC;MACrD,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACA,IAAI,CAACF,YAAY,GAAGL,MAAM,CAACK,YAAY,IAAIf,qBAAqB;IAChE,IAAI,CAACkB,gBAAgB,GAAG,IAAIC,6BAAoB,CAACT,MAAM,CAACU,UAAU,CAAC;IACnE,IAAI,CAACV,MAAM,GAAGA,MAAM;IACpB,IAAAW,6BAAU,EAAC;MAAED,UAAU,EAAEV,MAAM,CAACU;IAAW,CAAC,CAAC;IAC7C,IAAI,CAACE,mBAAmB,CAAC,CAAC;EAC5B;EAEOC,YAAY,GAAG,MAAAA,CAAA,KAA2B;IAC/CV,eAAM,CAACW,IAAI,CAAC,8BAA8B,CAAC;IAC3C,IAAIC,MAAuB;IAE3B,IAAI;MACFA,MAAM,GAAG,MAAM,IAAAC,6BAAS,EAAC;QACvBC,QAAQ,EAAE,IAAI,CAACjB,MAAM,CAACU,UAAU;QAChCQ,WAAW,EAAE,IAAI,CAAClB,MAAM,CAACkB,WAAW;QACpCC,MAAM,EAAE,IAAI,CAACnB,MAAM,CAACmB,MAAM;QAC1BC,MAAM,EAAEC,kBAAM;QACdC,oBAAoB,EAAE;UACpBC,QAAQ,EAAE,OAAO;UACjBC,MAAM,EAAE,SAAS;UACjBC,WAAW,EAAE,IAAI,CAACzB,MAAM,CAACU,UAAU;UACnCgB,OAAO,EAAE,IAAI,CAAC1B,MAAM,CAAC2B;QACvB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,GAAQ,EAAE;MACjB,IAAAC,8BAAW,EAACD,GAAG,EAAE;QAAEE,GAAG,EAAE;MAAsB,CAAC,CAAC;MAChD,IAAI,CAACC,sBAAsB,CAAC;QAC1BtC,KAAK,EAAEC,sCAAoB,CAACsC,KAAK;QACjC1B,KAAK,EAAEsB;MACT,CAAC,CAAC;MAEF,MAAMA,GAAG;IACX;IACAzB,eAAM,CAACW,IAAI,CAAC,wDAAwD,CAAC;IAErE,MAAM,IAAI,CAACmB,cAAc,CAAClB,MAAM,CAAC;EACnC,CAAC;EAEMmB,gBAAgBA,CAACC,QAA6B,EAAE;IACrDhC,eAAM,CAACW,IAAI,CAAC,sBAAsB,CAAC;IACnC,IAAI,IAAI,CAAClB,yBAAyB,CAACwC,QAAQ,CAACD,QAAQ,CAAC,EAAE;MACrD;IACF;IAEAA,QAAQ,CAAC,IAAI,CAAC3C,gBAAgB,CAAC;IAC/B,IAAI,CAACI,yBAAyB,CAACyC,IAAI,CAACF,QAAQ,CAAC;EAC/C;EAEOG,kBAAkBA,CAACH,QAA6B,EAAE;IACvDhC,eAAM,CAACW,IAAI,CAAC,wBAAwB,CAAC;IACrC,IAAI,CAAClB,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAAC2C,MAAM,CACnEC,CAAC,IAAKA,CAAC,KAAKL,QACf,CAAC;EACH;EAEOM,MAAM,GAAG,MAAAA,CAAA,KAAY;IAC1BtC,eAAM,CAACW,IAAI,CAAC,qCAAqC,CAAC;IAClD,MAAM,IAAI,CAACN,gBAAgB,CAACkC,kBAAkB,CAAC,CAAC;IAChD,IAAI,CAACX,sBAAsB,CAAC;MAC1BtC,KAAK,EAAEC,sCAAoB,CAACiD,eAAe;MAC3CC,oBAAoB,EAAE;IACxB,CAAC,CAAC;EACJ,CAAC;EAEMC,gBAAgB,GAAG,MAAAA,CAAA,KAAY;IACpC1C,eAAM,CAACW,IAAI,CAAC,uBAAuB,CAAC;IACpC,IAAI,CAACiB,sBAAsB,CAAC;MAC1BtC,KAAK,EAAEC,sCAAoB,CAACC;IAC9B,CAAC,CAAC;IAEF,MAAM,IAAI,CAACiB,mBAAmB,CAAC,CAAC;EAClC,CAAC;EAEMkC,eAAe,GAAG,MAAAA,CAAA,KAAY;IACnC,MAAMC,OAAO,CAACC,GAAG,CAAC,CAChB,IAAI,CAACC,sCAAsC,CAAC,CAAC,EAC7C,IAAI,CAACC,sBAAsB,CAAC,CAAC,CAC9B,CAAC;EACJ,CAAC;EAEOD,sCAAsC,GAAG,MAAAA,CAAA,KAAY;IAC3D,IAAI,CAAC,IAAI,CAACE,kCAAkC,CAAC,CAAC,EAAE;MAC9C;IACF;IAEAhD,eAAM,CAACW,IAAI,CAAC,0BAA0B,CAAC;IACvC,MAAMsC,YAAY,GAAGC,wBAAI,CAACC,EAAE,CAAC,CAAC;IAE9B,IAAI;MACF,MAAM,IAAAC,0BAAiB,EAAC,IAAI,CAACvD,MAAM,CAACwD,MAAM,EAAE;QAC1C9C,UAAU,EAAE,IAAI,CAACV,MAAM,CAACU,UAAU;QAClC0C,YAAY;QACZK,WAAW,EAAE,IAAI,CAAC5D,aAAa,CAAE4D;MACnC,CAAC,CAAC;IACJ,CAAC,CAAC,OAAO7B,GAAQ,EAAE;MACjB,IAAAC,8BAAW,EAACD,GAAG,EAAE;QAAEE,GAAG,EAAE;MAAkC,CAAC,CAAC;IAC9D;EACF,CAAC;EAEOoB,sBAAsB,GAAG,MAAAA,CAAA,KAAY;IAC3C,MAAMQ,eAAe,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC;IACrC,MAAMC,QAAQ,GAAG,IAAI,CAAC7D,MAAM,CAACU,UAAU,CAACoD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,MAAMC,UAAU,GAAGV,wBAAI,CAACC,EAAE,CAAC,CAAC;IAE5B,IAAII,eAAe,IAAI,IAAI,CAACrD,YAAY,EAAE;MACxC;IACF;IAEAF,eAAM,CAACW,IAAI,CAAC,6BAA6B,CAAC;IAC1C,IAAI;MACF,MAAM,IAAAkD,kBAAS,EAAC,IAAI,CAAChE,MAAM,CAACwD,MAAM,EAAE;QAClCS,EAAE,EAAE,MAAM;QACVC,EAAE,EAAE,aAAa;QACjBC,MAAM,EAAEJ,UAAU;QAClBK,KAAK,EAAEP,QAAQ;QACfQ,IAAI,EAAE,IAAI,CAAChE;MACb,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOuB,GAAQ,EAAE;MACjB,IAAAC,8BAAW,EAACD,GAAG,EAAE;QAAEE,GAAG,EAAE;MAAqC,CAAC,CAAC;IACjE;EACF,CAAC;EAEOlB,mBAAmB,GAAG,MAAAA,CAAA,KAAY;IACxC,MAAM0D,SAAS,GAAG,MAAM,IAAI,CAAC9D,gBAAgB,CAAC+D,gBAAgB,CAAC,CAAC;IAChE,IAAID,SAAS,EAAE;MACbnE,eAAM,CAACC,KAAK,CAAC,mDAAmD,CAAC;MACjE,MAAM,IAAI,CAAC6B,cAAc,CAACqC,SAAS,CAAC;MACpC;IACF;IAEAnE,eAAM,CAACC,KAAK,CACV,8DACF,CAAC;IACD,IAAI,CAAC2B,sBAAsB,CAAC;MAC1BtC,KAAK,EAAEC,sCAAoB,CAACiD,eAAe;MAC3CC,oBAAoB,EAAE;IACxB,CAAC,CAAC;EACJ,CAAC;EAEOX,cAAc,GAAG,MAAOqC,SAAwB,IAAK;IAC3DnE,eAAM,CAACC,KAAK,CAAC,yBAAyB,CAAC;IACvC,IAAI,CAACP,aAAa,GAAGyE,SAAS;IAC9B,MAAM,IAAI,CAAC9D,gBAAgB,CAACgE,kBAAkB,CAACF,SAAS,CAAC;IAEzD,MAAMG,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAAC,CAAC;IACzC;IACA,IAAID,QAAQ,KAAKE,0CAAoB,CAACC,SAAS,EAAE;MAC/CzE,eAAM,CAACC,KAAK,CAAC,8CAA8C,CAAC;MAC5D;IACF;IAEA,IAAI;MACFD,eAAM,CAACW,IAAI,CAAC,uBAAuB,CAAC;MACpC,MAAM+D,gBAAgB,GAAG,MAAM,IAAAC,8BAAqB,EAAC;QACnD3D,MAAM,EAAE,IAAI,CAACnB,MAAM,CAACmB,MAAM;QAC1BT,UAAU,EAAE,IAAI,CAACV,MAAM,CAACU,UAAU;QAClCqE,OAAO,EAAE,IAAI,CAAClF,aAAa,CAACkF;MAC9B,CAAC,CAAC;MACF,MAAMnC,oBAAoB,GAAG,IAAAoC,6BAAoB,EAACH,gBAAgB,CAAC;MACnE1E,eAAM,CAACW,IAAI,CAAC;QAAE8B;MAAqB,CAAC,EAAE,+BAA+B,CAAC;MACtE,IAAI,CAACb,sBAAsB,CAAC;QAC1BtC,KAAK,EAAEC,sCAAoB,CAACuF,aAAa;QACzCrC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOhB,GAAQ,EAAE;MACjB,IAAAC,8BAAW,EAACD,GAAG,EAAE;QACfE,GAAG,EAAE;MACP,CAAC,CAAC;MACF,IAAI,CAACC,sBAAsB,CAAC;QAC1BtC,KAAK,EAAEC,sCAAoB,CAACsC,KAAK;QACjC1B,KAAK,EAAEsB;MACT,CAAC,CAAC;IACJ;EACF,CAAC;EAEO8C,iBAAiB,GAAGA,CAAA,KAA4B;IACtD,MAAMQ,yBAAyB,GAC7B,IAAI,CAACrF,aAAa,EAAEqF,yBAAyB;IAE/C,IAAI,CAACA,yBAAyB,EAAE;MAC9B/E,eAAM,CAACgF,IAAI,CAAC,0CAA0C,CAAC;MACvD,OAAOR,0CAAoB,CAACS,UAAU;IACxC;IAEA,MAAMC,GAAG,GAAG,IAAIC,IAAI,CAAC,CAAC;IACtB,MAAMC,cAAc,GAAG,IAAID,IAAI,CAACJ,yBAAyB,CAAC;IAC1D,MAAMM,QAAQ,GAAGD,cAAc,CAACE,OAAO,CAAC,CAAC,GAAGJ,GAAG,CAACI,OAAO,CAAC,CAAC;IACzD,IAAID,QAAQ,IAAI,CAAC,EAAE;MACjBrF,eAAM,CAACC,KAAK,CAAC,4CAA4C,CAAC;MAC1D,IAAI,CAACsF,YAAY,CAAC,CAAC,CAAC;MACpB,OAAOf,0CAAoB,CAACC,SAAS;IACvC;IAEA,IAAI,IAAI,CAAC9E,YAAY,EAAE;MACrB6F,YAAY,CAAC,IAAI,CAAC7F,YAAY,CAAC;IACjC;IAEAK,eAAM,CAACC,KAAK,CAAC;MAAEoF;IAAS,CAAC,EAAE,0BAA0B,CAAC;IACtD,IAAI,CAAC1F,YAAY,GAAG8F,UAAU,CAAC,YAAY;MACzC,MAAM,IAAI,CAACF,YAAY,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAEF,QAAQ,CAAC;IAEZ,OAAOb,0CAAoB,CAACkB,SAAS;EACvC,CAAC;EAEOH,YAAY,GAAG,MAAOI,OAAe,IAAK;IAChD,IAAI,CAAC,IAAI,CAACjG,aAAa,EAAE6F,YAAY,EAAE;MACrC,IAAA7D,8BAAW,EAAC,IAAItB,KAAK,CAAC,4CAA4C,CAAC,CAAC;MACpE;IACF;IAEA,IAAI;MACFJ,eAAM,CAACW,IAAI,CAAC,kBAAkB,CAAC;MAC/B,MAAMiF,aAAa,GAAG,MAAM,IAAAC,2BAAO,EACjC;QACE/E,QAAQ,EAAE,IAAI,CAACjB,MAAM,CAACU,UAAU;QAChCQ,WAAW,EAAE,IAAI,CAAClB,MAAM,CAACkB,WAAW;QACpCC,MAAM,EAAE,IAAI,CAACnB,MAAM,CAACmB,MAAM;QAC1BC,MAAM,EAAEC;MACV,CAAC,EACD;QACEqE,YAAY,EAAE,IAAI,CAAC7F,aAAa,CAAC6F;MACnC,CACF,CAAC;MACD,MAAM,IAAI,CAACzD,cAAc,CAAC8D,aAAa,CAAC;MACxC5F,eAAM,CAACW,IAAI,CAAC,8BAA8B,CAAC;IAC7C,CAAC,CAAC,OAAOc,GAAQ,EAAE;MACjB,MAAM,IAAI,CAACqE,mBAAmB,CAACH,OAAO,EAAElE,GAAG,CAAC;IAC9C;EACF,CAAC;EAEOqE,mBAAmB,GAAG,MAAAA,CAAOH,OAAe,EAAElE,GAAU,KAAK;IACnE;IACA,IAAIkE,OAAO,GAAGI,iCAAqB,EAAE;MACnC/F,eAAM,CAACgF,IAAI,CAAC;QAAEvD,GAAG;QAAEkE;MAAQ,CAAC,EAAE,mCAAmC,CAAC;MAClE,MAAMK,KAAK,GAAGL,OAAO,GAAG,IAAI,GAAG,EAAE;MACjC,MAAM,IAAI/C,OAAO,CAAEqD,OAAO,IAAKR,UAAU,CAACQ,OAAO,EAAED,KAAK,CAAC,CAAC;MAC1D,MAAM,IAAI,CAACT,YAAY,CAACI,OAAO,GAAG,CAAC,CAAC;MACpC;IACF;IAEA,IAAAjE,8BAAW,EAACD,GAAG,EAAE;MACfE,GAAG,EAAE,iCAAiCgE,OAAO;IAC/C,CAAC,CAAC;IAEF,MAAM,IAAI,CAACrD,MAAM,CAAC,CAAC;EACrB,CAAC;EAEOV,sBAAsB,GAAItC,KAAuB,IAAK;IAC5D,IAAI,CAACD,gBAAgB,GAAGC,KAAK;IAC7B,IAAI,CAACG,yBAAyB,CAACyG,OAAO,CAAElE,QAAQ,IAAKA,QAAQ,CAAC1C,KAAK,CAAC,CAAC;EACvE,CAAC;EAEO0D,kCAAkC,GAAGA,CAAA,KAAM;IACjD,OACE,IAAI,CAAC3D,gBAAgB,CAACC,KAAK,KAAKC,sCAAoB,CAACuF,aAAa,IAClE,IAAI,CAACzF,gBAAgB,CAACoD,oBAAoB,IAC1C,IAAI,CAAC/C,aAAa,EAAE4D,WAAW;EAEnC,CAAC;AACH;AAAC6C,OAAA,CAAA9H,OAAA,GAAAe,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeUuid","_interopRequireDefault","require","_OidcAuthStateStorage","_ContentpassState","_reactNativeAppAuth","_oidcConsts","_RefreshTokenStrategy","_fetchContentpassToken","_validateSubscription","_sentryIntegration","_sendStats","_sendPageViewEvent","_logger","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","DEFAULT_SAMPLING_RATE","Contentpass","contentpassState","state","ContentpassStateType","INITIALISING","contentpassStateObservers","oidcAuthState","refreshTimer","constructor","config","logLevel","enableLogger","instanceId","uuid","v4","logger","debug","samplingRate","error","Error","authStateStorage","OidcAuthStateStorage","propertyId","initSentry","initialiseAuthState","authenticate","route","info","result","authorize","clientId","redirectUrl","issuer","scopes","SCOPES","additionalParameters","cp_route","prompt","cp_property","cp_plan","planId","err","reportError","msg","changeContentpassState","ERROR","onNewAuthState","event","eventCategory","eventAction","eventLabel","generatedSample","Math","random","activeSamplingRate","publicId","slice","payload","ea","ec","el","cpabid","cppid","cpsr","sendStats","apiUrl","registerObserver","observer","includes","push","unregisterObserver","filter","o","logout","clearOidcAuthState","UNAUTHENTICATED","hasValidSubscription","recoverFromError","countImpression","Promise","all","countPaidImpressionWhenUserHasValidSub","countSampledImpression","hasValidSubscriptionAndAccessToken","sendPageViewEvent","impressionId","accessToken","authState","getOidcAuthState","storeOidcAuthState","strategy","setupRefreshTimer","RefreshTokenStrategy","INSTANTLY","contentpassToken","fetchContentpassToken","idToken","validateSubscription","AUTHENTICATED","accessTokenExpirationDate","warn","NO_REFRESH","now","Date","expirationDate","timeDiff","getTime","refreshToken","clearTimeout","setTimeout","TIMER_SET","counter","refreshResult","refresh","onRefreshTokenError","REFRESH_TOKEN_RETRIES","delay","resolve","forEach","exports"],"sourceRoot":"../../src","sources":["Contentpass.ts"],"mappings":"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","ignoreList":[]}