提交 d9ab19bf 作者: 方治民

合并分支 '3.0' 到 'main'

3.0

查看合并请求 !15
......@@ -10,7 +10,12 @@ module.exports = {
jsx: true,
},
},
extends: ['plugin:vue/vue3-recommended', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'],
extends: [
'@antfu',
'plugin:vue/vue3-recommended',
'plugin:@typescript-eslint/recommended',
'plugin:prettier/recommended',
],
rules: {
'vue/script-setup-uses-vars': 'error',
'@typescript-eslint/ban-ts-ignore': 'off',
......@@ -62,5 +67,6 @@ module.exports = {
},
],
'vue/multi-word-component-names': 'off',
'no-console': 'off',
},
}
import fs from 'fs'
import path from 'path'
import fs from 'node:fs'
import path from 'node:path'
import dotenv from 'dotenv'
export function isDevFn(mode: string): boolean {
......@@ -40,7 +40,7 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
*/
function getConfFiles() {
const script = process.env.npm_lifecycle_script
const reg = new RegExp('--mode ([a-z_\\d]+)')
const reg = /--mode ([a-z_\d]+)/
const result = reg.exec(script as string) as any
if (result) {
const mode = result[1] as string
......
......@@ -6,6 +6,7 @@ import imagemin from 'unplugin-imagemin/vite'
export function configImageminPlugin(): Plugin {
return imagemin({
// https://github.com/ErKeLost/unplugin-imagemin#warning
mode: 'sharp',
// mode: 'sharp',
cache: true,
})
}
import type { Plugin } from 'vite'
import colors from 'picocolors'
import pkg from '../../package.json'
import { configUniPlugin } from './uni'
import { configImportPlugin } from './unplugin'
import { configUnocssPlugin } from './unocss'
import { configImageminPlugin } from './imagemin'
import pkg from '../../package.json'
export function createVitePlugins(viteEnv: ViteEnv) {
const { VITE_GLOB_APP_NAME, VITE_GLOB_APP_DESCRIPTION, VITE_GLOB_API_URL, VITE_GLOB_API_URL_PREFIX } = viteEnv
......@@ -29,7 +27,7 @@ export function createVitePlugins(viteEnv: ViteEnv) {
vitePlugins.push(configImportPlugin())
// unplugin-imagemin
vitePlugins.push(configImageminPlugin())
// vitePlugins.push(configImageminPlugin())
// uni-app
vitePlugins.push(configUniPlugin())
......
......@@ -2,7 +2,17 @@ import type { Plugin } from 'vite'
// https://github.com/antfu/unocss
import Unocss from 'unocss/vite'
import { presetIcons } from 'unocss'
export function configUnocssPlugin(): Plugin[] {
return Unocss()
return Unocss({
presets: [
presetIcons({
prefix: 'icon-',
extraProperties: {
display: 'inline-flex',
},
}),
],
})
}
import path from 'node:path'
import type { Plugin } from 'vite'
import path from 'path'
// https://github.com/antfu/unplugin-auto-import
import AutoImport from 'unplugin-auto-import/vite'
......@@ -39,7 +39,7 @@ export function configComponentsImportPlugin(): Plugin {
(name: string) => {
// FIX: 修复 easycom 在 APP 下不生效问题(原因不明
if (name.startsWith('fui-')) {
return path.resolve(__dirname, `src/components/firstui/${name}/${name}.vue`).replaceAll('\\', '/')
return path.resolve(__dirname, `src/components/FirstUI/${name}/${name}.vue`).replaceAll('\\', '/')
}
// if (name.startsWith('uni-')) {
// return `@dcloudio/uni-ui/lib/${name}/${name}.vue`
......
{
"name": "basic-app",
"version": "3.0.2.3",
"version": "3.0.2.5",
"description": "APP 基础工程",
"keywords": [
"app",
......@@ -82,7 +82,6 @@
"@dcloudio/uni-ui": "^1.4.26",
"@vue/runtime-core": "^3.2.47",
"@vueuse/core": "^9.13.0",
"animate.css": "^4.1.1",
"axios": "^0.26.1",
"dayjs": "^1.11.7",
"lodash-es": "^4.17.21",
......@@ -98,6 +97,7 @@
"vue-types": "^5.0.2"
},
"devDependencies": {
"@antfu/eslint-config": "^0.37.0",
"@commitlint/cli": "^17.4.4",
"@commitlint/config-conventional": "^17.4.4",
"@dcloudio/types": "^3.3.2",
......@@ -106,6 +106,7 @@
"@dcloudio/uni-helper-json": "^1.0.13",
"@dcloudio/uni-stacktracey": "3.0.0-alpha-3070720230316001",
"@dcloudio/vite-plugin-uni": "3.0.0-alpha-3070720230316001",
"@iconify/json": "^2.2.36",
"@types/lodash-es": "^4.17.7",
"@types/mockjs": "^1.0.7",
"@types/node": "^18.15.3",
......
lockfileVersion: 5.4
specifiers:
'@antfu/eslint-config': ^0.37.0
'@commitlint/cli': ^17.4.4
'@commitlint/config-conventional': ^17.4.4
'@dcloudio/types': ^3.3.2
......@@ -23,6 +24,7 @@ specifiers:
'@dcloudio/uni-stacktracey': 3.0.0-alpha-3070720230316001
'@dcloudio/uni-ui': ^1.4.26
'@dcloudio/vite-plugin-uni': 3.0.0-alpha-3070720230316001
'@iconify/json': ^2.2.36
'@types/lodash-es': ^4.17.7
'@types/mockjs': ^1.0.7
'@types/node': ^18.15.3
......@@ -34,7 +36,6 @@ specifiers:
'@typescript-eslint/parser': ^5.55.0
'@vue/runtime-core': ^3.2.47
'@vueuse/core': ^9.13.0
animate.css: ^4.1.1
axios: ^0.26.1
commitizen: ^4.3.0
conventional-changelog-cli: ^2.2.2
......@@ -108,7 +109,6 @@ dependencies:
'@dcloudio/uni-ui': 1.4.26
'@vue/runtime-core': 3.2.47
'@vueuse/core': 9.13.0_vue@3.2.47
animate.css: 4.1.1
axios: 0.26.1
dayjs: 1.11.7
lodash-es: 4.17.21
......@@ -124,6 +124,7 @@ dependencies:
vue-types: 5.0.2_vue@3.2.47
devDependencies:
'@antfu/eslint-config': 0.37.0_jvoud2tdszzxmewbo5hoff4hym
'@commitlint/cli': 17.4.4
'@commitlint/config-conventional': 17.4.4
'@dcloudio/types': 3.3.2
......@@ -132,6 +133,7 @@ devDependencies:
'@dcloudio/uni-helper-json': 1.0.13
'@dcloudio/uni-stacktracey': 3.0.0-alpha-3070720230316001
'@dcloudio/vite-plugin-uni': 3.0.0-alpha-3070720230316001_yyftienbqt4hhb6vsmjp67iaku
'@iconify/json': 2.2.36
'@types/lodash-es': 4.17.7
'@types/mockjs': 1.0.7
'@types/node': 18.15.3
......@@ -196,6 +198,102 @@ packages:
'@jridgewell/gen-mapping': 0.1.1
'@jridgewell/trace-mapping': 0.3.17
/@antfu/eslint-config-basic/0.37.0_haq6ulc3vui3hbw2ow7npojefi:
resolution: {integrity: sha512-iBj6qjAOQr+WMhK38lfR2/xdIY81qUk4i6tHhwmcxXi4GEf2HF6I4Cgeu9SyIlTxOw8AP1CVqdUNzUbmYSaMZg==}
peerDependencies:
eslint: '>=7.4.0'
dependencies:
eslint: 8.36.0
eslint-plugin-antfu: 0.37.0_vgl77cfdswitgr47lm5swmv43m
eslint-plugin-eslint-comments: 3.2.0_eslint@8.36.0
eslint-plugin-html: 7.1.0
eslint-plugin-import: 2.27.5_a7er6olmtneep4uytpot6gt7wu
eslint-plugin-jsonc: 2.7.0_eslint@8.36.0
eslint-plugin-markdown: 3.0.0_eslint@8.36.0
eslint-plugin-n: 15.6.1_eslint@8.36.0
eslint-plugin-no-only-tests: 3.1.0
eslint-plugin-promise: 6.1.1_eslint@8.36.0
eslint-plugin-unicorn: 46.0.0_eslint@8.36.0
eslint-plugin-unused-imports: 2.0.0_dchlkxfdm6cbfc25bfo3oeha6e
eslint-plugin-yml: 1.5.0_eslint@8.36.0
jsonc-eslint-parser: 2.2.0
yaml-eslint-parser: 1.2.0
transitivePeerDependencies:
- '@typescript-eslint/eslint-plugin'
- '@typescript-eslint/parser'
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
- typescript
dev: true
/@antfu/eslint-config-ts/0.37.0_jvoud2tdszzxmewbo5hoff4hym:
resolution: {integrity: sha512-+ZS0UE7qa6EzFe0JgCSqdi/IRGQlUj/kOjvwsHCXVK1A02ZW2p0fEKzCpNAz1NJK9nkqhyvNHX+gNOTQsPMbeQ==}
peerDependencies:
eslint: '>=7.4.0'
typescript: '>=3.9'
dependencies:
'@antfu/eslint-config-basic': 0.37.0_haq6ulc3vui3hbw2ow7npojefi
'@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri
'@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m
eslint: 8.36.0
eslint-plugin-jest: 27.2.1_k7tyaihzl72p7dvhb2c4wc65ri
typescript: 4.9.5
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- jest
- supports-color
dev: true
/@antfu/eslint-config-vue/0.37.0_tbtwkd2di76kh74ucfkacb6rbi:
resolution: {integrity: sha512-d7n4+7f6YMizE1HDEOtIBJGruFuIeqrNF+ZjHM8o6+isMrJkvdjVx6nHtHVtoWNYW6jiRJ5AW+nkfo2aoNGUyA==}
peerDependencies:
eslint: '>=7.4.0'
dependencies:
'@antfu/eslint-config-basic': 0.37.0_haq6ulc3vui3hbw2ow7npojefi
'@antfu/eslint-config-ts': 0.37.0_jvoud2tdszzxmewbo5hoff4hym
eslint: 8.36.0
eslint-plugin-vue: 9.9.0_eslint@8.36.0
local-pkg: 0.4.3
transitivePeerDependencies:
- '@typescript-eslint/eslint-plugin'
- '@typescript-eslint/parser'
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- jest
- supports-color
- typescript
dev: true
/@antfu/eslint-config/0.37.0_jvoud2tdszzxmewbo5hoff4hym:
resolution: {integrity: sha512-Kq12dCBSYNV/wuoX35ijs8aNjdF9FiSp3GbiGh2Y8sPtM6NbJc5LA3ixWz0PcA/byHf1VPVisDZcPqISjic/zA==}
peerDependencies:
eslint: '>=7.4.0'
dependencies:
'@antfu/eslint-config-vue': 0.37.0_tbtwkd2di76kh74ucfkacb6rbi
'@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri
'@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m
eslint: 8.36.0
eslint-plugin-eslint-comments: 3.2.0_eslint@8.36.0
eslint-plugin-html: 7.1.0
eslint-plugin-import: 2.27.5_a7er6olmtneep4uytpot6gt7wu
eslint-plugin-jsonc: 2.7.0_eslint@8.36.0
eslint-plugin-n: 15.6.1_eslint@8.36.0
eslint-plugin-promise: 6.1.1_eslint@8.36.0
eslint-plugin-unicorn: 46.0.0_eslint@8.36.0
eslint-plugin-vue: 9.9.0_eslint@8.36.0
eslint-plugin-yml: 1.5.0_eslint@8.36.0
jsonc-eslint-parser: 2.2.0
yaml-eslint-parser: 1.2.0
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- jest
- supports-color
- typescript
dev: true
/@antfu/install-pkg/0.1.1:
resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
dependencies:
......@@ -1480,8 +1578,8 @@ packages:
'@commitlint/types': 17.4.4
'@types/node': 18.15.3
chalk: 4.1.2
cosmiconfig: 8.1.0
cosmiconfig-typescript-loader: 4.3.0_7l6wx57tjccnqi3q2lzmydziha
cosmiconfig: 8.1.3
cosmiconfig-typescript-loader: 4.3.0_xpbhsfpn5tsw264wy6mojm5vre
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
lodash.uniq: 4.5.0
......@@ -2503,6 +2601,13 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@iconify/json/2.2.36:
resolution: {integrity: sha512-M3NzzLjmE5udIO24EgT9MV1LfU5FQDw9nfAfgrV3NySiLMtZFoOvFEdURJihH2SJWCoFhIpRRkgSZKN8qWIhuQ==}
dependencies:
'@iconify/types': 2.0.0
pathe: 1.1.0
dev: true
/@iconify/types/2.0.0:
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
dev: true
......@@ -3422,6 +3527,10 @@ packages:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true
/@types/json5/0.0.29:
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
dev: true
/@types/lodash-es/4.17.7:
resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==}
dependencies:
......@@ -3432,6 +3541,12 @@ packages:
resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==}
dev: true
/@types/mdast/3.0.10:
resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==}
dependencies:
'@types/unist': 2.0.6
dev: true
/@types/minimist/1.2.2:
resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
dev: true
......@@ -3477,6 +3592,10 @@ packages:
'@types/node': 18.15.3
dev: true
/@types/unist/2.0.6:
resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
dev: true
/@types/urijs/1.19.19:
resolution: {integrity: sha512-FDJNkyhmKLw7uEvTxx5tSXfPeQpO0iy73Ry+PmYZJvQy0QIWX8a7kJ4kLWRf+EbTPJEPDSgPXHaM7pzr5lmvCg==}
dev: true
......@@ -4066,10 +4185,6 @@ packages:
uri-js: 4.4.1
dev: true
/animate.css/4.1.1:
resolution: {integrity: sha512-+mRmCTv6SbCmtYJCN4faJMNFVNN5EuCTTprDTAo7YzIGji2KADmakjVA3+8mVDkZ2Bf09vayB35lSQIex2+QaQ==}
dev: false
/ansi-escapes/3.2.0:
resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==}
engines: {node: '>=4'}
......@@ -4165,11 +4280,42 @@ packages:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
dev: true
/array-includes/3.1.6:
resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.2.0
es-abstract: 1.21.2
get-intrinsic: 1.2.0
is-string: 1.0.7
dev: true
/array-union/2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
dev: true
/array.prototype.flat/1.3.1:
resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.2.0
es-abstract: 1.21.2
es-shim-unscopables: 1.0.0
dev: true
/array.prototype.flatmap/1.3.1:
resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.2.0
es-abstract: 1.21.2
es-shim-unscopables: 1.0.0
dev: true
/arrify/1.0.1:
resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
engines: {node: '>=0.10.0'}
......@@ -4197,7 +4343,7 @@ packages:
postcss: ^8.1.0
dependencies:
browserslist: 4.21.5
caniuse-lite: 1.0.30001467
caniuse-lite: 1.0.30001468
fraction.js: 4.2.0
normalize-range: 0.1.2
picocolors: 1.0.0
......@@ -4411,8 +4557,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001467
electron-to-chromium: 1.4.332
caniuse-lite: 1.0.30001468
electron-to-chromium: 1.4.333
node-releases: 2.0.10
update-browserslist-db: 1.0.10_browserslist@4.21.5
......@@ -4445,6 +4591,17 @@ packages:
dev: false
optional: true
/builtin-modules/3.3.0:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
dev: true
/builtins/5.0.1:
resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==}
dependencies:
semver: 7.3.8
dev: true
/bytes/3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
......@@ -4496,8 +4653,8 @@ packages:
engines: {node: '>=10'}
dev: true
/caniuse-lite/1.0.30001467:
resolution: {integrity: sha512-cEdN/5e+RPikvl9AHm4uuLXxeCNq8rFsQ+lPHTfe/OtypP3WwnVVbjn+6uBV7PaFL6xUFzTh+sSCOz1rKhcO+Q==}
/caniuse-lite/1.0.30001468:
resolution: {integrity: sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==}
/chalk/2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
......@@ -4525,6 +4682,18 @@ packages:
engines: {node: '>=10'}
dev: true
/character-entities-legacy/1.1.4:
resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
dev: true
/character-entities/1.2.4:
resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
dev: true
/character-reference-invalid/1.1.4:
resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
dev: true
/chardet/0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
dev: true
......@@ -4556,6 +4725,13 @@ packages:
resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==}
dev: true
/clean-regexp/1.0.0:
resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
engines: {node: '>=4'}
dependencies:
escape-string-regexp: 1.0.5
dev: true
/clean-stack/2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
......@@ -4732,7 +4908,7 @@ packages:
resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==}
/concat-map/0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
/consola/2.15.3:
resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==}
......@@ -4925,7 +5101,7 @@ packages:
resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
/cookie-signature/1.0.6:
resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=}
resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
dev: true
/cookie/0.5.0:
......@@ -4952,7 +5128,7 @@ packages:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true
/cosmiconfig-typescript-loader/4.3.0_7l6wx57tjccnqi3q2lzmydziha:
/cosmiconfig-typescript-loader/4.3.0_xpbhsfpn5tsw264wy6mojm5vre:
resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==}
engines: {node: '>=12', npm: '>=6'}
peerDependencies:
......@@ -4962,7 +5138,7 @@ packages:
typescript: '>=3'
dependencies:
'@types/node': 18.15.3
cosmiconfig: 8.1.0
cosmiconfig: 8.1.3
ts-node: 10.9.1_cbfmry4sbbh4vatmdrsmatfg5a
typescript: 4.9.5
dev: true
......@@ -4978,8 +5154,8 @@ packages:
yaml: 1.10.2
dev: true
/cosmiconfig/8.1.0:
resolution: {integrity: sha512-0tLZ9URlPGU7JsKq0DQOQ3FoRsYX8xDZ7xMiATQfaiGMz7EHowNkbU9u1coAOmnh9p/1ySpm0RB3JNWRXM5GCg==}
/cosmiconfig/8.1.3:
resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==}
engines: {node: '>=14'}
dependencies:
import-fresh: 3.3.0
......@@ -5196,7 +5372,6 @@ packages:
optional: true
dependencies:
ms: 2.1.3
optional: true
/debug/4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
......@@ -5342,6 +5517,13 @@ packages:
path-type: 4.0.0
dev: true
/doctrine/2.1.0:
resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
engines: {node: '>=0.10.0'}
dependencies:
esutils: 2.0.3
dev: true
/doctrine/3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
......@@ -5412,11 +5594,11 @@ packages:
dev: true
/ee-first/1.1.1:
resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=}
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: true
/electron-to-chromium/1.4.332:
resolution: {integrity: sha512-c1Vbv5tuUlBFp0mb3mCIjw+REEsgthRgNE8BlbEDKmvzb8rxjcVki6OkQP83vLN34s0XCxpSkq7AZNep1a6xhw==}
/electron-to-chromium/1.4.333:
resolution: {integrity: sha512-YyE8+GKyGtPEP1/kpvqsdhD6rA/TP1DUFDN4uiU/YI52NzDxmwHkEb3qjId8hLBa5siJvG0sfC3O66501jMruQ==}
/emittery/0.8.1:
resolution: {integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==}
......@@ -5512,6 +5694,12 @@ packages:
has-tostringtag: 1.0.0
dev: true
/es-shim-unscopables/1.0.0:
resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==}
dependencies:
has: 1.0.3
dev: true
/es-to-primitive/1.2.1:
resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
engines: {node: '>= 0.4'}
......@@ -5656,6 +5844,184 @@ packages:
eslint: 8.36.0
dev: true
/eslint-import-resolver-node/0.3.7:
resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
dependencies:
debug: 3.2.7
is-core-module: 2.11.0
resolve: 1.22.1
transitivePeerDependencies:
- supports-color
dev: true
/eslint-module-utils/2.7.4_tzfhnsp6rhftjfsbnqrkrbah74:
resolution: {integrity: sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
eslint: '*'
eslint-import-resolver-node: '*'
eslint-import-resolver-typescript: '*'
eslint-import-resolver-webpack: '*'
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
eslint:
optional: true
eslint-import-resolver-node:
optional: true
eslint-import-resolver-typescript:
optional: true
eslint-import-resolver-webpack:
optional: true
dependencies:
'@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m
debug: 3.2.7
eslint: 8.36.0
eslint-import-resolver-node: 0.3.7
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-antfu/0.37.0_vgl77cfdswitgr47lm5swmv43m:
resolution: {integrity: sha512-Tekr9S4fkrmH88RS5XHvs3gQwQIn/2As8gYePzrPHTQEQF00pIx0sa1eQrhmvN50ubUG4WkZnpx/uR3073jLeg==}
dependencies:
'@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m
transitivePeerDependencies:
- eslint
- supports-color
- typescript
dev: true
/eslint-plugin-es/4.1.0_eslint@8.36.0:
resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==}
engines: {node: '>=8.10.0'}
peerDependencies:
eslint: '>=4.19.1'
dependencies:
eslint: 8.36.0
eslint-utils: 2.1.0
regexpp: 3.2.0
dev: true
/eslint-plugin-eslint-comments/3.2.0_eslint@8.36.0:
resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
engines: {node: '>=6.5.0'}
peerDependencies:
eslint: '>=4.19.1'
dependencies:
escape-string-regexp: 1.0.5
eslint: 8.36.0
ignore: 5.2.4
dev: true
/eslint-plugin-html/7.1.0:
resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==}
dependencies:
htmlparser2: 8.0.1
dev: true
/eslint-plugin-import/2.27.5_a7er6olmtneep4uytpot6gt7wu:
resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==}
engines: {node: '>=4'}
peerDependencies:
'@typescript-eslint/parser': '*'
eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
peerDependenciesMeta:
'@typescript-eslint/parser':
optional: true
dependencies:
'@typescript-eslint/parser': 5.55.0_vgl77cfdswitgr47lm5swmv43m
array-includes: 3.1.6
array.prototype.flat: 1.3.1
array.prototype.flatmap: 1.3.1
debug: 3.2.7
doctrine: 2.1.0
eslint: 8.36.0
eslint-import-resolver-node: 0.3.7
eslint-module-utils: 2.7.4_tzfhnsp6rhftjfsbnqrkrbah74
has: 1.0.3
is-core-module: 2.11.0
is-glob: 4.0.3
minimatch: 3.1.2
object.values: 1.1.6
resolve: 1.22.1
semver: 6.3.0
tsconfig-paths: 3.14.2
transitivePeerDependencies:
- eslint-import-resolver-typescript
- eslint-import-resolver-webpack
- supports-color
dev: true
/eslint-plugin-jest/27.2.1_k7tyaihzl72p7dvhb2c4wc65ri:
resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/eslint-plugin': ^5.0.0
eslint: ^7.0.0 || ^8.0.0
jest: '*'
peerDependenciesMeta:
'@typescript-eslint/eslint-plugin':
optional: true
jest:
optional: true
dependencies:
'@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri
'@typescript-eslint/utils': 5.55.0_vgl77cfdswitgr47lm5swmv43m
eslint: 8.36.0
jest: 27.0.4
transitivePeerDependencies:
- supports-color
- typescript
dev: true
/eslint-plugin-jsonc/2.7.0_eslint@8.36.0:
resolution: {integrity: sha512-DZgC71h/hZ9t5k/OGAKOMdJCleg2neZLL7No+YYi2ZMroCN4X5huZdrLf1USbrc6UTHwYujd1EDwXHg1qJ6CYw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '>=6.0.0'
dependencies:
'@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0
eslint: 8.36.0
jsonc-eslint-parser: 2.2.0
natural-compare: 1.4.0
dev: true
/eslint-plugin-markdown/3.0.0_eslint@8.36.0:
resolution: {integrity: sha512-hRs5RUJGbeHDLfS7ELanT0e29Ocyssf/7kBM+p7KluY5AwngGkDf8Oyu4658/NZSGTTq05FZeWbkxXtbVyHPwg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
eslint: 8.36.0
mdast-util-from-markdown: 0.8.5
transitivePeerDependencies:
- supports-color
dev: true
/eslint-plugin-n/15.6.1_eslint@8.36.0:
resolution: {integrity: sha512-R9xw9OtCRxxaxaszTQmQAlPgM+RdGjaL1akWuY/Fv9fRAi8Wj4CUKc6iYVG8QNRjRuo8/BqVYIpfqberJUEacA==}
engines: {node: '>=12.22.0'}
peerDependencies:
eslint: '>=7.0.0'
dependencies:
builtins: 5.0.1
eslint: 8.36.0
eslint-plugin-es: 4.1.0_eslint@8.36.0
eslint-utils: 3.0.0_eslint@8.36.0
ignore: 5.2.4
is-core-module: 2.11.0
minimatch: 3.1.2
resolve: 1.22.1
semver: 7.3.8
dev: true
/eslint-plugin-no-only-tests/3.1.0:
resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==}
engines: {node: '>=5.0.0'}
dev: true
/eslint-plugin-prettier/4.2.1_eqzx3hpkgx5nnvxls3azrcc7dm:
resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
engines: {node: '>=12.0.0'}
......@@ -5673,6 +6039,55 @@ packages:
prettier-linter-helpers: 1.0.0
dev: true
/eslint-plugin-promise/6.1.1_eslint@8.36.0:
resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0
dependencies:
eslint: 8.36.0
dev: true
/eslint-plugin-unicorn/46.0.0_eslint@8.36.0:
resolution: {integrity: sha512-j07WkC+PFZwk8J33LYp6JMoHa1lXc1u6R45pbSAipjpfpb7KIGr17VE2D685zCxR5VL4cjrl65kTJflziQWMDA==}
engines: {node: '>=14.18'}
peerDependencies:
eslint: '>=8.28.0'
dependencies:
'@babel/helper-validator-identifier': 7.19.1
'@eslint-community/eslint-utils': 4.3.0_eslint@8.36.0
ci-info: 3.8.0
clean-regexp: 1.0.0
eslint: 8.36.0
esquery: 1.5.0
indent-string: 4.0.0
is-builtin-module: 3.2.1
jsesc: 3.0.2
lodash: 4.17.21
pluralize: 8.0.0
read-pkg-up: 7.0.1
regexp-tree: 0.1.24
regjsparser: 0.9.1
safe-regex: 2.1.1
semver: 7.3.8
strip-indent: 3.0.0
dev: true
/eslint-plugin-unused-imports/2.0.0_dchlkxfdm6cbfc25bfo3oeha6e:
resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
'@typescript-eslint/eslint-plugin': ^5.0.0
eslint: ^8.0.0
peerDependenciesMeta:
'@typescript-eslint/eslint-plugin':
optional: true
dependencies:
'@typescript-eslint/eslint-plugin': 5.55.0_342y7v4tc7ytrrysmit6jo4wri
eslint: 8.36.0
eslint-rule-composer: 0.3.0
dev: true
/eslint-plugin-vue/9.9.0_eslint@8.36.0:
resolution: {integrity: sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==}
engines: {node: ^14.17.0 || >=16.0.0}
......@@ -5691,6 +6106,26 @@ packages:
- supports-color
dev: true
/eslint-plugin-yml/1.5.0_eslint@8.36.0:
resolution: {integrity: sha512-iygN054g+ZrnYmtOXMnT+sx9iDNXt89/m0+506cQHeG0+5jJN8hY5iOPQLd3yfd50AfK/mSasajBWruf1SoHpQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: '>=6.0.0'
dependencies:
debug: 4.3.4
eslint: 8.36.0
lodash: 4.17.21
natural-compare: 1.4.0
yaml-eslint-parser: 1.2.0
transitivePeerDependencies:
- supports-color
dev: true
/eslint-rule-composer/0.3.0:
resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==}
engines: {node: '>=4.0.0'}
dev: true
/eslint-scope/5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
......@@ -5707,6 +6142,13 @@ packages:
estraverse: 5.3.0
dev: true
/eslint-utils/2.1.0:
resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
engines: {node: '>=6'}
dependencies:
eslint-visitor-keys: 1.3.0
dev: true
/eslint-utils/3.0.0_eslint@8.36.0:
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
......@@ -5717,6 +6159,11 @@ packages:
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys/1.3.0:
resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
engines: {node: '>=4'}
dev: true
/eslint-visitor-keys/2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
......@@ -5849,7 +6296,7 @@ packages:
dependencies:
cross-spawn: 7.0.3
get-stream: 6.0.1
human-signals: 4.3.0
human-signals: 4.3.1
is-stream: 3.0.0
merge-stream: 2.0.0
npm-run-path: 5.1.0
......@@ -6585,8 +7032,8 @@ packages:
engines: {node: '>=10.17.0'}
dev: true
/human-signals/4.3.0:
resolution: {integrity: sha512-zyzVyMjpGBX2+6cDVZeFPCdtOtdsxOeseRhB9tkQ6xXmGUNrcnBzdEKPy3VPNYz+4gy1oukVOXcrJCunSyc6QQ==}
/human-signals/4.3.1:
resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
engines: {node: '>=14.18.0'}
dev: true
......@@ -6761,6 +7208,17 @@ packages:
engines: {node: '>= 0.10'}
dev: true
/is-alphabetical/1.0.4:
resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
dev: true
/is-alphanumerical/1.0.4:
resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
dependencies:
is-alphabetical: 1.0.4
is-decimal: 1.0.4
dev: true
/is-array-buffer/3.0.2:
resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
dependencies:
......@@ -6797,6 +7255,13 @@ packages:
has-tostringtag: 1.0.0
dev: true
/is-builtin-module/3.2.1:
resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==}
engines: {node: '>=6'}
dependencies:
builtin-modules: 3.3.0
dev: true
/is-callable/1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
......@@ -6814,6 +7279,10 @@ packages:
has-tostringtag: 1.0.0
dev: true
/is-decimal/1.0.4:
resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
dev: true
/is-extglob/2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
......@@ -6848,6 +7317,10 @@ packages:
dependencies:
is-extglob: 2.1.1
/is-hexadecimal/1.0.4:
resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
dev: true
/is-interactive/1.0.0:
resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
engines: {node: '>=8'}
......@@ -7597,6 +8070,12 @@ packages:
engines: {node: '>=4'}
hasBin: true
/jsesc/3.0.2:
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
engines: {node: '>=6'}
hasBin: true
dev: true
/json-parse-better-errors/1.0.2:
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
dev: true
......@@ -7621,11 +8100,28 @@ packages:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
dev: true
/json5/1.0.2:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
hasBin: true
dependencies:
minimist: 1.2.8
dev: true
/json5/2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
/jsonc-eslint-parser/2.2.0:
resolution: {integrity: sha512-x5QjzBOORd+T2EjErIxJnkOEbLVEdD1ILEeBbIJt8Eq/zUn7P7M8qdnWiNVBK5f8oxnJpc6SBHOeeIEl/swPjg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
acorn: 8.8.2
eslint-visitor-keys: 3.3.0
espree: 9.5.0
semver: 7.3.8
dev: true
/jsonc-parser/3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
......@@ -7984,6 +8480,22 @@ packages:
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
dev: true
/mdast-util-from-markdown/0.8.5:
resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==}
dependencies:
'@types/mdast': 3.0.10
mdast-util-to-string: 2.0.0
micromark: 2.11.4
parse-entities: 2.0.0
unist-util-stringify-position: 2.0.3
transitivePeerDependencies:
- supports-color
dev: true
/mdast-util-to-string/2.0.0:
resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
dev: true
/mdn-data/2.0.28:
resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
dev: true
......@@ -7993,7 +8505,7 @@ packages:
dev: true
/media-typer/0.3.0:
resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=}
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
dev: true
......@@ -8038,7 +8550,7 @@ packages:
dev: true
/merge-descriptors/1.0.1:
resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=}
resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
dev: true
/merge-stream/2.0.0:
......@@ -8057,6 +8569,15 @@ packages:
engines: {node: '>= 0.6'}
dev: true
/micromark/2.11.4:
resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
dependencies:
debug: 4.3.4
parse-entities: 2.0.0
transitivePeerDependencies:
- supports-color
dev: true
/micromatch/4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
......@@ -8199,7 +8720,7 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
/mute-stream/0.0.7:
resolution: {integrity: sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=}
resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==}
dev: true
/mute-stream/0.0.8:
......@@ -8386,6 +8907,15 @@ packages:
object-keys: 1.1.1
dev: true
/object.values/1.1.6:
resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
define-properties: 1.2.0
es-abstract: 1.21.2
dev: true
/ofetch/1.0.1:
resolution: {integrity: sha512-icBz2JYfEpt+wZz1FRoGcrMigjNKjzvufE26m9+yUiacRQRHwnNlGRPiDnW4op7WX/MR6aniwS8xw8jyVelF2g==}
dependencies:
......@@ -8597,6 +9127,17 @@ packages:
unquote: 1.1.1
dev: false
/parse-entities/2.0.0:
resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
dependencies:
character-entities: 1.2.4
character-entities-legacy: 1.1.4
character-reference-invalid: 1.1.4
is-alphanumerical: 1.0.4
is-decimal: 1.0.4
is-hexadecimal: 1.0.4
dev: true
/parse-headers/2.0.5:
resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==}
dev: false
......@@ -8783,6 +9324,11 @@ packages:
pathe: 1.1.0
dev: true
/pluralize/8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
dev: true
/pngjs/3.4.0:
resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==}
engines: {node: '>=4.0.0'}
......@@ -9203,6 +9749,11 @@ packages:
'@babel/runtime': 7.21.0
dev: true
/regexp-tree/0.1.24:
resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==}
hasBin: true
dev: true
/regexp.prototype.flags/1.4.3:
resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
engines: {node: '>= 0.4'}
......@@ -9212,6 +9763,11 @@ packages:
functions-have-names: 1.2.3
dev: true
/regexpp/3.2.0:
resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
engines: {node: '>=8'}
dev: true
/regexpu-core/5.3.2:
resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
engines: {node: '>=4'}
......@@ -9386,6 +9942,12 @@ packages:
is-regex: 1.1.4
dev: true
/safe-regex/2.1.1:
resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==}
dependencies:
regexp-tree: 0.1.24
dev: true
/safer-buffer/2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
......@@ -10228,6 +10790,15 @@ packages:
yn: 3.1.1
dev: true
/tsconfig-paths/3.14.2:
resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==}
dependencies:
'@types/json5': 0.0.29
json5: 1.0.2
minimist: 1.2.8
strip-bom: 3.0.0
dev: true
/tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true
......@@ -10401,6 +10972,12 @@ packages:
- rollup
dev: true
/unist-util-stringify-position/2.0.3:
resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
dependencies:
'@types/unist': 2.0.6
dev: true
/universalify/0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
......@@ -10628,7 +11205,7 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
/utils-merge/1.0.1:
resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=}
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
dev: true
......@@ -11047,7 +11624,7 @@ packages:
dev: false
/xregexp/3.1.0:
resolution: {integrity: sha1-FNhGHgvdOCJL/uUDmgiY/EL80zY=}
resolution: {integrity: sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==}
/xtend/4.0.2:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
......@@ -11071,6 +11648,15 @@ packages:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
/yaml-eslint-parser/1.2.0:
resolution: {integrity: sha512-OmuvQd5lyIJWfFALc39K5fGqp0aWNc+EtyhVgcQIPZaUKMnTb7An3RMp+QJizJ/x0F4kpgTNe6BL/ctdvoIwIg==}
engines: {node: ^14.17.0 || >=16.0.0}
dependencies:
eslint-visitor-keys: 3.3.0
lodash: 4.17.21
yaml: 2.2.1
dev: true
/yaml/1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
......
......@@ -24,11 +24,11 @@
})
onError((err) => {
Message.toast('App Error: ' + err)
Message.toast(`App Error: ${err}`)
})
onUnhandledRejection((err) => {
Message.toast('App UnhandledRejection: ' + err)
Message.toast(`App UnhandledRejection: ${err}`)
})
</script>
......
......@@ -30,10 +30,10 @@ export const Message = {
return new Promise((resolve, reject) => {
// #ifndef APP-PLUS
uni.showModal({
title: title,
title,
content: message,
showCancel: false,
confirmText: confirmText,
confirmText,
success: () => resolve(),
fail: (err) => reject(err),
})
......@@ -56,10 +56,10 @@ export const Message = {
return new Promise((resolve, reject) => {
// #ifndef APP-PLUS
uni.showModal({
title: title,
title,
content: message,
showCancel: showCancel,
confirmText: confirmText,
showCancel,
confirmText,
success: (res) => resolve(res.confirm),
fail: (err) => reject(err),
})
......
<template>
<view class="empty" :style="[{ background: bgColor }]">
<!-- 暂无数据/空数据 -->
<image src="../../static/images/empty.png" />
<!-- 提示内容 -->
<view class="empty-tips" :style="[{ color: tipsColor }]">{{ tips }}</view>
</view>
</template>
<script>
export default {
props: {
......@@ -24,6 +16,16 @@
},
}
</script>
<template>
<view class="empty" :style="[{ background: bgColor }]">
<!-- 暂无数据/空数据 -->
<image src="../../static/images/empty.png" />
<!-- 提示内容 -->
<view class="empty-tips" :style="[{ color: tipsColor }]">{{ tips }}</view>
</view>
</template>
<style>
.empty {
width: 100%;
......
<script setup lang="ts">
const props = defineProps({
icon: {
type: String,
required: true,
},
size: {
type: [Number, String],
default: 32,
},
color: {
type: String,
default: '#000',
},
})
const size = computed(() => `${props.size}rpx`)
const color = computed(() => props.color)
</script>
<template>
<view class="icon" />
</template>
<style lang="less" scoped>
.icon {
width: v-bind(size);
height: v-bind(size);
color: v-bind(color);
}
</style>
<script lang="ts" setup>
import type { PropType } from 'vue'
import { nanoid } from 'nanoid'
import { isImage, isVideo, getPoster } from './utils'
import { getPoster, isImage, isVideo } from './utils'
type URLs = { url: string }[]
const props = defineProps({
......
......@@ -17,5 +17,5 @@ export function getPoster(url: string) {
return url
}
return url + '.jpg'
return `${url}.jpg`
}
import { i18n } from '/@/locales'
type I18nGlobalTranslation = {
interface I18nGlobalTranslation {
(key: string): string
(key: string, locale: string): string
(key: string, locale: string, list: unknown[]): string
......@@ -37,9 +37,13 @@ export function useI18n(namespace?: string): {
const { t, ...methods } = i18n.global
const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => {
if (!key) return ''
if (!key.includes('.') && !namespace) return key
// @ts-ignore
if (!key) {
return ''
}
if (!key.includes('.') && !namespace) {
return key
}
// @ts-expect-error
return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters))
}
return {
......
......@@ -3,6 +3,7 @@ import type { I18n, I18nOptions } from 'vue-i18n'
import { createI18n } from 'vue-i18n'
import langs from './lang'
// eslint-disable-next-line import/no-mutable-exports
export let i18n: ReturnType<typeof createI18n>
function createI18nOptions(): I18nOptions {
......
......@@ -6,7 +6,7 @@ import { setupAppConfig } from '/@/config/app'
import { setupStore } from '/@/store'
import { setupI18n } from '/@/locales'
import fuiConfig from './components/firstui/fui-config'
import fuiConfig from './components/FirstUI/fui-config'
import 'uno.css'
......@@ -22,8 +22,8 @@ export function createApp() {
// 配置 i18n
setupI18n(app)
//全局组件配置
// @ts-ignore
// 全局组件配置
// @ts-expect-error
uni.$fui = fuiConfig
return {
......
......@@ -2,8 +2,8 @@
"name" : "Beta App",
"appid" : "__UNI__2E9441A",
"description" : "APP 基础工程",
"versionName" : "3.0.2.3",
"versionCode" : 109,
"versionName" : "3.0.2.5",
"versionCode" : 111,
"transformPx" : false,
"locale" : "zh-Hans",
/* 5+App特有相关 */// 配置文件详细说明
......
......@@ -55,7 +55,7 @@
"autoscan": true,
"custom": {
// https://doc.firstui.cn/docs/introduce.html
"^fui-(.*)": "@/components/firstui/fui-$1/fui-$1.vue",
"^fui-(.*)": "@/components/FirstUI/fui-$1/fui-$1.vue",
// https://ext.dcloud.net.cn/plugin?id=55#detail
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
}
......
<script>
export default {
data() {
return {
resUrl: this.fui.resUrl(),
}
},
methods: {
goIndex() {
this.fui.href('/pages/tabbar/index/index', true)
},
},
}
</script>
<template>
<view class="fui-wrap">
<view class="fui-content__box">
......@@ -23,21 +38,6 @@
</view>
</template>
<script>
export default {
data() {
return {
resUrl: this.fui.resUrl(),
}
},
methods: {
goIndex() {
this.fui.href('/pages/tabbar/index/index', true)
},
},
}
</script>
<style>
page {
background-color: #fff;
......
......@@ -7,7 +7,6 @@
onLoad(({ uri }) => {
link.value = getExtranetUrl(uri)
name.value = URI(uri).filename()
console.log(uri, link.value, name.value)
// 设置标题栏为文件名
uni.setNavigationBarTitle({
......
......@@ -36,19 +36,32 @@
const animate = ref()
const handUp = () => {
if (animate.value) {
return
}
Message.toast('👋🏻')
animate.value = 'animate-iteration-infinite'
setTimeout(() => (animate.value = ''), 1000)
animate.value = 'animate-swing'
setTimeout(() => (animate.value = null), 1500)
}
</script>
<template>
<view class="content flex-center flex-col">
<fui-avatar src="/static/logo.png" radius="14" size="large" background="transparent" @click="surprise" />
<view class="flex flex-col justify-center mb-3">
<fui-avatar
src="/static/logo.png"
radius="14"
size="large"
background="transparent"
class="!mb-5"
@click="surprise"
/>
<view class="flex-center flex-col mb-5">
<text class="title">{{ title }}</text>
<text class="title">{{ $t('app.hello') }}</text>
<uni-icons type="hand-up" size="30" :class="['mt-5', 'animate-heart-beat', animate]" @click="handUp" />
<Icon icon="emojione:grinning-face" size="48" class="mt-3" />
<uni-icons type="hand-up" size="30" class="mt-3" :class="[animate]" @click="handUp" />
</view>
<fui-footer isFixed>
<template #text>
......
## 0.0.3(2022-11-11)
- 修复 config 方法获取根节点为数组格式配置时错误的转化为了对象的Bug
## 0.0.2(2021-04-16)
- 修改插件package信息
## 0.0.1(2021-03-15)
- 初始化项目
{
"displayName": "uni-config-center",
"version": "0.0.3",
"description": "uniCloud 配置中心",
"keywords": [
"配置",
"配置中心"
],
"repository": "",
"directories": {
"example": "../../../scripts/dist"
},
"engines": {
"HBuilderX": "^3.1.0"
},
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "",
"type": "unicloud-template-function"
},
"id": "uni-config-center",
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "u",
"app-nvue": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "u"
}
}
}
}
}
# 为什么使用uni-config-center
实际开发中很多插件需要配置文件才可以正常运行,如果每个插件都单独进行配置的话就会产生下面这样的目录结构
```bash
cloudfunctions
└─────common 公共模块
├─plugin-a // 插件A对应的目录
│ ├─index.js
│ ├─config.json // plugin-a对应的配置文件
│ └─other-file.cert // plugin-a依赖的其他文件
└─plugin-b // plugin-b对应的目录
├─index.js
└─config.json // plugin-b对应的配置文件
```
假设插件作者要发布一个项目模板,里面使用了很多需要配置的插件,无论是作者发布还是用户使用都是一个大麻烦。
uni-config-center就是用了统一管理这些配置文件的,使用uni-config-center后的目录结构如下
```bash
cloudfunctions
└─────common 公共模块
├─plugin-a // 插件A对应的目录
│ └─index.js
├─plugin-b // plugin-b对应的目录
│ └─index.js
└─uni-config-center
├─index.js // config-center入口文件
├─plugin-a
│ ├─config.json // plugin-a对应的配置文件
│ └─other-file.cert // plugin-a依赖的其他文件
└─plugin-b
└─config.json // plugin-b对应的配置文件
```
使用uni-config-center后的优势
- 配置文件统一管理,分离插件主体和配置信息,更新插件更方便
- 支持对config.json设置schema,插件使用者在HBuilderX内编写config.json文件时会有更好的提示(后续HBuilderX会提供支持)
# 用法
在要使用uni-config-center的公共模块或云函数内引入uni-config-center依赖,请参考:[使用公共模块](https://uniapp.dcloud.net.cn/uniCloud/cf-common)
```js
const createConfig = require('uni-config-center')
const uniIdConfig = createConfig({
pluginId: 'uni-id', // 插件id
defaultConfig: { // 默认配置
tokenExpiresIn: 7200,
tokenExpiresThreshold: 600,
},
customMerge: function(defaultConfig, userConfig) { // 自定义默认配置和用户配置的合并规则,不设置的情况侠会对默认配置和用户配置进行深度合并
// defaudltConfig 默认配置
// userConfig 用户配置
return Object.assign(defaultConfig, userConfig)
}
})
// 以如下配置为例
// {
// "tokenExpiresIn": 7200,
// "passwordErrorLimit": 6,
// "bindTokenToDevice": false,
// "passwordErrorRetryTime": 3600,
// "app-plus": {
// "tokenExpiresIn": 2592000
// },
// "service": {
// "sms": {
// "codeExpiresIn": 300
// }
// }
// }
// 获取配置
uniIdConfig.config() // 获取全部配置,注意:uni-config-center内不存在对应插件目录时会返回空对象
uniIdConfig.config('tokenExpiresIn') // 指定键值获取配置,返回:7200
uniIdConfig.config('service.sms.codeExpiresIn') // 指定键值获取配置,返回:300
uniIdConfig.config('tokenExpiresThreshold', 600) // 指定键值获取配置,如果不存在则取传入的默认值,返回:600
// 获取文件绝对路径
uniIdConfig.resolve('custom-token.js') // 获取uni-config-center/uni-id/custom-token.js文件的路径
// 引用文件(require)
uniIDConfig.requireFile('custom-token.js') // 使用require方式引用uni-config-center/uni-id/custom-token.js文件。文件不存在时返回undefined,文件内有其他错误导致require失败时会抛出错误。
// 判断是否包含某文件
uniIDConfig.hasFile('custom-token.js') // 配置目录是否包含某文件,true: 文件存在,false: 文件不存在
```
\ No newline at end of file
"use strict";var t=require("fs"),r=require("path");function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var n=e(t),o=e(r),i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var u=function(t){var r={exports:{}};return t(r,r.exports),r.exports}((function(t,r){var e="__lodash_hash_undefined__",n=9007199254740991,o="[object Arguments]",u="[object Function]",c="[object Object]",a=/^\[object .+?Constructor\]$/,f=/^(?:0|[1-9]\d*)$/,s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s[o]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s[u]=s["[object Map]"]=s["[object Number]"]=s[c]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1;var l="object"==typeof i&&i&&i.Object===Object&&i,h="object"==typeof self&&self&&self.Object===Object&&self,p=l||h||Function("return this")(),_=r&&!r.nodeType&&r,v=_&&t&&!t.nodeType&&t,d=v&&v.exports===_,y=d&&l.process,g=function(){try{var t=v&&v.require&&v.require("util").types;return t||y&&y.binding&&y.binding("util")}catch(t){}}(),b=g&&g.isTypedArray;function j(t,r,e){switch(e.length){case 0:return t.call(r);case 1:return t.call(r,e[0]);case 2:return t.call(r,e[0],e[1]);case 3:return t.call(r,e[0],e[1],e[2])}return t.apply(r,e)}var w,O,m,A=Array.prototype,z=Function.prototype,M=Object.prototype,x=p["__core-js_shared__"],C=z.toString,F=M.hasOwnProperty,U=(w=/[^.]+$/.exec(x&&x.keys&&x.keys.IE_PROTO||""))?"Symbol(src)_1."+w:"",S=M.toString,I=C.call(Object),P=RegExp("^"+C.call(F).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),T=d?p.Buffer:void 0,q=p.Symbol,E=p.Uint8Array,$=T?T.allocUnsafe:void 0,D=(O=Object.getPrototypeOf,m=Object,function(t){return O(m(t))}),k=Object.create,B=M.propertyIsEnumerable,N=A.splice,L=q?q.toStringTag:void 0,R=function(){try{var t=vt(Object,"defineProperty");return t({},"",{}),t}catch(t){}}(),G=T?T.isBuffer:void 0,V=Math.max,W=Date.now,H=vt(p,"Map"),J=vt(Object,"create"),K=function(){function t(){}return function(r){if(!xt(r))return{};if(k)return k(r);t.prototype=r;var e=new t;return t.prototype=void 0,e}}();function Q(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r<e;){var n=t[r];this.set(n[0],n[1])}}function X(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r<e;){var n=t[r];this.set(n[0],n[1])}}function Y(t){var r=-1,e=null==t?0:t.length;for(this.clear();++r<e;){var n=t[r];this.set(n[0],n[1])}}function Z(t){var r=this.__data__=new X(t);this.size=r.size}function tt(t,r){var e=Ot(t),n=!e&&wt(t),o=!e&&!n&&At(t),i=!e&&!n&&!o&&Ft(t),u=e||n||o||i,c=u?function(t,r){for(var e=-1,n=Array(t);++e<t;)n[e]=r(e);return n}(t.length,String):[],a=c.length;for(var f in t)!r&&!F.call(t,f)||u&&("length"==f||o&&("offset"==f||"parent"==f)||i&&("buffer"==f||"byteLength"==f||"byteOffset"==f)||dt(f,a))||c.push(f);return c}function rt(t,r,e){(void 0!==e&&!jt(t[r],e)||void 0===e&&!(r in t))&&ot(t,r,e)}function et(t,r,e){var n=t[r];F.call(t,r)&&jt(n,e)&&(void 0!==e||r in t)||ot(t,r,e)}function nt(t,r){for(var e=t.length;e--;)if(jt(t[e][0],r))return e;return-1}function ot(t,r,e){"__proto__"==r&&R?R(t,r,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[r]=e}Q.prototype.clear=function(){this.__data__=J?J(null):{},this.size=0},Q.prototype.delete=function(t){var r=this.has(t)&&delete this.__data__[t];return this.size-=r?1:0,r},Q.prototype.get=function(t){var r=this.__data__;if(J){var n=r[t];return n===e?void 0:n}return F.call(r,t)?r[t]:void 0},Q.prototype.has=function(t){var r=this.__data__;return J?void 0!==r[t]:F.call(r,t)},Q.prototype.set=function(t,r){var n=this.__data__;return this.size+=this.has(t)?0:1,n[t]=J&&void 0===r?e:r,this},X.prototype.clear=function(){this.__data__=[],this.size=0},X.prototype.delete=function(t){var r=this.__data__,e=nt(r,t);return!(e<0)&&(e==r.length-1?r.pop():N.call(r,e,1),--this.size,!0)},X.prototype.get=function(t){var r=this.__data__,e=nt(r,t);return e<0?void 0:r[e][1]},X.prototype.has=function(t){return nt(this.__data__,t)>-1},X.prototype.set=function(t,r){var e=this.__data__,n=nt(e,t);return n<0?(++this.size,e.push([t,r])):e[n][1]=r,this},Y.prototype.clear=function(){this.size=0,this.__data__={hash:new Q,map:new(H||X),string:new Q}},Y.prototype.delete=function(t){var r=_t(this,t).delete(t);return this.size-=r?1:0,r},Y.prototype.get=function(t){return _t(this,t).get(t)},Y.prototype.has=function(t){return _t(this,t).has(t)},Y.prototype.set=function(t,r){var e=_t(this,t),n=e.size;return e.set(t,r),this.size+=e.size==n?0:1,this},Z.prototype.clear=function(){this.__data__=new X,this.size=0},Z.prototype.delete=function(t){var r=this.__data__,e=r.delete(t);return this.size=r.size,e},Z.prototype.get=function(t){return this.__data__.get(t)},Z.prototype.has=function(t){return this.__data__.has(t)},Z.prototype.set=function(t,r){var e=this.__data__;if(e instanceof X){var n=e.__data__;if(!H||n.length<199)return n.push([t,r]),this.size=++e.size,this;e=this.__data__=new Y(n)}return e.set(t,r),this.size=e.size,this};var it,ut=function(t,r,e){for(var n=-1,o=Object(t),i=e(t),u=i.length;u--;){var c=i[it?u:++n];if(!1===r(o[c],c,o))break}return t};function ct(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":L&&L in Object(t)?function(t){var r=F.call(t,L),e=t[L];try{t[L]=void 0;var n=!0}catch(t){}var o=S.call(t);n&&(r?t[L]=e:delete t[L]);return o}(t):function(t){return S.call(t)}(t)}function at(t){return Ct(t)&&ct(t)==o}function ft(t){return!(!xt(t)||function(t){return!!U&&U in t}(t))&&(zt(t)?P:a).test(function(t){if(null!=t){try{return C.call(t)}catch(t){}try{return t+""}catch(t){}}return""}(t))}function st(t){if(!xt(t))return function(t){var r=[];if(null!=t)for(var e in Object(t))r.push(e);return r}(t);var r=yt(t),e=[];for(var n in t)("constructor"!=n||!r&&F.call(t,n))&&e.push(n);return e}function lt(t,r,e,n,o){t!==r&&ut(r,(function(i,u){if(o||(o=new Z),xt(i))!function(t,r,e,n,o,i,u){var a=gt(t,e),f=gt(r,e),s=u.get(f);if(s)return void rt(t,e,s);var l=i?i(a,f,e+"",t,r,u):void 0,h=void 0===l;if(h){var p=Ot(f),_=!p&&At(f),v=!p&&!_&&Ft(f);l=f,p||_||v?Ot(a)?l=a:Ct(j=a)&&mt(j)?l=function(t,r){var e=-1,n=t.length;r||(r=Array(n));for(;++e<n;)r[e]=t[e];return r}(a):_?(h=!1,l=function(t,r){if(r)return t.slice();var e=t.length,n=$?$(e):new t.constructor(e);return t.copy(n),n}(f,!0)):v?(h=!1,d=f,y=!0?(g=d.buffer,b=new g.constructor(g.byteLength),new E(b).set(new E(g)),b):d.buffer,l=new d.constructor(y,d.byteOffset,d.length)):l=[]:function(t){if(!Ct(t)||ct(t)!=c)return!1;var r=D(t);if(null===r)return!0;var e=F.call(r,"constructor")&&r.constructor;return"function"==typeof e&&e instanceof e&&C.call(e)==I}(f)||wt(f)?(l=a,wt(a)?l=function(t){return function(t,r,e,n){var o=!e;e||(e={});var i=-1,u=r.length;for(;++i<u;){var c=r[i],a=n?n(e[c],t[c],c,e,t):void 0;void 0===a&&(a=t[c]),o?ot(e,c,a):et(e,c,a)}return e}(t,Ut(t))}(a):xt(a)&&!zt(a)||(l=function(t){return"function"!=typeof t.constructor||yt(t)?{}:K(D(t))}(f))):h=!1}var d,y,g,b;var j;h&&(u.set(f,l),o(l,f,n,i,u),u.delete(f));rt(t,e,l)}(t,r,u,e,lt,n,o);else{var a=n?n(gt(t,u),i,u+"",t,r,o):void 0;void 0===a&&(a=i),rt(t,u,a)}}),Ut)}function ht(t,r){return bt(function(t,r,e){return r=V(void 0===r?t.length-1:r,0),function(){for(var n=arguments,o=-1,i=V(n.length-r,0),u=Array(i);++o<i;)u[o]=n[r+o];o=-1;for(var c=Array(r+1);++o<r;)c[o]=n[o];return c[r]=e(u),j(t,this,c)}}(t,r,Pt),t+"")}var pt=R?function(t,r){return R(t,"toString",{configurable:!0,enumerable:!1,value:(e=r,function(){return e}),writable:!0});var e}:Pt;function _t(t,r){var e,n,o=t.__data__;return("string"==(n=typeof(e=r))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==e:null===e)?o["string"==typeof r?"string":"hash"]:o.map}function vt(t,r){var e=function(t,r){return null==t?void 0:t[r]}(t,r);return ft(e)?e:void 0}function dt(t,r){var e=typeof t;return!!(r=null==r?n:r)&&("number"==e||"symbol"!=e&&f.test(t))&&t>-1&&t%1==0&&t<r}function yt(t){var r=t&&t.constructor;return t===("function"==typeof r&&r.prototype||M)}function gt(t,r){if(("constructor"!==r||"function"!=typeof t[r])&&"__proto__"!=r)return t[r]}var bt=function(t){var r=0,e=0;return function(){var n=W(),o=16-(n-e);if(e=n,o>0){if(++r>=800)return arguments[0]}else r=0;return t.apply(void 0,arguments)}}(pt);function jt(t,r){return t===r||t!=t&&r!=r}var wt=at(function(){return arguments}())?at:function(t){return Ct(t)&&F.call(t,"callee")&&!B.call(t,"callee")},Ot=Array.isArray;function mt(t){return null!=t&&Mt(t.length)&&!zt(t)}var At=G||function(){return!1};function zt(t){if(!xt(t))return!1;var r=ct(t);return r==u||"[object GeneratorFunction]"==r||"[object AsyncFunction]"==r||"[object Proxy]"==r}function Mt(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=n}function xt(t){var r=typeof t;return null!=t&&("object"==r||"function"==r)}function Ct(t){return null!=t&&"object"==typeof t}var Ft=b?function(t){return function(r){return t(r)}}(b):function(t){return Ct(t)&&Mt(t.length)&&!!s[ct(t)]};function Ut(t){return mt(t)?tt(t,!0):st(t)}var St,It=(St=function(t,r,e){lt(t,r,e)},ht((function(t,r){var e=-1,n=r.length,o=n>1?r[n-1]:void 0,i=n>2?r[2]:void 0;for(o=St.length>3&&"function"==typeof o?(n--,o):void 0,i&&function(t,r,e){if(!xt(e))return!1;var n=typeof r;return!!("number"==n?mt(e)&&dt(r,e.length):"string"==n&&r in e)&&jt(e[r],t)}(r[0],r[1],i)&&(o=n<3?void 0:o,n=1),t=Object(t);++e<n;){var u=r[e];u&&St(t,u,e,o)}return t})));function Pt(t){return t}t.exports=It}));const c=Object.prototype.hasOwnProperty,a=(t,r)=>c.call(t,r);class f{constructor({pluginId:t,defaultConfig:r={},customMerge:e,root:n}){this.pluginId=t,this.defaultConfig=r,this.pluginConfigPath=o.default.resolve(n||__dirname,t),this.customMerge=e,this._config=void 0}resolve(t){return o.default.resolve(this.pluginConfigPath,t)}hasFile(t){return n.default.existsSync(this.resolve(t))}requireFile(t){try{return require(this.resolve(t))}catch(t){if("MODULE_NOT_FOUND"===t.code)return;throw t}}_getUserConfig(){return this.requireFile("config.json")}config(t,r){if(!this._config){const t=this._getUserConfig();this._config=Array.isArray(t)?t:(this.customMerge||u)(this.defaultConfig,t)}let e=this._config;return t?function(t,r,e){if("number"==typeof r)return t[r];if("symbol"==typeof r)return a(t,r)?t[r]:e;const n="string"!=typeof(o=r)?o:o.split(".").reduce(((t,r)=>(r.split(/\[([^}]+)\]/g).forEach((r=>r&&t.push(r))),t)),[]);var o;let i=t;for(let t=0;t<n.length;t++){const r=n[t];if(!a(i,r))return e;i=i[r]}return i}(e,t,r):e}}const s=new class{constructor(){this._configMap=new Map}plugin({pluginId:t,defaultConfig:r,customMerge:e,root:n=__dirname,cache:o=!0}){if(this._configMap.has(t)&&o)return this._configMap.get(t);const i=new f({pluginId:t,defaultConfig:r,customMerge:e,root:n});return o&&this._configMap.set(t,i),i}};var l=s.plugin.bind(s);module.exports=l;
{
"name": "uni-config-center",
"version": "0.0.3",
"description": "配置中心",
"keywords": [],
"license": "Apache-2.0",
"author": "DCloud",
"main": "index.js"
}
\ No newline at end of file
## 1.0.14(2023-03-07)
- 修复 admin用户包含其他角色时未包含在token的Bug
## 1.0.13(2022-07-21)
- 修复 创建token时未传角色权限信息生成的token不正确的bug
## 1.0.12(2022-07-15)
- 提升与旧版本uni-id的兼容性(补充读取配置文件时回退平台app-plus、h5),但是仍推荐使用新平台名进行配置(app、web)
## 1.0.11(2022-07-14)
- 修复 部分情况下报`read property 'reduce' of undefined`的错误
## 1.0.10(2022-07-11)
- 将token存储在用户表的token字段内,与旧版本uni-id保持一致
## 1.0.9(2022-07-01)
- checkToken兼容token内未缓存角色权限的情况,此时将查库获取角色权限
## 1.0.8(2022-07-01)
- 修复clientDB默认依赖时部分情况下获取不到uni-id配置的Bug
## 1.0.7(2022-06-30)
- 修复config文件不合法时未抛出具体错误的Bug
## 1.0.6(2022-06-28)
- 移除插件内的数据表schema
## 1.0.5(2022-06-27)
- 修复使用多应用配置时报`Cannot read property 'appId' of undefined`的Bug
## 1.0.4(2022-06-27)
- 修复使用自定义token内容功能报错的Bug [详情](https://ask.dcloud.net.cn/question/147945)
## 1.0.2(2022-06-23)
- 对齐旧版本uni-id默认配置
## 1.0.1(2022-06-22)
- 补充对uni-config-center的依赖
## 1.0.0(2022-06-21)
- 提供uni-id token创建、校验、刷新接口,简化旧版uni-id公共模块
{
"displayName": "uni-id-common",
"version": "1.0.14",
"description": "包含uni-id token生成、校验、刷新功能的云函数公共模块",
"keywords": [
"uni-id-common",
"uniCloud",
"token",
"权限"
],
"repository": "https://gitcode.net/dcloud/uni-id-common",
"engines": {
"HBuilderX": "^3.1.0"
},
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "",
"type": "unicloud-template-function"
},
"id": "uni-id-common",
"uni_modules": {
"dependencies": [
"uni-config-center"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"Vue": {
"vue2": "u",
"vue3": "u"
},
"App": {
"app-vue": "u",
"app-nvue": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}
# uni-id-common
文档请参考:[uni-id-common](https://uniapp.dcloud.net.cn/uniCloud/uni-id-common.html)
\ No newline at end of file
"use strict";var e,t=(e=require("crypto"))&&"object"==typeof e&&"default"in e?e.default:e;const n={TOKEN_EXPIRED:"uni-id-token-expired",CHECK_TOKEN_FAILED:"uni-id-check-token-failed",PARAM_REQUIRED:"uni-id-param-required",ACCOUNT_EXISTS:"uni-id-account-exists",ACCOUNT_NOT_EXISTS:"uni-id-account-not-exists",ACCOUNT_CONFLICT:"uni-id-account-conflict",ACCOUNT_BANNED:"uni-id-account-banned",ACCOUNT_AUDITING:"uni-id-account-auditing",ACCOUNT_AUDIT_FAILED:"uni-id-account-audit-failed",ACCOUNT_CLOSED:"uni-id-account-closed"};function i(e){return!!e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}function r(e){if(!e)return;const t=e.match(/^(\d+).(\d+).(\d+)/);return t?t.slice(1,4).map(e=>parseInt(e)):void 0}function o(e,t){const n=r(e),i=r(t);return n?i?function(e,t){const n=Math.max(e.length,t.length);for(let i=0;i<n;i++){const n=e[i],r=t[i];if(n>r)return 1;if(n<r)return-1}return 0}(n,i):1:i?-1:0}const s={"uni-id-token-expired":30203,"uni-id-check-token-failed":30202};function c(e){const{errCode:t,errMsgValue:n}=e;e.errMsg=this._t(t,n),t in s&&(e.code=s[t]),delete e.errMsgValue}function a(e){return"object"===(i=e,Object.prototype.toString.call(i).slice(8,-1).toLowerCase())&&e.errCode&&(t=e.errCode,Object.values(n).includes(t))&&!!e.errCode;var t,i}let u={"zh-Hans":{"uni-id-token-expired":"登录状态失效,token已过期","uni-id-check-token-failed":"token校验未通过","uni-id-param-required":"缺少参数: {param}","uni-id-account-exists":"此账号已注册","uni-id-account-not-exists":"此账号未注册","uni-id-account-conflict":"用户账号冲突","uni-id-account-banned":"从账号已封禁","uni-id-account-auditing":"此账号正在审核中","uni-id-account-audit-failed":"此账号审核失败","uni-id-account-closed":"此账号已注销"},en:{"uni-id-token-expired":"The login status is invalid, token has expired","uni-id-check-token-failed":"Check token failed","uni-id-param-required":"Parameter required: {param}","uni-id-account-exists":"Account exists","uni-id-account-not-exists":"Account does not exists","uni-id-account-conflict":"User account conflict","uni-id-account-banned":"Account has been banned","uni-id-account-auditing":"Account audit in progress","uni-id-account-audit-failed":"Account audit failed","uni-id-account-closed":"Account has been closed"}};try{const e=require.resolve("uni-config-center/uni-id/lang/index.js");u=function(e,t){const n=Object.keys(e);n.push(...Object.keys(t));const i={};for(let r=0;r<n.length;r++){const o=n[r];i[o]=Object.assign({},e[o],t[o])}return i}(u,require(e))}catch(e){}var d=u;function l(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function h(e){return JSON.parse((t=function(e){var t=4-(e=e.toString()).length%4;if(4!==t)for(var n=0;n<t;++n)e+="=";return e.replace(/-/g,"+").replace(/_/g,"/")}(e),Buffer.from(t,"base64").toString("utf-8")));var t}function f(e){return l((t=JSON.stringify(e),Buffer.from(t,"utf-8").toString("base64")));var t}function p(e,n){return l(t.createHmac("sha256",n).update(e).digest("base64"))}const k=function(e,t){if("string"!=typeof e)throw new Error("Invalid token");const n=e.split(".");if(3!==n.length)throw new Error("Invalid token");const[i,r,o]=n;if(p(i+"."+r,t)!==o)throw new Error("Invalid token");const s=h(i);if("HS256"!==s.alg||"JWT"!==s.typ)throw new Error("Invalid token");const c=h(r);if(1e3*c.exp<Date.now()){const e=new Error("Token expired");throw e.name="TokenExpiredError",e}return c},g=function(e,t,n={}){const{expiresIn:i}=n;if(!i)throw new Error("expiresIn is required");const r=parseInt(Date.now()/1e3),o={...e,iat:r,exp:r+n.expiresIn},s=f({alg:"HS256",typ:"JWT"})+"."+f(o);return s+"."+p(s,t)},I=uniCloud.database(),_=I.command,C=I.collection("uni-id-users"),m=I.collection("uni-id-roles");class T{constructor({uniId:e}={}){this.uid=null,this.userRecord=null,this.userPermission=null,this.oldToken=null,this.oldTokenPayload=null,this.uniId=e,this.config=this.uniId._getConfig(),this.clientInfo=this.uniId._clientInfo,this.checkConfig()}checkConfig(){const{tokenExpiresIn:e,tokenExpiresThreshold:t}=this.config;if(t>e)throw new Error("Config error, tokenExpiresThreshold should be less than tokenExpiresIn")}get customToken(){return this.uniId.interceptorMap.get("customToken")}isTokenInDb(e){return o(e,"1.0.10")>=0}async getUserRecord(){if(this.userRecord)return this.userRecord;const e=await C.doc(this.uid).get();if(this.userRecord=e.data[0],!this.userRecord)throw{errCode:n.ACCOUNT_NOT_EXISTS};switch(this.userRecord.status){case void 0:case 0:break;case 1:throw{errCode:n.ACCOUNT_BANNED};case 2:throw{errCode:n.ACCOUNT_AUDITING};case 3:throw{errCode:n.ACCOUNT_AUDIT_FAILED};case 4:throw{errCode:n.ACCOUNT_CLOSED}}if(this.oldTokenPayload){if(this.isTokenInDb(this.oldTokenPayload.uniIdVersion)){if(-1===(this.userRecord.token||[]).indexOf(this.oldToken))throw{errCode:n.CHECK_TOKEN_FAILED}}if(this.userRecord.valid_token_date&&this.userRecord.valid_token_date>1e3*this.oldTokenPayload.iat)throw{errCode:n.TOKEN_EXPIRED}}return this.userRecord}async updateUserRecord(e){await C.doc(this.uid).update(e)}async getUserPermission(){if(this.userPermission)return this.userPermission;const e=(await this.getUserRecord()).role||[];if(0===e.length)return this.userPermission={role:[],permission:[]},this.userPermission;if(e.includes("admin"))return this.userPermission={role:e,permission:[]},this.userPermission;const t=await m.where({role_id:_.in(e)}).get(),n=(i=t.data.reduce((e,t)=>(t.permission&&e.push(...t.permission),e),[]),Array.from(new Set(i)));var i;return this.userPermission={role:e,permission:n},this.userPermission}async _createToken({uid:e,role:t,permission:i}={}){if(!t||!i){const e=await this.getUserPermission();t=e.role,i=e.permission}let r={uid:e,role:t,permission:i};if(this.uniId.interceptorMap.has("customToken")){const n=this.uniId.interceptorMap.get("customToken");if("function"!=typeof n)throw new Error("Invalid custom token file");r=await n({uid:e,role:t,permission:i})}const o=Date.now(),{tokenSecret:s,tokenExpiresIn:c}=this.config,a=g({...r,uniIdVersion:"1.0.14"},s,{expiresIn:c}),u=await this.getUserRecord(),d=(u.token||[]).filter(e=>{try{const t=this._checkToken(e);if(u.valid_token_date&&u.valid_token_date>1e3*t.iat)return!1}catch(e){if(e.errCode===n.TOKEN_EXPIRED)return!1}return!0});return d.push(a),await this.updateUserRecord({last_login_ip:this.clientInfo.clientIP,last_login_date:o,token:d}),{token:a,tokenExpired:o+1e3*c}}async createToken({uid:e,role:t,permission:i}={}){if(!e)throw{errCode:n.PARAM_REQUIRED,errMsgValue:{param:"uid"}};this.uid=e;const{token:r,tokenExpired:o}=await this._createToken({uid:e,role:t,permission:i});return{errCode:0,token:r,tokenExpired:o}}async refreshToken({token:e}={}){if(!e)throw{errCode:n.PARAM_REQUIRED,errMsgValue:{param:"token"}};this.oldToken=e;const t=this._checkToken(e);this.uid=t.uid,this.oldTokenPayload=t;const{uid:i}=t,{role:r,permission:o}=await this.getUserPermission(),{token:s,tokenExpired:c}=await this._createToken({uid:i,role:r,permission:o});return{errCode:0,token:s,tokenExpired:c}}_checkToken(e){const{tokenSecret:t}=this.config;let i;try{i=k(e,t)}catch(e){if("TokenExpiredError"===e.name)throw{errCode:n.TOKEN_EXPIRED};throw{errCode:n.CHECK_TOKEN_FAILED}}return i}async checkToken(e,{autoRefresh:t=!0}={}){if(!e)throw{errCode:n.PARAM_REQUIRED,errMsgValue:{param:"token"}};this.oldToken=e;const i=this._checkToken(e);this.uid=i.uid,this.oldTokenPayload=i;const{tokenExpiresThreshold:r}=this.config,{uid:o,role:s,permission:c}=i,a={role:s,permission:c};if(!s&&!c){const{role:e,permission:t}=await this.getUserPermission();a.role=e,a.permission=t}if(!r||!t){const e={code:0,errCode:0,...i,...a};return delete e.uniIdVersion,e}const u=Date.now();let d={};1e3*i.exp-u<1e3*r&&(d=await this._createToken({uid:o}));const l={code:0,errCode:0,...i,...a,...d};return delete l.uniIdVersion,l}}var E=Object.freeze({__proto__:null,checkToken:async function(e,{autoRefresh:t=!0}={}){return new T({uniId:this}).checkToken(e,{autoRefresh:t})},createToken:async function({uid:e,role:t,permission:n}={}){return new T({uniId:this}).createToken({uid:e,role:t,permission:n})},refreshToken:async function({token:e}={}){return new T({uniId:this}).refreshToken({token:e})}});const w=require("uni-config-center")({pluginId:"uni-id"});class A{constructor({context:e,clientInfo:t,config:n}={}){this._clientInfo=e?function(e){return{appId:e.APPID,platform:e.PLATFORM,locale:e.LOCALE,clientIP:e.CLIENTIP,deviceId:e.DEVICEID}}(e):t,this.config=n||this._getOriginConfig(),this.interceptorMap=new Map,w.hasFile("custom-token.js")&&this.setInterceptor("customToken",require(w.resolve("custom-token.js"))),this._i18n=uniCloud.initI18n({locale:this._clientInfo.locale,fallbackLocale:"zh-Hans",messages:d})}setInterceptor(e,t){this.interceptorMap.set(e,t)}_t(...e){return this._i18n.t(...e)}_parseOriginConfig(e){return Array.isArray(e)?e:e[0]?Object.values(e):e}_getOriginConfig(){if(w.hasFile("config.json")){let e;try{e=w.config()}catch(e){throw new Error("Invalid uni-id config file\n"+e.message)}return this._parseOriginConfig(e)}try{return this._parseOriginConfig(require("uni-id/config.json"))}catch(e){throw new Error("Invalid uni-id config file")}}_getAppConfig(){const e=this._getOriginConfig();return Array.isArray(e)?e.find(e=>e.dcloudAppid===this._clientInfo.appId)||e.find(e=>e.isDefaultConfig):e}_getPlatformConfig(){const e=this._getAppConfig();if(!e)throw new Error(`Config for current app (${this._clientInfo.appId}) was not found, please check your config file or client appId`);let t;switch("app-plus"===this._clientInfo.platform&&(this._clientInfo.platform="app"),"h5"===this._clientInfo.platform&&(this._clientInfo.platform="web"),this._clientInfo.platform){case"web":t="h5";break;case"app":t="app-plus"}const n=[{tokenExpiresIn:7200,tokenExpiresThreshold:1200,passwordErrorLimit:6,passwordErrorRetryTime:3600},e];t&&e[t]&&n.push(e[t]),n.push(e[this._clientInfo.platform]);const i=Object.assign(...n);return["tokenSecret","tokenExpiresIn"].forEach(e=>{if(!i||!i[e])throw new Error(`Config parameter missing, ${e} is required`)}),i}_getConfig(){return this._getPlatformConfig()}}for(const e in E)A.prototype[e]=E[e];function y(e){const t=new A(e);return new Proxy(t,{get(e,t){if(t in e&&0!==t.indexOf("_")){if("function"==typeof e[t])return(n=e[t],function(){let e;try{e=n.apply(this,arguments)}catch(e){if(a(e))return c.call(this,e),e;throw e}return i(e)?e.then(e=>(a(e)&&c.call(this,e),e),e=>{if(a(e))return c.call(this,e),e;throw e}):(a(e)&&c.call(this,e),e)}).bind(e);if("context"!==t&&"config"!==t)return e[t]}var n}})}A.prototype.createInstance=y;const x={createInstance:y};module.exports=x;
{
"name": "uni-id-common",
"version": "1.0.14",
"description": "uni-id token生成、校验、刷新",
"homepage": "https://uniapp.dcloud.io/uniCloud/uni-id-common.html",
"repository": {
"type": "git",
"url": "git+https://gitee.com/dcloud/uni-id-common.git"
},
"license": "Apache-2.0",
"author": "DCloud",
"main": "index.js",
"dependencies": {
"uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center"
}
}
\ No newline at end of file
import type { AxiosRequestConfig, AxiosInstance, AxiosResponse, AxiosPromise, AxiosError } from 'axios'
import type { AxiosError, AxiosInstance, AxiosPromise, AxiosRequestConfig, AxiosResponse } from 'axios'
import type { RequestOptions, Result, UploadFileParams } from '/#/axios'
import type { CreateAxiosOptions } from './axiosTransform'
import axios from 'axios'
......@@ -7,8 +7,7 @@ import qs from 'qs'
import { AxiosCanceler } from './axiosCancel'
import { isFunction } from '/@/utils/is'
import { cloneDeep } from 'lodash-es'
import { ContentTypeEnum } from '/@/enums/httpEnum'
import { RequestEnum } from '/@/enums/httpEnum'
import { ContentTypeEnum, RequestEnum } from '/@/enums/httpEnum'
/**
* 覆盖实现,使用 uni.request 实现网络请求
......@@ -35,7 +34,7 @@ axios.defaults.adapter = function (config: CreateAxiosOptions): AxiosPromise<any
})
},
fail: (response) => {
// @ts-ignore
// @ts-expect-error
const { errMsg, statusCode } = response
const error = createError(errMsg, config, statusCode, request, {
config,
......@@ -117,7 +116,7 @@ export class VAxios {
// Request interceptor configuration processing
this.axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => {
// If cancel repeat request is turned on, then cancel repeat request is prohibited
// @ts-ignore
// @ts-expect-error
const { ignoreCancelToken } = config.requestOptions
const ignoreCancel =
ignoreCancelToken !== undefined ? ignoreCancelToken : this.options.requestOptions?.ignoreCancelToken
......@@ -147,7 +146,7 @@ export class VAxios {
responseInterceptorsCatch &&
isFunction(responseInterceptorsCatch) &&
this.axiosInstance.interceptors.response.use(undefined, (error) => {
// @ts-ignore
// @ts-expect-error
responseInterceptorsCatch(this.axiosInstance, error)
})
}
......@@ -191,7 +190,6 @@ export class VAxios {
data: formData,
headers: {
'Content-Type': ContentTypeEnum.FORM_DATA,
// @ts-ignore
ignoreCancelToken: true,
},
})
......
import { AxiosError, AxiosInstance } from 'axios'
import type { AxiosError, AxiosInstance } from 'axios'
/**
* 请求重试机制
*/
......@@ -9,15 +9,15 @@ export class AxiosRetry {
*/
retry(AxiosInstance: AxiosInstance, error: AxiosError) {
const { config } = error.response
// @ts-ignore
// @ts-expect-error
const { waitTime, count } = config?.requestOptions?.retryRequest
// @ts-ignore
// @ts-expect-error
config.__retryCount = config.__retryCount || 0
// @ts-ignore
// @ts-expect-error
if (config.__retryCount >= count) {
return Promise.reject(error)
}
// @ts-ignore
// @ts-expect-error
config.__retryCount += 1
return this.delay(waitTime).then(() => AxiosInstance(config))
}
......
......@@ -10,11 +10,11 @@ import { checkStatus } from './checkStatus'
import { useGlobSetting } from '/@/hooks/setting'
import { useI18n } from '/@/hooks/app/useI18n'
import { useMessage } from '/@/hooks/app/useMessage'
import { RequestEnum, ContentTypeEnum } from '/@/enums/httpEnum'
import { ContentTypeEnum, RequestEnum } from '/@/enums/httpEnum'
import { isString } from '/@/utils/is'
import { getToken, clearAuthCache } from '/@/utils/auth'
import { setObjToUrlParams, deepMerge } from '/@/utils'
import { joinTimestamp, formatRequestDate } from './helper'
import { clearAuthCache, getToken } from '/@/utils/auth'
import { deepMerge, setObjToUrlParams } from '/@/utils'
import { formatRequestDate, joinTimestamp } from './helper'
import { AxiosRetry } from '/@/utils/http/axios/axiosRetry'
import * as HTTP from '/@/api/types'
import { API_URL, API_URL_PREFIX } from '/@/utils/net'
......@@ -112,7 +112,7 @@ const transform: AxiosTransform = {
config.params = Object.assign(params || {}, joinTimestamp(joinTime, false))
} else {
// 兼容restful风格
config.url = config.url + params + `${joinTimestamp(joinTime, true)}`
config.url = `${config.url + params}${joinTimestamp(joinTime, true)}`
config.params = undefined
}
} else {
......@@ -172,7 +172,7 @@ const transform: AxiosTransform = {
let errMessage = ''
try {
if (code === 'ECONNABORTED' && message.indexOf('timeout') !== -1) {
if (code === 'ECONNABORTED' && message.includes('timeout')) {
errMessage = t('sys.api.apiTimeoutMessage')
}
if (err?.includes('Network Error')) {
......@@ -198,7 +198,7 @@ const transform: AxiosTransform = {
const { isOpenRetry } = config.requestOptions.retryRequest
config.method?.toUpperCase() === RequestEnum.GET &&
isOpenRetry &&
// @ts-ignore
// @ts-expect-error
retryRequest.retry(axiosInstance, error)
return Promise.reject(error)
},
......@@ -238,7 +238,7 @@ function createAxios(opt?: Partial<CreateAxiosOptions>) {
// 接口地址
apiUrl: globSetting.apiUrl,
// 接口拼接地址
urlPrefix: urlPrefix,
urlPrefix,
// 是否加入时间戳
joinTime: true,
// 忽略重复请求
......
......@@ -25,7 +25,7 @@ export function getPopupContainer(node?: HTMLElement): HTMLElement {
export function setObjToUrlParams(baseUrl: string, obj: any): string {
let parameters = ''
for (const key in obj) {
parameters += key + '=' + encodeURIComponent(obj[key]) + '&'
parameters += `${key}=${encodeURIComponent(obj[key])}&`
}
parameters = parameters.replace(/&$/, '')
return /\?$/.test(baseUrl) ? baseUrl + parameters : baseUrl.replace(/\/?$/, '?') + parameters
......@@ -43,7 +43,7 @@ export function deepMerge<T = any>(src: any = {}, target: any = {}): T {
export function getDynamicProps<T, U>(props: T): Partial<U> {
const ret: Recordable = {}
Object.keys(props).map((key) => {
Object.keys(props).forEach((key) => {
ret[key] = unref((props as Recordable)[key])
})
......
/* eslint-disable import/no-mutable-exports */
import { useGlobSetting } from '/@/hooks/setting'
const globSetting = useGlobSetting()
......
......@@ -2,7 +2,7 @@ export function setBadge(number = 0) {
// #ifdef APP-PLUS
// 清除消息角标
plus.runtime.setBadgeNumber(number)
if (plus.os.name.toLowerCase() == 'ios') {
if (plus.os.name.toLowerCase() === 'ios') {
// 导入个推原生类
const GeTuiSdk = plus.ios.importClass('GeTuiSdk')
GeTuiSdk?.setBadge(number)
......
import type { Client, Message, Frame } from 'stompjs'
import type { Client, Frame, Message } from 'stompjs'
import Stomp from './uni-stomp'
import UniWebSocket from './uni-websocket'
import { getToken } from '/@/utils/auth'
......@@ -156,7 +156,7 @@ class StompInstance {
// 订阅状态置false
Object.keys(this.subscribes).forEach((key) => {
this.subscribes[key]['subscribed'] = false
this.subscribes[key].subscribed = false
})
// 连接
......@@ -191,16 +191,15 @@ class StompInstance {
* @param {Function} callback 回调
*/
subscribe(destination: string, callback: (message: Message) => any) {
if (this.subscribes[destination] && this.subscribes[destination]['subscribed']) {
if (this.subscribes[destination] && this.subscribes[destination].subscribed) {
// 已订阅
return
} else if (this.client && this.client.connected) {
// 已连接:调用订阅,缓存订阅信息
const subscribe = this.client.subscribe(destination, (res) => callback(res))
this.subscribes[destination] = { callback: callback, subscribed: true, subscribe: subscribe }
this.subscribes[destination] = { callback, subscribed: true, subscribe }
} else {
// 未连接:缓存订阅信息
this.subscribes[destination] = { callback: callback, subscribed: false }
this.subscribes[destination] = { callback, subscribed: false }
}
}
......
/* eslint-disable eslint-comments/no-unlimited-disable */
/* eslint-disable */
// @ts-nocheck
......
......@@ -129,7 +129,7 @@ class UniWebSocket {
*/
send(data: string | ArrayBuffer) {
this.ws.send({
data: data,
data,
})
}
......
......@@ -10,123 +10,124 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
Empty: typeof import('./../src/components/Empty/index.vue')['default']
FDragItem: typeof import('./../src/components/firstui/fui-drag/f-drag-item.vue')['default']
FIndexListItem: typeof import('./../src/components/firstui/fui-index-list/f-index-list-item.vue')['default']
FuiActionsheet: typeof import('./../src/components/firstui/fui-actionsheet/fui-actionsheet.vue')['default']
FuiAlert: typeof import('./../src/components/firstui/fui-alert/fui-alert.vue')['default']
FuiAnimation: typeof import('./../src/components/firstui/fui-animation/fui-animation.vue')['default']
FuiAutograph: typeof import('./../src/components/firstui/fui-autograph/fui-autograph.vue')['default']
FuiAvatar: typeof import('./../src/components/firstui/fui-avatar/fui-avatar.vue')['default']
FuiBackdrop: typeof import('./../src/components/firstui/fui-backdrop/fui-backdrop.vue')['default']
FuiBacktop: typeof import('./../src/components/firstui/fui-backtop/fui-backtop.vue')['default']
FuiBadge: typeof import('./../src/components/firstui/fui-badge/fui-badge.vue')['default']
FuiBarcode: typeof import('./../src/components/firstui/fui-barcode/fui-barcode.vue')['default']
FuiBottomNavbar: typeof import('./../src/components/firstui/fui-bottom-navbar/fui-bottom-navbar.vue')['default']
FuiBottomPopup: typeof import('./../src/components/firstui/fui-bottom-popup/fui-bottom-popup.vue')['default']
FuiBubbleBox: typeof import('./../src/components/firstui/fui-bubble-box/fui-bubble-box.vue')['default']
FuiButton: typeof import('./../src/components/firstui/fui-button/fui-button.vue')['default']
FuiCalendar: typeof import('./../src/components/firstui/fui-calendar/fui-calendar.vue')['default']
FuiCard: typeof import('./../src/components/firstui/fui-card/fui-card.vue')['default']
FuiCascader: typeof import('./../src/components/firstui/fui-cascader/fui-cascader.vue')['default']
FuiCheckbox: typeof import('./../src/components/firstui/fui-checkbox/fui-checkbox.vue')['default']
FuiCheckboxGroup: typeof import('./../src/components/firstui/fui-checkbox-group/fui-checkbox-group.vue')['default']
FuiCircle: typeof import('./../src/components/firstui/fui-circle/fui-circle.vue')['default']
FuiCol: typeof import('./../src/components/firstui/fui-col/fui-col.vue')['default']
FuiCollapse: typeof import('./../src/components/firstui/fui-collapse/fui-collapse.vue')['default']
FuiCollapseItem: typeof import('./../src/components/firstui/fui-collapse-item/fui-collapse-item.vue')['default']
FuiCopyText: typeof import('./../src/components/firstui/fui-copy-text/fui-copy-text.vue')['default']
FuiCountDown: typeof import('./../src/components/firstui/fui-count-down/fui-count-down.vue')['default']
FuiCountdownVerify: typeof import('./../src/components/firstui/fui-countdown-verify/fui-countdown-verify.vue')['default']
FuiCubicBezier: typeof import('./../src/components/firstui/fui-cubic-bezier/fui-cubic-bezier.vue')['default']
FuiDataTag: typeof import('./../src/components/firstui/fui-data-tag/fui-data-tag.vue')['default']
FuiDatePicker: typeof import('./../src/components/firstui/fui-date-picker/fui-date-picker.vue')['default']
FuiDialog: typeof import('./../src/components/firstui/fui-dialog/fui-dialog.vue')['default']
FuiDigitalKeyboard: typeof import('./../src/components/firstui/fui-digital-keyboard/fui-digital-keyboard.vue')['default']
FuiDigitalRoller: typeof import('./../src/components/firstui/fui-digital-roller/fui-digital-roller.vue')['default']
FuiDivider: typeof import('./../src/components/firstui/fui-divider/fui-divider.vue')['default']
FuiDrag: typeof import('./../src/components/firstui/fui-drag/fui-drag.vue')['default']
FuiDrawer: typeof import('./../src/components/firstui/fui-drawer/fui-drawer.vue')['default']
FuiDropdownList: typeof import('./../src/components/firstui/fui-dropdown-list/fui-dropdown-list.vue')['default']
FuiDropdownMenu: typeof import('./../src/components/firstui/fui-dropdown-menu/fui-dropdown-menu.vue')['default']
FuiEmpty: typeof import('./../src/components/firstui/fui-empty/fui-empty.vue')['default']
FuiFab: typeof import('./../src/components/firstui/fui-fab/fui-fab.vue')['default']
FuiFilterBar: typeof import('./../src/components/firstui/fui-filter-bar/fui-filter-bar.vue')['default']
FuiFooter: typeof import('./../src/components/firstui/fui-footer/fui-footer.vue')['default']
FuiForm: typeof import('./../src/components/firstui/fui-form/fui-form.vue')['default']
FuiFormField: typeof import('./../src/components/firstui/fui-form-field/fui-form-field.vue')['default']
FuiFormItem: typeof import('./../src/components/firstui/fui-form-item/fui-form-item.vue')['default']
FuiGallery: typeof import('./../src/components/firstui/fui-gallery/fui-gallery.vue')['default']
FuiGrid: typeof import('./../src/components/firstui/fui-grid/fui-grid.vue')['default']
FuiGridItem: typeof import('./../src/components/firstui/fui-grid-item/fui-grid-item.vue')['default']
FuiIcon: typeof import('./../src/components/firstui/fui-icon/fui-icon.vue')['default']
FuiImageCropper: typeof import('./../src/components/firstui/fui-image-cropper/fui-image-cropper.vue')['default']
FuiIndexList: typeof import('./../src/components/firstui/fui-index-list/fui-index-list.vue')['default']
FuiInput: typeof import('./../src/components/firstui/fui-input/fui-input.vue')['default']
FuiInputNumber: typeof import('./../src/components/firstui/fui-input-number/fui-input-number.vue')['default']
FuiLabel: typeof import('./../src/components/firstui/fui-label/fui-label.vue')['default']
FuiLandscape: typeof import('./../src/components/firstui/fui-landscape/fui-landscape.vue')['default']
FuiLazyload: typeof import('./../src/components/firstui/fui-lazyload/fui-lazyload.vue')['default']
FuiLicensePlate: typeof import('./../src/components/firstui/fui-license-plate/fui-license-plate.vue')['default']
FuiList: typeof import('./../src/components/firstui/fui-list/fui-list.vue')['default']
FuiListCell: typeof import('./../src/components/firstui/fui-list-cell/fui-list-cell.vue')['default']
FuiLoadAni: typeof import('./../src/components/firstui/fui-load-ani/fui-load-ani.vue')['default']
FuiLoading: typeof import('./../src/components/firstui/fui-loading/fui-loading.vue')['default']
FuiLoadmore: typeof import('./../src/components/firstui/fui-loadmore/fui-loadmore.vue')['default']
FuiMessage: typeof import('./../src/components/firstui/fui-message/fui-message.vue')['default']
FuiModal: typeof import('./../src/components/firstui/fui-modal/fui-modal.vue')['default']
FuiNavBar: typeof import('./../src/components/firstui/fui-nav-bar/fui-nav-bar.vue')['default']
FuiNoticeBar: typeof import('./../src/components/firstui/fui-notice-bar/fui-notice-bar.vue')['default']
FuiOverflowHidden: typeof import('./../src/components/firstui/fui-overflow-hidden/fui-overflow-hidden.vue')['default']
FuiPagination: typeof import('./../src/components/firstui/fui-pagination/fui-pagination.vue')['default']
FuiPanel: typeof import('./../src/components/firstui/fui-panel/fui-panel.vue')['default']
FuiPicker: typeof import('./../src/components/firstui/fui-picker/fui-picker.vue')['default']
FuiPoster: typeof import('./../src/components/firstui/fui-poster/fui-poster.vue')['default']
FuiPosterWeex: typeof import('./../src/components/firstui/fui-poster-weex/fui-poster-weex.vue')['default']
FuiPreview: typeof import('./../src/components/firstui/fui-preview/fui-preview.vue')['default']
FuiProgress: typeof import('./../src/components/firstui/fui-progress/fui-progress.vue')['default']
FuiPuzzleVerify: typeof import('./../src/components/firstui/fui-puzzle-verify/fui-puzzle-verify.vue')['default']
FuiQrcode: typeof import('./../src/components/firstui/fui-qrcode/fui-qrcode.vue')['default']
FuiRadio: typeof import('./../src/components/firstui/fui-radio/fui-radio.vue')['default']
FuiRadioGroup: typeof import('./../src/components/firstui/fui-radio-group/fui-radio-group.vue')['default']
FuiRate: typeof import('./../src/components/firstui/fui-rate/fui-rate.vue')['default']
FuiResult: typeof import('./../src/components/firstui/fui-result/fui-result.vue')['default']
FuiRotateVerify: typeof import('./../src/components/firstui/fui-rotate-verify/fui-rotate-verify.vue')['default']
FuiRow: typeof import('./../src/components/firstui/fui-row/fui-row.vue')['default']
FuiSafeArea: typeof import('./../src/components/firstui/fui-safe-area/fui-safe-area.vue')['default']
FuiSearchBar: typeof import('./../src/components/firstui/fui-search-bar/fui-search-bar.vue')['default']
FuiSegmentedControl: typeof import('./../src/components/firstui/fui-segmented-control/fui-segmented-control.vue')['default']
FuiSelect: typeof import('./../src/components/firstui/fui-select/fui-select.vue')['default']
FuiShareSheet: typeof import('./../src/components/firstui/fui-share-sheet/fui-share-sheet.vue')['default']
FuiSingleInput: typeof import('./../src/components/firstui/fui-single-input/fui-single-input.vue')['default']
FuiSkeleton: typeof import('./../src/components/firstui/fui-skeleton/fui-skeleton.vue')['default']
FuiSlider: typeof import('./../src/components/firstui/fui-slider/fui-slider.vue')['default']
FuiSliderCaptcha: typeof import('./../src/components/firstui/fui-slider-captcha/fui-slider-captcha.vue')['default']
FuiSlideVerify: typeof import('./../src/components/firstui/fui-slide-verify/fui-slide-verify.vue')['default']
FuiSpin: typeof import('./../src/components/firstui/fui-spin/fui-spin.vue')['default']
FuiStatusBar: typeof import('./../src/components/firstui/fui-status-bar/fui-status-bar.vue')['default']
FuiSteps: typeof import('./../src/components/firstui/fui-steps/fui-steps.vue')['default']
FuiSticky: typeof import('./../src/components/firstui/fui-sticky/fui-sticky.vue')['default']
FuiSwipeAction: typeof import('./../src/components/firstui/fui-swipe-action/fui-swipe-action.vue')['default']
FuiSwipeactionGroup: typeof import('./../src/components/firstui/fui-swipeaction-group/fui-swipeaction-group.vue')['default']
FuiSwiperDot: typeof import('./../src/components/firstui/fui-swiper-dot/fui-swiper-dot.vue')['default']
FuiSwitch: typeof import('./../src/components/firstui/fui-switch/fui-switch.vue')['default']
FuiTabbar: typeof import('./../src/components/firstui/fui-tabbar/fui-tabbar.vue')['default']
FuiTable: typeof import('./../src/components/firstui/fui-table/fui-table.vue')['default']
FuiTabs: typeof import('./../src/components/firstui/fui-tabs/fui-tabs.vue')['default']
FuiTag: typeof import('./../src/components/firstui/fui-tag/fui-tag.vue')['default']
FuiText: typeof import('./../src/components/firstui/fui-text/fui-text.vue')['default']
FuiTextarea: typeof import('./../src/components/firstui/fui-textarea/fui-textarea.vue')['default']
FuiTimeaxis: typeof import('./../src/components/firstui/fui-timeaxis/fui-timeaxis.vue')['default']
FuiTimeaxisNode: typeof import('./../src/components/firstui/fui-timeaxis-node/fui-timeaxis-node.vue')['default']
FuiTimer: typeof import('./../src/components/firstui/fui-timer/fui-timer.vue')['default']
FuiToast: typeof import('./../src/components/firstui/fui-toast/fui-toast.vue')['default']
FuiTopPopup: typeof import('./../src/components/firstui/fui-top-popup/fui-top-popup.vue')['default']
FuiUpload: typeof import('./../src/components/firstui/fui-upload/fui-upload.vue')['default']
FuiUploadVideo: typeof import('./../src/components/firstui/fui-upload-video/fui-upload-video.vue')['default']
FuiVtabs: typeof import('./../src/components/firstui/fui-vtabs/fui-vtabs.vue')['default']
FuiVtabsContent: typeof import('./../src/components/firstui/fui-vtabs-content/fui-vtabs-content.vue')['default']
FuiWaterfall: typeof import('./../src/components/firstui/fui-waterfall/fui-waterfall.vue')['default']
FuiWaterfallItem: typeof import('./../src/components/firstui/fui-waterfall-item/fui-waterfall-item.vue')['default']
FDragItem: typeof import('./../src/components/FirstUI/fui-drag/f-drag-item.vue')['default']
FIndexListItem: typeof import('./../src/components/FirstUI/fui-index-list/f-index-list-item.vue')['default']
FuiActionsheet: typeof import('./../src/components/FirstUI/fui-actionsheet/fui-actionsheet.vue')['default']
FuiAlert: typeof import('./../src/components/FirstUI/fui-alert/fui-alert.vue')['default']
FuiAnimation: typeof import('./../src/components/FirstUI/fui-animation/fui-animation.vue')['default']
FuiAutograph: typeof import('./../src/components/FirstUI/fui-autograph/fui-autograph.vue')['default']
FuiAvatar: typeof import('./../src/components/FirstUI/fui-avatar/fui-avatar.vue')['default']
FuiBackdrop: typeof import('./../src/components/FirstUI/fui-backdrop/fui-backdrop.vue')['default']
FuiBacktop: typeof import('./../src/components/FirstUI/fui-backtop/fui-backtop.vue')['default']
FuiBadge: typeof import('./../src/components/FirstUI/fui-badge/fui-badge.vue')['default']
FuiBarcode: typeof import('./../src/components/FirstUI/fui-barcode/fui-barcode.vue')['default']
FuiBottomNavbar: typeof import('./../src/components/FirstUI/fui-bottom-navbar/fui-bottom-navbar.vue')['default']
FuiBottomPopup: typeof import('./../src/components/FirstUI/fui-bottom-popup/fui-bottom-popup.vue')['default']
FuiBubbleBox: typeof import('./../src/components/FirstUI/fui-bubble-box/fui-bubble-box.vue')['default']
FuiButton: typeof import('./../src/components/FirstUI/fui-button/fui-button.vue')['default']
FuiCalendar: typeof import('./../src/components/FirstUI/fui-calendar/fui-calendar.vue')['default']
FuiCard: typeof import('./../src/components/FirstUI/fui-card/fui-card.vue')['default']
FuiCascader: typeof import('./../src/components/FirstUI/fui-cascader/fui-cascader.vue')['default']
FuiCheckbox: typeof import('./../src/components/FirstUI/fui-checkbox/fui-checkbox.vue')['default']
FuiCheckboxGroup: typeof import('./../src/components/FirstUI/fui-checkbox-group/fui-checkbox-group.vue')['default']
FuiCircle: typeof import('./../src/components/FirstUI/fui-circle/fui-circle.vue')['default']
FuiCol: typeof import('./../src/components/FirstUI/fui-col/fui-col.vue')['default']
FuiCollapse: typeof import('./../src/components/FirstUI/fui-collapse/fui-collapse.vue')['default']
FuiCollapseItem: typeof import('./../src/components/FirstUI/fui-collapse-item/fui-collapse-item.vue')['default']
FuiCopyText: typeof import('./../src/components/FirstUI/fui-copy-text/fui-copy-text.vue')['default']
FuiCountDown: typeof import('./../src/components/FirstUI/fui-count-down/fui-count-down.vue')['default']
FuiCountdownVerify: typeof import('./../src/components/FirstUI/fui-countdown-verify/fui-countdown-verify.vue')['default']
FuiCubicBezier: typeof import('./../src/components/FirstUI/fui-cubic-bezier/fui-cubic-bezier.vue')['default']
FuiDataTag: typeof import('./../src/components/FirstUI/fui-data-tag/fui-data-tag.vue')['default']
FuiDatePicker: typeof import('./../src/components/FirstUI/fui-date-picker/fui-date-picker.vue')['default']
FuiDialog: typeof import('./../src/components/FirstUI/fui-dialog/fui-dialog.vue')['default']
FuiDigitalKeyboard: typeof import('./../src/components/FirstUI/fui-digital-keyboard/fui-digital-keyboard.vue')['default']
FuiDigitalRoller: typeof import('./../src/components/FirstUI/fui-digital-roller/fui-digital-roller.vue')['default']
FuiDivider: typeof import('./../src/components/FirstUI/fui-divider/fui-divider.vue')['default']
FuiDrag: typeof import('./../src/components/FirstUI/fui-drag/fui-drag.vue')['default']
FuiDrawer: typeof import('./../src/components/FirstUI/fui-drawer/fui-drawer.vue')['default']
FuiDropdownList: typeof import('./../src/components/FirstUI/fui-dropdown-list/fui-dropdown-list.vue')['default']
FuiDropdownMenu: typeof import('./../src/components/FirstUI/fui-dropdown-menu/fui-dropdown-menu.vue')['default']
FuiEmpty: typeof import('./../src/components/FirstUI/fui-empty/fui-empty.vue')['default']
FuiFab: typeof import('./../src/components/FirstUI/fui-fab/fui-fab.vue')['default']
FuiFilterBar: typeof import('./../src/components/FirstUI/fui-filter-bar/fui-filter-bar.vue')['default']
FuiFooter: typeof import('./../src/components/FirstUI/fui-footer/fui-footer.vue')['default']
FuiForm: typeof import('./../src/components/FirstUI/fui-form/fui-form.vue')['default']
FuiFormField: typeof import('./../src/components/FirstUI/fui-form-field/fui-form-field.vue')['default']
FuiFormItem: typeof import('./../src/components/FirstUI/fui-form-item/fui-form-item.vue')['default']
FuiGallery: typeof import('./../src/components/FirstUI/fui-gallery/fui-gallery.vue')['default']
FuiGrid: typeof import('./../src/components/FirstUI/fui-grid/fui-grid.vue')['default']
FuiGridItem: typeof import('./../src/components/FirstUI/fui-grid-item/fui-grid-item.vue')['default']
FuiIcon: typeof import('./../src/components/FirstUI/fui-icon/fui-icon.vue')['default']
FuiImageCropper: typeof import('./../src/components/FirstUI/fui-image-cropper/fui-image-cropper.vue')['default']
FuiIndexList: typeof import('./../src/components/FirstUI/fui-index-list/fui-index-list.vue')['default']
FuiInput: typeof import('./../src/components/FirstUI/fui-input/fui-input.vue')['default']
FuiInputNumber: typeof import('./../src/components/FirstUI/fui-input-number/fui-input-number.vue')['default']
FuiLabel: typeof import('./../src/components/FirstUI/fui-label/fui-label.vue')['default']
FuiLandscape: typeof import('./../src/components/FirstUI/fui-landscape/fui-landscape.vue')['default']
FuiLazyload: typeof import('./../src/components/FirstUI/fui-lazyload/fui-lazyload.vue')['default']
FuiLicensePlate: typeof import('./../src/components/FirstUI/fui-license-plate/fui-license-plate.vue')['default']
FuiList: typeof import('./../src/components/FirstUI/fui-list/fui-list.vue')['default']
FuiListCell: typeof import('./../src/components/FirstUI/fui-list-cell/fui-list-cell.vue')['default']
FuiLoadAni: typeof import('./../src/components/FirstUI/fui-load-ani/fui-load-ani.vue')['default']
FuiLoading: typeof import('./../src/components/FirstUI/fui-loading/fui-loading.vue')['default']
FuiLoadmore: typeof import('./../src/components/FirstUI/fui-loadmore/fui-loadmore.vue')['default']
FuiMessage: typeof import('./../src/components/FirstUI/fui-message/fui-message.vue')['default']
FuiModal: typeof import('./../src/components/FirstUI/fui-modal/fui-modal.vue')['default']
FuiNavBar: typeof import('./../src/components/FirstUI/fui-nav-bar/fui-nav-bar.vue')['default']
FuiNoticeBar: typeof import('./../src/components/FirstUI/fui-notice-bar/fui-notice-bar.vue')['default']
FuiOverflowHidden: typeof import('./../src/components/FirstUI/fui-overflow-hidden/fui-overflow-hidden.vue')['default']
FuiPagination: typeof import('./../src/components/FirstUI/fui-pagination/fui-pagination.vue')['default']
FuiPanel: typeof import('./../src/components/FirstUI/fui-panel/fui-panel.vue')['default']
FuiPicker: typeof import('./../src/components/FirstUI/fui-picker/fui-picker.vue')['default']
FuiPoster: typeof import('./../src/components/FirstUI/fui-poster/fui-poster.vue')['default']
FuiPosterWeex: typeof import('./../src/components/FirstUI/fui-poster-weex/fui-poster-weex.vue')['default']
FuiPreview: typeof import('./../src/components/FirstUI/fui-preview/fui-preview.vue')['default']
FuiProgress: typeof import('./../src/components/FirstUI/fui-progress/fui-progress.vue')['default']
FuiPuzzleVerify: typeof import('./../src/components/FirstUI/fui-puzzle-verify/fui-puzzle-verify.vue')['default']
FuiQrcode: typeof import('./../src/components/FirstUI/fui-qrcode/fui-qrcode.vue')['default']
FuiRadio: typeof import('./../src/components/FirstUI/fui-radio/fui-radio.vue')['default']
FuiRadioGroup: typeof import('./../src/components/FirstUI/fui-radio-group/fui-radio-group.vue')['default']
FuiRate: typeof import('./../src/components/FirstUI/fui-rate/fui-rate.vue')['default']
FuiResult: typeof import('./../src/components/FirstUI/fui-result/fui-result.vue')['default']
FuiRotateVerify: typeof import('./../src/components/FirstUI/fui-rotate-verify/fui-rotate-verify.vue')['default']
FuiRow: typeof import('./../src/components/FirstUI/fui-row/fui-row.vue')['default']
FuiSafeArea: typeof import('./../src/components/FirstUI/fui-safe-area/fui-safe-area.vue')['default']
FuiSearchBar: typeof import('./../src/components/FirstUI/fui-search-bar/fui-search-bar.vue')['default']
FuiSegmentedControl: typeof import('./../src/components/FirstUI/fui-segmented-control/fui-segmented-control.vue')['default']
FuiSelect: typeof import('./../src/components/FirstUI/fui-select/fui-select.vue')['default']
FuiShareSheet: typeof import('./../src/components/FirstUI/fui-share-sheet/fui-share-sheet.vue')['default']
FuiSingleInput: typeof import('./../src/components/FirstUI/fui-single-input/fui-single-input.vue')['default']
FuiSkeleton: typeof import('./../src/components/FirstUI/fui-skeleton/fui-skeleton.vue')['default']
FuiSlider: typeof import('./../src/components/FirstUI/fui-slider/fui-slider.vue')['default']
FuiSliderCaptcha: typeof import('./../src/components/FirstUI/fui-slider-captcha/fui-slider-captcha.vue')['default']
FuiSlideVerify: typeof import('./../src/components/FirstUI/fui-slide-verify/fui-slide-verify.vue')['default']
FuiSpin: typeof import('./../src/components/FirstUI/fui-spin/fui-spin.vue')['default']
FuiStatusBar: typeof import('./../src/components/FirstUI/fui-status-bar/fui-status-bar.vue')['default']
FuiSteps: typeof import('./../src/components/FirstUI/fui-steps/fui-steps.vue')['default']
FuiSticky: typeof import('./../src/components/FirstUI/fui-sticky/fui-sticky.vue')['default']
FuiSwipeAction: typeof import('./../src/components/FirstUI/fui-swipe-action/fui-swipe-action.vue')['default']
FuiSwipeactionGroup: typeof import('./../src/components/FirstUI/fui-swipeaction-group/fui-swipeaction-group.vue')['default']
FuiSwiperDot: typeof import('./../src/components/FirstUI/fui-swiper-dot/fui-swiper-dot.vue')['default']
FuiSwitch: typeof import('./../src/components/FirstUI/fui-switch/fui-switch.vue')['default']
FuiTabbar: typeof import('./../src/components/FirstUI/fui-tabbar/fui-tabbar.vue')['default']
FuiTable: typeof import('./../src/components/FirstUI/fui-table/fui-table.vue')['default']
FuiTabs: typeof import('./../src/components/FirstUI/fui-tabs/fui-tabs.vue')['default']
FuiTag: typeof import('./../src/components/FirstUI/fui-tag/fui-tag.vue')['default']
FuiText: typeof import('./../src/components/FirstUI/fui-text/fui-text.vue')['default']
FuiTextarea: typeof import('./../src/components/FirstUI/fui-textarea/fui-textarea.vue')['default']
FuiTimeaxis: typeof import('./../src/components/FirstUI/fui-timeaxis/fui-timeaxis.vue')['default']
FuiTimeaxisNode: typeof import('./../src/components/FirstUI/fui-timeaxis-node/fui-timeaxis-node.vue')['default']
FuiTimer: typeof import('./../src/components/FirstUI/fui-timer/fui-timer.vue')['default']
FuiToast: typeof import('./../src/components/FirstUI/fui-toast/fui-toast.vue')['default']
FuiTopPopup: typeof import('./../src/components/FirstUI/fui-top-popup/fui-top-popup.vue')['default']
FuiUpload: typeof import('./../src/components/FirstUI/fui-upload/fui-upload.vue')['default']
FuiUploadVideo: typeof import('./../src/components/FirstUI/fui-upload-video/fui-upload-video.vue')['default']
FuiVtabs: typeof import('./../src/components/FirstUI/fui-vtabs/fui-vtabs.vue')['default']
FuiVtabsContent: typeof import('./../src/components/FirstUI/fui-vtabs-content/fui-vtabs-content.vue')['default']
FuiWaterfall: typeof import('./../src/components/FirstUI/fui-waterfall/fui-waterfall.vue')['default']
FuiWaterfallItem: typeof import('./../src/components/FirstUI/fui-waterfall-item/fui-waterfall-item.vue')['default']
Icon: typeof import('./../src/components/Icon/index.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
ThumbnailPreview: typeof import('./../src/components/ThumbnailPreview/index.vue')['default']
......
import { defineConfig } from 'unocss'
import presetWeapp from 'unocss-preset-weapp'
import { transformerAttributify, transformerClass } from 'unocss-preset-weapp/transformer'
import { defaultAttributes, transformerAttributify, transformerClass } from 'unocss-preset-weapp/transformer'
const transformRules = {
':': '-',
'.': '_dl_',
'/': '_sl_',
'%': '_pes_',
'!': '_el_',
'#': '_wn_',
'(': '_lbl_',
')': '_lbr_',
'[': '_lfl_',
']': '_lfr_',
$: '_do_',
',': '_lco_',
'=': '_eqe_',
}
export default defineConfig({
presets: [
......@@ -20,9 +36,14 @@ export default defineConfig({
],
transformers: [
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerAttributify
transformerAttributify(),
transformerAttributify({
attributes: [...defaultAttributes, 'icon'],
transformRules,
}),
// https://github.com/MellowCo/unocss-preset-weapp/tree/main/src/transformer/transformerClass
transformerClass(),
transformerClass({
transformRules,
}),
],
})
......@@ -4,7 +4,7 @@ import type { ConfigEnv, UserConfig } from 'vite'
import dayjs from 'dayjs'
import pkg from './package.json'
import { createVitePlugins } from './build/vite'
import { getRootPath, wrapperEnv, isDevFn } from './build/utils'
import { getRootPath, isDevFn, wrapperEnv } from './build/utils'
// https://vitejs.dev/config/
export default ({ mode }: ConfigEnv): UserConfig => {
......@@ -17,12 +17,12 @@ export default ({ mode }: ConfigEnv): UserConfig => {
// /@xxxx => src/xxxx
{
find: /\/?@\//,
replacement: getRootPath('./src') + '/',
replacement: `${getRootPath('./src')}/`,
},
// /#xxxx => types/xxxx
{
find: /\/#\//,
replacement: getRootPath('./types') + '/',
replacement: `${getRootPath('./types')}/`,
},
],
},
......@@ -32,7 +32,7 @@ export default ({ mode }: ConfigEnv): UserConfig => {
},
build: {
target: 'es2015',
sourcemap: isDevFn(mode) ? true : false,
sourcemap: !!isDevFn(mode),
rollupOptions: {
output: {
inlineDynamicImports: false,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论