@telia-ace/widget-services 1.0.21-experimental.2 → 1.0.21-experimental.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,16 +1,15 @@
1
- var R = Object.defineProperty;
2
- var V = Object.getOwnPropertySymbols;
3
- var B = Object.prototype.hasOwnProperty, F = Object.prototype.propertyIsEnumerable;
4
- var J = (e, t, n) => t in e ? R(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, f = (e, t) => {
1
+ var M = Object.defineProperty;
2
+ var T = Object.getOwnPropertySymbols;
3
+ var R = Object.prototype.hasOwnProperty, B = Object.prototype.propertyIsEnumerable;
4
+ var k = (e, t, n) => t in e ? M(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n, f = (e, t) => {
5
5
  for (var n in t || (t = {}))
6
- B.call(t, n) && J(e, n, t[n]);
7
- if (V)
8
- for (var n of V(t))
9
- F.call(t, n) && J(e, n, t[n]);
6
+ R.call(t, n) && k(e, n, t[n]);
7
+ if (T)
8
+ for (var n of T(t))
9
+ B.call(t, n) && k(e, n, t[n]);
10
10
  return e;
11
11
  };
12
- var S = (e, t, n) => (J(e, typeof t != "symbol" ? t + "" : t, n), n);
13
- var h = (e, t, n) => new Promise((r, a) => {
12
+ var S = (e, t, n) => new Promise((r, a) => {
14
13
  var o = (i) => {
15
14
  try {
16
15
  c(n.next(i));
@@ -26,14 +25,14 @@ var h = (e, t, n) => new Promise((r, a) => {
26
25
  }, c = (i) => i.done ? r(i.value) : Promise.resolve(i.value).then(o, s);
27
26
  c((n = n.apply(e, t)).next());
28
27
  });
29
- import { Logger as g, lock as p, deepClone as q, hash as W } from "@telia-ace/widget-utilities";
30
- var l = /* @__PURE__ */ ((e) => (e.Cookie = "cookie", e.Local = "local", e.Session = "session", e))(l || {}), $ = /* @__PURE__ */ ((e) => (e.Tenant = "tenant", e.Implementation = "implementation", e.Widget = "widget", e))($ || {}), d = /* @__PURE__ */ ((e) => (e.Necessary = "necessary", e.Functional = "functional", e.Analytical = "analytical", e.Marketing = "marketing", e))(d || {});
31
- const z = (e, t, n, r = {}) => L(e, n).then((a) => (process.env.NODE_ENV !== "production" && a && g.warn(
28
+ import { Logger as g, lock as p, deepClone as F, hash as V } from "@telia-ace/widget-utilities";
29
+ var l = /* @__PURE__ */ ((e) => (e.Cookie = "cookie", e.Local = "local", e.Session = "session", e))(l || {}), A = /* @__PURE__ */ ((e) => (e.Tenant = "tenant", e.Implementation = "implementation", e.Widget = "widget", e))(A || {}), d = /* @__PURE__ */ ((e) => (e.Necessary = "necessary", e.Functional = "functional", e.Analytical = "analytical", e.Marketing = "marketing", e))(d || {});
30
+ const q = (e, t, n, r = {}) => W(e, n).then((a) => (process.env.NODE_ENV !== "production" && a && g.warn(
32
31
  `createStorageWriter: Attempted to create storage writer using unallowed category.
33
32
  Key: ${t}
34
33
  Category: ${JSON.stringify(n)}
35
34
  Options: ${JSON.stringify(r)}`
36
- ), (o) => (k(e), L(e, n).then((s) => {
35
+ ), (o) => (x(e), W(e, n).then((s) => {
37
36
  if (s) {
38
37
  process.env.NODE_ENV !== "production" && g.warn(
39
38
  `storageWriter: Attempted to write to storage using unallowed category.
@@ -45,119 +44,119 @@ const z = (e, t, n, r = {}) => L(e, n).then((a) => (process.env.NODE_ENV !== "pr
45
44
  return;
46
45
  }
47
46
  const {
48
- scope: c = $.Widget,
47
+ scope: c = A.Widget,
49
48
  medium: i = l.Session,
50
49
  duration: m
51
- } = r, u = Q();
52
- return u[c][t] = T(o, n, m), i === l.Cookie ? ee(e, u) : ne(e, i, u);
53
- })))), G = (e, t, n = l.Session) => (k(e), typeof t == "undefined" ? (process.env.NODE_ENV !== "production" && g.warn("readStorage: Undefined key passed when reading storage. ", t, n), Promise.resolve(void 0)) : n === l.Cookie ? Z(e).then((r) => v(r, t)) : te(e, n).then((r) => v(r, t))), y = (e) => !!Object.entries(e).filter(([t, n]) => typeof n != "undefined").length, _ = (e) => Object.entries(e).filter(([t, n]) => typeof n != "undefined").forEach(([t, { value: n }]) => {
50
+ } = r, u = H();
51
+ return u[c][t] = K(o, n, m), i === l.Cookie ? Z(e, u) : te(e, i, u);
52
+ })))), z = (e, t, n = l.Session) => (x(e), typeof t == "undefined" ? (process.env.NODE_ENV !== "production" && g.warn("readStorage: Undefined key passed when reading storage. ", t, n), Promise.resolve(void 0)) : n === l.Cookie ? Y(e).then((r) => N(r, t)) : ee(e, n).then((r) => N(r, t))), y = (e) => !!Object.entries(e).filter(([t, n]) => typeof n != "undefined").length, P = (e) => Object.entries(e).filter(([t, n]) => typeof n != "undefined").forEach(([t, { value: n }]) => {
54
53
  typeof n == "undefined" && delete e[t];
55
- }), U = (e, t) => {
54
+ }), j = (e, t) => {
56
55
  const n = {
57
56
  tenant: f(f({}, e.tenant), t.tenant),
58
57
  implementation: f(f({}, e.implementation), t.implementation),
59
58
  widget: f(f({}, e.widget), t.widget)
60
59
  };
61
- return _(n.tenant), _(n.implementation), _(n.widget), n;
62
- }, H = (e) => Object.entries(e).reduce((n, r) => {
60
+ return P(n.tenant), P(n.implementation), P(n.widget), n;
61
+ }, G = (e) => Object.entries(e).reduce((n, r) => {
63
62
  const [a, o] = r;
64
63
  return Object.entries(o).forEach((s) => {
65
64
  const [c, { expiration: i }] = s;
66
65
  i && n.push(i);
67
66
  }), n;
68
- }, []).slice().sort((n, r) => new Date(r).valueOf() - new Date(n).valueOf()).shift() || C(), E = (e) => {
67
+ }, []).slice().sort((n, r) => new Date(r).valueOf() - new Date(n).valueOf()).shift() || E(), $ = (e) => {
69
68
  const {
70
69
  name: t,
71
70
  implementation: { name: n, tenant: r }
72
71
  } = e.get("$widget");
73
72
  return [
74
73
  `humany_${r}`,
75
- `humany_${W(r + n)}`,
76
- `humany_${W(r + n + t)}`
74
+ `humany_${V(r + n)}`,
75
+ `humany_${V(r + n + t)}`
77
76
  ];
78
- }, b = (e) => {
77
+ }, J = (e) => {
79
78
  const t = new RegExp(`(?:^|;)\\s?${e}=(.*?)(?:;|$)`, "i"), n = document.cookie.match(t);
80
79
  return n && n[1] && JSON.parse(n[1]) || void 0;
81
- }, D = (e, t, n) => {
80
+ }, _ = (e, t, n) => {
82
81
  const r = `${e}=${JSON.stringify(t).trim()}`, a = `expires=${new Date(n).toUTCString()}`, o = "path=/", s = "SameSite=None;Secure";
83
82
  return document.cookie = `${r}; ${a}; ${o}; ${s}`;
84
- }, x = (e) => {
85
- const [t, n, r] = E(e), a = b(t) || {}, o = b(n) || {}, s = b(r) || {};
83
+ }, I = (e) => {
84
+ const [t, n, r] = $(e), a = J(t) || {}, o = J(n) || {}, s = J(r) || {};
86
85
  return {
87
86
  tenant: a,
88
87
  implementation: o,
89
88
  widget: s
90
89
  };
91
- }, M = (e, t) => {
92
- const n = x(e), r = U(n, t), [a, o, s] = E(e), { tenant: c, implementation: i, widget: m } = r, u = H(t), P = C({ days: -1 });
93
- D(a, c, y(c) ? u : P), D(
90
+ }, U = (e, t) => {
91
+ const n = I(e), r = j(n, t), [a, o, s] = $(e), { tenant: c, implementation: i, widget: m } = r, u = G(t), C = E({ days: -1 });
92
+ _(a, c, y(c) ? u : C), _(
94
93
  o,
95
94
  i,
96
- y(i) ? u : P
97
- ), D(s, m, y(m) ? u : P);
98
- }, N = (e, t) => {
99
- const [n, r, a] = E(e), o = t.getItem(n) || "{}", s = t.getItem(r) || "{}", c = t.getItem(a) || "{}";
95
+ y(i) ? u : C
96
+ ), _(s, m, y(m) ? u : C);
97
+ }, w = (e, t) => {
98
+ const [n, r, a] = $(e), o = t.getItem(n) || "{}", s = t.getItem(r) || "{}", c = t.getItem(a) || "{}";
100
99
  return {
101
100
  tenant: JSON.parse(o),
102
101
  implementation: JSON.parse(s),
103
102
  widget: JSON.parse(c)
104
103
  };
105
- }, K = (e, t, n) => {
106
- const r = N(e, t), a = U(r, n), [o, s, c] = E(e), { tenant: i, implementation: m, widget: u } = a;
104
+ }, D = (e, t, n) => {
105
+ const r = w(e, t), a = j(r, n), [o, s, c] = $(e), { tenant: i, implementation: m, widget: u } = a;
107
106
  y(i) ? t.setItem(o, JSON.stringify(i)) : t.removeItem(o), y(m) ? t.setItem(s, JSON.stringify(m)) : t.removeItem(s), y(u) ? t.setItem(c, JSON.stringify(u)) : t.removeItem(c);
108
- }, Q = () => ({ tenant: {}, implementation: {}, widget: {} }), X = (e) => e ? !!e && new Date() > new Date(e) : !1, v = (e, t) => {
107
+ }, H = () => ({ tenant: {}, implementation: {}, widget: {} }), Q = (e) => e ? !!e && new Date() > new Date(e) : !1, N = (e, t) => {
109
108
  const n = e.widget[t] || e.implementation[t] || e.tenant[t];
110
109
  return n == null ? void 0 : n.value;
111
- }, T = (e, t, n) => n ? {
110
+ }, K = (e, t, n) => n ? {
112
111
  value: e,
113
112
  category: t,
114
- expiration: typeof n == "object" ? C(n) : n
113
+ expiration: typeof n == "object" ? E(n) : n
115
114
  } : {
116
115
  value: e,
117
116
  category: t
118
- }, w = (e, t) => {
119
- const n = q(e);
117
+ }, h = (e, t) => {
118
+ const n = F(e);
120
119
  return Object.entries(n).forEach(([r, a]) => {
121
120
  Object.entries(a).forEach(([o, s]) => {
122
121
  const { expiration: c, category: i } = s;
123
- (X(c) || Y(t, i)) && (a[o] = T(void 0, i, c));
122
+ (Q(c) || X(t, i)) && (a[o] = K(void 0, i, c));
124
123
  });
125
124
  }), n;
126
- }, L = (e, t) => G(e, "storagePolicy", l.Cookie).then(
125
+ }, W = (e, t) => z(e, "storagePolicy", l.Cookie).then(
127
126
  (n = [d.Necessary]) => !!t && n.indexOf(t) === -1
128
- ), Y = (e = [d.Necessary], t) => !!t && e.indexOf(t) === -1, k = (e) => {
129
- const t = x(e), n = N(e, window.localStorage), r = N(e, sessionStorage), a = v(t, "storagePolicy"), [o, s, c] = [
127
+ ), X = (e = [d.Necessary], t) => !!t && e.indexOf(t) === -1, x = (e) => {
128
+ const t = I(e), n = w(e, window.localStorage), r = w(e, sessionStorage), a = N(t, "storagePolicy"), [o, s, c] = [
130
129
  t,
131
130
  n,
132
131
  r
133
- ].map((i) => w(i, a));
134
- M(e, o), K(e, window.localStorage, s), K(e, window.sessionStorage, c);
135
- }, C = (e = { days: 30 }) => {
132
+ ].map((i) => h(i, a));
133
+ U(e, o), D(e, window.localStorage, s), D(e, window.sessionStorage, c);
134
+ }, E = (e = { days: 30 }) => {
136
135
  const { days: t = 0, hours: n = 0, minutes: r = 0, seconds: a = 0 } = e, o = new Date();
137
136
  return o.setTime(o.getTime() + n * 60 * 60 * 1e3), o.setTime(o.getTime() + t * 24 * 60 * 60 * 1e3), o.setTime(o.getTime() + r * 60 * 1e3), o.setTime(o.getTime() + a * 1e3), o.toISOString();
138
- }, Z = (e) => p(document)(() => x(e)), ee = (e, t) => p(document)(() => M(e, t)), te = (e, t) => {
137
+ }, Y = (e) => p(document)(() => I(e)), Z = (e, t) => p(document)(() => U(e, t)), ee = (e, t) => {
139
138
  const n = t === l.Local ? window.localStorage : window.sessionStorage;
140
- return p(n)(() => N(e, n));
141
- }, ne = (e, t, n) => {
139
+ return p(n)(() => w(e, n));
140
+ }, te = (e, t, n) => {
142
141
  const r = t === l.Local ? window.localStorage : window.sessionStorage;
143
- return p(r)(() => K(e, r, n));
142
+ return p(r)(() => D(e, r, n));
144
143
  };
145
- class I {
144
+ class b {
146
145
  constructor() {
147
- S(this, "memory", {
146
+ this.memory = {
148
147
  tenant: {},
149
148
  implementation: {},
150
149
  widget: {}
151
- });
150
+ };
152
151
  }
153
152
  setItem(a, o) {
154
- return h(this, arguments, function* (t, n, r = {}) {
153
+ return S(this, arguments, function* (t, n, r = {}) {
155
154
  return p(this)(() => {
156
- const s = w(this.memory, [d.Necessary]), { scope: c = $.Tenant, expiration: i } = r;
157
- s[c][t] = T(
155
+ const s = h(this.memory, [d.Necessary]), { scope: c = A.Tenant, expiration: i } = r;
156
+ s[c][t] = K(
158
157
  n,
159
158
  d.Necessary,
160
- (i == null ? void 0 : i.toISOString()) || C()
159
+ (i == null ? void 0 : i.toISOString()) || E()
161
160
  ), this.memory = s, process.env.NODE_ENV !== "production" && g.warn(
162
161
  `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.
163
162
  Key: ${t}
@@ -169,23 +168,23 @@ class I {
169
168
  });
170
169
  }
171
170
  getItem(t) {
172
- return h(this, null, function* () {
171
+ return S(this, null, function* () {
173
172
  return p(this)(() => {
174
- const n = w(this.memory, [d.Necessary]);
173
+ const n = h(this.memory, [d.Necessary]);
175
174
  process.env.NODE_ENV !== "production" && g.warn(
176
175
  `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.
177
176
  Key: ${t}
178
177
  Memory: ${JSON.stringify(n)}`
179
178
  );
180
- const r = v(n, t);
179
+ const r = N(n, t);
181
180
  return this.memory = n, r;
182
181
  });
183
182
  });
184
183
  }
185
184
  removeItem(t) {
186
- return h(this, null, function* () {
185
+ return S(this, null, function* () {
187
186
  return p(this)(() => {
188
- const n = w(this.memory, [d.Necessary]);
187
+ const n = h(this.memory, [d.Necessary]);
189
188
  delete n.tenant[t], delete n.implementation[t], delete n.widget[t], this.memory = n, process.env.NODE_ENV !== "production" && g.warn(
190
189
  `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.
191
190
  Key: ${t}
@@ -195,45 +194,42 @@ class I {
195
194
  });
196
195
  }
197
196
  clear() {
198
- return h(this, null, function* () {
197
+ return S(this, null, function* () {
199
198
  return Promise.resolve();
200
199
  });
201
200
  }
202
201
  }
203
- class ae {
202
+ class ie {
204
203
  constructor() {
205
- S(this, "cookies");
206
- S(this, "session");
207
- S(this, "local");
208
- this.cookies = new I(), this.session = new I(), this.local = new I();
204
+ this.cookies = new b(), this.session = new b(), this.local = new b();
209
205
  }
210
206
  }
211
207
  globalThis && globalThis.__spreadArrays;
212
- var O;
208
+ var v;
213
209
  (function(e) {
214
210
  e.Implementation = "implementation", e.Widget = "widget";
215
- })(O || (O = {}));
216
- var A;
211
+ })(v || (v = {}));
212
+ var O;
217
213
  (function(e) {
218
214
  e.Pre = "pre", e.Post = "post";
219
- })(A || (A = {}));
220
- function j(e, t) {
215
+ })(O || (O = {}));
216
+ function L(e, t) {
221
217
  return typeof e == "undefined" ? t : e;
222
218
  }
223
- var re = function() {
219
+ var ne = function() {
224
220
  function e(t) {
225
221
  t === void 0 && (t = {}), this.part = t;
226
222
  }
227
223
  return e.prototype.createCommand = function(t, n, r) {
228
224
  var a = this, o;
229
225
  typeof n == "function" ? o = {
230
- scope: O.Widget,
231
- stage: A.Post,
226
+ scope: v.Widget,
227
+ stage: O.Post,
232
228
  defaultArgs: void 0,
233
229
  handlerResolver: n
234
230
  } : o = {
235
- scope: j(n.scope, O.Widget),
236
- stage: j(n.stage, A.Post),
231
+ scope: L(n.scope, v.Widget),
232
+ stage: L(n.stage, O.Post),
237
233
  defaultArgs: n.defaultArgs,
238
234
  handlerResolver: r
239
235
  };
@@ -247,11 +243,11 @@ var re = function() {
247
243
  }, e.prototype.get = function() {
248
244
  return this.part;
249
245
  }, e;
250
- }(), oe = function(e) {
251
- var t = new re({});
246
+ }(), re = function(e) {
247
+ var t = new ne({});
252
248
  return e(t), t.get();
253
249
  };
254
- const ce = oe((e) => {
250
+ const ae = re((e) => {
255
251
  e.createCommand("storage", (t) => (n = {}) => {
256
252
  const { consent: r } = n;
257
253
  if (typeof r != "undefined") {
@@ -280,17 +276,17 @@ const ce = oe((e) => {
280
276
  return a.indexOf(d.Necessary) === -1 && (process.env.NODE_ENV !== "production" && g.warn(
281
277
  `storagePolicyConfigurationApi: passed consent does not include category: '${d.Necessary}'. Consent has to atleast include the '${d.Necessary}' category.
282
278
  Passed consent: ${JSON.stringify(r)}`
283
- ), a.unshift(d.Necessary)), z(
279
+ ), a.unshift(d.Necessary)), q(
284
280
  t.container,
285
281
  "storagePolicy",
286
282
  d.Necessary,
287
283
  {
288
284
  medium: l.Cookie,
289
- scope: $.Tenant,
285
+ scope: A.Tenant,
290
286
  duration: { days: 365 }
291
287
  }
292
288
  ).then((o) => o(a)).then(() => {
293
- k(t.container), t.events.dispatch("storage:policy-changed", a);
289
+ x(t.container), t.events.dispatch("storage:policy-changed", a);
294
290
  });
295
291
  }
296
292
  });
@@ -298,11 +294,11 @@ const ce = oe((e) => {
298
294
  export {
299
295
  d as StorageCategory,
300
296
  l as StorageMedium,
301
- ae as StorageProvider,
302
- $ as StorageScope,
303
- I as StorageService,
304
- z as createStorageWriter,
305
- G as readStorage,
306
- ce as storagePolicyConfigurationApi
297
+ ie as StorageProvider,
298
+ A as StorageScope,
299
+ b as StorageService,
300
+ q as createStorageWriter,
301
+ z as readStorage,
302
+ ae as storagePolicyConfigurationApi
307
303
  };
308
304
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/storage/types.ts","../src/storage/storage.ts","../src/storage/utils.ts","../src/storage/legacy-storage-provider.ts","../../../node_modules/.pnpm/@webprovisions+platform@1.1.2/node_modules/@webprovisions/platform/lib-esm/configuration/configurator.js","../../../node_modules/.pnpm/@webprovisions+platform@1.1.2/node_modules/@webprovisions/platform/lib-esm/configuration/api-builder.js","../src/storage/storage-policy-configuration-api.ts"],"sourcesContent":["export enum StorageMedium {\n Cookie = 'cookie',\n Local = 'local',\n Session = 'session',\n}\n\nexport enum StorageScope {\n Tenant = 'tenant',\n Implementation = 'implementation',\n Widget = 'widget',\n}\n\nexport type Store = {\n tenant: StorageContainer;\n implementation: StorageContainer;\n widget: StorageContainer;\n};\n\nexport type StorageContainer = { [key: string]: StoredValue };\n\nexport type StoredValue = {\n value: any;\n expiration?: string;\n category: StorageCategory;\n};\n\nexport enum StorageCategory {\n Necessary = 'necessary',\n Functional = 'functional',\n Analytical = 'analytical',\n Marketing = 'marketing',\n}\n\nexport type StorageWriter = (value?: any) => Promise<void>;\n\nexport type StorageConfigurationOptions = {\n consent?: StorageConsent;\n};\n\nexport type StorageConsent = number | number[] | StorageCategory | StorageCategory[];\n\nexport type Duration = {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n};\n\nexport type StorageWriterOptions = {\n scope?: StorageScope;\n duration?: Duration;\n medium?: StorageMedium;\n};\n","import { Logger } from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\nimport {\n StorageCategory,\n StorageMedium,\n StorageScope,\n StorageWriter,\n StorageWriterOptions,\n} from './types';\nimport {\n createEmptyStore,\n createValue,\n getApplicationStoreAsync,\n getCookieStoreAsync,\n getValue,\n isNotAllowedAsync,\n processStorage,\n setApplicationStoreAsync,\n setCookieStoreAsync,\n} from './utils';\n\n/**\n * Creates a writer to be used to write to cookie, local or session storage.\n * @param container Widget Container.\n * @param key Key to use when writing.\n * @param category StorageCategory to use when writing.\n * @param options StorageWriterOptions to use when writing default {scope: StorageScope.Widget, medium = StorageMedium.Session, duration = infinite }.\n * @returns a function to be used to write a value to the storage using given settings.\n */\nexport const createStorageWriter = (\n container: Container,\n key: string,\n category: StorageCategory,\n options: StorageWriterOptions = {}\n): Promise<StorageWriter> => {\n return isNotAllowedAsync(container, category).then((notAllowed) => {\n if (process.env.NODE_ENV !== 'production') {\n if (notAllowed) {\n Logger.warn(\n `createStorageWriter: Attempted to create storage writer using unallowed category.\n Key: ${key}\n Category: ${JSON.stringify(category)}\n Options: ${JSON.stringify(options)}`\n );\n }\n }\n\n return (value: any) => {\n processStorage(container);\n\n return isNotAllowedAsync(container, category).then((notAllowed) => {\n if (notAllowed) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storageWriter: Attempted to write to storage using unallowed category.\n Key: ${key}\n Category: ${JSON.stringify(category)}\n Value: ${JSON.stringify(value)}\n Options: ${JSON.stringify(options)}`\n );\n }\n return;\n }\n\n const {\n scope = StorageScope.Widget,\n medium = StorageMedium.Session,\n duration,\n } = options;\n\n const store = createEmptyStore();\n store[scope][key] = createValue(value, category, duration);\n\n if (medium === StorageMedium.Cookie) return setCookieStoreAsync(container, store);\n else return setApplicationStoreAsync(container, medium, store);\n });\n };\n });\n};\n\n/**\n * Read the widget cookie, local or session storage.\n * @param container Widget Container.\n * @param key Key to read.\n * @param medium Storage medium to read from (default: session).\n * @returns the value stored with passed key.\n */\nexport const readStorage = <Type>(\n container: Container,\n key: string,\n medium: StorageMedium = StorageMedium.Session\n): Promise<Type | undefined> => {\n processStorage(container);\n\n if (typeof key === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn('readStorage: Undefined key passed when reading storage. ', key, medium);\n }\n return Promise.resolve(undefined);\n }\n\n if (medium === StorageMedium.Cookie)\n return getCookieStoreAsync(container).then((store) => getValue(store, key));\n else return getApplicationStoreAsync(container, medium).then((store) => getValue(store, key));\n};\n","import { deepClone, hash, lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { readStorage } from './storage';\nimport {\n Duration,\n StorageCategory,\n StorageContainer,\n StorageMedium,\n Store,\n StoredValue\n} from './types';\n\nconst hasEntries = (object: object) =>\n !!Object.entries(object).filter(([_, value]) => typeof value !== 'undefined').length;\n\nconst cleanUndefined = (object: StorageContainer) =>\n Object.entries(object)\n .filter(([_, value]) => typeof value !== 'undefined')\n .forEach(([key, { value }]) => {\n if (typeof value === 'undefined') {\n delete object[key];\n }\n });\n\nconst mergeAndClean = (target: Store, source: Store): Store => {\n const merged: Store = {\n tenant: { ...target.tenant, ...source.tenant },\n implementation: { ...target.implementation, ...source.implementation },\n widget: { ...target.widget, ...source.widget }\n };\n\n cleanUndefined(merged.tenant);\n cleanUndefined(merged.implementation);\n cleanUndefined(merged.widget);\n\n return merged;\n};\n\nconst getLongestExpirationDate = (store: Store): string => {\n const expirationDates = Object.entries(store).reduce<string[]>((acc, storeEntry) => {\n const [_, container] = storeEntry;\n Object.entries(container).forEach((containerEntry) => {\n const [_, { expiration }] = containerEntry;\n if (expiration) acc.push(expiration);\n });\n return acc;\n }, []);\n\n return (\n expirationDates\n .slice()\n .sort((a, b) => new Date(b).valueOf() - new Date(a).valueOf())\n .shift() || createExpirationDate()\n );\n};\n\nconst createStorageKeys = (\n container: Container\n): [tenant: string, implementation: string, widget: string] => {\n const {\n name: widgetName,\n implementation: { name: implementationName, tenant: tenantName },\n } = <Widget>container.get('$widget');\n\n return [\n `humany_${tenantName}`,\n `humany_${hash(tenantName + implementationName)}`,\n `humany_${hash(tenantName + implementationName + widgetName)}`,\n ];\n};\n\nconst getCookie = <Type>(cookieName: string): Type | undefined => {\n const regExp = new RegExp(`(?:^|;)\\\\s?${cookieName}=(.*?)(?:;|$)`, 'i');\n const cookie = document.cookie.match(regExp);\n const value = cookie && cookie[1] && JSON.parse(cookie[1]);\n\n return value || undefined;\n};\n\nconst setCookie = (cookieName: string, value: any, expires: string) => {\n const cookie = `${cookieName}=${JSON.stringify(value).trim()}`;\n const expiration = `expires=${new Date(expires).toUTCString()}`;\n const path = 'path=/';\n const options = 'SameSite=None;Secure'\n return (document.cookie = `${cookie}; ${expiration}; ${path}; ${options}`);\n};\n\nconst getCookieStore = (container: Container): Store => {\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const tenant = getCookie<StorageContainer>(tenantKey) || {};\n const implementation = getCookie<StorageContainer>(implementationKey) || {};\n const widget = getCookie<StorageContainer>(widgetKey) || {};\n\n return {\n tenant,\n implementation,\n widget,\n };\n};\n\nconst setCookieStore = (container: Container, store: Store): void => {\n const current = getCookieStore(container);\n const merged = mergeAndClean(current, store);\n\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const { tenant, implementation, widget } = merged;\n const expirationDate = getLongestExpirationDate(store);\n const deleteDate = createExpirationDate({ days: -1 });\n\n setCookie(tenantKey, tenant, hasEntries(tenant) ? expirationDate : deleteDate);\n setCookie(\n implementationKey,\n implementation,\n hasEntries(implementation) ? expirationDate : deleteDate\n );\n setCookie(widgetKey, widget, hasEntries(widget) ? expirationDate : deleteDate);\n};\n\nconst getApplicationStore = (container: Container, storage: Storage): Store => {\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const tenant = storage.getItem(tenantKey) || '{}';\n const implementation = storage.getItem(implementationKey) || '{}';\n const widget = storage.getItem(widgetKey) || '{}';\n\n return {\n tenant: JSON.parse(tenant),\n implementation: JSON.parse(implementation),\n widget: JSON.parse(widget),\n };\n};\n\nconst setApplicationStore = (\n container: Container,\n applicationStorage: Storage,\n store: Store\n): void => {\n const current = getApplicationStore(container, applicationStorage);\n const merged = mergeAndClean(current, store);\n\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const { tenant, implementation, widget } = merged;\n\n hasEntries(tenant)\n ? applicationStorage.setItem(tenantKey, JSON.stringify(tenant))\n : applicationStorage.removeItem(tenantKey);\n hasEntries(implementation)\n ? applicationStorage.setItem(implementationKey, JSON.stringify(implementation))\n : applicationStorage.removeItem(implementationKey);\n hasEntries(widget)\n ? applicationStorage.setItem(widgetKey, JSON.stringify(widget))\n : applicationStorage.removeItem(widgetKey);\n};\n\nexport const createEmptyStore = (): Store => ({ tenant: {}, implementation: {}, widget: {} });\n\nexport const isExpired = (isoDateString?: string) => {\n if (!isoDateString) return false;\n return !!isoDateString && new Date() > new Date(isoDateString);\n};\n\nexport const getValue = <Type>(store: Store, key: string): Type | undefined => {\n const storedValue = store.widget[key] || store.implementation[key] || store.tenant[key];\n return storedValue?.value;\n};\n\nexport const createValue = (\n value: any,\n category: StorageCategory,\n duration?: Duration | string\n): StoredValue => {\n if (duration) {\n return {\n value,\n category,\n expiration: typeof duration === 'object' ? createExpirationDate(duration) : duration,\n };\n }\n return {\n value,\n category,\n };\n};\n\nexport const processStore = (store: Store, policy?: StorageCategory[]): Store => {\n const clone = deepClone(store);\n\n Object.entries(clone).forEach(([_, storageContainer]) => {\n Object.entries(storageContainer).forEach(([key, storedValue]) => {\n const { expiration, category } = storedValue;\n\n if (isExpired(expiration) || isNotAllowed(policy, category))\n storageContainer[key] = createValue(undefined, category, expiration);\n });\n });\n\n return clone;\n};\n\n/**\n * @param category Storage Category.\n * @param policy Current Storage Policy.\n * @returns true if not allowed, false if allowed.\n */\nexport const isNotAllowedAsync = (\n container: Container,\n category?: StorageCategory\n): Promise<boolean> => {\n return readStorage<StorageCategory[]>(container, 'storagePolicy', StorageMedium.Cookie).then(\n (policy = [StorageCategory.Necessary]) => !!category && policy.indexOf(category) === -1\n );\n};\n\n/**\n * @param category Storage Category.\n * @param policy Current Storage Policy.\n * @returns true if not allowed, false if allowed.\n */\nexport const isNotAllowed = (\n policy: StorageCategory[] = [StorageCategory.Necessary],\n category?: StorageCategory\n): boolean => {\n return !!category && policy.indexOf(category) === -1;\n};\n\n/**\n * Processes storage and removes items if they are expired or if\n * the storage policy is defined and the category of the stored\n * value is not allowed.\n * @param container Widget Container\n */\nexport const processStorage = (container: Container): void => {\n const cookieStore = getCookieStore(container);\n const localStore = getApplicationStore(container, window.localStorage);\n const sessionStore = getApplicationStore(container, sessionStorage);\n const policy = getValue<StorageCategory[]>(cookieStore, 'storagePolicy');\n\n const [processedCookieStore, processedLocalStore, processedSessionStore] = [\n cookieStore,\n localStore,\n sessionStore,\n ].map((store) => processStore(store, policy));\n\n setCookieStore(container, processedCookieStore);\n setApplicationStore(container, window.localStorage, processedLocalStore);\n setApplicationStore(container, window.sessionStorage, processedSessionStore);\n};\n\n/**\n * Creates an expiration date string with the passed options.\n * @param options Duration options.\n * @returns ISO formatted date string.\n */\nexport const createExpirationDate = (options: Duration = { days: 30 }): string => {\n const { days = 0, hours = 0, minutes = 0, seconds = 0 } = options;\n const date = new Date();\n date.setTime(date.getTime() + hours * 60 * 60 * 1000);\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n date.setTime(date.getTime() + minutes * 60 * 1000);\n date.setTime(date.getTime() + seconds * 1000);\n return date.toISOString();\n};\n\nexport const getCookieStoreAsync = (container: Container): Promise<Store> => {\n return lock(document)(() => getCookieStore(container));\n};\n\nexport const setCookieStoreAsync = (container: Container, store: Store): Promise<any> => {\n return lock(document)(() => setCookieStore(container, store));\n};\n\nexport const getApplicationStoreAsync = (\n container: Container,\n type: StorageMedium.Local | StorageMedium.Session\n): Promise<Store> => {\n const storage = type === StorageMedium.Local ? window.localStorage : window.sessionStorage;\n return lock(storage)(() => getApplicationStore(container, storage));\n};\n\nexport const setApplicationStoreAsync = (\n container: Container,\n type: StorageMedium.Local | StorageMedium.Session,\n store: Store\n): Promise<void> => {\n const storage = type === StorageMedium.Local ? window.localStorage : window.sessionStorage;\n return lock(storage)(() => setApplicationStore(container, storage, store));\n};\n","import { lock, Logger } from '@telia-ace/widget-utilities';\nimport { StorageCategory } from '.';\nimport { StorageScope, Store } from './types';\nimport { createExpirationDate, createValue, getValue, processStore } from './utils';\n\ntype LegacyOptions = {\n scope?: StorageScope;\n expiration?: Date;\n};\n\ninterface LegacyMedium {\n setItem(key: string, value: any, options?: LegacyOptions): Promise<void>;\n getItem(key: string): Promise<any>;\n removeItem(key: string): Promise<void>;\n clear(): Promise<void>;\n}\n\nexport class LegacyStorage implements LegacyMedium {\n private memory: Store = {\n tenant: {},\n implementation: {},\n widget: {},\n };\n async setItem(key: string, value: any, options: LegacyOptions = {}): Promise<void> {\n return lock(this)(() => {\n const processedStore = processStore(this.memory, [StorageCategory.Necessary]);\n const { scope = StorageScope.Tenant, expiration } = options;\n\n processedStore[scope][key] = createValue(\n value,\n StorageCategory.Necessary,\n expiration?.toISOString() || createExpirationDate()\n );\n this.memory = processedStore;\n\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.\n Key: ${key}\n Value: ${JSON.stringify(value)}\n Options: ${JSON.stringify(options)}\n Memory: ${JSON.stringify(processedStore)}`\n );\n }\n });\n }\n async getItem(key: string): Promise<any> {\n return lock(this)(() => {\n const processedStore = processStore(this.memory, [StorageCategory.Necessary]);\n\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.\n Key: ${key}\n Memory: ${JSON.stringify(processedStore)}`\n );\n }\n\n const value = getValue(processedStore, key);\n this.memory = processedStore;\n\n return value;\n });\n }\n async removeItem(key: string): Promise<void> {\n return lock(this)(() => {\n const processedStore = processStore(this.memory, [StorageCategory.Necessary]);\n\n delete processedStore.tenant[key];\n delete processedStore.implementation[key];\n delete processedStore.widget[key];\n this.memory = processedStore;\n\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.\n Key: ${key}\n Memory: ${JSON.stringify(processedStore)}`\n );\n }\n });\n }\n async clear(): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport default class LegacyStorageProvider {\n cookies: LegacyStorage;\n session: LegacyStorage;\n local: LegacyStorage;\n constructor() {\n this.cookies = new LegacyStorage();\n this.session = new LegacyStorage();\n this.local = new LegacyStorage();\n }\n}\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { selectWidgets } from '../selectors';\r\nimport ns from '../namespace';\r\nvar internal = ns();\r\nexport var matchInstructions = function (instructions, stage, widget) {\r\n return instructions.filter(function (instruction) {\r\n return instruction.stage === stage\r\n && selectWidgets(instruction.selector)(widget);\r\n });\r\n};\r\nexport function clearContextRoot(contextRoot) {\r\n var environment = contextRoot.container.get('$environment');\r\n var configurationCache = internal(environment).configurationCache;\r\n if (configurationCache) {\r\n configurationCache = configurationCache\r\n .filter(function (item) { return item[0] !== contextRoot; });\r\n internal(environment).configurationCache = configurationCache;\r\n }\r\n}\r\nexport var ConfigurationScope;\r\n(function (ConfigurationScope) {\r\n ConfigurationScope[\"Implementation\"] = \"implementation\";\r\n ConfigurationScope[\"Widget\"] = \"widget\";\r\n})(ConfigurationScope || (ConfigurationScope = {}));\r\nexport var ConfigurationStage;\r\n(function (ConfigurationStage) {\r\n /**\r\n * Configurations to be applied BEFORE a widget is configured.\r\n */\r\n ConfigurationStage[\"Pre\"] = \"pre\";\r\n /**\r\n * Configurations to be applied AFTER a widget is configured\r\n */\r\n ConfigurationStage[\"Post\"] = \"post\";\r\n})(ConfigurationStage || (ConfigurationStage = {}));\r\nvar constructApi = function (target, apiDefinition, applyCommand) {\r\n Object.keys(apiDefinition).forEach(function (key) {\r\n var commandDescriptorOrApiPart = apiDefinition[key];\r\n if (typeof commandDescriptorOrApiPart === 'function') {\r\n var commandDescriptor_1 = commandDescriptorOrApiPart();\r\n if (typeof commandDescriptor_1.defaultArgs !== 'undefined') {\r\n applyCommand.apply(void 0, __spreadArrays([commandDescriptor_1], commandDescriptor_1.defaultArgs));\r\n }\r\n target[key] = (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var trackedCommandDescriptor = Object.assign({}, commandDescriptor_1, { handlerResolver: commandDescriptor_1.handlerResolver.bind({}) });\r\n applyCommand.apply(void 0, __spreadArrays([trackedCommandDescriptor], args));\r\n return target;\r\n });\r\n }\r\n else {\r\n target[key] = constructApi({}, commandDescriptorOrApiPart, applyCommand);\r\n }\r\n });\r\n return target;\r\n};\r\nvar resolveContextRoot = function (widget, scope) {\r\n switch (scope) {\r\n case ConfigurationScope.Implementation:\r\n return widget.implementation;\r\n case ConfigurationScope.Widget:\r\n return widget;\r\n }\r\n};\r\nvar createConfiguratorObject = function (target, selector, implementation, apiDefinitions) {\r\n apiDefinitions.forEach(function (definition) {\r\n constructApi(target, definition, function (commandDescriptor) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var instruction = {\r\n selector: selector,\r\n stage: commandDescriptor.stage,\r\n handler: function (widget) {\r\n var contextRoot = resolveContextRoot(widget, commandDescriptor.scope);\r\n var context = { container: contextRoot.container, events: contextRoot.events };\r\n var resolveHandler = commandDescriptor.handlerResolver;\r\n var commandHandler = resolveHandler(context);\r\n // The configuration cache prevents the same combination of 'contextRoot' and\r\n // 'commandHandler' to be executed more than once. Let's say a commandHandler\r\n // is scoped to 'Implementation', then it will match all containing widgets, but\r\n // the unique commandHandler instance should be executed only once (else the\r\n // commandHandler will configure the implementation context once for every widget).\r\n var configurationCache = internal(implementation.environment).configurationCache;\r\n if (!configurationCache) {\r\n configurationCache = internal(implementation.environment).configurationCache = [];\r\n }\r\n if (!configurationCache.find(function (item) {\r\n return item.indexOf(contextRoot) > -1 && item.indexOf(resolveHandler) > -1;\r\n })) {\r\n configurationCache.push([contextRoot, resolveHandler]);\r\n return Promise.resolve(commandHandler.apply(void 0, args));\r\n }\r\n },\r\n };\r\n implementation.instructions.push(instruction);\r\n });\r\n });\r\n return target;\r\n};\r\nexport function createConfigurator(implementation, configurationAPIs) {\r\n function configurator(selector) {\r\n return createConfiguratorObject({}, selector, implementation, configurationAPIs);\r\n }\r\n return createConfiguratorObject(configurator, '*', implementation, configurationAPIs);\r\n}\r\n//# sourceMappingURL=configurator.js.map","import { ConfigurationScope, ConfigurationStage } from './configurator';\r\nfunction fallbackIfUndefined(value, fallback) {\r\n if (typeof value === 'undefined') {\r\n return fallback;\r\n }\r\n return value;\r\n}\r\nvar ConfigurationApiBuilder = /** @class */ (function () {\r\n function ConfigurationApiBuilder(part) {\r\n if (part === void 0) { part = {}; }\r\n this.part = part;\r\n }\r\n ConfigurationApiBuilder.prototype.createCommand = function (name, factoryOrOptions, factory) {\r\n var _this = this;\r\n var descriptor;\r\n if (typeof factoryOrOptions === 'function') {\r\n descriptor = {\r\n scope: ConfigurationScope.Widget,\r\n stage: ConfigurationStage.Post,\r\n defaultArgs: undefined,\r\n handlerResolver: factoryOrOptions,\r\n };\r\n }\r\n else {\r\n descriptor = {\r\n scope: fallbackIfUndefined(factoryOrOptions.scope, ConfigurationScope.Widget),\r\n stage: fallbackIfUndefined(factoryOrOptions.stage, ConfigurationStage.Post),\r\n defaultArgs: factoryOrOptions.defaultArgs,\r\n handlerResolver: factory,\r\n };\r\n }\r\n var part = this.part;\r\n var sections = name.split('.');\r\n sections.forEach(function (ns, i) {\r\n var last = i === sections.length - 1;\r\n if (last) {\r\n if (!part[ns]) {\r\n part[ns] = function () { return descriptor; };\r\n }\r\n }\r\n else {\r\n part = (_this.part[ns] = (_this.part[ns] || {}));\r\n }\r\n });\r\n return this;\r\n };\r\n ConfigurationApiBuilder.prototype.get = function () {\r\n return this.part;\r\n };\r\n return ConfigurationApiBuilder;\r\n}());\r\nexport { ConfigurationApiBuilder };\r\nexport var createConfigurationApi = function (factory) {\r\n var builder = new ConfigurationApiBuilder({});\r\n factory(builder);\r\n return builder.get();\r\n};\r\n//# sourceMappingURL=api-builder.js.map","import { Logger } from '@telia-ace/widget-utilities';\nimport { createConfigurationApi } from '@webprovisions/platform';\nimport { createStorageWriter } from './storage';\nimport { StorageCategory, StorageConfigurationOptions, StorageMedium, StorageScope } from './types';\nimport { processStorage } from './utils';\n\nexport default createConfigurationApi((builder) => {\n builder.createCommand('storage', (context) => (options: StorageConfigurationOptions = {}) => {\n const { consent } = options;\n if (typeof consent !== 'undefined') {\n if (\n typeof consent !== 'number' &&\n typeof consent !== 'string' &&\n !Array.isArray(consent)\n ) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(consent)}`\n );\n }\n return;\n }\n\n if (\n Array.isArray(consent) &&\n !(consent as string[]).every(\n (c: any) => typeof c === 'number' || typeof c === 'string'\n )\n ) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(consent)}`\n );\n }\n return;\n }\n\n const policy: StorageCategory[] = [\n StorageCategory.Necessary,\n StorageCategory.Functional,\n StorageCategory.Analytical,\n StorageCategory.Marketing,\n ].filter((category, index, array) => {\n if (typeof consent === 'number') {\n // Passed consent is a category level (number)\n // Include the passed category level and all categories below it\n return consent > index;\n } else if (typeof consent === 'string') {\n // Passed consent is a category (string)\n // Include the passed category and all categories below its level\n return array.indexOf(consent) + 1 > index;\n } else if (Array.isArray(consent)) {\n // Passed consent is an array with category levels (number), categories (string) or both\n // Include all categories in passed array\n return (\n consent.findIndex((c: number | StorageCategory) => {\n return c === index + 1 || c === category;\n }) > -1\n );\n } else {\n return true;\n }\n });\n\n if (policy.indexOf(StorageCategory.Necessary) === -1) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storagePolicyConfigurationApi: passed consent does not include category: '${\n StorageCategory.Necessary\n }'. Consent has to atleast include the '${\n StorageCategory.Necessary\n }' category.\n Passed consent: ${JSON.stringify(consent)}`\n );\n }\n policy.unshift(StorageCategory.Necessary);\n }\n\n return createStorageWriter(\n context.container,\n 'storagePolicy',\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Cookie,\n scope: StorageScope.Tenant,\n duration: { days: 365 },\n }\n )\n .then((write) => write(policy))\n .then(() => {\n processStorage(context.container);\n\n context.events.dispatch('storage:policy-changed', policy);\n });\n }\n });\n});\n"],"names":["StorageMedium","StorageScope","StorageCategory","createStorageWriter","container","key","category","options","isNotAllowedAsync","notAllowed","Logger","value","processStorage","scope","medium","duration","store","createEmptyStore","createValue","setCookieStoreAsync","setApplicationStoreAsync","readStorage","getCookieStoreAsync","getValue","getApplicationStoreAsync","hasEntries","object","_","cleanUndefined","mergeAndClean","target","source","merged","__spreadValues","getLongestExpirationDate","acc","storeEntry","containerEntry","expiration","a","b","createExpirationDate","createStorageKeys","widgetName","implementationName","tenantName","hash","getCookie","cookieName","regExp","cookie","setCookie","expires","path","getCookieStore","tenantKey","implementationKey","widgetKey","tenant","implementation","widget","setCookieStore","current","expirationDate","deleteDate","getApplicationStore","storage","setApplicationStore","applicationStorage","isExpired","isoDateString","storedValue","processStore","policy","clone","deepClone","storageContainer","isNotAllowed","cookieStore","localStore","sessionStore","processedCookieStore","processedLocalStore","processedSessionStore","days","hours","minutes","seconds","date","lock","type","LegacyStorage","__publicField","_0","_1","__async","processedStore","LegacyStorageProvider","this","ConfigurationScope","ConfigurationStage","fallbackIfUndefined","fallback","ConfigurationApiBuilder","part","name","factoryOrOptions","factory","_this","descriptor","sections","ns","i","last","createConfigurationApi","builder","storagePolicyConfigurationApi","context","consent","c","index","array","write"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/storage/types.ts","../src/storage/storage.ts","../src/storage/utils.ts","../src/storage/legacy-storage-provider.ts","../../../node_modules/.pnpm/@webprovisions+platform@1.1.2/node_modules/@webprovisions/platform/lib-esm/configuration/configurator.js","../../../node_modules/.pnpm/@webprovisions+platform@1.1.2/node_modules/@webprovisions/platform/lib-esm/configuration/api-builder.js","../src/storage/storage-policy-configuration-api.ts"],"sourcesContent":["export enum StorageMedium {\n Cookie = 'cookie',\n Local = 'local',\n Session = 'session',\n}\n\nexport enum StorageScope {\n Tenant = 'tenant',\n Implementation = 'implementation',\n Widget = 'widget',\n}\n\nexport type Store = {\n tenant: StorageContainer;\n implementation: StorageContainer;\n widget: StorageContainer;\n};\n\nexport type StorageContainer = { [key: string]: StoredValue };\n\nexport type StoredValue = {\n value: any;\n expiration?: string;\n category: StorageCategory;\n};\n\nexport enum StorageCategory {\n Necessary = 'necessary',\n Functional = 'functional',\n Analytical = 'analytical',\n Marketing = 'marketing',\n}\n\nexport type StorageWriter = (value?: any) => Promise<void>;\n\nexport type StorageConfigurationOptions = {\n consent?: StorageConsent;\n};\n\nexport type StorageConsent = number | number[] | StorageCategory | StorageCategory[];\n\nexport type Duration = {\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n};\n\nexport type StorageWriterOptions = {\n scope?: StorageScope;\n duration?: Duration;\n medium?: StorageMedium;\n};\n","import { Logger } from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\nimport {\n StorageCategory,\n StorageMedium,\n StorageScope,\n StorageWriter,\n StorageWriterOptions,\n} from './types';\nimport {\n createEmptyStore,\n createValue,\n getApplicationStoreAsync,\n getCookieStoreAsync,\n getValue,\n isNotAllowedAsync,\n processStorage,\n setApplicationStoreAsync,\n setCookieStoreAsync,\n} from './utils';\n\n/**\n * Creates a writer to be used to write to cookie, local or session storage.\n * @param container Widget Container.\n * @param key Key to use when writing.\n * @param category StorageCategory to use when writing.\n * @param options StorageWriterOptions to use when writing default {scope: StorageScope.Widget, medium = StorageMedium.Session, duration = infinite }.\n * @returns a function to be used to write a value to the storage using given settings.\n */\nexport const createStorageWriter = (\n container: Container,\n key: string,\n category: StorageCategory,\n options: StorageWriterOptions = {}\n): Promise<StorageWriter> => {\n return isNotAllowedAsync(container, category).then((notAllowed) => {\n if (process.env.NODE_ENV !== 'production') {\n if (notAllowed) {\n Logger.warn(\n `createStorageWriter: Attempted to create storage writer using unallowed category.\n Key: ${key}\n Category: ${JSON.stringify(category)}\n Options: ${JSON.stringify(options)}`\n );\n }\n }\n\n return (value: any) => {\n processStorage(container);\n\n return isNotAllowedAsync(container, category).then((notAllowed) => {\n if (notAllowed) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storageWriter: Attempted to write to storage using unallowed category.\n Key: ${key}\n Category: ${JSON.stringify(category)}\n Value: ${JSON.stringify(value)}\n Options: ${JSON.stringify(options)}`\n );\n }\n return;\n }\n\n const {\n scope = StorageScope.Widget,\n medium = StorageMedium.Session,\n duration,\n } = options;\n\n const store = createEmptyStore();\n store[scope][key] = createValue(value, category, duration);\n\n if (medium === StorageMedium.Cookie) return setCookieStoreAsync(container, store);\n else return setApplicationStoreAsync(container, medium, store);\n });\n };\n });\n};\n\n/**\n * Read the widget cookie, local or session storage.\n * @param container Widget Container.\n * @param key Key to read.\n * @param medium Storage medium to read from (default: session).\n * @returns the value stored with passed key.\n */\nexport const readStorage = <Type>(\n container: Container,\n key: string,\n medium: StorageMedium = StorageMedium.Session\n): Promise<Type | undefined> => {\n processStorage(container);\n\n if (typeof key === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn('readStorage: Undefined key passed when reading storage. ', key, medium);\n }\n return Promise.resolve(undefined);\n }\n\n if (medium === StorageMedium.Cookie)\n return getCookieStoreAsync(container).then((store) => getValue(store, key));\n else return getApplicationStoreAsync(container, medium).then((store) => getValue(store, key));\n};\n","import { deepClone, hash, lock } from '@telia-ace/widget-utilities';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { readStorage } from './storage';\nimport {\n Duration,\n StorageCategory,\n StorageContainer,\n StorageMedium,\n Store,\n StoredValue\n} from './types';\n\nconst hasEntries = (object: object) =>\n !!Object.entries(object).filter(([_, value]) => typeof value !== 'undefined').length;\n\nconst cleanUndefined = (object: StorageContainer) =>\n Object.entries(object)\n .filter(([_, value]) => typeof value !== 'undefined')\n .forEach(([key, { value }]) => {\n if (typeof value === 'undefined') {\n delete object[key];\n }\n });\n\nconst mergeAndClean = (target: Store, source: Store): Store => {\n const merged: Store = {\n tenant: { ...target.tenant, ...source.tenant },\n implementation: { ...target.implementation, ...source.implementation },\n widget: { ...target.widget, ...source.widget }\n };\n\n cleanUndefined(merged.tenant);\n cleanUndefined(merged.implementation);\n cleanUndefined(merged.widget);\n\n return merged;\n};\n\nconst getLongestExpirationDate = (store: Store): string => {\n const expirationDates = Object.entries(store).reduce<string[]>((acc, storeEntry) => {\n const [_, container] = storeEntry;\n Object.entries(container).forEach((containerEntry) => {\n const [_, { expiration }] = containerEntry;\n if (expiration) acc.push(expiration);\n });\n return acc;\n }, []);\n\n return (\n expirationDates\n .slice()\n .sort((a, b) => new Date(b).valueOf() - new Date(a).valueOf())\n .shift() || createExpirationDate()\n );\n};\n\nconst createStorageKeys = (\n container: Container\n): [tenant: string, implementation: string, widget: string] => {\n const {\n name: widgetName,\n implementation: { name: implementationName, tenant: tenantName },\n } = <Widget>container.get('$widget');\n\n return [\n `humany_${tenantName}`,\n `humany_${hash(tenantName + implementationName)}`,\n `humany_${hash(tenantName + implementationName + widgetName)}`,\n ];\n};\n\nconst getCookie = <Type>(cookieName: string): Type | undefined => {\n const regExp = new RegExp(`(?:^|;)\\\\s?${cookieName}=(.*?)(?:;|$)`, 'i');\n const cookie = document.cookie.match(regExp);\n const value = cookie && cookie[1] && JSON.parse(cookie[1]);\n\n return value || undefined;\n};\n\nconst setCookie = (cookieName: string, value: any, expires: string) => {\n const cookie = `${cookieName}=${JSON.stringify(value).trim()}`;\n const expiration = `expires=${new Date(expires).toUTCString()}`;\n const path = 'path=/';\n const options = 'SameSite=None;Secure'\n return (document.cookie = `${cookie}; ${expiration}; ${path}; ${options}`);\n};\n\nconst getCookieStore = (container: Container): Store => {\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const tenant = getCookie<StorageContainer>(tenantKey) || {};\n const implementation = getCookie<StorageContainer>(implementationKey) || {};\n const widget = getCookie<StorageContainer>(widgetKey) || {};\n\n return {\n tenant,\n implementation,\n widget,\n };\n};\n\nconst setCookieStore = (container: Container, store: Store): void => {\n const current = getCookieStore(container);\n const merged = mergeAndClean(current, store);\n\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const { tenant, implementation, widget } = merged;\n const expirationDate = getLongestExpirationDate(store);\n const deleteDate = createExpirationDate({ days: -1 });\n\n setCookie(tenantKey, tenant, hasEntries(tenant) ? expirationDate : deleteDate);\n setCookie(\n implementationKey,\n implementation,\n hasEntries(implementation) ? expirationDate : deleteDate\n );\n setCookie(widgetKey, widget, hasEntries(widget) ? expirationDate : deleteDate);\n};\n\nconst getApplicationStore = (container: Container, storage: Storage): Store => {\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const tenant = storage.getItem(tenantKey) || '{}';\n const implementation = storage.getItem(implementationKey) || '{}';\n const widget = storage.getItem(widgetKey) || '{}';\n\n return {\n tenant: JSON.parse(tenant),\n implementation: JSON.parse(implementation),\n widget: JSON.parse(widget),\n };\n};\n\nconst setApplicationStore = (\n container: Container,\n applicationStorage: Storage,\n store: Store\n): void => {\n const current = getApplicationStore(container, applicationStorage);\n const merged = mergeAndClean(current, store);\n\n const [tenantKey, implementationKey, widgetKey] = createStorageKeys(container);\n const { tenant, implementation, widget } = merged;\n\n hasEntries(tenant)\n ? applicationStorage.setItem(tenantKey, JSON.stringify(tenant))\n : applicationStorage.removeItem(tenantKey);\n hasEntries(implementation)\n ? applicationStorage.setItem(implementationKey, JSON.stringify(implementation))\n : applicationStorage.removeItem(implementationKey);\n hasEntries(widget)\n ? applicationStorage.setItem(widgetKey, JSON.stringify(widget))\n : applicationStorage.removeItem(widgetKey);\n};\n\nexport const createEmptyStore = (): Store => ({ tenant: {}, implementation: {}, widget: {} });\n\nexport const isExpired = (isoDateString?: string) => {\n if (!isoDateString) return false;\n return !!isoDateString && new Date() > new Date(isoDateString);\n};\n\nexport const getValue = <Type>(store: Store, key: string): Type | undefined => {\n const storedValue = store.widget[key] || store.implementation[key] || store.tenant[key];\n return storedValue?.value;\n};\n\nexport const createValue = (\n value: any,\n category: StorageCategory,\n duration?: Duration | string\n): StoredValue => {\n if (duration) {\n return {\n value,\n category,\n expiration: typeof duration === 'object' ? createExpirationDate(duration) : duration,\n };\n }\n return {\n value,\n category,\n };\n};\n\nexport const processStore = (store: Store, policy?: StorageCategory[]): Store => {\n const clone = deepClone(store);\n\n Object.entries(clone).forEach(([_, storageContainer]) => {\n Object.entries(storageContainer).forEach(([key, storedValue]) => {\n const { expiration, category } = storedValue;\n\n if (isExpired(expiration) || isNotAllowed(policy, category))\n storageContainer[key] = createValue(undefined, category, expiration);\n });\n });\n\n return clone;\n};\n\n/**\n * @param category Storage Category.\n * @param policy Current Storage Policy.\n * @returns true if not allowed, false if allowed.\n */\nexport const isNotAllowedAsync = (\n container: Container,\n category?: StorageCategory\n): Promise<boolean> => {\n return readStorage<StorageCategory[]>(container, 'storagePolicy', StorageMedium.Cookie).then(\n (policy = [StorageCategory.Necessary]) => !!category && policy.indexOf(category) === -1\n );\n};\n\n/**\n * @param category Storage Category.\n * @param policy Current Storage Policy.\n * @returns true if not allowed, false if allowed.\n */\nexport const isNotAllowed = (\n policy: StorageCategory[] = [StorageCategory.Necessary],\n category?: StorageCategory\n): boolean => {\n return !!category && policy.indexOf(category) === -1;\n};\n\n/**\n * Processes storage and removes items if they are expired or if\n * the storage policy is defined and the category of the stored\n * value is not allowed.\n * @param container Widget Container\n */\nexport const processStorage = (container: Container): void => {\n const cookieStore = getCookieStore(container);\n const localStore = getApplicationStore(container, window.localStorage);\n const sessionStore = getApplicationStore(container, sessionStorage);\n const policy = getValue<StorageCategory[]>(cookieStore, 'storagePolicy');\n\n const [processedCookieStore, processedLocalStore, processedSessionStore] = [\n cookieStore,\n localStore,\n sessionStore,\n ].map((store) => processStore(store, policy));\n\n setCookieStore(container, processedCookieStore);\n setApplicationStore(container, window.localStorage, processedLocalStore);\n setApplicationStore(container, window.sessionStorage, processedSessionStore);\n};\n\n/**\n * Creates an expiration date string with the passed options.\n * @param options Duration options.\n * @returns ISO formatted date string.\n */\nexport const createExpirationDate = (options: Duration = { days: 30 }): string => {\n const { days = 0, hours = 0, minutes = 0, seconds = 0 } = options;\n const date = new Date();\n date.setTime(date.getTime() + hours * 60 * 60 * 1000);\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n date.setTime(date.getTime() + minutes * 60 * 1000);\n date.setTime(date.getTime() + seconds * 1000);\n return date.toISOString();\n};\n\nexport const getCookieStoreAsync = (container: Container): Promise<Store> => {\n return lock(document)(() => getCookieStore(container));\n};\n\nexport const setCookieStoreAsync = (container: Container, store: Store): Promise<any> => {\n return lock(document)(() => setCookieStore(container, store));\n};\n\nexport const getApplicationStoreAsync = (\n container: Container,\n type: StorageMedium.Local | StorageMedium.Session\n): Promise<Store> => {\n const storage = type === StorageMedium.Local ? window.localStorage : window.sessionStorage;\n return lock(storage)(() => getApplicationStore(container, storage));\n};\n\nexport const setApplicationStoreAsync = (\n container: Container,\n type: StorageMedium.Local | StorageMedium.Session,\n store: Store\n): Promise<void> => {\n const storage = type === StorageMedium.Local ? window.localStorage : window.sessionStorage;\n return lock(storage)(() => setApplicationStore(container, storage, store));\n};\n","import { lock, Logger } from '@telia-ace/widget-utilities';\nimport { StorageCategory } from '.';\nimport { StorageScope, Store } from './types';\nimport { createExpirationDate, createValue, getValue, processStore } from './utils';\n\ntype LegacyOptions = {\n scope?: StorageScope;\n expiration?: Date;\n};\n\ninterface LegacyMedium {\n setItem(key: string, value: any, options?: LegacyOptions): Promise<void>;\n getItem(key: string): Promise<any>;\n removeItem(key: string): Promise<void>;\n clear(): Promise<void>;\n}\n\nexport class LegacyStorage implements LegacyMedium {\n private memory: Store = {\n tenant: {},\n implementation: {},\n widget: {},\n };\n async setItem(key: string, value: any, options: LegacyOptions = {}): Promise<void> {\n return lock(this)(() => {\n const processedStore = processStore(this.memory, [StorageCategory.Necessary]);\n const { scope = StorageScope.Tenant, expiration } = options;\n\n processedStore[scope][key] = createValue(\n value,\n StorageCategory.Necessary,\n expiration?.toISOString() || createExpirationDate()\n );\n this.memory = processedStore;\n\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value stored temporarily in memory.\n Key: ${key}\n Value: ${JSON.stringify(value)}\n Options: ${JSON.stringify(options)}\n Memory: ${JSON.stringify(processedStore)}`\n );\n }\n });\n }\n async getItem(key: string): Promise<any> {\n return lock(this)(() => {\n const processedStore = processStore(this.memory, [StorageCategory.Necessary]);\n\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value fetched from legacy memory storage.\n Key: ${key}\n Memory: ${JSON.stringify(processedStore)}`\n );\n }\n\n const value = getValue(processedStore, key);\n this.memory = processedStore;\n\n return value;\n });\n }\n async removeItem(key: string): Promise<void> {\n return lock(this)(() => {\n const processedStore = processStore(this.memory, [StorageCategory.Necessary]);\n\n delete processedStore.tenant[key];\n delete processedStore.implementation[key];\n delete processedStore.widget[key];\n this.memory = processedStore;\n\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `StorageProvider: StorageProvider is deprecated, use createStorageWriter and readStorage instead, value removed from memory.\n Key: ${key}\n Memory: ${JSON.stringify(processedStore)}`\n );\n }\n });\n }\n async clear(): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport default class LegacyStorageProvider {\n cookies: LegacyStorage;\n session: LegacyStorage;\n local: LegacyStorage;\n constructor() {\n this.cookies = new LegacyStorage();\n this.session = new LegacyStorage();\n this.local = new LegacyStorage();\n }\n}\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nimport { selectWidgets } from '../selectors';\r\nimport ns from '../namespace';\r\nvar internal = ns();\r\nexport var matchInstructions = function (instructions, stage, widget) {\r\n return instructions.filter(function (instruction) {\r\n return instruction.stage === stage\r\n && selectWidgets(instruction.selector)(widget);\r\n });\r\n};\r\nexport function clearContextRoot(contextRoot) {\r\n var environment = contextRoot.container.get('$environment');\r\n var configurationCache = internal(environment).configurationCache;\r\n if (configurationCache) {\r\n configurationCache = configurationCache\r\n .filter(function (item) { return item[0] !== contextRoot; });\r\n internal(environment).configurationCache = configurationCache;\r\n }\r\n}\r\nexport var ConfigurationScope;\r\n(function (ConfigurationScope) {\r\n ConfigurationScope[\"Implementation\"] = \"implementation\";\r\n ConfigurationScope[\"Widget\"] = \"widget\";\r\n})(ConfigurationScope || (ConfigurationScope = {}));\r\nexport var ConfigurationStage;\r\n(function (ConfigurationStage) {\r\n /**\r\n * Configurations to be applied BEFORE a widget is configured.\r\n */\r\n ConfigurationStage[\"Pre\"] = \"pre\";\r\n /**\r\n * Configurations to be applied AFTER a widget is configured\r\n */\r\n ConfigurationStage[\"Post\"] = \"post\";\r\n})(ConfigurationStage || (ConfigurationStage = {}));\r\nvar constructApi = function (target, apiDefinition, applyCommand) {\r\n Object.keys(apiDefinition).forEach(function (key) {\r\n var commandDescriptorOrApiPart = apiDefinition[key];\r\n if (typeof commandDescriptorOrApiPart === 'function') {\r\n var commandDescriptor_1 = commandDescriptorOrApiPart();\r\n if (typeof commandDescriptor_1.defaultArgs !== 'undefined') {\r\n applyCommand.apply(void 0, __spreadArrays([commandDescriptor_1], commandDescriptor_1.defaultArgs));\r\n }\r\n target[key] = (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var trackedCommandDescriptor = Object.assign({}, commandDescriptor_1, { handlerResolver: commandDescriptor_1.handlerResolver.bind({}) });\r\n applyCommand.apply(void 0, __spreadArrays([trackedCommandDescriptor], args));\r\n return target;\r\n });\r\n }\r\n else {\r\n target[key] = constructApi({}, commandDescriptorOrApiPart, applyCommand);\r\n }\r\n });\r\n return target;\r\n};\r\nvar resolveContextRoot = function (widget, scope) {\r\n switch (scope) {\r\n case ConfigurationScope.Implementation:\r\n return widget.implementation;\r\n case ConfigurationScope.Widget:\r\n return widget;\r\n }\r\n};\r\nvar createConfiguratorObject = function (target, selector, implementation, apiDefinitions) {\r\n apiDefinitions.forEach(function (definition) {\r\n constructApi(target, definition, function (commandDescriptor) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var instruction = {\r\n selector: selector,\r\n stage: commandDescriptor.stage,\r\n handler: function (widget) {\r\n var contextRoot = resolveContextRoot(widget, commandDescriptor.scope);\r\n var context = { container: contextRoot.container, events: contextRoot.events };\r\n var resolveHandler = commandDescriptor.handlerResolver;\r\n var commandHandler = resolveHandler(context);\r\n // The configuration cache prevents the same combination of 'contextRoot' and\r\n // 'commandHandler' to be executed more than once. Let's say a commandHandler\r\n // is scoped to 'Implementation', then it will match all containing widgets, but\r\n // the unique commandHandler instance should be executed only once (else the\r\n // commandHandler will configure the implementation context once for every widget).\r\n var configurationCache = internal(implementation.environment).configurationCache;\r\n if (!configurationCache) {\r\n configurationCache = internal(implementation.environment).configurationCache = [];\r\n }\r\n if (!configurationCache.find(function (item) {\r\n return item.indexOf(contextRoot) > -1 && item.indexOf(resolveHandler) > -1;\r\n })) {\r\n configurationCache.push([contextRoot, resolveHandler]);\r\n return Promise.resolve(commandHandler.apply(void 0, args));\r\n }\r\n },\r\n };\r\n implementation.instructions.push(instruction);\r\n });\r\n });\r\n return target;\r\n};\r\nexport function createConfigurator(implementation, configurationAPIs) {\r\n function configurator(selector) {\r\n return createConfiguratorObject({}, selector, implementation, configurationAPIs);\r\n }\r\n return createConfiguratorObject(configurator, '*', implementation, configurationAPIs);\r\n}\r\n//# sourceMappingURL=configurator.js.map","import { ConfigurationScope, ConfigurationStage } from './configurator';\r\nfunction fallbackIfUndefined(value, fallback) {\r\n if (typeof value === 'undefined') {\r\n return fallback;\r\n }\r\n return value;\r\n}\r\nvar ConfigurationApiBuilder = /** @class */ (function () {\r\n function ConfigurationApiBuilder(part) {\r\n if (part === void 0) { part = {}; }\r\n this.part = part;\r\n }\r\n ConfigurationApiBuilder.prototype.createCommand = function (name, factoryOrOptions, factory) {\r\n var _this = this;\r\n var descriptor;\r\n if (typeof factoryOrOptions === 'function') {\r\n descriptor = {\r\n scope: ConfigurationScope.Widget,\r\n stage: ConfigurationStage.Post,\r\n defaultArgs: undefined,\r\n handlerResolver: factoryOrOptions,\r\n };\r\n }\r\n else {\r\n descriptor = {\r\n scope: fallbackIfUndefined(factoryOrOptions.scope, ConfigurationScope.Widget),\r\n stage: fallbackIfUndefined(factoryOrOptions.stage, ConfigurationStage.Post),\r\n defaultArgs: factoryOrOptions.defaultArgs,\r\n handlerResolver: factory,\r\n };\r\n }\r\n var part = this.part;\r\n var sections = name.split('.');\r\n sections.forEach(function (ns, i) {\r\n var last = i === sections.length - 1;\r\n if (last) {\r\n if (!part[ns]) {\r\n part[ns] = function () { return descriptor; };\r\n }\r\n }\r\n else {\r\n part = (_this.part[ns] = (_this.part[ns] || {}));\r\n }\r\n });\r\n return this;\r\n };\r\n ConfigurationApiBuilder.prototype.get = function () {\r\n return this.part;\r\n };\r\n return ConfigurationApiBuilder;\r\n}());\r\nexport { ConfigurationApiBuilder };\r\nexport var createConfigurationApi = function (factory) {\r\n var builder = new ConfigurationApiBuilder({});\r\n factory(builder);\r\n return builder.get();\r\n};\r\n//# sourceMappingURL=api-builder.js.map","import { Logger } from '@telia-ace/widget-utilities';\nimport { createConfigurationApi } from '@webprovisions/platform';\nimport { createStorageWriter } from './storage';\nimport { StorageCategory, StorageConfigurationOptions, StorageMedium, StorageScope } from './types';\nimport { processStorage } from './utils';\n\nexport default createConfigurationApi((builder) => {\n builder.createCommand('storage', (context) => (options: StorageConfigurationOptions = {}) => {\n const { consent } = options;\n if (typeof consent !== 'undefined') {\n if (\n typeof consent !== 'number' &&\n typeof consent !== 'string' &&\n !Array.isArray(consent)\n ) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(consent)}`\n );\n }\n return;\n }\n\n if (\n Array.isArray(consent) &&\n !(consent as string[]).every(\n (c: any) => typeof c === 'number' || typeof c === 'string'\n )\n ) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storagePolicyConfigurationApi: passed consent is not valid. Consent either has to be a number, a string, an array of strings or an array of numbers.\n Passed consent: ${JSON.stringify(consent)}`\n );\n }\n return;\n }\n\n const policy: StorageCategory[] = [\n StorageCategory.Necessary,\n StorageCategory.Functional,\n StorageCategory.Analytical,\n StorageCategory.Marketing,\n ].filter((category, index, array) => {\n if (typeof consent === 'number') {\n // Passed consent is a category level (number)\n // Include the passed category level and all categories below it\n return consent > index;\n } else if (typeof consent === 'string') {\n // Passed consent is a category (string)\n // Include the passed category and all categories below its level\n return array.indexOf(consent) + 1 > index;\n } else if (Array.isArray(consent)) {\n // Passed consent is an array with category levels (number), categories (string) or both\n // Include all categories in passed array\n return (\n consent.findIndex((c: number | StorageCategory) => {\n return c === index + 1 || c === category;\n }) > -1\n );\n } else {\n return true;\n }\n });\n\n if (policy.indexOf(StorageCategory.Necessary) === -1) {\n if (process.env.NODE_ENV !== 'production') {\n Logger.warn(\n `storagePolicyConfigurationApi: passed consent does not include category: '${\n StorageCategory.Necessary\n }'. Consent has to atleast include the '${\n StorageCategory.Necessary\n }' category.\n Passed consent: ${JSON.stringify(consent)}`\n );\n }\n policy.unshift(StorageCategory.Necessary);\n }\n\n return createStorageWriter(\n context.container,\n 'storagePolicy',\n StorageCategory.Necessary,\n {\n medium: StorageMedium.Cookie,\n scope: StorageScope.Tenant,\n duration: { days: 365 },\n }\n )\n .then((write) => write(policy))\n .then(() => {\n processStorage(context.container);\n\n context.events.dispatch('storage:policy-changed', policy);\n });\n }\n });\n});\n"],"names":["StorageMedium","StorageScope","StorageCategory","createStorageWriter","container","key","category","options","isNotAllowedAsync","notAllowed","Logger","value","processStorage","scope","medium","duration","store","createEmptyStore","createValue","setCookieStoreAsync","setApplicationStoreAsync","readStorage","getCookieStoreAsync","getValue","getApplicationStoreAsync","hasEntries","object","_","cleanUndefined","mergeAndClean","target","source","merged","__spreadValues","getLongestExpirationDate","acc","storeEntry","containerEntry","expiration","a","b","createExpirationDate","createStorageKeys","widgetName","implementationName","tenantName","hash","getCookie","cookieName","regExp","cookie","setCookie","expires","path","getCookieStore","tenantKey","implementationKey","widgetKey","tenant","implementation","widget","setCookieStore","current","expirationDate","deleteDate","getApplicationStore","storage","setApplicationStore","applicationStorage","isExpired","isoDateString","storedValue","processStore","policy","clone","deepClone","storageContainer","isNotAllowed","cookieStore","localStore","sessionStore","processedCookieStore","processedLocalStore","processedSessionStore","days","hours","minutes","seconds","date","lock","type","LegacyStorage","_0","_1","__async","processedStore","LegacyStorageProvider","this","ConfigurationScope","ConfigurationStage","fallbackIfUndefined","fallback","ConfigurationApiBuilder","part","name","factoryOrOptions","factory","_this","descriptor","sections","ns","i","last","createConfigurationApi","builder","storagePolicyConfigurationApi","context","consent","c","index","array","write"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/widget-services",
3
- "version": "1.0.21-experimental.2",
3
+ "version": "1.0.21-experimental.21",
4
4
  "description": "Services for ACE Widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -21,10 +21,10 @@
21
21
  },
22
22
  "sideEffects": false,
23
23
  "dependencies": {
24
- "@telia-ace/widget-utilities": "1.0.10-experimental.2"
24
+ "@telia-ace/widget-utilities": "1.0.10-experimental.21"
25
25
  },
26
26
  "devDependencies": {
27
- "@telia-ace/widget-developer-tools": "1.0.16-experimental.2",
27
+ "@telia-ace/widget-developer-tools": "1.0.16-experimental.21",
28
28
  "@webprovisions/platform": "^1.1.2"
29
29
  },
30
30
  "scripts": {