@moneko/core 2.0.0-beta.25 → 2.0.0-beta.26
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.
- package/lib/packages/library/app.d.ts +0 -4
- package/lib/packages/library/app.js +1 -1
- package/lib/packages/library/app.js.map +1 -1
- package/lib/packages/library/index.d.ts +4 -0
- package/lib/packages/library/index.js +1 -1
- package/lib/packages/library/index.js.map +1 -1
- package/lib/router/index.d.ts +3 -1
- package/lib/router/index.js +1 -1
- package/lib/router/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}import React from"react";import{BrowserRouter,HashRouter}from"react-router-dom";import{router}from"../../router";import AppRouter from"../../components/app-router";
|
|
1
|
+
function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key]}}}return target};return _extends.apply(this,arguments)}import React from"react";import{BrowserRouter,HashRouter}from"react-router-dom";import{router}from"../../router";import AppRouter from"../../components/app-router";var Router;switch(programInfo.routerMode){case"hash":Router=HashRouter;break;case"browser":default:Router=BrowserRouter;break}var I18n=hasLocales?require("i18n-hooks").I18nProvider:React.Fragment;var IDCProvider=React.Fragment,idcProps={};if(hasModels){var idc=require("mini-idc");idcProps={store:idc.rootStore};IDCProvider=idc.Provider}var App=function(){var props={basename:programInfo.routeBaseName};if(programInfo.routerMode!=="browser"){props={}}return React.createElement(I18n,null,React.createElement(IDCProvider,_extends({},idcProps),React.createElement(Router,_extends({},props),React.createElement(AppRouter,{router:router}))))};export default App;
|
|
2
2
|
//# sourceMappingURL=app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/packages/library/app.tsx"],"sourcesContent":["import React from 'react';\nimport { BrowserRouter, HashRouter } from 'react-router-dom';\nimport { router } from '../../router';\nimport AppRouter from '../../components/app-router';\
|
|
1
|
+
{"version":3,"sources":["../../../src/packages/library/app.tsx"],"sourcesContent":["import React from 'react';\nimport { BrowserRouter, HashRouter } from 'react-router-dom';\nimport { router } from '../../router';\nimport AppRouter from '../../components/app-router';\n\nlet Router: typeof HashRouter | typeof BrowserRouter;\n\nswitch (programInfo.routerMode) {\n case 'hash':\n Router = HashRouter;\n break;\n case 'browser':\n default:\n Router = BrowserRouter;\n break;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst I18n = hasLocales ? require('i18n-hooks').I18nProvider : React.Fragment;\nlet IDCProvider: typeof React.Fragment = React.Fragment,\n idcProps = {};\n\nif (hasModels) {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const idc = require('mini-idc');\n\n idcProps = { store: idc.rootStore };\n IDCProvider = idc.Provider;\n}\nconst App: React.FC = () => {\n let props: Record<string, string> = {\n basename: programInfo.routeBaseName,\n };\n\n if (programInfo.routerMode !== 'browser') {\n props = {};\n }\n return (\n <I18n>\n <IDCProvider {...idcProps}>\n <Router {...props}>\n <AppRouter router={router} />\n </Router>\n </IDCProvider>\n </I18n>\n );\n};\n\nexport default App;\n"],"names":["React","BrowserRouter","HashRouter","router","AppRouter","Router","programInfo","routerMode","I18n","hasLocales","require","I18nProvider","Fragment","IDCProvider","idcProps","hasModels","idc","store","rootStore","Provider","App","props","basename","routeBaseName"],"mappings":"AAAA,oRAAA,OAAOA,UAAW,OAAQ,AAC1B,QAASC,aAAa,CAAEC,UAAU,KAAQ,kBAAmB,AAC7D,QAASC,MAAM,KAAQ,cAAe,AACtC,QAAOC,cAAe,6BAA8B,CAEpD,IAAIC,OAEJ,OAAQC,YAAYC,UAAU,EAC5B,IAAK,OACHF,OAASH,WACT,KAAM,AACR,KAAK,UACL,QACEG,OAASJ,cACT,KAAM,AACV,CAGA,IAAMO,KAAOC,WAAaC,QAAQ,cAAcC,YAAY,CAAGX,MAAMY,QAAQ,CAC7E,IAAIC,YAAqCb,MAAMY,QAAQ,CACrDE,SAAW,CAAC,EAEd,GAAIC,UAAW,CAEb,IAAMC,IAAMN,QAAQ,YAEpBI,SAAW,CAAEG,MAAOD,IAAIE,SAAS,AAAC,EAClCL,YAAcG,IAAIG,QAAQ,AAC5B,CAAC,AACD,IAAMC,IAAgB,UAAM,CAC1B,IAAIC,MAAgC,CAClCC,SAAUhB,YAAYiB,aAAa,AACrC,EAEA,GAAIjB,YAAYC,UAAU,GAAK,UAAW,CACxCc,MAAQ,CAAC,CACX,CAAC,AACD,OACE,oBAACb,UACC,oBAACK,wBAAgBC,UACf,oBAACT,mBAAWgB,OACV,oBAACjB,WAAUD,OAAQA,WAK7B,CAEA,gBAAeiB,GAAI"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import '../../utils/env';
|
|
2
2
|
import '../../utils/refresh-rem';
|
|
3
|
+
import '../../styles/normalize.css';
|
|
4
|
+
import '../../styles/animation.css';
|
|
5
|
+
import '../../styles/variables.css';
|
|
6
|
+
import '../../styles/global.css';
|
|
3
7
|
declare const bootstrap: typeof import("./bootstrap");
|
|
4
8
|
export default bootstrap;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"../../utils/env";import"../../utils/refresh-rem";var bootstrap=await import("./bootstrap");export default bootstrap;
|
|
1
|
+
import"../../utils/env";import"../../utils/refresh-rem";import"../../styles/normalize.css";import"../../styles/animation.css";import"../../styles/variables.css";import"../../styles/global.css";var bootstrap=await import("./bootstrap");export default bootstrap;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/packages/library/index.ts"],"sourcesContent":["import '../../utils/env';\nimport '../../utils/refresh-rem';\n\nconst bootstrap = await import('./bootstrap');\n\nexport default bootstrap;\n"],"names":["bootstrap"],"mappings":"AAAA,MAAO,iBAAkB,AACzB,OAAO,yBAA0B,CAEjC,IAAMA,UAAY,MAAM,MAAM,CAAC,cAE/B,gBAAeA,SAAU"}
|
|
1
|
+
{"version":3,"sources":["../../../src/packages/library/index.ts"],"sourcesContent":["import '../../utils/env';\nimport '../../utils/refresh-rem';\nimport '../../styles/normalize.css';\nimport '../../styles/animation.css';\nimport '../../styles/variables.css';\nimport '../../styles/global.css';\n\nconst bootstrap = await import('./bootstrap');\n\nexport default bootstrap;\n"],"names":["bootstrap"],"mappings":"AAAA,MAAO,iBAAkB,AACzB,OAAO,yBAA0B,AACjC,OAAO,4BAA6B,AACpC,OAAO,4BAA6B,AACpC,OAAO,4BAA6B,AACpC,OAAO,yBAA0B,CAEjC,IAAMA,UAAY,MAAM,MAAM,CAAC,cAE/B,gBAAeA,SAAU"}
|
package/lib/router/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { type ReactElement } from 'react';
|
|
2
|
+
import type { KeepAliveProps } from 'react-activation';
|
|
2
3
|
export interface RouterProps {
|
|
3
4
|
key: string;
|
|
4
|
-
alive?: boolean;
|
|
5
|
+
alive?: KeepAliveProps | boolean;
|
|
5
6
|
icon?: ReactElement;
|
|
6
7
|
dynamicTitle?: string;
|
|
7
8
|
i18n?: string | null;
|
|
@@ -16,6 +17,7 @@ export interface RouterProps {
|
|
|
16
17
|
closable?: boolean;
|
|
17
18
|
children?: RouterProps[];
|
|
18
19
|
}
|
|
20
|
+
export declare const lazyImport: (filePath: string) => import("react").LazyExoticComponent<import("react").ComponentType<any>>;
|
|
19
21
|
export declare const myPkgs: RouterProps[];
|
|
20
22
|
export declare const onlyLoginRouter: RouterProps[];
|
|
21
23
|
export declare const router: RouterProps[];
|
package/lib/router/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_defineProperty(target,key,source[key])})}return target}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import{pathToRegexp}from"path-to-regexp";import{createElement}from"react";
|
|
1
|
+
function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _arrayWithoutHoles(arr){if(Array.isArray(arr))return _arrayLikeToArray(arr)}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_defineProperty(target,key,source[key])})}return target}function _toConsumableArray(arr){return _arrayWithoutHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableSpread()}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}import{pathToRegexp}from"path-to-regexp";import{createElement,lazy}from"react";export var lazyImport=function(filePath){return lazy(function(){return import("@/pages/"+filePath.replace(/^\//,""))})};export var myPkgs=[];if(APPTYPE==="library"){var models=require.context("@pkg/",true,/README\.mdx?$/);models.keys().map(function(item){var key=item.substring(2).split("/").slice(0,-1).join("/");myPkgs.push({key:key,path:key,element:createElement(lazy(function(){return import("@pkg/"+key+"/"+"README.mdx")}))})})}var list=[];try{list=require("@/router").default}catch(error){console.info("自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]")}var predixKey=function(path,prev){return[prev==="*"&&path!=="*"?undefined:prev,path].filter(Boolean).join("/")};var models1=require.context("@/pages/",true,/\.(t|j)sx$/,"lazy");var pathToTree=function(input){var root=[];for(var i=0;i<input.length;i++){var chain=input[i].split("/").slice(0,-1);var curr=root;for(var j=0;j<chain.length;j++){var pathRule=chain[j];if(pathRule==="")continue;if(pathRule===".")pathRule="*";var lastHierarchy=curr;if(Array.isArray(curr)){for(var k=0;k<curr.length;k++){if(curr[k].path===pathRule){curr=curr[k].children;break}}}if(lastHierarchy===curr){var key=j===chain.length-1?input[i]:chain.slice(0,j+1).join("/")+"/";key=key.substring(2,key.lastIndexOf("/"));var node={key:key,path:pathRule,i18n:"route-"+key,children:[],alive:false,element:createElement(lazyImport(key.replace(/:/g,"$"))),hideMenu:key.includes(":")};if(Array.isArray(curr))curr.push(node);curr=node.children}}}return root};var routers=pathToTree(models1.keys().map(function(item){return item.replace(/\$/g,":")}));function merge(source,child,prev){var _=source.find(function(item){return item.path===child.path});if(!_){source.push(child)}else{_.key=predixKey(_.path,prev);if(typeof _.i18n==="undefined"){_.i18n="route-"+_.key}if(typeof _.alive==="undefined"){_.alive=false}if(typeof _.element==="undefined"&&child.element){_.element=child.element}if(typeof _.hideMenu==="undefined"){_.hideMenu=_.path==="*"?true:_.key.includes(":")}Object.assign(_,_objectSpread({},child,_));if(child.children){var _child_children;if(!_.children&&Array.isArray(child.children)){_.children=child.children}(_child_children=child.children)===null||_child_children===void 0?void 0:_child_children.forEach(function(childData){merge(_===null||_===void 0?void 0:_.children,childData,_===null||_===void 0?void 0:_.key)})}}}var findLogin=function(){var rs=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],onlyLogin=arguments.length>1?arguments[1]:void 0,prevKey=arguments.length>2?arguments[2]:void 0;return rs.map(function(e){var _=_objectSpread({},e);if(typeof _.key==="undefined"){_.key=predixKey(e.path,prevKey)}if(typeof _.i18n==="undefined"){_.i18n="route-"+_.key}if(typeof _.alive==="undefined"){_.alive=false}if(_.path==="*"&&typeof _.hideMenu==="undefined"){_.hideMenu=true}if(Array.isArray(_.children)){_.children=_.children.length?findLogin(_.children,onlyLogin,_.key):undefined}if(!_.element){_.element=createElement(lazyImport(_.key.replace(/:/g,"$")))}return!!_.onlyLogin===onlyLogin&&!_.root?null:_}).filter(Boolean)};var _router=_toConsumableArray(list);routers.forEach(function(item){return merge(_router,item)});export var onlyLoginRouter=findLogin(_router,false);export var router=findLogin(_router,true);export var matchUtil=function(pathname){var p={key:""};var findPath=function(rs){rs.forEach(function(item){if(item.path&&item.path!=="*"&&item.key){try{if(pathToRegexp(item.key).exec(pathname.substring(1))){p=item;return}}catch(error){}}if(Array.isArray(item.children))findPath(item.children)})};findPath(router);return p};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/router/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/router/index.ts"],"sourcesContent":["// import * as React from 'react';\n// import { lazyImport } from '../utils/lazy-import';\n// import { pathToRegexp } from 'path-to-regexp';\n// import type { ReactNode } from 'react';\n// import type { RouteObject } from 'react-router-dom';\n// import type { KeepAliveProps } from 'react-activation';\n\n// export interface RouterProps extends Omit<RouteObject, 'index' | 'children'> {\n// key: string;\n// alive?: KeepAliveProps | boolean;\n// icon?: ReactNode;\n// dynamicTitle?: string;\n// i18n?: string | null;\n// hideMenu?: boolean;\n// hideTabs?: boolean;\n// onlyLogin?: boolean;\n// root?: boolean;\n// path?: string;\n// element?: ReactNode;\n// /** 可否关闭标签 */\n// closable?: boolean;\n// children?: RouterProps[];\n// }\n\n// export const myPkgs: RouterProps[] = [];\n// if (APPTYPE === 'library') {\n// // eslint-disable-next-line @typescript-eslint/no-var-requires\n// const Readme = require('../components/readme').default;\n// const models = require.context('@pkg/', true, /README\\.mdx?$/);\n\n// models.keys().map((item: string) => {\n// const key = item.substring(2).split('/').slice(0, -1).join('/');\n\n// myPkgs.push({\n// key: key,\n// path: key,\n// element: React.createElement(Readme),\n// });\n// });\n// }\n\n// let list: RouterProps[] = [];\n\n// try {\n// // eslint-disable-next-line @typescript-eslint/no-var-requires\n// list = require('@/router').default;\n// } catch (error) {\n// // eslint-disable-next-line no-console\n// console.info('自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]');\n// }\n\n// const predixKey = (path?: string, prev?: string) =>\n// // eslint-disable-next-line no-undefined\n// [prev === '*' && path !== '*' ? undefined : prev, path].filter(Boolean).join('/');\n\n// const models = require.context('@/pages/', true, /\\.(t|j)sx$/, 'lazy');\n\n// const pathToTree = (input: string[]) => {\n// const root: RouterProps[] = [];\n\n// for (let i = 0; i < input.length; i++) {\n// const chain = input[i].split('/').slice(0, -1);\n// let curr = root;\n\n// for (let j = 0; j < chain.length; j++) {\n// let pathRule = chain[j];\n\n// if (pathRule === '') continue;\n// if (pathRule === '.') pathRule = '*';\n// const lastHierarchy = curr;\n\n// // 遍历root是否已有该层级\n// if (Array.isArray(curr)) {\n// for (let k = 0; k < curr.length; k++) {\n// if (curr[k].path === pathRule) {\n// curr = curr[k].children as RouterProps[];\n// break;\n// }\n// }\n// }\n\n// if (lastHierarchy === curr) {\n// let key: string = j === chain.length - 1 ? input[i] : chain.slice(0, j + 1).join('/') + '/';\n\n// // 截取最后一个 / 前面的数据\n// key = key.substring(2, key.lastIndexOf('/'));\n\n// const node: RouterProps = {\n// key: key,\n// path: pathRule,\n// i18n: 'route-' + key,\n// children: [],\n// alive: false,\n// element: React.createElement(lazyImport(key.replace(/:/g, '$'))),\n// hideMenu: key.includes(':'),\n// };\n\n// // 文件,最后一个字符不是\"/“符号\n// // if (j === chain.length - 1) delete node.children;\n// if (Array.isArray(curr)) curr.push(node);\n// curr = node.children as RouterProps[];\n// }\n// }\n// }\n\n// return root;\n// };\n// const routers: RouterProps[] = pathToTree(\n// models.keys().map((item: string) => item.replace(/\\$/g, ':'))\n// );\n\n// function merge(source: RouterProps[], child: RouterProps, prev?: string) {\n// const _ = source.find((item) => item.path === child.path);\n\n// if (!_) {\n// source.push(child);\n// } else {\n// // 处理key\n// _.key = predixKey(_.path, prev);\n// if (typeof _.i18n === 'undefined') {\n// _.i18n = 'route-' + _.key;\n// }\n// if (typeof _.alive === 'undefined') {\n// _.alive = false;\n// }\n// if (typeof _.element === 'undefined' && child.element) {\n// _.element = child.element;\n// }\n// if (typeof _.hideMenu === 'undefined') {\n// _.hideMenu = _.path === '*' ? true : _.key.includes(':');\n// }\n\n// Object.assign(_, {\n// ...child,\n// ..._,\n// });\n// if (child.children) {\n// if (!_.children && Array.isArray(child.children)) {\n// _.children = child.children;\n// }\n// child.children?.forEach((childData) => {\n// merge(_?.children as RouterProps[], childData, _?.key);\n// });\n// }\n// }\n// }\n// const findLogin = (rs: RouterProps[] = [], onlyLogin: boolean, prevKey?: string): RouterProps[] => {\n// return rs\n// .map((e) => {\n// const _ = { ...e };\n\n// if (typeof _.key === 'undefined') {\n// _.key = predixKey(e.path, prevKey);\n// }\n// if (typeof _.i18n === 'undefined') {\n// _.i18n = 'route-' + _.key;\n// }\n// if (typeof _.alive === 'undefined') {\n// _.alive = false;\n// }\n// if (_.path === '*' && typeof _.hideMenu === 'undefined') {\n// _.hideMenu = true;\n// }\n// if (Array.isArray(_.children)) {\n// // eslint-disable-next-line no-undefined\n// _.children = _.children.length ? findLogin(_.children, onlyLogin, _.key) : undefined;\n// }\n// if (!_.element) {\n// _.element = React.createElement(lazyImport(_.key.replace(/:/g, '$')));\n// }\n// return !!_.onlyLogin === onlyLogin && !_.root ? null : _;\n// })\n// .filter(Boolean) as RouterProps[];\n// };\n// const _router: RouterProps[] = [...list];\n\n// routers.forEach((item: RouterProps) => merge(_router, item));\n\n// /* 登录前注册的路由 */\n// export const onlyLoginRouter = findLogin(_router, false);\n// /* 登录后注册的路由 */\n// export const router = findLogin(_router, true);\n\n// export const matchUtil = (pathname: string) => {\n// let p: RouterProps = { key: '' };\n// const findPath = (rs: RouterProps[]): void => {\n// rs.forEach((item) => {\n// if (item.path && item.path !== '*' && item.key) {\n// try {\n// if (pathToRegexp(item.key).exec(pathname.substring(1) as string)) {\n// p = item;\n// return;\n// }\n// // eslint-disable-next-line no-empty\n// } catch (error) {}\n// }\n// if (Array.isArray(item.children)) findPath(item.children);\n// });\n// };\n\n// findPath(router);\n// return p;\n// };\n\nimport { pathToRegexp } from 'path-to-regexp';\nimport { createElement, type ReactElement } from 'react';\nimport { lazyImport } from '../utils/lazy-import';\n\nexport interface RouterProps {\n key: string;\n alive?: boolean;\n icon?: ReactElement;\n dynamicTitle?: string;\n i18n?: string | null;\n hideMenu?: boolean;\n hideTabs?: boolean;\n onlyLogin?: boolean;\n root?: boolean;\n path?: string;\n element?: ReactElement;\n fallback?: ReactElement;\n /** 可否关闭标签 */\n closable?: boolean;\n children?: RouterProps[];\n}\n// export const lazyImport = (filePath: string) => {\n// return lazy(\n// () =>\n// import(\n// /* webpackChunkName: \"[request]\" */\n// '@/pages/' + filePath.replace(/^\\//, '')\n// )\n// );\n// };\n\nexport const myPkgs: RouterProps[] = [];\nif (APPTYPE === 'library') {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const Readme = require('@moneko/core/lib/components/readme').default;\n const models = require.context('@pkg/', true, /README\\.mdx?$/, 'lazy');\n\n models.keys().map((item: string) => {\n const key = item.substring(2).split('/').slice(0, -1).join('/');\n\n myPkgs.push({\n key: key,\n path: key,\n element: createElement(Readme),\n // element: createElement(\n // lazy(\n // () =>\n // import(\n // /* webpackChunkName: \"[request]\" */\n // '@pkg/' + key + '/' + 'README.mdx'\n // )\n // )\n // ),\n });\n });\n}\n\nlet list: RouterProps[] = [];\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n list = require('@/router').default;\n} catch (error) {\n // eslint-disable-next-line no-console\n console.info('自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]');\n}\n\nconst predixKey = (path?: string, prev?: string) =>\n // eslint-disable-next-line no-undefined\n [prev === '*' && path !== '*' ? undefined : prev, path].filter(Boolean).join('/');\n\nconst models = require.context('@/pages/', true, /\\.(t|j)sx$/, 'lazy');\n\nconst pathToTree = (input: string[]) => {\n const root: RouterProps[] = [];\n\n for (let i = 0; i < input.length; i++) {\n const chain = input[i].split('/').slice(0, -1);\n let curr = root;\n\n for (let j = 0; j < chain.length; j++) {\n let pathRule = chain[j];\n\n if (pathRule === '') continue;\n if (pathRule === '.') pathRule = '*';\n const lastHierarchy = curr;\n\n // 遍历root是否已有该层级\n if (Array.isArray(curr)) {\n for (let k = 0; k < curr.length; k++) {\n if (curr[k].path === pathRule) {\n curr = curr[k].children as RouterProps[];\n break;\n }\n }\n }\n\n if (lastHierarchy === curr) {\n let key: string = j === chain.length - 1 ? input[i] : chain.slice(0, j + 1).join('/') + '/';\n\n // 截取最后一个 / 前面的数据\n key = key.substring(2, key.lastIndexOf('/'));\n\n const node: RouterProps = {\n key: key,\n path: pathRule,\n i18n: 'route-' + key,\n children: [],\n alive: false,\n element: createElement(lazyImport(key.replace(/:/g, '$'))),\n hideMenu: key.includes(':'),\n };\n\n // 文件,最后一个字符不是\"/“符号\n // if (j === chain.length - 1) delete node.children;\n if (Array.isArray(curr)) curr.push(node);\n curr = node.children as RouterProps[];\n }\n }\n }\n\n return root;\n};\nconst routers: RouterProps[] = pathToTree(\n models.keys().map((item: string) => item.replace(/\\$/g, ':'))\n);\n\nfunction merge(source: RouterProps[], child: RouterProps, prev?: string) {\n const _ = source.find((item) => item.path === child.path);\n\n if (!_) {\n source.push(child);\n } else {\n // 处理key\n _.key = predixKey(_.path, prev);\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (typeof _.element === 'undefined' && child.element) {\n _.element = child.element;\n }\n if (typeof _.hideMenu === 'undefined') {\n _.hideMenu = _.path === '*' ? true : _.key.includes(':');\n }\n\n Object.assign(_, {\n ...child,\n ..._,\n });\n if (child.children) {\n if (!_.children && Array.isArray(child.children)) {\n _.children = child.children;\n }\n child.children?.forEach((childData) => {\n merge(_?.children as RouterProps[], childData, _?.key);\n });\n }\n }\n}\nconst findLogin = (rs: RouterProps[] = [], onlyLogin: boolean, prevKey?: string): RouterProps[] => {\n return rs\n .map((e) => {\n const _ = { ...e };\n\n if (typeof _.key === 'undefined') {\n _.key = predixKey(e.path, prevKey);\n }\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (_.path === '*' && typeof _.hideMenu === 'undefined') {\n _.hideMenu = true;\n }\n if (Array.isArray(_.children)) {\n // eslint-disable-next-line no-undefined\n _.children = _.children.length ? findLogin(_.children, onlyLogin, _.key) : undefined;\n }\n if (!_.element) {\n _.element = createElement(lazyImport(_.key.replace(/:/g, '$')));\n }\n return !!_.onlyLogin === onlyLogin && !_.root ? null : _;\n })\n .filter(Boolean) as RouterProps[];\n};\nconst _router: RouterProps[] = [...list];\n\nrouters.forEach((item: RouterProps) => merge(_router, item));\n\n/* 登录前注册的路由 */\nexport const onlyLoginRouter = findLogin(_router, false);\n/* 登录后注册的路由 */\nexport const router = findLogin(_router, true);\n\nexport const matchUtil = (pathname: string) => {\n let p: RouterProps = { key: '' };\n const findPath = (rs: RouterProps[]): void => {\n rs.forEach((item) => {\n if (item.path && item.path !== '*' && item.key) {\n try {\n if (pathToRegexp(item.key).exec(pathname.substring(1) as string)) {\n p = item;\n return;\n }\n // eslint-disable-next-line no-empty\n } catch (error) {}\n }\n if (Array.isArray(item.children)) findPath(item.children);\n });\n };\n\n findPath(router);\n return p;\n};\n"],"names":["pathToRegexp","createElement","lazyImport","myPkgs","APPTYPE","Readme","require","default","models","context","keys","map","item","key","substring","split","slice","join","push","path","element","list","error","console","info","predixKey","prev","undefined","filter","Boolean","pathToTree","input","root","i","length","chain","curr","j","pathRule","lastHierarchy","Array","isArray","k","children","lastIndexOf","node","i18n","alive","replace","hideMenu","includes","routers","merge","source","child","_","find","Object","assign","forEach","childData","findLogin","rs","onlyLogin","prevKey","e","_router","onlyLoginRouter","router","matchUtil","pathname","p","findPath","exec"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/router/index.ts"],"sourcesContent":["// import * as React from 'react';\n// import { lazyImport } from '../utils/lazy-import';\n// import { pathToRegexp } from 'path-to-regexp';\n// import type { ReactNode } from 'react';\n// import type { RouteObject } from 'react-router-dom';\n// import type { KeepAliveProps } from 'react-activation';\n\n// export interface RouterProps extends Omit<RouteObject, 'index' | 'children'> {\n// key: string;\n// alive?: KeepAliveProps | boolean;\n// icon?: ReactNode;\n// dynamicTitle?: string;\n// i18n?: string | null;\n// hideMenu?: boolean;\n// hideTabs?: boolean;\n// onlyLogin?: boolean;\n// root?: boolean;\n// path?: string;\n// element?: ReactNode;\n// /** 可否关闭标签 */\n// closable?: boolean;\n// children?: RouterProps[];\n// }\n\n// export const myPkgs: RouterProps[] = [];\n// if (APPTYPE === 'library') {\n// // eslint-disable-next-line @typescript-eslint/no-var-requires\n// const Readme = require('../components/readme').default;\n// const models = require.context('@pkg/', true, /README\\.mdx?$/);\n\n// models.keys().map((item: string) => {\n// const key = item.substring(2).split('/').slice(0, -1).join('/');\n\n// myPkgs.push({\n// key: key,\n// path: key,\n// element: React.createElement(Readme),\n// });\n// });\n// }\n\n// let list: RouterProps[] = [];\n\n// try {\n// // eslint-disable-next-line @typescript-eslint/no-var-requires\n// list = require('@/router').default;\n// } catch (error) {\n// // eslint-disable-next-line no-console\n// console.info('自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]');\n// }\n\n// const predixKey = (path?: string, prev?: string) =>\n// // eslint-disable-next-line no-undefined\n// [prev === '*' && path !== '*' ? undefined : prev, path].filter(Boolean).join('/');\n\n// const models = require.context('@/pages/', true, /\\.(t|j)sx$/, 'lazy');\n\n// const pathToTree = (input: string[]) => {\n// const root: RouterProps[] = [];\n\n// for (let i = 0; i < input.length; i++) {\n// const chain = input[i].split('/').slice(0, -1);\n// let curr = root;\n\n// for (let j = 0; j < chain.length; j++) {\n// let pathRule = chain[j];\n\n// if (pathRule === '') continue;\n// if (pathRule === '.') pathRule = '*';\n// const lastHierarchy = curr;\n\n// // 遍历root是否已有该层级\n// if (Array.isArray(curr)) {\n// for (let k = 0; k < curr.length; k++) {\n// if (curr[k].path === pathRule) {\n// curr = curr[k].children as RouterProps[];\n// break;\n// }\n// }\n// }\n\n// if (lastHierarchy === curr) {\n// let key: string = j === chain.length - 1 ? input[i] : chain.slice(0, j + 1).join('/') + '/';\n\n// // 截取最后一个 / 前面的数据\n// key = key.substring(2, key.lastIndexOf('/'));\n\n// const node: RouterProps = {\n// key: key,\n// path: pathRule,\n// i18n: 'route-' + key,\n// children: [],\n// alive: false,\n// element: React.createElement(lazyImport(key.replace(/:/g, '$'))),\n// hideMenu: key.includes(':'),\n// };\n\n// // 文件,最后一个字符不是\"/“符号\n// // if (j === chain.length - 1) delete node.children;\n// if (Array.isArray(curr)) curr.push(node);\n// curr = node.children as RouterProps[];\n// }\n// }\n// }\n\n// return root;\n// };\n// const routers: RouterProps[] = pathToTree(\n// models.keys().map((item: string) => item.replace(/\\$/g, ':'))\n// );\n\n// function merge(source: RouterProps[], child: RouterProps, prev?: string) {\n// const _ = source.find((item) => item.path === child.path);\n\n// if (!_) {\n// source.push(child);\n// } else {\n// // 处理key\n// _.key = predixKey(_.path, prev);\n// if (typeof _.i18n === 'undefined') {\n// _.i18n = 'route-' + _.key;\n// }\n// if (typeof _.alive === 'undefined') {\n// _.alive = false;\n// }\n// if (typeof _.element === 'undefined' && child.element) {\n// _.element = child.element;\n// }\n// if (typeof _.hideMenu === 'undefined') {\n// _.hideMenu = _.path === '*' ? true : _.key.includes(':');\n// }\n\n// Object.assign(_, {\n// ...child,\n// ..._,\n// });\n// if (child.children) {\n// if (!_.children && Array.isArray(child.children)) {\n// _.children = child.children;\n// }\n// child.children?.forEach((childData) => {\n// merge(_?.children as RouterProps[], childData, _?.key);\n// });\n// }\n// }\n// }\n// const findLogin = (rs: RouterProps[] = [], onlyLogin: boolean, prevKey?: string): RouterProps[] => {\n// return rs\n// .map((e) => {\n// const _ = { ...e };\n\n// if (typeof _.key === 'undefined') {\n// _.key = predixKey(e.path, prevKey);\n// }\n// if (typeof _.i18n === 'undefined') {\n// _.i18n = 'route-' + _.key;\n// }\n// if (typeof _.alive === 'undefined') {\n// _.alive = false;\n// }\n// if (_.path === '*' && typeof _.hideMenu === 'undefined') {\n// _.hideMenu = true;\n// }\n// if (Array.isArray(_.children)) {\n// // eslint-disable-next-line no-undefined\n// _.children = _.children.length ? findLogin(_.children, onlyLogin, _.key) : undefined;\n// }\n// if (!_.element) {\n// _.element = React.createElement(lazyImport(_.key.replace(/:/g, '$')));\n// }\n// return !!_.onlyLogin === onlyLogin && !_.root ? null : _;\n// })\n// .filter(Boolean) as RouterProps[];\n// };\n// const _router: RouterProps[] = [...list];\n\n// routers.forEach((item: RouterProps) => merge(_router, item));\n\n// /* 登录前注册的路由 */\n// export const onlyLoginRouter = findLogin(_router, false);\n// /* 登录后注册的路由 */\n// export const router = findLogin(_router, true);\n\n// export const matchUtil = (pathname: string) => {\n// let p: RouterProps = { key: '' };\n// const findPath = (rs: RouterProps[]): void => {\n// rs.forEach((item) => {\n// if (item.path && item.path !== '*' && item.key) {\n// try {\n// if (pathToRegexp(item.key).exec(pathname.substring(1) as string)) {\n// p = item;\n// return;\n// }\n// // eslint-disable-next-line no-empty\n// } catch (error) {}\n// }\n// if (Array.isArray(item.children)) findPath(item.children);\n// });\n// };\n\n// findPath(router);\n// return p;\n// };\n\nimport { pathToRegexp } from 'path-to-regexp';\nimport { createElement, lazy, type ReactElement } from 'react';\nimport type { KeepAliveProps } from 'react-activation';\n\nexport interface RouterProps {\n key: string;\n alive?: KeepAliveProps | boolean;\n icon?: ReactElement;\n dynamicTitle?: string;\n i18n?: string | null;\n hideMenu?: boolean;\n hideTabs?: boolean;\n onlyLogin?: boolean;\n root?: boolean;\n path?: string;\n element?: ReactElement;\n fallback?: ReactElement;\n /** 可否关闭标签 */\n closable?: boolean;\n children?: RouterProps[];\n}\nexport const lazyImport = (filePath: string) => {\n return lazy(\n () =>\n import(\n /* webpackChunkName: \"[request]\" */\n '@/pages/' + filePath.replace(/^\\//, '')\n )\n );\n};\n\nexport const myPkgs: RouterProps[] = [];\nif (APPTYPE === 'library') {\n const models = require.context('@pkg/', true, /README\\.mdx?$/);\n\n models.keys().map((item: string) => {\n const key = item.substring(2).split('/').slice(0, -1).join('/');\n\n myPkgs.push({\n key: key,\n path: key,\n element: createElement(\n lazy(\n () =>\n import(\n /* webpackChunkName: \"[request]\" */\n '@pkg/' + key + '/' + 'README.mdx'\n )\n )\n ),\n });\n });\n}\n\nlet list: RouterProps[] = [];\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n list = require('@/router').default;\n} catch (error) {\n // eslint-disable-next-line no-console\n console.info('自定义路由请在 router 目录下新建 index.ts, 类型: RouterProps[]');\n}\n\nconst predixKey = (path?: string, prev?: string) =>\n // eslint-disable-next-line no-undefined\n [prev === '*' && path !== '*' ? undefined : prev, path].filter(Boolean).join('/');\n\nconst models = require.context('@/pages/', true, /\\.(t|j)sx$/, 'lazy');\n\nconst pathToTree = (input: string[]) => {\n const root: RouterProps[] = [];\n\n for (let i = 0; i < input.length; i++) {\n const chain = input[i].split('/').slice(0, -1);\n let curr = root;\n\n for (let j = 0; j < chain.length; j++) {\n let pathRule = chain[j];\n\n if (pathRule === '') continue;\n if (pathRule === '.') pathRule = '*';\n const lastHierarchy = curr;\n\n // 遍历root是否已有该层级\n if (Array.isArray(curr)) {\n for (let k = 0; k < curr.length; k++) {\n if (curr[k].path === pathRule) {\n curr = curr[k].children as RouterProps[];\n break;\n }\n }\n }\n\n if (lastHierarchy === curr) {\n let key: string = j === chain.length - 1 ? input[i] : chain.slice(0, j + 1).join('/') + '/';\n\n // 截取最后一个 / 前面的数据\n key = key.substring(2, key.lastIndexOf('/'));\n\n const node: RouterProps = {\n key: key,\n path: pathRule,\n i18n: 'route-' + key,\n children: [],\n alive: false,\n element: createElement(lazyImport(key.replace(/:/g, '$'))),\n hideMenu: key.includes(':'),\n };\n\n // 文件,最后一个字符不是\"/“符号\n // if (j === chain.length - 1) delete node.children;\n if (Array.isArray(curr)) curr.push(node);\n curr = node.children as RouterProps[];\n }\n }\n }\n\n return root;\n};\nconst routers: RouterProps[] = pathToTree(\n models.keys().map((item: string) => item.replace(/\\$/g, ':'))\n);\n\nfunction merge(source: RouterProps[], child: RouterProps, prev?: string) {\n const _ = source.find((item) => item.path === child.path);\n\n if (!_) {\n source.push(child);\n } else {\n // 处理key\n _.key = predixKey(_.path, prev);\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (typeof _.element === 'undefined' && child.element) {\n _.element = child.element;\n }\n if (typeof _.hideMenu === 'undefined') {\n _.hideMenu = _.path === '*' ? true : _.key.includes(':');\n }\n\n Object.assign(_, {\n ...child,\n ..._,\n });\n if (child.children) {\n if (!_.children && Array.isArray(child.children)) {\n _.children = child.children;\n }\n child.children?.forEach((childData) => {\n merge(_?.children as RouterProps[], childData, _?.key);\n });\n }\n }\n}\nconst findLogin = (rs: RouterProps[] = [], onlyLogin: boolean, prevKey?: string): RouterProps[] => {\n return rs\n .map((e) => {\n const _ = { ...e };\n\n if (typeof _.key === 'undefined') {\n _.key = predixKey(e.path, prevKey);\n }\n if (typeof _.i18n === 'undefined') {\n _.i18n = 'route-' + _.key;\n }\n if (typeof _.alive === 'undefined') {\n _.alive = false;\n }\n if (_.path === '*' && typeof _.hideMenu === 'undefined') {\n _.hideMenu = true;\n }\n if (Array.isArray(_.children)) {\n // eslint-disable-next-line no-undefined\n _.children = _.children.length ? findLogin(_.children, onlyLogin, _.key) : undefined;\n }\n if (!_.element) {\n _.element = createElement(lazyImport(_.key.replace(/:/g, '$')));\n }\n return !!_.onlyLogin === onlyLogin && !_.root ? null : _;\n })\n .filter(Boolean) as RouterProps[];\n};\nconst _router: RouterProps[] = [...list];\n\nrouters.forEach((item: RouterProps) => merge(_router, item));\n\n/* 登录前注册的路由 */\nexport const onlyLoginRouter = findLogin(_router, false);\n/* 登录后注册的路由 */\nexport const router = findLogin(_router, true);\n\nexport const matchUtil = (pathname: string) => {\n let p: RouterProps = { key: '' };\n const findPath = (rs: RouterProps[]): void => {\n rs.forEach((item) => {\n if (item.path && item.path !== '*' && item.key) {\n try {\n if (pathToRegexp(item.key).exec(pathname.substring(1) as string)) {\n p = item;\n return;\n }\n // eslint-disable-next-line no-empty\n } catch (error) {}\n }\n if (Array.isArray(item.children)) findPath(item.children);\n });\n };\n\n findPath(router);\n return p;\n};\n"],"names":["pathToRegexp","createElement","lazy","lazyImport","filePath","replace","myPkgs","APPTYPE","models","require","context","keys","map","item","key","substring","split","slice","join","push","path","element","list","default","error","console","info","predixKey","prev","undefined","filter","Boolean","pathToTree","input","root","i","length","chain","curr","j","pathRule","lastHierarchy","Array","isArray","k","children","lastIndexOf","node","i18n","alive","hideMenu","includes","routers","merge","source","child","_","find","Object","assign","forEach","childData","findLogin","rs","onlyLogin","prevKey","e","_router","onlyLoginRouter","router","matchUtil","pathname","p","findPath","exec"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moneko/core",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.26",
|
|
4
4
|
"description": "core",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"@pmmmwh/react-refresh-webpack-plugin": "0.5.8",
|
|
23
23
|
"@soda/friendly-errors-webpack-plugin": "1.8.1",
|
|
24
24
|
"@swc/cli": "0.1.57",
|
|
25
|
-
"@swc/core": "1.3.
|
|
26
|
-
"@swc/helpers": "0.4.
|
|
25
|
+
"@swc/core": "1.3.6",
|
|
26
|
+
"@swc/helpers": "0.4.12",
|
|
27
27
|
"@swc/plugin-transform-imports": "1.5.21",
|
|
28
28
|
"add-asset-html-webpack-plugin": "5.0.2",
|
|
29
29
|
"antd-dayjs-webpack-plugin": "1.0.6",
|