Commit b7ce74abd61fbb2a47344d9dc89994531e66b6f0
1 parent
371af18d
refactor: refactor the project to solve the hot update problem caused by circula…
…r dependencies close #301
Showing
28 changed files
with
249 additions
and
109 deletions
.vscode/settings.json
@@ -138,6 +138,7 @@ | @@ -138,6 +138,7 @@ | ||
138 | "vetur.format.defaultFormatter.ts": "prettier-tslint", | 138 | "vetur.format.defaultFormatter.ts": "prettier-tslint", |
139 | "vetur.format.defaultFormatter.js": "prettier", | 139 | "vetur.format.defaultFormatter.js": "prettier", |
140 | "vetur.languageFeatures.codeActions": false, | 140 | "vetur.languageFeatures.codeActions": false, |
141 | + "vetur.validation.script": false, | ||
141 | "vetur.format.defaultFormatterOptions": { | 142 | "vetur.format.defaultFormatterOptions": { |
142 | "js-beautify-html": { | 143 | "js-beautify-html": { |
143 | "wrap_attributes": "force-expand-multiline" | 144 | "wrap_attributes": "force-expand-multiline" |
@@ -188,6 +189,11 @@ | @@ -188,6 +189,11 @@ | ||
188 | "editor.codeActionsOnSave": { | 189 | "editor.codeActionsOnSave": { |
189 | "source.fixAll.eslint": true | 190 | "source.fixAll.eslint": true |
190 | }, | 191 | }, |
192 | + "[vue]": { | ||
193 | + "editor.codeActionsOnSave": { | ||
194 | + "source.fixAll.eslint": false | ||
195 | + } | ||
196 | + }, | ||
191 | "i18n-ally.localesPaths": ["src/locales/lang"], | 197 | "i18n-ally.localesPaths": ["src/locales/lang"], |
192 | "i18n-ally.keystyle": "nested", | 198 | "i18n-ally.keystyle": "nested", |
193 | "i18n-ally.sortKeys": true, | 199 | "i18n-ally.sortKeys": true, |
CHANGELOG.zh_CN.md
package.json
@@ -53,7 +53,7 @@ | @@ -53,7 +53,7 @@ | ||
53 | "devDependencies": { | 53 | "devDependencies": { |
54 | "@commitlint/cli": "^12.0.1", | 54 | "@commitlint/cli": "^12.0.1", |
55 | "@commitlint/config-conventional": "^12.0.1", | 55 | "@commitlint/config-conventional": "^12.0.1", |
56 | - "@iconify/json": "^1.1.312", | 56 | + "@iconify/json": "^1.1.313", |
57 | "@ls-lint/ls-lint": "^1.9.2", | 57 | "@ls-lint/ls-lint": "^1.9.2", |
58 | "@purge-icons/generated": "^0.7.0", | 58 | "@purge-icons/generated": "^0.7.0", |
59 | "@types/crypto-js": "^4.0.1", | 59 | "@types/crypto-js": "^4.0.1", |
@@ -119,7 +119,7 @@ | @@ -119,7 +119,7 @@ | ||
119 | "resolutions": { | 119 | "resolutions": { |
120 | "//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it", | 120 | "//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it", |
121 | "bin-wrapper": "npm:bin-wrapper-china", | 121 | "bin-wrapper": "npm:bin-wrapper-china", |
122 | - "esbuild": "0.8.56", | 122 | + "esbuild": "0.8.57", |
123 | "rollup": "2.40.0" | 123 | "rollup": "2.40.0" |
124 | }, | 124 | }, |
125 | "repository": { | 125 | "repository": { |
src/api/sys/user.ts
@@ -5,6 +5,7 @@ import { | @@ -5,6 +5,7 @@ import { | ||
5 | GetUserInfoByUserIdParams, | 5 | GetUserInfoByUserIdParams, |
6 | GetUserInfoByUserIdModel, | 6 | GetUserInfoByUserIdModel, |
7 | } from './model/userModel'; | 7 | } from './model/userModel'; |
8 | + | ||
8 | import { ErrorMessageMode } from '/@/utils/http/axios/types'; | 9 | import { ErrorMessageMode } from '/@/utils/http/axios/types'; |
9 | 10 | ||
10 | enum Api { | 11 | enum Api { |
src/components/Table/src/types/table.ts
@@ -5,10 +5,12 @@ import type { | @@ -5,10 +5,12 @@ import type { | ||
5 | ColumnProps, | 5 | ColumnProps, |
6 | TableRowSelection as ITableRowSelection, | 6 | TableRowSelection as ITableRowSelection, |
7 | } from 'ant-design-vue/lib/table/interface'; | 7 | } from 'ant-design-vue/lib/table/interface'; |
8 | + | ||
8 | import { ComponentType } from './componentType'; | 9 | import { ComponentType } from './componentType'; |
9 | import { VueNode } from '/@/utils/propTypes'; | 10 | import { VueNode } from '/@/utils/propTypes'; |
10 | -// import { ColumnProps } from './column'; | 11 | + |
11 | export declare type SortOrder = 'ascend' | 'descend'; | 12 | export declare type SortOrder = 'ascend' | 'descend'; |
13 | + | ||
12 | export interface TableCurrentDataSource<T = Recordable> { | 14 | export interface TableCurrentDataSource<T = Recordable> { |
13 | currentDataSource: T[]; | 15 | currentDataSource: T[]; |
14 | } | 16 | } |
src/directives/permission.ts
@@ -5,12 +5,13 @@ | @@ -5,12 +5,13 @@ | ||
5 | */ | 5 | */ |
6 | import type { App, Directive, DirectiveBinding } from 'vue'; | 6 | import type { App, Directive, DirectiveBinding } from 'vue'; |
7 | 7 | ||
8 | -import { appStore } from '/@/store/modules/app'; | 8 | +import projectSetting from '/@/settings/projectSetting'; |
9 | import { usePermission } from '/@/hooks/web/usePermission'; | 9 | import { usePermission } from '/@/hooks/web/usePermission'; |
10 | import { PermissionModeEnum } from '/@/enums/appEnum'; | 10 | import { PermissionModeEnum } from '/@/enums/appEnum'; |
11 | -const { hasPermission } = usePermission(); | ||
12 | 11 | ||
13 | function isAuth(el: Element, binding: any) { | 12 | function isAuth(el: Element, binding: any) { |
13 | + const { hasPermission } = usePermission(); | ||
14 | + | ||
14 | const value = binding.value; | 15 | const value = binding.value; |
15 | if (!value) return; | 16 | if (!value) return; |
16 | if (!hasPermission(value)) { | 17 | if (!hasPermission(value)) { |
@@ -19,7 +20,7 @@ function isAuth(el: Element, binding: any) { | @@ -19,7 +20,7 @@ function isAuth(el: Element, binding: any) { | ||
19 | } | 20 | } |
20 | 21 | ||
21 | function isBackMode() { | 22 | function isBackMode() { |
22 | - return appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK; | 23 | + return projectSetting.permissionMode === PermissionModeEnum.BACK; |
23 | } | 24 | } |
24 | 25 | ||
25 | const mounted = (el: Element, binding: DirectiveBinding<any>) => { | 26 | const mounted = (el: Element, binding: DirectiveBinding<any>) => { |
src/hooks/web/usePermission.ts
@@ -9,6 +9,7 @@ import { useTabs } from './useTabs'; | @@ -9,6 +9,7 @@ import { useTabs } from './useTabs'; | ||
9 | import router, { resetRouter } from '/@/router'; | 9 | import router, { resetRouter } from '/@/router'; |
10 | // import { RootRoute } from '/@/router/routes'; | 10 | // import { RootRoute } from '/@/router/routes'; |
11 | 11 | ||
12 | +import projectSetting from '/@/settings/projectSetting'; | ||
12 | import { PermissionModeEnum } from '/@/enums/appEnum'; | 13 | import { PermissionModeEnum } from '/@/enums/appEnum'; |
13 | import { RoleEnum } from '/@/enums/roleEnum'; | 14 | import { RoleEnum } from '/@/enums/roleEnum'; |
14 | 15 | ||
@@ -24,7 +25,7 @@ export function usePermission() { | @@ -24,7 +25,7 @@ export function usePermission() { | ||
24 | async function togglePermissionMode() { | 25 | async function togglePermissionMode() { |
25 | appStore.commitProjectConfigState({ | 26 | appStore.commitProjectConfigState({ |
26 | permissionMode: | 27 | permissionMode: |
27 | - appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK | 28 | + projectSetting.permissionMode === PermissionModeEnum.BACK |
28 | ? PermissionModeEnum.ROLE | 29 | ? PermissionModeEnum.ROLE |
29 | : PermissionModeEnum.BACK, | 30 | : PermissionModeEnum.BACK, |
30 | }); | 31 | }); |
@@ -51,7 +52,7 @@ export function usePermission() { | @@ -51,7 +52,7 @@ export function usePermission() { | ||
51 | * Determine whether there is permission | 52 | * Determine whether there is permission |
52 | */ | 53 | */ |
53 | function hasPermission(value?: RoleEnum | RoleEnum[] | string | string[], def = true): boolean { | 54 | function hasPermission(value?: RoleEnum | RoleEnum[] | string | string[], def = true): boolean { |
54 | - const permMode = appStore.getProjectConfig.permissionMode; | 55 | + const permMode = projectSetting.permissionMode; |
55 | if (PermissionModeEnum.ROLE === permMode) { | 56 | if (PermissionModeEnum.ROLE === permMode) { |
56 | // Visible by default | 57 | // Visible by default |
57 | if (!value) { | 58 | if (!value) { |
@@ -81,7 +82,7 @@ export function usePermission() { | @@ -81,7 +82,7 @@ export function usePermission() { | ||
81 | * @param roles | 82 | * @param roles |
82 | */ | 83 | */ |
83 | async function changeRole(roles: RoleEnum | RoleEnum[]): Promise<void> { | 84 | async function changeRole(roles: RoleEnum | RoleEnum[]): Promise<void> { |
84 | - if (appStore.getProjectConfig.permissionMode !== PermissionModeEnum.ROLE) { | 85 | + if (projectSetting.permissionMode !== PermissionModeEnum.ROLE) { |
85 | throw new Error( | 86 | throw new Error( |
86 | 'Please switch PermissionModeEnum to ROLE mode in the configuration to operate!' | 87 | 'Please switch PermissionModeEnum to ROLE mode in the configuration to operate!' |
87 | ); | 88 | ); |
src/layouts/default/setting/components/SettingFooter.vue
@@ -19,17 +19,23 @@ | @@ -19,17 +19,23 @@ | ||
19 | <script lang="ts"> | 19 | <script lang="ts"> |
20 | import { defineComponent, unref } from 'vue'; | 20 | import { defineComponent, unref } from 'vue'; |
21 | 21 | ||
22 | - import { useDesign } from '/@/hooks/web/useDesign'; | ||
23 | - import { useI18n } from '/@/hooks/web/useI18n'; | ||
24 | import { CopyOutlined, RedoOutlined } from '@ant-design/icons-vue'; | 22 | import { CopyOutlined, RedoOutlined } from '@ant-design/icons-vue'; |
23 | + | ||
25 | import { appStore } from '/@/store/modules/app'; | 24 | import { appStore } from '/@/store/modules/app'; |
26 | - import defaultSetting from '/@/settings/projectSetting'; | 25 | + import { permissionStore } from '/@/store/modules/permission'; |
26 | + import { tabStore } from '/@/store/modules/tab'; | ||
27 | + import { userStore } from '/@/store/modules/user'; | ||
28 | + | ||
29 | + import { useDesign } from '/@/hooks/web/useDesign'; | ||
30 | + import { useI18n } from '/@/hooks/web/useI18n'; | ||
27 | import { useMessage } from '/@/hooks/web/useMessage'; | 31 | import { useMessage } from '/@/hooks/web/useMessage'; |
28 | import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard'; | 32 | import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard'; |
29 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; | 33 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; |
34 | + | ||
30 | import { updateColorWeak } from '/@/logics/theme/updateColorWeak'; | 35 | import { updateColorWeak } from '/@/logics/theme/updateColorWeak'; |
31 | import { updateGrayMode } from '/@/logics/theme/updateGrayMode'; | 36 | import { updateGrayMode } from '/@/logics/theme/updateGrayMode'; |
32 | 37 | ||
38 | + import defaultSetting from '/@/settings/projectSetting'; | ||
33 | export default defineComponent({ | 39 | export default defineComponent({ |
34 | name: 'SettingFooter', | 40 | name: 'SettingFooter', |
35 | components: { CopyOutlined, RedoOutlined }, | 41 | components: { CopyOutlined, RedoOutlined }, |
@@ -63,6 +69,9 @@ | @@ -63,6 +69,9 @@ | ||
63 | function handleClearAndRedo() { | 69 | function handleClearAndRedo() { |
64 | localStorage.clear(); | 70 | localStorage.clear(); |
65 | appStore.resumeAllState(); | 71 | appStore.resumeAllState(); |
72 | + permissionStore.commitResetState(); | ||
73 | + tabStore.commitResetState(); | ||
74 | + userStore.commitResetState(); | ||
66 | location.reload(); | 75 | location.reload(); |
67 | } | 76 | } |
68 | return { | 77 | return { |
src/layouts/page/useCache.ts
@@ -3,17 +3,21 @@ import type { RouteLocation } from 'vue-router'; | @@ -3,17 +3,21 @@ import type { RouteLocation } from 'vue-router'; | ||
3 | import { computed, ref, unref } from 'vue'; | 3 | import { computed, ref, unref } from 'vue'; |
4 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; | 4 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; |
5 | import { tryTsxEmit } from '/@/utils/helper/vueHelper'; | 5 | import { tryTsxEmit } from '/@/utils/helper/vueHelper'; |
6 | -import { tabStore, PAGE_LAYOUT_KEY } from '/@/store/modules/tab'; | ||
7 | 6 | ||
8 | import { useRouter } from 'vue-router'; | 7 | import { useRouter } from 'vue-router'; |
8 | +import { useStore } from 'vuex'; | ||
9 | 9 | ||
10 | const ParentLayoutName = 'ParentLayout'; | 10 | const ParentLayoutName = 'ParentLayout'; |
11 | 11 | ||
12 | +const PAGE_LAYOUT_KEY = '__PAGE_LAYOUT__'; | ||
13 | + | ||
12 | export function getKey(component: FunctionalComponent & { type: Indexable }, route: RouteLocation) { | 14 | export function getKey(component: FunctionalComponent & { type: Indexable }, route: RouteLocation) { |
13 | return !!component?.type.parentView ? {} : { key: route.fullPath }; | 15 | return !!component?.type.parentView ? {} : { key: route.fullPath }; |
14 | } | 16 | } |
15 | 17 | ||
16 | export function useCache(isPage: boolean) { | 18 | export function useCache(isPage: boolean) { |
19 | + const { getters } = useStore(); | ||
20 | + | ||
17 | const name = ref(''); | 21 | const name = ref(''); |
18 | const { currentRoute } = useRouter(); | 22 | const { currentRoute } = useRouter(); |
19 | 23 | ||
@@ -38,7 +42,7 @@ export function useCache(isPage: boolean) { | @@ -38,7 +42,7 @@ export function useCache(isPage: boolean) { | ||
38 | if (!unref(getOpenKeepAlive)) { | 42 | if (!unref(getOpenKeepAlive)) { |
39 | return []; | 43 | return []; |
40 | } | 44 | } |
41 | - const cached = tabStore.getCachedMapState; | 45 | + const cached = getters['app-tab/getCachedMapState']; |
42 | 46 | ||
43 | if (isPage) { | 47 | if (isPage) { |
44 | // page Layout | 48 | // page Layout |
src/main.ts
@@ -17,9 +17,11 @@ import { setupStore } from '/@/store'; | @@ -17,9 +17,11 @@ import { setupStore } from '/@/store'; | ||
17 | import { setupErrorHandle } from '/@/logics/error-handle'; | 17 | import { setupErrorHandle } from '/@/logics/error-handle'; |
18 | import { setupGlobDirectives } from '/@/directives'; | 18 | import { setupGlobDirectives } from '/@/directives'; |
19 | import { setupI18n } from '/@/locales/setupI18n'; | 19 | import { setupI18n } from '/@/locales/setupI18n'; |
20 | - | ||
21 | import { registerGlobComp } from '/@/components/registerGlobComp'; | 20 | import { registerGlobComp } from '/@/components/registerGlobComp'; |
22 | 21 | ||
22 | +// router-guard | ||
23 | +import '/@/router/guard'; | ||
24 | + | ||
23 | // Register icon Sprite | 25 | // Register icon Sprite |
24 | import 'vite-plugin-svg-icons/register'; | 26 | import 'vite-plugin-svg-icons/register'; |
25 | 27 | ||
@@ -32,6 +34,7 @@ import { isDevMode } from '/@/utils/env'; | @@ -32,6 +34,7 @@ import { isDevMode } from '/@/utils/env'; | ||
32 | 34 | ||
33 | // Multilingual configuration | 35 | // Multilingual configuration |
34 | await setupI18n(app); | 36 | await setupI18n(app); |
37 | + | ||
35 | // Configure routing | 38 | // Configure routing |
36 | setupRouter(app); | 39 | setupRouter(app); |
37 | 40 |
src/router/guard/index.ts
1 | -import { Router } from 'vue-router'; | 1 | +import router from '/@/router'; |
2 | 2 | ||
3 | import { createProgressGuard } from './progressGuard'; | 3 | import { createProgressGuard } from './progressGuard'; |
4 | import { createPermissionGuard } from './permissionGuard'; | 4 | import { createPermissionGuard } from './permissionGuard'; |
@@ -10,14 +10,12 @@ import { createHttpGuard } from './httpGuard'; | @@ -10,14 +10,12 @@ import { createHttpGuard } from './httpGuard'; | ||
10 | import { createPageGuard } from './pageGuard'; | 10 | import { createPageGuard } from './pageGuard'; |
11 | import { createStateGuard } from './stateGuard'; | 11 | import { createStateGuard } from './stateGuard'; |
12 | 12 | ||
13 | -export function createGuard(router: Router) { | ||
14 | - createPageGuard(router); | ||
15 | - createPageLoadingGuard(router); | ||
16 | - createHttpGuard(router); | ||
17 | - createScrollGuard(router); | ||
18 | - createMessageGuard(router); | ||
19 | - createTitleGuard(router); | ||
20 | - createProgressGuard(router); | ||
21 | - createPermissionGuard(router); | ||
22 | - createStateGuard(router); | ||
23 | -} | 13 | +createPageGuard(router); |
14 | +createPageLoadingGuard(router); | ||
15 | +createHttpGuard(router); | ||
16 | +createScrollGuard(router); | ||
17 | +createMessageGuard(router); | ||
18 | +createTitleGuard(router); | ||
19 | +createProgressGuard(router); | ||
20 | +createPermissionGuard(router); | ||
21 | +createStateGuard(router); |
src/router/guard/stateGuard.ts
1 | import type { Router } from 'vue-router'; | 1 | import type { Router } from 'vue-router'; |
2 | import { appStore } from '/@/store/modules/app'; | 2 | import { appStore } from '/@/store/modules/app'; |
3 | +import { tabStore } from '/@/store/modules/tab'; | ||
4 | +import { userStore } from '/@/store/modules/user'; | ||
5 | +import { permissionStore } from '/@/store/modules/permission'; | ||
3 | import { PageEnum } from '/@/enums/pageEnum'; | 6 | import { PageEnum } from '/@/enums/pageEnum'; |
4 | import { removeTabChangeListener } from '/@/logics/mitt/tabChange'; | 7 | import { removeTabChangeListener } from '/@/logics/mitt/tabChange'; |
5 | 8 | ||
@@ -8,6 +11,9 @@ export function createStateGuard(router: Router) { | @@ -8,6 +11,9 @@ export function createStateGuard(router: Router) { | ||
8 | // Just enter the login page and clear the authentication information | 11 | // Just enter the login page and clear the authentication information |
9 | if (to.path === PageEnum.BASE_LOGIN) { | 12 | if (to.path === PageEnum.BASE_LOGIN) { |
10 | appStore.resumeAllState(); | 13 | appStore.resumeAllState(); |
14 | + permissionStore.commitResetState(); | ||
15 | + tabStore.commitResetState(); | ||
16 | + userStore.commitResetState(); | ||
11 | removeTabChangeListener(); | 17 | removeTabChangeListener(); |
12 | } | 18 | } |
13 | }); | 19 | }); |
src/router/index.ts
@@ -3,7 +3,6 @@ import type { App } from 'vue'; | @@ -3,7 +3,6 @@ import type { App } from 'vue'; | ||
3 | 3 | ||
4 | import { createRouter, createWebHashHistory } from 'vue-router'; | 4 | import { createRouter, createWebHashHistory } from 'vue-router'; |
5 | 5 | ||
6 | -import { createGuard } from './guard'; | ||
7 | import { basicRoutes, LoginRoute } from './routes'; | 6 | import { basicRoutes, LoginRoute } from './routes'; |
8 | import { REDIRECT_NAME } from './constant'; | 7 | import { REDIRECT_NAME } from './constant'; |
9 | 8 | ||
@@ -30,7 +29,6 @@ export function resetRouter() { | @@ -30,7 +29,6 @@ export function resetRouter() { | ||
30 | // config router | 29 | // config router |
31 | export function setupRouter(app: App<Element>) { | 30 | export function setupRouter(app: App<Element>) { |
32 | app.use(router); | 31 | app.use(router); |
33 | - createGuard(router); | ||
34 | } | 32 | } |
35 | 33 | ||
36 | export default router; | 34 | export default router; |
src/store/modules/app.ts
@@ -10,10 +10,6 @@ import { Persistent } from '/@/utils/cache/persistent'; | @@ -10,10 +10,6 @@ import { Persistent } from '/@/utils/cache/persistent'; | ||
10 | import { deepMerge } from '/@/utils'; | 10 | import { deepMerge } from '/@/utils'; |
11 | 11 | ||
12 | import { resetRouter } from '/@/router'; | 12 | import { resetRouter } from '/@/router'; |
13 | -import { permissionStore } from './permission'; | ||
14 | -import { tabStore } from './tab'; | ||
15 | - | ||
16 | -import { userStore } from './user'; | ||
17 | 13 | ||
18 | export interface LockInfo { | 14 | export interface LockInfo { |
19 | pwd: string | undefined; | 15 | pwd: string | undefined; |
@@ -66,10 +62,6 @@ export default class App extends VuexModule { | @@ -66,10 +62,6 @@ export default class App extends VuexModule { | ||
66 | async resumeAllState() { | 62 | async resumeAllState() { |
67 | resetRouter(); | 63 | resetRouter(); |
68 | Persistent.clearAll(); | 64 | Persistent.clearAll(); |
69 | - | ||
70 | - permissionStore.commitResetState(); | ||
71 | - tabStore.commitResetState(); | ||
72 | - userStore.commitResetState(); | ||
73 | } | 65 | } |
74 | 66 | ||
75 | @Action | 67 | @Action |
src/store/modules/lock.ts
1 | +import type { LockInfo } from '/@/store/types'; | ||
2 | + | ||
1 | import { VuexModule, getModule, Module, Mutation, Action } from 'vuex-module-decorators'; | 3 | import { VuexModule, getModule, Module, Mutation, Action } from 'vuex-module-decorators'; |
2 | import store from '/@/store'; | 4 | import store from '/@/store'; |
3 | 5 | ||
@@ -8,11 +10,6 @@ import { Persistent } from '/@/utils/cache/persistent'; | @@ -8,11 +10,6 @@ import { Persistent } from '/@/utils/cache/persistent'; | ||
8 | 10 | ||
9 | import { userStore } from './user'; | 11 | import { userStore } from './user'; |
10 | 12 | ||
11 | -export interface LockInfo { | ||
12 | - pwd: string | undefined; | ||
13 | - isLock: boolean; | ||
14 | -} | ||
15 | - | ||
16 | const NAME = 'app-lock'; | 13 | const NAME = 'app-lock'; |
17 | hotModuleUnregisterModule(NAME); | 14 | hotModuleUnregisterModule(NAME); |
18 | @Module({ dynamic: true, namespaced: true, store, name: NAME }) | 15 | @Module({ dynamic: true, namespaced: true, store, name: NAME }) |
src/store/modules/tab.ts
1 | -import { toRaw } from 'vue'; | 1 | +import type { RouteLocationNormalized, RouteLocationRaw } from 'vue-router'; |
2 | 2 | ||
3 | -import { unref } from 'vue'; | 3 | +import { toRaw, unref } from 'vue'; |
4 | import { Action, Module, Mutation, VuexModule, getModule } from 'vuex-module-decorators'; | 4 | import { Action, Module, Mutation, VuexModule, getModule } from 'vuex-module-decorators'; |
5 | import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper'; | 5 | import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper'; |
6 | 6 | ||
@@ -9,8 +9,8 @@ import { PageEnum } from '/@/enums/pageEnum'; | @@ -9,8 +9,8 @@ import { PageEnum } from '/@/enums/pageEnum'; | ||
9 | import store from '/@/store'; | 9 | import store from '/@/store'; |
10 | import router from '/@/router'; | 10 | import router from '/@/router'; |
11 | import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/constant'; | 11 | import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/constant'; |
12 | -import { RouteLocationNormalized, RouteLocationRaw } from 'vue-router'; | ||
13 | import { getRoute } from '/@/router/helper/routeHelper'; | 12 | import { getRoute } from '/@/router/helper/routeHelper'; |
13 | + | ||
14 | import { useGo, useRedo } from '/@/hooks/web/usePage'; | 14 | import { useGo, useRedo } from '/@/hooks/web/usePage'; |
15 | import { cloneDeep } from 'lodash-es'; | 15 | import { cloneDeep } from 'lodash-es'; |
16 | 16 |
src/store/modules/user.ts
@@ -3,6 +3,7 @@ import type { | @@ -3,6 +3,7 @@ import type { | ||
3 | GetUserInfoByUserIdModel, | 3 | GetUserInfoByUserIdModel, |
4 | GetUserInfoByUserIdParams, | 4 | GetUserInfoByUserIdParams, |
5 | } from '/@/api/sys/model/userModel'; | 5 | } from '/@/api/sys/model/userModel'; |
6 | +import type { UserInfo } from '/@/store/types'; | ||
6 | 7 | ||
7 | import store from '/@/store/index'; | 8 | import store from '/@/store/index'; |
8 | import { VuexModule, Module, getModule, Mutation, Action } from 'vuex-module-decorators'; | 9 | import { VuexModule, Module, getModule, Mutation, Action } from 'vuex-module-decorators'; |
@@ -10,7 +11,7 @@ import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper'; | @@ -10,7 +11,7 @@ import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper'; | ||
10 | 11 | ||
11 | import { PageEnum } from '/@/enums/pageEnum'; | 12 | import { PageEnum } from '/@/enums/pageEnum'; |
12 | import { RoleEnum } from '/@/enums/roleEnum'; | 13 | import { RoleEnum } from '/@/enums/roleEnum'; |
13 | -import { CacheTypeEnum, ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum'; | 14 | +import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum'; |
14 | 15 | ||
15 | import { useMessage } from '/@/hooks/web/useMessage'; | 16 | import { useMessage } from '/@/hooks/web/useMessage'; |
16 | 17 | ||
@@ -18,29 +19,13 @@ import router from '/@/router'; | @@ -18,29 +19,13 @@ import router from '/@/router'; | ||
18 | 19 | ||
19 | import { loginApi, getUserInfoById } from '/@/api/sys/user'; | 20 | import { loginApi, getUserInfoById } from '/@/api/sys/user'; |
20 | 21 | ||
21 | -import { Persistent, BasicKeys } from '/@/utils/cache/persistent'; | ||
22 | import { useI18n } from '/@/hooks/web/useI18n'; | 22 | import { useI18n } from '/@/hooks/web/useI18n'; |
23 | import { ErrorMessageMode } from '/@/utils/http/axios/types'; | 23 | import { ErrorMessageMode } from '/@/utils/http/axios/types'; |
24 | -import projectSetting from '/@/settings/projectSetting'; | ||
25 | - | ||
26 | -export type UserInfo = Omit<GetUserInfoByUserIdModel, 'roles'>; | ||
27 | - | ||
28 | -const { permissionCacheType } = projectSetting; | ||
29 | -const isLocal = permissionCacheType === CacheTypeEnum.LOCAL; | 24 | +import { getAuthCache, setAuthCache } from '/@/utils/auth/index'; |
30 | 25 | ||
31 | const NAME = 'app-user'; | 26 | const NAME = 'app-user'; |
32 | hotModuleUnregisterModule(NAME); | 27 | hotModuleUnregisterModule(NAME); |
33 | 28 | ||
34 | -function getCache<T>(key: BasicKeys) { | ||
35 | - const fn = isLocal ? Persistent.getLocal : Persistent.getSession; | ||
36 | - return fn(key) as T; | ||
37 | -} | ||
38 | - | ||
39 | -function setCache(key: BasicKeys, value) { | ||
40 | - const fn = isLocal ? Persistent.setLocal : Persistent.setSession; | ||
41 | - return fn(key, value); | ||
42 | -} | ||
43 | - | ||
44 | @Module({ namespaced: true, name: NAME, dynamic: true, store }) | 29 | @Module({ namespaced: true, name: NAME, dynamic: true, store }) |
45 | class User extends VuexModule { | 30 | class User extends VuexModule { |
46 | // user info | 31 | // user info |
@@ -53,15 +38,15 @@ class User extends VuexModule { | @@ -53,15 +38,15 @@ class User extends VuexModule { | ||
53 | private roleListState: RoleEnum[] = []; | 38 | private roleListState: RoleEnum[] = []; |
54 | 39 | ||
55 | get getUserInfoState(): UserInfo { | 40 | get getUserInfoState(): UserInfo { |
56 | - return this.userInfoState || getCache<UserInfo>(USER_INFO_KEY) || {}; | 41 | + return this.userInfoState || getAuthCache<UserInfo>(USER_INFO_KEY) || {}; |
57 | } | 42 | } |
58 | 43 | ||
59 | get getTokenState(): string { | 44 | get getTokenState(): string { |
60 | - return this.tokenState || getCache<string>(TOKEN_KEY); | 45 | + return this.tokenState || getAuthCache<string>(TOKEN_KEY); |
61 | } | 46 | } |
62 | 47 | ||
63 | get getRoleListState(): RoleEnum[] { | 48 | get getRoleListState(): RoleEnum[] { |
64 | - return this.roleListState.length > 0 ? this.roleListState : getCache<RoleEnum[]>(ROLES_KEY); | 49 | + return this.roleListState.length > 0 ? this.roleListState : getAuthCache<RoleEnum[]>(ROLES_KEY); |
65 | } | 50 | } |
66 | 51 | ||
67 | @Mutation | 52 | @Mutation |
@@ -74,19 +59,19 @@ class User extends VuexModule { | @@ -74,19 +59,19 @@ class User extends VuexModule { | ||
74 | @Mutation | 59 | @Mutation |
75 | commitUserInfoState(info: UserInfo): void { | 60 | commitUserInfoState(info: UserInfo): void { |
76 | this.userInfoState = info; | 61 | this.userInfoState = info; |
77 | - setCache(USER_INFO_KEY, info); | 62 | + setAuthCache(USER_INFO_KEY, info); |
78 | } | 63 | } |
79 | 64 | ||
80 | @Mutation | 65 | @Mutation |
81 | commitRoleListState(roleList: RoleEnum[]): void { | 66 | commitRoleListState(roleList: RoleEnum[]): void { |
82 | this.roleListState = roleList; | 67 | this.roleListState = roleList; |
83 | - setCache(ROLES_KEY, roleList); | 68 | + setAuthCache(ROLES_KEY, roleList); |
84 | } | 69 | } |
85 | 70 | ||
86 | @Mutation | 71 | @Mutation |
87 | commitTokenState(info: string): void { | 72 | commitTokenState(info: string): void { |
88 | this.tokenState = info; | 73 | this.tokenState = info; |
89 | - setCache(TOKEN_KEY, info); | 74 | + setAuthCache(TOKEN_KEY, info); |
90 | } | 75 | } |
91 | 76 | ||
92 | /** | 77 | /** |
src/store/types.ts
0 → 100644
src/utils/auth/index.ts
0 → 100644
1 | +import { Persistent, BasicKeys } from '/@/utils/cache/persistent'; | ||
2 | +import { CacheTypeEnum } from '/@/enums/cacheEnum'; | ||
3 | +import projectSetting from '/@/settings/projectSetting'; | ||
4 | +import { TOKEN_KEY } from '/@/enums/cacheEnum'; | ||
5 | + | ||
6 | +const { permissionCacheType } = projectSetting; | ||
7 | +const isLocal = permissionCacheType === CacheTypeEnum.LOCAL; | ||
8 | + | ||
9 | +export function getToken() { | ||
10 | + return getAuthCache(TOKEN_KEY); | ||
11 | +} | ||
12 | + | ||
13 | +export function getAuthCache<T>(key: BasicKeys) { | ||
14 | + const fn = isLocal ? Persistent.getLocal : Persistent.getSession; | ||
15 | + return fn(key) as T; | ||
16 | +} | ||
17 | + | ||
18 | +export function setAuthCache(key: BasicKeys, value) { | ||
19 | + const fn = isLocal ? Persistent.setLocal : Persistent.setSession; | ||
20 | + return fn(key, value); | ||
21 | +} |
src/utils/cache/persistent.ts
1 | -import type { UserInfo } from '/@/store/modules/user'; | ||
2 | -import type { LockInfo } from '/@/store/modules/lock'; | 1 | +import type { LockInfo, UserInfo } from '/@/store/types'; |
2 | + | ||
3 | import { ProjectConfig } from '/#/config'; | 3 | import { ProjectConfig } from '/#/config'; |
4 | 4 | ||
5 | import { createLocalStorage, createSessionStorage } from '/@/utils/cache'; | 5 | import { createLocalStorage, createSessionStorage } from '/@/utils/cache'; |
src/utils/env.ts
1 | import type { GlobEnvConfig } from '/#/config'; | 1 | import type { GlobEnvConfig } from '/#/config'; |
2 | 2 | ||
3 | -import { useGlobSetting } from '/@/hooks/setting'; | 3 | +import { warn } from '/@/utils/log'; |
4 | import pkg from '../../package.json'; | 4 | import pkg from '../../package.json'; |
5 | import { getConfigFileName } from '../../build/getConfigFileName'; | 5 | import { getConfigFileName } from '../../build/getConfigFileName'; |
6 | 6 | ||
7 | export function getCommonStoragePrefix() { | 7 | export function getCommonStoragePrefix() { |
8 | - const globSetting = useGlobSetting(); | ||
9 | - return `${globSetting.shortName}__${getEnv()}`.toUpperCase(); | 8 | + const { VITE_GLOB_APP_SHORT_NAME } = getAppEnvConfig(); |
9 | + return `${VITE_GLOB_APP_SHORT_NAME}__${getEnv()}`.toUpperCase(); | ||
10 | } | 10 | } |
11 | 11 | ||
12 | // Generate cache key according to version | 12 | // Generate cache key according to version |
@@ -21,7 +21,27 @@ export function getAppEnvConfig() { | @@ -21,7 +21,27 @@ export function getAppEnvConfig() { | ||
21 | ? // Get the global configuration (the configuration will be extracted independently when packaging) | 21 | ? // Get the global configuration (the configuration will be extracted independently when packaging) |
22 | ((import.meta.env as unknown) as GlobEnvConfig) | 22 | ((import.meta.env as unknown) as GlobEnvConfig) |
23 | : window[ENV_NAME as any]) as unknown) as GlobEnvConfig; | 23 | : window[ENV_NAME as any]) as unknown) as GlobEnvConfig; |
24 | - return ENV; | 24 | + |
25 | + const { | ||
26 | + VITE_GLOB_APP_TITLE, | ||
27 | + VITE_GLOB_API_URL, | ||
28 | + VITE_GLOB_APP_SHORT_NAME, | ||
29 | + VITE_GLOB_API_URL_PREFIX, | ||
30 | + VITE_GLOB_UPLOAD_URL, | ||
31 | + } = ENV; | ||
32 | + | ||
33 | + if (!/[a-zA-Z\_]*/.test(VITE_GLOB_APP_SHORT_NAME)) { | ||
34 | + warn( | ||
35 | + `VITE_GLOB_APP_SHORT_NAME Variables can only be characters/underscores, please modify in the environment variables and re-running.` | ||
36 | + ); | ||
37 | + } | ||
38 | + return { | ||
39 | + VITE_GLOB_APP_TITLE, | ||
40 | + VITE_GLOB_API_URL, | ||
41 | + VITE_GLOB_APP_SHORT_NAME, | ||
42 | + VITE_GLOB_API_URL_PREFIX, | ||
43 | + VITE_GLOB_UPLOAD_URL, | ||
44 | + }; | ||
25 | } | 45 | } |
26 | 46 | ||
27 | /** | 47 | /** |
src/utils/http/axios/axiosTransform.ts
@@ -4,6 +4,12 @@ | @@ -4,6 +4,12 @@ | ||
4 | import type { AxiosRequestConfig, AxiosResponse } from 'axios'; | 4 | import type { AxiosRequestConfig, AxiosResponse } from 'axios'; |
5 | import type { RequestOptions, Result } from './types'; | 5 | import type { RequestOptions, Result } from './types'; |
6 | 6 | ||
7 | +export interface CreateAxiosOptions extends AxiosRequestConfig { | ||
8 | + prefixUrl?: string; | ||
9 | + transform?: AxiosTransform; | ||
10 | + requestOptions?: RequestOptions; | ||
11 | +} | ||
12 | + | ||
7 | export abstract class AxiosTransform { | 13 | export abstract class AxiosTransform { |
8 | /** | 14 | /** |
9 | * @description: Process configuration before request | 15 | * @description: Process configuration before request |
src/utils/http/axios/checkStatus.ts
1 | import { useMessage } from '/@/hooks/web/useMessage'; | 1 | import { useMessage } from '/@/hooks/web/useMessage'; |
2 | -import { userStore } from '/@/store/modules/user'; | ||
3 | import { useI18n } from '/@/hooks/web/useI18n'; | 2 | import { useI18n } from '/@/hooks/web/useI18n'; |
3 | +import router from '/@/router'; | ||
4 | +import { PageEnum } from '/@/enums/pageEnum'; | ||
5 | + | ||
4 | const { createMessage } = useMessage(); | 6 | const { createMessage } = useMessage(); |
5 | 7 | ||
6 | const error = createMessage.error!; | 8 | const error = createMessage.error!; |
@@ -15,7 +17,7 @@ export function checkStatus(status: number, msg: string): void { | @@ -15,7 +17,7 @@ export function checkStatus(status: number, msg: string): void { | ||
15 | // Return to the current page after successful login. This step needs to be operated on the login page. | 17 | // Return to the current page after successful login. This step needs to be operated on the login page. |
16 | case 401: | 18 | case 401: |
17 | error(t('sys.api.errMsg401')); | 19 | error(t('sys.api.errMsg401')); |
18 | - userStore.logout(true); | 20 | + router.push(PageEnum.BASE_LOGIN); |
19 | break; | 21 | break; |
20 | case 403: | 22 | case 403: |
21 | error(t('sys.api.errMsg403')); | 23 | error(t('sys.api.errMsg403')); |
src/utils/http/axios/index.ts
@@ -2,10 +2,10 @@ | @@ -2,10 +2,10 @@ | ||
2 | // The axios configuration can be changed according to the project, just change the file, other files can be left unchanged | 2 | // The axios configuration can be changed according to the project, just change the file, other files can be left unchanged |
3 | 3 | ||
4 | import type { AxiosResponse } from 'axios'; | 4 | import type { AxiosResponse } from 'axios'; |
5 | -import type { CreateAxiosOptions, RequestOptions, Result } from './types'; | ||
6 | -import { VAxios } from './Axios'; | ||
7 | -import { AxiosTransform } from './axiosTransform'; | 5 | +import type { RequestOptions, Result } from './types'; |
6 | +import type { AxiosTransform, CreateAxiosOptions } from './axiosTransform'; | ||
8 | 7 | ||
8 | +import { VAxios } from './Axios'; | ||
9 | import { checkStatus } from './checkStatus'; | 9 | import { checkStatus } from './checkStatus'; |
10 | 10 | ||
11 | import { useGlobSetting } from '/@/hooks/setting'; | 11 | import { useGlobSetting } from '/@/hooks/setting'; |
@@ -14,12 +14,12 @@ import { useMessage } from '/@/hooks/web/useMessage'; | @@ -14,12 +14,12 @@ import { useMessage } from '/@/hooks/web/useMessage'; | ||
14 | import { RequestEnum, ResultEnum, ContentTypeEnum } from '/@/enums/httpEnum'; | 14 | import { RequestEnum, ResultEnum, ContentTypeEnum } from '/@/enums/httpEnum'; |
15 | 15 | ||
16 | import { isString } from '/@/utils/is'; | 16 | import { isString } from '/@/utils/is'; |
17 | +import { getToken } from '/@/utils/auth'; | ||
17 | import { setObjToUrlParams, deepMerge } from '/@/utils'; | 18 | import { setObjToUrlParams, deepMerge } from '/@/utils'; |
18 | import { errorStore } from '/@/store/modules/error'; | 19 | import { errorStore } from '/@/store/modules/error'; |
19 | import { errorResult } from './const'; | 20 | import { errorResult } from './const'; |
20 | import { useI18n } from '/@/hooks/web/useI18n'; | 21 | import { useI18n } from '/@/hooks/web/useI18n'; |
21 | import { createNow, formatRequestDate } from './helper'; | 22 | import { createNow, formatRequestDate } from './helper'; |
22 | -import { userStore } from '/@/store/modules/user'; | ||
23 | 23 | ||
24 | const globSetting = useGlobSetting(); | 24 | const globSetting = useGlobSetting(); |
25 | const prefix = globSetting.urlPrefix; | 25 | const prefix = globSetting.urlPrefix; |
@@ -137,7 +137,7 @@ const transform: AxiosTransform = { | @@ -137,7 +137,7 @@ const transform: AxiosTransform = { | ||
137 | */ | 137 | */ |
138 | requestInterceptors: (config) => { | 138 | requestInterceptors: (config) => { |
139 | // 请求之前处理config | 139 | // 请求之前处理config |
140 | - const token = userStore.getTokenState; | 140 | + const token = getToken(); |
141 | if (token) { | 141 | if (token) { |
142 | // jwt token | 142 | // jwt token |
143 | config.headers.Authorization = token; | 143 | config.headers.Authorization = token; |
src/utils/http/axios/types.ts
1 | -import type { AxiosRequestConfig } from 'axios'; | ||
2 | -import type { AxiosTransform } from './axiosTransform'; | ||
3 | export type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined; | 1 | export type ErrorMessageMode = 'none' | 'modal' | 'message' | undefined; |
4 | 2 | ||
5 | export interface RequestOptions { | 3 | export interface RequestOptions { |
@@ -20,12 +18,6 @@ export interface RequestOptions { | @@ -20,12 +18,6 @@ export interface RequestOptions { | ||
20 | ignoreCancelToken?: boolean; | 18 | ignoreCancelToken?: boolean; |
21 | } | 19 | } |
22 | 20 | ||
23 | -export interface CreateAxiosOptions extends AxiosRequestConfig { | ||
24 | - prefixUrl?: string; | ||
25 | - transform?: AxiosTransform; | ||
26 | - requestOptions?: RequestOptions; | ||
27 | -} | ||
28 | - | ||
29 | export interface Result<T = any> { | 21 | export interface Result<T = any> { |
30 | code: number; | 22 | code: number; |
31 | type: 'success' | 'error' | 'warning'; | 23 | type: 'success' | 'error' | 'warning'; |
src/views/demo/system/account/index.vue
@@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
3 | <DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" /> | 3 | <DeptTree class="w-1/4 xl:w-1/5" @select="handleSelect" /> |
4 | <BasicTable @register="registerTable" class="w-3/4 xl:w-4/5"> | 4 | <BasicTable @register="registerTable" class="w-3/4 xl:w-4/5"> |
5 | <template #toolbar> | 5 | <template #toolbar> |
6 | - <a-button type="primary" @click="handleCreate"> 新增账号 </a-button> | 6 | + <a-button type="primary" @click="handleCreate">新增账号</a-button> |
7 | </template> | 7 | </template> |
8 | <template #action="{ record }"> | 8 | <template #action="{ record }"> |
9 | <TableAction | 9 | <TableAction |
src/views/sys/login/RegisterForm.vue
@@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
47 | class="enter-x" | 47 | class="enter-x" |
48 | size="large" | 48 | size="large" |
49 | block | 49 | block |
50 | - @click="handleReset" | 50 | + @click="handleRegister" |
51 | :loading="loading" | 51 | :loading="loading" |
52 | > | 52 | > |
53 | {{ t('sys.login.registerButton') }} | 53 | {{ t('sys.login.registerButton') }} |
@@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
103 | 103 | ||
104 | const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER); | 104 | const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER); |
105 | 105 | ||
106 | - async function handleReset() { | 106 | + async function handleRegister() { |
107 | const data = await validForm(); | 107 | const data = await validForm(); |
108 | if (!data) return; | 108 | if (!data) return; |
109 | console.log(data); | 109 | console.log(data); |
@@ -114,7 +114,7 @@ | @@ -114,7 +114,7 @@ | ||
114 | formRef, | 114 | formRef, |
115 | formData, | 115 | formData, |
116 | getFormRules, | 116 | getFormRules, |
117 | - handleReset, | 117 | + handleRegister, |
118 | loading, | 118 | loading, |
119 | handleBackLogin, | 119 | handleBackLogin, |
120 | getShow, | 120 | getShow, |
yarn.lock
@@ -1117,10 +1117,10 @@ | @@ -1117,10 +1117,10 @@ | ||
1117 | dependencies: | 1117 | dependencies: |
1118 | cross-fetch "^3.0.6" | 1118 | cross-fetch "^3.0.6" |
1119 | 1119 | ||
1120 | -"@iconify/json@^1.1.312": | ||
1121 | - version "1.1.312" | ||
1122 | - resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.312.tgz#d8e92f31acfb326dcbfa4daea2d4ba885423c186" | ||
1123 | - integrity sha512-bYgaMaNB17MkLL1UgRRD6fv9Vp80kny7KA4SVMxonBEsVtZ+53dCK0R7RccrC45X1mspG8MejUaEw/AaEmWHZQ== | 1120 | +"@iconify/json@^1.1.313": |
1121 | + version "1.1.313" | ||
1122 | + resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.313.tgz#c225be3c5ce3280a2c34e753a65dc257b85b6652" | ||
1123 | + integrity sha512-gv00rSX4apKE0i/fUjXp5+sBb8LHzzdJqrXkBNVby7Nl7yzRqeQ/EyY+7ixtSpEu3f1P/co/vrgdbZN6wlw6DA== | ||
1124 | 1124 | ||
1125 | "@intlify/core-base@9.0.0": | 1125 | "@intlify/core-base@9.0.0": |
1126 | version "9.0.0" | 1126 | version "9.0.0" |
@@ -1312,14 +1312,14 @@ | @@ -1312,14 +1312,14 @@ | ||
1312 | resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" | 1312 | resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" |
1313 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== | 1313 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== |
1314 | 1314 | ||
1315 | -"@types/fs-extra@^9.0.8": | 1315 | +"@types/fs-extra@^9.0.6", "@types/fs-extra@^9.0.8": |
1316 | version "9.0.8" | 1316 | version "9.0.8" |
1317 | resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" | 1317 | resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" |
1318 | integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== | 1318 | integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== |
1319 | dependencies: | 1319 | dependencies: |
1320 | "@types/node" "*" | 1320 | "@types/node" "*" |
1321 | 1321 | ||
1322 | -"@types/glob@^7.1.1": | 1322 | +"@types/glob@^7.1.1", "@types/glob@^7.1.3": |
1323 | version "7.1.3" | 1323 | version "7.1.3" |
1324 | resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" | 1324 | resolved "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" |
1325 | integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== | 1325 | integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== |
@@ -1515,6 +1515,13 @@ | @@ -1515,6 +1515,13 @@ | ||
1515 | resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" | 1515 | resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" |
1516 | integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== | 1516 | integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== |
1517 | 1517 | ||
1518 | +"@types/yargs@^15.0.12": | ||
1519 | + version "15.0.13" | ||
1520 | + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" | ||
1521 | + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== | ||
1522 | + dependencies: | ||
1523 | + "@types/yargs-parser" "*" | ||
1524 | + | ||
1518 | "@types/yargs@^16.0.0": | 1525 | "@types/yargs@^16.0.0": |
1519 | version "16.0.0" | 1526 | version "16.0.0" |
1520 | resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.0.tgz#0e033b23452da5d61b6c44747612cb80ac528751" | 1527 | resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.0.tgz#0e033b23452da5d61b6c44747612cb80ac528751" |
@@ -2219,6 +2226,15 @@ bl@^1.0.0: | @@ -2219,6 +2226,15 @@ bl@^1.0.0: | ||
2219 | readable-stream "^2.3.5" | 2226 | readable-stream "^2.3.5" |
2220 | safe-buffer "^5.1.1" | 2227 | safe-buffer "^5.1.1" |
2221 | 2228 | ||
2229 | +bl@^4.0.3: | ||
2230 | + version "4.1.0" | ||
2231 | + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" | ||
2232 | + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== | ||
2233 | + dependencies: | ||
2234 | + buffer "^5.5.0" | ||
2235 | + inherits "^2.0.4" | ||
2236 | + readable-stream "^3.4.0" | ||
2237 | + | ||
2222 | bluebird@^3.5.0, bluebird@^3.7.2: | 2238 | bluebird@^3.5.0, bluebird@^3.7.2: |
2223 | version "3.7.2" | 2239 | version "3.7.2" |
2224 | resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" | 2240 | resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" |
@@ -2310,7 +2326,7 @@ buffer-from@^1.0.0, buffer-from@^1.1.1: | @@ -2310,7 +2326,7 @@ buffer-from@^1.0.0, buffer-from@^1.1.1: | ||
2310 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" | 2326 | resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" |
2311 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== | 2327 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== |
2312 | 2328 | ||
2313 | -buffer@^5.2.1, buffer@^5.4.3: | 2329 | +buffer@^5.2.1, buffer@^5.4.3, buffer@^5.5.0: |
2314 | version "5.7.1" | 2330 | version "5.7.1" |
2315 | resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" | 2331 | resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" |
2316 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== | 2332 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== |
@@ -2582,6 +2598,11 @@ cli-cursor@^3.1.0: | @@ -2582,6 +2598,11 @@ cli-cursor@^3.1.0: | ||
2582 | dependencies: | 2598 | dependencies: |
2583 | restore-cursor "^3.1.0" | 2599 | restore-cursor "^3.1.0" |
2584 | 2600 | ||
2601 | +cli-spinners@^2.5.0: | ||
2602 | + version "2.5.0" | ||
2603 | + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" | ||
2604 | + integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== | ||
2605 | + | ||
2585 | cli-truncate@^2.1.0: | 2606 | cli-truncate@^2.1.0: |
2586 | version "2.1.0" | 2607 | version "2.1.0" |
2587 | resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" | 2608 | resolved "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" |
@@ -2632,6 +2653,11 @@ clone-response@1.0.2: | @@ -2632,6 +2653,11 @@ clone-response@1.0.2: | ||
2632 | dependencies: | 2653 | dependencies: |
2633 | mimic-response "^1.0.0" | 2654 | mimic-response "^1.0.0" |
2634 | 2655 | ||
2656 | +clone@^1.0.2: | ||
2657 | + version "1.0.4" | ||
2658 | + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" | ||
2659 | + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= | ||
2660 | + | ||
2635 | clone@^2.1.1: | 2661 | clone@^2.1.1: |
2636 | version "2.1.2" | 2662 | version "2.1.2" |
2637 | resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" | 2663 | resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" |
@@ -3342,6 +3368,13 @@ deepmerge@^4.2.2: | @@ -3342,6 +3368,13 @@ deepmerge@^4.2.2: | ||
3342 | resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" | 3368 | resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" |
3343 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== | 3369 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== |
3344 | 3370 | ||
3371 | +defaults@^1.0.3: | ||
3372 | + version "1.0.3" | ||
3373 | + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" | ||
3374 | + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= | ||
3375 | + dependencies: | ||
3376 | + clone "^1.0.2" | ||
3377 | + | ||
3345 | define-properties@^1.1.3: | 3378 | define-properties@^1.1.3: |
3346 | version "1.1.3" | 3379 | version "1.1.3" |
3347 | resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" | 3380 | resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" |
@@ -3533,6 +3566,22 @@ download@^7.1.0: | @@ -3533,6 +3566,22 @@ download@^7.1.0: | ||
3533 | p-event "^2.1.0" | 3566 | p-event "^2.1.0" |
3534 | pify "^3.0.0" | 3567 | pify "^3.0.0" |
3535 | 3568 | ||
3569 | +dpdm@^3.6.0: | ||
3570 | + version "3.6.0" | ||
3571 | + resolved "https://registry.npmjs.org/dpdm/-/dpdm-3.6.0.tgz#d8612e9899725287f8ad5b705cb081a5158d2f2f" | ||
3572 | + integrity sha512-+DRT3o/5mIbjKENtKUEDX0qOk0xIBDllDITtvHRH+5Yppz2aJAHQkozj3oiIPLWWfup8CuuBl3xWvk5yD5oaOg== | ||
3573 | + dependencies: | ||
3574 | + "@types/fs-extra" "^9.0.6" | ||
3575 | + "@types/glob" "^7.1.3" | ||
3576 | + "@types/yargs" "^15.0.12" | ||
3577 | + chalk "^4.1.0" | ||
3578 | + fs-extra "^9.0.1" | ||
3579 | + glob "^7.1.6" | ||
3580 | + ora "^5.2.0" | ||
3581 | + tslib "^2.1.0" | ||
3582 | + typescript "^4.1.3" | ||
3583 | + yargs "^16.2.0" | ||
3584 | + | ||
3536 | duplexer3@^0.1.4: | 3585 | duplexer3@^0.1.4: |
3537 | version "0.1.4" | 3586 | version "0.1.4" |
3538 | resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" | 3587 | resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" |
@@ -3704,10 +3753,10 @@ esbuild-register@^2.2.0: | @@ -3704,10 +3753,10 @@ esbuild-register@^2.2.0: | ||
3704 | dependencies: | 3753 | dependencies: |
3705 | jsonc-parser "^3.0.0" | 3754 | jsonc-parser "^3.0.0" |
3706 | 3755 | ||
3707 | -esbuild@0.8.56, esbuild@^0.8.52, esbuild@^0.8.54, esbuild@^0.8.56: | ||
3708 | - version "0.8.56" | ||
3709 | - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.56.tgz#9c7c3d6e614db7367afa348adb0ab287c296735e" | ||
3710 | - integrity sha512-PTMdAWK3JI2MNW811znGssGP5GR44tQPr++VQ1rPP0n8Z1cTKbCPD3S/kXPLr3ZZDIwAaVm08fuFym6Rp8l/0A== | 3756 | +esbuild@0.8.57, esbuild@^0.8.52, esbuild@^0.8.54, esbuild@^0.8.56: |
3757 | + version "0.8.57" | ||
3758 | + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926" | ||
3759 | + integrity sha512-j02SFrUwFTRUqiY0Kjplwjm1psuzO1d6AjaXKuOR9hrY0HuPsT6sV42B6myW34h1q4CRy+Y3g4RU/cGJeI/nNA== | ||
3711 | 3760 | ||
3712 | escalade@^3.1.1: | 3761 | escalade@^3.1.1: |
3713 | version "3.1.1" | 3762 | version "3.1.1" |
@@ -5045,7 +5094,7 @@ inflight@^1.0.4: | @@ -5045,7 +5094,7 @@ inflight@^1.0.4: | ||
5045 | once "^1.3.0" | 5094 | once "^1.3.0" |
5046 | wrappy "1" | 5095 | wrappy "1" |
5047 | 5096 | ||
5048 | -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: | 5097 | +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: |
5049 | version "2.0.4" | 5098 | version "2.0.4" |
5050 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | 5099 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" |
5051 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | 5100 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== |
@@ -5279,6 +5328,11 @@ is-hexadecimal@^1.0.0: | @@ -5279,6 +5328,11 @@ is-hexadecimal@^1.0.0: | ||
5279 | resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" | 5328 | resolved "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" |
5280 | integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== | 5329 | integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== |
5281 | 5330 | ||
5331 | +is-interactive@^1.0.0: | ||
5332 | + version "1.0.0" | ||
5333 | + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" | ||
5334 | + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== | ||
5335 | + | ||
5282 | is-jpg@^2.0.0: | 5336 | is-jpg@^2.0.0: |
5283 | version "2.0.0" | 5337 | version "2.0.0" |
5284 | resolved "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" | 5338 | resolved "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" |
@@ -6596,6 +6650,20 @@ optipng-bin@^7.0.0: | @@ -6596,6 +6650,20 @@ optipng-bin@^7.0.0: | ||
6596 | bin-wrapper "^4.0.0" | 6650 | bin-wrapper "^4.0.0" |
6597 | logalot "^2.0.0" | 6651 | logalot "^2.0.0" |
6598 | 6652 | ||
6653 | +ora@^5.2.0: | ||
6654 | + version "5.3.0" | ||
6655 | + resolved "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" | ||
6656 | + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== | ||
6657 | + dependencies: | ||
6658 | + bl "^4.0.3" | ||
6659 | + chalk "^4.1.0" | ||
6660 | + cli-cursor "^3.1.0" | ||
6661 | + cli-spinners "^2.5.0" | ||
6662 | + is-interactive "^1.0.0" | ||
6663 | + log-symbols "^4.0.0" | ||
6664 | + strip-ansi "^6.0.0" | ||
6665 | + wcwidth "^1.0.1" | ||
6666 | + | ||
6599 | os-filter-obj@^2.0.0: | 6667 | os-filter-obj@^2.0.0: |
6600 | version "2.0.0" | 6668 | version "2.0.0" |
6601 | resolved "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" | 6669 | resolved "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" |
@@ -7370,7 +7438,7 @@ read-pkg@^5.2.0: | @@ -7370,7 +7438,7 @@ read-pkg@^5.2.0: | ||
7370 | parse-json "^5.0.0" | 7438 | parse-json "^5.0.0" |
7371 | type-fest "^0.6.0" | 7439 | type-fest "^0.6.0" |
7372 | 7440 | ||
7373 | -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1: | 7441 | +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0: |
7374 | version "3.6.0" | 7442 | version "3.6.0" |
7375 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" | 7443 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" |
7376 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== | 7444 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== |
@@ -8762,7 +8830,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: | @@ -8762,7 +8830,7 @@ tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: | ||
8762 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" | 8830 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" |
8763 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== | 8831 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== |
8764 | 8832 | ||
8765 | -tslib@^2.0.3: | 8833 | +tslib@^2.0.3, tslib@^2.1.0: |
8766 | version "2.1.0" | 8834 | version "2.1.0" |
8767 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" | 8835 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" |
8768 | integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== | 8836 | integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== |
@@ -8820,7 +8888,7 @@ typedarray-to-buffer@^3.1.5: | @@ -8820,7 +8888,7 @@ typedarray-to-buffer@^3.1.5: | ||
8820 | dependencies: | 8888 | dependencies: |
8821 | is-typedarray "^1.0.0" | 8889 | is-typedarray "^1.0.0" |
8822 | 8890 | ||
8823 | -typescript@4.2.3: | 8891 | +typescript@4.2.3, typescript@^4.1.3: |
8824 | version "4.2.3" | 8892 | version "4.2.3" |
8825 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" | 8893 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" |
8826 | integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== | 8894 | integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== |
@@ -9282,6 +9350,13 @@ warning@^4.0.0: | @@ -9282,6 +9350,13 @@ warning@^4.0.0: | ||
9282 | dependencies: | 9350 | dependencies: |
9283 | loose-envify "^1.0.0" | 9351 | loose-envify "^1.0.0" |
9284 | 9352 | ||
9353 | +wcwidth@^1.0.1: | ||
9354 | + version "1.0.1" | ||
9355 | + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" | ||
9356 | + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= | ||
9357 | + dependencies: | ||
9358 | + defaults "^1.0.3" | ||
9359 | + | ||
9285 | webidl-conversions@^4.0.2: | 9360 | webidl-conversions@^4.0.2: |
9286 | version "4.0.2" | 9361 | version "4.0.2" |
9287 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" | 9362 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" |