@boteteam/utils 0.0.33 → 0.0.35
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/README.md +175 -9
- package/dist/cjs/aiGenerateFill.d.ts +2 -0
- package/dist/cjs/aiGenerateFill.js +44 -0
- package/dist/cjs/aiGenerateFill.js.map +7 -0
- package/dist/cjs/copyToClipboard.d.ts +6 -0
- package/dist/cjs/copyToClipboard.js +55 -0
- package/dist/cjs/copyToClipboard.js.map +7 -0
- package/dist/cjs/dealStorageData.d.ts +35 -0
- package/dist/cjs/dealStorageData.js +331 -0
- package/dist/cjs/dealStorageData.js.map +7 -0
- package/dist/cjs/docchainContextFill.d.ts +2 -0
- package/dist/cjs/docchainContextFill.js +38 -0
- package/dist/cjs/docchainContextFill.js.map +7 -0
- package/dist/cjs/formatModule/formatModuleData.js +53 -10
- package/dist/cjs/formatModule/formatModuleData.js.map +2 -2
- package/dist/cjs/formatModule/helpers/formatDescriptionsProps.js +13 -2
- package/dist/cjs/formatModule/helpers/formatDescriptionsProps.js.map +3 -3
- package/dist/cjs/formatModule/helpers/formatEchartLineProps.js +12 -5
- package/dist/cjs/formatModule/helpers/formatEchartLineProps.js.map +3 -3
- package/dist/cjs/formatModule/helpers/formatEchartPieProps.d.ts +1 -0
- package/dist/cjs/formatModule/helpers/formatEchartPieProps.js +26 -2
- package/dist/cjs/formatModule/helpers/formatEchartPieProps.js.map +3 -3
- package/dist/cjs/formatModule/helpers/formatFormProps.js +11 -0
- package/dist/cjs/formatModule/helpers/formatFormProps.js.map +3 -3
- package/dist/cjs/formatModule/helpers/formatHighCodeProps.js +3 -0
- package/dist/cjs/formatModule/helpers/formatHighCodeProps.js.map +2 -2
- package/dist/cjs/formatModule/helpers/formatImageProps.js +9 -3
- package/dist/cjs/formatModule/helpers/formatImageProps.js.map +2 -2
- package/dist/cjs/getClassPrefix.d.ts +2 -0
- package/dist/cjs/getClassPrefix.js +43 -0
- package/dist/cjs/getClassPrefix.js.map +7 -0
- package/dist/cjs/http.d.ts +10 -0
- package/dist/cjs/http.js +18 -0
- package/dist/cjs/http.js.map +2 -2
- package/dist/cjs/index.d.ts +10 -2
- package/dist/cjs/index.js +33 -4
- package/dist/cjs/index.js.map +3 -3
- package/dist/cjs/onCallSkillEvent.d.ts +21 -0
- package/dist/cjs/onCallSkillEvent.js +81 -0
- package/dist/cjs/onCallSkillEvent.js.map +7 -0
- package/dist/cjs/treeUtils.js +1 -1
- package/dist/cjs/treeUtils.js.map +2 -2
- package/dist/cjs/unitConversion.d.ts +2 -0
- package/dist/cjs/unitConversion.js +45 -0
- package/dist/cjs/unitConversion.js.map +7 -0
- package/dist/cjs/watermark.d.ts +0 -28
- package/dist/cjs/watermark.js +4 -277
- package/dist/cjs/watermark.js.map +2 -2
- package/dist/esm/aiGenerateFill.d.ts +2 -0
- package/dist/esm/aiGenerateFill.js +17 -0
- package/dist/esm/aiGenerateFill.js.map +1 -0
- package/dist/esm/copyToClipboard.d.ts +6 -0
- package/dist/esm/copyToClipboard.js +23 -0
- package/dist/esm/copyToClipboard.js.map +1 -0
- package/dist/esm/dealStorageData.d.ts +35 -0
- package/dist/esm/dealStorageData.js +441 -0
- package/dist/esm/dealStorageData.js.map +1 -0
- package/dist/esm/docchainContextFill.d.ts +2 -0
- package/dist/esm/docchainContextFill.js +17 -0
- package/dist/esm/docchainContextFill.js.map +1 -0
- package/dist/esm/formatModule/formatModuleData.js +58 -11
- package/dist/esm/formatModule/formatModuleData.js.map +1 -1
- package/dist/esm/formatModule/helpers/formatDescriptionsProps.js +20 -3
- package/dist/esm/formatModule/helpers/formatDescriptionsProps.js.map +1 -1
- package/dist/esm/formatModule/helpers/formatEchartLineProps.js +12 -5
- package/dist/esm/formatModule/helpers/formatEchartLineProps.js.map +1 -1
- package/dist/esm/formatModule/helpers/formatEchartPieProps.d.ts +1 -0
- package/dist/esm/formatModule/helpers/formatEchartPieProps.js +30 -5
- package/dist/esm/formatModule/helpers/formatEchartPieProps.js.map +1 -1
- package/dist/esm/formatModule/helpers/formatFormProps.js +8 -0
- package/dist/esm/formatModule/helpers/formatFormProps.js.map +1 -1
- package/dist/esm/formatModule/helpers/formatHighCodeProps.js +6 -1
- package/dist/esm/formatModule/helpers/formatHighCodeProps.js.map +1 -1
- package/dist/esm/formatModule/helpers/formatImageProps.js +9 -3
- package/dist/esm/formatModule/helpers/formatImageProps.js.map +1 -1
- package/dist/esm/getClassPrefix.d.ts +2 -0
- package/dist/esm/getClassPrefix.js +15 -0
- package/dist/esm/getClassPrefix.js.map +1 -0
- package/dist/esm/http.d.ts +10 -0
- package/dist/esm/http.js +90 -58
- package/dist/esm/http.js.map +1 -1
- package/dist/esm/index.d.ts +10 -2
- package/dist/esm/index.js +9 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/onCallSkillEvent.d.ts +21 -0
- package/dist/esm/onCallSkillEvent.js +90 -0
- package/dist/esm/onCallSkillEvent.js.map +1 -0
- package/dist/esm/treeUtils.js +1 -3
- package/dist/esm/treeUtils.js.map +1 -1
- package/dist/esm/unitConversion.d.ts +2 -0
- package/dist/esm/unitConversion.js +21 -0
- package/dist/esm/unitConversion.js.map +1 -0
- package/dist/esm/watermark.d.ts +0 -28
- package/dist/esm/watermark.js +2 -411
- package/dist/esm/watermark.js.map +1 -1
- package/dist/umd/index.min.js +1 -1
- package/dist/umd/index.min.js.map +1 -1
- package/package.json +8 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["get","cloneDeep","escapeString","getParamsArr","content","matchArr","_matchs","escapeRegex","regex","matchs","exec","split","_matchs2","getDataArr","filter","item","idx","includes","loopNodeByParamsPath","paramsArr","data","escape","arguments","length","undefined","Array","isArray","_iterator","_createForOfIteratorHelper","_step","_loop","_nextParamsArr5","keyword","value","dataNode","nextParamsArr","slice","_nextParamsArr","_nextParamsArr3","idxRegex","test","_nextParamsArr2","idxNum","replace","Number","Object","v","map","_nextParamsArr4","_ret","s","n","done","err","e","f","getParamsContentByParamKeys","paramNames","_Object$keys","keys","paramNameList","replaceLoopBodyParamsValue","contentStr","options","_ref","_ref$loopIndex","loopIndex","_ref$loopParams","loopParams","_ref$loopSourceArr","loopSourceArr","_ref$loopData","loopData","_ref$parameters","parameters","nowTemp","match","String","paramsPath","itemKey","filedVal","isNaN","isInteger","remainingPath","_parameters","forEach","sourceKey","globalVal","replaceParamsValue","pararms","isObject2String","nowContent","_typeof","JSON","stringify","splitStringWithTemplateLiteral","input","templateRegex","matches","result","Boolean","index","splice","getParamsContentByParamKeysForEvent","_matchs$","pageParams","replaceParamsValueForEvent","_Object$keys2","valueArr","_unused"],"sources":["../../src/treeUtils.ts"],"sourcesContent":["import { get, cloneDeep } from 'lodash';\nimport escapeString from './markdownEscape';\n\n/** 把${xxx.xxx.xxx} 转换为 [xxx,xxx,xxx] */\nexport const getParamsArr = (content: string) => {\n let matchArr:string[] = [];\n if (content && typeof content === 'string') {\n const escapeRegex = /\\$\\{\\{([^}]+)\\}\\}/gi; // 变量正则表达式,${{xxx}}\n const regex = /\\$\\{(.+?)\\}/gi; // 变量正则表达式,${xxx}\n let matchs = escapeRegex.exec(content);\n if (matchs?.[1]) {\n matchArr = matchs[1].split('.');\n } else {\n matchs = regex.exec(content);\n if (matchs?.[1]) {\n matchArr = matchs[1].split('.');\n }\n }\n return matchArr;\n }\n return matchArr;\n};\n\n/** 把${xxx.xxx.xxx} 转换为 [xxx,xxx,xxx],并过滤掉第一个root,pageParams */\nexport const getDataArr = (content: string) => {\n const matchArr:string[] = getParamsArr(content);\n return matchArr?.filter((item, idx) => !(idx === 0 && ['root', 'pageParams'].includes(item)) && !(idx === 1 && ['pageParams'].includes(item))); // 过滤掉第一个root,pageParams\n};\n\n/** 根据参数路径,逐级获取数据 */\nconst loopNodeByParamsPath:any = (\n paramsArr:string[],\n data: {[key:string]: any},\n escape:boolean = false\n) => {\n if (Array.isArray(paramsArr) && paramsArr.length > 0) {\n for (const keyword of paramsArr) {\n const dataNode = get(data, keyword);\n let nextParamsArr = paramsArr.slice(1); // 取下一个节点字段\n if (Array.isArray(dataNode)) {\n // 如果当前节点是数组,且下一个节点是数字,则取下标对应的值\n const idxRegex = /^\\[.*\\]$|^\\d+$/;\n if (idxRegex.test(nextParamsArr?.[0])) {\n const idxNum = nextParamsArr?.[0].replace(/\\[|\\]/g, '');\n if (dataNode?.[Number(idxNum)] instanceof Object) {\n return loopNodeByParamsPath(nextParamsArr.slice(1), dataNode?.[Number(idxNum)], escape);\n }\n return escape ? escapeString(dataNode?.[Number(idxNum)]) : dataNode?.[Number(idxNum)];\n }\n // 否则或缺中间节点,直接往下取值\n nextParamsArr = nextParamsArr.slice(1);\n if (nextParamsArr?.length >= 1) {\n return dataNode.map((item:any) => {\n // 如果数组节点是对象,则继续递归取值\n if (item instanceof Object && nextParamsArr?.length >= 1) {\n return loopNodeByParamsPath(nextParamsArr, item, escape);\n }\n // 否则直接返回数组值\n return escape ? escapeString(item) : item;\n });\n }\n return dataNode;\n } if (nextParamsArr?.length >= 1) {\n return loopNodeByParamsPath(nextParamsArr, dataNode, escape);\n }\n return escape ? escapeString(dataNode) : dataNode;\n }\n }\n return '';\n};\n\n\nexport const getParamsContentByParamKeys = (paramNames: string, data: {[key:string]: any} = {}) => {\n if (!paramNames || !data || Object.keys(data)?.length <= 0) {\n return undefined;\n }\n const escapeRegex = /\\$\\{\\{([^}]+)\\}\\}/gi; // 匹配${{}}格式的参数,属于需转义内容\n const paramNameList = getDataArr(paramNames);\n return loopNodeByParamsPath(paramNameList, data, escapeRegex.test(paramNames));\n};\n\n/**\n * 替换循环体内的参数值\n * 用于在循环体模板中替换 ${...} 格式的参数占位符为实际值\n *\n * @param contentStr - 包含参数占位符的字符串模板,例如: \"${item.name} - ${item.price}\"\n * @param options - 配置选项\n * @param options.loopParams - 循环体参数对象,包含当前循环项的字段值\n * @param options.loopSourceArr - 循环体数据源的键名数组,用于标识哪些参数属于循环体本身\n * @param options.loopData - 循环数据源的完整数据数组\n * @param options.parameters - 全量参数对象(可选),当循环体内找不到值时,会从这里查找\n * @param options.staticCodeMap - 静态数据映射(可选),当前未使用\n * @returns 替换后的字符串\n *\n * @example\n * // 示例:替换循环体内的参数\n * const result = replaceLoopBodyParamsValue(\n * \"${item.name} - ${item.price}\",\n * {\n * loopParams: { name: \"商品A\", price: 100 },\n * loopSourceArr: [\"item\"],\n * loopData: [{ name: \"商品A\", price: 100 }],\n * parameters: { globalVar: \"全局变量\" }\n * }\n * );\n * // 返回: \"商品A - 100\"\n */\nexport const replaceLoopBodyParamsValue = (\n contentStr: string,\n options: {\n loopIndex: number, // 循环索引\n loopParams: any // 循环体参数\n loopSourceArr: string[], // 循环体数据源\n loopData: {[key: string]: any}[], // 循环数据源数据\n parameters?: {[key: string]: any}, // 全量参数\n staticCodeMap?: {[key: string]: any}, // 静态数据\n },\n) => {\n const {\n loopIndex = 0,\n loopParams = {},\n loopSourceArr = [],\n loopData = [],\n parameters = {},\n } = options || {};\n let nowTemp = '';\n \n // 只有当输入是有效字符串且存在循环体参数时才进行处理\n if (typeof contentStr === 'string' && contentStr && loopParams) {\n // 使用正则表达式匹配所有 ${...} 格式的参数占位符\n nowTemp = contentStr.replace(/\\$\\{(.+?)\\}/gi, (match) => {\n // eslint-disable-next-line no-template-curly-in-string\n if (match === '${rowIndex}') {\n return String(loopIndex);\n }\n // 解析参数路径,并过滤掉循环源数组中的键(避免循环引用)\n const paramsPath = getDataArr(match).filter((itemKey) => !loopSourceArr.includes(itemKey));\n let filedVal:any = '';\n \n // 判断第一个参数是否为数组索引(如 [0] 或 0)\n // 如果当前节点是数组,且下一个节点是数字,则取下标对应的值\n const idxRegex = /^\\[.*\\]$|^\\d+$/;\n if (idxRegex.test(paramsPath?.[0])) {\n // 从数组索引中提取数字\n const idxNum = paramsPath?.[0].replace(/\\[|\\]/g, '');\n const idx = Number(idxNum);\n // 验证索引是否为有效数字(非 NaN 且非负数)\n if (!isNaN(idx) && idx >= 0 && Number.isInteger(idx)) {\n // 如果对应索引的数据是对象,则继续递归查找子属性\n if (loopData?.[idx] instanceof Object) {\n filedVal = loopNodeByParamsPath(paramsPath.slice(1), loopData[idx]);\n } else {\n // 否则直接返回该索引的值(可能为 undefined,会被后续逻辑处理)\n filedVal = loopData?.[idx];\n }\n } else {\n // 无效索引(如 [abc] 或负数),返回空字符串\n filedVal = '';\n }\n } else {\n // 非数组索引情况,从循环体参数中查找值\n // 兼容 loopParams 是非对象类型的情况(如字符串、数字、布尔值等)\n const remainingPath = paramsPath.slice(1);\n if (loopParams instanceof Object && !Array.isArray(loopParams)) {\n // loopParams 是对象类型,使用原有逻辑\n filedVal = loopNodeByParamsPath(remainingPath, loopParams);\n } else if (remainingPath.length === 0) {\n // loopParams 是非对象类型,且没有子路径,直接返回 loopParams 的值\n filedVal = loopParams;\n } else {\n // loopParams 是非对象类型,但有子路径,无法访问属性,返回空字符串\n // 后续会尝试从全局参数中查找\n filedVal = '';\n }\n\n // 如果循环体内查找不到值,则从全量参数中查找,但需要排除循环体本身的数据源\n // 这样可以避免循环引用,同时允许访问循环体外的全局参数\n // 注意:!filedVal 会将 0、false、'' 等假值也视为未找到,这是当前的设计逻辑\n if (!filedVal && parameters) {\n const _parameters = cloneDeep(parameters);\n // 从全量参数中删除循环体数据源,避免循环引用\n if (Array.isArray(loopSourceArr) && loopSourceArr.length > 0) {\n loopSourceArr.forEach((sourceKey:string) => {\n delete _parameters[sourceKey];\n });\n }\n // 使用完整的参数路径(不过滤循环源)从全量参数中查找\n const paramNameList = getDataArr(match);\n const globalVal = loopNodeByParamsPath(paramNameList, _parameters);\n // 如果从全量参数中找到的值是数组,则返回空字符串,避免返回整个数组\n // 只返回对象的值,不返回数组数据\n if (Array.isArray(globalVal)) {\n filedVal = '';\n } else {\n filedVal = globalVal;\n }\n }\n }\n // 返回找到的值,如果找不到则返回空字符串\n // 修复:当值为 0 时,应该正常返回 '0',而不是空字符串\n if (filedVal === null || filedVal === undefined) {\n return '';\n }\n return String(filedVal);\n });\n }\n return nowTemp;\n};\n\nexport const replaceParamsValue = (\n contentStr: string,\n pararms: { [key: string]: any } = {},\n isObject2String: boolean = false,\n) => {\n let nowContent:string = '';\n if (typeof contentStr === 'string' && contentStr && pararms) {\n nowContent = contentStr.replace(/\\$\\{\\{?[^{}]+}?\\}/g, (match) => {\n const filedVal = getParamsContentByParamKeys(match, pararms);\n if (isObject2String && typeof filedVal === 'object') {\n return JSON.stringify(filedVal);\n }\n // 修复:当值为 0 时,应该正常返回 '0',而不是空字符串\n if (filedVal === null || filedVal === undefined) {\n return '';\n }\n return String(filedVal);\n });\n }\n return nowContent;\n};\n\n\n/** ======下面几个方法主要提供给事件参数使用 勿共用 ===== */\nconst splitStringWithTemplateLiteral = (input: string) => {\n // 正则表达式:匹配 ${...} 模式\n const templateRegex = /\\$\\{[^}]*\\}/;\n\n // 检查字符串是否包含 ${...}\n if (!templateRegex.test(input)) {\n return [input]; // 返回原始字符串\n }\n\n // 匹配所有 ${...} 模式\n const matches = input.match(templateRegex);\n\n if (!matches || matches.length === 0) {\n return [input]; // 返回原始字符串\n }\n\n // 分割字符串,同时保留 ${...} 模式\n const result = input.split(templateRegex).filter(Boolean); // 去掉空字符串\n\n // 将匹配到的 ${...} 模式重新插入到结果数组中\n matches.forEach((match, index) => {\n result.splice(index * 2 + 1, 0, match); // 插入到对应位置\n });\n\n return result;\n};\n\nconst getParamsContentByParamKeysForEvent = (\n paramNames: string,\n data: { [key: string]: any } = {},\n) => {\n let paramNameList: string[] = [];\n const regex = /\\$\\{(.+?)\\}/gi; // 变量正则表达式,${xxx}\n if (paramNames && typeof paramNames === 'string') {\n const matchs = regex.exec(paramNames);\n if (matchs?.[1]) {\n paramNameList = matchs?.[1]?.split('.');\n }\n }\n\n if (paramNameList.length === 0) {\n return paramNames;\n }\n\n // 如果参数路径中没有 pageParams,先尝试在 data.pageParams 中查找\n // 因为根据注释,这个方法不能去掉 pageParams 那一层\n if (paramNameList[0] !== 'pageParams' && data?.pageParams) {\n const result = loopNodeByParamsPath(paramNameList, data.pageParams);\n if (result !== '' && result !== undefined) {\n return result;\n }\n }\n\n // 如果替换不成功,需要返回字符串原始的值\n const result = loopNodeByParamsPath(paramNameList, data);\n return result !== '' && result !== undefined ? result : paramNames;\n};\n\n\n/**\n * 提供给事件参数转换那边的方法\n * 和replaceParamsValue 区别,\n * 1、不能去掉pageParams那一层\n * 2、字符串拼对象,需要把对象做JSON.stringify转换\n * 3、如果替换不成功,需要返回字符串原始的值\n * @param contentStr \"你好\" ,\"你$好, ${pageParams.userName}\" , \"${pageData}, ${pageParams.userList[0]}\"\n * @param data 数据\n */\nexport const replaceParamsValueForEvent = (\n contentStr: string,\n data: { [key: string]: any } = {},\n) => {\n if (!contentStr || !data || Object.keys(data)?.length <= 0) {\n return undefined;\n }\n const valueArr = splitStringWithTemplateLiteral(contentStr);\n // 单个字符串, 没有拼接\n if (valueArr.length === 1) {\n return getParamsContentByParamKeysForEvent(valueArr[0], data);\n }\n\n\n let nowTemp = '';\n if (typeof contentStr === 'string' && contentStr && data) {\n nowTemp = contentStr.replace(/\\$\\{(.+?)\\}/g, (match) => {\n const filedVal = getParamsContentByParamKeysForEvent(match, data);\n if (typeof filedVal === 'string') {\n return filedVal;\n }\n // 字符串拼对象,需要把对象做JSON.stringify转换\n try {\n return JSON.stringify(filedVal);\n } catch {\n return '';\n }\n });\n }\n return nowTemp;\n};\n\n/** ======上面几个方法主要提供给事件参数使用 勿共用 ===== */\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["get","cloneDeep","escapeString","getParamsArr","content","matchArr","_matchs","escapeRegex","regex","matchs","exec","split","_matchs2","getDataArr","filter","item","idx","includes","loopNodeByParamsPath","paramsArr","data","escape","arguments","length","undefined","Array","isArray","_iterator","_createForOfIteratorHelper","_step","_loop","_nextParamsArr5","keyword","value","dataNode","nextParamsArr","slice","_nextParamsArr","_nextParamsArr3","idxRegex","test","_nextParamsArr2","idxNum","replace","Number","Object","v","map","_nextParamsArr4","_ret","s","n","done","err","e","f","getParamsContentByParamKeys","paramNames","_Object$keys","keys","paramNameList","replaceLoopBodyParamsValue","contentStr","options","_ref","_ref$loopIndex","loopIndex","_ref$loopParams","loopParams","_ref$loopSourceArr","loopSourceArr","_ref$loopData","loopData","_ref$parameters","parameters","nowTemp","match","String","paramsPath","itemKey","filedVal","isNaN","isInteger","remainingPath","_parameters","forEach","sourceKey","globalVal","replaceParamsValue","pararms","isObject2String","nowContent","_typeof","JSON","stringify","splitStringWithTemplateLiteral","input","templateRegex","matches","result","Boolean","index","splice","getParamsContentByParamKeysForEvent","_matchs$","pageParams","replaceParamsValueForEvent","_Object$keys2","valueArr","_unused"],"sources":["../../src/treeUtils.ts"],"sourcesContent":["import { get, cloneDeep } from 'lodash';\nimport escapeString from './markdownEscape';\n\n/** 把${xxx.xxx.xxx} 转换为 [xxx,xxx,xxx] */\nexport const getParamsArr = (content: string) => {\n let matchArr:string[] = [];\n if (content && typeof content === 'string') {\n const escapeRegex = /\\$\\{\\{([^}]+)\\}\\}/gi; // 变量正则表达式,${{xxx}}\n const regex = /\\$\\{(.+?)\\}/gi; // 变量正则表达式,${xxx}\n let matchs = escapeRegex.exec(content);\n if (matchs?.[1]) {\n matchArr = matchs[1].split('.');\n } else {\n matchs = regex.exec(content);\n if (matchs?.[1]) {\n matchArr = matchs[1].split('.');\n }\n }\n return matchArr;\n }\n return matchArr;\n};\n\n/** 把${xxx.xxx.xxx} 转换为 [xxx,xxx,xxx],并过滤掉第一个root,pageParams */\nexport const getDataArr = (content: string) => {\n const matchArr:string[] = getParamsArr(content);\n return matchArr?.filter((item, idx) => !(idx === 0 && ['root', 'pageParams'].includes(item)) && !(idx === 1 && ['pageParams'].includes(item))); // 过滤掉第一个root,pageParams\n};\n\n/** 根据参数路径,逐级获取数据 */\nconst loopNodeByParamsPath:any = (\n paramsArr:string[],\n data: {[key:string]: any},\n escape:boolean = false\n) => {\n if (Array.isArray(paramsArr) && paramsArr.length > 0) {\n for (const keyword of paramsArr) {\n const dataNode = get(data, keyword);\n let nextParamsArr = paramsArr.slice(1); // 取下一个节点字段\n if (Array.isArray(dataNode)) {\n // 如果当前节点是数组,且下一个节点是数字,则取下标对应的值\n const idxRegex = /^\\[.*\\]$|^\\d+$/;\n if (idxRegex.test(nextParamsArr?.[0])) {\n const idxNum = nextParamsArr?.[0].replace(/\\[|\\]/g, '');\n if (dataNode?.[Number(idxNum)] instanceof Object) {\n return loopNodeByParamsPath(nextParamsArr.slice(1), dataNode?.[Number(idxNum)], escape);\n }\n return escape ? escapeString(dataNode?.[Number(idxNum)]) : dataNode?.[Number(idxNum)];\n }\n // 否则或缺中间节点,直接往下取值\n nextParamsArr = nextParamsArr.slice(1);\n if (nextParamsArr?.length >= 1) {\n return dataNode.map((item:any) => {\n // 如果数组节点是对象,则继续递归取值\n if (item instanceof Object && nextParamsArr?.length >= 1) {\n return loopNodeByParamsPath(nextParamsArr, item, escape);\n }\n // 否则直接返回数组值\n return escape ? escapeString(item) : item;\n });\n }\n return dataNode;\n } if (nextParamsArr?.length >= 1) {\n return loopNodeByParamsPath(nextParamsArr, dataNode, escape);\n }\n return escape ? escapeString(dataNode) : dataNode;\n }\n }\n return '';\n};\n\n\nexport const getParamsContentByParamKeys = (paramNames: string, data: {[key:string]: any} = {}) => {\n if (!paramNames || !data || Object.keys(data)?.length <= 0) {\n return undefined;\n }\n const escapeRegex = /\\$\\{\\{([^}]+)\\}\\}/gi; // 匹配${{}}格式的参数,属于需转义内容\n const paramNameList = getDataArr(paramNames);\n return loopNodeByParamsPath(paramNameList, data, escapeRegex.test(paramNames));\n};\n\n/**\n * 替换循环体内的参数值\n * 用于在循环体模板中替换 ${...} 格式的参数占位符为实际值\n *\n * @param contentStr - 包含参数占位符的字符串模板,例如: \"${item.name} - ${item.price}\"\n * @param options - 配置选项\n * @param options.loopParams - 循环体参数对象,包含当前循环项的字段值\n * @param options.loopSourceArr - 循环体数据源的键名数组,用于标识哪些参数属于循环体本身\n * @param options.loopData - 循环数据源的完整数据数组\n * @param options.parameters - 全量参数对象(可选),当循环体内找不到值时,会从这里查找\n * @param options.staticCodeMap - 静态数据映射(可选),当前未使用\n * @returns 替换后的字符串\n *\n * @example\n * // 示例:替换循环体内的参数\n * const result = replaceLoopBodyParamsValue(\n * \"${item.name} - ${item.price}\",\n * {\n * loopParams: { name: \"商品A\", price: 100 },\n * loopSourceArr: [\"item\"],\n * loopData: [{ name: \"商品A\", price: 100 }],\n * parameters: { globalVar: \"全局变量\" }\n * }\n * );\n * // 返回: \"商品A - 100\"\n */\nexport const replaceLoopBodyParamsValue = (\n contentStr: string,\n options: {\n loopIndex: number, // 循环索引\n loopParams: any // 循环体参数\n loopSourceArr: string[], // 循环体数据源\n loopData: {[key: string]: any}[], // 循环数据源数据\n parameters?: {[key: string]: any}, // 全量参数\n staticCodeMap?: {[key: string]: any}, // 静态数据\n },\n) => {\n const {\n loopIndex = 0,\n loopParams = {},\n loopSourceArr = [],\n loopData = [],\n parameters = {},\n } = options || {};\n let nowTemp = '';\n \n // 只有当输入是有效字符串且存在循环体参数时才进行处理\n if (typeof contentStr === 'string' && contentStr && loopParams) {\n // 使用正则表达式匹配所有 ${...} 格式的参数占位符\n nowTemp = contentStr.replace(/\\$\\{(.+?)\\}/gi, (match) => {\n // eslint-disable-next-line no-template-curly-in-string\n if (match === '${rowIndex}') {\n return String(loopIndex);\n }\n // 解析参数路径,并过滤掉循环源数组中的键(避免循环引用)\n const paramsPath = getDataArr(match).filter((itemKey) => !loopSourceArr.includes(itemKey));\n let filedVal:any = '';\n \n // 判断第一个参数是否为数组索引(如 [0] 或 0)\n // 如果当前节点是数组,且下一个节点是数字,则取下标对应的值\n const idxRegex = /^\\[.*\\]$|^\\d+$/;\n if (idxRegex.test(paramsPath?.[0])) {\n // 从数组索引中提取数字\n const idxNum = paramsPath?.[0].replace(/\\[|\\]/g, '');\n const idx = Number(idxNum);\n // 验证索引是否为有效数字(非 NaN 且非负数)\n if (!isNaN(idx) && idx >= 0 && Number.isInteger(idx)) {\n // 如果对应索引的数据是对象,则继续递归查找子属性\n if (loopData?.[idx] instanceof Object) {\n filedVal = loopNodeByParamsPath(paramsPath.slice(1), loopData[idx]);\n } else {\n // 否则直接返回该索引的值(可能为 undefined,会被后续逻辑处理)\n filedVal = loopData?.[idx];\n }\n } else {\n // 无效索引(如 [abc] 或负数),返回空字符串\n filedVal = '';\n }\n } else {\n // 非数组索引情况,从循环体参数中查找值\n // 兼容 loopParams 是非对象类型的情况(如字符串、数字、布尔值等)\n const remainingPath = paramsPath.slice(1);\n if (loopParams instanceof Object && !Array.isArray(loopParams)) {\n // loopParams 是对象类型,使用原有逻辑\n filedVal = loopNodeByParamsPath(remainingPath, loopParams);\n } else if (remainingPath.length === 0) {\n // loopParams 是非对象类型,且没有子路径,直接返回 loopParams 的值\n filedVal = loopParams;\n } else {\n // loopParams 是非对象类型,但有子路径,无法访问属性,返回空字符串\n // 后续会尝试从全局参数中查找\n filedVal = '';\n }\n\n // 如果循环体内查找不到值,则从全量参数中查找,但需要排除循环体本身的数据源\n // 这样可以避免循环引用,同时允许访问循环体外的全局参数\n // 注意:!filedVal 会将 0、false、'' 等假值也视为未找到,这是当前的设计逻辑\n if (!filedVal && parameters) {\n const _parameters = cloneDeep(parameters);\n // 从全量参数中删除循环体数据源,避免循环引用\n if (Array.isArray(loopSourceArr) && loopSourceArr.length > 0) {\n loopSourceArr.forEach((sourceKey:string) => {\n delete _parameters[sourceKey];\n });\n }\n // 使用完整的参数路径(不过滤循环源)从全量参数中查找\n const paramNameList = getDataArr(match);\n const globalVal = loopNodeByParamsPath(paramNameList, _parameters);\n // 如果从全量参数中找到的值是数组,则返回空字符串,避免返回整个数组\n // 只返回对象的值,不返回数组数据\n if (Array.isArray(globalVal)) {\n filedVal = '';\n } else {\n filedVal = globalVal;\n }\n }\n }\n // 返回找到的值,如果找不到则返回空字符串\n // 修复:当值为 0 时,应该正常返回 '0',而不是空字符串\n if (filedVal === null || filedVal === undefined) {\n return '';\n }\n return String(filedVal);\n });\n }\n return nowTemp;\n};\n\nexport const replaceParamsValue = (\n contentStr: string,\n pararms: { [key: string]: any } = {},\n isObject2String: boolean = false,\n) => {\n let nowContent:string = '';\n if (typeof contentStr === 'string' && contentStr && pararms) {\n nowContent = contentStr.replace(/\\$\\{\\{?[^{}]+}?\\}/g, (match) => {\n const filedVal = getParamsContentByParamKeys(match, pararms);\n if (isObject2String && typeof filedVal === 'object') {\n return JSON.stringify(filedVal);\n }\n // 修复:当值为 0 时,应该正常返回 '0',而不是空字符串\n if (filedVal === null || filedVal === undefined) {\n return '';\n }\n return String(filedVal);\n });\n }\n return nowContent;\n};\n\n\n/** ======下面几个方法主要提供给事件参数使用 勿共用 ===== */\nconst splitStringWithTemplateLiteral = (input: string) => {\n // 正则表达式:匹配 ${...} 模式\n const templateRegex = /\\$\\{[^}]*\\}/;\n\n // 检查字符串是否包含 ${...}\n if (!templateRegex.test(input)) {\n return [input]; // 返回原始字符串\n }\n\n // 匹配所有 ${...} 模式\n const matches = input.match(templateRegex);\n\n if (!matches || matches.length === 0) {\n return [input]; // 返回原始字符串\n }\n\n // 分割字符串,同时保留 ${...} 模式\n const result = input.split(templateRegex).filter(Boolean); // 去掉空字符串\n\n // 将匹配到的 ${...} 模式重新插入到结果数组中\n matches.forEach((match, index) => {\n result.splice(index * 2 + 1, 0, match); // 插入到对应位置\n });\n\n return result;\n};\n\nconst getParamsContentByParamKeysForEvent = (\n paramNames: string,\n data: { [key: string]: any } = {},\n) => {\n let paramNameList: string[] = [];\n const regex = /\\$\\{(.+?)\\}/gi; // 变量正则表达式,${xxx}\n if (paramNames && typeof paramNames === 'string') {\n const matchs = regex.exec(paramNames);\n if (matchs?.[1]) {\n paramNameList = matchs?.[1]?.split('.');\n }\n }\n\n if (paramNameList.length === 0) {\n return paramNames;\n }\n\n // 如果参数路径中没有 pageParams,先尝试在 data.pageParams 中查找\n // 因为根据注释,这个方法不能去掉 pageParams 那一层\n if (paramNameList[0] !== 'pageParams' && data?.pageParams) {\n const result = loopNodeByParamsPath(paramNameList, data.pageParams);\n if (result !== '' && result !== undefined) {\n return result;\n }\n }\n\n const result = loopNodeByParamsPath(paramNameList, data);\n return result;\n};\n\n\n/**\n * 提供给事件参数转换那边的方法\n * 和replaceParamsValue 区别,\n * 1、不能去掉pageParams那一层\n * 2、字符串拼对象,需要把对象做JSON.stringify转换\n * 3、如果替换不成功,需要返回字符串原始的值\n * @param contentStr \"你好\" ,\"你$好, ${pageParams.userName}\" , \"${pageData}, ${pageParams.userList[0]}\"\n * @param data 数据\n */\nexport const replaceParamsValueForEvent = (\n contentStr: string,\n data: { [key: string]: any } = {},\n) => {\n if (!contentStr || !data || Object.keys(data)?.length <= 0) {\n return undefined;\n }\n const valueArr = splitStringWithTemplateLiteral(contentStr);\n // 单个字符串, 没有拼接\n if (valueArr.length === 1) {\n return getParamsContentByParamKeysForEvent(valueArr[0], data);\n }\n\n\n let nowTemp = '';\n if (typeof contentStr === 'string' && contentStr && data) {\n nowTemp = contentStr.replace(/\\$\\{(.+?)\\}/g, (match) => {\n const filedVal = getParamsContentByParamKeysForEvent(match, data);\n if (typeof filedVal === 'string') {\n return filedVal;\n }\n // 字符串拼对象,需要把对象做JSON.stringify转换\n try {\n return JSON.stringify(filedVal);\n } catch {\n return '';\n }\n });\n }\n return nowTemp;\n};\n\n/** ======上面几个方法主要提供给事件参数使用 勿共用 ===== */\n"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
var unitConversion = function unitConversion(value) {
|
|
2
|
+
var number = Number(value);
|
|
3
|
+
if (!isNaN(number)) {
|
|
4
|
+
var kbNum = number / 1024;
|
|
5
|
+
var mbNum = kbNum / 1024;
|
|
6
|
+
var gbNum = mbNum / 1024;
|
|
7
|
+
if (gbNum >= 1) {
|
|
8
|
+
return "".concat(gbNum.toFixed(2), "GB").replace(/\.00/, '');
|
|
9
|
+
}
|
|
10
|
+
if (mbNum >= 1) {
|
|
11
|
+
return "".concat(mbNum.toFixed(2), "MB").replace(/\.00/, '');
|
|
12
|
+
}
|
|
13
|
+
if (kbNum >= 1) {
|
|
14
|
+
return "".concat(kbNum.toFixed(2), "KB").replace(/\.00/, '');
|
|
15
|
+
}
|
|
16
|
+
return "".concat(number.toString(), "B");
|
|
17
|
+
}
|
|
18
|
+
return value.toString();
|
|
19
|
+
};
|
|
20
|
+
export default unitConversion;
|
|
21
|
+
//# sourceMappingURL=unitConversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["unitConversion","value","number","Number","isNaN","kbNum","mbNum","gbNum","concat","toFixed","replace","toString"],"sources":["../../src/unitConversion.ts"],"sourcesContent":["const unitConversion = (value:string | number): string => {\n const number = Number(value);\n if (!isNaN(number)) {\n const kbNum = number / 1024;\n const mbNum = kbNum / 1024;\n const gbNum = mbNum / 1024;\n if (gbNum >= 1) {\n return `${gbNum.toFixed(2)}GB`.replace(/\\.00/, '');\n }\n if (mbNum >= 1) {\n return `${mbNum.toFixed(2)}MB`.replace(/\\.00/, '');\n }\n if (kbNum >= 1) {\n return `${kbNum.toFixed(2)}KB`.replace(/\\.00/, '');\n }\n return `${number.toString()}B`;\n }\n return value.toString();\n};\n\nexport default unitConversion;\n"],"mappings":"AAAA,IAAMA,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,KAAqB,EAAa;EACxD,IAAMC,MAAM,GAAGC,MAAM,CAACF,KAAK,CAAC;EAC5B,IAAI,CAACG,KAAK,CAACF,MAAM,CAAC,EAAE;IAClB,IAAMG,KAAK,GAAGH,MAAM,GAAG,IAAI;IAC3B,IAAMI,KAAK,GAAGD,KAAK,GAAG,IAAI;IAC1B,IAAME,KAAK,GAAGD,KAAK,GAAG,IAAI;IAC1B,IAAIC,KAAK,IAAI,CAAC,EAAE;MACd,OAAO,GAAAC,MAAA,CAAGD,KAAK,CAACE,OAAO,CAAC,CAAC,CAAC,QAAKC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACpD;IACA,IAAIJ,KAAK,IAAI,CAAC,EAAE;MACd,OAAO,GAAAE,MAAA,CAAGF,KAAK,CAACG,OAAO,CAAC,CAAC,CAAC,QAAKC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACpD;IACA,IAAIL,KAAK,IAAI,CAAC,EAAE;MACd,OAAO,GAAAG,MAAA,CAAGH,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC,QAAKC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IACpD;IACA,UAAAF,MAAA,CAAUN,MAAM,CAACS,QAAQ,CAAC,CAAC;EAC7B;EACA,OAAOV,KAAK,CAACU,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED,eAAeX,cAAc"}
|
package/dist/esm/watermark.d.ts
CHANGED
|
@@ -35,43 +35,15 @@ export interface ContextVariable {
|
|
|
35
35
|
code: string;
|
|
36
36
|
name: string;
|
|
37
37
|
}
|
|
38
|
-
/**
|
|
39
|
-
* 会话信息类型
|
|
40
|
-
*/
|
|
41
|
-
export interface SessionInfo {
|
|
42
|
-
userId?: string;
|
|
43
|
-
userName?: string;
|
|
44
|
-
realName?: string;
|
|
45
|
-
}
|
|
46
38
|
/**
|
|
47
39
|
* XML 转义
|
|
48
40
|
*/
|
|
49
41
|
export declare function escapeXml(str: string): string;
|
|
50
|
-
/**
|
|
51
|
-
* 根据 key 获取变量的真实值
|
|
52
|
-
* @param key 变量 key,支持格式:${system.now}、${system.today}、${system.ip}、${session.userId}、${session.userName}、${session.realName}、${contextParams.xxx}
|
|
53
|
-
*/
|
|
54
|
-
export declare function getVariableRealValue(key: string): string;
|
|
55
42
|
/**
|
|
56
43
|
* 生成水印样式对象
|
|
57
44
|
* @param styles 样式配置
|
|
58
45
|
*/
|
|
59
46
|
export declare function generateWatermarkStyle(styles: WatermarkStyles): CSSProperties;
|
|
60
|
-
/**
|
|
61
|
-
* 异步获取客户端 IP(通过第三方 API)
|
|
62
|
-
* @returns Promise<string> 返回客户端 IP 地址
|
|
63
|
-
*/
|
|
64
|
-
export declare function fetchClientIp(): Promise<string>;
|
|
65
|
-
/**
|
|
66
|
-
* 获取客户端 IP(同步方法,从缓存读取)
|
|
67
|
-
* @returns string 返回客户端 IP 地址,如果缓存中没有则返回默认值 '127.0.0.1'
|
|
68
|
-
*/
|
|
69
|
-
export declare function getClientIp(): string;
|
|
70
|
-
/**
|
|
71
|
-
* 解析 content 中的所有变量并替换为真实值
|
|
72
|
-
* @param content 原始内容,可能包含变量如 ${system.now}、${session.userId}、${contextParams.userName} 等
|
|
73
|
-
*/
|
|
74
|
-
export declare function parseContentVariables(content: string): string;
|
|
75
47
|
/**
|
|
76
48
|
* 生成水印的 base64 数据 URL
|
|
77
49
|
* 当前环境localStore中存有数据 :key=userStores value={"state":{"userInfo":{"token":"16fe343c-78ae-4fd8-93eb-410256dd483b","userId":"1","userName":"admin","phoneNo":"13800138002","email":"admin@localhost.com","realName":"admin2","defaultTenantId":"0","avatar":"./images/avatar/img-user-avatar-10.png","userIcon":"./images/avatar/img-user-avatar-10.png"},"currentTenantId":"1273556018761138176","userSelectedBotOrder":["1211941633166168064","1212229286675095552"],"activeSession":null},"version":0}
|
package/dist/esm/watermark.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
2
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
3
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
5
1
|
/**
|
|
6
2
|
* 水印工具函数
|
|
7
3
|
*/
|
|
8
4
|
|
|
5
|
+
import { parseContentVariables } from "./dealStorageData";
|
|
6
|
+
|
|
9
7
|
/**
|
|
10
8
|
* 水印行配置
|
|
11
9
|
*/
|
|
@@ -14,10 +12,6 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
14
12
|
* 上下文变量类型
|
|
15
13
|
*/
|
|
16
14
|
|
|
17
|
-
/**
|
|
18
|
-
* 会话信息类型
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
15
|
/**
|
|
22
16
|
* XML 转义
|
|
23
17
|
*/
|
|
@@ -25,82 +19,6 @@ export function escapeXml(str) {
|
|
|
25
19
|
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
26
20
|
}
|
|
27
21
|
|
|
28
|
-
/**
|
|
29
|
-
* 根据 key 获取变量的真实值
|
|
30
|
-
* @param key 变量 key,支持格式:${system.now}、${system.today}、${system.ip}、${session.userId}、${session.userName}、${session.realName}、${contextParams.xxx}
|
|
31
|
-
*/
|
|
32
|
-
export function getVariableRealValue(key) {
|
|
33
|
-
// 从 sessionStorage 获取用户信息
|
|
34
|
-
var sessionInfo = getUserInfoFromStorage();
|
|
35
|
-
|
|
36
|
-
// 从 storage 获取 contextParams
|
|
37
|
-
var contextParams = getContextParamsFromStorage();
|
|
38
|
-
|
|
39
|
-
// 获取客户端 IP(从缓存读取,如果没有则返回默认值)
|
|
40
|
-
var clientIp = getClientIp();
|
|
41
|
-
var now = new Date();
|
|
42
|
-
|
|
43
|
-
// 处理 ${system.xxx} 格式
|
|
44
|
-
var systemMatch = key.match(/^\$\{system\.(\w+)\}$/);
|
|
45
|
-
if (systemMatch) {
|
|
46
|
-
var systemKey = systemMatch[1];
|
|
47
|
-
switch (systemKey) {
|
|
48
|
-
case 'now':
|
|
49
|
-
{
|
|
50
|
-
// 当前时间:格式为 YYYY-MM-DD HH:mm:ss
|
|
51
|
-
var year = now.getFullYear();
|
|
52
|
-
var month = String(now.getMonth() + 1).padStart(2, '0');
|
|
53
|
-
var day = String(now.getDate()).padStart(2, '0');
|
|
54
|
-
var hours = String(now.getHours()).padStart(2, '0');
|
|
55
|
-
var minutes = String(now.getMinutes()).padStart(2, '0');
|
|
56
|
-
var seconds = String(now.getSeconds()).padStart(2, '0');
|
|
57
|
-
return "".concat(year, "-").concat(month, "-").concat(day, " ").concat(hours, ":").concat(minutes, ":").concat(seconds);
|
|
58
|
-
}
|
|
59
|
-
case 'today':
|
|
60
|
-
{
|
|
61
|
-
// 当前日期:格式为 YYYY-MM-DD
|
|
62
|
-
var _year = now.getFullYear();
|
|
63
|
-
var _month = String(now.getMonth() + 1).padStart(2, '0');
|
|
64
|
-
var _day = String(now.getDate()).padStart(2, '0');
|
|
65
|
-
return "".concat(_year, "-").concat(_month, "-").concat(_day);
|
|
66
|
-
}
|
|
67
|
-
case 'ip':
|
|
68
|
-
return clientIp;
|
|
69
|
-
default:
|
|
70
|
-
return '';
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// 处理 ${session.xxx} 格式
|
|
75
|
-
var sessionMatch = key.match(/^\$\{session\.(\w+)\}$/);
|
|
76
|
-
if (sessionMatch) {
|
|
77
|
-
var sessionKey = sessionMatch[1];
|
|
78
|
-
switch (sessionKey) {
|
|
79
|
-
case 'userId':
|
|
80
|
-
return sessionInfo.userId || '';
|
|
81
|
-
case 'userName':
|
|
82
|
-
return sessionInfo.userName || '';
|
|
83
|
-
case 'realName':
|
|
84
|
-
return sessionInfo.realName || '';
|
|
85
|
-
default:
|
|
86
|
-
return '';
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// 处理 ${contextParams.xxx} 格式
|
|
91
|
-
var contextParamsMatch = key.match(/^\$\{contextParams\.(\w+)\}$/);
|
|
92
|
-
if (contextParamsMatch) {
|
|
93
|
-
var contextParamsKey = contextParamsMatch[1];
|
|
94
|
-
if (contextParams && _typeof(contextParams) === 'object') {
|
|
95
|
-
var value = contextParams[contextParamsKey];
|
|
96
|
-
// 如果值是 null 或 undefined,返回空字符串;否则转换为字符串
|
|
97
|
-
return value != null ? String(value) : '';
|
|
98
|
-
}
|
|
99
|
-
return '';
|
|
100
|
-
}
|
|
101
|
-
return '';
|
|
102
|
-
}
|
|
103
|
-
|
|
104
22
|
/**
|
|
105
23
|
* 生成水印样式对象
|
|
106
24
|
* @param styles 样式配置
|
|
@@ -116,333 +34,6 @@ export function generateWatermarkStyle(styles) {
|
|
|
116
34
|
};
|
|
117
35
|
}
|
|
118
36
|
|
|
119
|
-
/**
|
|
120
|
-
* 从 storage 获取用户信息(优先从 sessionStorage,其次从 localStorage)
|
|
121
|
-
*/
|
|
122
|
-
function getUserInfoFromStorage() {
|
|
123
|
-
try {
|
|
124
|
-
var _userStores$state;
|
|
125
|
-
if (typeof window === 'undefined') {
|
|
126
|
-
return {};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// 优先从 sessionStorage 读取,如果没有则从 localStorage 读取
|
|
130
|
-
var userStoresStr = null;
|
|
131
|
-
if (window.sessionStorage) {
|
|
132
|
-
userStoresStr = window.sessionStorage.getItem('userStores');
|
|
133
|
-
}
|
|
134
|
-
if (!userStoresStr && window.localStorage) {
|
|
135
|
-
userStoresStr = window.localStorage.getItem('userStores');
|
|
136
|
-
}
|
|
137
|
-
if (!userStoresStr) {
|
|
138
|
-
return {};
|
|
139
|
-
}
|
|
140
|
-
var userStores = JSON.parse(userStoresStr);
|
|
141
|
-
var userInfo = userStores === null || userStores === void 0 || (_userStores$state = userStores.state) === null || _userStores$state === void 0 ? void 0 : _userStores$state.userInfo;
|
|
142
|
-
if (!userInfo) {
|
|
143
|
-
return {};
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
userId: userInfo.userId || '',
|
|
147
|
-
userName: userInfo.userName || '',
|
|
148
|
-
realName: userInfo.realName || ''
|
|
149
|
-
};
|
|
150
|
-
} catch (e) {
|
|
151
|
-
console.warn('Failed to get user info from storage:', e);
|
|
152
|
-
return {};
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* 从 storage 获取 contextParams(优先从 sessionStorage,其次从 localStorage)
|
|
158
|
-
*/
|
|
159
|
-
function getContextParamsFromStorage() {
|
|
160
|
-
try {
|
|
161
|
-
if (typeof window === 'undefined') {
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// 优先从 sessionStorage 读取,如果没有则从 localStorage 读取
|
|
166
|
-
var contextParamsStr = null;
|
|
167
|
-
if (window.sessionStorage) {
|
|
168
|
-
contextParamsStr = window.sessionStorage.getItem('contextParams');
|
|
169
|
-
}
|
|
170
|
-
if (!contextParamsStr && window.localStorage) {
|
|
171
|
-
contextParamsStr = window.localStorage.getItem('contextParams');
|
|
172
|
-
}
|
|
173
|
-
if (!contextParamsStr) {
|
|
174
|
-
return null;
|
|
175
|
-
}
|
|
176
|
-
return JSON.parse(contextParamsStr) || null;
|
|
177
|
-
} catch (e) {
|
|
178
|
-
console.warn('Failed to get contextParams from storage:', e);
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* 从 storage 获取缓存的客户端 IP
|
|
185
|
-
*/
|
|
186
|
-
function getClientIpFromStorage() {
|
|
187
|
-
try {
|
|
188
|
-
if (typeof window === 'undefined') {
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
// 优先从 sessionStorage 读取,如果没有则从 localStorage 读取
|
|
193
|
-
var cachedIp = null;
|
|
194
|
-
if (window.sessionStorage) {
|
|
195
|
-
cachedIp = window.sessionStorage.getItem('clientIp');
|
|
196
|
-
}
|
|
197
|
-
if (!cachedIp && window.localStorage) {
|
|
198
|
-
cachedIp = window.localStorage.getItem('clientIp');
|
|
199
|
-
}
|
|
200
|
-
return cachedIp;
|
|
201
|
-
} catch (e) {
|
|
202
|
-
console.warn('Failed to get client IP from storage:', e);
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* 缓存客户端 IP 到 storage
|
|
209
|
-
*/
|
|
210
|
-
function setClientIpToStorage(ip) {
|
|
211
|
-
try {
|
|
212
|
-
if (typeof window === 'undefined') {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
// 优先保存到 sessionStorage,同时保存到 localStorage 作为备份
|
|
217
|
-
if (window.sessionStorage) {
|
|
218
|
-
window.sessionStorage.setItem('clientIp', ip);
|
|
219
|
-
}
|
|
220
|
-
if (window.localStorage) {
|
|
221
|
-
window.localStorage.setItem('clientIp', ip);
|
|
222
|
-
}
|
|
223
|
-
} catch (e) {
|
|
224
|
-
console.warn('Failed to save client IP to storage:', e);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* 异步获取客户端 IP(通过第三方 API)
|
|
230
|
-
* @returns Promise<string> 返回客户端 IP 地址
|
|
231
|
-
*/
|
|
232
|
-
export function fetchClientIp() {
|
|
233
|
-
return _fetchClientIp.apply(this, arguments);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* 获取客户端 IP(同步方法,从缓存读取)
|
|
238
|
-
* @returns string 返回客户端 IP 地址,如果缓存中没有则返回默认值 '127.0.0.1'
|
|
239
|
-
*/
|
|
240
|
-
function _fetchClientIp() {
|
|
241
|
-
_fetchClientIp = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
242
|
-
var cachedIp, ipServices, _i, _ipServices, serviceUrl, response, ip, contentType, data, defaultIp;
|
|
243
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
244
|
-
while (1) switch (_context.prev = _context.next) {
|
|
245
|
-
case 0:
|
|
246
|
-
// 先检查缓存
|
|
247
|
-
cachedIp = getClientIpFromStorage();
|
|
248
|
-
if (!cachedIp) {
|
|
249
|
-
_context.next = 3;
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
return _context.abrupt("return", cachedIp);
|
|
253
|
-
case 3:
|
|
254
|
-
// 尝试多个 IP 查询服务(按优先级)
|
|
255
|
-
ipServices = ['https://api.ipify.org?format=json', 'https://api.ip.sb/ip', 'https://api.ipify.org'];
|
|
256
|
-
_i = 0, _ipServices = ipServices;
|
|
257
|
-
case 5:
|
|
258
|
-
if (!(_i < _ipServices.length)) {
|
|
259
|
-
_context.next = 34;
|
|
260
|
-
break;
|
|
261
|
-
}
|
|
262
|
-
serviceUrl = _ipServices[_i];
|
|
263
|
-
_context.prev = 7;
|
|
264
|
-
_context.next = 10;
|
|
265
|
-
return fetch(serviceUrl, {
|
|
266
|
-
method: 'GET',
|
|
267
|
-
headers: {
|
|
268
|
-
Accept: 'application/json'
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
case 10:
|
|
272
|
-
response = _context.sent;
|
|
273
|
-
if (!response.ok) {
|
|
274
|
-
_context.next = 27;
|
|
275
|
-
break;
|
|
276
|
-
}
|
|
277
|
-
ip = void 0;
|
|
278
|
-
contentType = response.headers.get('content-type');
|
|
279
|
-
if (!(contentType && contentType.includes('application/json'))) {
|
|
280
|
-
_context.next = 21;
|
|
281
|
-
break;
|
|
282
|
-
}
|
|
283
|
-
_context.next = 17;
|
|
284
|
-
return response.json();
|
|
285
|
-
case 17:
|
|
286
|
-
data = _context.sent;
|
|
287
|
-
ip = data.ip || data.query || data.origin || '';
|
|
288
|
-
_context.next = 24;
|
|
289
|
-
break;
|
|
290
|
-
case 21:
|
|
291
|
-
_context.next = 23;
|
|
292
|
-
return response.text();
|
|
293
|
-
case 23:
|
|
294
|
-
ip = _context.sent.trim();
|
|
295
|
-
case 24:
|
|
296
|
-
if (!(ip && /^(\d{1,3}\.){3}\d{1,3}$/.test(ip))) {
|
|
297
|
-
_context.next = 27;
|
|
298
|
-
break;
|
|
299
|
-
}
|
|
300
|
-
// 缓存 IP
|
|
301
|
-
setClientIpToStorage(ip);
|
|
302
|
-
return _context.abrupt("return", ip);
|
|
303
|
-
case 27:
|
|
304
|
-
_context.next = 31;
|
|
305
|
-
break;
|
|
306
|
-
case 29:
|
|
307
|
-
_context.prev = 29;
|
|
308
|
-
_context.t0 = _context["catch"](7);
|
|
309
|
-
case 31:
|
|
310
|
-
_i++;
|
|
311
|
-
_context.next = 5;
|
|
312
|
-
break;
|
|
313
|
-
case 34:
|
|
314
|
-
// 所有服务都失败,返回默认值
|
|
315
|
-
defaultIp = '127.0.0.1';
|
|
316
|
-
console.warn('Failed to fetch client IP, using default:', defaultIp);
|
|
317
|
-
return _context.abrupt("return", defaultIp);
|
|
318
|
-
case 37:
|
|
319
|
-
case "end":
|
|
320
|
-
return _context.stop();
|
|
321
|
-
}
|
|
322
|
-
}, _callee, null, [[7, 29]]);
|
|
323
|
-
}));
|
|
324
|
-
return _fetchClientIp.apply(this, arguments);
|
|
325
|
-
}
|
|
326
|
-
export function getClientIp() {
|
|
327
|
-
var cachedIp = getClientIpFromStorage();
|
|
328
|
-
if (cachedIp) {
|
|
329
|
-
return cachedIp;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// 如果没有缓存,尝试异步获取(不阻塞当前调用)
|
|
333
|
-
// 下次调用时会使用缓存的 IP
|
|
334
|
-
if (typeof window !== 'undefined') {
|
|
335
|
-
fetchClientIp().catch(function () {
|
|
336
|
-
// 静默失败,不影响当前调用
|
|
337
|
-
});
|
|
338
|
-
}
|
|
339
|
-
return '127.0.0.1';
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
/**
|
|
343
|
-
* 解析 content 中的所有变量并替换为真实值
|
|
344
|
-
* @param content 原始内容,可能包含变量如 ${system.now}、${session.userId}、${contextParams.userName} 等
|
|
345
|
-
*/
|
|
346
|
-
export function parseContentVariables(content) {
|
|
347
|
-
// 匹配所有变量:${system.xxx}、${session.xxx} 或 ${contextParams.xxx}
|
|
348
|
-
var variableRegex = /\$\{(system|session|contextParams)\.(\w+)\}/g;
|
|
349
|
-
|
|
350
|
-
// 缓存 storage 读取结果,避免在解析多个变量时重复读取
|
|
351
|
-
var cachedSessionInfo = null;
|
|
352
|
-
var cachedContextParams = null;
|
|
353
|
-
var contextParamsRead = false; // 标记是否已读取 contextParams
|
|
354
|
-
|
|
355
|
-
return content.replace(variableRegex, function (match, type, key) {
|
|
356
|
-
var variableKey = "${".concat(type, ".").concat(key, "}");
|
|
357
|
-
|
|
358
|
-
// 对于需要 storage 数据的变量类型,使用缓存
|
|
359
|
-
if (type === 'session' && cachedSessionInfo === null) {
|
|
360
|
-
cachedSessionInfo = getUserInfoFromStorage();
|
|
361
|
-
}
|
|
362
|
-
if (type === 'contextParams' && !contextParamsRead) {
|
|
363
|
-
cachedContextParams = getContextParamsFromStorage();
|
|
364
|
-
contextParamsRead = true;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
// 如果变量需要 session 或 contextParams,使用缓存的版本
|
|
368
|
-
if (type === 'session' || type === 'contextParams') {
|
|
369
|
-
return getVariableRealValueWithCache(variableKey, cachedSessionInfo, cachedContextParams);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
// 其他类型(system)直接调用
|
|
373
|
-
return getVariableRealValue(variableKey);
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
/**
|
|
378
|
-
* 带缓存的变量值获取(内部使用)
|
|
379
|
-
*/
|
|
380
|
-
function getVariableRealValueWithCache(key, sessionInfo, contextParams) {
|
|
381
|
-
// 获取客户端 IP(从缓存读取,如果没有则返回默认值)
|
|
382
|
-
var clientIp = getClientIp();
|
|
383
|
-
var now = new Date();
|
|
384
|
-
|
|
385
|
-
// 处理 ${system.xxx} 格式
|
|
386
|
-
var systemMatch = key.match(/^\$\{system\.(\w+)\}$/);
|
|
387
|
-
if (systemMatch) {
|
|
388
|
-
var systemKey = systemMatch[1];
|
|
389
|
-
switch (systemKey) {
|
|
390
|
-
case 'now':
|
|
391
|
-
{
|
|
392
|
-
var year = now.getFullYear();
|
|
393
|
-
var month = String(now.getMonth() + 1).padStart(2, '0');
|
|
394
|
-
var day = String(now.getDate()).padStart(2, '0');
|
|
395
|
-
var hours = String(now.getHours()).padStart(2, '0');
|
|
396
|
-
var minutes = String(now.getMinutes()).padStart(2, '0');
|
|
397
|
-
var seconds = String(now.getSeconds()).padStart(2, '0');
|
|
398
|
-
return "".concat(year, "-").concat(month, "-").concat(day, " ").concat(hours, ":").concat(minutes, ":").concat(seconds);
|
|
399
|
-
}
|
|
400
|
-
case 'today':
|
|
401
|
-
{
|
|
402
|
-
var _year2 = now.getFullYear();
|
|
403
|
-
var _month2 = String(now.getMonth() + 1).padStart(2, '0');
|
|
404
|
-
var _day2 = String(now.getDate()).padStart(2, '0');
|
|
405
|
-
return "".concat(_year2, "-").concat(_month2, "-").concat(_day2);
|
|
406
|
-
}
|
|
407
|
-
case 'ip':
|
|
408
|
-
return clientIp;
|
|
409
|
-
default:
|
|
410
|
-
return '';
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
// 处理 ${session.xxx} 格式
|
|
415
|
-
var sessionMatch = key.match(/^\$\{session\.(\w+)\}$/);
|
|
416
|
-
if (sessionMatch) {
|
|
417
|
-
var sessionKey = sessionMatch[1];
|
|
418
|
-
if (sessionInfo) {
|
|
419
|
-
switch (sessionKey) {
|
|
420
|
-
case 'userId':
|
|
421
|
-
return sessionInfo.userId || '';
|
|
422
|
-
case 'userName':
|
|
423
|
-
return sessionInfo.userName || '';
|
|
424
|
-
case 'realName':
|
|
425
|
-
return sessionInfo.realName || '';
|
|
426
|
-
default:
|
|
427
|
-
return '';
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
return '';
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
// 处理 ${contextParams.xxx} 格式
|
|
434
|
-
var contextParamsMatch = key.match(/^\$\{contextParams\.(\w+)\}$/);
|
|
435
|
-
if (contextParamsMatch) {
|
|
436
|
-
var contextParamsKey = contextParamsMatch[1];
|
|
437
|
-
if (contextParams && _typeof(contextParams) === 'object') {
|
|
438
|
-
var value = contextParams[contextParamsKey];
|
|
439
|
-
return value != null ? String(value) : '';
|
|
440
|
-
}
|
|
441
|
-
return '';
|
|
442
|
-
}
|
|
443
|
-
return '';
|
|
444
|
-
}
|
|
445
|
-
|
|
446
37
|
/**
|
|
447
38
|
* 生成水印的 base64 数据 URL
|
|
448
39
|
* 当前环境localStore中存有数据 :key=userStores value={"state":{"userInfo":{"token":"16fe343c-78ae-4fd8-93eb-410256dd483b","userId":"1","userName":"admin","phoneNo":"13800138002","email":"admin@localhost.com","realName":"admin2","defaultTenantId":"0","avatar":"./images/avatar/img-user-avatar-10.png","userIcon":"./images/avatar/img-user-avatar-10.png"},"currentTenantId":"1273556018761138176","userSelectedBotOrder":["1211941633166168064","1212229286675095552"],"activeSession":null},"version":0}
|