@contentpass/react-native-contentpass 0.2.5 → 0.3.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 +19 -3
- package/docs/CODE_OF_CONDUCT.md +133 -0
- package/docs/CONTRIBUTING.md +137 -0
- package/docs/SOURCEPOINT_SDK_INTEGRATION.md +112 -0
- package/docs/assets/sourcepoint-button-config.png +0 -0
- package/docs/assets/sourcepoint-property-example.png +0 -0
- package/docs/sourcepoint-patches/@sourcepoint-react-native-cmp-npm-0.3.0-2434c31dc9.patch +78 -0
- package/docs/sourcepoint-patches/@sourcepoint-react-native-cmp-patch-34fca36663.patch +13 -0
- package/lib/commonjs/Contentpass.js +97 -6
- package/lib/commonjs/Contentpass.js.map +1 -1
- package/lib/commonjs/OidcAuthStateStorage.js +8 -1
- package/lib/commonjs/OidcAuthStateStorage.js.map +1 -1
- package/lib/commonjs/{utils → contentpassTokenUtils}/fetchContentpassToken.js +3 -0
- package/lib/commonjs/contentpassTokenUtils/fetchContentpassToken.js.map +1 -0
- package/lib/commonjs/contentpassTokenUtils/parseContentpassToken.js.map +1 -0
- package/lib/commonjs/contentpassTokenUtils/validateSubscription.js.map +1 -0
- package/lib/commonjs/countImpressionUtils/sendPageViewEvent.js +24 -0
- package/lib/commonjs/countImpressionUtils/sendPageViewEvent.js.map +1 -0
- package/lib/commonjs/countImpressionUtils/sendStats.js +20 -0
- package/lib/commonjs/countImpressionUtils/sendStats.js.map +1 -0
- package/lib/commonjs/logger.js +27 -0
- package/lib/commonjs/logger.js.map +1 -0
- package/lib/commonjs/sentryIntegration.js +5 -0
- package/lib/commonjs/sentryIntegration.js.map +1 -1
- package/lib/module/Contentpass.js +95 -6
- package/lib/module/Contentpass.js.map +1 -1
- package/lib/module/OidcAuthStateStorage.js +8 -1
- package/lib/module/OidcAuthStateStorage.js.map +1 -1
- package/lib/module/{utils → contentpassTokenUtils}/fetchContentpassToken.js +3 -0
- package/lib/module/contentpassTokenUtils/fetchContentpassToken.js.map +1 -0
- package/lib/module/contentpassTokenUtils/parseContentpassToken.js.map +1 -0
- package/lib/module/contentpassTokenUtils/validateSubscription.js.map +1 -0
- package/lib/module/countImpressionUtils/sendPageViewEvent.js +20 -0
- package/lib/module/countImpressionUtils/sendPageViewEvent.js.map +1 -0
- package/lib/module/countImpressionUtils/sendStats.js +16 -0
- package/lib/module/countImpressionUtils/sendStats.js.map +1 -0
- package/lib/module/logger.js +22 -0
- package/lib/module/logger.js.map +1 -0
- package/lib/module/sentryIntegration.js +4 -0
- package/lib/module/sentryIntegration.js.map +1 -1
- package/lib/typescript/commonjs/src/Contentpass.d.ts +15 -1
- package/lib/typescript/commonjs/src/Contentpass.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/OidcAuthStateStorage.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/contentpassTokenUtils/fetchContentpassToken.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/contentpassTokenUtils/parseContentpassToken.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/contentpassTokenUtils/validateSubscription.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/countImpressionUtils/sendPageViewEvent.d.ts +8 -0
- package/lib/typescript/commonjs/src/countImpressionUtils/sendPageViewEvent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/countImpressionUtils/sendStats.d.ts +10 -0
- package/lib/typescript/commonjs/src/countImpressionUtils/sendStats.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/logger.d.ts +8 -0
- package/lib/typescript/commonjs/src/logger.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/sentryIntegration.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/types/ContentpassConfig.d.ts +5 -0
- package/lib/typescript/commonjs/src/types/ContentpassConfig.d.ts.map +1 -1
- package/lib/typescript/module/src/Contentpass.d.ts +15 -1
- package/lib/typescript/module/src/Contentpass.d.ts.map +1 -1
- package/lib/typescript/module/src/OidcAuthStateStorage.d.ts.map +1 -1
- package/lib/typescript/module/src/contentpassTokenUtils/fetchContentpassToken.d.ts.map +1 -0
- package/lib/typescript/module/src/contentpassTokenUtils/parseContentpassToken.d.ts.map +1 -0
- package/lib/typescript/module/src/contentpassTokenUtils/validateSubscription.d.ts.map +1 -0
- package/lib/typescript/module/src/countImpressionUtils/sendPageViewEvent.d.ts +8 -0
- package/lib/typescript/module/src/countImpressionUtils/sendPageViewEvent.d.ts.map +1 -0
- package/lib/typescript/module/src/countImpressionUtils/sendStats.d.ts +10 -0
- package/lib/typescript/module/src/countImpressionUtils/sendStats.d.ts.map +1 -0
- package/lib/typescript/module/src/logger.d.ts +8 -0
- package/lib/typescript/module/src/logger.d.ts.map +1 -0
- package/lib/typescript/module/src/sentryIntegration.d.ts.map +1 -1
- package/lib/typescript/module/src/types/ContentpassConfig.d.ts +5 -0
- package/lib/typescript/module/src/types/ContentpassConfig.d.ts.map +1 -1
- package/package.json +5 -2
- package/lib/commonjs/utils/fetchContentpassToken.js.map +0 -1
- package/lib/commonjs/utils/parseContentpassToken.js.map +0 -1
- package/lib/commonjs/utils/validateSubscription.js.map +0 -1
- package/lib/module/utils/fetchContentpassToken.js.map +0 -1
- package/lib/module/utils/parseContentpassToken.js.map +0 -1
- package/lib/module/utils/validateSubscription.js.map +0 -1
- package/lib/typescript/commonjs/src/utils/fetchContentpassToken.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/utils/parseContentpassToken.d.ts.map +0 -1
- package/lib/typescript/commonjs/src/utils/validateSubscription.d.ts.map +0 -1
- package/lib/typescript/module/src/utils/fetchContentpassToken.d.ts.map +0 -1
- package/lib/typescript/module/src/utils/parseContentpassToken.d.ts.map +0 -1
- package/lib/typescript/module/src/utils/validateSubscription.d.ts.map +0 -1
- /package/lib/commonjs/{utils → contentpassTokenUtils}/parseContentpassToken.js +0 -0
- /package/lib/commonjs/{utils → contentpassTokenUtils}/validateSubscription.js +0 -0
- /package/lib/module/{utils → contentpassTokenUtils}/parseContentpassToken.js +0 -0
- /package/lib/module/{utils → contentpassTokenUtils}/validateSubscription.js +0 -0
- /package/lib/typescript/commonjs/src/{utils → contentpassTokenUtils}/fetchContentpassToken.d.ts +0 -0
- /package/lib/typescript/commonjs/src/{utils → contentpassTokenUtils}/parseContentpassToken.d.ts +0 -0
- /package/lib/typescript/commonjs/src/{utils → contentpassTokenUtils}/validateSubscription.d.ts +0 -0
- /package/lib/typescript/module/src/{utils → contentpassTokenUtils}/fetchContentpassToken.d.ts +0 -0
- /package/lib/typescript/module/src/{utils → contentpassTokenUtils}/parseContentpassToken.d.ts +0 -0
- /package/lib/typescript/module/src/{utils → contentpassTokenUtils}/validateSubscription.d.ts +0 -0
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import uuid from 'react-native-uuid';
|
|
3
4
|
import OidcAuthStateStorage from "./OidcAuthStateStorage.js";
|
|
4
5
|
import { ContentpassStateType } from "./types/ContentpassState.js";
|
|
5
6
|
import { authorize, refresh } from 'react-native-app-auth';
|
|
6
7
|
import { REFRESH_TOKEN_RETRIES, SCOPES } from "./consts/oidcConsts.js";
|
|
7
8
|
import { RefreshTokenStrategy } from "./types/RefreshTokenStrategy.js";
|
|
8
|
-
import fetchContentpassToken from "./
|
|
9
|
-
import validateSubscription from "./
|
|
9
|
+
import fetchContentpassToken from "./contentpassTokenUtils/fetchContentpassToken.js";
|
|
10
|
+
import validateSubscription from "./contentpassTokenUtils/validateSubscription.js";
|
|
10
11
|
import { reportError, setSentryExtraAttribute } from "./sentryIntegration.js";
|
|
12
|
+
import sendStats from "./countImpressionUtils/sendStats.js";
|
|
13
|
+
import sendPageViewEvent from "./countImpressionUtils/sendPageViewEvent.js";
|
|
14
|
+
import logger, { enableLogger } from "./logger.js";
|
|
15
|
+
const DEFAULT_SAMPLING_RATE = 0.05;
|
|
11
16
|
export default class Contentpass {
|
|
12
17
|
contentpassState = {
|
|
13
18
|
state: ContentpassStateType.INITIALISING
|
|
@@ -16,12 +21,22 @@ export default class Contentpass {
|
|
|
16
21
|
oidcAuthState = null;
|
|
17
22
|
refreshTimer = null;
|
|
18
23
|
constructor(config) {
|
|
24
|
+
if (config.logLevel) {
|
|
25
|
+
enableLogger(config.logLevel);
|
|
26
|
+
}
|
|
27
|
+
logger.debug('Contentpass initialised with config', config);
|
|
28
|
+
if (config.samplingRate && (config.samplingRate < 0 || config.samplingRate > 1)) {
|
|
29
|
+
logger.error('Sampling rate must be between 0 and 1');
|
|
30
|
+
throw new Error('Sampling rate must be between 0 and 1');
|
|
31
|
+
}
|
|
32
|
+
this.samplingRate = config.samplingRate || DEFAULT_SAMPLING_RATE;
|
|
19
33
|
this.authStateStorage = new OidcAuthStateStorage(config.propertyId);
|
|
20
34
|
this.config = config;
|
|
21
35
|
setSentryExtraAttribute('propertyId', config.propertyId);
|
|
22
36
|
this.initialiseAuthState();
|
|
23
37
|
}
|
|
24
38
|
authenticate = async () => {
|
|
39
|
+
logger.info('Starting authentication flow');
|
|
25
40
|
let result;
|
|
26
41
|
try {
|
|
27
42
|
result = await authorize({
|
|
@@ -32,7 +47,8 @@ export default class Contentpass {
|
|
|
32
47
|
additionalParameters: {
|
|
33
48
|
cp_route: 'login',
|
|
34
49
|
prompt: 'consent',
|
|
35
|
-
cp_property: this.config.propertyId
|
|
50
|
+
cp_property: this.config.propertyId,
|
|
51
|
+
cp_plan: this.config.planId
|
|
36
52
|
}
|
|
37
53
|
});
|
|
38
54
|
} catch (err) {
|
|
@@ -45,9 +61,11 @@ export default class Contentpass {
|
|
|
45
61
|
});
|
|
46
62
|
throw err;
|
|
47
63
|
}
|
|
64
|
+
logger.info('Authentication flow finished, checking subscription...');
|
|
48
65
|
await this.onNewAuthState(result);
|
|
49
66
|
};
|
|
50
67
|
registerObserver(observer) {
|
|
68
|
+
logger.info('Registering observer');
|
|
51
69
|
if (this.contentpassStateObservers.includes(observer)) {
|
|
52
70
|
return;
|
|
53
71
|
}
|
|
@@ -55,9 +73,11 @@ export default class Contentpass {
|
|
|
55
73
|
this.contentpassStateObservers.push(observer);
|
|
56
74
|
}
|
|
57
75
|
unregisterObserver(observer) {
|
|
76
|
+
logger.info('Unregistering observer');
|
|
58
77
|
this.contentpassStateObservers = this.contentpassStateObservers.filter(o => o !== observer);
|
|
59
78
|
}
|
|
60
79
|
logout = async () => {
|
|
80
|
+
logger.info('Logging out and clearing auth state');
|
|
61
81
|
await this.authStateStorage.clearOidcAuthState();
|
|
62
82
|
this.changeContentpassState({
|
|
63
83
|
state: ContentpassStateType.UNAUTHENTICATED,
|
|
@@ -65,42 +85,97 @@ export default class Contentpass {
|
|
|
65
85
|
});
|
|
66
86
|
};
|
|
67
87
|
recoverFromError = async () => {
|
|
88
|
+
logger.info('Recovering from error');
|
|
68
89
|
this.changeContentpassState({
|
|
69
90
|
state: ContentpassStateType.INITIALISING
|
|
70
91
|
});
|
|
71
92
|
await this.initialiseAuthState();
|
|
72
93
|
};
|
|
94
|
+
countImpression = async () => {
|
|
95
|
+
await Promise.all([this.countPaidImpressionWhenUserHasValidSub(), this.countSampledImpression()]);
|
|
96
|
+
};
|
|
97
|
+
countPaidImpressionWhenUserHasValidSub = async () => {
|
|
98
|
+
if (!this.hasValidSubscriptionAndAccessToken()) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
logger.info('Counting paid impression');
|
|
102
|
+
const impressionId = uuid.v4();
|
|
103
|
+
try {
|
|
104
|
+
await sendPageViewEvent(this.config.apiUrl, {
|
|
105
|
+
propertyId: this.config.propertyId,
|
|
106
|
+
impressionId,
|
|
107
|
+
accessToken: this.oidcAuthState.accessToken
|
|
108
|
+
});
|
|
109
|
+
} catch (err) {
|
|
110
|
+
reportError(err, {
|
|
111
|
+
msg: 'Failed to count paid impression'
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
countSampledImpression = async () => {
|
|
116
|
+
const generatedSample = Math.random();
|
|
117
|
+
const publicId = this.config.propertyId.slice(0, 8);
|
|
118
|
+
const instanceId = uuid.v4();
|
|
119
|
+
if (generatedSample >= this.samplingRate) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
logger.info('Counting sampled impression');
|
|
123
|
+
try {
|
|
124
|
+
await sendStats(this.config.apiUrl, {
|
|
125
|
+
ea: 'load',
|
|
126
|
+
ec: 'tcf-sampled',
|
|
127
|
+
cpabid: instanceId,
|
|
128
|
+
cppid: publicId,
|
|
129
|
+
cpsr: this.samplingRate
|
|
130
|
+
});
|
|
131
|
+
} catch (err) {
|
|
132
|
+
reportError(err, {
|
|
133
|
+
msg: 'Failed to count sampled impression'
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
};
|
|
73
137
|
initialiseAuthState = async () => {
|
|
74
138
|
const authState = await this.authStateStorage.getOidcAuthState();
|
|
75
139
|
if (authState) {
|
|
140
|
+
logger.debug('Found auth state in storage, initialising with it');
|
|
76
141
|
await this.onNewAuthState(authState);
|
|
77
142
|
return;
|
|
78
143
|
}
|
|
144
|
+
logger.debug('No auth state found in storage, initialising unauthenticated');
|
|
79
145
|
this.changeContentpassState({
|
|
80
146
|
state: ContentpassStateType.UNAUTHENTICATED,
|
|
81
147
|
hasValidSubscription: false
|
|
82
148
|
});
|
|
83
149
|
};
|
|
84
150
|
onNewAuthState = async authState => {
|
|
151
|
+
logger.debug('New auth state received');
|
|
85
152
|
this.oidcAuthState = authState;
|
|
86
153
|
await this.authStateStorage.storeOidcAuthState(authState);
|
|
87
154
|
const strategy = this.setupRefreshTimer();
|
|
88
155
|
// if instant refresh, no need to check subscription as it will happen in the refresh
|
|
89
156
|
if (strategy === RefreshTokenStrategy.INSTANTLY) {
|
|
157
|
+
logger.debug('Instant refresh, skipping subscription check');
|
|
90
158
|
return;
|
|
91
159
|
}
|
|
92
160
|
try {
|
|
161
|
+
logger.info('Checking subscription');
|
|
93
162
|
const contentpassToken = await fetchContentpassToken({
|
|
94
163
|
issuer: this.config.issuer,
|
|
95
164
|
propertyId: this.config.propertyId,
|
|
96
165
|
idToken: this.oidcAuthState.idToken
|
|
97
166
|
});
|
|
98
167
|
const hasValidSubscription = validateSubscription(contentpassToken);
|
|
168
|
+
logger.info({
|
|
169
|
+
hasValidSubscription
|
|
170
|
+
}, 'Subscription check successful');
|
|
99
171
|
this.changeContentpassState({
|
|
100
172
|
state: ContentpassStateType.AUTHENTICATED,
|
|
101
173
|
hasValidSubscription
|
|
102
174
|
});
|
|
103
175
|
} catch (err) {
|
|
176
|
+
reportError(err, {
|
|
177
|
+
msg: 'Failed to fetch contentpass token and validate subscription'
|
|
178
|
+
});
|
|
104
179
|
this.changeContentpassState({
|
|
105
180
|
state: ContentpassStateType.ERROR,
|
|
106
181
|
error: err
|
|
@@ -110,18 +185,23 @@ export default class Contentpass {
|
|
|
110
185
|
setupRefreshTimer = () => {
|
|
111
186
|
const accessTokenExpirationDate = this.oidcAuthState?.accessTokenExpirationDate;
|
|
112
187
|
if (!accessTokenExpirationDate) {
|
|
188
|
+
logger.warn('No access token expiration date provided');
|
|
113
189
|
return RefreshTokenStrategy.NO_REFRESH;
|
|
114
190
|
}
|
|
115
191
|
const now = new Date();
|
|
116
192
|
const expirationDate = new Date(accessTokenExpirationDate);
|
|
117
193
|
const timeDiff = expirationDate.getTime() - now.getTime();
|
|
118
194
|
if (timeDiff <= 0) {
|
|
195
|
+
logger.debug('Access token expired, refreshing instantly');
|
|
119
196
|
this.refreshToken(0);
|
|
120
197
|
return RefreshTokenStrategy.INSTANTLY;
|
|
121
198
|
}
|
|
122
199
|
if (this.refreshTimer) {
|
|
123
200
|
clearTimeout(this.refreshTimer);
|
|
124
201
|
}
|
|
202
|
+
logger.debug({
|
|
203
|
+
timeDiff
|
|
204
|
+
}, 'Setting up refresh timer');
|
|
125
205
|
this.refreshTimer = setTimeout(async () => {
|
|
126
206
|
await this.refreshToken(0);
|
|
127
207
|
}, timeDiff);
|
|
@@ -133,6 +213,7 @@ export default class Contentpass {
|
|
|
133
213
|
return;
|
|
134
214
|
}
|
|
135
215
|
try {
|
|
216
|
+
logger.info('Refreshing token');
|
|
136
217
|
const refreshResult = await refresh({
|
|
137
218
|
clientId: this.config.propertyId,
|
|
138
219
|
redirectUrl: this.config.redirectUrl,
|
|
@@ -142,26 +223,34 @@ export default class Contentpass {
|
|
|
142
223
|
refreshToken: this.oidcAuthState.refreshToken
|
|
143
224
|
});
|
|
144
225
|
await this.onNewAuthState(refreshResult);
|
|
226
|
+
logger.info('Token refreshed successfully');
|
|
145
227
|
} catch (err) {
|
|
146
228
|
await this.onRefreshTokenError(counter, err);
|
|
147
229
|
}
|
|
148
230
|
};
|
|
149
231
|
onRefreshTokenError = async (counter, err) => {
|
|
150
|
-
reportError(err, {
|
|
151
|
-
msg: `Failed to refresh token after ${counter} retries`
|
|
152
|
-
});
|
|
153
232
|
// FIXME: add handling for specific error to not retry in every case
|
|
154
233
|
if (counter < REFRESH_TOKEN_RETRIES) {
|
|
234
|
+
logger.warn({
|
|
235
|
+
err,
|
|
236
|
+
counter
|
|
237
|
+
}, 'Failed to refresh token, retrying');
|
|
155
238
|
const delay = counter * 1000 * 10;
|
|
156
239
|
await new Promise(resolve => setTimeout(resolve, delay));
|
|
157
240
|
await this.refreshToken(counter + 1);
|
|
158
241
|
return;
|
|
159
242
|
}
|
|
243
|
+
reportError(err, {
|
|
244
|
+
msg: `Failed to refresh token after ${counter} retries`
|
|
245
|
+
});
|
|
160
246
|
await this.logout();
|
|
161
247
|
};
|
|
162
248
|
changeContentpassState = state => {
|
|
163
249
|
this.contentpassState = state;
|
|
164
250
|
this.contentpassStateObservers.forEach(observer => observer(state));
|
|
165
251
|
};
|
|
252
|
+
hasValidSubscriptionAndAccessToken = () => {
|
|
253
|
+
return this.contentpassState.state === ContentpassStateType.AUTHENTICATED && this.contentpassState.hasValidSubscription && this.oidcAuthState?.accessToken;
|
|
254
|
+
};
|
|
166
255
|
}
|
|
167
256
|
//# sourceMappingURL=Contentpass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OidcAuthStateStorage","ContentpassStateType","authorize","refresh","REFRESH_TOKEN_RETRIES","SCOPES","RefreshTokenStrategy","fetchContentpassToken","validateSubscription","reportError","setSentryExtraAttribute","Contentpass","contentpassState","state","INITIALISING","contentpassStateObservers","oidcAuthState","refreshTimer","constructor","config","authStateStorage","propertyId","initialiseAuthState","authenticate","result","clientId","redirectUrl","issuer","scopes","additionalParameters","cp_route","prompt","cp_property","err","msg","changeContentpassState","ERROR","
|
|
1
|
+
{"version":3,"names":["uuid","OidcAuthStateStorage","ContentpassStateType","authorize","refresh","REFRESH_TOKEN_RETRIES","SCOPES","RefreshTokenStrategy","fetchContentpassToken","validateSubscription","reportError","setSentryExtraAttribute","sendStats","sendPageViewEvent","logger","enableLogger","DEFAULT_SAMPLING_RATE","Contentpass","contentpassState","state","INITIALISING","contentpassStateObservers","oidcAuthState","refreshTimer","constructor","config","logLevel","debug","samplingRate","error","Error","authStateStorage","propertyId","initialiseAuthState","authenticate","info","result","clientId","redirectUrl","issuer","scopes","additionalParameters","cp_route","prompt","cp_property","cp_plan","planId","err","msg","changeContentpassState","ERROR","onNewAuthState","registerObserver","observer","includes","push","unregisterObserver","filter","o","logout","clearOidcAuthState","UNAUTHENTICATED","hasValidSubscription","recoverFromError","countImpression","Promise","all","countPaidImpressionWhenUserHasValidSub","countSampledImpression","hasValidSubscriptionAndAccessToken","impressionId","v4","apiUrl","accessToken","generatedSample","Math","random","publicId","slice","instanceId","ea","ec","cpabid","cppid","cpsr","authState","getOidcAuthState","storeOidcAuthState","strategy","setupRefreshTimer","INSTANTLY","contentpassToken","idToken","AUTHENTICATED","accessTokenExpirationDate","warn","NO_REFRESH","now","Date","expirationDate","timeDiff","getTime","refreshToken","clearTimeout","setTimeout","TIMER_SET","counter","refreshResult","onRefreshTokenError","delay","resolve","forEach"],"sourceRoot":"../../src","sources":["Contentpass.ts"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,mBAAmB;AACpC,OAAOC,oBAAoB,MAEpB,2BAAwB;AAC/B,SAEEC,oBAAoB,QACf,6BAA0B;AACjC,SACEC,SAAS,EAETC,OAAO,QACF,uBAAuB;AAC9B,SAASC,qBAAqB,EAAEC,MAAM,QAAQ,wBAAqB;AACnE,SAASC,oBAAoB,QAAQ,iCAA8B;AACnE,OAAOC,qBAAqB,MAAM,kDAA+C;AACjF,OAAOC,oBAAoB,MAAM,iDAA8C;AAE/E,SAASC,WAAW,EAAEC,uBAAuB,QAAQ,wBAAqB;AAC1E,OAAOC,SAAS,MAAM,qCAAkC;AACxD,OAAOC,iBAAiB,MAAM,6CAA0C;AACxE,OAAOC,MAAM,IAAIC,YAAY,QAAQ,aAAU;AAE/C,MAAMC,qBAAqB,GAAG,IAAI;AAalC,eAAe,MAAMC,WAAW,CAAiC;EAKvDC,gBAAgB,GAAqB;IAC3CC,KAAK,EAAEjB,oBAAoB,CAACkB;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;MACnBX,YAAY,CAACU,MAAM,CAACC,QAAQ,CAAC;IAC/B;IAEAZ,MAAM,CAACa,KAAK,CAAC,qCAAqC,EAAEF,MAAM,CAAC;IAC3D,IACEA,MAAM,CAACG,YAAY,KAClBH,MAAM,CAACG,YAAY,GAAG,CAAC,IAAIH,MAAM,CAACG,YAAY,GAAG,CAAC,CAAC,EACpD;MACAd,MAAM,CAACe,KAAK,CAAC,uCAAuC,CAAC;MACrD,MAAM,IAAIC,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACA,IAAI,CAACF,YAAY,GAAGH,MAAM,CAACG,YAAY,IAAIZ,qBAAqB;IAChE,IAAI,CAACe,gBAAgB,GAAG,IAAI9B,oBAAoB,CAACwB,MAAM,CAACO,UAAU,CAAC;IACnE,IAAI,CAACP,MAAM,GAAGA,MAAM;IACpBd,uBAAuB,CAAC,YAAY,EAAEc,MAAM,CAACO,UAAU,CAAC;IACxD,IAAI,CAACC,mBAAmB,CAAC,CAAC;EAC5B;EAEOC,YAAY,GAAG,MAAAA,CAAA,KAA2B;IAC/CpB,MAAM,CAACqB,IAAI,CAAC,8BAA8B,CAAC;IAC3C,IAAIC,MAAuB;IAE3B,IAAI;MACFA,MAAM,GAAG,MAAMjC,SAAS,CAAC;QACvBkC,QAAQ,EAAE,IAAI,CAACZ,MAAM,CAACO,UAAU;QAChCM,WAAW,EAAE,IAAI,CAACb,MAAM,CAACa,WAAW;QACpCC,MAAM,EAAE,IAAI,CAACd,MAAM,CAACc,MAAM;QAC1BC,MAAM,EAAElC,MAAM;QACdmC,oBAAoB,EAAE;UACpBC,QAAQ,EAAE,OAAO;UACjBC,MAAM,EAAE,SAAS;UACjBC,WAAW,EAAE,IAAI,CAACnB,MAAM,CAACO,UAAU;UACnCa,OAAO,EAAE,IAAI,CAACpB,MAAM,CAACqB;QACvB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOC,GAAQ,EAAE;MACjBrC,WAAW,CAACqC,GAAG,EAAE;QAAEC,GAAG,EAAE;MAAsB,CAAC,CAAC;MAChD,IAAI,CAACC,sBAAsB,CAAC;QAC1B9B,KAAK,EAAEjB,oBAAoB,CAACgD,KAAK;QACjCrB,KAAK,EAAEkB;MACT,CAAC,CAAC;MAEF,MAAMA,GAAG;IACX;IACAjC,MAAM,CAACqB,IAAI,CAAC,wDAAwD,CAAC;IAErE,MAAM,IAAI,CAACgB,cAAc,CAACf,MAAM,CAAC;EACnC,CAAC;EAEMgB,gBAAgBA,CAACC,QAA6B,EAAE;IACrDvC,MAAM,CAACqB,IAAI,CAAC,sBAAsB,CAAC;IACnC,IAAI,IAAI,CAACd,yBAAyB,CAACiC,QAAQ,CAACD,QAAQ,CAAC,EAAE;MACrD;IACF;IAEAA,QAAQ,CAAC,IAAI,CAACnC,gBAAgB,CAAC;IAC/B,IAAI,CAACG,yBAAyB,CAACkC,IAAI,CAACF,QAAQ,CAAC;EAC/C;EAEOG,kBAAkBA,CAACH,QAA6B,EAAE;IACvDvC,MAAM,CAACqB,IAAI,CAAC,wBAAwB,CAAC;IACrC,IAAI,CAACd,yBAAyB,GAAG,IAAI,CAACA,yBAAyB,CAACoC,MAAM,CACnEC,CAAC,IAAKA,CAAC,KAAKL,QACf,CAAC;EACH;EAEOM,MAAM,GAAG,MAAAA,CAAA,KAAY;IAC1B7C,MAAM,CAACqB,IAAI,CAAC,qCAAqC,CAAC;IAClD,MAAM,IAAI,CAACJ,gBAAgB,CAAC6B,kBAAkB,CAAC,CAAC;IAChD,IAAI,CAACX,sBAAsB,CAAC;MAC1B9B,KAAK,EAAEjB,oBAAoB,CAAC2D,eAAe;MAC3CC,oBAAoB,EAAE;IACxB,CAAC,CAAC;EACJ,CAAC;EAEMC,gBAAgB,GAAG,MAAAA,CAAA,KAAY;IACpCjD,MAAM,CAACqB,IAAI,CAAC,uBAAuB,CAAC;IACpC,IAAI,CAACc,sBAAsB,CAAC;MAC1B9B,KAAK,EAAEjB,oBAAoB,CAACkB;IAC9B,CAAC,CAAC;IAEF,MAAM,IAAI,CAACa,mBAAmB,CAAC,CAAC;EAClC,CAAC;EAEM+B,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;IAEAvD,MAAM,CAACqB,IAAI,CAAC,0BAA0B,CAAC;IACvC,MAAMmC,YAAY,GAAGtE,IAAI,CAACuE,EAAE,CAAC,CAAC;IAE9B,IAAI;MACF,MAAM1D,iBAAiB,CAAC,IAAI,CAACY,MAAM,CAAC+C,MAAM,EAAE;QAC1CxC,UAAU,EAAE,IAAI,CAACP,MAAM,CAACO,UAAU;QAClCsC,YAAY;QACZG,WAAW,EAAE,IAAI,CAACnD,aAAa,CAAEmD;MACnC,CAAC,CAAC;IACJ,CAAC,CAAC,OAAO1B,GAAQ,EAAE;MACjBrC,WAAW,CAACqC,GAAG,EAAE;QAAEC,GAAG,EAAE;MAAkC,CAAC,CAAC;IAC9D;EACF,CAAC;EAEOoB,sBAAsB,GAAG,MAAAA,CAAA,KAAY;IAC3C,MAAMM,eAAe,GAAGC,IAAI,CAACC,MAAM,CAAC,CAAC;IACrC,MAAMC,QAAQ,GAAG,IAAI,CAACpD,MAAM,CAACO,UAAU,CAAC8C,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACnD,MAAMC,UAAU,GAAG/E,IAAI,CAACuE,EAAE,CAAC,CAAC;IAE5B,IAAIG,eAAe,IAAI,IAAI,CAAC9C,YAAY,EAAE;MACxC;IACF;IAEAd,MAAM,CAACqB,IAAI,CAAC,6BAA6B,CAAC;IAC1C,IAAI;MACF,MAAMvB,SAAS,CAAC,IAAI,CAACa,MAAM,CAAC+C,MAAM,EAAE;QAClCQ,EAAE,EAAE,MAAM;QACVC,EAAE,EAAE,aAAa;QACjBC,MAAM,EAAEH,UAAU;QAClBI,KAAK,EAAEN,QAAQ;QACfO,IAAI,EAAE,IAAI,CAACxD;MACb,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOmB,GAAQ,EAAE;MACjBrC,WAAW,CAACqC,GAAG,EAAE;QAAEC,GAAG,EAAE;MAAqC,CAAC,CAAC;IACjE;EACF,CAAC;EAEOf,mBAAmB,GAAG,MAAAA,CAAA,KAAY;IACxC,MAAMoD,SAAS,GAAG,MAAM,IAAI,CAACtD,gBAAgB,CAACuD,gBAAgB,CAAC,CAAC;IAChE,IAAID,SAAS,EAAE;MACbvE,MAAM,CAACa,KAAK,CAAC,mDAAmD,CAAC;MACjE,MAAM,IAAI,CAACwB,cAAc,CAACkC,SAAS,CAAC;MACpC;IACF;IAEAvE,MAAM,CAACa,KAAK,CACV,8DACF,CAAC;IACD,IAAI,CAACsB,sBAAsB,CAAC;MAC1B9B,KAAK,EAAEjB,oBAAoB,CAAC2D,eAAe;MAC3CC,oBAAoB,EAAE;IACxB,CAAC,CAAC;EACJ,CAAC;EAEOX,cAAc,GAAG,MAAOkC,SAAwB,IAAK;IAC3DvE,MAAM,CAACa,KAAK,CAAC,yBAAyB,CAAC;IACvC,IAAI,CAACL,aAAa,GAAG+D,SAAS;IAC9B,MAAM,IAAI,CAACtD,gBAAgB,CAACwD,kBAAkB,CAACF,SAAS,CAAC;IAEzD,MAAMG,QAAQ,GAAG,IAAI,CAACC,iBAAiB,CAAC,CAAC;IACzC;IACA,IAAID,QAAQ,KAAKjF,oBAAoB,CAACmF,SAAS,EAAE;MAC/C5E,MAAM,CAACa,KAAK,CAAC,8CAA8C,CAAC;MAC5D;IACF;IAEA,IAAI;MACFb,MAAM,CAACqB,IAAI,CAAC,uBAAuB,CAAC;MACpC,MAAMwD,gBAAgB,GAAG,MAAMnF,qBAAqB,CAAC;QACnD+B,MAAM,EAAE,IAAI,CAACd,MAAM,CAACc,MAAM;QAC1BP,UAAU,EAAE,IAAI,CAACP,MAAM,CAACO,UAAU;QAClC4D,OAAO,EAAE,IAAI,CAACtE,aAAa,CAACsE;MAC9B,CAAC,CAAC;MACF,MAAM9B,oBAAoB,GAAGrD,oBAAoB,CAACkF,gBAAgB,CAAC;MACnE7E,MAAM,CAACqB,IAAI,CAAC;QAAE2B;MAAqB,CAAC,EAAE,+BAA+B,CAAC;MACtE,IAAI,CAACb,sBAAsB,CAAC;QAC1B9B,KAAK,EAAEjB,oBAAoB,CAAC2F,aAAa;QACzC/B;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOf,GAAQ,EAAE;MACjBrC,WAAW,CAACqC,GAAG,EAAE;QACfC,GAAG,EAAE;MACP,CAAC,CAAC;MACF,IAAI,CAACC,sBAAsB,CAAC;QAC1B9B,KAAK,EAAEjB,oBAAoB,CAACgD,KAAK;QACjCrB,KAAK,EAAEkB;MACT,CAAC,CAAC;IACJ;EACF,CAAC;EAEO0C,iBAAiB,GAAGA,CAAA,KAA4B;IACtD,MAAMK,yBAAyB,GAC7B,IAAI,CAACxE,aAAa,EAAEwE,yBAAyB;IAE/C,IAAI,CAACA,yBAAyB,EAAE;MAC9BhF,MAAM,CAACiF,IAAI,CAAC,0CAA0C,CAAC;MACvD,OAAOxF,oBAAoB,CAACyF,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;MACjBtF,MAAM,CAACa,KAAK,CAAC,4CAA4C,CAAC;MAC1D,IAAI,CAAC2E,YAAY,CAAC,CAAC,CAAC;MACpB,OAAO/F,oBAAoB,CAACmF,SAAS;IACvC;IAEA,IAAI,IAAI,CAACnE,YAAY,EAAE;MACrBgF,YAAY,CAAC,IAAI,CAAChF,YAAY,CAAC;IACjC;IAEAT,MAAM,CAACa,KAAK,CAAC;MAAEyE;IAAS,CAAC,EAAE,0BAA0B,CAAC;IACtD,IAAI,CAAC7E,YAAY,GAAGiF,UAAU,CAAC,YAAY;MACzC,MAAM,IAAI,CAACF,YAAY,CAAC,CAAC,CAAC;IAC5B,CAAC,EAAEF,QAAQ,CAAC;IAEZ,OAAO7F,oBAAoB,CAACkG,SAAS;EACvC,CAAC;EAEOH,YAAY,GAAG,MAAOI,OAAe,IAAK;IAChD,IAAI,CAAC,IAAI,CAACpF,aAAa,EAAEgF,YAAY,EAAE;MACrC5F,WAAW,CAAC,IAAIoB,KAAK,CAAC,4CAA4C,CAAC,CAAC;MACpE;IACF;IAEA,IAAI;MACFhB,MAAM,CAACqB,IAAI,CAAC,kBAAkB,CAAC;MAC/B,MAAMwE,aAAa,GAAG,MAAMvG,OAAO,CACjC;QACEiC,QAAQ,EAAE,IAAI,CAACZ,MAAM,CAACO,UAAU;QAChCM,WAAW,EAAE,IAAI,CAACb,MAAM,CAACa,WAAW;QACpCC,MAAM,EAAE,IAAI,CAACd,MAAM,CAACc,MAAM;QAC1BC,MAAM,EAAElC;MACV,CAAC,EACD;QACEgG,YAAY,EAAE,IAAI,CAAChF,aAAa,CAACgF;MACnC,CACF,CAAC;MACD,MAAM,IAAI,CAACnD,cAAc,CAACwD,aAAa,CAAC;MACxC7F,MAAM,CAACqB,IAAI,CAAC,8BAA8B,CAAC;IAC7C,CAAC,CAAC,OAAOY,GAAQ,EAAE;MACjB,MAAM,IAAI,CAAC6D,mBAAmB,CAACF,OAAO,EAAE3D,GAAG,CAAC;IAC9C;EACF,CAAC;EAEO6D,mBAAmB,GAAG,MAAAA,CAAOF,OAAe,EAAE3D,GAAU,KAAK;IACnE;IACA,IAAI2D,OAAO,GAAGrG,qBAAqB,EAAE;MACnCS,MAAM,CAACiF,IAAI,CAAC;QAAEhD,GAAG;QAAE2D;MAAQ,CAAC,EAAE,mCAAmC,CAAC;MAClE,MAAMG,KAAK,GAAGH,OAAO,GAAG,IAAI,GAAG,EAAE;MACjC,MAAM,IAAIzC,OAAO,CAAE6C,OAAO,IAAKN,UAAU,CAACM,OAAO,EAAED,KAAK,CAAC,CAAC;MAC1D,MAAM,IAAI,CAACP,YAAY,CAACI,OAAO,GAAG,CAAC,CAAC;MACpC;IACF;IAEAhG,WAAW,CAACqC,GAAG,EAAE;MACfC,GAAG,EAAE,iCAAiC0D,OAAO;IAC/C,CAAC,CAAC;IAEF,MAAM,IAAI,CAAC/C,MAAM,CAAC,CAAC;EACrB,CAAC;EAEOV,sBAAsB,GAAI9B,KAAuB,IAAK;IAC5D,IAAI,CAACD,gBAAgB,GAAGC,KAAK;IAC7B,IAAI,CAACE,yBAAyB,CAAC0F,OAAO,CAAE1D,QAAQ,IAAKA,QAAQ,CAAClC,KAAK,CAAC,CAAC;EACvE,CAAC;EAEOkD,kCAAkC,GAAGA,CAAA,KAAM;IACjD,OACE,IAAI,CAACnD,gBAAgB,CAACC,KAAK,KAAKjB,oBAAoB,CAAC2F,aAAa,IAClE,IAAI,CAAC3E,gBAAgB,CAAC4C,oBAAoB,IAC1C,IAAI,CAACxC,aAAa,EAAEmD,WAAW;EAEnC,CAAC;AACH","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import EncryptedStorage from 'react-native-encrypted-storage';
|
|
4
|
+
import { reportError } from "./sentryIntegration.js";
|
|
4
5
|
const AUTH_STATE_KEY = 'OIDCAuthState';
|
|
5
6
|
export default class OidcAuthStateStorage {
|
|
6
7
|
constructor(clientId) {
|
|
@@ -14,7 +15,13 @@ export default class OidcAuthStateStorage {
|
|
|
14
15
|
return oidcAuthStateString ? JSON.parse(oidcAuthStateString) : undefined;
|
|
15
16
|
}
|
|
16
17
|
async clearOidcAuthState() {
|
|
17
|
-
|
|
18
|
+
try {
|
|
19
|
+
await EncryptedStorage.removeItem(this.key);
|
|
20
|
+
} catch (err) {
|
|
21
|
+
reportError(err, {
|
|
22
|
+
msg: 'Failed to clear OIDC auth state. Most probably we tried to remove item which does not exist'
|
|
23
|
+
});
|
|
24
|
+
}
|
|
18
25
|
}
|
|
19
26
|
}
|
|
20
27
|
//# sourceMappingURL=OidcAuthStateStorage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EncryptedStorage","AUTH_STATE_KEY","OidcAuthStateStorage","constructor","clientId","key","storeOidcAuthState","authState","setItem","JSON","stringify","getOidcAuthState","oidcAuthStateString","getItem","parse","undefined","clearOidcAuthState","removeItem"],"sourceRoot":"../../src","sources":["OidcAuthStateStorage.ts"],"mappings":";;AAAA,OAAOA,gBAAgB,MAAM,gCAAgC;
|
|
1
|
+
{"version":3,"names":["EncryptedStorage","reportError","AUTH_STATE_KEY","OidcAuthStateStorage","constructor","clientId","key","storeOidcAuthState","authState","setItem","JSON","stringify","getOidcAuthState","oidcAuthStateString","getItem","parse","undefined","clearOidcAuthState","removeItem","err","msg"],"sourceRoot":"../../src","sources":["OidcAuthStateStorage.ts"],"mappings":";;AAAA,OAAOA,gBAAgB,MAAM,gCAAgC;AAC7D,SAASC,WAAW,QAAQ,wBAAqB;AAEjD,MAAMC,cAAc,GAAG,eAAe;AAUtC,eAAe,MAAMC,oBAAoB,CAAC;EAGxCC,WAAWA,CAACC,QAAgB,EAAE;IAC5B,IAAI,CAACC,GAAG,GAAG,kBAAkBD,QAAQ,IAAIH,cAAc,EAAE;EAC3D;EAEA,MAAaK,kBAAkBA,CAACC,SAAwB,EAAE;IACxD,MAAMR,gBAAgB,CAACS,OAAO,CAAC,IAAI,CAACH,GAAG,EAAEI,IAAI,CAACC,SAAS,CAACH,SAAS,CAAC,CAAC;EACrE;EAEA,MAAaI,gBAAgBA,CAAA,EAAuC;IAClE,MAAMC,mBAAmB,GAAG,MAAMb,gBAAgB,CAACc,OAAO,CAAC,IAAI,CAACR,GAAG,CAAC;IAEpE,OAAOO,mBAAmB,GAAGH,IAAI,CAACK,KAAK,CAACF,mBAAmB,CAAC,GAAGG,SAAS;EAC1E;EAEA,MAAaC,kBAAkBA,CAAA,EAAG;IAChC,IAAI;MACF,MAAMjB,gBAAgB,CAACkB,UAAU,CAAC,IAAI,CAACZ,GAAG,CAAC;IAC7C,CAAC,CAAC,OAAOa,GAAQ,EAAE;MACjBlB,WAAW,CAACkB,GAAG,EAAE;QACfC,GAAG,EAAE;MACP,CAAC,CAAC;IACJ;EACF;AACF","ignoreList":[]}
|
|
@@ -17,6 +17,9 @@ export default async function fetchContentpassToken({
|
|
|
17
17
|
client_id: propertyId
|
|
18
18
|
}).toString()
|
|
19
19
|
});
|
|
20
|
+
if (!tokenEndpointResponse.ok) {
|
|
21
|
+
throw new Error(`Failed to fetch Contentpass token, status: ${tokenEndpointResponse.statusText}`);
|
|
22
|
+
}
|
|
20
23
|
const {
|
|
21
24
|
contentpass_token
|
|
22
25
|
} = await tokenEndpointResponse.json();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TOKEN_ENDPOINT","fetchContentpassToken","idToken","propertyId","issuer","tokenEndpointResponse","fetch","method","headers","body","URLSearchParams","grant_type","subject_token","client_id","toString","ok","Error","statusText","contentpass_token","json"],"sourceRoot":"../../../src","sources":["contentpassTokenUtils/fetchContentpassToken.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,yBAAsB;AAErD,eAAe,eAAeC,qBAAqBA,CAAC;EAClDC,OAAO;EACPC,UAAU;EACVC;AAKF,CAAC,EAAE;EACD,MAAMC,qBAAqB,GAAG,MAAMC,KAAK,CAAC,GAAGF,MAAM,GAAGJ,cAAc,EAAE,EAAE;IACtEO,MAAM,EAAE,MAAM;IACdC,OAAO,EAAE;MACP,cAAc,EAAE;IAClB,CAAC;IACDC,IAAI,EAAE,IAAIC,eAAe,CAAC;MACxBC,UAAU,EAAE,mBAAmB;MAC/BC,aAAa,EAAEV,OAAO;MACtBW,SAAS,EAAEV;IACb,CAAC,CAAC,CAACW,QAAQ,CAAC;EACd,CAAC,CAAC;EAEF,IAAI,CAACT,qBAAqB,CAACU,EAAE,EAAE;IAC7B,MAAM,IAAIC,KAAK,CACb,8CAA8CX,qBAAqB,CAACY,UAAU,EAChF,CAAC;EACH;EAEA,MAAM;IAAEC;EAAkB,CAAC,GAAG,MAAMb,qBAAqB,CAACc,IAAI,CAAC,CAAC;EAEhE,OAAOD,iBAAiB;AAC1B","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseContentpassToken","contentpassToken","tokenParts","split","length","Error","header","JSON","parse","atob","body"],"sourceRoot":"../../../src","sources":["contentpassTokenUtils/parseContentpassToken.ts"],"mappings":";;AAeA,eAAe,SAASA,qBAAqBA,CAC3CC,gBAAwB,EACX;EACb,MAAMC,UAAU,GAAGD,gBAAgB,CAACE,KAAK,CAAC,GAAG,CAAC;EAC9C,IAAID,UAAU,CAACE,MAAM,GAAG,CAAC,EAAE;IACzB,MAAM,IAAIC,KAAK,CAAC,mDAAmD,CAAC;EACtE;EAEA,MAAMC,MAAM,GAAGC,IAAI,CAACC,KAAK,CAACC,IAAI,CAACP,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;EAC/C,MAAMQ,IAAI,GAAGH,IAAI,CAACC,KAAK,CAACC,IAAI,CAACP,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC;EAE7C,OAAO;IACLI,MAAM;IACNI;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["parseContentpassToken","reportError","validateSubscription","contentpassToken","body","auth","plans","length","err","msg"],"sourceRoot":"../../../src","sources":["contentpassTokenUtils/validateSubscription.ts"],"mappings":";;AAAA,OAAOA,qBAAqB,MAAM,4BAAyB;AAC3D,SAASC,WAAW,QAAQ,yBAAsB;AAElD,eAAe,SAASC,oBAAoBA,CAACC,gBAAwB,EAAE;EACrE,IAAI;IACF,MAAM;MAAEC;IAAK,CAAC,GAAGJ,qBAAqB,CAACG,gBAAgB,CAAC;IACxD,OAAO,CAAC,CAACC,IAAI,CAACC,IAAI,IAAI,CAAC,CAACD,IAAI,CAACE,KAAK,CAACC,MAAM;EAC3C,CAAC,CAAC,OAAOC,GAAQ,EAAE;IACjBP,WAAW,CAACO,GAAG,EAAE;MAAEC,GAAG,EAAE;IAAkC,CAAC,CAAC;IAC5D,OAAO,KAAK;EACd;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default async function sendPageViewEvent(apiUrl, payload) {
|
|
4
|
+
const {
|
|
5
|
+
propertyId,
|
|
6
|
+
impressionId,
|
|
7
|
+
accessToken
|
|
8
|
+
} = payload;
|
|
9
|
+
const path = `pass/hit?pid=${propertyId}&iid=${impressionId}&t=pageview`;
|
|
10
|
+
const response = await fetch(`${apiUrl}/${path}`, {
|
|
11
|
+
headers: {
|
|
12
|
+
Authorization: `Bearer ${accessToken}`
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(`Failed send page view event, status: ${response.statusText}`);
|
|
17
|
+
}
|
|
18
|
+
return response;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=sendPageViewEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sendPageViewEvent","apiUrl","payload","propertyId","impressionId","accessToken","path","response","fetch","headers","Authorization","ok","Error","statusText"],"sourceRoot":"../../../src","sources":["countImpressionUtils/sendPageViewEvent.ts"],"mappings":";;AAMA,eAAe,eAAeA,iBAAiBA,CAC7CC,MAAc,EACdC,OAAwB,EACxB;EACA,MAAM;IAAEC,UAAU;IAAEC,YAAY;IAAEC;EAAY,CAAC,GAAGH,OAAO;EACzD,MAAMI,IAAI,GAAG,gBAAgBH,UAAU,QAAQC,YAAY,aAAa;EAExE,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAAC,GAAGP,MAAM,IAAIK,IAAI,EAAE,EAAE;IAChDG,OAAO,EAAE;MACPC,aAAa,EAAE,UAAUL,WAAW;IACtC;EACF,CAAC,CAAC;EAEF,IAAI,CAACE,QAAQ,CAACI,EAAE,EAAE;IAChB,MAAM,IAAIC,KAAK,CACb,wCAAwCL,QAAQ,CAACM,UAAU,EAC7D,CAAC;EACH;EAEA,OAAON,QAAQ;AACjB","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default async function sendStats(apiUrl, payload) {
|
|
4
|
+
const response = await fetch(`${apiUrl}/stats`, {
|
|
5
|
+
method: 'POST',
|
|
6
|
+
headers: {
|
|
7
|
+
'Content-Type': 'application/json; charset=UTF-8'
|
|
8
|
+
},
|
|
9
|
+
body: JSON.stringify(payload)
|
|
10
|
+
});
|
|
11
|
+
if (!response.ok) {
|
|
12
|
+
throw new Error(`Failed to send stats, status: ${response.statusText}`);
|
|
13
|
+
}
|
|
14
|
+
return response;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=sendStats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["sendStats","apiUrl","payload","response","fetch","method","headers","body","JSON","stringify","ok","Error","statusText"],"sourceRoot":"../../../src","sources":["countImpressionUtils/sendStats.ts"],"mappings":";;AAQA,eAAe,eAAeA,SAASA,CAACC,MAAc,EAAEC,OAAqB,EAAE;EAC7E,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CAAC,GAAGH,MAAM,QAAQ,EAAE;IAC9CI,MAAM,EAAE,MAAM;IACdC,OAAO,EAAE;MACP,cAAc,EAAE;IAClB,CAAC;IACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAACP,OAAO;EAC9B,CAAC,CAAC;EAEF,IAAI,CAACC,QAAQ,CAACO,EAAE,EAAE;IAChB,MAAM,IAAIC,KAAK,CAAC,iCAAiCR,QAAQ,CAACS,UAAU,EAAE,CAAC;EACzE;EAEA,OAAOT,QAAQ;AACjB","ignoreList":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { consoleTransport, logger } from 'react-native-logs';
|
|
4
|
+
const log = logger.createLogger({
|
|
5
|
+
// by default loggger is disabled
|
|
6
|
+
enabled: false,
|
|
7
|
+
transport: consoleTransport,
|
|
8
|
+
transportOptions: {
|
|
9
|
+
colors: {
|
|
10
|
+
info: 'blueBright',
|
|
11
|
+
warn: 'yellowBright',
|
|
12
|
+
error: 'redBright'
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
export const enableLogger = severity => {
|
|
17
|
+
log.setSeverity(severity);
|
|
18
|
+
log.enable();
|
|
19
|
+
log.debug('Logger enabled with severity', severity);
|
|
20
|
+
};
|
|
21
|
+
export default log;
|
|
22
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["consoleTransport","logger","log","createLogger","enabled","transport","transportOptions","colors","info","warn","error","enableLogger","severity","setSeverity","enable","debug"],"sourceRoot":"../../src","sources":["logger.ts"],"mappings":";;AAAA,SACEA,gBAAgB,EAChBC,MAAM,QAED,mBAAmB;AAQ1B,MAAMC,GAAW,GAAGD,MAAM,CAACE,YAAY,CAAC;EACtC;EACAC,OAAO,EAAE,KAAK;EACdC,SAAS,EAAEL,gBAAgB;EAC3BM,gBAAgB,EAAE;IAChBC,MAAM,EAAE;MACNC,IAAI,EAAE,YAAY;MAClBC,IAAI,EAAE,cAAc;MACpBC,KAAK,EAAE;IACT;EACF;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,YAAY,GAAIC,QAAkB,IAAK;EAClDV,GAAG,CAACW,WAAW,CAACD,QAAQ,CAAC;EACzBV,GAAG,CAACY,MAAM,CAAC,CAAC;EAEZZ,GAAG,CAACa,KAAK,CAAC,8BAA8B,EAAEH,QAAQ,CAAC;AACrD,CAAC;AAED,eAAeV,GAAG","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import * as Sentry from '@sentry/react-native';
|
|
4
4
|
import { defaultStackParser, makeFetchTransport } from '@sentry/react';
|
|
5
5
|
import { getDefaultIntegrations } from '@sentry/react-native/dist/js/integrations/default';
|
|
6
|
+
import logger from "./logger.js";
|
|
6
7
|
|
|
7
8
|
// as it's only the open source package, we want to have minimal sentry configuration here to not override sentry instance,
|
|
8
9
|
// which can be used in the application
|
|
@@ -39,6 +40,9 @@ sentryClient.init();
|
|
|
39
40
|
export const reportError = (err, {
|
|
40
41
|
msg
|
|
41
42
|
} = {}) => {
|
|
43
|
+
logger.error({
|
|
44
|
+
err
|
|
45
|
+
}, msg || 'Unexpected error');
|
|
42
46
|
if (msg) {
|
|
43
47
|
sentryScope.addBreadcrumb({
|
|
44
48
|
category: 'Error',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Sentry","defaultStackParser","makeFetchTransport","getDefaultIntegrations","options","attachStacktrace","autoInitializeNativeSdk","dsn","enableAppStartTracking","enableAutoPerformanceTracing","enableCaptureFailedRequests","enableNative","enableNativeCrashHandling","enableNativeFramesTracking","enableNativeNagger","enableNdk","enableStallTracking","enableUserInteractionTracing","enableWatchdogTerminationTracking","maxQueueSize","parentSpanIsAlwaysRootSpan","patchGlobalPromise","sendClientReports","stackParser","transport","integrations","sentryClient","ReactNativeClient","sentryScope","Scope","setClient","init","reportError","err","msg","addBreadcrumb","category","message","level","captureException","setSentryExtraAttribute","key","value","setExtra"],"sourceRoot":"../../src","sources":["sentryIntegration.ts"],"mappings":";;AAAA,OAAO,KAAKA,MAAM,MAAM,sBAAsB;AAC9C,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,eAAe;AACtE,SAASC,sBAAsB,QAAQ,mDAAmD;;
|
|
1
|
+
{"version":3,"names":["Sentry","defaultStackParser","makeFetchTransport","getDefaultIntegrations","logger","options","attachStacktrace","autoInitializeNativeSdk","dsn","enableAppStartTracking","enableAutoPerformanceTracing","enableCaptureFailedRequests","enableNative","enableNativeCrashHandling","enableNativeFramesTracking","enableNativeNagger","enableNdk","enableStallTracking","enableUserInteractionTracing","enableWatchdogTerminationTracking","maxQueueSize","parentSpanIsAlwaysRootSpan","patchGlobalPromise","sendClientReports","stackParser","transport","integrations","sentryClient","ReactNativeClient","sentryScope","Scope","setClient","init","reportError","err","msg","error","addBreadcrumb","category","message","level","captureException","setSentryExtraAttribute","key","value","setExtra"],"sourceRoot":"../../src","sources":["sentryIntegration.ts"],"mappings":";;AAAA,OAAO,KAAKA,MAAM,MAAM,sBAAsB;AAC9C,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,eAAe;AACtE,SAASC,sBAAsB,QAAQ,mDAAmD;AAC1F,OAAOC,MAAM,MAAM,aAAU;;AAE7B;AACA;AACA,MAAMC,OAAO,GAAG;EACdC,gBAAgB,EAAE,IAAI;EACtBC,uBAAuB,EAAE,KAAK;EAC9BC,GAAG,EAAE,yEAAyE;EAC9EC,sBAAsB,EAAE,KAAK;EAC7BC,4BAA4B,EAAE,KAAK;EACnCC,2BAA2B,EAAE,KAAK;EAClCC,YAAY,EAAE,KAAK;EACnBC,yBAAyB,EAAE,KAAK;EAChCC,0BAA0B,EAAE,KAAK;EACjCC,kBAAkB,EAAE,KAAK;EACzBC,SAAS,EAAE,KAAK;EAChBC,mBAAmB,EAAE,IAAI;EACzBC,4BAA4B,EAAE,KAAK;EACnCC,iCAAiC,EAAE,KAAK;EACxCC,YAAY,EAAE,EAAE;EAChBC,0BAA0B,EAAE,IAAI;EAChCC,kBAAkB,EAAE,IAAI;EACxBC,iBAAiB,EAAE,IAAI;EACvBC,WAAW,EAAEvB,kBAAkB;EAC/BwB,SAAS,EAAEvB,kBAAkB;EAC7BwB,YAAY,EAAE;AAChB,CAAC;AAED,MAAMC,YAAY,GAAG,IAAI3B,MAAM,CAAC4B,iBAAiB,CAAC;EAChD,GAAGvB,OAAO;EACVqB,YAAY,EAAEvB,sBAAsB,CAACE,OAAO;AAC9C,CAAC,CAAC;AAEF,MAAMwB,WAAW,GAAG,IAAI7B,MAAM,CAAC8B,KAAK,CAAC,CAAC;AACtCD,WAAW,CAACE,SAAS,CAACJ,YAAY,CAAC;AAEnCA,YAAY,CAACK,IAAI,CAAC,CAAC;AAMnB,OAAO,MAAMC,WAAW,GAAGA,CAACC,GAAU,EAAE;EAAEC;AAAwB,CAAC,GAAG,CAAC,CAAC,KAAK;EAC3E/B,MAAM,CAACgC,KAAK,CAAC;IAAEF;EAAI,CAAC,EAAEC,GAAG,IAAI,kBAAkB,CAAC;EAChD,IAAIA,GAAG,EAAE;IACPN,WAAW,CAACQ,aAAa,CAAC;MACxBC,QAAQ,EAAE,OAAO;MACjBC,OAAO,EAAEJ,GAAG;MACZK,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAEAX,WAAW,CAACY,gBAAgB,CAACP,GAAG,CAAC;AACnC,CAAC;AAED,OAAO,MAAMQ,uBAAuB,GAAGA,CAACC,GAAW,EAAEC,KAAa,KAAK;EACrEf,WAAW,CAACgB,QAAQ,CAACF,GAAG,EAAEC,KAAK,CAAC;AAClC,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { type ContentpassState } from './types/ContentpassState';
|
|
2
2
|
import type { ContentpassConfig } from './types/ContentpassConfig';
|
|
3
3
|
export type ContentpassObserver = (state: ContentpassState) => void;
|
|
4
|
-
|
|
4
|
+
interface ContentpassInterface {
|
|
5
|
+
authenticate: () => Promise<void>;
|
|
6
|
+
registerObserver: (observer: ContentpassObserver) => void;
|
|
7
|
+
unregisterObserver: (observer: ContentpassObserver) => void;
|
|
8
|
+
logout: () => Promise<void>;
|
|
9
|
+
recoverFromError: () => Promise<void>;
|
|
10
|
+
countImpression: () => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export default class Contentpass implements ContentpassInterface {
|
|
5
13
|
private authStateStorage;
|
|
6
14
|
private readonly config;
|
|
15
|
+
private readonly samplingRate;
|
|
7
16
|
private contentpassState;
|
|
8
17
|
private contentpassStateObservers;
|
|
9
18
|
private oidcAuthState;
|
|
@@ -14,11 +23,16 @@ export default class Contentpass {
|
|
|
14
23
|
unregisterObserver(observer: ContentpassObserver): void;
|
|
15
24
|
logout: () => Promise<void>;
|
|
16
25
|
recoverFromError: () => Promise<void>;
|
|
26
|
+
countImpression: () => Promise<void>;
|
|
27
|
+
private countPaidImpressionWhenUserHasValidSub;
|
|
28
|
+
private countSampledImpression;
|
|
17
29
|
private initialiseAuthState;
|
|
18
30
|
private onNewAuthState;
|
|
19
31
|
private setupRefreshTimer;
|
|
20
32
|
private refreshToken;
|
|
21
33
|
private onRefreshTokenError;
|
|
22
34
|
private changeContentpassState;
|
|
35
|
+
private hasValidSubscriptionAndAccessToken;
|
|
23
36
|
}
|
|
37
|
+
export {};
|
|
24
38
|
//# sourceMappingURL=Contentpass.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Contentpass.d.ts","sourceRoot":"","sources":["../../../../src/Contentpass.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Contentpass.d.ts","sourceRoot":"","sources":["../../../../src/Contentpass.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE,UAAU,oBAAoB;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC1D,kBAAkB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC5D,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,oBAAoB;IAC9D,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,gBAAgB,CAEtB;IACF,OAAO,CAAC,yBAAyB,CAA6B;IAC9D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,iBAAiB;IAoB9B,YAAY,QAAa,OAAO,CAAC,IAAI,CAAC,CA6B3C;IAEK,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB;IAU9C,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB;IAOhD,MAAM,sBAOX;IAEK,gBAAgB,sBAOrB;IAEK,eAAe,sBAKpB;IAEF,OAAO,CAAC,sCAAsC,CAiB5C;IAEF,OAAO,CAAC,sBAAsB,CAqB5B;IAEF,OAAO,CAAC,mBAAmB,CAezB;IAEF,OAAO,CAAC,cAAc,CAkCpB;IAEF,OAAO,CAAC,iBAAiB,CA4BvB;IAEF,OAAO,CAAC,YAAY,CAwBlB;IAEF,OAAO,CAAC,mBAAmB,CAezB;IAEF,OAAO,CAAC,sBAAsB,CAG5B;IAEF,OAAO,CAAC,kCAAkC,CAMxC;CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OidcAuthStateStorage.d.ts","sourceRoot":"","sources":["../../../../src/OidcAuthStateStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OidcAuthStateStorage.d.ts","sourceRoot":"","sources":["../../../../src/OidcAuthStateStorage.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB,EAAE,MAAM,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAET,QAAQ,EAAE,MAAM;IAIf,kBAAkB,CAAC,SAAS,EAAE,aAAa;IAI3C,gBAAgB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAMtD,kBAAkB;CAShC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchContentpassToken.d.ts","sourceRoot":"","sources":["../../../../../src/contentpassTokenUtils/fetchContentpassToken.ts"],"names":[],"mappings":"AAEA,wBAA8B,qBAAqB,CAAC,EAClD,OAAO,EACP,UAAU,EACV,MAAM,GACP,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,gBAsBA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseContentpassToken.d.ts","sourceRoot":"","sources":["../../../../../src/contentpassTokenUtils/parseContentpassToken.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAC3C,gBAAgB,EAAE,MAAM,GACvB,WAAW,CAab"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateSubscription.d.ts","sourceRoot":"","sources":["../../../../../src/contentpassTokenUtils/validateSubscription.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,WAQpE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type HitEndpointArgs = {
|
|
2
|
+
propertyId: string;
|
|
3
|
+
impressionId: string;
|
|
4
|
+
accessToken: string;
|
|
5
|
+
};
|
|
6
|
+
export default function sendPageViewEvent(apiUrl: string, payload: HitEndpointArgs): Promise<Response>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=sendPageViewEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendPageViewEvent.d.ts","sourceRoot":"","sources":["../../../../../src/countImpressionUtils/sendPageViewEvent.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAA8B,iBAAiB,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,qBAkBzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendStats.d.ts","sourceRoot":"","sources":["../../../../../src/countImpressionUtils/sendStats.ts"],"names":[],"mappings":"AAAA,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAA8B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,qBAc5E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { logger, type transportFunctionType } from 'react-native-logs';
|
|
2
|
+
import type { Severity } from './types/ContentpassConfig';
|
|
3
|
+
import type { ConsoleTransportOptions } from 'react-native-logs/dist/transports/consoleTransport';
|
|
4
|
+
type Logger = ReturnType<typeof logger.createLogger<transportFunctionType<ConsoleTransportOptions>>>;
|
|
5
|
+
declare const log: Logger;
|
|
6
|
+
export declare const enableLogger: (severity: Severity) => void;
|
|
7
|
+
export default log;
|
|
8
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAC;AAElG,KAAK,MAAM,GAAG,UAAU,CACtB,OAAO,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC,CAC3E,CAAC;AAEF,QAAA,MAAM,GAAG,EAAE,MAWT,CAAC;AAEH,eAAO,MAAM,YAAY,aAAc,QAAQ,SAK9C,CAAC;AAEF,eAAe,GAAG,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentryIntegration.d.ts","sourceRoot":"","sources":["../../../../src/sentryIntegration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sentryIntegration.d.ts","sourceRoot":"","sources":["../../../../src/sentryIntegration.ts"],"names":[],"mappings":"AAyCA,KAAK,kBAAkB,GAAG;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,WAAW,QAAS,KAAK,YAAW,kBAAkB,SAWlE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAS,MAAM,SAAS,MAAM,SAEjE,CAAC"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
export type Severity = 'debug' | 'info' | 'warn' | 'error';
|
|
1
2
|
export type ContentpassConfig = {
|
|
2
3
|
propertyId: string;
|
|
4
|
+
planId: string;
|
|
3
5
|
redirectUrl: string;
|
|
4
6
|
issuer: string;
|
|
7
|
+
apiUrl: string;
|
|
8
|
+
samplingRate?: number;
|
|
9
|
+
logLevel?: Severity;
|
|
5
10
|
};
|
|
6
11
|
//# sourceMappingURL=ContentpassConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentpassConfig.d.ts","sourceRoot":"","sources":["../../../../../src/types/ContentpassConfig.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ContentpassConfig.d.ts","sourceRoot":"","sources":["../../../../../src/types/ContentpassConfig.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { type ContentpassState } from './types/ContentpassState';
|
|
2
2
|
import type { ContentpassConfig } from './types/ContentpassConfig';
|
|
3
3
|
export type ContentpassObserver = (state: ContentpassState) => void;
|
|
4
|
-
|
|
4
|
+
interface ContentpassInterface {
|
|
5
|
+
authenticate: () => Promise<void>;
|
|
6
|
+
registerObserver: (observer: ContentpassObserver) => void;
|
|
7
|
+
unregisterObserver: (observer: ContentpassObserver) => void;
|
|
8
|
+
logout: () => Promise<void>;
|
|
9
|
+
recoverFromError: () => Promise<void>;
|
|
10
|
+
countImpression: () => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export default class Contentpass implements ContentpassInterface {
|
|
5
13
|
private authStateStorage;
|
|
6
14
|
private readonly config;
|
|
15
|
+
private readonly samplingRate;
|
|
7
16
|
private contentpassState;
|
|
8
17
|
private contentpassStateObservers;
|
|
9
18
|
private oidcAuthState;
|
|
@@ -14,11 +23,16 @@ export default class Contentpass {
|
|
|
14
23
|
unregisterObserver(observer: ContentpassObserver): void;
|
|
15
24
|
logout: () => Promise<void>;
|
|
16
25
|
recoverFromError: () => Promise<void>;
|
|
26
|
+
countImpression: () => Promise<void>;
|
|
27
|
+
private countPaidImpressionWhenUserHasValidSub;
|
|
28
|
+
private countSampledImpression;
|
|
17
29
|
private initialiseAuthState;
|
|
18
30
|
private onNewAuthState;
|
|
19
31
|
private setupRefreshTimer;
|
|
20
32
|
private refreshToken;
|
|
21
33
|
private onRefreshTokenError;
|
|
22
34
|
private changeContentpassState;
|
|
35
|
+
private hasValidSubscriptionAndAccessToken;
|
|
23
36
|
}
|
|
37
|
+
export {};
|
|
24
38
|
//# sourceMappingURL=Contentpass.d.ts.map
|