@merkur/plugin-session-storage 0.38.0 → 0.40.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://merkur.js.org/docs/getting-started" title="Getting started">
3
- <img src="https://raw.githubusercontent.com/mjancarik/merkur/master/images/merkur-illustration.png" width="100px" height="100px" alt="Merkur illustration"/>
3
+ <img src="https://raw.githubusercontent.com/mjancarik/merkur/master/images/merkur-logo.png" width="100px" height="100px" alt="Merkur illustration"/>
4
4
  </a>
5
5
  </p>
6
6
 
package/lib/index.cjs CHANGED
@@ -3,74 +3,54 @@
3
3
  var core = require('@merkur/core');
4
4
 
5
5
  const KEY_PREFIX_SEPARATOR = '__';
6
-
7
- function setKeyPrefix(
8
- widget,
9
- additionalWords = [],
10
- defaultWords = ['widget', widget.name, widget.version],
11
- ) {
6
+ function setKeyPrefix(widget, additionalWords = [], defaultWords = ['widget', widget.name, widget.version]) {
12
7
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
13
- const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(
14
- KEY_PREFIX_SEPARATOR,
15
- )}${KEY_PREFIX_SEPARATOR}`;
16
-
8
+ const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(KEY_PREFIX_SEPARATOR)}${KEY_PREFIX_SEPARATOR}`;
17
9
  widget.$in.sessionStorage.keyPrefix = prefix;
18
10
  }
19
-
20
11
  function sessionStoragePlugin() {
21
12
  return {
22
13
  async setup(widget) {
23
14
  core.assignMissingKeys(widget, sessionStorageAPI());
24
-
25
15
  widget.$in.sessionStorage = {};
26
16
  setKeyPrefix(widget);
27
-
28
17
  widget.$dependencies.sessionStorage = getNativeSessionStorage();
29
-
30
18
  return widget;
31
19
  },
32
20
  async create(widget) {
33
21
  core.bindWidgetToFunctions(widget, widget.sessionStorage);
34
-
35
22
  return widget;
36
- },
23
+ }
37
24
  };
38
25
  }
39
-
40
26
  function sessionStorageAPI() {
41
27
  return {
42
28
  sessionStorage: {
43
29
  get(widget, key) {
44
30
  const {
45
- $dependencies: { sessionStorage },
46
- $in: {
47
- sessionStorage: { keyPrefix },
31
+ $dependencies: {
32
+ sessionStorage
48
33
  },
34
+ $in: {
35
+ sessionStorage: {
36
+ keyPrefix
37
+ }
38
+ }
49
39
  } = widget;
50
-
51
40
  if (!sessionStorage) {
52
41
  return null;
53
42
  }
54
-
55
43
  try {
56
44
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
57
-
58
45
  if (shouldDeleteItem(item)) {
59
46
  widget.sessionStorage.delete(key);
60
-
61
47
  return undefined;
62
48
  }
63
-
64
49
  return item && typeof item === 'object' ? item.value : undefined;
65
50
  } catch (error) {
66
- throw new Error(
67
- `merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${
68
- keyPrefix + key
69
- }: ${error.message}`,
70
- );
51
+ throw new Error(`merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${keyPrefix + key}: ${error.message}`);
71
52
  }
72
53
  },
73
-
74
54
  /**
75
55
  * Saves a value under the key.
76
56
  * @param {object} widget A widget object.
@@ -84,78 +64,69 @@ function sessionStorageAPI() {
84
64
  */
85
65
  set(widget, key, value, options) {
86
66
  const {
87
- $dependencies: { sessionStorage },
88
- $in: {
89
- sessionStorage: { keyPrefix },
67
+ $dependencies: {
68
+ sessionStorage
90
69
  },
70
+ $in: {
71
+ sessionStorage: {
72
+ keyPrefix
73
+ }
74
+ }
91
75
  } = widget;
92
-
93
76
  if (!sessionStorage) {
94
77
  return false;
95
78
  }
96
-
97
79
  const item = {
98
80
  created: Date.now(),
99
- value,
81
+ value
100
82
  };
101
-
102
83
  if (options && Number.isFinite(Number.parseInt(options.ttl))) {
103
84
  item.ttl = Number.parseInt(options.ttl);
104
85
  }
105
-
106
86
  if (shouldDeleteItem(item)) {
107
87
  widget.sessionStorage.delete(key);
108
-
109
88
  return true;
110
89
  }
111
-
112
90
  try {
113
91
  sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
114
92
  } catch (error) {
115
93
  console.error(error);
116
-
117
94
  return false;
118
95
  }
119
-
120
96
  return true;
121
97
  },
122
-
123
98
  delete(widget, key) {
124
99
  const {
125
- $dependencies: { sessionStorage },
126
- $in: {
127
- sessionStorage: { keyPrefix },
100
+ $dependencies: {
101
+ sessionStorage
128
102
  },
103
+ $in: {
104
+ sessionStorage: {
105
+ keyPrefix
106
+ }
107
+ }
129
108
  } = widget;
130
-
131
109
  if (!sessionStorage) {
132
110
  return false;
133
111
  }
134
-
135
112
  sessionStorage.removeItem(keyPrefix + key);
136
-
137
113
  return true;
138
- },
139
- },
114
+ }
115
+ }
140
116
  };
141
117
  }
142
-
143
118
  function getNativeSessionStorage() {
144
119
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
145
120
  }
146
-
147
121
  function shouldDeleteItem(item) {
148
122
  if (!item || !('ttl' in item) || !item.created) {
149
123
  return false;
150
124
  }
151
-
152
125
  if (item.ttl <= 0) {
153
126
  return true;
154
127
  }
155
-
156
128
  const now = Date.now();
157
129
  const age = now - item.created;
158
-
159
130
  return age > item.ttl;
160
131
  }
161
132
 
package/lib/index.js CHANGED
@@ -3,74 +3,54 @@
3
3
  var core = require('@merkur/core');
4
4
 
5
5
  const KEY_PREFIX_SEPARATOR = '__';
6
-
7
- function setKeyPrefix(
8
- widget,
9
- additionalWords = [],
10
- defaultWords = ['widget', widget.name, widget.version],
11
- ) {
6
+ function setKeyPrefix(widget, additionalWords = [], defaultWords = ['widget', widget.name, widget.version]) {
12
7
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
13
- const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(
14
- KEY_PREFIX_SEPARATOR,
15
- )}${KEY_PREFIX_SEPARATOR}`;
16
-
8
+ const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(KEY_PREFIX_SEPARATOR)}${KEY_PREFIX_SEPARATOR}`;
17
9
  widget.$in.sessionStorage.keyPrefix = prefix;
18
10
  }
19
-
20
11
  function sessionStoragePlugin() {
21
12
  return {
22
13
  async setup(widget) {
23
14
  core.assignMissingKeys(widget, sessionStorageAPI());
24
-
25
15
  widget.$in.sessionStorage = {};
26
16
  setKeyPrefix(widget);
27
-
28
17
  widget.$dependencies.sessionStorage = getNativeSessionStorage();
29
-
30
18
  return widget;
31
19
  },
32
20
  async create(widget) {
33
21
  core.bindWidgetToFunctions(widget, widget.sessionStorage);
34
-
35
22
  return widget;
36
- },
23
+ }
37
24
  };
38
25
  }
39
-
40
26
  function sessionStorageAPI() {
41
27
  return {
42
28
  sessionStorage: {
43
29
  get(widget, key) {
44
30
  const {
45
- $dependencies: { sessionStorage },
46
- $in: {
47
- sessionStorage: { keyPrefix },
31
+ $dependencies: {
32
+ sessionStorage
48
33
  },
34
+ $in: {
35
+ sessionStorage: {
36
+ keyPrefix
37
+ }
38
+ }
49
39
  } = widget;
50
-
51
40
  if (!sessionStorage) {
52
41
  return null;
53
42
  }
54
-
55
43
  try {
56
44
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
57
-
58
45
  if (shouldDeleteItem(item)) {
59
46
  widget.sessionStorage.delete(key);
60
-
61
47
  return undefined;
62
48
  }
63
-
64
49
  return item && typeof item === 'object' ? item.value : undefined;
65
50
  } catch (error) {
66
- throw new Error(
67
- `merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${
68
- keyPrefix + key
69
- }: ${error.message}`,
70
- );
51
+ throw new Error(`merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${keyPrefix + key}: ${error.message}`);
71
52
  }
72
53
  },
73
-
74
54
  /**
75
55
  * Saves a value under the key.
76
56
  * @param {object} widget A widget object.
@@ -84,78 +64,69 @@ function sessionStorageAPI() {
84
64
  */
85
65
  set(widget, key, value, options) {
86
66
  const {
87
- $dependencies: { sessionStorage },
88
- $in: {
89
- sessionStorage: { keyPrefix },
67
+ $dependencies: {
68
+ sessionStorage
90
69
  },
70
+ $in: {
71
+ sessionStorage: {
72
+ keyPrefix
73
+ }
74
+ }
91
75
  } = widget;
92
-
93
76
  if (!sessionStorage) {
94
77
  return false;
95
78
  }
96
-
97
79
  const item = {
98
80
  created: Date.now(),
99
- value,
81
+ value
100
82
  };
101
-
102
83
  if (options && Number.isFinite(Number.parseInt(options.ttl))) {
103
84
  item.ttl = Number.parseInt(options.ttl);
104
85
  }
105
-
106
86
  if (shouldDeleteItem(item)) {
107
87
  widget.sessionStorage.delete(key);
108
-
109
88
  return true;
110
89
  }
111
-
112
90
  try {
113
91
  sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
114
92
  } catch (error) {
115
93
  console.error(error);
116
-
117
94
  return false;
118
95
  }
119
-
120
96
  return true;
121
97
  },
122
-
123
98
  delete(widget, key) {
124
99
  const {
125
- $dependencies: { sessionStorage },
126
- $in: {
127
- sessionStorage: { keyPrefix },
100
+ $dependencies: {
101
+ sessionStorage
128
102
  },
103
+ $in: {
104
+ sessionStorage: {
105
+ keyPrefix
106
+ }
107
+ }
129
108
  } = widget;
130
-
131
109
  if (!sessionStorage) {
132
110
  return false;
133
111
  }
134
-
135
112
  sessionStorage.removeItem(keyPrefix + key);
136
-
137
113
  return true;
138
- },
139
- },
114
+ }
115
+ }
140
116
  };
141
117
  }
142
-
143
118
  function getNativeSessionStorage() {
144
119
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
145
120
  }
146
-
147
121
  function shouldDeleteItem(item) {
148
122
  if (!item || !('ttl' in item) || !item.created) {
149
123
  return false;
150
124
  }
151
-
152
125
  if (item.ttl <= 0) {
153
126
  return true;
154
127
  }
155
-
156
128
  const now = Date.now();
157
129
  const age = now - item.created;
158
-
159
130
  return age > item.ttl;
160
131
  }
161
132
 
package/lib/index.mjs CHANGED
@@ -1,74 +1,54 @@
1
1
  import { bindWidgetToFunctions, assignMissingKeys } from '@merkur/core';
2
2
 
3
3
  const KEY_PREFIX_SEPARATOR = '__';
4
-
5
- function setKeyPrefix(
6
- widget,
7
- additionalWords = [],
8
- defaultWords = ['widget', widget.name, widget.version],
9
- ) {
4
+ function setKeyPrefix(widget, additionalWords = [], defaultWords = ['widget', widget.name, widget.version]) {
10
5
  const words = [...defaultWords, ...additionalWords].filter(Boolean);
11
- const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(
12
- KEY_PREFIX_SEPARATOR,
13
- )}${KEY_PREFIX_SEPARATOR}`;
14
-
6
+ const prefix = `${KEY_PREFIX_SEPARATOR}${words.join(KEY_PREFIX_SEPARATOR)}${KEY_PREFIX_SEPARATOR}`;
15
7
  widget.$in.sessionStorage.keyPrefix = prefix;
16
8
  }
17
-
18
9
  function sessionStoragePlugin() {
19
10
  return {
20
11
  async setup(widget) {
21
12
  assignMissingKeys(widget, sessionStorageAPI());
22
-
23
13
  widget.$in.sessionStorage = {};
24
14
  setKeyPrefix(widget);
25
-
26
15
  widget.$dependencies.sessionStorage = getNativeSessionStorage();
27
-
28
16
  return widget;
29
17
  },
30
18
  async create(widget) {
31
19
  bindWidgetToFunctions(widget, widget.sessionStorage);
32
-
33
20
  return widget;
34
- },
21
+ }
35
22
  };
36
23
  }
37
-
38
24
  function sessionStorageAPI() {
39
25
  return {
40
26
  sessionStorage: {
41
27
  get(widget, key) {
42
28
  const {
43
- $dependencies: { sessionStorage },
44
- $in: {
45
- sessionStorage: { keyPrefix },
29
+ $dependencies: {
30
+ sessionStorage
46
31
  },
32
+ $in: {
33
+ sessionStorage: {
34
+ keyPrefix
35
+ }
36
+ }
47
37
  } = widget;
48
-
49
38
  if (!sessionStorage) {
50
39
  return null;
51
40
  }
52
-
53
41
  try {
54
42
  const item = JSON.parse(sessionStorage.getItem(keyPrefix + key));
55
-
56
43
  if (shouldDeleteItem(item)) {
57
44
  widget.sessionStorage.delete(key);
58
-
59
45
  return undefined;
60
46
  }
61
-
62
47
  return item && typeof item === 'object' ? item.value : undefined;
63
48
  } catch (error) {
64
- throw new Error(
65
- `merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${
66
- keyPrefix + key
67
- }: ${error.message}`,
68
- );
49
+ throw new Error(`merkur.plugin-session-storage.get: Failed to parse a session storage item value identified by the key ${keyPrefix + key}: ${error.message}`);
69
50
  }
70
51
  },
71
-
72
52
  /**
73
53
  * Saves a value under the key.
74
54
  * @param {object} widget A widget object.
@@ -82,78 +62,69 @@ function sessionStorageAPI() {
82
62
  */
83
63
  set(widget, key, value, options) {
84
64
  const {
85
- $dependencies: { sessionStorage },
86
- $in: {
87
- sessionStorage: { keyPrefix },
65
+ $dependencies: {
66
+ sessionStorage
88
67
  },
68
+ $in: {
69
+ sessionStorage: {
70
+ keyPrefix
71
+ }
72
+ }
89
73
  } = widget;
90
-
91
74
  if (!sessionStorage) {
92
75
  return false;
93
76
  }
94
-
95
77
  const item = {
96
78
  created: Date.now(),
97
- value,
79
+ value
98
80
  };
99
-
100
81
  if (options && Number.isFinite(Number.parseInt(options.ttl))) {
101
82
  item.ttl = Number.parseInt(options.ttl);
102
83
  }
103
-
104
84
  if (shouldDeleteItem(item)) {
105
85
  widget.sessionStorage.delete(key);
106
-
107
86
  return true;
108
87
  }
109
-
110
88
  try {
111
89
  sessionStorage.setItem(keyPrefix + key, JSON.stringify(item));
112
90
  } catch (error) {
113
91
  console.error(error);
114
-
115
92
  return false;
116
93
  }
117
-
118
94
  return true;
119
95
  },
120
-
121
96
  delete(widget, key) {
122
97
  const {
123
- $dependencies: { sessionStorage },
124
- $in: {
125
- sessionStorage: { keyPrefix },
98
+ $dependencies: {
99
+ sessionStorage
126
100
  },
101
+ $in: {
102
+ sessionStorage: {
103
+ keyPrefix
104
+ }
105
+ }
127
106
  } = widget;
128
-
129
107
  if (!sessionStorage) {
130
108
  return false;
131
109
  }
132
-
133
110
  sessionStorage.removeItem(keyPrefix + key);
134
-
135
111
  return true;
136
- },
137
- },
112
+ }
113
+ }
138
114
  };
139
115
  }
140
-
141
116
  function getNativeSessionStorage() {
142
117
  return typeof window === 'undefined' ? undefined : window.sessionStorage;
143
118
  }
144
-
145
119
  function shouldDeleteItem(item) {
146
120
  if (!item || !('ttl' in item) || !item.created) {
147
121
  return false;
148
122
  }
149
-
150
123
  if (item.ttl <= 0) {
151
124
  return true;
152
125
  }
153
-
154
126
  const now = Date.now();
155
127
  const age = now - item.created;
156
-
157
128
  return age > item.ttl;
158
129
  }
159
130
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@merkur/plugin-session-storage",
3
- "version": "0.38.0",
3
+ "version": "0.40.0",
4
4
  "description": "Merkur session storage.",
5
5
  "main": "lib/index",
6
6
  "module": "lib/index",
@@ -24,8 +24,7 @@
24
24
  "preversion": "npm test",
25
25
  "test": "jest --no-watchman -c ./jest.config.js",
26
26
  "test:es:version": "es-check es11 ./lib/index.mjs --module && es-check es9 ./lib/index.es9.mjs --module && es-check es9 ./lib/index.es9.cjs --module",
27
- "build": "rollup -c rollup.config.mjs",
28
- "prepare": "npm run build"
27
+ "build": "rollup -c rollup.config.mjs"
29
28
  },
30
29
  "repository": {
31
30
  "type": "git",
@@ -48,10 +47,10 @@
48
47
  },
49
48
  "homepage": "https://merkur.js.org/",
50
49
  "devDependencies": {
51
- "@merkur/core": "^0.38.0"
50
+ "@merkur/core": "^0.40.0"
52
51
  },
53
52
  "peerDependencies": {
54
53
  "@merkur/core": "*"
55
54
  },
56
- "gitHead": "a6e379c0cb887898e34465dc3db9231feb68e6a5"
55
+ "gitHead": "a7bf45d46a5c0fca7130ae6a86e1cd94e5894ca2"
57
56
  }