@nsshunt/stsvueutils 2.0.59 → 2.0.60

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.
@@ -1,14 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __typeError = (msg) => {
3
- throw TypeError(msg);
4
- };
5
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
8
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
9
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
11
- var _debug, _debug2, _debug3, _store, _debug4, _storage;
12
1
  import { inject } from "vue";
13
2
  import { defaultLogger } from "@nsshunt/stsutils";
14
3
  const STSStoragePluginKey = Symbol("storage");
@@ -185,133 +174,120 @@ var ClientStorageType = /* @__PURE__ */ ((ClientStorageType2) => {
185
174
  return ClientStorageType2;
186
175
  })(ClientStorageType || {});
187
176
  class CookieStorage {
188
- constructor() {
189
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
190
- __privateAdd(this, _debug, (message) => {
191
- defaultLogger.debug(message);
192
- });
193
- __publicField(this, "get", (key) => {
194
- const raw = api.get(PREFIX + key);
195
- if (raw) {
196
- return JSON.parse(raw);
197
- } else {
198
- return null;
199
- }
200
- });
201
- __publicField(this, "set", (key, value, options = {}) => {
202
- let cookieAttributes = {};
203
- if ("https:" === window.location.protocol) {
204
- cookieAttributes = {
205
- secure: true,
206
- sameSite: "none"
207
- };
208
- }
209
- if (options && options.daysUntilExpire) {
210
- cookieAttributes.expires = options.daysUntilExpire;
211
- } else {
212
- cookieAttributes.expires = 1;
213
- }
214
- __privateGet(this, _debug).call(this, `CookieStorage.set: key: ${key}, value: [${value}]`);
215
- api.set(PREFIX + key, JSON.stringify(value), cookieAttributes);
216
- });
217
- __publicField(this, "remove", (key) => {
218
- api.remove(PREFIX + key);
219
- });
220
- }
177
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
178
+ #debug = (message) => {
179
+ defaultLogger.debug(message);
180
+ };
181
+ get = (key) => {
182
+ const raw = api.get(PREFIX + key);
183
+ if (raw) {
184
+ return JSON.parse(raw);
185
+ } else {
186
+ return null;
187
+ }
188
+ };
189
+ set = (key, value, options = {}) => {
190
+ let cookieAttributes = {};
191
+ if ("https:" === window.location.protocol) {
192
+ cookieAttributes = {
193
+ secure: true,
194
+ sameSite: "none"
195
+ };
196
+ }
197
+ if (options && options.daysUntilExpire) {
198
+ cookieAttributes.expires = options.daysUntilExpire;
199
+ } else {
200
+ cookieAttributes.expires = 1;
201
+ }
202
+ this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);
203
+ api.set(PREFIX + key, JSON.stringify(value), cookieAttributes);
204
+ };
205
+ remove = (key) => {
206
+ api.remove(PREFIX + key);
207
+ };
221
208
  }
222
- _debug = new WeakMap();
223
209
  class SessionStorage {
224
- constructor() {
225
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
226
- __privateAdd(this, _debug2, (message) => {
227
- defaultLogger.debug(message);
228
- });
229
- __publicField(this, "get", (key) => {
230
- const value = sessionStorage.getItem(PREFIX + key);
231
- if (value) {
232
- return JSON.parse(value);
233
- } else {
234
- return null;
235
- }
236
- });
237
- __publicField(this, "set", (key, value) => {
238
- __privateGet(this, _debug2).call(this, `SessionStorage.set: key: ${key}, value: [${value}]`);
239
- sessionStorage.setItem(PREFIX + key, JSON.stringify(value));
240
- });
241
- __publicField(this, "remove", (key) => {
242
- sessionStorage.removeItem(PREFIX + key);
243
- });
244
- }
210
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
211
+ #debug = (message) => {
212
+ defaultLogger.debug(message);
213
+ };
214
+ get = (key) => {
215
+ const value = sessionStorage.getItem(PREFIX + key);
216
+ if (value) {
217
+ return JSON.parse(value);
218
+ } else {
219
+ return null;
220
+ }
221
+ };
222
+ set = (key, value) => {
223
+ this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);
224
+ sessionStorage.setItem(PREFIX + key, JSON.stringify(value));
225
+ };
226
+ remove = (key) => {
227
+ sessionStorage.removeItem(PREFIX + key);
228
+ };
245
229
  }
246
- _debug2 = new WeakMap();
247
230
  class LocalStorage {
248
- constructor() {
249
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
250
- __privateAdd(this, _debug3, (message) => {
251
- defaultLogger.debug(message);
252
- });
253
- __publicField(this, "get", (key) => {
254
- const value = localStorage.getItem(PREFIX + key);
255
- if (value) {
256
- return JSON.parse(value);
257
- } else {
258
- return null;
259
- }
260
- });
261
- __publicField(this, "set", (key, value) => {
262
- __privateGet(this, _debug3).call(this, `LocalStorage.set: key: ${key}, value: [${value}]`);
263
- localStorage.setItem(PREFIX + key, JSON.stringify(value));
264
- });
265
- __publicField(this, "remove", (key) => {
266
- localStorage.removeItem(PREFIX + key);
267
- });
268
- }
231
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
232
+ #debug = (message) => {
233
+ defaultLogger.debug(message);
234
+ };
235
+ get = (key) => {
236
+ const value = localStorage.getItem(PREFIX + key);
237
+ if (value) {
238
+ return JSON.parse(value);
239
+ } else {
240
+ return null;
241
+ }
242
+ };
243
+ set = (key, value) => {
244
+ this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);
245
+ localStorage.setItem(PREFIX + key, JSON.stringify(value));
246
+ };
247
+ remove = (key) => {
248
+ localStorage.removeItem(PREFIX + key);
249
+ };
269
250
  }
270
- _debug3 = new WeakMap();
271
251
  class MemoryStorage {
272
- constructor() {
273
- __privateAdd(this, _store, {});
274
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
275
- __privateAdd(this, _debug4, (message) => {
276
- defaultLogger.debug(message);
277
- });
278
- __publicField(this, "get", (key) => {
279
- const value = __privateGet(this, _store)[PREFIX + key];
280
- if (value) {
281
- return value;
282
- } else {
283
- return null;
284
- }
285
- });
286
- __publicField(this, "set", (key, value) => {
287
- __privateGet(this, _debug4).call(this, `MemoryStorage.set: key: ${key}, value: [${value}]`);
288
- __privateGet(this, _store)[PREFIX + key] = value;
289
- });
290
- __publicField(this, "remove", (key) => {
291
- delete __privateGet(this, _store)[PREFIX + key];
292
- });
293
- }
252
+ #store = {};
253
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
254
+ #debug = (message) => {
255
+ defaultLogger.debug(message);
256
+ };
257
+ get = (key) => {
258
+ const value = this.#store[PREFIX + key];
259
+ if (value) {
260
+ return value;
261
+ } else {
262
+ return null;
263
+ }
264
+ };
265
+ set = (key, value) => {
266
+ this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);
267
+ this.#store[PREFIX + key] = value;
268
+ };
269
+ remove = (key) => {
270
+ delete this.#store[PREFIX + key];
271
+ };
294
272
  }
295
- _store = new WeakMap();
296
- _debug4 = new WeakMap();
297
273
  class ClientStorageFactory {
274
+ #storage;
298
275
  constructor(options) {
299
- __privateAdd(this, _storage);
300
276
  if (options.usePrefix === false) {
301
277
  PREFIX = "";
302
278
  }
303
279
  switch (options.clientStorageType) {
304
280
  case "SessionStorage":
305
- __privateSet(this, _storage, new SessionStorage());
281
+ this.#storage = new SessionStorage();
306
282
  break;
307
283
  case "LocalStorage":
308
- __privateSet(this, _storage, new LocalStorage());
284
+ this.#storage = new LocalStorage();
309
285
  break;
310
286
  case "CookieStorage":
311
- __privateSet(this, _storage, new CookieStorage());
287
+ this.#storage = new CookieStorage();
312
288
  break;
313
289
  case "MemoryStorage":
314
- __privateSet(this, _storage, new MemoryStorage());
290
+ this.#storage = new MemoryStorage();
315
291
  break;
316
292
  default:
317
293
  throw new Error(`Unknown [${options.clientStorageType}] storage type.`);
@@ -319,10 +295,9 @@ class ClientStorageFactory {
319
295
  return;
320
296
  }
321
297
  GetStorage() {
322
- return __privateGet(this, _storage);
298
+ return this.#storage;
323
299
  }
324
300
  }
325
- _storage = new WeakMap();
326
301
  const useSTSStoragePlugin = () => inject(STSStoragePluginKey);
327
302
  const STSStoragePlugin = {
328
303
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1 +1 @@
1
- {"version":3,"file":"stsvueutils.mjs","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/stsEmitterPlugin.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/stsStoragePlugin.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\nimport { defaultLogger } from '@nsshunt/stsutils';\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n \n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n"],"names":["tinyEmitterModule","tinyEmitter","te.TinyEmitter","converter","ClientStorageType","Cookies","_debug"],"mappings":"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","x_google_ignoreList":[1,3]}
1
+ {"version":3,"file":"stsvueutils.mjs","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/stsEmitterPlugin.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/stsStoragePlugin.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\nimport { defaultLogger } from '@nsshunt/stsutils';\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n \n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n"],"names":["tinyEmitterModule","tinyEmitter","te.TinyEmitter","converter","ClientStorageType","Cookies"],"mappings":"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","x_google_ignoreList":[1,3]}
@@ -1,18 +1,7 @@
1
1
  (function(global, factory) {
2
2
  typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("vue"), require("@nsshunt/stsutils")) : typeof define === "function" && define.amd ? define(["exports", "vue", "@nsshunt/stsutils"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["@nsshunt/stsvueutils"] = {}, global.Vue, global.stsutils));
3
- })(this, function(exports2, vue, stsutils) {
4
- "use strict";var __defProp = Object.defineProperty;
5
- var __typeError = (msg) => {
6
- throw TypeError(msg);
7
- };
8
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
11
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
12
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
14
-
15
- var _debug, _debug2, _debug3, _store, _debug4, _storage;
3
+ })(this, (function(exports2, vue, stsutils) {
4
+ "use strict";
16
5
  const STSStoragePluginKey = Symbol("storage");
17
6
  const STSEmitterPluginKey = Symbol("emitter");
18
7
  var tinyEmitter = { exports: {} };
@@ -187,133 +176,120 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
187
176
  return ClientStorageType2;
188
177
  })(ClientStorageType || {});
189
178
  class CookieStorage {
190
- constructor() {
191
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
192
- __privateAdd(this, _debug, (message) => {
193
- stsutils.defaultLogger.debug(message);
194
- });
195
- __publicField(this, "get", (key) => {
196
- const raw = api.get(PREFIX + key);
197
- if (raw) {
198
- return JSON.parse(raw);
199
- } else {
200
- return null;
201
- }
202
- });
203
- __publicField(this, "set", (key, value, options = {}) => {
204
- let cookieAttributes = {};
205
- if ("https:" === window.location.protocol) {
206
- cookieAttributes = {
207
- secure: true,
208
- sameSite: "none"
209
- };
210
- }
211
- if (options && options.daysUntilExpire) {
212
- cookieAttributes.expires = options.daysUntilExpire;
213
- } else {
214
- cookieAttributes.expires = 1;
215
- }
216
- __privateGet(this, _debug).call(this, `CookieStorage.set: key: ${key}, value: [${value}]`);
217
- api.set(PREFIX + key, JSON.stringify(value), cookieAttributes);
218
- });
219
- __publicField(this, "remove", (key) => {
220
- api.remove(PREFIX + key);
221
- });
222
- }
179
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
180
+ #debug = (message) => {
181
+ stsutils.defaultLogger.debug(message);
182
+ };
183
+ get = (key) => {
184
+ const raw = api.get(PREFIX + key);
185
+ if (raw) {
186
+ return JSON.parse(raw);
187
+ } else {
188
+ return null;
189
+ }
190
+ };
191
+ set = (key, value, options = {}) => {
192
+ let cookieAttributes = {};
193
+ if ("https:" === window.location.protocol) {
194
+ cookieAttributes = {
195
+ secure: true,
196
+ sameSite: "none"
197
+ };
198
+ }
199
+ if (options && options.daysUntilExpire) {
200
+ cookieAttributes.expires = options.daysUntilExpire;
201
+ } else {
202
+ cookieAttributes.expires = 1;
203
+ }
204
+ this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);
205
+ api.set(PREFIX + key, JSON.stringify(value), cookieAttributes);
206
+ };
207
+ remove = (key) => {
208
+ api.remove(PREFIX + key);
209
+ };
223
210
  }
224
- _debug = new WeakMap();
225
211
  class SessionStorage {
226
- constructor() {
227
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
228
- __privateAdd(this, _debug2, (message) => {
229
- stsutils.defaultLogger.debug(message);
230
- });
231
- __publicField(this, "get", (key) => {
232
- const value = sessionStorage.getItem(PREFIX + key);
233
- if (value) {
234
- return JSON.parse(value);
235
- } else {
236
- return null;
237
- }
238
- });
239
- __publicField(this, "set", (key, value) => {
240
- __privateGet(this, _debug2).call(this, `SessionStorage.set: key: ${key}, value: [${value}]`);
241
- sessionStorage.setItem(PREFIX + key, JSON.stringify(value));
242
- });
243
- __publicField(this, "remove", (key) => {
244
- sessionStorage.removeItem(PREFIX + key);
245
- });
246
- }
212
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
213
+ #debug = (message) => {
214
+ stsutils.defaultLogger.debug(message);
215
+ };
216
+ get = (key) => {
217
+ const value = sessionStorage.getItem(PREFIX + key);
218
+ if (value) {
219
+ return JSON.parse(value);
220
+ } else {
221
+ return null;
222
+ }
223
+ };
224
+ set = (key, value) => {
225
+ this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);
226
+ sessionStorage.setItem(PREFIX + key, JSON.stringify(value));
227
+ };
228
+ remove = (key) => {
229
+ sessionStorage.removeItem(PREFIX + key);
230
+ };
247
231
  }
248
- _debug2 = new WeakMap();
249
232
  class LocalStorage {
250
- constructor() {
251
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
252
- __privateAdd(this, _debug3, (message) => {
253
- stsutils.defaultLogger.debug(message);
254
- });
255
- __publicField(this, "get", (key) => {
256
- const value = localStorage.getItem(PREFIX + key);
257
- if (value) {
258
- return JSON.parse(value);
259
- } else {
260
- return null;
261
- }
262
- });
263
- __publicField(this, "set", (key, value) => {
264
- __privateGet(this, _debug3).call(this, `LocalStorage.set: key: ${key}, value: [${value}]`);
265
- localStorage.setItem(PREFIX + key, JSON.stringify(value));
266
- });
267
- __publicField(this, "remove", (key) => {
268
- localStorage.removeItem(PREFIX + key);
269
- });
270
- }
233
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
234
+ #debug = (message) => {
235
+ stsutils.defaultLogger.debug(message);
236
+ };
237
+ get = (key) => {
238
+ const value = localStorage.getItem(PREFIX + key);
239
+ if (value) {
240
+ return JSON.parse(value);
241
+ } else {
242
+ return null;
243
+ }
244
+ };
245
+ set = (key, value) => {
246
+ this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);
247
+ localStorage.setItem(PREFIX + key, JSON.stringify(value));
248
+ };
249
+ remove = (key) => {
250
+ localStorage.removeItem(PREFIX + key);
251
+ };
271
252
  }
272
- _debug3 = new WeakMap();
273
253
  class MemoryStorage {
274
- constructor() {
275
- __privateAdd(this, _store, {});
276
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
277
- __privateAdd(this, _debug4, (message) => {
278
- stsutils.defaultLogger.debug(message);
279
- });
280
- __publicField(this, "get", (key) => {
281
- const value = __privateGet(this, _store)[PREFIX + key];
282
- if (value) {
283
- return value;
284
- } else {
285
- return null;
286
- }
287
- });
288
- __publicField(this, "set", (key, value) => {
289
- __privateGet(this, _debug4).call(this, `MemoryStorage.set: key: ${key}, value: [${value}]`);
290
- __privateGet(this, _store)[PREFIX + key] = value;
291
- });
292
- __publicField(this, "remove", (key) => {
293
- delete __privateGet(this, _store)[PREFIX + key];
294
- });
295
- }
254
+ #store = {};
255
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
256
+ #debug = (message) => {
257
+ stsutils.defaultLogger.debug(message);
258
+ };
259
+ get = (key) => {
260
+ const value = this.#store[PREFIX + key];
261
+ if (value) {
262
+ return value;
263
+ } else {
264
+ return null;
265
+ }
266
+ };
267
+ set = (key, value) => {
268
+ this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);
269
+ this.#store[PREFIX + key] = value;
270
+ };
271
+ remove = (key) => {
272
+ delete this.#store[PREFIX + key];
273
+ };
296
274
  }
297
- _store = new WeakMap();
298
- _debug4 = new WeakMap();
299
275
  class ClientStorageFactory {
276
+ #storage;
300
277
  constructor(options) {
301
- __privateAdd(this, _storage);
302
278
  if (options.usePrefix === false) {
303
279
  PREFIX = "";
304
280
  }
305
281
  switch (options.clientStorageType) {
306
282
  case "SessionStorage":
307
- __privateSet(this, _storage, new SessionStorage());
283
+ this.#storage = new SessionStorage();
308
284
  break;
309
285
  case "LocalStorage":
310
- __privateSet(this, _storage, new LocalStorage());
286
+ this.#storage = new LocalStorage();
311
287
  break;
312
288
  case "CookieStorage":
313
- __privateSet(this, _storage, new CookieStorage());
289
+ this.#storage = new CookieStorage();
314
290
  break;
315
291
  case "MemoryStorage":
316
- __privateSet(this, _storage, new MemoryStorage());
292
+ this.#storage = new MemoryStorage();
317
293
  break;
318
294
  default:
319
295
  throw new Error(`Unknown [${options.clientStorageType}] storage type.`);
@@ -321,10 +297,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
321
297
  return;
322
298
  }
323
299
  GetStorage() {
324
- return __privateGet(this, _storage);
300
+ return this.#storage;
325
301
  }
326
302
  }
327
- _storage = new WeakMap();
328
303
  const useSTSStoragePlugin = () => vue.inject(STSStoragePluginKey);
329
304
  const STSStoragePlugin = {
330
305
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -347,5 +322,5 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
347
322
  exports2.useSTSEmitterPlugin = useSTSEmitterPlugin;
348
323
  exports2.useSTSStoragePlugin = useSTSStoragePlugin;
349
324
  Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
350
- });
325
+ }));
351
326
  //# sourceMappingURL=stsvueutils.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stsvueutils.umd.js","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/stsEmitterPlugin.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/stsStoragePlugin.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\nimport { defaultLogger } from '@nsshunt/stsutils';\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n \n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n"],"names":["self","tinyEmitterModule","inject","tinyEmitter","te.TinyEmitter","converter","ClientStorageType","defaultLogger","Cookies","_debug"],"mappings":"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","x_google_ignoreList":[1,3]}
1
+ {"version":3,"file":"stsvueutils.umd.js","sources":["../src/plugins/stsPluginKeys.ts","../node_modules/tiny-emitter/index.js","../src/plugins/stsEmitterPlugin.ts","../node_modules/js-cookie/dist/js.cookie.mjs","../src/plugins/stsStorage.ts","../src/plugins/stsStoragePlugin.ts"],"sourcesContent":["// Individual STS plugin keys for provide/inject logic\nexport const STSStoragePluginKey = Symbol('storage')\nexport const STSEmitterPluginKey = Symbol('emitter')\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n","import { inject } from 'vue'\n\nimport { STSEmitterPluginKey } from './stsPluginKeys';\n\nimport * as te from 'tiny-emitter';\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSEmitterPlugin = (): te.TinyEmitter => inject(STSEmitterPluginKey) as te.TinyEmitter\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSEmitterPlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: (app: any) => {\n const tinyEmitter: te.TinyEmitter = new te.TinyEmitter();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSEmitterPluginKey] = tinyEmitter;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSEmitterPluginKey, tinyEmitter);\n }\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import Cookies from 'js-cookie'\nimport type { JSONObject } from \"@nsshunt/stsutils\";\nimport { defaultLogger } from '@nsshunt/stsutils';\n\nlet PREFIX = '_ststra_';\n\nexport interface IStsStorage<T> {\n\tget(key: string): T | null\n\tset(key: string, value: T, options?: JSONObject): void\n\tremove(key: string): void\n}\n\nexport enum ClientStorageType {\n\tLOCAL_STORAGE = 'LocalStorage', //@@ todo\n\tSESSION_STORAGE = 'SessionStorage',\n\tCOOKIE_STORAGE = 'CookieStorage',\n\tMEMORY_STORAGE = 'MemoryStorage' //@@ todo\n}\n\n\nclass CookieStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n \n get = (key: string): T | null => {\n const raw = Cookies.get(PREFIX + key);\n if (raw) {\n return JSON.parse(raw);\n } else {\n return null;\n }\n }\n\n set = (key: string, value: T, options: JSONObject = { }) => {\n let cookieAttributes: Cookies.CookieAttributes = { };\n if ('https:' === window.location.protocol) {\n cookieAttributes = {\n secure: true,\n sameSite: 'none'\n };\n }\n\t\n if (options && options.daysUntilExpire) {\n cookieAttributes.expires = options.daysUntilExpire;\n } else {\n cookieAttributes.expires = 1;\n }\n this.#debug(`CookieStorage.set: key: ${key}, value: [${value}]`);\n Cookies.set(PREFIX + key, JSON.stringify(value), cookieAttributes);\n }\n\n remove = (key: string): void => {\n Cookies.remove(PREFIX + key);\n }\n}\n\nclass SessionStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = sessionStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`SessionStorage.set: key: ${key}, value: [${value}]`);\n sessionStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n sessionStorage.removeItem(PREFIX + key);\n }\n}\n\nclass LocalStorage<T> implements IStsStorage<T>\n{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: string | null = localStorage.getItem(PREFIX + key);\n if (value) {\n return JSON.parse(value);\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`LocalStorage.set: key: ${key}, value: [${value}]`);\n localStorage.setItem(PREFIX + key, JSON.stringify(value));\n }\n \n remove = (key: string): void => {\n localStorage.removeItem(PREFIX + key);\n }\n}\n\nclass MemoryStorage<T> implements IStsStorage<T>\n{\n #store: Record<string, T> = { };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n #debug = (message: any) => {\n defaultLogger.debug(message);\n }\n\n get = (key: string): T | null => {\n const value: T = this.#store[PREFIX + key];\n if (value) {\n return value;\n } else {\n return null;\n }\n }\n \n set = (key: string, value: T): void => {\n this.#debug(`MemoryStorage.set: key: ${key}, value: [${value}]`);\n this.#store[PREFIX + key] = value;\n }\n \n remove = (key: string): void => {\n delete this.#store[PREFIX + key];\n }\n}\n\nexport interface IClientStorageOptions {\n\tclientStorageType: ClientStorageType\n\tusePrefix: boolean\n\tstorageOptions?: JSONObject\n}\n\nexport class ClientStorageFactory<T>\n{\n #storage: IStsStorage<T>;\n\n constructor(options: IClientStorageOptions) {\n if (options.usePrefix === false) {\n PREFIX = '';\n }\n switch (options.clientStorageType) {\n case ClientStorageType.SESSION_STORAGE :\n this.#storage = new SessionStorage<T>();\n break;\n case ClientStorageType.LOCAL_STORAGE :\n this.#storage = new LocalStorage<T>();\n break;\n case ClientStorageType.COOKIE_STORAGE :\n this.#storage = new CookieStorage<T>();\n break;\n case ClientStorageType.MEMORY_STORAGE :\n this.#storage = new MemoryStorage<T>();\n break;\n default:\n throw new Error(`Unknown [${options.clientStorageType}] storage type.`);\n }\n return;\n }\n\n GetStorage(): IStsStorage<T>\n {\n return this.#storage;\n }\n}\n","import { inject } from \"vue\";\n\n// Declare STS plugin keys (for provide)\n// https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\nimport { STSStoragePluginKey } from './stsPluginKeys';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage'\n\nexport interface ISTSStoragePluginOptions {\n\tclientStorageType: ClientStorageType\n}\n\n// Create our use composable. This pattern is also used by vue router library with the useRoute and useRouter composables.\n// https://skirtles-code.github.io/vue-examples/patterns/global-properties.html#application-level-provide-inject\nexport const useSTSStoragePlugin = <T>(): IStsStorage<T> => inject(STSStoragePluginKey) as IStsStorage<T>\n\n// https://learnvue.co/2021/06/building-your-own-vue-3-plugin-a-full-guide/\nexport const STSStoragePlugin = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n install: <T>(app: any, options: ISTSStoragePluginOptions) => {\n const cs = new ClientStorageFactory<T>({clientStorageType: options.clientStorageType, usePrefix: true});\n\n const pluginInstance = cs.GetStorage();\n\n // Assign plugin instance to global $sts object (legacy method - see below)\n // This allows access to the $sts property within templates.\n // Also, outside of script setup or setup(), this.$sts can be used.\n // If access is required within script setup, use the useSTSStoragePlugin composable function. Example;\n // import { useSTSStoragePlugin } from './storage';\n // const STSStorageString = useSTSStoragePlugin<string>();\n //\n // Note: An alternate to get access to this global is to use the hidden API call such as;\n // const app: ComponentInternalInstance | null = getCurrentInstance();\n // Assign the $sts plugin helper (legacy method - see below (injects) for updated usage)\n // let $sts: any\n // if (app) $sts = app.appContext.config.globalProperties.$sts;\n\n if (!app.config.globalProperties.$sts) {\n app.config.globalProperties.$sts = { };\n }\n app.config.globalProperties.$sts[STSStoragePluginKey] = pluginInstance;\n\n // Assign App level provide for this STS plugin using symbol keys\n // https://vuejs.org/guide/components/provide-inject.html#working-with-symbol-keys\n app.provide(STSStoragePluginKey, pluginInstance);\n }\n}\n"],"names":["self","tinyEmitterModule","inject","tinyEmitter","te.TinyEmitter","converter","ClientStorageType","defaultLogger","Cookies"],"mappings":"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","x_google_ignoreList":[1,3]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsvueutils",
3
- "version": "2.0.59",
3
+ "version": "2.0.60",
4
4
  "description": "Vue 3 framework utilities and plugins",
5
5
  "main": "./dist/stsvueutils.umd.js",
6
6
  "module": "./dist/stsvueutils.mjs",
@@ -46,8 +46,8 @@
46
46
  },
47
47
  "homepage": "https://github.com/nsshunt/stsvueutils#readme",
48
48
  "dependencies": {
49
- "@nsshunt/stsobservability": "^1.0.111",
50
- "@nsshunt/stsutils": "^1.19.40",
49
+ "@nsshunt/stsobservability": "^1.0.112",
50
+ "@nsshunt/stsutils": "^1.19.45",
51
51
  "chalk": "^4.1.2",
52
52
  "js-cookie": "^3.0.5",
53
53
  "pinia": "^3.0.3",
@@ -57,16 +57,16 @@
57
57
  "@types/js-cookie": "^3.0.6",
58
58
  "@typescript-eslint/eslint-plugin": "^8.45.0",
59
59
  "@typescript-eslint/parser": "^8.45.0",
60
- "@vitejs/plugin-vue": "^5.2.4",
60
+ "@vitejs/plugin-vue": "^6.0.1",
61
61
  "eslint": "^9.36.0",
62
62
  "eslint-plugin-vue": "^10.5.0",
63
63
  "globals": "^16.4.0",
64
- "typescript": "^5.9.2",
65
- "vite": "^6.3.5",
64
+ "typescript": "^5.9.3",
65
+ "vite": "^7.1.7",
66
66
  "vite-plugin-dts": "^4.5.4",
67
67
  "vitest": "^3.2.4",
68
68
  "vue": "^3.5.22",
69
69
  "vue-eslint-parser": "^10.2.0",
70
- "vue-tsc": "^2.2.10"
70
+ "vue-tsc": "^3.1.0"
71
71
  }
72
72
  }