UNPKG

pdd

Version:
5 lines (4 loc) 18.4 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Transform={})}(this,function(t){"use strict";class u extends Error{name="Error";message="Error message";code=500;constructor(t,e,s=500){super(e),this.name=t??"Error",this.message=e??"Error message",this.code=s??500}}const e=Object.prototype.toString;function a(t){return"[object Array]"===e.call(t)}function p(t){return"[object Object]"===e.call(t)}function g(t){return"[object String]"===e.call(t)}function n(t){return"[object Number]"===e.call(t)&&t==t}function h(t){return"function"==typeof t}function i(t){if("function"==typeof t){const e=t.toString();if(void 0!==t.prototype&&t.prototype.constructor===t){if("class "===e.slice(0,6))return!0;if(2<=Object.getOwnPropertyNames(t.prototype).length)return!0;/^function\s+\(|^function\s+anonymous\(/.test(e)}}return!1}function s(t){return p(t)&&0===Object.keys(t).length}function d(t){return!t&&0!==t||s(t)}class r{static instance=null;instances=new Map;bindings={};aliases={};bind(t,e){if(!t)throw new u("Abstract Error","Abstract not null");if(Array.isArray(t))t.map(t=>{this.bind(t,e)});else{if(!g(t))throw new u("Abstract Error","The abstract name is a string");p(e)||i(e)?this.bindings[t]=e:h(e)&&!i(e)&&this.instances.set(t,e)}}make(t,e,s=!1){var r;if(t=this.getAlias(t),this.has(t))return i(r=this.instances.get(t)||this.bindings[t])?this.makeClass(t,r,e,s):h(r)?this.makeFunc(t,r,e,s):r;throw new u("Container Error","The abstract does not exist")}makeClass(t,e,s,r=!1){var n=()=>new e(s);return r?(this.bind(t,n),this.instances.get(t)):n}makeFunc(t,e,s,r=!1){e=e(s);return r?(this.bind(t,e),this.instances.get(t)):e}has(t){return this.existence(t)}existence(t){return!this.bindings[t]||!this.instances.get(t)||!this.getAlias(t)}getAlias(t){return this.aliases[t]||t}get(t){if(this.has(t))return this.make(t);throw new u("Container Error","The abstract does not exist")}singleton(t,e){this.bind(t,e)}static getInstance(){let t=this.instance;return t=t&&t instanceof r?t:this.instance=new r}proxyInstance(){return new Proxy(this,{get:(t,e)=>t[e]})}}class l extends r{static VERSION="0.4.14";adapters=new WeakMap;providers=[];static lifecycle(){const t=(new Date).getTime();return{created:()=>{l.registerProviders(l.getProviders()),l.registerProviders(l.getConfig("APP_CONFIG").PROVIDERS)},mounted:()=>{},unmounted:()=>{console.log(` %c pdd %c ${l.VERSION} ${(new Date).getTime()-t}ms `,"color: #fadfa3; background: #030307; padding:5px 0;border-radius:3px 0 0 3px;","color:#000000;background: #ebd29a; padding:5px 0;border-radius:0 3px 3px 0;")}}}getterProviders(){var t=this.providers;return Array.isArray(t)&&0<t.length?t:[]}static getProviders(){return l.getInstance().getterProviders()}setterProviders(t){const e=this.providers;Array.isArray(e)&&(this.providers=e.filter(e=>{return!t.find(t=>e===t)}),this.providers=this.getterProviders().concat(t))}static setProviders(t){l.getInstance().setterProviders(t)}static registerProvider(t){if(!i(t))throw new u("Provider Error","The first argument must be a class");new t(l.getInstance())}static registerProviders(t){Array.isArray(t)&&t.map(t=>{l.registerProvider(t)})}static setConfig(t,e){l.getInstance().singleton(t,e)}static getConfig(t,e){if(l.getInstance().has(t))return l.getInstance().get(t);if(d(e))throw new u("Application Config Error","Configuration information does not exist");return e}static setAppConfig(t){l.setConfig("APP_CONFIG",t)}static getAppConfig(t){return l.getConfig("APP_CONFIG",{})[t]}static bindAdapter(t,e){if(!i(t))throw new u("Adapter Error","The first argument must be a class");e=d(e)?new t:new t(e);l.getInstance().setterAdapter(t,e)}setterAdapter(t,e){if(!i(t))throw new u("Adapter Error","The first argument must be a class");l.getAdapter(t)&&console.warn("Adapter Warn",`The adapter ${t.name||""} is already bound`),this.adapters.set(t,e)}static getAdapter(t){if(i(t))return l.getInstance().getterAdapter(t);throw new u("Adapter Error","The argument must be a class")}getterAdapter(t){return this.adapters.get(t)}static getService(t){return l.getInstance().get(t)}static getInstance(){let t=this.instance;return t=t&&t instanceof l?t:l.instance=new this}static run(t){const e=l.lifecycle();e.created(),e.mounted(),e.unmounted(),h(t)&&t()}}class o{static typeOf(t,e){return typeof t===e}static getTag(t){return Object.prototype.toString.call(t)}static isFunction(t){return o.typeOf(t,"function")&&"[object Function]"===o.getTag(t)}static isString(t){return o.typeOf(t,"string")||"[object String]"===o.getTag(t)}static isNumber(t){return"number"==typeof t}static isObject(t){return"[object Object]"===o.getTag(t)}static isUndefined(t){return void 0===t||"[object Undefined]"===o.getTag(t)}static isNull(t){return null===t||"[object Null]"===o.getTag(t)}static isEmpty(t){return!t&&0!==t||!(!o.isObject(t)&&!Array.isArray(t))&&("{}"===JSON.stringify(t)||"[]"===JSON.stringify(t))}static isClass(t){if(o.isFunction(t)){const e=t.toString();if(void 0!==t.prototype&&t.prototype.constructor===t){if("class "===e.slice(0,6))return!0;if(2<=Object.getOwnPropertyNames(t.prototype).length)return!0;/^function\s+\(|^function\s+anonymous\(/.test(e)}}return!1}static strTrim(t,e,s){return e?"L"===s?t.replace(new RegExp("^\\"+e+"+","g"),""):"R"===s?t.replace(new RegExp("\\"+e+"+$","g"),""):t.replace(new RegExp("^\\"+e+"+|\\"+e+"+$","g"),""):t.replace(/^\s+|\s+$/g,"")}}class c{http;method="POST";url="";data={};headers={};extra={};constructor(t){if("function"!=typeof t)throw new u("HTTP Adapter Error","The first argument must be a function");this.http=t}setConfig({method:t,url:e,data:s,headers:r,extra:n}){this.method=t??this.method,this.url=e??this.url,this.data=s??this.data,this.headers=r??this.headers,this.extra=n??this.extra}request(){return new Promise((e,s)=>{this.http({method:this.method,url:this.url,data:this.data,headers:this.headers,extra:this.extra}).then(t=>{e(t)}).catch(t=>{s(t)})})}}class f{app;constructor(t){this.app=t,this.register()}}class m{type="localStorage";storage="localStorage"===this.type?localStorage:sessionStorage;constructor({type:t}){this.setConfig({type:t})}get(t){if(!t)return this.getAll();if(g(t))return this.storage.getItem(t);throw new u("","The first parameter is a string")}set(t,e){if("length"===t)throw new u("WebStorage Error","The key of data must not be length");this.storage.setItem(t,JSON.stringify(e))}save(t,e){this.set(t,e)}delete(t){t?Array.isArray(t)?t.map(t=>{this.delete(t)}):this.storage.removeItem(t):this.clear()}remove(t){this.delete(t)}clear(){this.storage.clear()}keys(){var t=this.getAll();return Object.keys(t)}getAll(){const{length:t,...e}=this.storage;return e}setConfig({type:t}){this.type=t}}class E{app;constructor(t){this.app=t}}class T extends E{env(){return{}}webStorage(t,e,s){const r=new m({type:t});if(e&&!o.isString(e))throw new u("WebStorage Error","The first argument must be a string");return void 0!==e||o.isString(e)?void 0===s?r.get(e):void r.save(e,s):r.getAll()}storage(t,e){return this.webStorage("localStorage",t,e)}cookie(){}session(t,e){return this.webStorage("sessionStorage",t,e)}async http(t,e,s={},r={}){return l.getService("$request").http(t,e,s,r)}async send(t,e,s,r,n=!0){if(!this.app.has("$request"))throw new u("RequestService Error","");let a=await l.getService("$request").send(t,e,r,n);return o.isFunction(s)&&(a=s(a)),n?a:a.data}checkAuth(){}cookies(t,e){}request(t,e,s){}}class A{isRESTful=!0;api;requestData;constructor(t,e,s){this.isRESTful=s??this.isRESTful,this.api=t,this.requestData=p(e)?e:{}}create(){return this.isRESTful?this.transformer():{api:this.api,data:this.requestData}}transformer(){const t=Object.keys(this.requestData),r={},n={},e=(t.map(t=>{var e=t.match(/^__/g),s=t.replace(/^__/g,"");e?r[s]=this.requestData[t]:n[s]=this.requestData[t]}),this.api.match(/<(.*?)>/g)),s={};if(e&&Array.isArray(e)){const a=e.map(t=>{const e=t.replace(/(^<)|(>$)/g,"");t=e.split("=");return 2===t.length?(s[t[0]]=t[1],t[0]):(s[e]=null,e)});return Object.assign(s,r),this.api=this.api.replace(/=(.*?)>/g,">"),a.map(t=>{this.api=this.api.replace(`<${t}>`,s[t])}),{api:this.api,data:n}}return{api:this.api,data:this.requestData}}}function y(t,e){const s=[];for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&(a(t[r])||p(t[r])?e?s.push(y(t[r],`${e}[${r}]`)):s.push(y(t[r],r)):e?s.push(encodeURIComponent(`${e}[${r}]`)+"="+encodeURIComponent(t[r])):s.push(encodeURIComponent(r)+"="+encodeURIComponent(t[r])));return s.join("&")}function _(t,e,s){return e?"L"===s?t.replace(new RegExp("^\\"+e+"+","g"),""):"R"===s?t.replace(new RegExp("\\"+e+"+$","g"),""):t.replace(new RegExp("^\\"+e+"+|\\"+e+"+$","g"),""):t.replace(/^\s+|\s+$/g,"")}class S extends E{_http=null;_api={};_headers={};_host="";_isRESTful=!0;_carryingData={};_mode="REQUEST_PAYLOAD";$helper=null;_requestMiddleware;_responseMiddleware;_context={request:{hairstyle:null,body:null},response:null};constructor(t,{HTTP_ADAPTER:e,HTTP_API:s,HTTP_HOST:r,IS_RESTFUL:n,CONTENT_TYPE:a,DATA_CARRYING:i,REQUEST_MIDDLEWARE:o,RESPONSE_MIDDLEWARE:c}){super(t),this._http=e??this._http,this._api=s??this._api,this._host=r??this._host,this._isRESTful=n??!0,this.setContentType(a),this.setDataCarry(i.REQUEST_HEADERS,i.REQUEST_DATA),this._requestMiddleware=h(o)?o:t=>t,this._responseMiddleware=h(c)?c:t=>t}setContentType(t){"REQUEST_PAYLOAD"===t||"JSON"===t?(this._mode=t,this.setHeader("Content-Type","application/json")):"FORM_DATA"===t&&(this._mode=t,this.setHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"))}getContentType(){return this._mode}setDataCarry(e,s){if(p(e)){const t=Object.keys(e);Array.isArray(t)&&t.map(t=>{this.carryingHandle(t,e[t],"REQUEST_HEADERS")})}if(p(s)){const r=Object.keys(s);Array.isArray(r)&&r.map(t=>{this.carryingHandle(t,s[t],"REQUEST_DATA")})}}carryingHandle(e,s,r="REQUEST_HEADERS"){if(e&&s)if(h(s))try{"REQUEST_HEADERS"===r?this.setHeader(e,s()):"REQUEST_DATA"===r&&this.setData(e,s())}catch(t){console.warn("Application Error",t)}else if(g(s)||n(s))try{"REQUEST_HEADERS"===r?this.setHeader(e,s):"REQUEST_DATA"===r&&this.setData(e,s)}catch(t){console.warn("Application Error",t)}else{let t=null;"LOCAL"===s||"LOCAL_STORAGE"===s?t=l.getService("$helper").storage(e):"SESSION"===s?t=l.getService("$helper").session(e):"COOKIES"===s?t=l.getService("$helper").cookies(e):"STORAGE"===s&&(t=l.getService("$helper").storage(e)),"REQUEST_HEADERS"===r?this.setHeader(e,t):"REQUEST_DATA"===r&&this.setData(e,t)}}async http(t,e,s={},r={}){try{return this._context.request={...this._context.request,...this.getParameters(t,e)},this._context.request.headers={...this._context.request.headers,...s},this._context.request.extra=r,this._context=this._requestMiddleware(this._context),this._http.setConfig(this._context.request),await this.request(this._context.request.hairstyle[3])}catch(t){console.warn("Request config warn",t)}}async request(t){try{var e=await this._http.request();try{this._context.response=e;var s=await this._responseMiddleware(this._context);return t?s.response:s.response.data}catch(t){console.warn("Response middleware Error",t)}}catch(t){if(t&&t.response)switch(t.response.status){case 400:t.message="请求参数错误";break;case 401:t.message="未授权,请登录";break;case 403:t.message="跨域拒绝访问";break;case 404:t.message="请求地址出错: "+t.response.config.url;break;case 408:t.message="请求超时";break;case 500:t.message="服务器内部错误";break;case 501:t.message="服务未实现";break;case 502:t.message="网关错误";break;case 503:t.message="服务不可用";break;case 504:t.message="网关超时";break;case 505:t.message="HTTP版本不受支持"}throw this._context.response={...t.response,message:t.message},this._responseMiddleware(this._context),t}}async send(t,e,s={},r=!1){s.host&&(this._host=s.host),s.headers&&this.setHeaders(s.headers),s.mode&&this.setContentType(s.mode);const n=this.makeHairstyle(t);return r&&(n[3]=r),this.http(n,e,{})}makeHairstyle(t){let e;if(!(e="string"==typeof t?this._api[t]:t)&&!t)throw new u("The api route does not exist","ApiRouteError");t=e[0];let s=["POST",this.getContentType()];var r=e[2]??!0,n=e[3]??!1;return a(e[1])?s=[e[1][0].toUpperCase()||"POST",e[1][1]||this.getContentType()]:g(e[1])&&(s=[e[1].toUpperCase(),this.getContentType()]),[t,s,r,n]}getParameters(t,e){var[t,s,r,n]=this.makeHairstyle(t);let a={};0<Object.keys(this._carryingData).length&&r&&(e={...this._carryingData,...e}),0<Object.keys(this._headers).length&&r&&(a=this._headers);const i=new A(t,e,this._isRESTful).create();let o=_(this._host,"/")+"/"+_(i.api,"/");var c=s?.[0],h=s?.[1];return this.setContentType(h),"GET"===c&&p(i.data)&&(o=d(i.data)?o:o+"?"+y(i.data)),{api:i.api.trim(),url:o,method:c,data:i.data,auth:r,hairstyle:[t,s,r,n],body:e,payload:i.data,headers:a}}setHeaders(t={}){this._headers={...this._headers,...t}}setHeader(t,e){this._headers[t]=e}setData(t,e){this._carryingData[t]=e}}class b{_events=new Map;static _instance;static getInstance(){return b._instance&&b._instance instanceof b||(b._instance=new b),b._instance}static getEvents(){return b.getInstance()._events}static getEventsSize(){return b.getInstance()._events.size}static getEvent(t){return b.getInstance()._events.get(t)}static hasEvent(t){return b.getInstance()._events.has(t)}static deleteEvent(t){return b.getInstance()._events.delete(t),b.hasEvent(t)}static setEvent(t,e){return b.hasEvent(t),b.getInstance()._events.set(t,e)}static on(t,e){return h(e)||console.warn("The second argument to the on method must be a function"),b.setEvent(t,e)}static emit(t,...e){if(h(b.getEvent(t)))return b.getEvent(t)(...e);console.error(`You need to bind the ${t} event and method before emit`)}static once(t,...e){b.emit(t,...e),b.off(t)}static off(t){if(Array.isArray(t)){const e=t.map(t=>b.off(t));return e.indexOf(!1)<0}return!!b.hasEvent(t)&&b.getInstance()._events.delete(t)}}l.setProviders([class extends f{register(){this.app.singleton("$command",()=>{console.log("COMMAND_REGISTERED")})}},class extends f{register(){this.app.singleton("$helper",()=>new T(this.app))}},class extends f{register(){var t=l.getAppConfig("HTTP_CONFIG").HTTP_ADAPTER,e=l.getAppConfig("HTTP_CONFIG").HTTP_LIB;const s=l.getAppConfig("HTTP_CONFIG").HTTP_API,r=l.getAppConfig("HTTP_CONFIG").HTTP_HOST,n=l.getAppConfig("HTTP_CONFIG").IS_RESTFUL,a=l.getAppConfig("HTTP_CONFIG").CONTENT_TYPE,i=l.getAppConfig("HTTP_CONFIG").DATA_CARRYING;if(!t||!e)throw new u("ADAPTER Error","Bind http adapter error");l.bindAdapter(t,e);const o=l.getAdapter(t),c=l.getAppConfig("HTTP_CONFIG").REQUEST_MIDDLEWARE,h=l.getAppConfig("HTTP_CONFIG").RESPONSE_MIDDLEWARE;this.app.singleton("$request",()=>new S(this.app,{HTTP_ADAPTER:o,HTTP_API:s,HTTP_HOST:r,IS_RESTFUL:n,CONTENT_TYPE:a,DATA_CARRYING:i,REQUEST_MIDDLEWARE:c,RESPONSE_MIDDLEWARE:h}))}}]),t.$http=async function(t,e,s={},r={}){return l.getService("$request").http(t,e,s,r)},t.AxiosAdapter=class extends c{request(){return new Promise((e,s)=>{this.http({method:this.method,url:this.url,data:this.data,headers:this.headers,...this.extra}).then(t=>{e(t)}).catch(t=>{s(t)})})}},t.Command=class{$payload;$helper;$http;constructor(...t){this.$payload=[...t],this.$helper=l.getService("$helper"),this.$http=l.getService("$helper").http}$transform=(t,e)=>Array.isArray(t)?t.map(t=>this.$transform(t,e)):e(t);$filterEmptyFields(e){return d(e)?{}:(Object.keys(e).map(t=>{d(e[t])&&delete e[t]}),e)}},t.Container=r,t.EventBus=b,t.Exception=u,t.Lib=o,t.ServiceProvider=f,t.Transformer=class{data;payload;constructor(t,e){this.data=t,this.payload=e}transform(t,e){return t}create(s){return Array.isArray(this.data)?this.data.map((t,e)=>h(s)?s(t,e):this.transform(t)):h(s)?s(this.data,0):this.transform(this.data)}formatNumber(t,e=-1,s="",r="."){"number"!=typeof t&&(t=g(t)?parseFloat(t):0);var n=(t=isNaN(t)?0:t).toString().split("."),n=(e=parseInt(e),e=isNaN(Math.abs(e))||-1===e?-1:Math.abs(e),n[1]&&-1===e?e=n[1].length:n[1]||-1!==e||(e=0),s="string"==typeof s?s:",",r=r||".",t<0?"-":"");let a;const i=parseInt(t=Math.abs(+t||0).toFixed(e),10).toString();return n+((a=3<(a=i.length)?a%3:0)?i.substr(0,a)+s:"")+i.substr(a).replace(/(\d{3})(?=\d)/g,"$1"+s)+(e?r+Math.abs(Number(t)-Number(i)).toFixed(e).slice(2):"")}formatDate(t=Date.now()){if(g(t))return isNaN(Date.parse(t))?this.formatDate():this.formatDate(Date.parse(t));const e=new Date(t),s=e.getFullYear(),r=e.getMonth()+1<10?"0"+(e.getMonth()+1):e.getMonth()+1,n=e.getDate()<10?"0"+e.getDate():e.getDate(),a=e.getHours()<10?"0"+e.getHours():e.getHours(),i=e.getMinutes()<10?"0"+e.getMinutes():e.getMinutes(),o=e.getSeconds()<10?"0"+e.getSeconds():e.getSeconds();var t=e.getDay(),c=0<=e.getHours()&&a<12?"AM":"PM",h=0<=e.getHours()&&a<12?"上午":"下午";return{Y:s.toString(),M:r.toString(),D:n.toString(),h:a.toString(),m:i.toString(),s:o.toString(),week:["日","一","二","三","四","五","六"][t],ap:c,apCn:h}}},t.UniRequestAdapter=class extends c{request(){return new Promise((e,s)=>{this.http({method:this.method,url:this.url,data:this.data,header:this.headers,...this.extra,success:t=>{e(t)},fail:t=>{s(t)}})})}},t.default=l,t.defineAppConfig=function(t){return t},t.defineHttpApiMap=function(t){return t},t.defineHttpApis=function(t){return t},t.defineHttpConfig=function(t){return t},t.isArray=a,t.isBoolean=function(t){return"[object Boolean]"===e.call(t)},t.isClass=i,t.isColor=function(t){return/^#[a-fA-F0-9]{3}$|#[a-fA-F0-9]{6}$/.test(t)||/^rgb\((\s*\d+\s*,?){3}\)$/.test(t)||/^rgba\((\s*\d+\s*,\s*){3}\s*\d(\.\d+)?\s*\)$/.test(t)},t.isDate=function(t){return"[object Date]"===e.call(t)},t.isEmail=function(t){return!!g(t)&&/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(t)},t.isEmpty=d,t.isEmptyObject=s,t.isExist=function(t){return t||0===t},t.isFunction=h,t.isNull=function(t){return"[object Null]"===e.call(t)},t.isNumber=n,t.isObject=p,t.isPhone=function(t){return!!g(t)&&/^(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$/.test(t)},t.isPromise=t=>"[object Promise]"===e.call(t),t.isRegExp=function(t){return"[object RegExp]"===e.call(t)},t.isString=g,t.isUndefined=function(t){return void 0===t},t.isWindow=function(t){return t===window},t.queryStringify=y,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=pdd.js.map