@nsshunt/stsvueutils 2.0.96 → 2.0.98

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -80,11 +80,14 @@ var STSEmitterPlugin = { install: (app) => {
80
80
  } };
81
81
  //#endregion
82
82
  //#region node_modules/js-cookie/dist/js.cookie.mjs
83
- /*! js-cookie v3.0.5 | MIT */
83
+ /*! js-cookie v3.0.6 | MIT */
84
84
  function assign(target) {
85
85
  for (var i = 1; i < arguments.length; i++) {
86
86
  var source = arguments[i];
87
- for (var key in source) target[key] = source[key];
87
+ for (var key in source) {
88
+ if (key === "__proto__") continue;
89
+ target[key] = source[key];
90
+ }
88
91
  }
89
92
  return target;
90
93
  }
@@ -122,9 +125,9 @@ function init(converter, defaultAttributes) {
122
125
  var value = parts.slice(1).join("=");
123
126
  try {
124
127
  var found = decodeURIComponent(parts[0]);
125
- jar[found] = converter.read(value, found);
128
+ if (!(found in jar)) jar[found] = converter.read(value, found);
126
129
  if (name === found) break;
127
- } catch (e) {}
130
+ } catch {}
128
131
  }
129
132
  return name ? jar[name] : jar;
130
133
  }
@@ -237,16 +240,16 @@ var ClientStorageFactory = class {
237
240
  constructor(options) {
238
241
  if (options.usePrefix === false) PREFIX = "";
239
242
  switch (options.clientStorageType) {
240
- case ClientStorageType.SESSION_STORAGE:
243
+ case "SessionStorage":
241
244
  this.#storage = new SessionStorage();
242
245
  break;
243
- case ClientStorageType.LOCAL_STORAGE:
246
+ case "LocalStorage":
244
247
  this.#storage = new LocalStorage();
245
248
  break;
246
- case ClientStorageType.COOKIE_STORAGE:
249
+ case "CookieStorage":
247
250
  this.#storage = new CookieStorage();
248
251
  break;
249
- case ClientStorageType.MEMORY_STORAGE:
252
+ case "MemoryStorage":
250
253
  this.#storage = new MemoryStorage();
251
254
  break;
252
255
  default: throw new Error(`Unknown [${options.clientStorageType}] storage type.`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["#debug","#store","#storage"],"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.js';\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.js';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage.js'\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"],"x_google_ignoreList":[1,3],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["#debug","#store","#storage"],"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.js';\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.6 | MIT */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (key === '__proto__') continue\n target[key] = source[key];\n }\n }\n return target\n}\n\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\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 if (!(found in jar)) jar[found] = converter.read(value, found);\n if (name === found) {\n break\n }\n } catch {\n // Do nothing...\n }\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\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.js';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage.js'\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"],"x_google_ignoreList":[1,3],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -79,11 +79,14 @@ var STSEmitterPlugin = { install: (app) => {
79
79
  } };
80
80
  //#endregion
81
81
  //#region node_modules/js-cookie/dist/js.cookie.mjs
82
- /*! js-cookie v3.0.5 | MIT */
82
+ /*! js-cookie v3.0.6 | MIT */
83
83
  function assign(target) {
84
84
  for (var i = 1; i < arguments.length; i++) {
85
85
  var source = arguments[i];
86
- for (var key in source) target[key] = source[key];
86
+ for (var key in source) {
87
+ if (key === "__proto__") continue;
88
+ target[key] = source[key];
89
+ }
87
90
  }
88
91
  return target;
89
92
  }
@@ -121,9 +124,9 @@ function init(converter, defaultAttributes) {
121
124
  var value = parts.slice(1).join("=");
122
125
  try {
123
126
  var found = decodeURIComponent(parts[0]);
124
- jar[found] = converter.read(value, found);
127
+ if (!(found in jar)) jar[found] = converter.read(value, found);
125
128
  if (name === found) break;
126
- } catch (e) {}
129
+ } catch {}
127
130
  }
128
131
  return name ? jar[name] : jar;
129
132
  }
@@ -236,16 +239,16 @@ var ClientStorageFactory = class {
236
239
  constructor(options) {
237
240
  if (options.usePrefix === false) PREFIX = "";
238
241
  switch (options.clientStorageType) {
239
- case ClientStorageType.SESSION_STORAGE:
242
+ case "SessionStorage":
240
243
  this.#storage = new SessionStorage();
241
244
  break;
242
- case ClientStorageType.LOCAL_STORAGE:
245
+ case "LocalStorage":
243
246
  this.#storage = new LocalStorage();
244
247
  break;
245
- case ClientStorageType.COOKIE_STORAGE:
248
+ case "CookieStorage":
246
249
  this.#storage = new CookieStorage();
247
250
  break;
248
- case ClientStorageType.MEMORY_STORAGE:
251
+ case "MemoryStorage":
249
252
  this.#storage = new MemoryStorage();
250
253
  break;
251
254
  default: throw new Error(`Unknown [${options.clientStorageType}] storage type.`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["#debug","#store","#storage"],"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.js';\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.js';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage.js'\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"],"x_google_ignoreList":[1,3],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["#debug","#store","#storage"],"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.js';\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.6 | MIT */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (key === '__proto__') continue\n target[key] = source[key];\n }\n }\n return target\n}\n\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\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 if (!(found in jar)) jar[found] = converter.read(value, found);\n if (name === found) {\n break\n }\n } catch {\n // Do nothing...\n }\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\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.js';\n\nimport { ClientStorageType, ClientStorageFactory, type IStsStorage } from './stsStorage.js'\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"],"x_google_ignoreList":[1,3],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsvueutils",
3
- "version": "2.0.96",
3
+ "version": "2.0.98",
4
4
  "description": "Vue 3 framework utilities and plugins",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -48,25 +48,25 @@
48
48
  },
49
49
  "homepage": "https://github.com/nsshunt/stsvueutils#readme",
50
50
  "dependencies": {
51
- "@nsshunt/stsutils": "^1.19.103",
52
- "js-cookie": "^3.0.5",
51
+ "@nsshunt/stsutils": "^1.19.105",
52
+ "js-cookie": "^3.0.6",
53
53
  "tiny-emitter": "^2.1.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/js-cookie": "^3.0.6",
57
- "@typescript-eslint/eslint-plugin": "^8.59.1",
58
- "@typescript-eslint/parser": "^8.59.1",
59
- "@vitejs/plugin-vue": "^6.0.6",
60
- "eslint": "^10.2.1",
61
- "eslint-plugin-vue": "^10.9.0",
62
- "globals": "^17.5.0",
57
+ "@typescript-eslint/eslint-plugin": "^8.59.3",
58
+ "@typescript-eslint/parser": "^8.59.3",
59
+ "@vitejs/plugin-vue": "^6.0.7",
60
+ "eslint": "^10.4.0",
61
+ "eslint-plugin-vue": "^10.9.1",
62
+ "globals": "^17.6.0",
63
63
  "typescript": "^6.0.3",
64
- "vite": "^8.0.10",
64
+ "vite": "^8.0.13",
65
65
  "vite-plugin-dts": "^4.5.4",
66
- "vitest": "^4.1.5",
67
- "vue": "^3.5.33",
66
+ "vitest": "^4.1.6",
67
+ "vue": "^3.5.34",
68
68
  "vue-eslint-parser": "^10.4.0",
69
- "vue-tsc": "^3.2.7"
69
+ "vue-tsc": "^3.2.9"
70
70
  },
71
71
  "packageManager": "yarn@4.13.0"
72
72
  }