@osano/osano-cmp-react-native 0.7.0 → 0.9.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 (180) hide show
  1. package/lib/commonjs/ConsentManager.js +4 -1
  2. package/lib/commonjs/ConsentManager.js.map +1 -1
  3. package/lib/commonjs/index.js +3 -2
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/services/consent.js +105 -28
  6. package/lib/commonjs/services/consent.js.map +1 -1
  7. package/lib/commonjs/utils/API.js +4 -3
  8. package/lib/commonjs/utils/API.js.map +1 -1
  9. package/lib/module/ConsentManager.js +4 -1
  10. package/lib/module/ConsentManager.js.map +1 -1
  11. package/lib/module/index.js +3 -2
  12. package/lib/module/index.js.map +1 -1
  13. package/lib/module/services/consent.js +104 -28
  14. package/lib/module/services/consent.js.map +1 -1
  15. package/lib/module/utils/API.js +4 -3
  16. package/lib/module/utils/API.js.map +1 -1
  17. package/lib/typescript/lib/commonjs/ConsentManager.d.ts +1 -1
  18. package/lib/typescript/lib/commonjs/ConsentManager.d.ts.map +1 -1
  19. package/lib/typescript/lib/commonjs/services/consent.d.ts +1 -0
  20. package/lib/typescript/lib/commonjs/services/consent.d.ts.map +1 -1
  21. package/lib/typescript/lib/commonjs/utils/API.d.ts +1 -1
  22. package/lib/typescript/lib/commonjs/utils/API.d.ts.map +1 -1
  23. package/lib/typescript/lib/module/ConsentManager.d.ts +1 -1
  24. package/lib/typescript/lib/module/ConsentManager.d.ts.map +1 -1
  25. package/lib/typescript/lib/module/index.d.ts.map +1 -1
  26. package/lib/typescript/lib/module/services/consent.d.ts +1 -0
  27. package/lib/typescript/lib/module/services/consent.d.ts.map +1 -1
  28. package/lib/typescript/lib/module/utils/API.d.ts +1 -1
  29. package/lib/typescript/lib/module/utils/API.d.ts.map +1 -1
  30. package/lib/typescript/src/ConsentManager.d.ts +1 -1
  31. package/lib/typescript/src/ConsentManager.d.ts.map +1 -1
  32. package/lib/typescript/src/index.d.ts.map +1 -1
  33. package/lib/typescript/src/services/consent.d.ts +19 -4
  34. package/lib/typescript/src/services/consent.d.ts.map +1 -1
  35. package/lib/typescript/src/utils/API.d.ts +1 -1
  36. package/lib/typescript/src/utils/API.d.ts.map +1 -1
  37. package/package.json +17 -9
  38. package/src/ConsentManager.ts +4 -1
  39. package/src/index.tsx +2 -1
  40. package/src/services/consent.ts +162 -40
  41. package/src/types/index.d.ts +1 -0
  42. package/src/utils/API.ts +3 -1
  43. package/lib/typescript/src/iab/gpp/api.d.ts +0 -28
  44. package/lib/typescript/src/iab/gpp/api.d.ts.map +0 -1
  45. package/lib/typescript/src/iab/gpp/consent.d.ts +0 -24
  46. package/lib/typescript/src/iab/gpp/consent.d.ts.map +0 -1
  47. package/lib/typescript/src/iab/gpp/constants.d.ts +0 -37
  48. package/lib/typescript/src/iab/gpp/constants.d.ts.map +0 -1
  49. package/lib/typescript/src/iab/gpp/encoders/AbstractBase64UrlEncoder.d.ts +0 -28
  50. package/lib/typescript/src/iab/gpp/encoders/AbstractBase64UrlEncoder.d.ts.map +0 -1
  51. package/lib/typescript/src/iab/gpp/encoders/BooleanEncoder.d.ts +0 -34
  52. package/lib/typescript/src/iab/gpp/encoders/BooleanEncoder.d.ts.map +0 -1
  53. package/lib/typescript/src/iab/gpp/encoders/CompressedBase64UrlEncoder.d.ts +0 -28
  54. package/lib/typescript/src/iab/gpp/encoders/CompressedBase64UrlEncoder.d.ts.map +0 -1
  55. package/lib/typescript/src/iab/gpp/encoders/DatetimeEncoder.d.ts +0 -28
  56. package/lib/typescript/src/iab/gpp/encoders/DatetimeEncoder.d.ts.map +0 -1
  57. package/lib/typescript/src/iab/gpp/encoders/EncodableOptimizedFixedRange.d.ts +0 -16
  58. package/lib/typescript/src/iab/gpp/encoders/EncodableOptimizedFixedRange.d.ts.map +0 -1
  59. package/lib/typescript/src/iab/gpp/encoders/FibonacciIntegerEncoder.d.ts +0 -28
  60. package/lib/typescript/src/iab/gpp/encoders/FibonacciIntegerEncoder.d.ts.map +0 -1
  61. package/lib/typescript/src/iab/gpp/encoders/FibonacciIntegerRangeEncoder.d.ts +0 -28
  62. package/lib/typescript/src/iab/gpp/encoders/FibonacciIntegerRangeEncoder.d.ts.map +0 -1
  63. package/lib/typescript/src/iab/gpp/encoders/FixedBitfieldEncoder.d.ts +0 -28
  64. package/lib/typescript/src/iab/gpp/encoders/FixedBitfieldEncoder.d.ts.map +0 -1
  65. package/lib/typescript/src/iab/gpp/encoders/FixedIdBitMapEncoder.d.ts +0 -6
  66. package/lib/typescript/src/iab/gpp/encoders/FixedIdBitMapEncoder.d.ts.map +0 -1
  67. package/lib/typescript/src/iab/gpp/encoders/FixedIntegerEncoder.d.ts +0 -28
  68. package/lib/typescript/src/iab/gpp/encoders/FixedIntegerEncoder.d.ts.map +0 -1
  69. package/lib/typescript/src/iab/gpp/encoders/FixedIntegerListEncoder.d.ts +0 -28
  70. package/lib/typescript/src/iab/gpp/encoders/FixedIntegerListEncoder.d.ts.map +0 -1
  71. package/lib/typescript/src/iab/gpp/encoders/FixedIntegerRangeEncoder.d.ts +0 -28
  72. package/lib/typescript/src/iab/gpp/encoders/FixedIntegerRangeEncoder.d.ts.map +0 -1
  73. package/lib/typescript/src/iab/gpp/encoders/FixedStringEncoder.d.ts +0 -26
  74. package/lib/typescript/src/iab/gpp/encoders/FixedStringEncoder.d.ts.map +0 -1
  75. package/lib/typescript/src/iab/gpp/encoders/TraditionalBase64UrlEncoder.d.ts +0 -28
  76. package/lib/typescript/src/iab/gpp/encoders/TraditionalBase64UrlEncoder.d.ts.map +0 -1
  77. package/lib/typescript/src/iab/gpp/encoders/errors.d.ts +0 -19
  78. package/lib/typescript/src/iab/gpp/encoders/errors.d.ts.map +0 -1
  79. package/lib/typescript/src/iab/gpp/encoders/index.d.ts +0 -16
  80. package/lib/typescript/src/iab/gpp/encoders/index.d.ts.map +0 -1
  81. package/lib/typescript/src/iab/gpp/encoders/types.d.ts +0 -5
  82. package/lib/typescript/src/iab/gpp/encoders/types.d.ts.map +0 -1
  83. package/lib/typescript/src/iab/gpp/index.d.ts +0 -10
  84. package/lib/typescript/src/iab/gpp/index.d.ts.map +0 -1
  85. package/lib/typescript/src/iab/gpp/reducer.d.ts +0 -6
  86. package/lib/typescript/src/iab/gpp/reducer.d.ts.map +0 -1
  87. package/lib/typescript/src/iab/gpp/selectors.d.ts +0 -6
  88. package/lib/typescript/src/iab/gpp/selectors.d.ts.map +0 -1
  89. package/lib/typescript/src/iab/gpp/types.d.ts +0 -3
  90. package/lib/typescript/src/iab/gpp/types.d.ts.map +0 -1
  91. package/lib/typescript/src/iab/gpp/v1/constants.d.ts +0 -9
  92. package/lib/typescript/src/iab/gpp/v1/constants.d.ts.map +0 -1
  93. package/lib/typescript/src/iab/gpp/v1/index.d.ts +0 -19
  94. package/lib/typescript/src/iab/gpp/v1/index.d.ts.map +0 -1
  95. package/lib/typescript/src/iab/usp/api.d.ts +0 -4
  96. package/lib/typescript/src/iab/usp/api.d.ts.map +0 -1
  97. package/lib/typescript/src/iab/usp/consent.d.ts +0 -13
  98. package/lib/typescript/src/iab/usp/consent.d.ts.map +0 -1
  99. package/lib/typescript/src/iab/usp/constants.d.ts +0 -77
  100. package/lib/typescript/src/iab/usp/constants.d.ts.map +0 -1
  101. package/lib/typescript/src/iab/usp/index.d.ts +0 -10
  102. package/lib/typescript/src/iab/usp/index.d.ts.map +0 -1
  103. package/lib/typescript/src/iab/usp/reducer.d.ts +0 -13
  104. package/lib/typescript/src/iab/usp/reducer.d.ts.map +0 -1
  105. package/lib/typescript/src/iab/usp/selectors.d.ts +0 -9
  106. package/lib/typescript/src/iab/usp/selectors.d.ts.map +0 -1
  107. package/lib/typescript/src/iab/usp/types.d.ts +0 -5
  108. package/lib/typescript/src/iab/usp/types.d.ts.map +0 -1
  109. package/lib/typescript/src/iab/usp/v1/constants.d.ts +0 -9
  110. package/lib/typescript/src/iab/usp/v1/constants.d.ts.map +0 -1
  111. package/lib/typescript/src/iab/usp/v1/index.d.ts +0 -16
  112. package/lib/typescript/src/iab/usp/v1/index.d.ts.map +0 -1
  113. package/lib/typescript/webdriverio-appium/common/commands.d.ts +0 -23
  114. package/lib/typescript/webdriverio-appium/common/commands.d.ts.map +0 -1
  115. package/lib/typescript/webdriverio-appium/config/android-wdio.conf.d.cts +0 -27
  116. package/lib/typescript/webdriverio-appium/config/android-wdio.conf.d.cts.map +0 -1
  117. package/lib/typescript/webdriverio-appium/config/ios-wdio.conf.d.cts +0 -27
  118. package/lib/typescript/webdriverio-appium/config/ios-wdio.conf.d.cts.map +0 -1
  119. package/lib/typescript/webdriverio-appium/test/ios/one/one-acceptall.d.ts +0 -2
  120. package/lib/typescript/webdriverio-appium/test/ios/one/one-acceptall.d.ts.map +0 -1
  121. package/lib/typescript/webdriverio-appium/test/ios/one/one-managePreferences.d.ts +0 -2
  122. package/lib/typescript/webdriverio-appium/test/ios/one/one-managePreferences.d.ts.map +0 -1
  123. package/lib/typescript/webdriverio-appium/test/ios/six/six-acceptall-iabOn.d.ts +0 -2
  124. package/lib/typescript/webdriverio-appium/test/ios/six/six-acceptall-iabOn.d.ts.map +0 -1
  125. package/lib/typescript/webdriverio-appium/test/ios/six/six-rejectall-iabOn.d.ts +0 -2
  126. package/lib/typescript/webdriverio-appium/test/ios/six/six-rejectall-iabOn.d.ts.map +0 -1
  127. package/lib/typescript/webdriverio-appium/test/ios/six/six-save-FLC.d.ts +0 -2
  128. package/lib/typescript/webdriverio-appium/test/ios/six/six-save-FLC.d.ts.map +0 -1
  129. package/lib/typescript/webdriverio-appium/test/ios/three/three-acceptall.d.ts +0 -2
  130. package/lib/typescript/webdriverio-appium/test/ios/three/three-acceptall.d.ts.map +0 -1
  131. package/lib/typescript/webdriverio-appium/test/ios/three/three-denyall.d.ts +0 -2
  132. package/lib/typescript/webdriverio-appium/test/ios/three/three-denyall.d.ts.map +0 -1
  133. package/lib/typescript/webdriverio-appium/test/ios/three/three-manageP.d.ts +0 -2
  134. package/lib/typescript/webdriverio-appium/test/ios/three/three-manageP.d.ts.map +0 -1
  135. package/lib/typescript/webdriverio-appium/test/ios/two/two-FLC.d.ts +0 -2
  136. package/lib/typescript/webdriverio-appium/test/ios/two/two-FLC.d.ts.map +0 -1
  137. package/lib/typescript/webdriverio-appium/test/ios/two/two-acceptall.d.ts +0 -2
  138. package/lib/typescript/webdriverio-appium/test/ios/two/two-acceptall.d.ts.map +0 -1
  139. package/lib/typescript/webdriverio-appium/test/ios/two/two-managePreferences.d.ts +0 -2
  140. package/lib/typescript/webdriverio-appium/test/ios/two/two-managePreferences.d.ts.map +0 -1
  141. package/lib/typescript/webdriverio-appium/test/ios/two/two-rejectall.d.ts +0 -2
  142. package/lib/typescript/webdriverio-appium/test/ios/two/two-rejectall.d.ts.map +0 -1
  143. package/lib/typescript/webdriverio-appium/test/ios/two/two-save.d.ts +0 -2
  144. package/lib/typescript/webdriverio-appium/test/ios/two/two-save.d.ts.map +0 -1
  145. package/src/iab/gpp/api.js +0 -253
  146. package/src/iab/gpp/consent.js +0 -114
  147. package/src/iab/gpp/constants.js +0 -49
  148. package/src/iab/gpp/encoders/AbstractBase64UrlEncoder.ts +0 -89
  149. package/src/iab/gpp/encoders/BooleanEncoder.ts +0 -39
  150. package/src/iab/gpp/encoders/CompressedBase64UrlEncoder.ts +0 -41
  151. package/src/iab/gpp/encoders/DatetimeEncoder.ts +0 -46
  152. package/src/iab/gpp/encoders/EncodableOptimizedFixedRange.ts +0 -213
  153. package/src/iab/gpp/encoders/FibonacciIntegerEncoder.ts +0 -81
  154. package/src/iab/gpp/encoders/FibonacciIntegerRangeEncoder.ts +0 -122
  155. package/src/iab/gpp/encoders/FixedBitfieldEncoder.ts +0 -59
  156. package/src/iab/gpp/encoders/FixedIdBitMapEncoder.ts +0 -30
  157. package/src/iab/gpp/encoders/FixedIntegerEncoder.ts +0 -61
  158. package/src/iab/gpp/encoders/FixedIntegerListEncoder.ts +0 -87
  159. package/src/iab/gpp/encoders/FixedIntegerRangeEncoder.ts +0 -102
  160. package/src/iab/gpp/encoders/FixedStringEncoder.ts +0 -74
  161. package/src/iab/gpp/encoders/LICENSE-IABTechLab +0 -176
  162. package/src/iab/gpp/encoders/TraditionalBase64UrlEncoder.ts +0 -38
  163. package/src/iab/gpp/encoders/errors.ts +0 -41
  164. package/src/iab/gpp/encoders/index.ts +0 -15
  165. package/src/iab/gpp/encoders/types.ts +0 -5
  166. package/src/iab/gpp/index.js +0 -9
  167. package/src/iab/gpp/reducer.js +0 -7
  168. package/src/iab/gpp/selectors.js +0 -21
  169. package/src/iab/gpp/types.ts +0 -3
  170. package/src/iab/gpp/v1/constants.js +0 -7
  171. package/src/iab/gpp/v1/index.js +0 -73
  172. package/src/iab/usp/api.js +0 -56
  173. package/src/iab/usp/consent.js +0 -150
  174. package/src/iab/usp/constants.js +0 -40
  175. package/src/iab/usp/index.js +0 -9
  176. package/src/iab/usp/reducer.js +0 -107
  177. package/src/iab/usp/selectors.js +0 -31
  178. package/src/iab/usp/types.ts +0 -4
  179. package/src/iab/usp/v1/constants.js +0 -10
  180. package/src/iab/usp/v1/index.js +0 -54
@@ -1,6 +1,6 @@
1
+ import { ConsentCategory, ConsentCategory as ConsentCategoryType } from '../constants';
1
2
  import type { Config } from '../types/consent-config';
2
3
  import type { ConsentManager } from '../ConsentManager';
3
- import { type ConsentCategory as ConsentCategoryType } from '../constants';
4
4
  export type ConsentPayload = {
5
5
  customerId: string;
6
6
  configId: string;
@@ -10,8 +10,23 @@ export type ConsentPayload = {
10
10
  deviceId: string;
11
11
  extUsrData?: string;
12
12
  };
13
- export declare const clearConsent: (cmp: ConsentManager) => Promise<ConsentCategoryType[]>;
14
- export declare const recordConsent: (cmp: ConsentManager, consent?: ConsentCategoryType[]) => Promise<ConsentCategoryType[]>;
15
- export declare const fetchConsent: (cmp: ConsentManager) => Promise<ConsentCategoryType[]>;
13
+ export type ConsentRecordPayload = {
14
+ osnoCustomerId: string;
15
+ osnoConfigId: string;
16
+ consented?: string;
17
+ consentingDomain: string;
18
+ consentingPlatform: string;
19
+ userConsentId: string;
20
+ extUsrData?: string;
21
+ };
22
+ export type ConsentLookupResponseType = {
23
+ consented: string[];
24
+ lastConsentTimestamp: string;
25
+ userConsentId: string;
26
+ };
27
+ export declare const clearConsent: (cmp: ConsentManager) => Promise<ConsentCategory[]>;
28
+ export declare const recordConsent: (cmp: ConsentManager, consent?: ConsentCategoryType[]) => Promise<ConsentCategory[]>;
29
+ export declare function hashExtUsrData(customerId: string, configId: string, extUsrData: string): string;
30
+ export declare const fetchConsent: (cmp: ConsentManager) => Promise<ConsentCategory[]>;
16
31
  export declare const fetchConfig: (customerId: string, configId: string) => Promise<Config | null>;
17
32
  //# sourceMappingURL=consent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../src/services/consent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,OAAO,EACN,KAAK,eAAe,IAAI,mBAAmB,EAE3C,MAAM,cAAc,CAAC;AAUtB,MAAM,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA6CF,eAAO,MAAM,YAAY,QAAe,cAAc,mCAiBrD,CAAC;AAwCF,eAAO,MAAM,aAAa,QACpB,cAAc,YACT,mBAAmB,EAAE,mCAU/B,CAAC;AAEF,eAAO,MAAM,YAAY,QAAS,cAAc,mCAiB/C,CAAC;AAEF,eAAO,MAAM,WAAW,eAAgB,MAAM,YAAY,MAAM,2BAsB/D,CAAC"}
1
+ {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../src/services/consent.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,eAAe,IAAI,mBAAmB,EACtC,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAgBxD,MAAM,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACtB,CAAC;AA2EF,eAAO,MAAM,YAAY,QAAe,cAAc,+BAgBrD,CAAC;AAyDF,eAAO,MAAM,aAAa,QACpB,cAAc,YACT,mBAAmB,EAAE,+BAY/B,CAAC;AAEF,wBAAgB,cAAc,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAChB,MAAM,CAgBR;AAED,eAAO,MAAM,YAAY,QAAe,cAAc,+BAmDrD,CAAC;AAEF,eAAO,MAAM,WAAW,eAAgB,MAAM,YAAY,MAAM,2BAsB/D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  declare const _default: {
2
2
  get: (path: string, queryObj?: object | boolean | undefined) => Promise<unknown>;
3
- post: (path: string, params?: object) => Promise<unknown>;
3
+ post: (path: string, params?: object, headers?: object) => Promise<unknown>;
4
4
  };
5
5
  export default _default;
6
6
  //# sourceMappingURL=API.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"API.d.ts","sourceRoot":"","sources":["../../../../src/utils/API.ts"],"names":[],"mappings":";gBAuCa,MAAM,aAAa,MAAM,GAAG,OAAO,GAAG,SAAS;iBAO9C,MAAM,WAAW,MAAM;;AARrC,wBASE"}
1
+ {"version":3,"file":"API.d.ts","sourceRoot":"","sources":["../../../../src/utils/API.ts"],"names":[],"mappings":";gBAyCa,MAAM,aAAa,MAAM,GAAG,OAAO,GAAG,SAAS;iBAO9C,MAAM,WAAW,MAAM,YAAY,MAAM;;AARvD,wBASE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osano/osano-cmp-react-native",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Package and example for the react-native Osano CMP SDK",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -23,11 +23,19 @@
23
23
  "!**/__tests__",
24
24
  "!**/__fixtures__",
25
25
  "!**/__mocks__",
26
- "!**/.*"
26
+ "!**/.*",
27
+ "!src/iab/usp",
28
+ "!src/iab/gpp",
29
+ "!lib/typescript/webdriverio-appium/**",
30
+ "!lib/typescript/webdriverio-appium/common/**",
31
+ "!lib/typescript/webdriverio-appium/config/**",
32
+ "!lib/typescript/webdriverio-appium/test/**",
33
+ "!lib/typescript/src/iab/usp",
34
+ "!lib/typescript/src/iab/gpp"
27
35
  ],
28
36
  "scripts": {
29
37
  "example": "yarn workspace osano-cmp-sdk-example",
30
- "test": "jest ./src/__tests__/index.test.ts",
38
+ "test": "jest src/services/__tests__/consent.test.ts src/__tests__/index.test.tsx",
31
39
  "typecheck": "tsc --noEmit",
32
40
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
33
41
  "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
@@ -65,17 +73,20 @@
65
73
  "@docusaurus/module-type-aliases": "3.5.2",
66
74
  "@docusaurus/preset-classic": "3.5.2",
67
75
  "@mdx-js/react": "^3.0.1",
76
+ "@testing-library/react-native": "^12.8.1",
68
77
  "@types/jest": "^29.5.5",
69
78
  "@types/react": "^18.2.44",
79
+ "@types/react-test-renderer": "^18.3.0",
80
+ "@types/text-encoding": "^0.0.39",
70
81
  "commitlint": "^17.0.2",
71
82
  "del-cli": "^5.1.0",
72
83
  "jest": "^29.7.0",
73
84
  "prettier": "^3.0.3",
74
85
  "prism-react-renderer": "^2.4.0",
75
86
  "react": "18.3.1",
76
- "react-dom": "18.3.1",
77
87
  "react-native": "0.74.4",
78
88
  "react-native-builder-bob": "^0.23.2",
89
+ "react-test-renderer": "^18.3.1",
79
90
  "release-it": "^17.6.0",
80
91
  "turbo": "^1.10.7",
81
92
  "typescript": "^5.2.2"
@@ -131,12 +142,9 @@
131
142
  ]
132
143
  },
133
144
  "dependencies": {
134
- "@testing-library/react-native": "^12.5.0",
135
- "@types/react-test-renderer": "^18.3.0",
136
- "react": "*",
137
- "react-dom": "^17.0.2",
145
+ "js-sha512": "^0.9.0",
138
146
  "react-native-picker-modal-view": "^1.3.2",
139
147
  "react-native-svg": "^15.1.0",
140
- "react-test-renderer": "^18.3.1"
148
+ "text-encoding": "^0.7.0"
141
149
  }
142
150
  }
@@ -609,7 +609,7 @@ export class ConsentManager {
609
609
  return this._config;
610
610
  }
611
611
 
612
- constructor(options?: OsanoOverrides) {
612
+ constructor(options?: OsanoOverrides, extUsrData?: string) {
613
613
  const { locale, flavor, iabEnabled, iabFrameworks, iabVersions, palette } =
614
614
  options || {};
615
615
 
@@ -621,6 +621,9 @@ export class ConsentManager {
621
621
  const setDeviceId = (deviceId: string | null | undefined) => {
622
622
  this._deviceId = deviceId ?? '';
623
623
  };
624
+ if (extUsrData) {
625
+ this._extUsrData = extUsrData;
626
+ }
624
627
  switch (Platform.OS) {
625
628
  case 'android': {
626
629
  try {
package/src/index.tsx CHANGED
@@ -45,10 +45,11 @@ export const Osano: React.FunctionComponent<
45
45
  onLangLoadFailure,
46
46
  onLangLoadSuccess,
47
47
  overrides,
48
+ extUsrData
48
49
  } = props;
49
50
  const { flavor, iabEnabled } = overrides || {};
50
51
  const consentManager = useRef<ConsentManager>(
51
- new ConsentManager(overrides)
52
+ new ConsentManager(overrides, extUsrData)
52
53
  );
53
54
 
54
55
  const [_state, store] = useThunkReducer<OsanoState, OsanoAction>(
@@ -1,17 +1,19 @@
1
- // @ts-nocheck
2
- // file deepcode ignore DuplicateCaseBody: <please specify a reason of ignoring this>
3
- import { env } from '../constants';
4
- import { Platform } from 'react-native';
1
+ import {
2
+ ConsentCategory,
3
+ ConsentCategory as ConsentCategoryType,
4
+ } from '../constants';
5
+ import { clearStorage, getStorage, setStorage } from '../native/OsanoCmp';
5
6
 
6
7
  import API from '../utils/API';
7
8
  import type { Config } from '../types/consent-config';
8
9
  import type { ConsentManager } from '../ConsentManager';
10
+ import { Platform } from 'react-native';
11
+ import { TextEncoder } from 'text-encoding';
12
+ import { env } from '../constants';
9
13
  import { merge } from '../utils';
10
- import {
11
- type ConsentCategory as ConsentCategoryType,
12
- ConsentCategory,
13
- } from '../constants';
14
- import { clearStorage, getStorage, setStorage } from '../native/OsanoCmp';
14
+ import { sha512 } from 'js-sha512';
15
+
16
+ const Buffer = require('buffer').Buffer;
15
17
 
16
18
  const { CONSENT_URI, LOOKUPS_URI, OSANO_ORIGIN } = env;
17
19
 
@@ -30,6 +32,22 @@ export type ConsentPayload = {
30
32
  extUsrData?: string;
31
33
  };
32
34
 
35
+ export type ConsentRecordPayload = {
36
+ osnoCustomerId: string;
37
+ osnoConfigId: string;
38
+ consented?: string;
39
+ consentingDomain: string;
40
+ consentingPlatform: string;
41
+ userConsentId: string;
42
+ extUsrData?: string;
43
+ };
44
+
45
+ export type ConsentLookupResponseType = {
46
+ consented: string[];
47
+ lastConsentTimestamp: string;
48
+ userConsentId: string;
49
+ };
50
+
33
51
  function createConsentPayload(
34
52
  cmp: ConsentManager,
35
53
  consent?: ConsentCategoryType[],
@@ -47,6 +65,29 @@ function createConsentPayload(
47
65
  ) as ConsentPayload;
48
66
  }
49
67
 
68
+ function createConsentRecordPayload(
69
+ cmp: ConsentManager,
70
+ consent?: ConsentCategoryType[],
71
+ ): ConsentRecordPayload {
72
+ const consentedCategories = consent ?? cmp.consent ?? [];
73
+ const hashedExtUsrData = hashExtUsrData(
74
+ cmp.customerId,
75
+ cmp.configId,
76
+ cmp.extUsrData,
77
+ );
78
+ return Object.fromEntries(
79
+ Object.entries({
80
+ osnoCustomerId: cmp.customerId,
81
+ osnoConfigId: cmp.configId,
82
+ consented: consentedCategories.join(','),
83
+ consentingDomain: cmp.consentingDomain,
84
+ consentingPlatform: `${Platform.OS}.react-native`,
85
+ userConsentId: cmp.deviceId,
86
+ extUsrData: hashedExtUsrData,
87
+ }).filter(([, value]) => value !== undefined),
88
+ ) as ConsentRecordPayload;
89
+ }
90
+
50
91
  const STORAGE_KEY = 'osano_consentmanager';
51
92
 
52
93
  const storeConsent = async (
@@ -63,10 +104,17 @@ const storeConsent = async (
63
104
  case 'ios':
64
105
  case 'android':
65
106
  setStorage(
66
- `${STORAGE_KEY}_${cmp.configId}`,
67
- JSON.stringify(cmp.consent),
107
+ `${STORAGE_KEY}_last_recorded_consent_date`,
108
+ JSON.stringify(new Date()),
68
109
  )
69
- .then(resConsent)
110
+ .then(() => {
111
+ setStorage(
112
+ `${STORAGE_KEY}_${cmp.configId}`,
113
+ JSON.stringify(cmp.consent),
114
+ )
115
+ .then(resConsent)
116
+ .catch(reject);
117
+ })
70
118
  .catch(reject);
71
119
  break;
72
120
  }
@@ -86,7 +134,6 @@ export const clearConsent = async (cmp: ConsentManager) => {
86
134
  clearStorage(`${STORAGE_KEY}_${cmp.configId}`).then(resConsent);
87
135
  break;
88
136
  default:
89
- window.localStorage.removeItem(`${STORAGE_KEY}_${cmp.configId}`);
90
137
  break;
91
138
  }
92
139
  });
@@ -118,13 +165,30 @@ const retrieveConsent = async (cmp: ConsentManager) => {
118
165
  });
119
166
  break;
120
167
  default:
121
- try {
122
- resConsent(
123
- window.localStorage.getItem(`${STORAGE_KEY}_${cmp.configId}`),
124
- );
125
- } catch (e) {
126
- clearConsent(cmp).then(resolve);
127
- }
168
+ break;
169
+ }
170
+ });
171
+ };
172
+
173
+ const retrieveLastConsentTimestamp = async () => {
174
+ return new Promise<string>((resolve) => {
175
+ const resValue = (consentJson: string | null | undefined) => {
176
+ if (consentJson) {
177
+ const timestamp = JSON.parse(consentJson);
178
+ resolve(timestamp);
179
+ return timestamp;
180
+ } else {
181
+ resolve('');
182
+ return '';
183
+ }
184
+ };
185
+ switch (Platform.OS) {
186
+ case 'ios':
187
+ case 'android':
188
+ getStorage(`${STORAGE_KEY}_last_recorded_consent_date`).then(resValue);
189
+ break;
190
+ default:
191
+ // nothing
128
192
  break;
129
193
  }
130
194
  });
@@ -134,9 +198,11 @@ export const recordConsent = (
134
198
  cmp: ConsentManager,
135
199
  consent?: ConsentCategoryType[],
136
200
  ) => {
137
- const payload = createConsentPayload(cmp, consent);
138
- return API.post(`${CONSENT_URI}/record`, createConsentPayload(cmp, consent))
139
- .then(() => payload.consented ?? cmp.consent)
201
+ const payload = createConsentRecordPayload(cmp, consent);
202
+ return API.post(`${CONSENT_URI}/record`, payload, {
203
+ referrer: cmp.consentingDomain,
204
+ })
205
+ .then(() => consent ?? cmp.consent)
140
206
  .then((consentCategories) => storeConsent(cmp, consentCategories))
141
207
  .catch((error) => {
142
208
  // Cannot record consent
@@ -144,23 +210,79 @@ export const recordConsent = (
144
210
  });
145
211
  };
146
212
 
147
- export const fetchConsent = (cmp: ConsentManager) => {
148
- const { customerId, configId, extUsrData: userData } = cmp;
149
- return retrieveConsent(cmp).catch(() => {
150
- // Consent not found
151
- return API.get(
152
- `${LOOKUPS_URI}/customer/${customerId}/config/${configId}/user/${userData}/consent`,
153
- )
154
- .then((response) => {
155
- const { consent } = response as { consent: ConsentCategoryType[] };
156
- return consent;
157
- })
158
- .then((consent) => storeConsent(cmp, consent))
159
- .catch(() => {
160
- // Consent not found or network/server error
161
- return retrieveConsent(cmp);
162
- });
163
- });
213
+ export function hashExtUsrData(
214
+ customerId: string,
215
+ configId: string,
216
+ extUsrData: string,
217
+ ): string {
218
+ if (extUsrData === '' || customerId === '' || configId === '') {
219
+ return '';
220
+ } else {
221
+ try {
222
+ const encoder = new TextEncoder();
223
+ const data = encoder.encode(`${customerId}/${configId}/${extUsrData}`);
224
+ const hash = sha512.arrayBuffer(data);
225
+ const base64 = Buffer.from(hash).toString('base64');
226
+ const hashUrlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_');
227
+ return hashUrlSafe;
228
+ } catch (error) {
229
+ // something went wrong
230
+ return '';
231
+ }
232
+ }
233
+ }
234
+
235
+ export const fetchConsent = async (cmp: ConsentManager) => {
236
+ const { customerId, configId, extUsrData } = cmp;
237
+
238
+ try {
239
+ const consent = await retrieveConsent(cmp);
240
+
241
+ const hashedUserData = hashExtUsrData(customerId, configId, extUsrData);
242
+
243
+ // No user data or remote consent disabled
244
+ if (hashedUserData === '' || cmp.config.remoteConsent === false) {
245
+ return consent;
246
+ }
247
+
248
+ const response = await API.get(
249
+ `${LOOKUPS_URI}/customer/${customerId}/config/${configId}/user/${hashedUserData}/consent`,
250
+ );
251
+
252
+ const { consented, lastConsentTimestamp } =
253
+ response as ConsentLookupResponseType;
254
+
255
+ if (!consented || !lastConsentTimestamp) {
256
+ // No remote consent found, use local consent
257
+ await storeConsent(cmp, consent);
258
+ return consent;
259
+ }
260
+
261
+ const internalTimestamp = await retrieveLastConsentTimestamp();
262
+ try {
263
+ if (
264
+ new Date(lastConsentTimestamp) > new Date(internalTimestamp) ||
265
+ internalTimestamp === ''
266
+ ) {
267
+ // Remote consent is newer or we haven't recorded any consent yet. Store remote consent.
268
+ const remoteConsentCategories = consented.map(
269
+ (category) =>
270
+ ConsentCategoryType[category as keyof typeof ConsentCategoryType],
271
+ );
272
+ await storeConsent(cmp, remoteConsentCategories);
273
+ return remoteConsentCategories;
274
+ }
275
+ } catch (error) {
276
+ // Error parsing timestamp
277
+ }
278
+
279
+ return consent;
280
+ } catch (error) {
281
+ console.error('Error fetching consent:', error);
282
+ // Consent not found or network/server error.
283
+ const consent = await retrieveConsent(cmp);
284
+ return consent;
285
+ }
164
286
  };
165
287
 
166
288
  export const fetchConfig = (customerId: string, configId: string) => {
@@ -31,4 +31,5 @@ export interface OsanoProps {
31
31
  onLangLoadSuccess?: () => void;
32
32
  onLangLoadFailure?: () => void;
33
33
  overrides?: OsanoOverrides;
34
+ extUsrData?: string
34
35
  }
package/src/utils/API.ts CHANGED
@@ -3,6 +3,7 @@ const makeFetch = (
3
3
  path: string,
4
4
  params = {},
5
5
  returnHeaders = false,
6
+ headers = {},
6
7
  ): Promise<unknown | { json: object; headers: Headers }> => {
7
8
  const url = new URL(path);
8
9
  if (method.toLowerCase() === 'get') {
@@ -22,6 +23,7 @@ const makeFetch = (
22
23
  mode: 'cors',
23
24
  referrer: 'no-referrer',
24
25
  body: method !== 'GET' ? JSON.stringify(params) : undefined,
26
+ ...headers
25
27
  }).then((response) => {
26
28
  if (response.status === 204 || response.type === 'opaque') {
27
29
  return '';
@@ -44,5 +46,5 @@ export default {
44
46
  typeof queryObj !== 'boolean' ? queryObj : undefined,
45
47
  typeof queryObj === 'boolean',
46
48
  ),
47
- post: (path: string, params?: object) => makeFetch('POST', path, params),
49
+ post: (path: string, params?: object, headers?: object) => makeFetch('POST', path, params, false, headers),
48
50
  };
@@ -1,28 +0,0 @@
1
- export default function makeApi(initOptions: any): {
2
- bind: (store: any, allApis: any) => (command: any, callback: any, parameter: any) => any;
3
- dispatch: (data: any) => void;
4
- };
5
- export const _clearEventSubscribers: (() => void) | undefined;
6
- export const _clearAdaptedApis: (() => void) | undefined;
7
- /**
8
- * An object that contains the client callback and metadata.
9
- */
10
- export type EventSubscriber = {
11
- /**
12
- * - The version of the API that the subscriber is
13
- * listening to.
14
- */
15
- version: number;
16
- /**
17
- * - The callback function that the subscriber
18
- * provided. The signature should match the API version.
19
- */
20
- callback: Function;
21
- };
22
- /**
23
- * The listener ID is a number that is used to identify a subscriber. It is both
24
- * a key in the eventSubscribers map and a property that is given back to the
25
- * subscriber. It must not change for the lifetime of the subscriber.
26
- */
27
- export type ListenerId = number;
28
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/iab/gpp/api.js"],"names":[],"mappings":"AAwGA;;;EAoJC;AA3ND,8DAC8E;AAmC9E,yDACyE;;;;;;;;;aAzD3D,MAAM;;;;;;;;;;;;yBAUP,MAAM"}
@@ -1,24 +0,0 @@
1
- export function isSectionApplicable(sectionId: any, state: any): boolean;
2
- export function makeFormatPingData(initOptions: any): (state: any) => {
3
- gppVersion: any;
4
- cmpStatus: string;
5
- cmpDisplayStatus: string;
6
- supportedAPIs: string[];
7
- cmpId: number;
8
- };
9
- export function makeParseConsentString(initOptions: any): (gppString: any, state: any) => {
10
- sectionId: number;
11
- gppVersion: number;
12
- sectionList: number[];
13
- applicableSections: number[];
14
- gppString: any;
15
- pingData: {
16
- gppVersion: any;
17
- cmpStatus: string;
18
- cmpDisplayStatus: string;
19
- supportedAPIs: string[];
20
- cmpId: number;
21
- };
22
- };
23
- export function formatConsentString(state: any): string;
24
- //# sourceMappingURL=consent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../../../../../src/iab/gpp/consent.js"],"names":[],"mappings":"AA6BO,yEAyBN;AAEM;;;;;;EAQL;AAEK;;;;;;;;;;;;;EA0BN;AAEM,wDAmBN"}
@@ -1,37 +0,0 @@
1
- export namespace SECTIONS {
2
- let tcfeuv2: number;
3
- let tcfcav1: number;
4
- let uspv1: number;
5
- }
6
- /**
7
- * GPP's defined CMP status codes
8
- */
9
- export type CmpStatusCodes = string;
10
- export namespace CmpStatusCodes {
11
- let STUB: string;
12
- let LOADED: string;
13
- let ERROR: string;
14
- }
15
- /**
16
- * GPP's defined CMP display status codes
17
- */
18
- export type CmpDisplayStatusCodes = string;
19
- export namespace CmpDisplayStatusCodes {
20
- let VISIBLE: string;
21
- let HIDDEN: string;
22
- let DISABLED: string;
23
- }
24
- /**
25
- * The GPP API's events
26
- */
27
- export type EventNames = string;
28
- export namespace EventNames {
29
- export let LISTENER_REGISTERED: string;
30
- export let LISTENER_REMOVED: string;
31
- export let CMP_STATUS_CHANGED: string;
32
- export let CMP_DISPLAY_STATUS_CHANGED: string;
33
- let ERROR_1: string;
34
- export { ERROR_1 as ERROR };
35
- export let SECTION_CHANGED: string;
36
- }
37
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/iab/gpp/constants.js"],"names":[],"mappings":";;;;;;;;6BAmBU,MAAM;;;;;;;;;oCAUN,MAAM;;;;;;;;;yBAUN,MAAM"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Adapted from IABTechLab's GPP JavaScript Reference Implementation
3
- *
4
- * https://github.com/IABTechLab/iabgpp-es/blob/42060d7ac2b6d0ee70fc1b5bcd33fc447bf5123c/modules/cmpapi/src/encoder/datatype/encoder/AbstractBase64UrlEncoder.ts
5
- *
6
- * @license
7
- * Copyright 2023 IABTechLab
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
10
- * use this file except in compliance with the License. You may obtain a copy of
11
- * the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
- * License for the specific language governing permissions and limitations under
19
- * the License.
20
- */
21
- export declare const makeEncode: (pad: (str: string) => string) => (bitString: string) => string;
22
- export declare const decode: (str: string) => string;
23
- declare const _default: {
24
- decode: (str: string) => string;
25
- makeEncode: (pad: (str: string) => string) => (bitString: string) => string;
26
- };
27
- export default _default;
28
- //# sourceMappingURL=AbstractBase64UrlEncoder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractBase64UrlEncoder.d.ts","sourceRoot":"","sources":["../../../../../../src/iab/gpp/encoders/AbstractBase64UrlEncoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAuBH,eAAO,MAAM,UAAU,QAChB,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,iBAAiB,MAAM,WAqBnD,CAAC;AAEH,eAAO,MAAM,MAAM,QAAS,MAAM,WAiBjC,CAAC;;kBAjB0B,MAAM;sBAvB3B,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,iBAAiB,MAAM;;AA0CrD,wBAGE"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Adapted from IABTechLab's GPP JavaScript Reference Implementation
3
- *
4
- * https://github.com/IABTechLab/iabgpp-es/blob/42060d7ac2b6d0ee70fc1b5bcd33fc447bf5123c/modules/cmpapi/src/encoder/datatype/encoder/BooleanEncoder.ts
5
- *
6
- * @license
7
- * Copyright 2023 IABTechLab
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
10
- * use this file except in compliance with the License. You may obtain a copy of
11
- * the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
- * License for the specific language governing permissions and limitations under
19
- * the License.
20
- */
21
- /**
22
- * encode a TCString boolean
23
- */
24
- export declare const encode: (bool: boolean) => "1" | "0";
25
- /**
26
- * decode a TCString boolean
27
- */
28
- export declare const decode: (bitString: string) => bitString is "1";
29
- declare const _default: {
30
- decode: (bitString: string) => bitString is "1";
31
- encode: (bool: boolean) => "1" | "0";
32
- };
33
- export default _default;
34
- //# sourceMappingURL=BooleanEncoder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BooleanEncoder.d.ts","sourceRoot":"","sources":["../../../../../../src/iab/gpp/encoders/BooleanEncoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH;;GAEG;AACH,eAAO,MAAM,MAAM,SAAU,OAAO,cAEnC,CAAC;AACF;;GAEG;AACH,eAAO,MAAM,MAAM,cAAe,MAAM,qBAGvC,CAAC;;wBAHgC,MAAM;mBANX,OAAO;;AAWpC,wBAGE"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Adapted from IABTechLab's GPP JavaScript Reference Implementation
3
- *
4
- * https://github.com/IABTechLab/iabgpp-es/blob/42060d7ac2b6d0ee70fc1b5bcd33fc447bf5123c/modules/cmpapi/src/encoder/datatype/encoder/CompressedBase64UrlEncoder.ts
5
- *
6
- * @license
7
- * Copyright 2023 IABTechLab
8
- *
9
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
10
- * use this file except in compliance with the License. You may obtain a copy of
11
- * the License at
12
- *
13
- * http://www.apache.org/licenses/LICENSE-2.0
14
- *
15
- * Unless required by applicable law or agreed to in writing, software
16
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18
- * License for the specific language governing permissions and limitations under
19
- * the License.
20
- */
21
- export declare const encode: (bitString: string) => string;
22
- export { decode } from './AbstractBase64UrlEncoder';
23
- declare const _default: {
24
- decode: (str: string) => string;
25
- encode: (bitString: string) => string;
26
- };
27
- export default _default;
28
- //# sourceMappingURL=CompressedBase64UrlEncoder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CompressedBase64UrlEncoder.d.ts","sourceRoot":"","sources":["../../../../../../src/iab/gpp/encoders/CompressedBase64UrlEncoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAcH,eAAO,MAAM,MAAM,+BAAkB,CAAC;AAEtC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;;;;;AAEpD,wBAGE"}