@moneko/core 3.0.0-beta.2 → 3.0.0-beta.4

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/done.d.ts CHANGED
@@ -2,7 +2,15 @@ declare class DoneWebpackPlugin {
2
2
  options: {
3
3
  done?: () => void;
4
4
  };
5
- constructor(options: any);
6
- apply(compiler: any): void;
5
+ constructor(options: {
6
+ done?: () => void;
7
+ });
8
+ apply(compiler: {
9
+ hooks: {
10
+ done: {
11
+ tap: (arg0: string, arg1: () => void) => void;
12
+ };
13
+ };
14
+ }): void;
7
15
  }
8
16
  export default DoneWebpackPlugin;
@@ -1 +1 @@
1
- var t=function(){"use strict";function t(t){this.entryMatchCallback=t}return t.prototype.apply=function(t){var n=this;t.hooks.compilation.tap("AddEntryAttributeWebpackPlugin",function(r){var a=t.options.plugins.map(function(t){return t.constructor}).find(function(t){return t&&"HtmlWebpackPlugin"===t.name});a&&a.getHooks(r).alterAssetTagGroups.tap("AddEntryAttributeWebpackPlugin",function(t){return t.headTags.forEach(function(t){var r;"script"===t.tagName&&n.entryMatchCallback(null==(r=t.attributes)?void 0:r.src)&&(t.attributes.entry=!0)}),t})})},t}();export default t;
1
+ var t=function(){"use strict";function t(t){this.entryMatchCallback=t}return t.prototype.apply=function(t){var n=this;t.hooks.compilation.tap("AddEntryAttributeWebpackPlugin",function(r){var a=t.options.plugins.map(function(t){return t.constructor}).find(function(t){return t&&"HtmlWebpackPlugin"===t.name});a&&a.getHooks(r).alterAssetTagGroups.tap("AddEntryAttributeWebpackPlugin",function(t){return t.headTags.forEach(function(t){var r;"script"===t.tagName&&"string"==typeof(null==(r=t.attributes)?void 0:r.src)&&n.entryMatchCallback(t.attributes.src)&&(t.attributes.entry=!0)}),t})})},t}();export default t;
package/build/minify.d.ts CHANGED
@@ -16,10 +16,10 @@ export declare const minify: MinifyObject;
16
16
  export declare const getMinifyOption: (type: MinifierType, options?: SwcOptions | TerserOptions) => ({
17
17
  minify: typeof TerserPlugin.terserMinify;
18
18
  terserOptions: TerserOptions;
19
- extractComments?: boolean;
19
+ extractComments?: boolean | undefined;
20
20
  } | {
21
21
  minify: typeof TerserPlugin.swcMinify;
22
- terserOptions?: SwcOptions;
22
+ terserOptions?: JsMinifyOptions | undefined;
23
23
  }) & {
24
24
  terserOptions: JsMinifyOptions | import("terser").MinifyOptions;
25
25
  };
@@ -4,8 +4,8 @@ export declare const PROGRAMPATH: string;
4
4
  export declare const PACKAGENAME: string;
5
5
  export declare const PACKAGEVERSION: string;
6
6
  export declare const pkgName: string;
7
- export declare const NODE_ENV: string;
8
- export declare const CUSTOMCONFIG: string;
7
+ export declare const NODE_ENV: string | undefined;
8
+ export declare const CUSTOMCONFIG: string | undefined;
9
9
  export declare const DEV: boolean;
10
10
  export declare let hasEslintConfig: boolean;
11
11
  export declare let hasStylelintConfig: boolean;
@@ -15,15 +15,15 @@ export declare const programInfo: {
15
15
  name: string;
16
16
  version: string;
17
17
  type: AppType;
18
- description: string;
18
+ description: string | undefined;
19
19
  author: {
20
- name: string;
21
- email: string;
22
- url: string;
20
+ name: string | undefined;
21
+ email: string | undefined;
22
+ url: string | undefined;
23
23
  };
24
24
  repository: {
25
- type: string;
26
- url: string;
27
- directory: string;
25
+ type: string | undefined;
26
+ url: string | undefined;
27
+ directory: string | undefined;
28
28
  };
29
29
  };
@@ -1,5 +1,4 @@
1
1
  import type { WebpackConfiguration } from 'webpack-dev-server';
2
2
  export declare const outputConfig: WebpackConfiguration['output'];
3
- export declare const __filename: string;
4
3
  declare const config: WebpackConfiguration;
5
4
  export default config;
@@ -1 +1 @@
1
- function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function n(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return t(e,n)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}import r from"fs";import{join as o,dirname as s}from"path";import i from"url";import a from"add-asset-html-webpack-plugin";import l from"html-webpack-plugin";import{DefinePlugin as p,WatchIgnorePlugin as u,SourceMapDevToolPlugin as c,AutomaticPrefetchPlugin as m}from"webpack";import f from"webpackbar";import{CONFIG as d,ENTRYPATH as y,PUBLICPATH as g}from"./common";import h from"./done";import b from"./envFlags";import j from"./html-add-entry-attr";import w from"./html-plugin-option";import{moduleFederation as x}from"./module-federation";import v from"./module.config";import{APPTYPE as k,DEV as O,hasEslintConfig as A,hasStylelintConfig as C,PACKAGENAME as S,PROGRAMPATH as T}from"./process-env";import{seo as _}from"./seo";import{resolveProgramPath as B}from"./utils";for(var K,L,M=[".eslintrc.js",".eslintrc.json",".eslintrc.yaml",".eslintrc.json"],P=[".stylelintrc",".stylelintrc.json",".stylelintrc.yaml",".stylelintrc.yml",".stylelintrc.js","stylelint.config.js","stylelint.config.cjs"],F=r.readdirSync(T),I=!1,R=!1,$=0,q=F.length;$<q;$++)P.includes(F[$])&&(R=!0),M.includes(F[$])&&(I=!0);I||(I=A),R||(R=C);var E=R?require("stylelint-webpack-plugin"):null,U=I?require("eslint-webpack-plugin"):null,W={"@":B("src")};Object.assign(W,d.alias),"library"===k&&Object.assign(W,((K={"@":B("site"),"@pkg":B("components")})[S]=B("components"),K));var G=d.assetHtml.map(function(t){return e({publicPath:""},t)});export var outputConfig={path:B("library"===k?"docs":"dist"),filename:"js/[name].bundle.js",chunkFilename:"js/[name].chunk.js",assetModuleFilename:"assets/[name].[hash][ext]",library:S,libraryTarget:"window",globalObject:"window",chunkLoadingGlobal:"webpackJsonp_"+S,pathinfo:!1,clean:!0,publicPath:g};export var __filename=i.fileURLToPath(import.meta.url);var H=s(__filename),J=o(H,"../lib/packages/"+y[k]+"/index.js");"single-component"===k&&(Object.assign(W,((L={})[S]=B("umd"),L)),J=B(O?"example/index.ts":"src/index.ts"),outputConfig.path=B(O?"dist":"umd"),outputConfig.filename="index.js",outputConfig.library=S,outputConfig.libraryTarget="umd",outputConfig.libraryExport="default");var N={main:J};d.entry&&("string"==typeof d.entry?N=d.entry:Object.keys(d.entry)&&Object.assign(N,d.entry)),d.output&&("string"==typeof d.output?outputConfig.path=d.output:Object.keys(d.output)&&Object.assign(outputConfig,d.output));var z=d.routeBaseName.split("/").filter(Boolean).length,D=Array(z).fill("..").join("/")+(z?"/":"")+"404.html",Q=d.fixBrowserRouter||{},V=Q.pathSegmentsToKeep,X=void 0===V?z:V,Y=Q.path,Z={entry:N,stats:"errors-only",infrastructureLogging:{level:"none"},target:"web",plugins:[new m].concat(n(x),[U&&new U({threads:!0,extensions:["js","md","mdx","cjs","ejs","mjs","jsx","ts","tsx","json","html","coffee","vue"]}),E&&new E({fix:!0,threads:!0,extensions:["css","scss","sass","less","ts","tsx","js","jsx"],exclude:["node_modules/","es/","lib/","docs/","coverage/","dist/"]}),new l(w),d.fixBrowserRouter&&new l({filename:void 0===Y?D:Y,inject:!1,templateContent:function(){return"<html html><head><title>"+w.title+"</title><script>var pathSegmentsToKeep = "+(X||z)+";var l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathSegmentsToKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathSegmentsToKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>"}}),new a(G),"single-spa"===k&&new j(function(t){return!!(t.match(/main\.(.*)\.bundle.js$/)||t.match("main.bundle.js"))}),new p(b),new u({paths:[/\.d\.ts$/]}),d.sourceMap&&new c(d.sourceMap),new f({name:"编译中",color:"#6f42c1"}),new h({done:function(){!O&&d.seo&&_(),null==d.done||d.done()}})],n(d.plugins)).filter(Boolean),experiments:{topLevelAwait:!0,syncWebAssembly:!0,asyncWebAssembly:!0},resolve:{extensions:[".tsx",".ts",".js",".jsx"],alias:W,fallback:{path:!1,fs:!1,crypto:!1,assert:!1}},module:v,externals:d.externals,output:outputConfig};export default Z;
1
+ function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=Array(e);n<e;n++)r[n]=t[n];return r}function e(){return(e=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}).apply(this,arguments)}function n(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(e)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return t(e,n)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}import r from"fs";import{join as o}from"path";import s from"url";import i from"add-asset-html-webpack-plugin";import l from"html-webpack-plugin";import{DefinePlugin as a,WatchIgnorePlugin as p,SourceMapDevToolPlugin as u,AutomaticPrefetchPlugin as c}from"webpack";import m from"webpackbar";import{CONFIG as f,ENTRYPATH as d,PUBLICPATH as y}from"./common";import g from"./done";import h from"./envFlags";import b from"./html-add-entry-attr";import j from"./html-plugin-option";import{moduleFederation as w}from"./module-federation";import x from"./module.config";import{APPTYPE as v,DEV as k,hasEslintConfig as O,hasStylelintConfig as A,PACKAGENAME as C,PROGRAMPATH as S}from"./process-env";import{seo as T}from"./seo";import{resolveProgramPath as B}from"./utils";for(var L,K,M=[".eslintrc.js",".eslintrc.json",".eslintrc.yaml",".eslintrc.json"],P=[".stylelintrc",".stylelintrc.json",".stylelintrc.yaml",".stylelintrc.yml",".stylelintrc.js","stylelint.config.js","stylelint.config.cjs"],R=r.readdirSync(S),F=!1,I=!1,U=0,$=R.length;U<$;U++)P.includes(R[U])&&(I=!0),M.includes(R[U])&&(F=!0);F||(F=O),I||(I=A);var q=I?require("stylelint-webpack-plugin"):null,E=F?require("eslint-webpack-plugin"):null,W={"@":B("src")};Object.assign(W,f.alias),"library"===v&&Object.assign(W,((L={"@":B("site"),"@pkg":B("components")})[C]=B("components"),L));var _=f.assetHtml.map(function(t){return e({publicPath:""},t)});export var outputConfig={path:B("library"===v?"docs":"dist"),filename:"js/[name].bundle.js",chunkFilename:"js/[name].chunk.js",assetModuleFilename:"assets/[name].[hash][ext]",library:C,libraryTarget:"window",globalObject:"window",chunkLoadingGlobal:"webpackJsonp_"+C,pathinfo:!1,clean:!0,publicPath:y};var G=s.fileURLToPath(new URL(".",import.meta.url)),H=o(G,"../lib/packages/"+d[v]+"/index.js");"single-component"===v&&(Object.assign(W,((K={})[C]=B("umd"),K)),H=B(k?"example/index.ts":"src/index.ts"),outputConfig.path=B(k?"dist":"umd"),outputConfig.filename="index.js",outputConfig.library=C,outputConfig.libraryTarget="umd",outputConfig.libraryExport="default");var J={main:H};f.entry&&("string"==typeof f.entry?J=f.entry:Object.keys(f.entry)&&Object.assign(J,f.entry)),f.output&&("string"==typeof f.output?outputConfig.path=f.output:Object.keys(f.output)&&Object.assign(outputConfig,f.output));var N=f.routeBaseName.split("/").filter(Boolean).length,z=Array(N).fill("..").join("/")+(N?"/":"")+"404.html",D=f.fixBrowserRouter||{},Q=D.pathSegmentsToKeep,V=void 0===Q?N:Q,X=D.path,Y={entry:J,stats:"errors-only",infrastructureLogging:{level:"none"},target:"web",plugins:[new c].concat(n(w),[E&&new E({threads:!0,extensions:["js","md","mdx","cjs","ejs","mjs","jsx","ts","tsx","json","html","coffee","vue"]}),q&&new q({fix:!0,threads:!0,extensions:["css","scss","sass","less","ts","tsx","js","jsx"],exclude:["node_modules/","es/","lib/","docs/","coverage/","dist/"]}),new l(j),f.fixBrowserRouter&&new l({filename:void 0===X?z:X,inject:!1,templateContent:function(){return"<html html><head><title>"+j.title+"</title><script>var pathSegmentsToKeep = "+(V||N)+";var l = window.location;l.replace(l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + l.pathname.split('/').slice(0, 1 + pathSegmentsToKeep).join('/') + '/?/' + l.pathname.slice(1).split('/').slice(pathSegmentsToKeep).join('/').replace(/&/g, '~and~') + (l.search ? '&' + l.search.slice(1).replace(/&/g, '~and~') : '') + l.hash);</script></head><body></body></html>"}}),new i(_),"single-spa"===v&&new b(function(t){return!!(t.match(/main\.(.*)\.bundle.js$/)||t.match("main.bundle.js"))}),new a(h),new p({paths:[/\.d\.ts$/]}),f.sourceMap&&new u(f.sourceMap),new m({name:"编译中",color:"#6f42c1"}),new g({done:function(){!k&&f.seo&&T(),null==f.done||f.done()}})],n(f.plugins)).filter(Boolean),experiments:{topLevelAwait:!0,syncWebAssembly:!0,asyncWebAssembly:!0},resolve:{extensions:[".tsx",".ts",".js",".jsx"],alias:W,fallback:{path:!1,fs:!1,crypto:!1,assert:!1}},module:x,externals:f.externals,output:outputConfig};export default Y;
@@ -1 +1 @@
1
- import{HotModuleReplacementPlugin as e}from"webpack";import{merge as r}from"webpack-merge";import{CONFIG as o}from"./common";import{hasPkg as t}from"./has-pkg";import{hasReact as n}from"./process-env";import{getIPAdress as i,resolveProgramPath as s}from"./utils";import p from"./webpack.common";var a=require("@soda/friendly-errors-webpack-plugin"),l=require("chalk"),c=require("portfinder").getPort,m=t("@moneko/mock"),d=m?require("@moneko/mock").default:null,v=n?require("@pmmmwh/react-refresh-webpack-plugin").default:null,u=!1;o.cacheDirectory&&(u={type:"filesystem",allowCollectingMemory:!0,cacheDirectory:o.cacheDirectory});var h=!1===o.devtool||o.devtool?o.devtool:"eval-cheap-module-source-map",f=new Promise(function(t){c({port:o.devServer.port,stopPort:9999},function(c,f){var w=[];o.devServer.port!==f&&w.push("Port "+l.yellow(o.devServer.port)+" is in use, trying "+l.green(f)+" instead"),o.devServer.port=f;var g="/"===o.routeBaseName,k=o.devServer.https?"https:":"http:",y=g?"":o.routeBaseName,S=r(p,{devtool:h,mode:"development",cache:u,devServer:{headers:{"Access-Control-Allow-Origin":"*"},compress:o.devServer.compress,host:"0.0.0.0",port:f,historyApiFallback:g||{index:y,disableDotRule:!0},https:o.devServer.https,proxy:o.proxy,allowedHosts:o.devServer.allowedHosts,client:{progress:!1,logging:"info",overlay:!1},static:{watch:{ignored:function(e){return e.endsWith(".d.ts")}}},setupMiddlewares:function(e,r){if(!r)throw Error("webpack-dev-server is not defined");return r.app&&m&&d(r.app,s("mock/")),e},open:!1,hot:!0},plugins:[new e,n&&new v,new a({compilationSuccessInfo:{messages:["You application is running here:\n\n local: "+l.cyan(k+"//"+o.devServer.host+":"+f+y)+"\n network: "+l.cyan(k+"//"+i()+":"+f+y)],notes:w},clearConsole:!0})].filter(Boolean)});t(S)})});export default f;
1
+ import e from"@soda/friendly-errors-webpack-plugin";import r from"chalk";import{getPort as o}from"portfinder";import{HotModuleReplacementPlugin as t}from"webpack";import{merge as n}from"webpack-merge";import{CONFIG as p}from"./common";import{hasPkg as i}from"./has-pkg";import{hasReact as s}from"./process-env";import{getIPAdress as a,resolveProgramPath as l}from"./utils";import c from"./webpack.common";var m=i("@moneko/mock"),d=m?require("@moneko/mock").default:null,v=s?require("@pmmmwh/react-refresh-webpack-plugin").default:null,u=!1;p.cacheDirectory&&(u={type:"filesystem",allowCollectingMemory:!0,cacheDirectory:p.cacheDirectory});var f=!1===p.devtool||p.devtool?p.devtool:"eval-cheap-module-source-map",h=new Promise(function(i){o({port:p.devServer.port,stopPort:9999},function(o,h){var w=[];p.devServer.port!==h&&w.push("Port "+r.yellow(p.devServer.port)+" is in use, trying "+r.green(h)+" instead"),p.devServer.port=h;var g="/"===p.routeBaseName,k=p.devServer.https?"https:":"http:",y=g?"":p.routeBaseName,S=n(c,{devtool:f,mode:"development",cache:u,devServer:{headers:{"Access-Control-Allow-Origin":"*"},compress:p.devServer.compress,host:"0.0.0.0",port:h,historyApiFallback:g||{index:y,disableDotRule:!0},https:p.devServer.https,proxy:p.proxy,allowedHosts:p.devServer.allowedHosts,client:{progress:!1,logging:"info",overlay:!1},static:{watch:{ignored:function(e){return e.endsWith(".d.ts")}}},setupMiddlewares:function(e,r){if(!r)throw Error("webpack-dev-server is not defined");return r.app&&m&&d(r.app,l("mock/")),e},open:!1,hot:!0},plugins:[new t,s&&new v,new e({compilationSuccessInfo:{messages:["You application is running here:\n\n local: "+r.cyan(k+"//"+p.devServer.host+":"+h+y)+"\n network: "+r.cyan(k+"//"+a()+":"+h+y)],notes:w},clearConsole:!0})].filter(Boolean)});i(S)})});export default h;
package/lib/index.d.ts CHANGED
@@ -19,7 +19,6 @@ export declare const projectBasicInfo: {
19
19
  type: "mobile" | "site" | "back-stage" | "single-spa" | "library";
20
20
  author: {
21
21
  name: string;
22
- /** 一些项目基本信息 */
23
22
  url?: string | undefined;
24
23
  email?: string | undefined;
25
24
  };
@@ -1 +1 @@
1
- import{isFunction as n}from"@moneko/common";import{Router as o}from"@solidjs/router";import{render as t}from"solid-js/web";import r from"@/index";var e=APPENTRY?require(APPENTRY):null,u=document.getElementById("root");n(null==e?void 0:e.bootstrap)&&(null==e||e.bootstrap());var l=function(){return React.createElement(o,null,React.createElement(r,null))};window.rootInstance={unmount:function(){return null},render:function(){window.rootInstance.unmount=t(l,u)}},window.rootInstance.render(l),n(null==e?void 0:e.mount)&&(null==e||e.mount());
1
+ import{isFunction as o}from"@moneko/common";import{Router as n}from"@solidjs/router";import{render as t}from"solid-js/web";import r from"@/index";var e=APPENTRY?require(APPENTRY):null,u=document.getElementById("root");e&&o(e.bootstrap)&&(null==e.bootstrap||e.bootstrap());var m=function(){return React.createElement(n,null,React.createElement(r,null))};window.rootInstance={unmount:function(){return null},render:function(){window.rootInstance.unmount=t(m,u)}},window.rootInstance.render(m),e&&o(e.mount)&&(null==e.mount||e.mount());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moneko/core",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.4",
4
4
  "description": "core",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -17,11 +17,10 @@
17
17
  "dependencies": {
18
18
  "@emotion/css": "11.11.0",
19
19
  "@mapbox/rehype-prism": "0.8.0",
20
- "@mdx-js/esbuild": "^2.3.0",
21
20
  "@mdx-js/loader": "2.3.0",
22
21
  "@moneko/common": "1.1.0",
22
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10",
23
23
  "@soda/friendly-errors-webpack-plugin": "1.8.1",
24
- "@solidjs/router": "^0.8.2",
25
24
  "@swc/core": "1.3.56",
26
25
  "@swc/css": "0.0.20",
27
26
  "@swc/helpers": "0.5.1",
@@ -31,8 +30,6 @@
31
30
  "css-loader": "6.7.3",
32
31
  "css-minimizer-webpack-plugin": "5.0.0",
33
32
  "css-unicode-loader": "1.0.3",
34
- "esbuild": "^0.17.19",
35
- "esbuild-loader": "^3.0.1",
36
33
  "external-remotes-plugin": "1.0.0",
37
34
  "html-webpack-plugin": "5.5.1",
38
35
  "less": "4.1.3",
@@ -49,7 +46,7 @@
49
46
  "swc-plugin-another-transform-imports": "0.2.3",
50
47
  "ts-import-plugin": "3.0.0",
51
48
  "ts-loader": "9.4.2",
52
- "typescript": "5.0.4",
49
+ "typescript": "^5.0.4",
53
50
  "webpack": "5.76.1",
54
51
  "webpack-bundle-analyzer": "4.8.0",
55
52
  "webpack-cli": "5.1.1",
@@ -59,6 +56,7 @@
59
56
  "xml2js": "0.5.0"
60
57
  },
61
58
  "devDependencies": {
59
+ "@solidjs/router": "^0.8.2",
62
60
  "@swc/cli": "0.1.62",
63
61
  "@types/mini-css-extract-plugin": "^2.5.1",
64
62
  "@types/shelljs": "^0.8.12",