@contentpass/react-native-contentpass 0.2.6 → 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.
Files changed (80) hide show
  1. package/README.md +10 -0
  2. package/lib/commonjs/Contentpass.js +95 -5
  3. package/lib/commonjs/Contentpass.js.map +1 -1
  4. package/lib/commonjs/{utils → contentpassTokenUtils}/fetchContentpassToken.js +3 -0
  5. package/lib/commonjs/contentpassTokenUtils/fetchContentpassToken.js.map +1 -0
  6. package/lib/commonjs/contentpassTokenUtils/parseContentpassToken.js.map +1 -0
  7. package/lib/commonjs/contentpassTokenUtils/validateSubscription.js.map +1 -0
  8. package/lib/commonjs/countImpressionUtils/sendPageViewEvent.js +24 -0
  9. package/lib/commonjs/countImpressionUtils/sendPageViewEvent.js.map +1 -0
  10. package/lib/commonjs/countImpressionUtils/sendStats.js +20 -0
  11. package/lib/commonjs/countImpressionUtils/sendStats.js.map +1 -0
  12. package/lib/commonjs/logger.js +27 -0
  13. package/lib/commonjs/logger.js.map +1 -0
  14. package/lib/commonjs/sentryIntegration.js +5 -0
  15. package/lib/commonjs/sentryIntegration.js.map +1 -1
  16. package/lib/module/Contentpass.js +93 -5
  17. package/lib/module/Contentpass.js.map +1 -1
  18. package/lib/module/{utils → contentpassTokenUtils}/fetchContentpassToken.js +3 -0
  19. package/lib/module/contentpassTokenUtils/fetchContentpassToken.js.map +1 -0
  20. package/lib/module/contentpassTokenUtils/parseContentpassToken.js.map +1 -0
  21. package/lib/module/contentpassTokenUtils/validateSubscription.js.map +1 -0
  22. package/lib/module/countImpressionUtils/sendPageViewEvent.js +20 -0
  23. package/lib/module/countImpressionUtils/sendPageViewEvent.js.map +1 -0
  24. package/lib/module/countImpressionUtils/sendStats.js +16 -0
  25. package/lib/module/countImpressionUtils/sendStats.js.map +1 -0
  26. package/lib/module/logger.js +22 -0
  27. package/lib/module/logger.js.map +1 -0
  28. package/lib/module/sentryIntegration.js +4 -0
  29. package/lib/module/sentryIntegration.js.map +1 -1
  30. package/lib/typescript/commonjs/src/Contentpass.d.ts +15 -1
  31. package/lib/typescript/commonjs/src/Contentpass.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/src/contentpassTokenUtils/fetchContentpassToken.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/src/contentpassTokenUtils/parseContentpassToken.d.ts.map +1 -0
  34. package/lib/typescript/commonjs/src/contentpassTokenUtils/validateSubscription.d.ts.map +1 -0
  35. package/lib/typescript/commonjs/src/countImpressionUtils/sendPageViewEvent.d.ts +8 -0
  36. package/lib/typescript/commonjs/src/countImpressionUtils/sendPageViewEvent.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/src/countImpressionUtils/sendStats.d.ts +10 -0
  38. package/lib/typescript/commonjs/src/countImpressionUtils/sendStats.d.ts.map +1 -0
  39. package/lib/typescript/commonjs/src/logger.d.ts +8 -0
  40. package/lib/typescript/commonjs/src/logger.d.ts.map +1 -0
  41. package/lib/typescript/commonjs/src/sentryIntegration.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/src/types/ContentpassConfig.d.ts +4 -0
  43. package/lib/typescript/commonjs/src/types/ContentpassConfig.d.ts.map +1 -1
  44. package/lib/typescript/module/src/Contentpass.d.ts +15 -1
  45. package/lib/typescript/module/src/Contentpass.d.ts.map +1 -1
  46. package/lib/typescript/module/src/contentpassTokenUtils/fetchContentpassToken.d.ts.map +1 -0
  47. package/lib/typescript/module/src/contentpassTokenUtils/parseContentpassToken.d.ts.map +1 -0
  48. package/lib/typescript/module/src/contentpassTokenUtils/validateSubscription.d.ts.map +1 -0
  49. package/lib/typescript/module/src/countImpressionUtils/sendPageViewEvent.d.ts +8 -0
  50. package/lib/typescript/module/src/countImpressionUtils/sendPageViewEvent.d.ts.map +1 -0
  51. package/lib/typescript/module/src/countImpressionUtils/sendStats.d.ts +10 -0
  52. package/lib/typescript/module/src/countImpressionUtils/sendStats.d.ts.map +1 -0
  53. package/lib/typescript/module/src/logger.d.ts +8 -0
  54. package/lib/typescript/module/src/logger.d.ts.map +1 -0
  55. package/lib/typescript/module/src/sentryIntegration.d.ts.map +1 -1
  56. package/lib/typescript/module/src/types/ContentpassConfig.d.ts +4 -0
  57. package/lib/typescript/module/src/types/ContentpassConfig.d.ts.map +1 -1
  58. package/package.json +4 -2
  59. package/lib/commonjs/utils/fetchContentpassToken.js.map +0 -1
  60. package/lib/commonjs/utils/parseContentpassToken.js.map +0 -1
  61. package/lib/commonjs/utils/validateSubscription.js.map +0 -1
  62. package/lib/module/utils/fetchContentpassToken.js.map +0 -1
  63. package/lib/module/utils/parseContentpassToken.js.map +0 -1
  64. package/lib/module/utils/validateSubscription.js.map +0 -1
  65. package/lib/typescript/commonjs/src/utils/fetchContentpassToken.d.ts.map +0 -1
  66. package/lib/typescript/commonjs/src/utils/parseContentpassToken.d.ts.map +0 -1
  67. package/lib/typescript/commonjs/src/utils/validateSubscription.d.ts.map +0 -1
  68. package/lib/typescript/module/src/utils/fetchContentpassToken.d.ts.map +0 -1
  69. package/lib/typescript/module/src/utils/parseContentpassToken.d.ts.map +0 -1
  70. package/lib/typescript/module/src/utils/validateSubscription.d.ts.map +0 -1
  71. /package/lib/commonjs/{utils → contentpassTokenUtils}/parseContentpassToken.js +0 -0
  72. /package/lib/commonjs/{utils → contentpassTokenUtils}/validateSubscription.js +0 -0
  73. /package/lib/module/{utils → contentpassTokenUtils}/parseContentpassToken.js +0 -0
  74. /package/lib/module/{utils → contentpassTokenUtils}/validateSubscription.js +0 -0
  75. /package/lib/typescript/commonjs/src/{utils → contentpassTokenUtils}/fetchContentpassToken.d.ts +0 -0
  76. /package/lib/typescript/commonjs/src/{utils → contentpassTokenUtils}/parseContentpassToken.d.ts +0 -0
  77. /package/lib/typescript/commonjs/src/{utils → contentpassTokenUtils}/validateSubscription.d.ts +0 -0
  78. /package/lib/typescript/module/src/{utils → contentpassTokenUtils}/fetchContentpassToken.d.ts +0 -0
  79. /package/lib/typescript/module/src/{utils → contentpassTokenUtils}/parseContentpassToken.d.ts +0 -0
  80. /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 "./utils/fetchContentpassToken.js";
9
- import validateSubscription from "./utils/validateSubscription.js";
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({
@@ -46,9 +61,11 @@ export default class Contentpass {
46
61
  });
47
62
  throw err;
48
63
  }
64
+ logger.info('Authentication flow finished, checking subscription...');
49
65
  await this.onNewAuthState(result);
50
66
  };
51
67
  registerObserver(observer) {
68
+ logger.info('Registering observer');
52
69
  if (this.contentpassStateObservers.includes(observer)) {
53
70
  return;
54
71
  }
@@ -56,9 +73,11 @@ export default class Contentpass {
56
73
  this.contentpassStateObservers.push(observer);
57
74
  }
58
75
  unregisterObserver(observer) {
76
+ logger.info('Unregistering observer');
59
77
  this.contentpassStateObservers = this.contentpassStateObservers.filter(o => o !== observer);
60
78
  }
61
79
  logout = async () => {
80
+ logger.info('Logging out and clearing auth state');
62
81
  await this.authStateStorage.clearOidcAuthState();
63
82
  this.changeContentpassState({
64
83
  state: ContentpassStateType.UNAUTHENTICATED,
@@ -66,42 +85,97 @@ export default class Contentpass {
66
85
  });
67
86
  };
68
87
  recoverFromError = async () => {
88
+ logger.info('Recovering from error');
69
89
  this.changeContentpassState({
70
90
  state: ContentpassStateType.INITIALISING
71
91
  });
72
92
  await this.initialiseAuthState();
73
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
+ };
74
137
  initialiseAuthState = async () => {
75
138
  const authState = await this.authStateStorage.getOidcAuthState();
76
139
  if (authState) {
140
+ logger.debug('Found auth state in storage, initialising with it');
77
141
  await this.onNewAuthState(authState);
78
142
  return;
79
143
  }
144
+ logger.debug('No auth state found in storage, initialising unauthenticated');
80
145
  this.changeContentpassState({
81
146
  state: ContentpassStateType.UNAUTHENTICATED,
82
147
  hasValidSubscription: false
83
148
  });
84
149
  };
85
150
  onNewAuthState = async authState => {
151
+ logger.debug('New auth state received');
86
152
  this.oidcAuthState = authState;
87
153
  await this.authStateStorage.storeOidcAuthState(authState);
88
154
  const strategy = this.setupRefreshTimer();
89
155
  // if instant refresh, no need to check subscription as it will happen in the refresh
90
156
  if (strategy === RefreshTokenStrategy.INSTANTLY) {
157
+ logger.debug('Instant refresh, skipping subscription check');
91
158
  return;
92
159
  }
93
160
  try {
161
+ logger.info('Checking subscription');
94
162
  const contentpassToken = await fetchContentpassToken({
95
163
  issuer: this.config.issuer,
96
164
  propertyId: this.config.propertyId,
97
165
  idToken: this.oidcAuthState.idToken
98
166
  });
99
167
  const hasValidSubscription = validateSubscription(contentpassToken);
168
+ logger.info({
169
+ hasValidSubscription
170
+ }, 'Subscription check successful');
100
171
  this.changeContentpassState({
101
172
  state: ContentpassStateType.AUTHENTICATED,
102
173
  hasValidSubscription
103
174
  });
104
175
  } catch (err) {
176
+ reportError(err, {
177
+ msg: 'Failed to fetch contentpass token and validate subscription'
178
+ });
105
179
  this.changeContentpassState({
106
180
  state: ContentpassStateType.ERROR,
107
181
  error: err
@@ -111,18 +185,23 @@ export default class Contentpass {
111
185
  setupRefreshTimer = () => {
112
186
  const accessTokenExpirationDate = this.oidcAuthState?.accessTokenExpirationDate;
113
187
  if (!accessTokenExpirationDate) {
188
+ logger.warn('No access token expiration date provided');
114
189
  return RefreshTokenStrategy.NO_REFRESH;
115
190
  }
116
191
  const now = new Date();
117
192
  const expirationDate = new Date(accessTokenExpirationDate);
118
193
  const timeDiff = expirationDate.getTime() - now.getTime();
119
194
  if (timeDiff <= 0) {
195
+ logger.debug('Access token expired, refreshing instantly');
120
196
  this.refreshToken(0);
121
197
  return RefreshTokenStrategy.INSTANTLY;
122
198
  }
123
199
  if (this.refreshTimer) {
124
200
  clearTimeout(this.refreshTimer);
125
201
  }
202
+ logger.debug({
203
+ timeDiff
204
+ }, 'Setting up refresh timer');
126
205
  this.refreshTimer = setTimeout(async () => {
127
206
  await this.refreshToken(0);
128
207
  }, timeDiff);
@@ -134,6 +213,7 @@ export default class Contentpass {
134
213
  return;
135
214
  }
136
215
  try {
216
+ logger.info('Refreshing token');
137
217
  const refreshResult = await refresh({
138
218
  clientId: this.config.propertyId,
139
219
  redirectUrl: this.config.redirectUrl,
@@ -143,26 +223,34 @@ export default class Contentpass {
143
223
  refreshToken: this.oidcAuthState.refreshToken
144
224
  });
145
225
  await this.onNewAuthState(refreshResult);
226
+ logger.info('Token refreshed successfully');
146
227
  } catch (err) {
147
228
  await this.onRefreshTokenError(counter, err);
148
229
  }
149
230
  };
150
231
  onRefreshTokenError = async (counter, err) => {
151
- reportError(err, {
152
- msg: `Failed to refresh token after ${counter} retries`
153
- });
154
232
  // FIXME: add handling for specific error to not retry in every case
155
233
  if (counter < REFRESH_TOKEN_RETRIES) {
234
+ logger.warn({
235
+ err,
236
+ counter
237
+ }, 'Failed to refresh token, retrying');
156
238
  const delay = counter * 1000 * 10;
157
239
  await new Promise(resolve => setTimeout(resolve, delay));
158
240
  await this.refreshToken(counter + 1);
159
241
  return;
160
242
  }
243
+ reportError(err, {
244
+ msg: `Failed to refresh token after ${counter} retries`
245
+ });
161
246
  await this.logout();
162
247
  };
163
248
  changeContentpassState = state => {
164
249
  this.contentpassState = state;
165
250
  this.contentpassStateObservers.forEach(observer => observer(state));
166
251
  };
252
+ hasValidSubscriptionAndAccessToken = () => {
253
+ return this.contentpassState.state === ContentpassStateType.AUTHENTICATED && this.contentpassState.hasValidSubscription && this.oidcAuthState?.accessToken;
254
+ };
167
255
  }
168
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","cp_plan","planId","err","msg","changeContentpassState","ERROR","error","onNewAuthState","registerObserver","observer","includes","push","unregisterObserver","filter","o","logout","clearOidcAuthState","UNAUTHENTICATED","hasValidSubscription","recoverFromError","authState","getOidcAuthState","storeOidcAuthState","strategy","setupRefreshTimer","INSTANTLY","contentpassToken","idToken","AUTHENTICATED","accessTokenExpirationDate","NO_REFRESH","now","Date","expirationDate","timeDiff","getTime","refreshToken","clearTimeout","setTimeout","TIMER_SET","counter","Error","refreshResult","onRefreshTokenError","delay","Promise","resolve","forEach"],"sourceRoot":"../../src","sources":["Contentpass.ts"],"mappings":"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","ignoreList":[]}
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":"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","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;;AAE1F;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,EAAEtB,kBAAkB;EAC/BuB,SAAS,EAAEtB,kBAAkB;EAC7BuB,YAAY,EAAE;AAChB,CAAC;AAED,MAAMC,YAAY,GAAG,IAAI1B,MAAM,CAAC2B,iBAAiB,CAAC;EAChD,GAAGvB,OAAO;EACVqB,YAAY,EAAEtB,sBAAsB,CAACC,OAAO;AAC9C,CAAC,CAAC;AAEF,MAAMwB,WAAW,GAAG,IAAI5B,MAAM,CAAC6B,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,IAAIA,GAAG,EAAE;IACPN,WAAW,CAACO,aAAa,CAAC;MACxBC,QAAQ,EAAE,OAAO;MACjBC,OAAO,EAAEH,GAAG;MACZI,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAEAV,WAAW,CAACW,gBAAgB,CAACN,GAAG,CAAC;AACnC,CAAC;AAED,OAAO,MAAMO,uBAAuB,GAAGA,CAACC,GAAW,EAAEC,KAAa,KAAK;EACrEd,WAAW,CAACe,QAAQ,CAACF,GAAG,EAAEC,KAAK,CAAC;AAClC,CAAC","ignoreList":[]}
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
- export default class Contentpass {
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":"AAGA,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,gBAAgB,CAEtB;IACF,OAAO,CAAC,yBAAyB,CAA6B;IAC9D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,iBAAiB;IAO9B,YAAY,QAAa,OAAO,CAAC,IAAI,CAAC,CA2B3C;IAEK,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB;IAS9C,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB;IAMhD,MAAM,sBAMX;IAEK,gBAAgB,sBAMrB;IAEF,OAAO,CAAC,mBAAmB,CAWzB;IAEF,OAAO,CAAC,cAAc,CA2BpB;IAEF,OAAO,CAAC,iBAAiB,CAyBvB;IAEF,OAAO,CAAC,YAAY,CAsBlB;IAEF,OAAO,CAAC,mBAAmB,CAazB;IAEF,OAAO,CAAC,sBAAsB,CAG5B;CACH"}
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"}
@@ -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,10 @@
1
+ type StatsPayload = {
2
+ ea: string;
3
+ ec: string;
4
+ cpabid: string;
5
+ cppid: string;
6
+ cpsr: number;
7
+ };
8
+ export default function sendStats(apiUrl: string, payload: StatsPayload): Promise<Response>;
9
+ export {};
10
+ //# sourceMappingURL=sendStats.d.ts.map
@@ -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":"AAwCA,KAAK,kBAAkB,GAAG;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,WAAW,QAAS,KAAK,YAAW,kBAAkB,SAUlE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAS,MAAM,SAAS,MAAM,SAEjE,CAAC"}
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,7 +1,11 @@
1
+ export type Severity = 'debug' | 'info' | 'warn' | 'error';
1
2
  export type ContentpassConfig = {
2
3
  propertyId: string;
3
4
  planId: string;
4
5
  redirectUrl: string;
5
6
  issuer: string;
7
+ apiUrl: string;
8
+ samplingRate?: number;
9
+ logLevel?: Severity;
6
10
  };
7
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,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,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
- export default class Contentpass {
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":"AAGA,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,0BAA0B,CAAC;AAUlC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,gBAAgB,CAEtB;IACF,OAAO,CAAC,yBAAyB,CAA6B;IAC9D,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,iBAAiB;IAO9B,YAAY,QAAa,OAAO,CAAC,IAAI,CAAC,CA2B3C;IAEK,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB;IAS9C,kBAAkB,CAAC,QAAQ,EAAE,mBAAmB;IAMhD,MAAM,sBAMX;IAEK,gBAAgB,sBAMrB;IAEF,OAAO,CAAC,mBAAmB,CAWzB;IAEF,OAAO,CAAC,cAAc,CA2BpB;IAEF,OAAO,CAAC,iBAAiB,CAyBvB;IAEF,OAAO,CAAC,YAAY,CAsBlB;IAEF,OAAO,CAAC,mBAAmB,CAazB;IAEF,OAAO,CAAC,sBAAsB,CAG5B;CACH"}
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"}
@@ -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,10 @@
1
+ type StatsPayload = {
2
+ ea: string;
3
+ ec: string;
4
+ cpabid: string;
5
+ cppid: string;
6
+ cpsr: number;
7
+ };
8
+ export default function sendStats(apiUrl: string, payload: StatsPayload): Promise<Response>;
9
+ export {};
10
+ //# sourceMappingURL=sendStats.d.ts.map