@moneko/core 2.0.0-beta.4 → 2.0.0-beta.6
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/build/has-antd.d.ts +0 -1
- package/build/has-antd.js +1 -1
- package/build/webpack.common.js +1 -1
- package/lib/components/app-router/index.d.ts +5 -6
- package/lib/components/app-router/index.js +1 -1
- package/lib/components/app-router/index.js.map +1 -1
- package/lib/components/fallback/index.d.ts +2 -2
- package/lib/components/fallback/index.js +1 -1
- package/lib/components/fallback/index.js.map +1 -1
- package/lib/hooks/navgate.js.map +1 -1
- package/lib/router/index.d.ts +3 -2
- package/lib/router/index.js +1 -1
- package/lib/router/index.js.map +1 -1
- package/lib/utils/lazy-import.d.ts +5 -17
- package/lib/utils/lazy-import.js +1 -1
- package/lib/utils/lazy-import.js.map +1 -1
- package/package.json +2 -3
package/build/has-antd.d.ts
CHANGED
package/build/has-antd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{HASANTD:function(){return HASANTD},
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:all[name]})}_export(exports,{HASANTD:function(){return HASANTD},antdThemeVariables:function(){return antdThemeVariables}});var _fs=_interopRequireDefault(require("fs"));var _path=_interopRequireDefault(require("path"));var _processEnv=require("./process-env");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var HASANTD=false;var antdThemeVariables={};try{var antdPath=_path.default.join(_processEnv.PROGRAMPATH,"./node_modules/antd/package.json");_fs.default.accessSync(antdPath,_fs.default.constants.R_OK);HASANTD=true}catch(error){HASANTD=false}
|
package/build/webpack.common.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});var _path=_interopRequireDefault(require("path"));var _fs=_interopRequireDefault(require("fs"));var _htmlWebpackPlugin=_interopRequireDefault(require("html-webpack-plugin"));var _webpack=require("webpack");var _webpackbar=_interopRequireDefault(require("webpackbar"));var _common=require("./common");var _moduleConfig=_interopRequireDefault(require("./module.config"));var _envFlags=_interopRequireDefault(require("./envFlags"));var _addAssetHtmlWebpackPlugin=_interopRequireDefault(require("add-asset-html-webpack-plugin"));var _htmlAddEntryAttr=_interopRequireDefault(require("./html-add-entry-attr"));var _moduleFederation=require("./module-federation");var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return _default}});var _path=_interopRequireDefault(require("path"));var _fs=_interopRequireDefault(require("fs"));var _htmlWebpackPlugin=_interopRequireDefault(require("html-webpack-plugin"));var _webpack=require("webpack");var _webpackbar=_interopRequireDefault(require("webpackbar"));var _common=require("./common");var _moduleConfig=_interopRequireDefault(require("./module.config"));var _envFlags=_interopRequireDefault(require("./envFlags"));var _addAssetHtmlWebpackPlugin=_interopRequireDefault(require("add-asset-html-webpack-plugin"));var _htmlAddEntryAttr=_interopRequireDefault(require("./html-add-entry-attr"));var _moduleFederation=require("./module-federation");var _processEnv=require("./process-env");var _htmlPluginOption=_interopRequireDefault(require("./html-plugin-option"));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 _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default: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)}var eslintrc=[".eslintrc.js",".eslintrc.json",".eslintrc.yaml",".eslintrc.json"];var stylelintrc=[".stylelintrc",".stylelintrc.json",".stylelintrc.yaml",".stylelintrc.yml",".stylelintrc.js","stylelint.config.js","stylelint.config.cjs"];var rootFiles=_fs.default.readdirSync(_processEnv.PROGRAMPATH);var hasEslint=false,hasStylelint=false;for(var i=0,len=rootFiles.length;i<len;i++){if(stylelintrc.includes(rootFiles[i])){hasStylelint=true}if(eslintrc.includes(rootFiles[i])){hasEslint=true}}if(!hasEslint){hasEslint=_processEnv.hasEslintConfig}if(!hasStylelint){hasStylelint=_processEnv.hasStylelintConfig}var StylelintPlugin=hasStylelint?require("stylelint-webpack-plugin"):null;var ESLintPlugin=hasEslint?require("eslint-webpack-plugin"):null;var alias={"@":_path.default.resolve(_processEnv.PROGRAMPATH,"./src")};Object.assign(alias,_common.CONFIG.alias);if(_processEnv.APPTYPE==="library"){Object.assign(alias,_defineProperty({"@":_path.default.resolve(_processEnv.PROGRAMPATH,"./site"),"@pkg":_path.default.resolve(_processEnv.PROGRAMPATH,"./components")},_processEnv.PACKAGENAME,_path.default.resolve(_processEnv.PROGRAMPATH,"./components")))}var assetHtmlOption=_common.CONFIG.assetHtml.map(function(item){return _objectSpread({publicPath:""},item)});var entryMap={main:[_path.default.join(__dirname,"../lib/packages/".concat(_common.ENTRYPATH[_processEnv.APPTYPE],"/index.js"))]};if(_common.CONFIG.entry&&Object.keys(_common.CONFIG.entry)){Object.assign(_common.CONFIG.entry,entryMap)}var config={entry:entryMap,stats:"errors-only",infrastructureLogging:{level:"none"},target:"web",plugins:[new _webpack.AutomaticPrefetchPlugin].concat(_toConsumableArray(_moduleFederation.moduleFederation),[ESLintPlugin&&new ESLintPlugin({threads:true,extensions:["js","md","mdx","cjs","ejs","mjs","jsx","ts","tsx","json","html","coffee","vue"]}),StylelintPlugin&&new StylelintPlugin({fix:true,threads:true,extensions:["css","less"]}),new _htmlWebpackPlugin.default(_htmlPluginOption.default),new _addAssetHtmlWebpackPlugin.default(assetHtmlOption),_processEnv.APPTYPE==="single-spa"&&new _htmlAddEntryAttr.default(function(src){return!!(src.match(/main\.(.*)\.bundle.js$/)||src.match("main.bundle.js"))}),new _webpack.DefinePlugin(_envFlags.default),new _webpack.WatchIgnorePlugin({paths:[/\.d\.ts$/]}),_common.CONFIG.sourceMap&&new _webpack.SourceMapDevToolPlugin(_common.CONFIG.sourceMap),new _webpackbar.default({name:"编译中",color:"#6f42c1"})],_toConsumableArray(_common.CONFIG.plugins)).filter(Boolean),experiments:{topLevelAwait:true},resolve:{extensions:[".tsx",".ts",".js",".jsx"],alias:alias,fallback:{path:false,fs:false,crypto:false}},module:_moduleConfig.default,externals:_common.CONFIG.externals,output:{path:_common.CONFIG.output,filename:"js/[name].bundle.js",chunkFilename:"js/[name].chunk.js",assetModuleFilename:"assets/[name].[hash][ext]",library:_processEnv.PACKAGENAME,libraryTarget:"window",globalObject:"window",chunkLoadingGlobal:"webpackJsonp_".concat(_processEnv.PACKAGENAME),publicPath:_common.PUBLICPATH,pathinfo:false,clean:_common.CONFIG.clean}};var _default=config;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type
|
|
3
|
-
import type { RouterProps } from '../../router';
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
import { type RouterProps } from '../../router';
|
|
4
3
|
interface AppRouterProps {
|
|
5
4
|
router: RouterProps[];
|
|
6
|
-
fallback?:
|
|
5
|
+
fallback?: ReactElement;
|
|
7
6
|
}
|
|
8
|
-
declare const
|
|
9
|
-
export default
|
|
7
|
+
declare const _default: import("react").NamedExoticComponent<AppRouterProps>;
|
|
8
|
+
export default _default;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import{Suspense,useCallback,memo,createElement,cloneElement}from"react";import{useRoutes}from"react-router-dom";import{isEqual}from"@moneko/common";import Fallback from"../fallback";var AppRoute=function(param){var router=param.router,_param_fallback=param.fallback,fallback=_param_fallback===void 0?React.createElement(Fallback,null):_param_fallback;var prefixRouter=useCallback(function(list){return list.map(function(r){if(r.element){Object.assign(r,{element:createElement(Suspense,{fallback:r.fallback||fallback},cloneElement(r.element,{path:r.key}))})}if(Array.isArray(r.children)){Object.assign(r,{children:prefixRouter(r.children)})}return r})},[fallback]);var routers=useRoutes(prefixRouter(router));return React.createElement(React.Fragment,null,routers)};export default memo(AppRoute,function(pre,next){return isEqual({router:pre.router,fallback:pre.fallback},{router:next.router,fallback:next.fallback})});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/app-router/index.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../src/components/app-router/index.tsx"],"sourcesContent":["import {\n type FC,\n type ReactElement,\n Suspense,\n useCallback,\n memo,\n createElement,\n cloneElement,\n} from 'react';\nimport { useRoutes } from 'react-router-dom';\nimport { type RouterProps } from '../../router';\nimport { isEqual } from '@moneko/common';\nimport Fallback from '../fallback';\n\ninterface AppRouterProps {\n router: RouterProps[];\n fallback?: ReactElement;\n}\n\nconst AppRoute: FC<AppRouterProps> = ({ router, fallback = <Fallback /> }) => {\n const prefixRouter = useCallback(\n (list: RouterProps[]) => {\n return list.map((r) => {\n if (r.element) {\n Object.assign(r, {\n element: createElement(\n Suspense,\n {\n fallback: r.fallback || fallback,\n },\n cloneElement(r.element, {\n path: r.key,\n })\n ),\n });\n }\n\n if (Array.isArray(r.children)) {\n Object.assign(r, {\n children: prefixRouter(r.children),\n });\n }\n\n return r;\n });\n },\n [fallback]\n );\n\n const routers = useRoutes(prefixRouter(router));\n\n return <>{routers}</>;\n};\n\nexport default memo(AppRoute, (pre, next) =>\n isEqual(\n { router: pre.router, fallback: pre.fallback },\n { router: next.router, fallback: next.fallback }\n )\n);\n"],"names":["Suspense","useCallback","memo","createElement","cloneElement","useRoutes","isEqual","Fallback","AppRoute","router","fallback","prefixRouter","list","map","r","element","Object","assign","path","key","Array","isArray","children","routers","pre","next"],"mappings":"AAAA,OAGEA,QAAQ,CACRC,WAAW,CACXC,IAAI,CACJC,aAAa,CACbC,YAAY,KACP,OAAQ,AACf,QAASC,SAAS,KAAQ,kBAAmB,AAE7C,QAASC,OAAO,KAAQ,gBAAiB,AACzC,QAAOC,aAAc,aAAc,CAOnC,IAAMC,SAA+B,eAAyC,KAAtCC,aAAAA,6BAAQC,SAAAA,kCAAW,oBAACH,+BAC1D,IAAMI,aAAeV,YACnB,SAACW,KAAwB,CACvB,OAAOA,KAAKC,GAAG,CAAC,SAACC,EAAM,CACrB,GAAIA,EAAEC,OAAO,CAAE,CACbC,OAAOC,MAAM,CAACH,EAAG,CACfC,QAASZ,cACPH,SACA,CACEU,SAAUI,EAAEJ,QAAQ,EAAIA,QAC1B,EACAN,aAAaU,EAAEC,OAAO,CAAE,CACtBG,KAAMJ,EAAEK,GAAG,AACb,GAEJ,EACF,CAAC,AAED,GAAIC,MAAMC,OAAO,CAACP,EAAEQ,QAAQ,EAAG,CAC7BN,OAAOC,MAAM,CAACH,EAAG,CACfQ,SAAUX,aAAaG,EAAEQ,QAAQ,CACnC,EACF,CAAC,AAED,OAAOR,CACT,EACF,EACA,CAACJ,SAAS,EAGZ,IAAMa,QAAUlB,UAAUM,aAAaF,SAEvC,OAAO,wCAAGc,QACZ,CAEA,gBAAerB,KAAKM,SAAU,SAACgB,IAAKC,aAClCnB,QACE,CAAEG,OAAQe,IAAIf,MAAM,CAAEC,SAAUc,IAAId,QAAQ,AAAC,EAC7C,CAAED,OAAQgB,KAAKhB,MAAM,CAAEC,SAAUe,KAAKf,QAAQ,AAAC,IAEjD"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
declare const _default:
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
declare const _default: import("react").NamedExoticComponent<{}>;
|
|
3
3
|
export default _default;
|
|
@@ -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 _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _toArray(arr){return _arrayWithHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableRest()}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
|
|
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 _arrayWithHoles(arr){if(Array.isArray(arr))return arr}function _iterableToArray(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterableToArrayLimit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_unsupportedIterableToArray(arr,i)||_nonIterableRest()}function _toArray(arr){return _arrayWithHoles(arr)||_iterableToArray(arr)||_unsupportedIterableToArray(arr)||_nonIterableRest()}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{useMemo,useState,memo}from"react";import{useOutlet}from"react-router-dom";import FallbackComp from"../fallback-comp";var Fallback=function(){var _useOutlet;var outlet=(_useOutlet=useOutlet())===null||_useOutlet===void 0?void 0:_useOutlet.props.children;var _useState=_slicedToArray(useState(React.createElement(React.Fragment,null,"Loading...")),2),el=_useState[0],setEl=_useState[1];useMemo(function(){if(typeof fallbackCompPath==="string"){var pat=fallbackCompPath.replace(/@\//,"").split("/");var _pat=_toArray(pat),directory=_pat[0],path=_pat.slice(1);setEl(React.createElement(FallbackComp,{directory:directory,compName:path.join("/")}))}},[]);return outlet?outlet:el};export default memo(Fallback,function(){return true});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/fallback/index.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../src/components/fallback/index.tsx"],"sourcesContent":["import { type FC, useMemo, useState, memo } from 'react';\nimport { useOutlet } from 'react-router-dom';\nimport FallbackComp from '../fallback-comp';\n\ndeclare const fallbackCompPath: string;\n\nconst Fallback: FC = () => {\n const outlet = useOutlet()?.props.children;\n const [el, setEl] = useState(<>Loading...</>);\n\n useMemo(() => {\n if (typeof fallbackCompPath === 'string') {\n const pat = fallbackCompPath.replace(/@\\//, '').split('/');\n const [directory, ...path] = pat;\n\n setEl(<FallbackComp directory={directory} compName={path.join('/')} />);\n }\n }, []);\n\n return outlet ? outlet : el;\n};\n\nexport default memo(Fallback, () => true);\n"],"names":["useMemo","useState","memo","useOutlet","FallbackComp","Fallback","outlet","props","children","el","setEl","fallbackCompPath","pat","replace","split","directory","path","compName","join"],"mappings":"AAAA,ykDAAA,OAAkBA,OAAO,CAAEC,QAAQ,CAAEC,IAAI,KAAQ,OAAQ,AACzD,QAASC,SAAS,KAAQ,kBAAmB,AAC7C,QAAOC,iBAAkB,kBAAmB,CAI5C,IAAMC,SAAe,UAAM,KACVF,WAAf,IAAMG,OAASH,CAAAA,WAAAA,qBAAAA,oBAAAA,KAAAA,EAAAA,WAAaI,MAAMC,QAAQ,CAC1C,IAAoBP,yBAAAA,SAAS,wCAAE,kBAAxBQ,GAAaR,aAATS,MAAST,aAEpBD,QAAQ,UAAM,CACZ,GAAI,OAAOW,mBAAqB,SAAU,CACxC,IAAMC,IAAMD,iBAAiBE,OAAO,CAAC,MAAO,IAAIC,KAAK,CAAC,KACtD,IAA6BF,cAAAA,KAAtBG,UAAsBH,QAAX,AAAGI,KAAQJ,WAAX,GAElBF,MAAM,oBAACN,cAAaW,UAAWA,UAAWE,SAAUD,KAAKE,IAAI,CAAC,OAChE,CAAC,AACH,EAAG,EAAE,EAEL,OAAOZ,OAASA,OAASG,EAAE,AAC7B,CAEA,gBAAeP,KAAKG,SAAU,kBAAM,IAAI,EAAE"}
|
package/lib/hooks/navgate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/navgate.ts"],"sourcesContent":["import { useNavigate as useNavigateReactRouter, useSearchParams } from 'react-router-dom';\nimport type { NavigateOptions, To } from 'react-router-dom';\n\nconst useNavigate = (\n /** search保留字 */\n reserved?: string | string[]\n) => {\n const reservedWord = Array.from(\n new Set(['menuId', 'dynamicTitle'].concat(reserved || ''))\n ).filter(Boolean);\n const navigates = useNavigateReactRouter();\n const [search] = useSearchParams();\n\n const navigate = (to: To | -1, options?: NavigateOptions) => {\n if (to === -1) {\n navigates(-1);\n return;\n }\n /** 提取保留字属性 */\n const nextSerach: Record<string, string> = {};\n\n search.forEach((val, key) => {\n if (reservedWord.includes(key)) {\n Object.assign(nextSerach, {\n [key]: val,\n });\n }\n });\n\n let entryUrl = to as string;\n const entrySearchIdx = (entryUrl as string).indexOf('?');\n\n if (entrySearchIdx !== -1) {\n const searchByToUrl = new URLSearchParams(entryUrl.slice(entrySearchIdx));\n\n searchByToUrl.forEach((val, key) => {\n Object.assign(nextSerach, {\n [key]: val,\n });\n });\n entryUrl = entryUrl.substring(0, entrySearchIdx);\n }\n\n const searchObj = new URLSearchParams(nextSerach);\n const searchString = searchObj.toString();\n const toUrl = searchString?.trim().length ? [entryUrl, searchString].join('?') : entryUrl;\n\n navigates(toUrl, options);\n };\n\n return navigate;\n};\n\nexport default useNavigate;\n"],"names":["useNavigate","useNavigateReactRouter","useSearchParams","reserved","reservedWord","Array","from","Set","concat","filter","Boolean","navigates","search","navigate","to","options","nextSerach","forEach","val","key","includes","Object","assign","entryUrl","entrySearchIdx","indexOf","searchByToUrl","URLSearchParams","slice","substring","searchObj","searchString","toString","toUrl","trim","length","join"],"mappings":"AAAA,8+CAAA,OAASA,eAAeC,sBAAsB,CAAEC,eAAe,KAAQ,kBAAmB,CAG1F,IAAMF,YAAc,SAElBG,SACG,CACH,IAAMC,aAAeC,MAAMC,IAAI,CAC7B,IAAIC,IAAI,CAAC,SAAU,eAAe,CAACC,MAAM,CAACL,UAAY,MACtDM,MAAM,CAACC,SACT,IAAMC,UAAYV,yBAClB,IAAiBC,gCAAAA,qBAAVU,OAAUV,oBAEjB,IAAMW,SAAW,SAACC,GAAaC,QAA8B,CAC3D,GAAID,KAAO,CAAC,EAAG,CACbH,UAAU,CAAC,GACX,MACF,CAAC,AAED,IAAMK,WAAqC,CAAC,EAE5CJ,OAAOK,OAAO,CAAC,SAACC,IAAKC,IAAQ,CAC3B,GAAIf,aAAagB,QAAQ,CAACD,KAAM,CAC9BE,OAAOC,MAAM,CAACN,WACZ,mBAACG,IAAMD,KAEX,CAAC,AACH,GAEA,IAAIK,SAAWT,GACf,IAAMU,eAAiB,AAACD,SAAoBE,OAAO,CAAC,KAEpD,GAAID,iBAAmB,CAAC,EAAG,CACzB,IAAME,cAAgB,IAAIC,gBAAgBJ,SAASK,KAAK,CAACJ,iBAEzDE,cAAcT,OAAO,CAAC,SAACC,IAAKC,IAAQ,CAClCE,OAAOC,MAAM,CAACN,WACZ,mBAACG,IAAMD,KAEX,GACAK,SAAWA,SAASM,SAAS,CAAC,EAAGL,eACnC,CAAC,AAED,IAAMM,UAAY,IAAIH,gBAAgBX,YACtC,IAAMe,aAAeD,UAAUE,QAAQ,GACvC,IAAMC,MAAQF,CAAAA,qBAAAA,sBAAAA,KAAAA,EAAAA,aAAcG,IAAI,
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/navgate.ts"],"sourcesContent":["import { useNavigate as useNavigateReactRouter, useSearchParams } from 'react-router-dom';\nimport type { NavigateOptions, To } from 'react-router-dom';\n\nconst useNavigate = (\n /** search保留字 */\n reserved?: string | string[]\n) => {\n const reservedWord = Array.from(\n new Set(['menuId', 'dynamicTitle'].concat(reserved || ''))\n ).filter(Boolean);\n const navigates = useNavigateReactRouter();\n const [search] = useSearchParams();\n\n const navigate = (to: To | -1, options?: NavigateOptions) => {\n if (to === -1) {\n navigates(-1);\n return;\n }\n /** 提取保留字属性 */\n const nextSerach: Record<string, string> = {};\n\n search.forEach((val, key) => {\n if (reservedWord.includes(key)) {\n Object.assign(nextSerach, {\n [key]: val,\n });\n }\n });\n\n let entryUrl = to as string;\n const entrySearchIdx = (entryUrl as string).indexOf('?');\n\n if (entrySearchIdx !== -1) {\n const searchByToUrl = new URLSearchParams(entryUrl.slice(entrySearchIdx));\n\n searchByToUrl.forEach((val, key) => {\n Object.assign(nextSerach, {\n [key]: val,\n });\n });\n entryUrl = entryUrl.substring(0, entrySearchIdx);\n }\n\n const searchObj = new URLSearchParams(nextSerach);\n const searchString = searchObj.toString();\n const toUrl = searchString?.trim().length ? [entryUrl, searchString].join('?') : entryUrl;\n\n navigates(toUrl, options);\n };\n\n return navigate;\n};\n\nexport default useNavigate;\n"],"names":["useNavigate","useNavigateReactRouter","useSearchParams","reserved","reservedWord","Array","from","Set","concat","filter","Boolean","navigates","search","navigate","to","options","nextSerach","forEach","val","key","includes","Object","assign","entryUrl","entrySearchIdx","indexOf","searchByToUrl","URLSearchParams","slice","substring","searchObj","searchString","toString","toUrl","trim","length","join"],"mappings":"AAAA,8+CAAA,OAASA,eAAeC,sBAAsB,CAAEC,eAAe,KAAQ,kBAAmB,CAG1F,IAAMF,YAAc,SAElBG,SACG,CACH,IAAMC,aAAeC,MAAMC,IAAI,CAC7B,IAAIC,IAAI,CAAC,SAAU,eAAe,CAACC,MAAM,CAACL,UAAY,MACtDM,MAAM,CAACC,SACT,IAAMC,UAAYV,yBAClB,IAAiBC,gCAAAA,qBAAVU,OAAUV,oBAEjB,IAAMW,SAAW,SAACC,GAAaC,QAA8B,CAC3D,GAAID,KAAO,CAAC,EAAG,CACbH,UAAU,CAAC,GACX,MACF,CAAC,AAED,IAAMK,WAAqC,CAAC,EAE5CJ,OAAOK,OAAO,CAAC,SAACC,IAAKC,IAAQ,CAC3B,GAAIf,aAAagB,QAAQ,CAACD,KAAM,CAC9BE,OAAOC,MAAM,CAACN,WACZ,mBAACG,IAAMD,KAEX,CAAC,AACH,GAEA,IAAIK,SAAWT,GACf,IAAMU,eAAiB,AAACD,SAAoBE,OAAO,CAAC,KAEpD,GAAID,iBAAmB,CAAC,EAAG,CACzB,IAAME,cAAgB,IAAIC,gBAAgBJ,SAASK,KAAK,CAACJ,iBAEzDE,cAAcT,OAAO,CAAC,SAACC,IAAKC,IAAQ,CAClCE,OAAOC,MAAM,CAACN,WACZ,mBAACG,IAAMD,KAEX,GACAK,SAAWA,SAASM,SAAS,CAAC,EAAGL,eACnC,CAAC,AAED,IAAMM,UAAY,IAAIH,gBAAgBX,YACtC,IAAMe,aAAeD,UAAUE,QAAQ,GACvC,IAAMC,MAAQF,CAAAA,qBAAAA,sBAAAA,KAAAA,EAAAA,aAAcG,IAAI,GAAGC,MAAM,EAAG,CAACZ,SAAUQ,aAAa,CAACK,IAAI,CAAC,KAAOb,QAAQ,CAEzFZ,UAAUsB,MAAOlB,QACnB,EAEA,OAAOF,QACT,CAEA,gBAAeb,WAAY"}
|
package/lib/router/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ReactElement, type ReactNode } from 'react';
|
|
2
2
|
import type { RouteObject } from 'react-router-dom';
|
|
3
3
|
import type { KeepAliveProps } from 'react-activation';
|
|
4
4
|
export interface RouterProps extends Omit<RouteObject, 'index' | 'children'> {
|
|
@@ -12,7 +12,8 @@ export interface RouterProps extends Omit<RouteObject, 'index' | 'children'> {
|
|
|
12
12
|
onlyLogin?: boolean;
|
|
13
13
|
root?: boolean;
|
|
14
14
|
path?: string;
|
|
15
|
-
element?:
|
|
15
|
+
element?: ReactElement;
|
|
16
|
+
fallback?: ReactElement;
|
|
16
17
|
/** 可否关闭标签 */
|
|
17
18
|
closable?: boolean;
|
|
18
19
|
children?: 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
|
|
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{lazyImport}from"../utils/lazy-import";import{pathToRegexp}from"path-to-regexp";import{createElement,lazy}from"react";export var myPkgs=[];if(APPTYPE==="library"){var models=require.context("@pkg/",true,/README\.mdx?$/,"lazy");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';\nimport { lazyImport } from '../utils/lazy-import';\nimport { pathToRegexp } from 'path-to-regexp';\nimport type { ReactNode } from 'react';\nimport type { RouteObject } from 'react-router-dom';\nimport type { KeepAliveProps } from 'react-activation';\n\nexport 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\nexport const myPkgs: RouterProps[] = [];\nif (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\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: 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};\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 = React.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":["React","lazyImport","pathToRegexp","myPkgs","APPTYPE","Readme","require","default","models","context","keys","map","item","key","substring","split","slice","join","push","path","element","createElement","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 { lazyImport } from '../utils/lazy-import';\nimport { pathToRegexp } from 'path-to-regexp';\nimport { createElement, lazy, type ReactElement, type ReactNode } from 'react';\nimport type { RouteObject } from 'react-router-dom';\nimport type { KeepAliveProps } from 'react-activation';\n\nexport 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?: ReactElement;\n fallback?: ReactElement;\n /** 可否关闭标签 */\n closable?: boolean;\n children?: RouterProps[];\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(\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":["lazyImport","pathToRegexp","createElement","lazy","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","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,34 +1,22 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ComponentType, type ReactElement } from 'react';
|
|
2
2
|
declare type SafeImportParams = {
|
|
3
3
|
/** 文件路径 */
|
|
4
4
|
filePath: string;
|
|
5
|
-
/** src目录下的文件夹路径 ['src/pages' === 'pages'] */
|
|
6
|
-
directory?: string;
|
|
7
5
|
/** 重试次数 默认:2 */
|
|
8
6
|
retriesLeft?: number;
|
|
9
7
|
/** 加载错误时的回调 */
|
|
10
8
|
onError?: () => void;
|
|
11
9
|
/** 降级 */
|
|
12
|
-
fallback?:
|
|
10
|
+
fallback?: ReactElement;
|
|
13
11
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* @param {string} filePath 路径
|
|
17
|
-
* @param {string} directory src目录下的文件夹路径 ['src/pages' === 'pages']
|
|
18
|
-
* @param {number} [retriesLeft=2] 重试次数
|
|
19
|
-
* @param {Function} onError 加载错误时的回调
|
|
20
|
-
* @param {any} fallback 降级
|
|
21
|
-
* @returns {Promise} LazyExoticComponent
|
|
22
|
-
* */
|
|
23
|
-
export declare const safeImport: ({ filePath, directory, retriesLeft, onError, fallback, }: SafeImportParams) => Promise<{
|
|
24
|
-
default: any;
|
|
12
|
+
export declare const safeImport: ({ filePath, retriesLeft, onError, fallback, }: SafeImportParams) => Promise<{
|
|
13
|
+
default: ComponentType;
|
|
25
14
|
}>;
|
|
26
15
|
/**
|
|
27
16
|
* 动态引入
|
|
28
17
|
* @param {string} filePath 文件路径
|
|
29
|
-
* @param {string} directory 文件夹路径
|
|
30
18
|
* @param {Function} onError 加载错误时的回调
|
|
31
19
|
* @returns {Promise} LazyExoticComponent
|
|
32
20
|
* */
|
|
33
|
-
export declare const lazyImport: (filePath: string,
|
|
21
|
+
export declare const lazyImport: (filePath: string, onError?: () => void) => React.LazyExoticComponent<ComponentType>;
|
|
34
22
|
export {};
|
package/lib/utils/lazy-import.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{createElement,lazy}from"react";import{Outlet}from"react-router-dom";export var safeImport=function(param){var filePath=param.filePath,_param_retriesLeft=param.retriesLeft,retriesLeft=_param_retriesLeft===void 0?2:_param_retriesLeft,onError=param.onError,fallback=param.fallback;var filePaths=filePath.startsWith("/")?filePath.slice(1):filePath;return new Promise(function(resolve){return import("@/pages/"+filePaths).then(resolve).catch(function(){if(retriesLeft===1){if(onError){onError()}return Promise.resolve({default:fallback})}return safeImport({filePath:filePath,retriesLeft:retriesLeft-1,onError:onError,fallback:fallback})})})};export var lazyImport=function(filePath,onError){var filePaths=filePath.startsWith("/")?filePath.slice(1):filePath;return lazy(function(){return safeImport({filePath:filePath,onError:onError,fallback:createElement("div",{path:"pages/"+filePaths},createElement(Outlet))})})};
|
|
2
2
|
//# sourceMappingURL=lazy-import.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/lazy-import.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/utils/lazy-import.ts"],"sourcesContent":["import { ComponentType, createElement, lazy, type ReactElement } from 'react';\nimport { Outlet } from 'react-router-dom';\n\ntype SafeImportParams = {\n /** 文件路径 */\n filePath: string;\n /** 重试次数 默认:2 */\n retriesLeft?: number;\n /** 加载错误时的回调 */\n onError?: () => void;\n /** 降级 */\n fallback?: ReactElement;\n};\n\n// 安全的import\nexport const safeImport = ({\n filePath,\n retriesLeft = 2,\n onError,\n fallback,\n}: SafeImportParams): Promise<{\n default: ComponentType;\n}> => {\n const filePaths = filePath.startsWith('/') ? filePath.slice(1) : filePath;\n\n return new Promise((resolve) =>\n import(\n /* webpackChunkName: \"[request]\" */\n '@/pages/' + filePaths\n )\n .then(resolve)\n .catch(() => {\n if (retriesLeft === 1) {\n if (onError) {\n onError();\n }\n return Promise.resolve({\n default: fallback as unknown as ComponentType,\n });\n }\n // 失败之后重载\n return safeImport({\n filePath,\n retriesLeft: retriesLeft - 1,\n onError,\n fallback,\n });\n })\n );\n};\n\n/**\n * 动态引入\n * @param {string} filePath 文件路径\n * @param {Function} onError 加载错误时的回调\n * @returns {Promise} LazyExoticComponent\n * */\nexport const lazyImport = (\n filePath: string,\n onError?: () => void\n): React.LazyExoticComponent<ComponentType> => {\n const filePaths = filePath.startsWith('/') ? filePath.slice(1) : filePath;\n\n return lazy(() =>\n safeImport({\n filePath,\n onError,\n fallback: createElement(\n 'div',\n {\n path: 'pages/' + filePaths,\n },\n createElement(Outlet)\n ),\n })\n );\n};\n"],"names":["createElement","lazy","Outlet","safeImport","filePath","retriesLeft","onError","fallback","filePaths","startsWith","slice","Promise","resolve","then","catch","default","lazyImport","path"],"mappings":"AAAA,OAAwBA,aAAa,CAAEC,IAAI,KAA2B,OAAQ,AAC9E,QAASC,MAAM,KAAQ,kBAAmB,AAc1C,QAAO,IAAMC,WAAa,eAOpB,KANJC,eAAAA,kCACAC,YAAAA,wCAAc,qBACdC,cAAAA,QACAC,eAAAA,SAIA,IAAMC,UAAYJ,SAASK,UAAU,CAAC,KAAOL,SAASM,KAAK,CAAC,GAAKN,QAAQ,CAEzE,OAAO,IAAIO,QAAQ,SAACC,gBAClB,MAAM,CAEJ,WAAaJ,WAEZK,IAAI,CAACD,SACLE,KAAK,CAAC,UAAM,CACX,GAAIT,cAAgB,EAAG,CACrB,GAAIC,QAAS,CACXA,SACF,CAAC,AACD,OAAOK,QAAQC,OAAO,CAAC,CACrBG,QAASR,QACX,EACF,CAAC,AAED,OAAOJ,WAAW,CAChBC,SAAAA,SACAC,YAAaA,YAAc,EAC3BC,QAAAA,QACAC,SAAAA,QACF,EACF,IAEN,CAAE,AAQF,QAAO,IAAMS,WAAa,SACxBZ,SACAE,QAC6C,CAC7C,IAAME,UAAYJ,SAASK,UAAU,CAAC,KAAOL,SAASM,KAAK,CAAC,GAAKN,QAAQ,CAEzE,OAAOH,KAAK,kBACVE,WAAW,CACTC,SAAAA,SACAE,QAAAA,QACAC,SAAUP,cACR,MACA,CACEiB,KAAM,SAAWT,SACnB,EACAR,cAAcE,QAElB,IAEJ,CAAE"}
|
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.6",
|
|
4
4
|
"description": "core",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -26,9 +26,8 @@
|
|
|
26
26
|
"@swc/core": "1.3.21",
|
|
27
27
|
"@swc/helpers": "0.4.14",
|
|
28
28
|
"@swc/plugin-emotion": "2.5.21",
|
|
29
|
-
"@swc/plugin-transform-imports": "1.5.
|
|
29
|
+
"@swc/plugin-transform-imports": "1.5.21",
|
|
30
30
|
"add-asset-html-webpack-plugin": "5.0.2",
|
|
31
|
-
"antd-dayjs-webpack-plugin": "1.0.6",
|
|
32
31
|
"core-js": "3.26.0",
|
|
33
32
|
"cross-env": "7.0.3",
|
|
34
33
|
"css-loader": "6.7.2",
|