@qxs-bns/utils 0.0.18 → 0.0.19

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 (55) hide show
  1. package/es/index.js +1 -10
  2. package/es/index.js.map +1 -1
  3. package/es/src/argo-log.js +1 -77
  4. package/es/src/argo-log.js.map +1 -1
  5. package/es/src/date-transfer.js +1 -33
  6. package/es/src/date-transfer.js.map +1 -1
  7. package/es/src/device.js +1 -22
  8. package/es/src/device.js.map +1 -1
  9. package/es/src/file-operations.js +1 -104
  10. package/es/src/file-operations.js.map +1 -1
  11. package/es/src/json.js +1 -66
  12. package/es/src/json.js.map +1 -1
  13. package/es/src/oss-uploader.js +1 -114
  14. package/es/src/oss-uploader.js.map +1 -1
  15. package/es/src/set-guid.js +2 -0
  16. package/es/src/set-guid.js.map +1 -0
  17. package/es/src/storage.js +1 -112
  18. package/es/src/storage.js.map +1 -1
  19. package/es/src/types.js +1 -37
  20. package/es/src/types.js.map +1 -1
  21. package/es/src/use-api.js +1 -64
  22. package/es/src/use-api.js.map +1 -1
  23. package/es/src/watermark.js +1 -208
  24. package/es/src/watermark.js.map +1 -1
  25. package/lib/index.js +1 -40
  26. package/lib/index.js.map +1 -1
  27. package/lib/src/argo-log.js +1 -79
  28. package/lib/src/argo-log.js.map +1 -1
  29. package/lib/src/date-transfer.js +1 -35
  30. package/lib/src/date-transfer.js.map +1 -1
  31. package/lib/src/device.js +1 -27
  32. package/lib/src/device.js.map +1 -1
  33. package/lib/src/file-operations.js +1 -107
  34. package/lib/src/file-operations.js.map +1 -1
  35. package/lib/src/json.js +1 -69
  36. package/lib/src/json.js.map +1 -1
  37. package/lib/src/oss-uploader.js +1 -119
  38. package/lib/src/oss-uploader.js.map +1 -1
  39. package/lib/src/set-guid.js +2 -0
  40. package/lib/src/set-guid.js.map +1 -0
  41. package/lib/src/storage.js +1 -114
  42. package/lib/src/storage.js.map +1 -1
  43. package/lib/src/types.js +1 -46
  44. package/lib/src/types.js.map +1 -1
  45. package/lib/src/use-api.js +1 -66
  46. package/lib/src/use-api.js.map +1 -1
  47. package/lib/src/watermark.js +1 -210
  48. package/lib/src/watermark.js.map +1 -1
  49. package/package.json +9 -1
  50. package/types/index.d.ts +1 -0
  51. package/types/index.d.ts.map +1 -1
  52. package/types/src/argo-log.d.ts.map +1 -1
  53. package/types/src/set-guid.d.ts +5 -0
  54. package/types/src/set-guid.d.ts.map +1 -0
  55. package/types/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"oss-uploader.js","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\n}\n\nexport interface OssClientConfig {\n accessKeyId: string\n accessKeySecret: string\n stsToken: string\n secure: boolean\n bucket: string\n region: string\n cors: boolean\n useFetch: boolean\n timeout: number\n headers: Record<string, string>\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OssClientConfig = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n cors: true,\n useFetch: false,\n timeout: 60000,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',\n 'Access-Control-Allow-Headers': '*',\n },\n}\n\nexport class OssUploader {\n private static client: OSS\n private static createTokenTime: number = 0\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return {\n accessKeyId: credentials.accessKeyId,\n accessKeySecret: credentials.accessKeySecret,\n securityToken: credentials.securityToken,\n }\n }\n\n // 修改初始化方法\n public static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<void> {\n const diff = Date.now() - this.createTokenTime\n if (!ossConfig.accessKeyId || diff > this.expireTime) {\n try {\n const { accessKeyId, accessKeySecret, securityToken: stsToken } = await this.getOssCredentials(getCredentials)\n Object.assign(ossConfig, {\n accessKeyId,\n accessKeySecret,\n stsToken,\n ...args,\n refreshSTSToken: async () => {\n return await this.getOssCredentials(getCredentials)\n },\n refreshSTSTokenInterval: 300000,\n })\n this.createTokenTime = Date.now()\n this.client = new OSS(ossConfig)\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n }\n\n // 修改上传方法\n public static async uploadFile(opts: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await this.client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 修改生成签名URL方法\n public static async generateSignedUrl(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n await this.initOssClient(getCredentials, args)\n try {\n return await this.client.signatureUrl(objectKey, { expires: 60 * 60 })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n}\n\n// 导出便捷方法\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","Error","constructor","message","name","ossConfig","accessKeyId","accessKeySecret","stsToken","secure","bucket","region","cors","useFetch","timeout","headers","OssUploader","getOssCredentials","getCredentials","credentials","securityToken","initOssClient","args","diff","Date","now","createTokenTime","expireTime","Object","assign","refreshSTSToken","refreshSTSTokenInterval","client","OSS","error","String","uploadFile","opts","file","onProgress","path","rest","result","multipartUpload","progress","p","percent","Math","round","generateSignedUrl","objectKey","signatureUrl","expires","__publicField","bind"],"mappings":"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"}
1
+ {"version":3,"file":"oss-uploader.js","sources":["../../../../packages/utils/src/oss-uploader.ts"],"sourcesContent":["import OSS from 'ali-oss'\n\nexport interface OssCredentials {\n accessKeyId: string\n accessKeySecret: string\n securityToken: string\n}\n\nexport interface OssConfig extends Partial<Omit<OssClientConfig, 'accessKeyId' | 'accessKeySecret' | 'stsToken'>> {\n file: File\n onProgress?: (p: { percent: number }) => void\n path?: string\n getCredentials: () => Promise<OssCredentials | null>\n}\n\nexport interface OssClientConfig {\n accessKeyId: string\n accessKeySecret: string\n stsToken: string\n secure: boolean\n bucket: string\n region: string\n cors: boolean\n useFetch: boolean\n timeout: number\n headers: Record<string, string>\n}\n\n// 定义错误类型\nexport class OssError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'OssError'\n }\n}\n\nconst ossConfig: OssClientConfig = {\n accessKeyId: '',\n accessKeySecret: '',\n stsToken: '',\n secure: true,\n bucket: 'yao-file-daily',\n region: 'oss-cn-hangzhou',\n cors: true,\n useFetch: false,\n timeout: 60000,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',\n 'Access-Control-Allow-Headers': '*',\n },\n}\n\nexport class OssUploader {\n private static client: OSS\n private static createTokenTime: number = 0\n private static readonly expireTime = 15 * 60 * 1000\n\n // 获取凭证\n private static async getOssCredentials(getCredentials: OssConfig['getCredentials']): Promise<Required<OssCredentials>> {\n const credentials = await getCredentials()\n if (!credentials) {\n throw new OssError('获取凭证失败')\n }\n return {\n accessKeyId: credentials.accessKeyId,\n accessKeySecret: credentials.accessKeySecret,\n securityToken: credentials.securityToken,\n }\n }\n\n // 修改初始化方法\n public static async initOssClient(getCredentials: OssConfig['getCredentials'], args?: Partial<OssConfig>): Promise<void> {\n const diff = Date.now() - this.createTokenTime\n if (!ossConfig.accessKeyId || diff > this.expireTime) {\n try {\n const { accessKeyId, accessKeySecret, securityToken: stsToken } = await this.getOssCredentials(getCredentials)\n Object.assign(ossConfig, {\n accessKeyId,\n accessKeySecret,\n stsToken,\n ...args,\n refreshSTSToken: async () => {\n return await this.getOssCredentials(getCredentials)\n },\n refreshSTSTokenInterval: 300000,\n })\n this.createTokenTime = Date.now()\n this.client = new OSS(ossConfig)\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n }\n\n // 修改上传方法\n public static async uploadFile(opts: OssConfig & { getCredentials: OssConfig['getCredentials'] }): Promise<OSS.MultipartUploadResult> {\n const { file, onProgress = () => {}, path = 'ksh/pdf', getCredentials, ...rest } = opts\n\n await this.initOssClient(getCredentials, rest)\n\n try {\n const result = await this.client.multipartUpload(`${path}/${file.name}`, file, {\n progress(p: number) {\n onProgress({ percent: Math.round(p * 100) })\n },\n })\n return result\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n\n // 修改生成签名URL方法\n public static async generateSignedUrl(\n objectKey: string,\n getCredentials: OssConfig['getCredentials'],\n args?: Partial<OssConfig>,\n ): Promise<string> {\n await this.initOssClient(getCredentials, args)\n try {\n return await this.client.signatureUrl(objectKey, { expires: 60 * 60 })\n }\n catch (error) {\n throw new OssError(error instanceof Error ? error.message : String(error))\n }\n }\n}\n\n// 导出便捷方法\nexport const uploadFile = OssUploader.uploadFile.bind(OssUploader)\nexport const generateSignedUrl = OssUploader.generateSignedUrl.bind(OssUploader)\n"],"names":["OssError","Error","constructor","message","super","this","name","ossConfig","accessKeyId","accessKeySecret","stsToken","secure","bucket","region","cors","useFetch","timeout","headers","OssUploader","getOssCredentials","getCredentials","credentials","securityToken","initOssClient","args","diff","Date","now","createTokenTime","expireTime","Object","assign","refreshSTSToken","async","refreshSTSTokenInterval","client","OSS","error","String","uploadFile","opts","file","onProgress","path","rest","multipartUpload","progress","p","percent","Math","round","generateSignedUrl","objectKey","signatureUrl","expires","__publicField","bind"],"mappings":"iLA6BO,MAAMA,UAAiBC,MAC5BC,WAAAA,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,UACd,EAGF,MAAMC,EAA6B,CACjCC,YAAa,GACbC,gBAAiB,GACjBC,SAAU,GACVC,QAAQ,EACRC,OAAQ,iBACRC,OAAQ,kBACRC,MAAM,EACNC,UAAU,EACVC,QAAS,IACTC,QAAS,CACP,8BAA+B,IAC/B,+BAAgC,yBAChC,+BAAgC,MAI7B,MAAMC,EAMX,8BAAqBC,CAAkBC,GAC/B,MAAAC,QAAoBD,IAC1B,IAAKC,EACG,MAAA,IAAIrB,EAAS,UAEd,MAAA,CACLQ,YAAaa,EAAYb,YACzBC,gBAAiBY,EAAYZ,gBAC7Ba,cAAeD,EAAYC,cAE/B,CAGA,0BAAoBC,CAAcH,EAA6CI,GAC7E,MAAMC,EAAOC,KAAKC,MAAQtB,KAAKuB,gBAC/B,IAAKrB,EAAUC,aAAeiB,EAAOpB,KAAKwB,WACpC,IACI,MAAArB,YAAEA,kBAAaC,EAAiBa,cAAeZ,SAAmBL,KAAKc,kBAAkBC,GAC/FU,OAAOC,OAAOxB,EAAW,CACvBC,cACAC,kBACAC,cACGc,EACHQ,gBAAiBC,eACF5B,KAAKc,kBAAkBC,GAEtCc,wBAAyB,MAEtB7B,KAAAuB,gBAAkBF,KAAKC,MACvBtB,KAAA8B,OAAS,IAAIC,EAAI7B,SAEjB8B,GACC,MAAA,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CAEJ,CAGA,uBAAoBE,CAAWC,GACvB,MAAAC,KAAEA,EAAMC,WAAAA,EAAaA,YAAUC,EAAO,UAAAvB,eAAWA,KAAmBwB,GAASJ,QAE7EnC,KAAKkB,cAAcH,EAAgBwB,GAErC,IAMK,aALcvC,KAAK8B,OAAOU,gBAAgB,GAAGF,KAAQF,EAAKnC,OAAQmC,EAAM,CAC7EK,QAAAA,CAASC,GACPL,EAAW,CAAEM,QAASC,KAAKC,MAAU,IAAJH,IACnC,UAIGV,GACC,MAAA,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CACF,CAGA,8BAAoBc,CAClBC,EACAhC,EACAI,SAEMnB,KAAKkB,cAAcH,EAAgBI,GACrC,IACK,aAAMnB,KAAK8B,OAAOkB,aAAaD,EAAW,CAAEE,QAAS,aAEvDjB,GACC,MAAA,IAAIrC,EAASqC,aAAiBpC,MAAQoC,EAAMlC,QAAUmC,OAAOD,GACrE,CACF,EA1EAkB,EADWrC,EACI,UACfqC,EAFWrC,EAEI,kBAA0B,GACzCqC,EAHWrC,EAGa,aAAa,KA4EhC,MAAMqB,EAAarB,EAAYqB,WAAWiB,KAAKtC,GACzCiC,EAAoBjC,EAAYiC,kBAAkBK,KAAKtC"}
@@ -0,0 +1,2 @@
1
+ function x(){return"xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,(x=>{const r=16*Math.random()|0;return("x"===x?r:3&r|8).toString(16)}))}export{x as setGuid};
2
+ //# sourceMappingURL=set-guid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-guid.js","sources":["../../../../packages/utils/src/set-guid.ts"],"sourcesContent":["/**\n * 随机id\n */\nexport function setGuid() {\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0\n const v = c === 'x' ? r : (r & 0x3 | 0x8)\n return v.toString(16)\n })\n}\n"],"names":["setGuid","replace","c","r","Math","random","toString"],"mappings":"AAGO,SAASA,IACd,MAAO,mCAAmCC,QAAQ,SAAUC,IAC1D,MAAMC,EAAoB,GAAhBC,KAAKC,SAAgB,EAExB,OADS,MAANH,EAAYC,EAAS,EAAJA,EAAU,GAC5BG,SAAS,GAAE,GAExB"}
package/es/src/storage.js CHANGED
@@ -1,113 +1,2 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
3
- enumerable: true,
4
- configurable: true,
5
- writable: true,
6
- value
7
- }) : obj[key] = value;
8
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
9
- class Storage {
10
- constructor() {
11
- var _this = this;
12
- let prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "qxs_";
13
- __publicField(this, "prefix");
14
- __publicField(this, "local", {
15
- has: function (key) {
16
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
17
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
18
- return Object.prototype.hasOwnProperty.call(localStorage, prefixedKey);
19
- },
20
- get: function (key) {
21
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
22
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
23
- return localStorage.getItem(prefixedKey);
24
- },
25
- set: function (key, value) {
26
- let usePrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
27
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
28
- localStorage.setItem(prefixedKey, value);
29
- },
30
- remove: function (key) {
31
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
32
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
33
- localStorage.removeItem(prefixedKey);
34
- },
35
- clear: () => {
36
- localStorage.clear();
37
- }
38
- });
39
- __publicField(this, "session", {
40
- has: function (key) {
41
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
42
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
43
- return Object.prototype.hasOwnProperty.call(sessionStorage, prefixedKey);
44
- },
45
- get: function (key) {
46
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
47
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
48
- return sessionStorage.getItem(prefixedKey);
49
- },
50
- set: function (key, value) {
51
- let usePrefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
52
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
53
- sessionStorage.setItem(prefixedKey, value);
54
- },
55
- remove: function (key) {
56
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
57
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
58
- sessionStorage.removeItem(prefixedKey);
59
- },
60
- clear: () => {
61
- sessionStorage.clear();
62
- }
63
- });
64
- __publicField(this, "cookie", {
65
- has: function (key) {
66
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
67
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
68
- return new RegExp(`(^|;)\\s*${prefixedKey}=`).test(document.cookie);
69
- },
70
- get: function (key) {
71
- let usePrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
72
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
73
- const match = document.cookie.match(new RegExp(`(^|;)\\s*${prefixedKey}=([^;]*)`));
74
- return match ? decodeURIComponent(match[2]) : null;
75
- },
76
- set: function (key, value) {
77
- let expires = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
78
- let path = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : "/";
79
- let domain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : window.location.hostname;
80
- let usePrefix = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
81
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
82
- const expiresDate = /* @__PURE__ */new Date();
83
- expiresDate.setTime(expiresDate.getTime() + expires * 24 * 60 * 60 * 1e3);
84
- const expiresStr = `;expires=${expiresDate.toUTCString()}`;
85
- const pathStr = `;path=${path}`;
86
- const domainStr = domain ? `;domain=${domain}` : "";
87
- document.cookie = `${prefixedKey}=${encodeURIComponent(value)}${expiresStr}${pathStr}${domainStr}`;
88
- },
89
- remove: function (key) {
90
- let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "/";
91
- let domain = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window.location.hostname;
92
- let usePrefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
93
- const prefixedKey = usePrefix ? `${_this.prefix}${key}` : key;
94
- const expiresStr = `;expires=${(/* @__PURE__ */new Date(0)).toUTCString()}`;
95
- const pathStr = `;path=${path}`;
96
- const domainStr = domain ? `;domain=${domain}` : "";
97
- document.cookie = `${prefixedKey}=;${expiresStr}${pathStr}${domainStr}`;
98
- },
99
- clear: () => {
100
- const keys = document.cookie.match(/[^ =;]+(?==)/g);
101
- if (keys) {
102
- keys.forEach(key => {
103
- document.cookie = `${key}=;expires=${(/* @__PURE__ */new Date(0)).toUTCString()};path=/`;
104
- });
105
- }
106
- }
107
- });
108
- this.prefix = prefix;
109
- }
110
- }
111
-
112
- export { Storage };
1
+ var e=Object.defineProperty,t=(t,o,n)=>((t,o,n)=>o in t?e(t,o,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[o]=n)(t,"symbol"!=typeof o?o+"":o,n);class o{constructor(){var e=this;let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"qxs_";t(this,"prefix"),t(this,"local",{has:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;return Object.prototype.hasOwnProperty.call(localStorage,o)},get:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;return localStorage.getItem(o)},set:function(t,o){const n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?`${e.prefix}${t}`:t;localStorage.setItem(n,o)},remove:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;localStorage.removeItem(o)},clear:()=>{localStorage.clear()}}),t(this,"session",{has:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;return Object.prototype.hasOwnProperty.call(sessionStorage,o)},get:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;return sessionStorage.getItem(o)},set:function(t,o){const n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?`${e.prefix}${t}`:t;sessionStorage.setItem(n,o)},remove:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;sessionStorage.removeItem(o)},clear:()=>{sessionStorage.clear()}}),t(this,"cookie",{has:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t;return new RegExp(`(^|;)\\s*${o}=`).test(document.cookie)},get:function(t){const o=!(arguments.length>1&&void 0!==arguments[1])||arguments[1]?`${e.prefix}${t}`:t,n=document.cookie.match(new RegExp(`(^|;)\\s*${o}=([^;]*)`));return n?decodeURIComponent(n[2]):null},set:function(t,o){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"/",r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:window.location.hostname;const c=!(arguments.length>5&&void 0!==arguments[5])||arguments[5]?`${e.prefix}${t}`:t,s=new Date;s.setTime(s.getTime()+24*n*60*60*1e3);const l=`;expires=${s.toUTCString()}`,a=`;path=${i}`,$=r?`;domain=${r}`:"";document.cookie=`${c}=${encodeURIComponent(o)}${l}${a}${$}`},remove:function(t){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window.location.hostname;const i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?`${e.prefix}${t}`:t,r=`;expires=${new Date(0).toUTCString()}`,c=`;path=${o}`,s=n?`;domain=${n}`:"";document.cookie=`${i}=;${r}${c}${s}`},clear:()=>{const e=document.cookie.match(/[^ =;]+(?==)/g);e&&e.forEach((e=>{document.cookie=`${e}=;expires=${new Date(0).toUTCString()};path=/`}))}}),this.prefix=o}}export{o as Storage};
113
2
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sources":["../../../../packages/utils/src/storage.ts"],"sourcesContent":["// 使用单例模式\nclass Storage {\n private readonly prefix: string\n\n constructor(prefix = 'qxs_') {\n this.prefix = prefix\n }\n\n local = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return Object.prototype.hasOwnProperty.call(localStorage, prefixedKey)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return localStorage.getItem(prefixedKey)\n },\n set: (key: string, value: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n localStorage.setItem(prefixedKey, value)\n },\n remove: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n localStorage.removeItem(prefixedKey)\n },\n clear: () => {\n localStorage.clear()\n },\n }\n\n session = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return Object.prototype.hasOwnProperty.call(sessionStorage, prefixedKey)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return sessionStorage.getItem(prefixedKey)\n },\n set: (key: string, value: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n sessionStorage.setItem(prefixedKey, value)\n },\n remove: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n sessionStorage.removeItem(prefixedKey)\n },\n clear: () => {\n sessionStorage.clear()\n },\n }\n\n cookie = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return new RegExp(`(^|;)\\\\s*${prefixedKey}=`).test(document.cookie)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const match = document.cookie.match(new RegExp(`(^|;)\\\\s*${prefixedKey}=([^;]*)`))\n return match ? decodeURIComponent(match[2]) : null\n },\n set: (key: string, value: string, expires = 1, path = '/', domain = window.location.hostname, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const expiresDate = new Date()\n expiresDate.setTime(expiresDate.getTime() + expires * 24 * 60 * 60 * 1000)\n const expiresStr = `;expires=${expiresDate.toUTCString()}`\n const pathStr = `;path=${path}`\n const domainStr = domain ? `;domain=${domain}` : ''\n\n document.cookie = `${prefixedKey}=${encodeURIComponent(value)}${expiresStr}${pathStr}${domainStr}`\n },\n remove: (key: string, path = '/', domain = window.location.hostname, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const expiresStr = `;expires=${new Date(0).toUTCString()}`\n const pathStr = `;path=${path}`\n const domainStr = domain ? `;domain=${domain}` : ''\n\n document.cookie = `${prefixedKey}=;${expiresStr}${pathStr}${domainStr}`\n },\n clear: () => {\n const keys = document.cookie.match(/[^ =;]+(?==)/g)\n if (keys) {\n keys.forEach((key) => {\n document.cookie = `${key}=;expires=${new Date(0).toUTCString()};path=/`\n })\n }\n },\n }\n}\n\n// 直接导出 Storage 类\nexport { Storage }\n"],"names":["Storage","constructor","_this","prefix","__publicField","has","key","usePrefix","arguments","length","undefined","prefixedKey","Object","prototype","hasOwnProperty","call","localStorage","get","getItem","set","value","setItem","remove","removeItem","clear","sessionStorage","RegExp","test","document","cookie","match","decodeURIComponent","expires","path","domain","window","location","hostname","expiresDate","Date","setTime","getTime","expiresStr","toUTCString","pathStr","domainStr","encodeURIComponent","keys","forEach"],"mappings":"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"}
1
+ {"version":3,"file":"storage.js","sources":["../../../../packages/utils/src/storage.ts"],"sourcesContent":["// 使用单例模式\nclass Storage {\n private readonly prefix: string\n\n constructor(prefix = 'qxs_') {\n this.prefix = prefix\n }\n\n local = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return Object.prototype.hasOwnProperty.call(localStorage, prefixedKey)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return localStorage.getItem(prefixedKey)\n },\n set: (key: string, value: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n localStorage.setItem(prefixedKey, value)\n },\n remove: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n localStorage.removeItem(prefixedKey)\n },\n clear: () => {\n localStorage.clear()\n },\n }\n\n session = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return Object.prototype.hasOwnProperty.call(sessionStorage, prefixedKey)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return sessionStorage.getItem(prefixedKey)\n },\n set: (key: string, value: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n sessionStorage.setItem(prefixedKey, value)\n },\n remove: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n sessionStorage.removeItem(prefixedKey)\n },\n clear: () => {\n sessionStorage.clear()\n },\n }\n\n cookie = {\n has: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n return new RegExp(`(^|;)\\\\s*${prefixedKey}=`).test(document.cookie)\n },\n get: (key: string, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const match = document.cookie.match(new RegExp(`(^|;)\\\\s*${prefixedKey}=([^;]*)`))\n return match ? decodeURIComponent(match[2]) : null\n },\n set: (key: string, value: string, expires = 1, path = '/', domain = window.location.hostname, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const expiresDate = new Date()\n expiresDate.setTime(expiresDate.getTime() + expires * 24 * 60 * 60 * 1000)\n const expiresStr = `;expires=${expiresDate.toUTCString()}`\n const pathStr = `;path=${path}`\n const domainStr = domain ? `;domain=${domain}` : ''\n\n document.cookie = `${prefixedKey}=${encodeURIComponent(value)}${expiresStr}${pathStr}${domainStr}`\n },\n remove: (key: string, path = '/', domain = window.location.hostname, usePrefix: boolean = true) => {\n const prefixedKey = usePrefix ? `${this.prefix}${key}` : key\n const expiresStr = `;expires=${new Date(0).toUTCString()}`\n const pathStr = `;path=${path}`\n const domainStr = domain ? `;domain=${domain}` : ''\n\n document.cookie = `${prefixedKey}=;${expiresStr}${pathStr}${domainStr}`\n },\n clear: () => {\n const keys = document.cookie.match(/[^ =;]+(?==)/g)\n if (keys) {\n keys.forEach((key) => {\n document.cookie = `${key}=;expires=${new Date(0).toUTCString()};path=/`\n })\n }\n },\n }\n}\n\n// 直接导出 Storage 类\nexport { Storage }\n"],"names":["Storage","constructor","_this","this","prefix","__publicField","has","key","prefixedKey","arguments","length","undefined","Object","prototype","hasOwnProperty","call","localStorage","get","getItem","set","value","setItem","remove","removeItem","clear","sessionStorage","RegExp","test","document","cookie","match","decodeURIComponent","expires","path","domain","window","location","hostname","expiresDate","Date","setTime","getTime","expiresStr","toUTCString","pathStr","domainStr","encodeURIComponent","keys","forEach"],"mappings":"0JACA,MAAMA,EAGJC,WAAAA,GAA6B,IAAAC,EAAAC,KAAA,IAAjBC,yDAAS,OAFJC,EAAAF,KAAA,UAMTE,EAAAF,KAAA,QAAA,CACNG,IAAK,SAACC,GACJ,MAAMC,IADWC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACe,GAAGP,EAAKE,SAASG,IAAQA,EACzD,OAAOK,OAAOC,UAAUC,eAAeC,KAAKC,aAAcR,EAC5D,EACAS,IAAK,SAACV,GACJ,MAAMC,IADWC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACe,GAAGP,EAAKE,SAASG,IAAQA,EAClD,OAAAS,aAAaE,QAAQV,EAC9B,EACAW,IAAK,SAACZ,EAAaa,GACjB,MAAMZ,6DAA0B,GAAGN,EAAKE,SAASG,IAAQA,EAC5CS,aAAAK,QAAQb,EAAaY,EACpC,EACAE,OAAQ,SAACf,GACP,MAAMC,IADcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACY,GAAGP,EAAKE,SAASG,IAAQA,EACzDS,aAAaO,WAAWf,EAC1B,EACAgB,MAAOA,KACLR,aAAaQ,OAAM,IAIbnB,EAAAF,KAAA,UAAA,CACRG,IAAK,SAACC,GACJ,MAAMC,IADWC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACe,GAAGP,EAAKE,SAASG,IAAQA,EACzD,OAAOK,OAAOC,UAAUC,eAAeC,KAAKU,eAAgBjB,EAC9D,EACAS,IAAK,SAACV,GACJ,MAAMC,IADWC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACe,GAAGP,EAAKE,SAASG,IAAQA,EAClD,OAAAkB,eAAeP,QAAQV,EAChC,EACAW,IAAK,SAACZ,EAAaa,GACjB,MAAMZ,6DAA0B,GAAGN,EAAKE,SAASG,IAAQA,EAC1CkB,eAAAJ,QAAQb,EAAaY,EACtC,EACAE,OAAQ,SAACf,GACP,MAAMC,IADcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACY,GAAGP,EAAKE,SAASG,IAAQA,EACzDkB,eAAeF,WAAWf,EAC5B,EACAgB,MAAOA,KACLC,eAAeD,OAAM,IAIhBnB,EAAAF,KAAA,SAAA,CACPG,IAAK,SAACC,GACJ,MAAMC,IADWC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACe,GAAGP,EAAKE,SAASG,IAAQA,EAClD,OAAA,IAAImB,OAAO,YAAYlB,MAAgBmB,KAAKC,SAASC,OAC9D,EACAZ,IAAK,SAACV,GACJ,MAAMC,IADWC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACe,GAAGP,EAAKE,SAASG,IAAQA,EACnDuB,EAAQF,SAASC,OAAOC,MAAM,IAAIJ,OAAO,YAAYlB,cAC3D,OAAOsB,EAAQC,mBAAmBD,EAAM,IAAM,IAChD,EACAX,IAAK,SAACZ,EAAaa,GAAyG,IAA1FY,EAAUvB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,EAAGwB,EAAOxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,IAAKyB,EAASzB,UAAAC,eAAAC,IAAAF,UAAA,GAAAA,UAAA0B,GAAAA,OAAOC,SAASC,SAClF,MAAM7B,6DAA0B,GAAGN,EAAKE,SAASG,IAAQA,EACnD+B,MAAkBC,KACZD,EAAAE,QAAQF,EAAYG,UAAsB,GAAVT,EAAe,GAAK,GAAK,KACrE,MAAMU,EAAa,YAAYJ,EAAYK,gBACrCC,EAAU,SAASX,IACnBY,EAAYX,EAAS,WAAWA,IAAW,GAEjDN,SAASC,OAAS,GAAGrB,KAAesC,mBAAmB1B,KAASsB,IAAaE,IAAUC,GACzF,EACAvB,OAAQ,SAACf,GAA0F,IAA7E0B,EAAOxB,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,IAAKyB,sDAASC,GAAAA,OAAOC,SAASC,SACzD,MAAM7B,IAD6DC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GACnC,GAAGP,EAAKE,SAASG,IAAQA,EACnDmC,EAAa,YAAY,IAAIH,KAAK,GAAGI,gBACrCC,EAAU,SAASX,IACnBY,EAAYX,EAAS,WAAWA,IAAW,GAExCN,SAAAC,OAAS,GAAGrB,MAAgBkC,IAAaE,IAAUC,GAC9D,EACArB,MAAOA,KACL,MAAMuB,EAAOnB,SAASC,OAAOC,MAAM,iBAC/BiB,GACGA,EAAAC,SAASzC,IACHqB,SAAAC,OAAS,GAAGtB,cAAG,IAAiBgC,KAAK,GAAGI,sBAAa,GAElE,IAjFFxC,KAAKC,OAASA,CAChB"}
package/es/src/types.js CHANGED
@@ -1,38 +1,2 @@
1
- const isUndefined = val => val === void 0;
2
- const isBoolean = val => typeof val === "boolean";
3
- const isNumber = val => typeof val === "number";
4
- function isElement(e) {
5
- if (typeof Element === "undefined") {
6
- return false;
7
- }
8
- return e instanceof Element;
9
- }
10
- function isWindow(val) {
11
- return val === window;
12
- }
13
- function isJSONString(str) {
14
- const jsonStringRegex = /^[\],:{}\s]*$/.test(str.replace(/\\["\\/bfnrtu]/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""));
15
- return jsonStringRegex && isValidJSON(str);
16
- }
17
- function isValidJSON(str) {
18
- try {
19
- JSON.parse(str);
20
- return true;
21
- } catch (e) {
22
- console.log("e: ", e);
23
- return false;
24
- }
25
- }
26
- function isImageByMimeType(file) {
27
- return file.type.startsWith("image/");
28
- }
29
- function isPlainObject(value) {
30
- if (value === null || typeof value !== "object") {
31
- return false;
32
- }
33
- const proto = Object.getPrototypeOf(value);
34
- return proto === null || proto === Object.prototype;
35
- }
36
-
37
- export { isBoolean, isElement, isImageByMimeType, isJSONString, isNumber, isPlainObject, isUndefined, isWindow };
1
+ const e=e=>void 0===e,t=e=>"boolean"==typeof e,n=e=>"number"==typeof e;function r(e){return"undefined"!=typeof Element&&e instanceof Element}function o(e){return e===window}function u(e){return/^[\],:{}\s]*$/.test(e.replace(/\\["\\/bfnrtu]/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))&&function(e){try{return JSON.parse(e),!0}catch(e){return console.log("e: ",e),!1}}(e)}function c(e){return e.type.startsWith("image/")}function f(e){if(null===e||"object"!=typeof e)return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}export{t as isBoolean,r as isElement,c as isImageByMimeType,u as isJSONString,n as isNumber,f as isPlainObject,e as isUndefined,o as isWindow};
38
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../packages/utils/src/types.ts"],"sourcesContent":["export const isUndefined = (val: any): val is undefined => val === undefined\nexport const isBoolean = (val: any): val is boolean => typeof val === 'boolean'\nexport const isNumber = (val: any): val is number => typeof val === 'number'\n\nexport function isElement(e: unknown): e is Element {\n if (typeof Element === 'undefined') {\n return false\n }\n return e instanceof Element\n}\n\nexport function isWindow(val: unknown): val is Window {\n return val === window\n}\n\n/**\n * 判断字符串是否为JSON字符串\n * @param str - 要判断的字符串\n * @returns 如果字符串是JSON字符串,则返回true,否则返回false\n */\nexport function isJSONString(str: string) {\n const jsonStringRegex = /^[\\],:{}\\s]*$/\n .test(str.replace(/\\\\[\"\\\\/bfnrtu]/g, '@')\n .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))\n\n return jsonStringRegex && isValidJSON(str)\n}\n\n/**\n * 判断字符串是否为有效的JSON字符串\n * @param str - 要判断的字符串\n * @returns 如果字符串是有效的JSON字符串,则返回true,否则返回false\n */\nfunction isValidJSON(str: string) {\n try {\n JSON.parse(str)\n return true\n }\n catch (e) {\n console.log('e: ', e)\n return false\n }\n}\n\n/**\n * 通过 MIME 类型判断文件是否为图片\n * @param file - 要检查的文件对象\n * @returns {boolean} 如果文件是图片类型返回 true,否则返回 false\n * @example\n * const file = new File([''], 'test.png', { type: 'image/png' });\n * isImageByMimeType(file); // true\n */\nexport function isImageByMimeType(file: File) {\n return file.type.startsWith('image/')\n}\n\n/**\n * 判断一个值是否为普通对象\n * @param value - 要判断的值\n * @returns 如果值是普通对象,则返回 true,否则返回 false\n */\nexport function isPlainObject(value: unknown): value is Record<string, any> {\n if (value === null || typeof value !== 'object') {\n return false\n }\n\n // 获取原型\n const proto = Object.getPrototypeOf(value)\n\n // 如果没有原型(proto === null),说明是通过 Object.create(null) 创建的\n // 或者原型就是 Object.prototype,说明是普通对象\n return proto === null || proto === Object.prototype\n}\n"],"names":["isUndefined","val","isBoolean","isNumber","isElement","e","Element","isWindow","window","isJSONString","str","jsonStringRegex","test","replace","isValidJSON","JSON","parse","console","log","isImageByMimeType","file","type","startsWith","isPlainObject","value","proto","Object","getPrototypeOf","prototype"],"mappings":"AAAa,MAAAA,WAAA,GAAeC,GAAA,IAA+BA,GAAQ,KAAA;AAC5D,MAAMC,SAAY,GAACD,GAA6B,IAAA,OAAOA,GAAQ,KAAA;AAC/D,MAAME,QAAW,GAACF,GAA4B,IAAA,OAAOA,GAAQ,KAAA;AAE7D,SAASG,UAAUC,CAA0B,EAAA;AAC9C,EAAA,IAAA,OAAOC,YAAY,WAAa,EAAA;AAC3B,IAAA,OAAA,KAAA;AACT;EACA,OAAOD,CAAa,YAAAC,OAAA;AACtB;AAEO,SAASC,SAASN,GAA6B,EAAA;EACpD,OAAOA,GAAQ,KAAAO,MAAA;AACjB;AAOO,SAASC,aAAaC,GAAa,EAAA;AACxC,EAAA,MAAMC,eAAkB,GAAA,eAAA,CACrBC,IAAK,CAAAF,GAAA,CAAIG,QAAQ,iBAAmB,EAAA,GAAG,CACrC,CAAAA,OAAA,CAAQ,oEAAoE,GAAG,CAAA,CAC/EA,OAAQ,CAAA,sBAAA,EAAwB,EAAE,CAAC,CAAA;AAEjC,EAAA,OAAAF,eAAA,IAAmBG,YAAYJ,GAAG,CAAA;AAC3C;AAOA,SAASI,YAAYJ,GAAa,EAAA;EAC5B,IAAA;AACFK,IAAAA,IAAA,CAAKC,MAAMN,GAAG,CAAA;AACP,IAAA,OAAA,IAAA;WAEFL,CAAG,EAAA;AACAY,IAAAA,OAAA,CAAAC,GAAA,CAAI,OAAOb,CAAC,CAAA;AACb,IAAA,OAAA,KAAA;AACT;AACF;AAUO,SAASc,kBAAkBC,IAAY,EAAA;AACrC,EAAA,OAAAA,IAAA,CAAKC,IAAK,CAAAC,UAAA,CAAW,QAAQ,CAAA;AACtC;AAOO,SAASC,cAAcC,KAA8C,EAAA;EAC1E,IAAIA,KAAU,KAAA,IAAA,IAAQ,OAAOA,KAAA,KAAU,QAAU,EAAA;AACxC,IAAA,OAAA,KAAA;AACT;AAGM,EAAA,MAAAC,KAAA,GAAQC,MAAO,CAAAC,cAAA,CAAeH,KAAK,CAAA;EAIlC,OAAAC,KAAA,KAAU,IAAQ,IAAAA,KAAA,KAAUC,MAAO,CAAAE,SAAA;AAC5C;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../packages/utils/src/types.ts"],"sourcesContent":["export const isUndefined = (val: any): val is undefined => val === undefined\nexport const isBoolean = (val: any): val is boolean => typeof val === 'boolean'\nexport const isNumber = (val: any): val is number => typeof val === 'number'\n\nexport function isElement(e: unknown): e is Element {\n if (typeof Element === 'undefined') {\n return false\n }\n return e instanceof Element\n}\n\nexport function isWindow(val: unknown): val is Window {\n return val === window\n}\n\n/**\n * 判断字符串是否为JSON字符串\n * @param str - 要判断的字符串\n * @returns 如果字符串是JSON字符串,则返回true,否则返回false\n */\nexport function isJSONString(str: string) {\n const jsonStringRegex = /^[\\],:{}\\s]*$/\n .test(str.replace(/\\\\[\"\\\\/bfnrtu]/g, '@')\n .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, ']')\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, ''))\n\n return jsonStringRegex && isValidJSON(str)\n}\n\n/**\n * 判断字符串是否为有效的JSON字符串\n * @param str - 要判断的字符串\n * @returns 如果字符串是有效的JSON字符串,则返回true,否则返回false\n */\nfunction isValidJSON(str: string) {\n try {\n JSON.parse(str)\n return true\n }\n catch (e) {\n console.log('e: ', e)\n return false\n }\n}\n\n/**\n * 通过 MIME 类型判断文件是否为图片\n * @param file - 要检查的文件对象\n * @returns {boolean} 如果文件是图片类型返回 true,否则返回 false\n * @example\n * const file = new File([''], 'test.png', { type: 'image/png' });\n * isImageByMimeType(file); // true\n */\nexport function isImageByMimeType(file: File) {\n return file.type.startsWith('image/')\n}\n\n/**\n * 判断一个值是否为普通对象\n * @param value - 要判断的值\n * @returns 如果值是普通对象,则返回 true,否则返回 false\n */\nexport function isPlainObject(value: unknown): value is Record<string, any> {\n if (value === null || typeof value !== 'object') {\n return false\n }\n\n // 获取原型\n const proto = Object.getPrototypeOf(value)\n\n // 如果没有原型(proto === null),说明是通过 Object.create(null) 创建的\n // 或者原型就是 Object.prototype,说明是普通对象\n return proto === null || proto === Object.prototype\n}\n"],"names":["isUndefined","val","isBoolean","isNumber","isElement","e","Element","isWindow","window","isJSONString","str","test","replace","JSON","parse","console","log","isValidJSON","isImageByMimeType","file","type","startsWith","isPlainObject","value","proto","Object","getPrototypeOf","prototype"],"mappings":"AAAa,MAAAA,EAAeC,QAAuC,IAARA,EAC9CC,EAAaD,GAA4C,kBAARA,EACjDE,EAAYF,GAA2C,iBAARA,EAErD,SAASG,EAAUC,GACpB,MAAmB,oBAAZC,SAGJD,aAAaC,OACtB,CAEO,SAASC,EAASN,GACvB,OAAOA,IAAQO,MACjB,CAOO,SAASC,EAAaC,GAMpB,MALiB,gBACrBC,KAAKD,EAAIE,QAAQ,kBAAmB,KAClCA,QAAQ,mEAAoE,KAC5EA,QAAQ,uBAAwB,MAUvC,SAAqBF,GACf,IAEK,OADPG,KAAKC,MAAMJ,IACJ,QAEFL,GAEE,OADCU,QAAAC,IAAI,MAAOX,IACZ,CACT,CACF,CAjB4BY,CAAYP,EACxC,CA0BO,SAASQ,EAAkBC,GACzB,OAAAA,EAAKC,KAAKC,WAAW,SAC9B,CAOO,SAASC,EAAcC,GAC5B,GAAc,OAAVA,GAAmC,iBAAVA,EACpB,OAAA,EAIH,MAAAC,EAAQC,OAAOC,eAAeH,GAI7B,OAAU,OAAVC,GAAkBA,IAAUC,OAAOE,SAC5C"}
package/es/src/use-api.js CHANGED
@@ -1,65 +1,2 @@
1
- import { isPlainObject } from './types.js';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
5
- enumerable: true,
6
- configurable: true,
7
- writable: true,
8
- value
9
- }) : obj[key] = value;
10
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
11
- const _ApiService = class _ApiService {
12
- constructor(apiInstance) {
13
- this.apiInstance = apiInstance;
14
- __publicField(this, "useApi", async (axiosConfig, params, isWholeResponse) => {
15
- let res = null;
16
- let error = null;
17
- try {
18
- const config = {
19
- ...axiosConfig,
20
- ...(["GET"].includes(axiosConfig.method.toUpperCase()) ? {
21
- params
22
- } : {
23
- data: params
24
- })
25
- };
26
- config.url = (config.proxyPrefix || "") + axiosConfig.url;
27
- delete config.proxyPrefix;
28
- const response = await this.apiInstance(config);
29
- res = isWholeResponse ? response.data : response.data.data;
30
- } catch (err) {
31
- if (err.name !== "AxiosError") {
32
- if (this.isAxiosResponse(err)) {
33
- error = err.data;
34
- } else if (this.isErrorResponse(err)) {
35
- error = err;
36
- }
37
- } else {
38
- console.error(err);
39
- }
40
- }
41
- return {
42
- res,
43
- error
44
- };
45
- });
46
- if (_ApiService.instance) {
47
- return _ApiService.instance;
48
- }
49
- _ApiService.instance = this;
50
- }
51
- isBusinessError(obj) {
52
- return isPlainObject(obj) && typeof obj.message === "string" && typeof obj.code === "number" && obj.code !== 0;
53
- }
54
- isAxiosResponse(value) {
55
- return isPlainObject(value) && value.data !== void 0 && this.isBusinessError(value.data) && value.status !== void 0 && value.statusText !== void 0 && value.headers !== void 0 && value.config !== void 0 && value.request !== void 0;
56
- }
57
- isErrorResponse(value) {
58
- return "code" in value && "data" in value && "message" in value && value.code !== 0;
59
- }
60
- };
61
- __publicField(_ApiService, "instance");
62
- let ApiService = _ApiService;
63
-
64
- export { ApiService };
1
+ import{isPlainObject as e}from"./types.js";var s=Object.defineProperty,r=(e,r,t)=>((e,r,t)=>r in e?s(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t)(e,"symbol"!=typeof r?r+"":r,t);const t=class s{constructor(e){if(this.apiInstance=e,r(this,"useApi",(async(e,s,r)=>{let t=null,i=null;try{const i={...e,...["GET"].includes(e.method.toUpperCase())?{params:s}:{data:s}};i.url=(i.proxyPrefix||"")+e.url,delete i.proxyPrefix;const o=await this.apiInstance(i);t=r?o.data:o.data.data}catch(e){"AxiosError"!==e.name?this.isAxiosResponse(e)?i=e.data:this.isErrorResponse(e)&&(i=e):console.error(e)}return{res:t,error:i}})),s.instance)return s.instance;s.instance=this}isBusinessError(s){return e(s)&&"string"==typeof s.message&&"number"==typeof s.code&&0!==s.code}isAxiosResponse(s){return e(s)&&void 0!==s.data&&this.isBusinessError(s.data)&&void 0!==s.status&&void 0!==s.statusText&&void 0!==s.headers&&void 0!==s.config&&void 0!==s.request}isErrorResponse(e){return"code"in e&&"data"in e&&"message"in e&&0!==e.code}};r(t,"instance");let i=t;export{i as ApiService};
65
2
  //# sourceMappingURL=use-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-api.js","sources":["../../../../packages/utils/src/use-api.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport { isPlainObject } from './types'\n\nexport interface SuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\nexport interface ErrorResponse {\n code: number\n data: null\n message: string\n}\n\nexport interface UseApiResponse<W extends boolean = false, T = unknown> {\n res: W extends true ? SuccessResponse<T> : T\n error: ErrorResponse | null\n}\n\nexport interface UrlObjectType {\n url: string\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'\n proxyPrefix?: string\n}\n\nexport type ApiTypeMap<U extends UrlObjectType> = {\n [K in U['url']]: {\n request: any\n response: any\n }\n}\n\ntype RequestPayload<T> = T extends { data: any } ? T['data'] : T\ntype RequestParams<T> = T extends { params: any } ? T['params'] : T\n\nexport class ApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n> {\n private static instance: ApiService<any, any>\n\n constructor(\n private apiInstance: AxiosInstance,\n ) {\n if (ApiService.instance) {\n return ApiService.instance as ApiService<T, U>\n }\n ApiService.instance = this\n }\n\n private isBusinessError(obj: ErrorResponse): boolean {\n return isPlainObject(obj)\n && typeof obj.message === 'string'\n && typeof obj.code === 'number'\n && obj.code !== 0\n }\n\n private isAxiosResponse(value: any): value is AxiosResponse {\n return isPlainObject(value)\n && value.data !== undefined\n && this.isBusinessError(value.data)\n && value.status !== undefined\n && value.statusText !== undefined\n && value.headers !== undefined\n && value.config !== undefined\n && value.request !== undefined\n }\n\n private isErrorResponse(value: any): value is ErrorResponse {\n return 'code' in value && 'data' in value && 'message' in value && value.code !== 0\n }\n\n public useApi = async <\n K extends U,\n W extends boolean = false,\n >(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse?: W,\n ): Promise<UseApiResponse<W, T[K['url']]['response']>> => {\n let res: UseApiResponse<W, T[K['url']]['response']>['res'] | null = null\n let error: UseApiResponse['error'] = null\n\n try {\n const config = {\n ...axiosConfig,\n ...(['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }),\n }\n\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n\n const response = await this.apiInstance<SuccessResponse<T[K['url']]['response']>>(config)\n res = isWholeResponse\n ? response.data\n : response.data.data\n }\n catch (err: any) {\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data\n }\n else if (this.isErrorResponse(err)) {\n error = err\n }\n }\n else {\n console.error(err)\n }\n }\n\n return { res: res!, error }\n }\n}\n"],"names":["_ApiService","constructor","apiInstance","__publicField","axiosConfig","params","isWholeResponse","res","error","config","includes","method","toUpperCase","data","url","proxyPrefix","response","err","name","isAxiosResponse","isErrorResponse","console","instance","isBusinessError","obj","isPlainObject","message","code","value","status","statusText","headers","request","ApiService"],"mappings":";;;;;;;;;;AAqCO,MAAMA,WAAA,GAAN,MAAMA,WAGX,CAAA;EAGAC,YACUC,WACR,EAAA;IADQ,IAAA,CAAAA,WAAA,GAAAA,WAAA;IA8BVC,aAAA,CAAA,IAAA,EAAO,QAAS,EAAA,OAIdC,WAGA,EAAAC,MAAA,EACAC,eACwD,KAAA;MACxD,IAAIC,GAAgE,GAAA,IAAA;MACpE,IAAIC,KAAiC,GAAA,IAAA;MAEjC,IAAA;AACF,QAAA,MAAMC,MAAS,GAAA;AACb,UAAA,GAAGL,WAAA;AACH,UAAA,IAAI,CAAC,KAAK,CAAA,CAAEM,SAASN,WAAY,CAAAO,MAAA,CAAOC,WAAY,EAAC,IAAI;AAAEP,YAAAA;AAAO,WAAI,GAAA;AAAEQ,YAAAA,MAAMR;WAAO;SACvF;AAEAI,QAAAA,MAAA,CAAOK,GAAO,GAAA,CAAAL,MAAA,CAAOM,WAAe,IAAA,EAAA,IAAMX,WAAY,CAAAU,GAAA;QACtD,OAAOL,MAAO,CAAAM,WAAA;QAEd,MAAMC,QAAW,GAAA,MAAM,IAAK,CAAAd,WAAA,CAAsDO,MAAM,CAAA;QACxFF,GAAA,GAAMD,eACF,GAAAU,QAAA,CAASH,IACT,GAAAG,QAAA,CAASH,IAAK,CAAAA,IAAA;eAEbI,GAAU,EAAA;AACX,QAAA,IAAAA,GAAA,CAAIC,SAAS,YAAc,EAAA;AACzB,UAAA,IAAA,IAAA,CAAKC,eAAgB,CAAAF,GAAG,CAAG,EAAA;YAC7BT,KAAA,GAAQS,GAAI,CAAAJ,IAAA;WAEL,MAAA,IAAA,IAAA,CAAKO,eAAgB,CAAAH,GAAG,CAAG,EAAA;AAC1BT,YAAAA,KAAA,GAAAS,GAAA;AACV;AACF,SACK,MAAA;AACHI,UAAAA,OAAA,CAAQb,MAAMS,GAAG,CAAA;AACnB;AACF;MAEO,OAAA;QAAEV;AAAWC,QAAAA;OAAM;AAC5B,KAAA,CAAA;IAtEE,IAAIR,YAAWsB,QAAU,EAAA;MACvB,OAAOtB,WAAW,CAAAsB,QAAA;AACpB;IACAtB,WAAA,CAAWsB,QAAW,GAAA,IAAA;AACxB;EAEQC,gBAAgBC,GAA6B,EAAA;IACnD,OAAOC,aAAc,CAAAD,GAAG,CACnB,IAAA,OAAOA,GAAI,CAAAE,OAAA,KAAY,QACvB,IAAA,OAAOF,GAAI,CAAAG,IAAA,KAAS,QACpB,IAAAH,GAAA,CAAIG,IAAS,KAAA,CAAA;AACpB;EAEQR,gBAAgBS,KAAoC,EAAA;IACnD,OAAAH,aAAA,CAAcG,KAAK,CAAA,IACrBA,KAAM,CAAAf,IAAA,KAAS,UACf,IAAK,CAAAU,eAAA,CAAgBK,KAAM,CAAAf,IAAI,CAC/B,IAAAe,KAAA,CAAMC,WAAW,MACjB,IAAAD,KAAA,CAAME,UAAe,KAAA,MAAA,IACrBF,KAAM,CAAAG,OAAA,KAAY,UAClBH,KAAM,CAAAnB,MAAA,KAAW,MACjB,IAAAmB,KAAA,CAAMI,OAAY,KAAA,MAAA;AACzB;EAEQZ,gBAAgBQ,KAAoC,EAAA;AAC1D,IAAA,OAAO,UAAUA,KAAS,IAAA,MAAA,IAAUA,SAAS,SAAa,IAAAA,KAAA,IAASA,MAAMD,IAAS,KAAA,CAAA;AACpF;AA6CF,CAAA;AA5EExB,aAAA,CAJWH,WAII,EAAA,UAAA,CAAA;AAJV,IAAMiC,UAAN,GAAAjC;;;;"}
1
+ {"version":3,"file":"use-api.js","sources":["../../../../packages/utils/src/use-api.ts"],"sourcesContent":["import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\nimport { isPlainObject } from './types'\n\nexport interface SuccessResponse<T> {\n code: number\n count: number\n data: T\n message: string\n}\n\nexport interface ErrorResponse {\n code: number\n data: null\n message: string\n}\n\nexport interface UseApiResponse<W extends boolean = false, T = unknown> {\n res: W extends true ? SuccessResponse<T> : T\n error: ErrorResponse | null\n}\n\nexport interface UrlObjectType {\n url: string\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'\n proxyPrefix?: string\n}\n\nexport type ApiTypeMap<U extends UrlObjectType> = {\n [K in U['url']]: {\n request: any\n response: any\n }\n}\n\ntype RequestPayload<T> = T extends { data: any } ? T['data'] : T\ntype RequestParams<T> = T extends { params: any } ? T['params'] : T\n\nexport class ApiService<\n T extends ApiTypeMap<U>,\n U extends UrlObjectType,\n> {\n private static instance: ApiService<any, any>\n\n constructor(\n private apiInstance: AxiosInstance,\n ) {\n if (ApiService.instance) {\n return ApiService.instance as ApiService<T, U>\n }\n ApiService.instance = this\n }\n\n private isBusinessError(obj: ErrorResponse): boolean {\n return isPlainObject(obj)\n && typeof obj.message === 'string'\n && typeof obj.code === 'number'\n && obj.code !== 0\n }\n\n private isAxiosResponse(value: any): value is AxiosResponse {\n return isPlainObject(value)\n && value.data !== undefined\n && this.isBusinessError(value.data)\n && value.status !== undefined\n && value.statusText !== undefined\n && value.headers !== undefined\n && value.config !== undefined\n && value.request !== undefined\n }\n\n private isErrorResponse(value: any): value is ErrorResponse {\n return 'code' in value && 'data' in value && 'message' in value && value.code !== 0\n }\n\n public useApi = async <\n K extends U,\n W extends boolean = false,\n >(\n axiosConfig: Omit<AxiosRequestConfig<RequestPayload<T[K['url']]['request']>>, 'params'> & K & {\n params?: RequestParams<T[K['url']]['request']>\n },\n params?: RequestParams<T[K['url']]['request']>,\n isWholeResponse?: W,\n ): Promise<UseApiResponse<W, T[K['url']]['response']>> => {\n let res: UseApiResponse<W, T[K['url']]['response']>['res'] | null = null\n let error: UseApiResponse['error'] = null\n\n try {\n const config = {\n ...axiosConfig,\n ...(['GET'].includes(axiosConfig.method.toUpperCase()) ? { params } : { data: params }),\n }\n\n config.url = (config.proxyPrefix || '') + axiosConfig.url\n delete config.proxyPrefix\n\n const response = await this.apiInstance<SuccessResponse<T[K['url']]['response']>>(config)\n res = isWholeResponse\n ? response.data\n : response.data.data\n }\n catch (err: any) {\n if (err.name !== 'AxiosError') {\n if (this.isAxiosResponse(err)) {\n error = err.data\n }\n else if (this.isErrorResponse(err)) {\n error = err\n }\n }\n else {\n console.error(err)\n }\n }\n\n return { res: res!, error }\n }\n}\n"],"names":["_ApiService","constructor","apiInstance","this","__publicField","async","axiosConfig","params","isWholeResponse","res","error","config","includes","method","toUpperCase","data","url","proxyPrefix","response","err","name","isAxiosResponse","isErrorResponse","console","instance","isBusinessError","obj","isPlainObject","message","code","value","status","statusText","headers","request","ApiService"],"mappings":"qMAqCO,MAAMA,EAAN,MAAMA,EAMXC,WAAAA,CACUC,GAER,GAFQC,KAAAD,YAAAA,EA8BVE,EAAAD,KAAO,UAASE,MAIdC,EAGAC,EACAC,KAEA,IAAIC,EAAgE,KAChEC,EAAiC,KAEjC,IACF,MAAMC,EAAS,IACVL,KACC,CAAC,OAAOM,SAASN,EAAYO,OAAOC,eAAiB,CAAEP,UAAW,CAAEQ,KAAMR,IAGhFI,EAAOK,KAAOL,EAAOM,aAAe,IAAMX,EAAYU,WAC/CL,EAAOM,YAEd,MAAMC,QAAiBf,KAAKD,YAAsDS,GAClFF,EAAMD,EACFU,EAASH,KACTG,EAASH,KAAKA,WAEbI,GACY,eAAbA,EAAIC,KACFjB,KAAKkB,gBAAgBF,GACvBT,EAAQS,EAAIJ,KAELZ,KAAKmB,gBAAgBH,KACpBT,EAAAS,GAIVI,QAAQb,MAAMS,EAElB,CAEO,MAAA,CAAEV,MAAWC,QAAM,IArEtBV,EAAWwB,SACb,OAAOxB,EAAWwB,SAEpBxB,EAAWwB,SAAWrB,IACxB,CAEQsB,eAAAA,CAAgBC,GACtB,OAAOC,EAAcD,IACO,iBAAhBA,EAAIE,SACS,iBAAbF,EAAIG,MACE,IAAbH,EAAIG,IACX,CAEQR,eAAAA,CAAgBS,GACf,OAAAH,EAAcG,SACD,IAAfA,EAAMf,MACNZ,KAAKsB,gBAAgBK,EAAMf,YACV,IAAjBe,EAAMC,aACe,IAArBD,EAAME,iBACY,IAAlBF,EAAMG,cACW,IAAjBH,EAAMnB,aACY,IAAlBmB,EAAMI,OACb,CAEQZ,eAAAA,CAAgBQ,GACtB,MAAO,SAAUA,GAAS,SAAUA,GAAS,YAAaA,GAAwB,IAAfA,EAAMD,IAC3E,GA/BAzB,EAJWJ,EAII,YAJV,IAAMmC,EAANnC"}
@@ -1,209 +1,2 @@
1
- const initialSettings = {
2
- id: "wm_div_id",
3
- prefix: "mask_div_id",
4
- text: "\u6D4B\u8BD5\u6C34\u5370",
5
- x: 0,
6
- y: 0,
7
- rows: 0,
8
- cols: 0,
9
- width: 0,
10
- height: 0,
11
- x_space: 100,
12
- y_space: 40,
13
- font: "\u5FAE\u8F6F\u96C5\u9ED1",
14
- color: "black",
15
- fontsize: "18px",
16
- alpha: 0.15,
17
- angle: 15,
18
- parent_width: 0,
19
- parent_height: 0,
20
- parent_node: null,
21
- monitor: true
22
- };
23
- function calculateTextDimensions(text, font, fontSize) {
24
- const canvas = document.createElement("canvas");
25
- const context = canvas.getContext("2d");
26
- if (!context) {
27
- return {
28
- width: 100,
29
- height: 100
30
- };
31
- }
32
- context.font = `${fontSize} ${font}`;
33
- const metrics = context.measureText(text.trim());
34
- const fontSizeNum = Number.parseFloat(fontSize);
35
- const height = metrics.actualBoundingBoxAscent !== void 0 && metrics.actualBoundingBoxDescent !== void 0 ? metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent : fontSizeNum;
36
- return {
37
- width: Math.ceil(metrics.width),
38
- height: Math.ceil(height)
39
- };
40
- }
41
- function watermark() {
42
- const globalSetting = {
43
- ...initialSettings
44
- };
45
- let forceRemove = false;
46
- const watermarkDom = new MutationObserver(domChangeCallback);
47
- const resizeObserver = new ResizeObserver(() => {
48
- if (!forceRemove) {
49
- loadMark(globalSetting);
50
- }
51
- });
52
- function calculateWatermarkLayout(pageWidth, pageHeight) {
53
- const availableWidth = pageWidth - globalSetting.x;
54
- const availableHeight = pageHeight - globalSetting.y;
55
- const x_space = globalSetting.x_space || 20;
56
- const y_space = globalSetting.y_space || 20;
57
- const cols = Math.ceil(availableWidth / (globalSetting.width + x_space));
58
- const rows = Math.ceil(availableHeight / (globalSetting.height + y_space));
59
- return {
60
- cols,
61
- rows,
62
- x_space,
63
- y_space
64
- };
65
- }
66
- function createWatermarkElement(x, y, index) {
67
- const maskDiv = document.createElement("div");
68
- maskDiv.textContent = globalSetting.text;
69
- maskDiv.id = `${globalSetting.prefix}${index}`;
70
- maskDiv.style.cssText = `
71
- transform: rotate(-${globalSetting.angle}deg);
72
- position: absolute;
73
- left: ${x}px;
74
- top: ${y}px;
75
- overflow: hidden;
76
- z-index: 9999999;
77
- opacity: ${globalSetting.alpha};
78
- font-size: ${globalSetting.fontsize};
79
- font-family: ${globalSetting.font};
80
- color: ${globalSetting.color};
81
- text-align: center;
82
- width: ${globalSetting.width}px;
83
- height: ${globalSetting.height}px;
84
- line-height: ${globalSetting.height}px;
85
- display: flex;
86
- align-items: center;
87
- justify-content: center;
88
- user-select: none;
89
- visibility: visible;
90
- `.replace(/\s+/g, " ").trim();
91
- return maskDiv;
92
- }
93
- function loadMark(settings) {
94
- removeMark();
95
- Object.assign(globalSetting, settings);
96
- if (globalSetting.width === 0 && globalSetting.height === 0 || globalSetting.width === 0 || globalSetting.height === 0) {
97
- const textDimensions = calculateTextDimensions(globalSetting.text, globalSetting.font, globalSetting.fontsize);
98
- const padding = 10;
99
- if (globalSetting.width === 0) {
100
- globalSetting.width = textDimensions.width + padding;
101
- }
102
- if (globalSetting.height === 0) {
103
- globalSetting.height = textDimensions.height + padding;
104
- }
105
- }
106
- const parentElement = globalSetting.parent_node || document.body;
107
- const pageWidth = Math.max(parentElement.scrollWidth, parentElement.clientWidth);
108
- const pageHeight = Math.max(parentElement.scrollHeight, parentElement.clientHeight);
109
- const watermarkContainer = document.createElement("div");
110
- watermarkContainer.id = globalSetting.id;
111
- if (parentElement.closest("body") && getComputedStyle(parentElement).position === "static") {
112
- parentElement.style.position = "relative";
113
- }
114
- watermarkContainer.style.cssText = `
115
- pointer-events: none;
116
- display: block;
117
- position: absolute;
118
- top: 0;
119
- left: 0;
120
- width: 100%;
121
- height: 100%;
122
- z-index: 9999999;
123
- overflow: hidden;
124
- `.replace(/\s+/g, " ").trim();
125
- const shadowRoot = watermarkContainer.attachShadow ? watermarkContainer.attachShadow({
126
- mode: "open"
127
- }) : watermarkContainer;
128
- parentElement.appendChild(watermarkContainer);
129
- const {
130
- cols,
131
- rows,
132
- x_space,
133
- y_space
134
- } = calculateWatermarkLayout(pageWidth, pageHeight);
135
- globalSetting.cols = cols;
136
- globalSetting.rows = rows;
137
- globalSetting.x_space = x_space;
138
- globalSetting.y_space = y_space;
139
- const fragment = document.createDocumentFragment();
140
- for (let i = 0; i < rows; i++) {
141
- const y = globalSetting.y + (globalSetting.height + y_space) * i;
142
- for (let j = 0; j < cols; j++) {
143
- const x = globalSetting.x + (globalSetting.width + x_space) * j;
144
- fragment.appendChild(createWatermarkElement(x, y, i * cols + j));
145
- }
146
- }
147
- shadowRoot.appendChild(fragment);
148
- if (globalSetting.monitor) {
149
- resizeObserver.observe(parentElement);
150
- const config = {
151
- attributes: true,
152
- // 监听属性变化
153
- childList: true,
154
- // 监听子元素变化
155
- subtree: true,
156
- // 监听子树变化
157
- characterData: true
158
- // 监听文本内容变化
159
- };
160
- watermarkDom.observe(watermarkContainer, config);
161
- if (shadowRoot !== watermarkContainer) {
162
- watermarkDom.observe(shadowRoot, config);
163
- }
164
- }
165
- }
166
- function removeMark() {
167
- const watermarkElement = document.getElementById(globalSetting.id);
168
- watermarkDom.disconnect();
169
- if (watermarkElement) {
170
- watermarkElement.parentNode?.removeChild(watermarkElement);
171
- }
172
- }
173
- function domChangeCallback(records) {
174
- if (forceRemove) {
175
- forceRemove = false;
176
- return;
177
- }
178
- const watermarkElement = document.getElementById(globalSetting.id);
179
- if (!watermarkElement) {
180
- loadMark(globalSetting);
181
- return;
182
- }
183
- const hasChanges = records.some(record => {
184
- if (record.type === "childList") {
185
- return true;
186
- }
187
- if (record.type === "attributes") {
188
- return true;
189
- }
190
- if (record.type === "characterData") {
191
- return true;
192
- }
193
- return false;
194
- });
195
- if (hasChanges) {
196
- loadMark(globalSetting);
197
- }
198
- }
199
- return {
200
- addMark: loadMark,
201
- removeMark: () => {
202
- forceRemove = true;
203
- removeMark();
204
- }
205
- };
206
- }
207
-
208
- export { watermark };
1
+ const t={id:"wm_div_id",prefix:"mask_div_id",text:"测试水印",x:0,y:0,rows:0,cols:0,width:0,height:0,x_space:100,y_space:40,font:"微软雅黑",color:"black",fontsize:"18px",alpha:.15,angle:15,parent_width:0,parent_height:0,parent_node:null,monitor:!0};function e(){const e={...t};let n=!1;const i=new MutationObserver((function(t){if(n)return void(n=!1);if(!document.getElementById(e.id))return void s(e);t.some((t=>"childList"===t.type||("attributes"===t.type||"characterData"===t.type)))&&s(e)})),o=new ResizeObserver((()=>{n||s(e)}));function c(t,n,i){const o=document.createElement("div");return o.textContent=e.text,o.id=`${e.prefix}${i}`,o.style.cssText=`\n transform: rotate(-${e.angle}deg);\n position: absolute;\n left: ${t}px;\n top: ${n}px;\n overflow: hidden;\n z-index: 9999999;\n opacity: ${e.alpha};\n font-size: ${e.fontsize};\n font-family: ${e.font};\n color: ${e.color};\n text-align: center;\n width: ${e.width}px;\n height: ${e.height}px;\n line-height: ${e.height}px;\n display: flex;\n align-items: center;\n justify-content: center;\n user-select: none;\n visibility: visible;\n `.replace(/\s+/g," ").trim(),o}function s(t){if(a(),Object.assign(e,t),0===e.width&&0===e.height||0===e.width||0===e.height){const t=function(t,e,n){const i=document.createElement("canvas").getContext("2d");if(!i)return{width:100,height:100};i.font=`${n} ${e}`;const o=i.measureText(t.trim()),c=Number.parseFloat(n),s=void 0!==o.actualBoundingBoxAscent&&void 0!==o.actualBoundingBoxDescent?o.actualBoundingBoxAscent+o.actualBoundingBoxDescent:c;return{width:Math.ceil(o.width),height:Math.ceil(s)}}(e.text,e.font,e.fontsize),n=10;0===e.width&&(e.width=t.width+n),0===e.height&&(e.height=t.height+n)}const n=e.parent_node||document.body,s=Math.max(n.scrollWidth,n.clientWidth),d=Math.max(n.scrollHeight,n.clientHeight),r=document.createElement("div");r.id=e.id,n.closest("body")&&"static"===getComputedStyle(n).position&&(n.style.position="relative"),r.style.cssText="\n pointer-events: none;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 9999999;\n overflow: hidden;\n ".replace(/\s+/g," ").trim();const h=r.attachShadow?r.attachShadow({mode:"open"}):r;n.appendChild(r);const{cols:l,rows:p,x_space:u,y_space:g}=function(t,n){const i=t-e.x,o=n-e.y,c=e.x_space||20,s=e.y_space||20;return{cols:Math.ceil(i/(e.width+c)),rows:Math.ceil(o/(e.height+s)),x_space:c,y_space:s}}(s,d);e.cols=l,e.rows=p,e.x_space=u,e.y_space=g;const x=document.createDocumentFragment();for(let t=0;t<p;t++){const n=e.y+(e.height+g)*t;for(let i=0;i<l;i++){const o=e.x+(e.width+u)*i;x.appendChild(c(o,n,t*l+i))}}if(h.appendChild(x),e.monitor){o.observe(n);const t={attributes:!0,childList:!0,subtree:!0,characterData:!0};i.observe(r,t),h!==r&&i.observe(h,t)}}function a(){const t=document.getElementById(e.id);i.disconnect(),t&&t.parentNode?.removeChild(t)}return{addMark:s,removeMark:()=>{n=!0,a()}}}export{e as watermark};
209
2
  //# sourceMappingURL=watermark.js.map