@fast-china/utils 1.0.32 → 1.0.34

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.
Files changed (94) hide show
  1. package/README.md +4 -4
  2. package/README.zh.md +3 -3
  3. package/dist/index.global.js +135 -151
  4. package/dist/index.global.js.map +1 -1
  5. package/dist/index.global.min.js +1 -37
  6. package/dist/index.global.min.js.map +1 -1
  7. package/es/array/index.mjs +1 -52
  8. package/es/array/index.mjs.map +1 -1
  9. package/es/base64/index.mjs +1 -137
  10. package/es/base64/index.mjs.map +1 -1
  11. package/es/click/index.mjs +1 -81
  12. package/es/click/index.mjs.map +1 -1
  13. package/es/color/index.mjs +1 -60
  14. package/es/color/index.mjs.map +1 -1
  15. package/es/console/index.mjs +1 -65
  16. package/es/console/index.mjs.map +1 -1
  17. package/es/crypto/index.mjs +1 -105
  18. package/es/crypto/index.mjs.map +1 -1
  19. package/es/date/index.mjs +1 -267
  20. package/es/date/index.mjs.map +1 -1
  21. package/es/dom/index.mjs +1 -5
  22. package/es/dom/index.mjs.map +1 -1
  23. package/es/dom/style.mjs +1 -34
  24. package/es/dom/style.mjs.map +1 -1
  25. package/es/env/index.mjs +1 -37
  26. package/es/env/index.mjs.map +1 -1
  27. package/es/error/index.mjs +1 -9
  28. package/es/error/index.mjs.map +1 -1
  29. package/es/identity/index.mjs +1 -34
  30. package/es/identity/index.mjs.map +1 -1
  31. package/es/index.mjs +1 -59
  32. package/es/index.mjs.map +1 -1
  33. package/es/object/index.mjs +1 -45
  34. package/es/object/index.mjs.map +1 -1
  35. package/es/storage/index.mjs +1 -307
  36. package/es/storage/index.mjs.map +1 -1
  37. package/es/string/index.mjs +1 -314
  38. package/es/string/index.mjs.map +1 -1
  39. package/es/vue/emits.d.ts +8 -0
  40. package/es/vue/emits.mjs +2 -0
  41. package/es/vue/emits.mjs.map +1 -0
  42. package/es/vue/expose.mjs +1 -7
  43. package/es/vue/expose.mjs.map +1 -1
  44. package/es/vue/func.mjs +1 -25
  45. package/es/vue/func.mjs.map +1 -1
  46. package/es/vue/index.d.ts +1 -0
  47. package/es/vue/index.mjs +1 -19
  48. package/es/vue/index.mjs.map +1 -1
  49. package/es/vue/install.mjs +1 -30
  50. package/es/vue/install.mjs.map +1 -1
  51. package/es/vue/props.mjs +1 -14
  52. package/es/vue/props.mjs.map +1 -1
  53. package/es/vue/slots.mjs +1 -6
  54. package/es/vue/slots.mjs.map +1 -1
  55. package/es/vue/useRender.mjs +1 -12
  56. package/es/vue/useRender.mjs.map +1 -1
  57. package/es/vue/with.mjs +1 -6
  58. package/es/vue/with.mjs.map +1 -1
  59. package/lib/array/index.js +1 -1
  60. package/lib/array/index.js.map +1 -1
  61. package/lib/base64/index.js +1 -1
  62. package/lib/base64/index.js.map +1 -1
  63. package/lib/click/index.js +1 -1
  64. package/lib/click/index.js.map +1 -1
  65. package/lib/color/index.js.map +1 -1
  66. package/lib/console/index.js +1 -1
  67. package/lib/console/index.js.map +1 -1
  68. package/lib/crypto/index.js.map +1 -1
  69. package/lib/date/index.js.map +1 -1
  70. package/lib/dom/style.js +1 -1
  71. package/lib/dom/style.js.map +1 -1
  72. package/lib/env/index.js.map +1 -1
  73. package/lib/error/index.js.map +1 -1
  74. package/lib/identity/index.js +1 -1
  75. package/lib/identity/index.js.map +1 -1
  76. package/lib/index.js +1 -1
  77. package/lib/object/index.js +1 -1
  78. package/lib/object/index.js.map +1 -1
  79. package/lib/storage/index.js +1 -1
  80. package/lib/storage/index.js.map +1 -1
  81. package/lib/string/index.js +1 -1
  82. package/lib/string/index.js.map +1 -1
  83. package/lib/vue/emits.d.ts +8 -0
  84. package/lib/vue/emits.js +2 -0
  85. package/lib/vue/emits.js.map +1 -0
  86. package/lib/vue/func.js +1 -1
  87. package/lib/vue/func.js.map +1 -1
  88. package/lib/vue/index.d.ts +1 -0
  89. package/lib/vue/index.js +1 -1
  90. package/lib/vue/install.js.map +1 -1
  91. package/lib/vue/props.js +1 -1
  92. package/lib/vue/props.js.map +1 -1
  93. package/lib/vue/useRender.js.map +1 -1
  94. package/package.json +6 -6
@@ -1,35 +1,2 @@
1
- import { reactive } from "vue";
2
- import { Local } from "../storage/index.mjs";
3
- import { stringUtil } from "../string/index.mjs";
4
- const state = reactive({
5
- cacheKey: "__DEVICE_ID",
6
- deviceId: ""
7
- });
8
- const uuidRegExp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
9
- const makeIdentity = (deviceID) => {
10
- deviceID ?? (deviceID = state.deviceId);
11
- if (deviceID && uuidRegExp.test(deviceID)) {
12
- Local.set(state.cacheKey, deviceID);
13
- state.deviceId = deviceID;
14
- return state.deviceId;
15
- }
16
- deviceID = Local.get(state.cacheKey);
17
- if (deviceID && uuidRegExp.test(deviceID)) {
18
- state.deviceId = deviceID;
19
- return deviceID;
20
- }
21
- deviceID = stringUtil.generateUUID();
22
- Local.set(state.cacheKey, deviceID);
23
- state.deviceId = deviceID;
24
- return deviceID;
25
- };
26
- const useIdentity = () => {
27
- return {
28
- ...state,
29
- makeIdentity
30
- };
31
- };
32
- export {
33
- useIdentity
34
- };
1
+ import{reactive as e}from"vue";import{Local as t}from"../storage/index.mjs";import{stringUtil as c}from"../string/index.mjs";const d=e({cacheKey:"__DEVICE_ID",deviceId:""}),i=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,a=e=>(e??=d.deviceId,e&&i.test(e)?(t.set(d.cacheKey,e),d.deviceId=e,d.deviceId):(e=t.get(d.cacheKey))&&i.test(e)?(d.deviceId=e,e):(e=c.generateUUID(),t.set(d.cacheKey,e),d.deviceId=e,e)),r=()=>({...d,makeIdentity:a});export{r as useIdentity};
35
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/identity/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { Local } from \"../storage\";\nimport { stringUtil } from \"../string\";\n\nconst state = reactive({\n\tcacheKey: \"__DEVICE_ID\",\n\tdeviceId: \"\",\n});\n\nconst uuidRegExp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * 生成设备Id\n * @param deviceID 覆盖的设备Id\n * @returns\n */\nconst makeIdentity = (deviceID?: string): string => {\n\tdeviceID ??= state.deviceId;\n\t// 判断是否存在\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tLocal.set(state.cacheKey, deviceID);\n\t\tstate.deviceId = deviceID;\n\t\treturn state.deviceId;\n\t}\n\t// 生成浏览器唯一 UUID\n\tdeviceID = Local.get(state.cacheKey);\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tstate.deviceId = deviceID;\n\t\treturn deviceID;\n\t}\n\tdeviceID = stringUtil.generateUUID();\n\tLocal.set(state.cacheKey, deviceID);\n\tstate.deviceId = deviceID;\n\treturn deviceID;\n};\n\nexport const useIdentity = (): typeof state & { makeIdentity: typeof makeIdentity } => {\n\treturn {\n\t\t...state,\n\t\tmakeIdentity,\n\t};\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,QAAQ,SAAS;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AACX,CAAC;AAED,MAAM,aAAa;AAOnB,MAAM,eAAe,CAAC,aAA8B;AACnD,0BAAa,MAAM;AAEnB,MAAI,YAAY,WAAW,KAAK,QAAQ,GAAG;AACpC,UAAA,IAAI,MAAM,UAAU,QAAQ;AAClC,UAAM,WAAW;AACjB,WAAO,MAAM;AAAA,EAAA;AAGH,aAAA,MAAM,IAAI,MAAM,QAAQ;AACnC,MAAI,YAAY,WAAW,KAAK,QAAQ,GAAG;AAC1C,UAAM,WAAW;AACV,WAAA;AAAA,EAAA;AAER,aAAW,WAAW,aAAa;AAC7B,QAAA,IAAI,MAAM,UAAU,QAAQ;AAClC,QAAM,WAAW;AACV,SAAA;AACR;AAEO,MAAM,cAAc,MAA4D;AAC/E,SAAA;AAAA,IACN,GAAG;AAAA,IACH;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/identity/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { Local } from \"../storage\";\nimport { stringUtil } from \"../string\";\n\nconst state = reactive({\n\tcacheKey: \"__DEVICE_ID\",\n\tdeviceId: \"\",\n});\n\nconst uuidRegExp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * 生成设备Id\n * @param deviceID 覆盖的设备Id\n * @returns\n */\nconst makeIdentity = (deviceID?: string): string => {\n\tdeviceID ??= state.deviceId;\n\t// 判断是否存在\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tLocal.set(state.cacheKey, deviceID);\n\t\tstate.deviceId = deviceID;\n\t\treturn state.deviceId;\n\t}\n\t// 生成浏览器唯一 UUID\n\tdeviceID = Local.get(state.cacheKey);\n\tif (deviceID && uuidRegExp.test(deviceID)) {\n\t\tstate.deviceId = deviceID;\n\t\treturn deviceID;\n\t}\n\tdeviceID = stringUtil.generateUUID();\n\tLocal.set(state.cacheKey, deviceID);\n\tstate.deviceId = deviceID;\n\treturn deviceID;\n};\n\nexport const useIdentity = (): typeof state & { makeIdentity: typeof makeIdentity } => {\n\treturn {\n\t\t...state,\n\t\tmakeIdentity,\n\t};\n};\n"],"names":["state","reactive","cacheKey","deviceId","uuidRegExp","makeIdentity","deviceID","test","Local","set","get","stringUtil","generateUUID","useIdentity"],"mappings":"6HAIA,MAAMA,EAAQC,EAAS,CACtBC,SAAU,cACVC,SAAU,KAGLC,EAAa,kEAObC,EAAgBC,IACrBA,IAAaN,EAAMG,SAEfG,GAAYF,EAAWG,KAAKD,IAC/BE,EAAMC,IAAIT,EAAME,SAAUI,GAC1BN,EAAMG,SAAWG,EACVN,EAAMG,WAGdG,EAAWE,EAAME,IAAIV,EAAME,YACXE,EAAWG,KAAKD,IAC/BN,EAAMG,SAAWG,EACVA,IAERA,EAAWK,EAAWC,eACtBJ,EAAMC,IAAIT,EAAME,SAAUI,GAC1BN,EAAMG,SAAWG,EACVA,IAGKO,EAAc,KACnB,IACHb,EACHK"}
package/es/index.mjs CHANGED
@@ -1,60 +1,2 @@
1
- import { arrayUtil } from "./array/index.mjs";
2
- import { base64Util } from "./base64/index.mjs";
3
- import { clickUtil } from "./click/index.mjs";
4
- import { colorUtil } from "./color/index.mjs";
5
- import { consoleDebug, consoleError, consoleLog, consoleWarn, throwError, useConsole } from "./console/index.mjs";
6
- import { cryptoUtil } from "./crypto/index.mjs";
7
- import { dateUtil } from "./date/index.mjs";
8
- import "./dom/index.mjs";
9
- import { envUtil } from "./env/index.mjs";
10
- import { FastError } from "./error/index.mjs";
11
- import { useIdentity } from "./identity/index.mjs";
12
- import { objectUtil } from "./object/index.mjs";
13
- import { CACHE_EXPIRE_SUFFIX, CACHE_PREFIX, Local, Session, useStorage } from "./storage/index.mjs";
14
- import { stringUtil } from "./string/index.mjs";
15
- import "./vue/index.mjs";
16
- import { addUnit, styleToString } from "./dom/style.mjs";
17
- import { useExpose } from "./vue/expose.mjs";
18
- import { execFunction } from "./vue/func.mjs";
19
- import { withInstall, withInstallDirective, withNoopInstall } from "./vue/install.mjs";
20
- import { definePropType, useProps } from "./vue/props.mjs";
21
- import { makeSlots } from "./vue/slots.mjs";
22
- import { useRender } from "./vue/useRender.mjs";
23
- import { withDefineType } from "./vue/with.mjs";
24
- export {
25
- CACHE_EXPIRE_SUFFIX,
26
- CACHE_PREFIX,
27
- FastError,
28
- Local,
29
- Session,
30
- addUnit,
31
- arrayUtil,
32
- base64Util,
33
- clickUtil,
34
- colorUtil,
35
- consoleDebug,
36
- consoleError,
37
- consoleLog,
38
- consoleWarn,
39
- cryptoUtil,
40
- dateUtil,
41
- definePropType,
42
- envUtil,
43
- execFunction,
44
- makeSlots,
45
- objectUtil,
46
- stringUtil,
47
- styleToString,
48
- throwError,
49
- useConsole,
50
- useExpose,
51
- useIdentity,
52
- useProps,
53
- useRender,
54
- useStorage,
55
- withDefineType,
56
- withInstall,
57
- withInstallDirective,
58
- withNoopInstall
59
- };
1
+ import{arrayUtil as m}from"./array/index.mjs";import{base64Util as o}from"./base64/index.mjs";import{clickUtil as r}from"./click/index.mjs";import{colorUtil as i}from"./color/index.mjs";import{consoleDebug as e,consoleError as t,consoleLog as s,consoleWarn as p,throwError as j,useConsole as f}from"./console/index.mjs";import{cryptoUtil as n}from"./crypto/index.mjs";import{dateUtil as d}from"./date/index.mjs";import"./dom/index.mjs";import{envUtil as x}from"./env/index.mjs";import{FastError as u}from"./error/index.mjs";import{useIdentity as v}from"./identity/index.mjs";import{objectUtil as c}from"./object/index.mjs";import{CACHE_EXPIRE_SUFFIX as l,CACHE_PREFIX as a,Local as y,Session as b,useStorage as g}from"./storage/index.mjs";import{stringUtil as h}from"./string/index.mjs";import"./vue/index.mjs";import{addUnit as k,styleToString as w}from"./dom/style.mjs";import{useEmits as R}from"./vue/emits.mjs";import{useExpose as q}from"./vue/expose.mjs";import{execFunction as z}from"./vue/func.mjs";import{withInstall as A,withInstallDirective as B,withNoopInstall as C}from"./vue/install.mjs";import{definePropType as D,useProps as E}from"./vue/props.mjs";import{makeSlots as F}from"./vue/slots.mjs";import{useRender as G}from"./vue/useRender.mjs";import{withDefineType as H}from"./vue/with.mjs";export{l as CACHE_EXPIRE_SUFFIX,a as CACHE_PREFIX,u as FastError,y as Local,b as Session,k as addUnit,m as arrayUtil,o as base64Util,r as clickUtil,i as colorUtil,e as consoleDebug,t as consoleError,s as consoleLog,p as consoleWarn,n as cryptoUtil,d as dateUtil,D as definePropType,x as envUtil,z as execFunction,F as makeSlots,c as objectUtil,h as stringUtil,w as styleToString,j as throwError,f as useConsole,R as useEmits,q as useExpose,v as useIdentity,E as useProps,G as useRender,g as useStorage,H as withDefineType,A as withInstall,B as withInstallDirective,C as withNoopInstall};
60
2
  //# sourceMappingURL=index.mjs.map
package/es/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,46 +1,2 @@
1
- import { isArray, isString, isObject } from "lodash-unified";
2
- import { stringUtil } from "../string/index.mjs";
3
- const objectUtil = {
4
- /**
5
- * 对象URL参数化
6
- */
7
- objectToQueryString(obj) {
8
- let params = "";
9
- for (const key in obj) {
10
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
11
- if (params !== "") {
12
- params += "&";
13
- }
14
- params += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;
15
- }
16
- }
17
- return params;
18
- },
19
- /**
20
- * 将外部传入的样式格式化成可读的 CSS 样式。
21
- */
22
- objectToStyle(styles) {
23
- if (isArray(styles)) {
24
- return styles.filter(function(item) {
25
- return item != null && item !== "";
26
- }).map(function(item) {
27
- return objectUtil.objectToStyle(item);
28
- }).join(";");
29
- }
30
- if (isString(styles)) {
31
- return styles;
32
- }
33
- if (isObject(styles)) {
34
- return Object.keys(styles).filter(function(key) {
35
- return styles[key] != null && styles[key] !== "";
36
- }).map(function(key) {
37
- return [stringUtil.toCamelCase(key), styles[key]].join(":");
38
- }).join(";");
39
- }
40
- return "";
41
- }
42
- };
43
- export {
44
- objectUtil
45
- };
1
+ import{isArray as n,isString as o,isObject as t}from"lodash-unified";import{stringUtil as e}from"../string/index.mjs";const r={objectToQueryString(n){let o="";for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(""!==o&&(o+="&"),o+=`${encodeURIComponent(t)}=${encodeURIComponent(n[t])}`);return o},objectToStyle:i=>n(i)?i.filter(function(n){return null!=n&&""!==n}).map(function(n){return r.objectToStyle(n)}).join(";"):o(i)?i:t(i)?Object.keys(i).filter(function(n){return null!=i[n]&&""!==i[n]}).map(function(n){return[e.toCamelCase(n),i[n]].join(":")}).join(";"):""};export{r as objectUtil};
46
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/object/index.ts"],"sourcesContent":["import { isArray, isObject, isString } from \"lodash-unified\";\nimport { stringUtil } from \"../string\";\n\n/**\n * 对象工具类\n */\nexport const objectUtil = {\n\t/**\n\t * 对象URL参数化\n\t */\n\tobjectToQueryString(obj: any): string {\n\t\tlet params = \"\";\n\t\tfor (const key in obj) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\tif (params !== \"\") {\n\t\t\t\t\tparams += \"&\";\n\t\t\t\t}\n\t\t\t\tparams += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t},\n\t/**\n\t * 将外部传入的样式格式化成可读的 CSS 样式。\n\t */\n\tobjectToStyle(styles: string | Record<string, any> | Record<string, any>[]): string {\n\t\tif (isArray(styles)) {\n\t\t\treturn styles\n\t\t\t\t.filter(function (item) {\n\t\t\t\t\treturn item != null && item !== \"\";\n\t\t\t\t})\n\t\t\t\t.map(function (item) {\n\t\t\t\t\treturn objectUtil.objectToStyle(item);\n\t\t\t\t})\n\t\t\t\t.join(\";\");\n\t\t}\n\n\t\tif (isString(styles)) {\n\t\t\treturn styles;\n\t\t}\n\n\t\tif (isObject(styles)) {\n\t\t\treturn Object.keys(styles)\n\t\t\t\t.filter(function (key) {\n\t\t\t\t\treturn styles[key] != null && styles[key] !== \"\";\n\t\t\t\t})\n\t\t\t\t.map(function (key) {\n\t\t\t\t\treturn [stringUtil.toCamelCase(key), styles[key]].join(\":\");\n\t\t\t\t})\n\t\t\t\t.join(\";\");\n\t\t}\n\n\t\treturn \"\";\n\t},\n};\n"],"names":[],"mappings":";;AAMO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA,EAIzB,oBAAoB,KAAkB;AACrC,QAAI,SAAS;AACb,eAAW,OAAO,KAAK;AACtB,UAAI,OAAO,UAAU,eAAe,KAAK,KAAK,GAAG,GAAG;AACnD,YAAI,WAAW,IAAI;AACR,oBAAA;AAAA,QAAA;AAED,kBAAA,GAAG,mBAAmB,GAAG,CAAC,IAAI,mBAAmB,IAAI,GAAG,CAAC,CAAC;AAAA,MAAA;AAAA,IACrE;AAEM,WAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA,EAIA,cAAc,QAAsE;AAC/E,QAAA,QAAQ,MAAM,GAAG;AACb,aAAA,OACL,OAAO,SAAU,MAAM;AAChB,eAAA,QAAQ,QAAQ,SAAS;AAAA,MAAA,CAChC,EACA,IAAI,SAAU,MAAM;AACb,eAAA,WAAW,cAAc,IAAI;AAAA,MAAA,CACpC,EACA,KAAK,GAAG;AAAA,IAAA;AAGP,QAAA,SAAS,MAAM,GAAG;AACd,aAAA;AAAA,IAAA;AAGJ,QAAA,SAAS,MAAM,GAAG;AACrB,aAAO,OAAO,KAAK,MAAM,EACvB,OAAO,SAAU,KAAK;AACtB,eAAO,OAAO,GAAG,KAAK,QAAQ,OAAO,GAAG,MAAM;AAAA,MAAA,CAC9C,EACA,IAAI,SAAU,KAAK;AACZ,eAAA,CAAC,WAAW,YAAY,GAAG,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,MAAA,CAC1D,EACA,KAAK,GAAG;AAAA,IAAA;AAGJ,WAAA;AAAA,EAAA;AAET;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/object/index.ts"],"sourcesContent":["import { isArray, isObject, isString } from \"lodash-unified\";\nimport { stringUtil } from \"../string\";\n\n/**\n * 对象工具类\n */\nexport const objectUtil = {\n\t/**\n\t * 对象URL参数化\n\t */\n\tobjectToQueryString(obj: any): string {\n\t\tlet params = \"\";\n\t\tfor (const key in obj) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t\t\t\tif (params !== \"\") {\n\t\t\t\t\tparams += \"&\";\n\t\t\t\t}\n\t\t\t\tparams += `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}`;\n\t\t\t}\n\t\t}\n\t\treturn params;\n\t},\n\t/**\n\t * 将外部传入的样式格式化成可读的 CSS 样式。\n\t */\n\tobjectToStyle(styles: string | Record<string, any> | Record<string, any>[]): string {\n\t\tif (isArray(styles)) {\n\t\t\treturn styles\n\t\t\t\t.filter(function (item) {\n\t\t\t\t\treturn item != null && item !== \"\";\n\t\t\t\t})\n\t\t\t\t.map(function (item) {\n\t\t\t\t\treturn objectUtil.objectToStyle(item);\n\t\t\t\t})\n\t\t\t\t.join(\";\");\n\t\t}\n\n\t\tif (isString(styles)) {\n\t\t\treturn styles;\n\t\t}\n\n\t\tif (isObject(styles)) {\n\t\t\treturn Object.keys(styles)\n\t\t\t\t.filter(function (key) {\n\t\t\t\t\treturn styles[key] != null && styles[key] !== \"\";\n\t\t\t\t})\n\t\t\t\t.map(function (key) {\n\t\t\t\t\treturn [stringUtil.toCamelCase(key), styles[key]].join(\":\");\n\t\t\t\t})\n\t\t\t\t.join(\";\");\n\t\t}\n\n\t\treturn \"\";\n\t},\n};\n"],"names":["objectUtil","objectToQueryString","obj","params","key","Object","prototype","hasOwnProperty","call","encodeURIComponent","objectToStyle","styles","isArray","filter","item","map","join","isString","isObject","keys","stringUtil","toCamelCase"],"mappings":"sHAMO,MAAMA,EAAa,CAIzB,mBAAAC,CAAoBC,GACnB,IAAIC,EAAS,GACb,IAAA,MAAWC,KAAOF,EACbG,OAAOC,UAAUC,eAAeC,KAAKN,EAAKE,KAC9B,KAAXD,IACHA,GAAU,KAEXA,GAAU,GAAGM,mBAAmBL,MAAQK,mBAAmBP,EAAIE,OAGjE,OAAOD,CACR,EAIAO,cAAcC,GACTC,EAAQD,GACJA,EACLE,OAAO,SAAUC,GACjB,OAAe,MAARA,GAAyB,KAATA,CACxB,GACCC,IAAI,SAAUD,GACd,OAAOd,EAAWU,cAAcI,EACjC,GACCE,KAAK,KAGJC,EAASN,GACLA,EAGJO,EAASP,GACLN,OAAOc,KAAKR,GACjBE,OAAO,SAAUT,GACjB,OAAsB,MAAfO,EAAOP,IAAgC,KAAhBO,EAAOP,EACtC,GACCW,IAAI,SAAUX,GACd,MAAO,CAACgB,EAAWC,YAAYjB,GAAMO,EAAOP,IAAMY,KAAK,IACxD,GACCA,KAAK,KAGD"}
@@ -1,308 +1,2 @@
1
- import { reactive, computed } from "vue";
2
- import { base64Util } from "../base64/index.mjs";
3
- import { consoleError } from "../console/index.mjs";
4
- import { FastError } from "../error/index.mjs";
5
- const state = reactive({
6
- prefix: "fast__",
7
- expireSuffix: "__Expire",
8
- crypto: false
9
- });
10
- const CACHE_PREFIX = computed(() => state.prefix);
11
- const CACHE_EXPIRE_SUFFIX = computed(() => state.expireSuffix);
12
- const useStorage = () => {
13
- return {
14
- /**
15
- * 设置缓存前缀 Key
16
- * @param key
17
- */
18
- setPrefix(key) {
19
- state.prefix = key;
20
- },
21
- /**
22
- * 缓存过期值后缀 Key
23
- * @param key
24
- */
25
- setExpireSuffix(key) {
26
- state.expireSuffix = key;
27
- },
28
- /**
29
- * 设置缓存是否加密
30
- * @description 请在初始化的时候确认,后续不可再修改,否则所有数据都将失效
31
- * @param crypto
32
- */
33
- setCrypto(crypto) {
34
- state.crypto = crypto;
35
- }
36
- };
37
- };
38
- const storage = {
39
- set(key, val) {
40
- if (typeof uni !== "undefined") {
41
- uni.setStorageSync(key, val);
42
- } else {
43
- window.localStorage.setItem(key, val);
44
- }
45
- },
46
- get(key) {
47
- if (typeof uni !== "undefined") {
48
- return uni.getStorageSync(key);
49
- } else {
50
- return window.localStorage.getItem(key);
51
- }
52
- },
53
- remove(key) {
54
- if (typeof uni !== "undefined") {
55
- uni.removeStorageSync(key);
56
- } else {
57
- window.localStorage.removeItem(key);
58
- }
59
- },
60
- clear() {
61
- if (typeof uni !== "undefined") {
62
- uni.clearStorageSync();
63
- } else {
64
- window.localStorage.clear();
65
- }
66
- },
67
- keys() {
68
- if (typeof uni !== "undefined") {
69
- return uni.getStorageInfoSync().keys;
70
- } else {
71
- return window.localStorage;
72
- }
73
- }
74
- };
75
- const Local = {
76
- /**
77
- * 设置
78
- * @param key 缓存的Key
79
- * @param val 缓存值
80
- * @param expire 过期时间,单位分钟
81
- * @param encrypt 是否对缓存的数据加密
82
- */
83
- set(key, val, expire, encrypt) {
84
- try {
85
- encrypt ?? (encrypt = state.crypto);
86
- if (expire) {
87
- if (isNaN(expire) || expire < 1) {
88
- throw new FastError("有效期应为一个有效数值");
89
- }
90
- const expireData = {
91
- time: Date.now(),
92
- expire
93
- };
94
- const expireJson = JSON.stringify(expireData);
95
- storage.set(`${state.prefix}${key}${state.expireSuffix}`, expireJson);
96
- }
97
- let valJson = JSON.stringify(val);
98
- if (encrypt) {
99
- valJson = base64Util.toBase64(valJson);
100
- }
101
- storage.set(`${state.prefix}${key}`, valJson);
102
- } catch (error) {
103
- consoleError("Local", error);
104
- }
105
- },
106
- /**
107
- * 获取
108
- * @param key 缓存的Key
109
- * @param decrypt 是否对缓存的数据解密
110
- * @returns {T} 传入的对象类型,默认为 string
111
- */
112
- get(key, decrypt) {
113
- try {
114
- decrypt ?? (decrypt = state.crypto);
115
- let valJson = storage.get(`${state.prefix}${key}`);
116
- if (valJson) {
117
- if (decrypt) {
118
- valJson = base64Util.base64ToStr(valJson);
119
- }
120
- const expireJson = storage.get(`${state.prefix}${key}${state.expireSuffix}`);
121
- if (expireJson) {
122
- const expireData = JSON.parse(expireJson);
123
- if (Date.now() > expireData.time + expireData.expire * 60 * 1e3) {
124
- storage.remove(`${state.prefix}${key}`);
125
- storage.remove(`${state.prefix}${key}${state.expireSuffix}`);
126
- return null;
127
- }
128
- }
129
- try {
130
- return JSON.parse(valJson);
131
- } catch {
132
- return valJson;
133
- }
134
- }
135
- return null;
136
- } catch (error) {
137
- consoleError("Local", error);
138
- }
139
- },
140
- /**
141
- * 移除
142
- * @param key 缓存的Key
143
- */
144
- remove(key) {
145
- try {
146
- storage.remove(`${state.prefix}${key}`);
147
- storage.remove(`${state.prefix}${key}${state.expireSuffix}`);
148
- } catch (error) {
149
- consoleError("Local", error);
150
- }
151
- },
152
- /**
153
- * 根据前缀移除
154
- * @param key 缓存的Key
155
- */
156
- removeByPrefix(key) {
157
- try {
158
- for (const itemKey in storage.keys) {
159
- if (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {
160
- storage.remove(itemKey);
161
- }
162
- }
163
- } catch (error) {
164
- consoleError("Local", error);
165
- }
166
- },
167
- /**
168
- * 移除全部
169
- */
170
- clear() {
171
- try {
172
- storage.clear();
173
- } catch (error) {
174
- consoleError("Local", error);
175
- }
176
- }
177
- };
178
- const Session = {
179
- /**
180
- * 设置会话缓存
181
- * @param key 缓存的Key
182
- * @param val 缓存值
183
- * @param expire 过期时间,单位分钟
184
- * @param encrypt 是否对缓存的数据加密
185
- */
186
- set(key, val, expire, encrypt) {
187
- if (typeof uni !== "undefined") {
188
- consoleError("Session", "UniApp 环境下 [Session] 不可用。");
189
- return;
190
- }
191
- try {
192
- encrypt ?? (encrypt = state.crypto);
193
- if (expire) {
194
- if (isNaN(expire) || expire < 1) {
195
- throw new FastError("有效期应为一个有效数值");
196
- }
197
- const expireData = {
198
- time: Date.now(),
199
- expire
200
- };
201
- const expireJson = JSON.stringify(expireData);
202
- window.sessionStorage.setItem(`${state.prefix}${key}${state.expireSuffix}`, expireJson);
203
- }
204
- let valJson = JSON.stringify(val);
205
- if (encrypt) {
206
- valJson = base64Util.toBase64(valJson);
207
- }
208
- window.sessionStorage.setItem(`${state.prefix}${key}`, valJson);
209
- } catch (error) {
210
- consoleError("Session", error);
211
- }
212
- },
213
- /**
214
- * 获取会话缓存
215
- * @param key 缓存的Key
216
- * @param decrypt 是否对缓存的数据解密
217
- * @returns {T} 传入的对象类型,默认为 string
218
- */
219
- get(key, decrypt) {
220
- if (typeof uni !== "undefined") {
221
- consoleError("Session", "UniApp 环境下 [Session] 不可用。");
222
- return;
223
- }
224
- try {
225
- decrypt ?? (decrypt = state.crypto);
226
- let valJson = window.sessionStorage.getItem(`${state.prefix}${key}`);
227
- if (valJson) {
228
- if (decrypt) {
229
- valJson = base64Util.base64ToStr(valJson);
230
- }
231
- const expireJson = window.sessionStorage.getItem(`${state.prefix}${key}${state.expireSuffix}`);
232
- if (expireJson) {
233
- const expireData = JSON.parse(expireJson);
234
- if (Date.now() > expireData.time + expireData.expire * 60 * 1e3) {
235
- window.sessionStorage.removeItem(`${state.prefix}${key}`);
236
- window.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);
237
- return null;
238
- }
239
- }
240
- try {
241
- return JSON.parse(valJson);
242
- } catch {
243
- return valJson;
244
- }
245
- }
246
- return null;
247
- } catch (error) {
248
- consoleError("Session", error);
249
- }
250
- },
251
- /**
252
- * 移除会话缓存
253
- * @param key 缓存的Key
254
- */
255
- remove(key) {
256
- if (typeof uni !== "undefined") {
257
- consoleError("Session", "UniApp 环境下 [Session] 不可用。");
258
- return;
259
- }
260
- try {
261
- window.sessionStorage.removeItem(`${state.prefix}${key}`);
262
- window.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);
263
- } catch (error) {
264
- consoleError("Session", error);
265
- }
266
- },
267
- /**
268
- * 根据前缀移除会话缓存
269
- * @param key 缓存的Key
270
- */
271
- removeByPrefix(key) {
272
- if (typeof uni !== "undefined") {
273
- consoleError("Session", "UniApp 环境下 [Session] 不可用。");
274
- return;
275
- }
276
- try {
277
- for (const itemKey in window.sessionStorage) {
278
- if (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {
279
- window.sessionStorage.removeItem(itemKey);
280
- }
281
- }
282
- } catch (error) {
283
- consoleError("Session", error);
284
- }
285
- },
286
- /**
287
- * 移除全部会话缓存
288
- */
289
- clear() {
290
- if (typeof uni !== "undefined") {
291
- consoleError("Session", "UniApp 环境下 [Session] 不可用。");
292
- return;
293
- }
294
- try {
295
- window.sessionStorage.clear();
296
- } catch (error) {
297
- consoleError("Session", error);
298
- }
299
- }
300
- };
301
- export {
302
- CACHE_EXPIRE_SUFFIX,
303
- CACHE_PREFIX,
304
- Local,
305
- Session,
306
- useStorage
307
- };
1
+ import{reactive as e,computed as i}from"vue";import{base64Util as r}from"../base64/index.mjs";import{consoleError as o}from"../console/index.mjs";import{FastError as t}from"../error/index.mjs";const n=e({prefix:"fast__",expireSuffix:"__Expire",crypto:!1}),s=i(()=>n.prefix),f=i(()=>n.expireSuffix),p=()=>({setPrefix(e){n.prefix=e},setExpireSuffix(e){n.expireSuffix=e},setCrypto(e){n.crypto=e}}),a={set(e,i){"undefined"!=typeof uni?uni.setStorageSync(e,i):window.localStorage.setItem(e,i)},get:e=>"undefined"!=typeof uni?uni.getStorageSync(e):window.localStorage.getItem(e),remove(e){"undefined"!=typeof uni?uni.removeStorageSync(e):window.localStorage.removeItem(e)},clear(){"undefined"!=typeof uni?uni.clearStorageSync():window.localStorage.clear()},keys:()=>"undefined"!=typeof uni?uni.getStorageInfoSync().keys:window.localStorage},S={set(e,i,s,f){try{if(f??=n.crypto,s){if(isNaN(s)||s<1)throw new t("有效期应为一个有效数值");const i={time:Date.now(),expire:s},r=JSON.stringify(i);a.set(`${n.prefix}${e}${n.expireSuffix}`,r)}let o=JSON.stringify(i);f&&(o=r.toBase64(o)),a.set(`${n.prefix}${e}`,o)}catch(p){o("Local",p)}},get(e,i){try{i??=n.crypto;let o=a.get(`${n.prefix}${e}`);if(o){i&&(o=r.base64ToStr(o));const t=a.get(`${n.prefix}${e}${n.expireSuffix}`);if(t){const i=JSON.parse(t);if(Date.now()>i.time+60*i.expire*1e3)return a.remove(`${n.prefix}${e}`),a.remove(`${n.prefix}${e}${n.expireSuffix}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(t){o("Local",t)}},remove(e){try{a.remove(`${n.prefix}${e}`),a.remove(`${n.prefix}${e}${n.expireSuffix}`)}catch(i){o("Local",i)}},removeByPrefix(e){try{for(const i in a.keys)-1!==i.indexOf(`${n.prefix}${e}`)&&a.remove(i)}catch(i){o("Local",i)}},clear(){try{a.clear()}catch(e){o("Local",e)}}},c={set(e,i,s,f){if("undefined"==typeof uni)try{if(f??=n.crypto,s){if(isNaN(s)||s<1)throw new t("有效期应为一个有效数值");const i={time:Date.now(),expire:s},r=JSON.stringify(i);window.sessionStorage.setItem(`${n.prefix}${e}${n.expireSuffix}`,r)}let o=JSON.stringify(i);f&&(o=r.toBase64(o)),window.sessionStorage.setItem(`${n.prefix}${e}`,o)}catch(p){o("Session",p)}else o("Session","UniApp 环境下 [Session] 不可用。")},get(e,i){if("undefined"==typeof uni)try{i??=n.crypto;let o=window.sessionStorage.getItem(`${n.prefix}${e}`);if(o){i&&(o=r.base64ToStr(o));const t=window.sessionStorage.getItem(`${n.prefix}${e}${n.expireSuffix}`);if(t){const i=JSON.parse(t);if(Date.now()>i.time+60*i.expire*1e3)return window.sessionStorage.removeItem(`${n.prefix}${e}`),window.sessionStorage.removeItem(`${n.prefix}${e}${n.expireSuffix}`),null}try{return JSON.parse(o)}catch{return o}}return null}catch(t){o("Session",t)}else o("Session","UniApp 环境下 [Session] 不可用。")},remove(e){if("undefined"==typeof uni)try{window.sessionStorage.removeItem(`${n.prefix}${e}`),window.sessionStorage.removeItem(`${n.prefix}${e}${n.expireSuffix}`)}catch(i){o("Session",i)}else o("Session","UniApp 环境下 [Session] 不可用。")},removeByPrefix(e){if("undefined"==typeof uni)try{for(const i in window.sessionStorage)-1!==i.indexOf(`${n.prefix}${e}`)&&window.sessionStorage.removeItem(i)}catch(i){o("Session",i)}else o("Session","UniApp 环境下 [Session] 不可用。")},clear(){if("undefined"==typeof uni)try{window.sessionStorage.clear()}catch(e){o("Session",e)}else o("Session","UniApp 环境下 [Session] 不可用。")}};export{f as CACHE_EXPIRE_SUFFIX,s as CACHE_PREFIX,S as Local,c as Session,p as useStorage};
308
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/storage/index.ts"],"sourcesContent":["import { computed, reactive } from \"vue\";\nimport { base64Util } from \"../base64\";\nimport { consoleError } from \"../console\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\tprefix: \"fast__\",\n\texpireSuffix: \"__Expire\",\n\tcrypto: false,\n});\n\n/**\n * 本地缓存前缀 Key\n */\nexport const CACHE_PREFIX = computed(() => state.prefix);\n\n/**\n * 本地缓存过期值后缀 Key\n */\nexport const CACHE_EXPIRE_SUFFIX = computed(() => state.expireSuffix);\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const useStorage = () => {\n\treturn {\n\t\t/**\n\t\t * 设置缓存前缀 Key\n\t\t * @param key\n\t\t */\n\t\tsetPrefix(key: string): void {\n\t\t\tstate.prefix = key;\n\t\t},\n\t\t/**\n\t\t * 缓存过期值后缀 Key\n\t\t * @param key\n\t\t */\n\t\tsetExpireSuffix(key: string): void {\n\t\t\tstate.expireSuffix = key;\n\t\t},\n\t\t/**\n\t\t * 设置缓存是否加密\n\t\t * @description 请在初始化的时候确认,后续不可再修改,否则所有数据都将失效\n\t\t * @param crypto\n\t\t */\n\t\tsetCrypto(crypto: boolean): void {\n\t\t\tstate.crypto = crypto;\n\t\t},\n\t};\n};\n\nconst storage = {\n\tset(key: string, val: any): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.setStorageSync(key, val);\n\t\t} else {\n\t\t\twindow.localStorage.setItem(key, val);\n\t\t}\n\t},\n\tget(key: string): string | any | null {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageSync(key);\n\t\t} else {\n\t\t\treturn window.localStorage.getItem(key);\n\t\t}\n\t},\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.removeStorageSync(key);\n\t\t} else {\n\t\t\twindow.localStorage.removeItem(key);\n\t\t}\n\t},\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.clearStorageSync();\n\t\t} else {\n\t\t\twindow.localStorage.clear();\n\t\t}\n\t},\n\tkeys(): string[] | Storage {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageInfoSync().keys;\n\t\t} else {\n\t\t\treturn window.localStorage;\n\t\t}\n\t},\n};\n\n/**\n * window.localStorage\n * - 如果是 UniApp 环境则使用的是 uni.xxxStorage\n */\nexport const Local = {\n\t/**\n\t * 设置\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new FastError(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\tstorage.set(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\tstorage.set(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = storage.get(`${state.prefix}${key}`);\n\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = storage.get(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in storage.keys) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\tstorage.remove(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\tstorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n};\n\n/**\n * window.sessionStorage\n * - UniApp 环境下不可用\n */\nexport const Session = {\n\t/**\n\t * 设置会话缓存\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new FastError(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取会话缓存\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.sessionStorage.getItem(`${state.prefix}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.sessionStorage.getItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tfor (const itemKey in window.sessionStorage) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\twindow.sessionStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部会话缓存\n\t */\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/storage/index.ts"],"sourcesContent":["import { computed, reactive } from \"vue\";\nimport { base64Util } from \"../base64\";\nimport { consoleError } from \"../console\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\tprefix: \"fast__\",\n\texpireSuffix: \"__Expire\",\n\tcrypto: false,\n});\n\n/**\n * 本地缓存前缀 Key\n */\nexport const CACHE_PREFIX = computed(() => state.prefix);\n\n/**\n * 本地缓存过期值后缀 Key\n */\nexport const CACHE_EXPIRE_SUFFIX = computed(() => state.expireSuffix);\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const useStorage = () => {\n\treturn {\n\t\t/**\n\t\t * 设置缓存前缀 Key\n\t\t * @param key\n\t\t */\n\t\tsetPrefix(key: string): void {\n\t\t\tstate.prefix = key;\n\t\t},\n\t\t/**\n\t\t * 缓存过期值后缀 Key\n\t\t * @param key\n\t\t */\n\t\tsetExpireSuffix(key: string): void {\n\t\t\tstate.expireSuffix = key;\n\t\t},\n\t\t/**\n\t\t * 设置缓存是否加密\n\t\t * @description 请在初始化的时候确认,后续不可再修改,否则所有数据都将失效\n\t\t * @param crypto\n\t\t */\n\t\tsetCrypto(crypto: boolean): void {\n\t\t\tstate.crypto = crypto;\n\t\t},\n\t};\n};\n\nconst storage = {\n\tset(key: string, val: any): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.setStorageSync(key, val);\n\t\t} else {\n\t\t\twindow.localStorage.setItem(key, val);\n\t\t}\n\t},\n\tget(key: string): string | any | null {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageSync(key);\n\t\t} else {\n\t\t\treturn window.localStorage.getItem(key);\n\t\t}\n\t},\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.removeStorageSync(key);\n\t\t} else {\n\t\t\twindow.localStorage.removeItem(key);\n\t\t}\n\t},\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tuni.clearStorageSync();\n\t\t} else {\n\t\t\twindow.localStorage.clear();\n\t\t}\n\t},\n\tkeys(): string[] | Storage {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn uni.getStorageInfoSync().keys;\n\t\t} else {\n\t\t\treturn window.localStorage;\n\t\t}\n\t},\n};\n\n/**\n * window.localStorage\n * - 如果是 UniApp 环境则使用的是 uni.xxxStorage\n */\nexport const Local = {\n\t/**\n\t * 设置\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new FastError(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\tstorage.set(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\tstorage.set(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = storage.get(`${state.prefix}${key}`);\n\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = storage.get(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\t\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\ttry {\n\t\t\tstorage.remove(`${state.prefix}${key}`);\n\t\t\tstorage.remove(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\ttry {\n\t\t\tfor (const itemKey in storage.keys) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\tstorage.remove(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部\n\t */\n\tclear(): void {\n\t\ttry {\n\t\t\tstorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Local\", error);\n\t\t}\n\t},\n};\n\n/**\n * window.sessionStorage\n * - UniApp 环境下不可用\n */\nexport const Session = {\n\t/**\n\t * 设置会话缓存\n\t * @param key 缓存的Key\n\t * @param val 缓存值\n\t * @param expire 过期时间,单位分钟\n\t * @param encrypt 是否对缓存的数据加密\n\t */\n\tset(key: string, val: any, expire?: number, encrypt?: boolean): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tencrypt ??= state.crypto;\n\t\t\t// 判断是否存在缓存过期时间\n\t\t\tif (expire) {\n\t\t\t\tif (isNaN(expire) || expire < 1) {\n\t\t\t\t\tthrow new FastError(\"有效期应为一个有效数值\");\n\t\t\t\t}\n\t\t\t\t// 设置过期时间的缓存\n\t\t\t\tconst expireData = {\n\t\t\t\t\ttime: Date.now(),\n\t\t\t\t\texpire,\n\t\t\t\t};\n\t\t\t\tconst expireJson = JSON.stringify(expireData);\n\t\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}${state.expireSuffix}`, expireJson);\n\t\t\t}\n\t\t\tlet valJson = JSON.stringify(val);\n\t\t\tif (encrypt) {\n\t\t\t\tvalJson = base64Util.toBase64(valJson);\n\t\t\t}\n\t\t\twindow.sessionStorage.setItem(`${state.prefix}${key}`, valJson);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 获取会话缓存\n\t * @param key 缓存的Key\n\t * @param decrypt 是否对缓存的数据解密\n\t * @returns {T} 传入的对象类型,默认为 string\n\t */\n\tget<T = string>(key: string, decrypt?: boolean): T {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tdecrypt ??= state.crypto;\n\t\t\t// 获取缓存 JSON 字符串\n\t\t\tlet valJson = window.sessionStorage.getItem(`${state.prefix}${key}`);\n\t\t\tif (valJson) {\n\t\t\t\t// 判断是否解密\n\t\t\t\tif (decrypt) {\n\t\t\t\t\tvalJson = base64Util.base64ToStr(valJson);\n\t\t\t\t}\n\t\t\t\t// 尝试获取缓存过期时间的 JSON 字符串\n\t\t\t\tconst expireJson = window.sessionStorage.getItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t// 判断是否存在过期时间\n\t\t\t\tif (expireJson) {\n\t\t\t\t\tconst expireData = JSON.parse(expireJson);\n\t\t\t\t\tif (Date.now() > expireData.time + expireData.expire * 60 * 1000) {\n\t\t\t\t\t\t// 过期了,删除对应的缓存数据\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\t\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\treturn JSON.parse(valJson) as T;\n\t\t\t\t} catch {\n\t\t\t\t\treturn valJson as T;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremove(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}`);\n\t\t\twindow.sessionStorage.removeItem(`${state.prefix}${key}${state.expireSuffix}`);\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 根据前缀移除会话缓存\n\t * @param key 缓存的Key\n\t */\n\tremoveByPrefix(key: string): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tfor (const itemKey in window.sessionStorage) {\n\t\t\t\tif (itemKey.indexOf(`${state.prefix}${key}`) !== -1) {\n\t\t\t\t\twindow.sessionStorage.removeItem(itemKey);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n\t/**\n\t * 移除全部会话缓存\n\t */\n\tclear(): void {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tconsoleError(\"Session\", \"UniApp 环境下 [Session] 不可用。\");\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\twindow.sessionStorage.clear();\n\t\t} catch (error) {\n\t\t\tconsoleError(\"Session\", error);\n\t\t}\n\t},\n};\n"],"names":["state","reactive","prefix","expireSuffix","crypto","CACHE_PREFIX","computed","CACHE_EXPIRE_SUFFIX","useStorage","setPrefix","key","setExpireSuffix","setCrypto","storage","set","val","uni","setStorageSync","window","localStorage","setItem","get","getStorageSync","getItem","remove","removeStorageSync","removeItem","clear","clearStorageSync","keys","getStorageInfoSync","Local","expire","encrypt","isNaN","FastError","expireData","time","Date","now","expireJson","JSON","stringify","valJson","base64Util","toBase64","error","consoleError","decrypt","base64ToStr","parse","removeByPrefix","itemKey","indexOf","Session","sessionStorage"],"mappings":"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"}