isdata-customer-sdk 0.2.74 → 0.2.76

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../../node_modules/querystringify/index.js","../../src/api/request.js","../../src/api/utils.js"],"sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n var parser = /([^=?#&]+)=?([^&]*)/g\n , result = {}\n , part;\n\n while (part = parser.exec(query)) {\n var key = decode(part[1])\n , value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n prefix = prefix || '';\n\n var pairs = []\n , value\n , key;\n\n //\n // Optionally prefix with a '?' if needed\n //\n if ('string' !== typeof prefix) prefix = '?';\n\n for (key in obj) {\n if (has.call(obj, key)) {\n value = obj[key];\n\n //\n // Edge cases where we actually want to encode the value to an empty\n // string instead of the stringified value.\n //\n if (!value && (value === null || value === undef || isNaN(value))) {\n value = '';\n }\n\n key = encode(key);\n value = encode(value);\n\n //\n // If we failed to encode the strings, we should bail out as we don't\n // want to add invalid strings to the query.\n //\n if (key === null || value === null) continue;\n pairs.push(key +'='+ value);\n }\n }\n\n return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","import axios from \"axios\"\r\nimport qs from \"querystringify\"\r\n\r\nlet apiContextPath = \"\"\r\n// const onlineDevelopmentMode = process.env.VUE_APP_ONLINE_DEVELOPMENT_MODE === \"true\" || process.env.REACT_APP_ONLINE_DEVELOPMENT_MODE === \"true\"\r\n// if (process.env.NODE_ENV === \"development\" && !onlineDevelopmentMode) {\r\n// document.cookie =\r\n// \"token=eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVzdGFtcCI6MTY0NjcyMjI2ODY4NSwidXNlcklkIjoiMTIzNDU2Nzg5MCJ9.F8wr84ha-dW18J9wZOQeTXj55mXTdqKfLBeNlNueoLY\"\r\n// document.cookie =\r\n// \"refreshToken=eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVzdGFtcCI6MTY0NjcyMjI2ODY4Nn0.TEVE_nopHNZlvSQM_RUZrLcCzkaERiHo8nz0q-ksL3E\"\r\n// document.cookie = \"username=admin\"\r\n// document.cookie = \"windowOnline=true\"\r\n// apiContextPath = \"/api\"\r\n// }\r\nexport const getInstance = (prefix = \"\") => {\r\n if (prefix) {\r\n prefix.startsWith(\"/\") && (prefix = prefix.slice(1, prefix.length))\r\n prefix.endsWith(\"/\") && (prefix = prefix.slice(0, -1))\r\n }\r\n const instance = axios.create({\r\n baseURL: `${apiContextPath}/${prefix ? prefix + \"/\" : \"\"}sdata/rest`,\r\n timeout: 60000,\r\n validateStatus: function(status) {\r\n return status >= 200 && status < 300 // default\r\n },\r\n headers:\r\n (window.location.search && qs.parse(window.location.search).token) ||\r\n window.token\r\n ? { token: qs.parse(window.location.search).token || window.token }\r\n : {}\r\n })\r\n\r\n let oldPost = instance.post;\r\n\r\n instance.post = (url, data, config)=> {\r\n let prefix =window.VITE_SERVICE_BASE_URL || \"\";\r\n if (prefix) {\r\n let newUrl = prefix + url;\r\n return oldPost.call(instance, newUrl, data, config);\r\n }\r\n return oldPost.call(instance, url, data, config);\r\n };\r\n\r\n instance.defaults.headers.post[\"Content-Type\"] = \"application/json\"\r\n\r\n instance.interceptors.response.use(\r\n response => {\r\n let { data } = response\r\n if (typeof data === \"string\") {\r\n data = JSON.parse(data)\r\n }\r\n if (data && data.status !== 200 && !(data instanceof Blob)) {\r\n return Promise.reject(response)\r\n }\r\n if (data instanceof Blob) {\r\n response.data = data\r\n return response\r\n }\r\n\r\n response.data = data && data.result\r\n return response\r\n },\r\n error => {\r\n if (error.response && error.response.status === 401) {\r\n return\r\n }\r\n\r\n return Promise.reject(error.response)\r\n }\r\n )\r\n return instance\r\n}\r\nlet prefixPath = window.prefixPath || \"\"\r\n\r\nexport default getInstance(prefixPath)\r\n","import request from \"./request\";\r\n\r\n/**\r\n * 查询资产\r\n * @param id 资产ID\r\n *\r\n */\r\nexport const queryAssetById = (id, count = 200) =>\r\n request.post(`/asset/getAssetData?asset_id=${id}&count=${count}`, {\r\n filters: [],\r\n });\r\n\r\n/**\r\n * 获取URL参数值\r\n * @param {} eventName\r\n * @param {*} actionFun\r\n */\r\nexport const getUrlParamValue = (urlStr, paramName) => {\r\n try {\r\n const url = new URL(urlStr);\r\n const value = url.searchParams.get(paramName);\r\n // 如果参数值包含#,则只返回#之前的部分\r\n if (value && value.indexOf(\"#\") !== -1) {\r\n return value.split(\"#\")[0];\r\n }\r\n return value;\r\n } catch (err) {\r\n console.error(\"URL 格式错误:\", err);\r\n return \"\";\r\n }\r\n};\r\n\r\n/**\r\n * 通过 URL 创建 File 对象\r\n * @param {string} url - 文件的网络 URL\r\n * @param {string} [filename] - 自定义文件名(可选,不传则从 URL 提取)\r\n * @returns {Promise<File>} - 返回 Promise 解析为 File 对象\r\n */\r\nexport const createFileFromUrl = async (url, filename) => {\r\n try {\r\n // 1. 发起网络请求获取文件\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(\r\n `网络请求失败: ${response.status} ${response.statusText}`\r\n );\r\n }\r\n\r\n // 2. 将响应转换为 Blob(保留原始 MIME 类型)\r\n const blob = await response.blob();\r\n\r\n // 3. 确定文件名(若未自定义则从 URL 提取)\r\n const finalFilename = filename || extractFilenameFromUrl(url);\r\n\r\n // 4. 构造 File 对象(Blob + 文件名 + 类型)\r\n return new File([blob], finalFilename, {\r\n type: blob.type, // 使用 Blob 的 MIME 类型(如 image/png)\r\n lastModified: Date.now(), // 可选:设置最后修改时间\r\n });\r\n } catch (error) {\r\n console.error(\"创建 File 失败:\", error);\r\n throw error;\r\n }\r\n};\r\n\r\n/**\r\n * 从 URL 中提取文件名(如 https://example.com/path/image.png → image.png)\r\n * @param {string} url - 文件 URL\r\n * @returns {string} - 提取的文件名\r\n */\r\nexport const extractFilenameFromUrl = (url) => {\r\n try {\r\n const urlObj = new URL(url);\r\n // 从路径中获取最后一个部分(文件名)\r\n return urlObj.pathname.split(\"/\").pop() || \"downloaded_file\";\r\n } catch (e) {\r\n return \"downloaded_file\"; // URL 解析失败时的默认文件名\r\n }\r\n};\r\n\r\n/**\r\n * 提取数组中不在另一个数组中的元素\r\n * @param {*} oldItems 基础比较数组\r\n * @param {*} newItems 被提取检测的数组\r\n * @returns\r\n */\r\nexport const extractNewItems = (oldItems, newItems) => {\r\n return oldItems.filter((item) => !newItems.includes(item));\r\n};\r\n\r\n/**\r\n * 获取远程文件大小(单位:字节)\r\n * @param {string} url - 文件的URL地址\r\n * @returns {Promise<number>} 文件大小(字节),失败时返回-1\r\n */\r\nexport const getFileSize = async (url) => {\r\n try {\r\n // 发送HEAD请求(不下载文件内容)\r\n const response = await fetch(url, {\r\n method: \"GET\",\r\n headers: { Range: \"bytes=0-0\" }, // 仅请求第 1 个字节\r\n });\r\n if (response.status !== 206) throw new Error(\"不支持 Range 请求\");\r\n const contentRange = response.headers.get(\"Content-Range\");\r\n const totalSize = contentRange?.match(/\\/(\\d+)$/)?.[1]; // 解析总大小(如 \"bytes 0-0/1000\" → 1000)\r\n return totalSize ? parseInt(totalSize, 10) : -1;\r\n } catch (error) {\r\n console.error(\"获取文件大小失败:\", error);\r\n return -1; // 返回-1表示失败\r\n }\r\n};\r\n// 获取i18n key\r\nexport const getI18nKey = (text) => {\r\n // 正则表达式匹配 $L{...} 格式\r\n const regex = /\\$L\\{([^}]+)\\}/g;\r\n let match = regex.exec(text);\r\n if (!match) return text;\r\n let key = match[1];\r\n return key;\r\n};\r\n\r\n// 查找最近的具有指定 class 的祖先节点\r\nexport const findClosestAncestorByClass = (element, className) => {\r\n let currentElement = element;\r\n while (currentElement) {\r\n // 检查当前元素是否包含目标 class\r\n if (\r\n currentElement.classList &&\r\n currentElement.classList.contains(className)\r\n ) {\r\n return currentElement;\r\n }\r\n // 向上遍历父节点\r\n currentElement = currentElement.parentElement;\r\n }\r\n // 未找到匹配的祖先节点\r\n return null;\r\n};\r\n\r\nexport const hasUrlParams=(url)=> {\r\n try {\r\n // 浏览器环境\r\n const urlObj = new URL(url, window.location.href);\r\n return urlObj.search.length > 0;\r\n } catch (e) {\r\n // Node.js 环境\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * 获取客户端IP\r\n * @returns \r\n */\r\nexport const getClientIp = async() => {\r\n let serverIP = `/ext/getClientIp`;\r\n //\r\n let resultData = await request.post(serverIP);\r\n let ipAddress = resultData?.data?.clientIp;\r\n return ipAddress\r\n}\r\n\r\n/**\r\n * 通用服务方法调用\r\n * @returns \r\n */\r\nexport const doRestPost = async(url,param) => {\r\n let resultData = await request.post(url, param);\r\n return resultData\r\n}\r\n"],"names":["querystringify_1","apiContextPath","getInstance","prefix","startsWith","slice","length","endsWith","instance","axios","create","baseURL","timeout","validateStatus","status","headers","window","location","search","qs","parse","token","oldPost","post","url","data","config","VITE_SERVICE_BASE_URL","newUrl","call","defaults","interceptors","response","use","JSON","Blob","Promise","reject","result","error","prefixPath","queryAssetById","id","count","request","filters","getUrlParamValue","urlStr","paramName","URL","value","searchParams","get","indexOf","split","err","console","createFileFromUrl","filename","fetch","ok","Error","statusText","blob","finalFilename","extractFilenameFromUrl","File","type","lastModified","Date","now","urlObj","pathname","pop","e","extractNewItems","oldItems","newItems","filter","item","includes","getFileSize","method","Range","contentRange","totalSize","match","parseInt","getI18nKey","text","regex","exec","key","findClosestAncestorByClass","element","className","currentElement","classList","contains","parentElement","hasUrlParams","href","getClientIp","serverIP","resultData","ipAddress","clientIp","doRestPost","param"],"mappings":"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","x_google_ignoreList":[0]}