From e55b89b290babd0751d8d5228c37f8bc1a6ef049 Mon Sep 17 00:00:00 2001 From: "liujuping.liujupin" Date: Thu, 9 Dec 2021 14:40:36 +0800 Subject: [PATCH] feat: delete @ali npm used code --- packages/renderer-core/package.json | 3 -- packages/renderer-core/src/module.d.ts | 4 -- .../renderer-core/src/renderer/renderer.tsx | 3 +- packages/renderer-core/src/utils/common.ts | 42 +++++++++++++-- .../utils/{dataHelper.ts => data-helper.ts} | 53 ++++++++----------- packages/renderer-core/src/utils/index.ts | 2 +- packages/renderer-core/src/utils/request.ts | 51 ++++-------------- 7 files changed, 71 insertions(+), 87 deletions(-) delete mode 100644 packages/renderer-core/src/module.d.ts rename packages/renderer-core/src/utils/{dataHelper.ts => data-helper.ts} (91%) diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json index a240bc77a..772ef5a97 100644 --- a/packages/renderer-core/package.json +++ b/packages/renderer-core/package.json @@ -13,9 +13,6 @@ "build": "build-scripts build --skip-demo" }, "dependencies": { - "@ali/b3-one": "^0.0.17", - "@ali/bzb-request": "^2.6.0-beta.13", - "@ali/lib-mtop": "^2.5.1", "@ali/lowcode-datasource-engine": "^1.0.22", "@ali/lowcode-types": "1.0.74", "@ali/lowcode-utils": "1.0.74", diff --git a/packages/renderer-core/src/module.d.ts b/packages/renderer-core/src/module.d.ts deleted file mode 100644 index 35ef93420..000000000 --- a/packages/renderer-core/src/module.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -// tips: Q29weXJpZ2h0IChjKSAyMDIwLXByZXNlbnQgQWxpYmFiYSBJbmMuIFYz -declare module '@ali/b3-one/lib/obj'; -declare module '@ali/b3-one/lib/url'; -declare module '@ali/lib-mtop'; diff --git a/packages/renderer-core/src/renderer/renderer.tsx b/packages/renderer-core/src/renderer/renderer.tsx index cd61de6bb..6f6f8be83 100644 --- a/packages/renderer-core/src/renderer/renderer.tsx +++ b/packages/renderer-core/src/renderer/renderer.tsx @@ -1,8 +1,7 @@ import Debug from 'debug'; -import { isEmpty } from '@ali/b3-one/lib/obj'; import adapter from '../adapter'; import contextFactory from '../context'; -import { isFileSchema, goldlog } from '../utils'; +import { isFileSchema, goldlog, isEmpty } from '../utils'; import baseRendererFactory from './base'; import divFactory from '../components/Div'; import { IProps, ISchema, IState } from '../types'; diff --git a/packages/renderer-core/src/utils/common.ts b/packages/renderer-core/src/utils/common.ts index 78bead5ac..fb915d263 100644 --- a/packages/renderer-core/src/utils/common.ts +++ b/packages/renderer-core/src/utils/common.ts @@ -1,7 +1,5 @@ /* eslint-disable no-new-func */ import Debug from 'debug'; -import { forEach as _forEach, shallowEqual as _shallowEqual } from '@ali/b3-one/lib/obj'; -import { serialize as serializeParams } from '@ali/b3-one/lib/url'; // moment对象配置 import _moment from 'moment'; import 'moment/locale/zh-cn'; @@ -21,8 +19,6 @@ import IntlMessageFormat from 'intl-messageformat'; import { ISchema } from '../types'; -export const forEach = _forEach; -export const shallowEqual = _shallowEqual; export const moment = _moment; moment.locale('zh-cn'); (window as any).sdkVersion = pkg.version; @@ -455,3 +451,41 @@ export function parseI18n(i18nInfo: any, self: any) { value: `this.i18n('${i18nInfo.key}')`, }, self); } + +export function forEach(obj: any, fn: any, context?: any) { + obj = obj || {}; + Object.keys(obj).forEach(key => fn.call(context, obj[key], key)); +} + +export function shallowEqual(objA: any, objB: any) { + if (objA === objB) { + return true; + } + + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } + + const keysA = Object.keys(objA); + if (keysA.length !== Object.keys(objB).length) { + return false; + } + + for (let i = 0, key; i < keysA.length; i++) { + key = keysA[i]; + if (!objB.hasOwnProperty(key) || objA[key] !== objB[key]) { + return false; + } + } + return true; +} + +export function serializeParams(obj: any) { + let rst: any = []; + forEach(obj, (val: any, key: any) => { + if (val === null || val === undefined || val === '') return; + if (typeof val === 'object') rst.push(`${key}=${encodeURIComponent(JSON.stringify(val))}`); + else rst.push(`${key}=${encodeURIComponent(val)}`); + }); + return rst.join('&'); +} \ No newline at end of file diff --git a/packages/renderer-core/src/utils/dataHelper.ts b/packages/renderer-core/src/utils/data-helper.ts similarity index 91% rename from packages/renderer-core/src/utils/dataHelper.ts rename to packages/renderer-core/src/utils/data-helper.ts index f6f6c88ca..85f1aa76d 100644 --- a/packages/renderer-core/src/utils/dataHelper.ts +++ b/packages/renderer-core/src/utils/data-helper.ts @@ -1,6 +1,6 @@ /* eslint-disable object-curly-newline */ import { transformArrayToMap, isJSFunction, transformStringToFunction, clone } from './common'; -import { jsonp, mtop, request, get, post, bzb } from './request'; +import { jsonp, request, get, post } from './request'; import { DataSource, DataSourceItem } from '../types'; const DS_STATUS = { @@ -211,8 +211,8 @@ export class DataHelper { return new Promise((resolve) => { const { type, id, dataHandler, options } = item; const doFetch = (type: string, options: any) => { - this.fetchOne(type, options) - .then((data: any) => { + this.fetchOne(type as any, options) + ?.then((data: any) => { if (afterRequest) { this.appHelper.utils.afterRequest(item, data, undefined, (data: any, error: any) => { fetchHandler(data, error); @@ -290,38 +290,27 @@ export class DataHelper { } } - fetchOne(type: string, options: any) { + fetchOne(type: DataSourceType, options: any) { // eslint-disable-next-line prefer-const let { uri, url, method = 'GET', headers, params, ...otherProps } = options; otherProps = otherProps || {}; - switch (type) { - case 'mtop': - method && (otherProps.method = method); - return mtop(uri, params, otherProps); - case 'jsonp': - return jsonp(uri, params, otherProps); - case 'bzb': - return bzb(uri, params, { - method, - headers, - ...otherProps, - }); - // todo: - case 'legao': - if (method === 'JSONP') { - return jsonp(url, params, otherProps); - } - // return webTable(uri, params, otherProps); - break; - default: - method = method.toUpperCase(); - if (method === 'GET') { - return get(uri, params, headers, otherProps); - } - if (method === 'POST') { - return post(uri, params, headers, otherProps); - } - return request(uri, method, params, headers, otherProps); + if (type === 'jsonp') { + return jsonp(uri, params, otherProps); } + + if (type === 'fetch') { + switch (method.toUpperCase()) { + case 'GET': + return get(uri, params, headers, otherProps); + case 'POST': + return post(uri, params, headers, otherProps); + default: + return request(uri, method, params, headers, otherProps); + } + } + + console.error(`Engine default dataSource not support type:[${type}] dataSource request!`); } } + +type DataSourceType = 'fetch' | 'jsonp'; \ No newline at end of file diff --git a/packages/renderer-core/src/utils/index.ts b/packages/renderer-core/src/utils/index.ts index 27d5e016f..b22e23064 100644 --- a/packages/renderer-core/src/utils/index.ts +++ b/packages/renderer-core/src/utils/index.ts @@ -1,3 +1,3 @@ export * from './common'; -export * from './dataHelper'; +export * from './data-helper'; export * from './request'; diff --git a/packages/renderer-core/src/utils/request.ts b/packages/renderer-core/src/utils/request.ts index ced0726fc..9a88068c2 100644 --- a/packages/renderer-core/src/utils/request.ts +++ b/packages/renderer-core/src/utils/request.ts @@ -1,8 +1,14 @@ import 'whatwg-fetch'; -import fetchMtop from '@ali/lib-mtop'; import fetchJsonp from 'fetch-jsonp'; -import bzbRequest from '@ali/bzb-request'; -import { serialize, buildUrl, parseUrl } from '@ali/b3-one/lib/url'; +import { serializeParams } from '.'; + +function buildUrl(dataAPI: any, params: any) { + const paramStr = serializeParams(params); + if (paramStr) { + return dataAPI.indexOf('?') > 0 ? `${dataAPI}&${paramStr}` : `${dataAPI}?${paramStr}`; + } + return dataAPI; +} export function get(dataAPI: any, params = {}, headers = {}, otherProps = {}) { headers = { @@ -24,7 +30,7 @@ export function post(dataAPI: any, params = {}, headers: any = {}, otherProps = 'POST', headers['Content-Type'].indexOf('application/json') > -1 || Array.isArray(params) ? JSON.stringify(params) - : serialize(params), + : serializeParams(params), headers, otherProps, ); @@ -132,40 +138,3 @@ export function jsonp(dataAPI: any, params = {}, otherProps = {}) { }); }); } - -export function mtop(dataAPI: any, params: any, otherProps: any = {}) { - fetchMtop.config.subDomain = otherProps.subDomain || 'm'; - return fetchMtop.request({ - api: dataAPI, - v: '1.0', - data: params, - ecode: otherProps.ecode || 0, - type: otherProps.method || 'GET', - dataType: otherProps.dataType || 'jsonp', - AntiFlood: true, // 防刷 - timeout: otherProps.timeout || 20000, - }); -} - -export function bzb(apiCode: string, params: any, otherProps: any = {}) { - // 通过url参数设置小二工作台请求环境 - const getUrlEnv = () => { - try { - if (window.parent && window.parent.location.host === window.location.host) { - const urlInfo = parseUrl(window.parent && window.parent.location.href); - return urlInfo && urlInfo.params && urlInfo.params._env; - } - const urlInfo = parseUrl(window.location.href); - return urlInfo && urlInfo.params && urlInfo.params._env; - } catch (e) { - return null; - } - }; - - otherProps.method = otherProps.method || 'GET'; - otherProps.env = getUrlEnv() || otherProps.env || 'prod'; - return bzbRequest(apiCode, { - data: params, - ...otherProps, - }); -}