chore: local-nodemodules

This commit is contained in:
liulujian 2026-04-29 18:13:12 +08:00
parent e54bd8af41
commit e091c2539f
65 changed files with 23048 additions and 0 deletions

View File

@ -0,0 +1,21 @@
# @gt4/common
## 安装
pnpm i
## 启动
pnpm dev
## 编译
pnpm build
## 文档打包
pnpm build:site
## 部署
pnpm release

View File

@ -0,0 +1,154 @@
{
"name": "@gt4/common-front",
"version": "2.0.113",
"main": "dist/index.js",
"author": "three musketeers",
"description": "gt4 common sdk",
"license": "MIT",
"keywords": [
"vue"
],
"files": [
"dist"
],
"devDependencies": {
"@babel/core": "7.19.0",
"@babel/eslint-parser": "7.18.9",
"@babel/plugin-proposal-class-properties": "7.18.6",
"@babel/plugin-syntax-jsx": "7.18.6",
"@babel/plugin-transform-runtime": "7.18.10",
"@babel/preset-env": "7.19.0",
"@babel/preset-react": "7.18.6",
"@babel/preset-typescript": "7.18.6",
"@babel/runtime": "7.19.0",
"@changesets/cli": "2.24.4",
"@commitlint/cli": "12.1.4",
"@commitlint/config-conventional": "12.1.4",
"@fortawesome/fontawesome-svg-core": "6.2.0",
"@fortawesome/free-solid-svg-icons": "6.2.0",
"@fortawesome/react-fontawesome": "0.2.0",
"@gtff/tdesign-gt-vue": "1.4.5",
"@ianvs/prettier-plugin-sort-imports": "3.4.2",
"@rollup/plugin-babel": "5.1.0",
"@rollup/plugin-commonjs": "18.0.0",
"@rollup/plugin-json": "4.1.0",
"@rollup/plugin-node-resolve": "11.2.1",
"@rollup/plugin-replace": "2.4.2",
"@rollup/plugin-strip": "2.1.0",
"@rollup/plugin-url": "5.0.1",
"@seanix/cz-emoji-lerna-changelog": "1.0.3",
"@sy/vitest-ui": "0.0.1",
"@types/node": "18.7.13",
"@vitejs/plugin-vue-jsx": "3.0.1",
"@vitest/coverage-c8": "0.30.1",
"@vue/babel-helper-vue-jsx-merge-props": "1.4.0",
"@vue/babel-preset-jsx": "1.4.0",
"@vue/test-utils": "1.3.0",
"@wecity/tdesign-vue-ie": "1.4.5",
"axios": "0.27.2",
"babel-loader": "8.2.5",
"classnames": "2.3.1",
"commitizen": "4.2.5",
"cross-env": "7.0.3",
"css-loader": "5.2.7",
"css-properties-sorting": "1.0.10",
"esbuild": "0.15.5",
"eslint": "8.23.0",
"eslint-config-airbnb-base": "15.0.0",
"eslint-config-prettier": "8.5.0",
"eslint-plugin-import": "2.26.0",
"eslint-plugin-prettier": "4.2.1",
"eslint-plugin-vue": "9.4.0",
"husky": "8.0.1",
"inquirer": "8.2.4",
"jsdom": "^22.0.0",
"less": "4.1.3",
"less-loader": "11.0.0",
"lint-staged": "10.5.4",
"lodash-es": "4.17.21",
"mini-html-webpack-plugin": "3.1.3",
"nodemon": "2.0.20",
"postcss": "8.4.16",
"postcss-less": "^6.0.0",
"prettier": "2.7.1",
"prop-types": "15.8.1",
"qs": "6.11.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-github-btn": "1.4.0",
"react-is": "18.2.0",
"react-rainbow-components": "1.31.0",
"rimraf": "3.0.2",
"rollup": "2.63.0",
"rollup-plugin-analyzer": "3.3.0",
"rollup-plugin-esbuild": "4.8.2",
"rollup-plugin-ignore-import": "1.3.2",
"rollup-plugin-less": "1.1.3",
"rollup-plugin-multi-input": "1.1.1",
"rollup-plugin-postcss": "4.0.1",
"rollup-plugin-static-import": "0.1.1",
"rollup-plugin-styles": "4.0.0",
"rollup-plugin-terser": "~7.0.2",
"rollup-plugin-vue": "5.1.9",
"rollup-pluginutils": "2.8.2",
"style-loader": "2.0.0",
"stylelint": "14.11.0",
"stylelint-config-prettier": "9.0.3",
"stylelint-config-recommended-vue": "1.4.0",
"stylelint-config-tencent": "1.0.0",
"stylelint-order": "5.0.0",
"tdesign-icons-vue": "0.0.8",
"tdesign-vue": "1.4.5",
"unplugin-auto-import": "0.11.2",
"unplugin-vue-components": "0.22.4",
"vite": "4.3.5",
"vite-plugin-vue2": "2.0.2",
"vitest": "0.31.0",
"vue": "2.6.14",
"vue-loader": "15.10.0",
"vue-styleguidist": "4.54.1",
"vue-template-compiler": "2.6.14",
"vuex": "3.4.0",
"webpack": "5.74.0"
},
"peerDependencies": {
"@gtff/tdesign-gt-vue": "1.4.5",
"@wecity/tdesign-vue-ie": "1.4.5",
"tdesign-icons-vue": "0.0.8",
"tdesign-vue": "1.4.5",
"vuex": "3.4.0"
},
"lint-staged": {
"src/**/*.{js,ts,tsx,jsx,vue}": "pnpm lint",
"src/**/*.{vue,less,css,html}": "pnpm lint:style"
},
"dependencies": {
"@wecity/http-json-key-format": "0.0.4-alpha",
"chalk": "2.4.2",
"cross-spawn": "^7.0.3",
"dayjs": "1.11.5",
"qrcodejs2": "0.0.3",
"rollup-plugin-filesize": "^9.1.2",
"uuid": "^9.0.0",
"vue-frag": "1.4.1",
"xwcj-sdk-h5": "1.0.28",
"yargs-parser": "^21.1.1"
},
"engines": {
"pnpm": ">6"
},
"scripts": {
"dev": "vue-styleguidist server --open",
"dev:nodemon": "cross-env NODE_ENV=development nodemon -x vue-styleguidist server",
"prebuild": "rimraf es && rimraf esm && rimraf lib && rimraf dist",
"build:less": "lessc src/style/global.less dist/global.css && lessc src/style/ie.less dist/ie.css",
"build": "cross-env NODE_ENV=production rollup -c ./rollup.config.js && pnpm build:less",
"build:site": "cross-env NODE_ENV=production vue-styleguidist build",
"release": "node ./publish.js",
"lint": "eslint --fix",
"lint:style": "stylelint --fix",
"test": "vitest",
"coverage": "vitest run --coverage",
"vitest-ui": "vitest --ui"
}
}

View File

@ -0,0 +1,4 @@
> 1%
last 2 versions
ie > 8
chrome > 69

View File

@ -0,0 +1,65 @@
module.exports = {
root: true,
env: {
node: true,
browser: true,
},
extends: ['plugin:vue/essential', 'airbnb-base', 'plugin:prettier/recommended'],
parserOptions: {
parser: 'babel-eslint',
ecmaFeatures: {
jsx: true,
},
},
plugins: ['import'],
settings: {
// 别名
'import/resolver': {
alias: {
map: [['@', './src/']],
extensions: ['.js', '.vue'],
},
},
},
rules: {
'func-names': 0,
'import/extensions': 0,
'no-unused-expressions': 0,
/**
* 导入语句前不允许有任何非导入语句
*/
'import/first': 'error',
/**
* 禁止重复导入模块
*/
'import/no-duplicates': 'error',
/**
* 禁止使用 let 导出
*/
'import/no-mutable-exports': 'warn',
/**
* 禁用导入的模块时使用 webpack 特有的语法感叹号
*/
'import/no-webpack-loader-syntax': 'warn',
/**
* 当只有一个导出时必须使用 export default 来导出
*/
'import/prefer-default-export': 'off',
'import/no-extraneous-dependencies': [
'error',
{
devDependencies: true,
},
],
'no-plusplus': [
'error',
{
allowForLoopAfterthoughts: true,
},
],
'import/no-dynamic-require': 0,
'global-require': 0,
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
},
};

View File

@ -0,0 +1,11 @@
存放 vue2 版本的税务行业 UI 组件,只实现页面交互,无数据接口对接
## 构建样式
```sh
# 实时监听编译less
yarn dev:css
# 构建样式
yarn build:less
```

View File

@ -0,0 +1,10 @@
module.exports = {
presets: [
[
'@vue/cli-plugin-babel/preset',
{
useBuiltIns: 'entry',
},
],
],
};

View File

@ -0,0 +1 @@
function r(){return r=Object.assign||function(r){for(var e,t=1;t<arguments.length;t++)for(var n in e=arguments[t])Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r},r.apply(this,arguments)}var e=["attrs","props","domProps"],t=["class","style","directives"],n=["on","nativeOn"],o=function(r,e){return function(){r&&r.apply(this,arguments),e&&e.apply(this,arguments)}},a=function(a){return a.reduce((function(a,i){for(var c in i)if(a[c])if(-1!==e.indexOf(c))a[c]=r({},a[c],i[c]);else if(-1!==t.indexOf(c)){var u=a[c]instanceof Array?a[c]:[a[c]],l=i[c]instanceof Array?i[c]:[i[c]];a[c]=u.concat(l)}else if(-1!==n.indexOf(c))for(var s in i[c])if(a[c][s]){var f=a[c][s]instanceof Array?a[c][s]:[a[c][s]],p=i[c][s]instanceof Array?i[c][s]:[i[c][s]];a[c][s]=f.concat(p)}else a[c][s]=i[c][s];else if("hook"==c)for(var y in i[c])a[c][y]=a[c][y]?o(a[c][y],i[c][y]):i[c][y];else a[c]=i[c];else a[c]=i[c];return a}),{})};function i(r,e,t){return e in r?Object.defineProperty(r,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):r[e]=t,r}function c(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function u(r){return function(r){if(Array.isArray(r))return c(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,e){if(r){if("string"==typeof r)return c(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?c(r,e):void 0}}(r)||function(){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 l(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function s(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?l(Object(t),!0).forEach((function(e){i(r,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):l(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}))}return r}var f={name:"GFilterWrapper",props:{expand:{type:Boolean,default:!1},colNum:{type:Number,default:4,validator:function(r){return-1!==[1,2,3,4,6,12].indexOf(r)}},rowProps:{type:Object,default:function(){return{gutter:[16,0]}}}},methods:{renderContent:function(){var r=this,e=this.$createElement,t=this.$scopedSlots.default(),n=[],o=u(t);o.forEach((function(r,e){var t,o;if(r.isComment)n.push(e);else{var a={};null===(t=r.data)||void 0===t||null===(o=t.directives)||void 0===o||o.forEach((function(r){a[r.rawName]=r.value})),Object.prototype.hasOwnProperty.call(a,"v-show")&&!a["v-show"]&&n.push(e)}}));var i=[],c=o.map((function(r,e){return e}));if(this.expand)i=n;else{var l=[];c.forEach((function(e){n.includes(e)?i.push(e):e!==c.length-1?l.length<r.colNum-1?l.push(e):i.push(e):l.push(e)}))}var f=o.length-i.length,p=Math.ceil(f/this.colNum);if(p>1){var y=Array(this.colNum*p-f).fill("");o.splice.apply(o,[o.length-1,0].concat(u(y)))}var h={props:s({},this.rowProps)};return e("t-row",a([{},h]),[o.map((function(t,n){var o=i.includes(n)?0:12/r.colNum;return e("t-col",a([{},{props:{span:o,key:n},domProps:{"data-index":n}}]),[t])}))])}},render:function(){var r=arguments[0];return r("div",{class:"g-filter-wrapper"},[this.renderContent()])}};export{f as default};

View File

@ -0,0 +1 @@
function r(){return r=Object.assign||function(r){for(var t,e=1;e<arguments.length;e++)for(var n in t=arguments[e])Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r},r.apply(this,arguments)}var t=["attrs","props","domProps"],e=["class","style","directives"],n=["on","nativeOn"],o=function(r,t){return function(){r&&r.apply(this,arguments),t&&t.apply(this,arguments)}},a=function(a){return a.reduce((function(a,i){for(var c in i)if(a[c])if(-1!==t.indexOf(c))a[c]=r({},a[c],i[c]);else if(-1!==e.indexOf(c)){var u=a[c]instanceof Array?a[c]:[a[c]],l=i[c]instanceof Array?i[c]:[i[c]];a[c]=u.concat(l)}else if(-1!==n.indexOf(c))for(var s in i[c])if(a[c][s]){var f=a[c][s]instanceof Array?a[c][s]:[a[c][s]],p=i[c][s]instanceof Array?i[c][s]:[i[c][s]];a[c][s]=f.concat(p)}else a[c][s]=i[c][s];else if("hook"==c)for(var d in i[c])a[c][d]=a[c][d]?o(a[c][d],i[c][d]):i[c][d];else a[c]=i[c];else a[c]=i[c];return a}),{})};function i(r,t,e){return t in r?Object.defineProperty(r,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):r[t]=e,r}function c(r,t){(null==t||t>r.length)&&(t=r.length);for(var e=0,n=new Array(t);e<t;e++)n[e]=r[e];return n}function u(r){return function(r){if(Array.isArray(r))return c(r)}(r)||function(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}(r)||function(r,t){if(r){if("string"==typeof r)return c(r,t);var e=Object.prototype.toString.call(r).slice(8,-1);return"Object"===e&&r.constructor&&(e=r.constructor.name),"Map"===e||"Set"===e?Array.from(r):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?c(r,t):void 0}}(r)||function(){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 l(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function s(r){for(var t=1;t<arguments.length;t++){var e=null!=arguments[t]?arguments[t]:{};t%2?l(Object(e),!0).forEach((function(t){i(r,t,e[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(e)):l(Object(e)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(e,t))}))}return r}var f={name:"GFilterWrapper",props:{expand:{type:Boolean,default:!1},colNum:{type:Number,default:4,validator:function(r){return-1!==[1,2,3,4,6,12].indexOf(r)}},rowProps:{type:Object,default:function(){return{gutter:[16,0]}}}},methods:{getNewItems:function(r){var t=this,e=[],n=0;return r.forEach((function(r){var o=(r.data||{}).attrs,a=void 0===o?{}:o,i=+a["g-col-num"]||+a.gColNum||1;n+i<t.colNum?(n+=i,e.push(r)):n+i===t.colNum?(e.push(r),n=0):(Array(t.colNum-n).fill("").forEach((function(){return e.push("")})),e.push(r),n=i)})),e},renderContent:function(){var r=this,t=this.$createElement,e=this.$scopedSlots.default(),n=[],o=this.getNewItems(u(e)),i=0,c=0,l=[];o.forEach((function(r,t){var e,o,a=(r.data||{}).attrs,u=void 0===a?{}:a,s=+u["g-col-num"]||+u.gColNum||1;if(l.push({index:t,colSpan:s}),i+=s,r.isComment)return n.push(t),void(c+=s);var f={};null===(e=r.data)||void 0===e||null===(o=e.directives)||void 0===o||o.forEach((function(r){f[r.rawName]=r.value})),Object.prototype.hasOwnProperty.call(f,"v-show")&&!f["v-show"]&&(n.push(t),c+=s)}));var f=[];if(this.expand)f=n;else{var p=0;l.forEach((function(t){var e=t.index,o=t.colSpan;n.includes(e)?f.push(e):e!==l.length-1?p<r.colNum-1?p+=o:(f.push(e),c+=o):p+=1}))}var d=i-c,h=Math.ceil(d/this.colNum);if(h>1){var v=Array(this.colNum*h-d).fill("");o.splice.apply(o,[o.length-1,0].concat(u(v)))}var y={props:s({},this.rowProps)};return t("t-row",a([{},y]),[o.map((function(e,n){var o=(e.data||{}).attrs,i=void 0===o?{}:o,c=+i["g-col-num"]||+i.gColNum||1,u=f.includes(n)?0:12/r.colNum*c;return t("t-col",a([{},{props:{span:u,key:n},domProps:{"data-index":n}}]),[e])}))])}},render:function(){var r=arguments[0];return r("div",{class:"g-filter-wrapper"},[this.renderContent()])}};export{f as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{ChevronDownIcon as e,CaretDownSmallIcon as n,CaretRightSmallIcon as r,CloseCircleFilledIcon as t,ErrorIcon as o}from"tdesign-icons-vue";var i,a,c,l={animation:{exclude:(i=navigator.userAgent,a=i.indexOf("compatible")>-1&&i.indexOf("MSIE")>-1,c=i.indexOf("Trident")>-1&&i.indexOf("rv:11.0")>-1,a||c?["ripple"]:[])},pagination:{itemsPerPage:"{size} 条/页",jumpTo:"跳至",page:"页",total:"共 {total} 条"},calendar:{fillWithZero:!1,yearSelection:"{year} 年",monthSelection:"{month} 月",yearRadio:"年",monthRadio:"月",hideWeekend:"隐藏周末",showWeekend:"显示周末",today:"今天",thisMonth:"本月",week:["周一","周二","周三","周四","周五","周六","周日"].join(),cellMonth:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"].join()},transfer:{title:"{checked} / {total}",empty:"暂无数据",placeholder:"请输入"},dialog:{confirm:"确定",cancel:"取消",confirmBtnTheme:{default:"primary",info:"primary",warning:"warning",danger:"danger",success:"success"}},drawer:{confirm:"确定",cancel:"取消"},popconfirm:{confirm:"确定",cancel:"取消",confirmBtnTheme:{default:"primary",warning:"warning",danger:"danger"}},table:{empty:"暂无数据",expandIcon:function(n){return n&&n(e)},sortIcon:function(e){return e&&e(n)}},tree:{empty:"暂无数据",folderIcon:function(e){return e&&e(r)}},select:{empty:"暂无数据",loadingText:"加载中...",clearIcon:function(e){return e&&e(t)}},treeSelect:{empty:"暂无数据",loadingText:"加载中..."},steps:{errorIcon:function(e){return e&&e(o)}}};export{l as zhCH};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
var t={methods:{onItemClick:function(t){var n=this,e=t.path,o=t.target,r=t.href;r?window.open(r,o||"_blank"):"_blank"!==o?"_top"!==o?this.$emit(this.selectedEvent,t,(function(){n.$router&&((n.$route&&n.$route.path)!==e&&n.$router.push(e))})):this.$propsFromQiankun.parentInstance&&this.$propsFromQiankun.parentInstance.$router.push(e):window.open(e)}}};export{t as menuMixins};

View File

@ -0,0 +1 @@
var a={};export{a as default};

View File

@ -0,0 +1 @@
var a={};export{a as default};

View File

@ -0,0 +1 @@
function e(e,E,t){return E in e?Object.defineProperty(e,E,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[E]=t,e}var E,t={SET_SIDEBAR_CONFIG:"SET_SIDEBAR_CONFIG",SET_SIDEBAR_EXPAND_LEVEL:"SET_SIDEBAR_EXPAND_LEVEL",TOGGLE_SIDEBAR:"TOGGLE_SIDEBAR",SET_TOPBAR_CONFIG:"SET_TOPBAR_CONFIG",SET_TOPBAR_ACTIVE_KEY:"SET_TOPBAR_ACTIVE_KEY",SET_TOPBAR_EXPAND_TYPE:"SET_TOPBAR_EXPAND_TYPE",SET_HEADER_USER_STATUS:"SET_HEADER_USER_STATUS",SET_TOPBAR_ACTIVE_MENU_ITEM:"SET_TOPBAR_ACTIVE_MENU_ITEM",DEAL_LOADING:"DEAL_LOADING",SET_USER_INFO:"SET_USER_INFO",REGISTER_EVENT:"REGISTER_EVENT",SET_SIDEBAR_STATUS:"SET_SIDEBAR_STATUS",SET_SIDEBAR_ACTIVE_KEY:"SET_SIDEBAR_ACTIVE_KEY",SET_SIDEBAR_ACTIVE_MENU_ITEM:"SET_SIDEBAR_ACTIVE_MENU_ITEM",SET_SIDEBAR_EXPANDED:"SET_SIDEBAR_EXPANDED"};function n(e,E){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);E&&(n=n.filter((function(E){return Object.getOwnPropertyDescriptor(e,E).enumerable}))),t.push.apply(t,n)}return t}function _(E){for(var t=1;t<arguments.length;t++){var _=null!=arguments[t]?arguments[t]:{};t%2?n(Object(_),!0).forEach((function(t){e(E,t,_[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(E,Object.getOwnPropertyDescriptors(_)):n(Object(_)).forEach((function(e){Object.defineProperty(E,e,Object.getOwnPropertyDescriptor(_,e))}))}return E}var i=(e(E={},t.TOGGLE_SIDEBAR,(function(e){Object.assign(e,{isSideBarCollapse:!e.isSideBarCollapse})})),e(E,t.SET_TOPBAR_CONFIG,(function(e,E){Object.assign(e,{topbarConfig:E})})),e(E,t.SET_TOPBAR_ACTIVE_KEY,(function(e,E){Object.assign(e,{topbarActiveKey:E})})),e(E,t.SET_TOPBAR_EXPAND_TYPE,(function(e,E){Object.assign(e,{topbarExpandType:E})})),e(E,t.SET_HEADER_USER_STATUS,(function(e,E){Object.assign(e,{headerUserStatus:E})})),e(E,t.SET_TOPBAR_ACTIVE_MENU_ITEM,(function(e,E){Object.assign(e,{topbarActiveMenuItem:E})})),e(E,t.SET_SIDEBAR_CONFIG,(function(e,E){var t=Array.isArray(E)?E:E.list;Object.assign(e,{sideBarConfig:[].concat(t)})})),e(E,t.SET_SIDEBAR_EXPAND_LEVEL,(function(e,E){Object.assign(e,{sidebarExpandLevel:E})})),e(E,t.SET_SIDEBAR_ACTIVE_KEY,(function(e,E){Object.assign(e,{sidebarActiveKey:E})})),e(E,t.SET_SIDEBAR_ACTIVE_MENU_ITEM,(function(e,E){Object.assign(e,{sidebarActiveMenuItem:E})})),e(E,t.SET_SIDEBAR_EXPANDED,(function(e,E){Object.assign(e,{sidebarExpanded:E})})),e(E,t.DEAL_LOADING,(function(e,E){Object.assign(e,{loading:E})})),e(E,t.SET_USER_INFO,(function(e,E){Object.assign(e,{user:_({},E)})})),e(E,t.REGISTER_EVENT,(function(e,E){Object.assign(e,{event:E})})),e(E,t.SET_SIDEBAR_STATUS,(function(e,E){Object.assign(e,{isShowSideBar:E})})),E),T={namespaced:!0,state:function(){return{event:{},loading:{spinning:!1,tip:""},isShowSideBar:void 0,isSideBarCollapse:!1,sideBarConfig:[],sidebarExpandLevel:0,sidebarActiveKey:"",sidebarActiveMenuItem:{},sidebarExpanded:[],topbarConfig:[],topbarActiveKey:"",topbarExpandType:"popup",headerUserStatus:!0,topbarActiveMenuItem:{},user:{isLogin:!1,info:{name:""},menu:[]}}},mutations:i,actions:{},getters:{}},r={init:function(e,E){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return e.use(E),Object.assign(e.prototype,{$storeGlobalTypes:t}),new E.Store({plugins:n,modules:{global:T}})}};export{r as default,r as store};

View File

@ -0,0 +1 @@
var E={SET_SIDEBAR_CONFIG:"SET_SIDEBAR_CONFIG",SET_SIDEBAR_EXPAND_LEVEL:"SET_SIDEBAR_EXPAND_LEVEL",TOGGLE_SIDEBAR:"TOGGLE_SIDEBAR",SET_TOPBAR_CONFIG:"SET_TOPBAR_CONFIG",SET_TOPBAR_ACTIVE_KEY:"SET_TOPBAR_ACTIVE_KEY",SET_TOPBAR_EXPAND_TYPE:"SET_TOPBAR_EXPAND_TYPE",SET_HEADER_USER_STATUS:"SET_HEADER_USER_STATUS",SET_TOPBAR_ACTIVE_MENU_ITEM:"SET_TOPBAR_ACTIVE_MENU_ITEM",DEAL_LOADING:"DEAL_LOADING",SET_USER_INFO:"SET_USER_INFO",REGISTER_EVENT:"REGISTER_EVENT",SET_SIDEBAR_STATUS:"SET_SIDEBAR_STATUS",SET_SIDEBAR_ACTIVE_KEY:"SET_SIDEBAR_ACTIVE_KEY",SET_SIDEBAR_ACTIVE_MENU_ITEM:"SET_SIDEBAR_ACTIVE_MENU_ITEM",SET_SIDEBAR_EXPANDED:"SET_SIDEBAR_EXPANDED"};export{E as default};

View File

@ -0,0 +1 @@
function e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var t,n="SET_SIDEBAR_CONFIG",i="SET_SIDEBAR_EXPAND_LEVEL",r="SET_TOPBAR_CONFIG",c="SET_TOPBAR_ACTIVE_KEY",s="SET_TOPBAR_EXPAND_TYPE",a="SET_HEADER_USER_STATUS",o="SET_TOPBAR_ACTIVE_MENU_ITEM",E="DEAL_LOADING",O="SET_USER_INFO",b="REGISTER_EVENT",u="SET_SIDEBAR_STATUS",_="SET_SIDEBAR_ACTIVE_KEY",f="SET_SIDEBAR_ACTIVE_MENU_ITEM",S="SET_SIDEBAR_EXPANDED";function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function A(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?T(Object(i),!0).forEach((function(n){e(t,n,i[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):T(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}var j=(e(t={},"TOGGLE_SIDEBAR",(function(e){Object.assign(e,{isSideBarCollapse:!e.isSideBarCollapse})})),e(t,r,(function(e,t){Object.assign(e,{topbarConfig:t})})),e(t,c,(function(e,t){Object.assign(e,{topbarActiveKey:t})})),e(t,s,(function(e,t){Object.assign(e,{topbarExpandType:t})})),e(t,a,(function(e,t){Object.assign(e,{headerUserStatus:t})})),e(t,o,(function(e,t){Object.assign(e,{topbarActiveMenuItem:t})})),e(t,n,(function(e,t){var n=Array.isArray(t)?t:t.list;Object.assign(e,{sideBarConfig:[].concat(n)})})),e(t,i,(function(e,t){Object.assign(e,{sidebarExpandLevel:t})})),e(t,_,(function(e,t){Object.assign(e,{sidebarActiveKey:t})})),e(t,f,(function(e,t){Object.assign(e,{sidebarActiveMenuItem:t})})),e(t,S,(function(e,t){Object.assign(e,{sidebarExpanded:t})})),e(t,E,(function(e,t){Object.assign(e,{loading:t})})),e(t,O,(function(e,t){Object.assign(e,{user:A({},t)})})),e(t,b,(function(e,t){Object.assign(e,{event:t})})),e(t,u,(function(e,t){Object.assign(e,{isShowSideBar:t})})),t);export{j as default};

View File

@ -0,0 +1 @@
var e=function(){return{event:{},loading:{spinning:!1,tip:""},isShowSideBar:void 0,isSideBarCollapse:!1,sideBarConfig:[],sidebarExpandLevel:0,sidebarActiveKey:"",sidebarActiveMenuItem:{},sidebarExpanded:[],topbarConfig:[],topbarActiveKey:"",topbarExpandType:"popup",headerUserStatus:!0,topbarActiveMenuItem:{},user:{isLogin:!1,info:{name:""},menu:[]}}};export{e as default};

View File

@ -0,0 +1 @@
function e(e){return new RegExp("[\\u4E00-\\u9FFF]+","g").test(e)}function n(e){return new RegExp("^[a-zA-Z]+$","g").test(e)}function t(){var e=navigator.userAgent,n=e.indexOf("compatible")>-1&&e.indexOf("MSIE")>-1,t=e.indexOf("Trident")>-1&&e.indexOf("rv:11.0")>-1;return!(!n&&!t)}export{e as isChinese,n as isLetter,t as isMSIE};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import e from"axios";import r from"qs";import{cloneDeep as t}from"lodash-es";function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}var s=function e(r,t,n,s){if("object"===o(t)){if(Array.isArray(t))return t.map((function(r){return e(null,r,n,s)}));for(var i in t){var a=t[i],c="function"==typeof n?n(i,a):i;t[c]=e(i,a,n,s),c!==i&&delete t[i]}return t}return"function"==typeof s?s(r,t):t},i=function(e){return"string"==typeof e&&e?e.replace(e[0],e[0].toLowerCase()):e},a=function(e){return"string"==typeof e&&e?e.replace(e[0],e[0].toUpperCase()):e};function c(e){return{"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regExp","[object Undefined]":"undefined","[object Null]":"null","[object Event]":"event","[object Object]":"object","[object MouseEvent]":"mouseEvent"}[Object.prototype.toString.call(e)]}function u(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function f(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?u(Object(t),!0).forEach((function(r){n(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):u(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var p=function(e){return s(null,e,i)},l=function(e,r){return f({error:f({},e)},r)},d=function(e){return"local"===window.STATIC_ENV_CONFIG.VUE_APP_MODEL&&console.warn("接口非0啦错误信息看这里","\n responseURL:",e.request.responseURL,"\n data: ",e.data,"\n all message: ",e),!1},b=function(e){if("undefined"===c(e))return d(e),Promise.reject(new Error("response is undefined"));var r=e.data,t=void 0===r?{}:r,n=e.config,o=void 0===n?{}:n;o.hideLoading;var a={reqConfig:f({},p(o))};return o.headers&&"old"===o.headers["x-api-version"]?0!=+t.errcode?(d(e),Promise.reject(l(t,a))):f({data:t},a):t.Response?void 0!==t.Response.Data?Object.assign(s(null,t.Response,i),a):(d(e),Promise.reject(Object.assign(s(null,t.Response,i),a))):f({},e)},j=function(e){if(e&&e.response){var r=e.response,t=r.config,n=void 0===t?{}:t,o=r.data,a=void 0===o?{}:o;n.hideLoading,console.error("=====> statusCode no 2xx,Reject: ",e.response);var u={reqConfig:f({},p(n))};return"object"===c(a)?"old"!==n.headers["x-api-version"]?Promise.reject(Object.assign(s(null,a.Response,i),u)):Promise.reject(l(a,u)):Promise.reject(l({data:e.response.data,status:e.response.status,statusText:e.response.statusText,headers:e.response.headers},u))}return Promise.reject(e||new Error("Unknown Network Error"))},y=function(e){if("old"!==e.headers["x-api-version"]){if(e.data){var r=t(e.data);Object.assign(e,{data:s(null,r,a)})}if(e.params){var n=t(e.params);Object.assign(e,{params:s(null,n,a)})}}return e.hideLoading,e},m=function(e){return Promise.reject(e)},O=function(){var r=e.create({maxRedirects:0});return r.defaults.timeout=window.STATIC_ENV_CONFIG&&window.STATIC_ENV_CONFIG.VUE_APP_API_TIMEOUT||15e3,r.defaults.headers["Content-Type"]="application/json",r.interceptors.request.use(y,m),r.interceptors.response.use(b,j),r},g=function(){var t=e.create({method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded"},transformRequest:[function(e){return Object.keys(e).forEach((function(r){"object"===o(e[r])&&Object.assign(e,n({},r,JSON.stringify(e[r])))})),r.stringify(e)}]});return t.interceptors.request.use(y,m),t.interceptors.response.use(b,j),t},v=O(),w=g();export{O as createRequest,g as createRequestFd,v as request,w as requestFd};

View File

@ -0,0 +1 @@
import{cloneDeep as e}from"lodash-es";function r(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}var n=function e(r,n,o,s){if("object"===t(n)){if(Array.isArray(n))return n.map((function(r){return e(null,r,o,s)}));for(var i in n){var a=n[i],c="function"==typeof o?o(i,a):i;n[c]=e(i,a,o,s),c!==i&&delete n[i]}return n}return"function"==typeof s?s(r,n):n},o=function(e){return"string"==typeof e&&e?e.replace(e[0],e[0].toLowerCase()):e},s=function(e){return"string"==typeof e&&e?e.replace(e[0],e[0].toUpperCase()):e};function i(e){return{"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regExp","[object Undefined]":"undefined","[object Null]":"null","[object Event]":"event","[object Object]":"object","[object MouseEvent]":"mouseEvent"}[Object.prototype.toString.call(e)]}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}var u=function(e){return n(null,e,o)},f=function(e,r){return c({error:c({},e)},r)},p=function(e){return"local"===window.STATIC_ENV_CONFIG.VUE_APP_MODEL&&console.warn("接口非0啦错误信息看这里","\n responseURL:",e.request.responseURL,"\n data: ",e.data,"\n all message: ",e),!1},l=function(e){if("undefined"===i(e))return p(e),Promise.reject(new Error("response is undefined"));var r=e.data,t=void 0===r?{}:r,s=e.config,a=void 0===s?{}:s;a.hideLoading;var l={reqConfig:c({},u(a))};return a.headers&&"old"===a.headers["x-api-version"]?0!=+t.errcode?(p(e),Promise.reject(f(t,l))):c({data:t},l):t.Response?void 0!==t.Response.Data?Object.assign(n(null,t.Response,o),l):(p(e),Promise.reject(Object.assign(n(null,t.Response,o),l))):c({},e)},b=function(e){if(e&&e.response){var r=e.response,t=r.config,s=void 0===t?{}:t,a=r.data,p=void 0===a?{}:a;s.hideLoading,console.error("=====> statusCode no 2xx,Reject: ",e.response);var l={reqConfig:c({},u(s))};return"object"===i(p)?"old"!==s.headers["x-api-version"]?Promise.reject(Object.assign(n(null,p.Response,o),l)):Promise.reject(f(p,l)):Promise.reject(f({data:e.response.data,status:e.response.status,statusText:e.response.statusText,headers:e.response.headers},l))}return Promise.reject(e||new Error("Unknown Network Error"))},d=function(r){if("old"!==r.headers["x-api-version"]){if(r.data){var t=e(r.data);Object.assign(r,{data:n(null,t,s)})}if(r.params){var o=e(r.params);Object.assign(r,{params:n(null,o,s)})}}return r.hideLoading,r},j=function(e){return Promise.reject(e)};export{d as requestBefore,j as requestError,b as responseReject,l as responseResolve};

View File

@ -0,0 +1 @@
import e from"qs";function o(o){var t=o.url,d=void 0===t?"":t,n=o.params,i=void 0===n?null:n,a=o.iframeId,l=void 0===a?"download":a,r=o.type,c=void 0===r?"alink":r,m=d;if(i&&"[object Object]"===Object.prototype.toString.call(i)&&(m+="?".concat(e.stringify(i))),"alink"===c){var f=document.createElement("a");f.style.display="none",f.download="download",f.href=m,f.target="_blank",document.body.appendChild(f),f.click(),document.body.removeChild(f)}else if("iframe"===c){var p=document.createElement("iframe");p.id=l,p.style.display="none",p.src="",document.body.appendChild(p),setTimeout((function(){p.contentWindow.location.href=m,document.body.removeChild(p)}),50)}}export{o as default};

View File

@ -0,0 +1 @@
var r=function(){var r=navigator.userAgent.toLowerCase(),e=[{reg:/edge\/([\d.]+)/,broswer:"Edge"},{reg:/rv:([\d.]+)\) like gecko/,broswer:"IE"},{reg:/msie ([\d.]+)/,broswer:"IE"},{reg:/firefox\/([\d.]+)/,broswer:"Firefox"},{reg:/chrome\/([\d.]+)/,broswer:"Chrome"},{reg:/opera.([\d.]+)/,broswer:"Opera"},{reg:/version\/([\d.]+).*safari/,broswer:"Safari"}].find((function(e){var o=e.reg;return r.match(o)}));if(e){var o=r.match(e.reg);return{broswer:e.broswer,version:o[1]}}return{broswer:"",version:"0"}};export{r as default};

View File

@ -0,0 +1,2 @@
import e from"qs";var r=function(){var e=navigator.userAgent.toLowerCase(),r=[{reg:/edge\/([\d.]+)/,broswer:"Edge"},{reg:/rv:([\d.]+)\) like gecko/,broswer:"IE"},{reg:/msie ([\d.]+)/,broswer:"IE"},{reg:/firefox\/([\d.]+)/,broswer:"Firefox"},{reg:/chrome\/([\d.]+)/,broswer:"Chrome"},{reg:/opera.([\d.]+)/,broswer:"Opera"},{reg:/version\/([\d.]+).*safari/,broswer:"Safari"}].find((function(r){var t=r.reg;return e.match(t)}));if(r){var t=e.match(r.reg);return{broswer:r.broswer,version:t[1]}}return{broswer:"",version:"0"}};
/*! js-cookie v3.0.1 | MIT */function t(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var o in t)e[o]=t[o]}return e}var o=function e(r,o){function n(e,n,i){if("undefined"!=typeof document){"number"==typeof(i=t({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var a in i)i[a]&&(c+="; "+a,!0!==i[a]&&(c+="="+i[a].split(";")[0]));return document.cookie=e+"="+r.write(n,e)+c}}return Object.create({set:n,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},n=0;n<t.length;n++){var i=t[n].split("="),c=i.slice(1).join("=");try{var a=decodeURIComponent(i[0]);if(o[a]=r.read(c,a),e===a)break}catch(e){}}return e?o[e]:o}},remove:function(e,r){n(e,"",t({},r,{expires:-1}))},withAttributes:function(r){return e(this.converter,t({},this.attributes,r))},withConverter:function(r){return e(t({},this.converter,r),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(r)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"}),n={get:function(e){return o.get(e)},set:function(e,r,t){o.set(e,r,t)},remove:function(e,r){o.remove(e,r)},clear:function(e){var r=o.get();Object.keys(r).forEach((function(r){o.remove(r,e)}))},check:function(e){var r=n.get(e);return""!==r&&null!=r}},i={get:function(e){try{return JSON.parse(window.localStorage.getItem(e))}catch(r){return window.localStorage.getItem(e)}},set:function(e,r){window.localStorage.setItem(e,JSON.stringify(r))},remove:function(e){window.localStorage.removeItem(e)},clear:function(){window.localStorage.clear()},check:function(e){return null!==i.get(e)}},c={get:function(e){try{return JSON.parse(window.sessionStorage.getItem(e))}catch(r){return window.sessionStorage.getItem(e)}},set:function(e,r){window.sessionStorage.setItem(e,JSON.stringify(r))},remove:function(e){window.sessionStorage.removeItem(e)},clear:function(){window.sessionStorage.clear()},check:function(e){return null!==c.get(e)}};function a(r){var t=r.url,o=void 0===t?"":t,n=r.params,i=void 0===n?null:n,c=r.iframeId,a=void 0===c?"download":c,s=r.type,u=void 0===s?"alink":s,d=o;if(i&&"[object Object]"===Object.prototype.toString.call(i)&&(d+="?".concat(e.stringify(i))),"alink"===u){var f=document.createElement("a");f.style.display="none",f.download="download",f.href=d,f.target="_blank",document.body.appendChild(f),f.click(),document.body.removeChild(f)}else if("iframe"===u){var l=document.createElement("iframe");l.id=a,l.style.display="none",l.src="",document.body.appendChild(l),setTimeout((function(){l.contentWindow.location.href=d,document.body.removeChild(l)}),50)}}export{n as cookie,a as download,r as getBroswer,i as localStorage,c as sessionStorage};

View File

@ -0,0 +1,2 @@
/*! js-cookie v3.0.1 | MIT */
function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)e[r]=n[r]}return e}var t=function t(n,r){function o(t,o,i){if("undefined"!=typeof document){"number"==typeof(i=e({},r,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(o,t)+c}}return Object.create({set:o,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],r={},o=0;o<t.length;o++){var i=t[o].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(r[u]=n.read(c,u),e===u)break}catch(e){}}return e?r[e]:r}},remove:function(t,n){o(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(r)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"}),n={get:function(e){return t.get(e)},set:function(e,n,r){t.set(e,n,r)},remove:function(e,n){t.remove(e,n)},clear:function(e){var n=t.get();Object.keys(n).forEach((function(n){t.remove(n,e)}))},check:function(e){var t=n.get(e);return""!==t&&null!=t}},r={get:function(e){try{return JSON.parse(window.localStorage.getItem(e))}catch(t){return window.localStorage.getItem(e)}},set:function(e,t){window.localStorage.setItem(e,JSON.stringify(t))},remove:function(e){window.localStorage.removeItem(e)},clear:function(){window.localStorage.clear()},check:function(e){return null!==r.get(e)}},o={get:function(e){try{return JSON.parse(window.sessionStorage.getItem(e))}catch(t){return window.sessionStorage.getItem(e)}},set:function(e,t){window.sessionStorage.setItem(e,JSON.stringify(t))},remove:function(e){window.sessionStorage.removeItem(e)},clear:function(){window.sessionStorage.clear()},check:function(e){return null!==o.get(e)}};export{n as cookie,r as localStorage,o as sessionStorage};

View File

@ -0,0 +1 @@
var e,t,n,i=(e=navigator.userAgent,t=e.indexOf("compatible")>-1&&e.indexOf("MSIE")>-1,n=e.indexOf("Trident")>-1&&e.indexOf("rv:11.0")>-1,t||n?3:0),d=function(){return document.body.clientHeight&&document.documentElement.clientHeight?document.body.clientHeight<document.documentElement.clientHeight?document.body.clientHeight:document.documentElement.clientHeight:document.body.clientHeight>document.documentElement.clientHeight?document.body.clientHeight:document.documentElement.clientHeight},o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=!("hasPageHeader"in e)||e.hasPageHeader,n=d(),o=e.header||64,c=t?e.pageHeader||60:0,a=e.margin||48,g=e.extraHeight||0,m=n-c-a-g-o-i;return m>300?m:300},c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.padding||24,n=e.pagination||66,d=e.condition||48,c=e.tableMinHeight||200,a=e.tableHeader||48,g=e.tableExtra||0,m=o(e)-t-a-g-i;return!1!==e.hasPagination&&(m-=n),!1!==e.hasCondition&&(m-=d),m>c?m:c};export{d as getClientHeight,c as getFirstLevelTableHeight,o as getPageContentHeight};

View File

@ -0,0 +1 @@
function e(e){return{"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regExp","[object Undefined]":"undefined","[object Null]":"null","[object Event]":"event","[object Object]":"object","[object MouseEvent]":"mouseEvent"}[Object.prototype.toString.call(e)]}export{e as typeOf};

View File

@ -0,0 +1 @@
var t=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,r=function(r){return"string"==typeof r&&t.test(r.trim())},e=new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),n=function(t){return"string"==typeof t&&e.test(t.trim())},a=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/,f=[1,0,10,9,8,7,6,5,4,3,2],u=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1],i=function(t){if("string"!=typeof t)return!1;var r=t.trim();return 18===r.length&&a.test(r)&&function(t){var r=t.split(""),e=0;"x"===r[17].toLowerCase()&&(r[17]=10);for(var n=0;n<17;n++)e+=u[n]*r[n];var a=e%11;return+r[17]===f[a]}(r)&&function(t){var r=t.substring(6,10),e=t.substring(10,12),n=t.substring(12,14),a=new Date(r,parseFloat(e)-1,parseFloat(n)),f=(new Date).getFullYear()-parseFloat(r);return a.getFullYear()===parseFloat(r)&&a.getMonth()===parseFloat(e)-1&&a.getDate()===parseFloat(n)&&f>=0&&f<=150}(r)},o=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/,s=function(t){return"string"==typeof t&&o.test(t.trim())},d=/^1[3456789]\d{9}$/,E=function(t){return"string"==typeof t&&d.test(t.trim())},A=/^[\u2E80-\uFE4F]+$/,I=function(t){return"string"==typeof t&&A.test(t.trim())},S=/^[\u2E80-\uFE4F]{2,6}(?:·[\u2E80-\uFE4F]{2,6})*$/,D=function(t){return"string"==typeof t&&S.test(t.trim())},O=/^[\da-zA-Z\s]{2,}$/,p=function(t){return"string"==typeof t&&O.test(t.trim())},$=/^1[45][0-9]{7}|([DSPGE](?![IO])[A-Z\d]{8})|((DE|SE|PE)(?![IO])[A-Z\d]{7})|([HM]\d{8, 10})$/,C=function(t){return"string"==typeof t&&$.test(t.toUpperCase().trim())},R=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=r.len,n=void 0===e?6:e;return"string"==typeof t&&t.length===n&&/^\d+$/.test(t.trim())},g={POLICE:/^[0-9a-zA-Z]{8,9}$/,OFFICER:/^[0-9a-zA-Z]{4,15}$/,SOLDIER:/^[0-9a-zA-Z]{4,15}$/,DISCHARGE:/^[0-9a-zA-Z]{4,20}$/,HMCOME:/^[HMhm]{1}\d{10}$/,TWCOME:/^(\d{8}|[a-zA-Z]\d{7})$/,HMPASS:/^[WCwc]\d{8}$/,TWPASS:/^[TLtl]\d{8}$/,HKID:/^[a-zA-Z0-9]{1}\d{6,7}[a-zA-Z0-9]{1}$/,MCID:/^[157]\d{6}\([0-9Aa]\)$/,TWID:/^[a-zA-Z]{1}\d{9}$/,HMTID:/^8[123]0000\d{12}$/,FOREIGNID:/^[a-zA-Z]{3}\d{12}$/,OTHERS:/^[0-9a-zA-Z]{4,20}$/},F={IDCARD:"IDCARD",PASSPORT:"PASSPORT",POLICE:"POLICE",OFFICER:"OFFICER",SOLDIER:"SOLDIER",DISCHARGE:"DISCHARGE",HMCOME:"HMCOME",TWCOME:"TWCOME",HMPASS:"HMPASS",TWPASS:"TWPASS",HKID:"HKID",MCID:"MCID",TWID:"TWID",HMTID:"HMTID",FOREIGNID:"FOREIGNID",OTHERS:"OTHERS"},H=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},e=r.type,n=void 0===e?F.OTHERS:e,a="";return-1===Object.keys(g).indexOf(n)&&(console.warn("证件类型不存在"),a=F.OTHERS),n===F.IDCARD?i(t):n===F.PASSPORT?C(t):"string"==typeof t&&g[a||n].test(t.trim())};export{I as isCJK,s as isCarNum,D as isCnName,r as isEmail,p as isEnName,i as isIDCard,E as isMobile,C as isPassport,H as isPermit,n as isURL,R as isVCode,F as permitType};

View File

@ -0,0 +1 @@
var t=/^[\u2E80-\uFE4F]+$/,r=function(r){return"string"==typeof r&&t.test(r.trim())};export{r as default};

View File

@ -0,0 +1 @@
var t=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/,r=function(r){return"string"==typeof r&&t.test(r.trim())};export{r as default};

View File

@ -0,0 +1 @@
var t=/^[\u2E80-\uFE4F]{2,6}(?:·[\u2E80-\uFE4F]{2,6})*$/,u=function(u){return"string"==typeof u&&t.test(u.trim())};export{u as default};

View File

@ -0,0 +1 @@
var t=/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,r=function(r){return"string"==typeof r&&t.test(r.trim())};export{r as default};

View File

@ -0,0 +1 @@
var t=/^[\da-zA-Z\s]{2,}$/,r=function(r){return"string"==typeof r&&t.test(r.trim())};export{r as default};

View File

@ -0,0 +1 @@
var t=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/,r=[1,0,10,9,8,7,6,5,4,3,2],e=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1],a=function(a){if("string"!=typeof a)return!1;var n=a.trim();return 18===n.length&&t.test(n)&&function(t){var a=t.split(""),n=0;"x"===a[17].toLowerCase()&&(a[17]=10);for(var s=0;s<17;s++)n+=e[s]*a[s];var o=n%11;return+a[17]===r[o]}(n)&&function(t){var r=t.substring(6,10),e=t.substring(10,12),a=t.substring(12,14),n=new Date(r,parseFloat(e)-1,parseFloat(a)),s=(new Date).getFullYear()-parseFloat(r);return n.getFullYear()===parseFloat(r)&&n.getMonth()===parseFloat(e)-1&&n.getDate()===parseFloat(a)&&s>=0&&s<=150}(n)};export{a as default};

View File

@ -0,0 +1 @@
var t=/^1[3456789]\d{9}$/,r=function(r){return"string"==typeof r&&t.test(r.trim())};export{r as default};

View File

@ -0,0 +1 @@
var t=/^1[45][0-9]{7}|([DSPGE](?![IO])[A-Z\d]{8})|((DE|SE|PE)(?![IO])[A-Z\d]{7})|([HM]\d{8, 10})$/,e=function(e){return"string"==typeof e&&t.test(e.toUpperCase().trim())};export{e as default};

View File

@ -0,0 +1 @@
var t=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/,e=[1,0,10,9,8,7,6,5,4,3,2],r=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1],a=function(a){if("string"!=typeof a)return!1;var I=a.trim();return 18===I.length&&t.test(I)&&function(t){var a=t.split(""),I=0;"x"===a[17].toLowerCase()&&(a[17]=10);for(var D=0;D<17;D++)I+=r[D]*a[D];var S=I%11;return+a[17]===e[S]}(I)&&function(t){var e=t.substring(6,10),r=t.substring(10,12),a=t.substring(12,14),I=new Date(e,parseFloat(r)-1,parseFloat(a)),D=(new Date).getFullYear()-parseFloat(e);return I.getFullYear()===parseFloat(e)&&I.getMonth()===parseFloat(r)-1&&I.getDate()===parseFloat(a)&&D>=0&&D<=150}(I)},I=/^1[45][0-9]{7}|([DSPGE](?![IO])[A-Z\d]{8})|((DE|SE|PE)(?![IO])[A-Z\d]{7})|([HM]\d{8, 10})$/,D=function(t){return"string"==typeof t&&I.test(t.toUpperCase().trim())},S={POLICE:/^[0-9a-zA-Z]{8,9}$/,OFFICER:/^[0-9a-zA-Z]{4,15}$/,SOLDIER:/^[0-9a-zA-Z]{4,15}$/,DISCHARGE:/^[0-9a-zA-Z]{4,20}$/,HMCOME:/^[HMhm]{1}\d{10}$/,TWCOME:/^(\d{8}|[a-zA-Z]\d{7})$/,HMPASS:/^[WCwc]\d{8}$/,TWPASS:/^[TLtl]\d{8}$/,HKID:/^[a-zA-Z0-9]{1}\d{6,7}[a-zA-Z0-9]{1}$/,MCID:/^[157]\d{6}\([0-9Aa]\)$/,TWID:/^[a-zA-Z]{1}\d{9}$/,HMTID:/^8[123]0000\d{12}$/,FOREIGNID:/^[a-zA-Z]{3}\d{12}$/,OTHERS:/^[0-9a-zA-Z]{4,20}$/},n={IDCARD:"IDCARD",PASSPORT:"PASSPORT",POLICE:"POLICE",OFFICER:"OFFICER",SOLDIER:"SOLDIER",DISCHARGE:"DISCHARGE",HMCOME:"HMCOME",TWCOME:"TWCOME",HMPASS:"HMPASS",TWPASS:"TWPASS",HKID:"HKID",MCID:"MCID",TWID:"TWID",HMTID:"HMTID",FOREIGNID:"FOREIGNID",OTHERS:"OTHERS"},E=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.type,I=void 0===r?n.OTHERS:r,E="";return-1===Object.keys(S).indexOf(I)&&(console.warn("证件类型不存在"),E=n.OTHERS),I===n.IDCARD?a(t):I===n.PASSPORT?D(t):"string"==typeof t&&S[E||I].test(t.trim())};export{E as default,n as permitType};

View File

@ -0,0 +1 @@
var f=new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),t=function(t){return"string"==typeof t&&f.test(t.trim())};export{t as default};

View File

@ -0,0 +1 @@
var t=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.len,r=void 0===n?6:n;return"string"==typeof t&&t.length===r&&/^\d+$/.test(t.trim())};export{t as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
module.exports = function modifyModuleSourceLoader(source) {
const options = this && this.query && typeof this.query === 'object' ? this.query : {};
const modify = options.modify || null;
return modify ? modify(source, options.path) : source;
};

View File

@ -0,0 +1,176 @@
const fs = require('fs');
const path = require('path');
const { icons } = require('./svg.json');
// 待替换图标名称,和目标替换图标名称,映射关系
const ICON_MAP = require('./icon-map');
const PLUGIN_NAME = 't-icon-replace-webpack-plugin';
class TIconReplaceWebpackPlugin {
constructor(options) {
this.options = {
name: PLUGIN_NAME,
staticPath: 'static',
debug: false,
rules: [
/**
* 替换按需加载的icon组件
*/
{
test: /tdesign-icons-vue\/(esm|lib)\/components\/.*\.js$/,
modify: (src, pathString) => {
let newData = src || '';
// 获取需要替换的icon组件
const fileNameObj = pathString.split('/');
const fileNameExt = fileNameObj[fileNameObj.length - 1];
const fileName = fileNameExt.split('.')[0];
const module = ICON_MAP[fileName];
// console.log('newData', newData);
if (module) {
newData = this.replace(src);
}
return newData;
},
},
/**
* 替换全量t-icon组件
*/
{
test: /tdesign-icons-vue\/(esm|dist)\/svg-sprite\/svg-sprite\.js$/,
modify: (src) => {
const str =
process.env.RUN_TYPE === 'demo'
? '//tencent-tdgv-1255000078.cos.zjywxc.csp.xc01.cloud.sat.tax/icon/svg.js'
: /**
* 本地开发模式会编译成绝对路径/dev/static/svg.js
* 做成物料包会编译成./static/svg.js
*/
`${process.env.NODE_ENV === 'production' ? '.' : process.env.VUE_APP_CDN_PATH}/${
this.options.staticPath
}/svg.js`;
// console.log('str', str);
return src.replace(/(CDN_ICONFONT_URL = ['|"]).*(['|"])/, `$1${str}$2`);
},
},
],
...options,
};
// 如果不是用于demo站点则把svg.js拷贝到工程目录去
if (
process.env.RUN_TYPE !== 'demo' &&
// 确保跑在vue-cli下
process.env.VUE_APP_ENV !== undefined &&
// 非lint模式
/vue-cli-service lint/.test(process.env.npm_lifecycle_script) !== true
) {
this.copyJs();
}
// return this.replacePlugin();
}
apply(compiler) {
compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
const modifiedModules = [];
const { rules, debug } = this.options;
const tapCallback = (params, normalModule) => {
const userRequest = normalModule.userRequest || '';
const startIndex = userRequest.lastIndexOf('!') === -1 ? 0 : userRequest.lastIndexOf('!') + 1;
const moduleRequest = userRequest.substr(startIndex).replace(/\\/g, '/');
if (modifiedModules.includes(moduleRequest)) {
return;
}
rules.forEach((options, ruleIndex) => {
const { test, modify } = options;
const isMatched = (() => {
if (typeof test === 'function' && test(normalModule)) {
return true;
}
return test instanceof RegExp && test.test(moduleRequest);
})();
if (debug && isMatched) {
// eslint-disable-next-line no-console
console.log(`[${PLUGIN_NAME}] Add loader for module ${moduleRequest} at index ${ruleIndex}.`);
}
if (isMatched) {
normalModule.loaders.push({
loader: require.resolve('./loader.js'),
options: {
path: moduleRequest,
ruleIndex,
modify,
},
});
modifiedModules.push(moduleRequest);
}
});
};
compilation.hooks.normalModuleLoader.tap(PLUGIN_NAME, tapCallback);
});
}
/**
* 替换单个icon js文件的核心处理函数
* @param source
* @returns {*}
*/
replace(source = '') {
let newSource = source;
// let iconName = source.match(/-icon-([\w|-]+)/g)[0];
const iconNameMatch = /id:[ ]?'([\w|-]+)'/g.exec(source);
if (iconNameMatch && iconNameMatch.length > 1) {
const iconName = iconNameMatch[1];
const newIconName = ICON_MAP[iconName];
const newIconSvg = icons.find((t) => t.name === newIconName);
// 存在图标替换
if (newIconName && newIconSvg) {
// 匹配 svg / path 属性 进行替换
let attrs = newIconSvg.svgCode.match(/([\w-]+?=".*?")/g);
if (!attrs) {
console.warn('icon svgCode is not correct, it should like `<svg ...><path ...></path></svg>`');
return;
}
attrs = attrs.map((t) => {
const r = t.split('=');
return { key: r[0], value: r[1] };
});
// 不包含 value 的 svg 属性
const pureAttrs = attrs.map((t) => t.key);
const regExp = new RegExp(`"*(${pureAttrs.join('|')})"*: ".*?"`, 'g');
newSource = source.replace(regExp, (str) => {
for (let i = 0, len = attrs.length; i < len; i++) {
const { key, value } = attrs[i];
if (str.indexOf(key) !== -1) {
return `"${key}": ${value}`;
}
}
return str;
});
}
}
return newSource;
}
/**
* 拷贝全量svg到项目静态目录
*/
copyJs() {
fs.copyFileSync(
path.resolve(__dirname, 'svg.js'),
path.resolve(process.cwd(), `public/${this.options.staticPath}/svg.js`),
);
console.log('====>> 拷贝全量svg到项目静态目录成功');
}
}
module.exports = TIconReplaceWebpackPlugin;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
@-webkit-keyframes t-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes t-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.t-icon{display:inline-block;vertical-align:middle;width:1em;height:1em}.t-icon:before{font-family:unset}.t-icon-loading{-webkit-animation:t-spin 1s linear infinite;animation:t-spin 1s linear infinite}.t-icon{fill:currentColor}.t-icon.t-size-s{font-size:14px}.t-icon.t-size-m{font-size:16px}.t-icon.t-size-l{font-size:18px}.g-tooltip-label-wrapper[data-v-9c019630]{display:inline-block;max-width:100%;vertical-align:bottom}.g-tooltip-label-tooltip[data-v-9c019630]{width:100%;vertical-align:bottom}.g-tooltip-label-label[data-v-9c019630]{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

View File

@ -0,0 +1,141 @@
{
"name": "@gtff/tdesign-gt-vue",
"version": "1.4.0",
"maintainers": [
{
"name": "joneshe",
"email": "joneshe@tencent.com"
},
{
"name": "smileswlin",
"email": "smileswlin@tencent.com"
}
],
"main": "lib/index.common.js",
"module": "es/index.js",
"unpkg": "dist/index.umd.min.js",
"files": [
"dist",
"es",
"lib",
"plugins",
"icon/icon-map.js",
"icon/plugin.js",
"icon/svg.js",
"icon/svg.json",
"icon/loader.js",
"README.md",
"babel.config.js",
"stylelint.config.js",
"prettier.config.js",
".eslintrc.js",
".browserslistrc",
"vue-route-generator/lib/"
],
"license": "MIT",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"scripts": {
"dev": "concurrently \"npm:dev:*\"",
"dev:js": "run-s clean:dev:js && run-s build:js:lib && cross-env NODE_ENV=DEVELOPMENT nodemon scripts/rollup.config.es.all.js",
"dev:css": "run-s icon && gulp -f ./scripts/gulpfile.js watch",
"clean:dev:js": "rimraf dist/*.js && rimraf lib && rimraf es",
"clean": "rimraf dist && rimraf lib && rimraf es",
"icon": "node ./icon/svg-replace/index.js",
"build:css": "run-s icon && gulp -f ./scripts/gulpfile-tax.js && gulp -f ./scripts/gulpfile-enterprise.js",
"build:js": "run-s build:js:*",
"build:js:lib": "vue-cli-service build --target lib --formats commonjs --name index --dest lib --no-clean src/index.js",
"build:js:dist": "vue-cli-service build --target lib --formats umd-min,umd --name index --dest dist --no-clean src/index.js",
"build:js:es": "node scripts/rollup.config.es.all.js",
"build": "run-s clean && run-s build:*",
"gulp:tax": "gulp -f ./scripts/gulpfile-tax.js",
"gulp:ent": "gulp -f ./scripts/gulpfile-enterprise.js",
"lint": "vue-cli-service lint",
"lint:style": "vue-cli-service lint:style"
},
"dependencies": {
"chalk": "4.1.1",
"child_process": "^1.0.2",
"chokidar": "^3.5.2",
"globby": "11.0.3",
"lodash-es": "^4.17.21",
"modify-source-webpack-plugin": "^3.0.0",
"qs": "^6.10.1",
"splitpanes": "2.3.8",
"vue-route-generator": "^0.3.3"
},
"devDependencies": {
"@babel/core": "^7.13.16",
"@babel/generator": "^7.16.5",
"@babel/parser": "^7.16.6",
"@babel/plugin-transform-runtime": "^7.14.5",
"@babel/traverse": "^7.16.5",
"@rollup/plugin-babel": "^5.3.0",
"@rollup/plugin-commonjs": "^19.0.0",
"@rollup/plugin-eslint": "^8.0.1",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^13.0.0",
"@rollup/plugin-replace": "^2.4.2",
"@samhammer/vue-cli-plugin-stylelint": "^2.0.1",
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.11",
"babel-eslint": "^10.1.0",
"clean-css": "^5.1.2",
"concurrently": "^6.0.2",
"cross-env": "^7.0.3",
"crypto": "^1.0.1",
"css-properties-sorting": "^1.0.10",
"eslint": "^6.7.2",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-config-prettier": "^8.3.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-plugin-prettier": "^3.3.1",
"esprima": "^4.0.1",
"esquery": "^1.4.0",
"fs-extra": "^10.0.0",
"gulp": "^4.0.2",
"gulp-autoprefixer": "^7.0.1",
"gulp-clean": "^0.4.0",
"gulp-concat": "^2.6.1",
"gulp-less": "^4.0.1",
"gulp-minify-css": "^1.2.4",
"gulp-rename": "^2.0.0",
"gulp-replace": "^1.0.0",
"html5parser": "^2.0.2",
"nodemon": "^2.0.7",
"npm-run-all": "^4.1.5",
"prepend-file": "^2.0.0",
"prettier": "^2.3.2",
"rimraf": "^3.0.2",
"rollup": "^2.45.2",
"rollup-plugin-css-only": "^3.1.0",
"rollup-plugin-peer-deps-external": "^2.2.4",
"rollup-plugin-terser": "^7.0.2",
"rollup-plugin-uglify": "^6.0.4",
"rollup-plugin-vue": "^5.1.9",
"stylelint": "^13.12.0",
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-tencent": "1.0.0",
"terser-webpack-plugin": "4.2.3",
"vue-cli-plugin-style-resources-loader": "~0.1.5",
"vue-template-compiler": "~2.6.11"
},
"peerDependencies": {
"axios": "^0.21.1",
"core-js": "^3.6.5",
"dayjs": "^1.10.4",
"lodash-es": "^4.17.21",
"tdesign-icons-vue": "0.0.8",
"tdesign-vue": "1.4.0",
"vue": "~2.6.11",
"vue-router": "^3.2.0",
"vuex": "^3.4.0"
},
"gitHead": "a94a31d6bdc9e21bbdf0f039ad84b349d6e1feae"
}

View File

@ -0,0 +1,143 @@
const path = require('path');
const chalk = require('chalk');
const fs = require('fs-extra');
const assert = require('assert');
const globby = require('globby'); // 不知是不是有兼容问题11.0.3就正常,最新版本 11.0.4 使用模糊匹配查找不到目录
const chokidar = require('chokidar');
const fsExtra = require('fs-extra');
const childProcess = require('child_process');
const { CLIEngine } = require('eslint');
const vueRouteGenerator = require('../vue-route-generator/lib/index');
// 0.3.3 路由生成名称是驼峰命名方式
const pluginName = 'autoRouterPlugin';
class autoRouterPlugin {
constructor(options) {
this.options = {
importPrefix: '../views/',
routerPath: '../router/routes.js',
dynamicImport: true,
autoTemplates: true,
...options,
};
assert(options, chalk.red.bold(`${pluginName} options is required!!!`));
assert(options.pages, chalk.red.bold(`${pluginName} options.pages is required!!!`));
this.watch = null;
this.cli = new CLIEngine({
fix: true,
});
}
/**
* 格式化path添加/斜杠
* @param {*} code
* @returns
*/
// eslint-disable-next-line class-methods-use-this
toHump(code) {
return code.replace(/path: '/g, "path: '/");
// return code.replace(/\(\w)_(\w)/g, (all, letter) => letter.toUpperCase());
}
/**
* 通过 generateRoutes加载路由
*/
async loadRouter() {
const pages = await globby(this.options.pages, { onlyFiles: false });
Array.isArray(pages) &&
pages.forEach((page) => {
const pageName = path.basename(path.dirname(page));
const code = vueRouteGenerator.generateRoutes({
pages: page,
importPrefix: this.options.importPrefix,
dynamicImport: this.options.dynamicImport,
nested: true,
});
const result = this.cli.executeOnText(code).results || [];
const fileContent = result[0].output || '';
const content = this.toHump(fileContent.replace(/: "((\w|-)+)\\"/gm, `: "${pageName}-$1"`));
const to = path.resolve(page, this.options.routerPath);
if (fs.existsSync(to) && fs.readFileSync(to, 'utf-8').trim() === content.trim()) {
return;
}
if (!fs.existsSync(to)) fs.ensureFileSync(to);
fs.writeFileSync(to, content);
});
}
/**
* 复制模版
* @param {String} toPath
*/
copyTemplate(toPath) {
fsExtra.copy('./mock/templates/', toPath);
this.loadRouter();
}
/**
* 添加文件监听事件
*/
addFile() {
this.loadRouter();
}
/**
* 添加文件目录
* @param {String} dir
*/
addDir(dir) {
fs.readdir(dir, (err, files) => {
if (!files.length && this.options.autoTemplates) {
this.copyTemplate(dir);
}
});
}
/**
* 删除文件
*/
rmeoveFile() {
this.loadRouter();
}
/**
* 删除文件目录
*/
removeDir() {
this.loadRouter();
}
/**
* 注册事件监听
*/
registerWatch() {
if (!this.watcher) {
this.watcher = chokidar.watch('./src/pages/', {
ignored: /router|store|api|assets|components|css|style|styles$/g,
});
this.watcher.on('addDir', (dir) => {
this.addDir(dir);
});
this.watcher.on('add', (e, f = {}) => {
if (e.indexOf('routes.js') >= 0) return;
!f.size && this.loadRouter();
});
this.watcher.on('unlinkDir', () => {
this.loadRouter();
});
this.watcher.on('unlink', () => {
this.loadRouter();
});
}
}
async apply(compiler) {
const { mode = 'development' } = compiler.options;
compiler.hooks.done.tap(pluginName, (compilation) => {
console.log('====>> 自动路由使用中...');
this.loadRouter(compilation);
// 本地运行才启动文件变化监听
mode === 'development' && this.registerWatch();
});
}
}
module.exports = autoRouterPlugin;

View File

@ -0,0 +1,39 @@
module.exports = {
// 一行最多 120 字符
printWidth: 120,
// 使用 2 个空格缩进
tabWidth: 2,
// 不使用缩进符,而使用空格
useTabs: false,
// 行尾需要有分号
semi: true,
// 使用单引号
singleQuote: true,
// 对象的 key 仅在必要时用引号
quoteProps: 'as-needed',
// jsx 不使用单引号,而使用双引号
jsxSingleQuote: false,
// 末尾需要有逗号
trailingComma: 'all',
// 大括号内的首尾需要空格
bracketSpacing: true,
// jsx 标签的反尖括号需要换行
jsxBracketSameLine: false,
// 箭头函数,只有一个参数的时候,也需要括号
arrowParens: 'always',
// 每个文件格式化的范围是文件的全部内容
rangeStart: 0,
rangeEnd: Infinity,
// 不需要写文件开头的 @prettier
requirePragma: false,
// 不需要自动在文件开头插入 @prettier
insertPragma: false,
// 使用默认的折行标准
proseWrap: 'preserve',
// 根据显示样式决定 html 要不要折行
htmlWhitespaceSensitivity: 'css',
// vue 文件中的 script 和 style 内不用缩进
vueIndentScriptAndStyle: false,
// 换行符使用 lf
endOfLine: 'lf',
};

View File

@ -0,0 +1,192 @@
module.exports = {
// processors: ['stylelint-processor-html'],
extends: ['stylelint-config-tencent', 'css-properties-sorting', 'stylelint-config-prettier'],
plugins: ['stylelint-order'], // stylelint-order是CSS属性排序插件
rules: {
// "color-hex-case": "lower", // 颜色值为小写字母(stylelint-config-standard)
// "color-no-invalid-hex": true, // 颜色值不能为无效值(stylelint-config-standard)
'font-family-name-quotes': 'always-where-recommended', // 字体系列中命名时带引号
'function-url-quotes': 'always', // 地址一定要写引号
// 'number-leading-zero': 'never', // 或分数低于1的数字是否需要前导零
'number-no-trailing-zeros': true, // 禁止在数量尾随零
// 'string-quotes': 'double', // 指定字串
'length-zero-no-unit': true, // 禁止单位零长度。
'value-keyword-case': 'lower', // 指定小写关键字的值
'value-list-comma-newline-after': 'always-multi-line', // 在值列表的逗号后指定一个换行符或禁止留有空格
'shorthand-property-no-redundant-values': true, // 不允许在简写属性冗余值
// "property-case": "lower", // 为属性指定小写(stylelint-config-standard)
'keyframe-declaration-no-important': true, // 不允许!important在关键帧声明
// "block-closing-brace-empty-line-before": "never", // 不允许关闭括号前空一行(stylelint-config-standard)
// "block-closing-brace-newline-after": "always", // 需要一个换行符关闭括号后的空白(stylelint-config-standard)
// "block-opening-brace-newline-after": "always-multi-line", // 开括号的块之后需要新的一行(stylelint-config-standard)
'selector-class-pattern': "^[a-z]+([a-z0-9]?|[a-z0-9(-_'% ]*[a-z0-9)])$", // 兼容stylelint的bug(less的mixin没处理好), 暂时先这样处理~~~指定一个模式类选择符,限制选择器名称写法
'selector-id-pattern': "^[a-z]+([a-z0-9]?|[a-z0-9(-_'% ]*[a-z0-9)])$", // 兼容stylelint的bug(less的mixin没处理好), 暂时先这样处理指定一个模式id选择器限制选择器名称写法
'no-empty-source': null, // 不允许空的来源
'at-rule-no-unknown': null, // 不允许at-rules不明
// "indentation": 2, // 指定缩进(stylelint-config-standard)
'max-nesting-depth': [5, { severity: 'warning' }], // 允许嵌套的深度为5
'no-duplicate-selectors': true, // 不允许重复的选择器
// "no-eol-whitespace": true, // 不允许行尾空白(stylelint-config-standard)
// "no-invalid-double-slash-comments": true // 不允许双斜杠注释(/ /…)不支持CSS(stylelint-config-standard)
'order/order': [
// 指定声明块内的内容顺序
['custom-properties', 'declarations'],
],
// "declaration-block-properties-order": "alphabetical",
'order/properties-order': [
// 指定声明块内属性的字母顺序
'position',
'top',
'right',
'bottom',
'left',
'z-index',
'display',
'float',
'width',
'height',
'max-width',
'max-height',
'min-width',
'min-height',
'padding',
'padding-top',
'padding-right',
'padding-bottom',
'padding-left',
'margin',
'margin-top',
'margin-right',
'margin-bottom',
'margin-left',
'margin-collapse',
'margin-top-collapse',
'margin-right-collapse',
'margin-bottom-collapse',
'margin-left-collapse',
'overflow',
'overflow-x',
'overflow-y',
'clip',
'clear',
'font',
'font-family',
'font-size',
'font-smoothing',
'osx-font-smoothing',
'font-style',
'font-weight',
'hyphens',
'src',
'line-height',
'letter-spacing',
'word-spacing',
'color',
'text-align',
'text-decoration',
'text-indent',
'text-overflow',
'text-rendering',
'text-size-adjust',
'text-shadow',
'text-transform',
'word-break',
'word-wrap',
'white-space',
'vertical-align',
'list-style',
'list-style-type',
'list-style-position',
'list-style-image',
'pointer-events',
'cursor',
'background',
'background-attachment',
'background-color',
'background-image',
'background-position',
'background-repeat',
'background-size',
'border',
'border-collapse',
'border-top',
'border-right',
'border-bottom',
'border-left',
'border-color',
'border-image',
'border-top-color',
'border-right-color',
'border-bottom-color',
'border-left-color',
'border-spacing',
'border-style',
'border-top-style',
'border-right-style',
'border-bottom-style',
'border-left-style',
'border-width',
'border-top-width',
'border-right-width',
'border-bottom-width',
'border-left-width',
'border-radius',
'border-top-right-radius',
'border-bottom-right-radius',
'border-bottom-left-radius',
'border-top-left-radius',
'border-radius-topright',
'border-radius-bottomright',
'border-radius-bottomleft',
'border-radius-topleft',
'content',
'quotes',
'outline',
'outline-offset',
'opacity',
'filter',
'visibility',
'size',
'zoom',
'transform',
'box-align',
'box-flex',
'box-orient',
'box-pack',
'box-shadow',
'box-sizing',
'table-layout',
'animation',
'animation-delay',
'animation-duration',
'animation-iteration-count',
'animation-name',
'animation-play-state',
'animation-timing-function',
'animation-fill-mode',
'transition',
'transition-delay',
'transition-duration',
'transition-property',
'transition-timing-function',
'background-clip',
'backface-visibility',
'resize',
'appearance',
'user-select',
'interpolation-mode',
'direction',
'marks',
'page',
'set-link-source',
'unicode-bidi',
'speak',
],
'selector-pseudo-element-no-unknown': [
true,
{
ignorePseudoElements: ['v-deep'],
},
],
},
};

View File

@ -0,0 +1,145 @@
# vue-route-generator
[Vue Router](https://github.com/vuejs/vue-router) route config generator.
You may want to use [vue-auto-routing](https://github.com/ktsn/vue-auto-routing) for auto generating routing or [vue-cli-plugin-auto-routing](https://github.com/ktsn/vue-cli-plugin-auto-routing) which includes all useful features on routing.
## Overview
This tool generates a JavaScript code that exporting Vue Router's `routes` config by reading your Vue components directory.
For example, when you have following file structure:
```
pages/
├── index.vue
├── users.vue
└── users/
   └── _id.vue
```
Then run the following script:
```js
const { generateRoutes } = require('vue-route-generator')
const code = generateRoutes({
pages: './pages' // Vue page component directory
})
console.log(code)
```
vue-route-generator will generate like the following code (beautified the indentations etc.):
```js
export default [
{
name: 'index',
path: '/',
component: () => import('@/pages/index.vue')
},
{
name: 'users',
path: '/users',
component: () => import('@/pages/users.vue'),
children: [
{
name: 'users-id',
path: ':id',
component: () => import('@/pages/users/_id.vue')
}
]
}
]
```
You can save the code and include router instance:
```js
const fs = require('fs')
const { generateRoutes } = require('vue-route-generator')
const code = generateRoutes({
pages: './pages'
})
fs.writeFileSync('./router/routes.js', code)
```
```js
// router/index.js
import Vue from 'vue'
import Router from 'vue-router'
// import generated routes
import routes from './routes'
Vue.use(Router)
export default new Router({
routes
})
```
## Routing
The routing is inspired by [Nuxt routing](https://nuxtjs.org/guide/routing) and is implemented with the same functionality.
### Partials
Directories and files started and ended with `__` (two underscores, e.g. `__foo__.vue`) will be ignored. You can use them as partial components which will be used in some page components.
## Route Meta
If the components have `<route-meta>` custom block, its json content is passed to generated route meta.
For example, if `index.vue` has the following `<route-meta>` block:
```vue
<route-meta>
{
"requiresAuth": true
}
</route-meta>
<template>
<h1>Hello</h1>
</template>
```
The generated route config is like following:
```js
module.exports = [
{
name: 'index',
path: '/',
component: () => import('@/pages/index.vue'),
meta: {
requiresAuth: true
}
}
]
```
## References
### `generateRoutes(config: GenerateConfig): string`
`GenerateConfig` has the following properties:
- `pages`: Path to the directory that contains your page components.
- `importPrefix`: A string that will be added to importing component path (default `@/pages/`).
- `dynamicImport`: Use dynamic import expression (`import()`) to import component (default `true`).
- `nested`: If `true`, generated route path will be always treated as nested. (e.g. will generate `path: 'foo'` rather than `path: '/foo'`)
## Related Projects
- [vue-cli-plugin-auto-routing](https://github.com/ktsn/vue-cli-plugin-auto-routing): Vue CLI plugin including auto pages and layouts resolution.
- [vue-router-layout](https://github.com/ktsn/vue-router-layout): Lightweight layout resolver for Vue Router.
- [vue-auto-routing](https://github.com/ktsn/vue-auto-routing): Generate Vue Router routing automatically.
## License
MIT

View File

@ -0,0 +1,9 @@
export interface GenerateConfig {
pages: string;
importPrefix?: string;
dynamicImport?: boolean;
chunkNamePrefix?: string;
nested?: boolean;
patterns?: Array<string>;
}
export declare function generateRoutes({ pages, importPrefix, dynamicImport, chunkNamePrefix, nested, patterns }: GenerateConfig): string;

View File

@ -0,0 +1,19 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateRoutes = void 0;
const fs = require("fs");
const path = require("path");
const fg = require("fast-glob");
const routes_1 = require("./template/routes");
const resolve_1 = require("./resolve");
function generateRoutes({ pages, importPrefix = '@/pages/', dynamicImport = true, chunkNamePrefix = '', nested = false, patterns = ['**/*.vue', '!**/__*__.vue', '!**/__*__/**', '!**/components/**'] }) {
const pagePaths = fg.sync(patterns, {
cwd: pages,
onlyFiles: true,
});
const metaList = (0, resolve_1.resolveRoutePaths)(pagePaths, importPrefix, nested, (file) => {
return fs.readFileSync(path.join(pages, file), 'utf8');
});
return (0, routes_1.createRoutes)(metaList, dynamicImport, chunkNamePrefix);
}
exports.generateRoutes = generateRoutes;

View File

@ -0,0 +1,5 @@
export interface NestedMap<T> {
value?: T;
children?: Map<string, NestedMap<T>>;
}
export declare function setToMap<T>(map: NestedMap<T>, path: string[], value: T): void;

View File

@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.setToMap = void 0;
function setToMap(map, path, value) {
const target = path.reduce((item, key) => {
if (!item.children) {
item.children = new Map();
}
let child = item.children.get(key);
if (!child) {
child = {};
item.children.set(key, child);
}
return child;
}, map);
target.value = value;
}
exports.setToMap = setToMap;

View File

@ -0,0 +1,8 @@
export interface ParseResult {
customBlocks: CustomBlock[];
}
export interface CustomBlock {
type: string;
content: string;
}
export declare function parseSFC(code: string): ParseResult;

View File

@ -0,0 +1,24 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSFC = void 0;
function parseSFC(code) {
try {
const parserV2 = require('vue-template-compiler')
.parseComponent;
return parserV2(code, {
pad: 'space',
});
}
catch (_a) {
try {
const parserV3 = require('@vue/compiler-sfc').parse;
return parserV3(code, {
pad: 'space',
}).descriptor;
}
catch (_b) {
throw new Error('[vue-route-generator] Either "vue-template-compiler" or "@vue/compiler-sfc" is required.');
}
}
}
exports.parseSFC = parseSFC;

View File

@ -0,0 +1,12 @@
export interface PageMeta {
name: string;
chunkName: string;
specifier: string;
path: string;
pathSegments: string[];
component: string;
children?: PageMeta[];
routeMeta?: any;
route?: any;
}
export declare function resolveRoutePaths(paths: string[], importPrefix: string, nested: boolean, readFile: (path: string) => string): PageMeta[];

View File

@ -0,0 +1,177 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveRoutePaths = void 0;
const nested_map_1 = require("./nested-map");
const parse_sfc_1 = require("./parse-sfc");
const routeMetaName = 'route-meta';
const routeBlockName = 'route';
function resolveRoutePaths(paths, importPrefix, nested, readFile) {
const map = {};
const splitted = paths.map((p) => p.split('/'));
splitted.forEach((path) => {
(0, nested_map_1.setToMap)(map, pathToMapPath(path), path);
});
const schema = pathMapToMeta(map, importPrefix, nested, readFile);
return mergeComponent(schema);
}
exports.resolveRoutePaths = resolveRoutePaths;
function mergeComponent(schema) {
return schema.map(item => {
var _a, _b;
const component = ((_a = item.route) === null || _a === void 0 ? void 0 : _a.component) || ((_b = item.routeMeta) === null || _b === void 0 ? void 0 : _b.component);
if (component) {
return Object.assign(Object.assign({}, item), { component: component || '' });
}
else {
return item;
}
});
}
function pathMapToMeta(map, importPrefix, nested, readFile, parentDepth = 0) {
if (map.value) {
const path = map.value;
const meta = {
name: pathToName(path),
chunkName: pathToChunkName(path),
specifier: pathToSpecifier(path),
path: pathToRoute(path, parentDepth, nested),
pathSegments: toActualPath(path),
component: importPrefix + path.join('/'),
};
const content = readFile(path.join('/'));
const parsed = (0, parse_sfc_1.parseSFC)(content);
const routeMetaBlock = parsed.customBlocks.find((b) => b.type === routeMetaName);
const routeBlock = parsed.customBlocks.find((b) => b.type === routeBlockName);
// Deprecated. Will be removed in a later version
if (routeMetaBlock) {
// console.warn(
// '<route-meta> custom block is deprecated. Use <route> block instead. Found in ' +
// path.join('/')
// )
meta.routeMeta = tryParseCustomBlock(routeMetaBlock.content, path, 'route-meta');
}
if (routeBlock) {
meta.route = tryParseCustomBlock(routeBlock.content, path, 'route');
}
if (map.children) {
meta.children = pathMapChildrenToMeta(map.children, importPrefix, nested, readFile, meta.pathSegments.length);
}
return [meta];
}
return map.children
? pathMapChildrenToMeta(map.children, importPrefix, nested, readFile, parentDepth)
: [];
}
function routePathComparator(a, b) {
const a0 = a[0];
const b0 = b[0];
if (!a0 || !b0) {
return a.length - b.length;
}
const aOrder = isDynamicRoute(a0) ? 1 : 0;
const bOrder = isDynamicRoute(b0) ? 1 : 0;
const order = aOrder - bOrder;
return order !== 0 ? order : routePathComparator(a.slice(1), b.slice(1));
}
function pathMapChildrenToMeta(children, importPrefix, nested, readFile, parentDepth) {
return Array.from(children.values())
.reduce((acc, value) => {
return acc.concat(pathMapToMeta(value, importPrefix, nested, readFile, parentDepth));
}, [])
.sort((a, b) => {
// Prioritize static routes than dynamic routes
return routePathComparator(a.pathSegments, b.pathSegments);
});
}
function tryParseCustomBlock(content, filePath, blockName) {
try {
return JSON.parse(content);
}
catch (err) {
const joinedPath = filePath.join('/');
const wrapped = new Error(`Invalid json format of <${blockName}> content in ${joinedPath}\n` +
err);
// Store file path to provide useful information to downstream tools
// like friendly-errors-webpack-plugin
wrapped.file = joinedPath;
throw wrapped;
}
}
function isDynamicRoute(segment) {
return segment[0] === ':';
}
function isOmittable(segment) {
return segment === 'index';
}
/**
* - Remove `.vue` from the last path
* - Omit if the last segument is `index`
* - Convert dynamic route to `:param` format
*/
function toActualPath(segments) {
const lastIndex = segments.length - 1;
const last = basename(segments[lastIndex]);
segments = segments.slice(0, -1).concat(last);
return segments
.map((s, i) => {
if (s[0] === '_') {
const suffix = lastIndex === i ? '?' : '';
return ':' + s.slice(1) + suffix;
}
else {
return s;
}
})
.filter((s) => !isOmittable(s));
}
function pathToMapPath(segments) {
const last = segments[segments.length - 1];
return segments.slice(0, -1).concat(basename(last));
}
function pathToName(segments) {
const last = segments[segments.length - 1];
segments = segments
.slice(0, -1)
.concat(basename(last))
.filter((s) => !isOmittable(s));
if (segments.length === 0) {
return 'index';
}
return segments
.map((s) => {
return s[0] === '_' ? s.slice(1) : s;
})
.join('-');
}
function pathToChunkName(segments) {
const last = segments[segments.length - 1];
segments = segments.slice(0, -1).concat(basename(last));
return segments
.map((s) => {
return s[0] === '_' ? s.slice(1) : s;
})
.join('-');
}
function toHump(name) {
return name.replace(/\-(\w)/g, function (all, letter) {
all.valueOf();
return letter.toUpperCase();
});
}
function pathToSpecifier(segments) {
const last = segments[segments.length - 1];
segments = segments.slice(0, -1).concat(basename(last));
return toHump(segments
.map((s) => {
return s[0] === '_' ? s.slice(1) : s;
})
.join('-'));
}
function pathToRoute(segments, parentDepth, nested) {
const prefix = nested || parentDepth > 0 ? '' : '/';
// return prefix + toActualPath(segments).slice(parentDepth).join('/')
return prefix + toActualPath(segments).join('/');
}
function basename(filename) {
return filename.replace(/\.[^.]+$/g, '');
}

View File

@ -0,0 +1,2 @@
import { PageMeta } from '../resolve';
export declare function createRoutes(meta: PageMeta[], dynamic: boolean, chunkNamePrefix: string): string;

View File

@ -0,0 +1,56 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createRoutes = void 0;
const prettier = require("prettier");
function isAllowedRouteOption(key) {
return !['name', 'meta', 'path', 'component'].includes(key);
}
function createChildrenRoute(children) {
return `,children: [${children.map(createRoute).join(',')}]`;
}
function createRoute(meta) {
var _a, _b, _c;
const children = !meta.children ? '' : createChildrenRoute(meta.children);
const route = (_a = meta.route) !== null && _a !== void 0 ? _a : {};
// If default child is exists, the route should not have a name.
const routeName = meta.children && meta.children.some((m) => m.path === '')
? ''
: `name: '${(_b = route.name) !== null && _b !== void 0 ? _b : meta.name}',`;
const routeMeta = meta.routeMeta
? ',meta: ' + JSON.stringify(meta.routeMeta, null, 2)
: ((_c = meta.route) === null || _c === void 0 ? void 0 : _c.meta)
? ',meta: ' + JSON.stringify(route.meta, null, 2)
: '';
const otherOptions = Object.keys(route)
.filter(isAllowedRouteOption)
.map((key) => `,${key}: ${JSON.stringify(route[key])}`)
.join(',');
return `
{
${routeName}
path: '${meta.path}',
component: ${meta.specifier}${routeMeta}${otherOptions}${children}
}`;
}
function createImport(meta, dynamic, chunkNamePrefix) {
const code = dynamic
? `function ${meta.specifier}() { return import(/* webpackChunkName: "${chunkNamePrefix}${meta.chunkName}" */ '${meta.component}') };`
: `import ${meta.specifier} from '${meta.component}';`;
return meta.children
? [code]
.concat(meta.children.map((child) => createImport(child, dynamic, chunkNamePrefix)))
.join('\n')
: code;
}
function createRoutes(meta, dynamic, chunkNamePrefix) {
const imports = meta
.map((m) => createImport(m, dynamic, chunkNamePrefix))
.join('\n');
const code = meta.map(createRoute).join(',');
return prettier.format(`${imports}\n\nexport default [${code}];`, {
parser: 'babel',
semi: false,
singleQuote: true,
});
}
exports.createRoutes = createRoutes;

View File

@ -0,0 +1,68 @@
{
"name": "vue-route-generator",
"version": "0.3.3",
"author": "katashin",
"description": "Vue Router route config generator",
"keywords": [
"Vue",
"Vue Router",
"routing",
"generator"
],
"license": "MIT",
"main": "lib/index.js",
"typings": "lib/index.d.ts",
"files": [
"lib"
],
"homepage": "https://github.com/ktsn/vue-route-generator",
"bugs": "https://github.com/ktsn/vue-route-generator/issues",
"repository": {
"type": "git",
"url": "https://github.com/ktsn/vue-route-generator.git"
},
"scripts": {
"prepublishOnly": "npm run clean && npm run test && npm run build",
"clean": "rm -rf lib",
"build": "tsc -p src",
"dev": "jest --watch",
"lint": "tslint -p . && prettier --list-different \"{src,scripts,test}/**/*.{js,ts}\"",
"format": "prettier --write \"{src,scripts,test}/**/*.{js,ts}\"",
"test": "npm run lint && npm run test:unit",
"test:unit": "jest"
},
"jest": {
"transform": {
"^.+\\.ts$": "ts-jest"
},
"testRegex": "/test/.+\\.spec\\.(js|ts)$",
"moduleFileExtensions": [
"ts",
"js",
"json"
],
"globals": {
"ts-jest": {
"tsConfigFile": "test/tsconfig.json"
}
}
},
"devDependencies": {
"@types/jest": "^26.0.19",
"@types/node": "^15.12.1",
"@types/prettier": "^2.1.6",
"@vue/compiler-sfc": "^3.0.5",
"jest": "^26.6.3",
"ts-jest": "^26.4.4",
"tslint": "^6.1.3",
"tslint-config-ktsn": "^2.1.0",
"tslint-config-prettier": "^1.18.0",
"typescript": "^4.1.3",
"vue": "^3.0.5",
"vue-template-compiler": "^2.6.12"
},
"dependencies": {
"fast-glob": "^3.2.4",
"prettier": "2.2.1"
}
}