From abd1134bc4d10c7eba338b1cae0441eedf0a9bde Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 10 Mar 2022 21:00:11 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=97=A0JIRA=20=5F=5Fdestory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/fix/fix.compact.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/fix/fix.compact.js b/dist/fix/fix.compact.js index 88148367c..87d22bd83 100644 --- a/dist/fix/fix.compact.js +++ b/dist/fix/fix.compact.js @@ -150,8 +150,8 @@ } }; - var unMount = BI.Widget.prototype.__d; - BI.Widget.prototype.__d = function () { + var unMount = BI.Widget.prototype.__destroy; + BI.Widget.prototype.__destroy = function () { try { unMount.apply(this, arguments); } catch (e) { From 28cbd09b3a082be742b97735af86e630fab3f6d3 Mon Sep 17 00:00:00 2001 From: zsmj Date: Thu, 10 Mar 2022 11:26:36 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=97=A0JIRA=20chore:=20=E5=8E=BB=E6=8E=89?= =?UTF-8?q?IE8=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 057366ff939577cbf6abbee1ff702b78dd2b4879) --- babel.config.ie8.js | 1 - src/data/pool/pool.buffer.js | 22 ------ src/data/pool/pool.sharing.js | 31 -------- src/data/req/req.js | 3 - src/polyfill/array.js | 96 ----------------------- src/polyfill/localStorage.js | 21 ----- src/polyfill/lodash.js | 51 ------------ src/polyfill/number.js | 142 ---------------------------------- src/polyfill/set.js | 16 ---- 9 files changed, 383 deletions(-) delete mode 100644 babel.config.ie8.js delete mode 100644 src/data/pool/pool.buffer.js delete mode 100644 src/data/pool/pool.sharing.js delete mode 100644 src/data/req/req.js delete mode 100644 src/polyfill/array.js delete mode 100644 src/polyfill/localStorage.js delete mode 100644 src/polyfill/lodash.js delete mode 100644 src/polyfill/number.js delete mode 100644 src/polyfill/set.js diff --git a/babel.config.ie8.js b/babel.config.ie8.js deleted file mode 100644 index 6cf5fffe7..000000000 --- a/babel.config.ie8.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@fui/babel-preset-fineui').configs.ie8; diff --git a/src/data/pool/pool.buffer.js b/src/data/pool/pool.buffer.js deleted file mode 100644 index 9e85ba6f6..000000000 --- a/src/data/pool/pool.buffer.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * 缓冲池 - * @type {{Buffer: {}}} - */ - -(function () { - var Buffer = {}; - var MODE = false;// 设置缓存模式为关闭 - - BI.BufferPool = { - put: function (name, cache) { - if (BI.isNotNull(Buffer[name])) { - throw new Error("key值:[" + name + "] 已存在!", Buffer); - } - Buffer[name] = cache; - }, - - get: function (name) { - return Buffer[name]; - } - }; -})(); diff --git a/src/data/pool/pool.sharing.js b/src/data/pool/pool.sharing.js deleted file mode 100644 index f13d487ed..000000000 --- a/src/data/pool/pool.sharing.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * 共享池 - * @type {{Shared: {}}} - */ - -(function () { - var _Shared = {}; - BI.SharingPool = { - _Shared: _Shared, - put: function (name, shared) { - _Shared[name] = shared; - }, - - cat: function () { - var args = Array.prototype.slice.call(arguments, 0), - copy = _Shared; - for (var i = 0; i < args.length; i++) { - copy = copy && copy[args[i]]; - } - return copy; - }, - - get: function () { - return BI.deepClone(this.cat.apply(this, arguments)); - }, - - remove: function (key) { - delete _Shared[key]; - } - }; -})(); \ No newline at end of file diff --git a/src/data/req/req.js b/src/data/req/req.js deleted file mode 100644 index 0d809eeb3..000000000 --- a/src/data/req/req.js +++ /dev/null @@ -1,3 +0,0 @@ -BI.Req = { - -}; diff --git a/src/polyfill/array.js b/src/polyfill/array.js deleted file mode 100644 index e3b248fc9..000000000 --- a/src/polyfill/array.js +++ /dev/null @@ -1,96 +0,0 @@ -// Production steps of ECMA-262, Edition 5, 15.4.4.14 -// Reference: http://es5.github.io/#x15.4.4.14 -if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function (searchElement, fromIndex) { - - var k; - - // 1. Let o be the result of calling ToObject passing - // the this value as the argument. - if (this == null) { - throw new TypeError("\"this\" is null or not defined"); - } - - var o = Object(this); - - // 2. Let lenValue be the result of calling the Get - // internal method of o with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = o.length >>> 0; - - // 4. If len is 0, return -1. - if (len === 0) { - return -1; - } - - // 5. If argument fromIndex was passed let n be - // ToInteger(fromIndex); else let n be 0. - var n = fromIndex | 0; - - // 6. If n >= len, return -1. - if (n >= len) { - return -1; - } - - // 7. If n >= 0, then Let k be n. - // 8. Else, n<0, Let k be len - abs(n). - // If k is less than 0, then let k be 0. - k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); - - // 9. Repeat, while k < len - while (k < len) { - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the - // HasProperty internal method of o with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - // i. Let elementK be the result of calling the Get - // internal method of o with the argument ToString(k). - // ii. Let same be the result of applying the - // Strict Equality Comparison Algorithm to - // searchElement and elementK. - // iii. If same is true, return k. - if (k in o && o[k] === searchElement) { - return k; - } - k++; - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf) { - Array.prototype.lastIndexOf = function (searchElement /* , fromIndex*/) { - "use strict"; - - if (this === void 0 || this === null) { - throw new TypeError(); - } - - var n, k, - t = Object(this), - len = t.length >>> 0; - if (len === 0) { - return -1; - } - - n = len - 1; - if (arguments.length > 1) { - n = Number(arguments[1]); - if (n != n) { - n = 0; - } else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - } - - for (k = n >= 0 - ? Math.min(n, len - 1) - : len - Math.abs(n); k >= 0; k--) { - if (k in t && t[k] === searchElement) { - return k; - } - } - return -1; - }; -} diff --git a/src/polyfill/localStorage.js b/src/polyfill/localStorage.js deleted file mode 100644 index c0521faf8..000000000 --- a/src/polyfill/localStorage.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - * 前端缓存 - */ -_global.localStorage || (_global.localStorage = { - items: {}, - setItem: function (k, v) { - BI.Cache.addCookie(k, v); - }, - getItem: function (k) { - return BI.Cache.getCookie(k); - }, - removeItem: function (k) { - BI.Cache.deleteCookie(k); - }, - key: function () { - - }, - clear: function () { - this.items = {}; - } -}); \ No newline at end of file diff --git a/src/polyfill/lodash.js b/src/polyfill/lodash.js deleted file mode 100644 index 88be39f0f..000000000 --- a/src/polyfill/lodash.js +++ /dev/null @@ -1,51 +0,0 @@ - -if (!Object.keys) { - Object.keys = function(o) { - if (o !== Object(o)) { - throw new TypeError('Object.keys called on a non-object'); - } - // fix的问题 - var falsy; - var skipArray = { - __ob__: falsy, - $accessors: falsy, - $vbthis: falsy, - $vbsetter: falsy - }; - var k = [], p; - for (p in o) { - if (!(p in skipArray)) { - if (Object.prototype.hasOwnProperty.call(o, p)) { - k.push(p); - } - } - } - return k; - }; -} - -if (!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -} - -/* 统一采用core-js的polyfill,此块暂去 -// https://stackoverflow.com/questions/10919915/ie8-getprototypeof-method -if (typeof Object.getPrototypeOf !== "function") { - Object.getPrototypeOf = "".__proto__ === String.prototype - ? function (object) { - return object.__proto__; - } - : function (object) { - // May break if the constructor has been tampered with - return object.constructor.prototype; - }; -} - */ - -if(!Date.now) { - Date.now = function () { - return new Date().valueOf(); - }; -} \ No newline at end of file diff --git a/src/polyfill/number.js b/src/polyfill/number.js deleted file mode 100644 index 436ec268d..000000000 --- a/src/polyfill/number.js +++ /dev/null @@ -1,142 +0,0 @@ -if (!Number.prototype.toFixed || (0.00008).toFixed(3) !== "0.000" || - (0.9).toFixed(0) === "0" || (1.255).toFixed(2) !== "1.25" || - (1000000000000000128).toFixed(0) !== "1000000000000000128") { - (function () { - var base, size, data, i; - base = 1e7; - size = 6; - data = [0, 0, 0, 0, 0, 0]; - function multiply (n, c) { - var i = -1; - while (++i < size) { - c += n * data[i]; - data[i] = c % base; - c = Math.floor(c / base); - } - } - - function divide (n) { - var i = size, c = 0; - while (--i >= 0) { - c += data[i]; - data[i] = Math.floor(c / n); - c = (c % n) * base; - } - } - - function toString () { - var i = size; - var s = ""; - while (--i >= 0) { - if (s !== "" || i === 0 || data[i] !== 0) { - var t = String(data[i]); - if (s === "") { - s = t; - } else { - s += "0000000".slice(0, 7 - t.length) + t; - } - } - } - return s; - } - - function pow (x, n, acc) { - return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) - : pow(x * x, n / 2, acc))); - } - - function log (x) { - var n = 0; - while (x >= 4096) { - n += 12; - x /= 4096; - } - while (x >= 2) { - n += 1; - x /= 2; - } - return n; - } - - Number.prototype.toFixed = function (fractionDigits) { - var f, x, s, m, e, z, j, k; - f = Number(fractionDigits); - f = f !== f ? 0 : Math.floor(f); - - if (f < 0 || f > 20) { - throw new RangeError("Number.toFixed called with invalid number of decimals"); - } - - x = Number(this); - - if (x !== x) { - return "NaN"; - } - - if (x <= -1e21 || x > 1e21) { - return String(x); - } - - s = ""; - - if (x < 0) { - s = "-"; - x = -x; - } - - m = "0"; - - if (x > 1e-21) { - // 1e-21 0) { - multiply(0, z); - j = f; - - while (j >= 7) { - multiply(1e7, 0); - j -= 7; - } - - multiply(pow(10, j, 1), 0); - j = e - 1; - - while (j >= 23) { - divide(1 << 23); - j -= 23; - } - divide(1 << j); - multiply(1, 1); - divide(2); - m = toString(); - } else { - multiply(0, z); - multiply(1 << (-e), 0); - m = toString() + "0.00000000000000000000".slice(2, 2 + f); - } - } - - if (f > 0) { - k = m.length; - - if (k <= f) { - m = s + "0.0000000000000000000".slice(0, f - k + 2) + m; - } else { - m = s + m.slice(0, k - f) + "." + m.slice(k - f); - } - } else { - m = s + m; - } - - return m; - }; - - })(); -} \ No newline at end of file diff --git a/src/polyfill/set.js b/src/polyfill/set.js deleted file mode 100644 index f8f895d17..000000000 --- a/src/polyfill/set.js +++ /dev/null @@ -1,16 +0,0 @@ -if (typeof Set !== "undefined" && Set.toString().match(/native code/)) { - -} else { - Set = function () { - this.set = {}; - }; - Set.prototype.has = function (key) { - return this.set[key] !== undefined; - }; - Set.prototype.add = function (key) { - this.set[key] = 1; - }; - Set.prototype.clear = function () { - this.set = {}; - }; -} \ No newline at end of file From a48a5cb0c065a7baa8dd23495be75ed8f7b4742b Mon Sep 17 00:00:00 2001 From: zsmj Date: Sun, 13 Mar 2022 16:59:35 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=97=A0JIRA=20chore:=20=E6=94=B9=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=E6=89=93=E5=8C=85.=20and=20babel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 5 +++-- webpack/attachments.js | 29 ++++++++++++----------------- webpack/components.js | 14 +++----------- webpack/utils.js | 24 ++++++++++++++++++++++++ webpack/webpack.common.js | 33 +++++++++------------------------ 5 files changed, 51 insertions(+), 54 deletions(-) create mode 100644 webpack/utils.js diff --git a/package.json b/package.json index 618aafde5..dff5e1f39 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "expose-loader": "0.7.5", "express": "4.15.2", "fork-ts-checker-webpack-plugin": "1.4.3", - "grunt": "1.0.1", + "glob": "^7.2.0", + "grunt": "^1.0.1", "html-webpack-plugin": "3.2.0", "husky": "^3.1.0", "karma": "3.1.4", @@ -81,4 +82,4 @@ }, "author": "fanruan", "license": "MIT" -} \ No newline at end of file +} diff --git a/webpack/attachments.js b/webpack/attachments.js index 3b92c2714..eefbe4b42 100644 --- a/webpack/attachments.js +++ b/webpack/attachments.js @@ -1,12 +1,4 @@ -const grunt = require("grunt"); - -function uniq(names) { - return [...new Set(names)]; -} - -function sync(patterns) { - return uniq(grunt.file.expand({ filter: path => !new RegExp(/__test__/g).test(path) }, patterns)).map(name => `./${name}`); -} +const { sync, uniq } = require("./utils"); const fixJs = "./dist/fix/fix.js"; const fixProxyJs = './dist/fix/fix.proxy.js'; @@ -47,11 +39,12 @@ const basicAttachmentMap = { lodashJs, "src/core/**/*.js", "src/data/**/*.js", - "!src/core/platform/**/*.js", - "!src/core/controller/**/*.js", + ], [ + "src/core/platform/**/*.js", + "src/core/controller/**/*.js", ]), core_without_normalize: sync( - ["src/less/core/**/*.less", "src/less/theme/**/*.less", "!src/less/core/normalize.less", "!src/less/core/normalize2.less"], + ["src/less/core/**/*.less", "src/less/theme/**/*.less"], ["src/less/core/normalize.less", "src/less/core/normalize2.less"] ), resource: sync(["src/less/resource/**/*.less"]), font: sync(["public/less/font.less"]), @@ -133,8 +126,9 @@ const bundleWithoutNormalize = [].concat( "src/less/widget/**/*.less", "src/less/component/**/*.less", "public/less/**/*.less", - "!public/less/app.less", // ts的less + ], [ + "public/less/app.less", ]), ); @@ -189,15 +183,16 @@ const fineuiWithoutJqueryAndPolyfillJs = [].concat( lodashJs, "src/core/**/*.js", "src/data/**/*.js", - "!src/core/platform/web/**/*.js", + ], [ + "src/core/platform/web/**/*.js", ]), basicAttachmentMap.fix, sync([ "src/base/**/*.js", "src/case/**/*.js", - - "!src/base/single/input/file.js", - "!src/case/ztree/**/*.js", + ], [ + "src/base/single/input/file.js", + "src/case/ztree/**/*.js", ]), basicAttachmentMap.widget, sync([fixCompact, workerCompact, "ui/js/**/*.js"]), diff --git a/webpack/components.js b/webpack/components.js index cb69f6333..0162cfd2a 100644 --- a/webpack/components.js +++ b/webpack/components.js @@ -1,12 +1,4 @@ -const grunt = require("grunt"); - -function uniq (names) { - return [...new Set(names)]; -} - -function sync (patterns) { - return uniq(grunt.file.expand({filter: path => !new RegExp(/__test__/g).test(path)}, patterns)).map(name => `./${name}`); -} +const { sync, uniq } = require("./utils"); const basicAttachmentMap = { single: sync(["src/base/single/**/*.js"]), @@ -24,7 +16,7 @@ const basicAttachmentMap = { linear_segment: sync(["src/case/linearsegment/**/*.js"]), date: sync(["src/widget/date/**/*.js"]), down_list: sync(["src/widget/downlist/**/*.js"]), - text_value_down_list_combo: sync(["src/widget/textvaluedownlistcombo/**/*.js"]) + text_value_down_list_combo: sync(["src/widget/textvaluedownlistcombo/**/*.js"]), }; module.exports = { @@ -43,5 +35,5 @@ module.exports = { linear_segment: basicAttachmentMap.linear_segment, date: basicAttachmentMap.date, down_list: basicAttachmentMap.down_list, - text_value_down_list_combo: basicAttachmentMap.text_value_down_list_combo + text_value_down_list_combo: basicAttachmentMap.text_value_down_list_combo, }; diff --git a/webpack/utils.js b/webpack/utils.js new file mode 100644 index 000000000..7ed3de515 --- /dev/null +++ b/webpack/utils.js @@ -0,0 +1,24 @@ +const path = require('path'); +const glob = require('glob'); + +// const glob = require('fast-glob'); + +function uniq(names) { + return [...new Set(names)]; +} + +const globalExcludes = [ + "**/*/__test__/*.js", +]; + +function sync(patterns, excludes = []) { + const ignore = globalExcludes.concat(excludes).map(pattern => path.join(__dirname, "../", pattern).replace(/\\/g, '/')); + + return patterns.map(pattern => glob.sync(path.join(__dirname, "../", pattern).replace(/\\/g, '/'), { ignore })).flat(); +} + + +module.exports = { + sync, + uniq, +}; diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index a75912f83..e19801a99 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -37,40 +37,25 @@ module.exports = { module: { rules: [ { - test: /\.(js|ts)$/, - include: [dirs.NODE_MODULES, dirs.PRIVATE, dirs.TYPESCRIPT, dirs.ROUTER], - exclude: /node_modules(\/|\\)core-js/, - use: [ - { - loader: 'babel-loader', - options: { - configFile: dirs.BABEL_CONFIG, - }, - }, - { - loader: 'source-map-loader', - options: { - enforce: 'pre', - }, - }, - ], - }, - { - test: /\.js$/, + test: /\.(jsx?|tsx?)$/i, include: [ - dirs.DEMO, - dirs.SRC, + dirs.NODE_MODULES, + dirs.PRIVATE, dirs.PUBLIC, dirs.MOBILE, + dirs.DEMO, dirs.I18N, dirs.UI, dirs.FIX, + dirs.TYPESCRIPT, + dirs.SRC, ], + exclude: /node_modules(\/|\\)core-js/, use: [ { - loader: 'source-map-loader', + loader: 'babel-loader', options: { - enforce: 'pre', + configFile: dirs.BABEL_CONFIG, }, }, ], From b7c491ac20d01b5c8d6084d0114854ed9bdf82b7 Mon Sep 17 00:00:00 2001 From: zsmj Date: Mon, 14 Mar 2022 09:54:37 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=97=A0JIRA=20=E5=9B=9E=E5=A4=8Dnumber?= =?UTF-8?q?=E7=9A=84polyfill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/polyfill/number.js | 142 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 src/polyfill/number.js diff --git a/src/polyfill/number.js b/src/polyfill/number.js new file mode 100644 index 000000000..fee048503 --- /dev/null +++ b/src/polyfill/number.js @@ -0,0 +1,142 @@ +if (!Number.prototype.toFixed || (0.00008).toFixed(3) !== "0.000" || + (0.9).toFixed(0) === "0" || (1.255).toFixed(2) !== "1.25" || + (1000000000000000128).toFixed(0) !== "1000000000000000128") { + (function () { + var base, size, data, i; + base = 1e7; + size = 6; + data = [0, 0, 0, 0, 0, 0]; + function multiply (n, c) { + var i = -1; + while (++i < size) { + c += n * data[i]; + data[i] = c % base; + c = Math.floor(c / base); + } + } + + function divide (n) { + var i = size, c = 0; + while (--i >= 0) { + c += data[i]; + data[i] = Math.floor(c / n); + c = (c % n) * base; + } + } + + function toString () { + var i = size; + var s = ""; + while (--i >= 0) { + if (s !== "" || i === 0 || data[i] !== 0) { + var t = String(data[i]); + if (s === "") { + s = t; + } else { + s += "0000000".slice(0, 7 - t.length) + t; + } + } + } + return s; + } + + function pow (x, n, acc) { + return (n === 0 ? acc : (n % 2 === 1 ? pow(x, n - 1, acc * x) + : pow(x * x, n / 2, acc))); + } + + function log (x) { + var n = 0; + while (x >= 4096) { + n += 12; + x /= 4096; + } + while (x >= 2) { + n += 1; + x /= 2; + } + return n; + } + + Number.prototype.toFixed = function (fractionDigits) { + var f, x, s, m, e, z, j, k; + f = Number(fractionDigits); + f = f !== f ? 0 : Math.floor(f); + + if (f < 0 || f > 20) { + throw new RangeError("Number.toFixed called with invalid number of decimals"); + } + + x = Number(this); + + if (x !== x) { + return "NaN"; + } + + if (x <= -1e21 || x > 1e21) { + return String(x); + } + + s = ""; + + if (x < 0) { + s = "-"; + x = -x; + } + + m = "0"; + + if (x > 1e-21) { + // 1e-21 0) { + multiply(0, z); + j = f; + + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + + multiply(pow(10, j, 1), 0); + j = e - 1; + + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + m = toString(); + } else { + multiply(0, z); + multiply(1 << (-e), 0); + m = toString() + "0.00000000000000000000".slice(2, 2 + f); + } + } + + if (f > 0) { + k = m.length; + + if (k <= f) { + m = s + "0.0000000000000000000".slice(0, f - k + 2) + m; + } else { + m = s + m.slice(0, k - f) + "." + m.slice(k - f); + } + } else { + m = s + m; + } + + return m; + }; + + })(); +}