"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateRandomString = exports.convertObjectToKeyValueList = exports.convertKeyValueListToObject = exports.uploadFile = exports.xhrUpload = exports.generateUidKey = exports.formatAuthorizedResources = exports.isWechatBrowser = exports.convertUdvToKeyValuePair = exports.convertUdv = exports.objectToQueryString = exports.serialize = exports.createCssClassStyleSheet = exports.popupCenter = exports.deepEqual = exports.encrypt = void 0; var graphql_v2_1 = require("../types/graphql.v2"); // import { JSEncrypt } from 'jsencrypt'; // 兼容 JSEncrypt if (typeof window === 'undefined' && global) { // @ts-ignore global.window = {}; } var JSEncrypt = require('jsencrypt/bin/jsencrypt'); exports.encrypt = function (plainText, publicKey) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { return [2 /*return*/, new Promise(function (resolve, reject) { var jsencrypt = new JSEncrypt({}); jsencrypt.setPublicKey(publicKey); // 设置公钥 var encrypted = jsencrypt.encrypt(plainText); if (encrypted) { resolve(encrypted); } else { reject(encrypted); } })]; }); }); }; function buildTree(nodes) { /* nodes structure [ {"id": "1", "children": ["2"], "root": true}, {"id": "2", "children": ["3", "4"], "root": false}, {"id": "3", "children": [], "root": false}, {"id": "4", "children": [], "root": false}, ] 转换成 -> { id: 1, children: [ { id: 2, children: [ { id: 3, children: [] }, { id: 4, children: [] } ] } ] } */ var rootNodes = [nodes.find(function (x) { return x.root === true; })]; var mapChildren = function (childId) { var node = nodes.find(function (x) { return x.id === childId; }) || null; if (Array.isArray(node.children) && node.children.length > 0) { node.children = node.children .map(mapChildren) .filter(function (node) { return node !== null; }); } return node; }; var tree = rootNodes.map(function (node) { node.children = node.children .map(mapChildren) .filter(function (node) { return node !== null; }); return node; }); return tree[0]; } exports.default = buildTree; exports.deepEqual = function (x, y) { if (x === y) { return true; } else if (typeof x == 'object' && x != null && typeof y == 'object' && y != null) { if (Object.keys(x).length != Object.keys(y).length) return false; for (var prop in x) { if (y.hasOwnProperty(prop)) { if (!exports.deepEqual(x[prop], y[prop])) return false; } else return false; } return true; } else return false; }; exports.popupCenter = function (url, _a) { var _b = _a === void 0 ? { w: 585, h: 649 } : _a, w = _b.w, h = _b.h; // Fixes dual-screen position Most browsers Firefox var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX; var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY; var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : window.screen.width; var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : window.screen.height; var systemZoom = width / window.screen.availWidth; var left = (width - w) / 2 / systemZoom + dualScreenLeft; var top = (height - h) / 2 / systemZoom + dualScreenTop; var newWindow = window.open(url, '_blank', "\n toolbar=no,\n menubar=no,\n scrollbars=no,\n resizable=no,\n location=no,\n status=no\n width=" + w / systemZoom + ",\n height=" + h / systemZoom + ",\n top=" + top + ",\n left=" + left + "\n "); newWindow === null || newWindow === void 0 ? void 0 : newWindow.focus(); }; exports.createCssClassStyleSheet = function (className, styleSheet) { var styleTag = document.createElement('style'); var styleText = "\n ." + className + " {\n " + styleSheet + "\n }\n "; var textNode = document.createTextNode(styleText); styleTag.appendChild(textNode); document.head.appendChild(styleTag); }; exports.serialize = function (obj) { var str = []; for (var p in obj) if (obj.hasOwnProperty(p)) { str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p])); } return str.join('&'); }; exports.objectToQueryString = function (queryParameters) { return queryParameters ? Object.entries(queryParameters).reduce(function (queryString, _a) { var key = _a[0], val = _a[1]; var symbol = queryString.length === 0 ? '?' : '&'; queryString += typeof val === 'string' ? "" + symbol + key + "=" + val : ''; return queryString; }, '') : ''; }; exports.convertUdv = function (data) { for (var _i = 0, data_1 = data; _i < data_1.length; _i++) { var item = data_1[_i]; var dataType = item.dataType, value = item.value; if (dataType === graphql_v2_1.UdfDataType.Number) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Boolean) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Datetime) { item.value = new Date(parseInt(value)); } else if (dataType === graphql_v2_1.UdfDataType.Object) { item.value = JSON.parse(value); } } return data; }; exports.convertUdvToKeyValuePair = function (data) { for (var _i = 0, data_2 = data; _i < data_2.length; _i++) { var item = data_2[_i]; var dataType = item.dataType, value = item.value; if (dataType === graphql_v2_1.UdfDataType.Number) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Boolean) { item.value = JSON.parse(value); } else if (dataType === graphql_v2_1.UdfDataType.Datetime) { item.value = new Date(parseInt(value)); } else if (dataType === graphql_v2_1.UdfDataType.Object) { item.value = JSON.parse(value); } } var ret = {}; for (var _a = 0, data_3 = data; _a < data_3.length; _a++) { var item = data_3[_a]; ret[item.key] = item.value; } return ret; }; exports.isWechatBrowser = function () { return /MicroMessenger/i.test(navigator === null || navigator === void 0 ? void 0 : navigator.userAgent); }; exports.formatAuthorizedResources = function (resources) { return resources.map(function (resource) { for (var key in resource) { if (!resource[key]) { delete resource[key]; } } return resource; }); }; function generateUidKey(number) { var map = []; for (var i = 97; i < 123; i++) { map.push(String.fromCharCode(i)); } var arr = []; while (number--) { var rand = Math.floor(Math.random() * 16); arr.push(map[rand]); } return arr.join(''); } exports.generateUidKey = generateUidKey; exports.xhrUpload = function (file, url) { return new Promise(function (resolve, reject) { var formData = new FormData(); formData.append('file', file, file instanceof Blob ? 'personal.jpeg' : undefined); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { // 上传成功 if (this.readyState === 4) { try { var res = JSON.parse(this.responseText); var code = res.code, message = res.message, data = res.data; if (code !== 200) { reject({ code: code, message: message }); } resolve(data); } catch (error) { var code = 500; var message = "\u4E0A\u4F20\u56FE\u7247\u5931\u8D25, error = " + error.message; reject({ code: code, message: message }); } } }; xhr.open('POST', url); xhr.send(formData); }); }; function uploadFile(opts) { var url = opts.url, accept = opts.accept, multiple = opts.multiple; return new Promise(function (resolve, reject) { var inputElem = document.createElement('input'); inputElem.type = 'file'; inputElem.accept = accept; inputElem.multiple = multiple; inputElem.onchange = function () { var files = inputElem.files; if (!multiple) { var file = files[0]; exports.xhrUpload(file, url) .then(function (res) { return resolve(res); }) .catch(function (error) { return reject(error); }); } else { var promises = []; var i = 0; while (i < files.length) { promises.push(exports.xhrUpload(files[i], url)); i++; } Promise.all(promises) .then(function (res) { return resolve(res); }) .catch(function (error) { return reject(error); }); } }; inputElem.click(); }); } exports.uploadFile = uploadFile; exports.convertKeyValueListToObject = function (data) { var ret = {}; for (var _i = 0, data_4 = data; _i < data_4.length; _i++) { var _a = data_4[_i], key = _a.key, value = _a.value; ret[key] = value; } return ret; }; exports.convertObjectToKeyValueList = function (data) { var ret = []; for (var _i = 0, _a = Object.keys(data); _i < _a.length; _i++) { var key = _a[_i]; ret.push({ key: key, value: data[key] }); } return ret; }; function generateRandomString(length) { if (length === void 0) { length = 30; } var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for (var i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } exports.generateRandomString = generateRandomString; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGtEQUFrRDtBQUNsRCx5Q0FBeUM7QUFFekMsZUFBZTtBQUNmLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sRUFBRTtJQUMzQyxhQUFhO0lBQ2IsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Q0FDcEI7QUFDRCxJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUV4QyxRQUFBLE9BQU8sR0FBRyxVQUFPLFNBQWlCLEVBQUUsU0FBaUI7O1FBQ2hFLHNCQUFPLElBQUksT0FBTyxDQUFTLFVBQUMsT0FBTyxFQUFFLE1BQU07Z0JBQ3pDLElBQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQyxTQUFTLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFFMUMsSUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNwQjtxQkFBTTtvQkFDTCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ25CO1lBQ0gsQ0FBQyxDQUFDLEVBQUM7O0tBZ0JKLENBQUM7QUFFRixTQUF3QixTQUFTLENBQUMsS0FBWTtJQUM1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BMkJFO0lBRUYsSUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQWYsQ0FBZSxDQUFDLENBQUMsQ0FBQztJQUNy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