@merkur/plugin-session-storage 0.32.1 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -7,11 +7,11 @@ const KEY_PREFIX_SEPARATOR = '__';
7
7
  function setKeyPrefix(
8
8
  widget,
9
9
  additionalWords = [],
10
- defaultWords = ['widget', widget.name, widget.version]
10
+ defaultWords = ['widget', widget.name, widget.version],
11
11
  ) {
12
12
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
13
13
  const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(
14
- KEY_PREFIX_SEPARATOR
14
+ KEY_PREFIX_SEPARATOR,
15
15
  )}${KEY_PREFIX_SEPARATOR}`;
16
16
 
17
17
  widget.$in.sessionStorage.keyPrefix = prefix;
@@ -20,10 +20,7 @@ function setKeyPrefix(
20
20
  function sessionStoragePlugin() {
21
21
  return {
22
22
  async setup(widget) {
23
- widget = {
24
- ...sessionStorageAPI(),
25
- ...widget,
26
- };
23
+ core.assignMissingKeys(widget, sessionStorageAPI());
27
24
 
28
25
  widget.$in.sessionStorage = {};
29
26
  setKeyPrefix(widget);
@@ -58,12 +55,18 @@ function sessionStorageAPI() {
58
55
  try {
59
56
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
60
57
 
58
+ if (shouldDeleteItem(item)) {
59
+ widget.sessionStorage.delete(key);
60
+
61
+ return undefined;
62
+ }
63
+
61
64
  return item && typeof item === 'object' ? item.value : undefined;
62
65
  } catch (error) {
63
66
  throw new Error(
64
67
  `merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${
65
68
  keyPrefix + key
66
- }: ${error.message}`
69
+ }: ${error.message}`,
67
70
  );
68
71
  }
69
72
  },
@@ -73,10 +76,13 @@ function sessionStorageAPI() {
73
76
  * @param {object} widget A widget object.
74
77
  * @param {string} key A key
75
78
  * @param {*} value A value
79
+ * @param {object} [options] An options object.
80
+ * @param {number} [options.ttl] Number of milliseconds after which the
81
+ * value should be removed.
76
82
  * @return {boolean} It's `true` when the operation was successful,
77
83
  * otherwise `false`.
78
84
  */
79
- set(widget, key, value) {
85
+ set(widget, key, value, options) {
80
86
  const {
81
87
  $dependencies: { sessionStorage },
82
88
  $in: {
@@ -88,14 +94,23 @@ function sessionStorageAPI() {
88
94
  return false;
89
95
  }
90
96
 
97
+ const item = {
98
+ created: Date.now(),
99
+ value,
100
+ };
101
+
102
+ if (Number.isFinite(Number.parseInt(options?.ttl))) {
103
+ item.ttl = Number.parseInt(options.ttl);
104
+ }
105
+
106
+ if (shouldDeleteItem(item)) {
107
+ widget.sessionStorage.delete(key);
108
+
109
+ return true;
110
+ }
111
+
91
112
  try {
92
- sessionStorage.setItem(
93
- keyPrefix + key,
94
- JSON.stringify({
95
- created: Date.now(),
96
- value,
97
- })
98
- );
113
+ sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
99
114
  } catch (error) {
100
115
  console.error(error);
101
116
 
@@ -129,5 +144,20 @@ function getNativeSessionStorage() {
129
144
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
130
145
  }
131
146
 
147
+ function shouldDeleteItem(item) {
148
+ if (!item || !('ttl' in item) || !item.created) {
149
+ return false;
150
+ }
151
+
152
+ if (item.ttl <= 0) {
153
+ return true;
154
+ }
155
+
156
+ const now = Date.now();
157
+ const age = now - item.created;
158
+
159
+ return age > item.ttl;
160
+ }
161
+
132
162
  exports.sessionStoragePlugin = sessionStoragePlugin;
133
163
  exports.setKeyPrefix = setKeyPrefix;
package/lib/index.es9.cjs CHANGED
@@ -10,10 +10,7 @@ function setKeyPrefix(widget, additionalWords = [], defaultWords = ['widget', wi
10
10
  function sessionStoragePlugin() {
11
11
  return {
12
12
  async setup(widget) {
13
- widget = {
14
- ...sessionStorageAPI(),
15
- ...widget
16
- };
13
+ core.assignMissingKeys(widget, sessionStorageAPI());
17
14
  widget.$in.sessionStorage = {};
18
15
  setKeyPrefix(widget);
19
16
  widget.$dependencies.sessionStorage = getNativeSessionStorage();
@@ -44,6 +41,10 @@ function sessionStorageAPI() {
44
41
  }
45
42
  try {
46
43
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
44
+ if (shouldDeleteItem(item)) {
45
+ widget.sessionStorage.delete(key);
46
+ return undefined;
47
+ }
47
48
  return item && typeof item === 'object' ? item.value : undefined;
48
49
  } catch (error) {
49
50
  throw new Error(`merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${keyPrefix + key}: ${error.message}`);
@@ -54,10 +55,13 @@ function sessionStorageAPI() {
54
55
  * @param {object} widget A widget object.
55
56
  * @param {string} key A key
56
57
  * @param {*} value A value
58
+ * @param {object} [options] An options object.
59
+ * @param {number} [options.ttl] Number of milliseconds after which the
60
+ * value should be removed.
57
61
  * @return {boolean} It's `true` when the operation was successful,
58
62
  * otherwise `false`.
59
63
  */
60
- set(widget, key, value) {
64
+ set(widget, key, value, options) {
61
65
  const {
62
66
  $dependencies: {
63
67
  sessionStorage
@@ -71,11 +75,19 @@ function sessionStorageAPI() {
71
75
  if (!sessionStorage) {
72
76
  return false;
73
77
  }
78
+ const item = {
79
+ created: Date.now(),
80
+ value
81
+ };
82
+ if (Number.isFinite(Number.parseInt(options === null || options === void 0 ? void 0 : options.ttl))) {
83
+ item.ttl = Number.parseInt(options.ttl);
84
+ }
85
+ if (shouldDeleteItem(item)) {
86
+ widget.sessionStorage.delete(key);
87
+ return true;
88
+ }
74
89
  try {
75
- sessionStorage.setItem(keyPrefix + key, JSON.stringify({
76
- created: Date.now(),
77
- value
78
- }));
90
+ sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
79
91
  } catch (error) {
80
92
  console.error(error);
81
93
  return false;
@@ -105,5 +117,16 @@ function sessionStorageAPI() {
105
117
  function getNativeSessionStorage() {
106
118
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
107
119
  }
120
+ function shouldDeleteItem(item) {
121
+ if (!item || !('ttl' in item) || !item.created) {
122
+ return false;
123
+ }
124
+ if (item.ttl <= 0) {
125
+ return true;
126
+ }
127
+ const now = Date.now();
128
+ const age = now - item.created;
129
+ return age > item.ttl;
130
+ }
108
131
  exports.sessionStoragePlugin = sessionStoragePlugin;
109
132
  exports.setKeyPrefix = setKeyPrefix;
package/lib/index.es9.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { bindWidgetToFunctions } from '@merkur/core';
1
+ import { assignMissingKeys, bindWidgetToFunctions } from '@merkur/core';
2
2
  const KEY_PREFIX_SEPARATOR = '__';
3
3
  function setKeyPrefix(widget, additionalWords = [], defaultWords = ['widget', widget.name, widget.version]) {
4
4
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
@@ -8,10 +8,7 @@ function setKeyPrefix(widget, additionalWords = [], defaultWords = ['widget', wi
8
8
  function sessionStoragePlugin() {
9
9
  return {
10
10
  async setup(widget) {
11
- widget = {
12
- ...sessionStorageAPI(),
13
- ...widget
14
- };
11
+ assignMissingKeys(widget, sessionStorageAPI());
15
12
  widget.$in.sessionStorage = {};
16
13
  setKeyPrefix(widget);
17
14
  widget.$dependencies.sessionStorage = getNativeSessionStorage();
@@ -42,6 +39,10 @@ function sessionStorageAPI() {
42
39
  }
43
40
  try {
44
41
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
42
+ if (shouldDeleteItem(item)) {
43
+ widget.sessionStorage.delete(key);
44
+ return undefined;
45
+ }
45
46
  return item && typeof item === 'object' ? item.value : undefined;
46
47
  } catch (error) {
47
48
  throw new Error(`merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${keyPrefix + key}: ${error.message}`);
@@ -52,10 +53,13 @@ function sessionStorageAPI() {
52
53
  * @param {object} widget A widget object.
53
54
  * @param {string} key A key
54
55
  * @param {*} value A value
56
+ * @param {object} [options] An options object.
57
+ * @param {number} [options.ttl] Number of milliseconds after which the
58
+ * value should be removed.
55
59
  * @return {boolean} It's `true` when the operation was successful,
56
60
  * otherwise `false`.
57
61
  */
58
- set(widget, key, value) {
62
+ set(widget, key, value, options) {
59
63
  const {
60
64
  $dependencies: {
61
65
  sessionStorage
@@ -69,11 +73,19 @@ function sessionStorageAPI() {
69
73
  if (!sessionStorage) {
70
74
  return false;
71
75
  }
76
+ const item = {
77
+ created: Date.now(),
78
+ value
79
+ };
80
+ if (Number.isFinite(Number.parseInt(options === null || options === void 0 ? void 0 : options.ttl))) {
81
+ item.ttl = Number.parseInt(options.ttl);
82
+ }
83
+ if (shouldDeleteItem(item)) {
84
+ widget.sessionStorage.delete(key);
85
+ return true;
86
+ }
72
87
  try {
73
- sessionStorage.setItem(keyPrefix + key, JSON.stringify({
74
- created: Date.now(),
75
- value
76
- }));
88
+ sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
77
89
  } catch (error) {
78
90
  console.error(error);
79
91
  return false;
@@ -103,4 +115,15 @@ function sessionStorageAPI() {
103
115
  function getNativeSessionStorage() {
104
116
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
105
117
  }
118
+ function shouldDeleteItem(item) {
119
+ if (!item || !('ttl' in item) || !item.created) {
120
+ return false;
121
+ }
122
+ if (item.ttl <= 0) {
123
+ return true;
124
+ }
125
+ const now = Date.now();
126
+ const age = now - item.created;
127
+ return age > item.ttl;
128
+ }
106
129
  export { sessionStoragePlugin, setKeyPrefix };
package/lib/index.js CHANGED
@@ -7,11 +7,11 @@ const KEY_PREFIX_SEPARATOR = '__';
7
7
  function setKeyPrefix(
8
8
  widget,
9
9
  additionalWords = [],
10
- defaultWords = ['widget', widget.name, widget.version]
10
+ defaultWords = ['widget', widget.name, widget.version],
11
11
  ) {
12
12
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
13
13
  const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(
14
- KEY_PREFIX_SEPARATOR
14
+ KEY_PREFIX_SEPARATOR,
15
15
  )}${KEY_PREFIX_SEPARATOR}`;
16
16
 
17
17
  widget.$in.sessionStorage.keyPrefix = prefix;
@@ -20,10 +20,7 @@ function setKeyPrefix(
20
20
  function sessionStoragePlugin() {
21
21
  return {
22
22
  async setup(widget) {
23
- widget = {
24
- ...sessionStorageAPI(),
25
- ...widget,
26
- };
23
+ core.assignMissingKeys(widget, sessionStorageAPI());
27
24
 
28
25
  widget.$in.sessionStorage = {};
29
26
  setKeyPrefix(widget);
@@ -58,12 +55,18 @@ function sessionStorageAPI() {
58
55
  try {
59
56
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
60
57
 
58
+ if (shouldDeleteItem(item)) {
59
+ widget.sessionStorage.delete(key);
60
+
61
+ return undefined;
62
+ }
63
+
61
64
  return item && typeof item === 'object' ? item.value : undefined;
62
65
  } catch (error) {
63
66
  throw new Error(
64
67
  `merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${
65
68
  keyPrefix + key
66
- }: ${error.message}`
69
+ }: ${error.message}`,
67
70
  );
68
71
  }
69
72
  },
@@ -73,10 +76,13 @@ function sessionStorageAPI() {
73
76
  * @param {object} widget A widget object.
74
77
  * @param {string} key A key
75
78
  * @param {*} value A value
79
+ * @param {object} [options] An options object.
80
+ * @param {number} [options.ttl] Number of milliseconds after which the
81
+ * value should be removed.
76
82
  * @return {boolean} It's `true` when the operation was successful,
77
83
  * otherwise `false`.
78
84
  */
79
- set(widget, key, value) {
85
+ set(widget, key, value, options) {
80
86
  const {
81
87
  $dependencies: { sessionStorage },
82
88
  $in: {
@@ -88,14 +94,23 @@ function sessionStorageAPI() {
88
94
  return false;
89
95
  }
90
96
 
97
+ const item = {
98
+ created: Date.now(),
99
+ value,
100
+ };
101
+
102
+ if (Number.isFinite(Number.parseInt(options?.ttl))) {
103
+ item.ttl = Number.parseInt(options.ttl);
104
+ }
105
+
106
+ if (shouldDeleteItem(item)) {
107
+ widget.sessionStorage.delete(key);
108
+
109
+ return true;
110
+ }
111
+
91
112
  try {
92
- sessionStorage.setItem(
93
- keyPrefix + key,
94
- JSON.stringify({
95
- created: Date.now(),
96
- value,
97
- })
98
- );
113
+ sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
99
114
  } catch (error) {
100
115
  console.error(error);
101
116
 
@@ -129,5 +144,20 @@ function getNativeSessionStorage() {
129
144
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
130
145
  }
131
146
 
147
+ function shouldDeleteItem(item) {
148
+ if (!item || !('ttl' in item) || !item.created) {
149
+ return false;
150
+ }
151
+
152
+ if (item.ttl <= 0) {
153
+ return true;
154
+ }
155
+
156
+ const now = Date.now();
157
+ const age = now - item.created;
158
+
159
+ return age > item.ttl;
160
+ }
161
+
132
162
  exports.sessionStoragePlugin = sessionStoragePlugin;
133
163
  exports.setKeyPrefix = setKeyPrefix;
package/lib/index.mjs CHANGED
@@ -1,15 +1,15 @@
1
- import { bindWidgetToFunctions } from '@merkur/core';
1
+ import { assignMissingKeys, bindWidgetToFunctions } from '@merkur/core';
2
2
 
3
3
  const KEY_PREFIX_SEPARATOR = '__';
4
4
 
5
5
  function setKeyPrefix(
6
6
  widget,
7
7
  additionalWords = [],
8
- defaultWords = ['widget', widget.name, widget.version]
8
+ defaultWords = ['widget', widget.name, widget.version],
9
9
  ) {
10
10
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
11
11
  const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(
12
- KEY_PREFIX_SEPARATOR
12
+ KEY_PREFIX_SEPARATOR,
13
13
  )}${KEY_PREFIX_SEPARATOR}`;
14
14
 
15
15
  widget.$in.sessionStorage.keyPrefix = prefix;
@@ -18,10 +18,7 @@ function setKeyPrefix(
18
18
  function sessionStoragePlugin() {
19
19
  return {
20
20
  async setup(widget) {
21
- widget = {
22
- ...sessionStorageAPI(),
23
- ...widget,
24
- };
21
+ assignMissingKeys(widget, sessionStorageAPI());
25
22
 
26
23
  widget.$in.sessionStorage = {};
27
24
  setKeyPrefix(widget);
@@ -56,12 +53,18 @@ function sessionStorageAPI() {
56
53
  try {
57
54
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
58
55
 
56
+ if (shouldDeleteItem(item)) {
57
+ widget.sessionStorage.delete(key);
58
+
59
+ return undefined;
60
+ }
61
+
59
62
  return item && typeof item === 'object' ? item.value : undefined;
60
63
  } catch (error) {
61
64
  throw new Error(
62
65
  `merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${
63
66
  keyPrefix + key
64
- }: ${error.message}`
67
+ }: ${error.message}`,
65
68
  );
66
69
  }
67
70
  },
@@ -71,10 +74,13 @@ function sessionStorageAPI() {
71
74
  * @param {object} widget A widget object.
72
75
  * @param {string} key A key
73
76
  * @param {*} value A value
77
+ * @param {object} [options] An options object.
78
+ * @param {number} [options.ttl] Number of milliseconds after which the
79
+ * value should be removed.
74
80
  * @return {boolean} It's `true` when the operation was successful,
75
81
  * otherwise `false`.
76
82
  */
77
- set(widget, key, value) {
83
+ set(widget, key, value, options) {
78
84
  const {
79
85
  $dependencies: { sessionStorage },
80
86
  $in: {
@@ -86,14 +92,23 @@ function sessionStorageAPI() {
86
92
  return false;
87
93
  }
88
94
 
95
+ const item = {
96
+ created: Date.now(),
97
+ value,
98
+ };
99
+
100
+ if (Number.isFinite(Number.parseInt(options?.ttl))) {
101
+ item.ttl = Number.parseInt(options.ttl);
102
+ }
103
+
104
+ if (shouldDeleteItem(item)) {
105
+ widget.sessionStorage.delete(key);
106
+
107
+ return true;
108
+ }
109
+
89
110
  try {
90
- sessionStorage.setItem(
91
- keyPrefix + key,
92
- JSON.stringify({
93
- created: Date.now(),
94
- value,
95
- })
96
- );
111
+ sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
97
112
  } catch (error) {
98
113
  console.error(error);
99
114
 
@@ -127,4 +142,19 @@ function getNativeSessionStorage() {
127
142
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
128
143
  }
129
144
 
145
+ function shouldDeleteItem(item) {
146
+ if (!item || !('ttl' in item) || !item.created) {
147
+ return false;
148
+ }
149
+
150
+ if (item.ttl <= 0) {
151
+ return true;
152
+ }
153
+
154
+ const now = Date.now();
155
+ const age = now - item.created;
156
+
157
+ return age > item.ttl;
158
+ }
159
+
130
160
  export { sessionStoragePlugin, setKeyPrefix };
package/lib/index.umd.js CHANGED
@@ -1 +1 @@
1
- !function(e,r){if("function"==typeof define&&define.amd)define("@merkur/plugin-session-storage",["exports","@merkur/core"],r);else if("undefined"!=typeof exports)r(exports,require("@merkur/core"));else{var t={exports:{}};r(t.exports,e.Merkur.Core),e.merkurPluginSessionStorage=t.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e,r){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?n(Object(t),!0).forEach((function(r){i(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):n(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function i(e,r,n){return(r=function(e){var r=function(e,r){if("object"!==t(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,r||"default");if("object"!==t(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"===t(r)?r:String(r)}(r))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function s(e,r,t,n,o,i,s){try{var u=e[i](s),c=u.value}catch(e){return void t(e)}u.done?r(c):Promise.resolve(c).then(n,o)}function u(e){return function(){var r=this,t=arguments;return new Promise((function(n,o){var i=e.apply(r,t);function u(e){s(i,n,o,u,c,"next",e)}function c(e){s(i,n,o,u,c,"throw",e)}u(void 0)}))}}function c(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,r){if(!e)return;if("string"==typeof e)return a(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return a(e,r)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}Object.defineProperty(e,"__esModule",{value:!0}),e.sessionStoragePlugin=function(){return{setup:function(e){return u((function*(){return(e=o(o({},{sessionStorage:{get:function(e,r){var n=e.$dependencies.sessionStorage,o=e.$in.sessionStorage.keyPrefix;if(!n)return null;try{var i=JSON.parse(n.getItem(o+r));return i&&"object"===t(i)?i.value:void 0}catch(e){throw new Error("merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ".concat(o+r,": ").concat(e.message))}},set:function(e,r,t){var n=e.$dependencies.sessionStorage,o=e.$in.sessionStorage.keyPrefix;if(!n)return!1;try{n.setItem(o+r,JSON.stringify({created:Date.now(),value:t}))}catch(e){return console.error(e),!1}return!0},delete:function(e,r){var t=e.$dependencies.sessionStorage,n=e.$in.sessionStorage.keyPrefix;return!!t&&(t.removeItem(n+r),!0)}}}),e)).$in.sessionStorage={},l(e),e.$dependencies.sessionStorage="undefined"==typeof window?void 0:window.sessionStorage,e}))()},create:function(e){return u((function*(){return(0,r.bindWidgetToFunctions)(e,e.sessionStorage),e}))()}}},e.setKeyPrefix=l;var f="__";function l(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:["widget",e.name,e.version],n=[].concat(c(t),c(r)).filter(Boolean),o="".concat(f).concat(n.join(f)).concat(f);e.$in.sessionStorage.keyPrefix=o}}));
1
+ !function(e,t){if("function"==typeof define&&define.amd)define("@merkur/plugin-session-storage",["exports","@merkur/core"],t);else if("undefined"!=typeof exports)t(exports,require("@merkur/core"));else{var n={exports:{}};t(n.exports,e.Merkur.Core),e.merkurPluginSessionStorage=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e,t){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e,t,n,r,o,i,s){try{var u=e[i](s),a=u.value}catch(e){return void n(e)}u.done?t(a):Promise.resolve(a).then(r,o)}function o(e){return function(){var t=this,n=arguments;return new Promise((function(o,i){var s=e.apply(t,n);function u(e){r(s,o,i,u,a,"next",e)}function a(e){r(s,o,i,u,a,"throw",e)}u(void 0)}))}}function i(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return s(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}Object.defineProperty(e,"__esModule",{value:!0}),e.sessionStoragePlugin=function(){return{setup:function(e){return o((function*(){return(0,t.assignMissingKeys)(e,{sessionStorage:{get:function(e,t){var r=e.$dependencies.sessionStorage,o=e.$in.sessionStorage.keyPrefix;if(!r)return null;try{var i=JSON.parse(r.getItem(o+t));return f(i)?void e.sessionStorage.delete(t):i&&"object"===n(i)?i.value:void 0}catch(e){throw new Error("merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ".concat(o+t,": ").concat(e.message))}},set:function(e,t,n,r){var o=e.$dependencies.sessionStorage,i=e.$in.sessionStorage.keyPrefix;if(!o)return!1;var s={created:Date.now(),value:n};if(Number.isFinite(Number.parseInt(null==r?void 0:r.ttl))&&(s.ttl=Number.parseInt(r.ttl)),f(s))return e.sessionStorage.delete(t),!0;try{o.setItem(i+t,JSON.stringify(s))}catch(e){return console.error(e),!1}return!0},delete:function(e,t){var n=e.$dependencies.sessionStorage,r=e.$in.sessionStorage.keyPrefix;return!!n&&(n.removeItem(r+t),!0)}}}),e.$in.sessionStorage={},a(e),e.$dependencies.sessionStorage="undefined"==typeof window?void 0:window.sessionStorage,e}))()},create:function(e){return o((function*(){return(0,t.bindWidgetToFunctions)(e,e.sessionStorage),e}))()}}},e.setKeyPrefix=a;var u="__";function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:["widget",e.name,e.version],r=[].concat(i(n),i(t)).filter(Boolean),o="".concat(u).concat(r.join(u)).concat(u);e.$in.sessionStorage.keyPrefix=o}function f(e){return!!(e&&"ttl"in e&&e.created)&&(e.ttl<=0||Date.now()-e.created>e.ttl)}}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@merkur/plugin-session-storage",
3
- "version": "0.32.1",
3
+ "version": "0.34.0",
4
4
  "description": "Merkur session storage.",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -48,10 +48,10 @@
48
48
  },
49
49
  "homepage": "https://merkur.js.org/",
50
50
  "devDependencies": {
51
- "@merkur/core": "^0.32.0"
51
+ "@merkur/core": "^0.34.0"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@merkur/core": "*"
55
55
  },
56
- "gitHead": "334660bef90e81c0b13b155efa03cad774e42edd"
56
+ "gitHead": "3bc4a1efb8f8d5cee6bcf5f1454809747904153c"
57
57
  }