@fast-china/utils 1.0.29 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.global.js +17 -2
- package/dist/index.global.js.map +1 -1
- package/dist/index.global.min.js +5 -5
- package/dist/index.global.min.js.map +1 -1
- package/es/console/index.mjs +2 -2
- package/es/console/index.mjs.map +1 -1
- package/es/string/index.d.ts +4 -0
- package/es/string/index.mjs +15 -0
- package/es/string/index.mjs.map +1 -1
- package/lib/console/index.js +1 -1
- package/lib/console/index.js.map +1 -1
- package/lib/string/index.d.ts +4 -0
- package/lib/string/index.js +1 -1
- package/lib/string/index.js.map +1 -1
- package/package.json +1 -1
package/es/console/index.mjs
CHANGED
|
@@ -33,9 +33,9 @@ const makeConsole = (level) => {
|
|
|
33
33
|
return (name, message, error) => {
|
|
34
34
|
const prefix = `[Fast-${level}-${name}]`;
|
|
35
35
|
if (error) {
|
|
36
|
-
vConsole(level, `${prefix}${message
|
|
36
|
+
vConsole(level, `${prefix}${message ? ` ${message}` : ""}`, error);
|
|
37
37
|
} else {
|
|
38
|
-
vConsole(level, `${prefix}${message
|
|
38
|
+
vConsole(level, `${prefix}${message ? ` ${message}` : ""}`);
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
};
|
package/es/console/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/console/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { isNil, isString } from \"lodash-unified\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\t/** @description Uni-App 在 APP-PLUS 下是否拆分输出 @default false */\n\tuniAppPlusSplit: false,\n});\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const useConsole = () => {\n\treturn {\n\t\t/**\n\t\t * 设置 Uni-App 在 APP-PLUS 下是否拆分输出\n\t\t */\n\t\tsetUniAppPlusSplit(value: boolean): void {\n\t\t\tstate.uniAppPlusSplit = value;\n\t\t},\n\t};\n};\n\ntype LogLevel = \"Log\" | \"Warn\" | \"Debug\" | \"Error\";\n\nconst vConsole = (level: LogLevel, ...args: any[]): void => {\n\tif (state.uniAppPlusSplit) {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tif (typeof plus !== \"undefined\") {\n\t\t\t\t// 循环 arg 参数,每个参数单独输出\n\t\t\t\targs.forEach((item) => {\n\t\t\t\t\tif (isNil(item)) return;\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole[level.toLowerCase()](isString(item) ? item : JSON.stringify(item, null, 2));\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\t// eslint-disable-next-line no-console\n\tconsole[level.toLowerCase()](...args);\n};\n\nconst makeConsole = (level: LogLevel) => {\n\treturn (name: string, message?: string | false, error?: any): void => {\n\t\tconst prefix = `[Fast-${level}-${name}]`;\n\t\tif (error) {\n\t\t\tvConsole(level, `${prefix}${message
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/console/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { isNil, isString } from \"lodash-unified\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\t/** @description Uni-App 在 APP-PLUS 下是否拆分输出 @default false */\n\tuniAppPlusSplit: false,\n});\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const useConsole = () => {\n\treturn {\n\t\t/**\n\t\t * 设置 Uni-App 在 APP-PLUS 下是否拆分输出\n\t\t */\n\t\tsetUniAppPlusSplit(value: boolean): void {\n\t\t\tstate.uniAppPlusSplit = value;\n\t\t},\n\t};\n};\n\ntype LogLevel = \"Log\" | \"Warn\" | \"Debug\" | \"Error\";\n\nconst vConsole = (level: LogLevel, ...args: any[]): void => {\n\tif (state.uniAppPlusSplit) {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tif (typeof plus !== \"undefined\") {\n\t\t\t\t// 循环 arg 参数,每个参数单独输出\n\t\t\t\targs.forEach((item) => {\n\t\t\t\t\tif (isNil(item)) return;\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole[level.toLowerCase()](isString(item) ? item : JSON.stringify(item, null, 2));\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\t// eslint-disable-next-line no-console\n\tconsole[level.toLowerCase()](...args);\n};\n\nconst makeConsole = (level: LogLevel) => {\n\treturn (name: string, message?: string | false, error?: any): void => {\n\t\tconst prefix = `[Fast-${level}-${name}]`;\n\t\tif (error) {\n\t\t\tvConsole(level, `${prefix}${message ? ` ${message}` : \"\"}`, error);\n\t\t} else {\n\t\t\tvConsole(level, `${prefix}${message ? ` ${message}` : \"\"}`);\n\t\t}\n\t};\n};\n\n/**\n * 打印 Log 日志\n * @param name 来源名称\n */\nexport const consoleLog = makeConsole(\"Log\");\n\n/**\n * 打印 Warn 日志\n * @param name 来源名称\n */\nexport const consoleWarn = makeConsole(\"Warn\");\n\n/**\n * 打印 Debug 日志\n * @param name 来源名称\n */\nexport const consoleDebug = makeConsole(\"Debug\");\n\n/**\n * 打印 Error 日志\n * @param name 来源名称\n */\nexport const consoleError = (name: string, message?: any): void => {\n\tif (isNil(message)) {\n\t\treturn;\n\t}\n\tif (isString(message)) {\n\t\tconsole.error(new FastError(`[Fast-${name}] ${message}`));\n\t} else {\n\t\tvConsole(\"Error\", `[Fast-Error-${name}]`, message);\n\t}\n};\n\n/**\n * 抛出错误\n * @param name 来源名称\n */\nexport const throwError = (name: string, message?: any): never => {\n\tthrow new FastError(`[Fast-${name}] ${message}`);\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,QAAQ,SAAS;AAAA;AAAA,EAEtB,iBAAiB;AAClB,CAAC;AAGM,MAAM,aAAa,MAAM;AACxB,SAAA;AAAA;AAAA;AAAA;AAAA,IAIN,mBAAmB,OAAsB;AACxC,YAAM,kBAAkB;AAAA,IAAA;AAAA,EAE1B;AACD;AAIA,MAAM,WAAW,CAAC,UAAoB,SAAsB;AAC3D,MAAI,MAAM,iBAAiB;AACtB,QAAA,OAAO,QAAQ,aAAa;AAC3B,UAAA,OAAO,SAAS,aAAa;AAE3B,aAAA,QAAQ,CAAC,SAAS;AAClB,cAAA,MAAM,IAAI,EAAG;AAEjB,kBAAQ,MAAM,aAAa,EAAE,SAAS,IAAI,IAAI,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAAA,QAAA,CAClF;AACD;AAAA,MAAA;AAAA,IACD;AAAA,EACD;AAGD,UAAQ,MAAM,aAAa,EAAE,GAAG,IAAI;AACrC;AAEA,MAAM,cAAc,CAAC,UAAoB;AACjC,SAAA,CAAC,MAAc,SAA0B,UAAsB;AACrE,UAAM,SAAS,SAAS,KAAK,IAAI,IAAI;AACrC,QAAI,OAAO;AACD,eAAA,OAAO,GAAG,MAAM,GAAG,UAAU,IAAI,OAAO,KAAK,EAAE,IAAI,KAAK;AAAA,IAAA,OAC3D;AACG,eAAA,OAAO,GAAG,MAAM,GAAG,UAAU,IAAI,OAAO,KAAK,EAAE,EAAE;AAAA,IAAA;AAAA,EAE5D;AACD;AAMa,MAAA,aAAa,YAAY,KAAK;AAM9B,MAAA,cAAc,YAAY,MAAM;AAMhC,MAAA,eAAe,YAAY,OAAO;AAMlC,MAAA,eAAe,CAAC,MAAc,YAAwB;AAC9D,MAAA,MAAM,OAAO,GAAG;AACnB;AAAA,EAAA;AAEG,MAAA,SAAS,OAAO,GAAG;AACd,YAAA,MAAM,IAAI,UAAU,SAAS,IAAI,KAAK,OAAO,EAAE,CAAC;AAAA,EAAA,OAClD;AACN,aAAS,SAAS,eAAe,IAAI,KAAK,OAAO;AAAA,EAAA;AAEnD;AAMa,MAAA,aAAa,CAAC,MAAc,YAAyB;AACjE,QAAM,IAAI,UAAU,SAAS,IAAI,KAAK,OAAO,EAAE;AAChD;"}
|
package/es/string/index.d.ts
CHANGED
package/es/string/index.mjs
CHANGED
|
@@ -7,6 +7,21 @@ const languageMap = {
|
|
|
7
7
|
zh_TW: "zh-TW"
|
|
8
8
|
};
|
|
9
9
|
const stringUtil = {
|
|
10
|
+
/**
|
|
11
|
+
* 深度解码
|
|
12
|
+
*/
|
|
13
|
+
deepDecodeURIComponent(str, maxDepth = 10) {
|
|
14
|
+
if (!str) return str;
|
|
15
|
+
let decoded = str;
|
|
16
|
+
for (let i = 0; i < maxDepth; i++) {
|
|
17
|
+
const next = decodeURIComponent(decoded);
|
|
18
|
+
if (next === decoded) {
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
decoded = next;
|
|
22
|
+
}
|
|
23
|
+
return decoded;
|
|
24
|
+
},
|
|
10
25
|
/**
|
|
11
26
|
* 获取Url参数
|
|
12
27
|
*/
|
package/es/string/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isNumber, isString, merge } from \"lodash-unified\";\n\nlet language: string;\nconst languageMap = {\n\tzh: \"zh-CN\",\n\ten: \"en-US\",\n\tzh_CN: \"zh-CN\",\n\tzh_TW: \"zh-TW\",\n};\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t */\n\ttoLocaleString(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\tif (value) {\n\t\t\tif (isNumber(value)) {\n\t\t\t\tif (typeof uni !== \"undefined\") {\n\t\t\t\t\tif (!language) {\n\t\t\t\t\t\tlanguage = uni.getAppBaseInfo().language;\n\t\t\t\t\t}\n\t\t\t\t\treturn value.toLocaleString(languageMap[language] || \"zh-CN\", options);\n\t\t\t\t} else {\n\t\t\t\t\treturn value.toLocaleString(navigator.language || \"zh-CN\", options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value as string;\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x2(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x2g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,不显示千分位\n\t */\n\ttoLocaleString_i6x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,显示千分位\n\t */\n\ttoLocaleString_i6x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isNumber, isString, merge } from \"lodash-unified\";\n\nlet language: string;\nconst languageMap = {\n\tzh: \"zh-CN\",\n\ten: \"en-US\",\n\tzh_CN: \"zh-CN\",\n\tzh_TW: \"zh-TW\",\n};\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 深度解码\n\t */\n\tdeepDecodeURIComponent(str: string, maxDepth = 10): string {\n\t\tif (!str) return str;\n\t\tlet decoded = str;\n\t\tfor (let i = 0; i < maxDepth; i++) {\n\t\t\tconst next = decodeURIComponent(decoded);\n\t\t\tif (next === decoded) {\n\t\t\t\t// 已经无法继续解码,提前退出\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdecoded = next;\n\t\t}\n\t\treturn decoded;\n\t},\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t */\n\ttoLocaleString(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\tif (value) {\n\t\t\tif (isNumber(value)) {\n\t\t\t\tif (typeof uni !== \"undefined\") {\n\t\t\t\t\tif (!language) {\n\t\t\t\t\t\tlanguage = uni.getAppBaseInfo().language;\n\t\t\t\t\t}\n\t\t\t\t\treturn value.toLocaleString(languageMap[language] || \"zh-CN\", options);\n\t\t\t\t} else {\n\t\t\t\t\treturn value.toLocaleString(navigator.language || \"zh-CN\", options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value as string;\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x2(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x2g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,不显示千分位\n\t */\n\ttoLocaleString_i6x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,显示千分位\n\t */\n\ttoLocaleString_i6x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n};\n"],"names":[],"mappings":"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"}
|
package/lib/console/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),e=require("lodash-unified"),o=require("../error/index.js"),s=r.reactive({uniAppPlusSplit:!1}),t=(r,...o)=>{s.uniAppPlusSplit&&"undefined"!=typeof uni&&"undefined"!=typeof plus?o.forEach((o=>{e.isNil(o)||console[r.toLowerCase()](e.isString(o)?o:JSON.stringify(o,null,2))})):console[r.toLowerCase()](...o)},i=r=>(e,o,s)=>{const i=`[Fast-${r}-${e}]`;s?t(r,`${i}${o
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),e=require("lodash-unified"),o=require("../error/index.js"),s=r.reactive({uniAppPlusSplit:!1}),t=(r,...o)=>{s.uniAppPlusSplit&&"undefined"!=typeof uni&&"undefined"!=typeof plus?o.forEach((o=>{e.isNil(o)||console[r.toLowerCase()](e.isString(o)?o:JSON.stringify(o,null,2))})):console[r.toLowerCase()](...o)},i=r=>(e,o,s)=>{const i=`[Fast-${r}-${e}]`;s?t(r,`${i}${o?` ${o}`:""}`,s):t(r,`${i}${o?` ${o}`:""}`)},n=i("Log"),l=i("Warn"),p=i("Debug");exports.consoleDebug=p,exports.consoleError=(r,s)=>{e.isNil(s)||(e.isString(s)?console.error(new o.FastError(`[Fast-${r}] ${s}`)):t("Error",`[Fast-Error-${r}]`,s))},exports.consoleLog=n,exports.consoleWarn=l,exports.throwError=(r,e)=>{throw new o.FastError(`[Fast-${r}] ${e}`)},exports.useConsole=()=>({setUniAppPlusSplit(r){s.uniAppPlusSplit=r}});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/console/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/console/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { isNil, isString } from \"lodash-unified\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\t/** @description Uni-App 在 APP-PLUS 下是否拆分输出 @default false */\n\tuniAppPlusSplit: false,\n});\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const useConsole = () => {\n\treturn {\n\t\t/**\n\t\t * 设置 Uni-App 在 APP-PLUS 下是否拆分输出\n\t\t */\n\t\tsetUniAppPlusSplit(value: boolean): void {\n\t\t\tstate.uniAppPlusSplit = value;\n\t\t},\n\t};\n};\n\ntype LogLevel = \"Log\" | \"Warn\" | \"Debug\" | \"Error\";\n\nconst vConsole = (level: LogLevel, ...args: any[]): void => {\n\tif (state.uniAppPlusSplit) {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tif (typeof plus !== \"undefined\") {\n\t\t\t\t// 循环 arg 参数,每个参数单独输出\n\t\t\t\targs.forEach((item) => {\n\t\t\t\t\tif (isNil(item)) return;\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole[level.toLowerCase()](isString(item) ? item : JSON.stringify(item, null, 2));\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\t// eslint-disable-next-line no-console\n\tconsole[level.toLowerCase()](...args);\n};\n\nconst makeConsole = (level: LogLevel) => {\n\treturn (name: string, message?: string | false, error?: any): void => {\n\t\tconst prefix = `[Fast-${level}-${name}]`;\n\t\tif (error) {\n\t\t\tvConsole(level, `${prefix}${message
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/console/index.ts"],"sourcesContent":["import { reactive } from \"vue\";\nimport { isNil, isString } from \"lodash-unified\";\nimport { FastError } from \"../error\";\n\nconst state = reactive({\n\t/** @description Uni-App 在 APP-PLUS 下是否拆分输出 @default false */\n\tuniAppPlusSplit: false,\n});\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/explicit-module-boundary-types\nexport const useConsole = () => {\n\treturn {\n\t\t/**\n\t\t * 设置 Uni-App 在 APP-PLUS 下是否拆分输出\n\t\t */\n\t\tsetUniAppPlusSplit(value: boolean): void {\n\t\t\tstate.uniAppPlusSplit = value;\n\t\t},\n\t};\n};\n\ntype LogLevel = \"Log\" | \"Warn\" | \"Debug\" | \"Error\";\n\nconst vConsole = (level: LogLevel, ...args: any[]): void => {\n\tif (state.uniAppPlusSplit) {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\tif (typeof plus !== \"undefined\") {\n\t\t\t\t// 循环 arg 参数,每个参数单独输出\n\t\t\t\targs.forEach((item) => {\n\t\t\t\t\tif (isNil(item)) return;\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole[level.toLowerCase()](isString(item) ? item : JSON.stringify(item, null, 2));\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\t// eslint-disable-next-line no-console\n\tconsole[level.toLowerCase()](...args);\n};\n\nconst makeConsole = (level: LogLevel) => {\n\treturn (name: string, message?: string | false, error?: any): void => {\n\t\tconst prefix = `[Fast-${level}-${name}]`;\n\t\tif (error) {\n\t\t\tvConsole(level, `${prefix}${message ? ` ${message}` : \"\"}`, error);\n\t\t} else {\n\t\t\tvConsole(level, `${prefix}${message ? ` ${message}` : \"\"}`);\n\t\t}\n\t};\n};\n\n/**\n * 打印 Log 日志\n * @param name 来源名称\n */\nexport const consoleLog = makeConsole(\"Log\");\n\n/**\n * 打印 Warn 日志\n * @param name 来源名称\n */\nexport const consoleWarn = makeConsole(\"Warn\");\n\n/**\n * 打印 Debug 日志\n * @param name 来源名称\n */\nexport const consoleDebug = makeConsole(\"Debug\");\n\n/**\n * 打印 Error 日志\n * @param name 来源名称\n */\nexport const consoleError = (name: string, message?: any): void => {\n\tif (isNil(message)) {\n\t\treturn;\n\t}\n\tif (isString(message)) {\n\t\tconsole.error(new FastError(`[Fast-${name}] ${message}`));\n\t} else {\n\t\tvConsole(\"Error\", `[Fast-Error-${name}]`, message);\n\t}\n};\n\n/**\n * 抛出错误\n * @param name 来源名称\n */\nexport const throwError = (name: string, message?: any): never => {\n\tthrow new FastError(`[Fast-${name}] ${message}`);\n};\n"],"names":["state","reactive","uniAppPlusSplit","vConsole","level","args","uni","plus","forEach","item","isNil","console","toLowerCase","isString","JSON","stringify","makeConsole","name","message","error","prefix","consoleLog","consoleWarn","consoleDebug","FastError","setUniAppPlusSplit","value"],"mappings":"kKAIMA,EAAQC,EAAAA,SAAS,CAEtBC,iBAAiB,IAiBZC,EAAW,CAACC,KAAoBC,KACjCL,EAAME,iBACU,oBAARI,KACU,oBAATC,KAELF,EAAAG,SAASC,IACTC,EAAAA,MAAMD,IAEVE,QAAQP,EAAMQ,eAAeC,EAASA,SAAAJ,GAAQA,EAAOK,KAAKC,UAAUN,EAAM,KAAM,GAAE,IAOtFE,QAAQP,EAAMQ,kBAAkBP,EAAI,EAG/BW,EAAeZ,GACb,CAACa,EAAcC,EAA0BC,KAC/C,MAAMC,EAAS,SAAShB,KAASa,KAC7BE,EACMhB,EAAAC,EAAO,GAAGgB,IAASF,EAAU,IAAIA,IAAY,KAAMC,GAEnDhB,EAAAC,EAAO,GAAGgB,IAASF,EAAU,IAAIA,IAAY,KAAI,EAShDG,EAAaL,EAAY,OAMzBM,EAAcN,EAAY,QAM1BO,EAAeP,EAAY,qDAMZ,CAACC,EAAcC,KACtCR,EAAAA,MAAMQ,KAGNL,EAAAA,SAASK,GACJP,QAAAQ,MAAM,IAAIK,EAAAA,UAAU,SAASP,MAASC,MAE9Cf,EAAS,QAAS,eAAec,KAASC,GAAO,gEAQzB,CAACD,EAAcC,KACxC,MAAM,IAAIM,EAAUA,UAAA,SAASP,MAASC,IAAS,qBAhFtB,KAClB,CAIN,kBAAAO,CAAmBC,GAClB1B,EAAME,gBAAkBwB,CAAA"}
|
package/lib/string/index.d.ts
CHANGED
package/lib/string/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("lodash-unified");let i;const e={zh:"zh-CN",en:"en-US",zh_CN:"zh-CN",zh_TW:"zh-TW"},r={deepDecodeURIComponent(t,i=10){if(!t)return t;let e=t;for(let r=0;r<i;r++){const t=decodeURIComponent(e);if(t===e)break;e=t}return e},getUrlParams(t){const i=/[?&][^=?&]+=[^?&]+/g,e={};let r;for(;null!==(r=i.exec(t));){const[t,i]=r[0].substring(1).split("=");e[t]=decodeURIComponent(i)}return e},isJson:i=>!!t.isString(i)&&(i=i.replace(/\s/g,"").replace(/\n|\r/,""),/^\{.*?\}$/.test(i)?/".*?":/.test(i):!!/^\[.*?\]$/.test(i)&&i.replace(/^\[/,"").replace(/\]$/,"").replace(/\},\{/g,"}\n{").split(/\n/).map((t=>r.isJson(t))).reduce(((t,i)=>!!i))),splitCamelCase:t=>t?1===t.length?[t]:t.split(new RegExp("(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})","u")).filter((t=>t.length>0)):[],toCamelCase:t=>t?t.replace(/[-_](\w)/g,((t,i)=>i?i.toUpperCase():"")):"",firstCharToUpper:t=>t?t.charAt(0).toUpperCase()+t.slice(1):"",firstCharToLower:t=>t?t.charAt(0).toLowerCase()+t.slice(1):"",subStringWithEllipsis:(t,i,e="...")=>t?t.length>i?t.substring(0,i)+e:t:"",generateRandomString(t){const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let e="";for(let r=0;r<t;r++){const t=Math.floor(62*Math.random());e+=i.charAt(t)}return e},generateUUID(){let t="";for(let i=0;i<32;i++){const e=16*Math.random()|0;8!==i&&12!==i&&16!==i&&20!==i||(t+="-"),t+=(12===i?4:16===i?3&e|8:e).toString(16)}return t},async copy(t){if("undefined"!=typeof uni)return new Promise(((i,e)=>{uni.setClipboardData({data:t,success:()=>{i()},fail:()=>{e()}})}));if((null==navigator?void 0:navigator.clipboard)&&window.isSecureContext)await navigator.clipboard.writeText(t);else{const i=document.createElement("textarea");i.value=t,i.style.position="absolute",i.style.opacity="0",i.style.left="-999999px",i.style.top="-999999px",document.body.appendChild(i),i.focus(),i.select(),document.execCommand("copy"),i.remove()}},toLocaleString:(r,o)=>r&&t.isNumber(r)?"undefined"!=typeof uni?(i||(i=uni.getAppBaseInfo().language),r.toLocaleString(e[i]||"zh-CN",o)):r.toLocaleString(navigator.language||"zh-CN",o):r,toLocaleString_i2x2(i,e){return e=t.merge(e||{},{minimumFractionDigits:2,maximumFractionDigits:2,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i2x2g(i,e){return e=t.merge(e||{},{minimumFractionDigits:2,maximumFractionDigits:2,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i2x4(i,e){return e=t.merge(e||{},{minimumFractionDigits:2,maximumFractionDigits:4,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i2x4g(i,e){return e=t.merge(e||{},{minimumFractionDigits:2,maximumFractionDigits:4,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i2x6(i,e){return e=t.merge(e||{},{minimumFractionDigits:2,maximumFractionDigits:6,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i2x6g(i,e){return e=t.merge(e||{},{minimumFractionDigits:2,maximumFractionDigits:6,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i4x4(i,e){return e=t.merge(e||{},{minimumFractionDigits:4,maximumFractionDigits:4,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i4x4g(i,e){return e=t.merge(e||{},{minimumFractionDigits:4,maximumFractionDigits:4,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i4x6(i,e){return e=t.merge(e||{},{minimumFractionDigits:4,maximumFractionDigits:6,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i4x6g(i,e){return e=t.merge(e||{},{minimumFractionDigits:4,maximumFractionDigits:6,useGrouping:!0}),this.toLocaleString(i,e)},toLocaleString_i6x6(i,e){return e=t.merge(e||{},{minimumFractionDigits:6,maximumFractionDigits:6,useGrouping:!1}),this.toLocaleString(i,e)},toLocaleString_i6x6g(i,e){return e=t.merge(e||{},{minimumFractionDigits:6,maximumFractionDigits:6,useGrouping:!0}),this.toLocaleString(i,e)}};exports.stringUtil=r;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/string/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isNumber, isString, merge } from \"lodash-unified\";\n\nlet language: string;\nconst languageMap = {\n\tzh: \"zh-CN\",\n\ten: \"en-US\",\n\tzh_CN: \"zh-CN\",\n\tzh_TW: \"zh-TW\",\n};\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t */\n\ttoLocaleString(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\tif (value) {\n\t\t\tif (isNumber(value)) {\n\t\t\t\tif (typeof uni !== \"undefined\") {\n\t\t\t\t\tif (!language) {\n\t\t\t\t\t\tlanguage = uni.getAppBaseInfo().language;\n\t\t\t\t\t}\n\t\t\t\t\treturn value.toLocaleString(languageMap[language] || \"zh-CN\", options);\n\t\t\t\t} else {\n\t\t\t\t\treturn value.toLocaleString(navigator.language || \"zh-CN\", options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value as string;\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x2(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x2g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,不显示千分位\n\t */\n\ttoLocaleString_i6x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,显示千分位\n\t */\n\ttoLocaleString_i6x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n};\n"],"names":["language","languageMap","zh","en","zh_CN","zh_TW","stringUtil","getUrlParams","url","regex","params","match","exec","key","value","substring","split","decodeURIComponent","isJson","isString","replace","test","map","s","reduce","prev","curr","splitCamelCase","length","RegExp","filter","token","toCamelCase","_","c","toUpperCase","firstCharToUpper","charAt","slice","firstCharToLower","toLowerCase","subStringWithEllipsis","suffix","generateRandomString","characters","randomString","i","randomIndex","Math","floor","random","generateUUID","uuid","toString","copy","uni","Promise","resolve","reject","setClipboardData","data","success","fail","navigator","clipboard","window","isSecureContext","writeText","textareaEl","document","createElement","style","position","opacity","left","top","body","appendChild","focus","select","execCommand","remove","toLocaleString","options","isNumber","getAppBaseInfo","toLocaleString_i2x2","merge","minimumFractionDigits","maximumFractionDigits","useGrouping","this","toLocaleString_i2x2g","toLocaleString_i2x4","toLocaleString_i2x4g","toLocaleString_i2x6","toLocaleString_i2x6g","toLocaleString_i4x4","toLocaleString_i4x4g","toLocaleString_i4x6","toLocaleString_i4x6g","toLocaleString_i6x6","toLocaleString_i6x6g"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/string/index.ts"],"sourcesContent":["import { isNumber, isString, merge } from \"lodash-unified\";\n\nlet language: string;\nconst languageMap = {\n\tzh: \"zh-CN\",\n\ten: \"en-US\",\n\tzh_CN: \"zh-CN\",\n\tzh_TW: \"zh-TW\",\n};\n\n/**\n * 字符串工具类\n */\nexport const stringUtil = {\n\t/**\n\t * 深度解码\n\t */\n\tdeepDecodeURIComponent(str: string, maxDepth = 10): string {\n\t\tif (!str) return str;\n\t\tlet decoded = str;\n\t\tfor (let i = 0; i < maxDepth; i++) {\n\t\t\tconst next = decodeURIComponent(decoded);\n\t\t\tif (next === decoded) {\n\t\t\t\t// 已经无法继续解码,提前退出\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdecoded = next;\n\t\t}\n\t\treturn decoded;\n\t},\n\t/**\n\t * 获取Url参数\n\t */\n\tgetUrlParams(url: string): Record<string, any> {\n\t\tconst regex = /[?&][^=?&]+=[^?&]+/g;\n\t\tconst params: Record<string, any> = {};\n\n\t\tlet match;\n\t\twhile ((match = regex.exec(url)) !== null) {\n\t\t\tconst [key, value] = match[0].substring(1).split(\"=\");\n\t\t\tparams[key] = decodeURIComponent(value);\n\t\t}\n\n\t\treturn params;\n\t},\n\t/**\n\t * 是否为JSON字符串\n\t */\n\tisJson(value: string): boolean {\n\t\tif (!isString(value)) return false;\n\n\t\tvalue = value.replace(/\\s/g, \"\").replace(/\\n|\\r/, \"\");\n\n\t\tif (/^\\{.*?\\}$/.test(value)) return /\".*?\":/.test(value);\n\n\t\tif (/^\\[.*?\\]$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^\\[/, \"\")\n\t\t\t\t.replace(/\\]$/, \"\")\n\t\t\t\t.replace(/\\},\\{/g, \"}\\n{\")\n\t\t\t\t.split(/\\n/)\n\t\t\t\t.map((s) => {\n\t\t\t\t\treturn stringUtil.isJson(s);\n\t\t\t\t})\n\t\t\t\t.reduce((prev, curr) => {\n\t\t\t\t\treturn !!curr;\n\t\t\t\t});\n\t\t}\n\n\t\treturn false;\n\t},\n\t/**\n\t * 切割骆驼命名式字符串\n\t */\n\tsplitCamelCase(value: string): string[] {\n\t\tif (!value) return [];\n\n\t\tif (value.length === 1) return [value];\n\n\t\treturn value.split(/(?=\\p{Lu}\\p{Ll})|(?<=\\p{Ll})(?=\\p{Lu})/u).filter((token) => token.length > 0);\n\t},\n\t/**\n\t * 将字符串转为 camelCase 格式,支持 - 或 _ 分隔的字符串\n\t * 例如:'hello-world' 或 'hello_world' => 'helloWorld'\n\t */\n\ttoCamelCase(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.replace(/[-_](\\w)/g, (_, c) => (c ? c.toUpperCase() : \"\"));\n\t},\n\t/**\n\t * 字符串首字母大写\n\t */\n\tfirstCharToUpper(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\n\t},\n\t/**\n\t * 字符串首字母小写\n\t */\n\tfirstCharToLower(value: string): string {\n\t\tif (!value) return \"\";\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\n\t},\n\t/**\n\t * 截取指定长度的字符串\n\t */\n\tsubStringWithEllipsis(value: string, length: number, suffix = \"...\"): string {\n\t\tif (!value) return \"\";\n\t\treturn value.length > length ? value.substring(0, length) + suffix : value;\n\t},\n\t/**\n\t * 生成随机字符串\n\t */\n\tgenerateRandomString(length: number): string {\n\t\tconst characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\t\tlet randomString = \"\";\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\t\trandomString += characters.charAt(randomIndex);\n\t\t}\n\t\treturn randomString;\n\t},\n\t/**\n\t * @description 生成唯一 uuid\n\t */\n\tgenerateUUID(): string {\n\t\tlet uuid = \"\";\n\t\tfor (let i = 0; i < 32; i++) {\n\t\t\tconst random = (Math.random() * 16) | 0;\n\t\t\tif (i === 8 || i === 12 || i === 16 || i === 20) uuid += \"-\";\n\t\t\tuuid += (i === 12 ? 4 : i === 16 ? (random & 3) | 8 : random).toString(16);\n\t\t}\n\t\treturn uuid;\n\t},\n\t/**\n\t * 复制\n\t */\n\tasync copy(value: string): Promise<void> {\n\t\tif (typeof uni !== \"undefined\") {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tuni.setClipboardData({\n\t\t\t\t\tdata: value,\n\t\t\t\t\tsuccess: () => {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t},\n\t\t\t\t\tfail: () => {\n\t\t\t\t\t\treject();\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\t// navigator.clipboard 需要https等安全上下文\n\t\t\tif (navigator?.clipboard && window.isSecureContext) {\n\t\t\t\tawait navigator.clipboard.writeText(value);\n\t\t\t} else {\n\t\t\t\tconst textareaEl = document.createElement(\"textarea\");\n\t\t\t\ttextareaEl.value = value;\n\t\t\t\t// 使文本域不显示\n\t\t\t\ttextareaEl.style.position = \"absolute\";\n\t\t\t\ttextareaEl.style.opacity = \"0\";\n\t\t\t\ttextareaEl.style.left = \"-999999px\";\n\t\t\t\ttextareaEl.style.top = \"-999999px\";\n\t\t\t\tdocument.body.appendChild(textareaEl);\n\t\t\t\ttextareaEl.focus();\n\t\t\t\ttextareaEl.select();\n\t\t\t\tdocument.execCommand(\"copy\");\n\t\t\t\ttextareaEl.remove();\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t */\n\ttoLocaleString(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\tif (value) {\n\t\t\tif (isNumber(value)) {\n\t\t\t\tif (typeof uni !== \"undefined\") {\n\t\t\t\t\tif (!language) {\n\t\t\t\t\t\tlanguage = uni.getAppBaseInfo().language;\n\t\t\t\t\t}\n\t\t\t\t\treturn value.toLocaleString(languageMap[language] || \"zh-CN\", options);\n\t\t\t\t} else {\n\t\t\t\t\treturn value.toLocaleString(navigator.language || \"zh-CN\", options);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value as string;\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x2(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留2位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x2g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 2,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,不显示千分位\n\t */\n\ttoLocaleString_i2x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐2位,显示千分位\n\t */\n\ttoLocaleString_i2x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 2,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x4(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留4位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x4g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 4,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,不显示千分位\n\t */\n\ttoLocaleString_i4x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐4位,显示千分位\n\t */\n\ttoLocaleString_i4x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 4,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,不显示千分位\n\t */\n\ttoLocaleString_i6x6(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: false,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n\t/**\n\t * 使用程序运行的语言将Number转为特定格式的字符串\n\t * @description 默认保留6位小数,补齐6位,显示千分位\n\t */\n\ttoLocaleString_i6x6g(value: string | number, options?: Intl.NumberFormatOptions): string {\n\t\toptions = merge(options || {}, {\n\t\t\tminimumFractionDigits: 6,\n\t\t\tmaximumFractionDigits: 6,\n\t\t\tuseGrouping: true,\n\t\t});\n\t\treturn this.toLocaleString(value, options);\n\t},\n};\n"],"names":["language","languageMap","zh","en","zh_CN","zh_TW","stringUtil","deepDecodeURIComponent","str","maxDepth","decoded","i","next","decodeURIComponent","getUrlParams","url","regex","params","match","exec","key","value","substring","split","isJson","isString","replace","test","map","s","reduce","prev","curr","splitCamelCase","length","RegExp","filter","token","toCamelCase","_","c","toUpperCase","firstCharToUpper","charAt","slice","firstCharToLower","toLowerCase","subStringWithEllipsis","suffix","generateRandomString","characters","randomString","randomIndex","Math","floor","random","generateUUID","uuid","toString","copy","uni","Promise","resolve","reject","setClipboardData","data","success","fail","navigator","clipboard","window","isSecureContext","writeText","textareaEl","document","createElement","style","position","opacity","left","top","body","appendChild","focus","select","execCommand","remove","toLocaleString","options","isNumber","getAppBaseInfo","toLocaleString_i2x2","merge","minimumFractionDigits","maximumFractionDigits","useGrouping","this","toLocaleString_i2x2g","toLocaleString_i2x4","toLocaleString_i2x4g","toLocaleString_i2x6","toLocaleString_i2x6g","toLocaleString_i4x4","toLocaleString_i4x4g","toLocaleString_i4x6","toLocaleString_i4x6g","toLocaleString_i6x6","toLocaleString_i6x6g"],"mappings":"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"}
|