@maketribe/ms-app 3.0.0 → 3.0.3
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/dist/cjs/DataModelDefines.d.ts +23 -0
- package/dist/cjs/DataModelDefines.js +28 -0
- package/dist/cjs/DataModelDefines.js.map +1 -0
- package/dist/cjs/MSAppClient.d.ts +15 -8
- package/dist/cjs/MSAppClient.js +25 -102
- package/dist/cjs/MSAppClient.js.map +1 -1
- package/dist/cjs/MSDataFormComponents.js +1 -1
- package/dist/cjs/MSDataFormComponents.js.map +1 -1
- package/dist/cjs/PageManager.d.ts +16 -0
- package/dist/cjs/PageManager.js +121 -0
- package/dist/cjs/PageManager.js.map +1 -0
- package/dist/cjs/Router.js +6 -8
- package/dist/cjs/Router.js.map +1 -1
- package/dist/cjs/UserSession.d.ts +10 -1
- package/dist/cjs/UserSession.js +37 -8
- package/dist/cjs/UserSession.js.map +1 -1
- package/dist/cjs/components/image-select/image-select.js +2 -2
- package/dist/cjs/components/image-select/image-select.js.map +1 -1
- package/dist/cjs/components/material-list/material-group.vue2.js +5 -5
- package/dist/cjs/components/material-list/material-group.vue2.js.map +1 -1
- package/dist/cjs/components/member-table/member-table.vue2.js +2 -10
- package/dist/cjs/components/member-table/member-table.vue2.js.map +1 -1
- package/dist/cjs/components/verify-dialog/index.d.ts +8 -2
- package/dist/cjs/components/verify-dialog/verify-dialog-option.d.ts +1 -1
- package/dist/cjs/components/verify-dialog/verify-dialog-option.js.map +1 -1
- package/dist/cjs/components/verify-dialog/verify-dialog.d.ts +8 -2
- package/dist/cjs/components/verify-dialog/verify-dialog.js +2 -25
- package/dist/cjs/components/verify-dialog/verify-dialog.js.map +1 -1
- package/dist/cjs/constants/index.d.ts +1 -0
- package/dist/cjs/constants/index.js +2 -0
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/menu.d.ts +4 -0
- package/dist/cjs/constants/menu.js +10 -0
- package/dist/cjs/constants/menu.js.map +1 -0
- package/dist/cjs/dataview/config/ConfigForm.js +9 -9
- package/dist/cjs/dataview/config/ConfigForm.js.map +1 -1
- package/dist/cjs/dataview/config/ConfigTable.js +2 -1
- package/dist/cjs/dataview/config/ConfigTable.js.map +1 -1
- package/dist/cjs/dataview/department/DepartmentForm.js +2 -1
- package/dist/cjs/dataview/department/DepartmentForm.js.map +1 -1
- package/dist/cjs/dataview/department/DepartmentTable.js +2 -1
- package/dist/cjs/dataview/department/DepartmentTable.js.map +1 -1
- package/dist/cjs/dataview/material/MaterialForm.js +2 -1
- package/dist/cjs/dataview/material/MaterialForm.js.map +1 -1
- package/dist/cjs/dataview/material/MaterialMan.js +1 -0
- package/dist/cjs/dataview/material/MaterialMan.js.map +1 -1
- package/dist/cjs/dataview/material/MaterialTable.js +2 -1
- package/dist/cjs/dataview/material/MaterialTable.js.map +1 -1
- package/dist/cjs/dataview/material/material-group/MaterialGroupForm.js.map +1 -1
- package/dist/cjs/dataview/material/material-group/MaterialGroupTable.js.map +1 -1
- package/dist/cjs/dataview/member/MemberForm.js +2 -1
- package/dist/cjs/dataview/member/MemberForm.js.map +1 -1
- package/dist/cjs/dataview/member/MemberTable.js +4 -3
- package/dist/cjs/dataview/member/MemberTable.js.map +1 -1
- package/dist/cjs/dataview/menu/MenuForm.d.ts +2 -0
- package/dist/cjs/dataview/menu/MenuForm.js +52 -10
- package/dist/cjs/dataview/menu/MenuForm.js.map +1 -1
- package/dist/cjs/dataview/menu/MenuTable.d.ts +1 -1
- package/dist/cjs/dataview/menu/MenuTable.js +2 -1
- package/dist/cjs/dataview/menu/MenuTable.js.map +1 -1
- package/dist/cjs/dataview/role/RoleForm.js +2 -1
- package/dist/cjs/dataview/role/RoleForm.js.map +1 -1
- package/dist/cjs/dataview/role/RoleTable.js +2 -1
- package/dist/cjs/dataview/role/RoleTable.js.map +1 -1
- package/dist/cjs/dataview/route/RouteForm.js +10 -6
- package/dist/cjs/dataview/route/RouteForm.js.map +1 -1
- package/dist/cjs/dataview/route/RouteTable.js +2 -1
- package/dist/cjs/dataview/route/RouteTable.js.map +1 -1
- package/dist/cjs/define-data-form.d.ts +2 -0
- package/dist/cjs/define-data-form.js +14 -0
- package/dist/cjs/define-data-form.js.map +1 -0
- package/dist/cjs/define-data-table.d.ts +2 -0
- package/dist/cjs/define-data-table.js +14 -0
- package/dist/cjs/define-data-table.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +26 -16
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/init-application.js +24 -22
- package/dist/cjs/init-application.js.map +1 -1
- package/dist/cjs/layouts/common/lock/index.d.ts +2 -0
- package/dist/cjs/layouts/common/lock/index.js +11 -0
- package/dist/cjs/layouts/common/lock/index.js.map +1 -0
- package/dist/cjs/layouts/common/lock/lock.d.ts +2 -0
- package/dist/cjs/layouts/common/lock/lock.js +100 -0
- package/dist/cjs/layouts/common/lock/lock.js.map +1 -0
- package/dist/cjs/layouts/default/components/bar/index.d.ts +10 -0
- package/dist/cjs/layouts/default/components/bar/index.js +73 -0
- package/dist/cjs/layouts/default/components/bar/index.js.map +1 -0
- package/dist/cjs/layouts/default/components/index.d.ts +2 -0
- package/dist/cjs/layouts/default/components/index.js +10 -0
- package/dist/cjs/layouts/default/components/index.js.map +1 -0
- package/dist/cjs/layouts/default/components/menu/index.d.ts +10 -0
- package/dist/cjs/layouts/default/components/menu/index.js +62 -0
- package/dist/cjs/layouts/default/components/menu/index.js.map +1 -0
- package/dist/cjs/layouts/default/components/menu/menu-item.d.ts +13 -0
- package/dist/cjs/layouts/default/components/menu/menu-item.js +51 -0
- package/dist/cjs/layouts/default/components/menu/menu-item.js.map +1 -0
- package/dist/cjs/layouts/default/index.d.ts +1 -0
- package/dist/cjs/layouts/default/index.js +80 -0
- package/dist/cjs/layouts/default/index.js.map +1 -0
- package/dist/cjs/layouts/index.d.ts +1 -0
- package/dist/cjs/layouts/index.js +2 -0
- package/dist/cjs/layouts/index.js.map +1 -1
- package/dist/cjs/layouts/manager-system/components/header/nav/nav.js +8 -16
- package/dist/cjs/layouts/manager-system/components/header/nav/nav.js.map +1 -1
- package/dist/cjs/layouts/manager-system/components/menu/index.d.ts +2 -0
- package/dist/cjs/layouts/manager-system/components/menu/index.js +11 -0
- package/dist/cjs/layouts/manager-system/components/menu/index.js.map +1 -0
- package/dist/cjs/layouts/manager-system/components/menu/logo.d.ts +2 -0
- package/dist/cjs/layouts/manager-system/components/menu/logo.js +31 -0
- package/dist/cjs/layouts/manager-system/components/menu/logo.js.map +1 -0
- package/dist/cjs/layouts/manager-system/components/menu/menu.d.ts +2 -0
- package/dist/cjs/layouts/manager-system/components/menu/menu.js +107 -0
- package/dist/cjs/layouts/manager-system/components/menu/menu.js.map +1 -0
- package/dist/cjs/layouts/manager-system/manager-system.js +55 -5
- package/dist/cjs/layouts/manager-system/manager-system.js.map +1 -1
- package/dist/cjs/menu/Menu.d.ts +1 -0
- package/dist/cjs/menu/Menu.js +1 -1
- package/dist/cjs/menu/Menu.js.map +1 -1
- package/dist/cjs/page/index/404.vue.d.ts +2 -0
- package/dist/cjs/page/index/404.vue.js +13 -0
- package/dist/cjs/page/index/404.vue.js.map +1 -0
- package/dist/cjs/page/index/dv/default/add.vue.js +2 -2
- package/dist/cjs/page/index/dv/default/add.vue2.js +2 -2
- package/dist/cjs/page/index/dv/default/add.vue2.js.map +1 -1
- package/dist/cjs/page/index/dv/default/edit.vue.js +2 -2
- package/dist/cjs/page/index/dv/default/edit.vue2.js +2 -2
- package/dist/cjs/page/index/dv/default/edit.vue2.js.map +1 -1
- package/dist/cjs/page/index/dv/default/index.vue2.js +13 -15
- package/dist/cjs/page/index/dv/default/index.vue2.js.map +1 -1
- package/dist/cjs/page/index/dv/default/tree.vue.js +2 -2
- package/dist/cjs/page/index/dv/default/tree.vue2.js +3 -3
- package/dist/cjs/page/index/dv/default/tree.vue2.js.map +1 -1
- package/dist/cjs/page/index/dv/ms-member/index.vue.js +2 -2
- package/dist/cjs/page/index/dv/ms-member/index.vue2.js +2 -2
- package/dist/cjs/page/index/dv/ms-member/index.vue2.js.map +1 -1
- package/dist/cjs/page/index/dv/ms-role/index.vue.js +2 -2
- package/dist/cjs/page/index/material/index.vue.js +2 -2
- package/dist/cjs/page/index/material/index.vue2.js.map +1 -1
- package/dist/cjs/page/index.vue.d.ts +2 -0
- package/dist/cjs/page/index.vue.js +9 -0
- package/dist/cjs/page/index.vue.js.map +1 -0
- package/dist/cjs/page/index.vue2.js +30 -0
- package/dist/cjs/page/index.vue2.js.map +1 -0
- package/dist/cjs/page/login/index.vue.js +2 -2
- package/dist/cjs/page/login/index.vue2.js +2 -17
- package/dist/cjs/page/login/index.vue2.js.map +1 -1
- package/dist/cjs/page/signup/index.vue.js +2 -2
- package/dist/cjs/page/signup/index.vue2.js +2 -18
- package/dist/cjs/page/signup/index.vue2.js.map +1 -1
- package/dist/cjs/router-middleware/auth.d.ts +2 -1
- package/dist/cjs/router-middleware/auth.js +2 -8
- package/dist/cjs/router-middleware/auth.js.map +1 -1
- package/dist/cjs/utils.d.ts +6 -0
- package/dist/cjs/utils.js +151 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/DataModelDefines.d.ts +23 -0
- package/dist/esm/DataModelDefines.js +26 -0
- package/dist/esm/DataModelDefines.js.map +1 -0
- package/dist/esm/MSAppClient.d.ts +15 -8
- package/dist/esm/MSAppClient.js +27 -104
- package/dist/esm/MSAppClient.js.map +1 -1
- package/dist/esm/MSDataFormComponents.js +1 -1
- package/dist/esm/MSDataFormComponents.js.map +1 -1
- package/dist/esm/PageManager.d.ts +16 -0
- package/dist/esm/PageManager.js +117 -0
- package/dist/esm/PageManager.js.map +1 -0
- package/dist/esm/Router.js +4 -8
- package/dist/esm/Router.js.map +1 -1
- package/dist/esm/UserSession.d.ts +10 -1
- package/dist/esm/UserSession.js +38 -9
- package/dist/esm/UserSession.js.map +1 -1
- package/dist/esm/components/image-select/image-select.js +1 -1
- package/dist/esm/components/image-select/image-select.js.map +1 -1
- package/dist/esm/components/material-list/material-group.vue2.js +1 -1
- package/dist/esm/components/material-list/material-group.vue2.js.map +1 -1
- package/dist/esm/components/member-table/member-table.vue2.js +2 -10
- package/dist/esm/components/member-table/member-table.vue2.js.map +1 -1
- package/dist/esm/components/verify-dialog/index.d.ts +8 -2
- package/dist/esm/components/verify-dialog/verify-dialog-option.d.ts +1 -1
- package/dist/esm/components/verify-dialog/verify-dialog-option.js.map +1 -1
- package/dist/esm/components/verify-dialog/verify-dialog.d.ts +8 -2
- package/dist/esm/components/verify-dialog/verify-dialog.js +2 -25
- package/dist/esm/components/verify-dialog/verify-dialog.js.map +1 -1
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/menu.d.ts +4 -0
- package/dist/esm/constants/menu.js +8 -0
- package/dist/esm/constants/menu.js.map +1 -0
- package/dist/esm/dataview/config/ConfigForm.js +9 -9
- package/dist/esm/dataview/config/ConfigForm.js.map +1 -1
- package/dist/esm/dataview/config/ConfigTable.js +2 -1
- package/dist/esm/dataview/config/ConfigTable.js.map +1 -1
- package/dist/esm/dataview/department/DepartmentForm.js +2 -1
- package/dist/esm/dataview/department/DepartmentForm.js.map +1 -1
- package/dist/esm/dataview/department/DepartmentTable.js +2 -1
- package/dist/esm/dataview/department/DepartmentTable.js.map +1 -1
- package/dist/esm/dataview/material/MaterialForm.js +2 -1
- package/dist/esm/dataview/material/MaterialForm.js.map +1 -1
- package/dist/esm/dataview/material/MaterialMan.js +2 -1
- package/dist/esm/dataview/material/MaterialMan.js.map +1 -1
- package/dist/esm/dataview/material/MaterialTable.js +2 -1
- package/dist/esm/dataview/material/MaterialTable.js.map +1 -1
- package/dist/esm/dataview/material/material-group/MaterialGroupForm.js.map +1 -1
- package/dist/esm/dataview/material/material-group/MaterialGroupTable.js.map +1 -1
- package/dist/esm/dataview/member/MemberForm.js +2 -1
- package/dist/esm/dataview/member/MemberForm.js.map +1 -1
- package/dist/esm/dataview/member/MemberTable.js +4 -3
- package/dist/esm/dataview/member/MemberTable.js.map +1 -1
- package/dist/esm/dataview/menu/MenuForm.d.ts +2 -0
- package/dist/esm/dataview/menu/MenuForm.js +52 -10
- package/dist/esm/dataview/menu/MenuForm.js.map +1 -1
- package/dist/esm/dataview/menu/MenuTable.d.ts +1 -1
- package/dist/esm/dataview/menu/MenuTable.js +2 -1
- package/dist/esm/dataview/menu/MenuTable.js.map +1 -1
- package/dist/esm/dataview/role/RoleForm.js +2 -1
- package/dist/esm/dataview/role/RoleForm.js.map +1 -1
- package/dist/esm/dataview/role/RoleTable.js +2 -1
- package/dist/esm/dataview/role/RoleTable.js.map +1 -1
- package/dist/esm/dataview/route/RouteForm.js +10 -6
- package/dist/esm/dataview/route/RouteForm.js.map +1 -1
- package/dist/esm/dataview/route/RouteTable.js +2 -1
- package/dist/esm/dataview/route/RouteTable.js.map +1 -1
- package/dist/esm/define-data-form.d.ts +2 -0
- package/dist/esm/define-data-form.js +12 -0
- package/dist/esm/define-data-form.js.map +1 -0
- package/dist/esm/define-data-table.d.ts +2 -0
- package/dist/esm/define-data-table.js +12 -0
- package/dist/esm/define-data-table.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init-application.js +24 -22
- package/dist/esm/init-application.js.map +1 -1
- package/dist/esm/layouts/common/lock/index.d.ts +2 -0
- package/dist/esm/layouts/common/lock/index.js +6 -0
- package/dist/esm/layouts/common/lock/index.js.map +1 -0
- package/dist/esm/layouts/common/lock/lock.d.ts +2 -0
- package/dist/esm/layouts/common/lock/lock.js +98 -0
- package/dist/esm/layouts/common/lock/lock.js.map +1 -0
- package/dist/esm/layouts/default/components/bar/index.d.ts +10 -0
- package/dist/esm/layouts/default/components/bar/index.js +71 -0
- package/dist/esm/layouts/default/components/bar/index.js.map +1 -0
- package/dist/esm/layouts/default/components/index.d.ts +2 -0
- package/dist/esm/layouts/default/components/index.js +3 -0
- package/dist/esm/layouts/default/components/index.js.map +1 -0
- package/dist/esm/layouts/default/components/menu/index.d.ts +10 -0
- package/dist/esm/layouts/default/components/menu/index.js +60 -0
- package/dist/esm/layouts/default/components/menu/index.js.map +1 -0
- package/dist/esm/layouts/default/components/menu/menu-item.d.ts +13 -0
- package/dist/esm/layouts/default/components/menu/menu-item.js +49 -0
- package/dist/esm/layouts/default/components/menu/menu-item.js.map +1 -0
- package/dist/esm/layouts/default/index.d.ts +1 -0
- package/dist/esm/layouts/default/index.js +78 -0
- package/dist/esm/layouts/default/index.js.map +1 -0
- package/dist/esm/layouts/index.d.ts +1 -0
- package/dist/esm/layouts/index.js +1 -0
- package/dist/esm/layouts/index.js.map +1 -1
- package/dist/esm/layouts/manager-system/components/header/nav/nav.js +8 -16
- package/dist/esm/layouts/manager-system/components/header/nav/nav.js.map +1 -1
- package/dist/esm/layouts/manager-system/components/menu/index.d.ts +2 -0
- package/dist/esm/layouts/manager-system/components/menu/index.js +6 -0
- package/dist/esm/layouts/manager-system/components/menu/index.js.map +1 -0
- package/dist/esm/layouts/manager-system/components/menu/logo.d.ts +2 -0
- package/dist/esm/layouts/manager-system/components/menu/logo.js +29 -0
- package/dist/esm/layouts/manager-system/components/menu/logo.js.map +1 -0
- package/dist/esm/layouts/manager-system/components/menu/menu.d.ts +2 -0
- package/dist/esm/layouts/manager-system/components/menu/menu.js +105 -0
- package/dist/esm/layouts/manager-system/components/menu/menu.js.map +1 -0
- package/dist/esm/layouts/manager-system/manager-system.js +56 -6
- package/dist/esm/layouts/manager-system/manager-system.js.map +1 -1
- package/dist/esm/menu/Menu.d.ts +1 -0
- package/dist/esm/menu/Menu.js +1 -1
- package/dist/esm/menu/Menu.js.map +1 -1
- package/dist/esm/page/index/404.vue.d.ts +2 -0
- package/dist/esm/page/index/404.vue.js +11 -0
- package/dist/esm/page/index/404.vue.js.map +1 -0
- package/dist/esm/page/index/dv/default/add.vue.js +2 -2
- package/dist/esm/page/index/dv/default/add.vue2.js +2 -2
- package/dist/esm/page/index/dv/default/add.vue2.js.map +1 -1
- package/dist/esm/page/index/dv/default/edit.vue.js +2 -2
- package/dist/esm/page/index/dv/default/edit.vue2.js +2 -2
- package/dist/esm/page/index/dv/default/edit.vue2.js.map +1 -1
- package/dist/esm/page/index/dv/default/index.vue2.js +15 -17
- package/dist/esm/page/index/dv/default/index.vue2.js.map +1 -1
- package/dist/esm/page/index/dv/default/tree.vue.js +2 -2
- package/dist/esm/page/index/dv/default/tree.vue2.js +3 -3
- package/dist/esm/page/index/dv/default/tree.vue2.js.map +1 -1
- package/dist/esm/page/index/dv/ms-member/index.vue.js +2 -2
- package/dist/esm/page/index/dv/ms-member/index.vue2.js +2 -2
- package/dist/esm/page/index/dv/ms-member/index.vue2.js.map +1 -1
- package/dist/esm/page/index/dv/ms-role/index.vue.js +2 -2
- package/dist/esm/page/index/material/index.vue.js +2 -2
- package/dist/esm/page/index/material/index.vue2.js.map +1 -1
- package/dist/esm/page/index.vue.d.ts +2 -0
- package/dist/esm/page/index.vue.js +7 -0
- package/dist/esm/page/index.vue.js.map +1 -0
- package/dist/esm/page/index.vue2.js +28 -0
- package/dist/esm/page/index.vue2.js.map +1 -0
- package/dist/esm/page/login/index.vue.js +2 -2
- package/dist/esm/page/login/index.vue2.js +2 -17
- package/dist/esm/page/login/index.vue2.js.map +1 -1
- package/dist/esm/page/signup/index.vue.js +2 -2
- package/dist/esm/page/signup/index.vue2.js +2 -18
- package/dist/esm/page/signup/index.vue2.js.map +1 -1
- package/dist/esm/router-middleware/auth.d.ts +2 -1
- package/dist/esm/router-middleware/auth.js +2 -8
- package/dist/esm/router-middleware/auth.js.map +1 -1
- package/dist/esm/utils.d.ts +6 -0
- package/dist/esm/utils.js +149 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/style/index.css +2 -2
- package/dist/style/layouts/common/index.css +1 -0
- package/dist/style/layouts/common/lock.css +1 -0
- package/dist/style/layouts/default/bar.css +1 -0
- package/dist/style/layouts/default/index.css +1 -0
- package/dist/style/layouts/default/menu.css +1 -0
- package/dist/style/layouts/index.css +1 -1
- package/dist/style/layouts/manager-system/aside.css +1 -1
- package/dist/style/layouts/manager-system/header.css +1 -1
- package/dist/style/layouts/manager-system/index.css +1 -1
- package/dist/style/layouts/manager-system/logo.css +1 -0
- package/dist/style/layouts/manager-system/manager-system.css +1 -1
- package/dist/style/layouts/manager-system/menu.css +1 -1
- package/dist/style/src/layouts/common/index.scss +1 -0
- package/dist/style/src/layouts/common/lock.scss +27 -0
- package/dist/style/src/layouts/default/bar.scss +83 -0
- package/dist/style/src/layouts/default/index.scss +37 -0
- package/dist/style/src/layouts/default/menu.scss +17 -0
- package/dist/style/src/layouts/index.scss +3 -1
- package/dist/style/src/layouts/manager-system/aside.scss +48 -0
- package/dist/style/src/layouts/manager-system/header.scss +13 -7
- package/dist/style/src/layouts/manager-system/index.scss +2 -1
- package/dist/style/src/layouts/manager-system/logo.scss +26 -0
- package/dist/style/src/layouts/manager-system/manager-system.scss +45 -1
- package/dist/style/src/layouts/manager-system/menu.scss +208 -26
- package/package.json +11 -7
- package/src/DataModelDefines.ts +53 -0
- package/src/MSAppClient.ts +39 -136
- package/src/MSDataFormComponents.ts +1 -1
- package/src/PageManager.ts +145 -0
- package/src/Router.ts +8 -8
- package/src/UserSession.ts +58 -15
- package/src/components/image-select/image-select.tsx +1 -1
- package/src/components/material-list/material-group.vue +1 -1
- package/src/components/verify-dialog/verify-dialog-option.ts +1 -1
- package/src/components/verify-dialog/verify-dialog.tsx +1 -1
- package/src/constants/index.ts +1 -0
- package/src/constants/menu.ts +4 -0
- package/src/dataview/config/ConfigForm.ts +13 -10
- package/src/dataview/config/ConfigTable.ts +1 -1
- package/src/dataview/department/DepartmentForm.ts +2 -6
- package/src/dataview/department/DepartmentTable.ts +2 -6
- package/src/dataview/material/MaterialForm.ts +2 -6
- package/src/dataview/material/MaterialMan.ts +5 -1
- package/src/dataview/material/MaterialTable.ts +1 -1
- package/src/dataview/material/material-group/MaterialGroupForm.ts +1 -6
- package/src/dataview/material/material-group/MaterialGroupTable.ts +1 -6
- package/src/dataview/member/MemberForm.ts +2 -6
- package/src/dataview/member/MemberTable.tsx +3 -3
- package/src/dataview/menu/MenuForm.ts +60 -9
- package/src/dataview/menu/MenuTable.ts +2 -2
- package/src/dataview/role/RoleForm.ts +2 -6
- package/src/dataview/role/RoleTable.ts +2 -1
- package/src/dataview/route/RouteForm.ts +11 -10
- package/src/dataview/route/RouteTable.ts +1 -1
- package/src/define-data-form.ts +12 -0
- package/src/define-data-table.ts +12 -0
- package/src/index.ts +3 -1
- package/src/init-application.ts +25 -27
- package/src/layouts/common/lock/index.ts +5 -0
- package/src/layouts/common/lock/lock.tsx +92 -0
- package/src/layouts/default/components/bar/index.tsx +76 -0
- package/src/layouts/default/components/index.ts +2 -0
- package/src/layouts/default/components/menu/index.tsx +57 -0
- package/src/layouts/default/components/menu/menu-item.tsx +63 -0
- package/src/layouts/default/index.tsx +72 -0
- package/src/layouts/index.ts +1 -0
- package/src/layouts/manager-system/components/header/nav/nav.tsx +9 -18
- package/src/layouts/manager-system/components/menu/index.ts +5 -0
- package/src/layouts/manager-system/components/menu/logo.tsx +29 -0
- package/src/layouts/manager-system/components/menu/menu.tsx +112 -0
- package/src/layouts/manager-system/manager-system.tsx +80 -4
- package/src/menu/Menu.ts +2 -2
- package/src/page/index/404.vue +3 -0
- package/src/page/index/dv/default/add.vue +3 -2
- package/src/page/index/dv/default/edit.vue +3 -2
- package/src/page/index/dv/default/index.vue +11 -16
- package/src/page/index/dv/default/tree.vue +4 -3
- package/src/page/index/dv/ms-member/index.vue +2 -2
- package/src/page/index/material/index.vue +0 -1
- package/src/page/index.vue +16 -0
- package/src/router-middleware/auth.ts +12 -9
- package/src/utils.ts +233 -0
- package/gulpfile.ts +0 -1
- package/rollup.config.mjs +0 -11
- package/style/components/image-select.scss +0 -13
- package/style/components/index.scss +0 -9
- package/style/components/material-group.scss +0 -38
- package/style/components/material-item.scss +0 -20
- package/style/components/material-list.scss +0 -67
- package/style/components/material-select.scss +0 -23
- package/style/components/member-table.scss +0 -9
- package/style/components/menu-permission-table.scss +0 -43
- package/style/components/role-permission-config.scss +0 -18
- package/style/components/verify-dialog.scss +0 -16
- package/style/index.scss +0 -4
- package/style/layouts/index.scss +0 -1
- package/style/layouts/manager-system/aside.scss +0 -116
- package/style/layouts/manager-system/header.scss +0 -129
- package/style/layouts/manager-system/index.scss +0 -4
- package/style/layouts/manager-system/manager-system.scss +0 -26
- package/style/layouts/manager-system/menu.scss +0 -47
- package/style/page/login.scss +0 -107
- package/tsconfig.build.json +0 -10
- package/tsconfig.json +0 -14
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from './index.vue2.js';
|
|
2
2
|
import _export_sfc from '../../../_virtual/_plugin-vue_export-helper.js';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/chenyu/Documents/develop/maketribe/make-appclient/packages/ms-app/src/page/index/material/index.vue"]]);
|
|
5
5
|
|
|
6
|
-
export {
|
|
6
|
+
export { index as default };
|
|
7
7
|
//# sourceMappingURL=index.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/page/index/material/index.vue"],"sourcesContent":["<template>\n <MKMaterialList :material-man=\"materialMan\" />\n</template>\n<script setup lang=\"ts\">\nimport { reactive } from \"vue\";\nimport { MaterialMan } from \"../../../dataview\";\nimport { MKMaterialList } from \"../../../components\";\nimport { MaterialComponents } from \"../../../MaterialComponents\";\n\nconst materialMan = reactive(\n new MaterialMan({ components: new MaterialComponents() })\n) as MaterialMan;\n</script>\n
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../../src/page/index/material/index.vue"],"sourcesContent":["<template>\n <MKMaterialList :material-man=\"materialMan\" />\n</template>\n<script setup lang=\"ts\">\nimport { reactive } from \"vue\";\nimport { MaterialMan } from \"../../../dataview\";\nimport { MKMaterialList } from \"../../../components\";\nimport { MaterialComponents } from \"../../../MaterialComponents\";\n\nconst materialMan = reactive(\n new MaterialMan({ components: new MaterialComponents() })\n) as MaterialMan;\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAA,MAAM,WAAc,GAAA,QAAA;AAAA,MAClB,IAAI,WAAY,CAAA,EAAE,YAAY,IAAI,kBAAA,IAAsB,CAAA;AAAA,KAC1D,CAAA;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import _sfc_main from './index.vue2.js';
|
|
2
|
+
import _export_sfc from '../_virtual/_plugin-vue_export-helper.js';
|
|
3
|
+
|
|
4
|
+
var index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/chenyu/Documents/develop/maketribe/make-appclient/packages/ms-app/src/page/index.vue"]]);
|
|
5
|
+
|
|
6
|
+
export { index as default };
|
|
7
|
+
//# sourceMappingURL=index.vue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { defineComponent, resolveComponent, openBlock, createBlock, unref, withCtx, createVNode } from 'vue';
|
|
2
|
+
import '../layouts/manager-system/index.js';
|
|
3
|
+
import { MKLayoutDefault } from '../layouts/default/index.js';
|
|
4
|
+
|
|
5
|
+
var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
6
|
+
...{
|
|
7
|
+
mkRoute: {
|
|
8
|
+
name: "mk-ms-main",
|
|
9
|
+
path: "/"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
__name: "index",
|
|
13
|
+
setup(__props) {
|
|
14
|
+
return (_ctx, _cache) => {
|
|
15
|
+
const _component_RouterView = resolveComponent("RouterView");
|
|
16
|
+
return openBlock(), createBlock(unref(MKLayoutDefault), null, {
|
|
17
|
+
default: withCtx(() => [
|
|
18
|
+
createVNode(_component_RouterView)
|
|
19
|
+
]),
|
|
20
|
+
_: 1
|
|
21
|
+
/* STABLE */
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
export { _sfc_main as default };
|
|
28
|
+
//# sourceMappingURL=index.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from './index.vue2.js';
|
|
2
2
|
import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/chenyu/Documents/develop/maketribe/make-appclient/packages/ms-app/src/page/login/index.vue"]]);
|
|
5
5
|
|
|
6
|
-
export {
|
|
6
|
+
export { index as default };
|
|
7
7
|
//# sourceMappingURL=index.vue.js.map
|
|
@@ -5,30 +5,15 @@ import '@maketribe/request';
|
|
|
5
5
|
import '@maketribe/dm';
|
|
6
6
|
import '@maketribe/locale';
|
|
7
7
|
import '@maketribe/utils';
|
|
8
|
-
import '
|
|
9
|
-
import '../../components/image-select/index.js';
|
|
8
|
+
import { useMSAppClient } from '../../composables/use-ms-app-client.js';
|
|
10
9
|
import '../../components/system-provider/index.js';
|
|
11
10
|
import '../../components/material-list/index.js';
|
|
12
11
|
import '../../components/material-select/index.js';
|
|
13
12
|
import '../../components/role-permission-config/index.js';
|
|
14
13
|
import '../../components/menu-permission-table/index.js';
|
|
14
|
+
import '../../components/image-select/index.js';
|
|
15
15
|
import { MKVerifyDialog } from '../../components/verify-dialog/index.js';
|
|
16
16
|
import '../../components/member-table/index.js';
|
|
17
|
-
import '../../dataview/department/DepartmentForm.js';
|
|
18
|
-
import '../../dataview/department/DepartmentTable.js';
|
|
19
|
-
import '../../dataview/member/MemberForm.js';
|
|
20
|
-
import '../../dataview/member/MemberTable.js';
|
|
21
|
-
import '../../dataview/menu/MenuForm.js';
|
|
22
|
-
import '../../dataview/menu/MenuTable.js';
|
|
23
|
-
import '../../dataview/role/RoleForm.js';
|
|
24
|
-
import '../../dataview/role/RoleTable.js';
|
|
25
|
-
import '../../dataview/route/RouteForm.js';
|
|
26
|
-
import '../../dataview/route/RouteTable.js';
|
|
27
|
-
import '../../dataview/config/ConfigForm.js';
|
|
28
|
-
import '../../dataview/config/ConfigTable.js';
|
|
29
|
-
import '../../dataview/material/MaterialForm.js';
|
|
30
|
-
import '../../dataview/material/MaterialTable.js';
|
|
31
|
-
import { useMSAppClient } from '../../composables/use-ms-app-client.js';
|
|
32
17
|
|
|
33
18
|
const _hoisted_1 = { class: "login-wrap" };
|
|
34
19
|
const _hoisted_2 = /* @__PURE__ */ createElementVNode(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../src/page/login/index.vue"],"sourcesContent":["<template>\n <div class=\"login-wrap\">\n <div class=\"login-bg\">\n <div class=\"login-bg-block\"></div>\n <div class=\"login-bg-block\"></div>\n </div>\n <div class=\"login-root\">\n <div class=\"login-main\">\n <div class=\"form-container\">\n <div class=\"form-wrap\">\n <div class=\"form-title\" v-if=\"!forgotPassword\">\n 账号登录\n <span class=\"notify\">\n 没有账号?<ElButton\n link\n class=\"operaBtn\"\n @click=\"router.push('/signup')\"\n >\n 申请使用\n </ElButton>\n </span>\n </div>\n <div class=\"form-title\" v-else>账号重置</div>\n <ElForm\n :model=\"loginFormData\"\n :rules=\"rules\"\n size=\"large\"\n ref=\"formEl\"\n @submit.native.prevent\n >\n <ElFormItem prop=\"account\">\n <ElInput\n v-model=\"loginFormData.account\"\n placeholder=\"帐号\"\n @keyup.enter.native.prevent=\"verifyHandle\"\n />\n </ElFormItem>\n <ElFormItem prop=\"password\" v-if=\"!forgotPassword\">\n <ElInput\n v-model=\"loginFormData.password\"\n type=\"password\"\n placeholder=\"密码\"\n @keyup.enter.native.prevent=\"verifyHandle\"\n />\n </ElFormItem>\n <ElFormItem>\n <ElRow style=\"width: 100%\">\n <ElCol :span=\"12\">\n <ElButton\n link\n class=\"operaBtn\"\n @click=\"forgotPassword = !forgotPassword\"\n >{{\n forgotPassword ? \"返回登陆\" : \"忘记密码?\"\n }}</ElButton\n >\n </ElCol>\n </ElRow>\n </ElFormItem>\n <ElFormItem>\n <ElButton\n type=\"primary\"\n style=\"width: 100%\"\n :loading=\"loading\"\n @click=\"verifyHandle\"\n :disabled=\"loginDisabled\"\n v-if=\"!forgotPassword\"\n >\n 登陆\n </ElButton>\n <ElButton\n type=\"primary\"\n style=\"width: 100%\"\n :loading=\"loading\"\n @click=\"verifyHandle\"\n :disabled=\"resetDisabled\"\n v-else\n >\n 重置\n </ElButton>\n </ElFormItem>\n </ElForm>\n <ElDivider></ElDivider>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <MKVerifyDialog\n :scene=\"scene\"\n v-model:visible=\"verifyVisible\"\n v-if=\"verifyVisible\"\n @verifySuccessful=\"handleLogin\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessage, ElForm, ElFormItem } from \"element-plus\";\nimport { useMSAppClient } from \"../../composables\";\nimport { MKVerifyDialog } from \"../../components\";\nimport { Ref, computed, reactive, ref } from \"vue\";\nimport { useRouter } from \"vue-router\";\n\ndefineOptions({\n mkRoute: {\n name: \"login\",\n path: \"/login\",\n meta: {\n isAuthorization: false,\n },\n },\n});\n\n// 记住登陆状态\nconst rememberLoginState = ref(false);\n\nconst formEl: Ref<any> = ref(null);\n\nconst system = useMSAppClient()!;\n\nconst router = useRouter();\n\nconst loading = ref(false);\n\nconst loginDisabled = computed(\n () => !loginFormData.account || !loginFormData.password\n);\nconst resetDisabled = computed(() => !loginFormData.account);\n\nconst forgotPassword = ref(false);\nconst scene = computed(() =>\n forgotPassword.value ? \"ModifyPassword\" : \"Login\"\n);\n\nconst rules = {\n account: [{ required: true, message: \"账号必填\" }],\n password: [{ required: true, message: \"密码必填\" }],\n};\n\nconst loginFormData = reactive({\n account: \"\",\n password: \"\",\n vCode: \"code\",\n});\nconst verifyVisible = ref(false);\n\nconst verifyHandle = async () => {\n const result = await formEl.value?.validate();\n if (!result) {\n return;\n }\n verifyVisible.value = true;\n};\n\nconst handleLogin = async (v: string) => {\n loginFormData.vCode = v;\n try {\n loading.value = true;\n if (forgotPassword.value) {\n const { data } = await system.modifyPassword(\n loginFormData.account,\n loginFormData.vCode\n );\n if (data.code !== 200) {\n ElMessage.error(data.msg || \"重置邮箱失败!\");\n return;\n }\n ElMessage.success(\"重置密码邮件已发送到邮箱\");\n verifyVisible.value = false;\n forgotPassword.value = false;\n } else {\n const { data } = await system.login(\n loginFormData.account,\n loginFormData.password,\n loginFormData.vCode\n );\n\n if (data.code !== 200) {\n ElMessage.error(data.msg || \"登录失败!\");\n return;\n }\n verifyVisible.value = false;\n\n router.push({ path: \"/\" });\n }\n } finally {\n loading.value = false;\n }\n};\n</script>\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../src/page/login/index.vue"],"sourcesContent":["<template>\n <div class=\"login-wrap\">\n <div class=\"login-bg\">\n <div class=\"login-bg-block\"></div>\n <div class=\"login-bg-block\"></div>\n </div>\n <div class=\"login-root\">\n <div class=\"login-main\">\n <div class=\"form-container\">\n <div class=\"form-wrap\">\n <div class=\"form-title\" v-if=\"!forgotPassword\">\n 账号登录\n <span class=\"notify\">\n 没有账号?<ElButton\n link\n class=\"operaBtn\"\n @click=\"router.push('/signup')\"\n >\n 申请使用\n </ElButton>\n </span>\n </div>\n <div class=\"form-title\" v-else>账号重置</div>\n <ElForm\n :model=\"loginFormData\"\n :rules=\"rules\"\n size=\"large\"\n ref=\"formEl\"\n @submit.native.prevent\n >\n <ElFormItem prop=\"account\">\n <ElInput\n v-model=\"loginFormData.account\"\n placeholder=\"帐号\"\n @keyup.enter.native.prevent=\"verifyHandle\"\n />\n </ElFormItem>\n <ElFormItem prop=\"password\" v-if=\"!forgotPassword\">\n <ElInput\n v-model=\"loginFormData.password\"\n type=\"password\"\n placeholder=\"密码\"\n @keyup.enter.native.prevent=\"verifyHandle\"\n />\n </ElFormItem>\n <ElFormItem>\n <ElRow style=\"width: 100%\">\n <ElCol :span=\"12\">\n <ElButton\n link\n class=\"operaBtn\"\n @click=\"forgotPassword = !forgotPassword\"\n >{{\n forgotPassword ? \"返回登陆\" : \"忘记密码?\"\n }}</ElButton\n >\n </ElCol>\n </ElRow>\n </ElFormItem>\n <ElFormItem>\n <ElButton\n type=\"primary\"\n style=\"width: 100%\"\n :loading=\"loading\"\n @click=\"verifyHandle\"\n :disabled=\"loginDisabled\"\n v-if=\"!forgotPassword\"\n >\n 登陆\n </ElButton>\n <ElButton\n type=\"primary\"\n style=\"width: 100%\"\n :loading=\"loading\"\n @click=\"verifyHandle\"\n :disabled=\"resetDisabled\"\n v-else\n >\n 重置\n </ElButton>\n </ElFormItem>\n </ElForm>\n <ElDivider></ElDivider>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <MKVerifyDialog\n :scene=\"scene\"\n v-model:visible=\"verifyVisible\"\n v-if=\"verifyVisible\"\n @verifySuccessful=\"handleLogin\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ElMessage, ElForm, ElFormItem } from \"element-plus\";\nimport { useMSAppClient } from \"../../composables\";\nimport { MKVerifyDialog } from \"../../components\";\nimport { Ref, computed, reactive, ref } from \"vue\";\nimport { useRouter } from \"vue-router\";\n\ndefineOptions({\n mkRoute: {\n name: \"login\",\n path: \"/login\",\n meta: {\n isAuthorization: false,\n },\n },\n});\n\n// 记住登陆状态\nconst rememberLoginState = ref(false);\n\nconst formEl: Ref<any> = ref(null);\n\nconst system = useMSAppClient()!;\n\nconst router = useRouter();\n\nconst loading = ref(false);\n\nconst loginDisabled = computed(\n () => !loginFormData.account || !loginFormData.password\n);\nconst resetDisabled = computed(() => !loginFormData.account);\n\nconst forgotPassword = ref(false);\nconst scene = computed(() =>\n forgotPassword.value ? \"ModifyPassword\" : \"Login\"\n);\n\nconst rules = {\n account: [{ required: true, message: \"账号必填\" }],\n password: [{ required: true, message: \"密码必填\" }],\n};\n\nconst loginFormData = reactive({\n account: \"\",\n password: \"\",\n vCode: \"code\",\n});\nconst verifyVisible = ref(false);\n\nconst verifyHandle = async () => {\n const result = await formEl.value?.validate();\n if (!result) {\n return;\n }\n verifyVisible.value = true;\n};\n\nconst handleLogin = async (v: string) => {\n loginFormData.vCode = v;\n try {\n loading.value = true;\n if (forgotPassword.value) {\n const { data } = await system.modifyPassword(\n loginFormData.account,\n loginFormData.vCode\n );\n if (data.code !== 200) {\n ElMessage.error(data.msg || \"重置邮箱失败!\");\n return;\n }\n ElMessage.success(\"重置密码邮件已发送到邮箱\");\n verifyVisible.value = false;\n forgotPassword.value = false;\n } else {\n const { data } = await system.login(\n loginFormData.account,\n loginFormData.password,\n loginFormData.vCode\n );\n\n if (data.code !== 200) {\n ElMessage.error(data.msg || \"登录失败!\");\n return;\n }\n verifyVisible.value = false;\n\n router.push({ path: \"/\" });\n }\n } finally {\n loading.value = false;\n }\n};\n</script>\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from './index.vue2.js';
|
|
2
2
|
import _export_sfc from '../../_virtual/_plugin-vue_export-helper.js';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/chenyu/Documents/develop/maketribe/make-appclient/packages/ms-app/src/page/signup/index.vue"]]);
|
|
5
5
|
|
|
6
|
-
export {
|
|
6
|
+
export { index as default };
|
|
7
7
|
//# sourceMappingURL=index.vue.js.map
|
|
@@ -4,31 +4,15 @@ import { Messager } from '@maketribe/dm';
|
|
|
4
4
|
import '@maketribe/request';
|
|
5
5
|
import '@maketribe/locale';
|
|
6
6
|
import '@maketribe/utils';
|
|
7
|
-
import '
|
|
8
|
-
import '@maketribe/dm-ui';
|
|
9
|
-
import '../../components/image-select/index.js';
|
|
7
|
+
import { useHttpRequest } from '../../composables/use-http-request.js';
|
|
10
8
|
import '../../components/system-provider/index.js';
|
|
11
9
|
import '../../components/material-list/index.js';
|
|
12
10
|
import '../../components/material-select/index.js';
|
|
13
11
|
import '../../components/role-permission-config/index.js';
|
|
14
12
|
import '../../components/menu-permission-table/index.js';
|
|
13
|
+
import '../../components/image-select/index.js';
|
|
15
14
|
import { MKVerifyDialog } from '../../components/verify-dialog/index.js';
|
|
16
15
|
import '../../components/member-table/index.js';
|
|
17
|
-
import '../../dataview/department/DepartmentForm.js';
|
|
18
|
-
import '../../dataview/department/DepartmentTable.js';
|
|
19
|
-
import '../../dataview/member/MemberForm.js';
|
|
20
|
-
import '../../dataview/member/MemberTable.js';
|
|
21
|
-
import '../../dataview/menu/MenuForm.js';
|
|
22
|
-
import '../../dataview/menu/MenuTable.js';
|
|
23
|
-
import '../../dataview/role/RoleForm.js';
|
|
24
|
-
import '../../dataview/role/RoleTable.js';
|
|
25
|
-
import '../../dataview/route/RouteForm.js';
|
|
26
|
-
import '../../dataview/route/RouteTable.js';
|
|
27
|
-
import '../../dataview/config/ConfigForm.js';
|
|
28
|
-
import '../../dataview/config/ConfigTable.js';
|
|
29
|
-
import '../../dataview/material/MaterialForm.js';
|
|
30
|
-
import '../../dataview/material/MaterialTable.js';
|
|
31
|
-
import { useHttpRequest } from '../../composables/use-http-request.js';
|
|
32
16
|
|
|
33
17
|
const _hoisted_1 = { class: "login-wrap" };
|
|
34
18
|
const _hoisted_2 = /* @__PURE__ */ createElementVNode(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.js","sources":["../../../../src/page/signup/index.vue"],"sourcesContent":["<template>\n <div class=\"login-wrap\">\n <div class=\"login-bg\">\n <div class=\"login-bg-block\"></div>\n <div class=\"login-bg-block\"></div>\n </div>\n <div class=\"login-root\">\n <div class=\"login-main\">\n <div class=\"form-container\">\n <div class=\"form-wrap\">\n <div class=\"form-title\" v-if=\"!forgotPassword\">\n 账号注册\n <span class=\"notify\">\n 已有账号?<ElButton\n link\n class=\"operaBtn\"\n @click=\"router.push('/login')\"\n >\n 返回登录\n </ElButton>\n </span>\n </div>\n <div class=\"form-title\" v-else>账号重置</div>\n <ElForm\n :model=\"signFormData\"\n :rules=\"rules\"\n size=\"large\"\n ref=\"formEl\"\n >\n <ElFormItem prop=\"account\">\n <ElInput v-model=\"signFormData.account\" placeholder=\"帐号\" />\n </ElFormItem>\n <ElFormItem prop=\"email\">\n <ElInput v-model=\"signFormData.email\" placeholder=\"邮箱\" />\n </ElFormItem>\n <ElFormItem prop=\"name\">\n <ElInput v-model=\"signFormData.name\" placeholder=\"姓名\" />\n </ElFormItem>\n <ElFormItem prop=\"nickName\">\n <ElInput v-model=\"signFormData.nickName\" placeholder=\"昵称\" />\n </ElFormItem>\n <ElFormItem prop=\"phone\">\n <ElInput v-model=\"signFormData.phone\" placeholder=\"手机号\" />\n </ElFormItem>\n\n <ElFormItem>\n <ElButton\n type=\"primary\"\n style=\"width: 100%\"\n :loading=\"loading\"\n @click=\"verifyHandle\"\n >\n 提交申请\n </ElButton>\n </ElFormItem>\n </ElForm>\n <ElDivider></ElDivider>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <MKVerifyDialog\n :scene=\"scene\"\n v-model:visible=\"verifyVisible\"\n v-if=\"verifyVisible\"\n @verifySuccessful=\"handleSign\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { Ref, computed, reactive, ref } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { FormRules } from \"element-plus\";\nimport { Messager } from \"@maketribe/dm\";\nimport { useHttpRequest } from \"../../composables\";\nimport { MKVerifyDialog } from \"../../components\";\n\ndefineOptions({\n mkRoute: {\n name: \"signup\",\n path: \"/signup\",\n meta: {\n isAuthorization: false,\n },\n },\n});\n\nconst formEl: Ref<any> = ref(null);\n\nconst router = useRouter();\n\nconst httpRequest = useHttpRequest();\n\nconst loading = ref(false);\n\nconst verifyVisible = ref(false);\n\nconst forgotPassword = ref(false);\nconst scene = computed(() =>\n forgotPassword.value ? \"ModifyPassword\" : \"Login\"\n);\nconst rules: FormRules = {\n account: [{ required: true, message: \"账号必填\" }],\n email: [\n {\n required: true,\n trigger: \"change\",\n validator: (rule, value, callback) => {\n if (!value) {\n callback(new Error(\"邮箱必填\"));\n } else if (\n !/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/.test(value)\n ) {\n callback(new Error(\"邮箱规则不符\"));\n } else {\n callback();\n }\n },\n },\n ],\n name: [{ required: true, message: \"姓名必填\" }],\n};\n\nconst verifyHandle = async () => {\n const result = await formEl.value.validate();\n if (!result) {\n return;\n }\n verifyVisible.value = true;\n};\n\nconst signFormData = reactive({\n account: \"\",\n email: \"\",\n name: \"\",\n nickName: \"\",\n phone: \"\",\n});\n\nconst handleSign = async (v: string) => {\n const result = await httpRequest.post(\n \"/api/dv/ms-member/apply/account\",\n signFormData\n );\n if (result.data.code != 200) {\n Messager.instance.error(result.data.msg || \"注册失败\");\n return;\n }\n verifyVisible.value = false;\n Messager.instance.success({ message: \"注册成功,请联系管理员通过验证\" });\n};\n\n// 记住登陆状态\nconst rememberLoginState = ref(false);\n</script>\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.vue2.js","sources":["../../../../src/page/signup/index.vue"],"sourcesContent":["<template>\n <div class=\"login-wrap\">\n <div class=\"login-bg\">\n <div class=\"login-bg-block\"></div>\n <div class=\"login-bg-block\"></div>\n </div>\n <div class=\"login-root\">\n <div class=\"login-main\">\n <div class=\"form-container\">\n <div class=\"form-wrap\">\n <div class=\"form-title\" v-if=\"!forgotPassword\">\n 账号注册\n <span class=\"notify\">\n 已有账号?<ElButton\n link\n class=\"operaBtn\"\n @click=\"router.push('/login')\"\n >\n 返回登录\n </ElButton>\n </span>\n </div>\n <div class=\"form-title\" v-else>账号重置</div>\n <ElForm\n :model=\"signFormData\"\n :rules=\"rules\"\n size=\"large\"\n ref=\"formEl\"\n >\n <ElFormItem prop=\"account\">\n <ElInput v-model=\"signFormData.account\" placeholder=\"帐号\" />\n </ElFormItem>\n <ElFormItem prop=\"email\">\n <ElInput v-model=\"signFormData.email\" placeholder=\"邮箱\" />\n </ElFormItem>\n <ElFormItem prop=\"name\">\n <ElInput v-model=\"signFormData.name\" placeholder=\"姓名\" />\n </ElFormItem>\n <ElFormItem prop=\"nickName\">\n <ElInput v-model=\"signFormData.nickName\" placeholder=\"昵称\" />\n </ElFormItem>\n <ElFormItem prop=\"phone\">\n <ElInput v-model=\"signFormData.phone\" placeholder=\"手机号\" />\n </ElFormItem>\n\n <ElFormItem>\n <ElButton\n type=\"primary\"\n style=\"width: 100%\"\n :loading=\"loading\"\n @click=\"verifyHandle\"\n >\n 提交申请\n </ElButton>\n </ElFormItem>\n </ElForm>\n <ElDivider></ElDivider>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <MKVerifyDialog\n :scene=\"scene\"\n v-model:visible=\"verifyVisible\"\n v-if=\"verifyVisible\"\n @verifySuccessful=\"handleSign\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { Ref, computed, reactive, ref } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { FormRules } from \"element-plus\";\nimport { Messager } from \"@maketribe/dm\";\nimport { useHttpRequest } from \"../../composables\";\nimport { MKVerifyDialog } from \"../../components\";\n\ndefineOptions({\n mkRoute: {\n name: \"signup\",\n path: \"/signup\",\n meta: {\n isAuthorization: false,\n },\n },\n});\n\nconst formEl: Ref<any> = ref(null);\n\nconst router = useRouter();\n\nconst httpRequest = useHttpRequest();\n\nconst loading = ref(false);\n\nconst verifyVisible = ref(false);\n\nconst forgotPassword = ref(false);\nconst scene = computed(() =>\n forgotPassword.value ? \"ModifyPassword\" : \"Login\"\n);\nconst rules: FormRules = {\n account: [{ required: true, message: \"账号必填\" }],\n email: [\n {\n required: true,\n trigger: \"change\",\n validator: (rule, value, callback) => {\n if (!value) {\n callback(new Error(\"邮箱必填\"));\n } else if (\n !/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/.test(value)\n ) {\n callback(new Error(\"邮箱规则不符\"));\n } else {\n callback();\n }\n },\n },\n ],\n name: [{ required: true, message: \"姓名必填\" }],\n};\n\nconst verifyHandle = async () => {\n const result = await formEl.value.validate();\n if (!result) {\n return;\n }\n verifyVisible.value = true;\n};\n\nconst signFormData = reactive({\n account: \"\",\n email: \"\",\n name: \"\",\n nickName: \"\",\n phone: \"\",\n});\n\nconst handleSign = async (v: string) => {\n const result = await httpRequest.post(\n \"/api/dv/ms-member/apply/account\",\n signFormData\n );\n if (result.data.code != 200) {\n Messager.instance.error(result.data.msg || \"注册失败\");\n return;\n }\n verifyVisible.value = false;\n Messager.instance.success({ message: \"注册成功,请联系管理员通过验证\" });\n};\n\n// 记住登陆状态\nconst rememberLoginState = ref(false);\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyFA,IAAM,MAAA,MAAA,GAAmB,IAAI,IAAI,CAAA,CAAA;AAEjC,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,cAAc,cAAe,EAAA,CAAA;AAEnC,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AAEzB,IAAM,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA,CAAA;AAE/B,IAAM,MAAA,cAAA,GAAiB,IAAI,KAAK,CAAA,CAAA;AAChC,IAAA,MAAM,KAAQ,GAAA,QAAA;AAAA,MAAS,MACrB,cAAe,CAAA,KAAA,GAAQ,gBAAmB,GAAA,OAAA;AAAA,KAC5C,CAAA;AACA,IAAA,MAAM,KAAmB,GAAA;AAAA,MACvB,SAAS,CAAC,EAAE,UAAU,IAAM,EAAA,OAAA,EAAS,4BAAQ,CAAA;AAAA,MAC7C,KAAO,EAAA;AAAA,QACL;AAAA,UACE,QAAU,EAAA,IAAA;AAAA,UACV,OAAS,EAAA,QAAA;AAAA,UACT,SAAW,EAAA,CAAC,IAAM,EAAA,KAAA,EAAO,QAAa,KAAA;AACpC,YAAA,IAAI,CAAC,KAAO,EAAA;AACV,cAAS,QAAA,CAAA,IAAI,KAAM,CAAA,0BAAM,CAAC,CAAA,CAAA;AAAA,aAE1B,MAAA,IAAA,CAAC,oDAAqD,CAAA,IAAA,CAAK,KAAK,CAChE,EAAA;AACA,cAAS,QAAA,CAAA,IAAI,KAAM,CAAA,sCAAQ,CAAC,CAAA,CAAA;AAAA,aACvB,MAAA;AACL,cAAS,QAAA,EAAA,CAAA;AAAA,aACX;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,MACA,MAAM,CAAC,EAAE,UAAU,IAAM,EAAA,OAAA,EAAS,4BAAQ,CAAA;AAAA,KAC5C,CAAA;AAEA,IAAA,MAAM,eAAe,YAAY;AAC/B,MAAA,MAAM,MAAS,GAAA,MAAM,MAAO,CAAA,KAAA,CAAM,QAAS,EAAA,CAAA;AAC3C,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAA,OAAA;AAAA,OACF;AACA,MAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAA;AAAA,KACxB,CAAA;AAEA,IAAA,MAAM,eAAe,QAAS,CAAA;AAAA,MAC5B,OAAS,EAAA,EAAA;AAAA,MACT,KAAO,EAAA,EAAA;AAAA,MACP,IAAM,EAAA,EAAA;AAAA,MACN,QAAU,EAAA,EAAA;AAAA,MACV,KAAO,EAAA,EAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,OAAO,CAAc,KAAA;AACtC,MAAM,MAAA,MAAA,GAAS,MAAM,WAAY,CAAA,IAAA;AAAA,QAC/B,iCAAA;AAAA,QACA,YAAA;AAAA,OACF,CAAA;AACA,MAAI,IAAA,MAAA,CAAO,IAAK,CAAA,IAAA,IAAQ,GAAK,EAAA;AAC3B,QAAA,QAAA,CAAS,QAAS,CAAA,KAAA,CAAM,MAAO,CAAA,IAAA,CAAK,OAAO,0BAAM,CAAA,CAAA;AACjD,QAAA,OAAA;AAAA,OACF;AACA,MAAA,aAAA,CAAc,KAAQ,GAAA,KAAA,CAAA;AACtB,MAAA,QAAA,CAAS,QAAS,CAAA,OAAA,CAAQ,EAAE,OAAA,EAAS,yFAAmB,CAAA,CAAA;AAAA,KAC1D,CAAA;AAGA,IAA2B,IAAI,KAAK,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
import type { MSAppClient } from "../MSAppClient";
|
|
1
2
|
import { RouteLocationNormalized, RouteLocationRaw } from "vue-router";
|
|
2
|
-
export declare const authBeforeEach: (to: RouteLocationNormalized, from: RouteLocationNormalized) => Promise<RouteLocationRaw | void>;
|
|
3
|
+
export declare const authBeforeEach: (msAppClient: MSAppClient, to: RouteLocationNormalized, from: RouteLocationNormalized) => Promise<RouteLocationRaw | void>;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { MSAppClient } from '../MSAppClient.js';
|
|
2
1
|
import { isSameRoute } from '@maketribe/utils';
|
|
3
2
|
|
|
4
|
-
const authBeforeEach = async (to, from) => {
|
|
3
|
+
const authBeforeEach = async (msAppClient, to, from) => {
|
|
5
4
|
if (to.meta.isAuthorization === false) {
|
|
6
5
|
return;
|
|
7
6
|
}
|
|
8
|
-
const msAppClient = MSAppClient.instance;
|
|
9
7
|
let userSession = msAppClient.userSession;
|
|
10
8
|
if (!userSession) {
|
|
11
9
|
try {
|
|
@@ -23,11 +21,7 @@ const authBeforeEach = async (to, from) => {
|
|
|
23
21
|
const router = userSession.router;
|
|
24
22
|
const route = router.getRouteByName(to.name);
|
|
25
23
|
if (!route) {
|
|
26
|
-
|
|
27
|
-
if (!menuNode || !menuNode.route) {
|
|
28
|
-
return { name: "login" };
|
|
29
|
-
}
|
|
30
|
-
return { name: menuNode.route.name };
|
|
24
|
+
return;
|
|
31
25
|
}
|
|
32
26
|
const matched = to.matched[to.matched.length - 1];
|
|
33
27
|
if (matched) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sources":["../../../src/router-middleware/auth.ts"],"sourcesContent":["import { MSAppClient } from \"../MSAppClient\";\nimport { isSameRoute } from \"@maketribe/utils\";\nimport { RouteLocationNormalized, RouteLocationRaw } from \"vue-router\";\n\nexport const authBeforeEach = async (\n to: RouteLocationNormalized,\n from: RouteLocationNormalized\n): Promise<RouteLocationRaw | void> => {\n if (to.meta.isAuthorization === false) {\n return;\n }\n
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../../src/router-middleware/auth.ts"],"sourcesContent":["import type { MSAppClient } from \"../MSAppClient\";\nimport { isSameRoute } from \"@maketribe/utils\";\nimport { RouteLocationNormalized, RouteLocationRaw } from \"vue-router\";\n\nexport const authBeforeEach = async (\n msAppClient: MSAppClient,\n to: RouteLocationNormalized,\n from: RouteLocationNormalized\n): Promise<RouteLocationRaw | void> => {\n if (to.meta.isAuthorization === false) {\n return;\n }\n\n let userSession = msAppClient.userSession;\n\n if (!userSession) {\n try {\n await msAppClient.loadCurrentUserSession();\n\n userSession = msAppClient.userSession;\n\n if (!userSession) {\n return { name: \"login\" };\n }\n\n // 因为登陆成功会添加用户可以访问的路由,这里给到vue-router去重新resolve\n return { path: to.path };\n } catch (e) {\n return { name: \"login\" };\n }\n }\n\n const tabs = userSession.tabs;\n const router = userSession.router;\n\n const route = router.getRouteByName(to.name as string);\n\n if (!route) {\n // return { name: \"notFound\" };\n // // 前往第一个菜单\n // const menuNode = userSession.menu.getFirstLeafMenuNode();\n\n // if (!menuNode || !menuNode.route) {\n // return { name: \"login\" };\n // }\n\n // // return { name: menuNode.route.name };\n // return to;\n\n return;\n }\n\n const matched = to.matched[to.matched.length - 1];\n\n if (matched) {\n if (!isSameRoute(router.currentRoute, to)) {\n router.changeRoute(to);\n }\n\n const tab = tabs.getTabByID(to.name as string);\n\n if (tab) {\n tab.affix = matched.meta.affix as boolean;\n tab.realRoute = to;\n }\n }\n};\n"],"names":[],"mappings":";;AAIO,MAAM,cAAiB,GAAA,OAC5B,WACA,EAAA,EAAA,EACA,IACqC,KAAA;AACrC,EAAI,IAAA,EAAA,CAAG,IAAK,CAAA,eAAA,KAAoB,KAAO,EAAA;AACrC,IAAA,OAAA;AAAA,GACF;AAEA,EAAA,IAAI,cAAc,WAAY,CAAA,WAAA,CAAA;AAE9B,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAI,IAAA;AACF,MAAA,MAAM,YAAY,sBAAuB,EAAA,CAAA;AAEzC,MAAA,WAAA,GAAc,WAAY,CAAA,WAAA,CAAA;AAE1B,MAAA,IAAI,CAAC,WAAa,EAAA;AAChB,QAAO,OAAA,EAAE,MAAM,OAAQ,EAAA,CAAA;AAAA,OACzB;AAGA,MAAO,OAAA,EAAE,IAAM,EAAA,EAAA,CAAG,IAAK,EAAA,CAAA;AAAA,aAChB,CAAG,EAAA;AACV,MAAO,OAAA,EAAE,MAAM,OAAQ,EAAA,CAAA;AAAA,KACzB;AAAA,GACF;AAEA,EAAA,MAAM,OAAO,WAAY,CAAA,IAAA,CAAA;AACzB,EAAA,MAAM,SAAS,WAAY,CAAA,MAAA,CAAA;AAE3B,EAAA,MAAM,KAAQ,GAAA,MAAA,CAAO,cAAe,CAAA,EAAA,CAAG,IAAc,CAAA,CAAA;AAErD,EAAA,IAAI,CAAC,KAAO,EAAA;AAYV,IAAA,OAAA;AAAA,GACF;AAEA,EAAA,MAAM,UAAU,EAAG,CAAA,OAAA,CAAQ,EAAG,CAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAA;AAEhD,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,IAAI,CAAC,WAAA,CAAY,MAAO,CAAA,YAAA,EAAc,EAAE,CAAG,EAAA;AACzC,MAAA,MAAA,CAAO,YAAY,EAAE,CAAA,CAAA;AAAA,KACvB;AAEA,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,UAAW,CAAA,EAAA,CAAG,IAAc,CAAA,CAAA;AAE7C,IAAA,IAAI,GAAK,EAAA;AACP,MAAI,GAAA,CAAA,KAAA,GAAQ,QAAQ,IAAK,CAAA,KAAA,CAAA;AACzB,MAAA,GAAA,CAAI,SAAY,GAAA,EAAA,CAAA;AAAA,KAClB;AAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { encodePath } from 'ufo';
|
|
2
|
+
|
|
3
|
+
function generateRoutesFromFiles(files) {
|
|
4
|
+
const routes = [];
|
|
5
|
+
for (const file of files) {
|
|
6
|
+
const segments = file.path.split("/");
|
|
7
|
+
const route = {
|
|
8
|
+
meta: {},
|
|
9
|
+
...file.module.mkRoute,
|
|
10
|
+
key: "",
|
|
11
|
+
path: "",
|
|
12
|
+
component: async () => file.module,
|
|
13
|
+
children: []
|
|
14
|
+
};
|
|
15
|
+
let parent = routes;
|
|
16
|
+
for (const segment of segments) {
|
|
17
|
+
const tokens = parseSegment(segment);
|
|
18
|
+
const segmentName = tokens.map(({ value }) => value).join("");
|
|
19
|
+
route.key += (route.key && "/") + segmentName;
|
|
20
|
+
const path = route.path + getRoutePath(tokens).replace(/\/index$/, "/");
|
|
21
|
+
const child = parent.find(
|
|
22
|
+
(parentRoute) => parentRoute.key === route.key && parentRoute.path === path
|
|
23
|
+
);
|
|
24
|
+
if (child && child.children) {
|
|
25
|
+
parent = child.children;
|
|
26
|
+
route.path = "";
|
|
27
|
+
} else if (segmentName === "index" && !route.path) {
|
|
28
|
+
route.path += "/";
|
|
29
|
+
} else if (segmentName !== "index") {
|
|
30
|
+
route.path += getRoutePath(tokens);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
route.path = file.module.mkRoute.path || route.path;
|
|
34
|
+
parent.push(route);
|
|
35
|
+
}
|
|
36
|
+
return prepareRoutes(routes);
|
|
37
|
+
}
|
|
38
|
+
function getRoutePath(tokens) {
|
|
39
|
+
return tokens.reduce((path, token) => {
|
|
40
|
+
return path + (token.type === 2 /* optional */ ? `:${token.value}?` : token.type === 1 /* dynamic */ ? `:${token.value}()` : token.type === 3 /* catchall */ ? `:${token.value}(.*)*` : encodePath(token.value).replace(/:/g, "\\:"));
|
|
41
|
+
}, "/");
|
|
42
|
+
}
|
|
43
|
+
const PARAM_CHAR_RE = /[\w\d_.]/;
|
|
44
|
+
function parseSegment(segment) {
|
|
45
|
+
let state = 0 /* initial */;
|
|
46
|
+
let i = 0;
|
|
47
|
+
let buffer = "";
|
|
48
|
+
const tokens = [];
|
|
49
|
+
function consumeBuffer() {
|
|
50
|
+
if (!buffer) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (state === 0 /* initial */) {
|
|
54
|
+
throw new Error("\u9519\u8BEF\u7684\u72B6\u6001");
|
|
55
|
+
}
|
|
56
|
+
tokens.push({
|
|
57
|
+
type: state === 1 /* static */ ? 0 /* static */ : state === 2 /* dynamic */ ? 1 /* dynamic */ : state === 3 /* optional */ ? 2 /* optional */ : 3 /* catchall */,
|
|
58
|
+
value: buffer
|
|
59
|
+
});
|
|
60
|
+
buffer = "";
|
|
61
|
+
}
|
|
62
|
+
while (i < segment.length) {
|
|
63
|
+
const c = segment[i];
|
|
64
|
+
switch (state) {
|
|
65
|
+
case 0 /* initial */:
|
|
66
|
+
buffer = "";
|
|
67
|
+
if (c === "[") {
|
|
68
|
+
state = 2 /* dynamic */;
|
|
69
|
+
} else {
|
|
70
|
+
i--;
|
|
71
|
+
state = 1 /* static */;
|
|
72
|
+
}
|
|
73
|
+
break;
|
|
74
|
+
case 1 /* static */:
|
|
75
|
+
if (c === "[") {
|
|
76
|
+
consumeBuffer();
|
|
77
|
+
state = 2 /* dynamic */;
|
|
78
|
+
} else {
|
|
79
|
+
buffer += c;
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case 4 /* catchall */:
|
|
83
|
+
case 2 /* dynamic */:
|
|
84
|
+
case 3 /* optional */:
|
|
85
|
+
if (buffer === "...") {
|
|
86
|
+
buffer = "";
|
|
87
|
+
state = 4 /* catchall */;
|
|
88
|
+
}
|
|
89
|
+
if (c === "[" && state === 2 /* dynamic */) {
|
|
90
|
+
state = 3 /* optional */;
|
|
91
|
+
}
|
|
92
|
+
if (c === "]" && (state !== 3 /* optional */ || segment[i - 1] === "]")) {
|
|
93
|
+
if (!buffer) {
|
|
94
|
+
throw new Error("\u7A7A\u53C2\u6570");
|
|
95
|
+
}
|
|
96
|
+
consumeBuffer();
|
|
97
|
+
state = 0 /* initial */;
|
|
98
|
+
} else if (PARAM_CHAR_RE.test(c)) {
|
|
99
|
+
buffer += c;
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
i++;
|
|
104
|
+
}
|
|
105
|
+
if (state === 2 /* dynamic */) {
|
|
106
|
+
throw new Error(`Unfinished param "${buffer}"`);
|
|
107
|
+
}
|
|
108
|
+
consumeBuffer();
|
|
109
|
+
return tokens;
|
|
110
|
+
}
|
|
111
|
+
function findRouteByKey(key, routes) {
|
|
112
|
+
for (const route of routes) {
|
|
113
|
+
if (route.key === key) {
|
|
114
|
+
return route;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return findRouteByKey(key, routes);
|
|
118
|
+
}
|
|
119
|
+
function prepareRoutes(routes, parent, keys = /* @__PURE__ */ new Set()) {
|
|
120
|
+
for (const route of routes) {
|
|
121
|
+
if (route.key) {
|
|
122
|
+
route.key = route.key.replace(/\/index$/, "").replace(/\//g, "-");
|
|
123
|
+
if (keys.has(route.key)) {
|
|
124
|
+
const existingRoute = findRouteByKey(route.key, routes);
|
|
125
|
+
const extra = existingRoute?.name ? `is the same as \`${existingRoute.file}\`` : "is a duplicate";
|
|
126
|
+
console.warn(
|
|
127
|
+
`Route name generated for \`${route.file}\` ${extra}. You may wish to set a custom name using \`definePageMeta\` within the page file.`
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
route.path = route.path.replace(/\/\//g, "/");
|
|
132
|
+
if (parent && route.path.startsWith("/")) {
|
|
133
|
+
route.path = route.path.slice(1);
|
|
134
|
+
}
|
|
135
|
+
if (route.children?.length) {
|
|
136
|
+
route.children = prepareRoutes(route.children, route, keys);
|
|
137
|
+
}
|
|
138
|
+
if (route.children?.find((childRoute) => childRoute.path === "")) {
|
|
139
|
+
delete route.key;
|
|
140
|
+
}
|
|
141
|
+
if (route.key) {
|
|
142
|
+
keys.add(route.key);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return routes;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export { generateRoutesFromFiles };
|
|
149
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["import { encodePath } from \"ufo\";\n\nenum SegmentParserState {\n initial,\n static,\n dynamic,\n optional,\n catchall,\n}\n\ninterface ScannedFile {\n path: string;\n module: any;\n}\n\nenum SegmentTokenType {\n static,\n dynamic,\n optional,\n catchall,\n}\n\ninterface SegmentToken {\n type: SegmentTokenType;\n value: string;\n}\n\nexport function generateRoutesFromFiles(files: ScannedFile[]) {\n const routes: any[] = [];\n\n for (const file of files) {\n const segments = file.path.split(\"/\");\n\n const route: Record<string, any> = {\n meta: {},\n ...file.module.mkRoute,\n key: \"\",\n path: \"\",\n component: async () => file.module,\n children: [],\n };\n\n let parent = routes;\n\n for (const segment of segments) {\n const tokens = parseSegment(segment);\n const segmentName = tokens.map(({ value }) => value).join(\"\");\n\n route.key += (route.key && \"/\") + segmentName;\n\n const path = route.path + getRoutePath(tokens).replace(/\\/index$/, \"/\");\n const child = parent.find(\n (parentRoute) =>\n parentRoute.key === route.key && parentRoute.path === path\n );\n\n if (child && child.children) {\n parent = child.children;\n route.path = \"\";\n } else if (segmentName === \"index\" && !route.path) {\n route.path += \"/\";\n } else if (segmentName !== \"index\") {\n route.path += getRoutePath(tokens);\n }\n }\n\n route.path = file.module.mkRoute.path || route.path;\n\n parent.push(route);\n }\n\n return prepareRoutes(routes);\n}\n\nfunction getRoutePath(tokens: SegmentToken[]) {\n return tokens.reduce((path, token) => {\n return (\n path +\n (token.type === SegmentTokenType.optional\n ? `:${token.value}?`\n : token.type === SegmentTokenType.dynamic\n ? `:${token.value}()`\n : token.type === SegmentTokenType.catchall\n ? `:${token.value}(.*)*`\n : encodePath(token.value).replace(/:/g, \"\\\\:\"))\n );\n }, \"/\");\n}\n\nconst PARAM_CHAR_RE = /[\\w\\d_.]/;\n\nfunction parseSegment(segment: string) {\n let state: SegmentParserState = SegmentParserState.initial;\n\n let i = 0;\n\n let buffer = \"\";\n const tokens: SegmentToken[] = [];\n\n function consumeBuffer() {\n if (!buffer) {\n return;\n }\n\n if (state === SegmentParserState.initial) {\n throw new Error(\"错误的状态\");\n }\n\n tokens.push({\n type:\n state === SegmentParserState.static\n ? SegmentTokenType.static\n : state === SegmentParserState.dynamic\n ? SegmentTokenType.dynamic\n : state === SegmentParserState.optional\n ? SegmentTokenType.optional\n : SegmentTokenType.catchall,\n value: buffer,\n });\n\n buffer = \"\";\n }\n\n while (i < segment.length) {\n const c = segment[i];\n\n switch (state) {\n case SegmentParserState.initial:\n buffer = \"\";\n\n if (c === \"[\") {\n state = SegmentParserState.dynamic;\n } else {\n i--;\n state = SegmentParserState.static;\n }\n\n break;\n case SegmentParserState.static:\n if (c === \"[\") {\n consumeBuffer();\n state = SegmentParserState.dynamic;\n } else {\n buffer += c;\n }\n break;\n case SegmentParserState.catchall:\n case SegmentParserState.dynamic:\n case SegmentParserState.optional:\n if (buffer === \"...\") {\n buffer = \"\";\n state = SegmentParserState.catchall;\n }\n\n if (c === \"[\" && state === SegmentParserState.dynamic) {\n state = SegmentParserState.optional;\n }\n\n if (\n c === \"]\" &&\n (state !== SegmentParserState.optional || segment[i - 1] === \"]\")\n ) {\n if (!buffer) {\n throw new Error(\"空参数\");\n }\n consumeBuffer();\n state = SegmentParserState.initial;\n } else if (PARAM_CHAR_RE.test(c)) {\n buffer += c;\n }\n break;\n }\n\n i++;\n }\n\n if (state === SegmentParserState.dynamic) {\n throw new Error(`Unfinished param \"${buffer}\"`);\n }\n\n consumeBuffer();\n\n return tokens;\n}\n\nfunction findRouteByKey(key: string, routes: any[]): any | undefined {\n for (const route of routes) {\n if (route.key === key) {\n return route;\n }\n }\n return findRouteByKey(key, routes);\n}\n\nfunction prepareRoutes(routes: any[], parent?: any, keys = new Set<string>()) {\n for (const route of routes) {\n // Remove -index\n if (route.key) {\n route.key = route.key.replace(/\\/index$/, \"\").replace(/\\//g, \"-\");\n\n if (keys.has(route.key)) {\n const existingRoute = findRouteByKey(route.key, routes);\n const extra = existingRoute?.name\n ? `is the same as \\`${existingRoute.file}\\``\n : \"is a duplicate\";\n console.warn(\n `Route name generated for \\`${route.file}\\` ${extra}. You may wish to set a custom name using \\`definePageMeta\\` within the page file.`\n );\n }\n }\n\n route.path = route.path.replace(/\\/\\//g, \"/\");\n\n // Remove leading / if children route\n if (parent && route.path.startsWith(\"/\")) {\n route.path = route.path.slice(1);\n }\n\n if (route.children?.length) {\n route.children = prepareRoutes(route.children, route, keys);\n }\n\n if (route.children?.find((childRoute: any) => childRoute.path === \"\")) {\n delete route.key;\n }\n\n if (route.key) {\n keys.add(route.key);\n }\n }\n\n return routes;\n}\n"],"names":[],"mappings":"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"}
|