@osano/osano-cmp-react-native 0.18.4 → 0.18.6

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 (69) hide show
  1. package/lib/commonjs/ConsentManager.js +70 -3
  2. package/lib/commonjs/ConsentManager.js.map +1 -1
  3. package/lib/commonjs/constants.js +2 -3
  4. package/lib/commonjs/constants.js.map +1 -1
  5. package/lib/commonjs/context.js +1 -0
  6. package/lib/commonjs/context.js.map +1 -1
  7. package/lib/commonjs/doNotSell.js +95 -0
  8. package/lib/commonjs/doNotSell.js.map +1 -0
  9. package/lib/commonjs/index.js +13 -1
  10. package/lib/commonjs/index.js.map +1 -1
  11. package/lib/commonjs/reducer.js +41 -41
  12. package/lib/commonjs/reducer.js.map +1 -1
  13. package/lib/commonjs/selectors.js +20 -2
  14. package/lib/commonjs/selectors.js.map +1 -1
  15. package/lib/commonjs/services/consent.js +163 -34
  16. package/lib/commonjs/services/consent.js.map +1 -1
  17. package/lib/commonjs/services/gdprMappings.js +115 -0
  18. package/lib/commonjs/services/gdprMappings.js.map +1 -0
  19. package/lib/commonjs/views/Drawer/Drawer.ConsentCategories.js +1 -1
  20. package/lib/commonjs/views/Drawer/Drawer.ConsentCategories.js.map +1 -1
  21. package/lib/module/ConsentManager.js +70 -3
  22. package/lib/module/ConsentManager.js.map +1 -1
  23. package/lib/module/constants.js +2 -3
  24. package/lib/module/constants.js.map +1 -1
  25. package/lib/module/context.js +1 -0
  26. package/lib/module/context.js.map +1 -1
  27. package/lib/module/doNotSell.js +87 -0
  28. package/lib/module/doNotSell.js.map +1 -0
  29. package/lib/module/index.js +13 -1
  30. package/lib/module/index.js.map +1 -1
  31. package/lib/module/reducer.js +41 -41
  32. package/lib/module/reducer.js.map +1 -1
  33. package/lib/module/selectors.js +16 -1
  34. package/lib/module/selectors.js.map +1 -1
  35. package/lib/module/services/consent.js +161 -33
  36. package/lib/module/services/consent.js.map +1 -1
  37. package/lib/module/services/gdprMappings.js +109 -0
  38. package/lib/module/services/gdprMappings.js.map +1 -0
  39. package/lib/module/views/Drawer/Drawer.ConsentCategories.js +2 -2
  40. package/lib/module/views/Drawer/Drawer.ConsentCategories.js.map +1 -1
  41. package/lib/typescript/src/ConsentManager.d.ts +29 -1
  42. package/lib/typescript/src/ConsentManager.d.ts.map +1 -1
  43. package/lib/typescript/src/constants.d.ts.map +1 -1
  44. package/lib/typescript/src/context.d.ts +1 -0
  45. package/lib/typescript/src/context.d.ts.map +1 -1
  46. package/lib/typescript/src/doNotSell.d.ts +48 -0
  47. package/lib/typescript/src/doNotSell.d.ts.map +1 -0
  48. package/lib/typescript/src/index.d.ts.map +1 -1
  49. package/lib/typescript/src/reducer.d.ts.map +1 -1
  50. package/lib/typescript/src/selectors.d.ts +3 -0
  51. package/lib/typescript/src/selectors.d.ts.map +1 -1
  52. package/lib/typescript/src/services/consent.d.ts +8 -3
  53. package/lib/typescript/src/services/consent.d.ts.map +1 -1
  54. package/lib/typescript/src/services/gdprMappings.d.ts +32 -0
  55. package/lib/typescript/src/services/gdprMappings.d.ts.map +1 -0
  56. package/lib/typescript/src/views/Drawer/Drawer.ConsentCategories.d.ts.map +1 -1
  57. package/package.json +4 -4
  58. package/src/ConsentManager.ts +88 -7
  59. package/src/constants.ts +2 -3
  60. package/src/context.ts +2 -0
  61. package/src/doNotSell.ts +122 -0
  62. package/src/index.tsx +20 -1
  63. package/src/reducer.ts +53 -56
  64. package/src/selectors.ts +25 -2
  65. package/src/services/consent.ts +217 -44
  66. package/src/services/gdprMappings.ts +126 -0
  67. package/src/types/consent-config.d.ts +6 -0
  68. package/src/types/index.d.ts +9 -0
  69. package/src/views/Drawer/Drawer.ConsentCategories.tsx +2 -1
@@ -7,15 +7,19 @@ exports.init = void 0;
7
7
  exports.reducer = reducer;
8
8
  var _actions = require("./actions");
9
9
  var _constants = require("./constants");
10
+ var _doNotSell = require("./doNotSell");
10
11
  var _selectors = require("./selectors");
11
12
  const init = initialArgs => {
12
13
  const {
13
14
  consent,
14
15
  ...reloadProps
15
16
  } = initialArgs;
16
- const consentRecord = consent ? Array.isArray(consent) ? (0, _constants.makeConsentFromCategories)(consent) : {
17
+ const consentRecord = (0, _doNotSell.normalizeDoNotSellConsent)(consent ? Array.isArray(consent) ? (0, _constants.makeConsentFromCategories)(consent) : {
17
18
  ...consent
18
- } : _constants.initialState.consent;
19
+ } : _constants.initialState.consent, {
20
+ enableDoNotSell: reloadProps.config?.enableDoNotSell,
21
+ doNotSellCategories: reloadProps.config?.doNotSellCategories
22
+ });
19
23
  return {
20
24
  ..._constants.initialState,
21
25
  ...reloadProps,
@@ -89,7 +93,10 @@ function reducer(state, action) {
89
93
  case _actions.SAVE_BEGIN:
90
94
  {
91
95
  const consentedCategories = action.payload;
92
- const consent = (0, _constants.makeConsentFromCategories)(consentedCategories);
96
+ const consent = (0, _doNotSell.normalizeDoNotSellConsent)((0, _constants.makeConsentFromCategories)(consentedCategories), {
97
+ enableDoNotSell: state.config?.enableDoNotSell,
98
+ doNotSellCategories: state.config?.doNotSellCategories
99
+ });
93
100
  return {
94
101
  ...state,
95
102
  consent,
@@ -123,58 +130,51 @@ function reducer(state, action) {
123
130
  case _actions.SET_ALL_CONSENT:
124
131
  {
125
132
  const acceptOrDeny = action.payload;
126
- return setAllConsent(acceptOrDeny)(state);
133
+ const next = setAllConsent(acceptOrDeny)(state);
134
+ return {
135
+ ...next,
136
+ consent: (0, _doNotSell.normalizeDoNotSellConsent)(next.consent, {
137
+ enableDoNotSell: state.config?.enableDoNotSell,
138
+ doNotSellCategories: state.config?.doNotSellCategories
139
+ })
140
+ };
127
141
  }
128
142
  case _actions.TOGGLE_CATEGORY:
129
143
  {
144
+ // The action creator accepts either the shorthand string form
145
+ // (toggleCategory(ConsentCategory.X)) or an explicit { category, value }.
130
146
  const {
131
147
  category,
132
148
  value
133
- } = action.payload;
149
+ } = typeof action.payload === 'string' ? {
150
+ category: action.payload,
151
+ value: undefined
152
+ } : action.payload;
134
153
  if (typeof category !== 'string') {
135
154
  return state;
136
155
  }
156
+ const key = category;
137
157
 
138
- // don't turn MARKETING on if OPT_OUT is already on
139
- if (category === _constants.ConsentCategory.MARKETING && state.consent[_constants.ConsentCategory.OPT_OUT] === true) {
140
- return state;
141
- }
158
+ // Resolve the new value: an explicit boolean, otherwise flip the current
159
+ // value (an unset category defaults to on).
160
+ const current = state.consent[key];
161
+ const newValue = typeof value === 'boolean' ? value : current !== undefined ? !current : true;
142
162
 
143
- // turn MARKETING off if turning on OPT_OUT
144
- if (category === _constants.ConsentCategory.OPT_OUT && value === true && state.consent[_constants.ConsentCategory.MARKETING]) {
145
- return {
146
- ...state,
147
- consent: {
148
- ...state.consent,
149
- [_constants.ConsentCategory.MARKETING]: false,
150
- [category]: value
151
- }
152
- };
153
- }
154
- if (typeof value === 'boolean') {
155
- return {
156
- ...state,
157
- consent: {
158
- ...state.consent,
159
- [category]: value
160
- }
161
- };
162
- }
163
- if (state.consent[category] !== undefined) {
164
- return {
165
- ...state,
166
- consent: {
167
- ...state.consent,
168
- [category]: !state.consent[category]
169
- }
170
- };
163
+ // Keep the opt-out and its governed categories mutually exclusive.
164
+ const forcedOff = (0, _doNotSell.doNotSellSideEffects)(key, newValue, {
165
+ enableDoNotSell: state.config?.enableDoNotSell,
166
+ doNotSellCategories: state.config?.doNotSellCategories
167
+ });
168
+ const consent = {
169
+ ...state.consent,
170
+ [key]: newValue
171
+ };
172
+ for (const forced of forcedOff) {
173
+ consent[forced] = false;
171
174
  }
172
175
  return {
173
176
  ...state,
174
- consent: {
175
- ...state.consent,
176
- [category]: true
177
- }
177
+ consent
178
178
  };
179
179
  }
180
180
  case _actions.SHOW_DIALOG:
@@ -1 +1 @@
1
- {"version":3,"names":["_actions","require","_constants","_selectors","init","initialArgs","consent","reloadProps","consentRecord","Array","isArray","makeConsentFromCategories","initialState","savedConsent","exports","setAllConsent","acceptOrDeny","state","isAccepted","category","useGPC","shouldUseGPCOptOut","newConsent","OsanoCategories","reducer","action","type","RELOAD","payload","SET_CONFIG","config","customerId","configId","consentConfig","SET_LOCALE","locale","SAVE_BEGIN","consentedCategories","CLEAR_CONSENT","optOutStatus","getFinalOptOutValue","ConsentCategory","OPT_OUT","ANALYTICS","isAnalyticsAlwaysAllowed","consentTimestamp","REVERT_CONSENT","previousConsent","getPriorConsent","SET_ALL_CONSENT","TOGGLE_CATEGORY","value","MARKETING","undefined","SHOW_DIALOG","dialogOpen","stack","SHOW_DRAWER","SHOW_IAB_DISCLOSURES","scrollToType","id","scrollToId","SHOW_IAB_VENDORS","GO_BACK","length","slice","CLOSE","FETCH_DISCLOSURES_BEGIN","disclosures","loading","fetched","indexOf","FETCH_DISCLOSURES_FAILURE","filter","cat","FETCH_DISCLOSURES_SUCCESS","results","currentlyFetched","Object","values","disclosuresByCategory","reduce","categories","disclosure","classification","categoryName","categoryDisclosures","push","newResults","entries","validCategories","lookup","name","uuid","sort","a","b","localeCompare","index","list"],"sourceRoot":"../../src","sources":["reducer.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_actions","require","_constants","_doNotSell","_selectors","init","initialArgs","consent","reloadProps","consentRecord","normalizeDoNotSellConsent","Array","isArray","makeConsentFromCategories","initialState","enableDoNotSell","config","doNotSellCategories","savedConsent","exports","setAllConsent","acceptOrDeny","state","isAccepted","category","useGPC","shouldUseGPCOptOut","newConsent","OsanoCategories","reducer","action","type","RELOAD","payload","SET_CONFIG","customerId","configId","consentConfig","SET_LOCALE","locale","SAVE_BEGIN","consentedCategories","CLEAR_CONSENT","optOutStatus","getFinalOptOutValue","ConsentCategory","OPT_OUT","ANALYTICS","isAnalyticsAlwaysAllowed","consentTimestamp","REVERT_CONSENT","previousConsent","getPriorConsent","SET_ALL_CONSENT","next","TOGGLE_CATEGORY","value","undefined","key","current","newValue","forcedOff","doNotSellSideEffects","forced","SHOW_DIALOG","dialogOpen","stack","SHOW_DRAWER","SHOW_IAB_DISCLOSURES","scrollToType","id","scrollToId","SHOW_IAB_VENDORS","GO_BACK","length","slice","CLOSE","FETCH_DISCLOSURES_BEGIN","disclosures","loading","fetched","indexOf","FETCH_DISCLOSURES_FAILURE","filter","cat","FETCH_DISCLOSURES_SUCCESS","results","currentlyFetched","Object","values","disclosuresByCategory","reduce","categories","disclosure","classification","categoryName","categoryDisclosures","push","newResults","entries","validCategories","lookup","name","uuid","sort","a","b","localeCompare","index","list"],"sourceRoot":"../../src","sources":["reducer.ts"],"mappings":"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","ignoreList":[]}
@@ -10,14 +10,32 @@ exports.getFinalOptOutValue = getFinalOptOutValue;
10
10
  exports.getPriorConsent = getPriorConsent;
11
11
  exports.getSavedConsent = getSavedConsent;
12
12
  exports.getStack = getStack;
13
- exports.shouldUseGPCOptOut = exports.isLoadingDisclosures = exports.isGPCSupportEnabled = exports.isDrawerOpen = exports.isDialogOpen = exports.isConsentReady = exports.isCategoryDisabled = exports.isCategoryAccepted = exports.isAnalyticsAlwaysAllowed = exports.hasFetchedDisclosuresForCategory = void 0;
13
+ exports.shouldUseGPCOptOut = exports.shouldRenderOptOut = exports.isLoadingDisclosures = exports.isGPCSupportEnabled = exports.isDrawerOpen = exports.isDoNotSellEnabled = exports.isDialogOpen = exports.isConsentReady = exports.isCategoryDisabled = exports.isCategoryAccepted = exports.isBrowsingFromUS = exports.isAnalyticsAlwaysAllowed = exports.hasFetchedDisclosuresForCategory = void 0;
14
14
  var _constants = require("./constants");
15
+ var _doNotSell = require("./doNotSell");
15
16
  var _utils = require("./utils");
16
17
  const isCategoryAccepted = (state, category) => getConsent(state).includes(category);
17
18
  exports.isCategoryAccepted = isCategoryAccepted;
18
19
  const isAnalyticsAlwaysAllowed = state => !!state.config?.type.analyticsAlways;
19
20
  exports.isAnalyticsAlwaysAllowed = isAnalyticsAlwaysAllowed;
20
- const isCategoryDisabled = (state, category) => category === _constants.ConsentCategory.ESSENTIAL || category === _constants.ConsentCategory.OPT_OUT && isGPCSupportEnabled(state) || category === _constants.ConsentCategory.MARKETING && (state.config?.shouldRenderOptOut || isGPCSupportEnabled(state)) && isCategoryAccepted(state, _constants.ConsentCategory.OPT_OUT);
21
+ const isBrowsingFromUS = state => !!state.config?.browsingFromUS;
22
+ exports.isBrowsingFromUS = isBrowsingFromUS;
23
+ const isDoNotSellEnabled = state => !!state.config?.enableDoNotSell;
24
+
25
+ // Whether to render the "Do Not Sell / Share" opt-out toggle. Delegates to the
26
+ // config's visibility rule (tenant flag AND ccpaApplies/US).
27
+ exports.isDoNotSellEnabled = isDoNotSellEnabled;
28
+ const shouldRenderOptOut = state => !!state.config?.isDoNotSellVisible;
29
+
30
+ // The categories the opt-out governs (config's doNotSellCategories, defaulting
31
+ // to Marketing). ESSENTIAL and OPT_OUT are never governed.
32
+ exports.shouldRenderOptOut = shouldRenderOptOut;
33
+ const isGovernedByOptOut = (state, category) => (0, _doNotSell.resolveDoNotSellCategories)(state.config?.doNotSellCategories).includes(category);
34
+ const isCategoryDisabled = (state, category) => category === _constants.ConsentCategory.ESSENTIAL || category === _constants.ConsentCategory.OPT_OUT && isGPCSupportEnabled(state) ||
35
+ // A governed category is locked off while the opt-out is active. Keyed off the
36
+ // configured governed categories, so a non-governed category (e.g. Marketing
37
+ // when the tenant governs Analytics) stays enabled.
38
+ isGovernedByOptOut(state, category) && (shouldRenderOptOut(state) || isGPCSupportEnabled(state)) && isCategoryAccepted(state, _constants.ConsentCategory.OPT_OUT);
21
39
  exports.isCategoryDisabled = isCategoryDisabled;
22
40
  const isDrawerOpen = state => state.stack.length > 0;
23
41
  exports.isDrawerOpen = isDrawerOpen;
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_utils","isCategoryAccepted","state","category","getConsent","includes","exports","isAnalyticsAlwaysAllowed","config","type","analyticsAlways","isCategoryDisabled","ConsentCategory","ESSENTIAL","OPT_OUT","isGPCSupportEnabled","MARKETING","shouldRenderOptOut","isDrawerOpen","stack","length","isDialogOpen","dialogOpen","gpcSupport","navigator","Object","hasOwnProperty","call","window","shouldUseGPCOptOut","acceptOrDeny","hasOwn","consent","entries","filter","_key","value","map","key","getFinalOptOutValue","pendingNewValue","undefined","existingOptOut","get","initialState","getSavedConsent","getPriorConsent","previousConsent","ANALYTICS","getConsentTimestamp","loadingDisclosures","noDisclosures","name","isConsentReady","isLoadingDisclosures","disclosures","loading","hasFetchedDisclosuresForCategory","fetched","indexOf","getCategoryDisclosures","getStack","index"],"sourceRoot":"../../src","sources":["selectors.ts"],"mappings":";;;;;;;;;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAOA,IAAAC,MAAA,GAAAD,OAAA;AAEO,MAAME,kBAAkB,GAAGA,CACjCC,KAAiB,EACjBC,QAA6B,KACzBC,UAAU,CAACF,KAAK,CAAC,CAACG,QAAQ,CAACF,QAAQ,CAAC;AAACG,OAAA,CAAAL,kBAAA,GAAAA,kBAAA;AAEnC,MAAMM,wBAAwB,GAAIL,KAAiB,IACzD,CAAC,CAACA,KAAK,CAACM,MAAM,EAAEC,IAAI,CAACC,eAAe;AAACJ,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAC/B,MAAMI,kBAAkB,GAAGA,CACjCT,KAAiB,EACjBC,QAA6B,KAE7BA,QAAQ,KAAKS,0BAAe,CAACC,SAAS,IACrCV,QAAQ,KAAKS,0BAAe,CAACE,OAAO,IAAIC,mBAAmB,CAACb,KAAK,CAAE,IACnEC,QAAQ,KAAKS,0BAAe,CAACI,SAAS,KACrCd,KAAK,CAACM,MAAM,EAAES,kBAAkB,IAAIF,mBAAmB,CAACb,KAAK,CAAC,CAAC,IAChED,kBAAkB,CAACC,KAAK,EAAEU,0BAAe,CAACE,OAAO,CAAE;AAACR,OAAA,CAAAK,kBAAA,GAAAA,kBAAA;AAE/C,MAAMO,YAAY,GAAIhB,KAAiB,IAAKA,KAAK,CAACiB,KAAK,CAACC,MAAM,GAAG,CAAC;AAACd,OAAA,CAAAY,YAAA,GAAAA,YAAA;AACnE,MAAMG,YAAY,GAAInB,KAAiB,IAC7CA,KAAK,CAACoB,UAAU,IAAI,CAACJ,YAAY,CAAChB,KAAK,CAAC;AAACI,OAAA,CAAAe,YAAA,GAAAA,YAAA;AAEnC,MAAMN,mBAAmB,GAAIb,KAAiB,IACpD,CAAC,CAACA,KAAK,CAACM,MAAM,EAAEe,UAAU,IAC1B,OAAOC,SAAS,KAAK,WAAW;AAChC;AACCC,MAAM,CAACC,cAAc,CAACC,IAAI,CAACH,SAAS,EAAE,sBAAsB,CAAC;AAC7D;AACAC,MAAM,CAACC,cAAc,CAACC,IAAI,CAACC,MAAM,EAAEJ,SAAS,EAAE,sBAAsB,CAAC,CAAC;AAAClB,OAAA,CAAAS,mBAAA,GAAAA,mBAAA;AAClE,MAAMc,kBAAkB,GAAGA,CAAC3B,KAAiB,EAAE4B,YAAqB,KAC1Ef,mBAAmB,CAACb,KAAK,CAAC,GACvBuB,MAAM,CAACM,MAAM,CAACH,MAAM,CAACJ,SAAS,EAAE,sBAAsB,CAAC,GACtD,IAAI,GACJ,KAAK,GACNM,YAAY;AAACxB,OAAA,CAAAuB,kBAAA,GAAAA,kBAAA;AAOV,SAASzB,UAAUA,CAACF,KAAiB,EAAEC,QAA8B,EAAE;EAC7E,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;IACjC,OAAOD,KAAK,CAAC8B,OAAO,CAAC7B,QAAQ,CAAC;EAC/B;EACA,OAAOsB,MAAM,CAACQ,OAAO,CAAC/B,KAAK,CAAC8B,OAAO,CAAC,CAClCE,MAAM,CAAC,CAAC,CAACC,IAAI,EAAEC,KAAK,CAAC,KAAKA,KAAK,CAAC,CAChCC,GAAG,CAAC,CAAC,CAACC,GAAG,CAAC,KAAKA,GAAG,CAAC;AACtB;AACO,SAASC,mBAAmBA,CAClCrC,KAAkB,EAClBsC,eAAyB,EACxB;EACD,IAAIA,eAAe,KAAK,IAAI,EAAE;IAC7B,OAAO,IAAI;EACZ,CAAC,MAAM,IAAIA,eAAe,KAAKC,SAAS,EAAE;IACzC,MAAMC,cAAc,GACnB,IAAAC,UAAG,EAACzC,KAAK,EAAE,CAAC,SAAS,EAAEU,0BAAe,CAACE,OAAO,CAAC,CAAC,IAChD8B,uBAAY,CAACZ,OAAO,CAACpB,0BAAe,CAACE,OAAO,CAAC;IAC9C,OAAO4B,cAAc;EACtB;EAEA,OAAO,KAAK;AACb;AACO,SAASG,eAAeA,CAAC3C,KAAiB,EAAE;EAClD,OAAO,IAAAyC,UAAG,EAACzC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC;AACxC;AACO,SAAS4C,eAAeA,CAC9B5C,KAAiB,EACkC;EACnD,MAAM6C,eAAe,GAAG;IACvB,IAAIF,eAAe,CAAC3C,KAAK,CAAC,IAAI0C,uBAAY,CAACZ,OAAO;EACnD,CAAC;EACD,IAAI,CAACa,eAAe,CAAC3C,KAAK,CAAC,EAAE;IAC5B6C,eAAe,CAACnC,0BAAe,CAACE,OAAO,CAAC,GAAGyB,mBAAmB,CAC7DrC,KAAK,EACL6C,eAAe,CAACnC,0BAAe,CAACE,OAAO,CACxC,CAAC;IACDiC,eAAe,CAACnC,0BAAe,CAACoC,SAAS,CAAC,GAAGzC,wBAAwB,CAACL,KAAK,CAAC,GACzE,IAAI,GACJ,KAAK;EACT;EACA,OAAO6C,eAAe;AACvB;AACO,MAAME,mBAAmB,GAAI/C,KAAiB,IACpD,IAAAyC,UAAG,EAACzC,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;;AAEpC;AAAAI,OAAA,CAAA2C,mBAAA,GAAAA,mBAAA;AACA,MAAMC,kBAAgC,GAAG,EAAE;AAC3C,MAAMC,aAA2B,GAAG,CACnC;EAAE1C,IAAI,EAAE,YAAY;EAAE2C,IAAI,EAAE;AAAkB,CAAC,CAC/C;AAEM,MAAMC,cAAc,GAAInD,KAAiB,IAC/C,IAAAyC,UAAG,EAACzC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;AAAAI,OAAA,CAAA+C,cAAA,GAAAA,cAAA;AACvB,MAAMC,oBAAoB,GAAIpD,KAAiB,IAAK;EAC1D,OAAOA,KAAK,CAACqD,WAAW,CAACC,OAAO;AACjC,CAAC;AAAClD,OAAA,CAAAgD,oBAAA,GAAAA,oBAAA;AACK,MAAMG,gCAAgC,GAAGA,CAC/CvD,KAAiB,EACjBC,QAA6B,KACzB;EACJ,MAAMuD,OAAO,GAAGvD,QAAQ,GAAGD,KAAK,CAACqD,WAAW,CAACG,OAAO,IAAI,EAAE,GAAG,EAAE;EAC/D,IAAIA,OAAO,CAACC,OAAO,CAACxD,QAAQ,CAAC,IAAI,CAAC,EAAE;IACnC,OAAO,IAAI;EACZ;EACA,OAAO,KAAK;AACb,CAAC;AAACG,OAAA,CAAAmD,gCAAA,GAAAA,gCAAA;AACK,MAAMG,sBAAsB,GAAGA,CACrC1D,KAAiB,EACjBC,QAA6B,KACX;EAClB,MAAMoD,WAAyB,GAC9B,IAAAZ,UAAG,EAACzC,KAAK,EAAE,uBAAuBC,QAAQ,EAAE,CAAC,IAAI,EAAE;EACpD,IAAIoD,WAAW,CAACnC,MAAM,EAAE;IACvB,OAAOmC,WAAW;EACnB;EACA,MAAMC,OAAO,GACZF,oBAAoB,CAACpD,KAAK,CAAC,IAC3B,CAACuD,gCAAgC,CAACvD,KAAK,EAAEC,QAAQ,CAAC;EACnD,OAAOqD,OAAO,GAAGN,kBAAkB,GAAGC,aAAa;AACpD,CAAC;AAAC7C,OAAA,CAAAsD,sBAAA,GAAAA,sBAAA;AAIK,SAASC,QAAQA,CAAC3D,KAAiB,EAAE4D,KAAc,EAAE;EAC3D,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC9B,IAAIA,KAAK,GAAG,CAAC,EAAE;MACd,IAAIA,KAAK,IAAI,CAAC5D,KAAK,CAACiB,KAAK,CAACC,MAAM,EAAE;QACjC,OAAOlB,KAAK,CAACiB,KAAK,CAACjB,KAAK,CAACiB,KAAK,CAACC,MAAM,GAAG0C,KAAK,CAAC;MAC/C;MACA,OAAOrB,SAAS;IACjB;IACA,OAAOvC,KAAK,CAACiB,KAAK,CAAC2C,KAAK,CAAC;EAC1B;EACA,OAAO5D,KAAK,CAACiB,KAAK;AACnB","ignoreList":[]}
1
+ {"version":3,"names":["_constants","require","_doNotSell","_utils","isCategoryAccepted","state","category","getConsent","includes","exports","isAnalyticsAlwaysAllowed","config","type","analyticsAlways","isBrowsingFromUS","browsingFromUS","isDoNotSellEnabled","enableDoNotSell","shouldRenderOptOut","isDoNotSellVisible","isGovernedByOptOut","resolveDoNotSellCategories","doNotSellCategories","isCategoryDisabled","ConsentCategory","ESSENTIAL","OPT_OUT","isGPCSupportEnabled","isDrawerOpen","stack","length","isDialogOpen","dialogOpen","gpcSupport","navigator","Object","hasOwnProperty","call","window","shouldUseGPCOptOut","acceptOrDeny","hasOwn","consent","entries","filter","_key","value","map","key","getFinalOptOutValue","pendingNewValue","undefined","existingOptOut","get","initialState","getSavedConsent","getPriorConsent","previousConsent","ANALYTICS","getConsentTimestamp","loadingDisclosures","noDisclosures","name","isConsentReady","isLoadingDisclosures","disclosures","loading","hasFetchedDisclosuresForCategory","fetched","indexOf","getCategoryDisclosures","getStack","index"],"sourceRoot":"../../src","sources":["selectors.ts"],"mappings":"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","ignoreList":[]}
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.hasStaleConfig = exports.getStoredLastModified = exports.getStoredEtag = exports.getStoredConfig = exports.getConfigLastStoredAt = exports.fetchConsent = exports.fetchConfig = exports.clearConsent = void 0;
7
7
  exports.hashExtUsrData = hashExtUsrData;
8
- exports.storeConsent = exports.storeConfig = exports.recordConsent = exports.migrateConsentStorage = void 0;
8
+ exports.storeConsent = exports.storeConfig = exports.recordConsent = exports.migrateConsentStorage = exports.isConsentExpired = void 0;
9
9
  var _jsSha = require("js-sha512");
10
10
  var _reactNative = require("react-native");
11
11
  var _textEncoding = require("text-encoding");
12
12
  var _constants = require("../constants");
13
+ var _doNotSell = require("../doNotSell");
13
14
  var _OsanoCmp = require("../native/OsanoCmp");
15
+ var _gdprMappings = require("./gdprMappings");
14
16
  var _utils = require("../utils");
15
17
  var _API = _interopRequireDefault(require("../utils/API"));
16
18
  var _OsanoLogger = require("../utils/OsanoLogger");
@@ -42,6 +44,13 @@ function createConsentRecordPayload(cmp, consent) {
42
44
  }).filter(([, value]) => value !== undefined));
43
45
  }
44
46
  const STORAGE_KEY = 'osano_consentmanager';
47
+
48
+ // The consent timestamp is scoped by configId so it tracks the consent record
49
+ // for that config (both also carry the userSuffix). Older builds wrote a single
50
+ // un-scoped key shared across configs; retrieveLastConsentTimestamp falls back
51
+ // to it so existing installs keep their recorded date until the next write.
52
+ const lastConsentDateKey = (configId, userSuffix) => `${STORAGE_KEY}_last_recorded_consent_date_${configId}${userSuffix}`;
53
+ const legacyLastConsentDateKey = userSuffix => `${STORAGE_KEY}_last_recorded_consent_date${userSuffix}`;
45
54
  function consentRecordedRemotely(configId, success, hashedExtUsrData) {
46
55
  const userSuffix = hashedExtUsrData ? `_${hashedExtUsrData}` : '';
47
56
  if (success) {
@@ -50,7 +59,7 @@ function consentRecordedRemotely(configId, success, hashedExtUsrData) {
50
59
  (0, _OsanoCmp.setStorage)(`${STORAGE_KEY}_${configId}${userSuffix}_last_failed_remote_record`, JSON.stringify(new Date()));
51
60
  }
52
61
  }
53
- const storeConsent = async (cmp, consent, recordedRemotely) => {
62
+ const storeConsent = async (cmp, consent, recordedRemotely, consentDate) => {
54
63
  cmp.consent = consent ?? cmp.consent;
55
64
  return new Promise((resolve, reject) => {
56
65
  const resConsent = () => {
@@ -59,12 +68,14 @@ const storeConsent = async (cmp, consent, recordedRemotely) => {
59
68
  };
60
69
  const hashedExtUsrData = hashExtUsrData(cmp.customerId, cmp.configId, cmp.extUsrData);
61
70
  const userSuffix = hashedExtUsrData ? `_${hashedExtUsrData}` : '';
71
+ const parsedDate = consentDate ? new Date(consentDate) : new Date();
72
+ const recordedDate = Number.isNaN(parsedDate.getTime()) ? new Date() : parsedDate;
62
73
  switch (_reactNative.Platform.OS) {
63
74
  case 'ios':
64
75
  case 'android':
65
76
  default:
66
77
  {
67
- (0, _OsanoCmp.setStorage)(`${STORAGE_KEY}_last_recorded_consent_date${userSuffix}`, JSON.stringify(new Date())).then(() => {
78
+ (0, _OsanoCmp.setStorage)(lastConsentDateKey(cmp.configId, userSuffix), JSON.stringify(recordedDate)).then(() => {
68
79
  (0, _OsanoCmp.setStorage)(`${STORAGE_KEY}_${cmp.configId}${userSuffix}`, JSON.stringify(cmp.consent)).then(resConsent).catch(reject);
69
80
  }).catch(reject);
70
81
  if (recordedRemotely !== undefined) {
@@ -116,7 +127,10 @@ const migrateConsentStorage = async cmp => {
116
127
  if (oldConsent) {
117
128
  let consent = JSON.parse(oldConsent);
118
129
  if (consent.length > 0) {
119
- consent = (0, _constants.formatConsentArray)((0, _constants.makeConsentFromCategories)(consent));
130
+ consent = (0, _constants.formatConsentArray)((0, _doNotSell.normalizeDoNotSellConsent)((0, _constants.makeConsentFromCategories)(consent), {
131
+ enableDoNotSell: cmp.config.enableDoNotSell,
132
+ doNotSellCategories: cmp.config.doNotSellCategories
133
+ }));
120
134
  // Store with new user-specific key
121
135
  storeConsent(cmp, consent).then(() => {
122
136
  // Clean up old storage
@@ -141,8 +155,24 @@ const migrateConsentStorage = async cmp => {
141
155
 
142
156
  // The consent to fall back to when a visitor has no stored consent yet. Flavor 7
143
157
  // shows analytics enabled on first load; every other flavor stays essential-only.
158
+ // The Do-Not-Sell default is then applied, but only when the opt-out would
159
+ // actually be visible (tenant flag + CCPA/US), so we never seed an OPT_OUT the
160
+ // user cannot see or control.
144
161
  exports.migrateConsentStorage = migrateConsentStorage;
145
- const firstLoadConsent = cmp => cmp.config?.analyticsDefaultsOnAtFirstLoad ? [_constants.ConsentCategory.ESSENTIAL, _constants.ConsentCategory.ANALYTICS] : [_constants.ConsentCategory.ESSENTIAL];
162
+ const firstLoadConsent = cmp => {
163
+ let categories = [_constants.ConsentCategory.ESSENTIAL];
164
+ if (cmp.config?.analyticsDefaultsOnAtFirstLoad) {
165
+ categories.push(_constants.ConsentCategory.ANALYTICS);
166
+ }
167
+ if (cmp.config?.isDoNotSellVisible) {
168
+ categories = (0, _doNotSell.applyDoNotSellDefault)(categories, {
169
+ enableDoNotSell: cmp.config.enableDoNotSell,
170
+ enableDoNotSellDefault: cmp.config.enableDoNotSellDefault,
171
+ doNotSellCategories: cmp.config.doNotSellCategories
172
+ });
173
+ }
174
+ return categories;
175
+ };
146
176
 
147
177
  // Clear any stale storage, then seed the first-load default. Because this only
148
178
  // runs when there is no stored consent, a returning visitor's saved opt-out is
@@ -153,7 +183,24 @@ const clearToFirstLoadDefault = async cmp => {
153
183
  cmp.consent = seed;
154
184
  return seed;
155
185
  };
186
+
187
+ // After an expired/invalid record, settle on a persisted essential-only state.
188
+ // Persisting (rather than only clearing the payload with clearConsent) keeps a
189
+ // subsequent load in this safe state instead of falling back to the first-load
190
+ // default — which, for Flavor 7, would re-enable analytics. This matters
191
+ // because a later load may resolve no expiration window (testing off, offline
192
+ // with no mappings cache, or a country with no interval), in which case empty
193
+ // storage would otherwise re-seed the first-load default.
194
+ const settleEssentialOnly = cmp => storeConsent(cmp, [_constants.ConsentCategory.ESSENTIAL]);
156
195
  const retrieveConsent = async cmp => {
196
+ // If stored consent has aged past its expiration window (production
197
+ // per-country interval, or the debug testing override), settle on a persisted
198
+ // essential-only state so callers see essential-only and a later load stays
199
+ // here (mirrors Android's clearExpiredConsent() + essential-only
200
+ // getConsentedCategories()).
201
+ if (await isConsentExpired(cmp)) {
202
+ return settleEssentialOnly(cmp);
203
+ }
157
204
  return new Promise(resolve => {
158
205
  const resConsent = consentJson => {
159
206
  if (consentJson) {
@@ -195,34 +242,91 @@ const retrieveConsent = async cmp => {
195
242
  });
196
243
  };
197
244
  const retrieveLastConsentTimestamp = async cmp => {
198
- return new Promise(resolve => {
199
- const resValue = consentJson => {
200
- if (consentJson) {
201
- const timestamp = JSON.parse(consentJson);
202
- resolve(timestamp);
203
- return timestamp;
204
- } else {
205
- resolve('');
206
- return '';
207
- }
208
- };
209
- const hashedExtUsrData = hashExtUsrData(cmp.customerId, cmp.configId, cmp.extUsrData);
210
- const userSuffix = hashedExtUsrData ? `_${hashedExtUsrData}` : '';
211
- switch (_reactNative.Platform.OS) {
212
- case 'ios':
213
- case 'android':
214
- default:
215
- (0, _OsanoCmp.getStorage)(`${STORAGE_KEY}_last_recorded_consent_date${userSuffix}`).then(resValue);
216
- break;
245
+ const hashedExtUsrData = hashExtUsrData(cmp.customerId, cmp.configId, cmp.extUsrData);
246
+ const userSuffix = hashedExtUsrData ? `_${hashedExtUsrData}` : '';
247
+ const parse = json => {
248
+ if (!json) {
249
+ return '';
217
250
  }
218
- });
251
+ try {
252
+ return JSON.parse(json);
253
+ } catch {
254
+ return '';
255
+ }
256
+ };
257
+ try {
258
+ const scoped = parse(await (0, _OsanoCmp.getStorage)(lastConsentDateKey(cmp.configId, userSuffix)));
259
+ if (scoped) {
260
+ return scoped;
261
+ }
262
+ // Fall back to the legacy un-scoped key for installs written before the
263
+ // timestamp was scoped by configId.
264
+ return parse(await (0, _OsanoCmp.getStorage)(legacyLastConsentDateKey(userSuffix)));
265
+ } catch {
266
+ // Fail closed: a storage rejection resolves to no timestamp instead of
267
+ // hanging the consent load.
268
+ return '';
269
+ }
219
270
  };
271
+
272
+ /**
273
+ * Resolves the effective expiration window in seconds, mirroring the Android
274
+ * SDK's single path:
275
+ *
276
+ * debug testing override ?? production interval (per-country, from the GDPR
277
+ * mappings served at /mappings.json)
278
+ *
279
+ * Testing mode does not create a separate expiration path — it overrides the
280
+ * production interval. Returns null when neither is configured, in which case
281
+ * consent has no expiration.
282
+ */
283
+ const effectiveExpirationSeconds = async cmp => {
284
+ const testingSeconds = cmp.consentExpirationTestingSeconds;
285
+ // Testing override short-circuits the production lookup entirely, so debug
286
+ // runs never depend on the mappings fetch.
287
+ const seconds = testingSeconds ?? (await (0, _gdprMappings.getConsentExpirationSeconds)(cmp.config?.country));
288
+ return seconds && seconds > 0 ? seconds : null;
289
+ };
290
+
291
+ /**
292
+ * True when `timestamp` is older than the `seconds` window. Fails closed
293
+ * (returns false) for a missing or unparseable timestamp, or when no window is
294
+ * configured, so a storage hiccup or a null window never wrongly expires
295
+ * consent.
296
+ */
297
+ const isTimestampExpired = (timestamp, seconds) => {
298
+ if (!seconds || !timestamp) {
299
+ return false;
300
+ }
301
+ const consentedAtMs = new Date(timestamp).getTime();
302
+ if (Number.isNaN(consentedAtMs)) {
303
+ return false;
304
+ }
305
+ return Date.now() - consentedAtMs > seconds * 1000;
306
+ };
307
+
308
+ /**
309
+ * Returns true when the locally stored consent has aged past its expiration
310
+ * window (see {@link effectiveExpirationSeconds}).
311
+ */
312
+ const isConsentExpired = async cmp => {
313
+ const seconds = await effectiveExpirationSeconds(cmp);
314
+ if (!seconds) {
315
+ return false;
316
+ }
317
+ const timestamp = await retrieveLastConsentTimestamp(cmp);
318
+ return isTimestampExpired(timestamp, seconds);
319
+ };
320
+ exports.isConsentExpired = isConsentExpired;
220
321
  const recordConsent = (cmp, consent) => {
221
322
  const payload = createConsentRecordPayload(cmp, consent);
222
323
  return _API.default.post(`${CONSENT_URI}/record`, payload, {
223
324
  referrer: cmp.consentingDomain
224
325
  }).then(() => consent ?? cmp.consent ?? [_constants.ConsentCategory.ESSENTIAL]).then(consentCategories => {
225
- consentCategories = (0, _constants.formatConsentArray)((0, _constants.makeConsentFromCategories)(consentCategories));
326
+ consentCategories = (0, _constants.formatConsentArray)((0, _doNotSell.normalizeDoNotSellConsent)((0, _constants.makeConsentFromCategories)(consentCategories), {
327
+ enableDoNotSell: cmp.config.enableDoNotSell,
328
+ doNotSellCategories: cmp.config.doNotSellCategories
329
+ }));
226
330
  storeConsent(cmp, consentCategories, true);
227
331
  return consentCategories;
228
332
  }).catch(error => {
@@ -269,25 +373,50 @@ const fetchConsent = async cmp => {
269
373
  lastConsentTimestamp
270
374
  } = response;
271
375
  if (!consented || !lastConsentTimestamp) {
272
- // No remote consent found, use local consent
273
- await storeConsent(cmp, consent);
376
+ // No remote record — keep the local consent as-is. Re-storing it here
377
+ // would reset the recorded-consent timestamp to "now" on every load, so
378
+ // expiration would never fire for remote + extUsrData users, and it
379
+ // could re-persist an essential-only clear. The local consent is already
380
+ // stored with its real timestamp (or is a first-load default that stays
381
+ // re-seeded).
274
382
  return consent;
275
383
  }
276
384
 
385
+ // Evaluate the remote record against the server's own timestamp (when the
386
+ // visitor actually consented), not "now", so an already-expired remote
387
+ // record is never restored and re-dated as fresh.
388
+ const seconds = await effectiveExpirationSeconds(cmp);
389
+ const remoteExpired = isTimestampExpired(lastConsentTimestamp, seconds);
390
+
277
391
  // If extUsrData is not null and not empty, always use remote consent (cross-device consent enabled)
278
392
  if (extUsrData && extUsrData.trim() !== '') {
279
- const remoteConsentCategories = consented.map(category => _constants.ConsentCategory[category]);
280
- await storeConsent(cmp, remoteConsentCategories, true);
393
+ if (remoteExpired) {
394
+ // The authoritative remote record has expired; settle on a persisted
395
+ // essential-only state rather than restoring stale consent, so a
396
+ // subsequent load stays here instead of falling back to the
397
+ // first-load default.
398
+ return settleEssentialOnly(cmp);
399
+ }
400
+ const remoteConsentCategories = (0, _constants.formatConsentArray)((0, _doNotSell.normalizeDoNotSellConsent)((0, _constants.makeConsentFromCategories)(consented.map(category => _constants.ConsentCategory[category])), {
401
+ enableDoNotSell: cmp.config.enableDoNotSell,
402
+ doNotSellCategories: cmp.config.doNotSellCategories
403
+ }));
404
+ // Preserve the server timestamp so restoring can't re-date the record.
405
+ await storeConsent(cmp, remoteConsentCategories, true, lastConsentTimestamp);
281
406
  return remoteConsentCategories;
282
407
  }
283
408
 
284
409
  // Otherwise, validate timestamps (cross-device consent not enabled)
285
410
  const internalTimestamp = await retrieveLastConsentTimestamp(cmp);
286
411
  try {
287
- if (new Date(lastConsentTimestamp) > new Date(internalTimestamp) || internalTimestamp === '') {
288
- // Remote consent is newer or we haven't recorded any consent yet. Store remote consent.
289
- const remoteConsentCategories = (0, _constants.formatConsentArray)((0, _constants.makeConsentFromCategories)(consented));
290
- await storeConsent(cmp, remoteConsentCategories, true);
412
+ if (!remoteExpired && (new Date(lastConsentTimestamp) > new Date(internalTimestamp) || internalTimestamp === '')) {
413
+ // Remote consent is newer, unexpired, or we haven't recorded any
414
+ // consent yet. Store it, preserving the server timestamp.
415
+ const remoteConsentCategories = (0, _constants.formatConsentArray)((0, _doNotSell.normalizeDoNotSellConsent)((0, _constants.makeConsentFromCategories)(consented), {
416
+ enableDoNotSell: cmp.config.enableDoNotSell,
417
+ doNotSellCategories: cmp.config.doNotSellCategories
418
+ }));
419
+ await storeConsent(cmp, remoteConsentCategories, true, lastConsentTimestamp);
291
420
  return remoteConsentCategories;
292
421
  }
293
422
  } catch {