Commit 774aef24 authored by nanahira's avatar nanahira

catchup

parent 589953bb
...@@ -16,17 +16,6 @@ build: ...@@ -16,17 +16,6 @@ build:
paths: paths:
- dist/ - dist/
upload_to_minio:
stage: deploy
dependencies:
- build
tags:
- linux
script:
- aws s3 --endpoint=https://minio.mycard.moe:9000 sync --delete dist/ s3://nanahira/koishi-plugin/ygocard
only:
- master
deploy_npm: deploy_npm:
stage: deploy stage: deploy
dependencies: dependencies:
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"better-sqlite3": "^7.4.3", "better-sqlite3": "^7.4.3",
"schemastery-gen": "^1.0.3",
"source-map-support": "^0.5.20" "source-map-support": "^0.5.20"
}, },
"devDependencies": { "devDependencies": {
...@@ -23,8 +24,7 @@ ...@@ -23,8 +24,7 @@
"eslint": "^7.32.0", "eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.1", "eslint-plugin-prettier": "^3.4.1",
"koishi": "^4.0.0-alpha.9", "koishi": "^4.0.0-beta.2",
"koishi-utils-schemagen": "^1.1.7",
"leven": "3.1", "leven": "3.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"mustache": "^4.2.0", "mustache": "^4.2.0",
...@@ -217,34 +217,35 @@ ...@@ -217,34 +217,35 @@
} }
}, },
"node_modules/@koishijs/core": { "node_modules/@koishijs/core": {
"version": "4.0.0-alpha.10", "version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-alpha.10.tgz", "resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-beta.2.tgz",
"integrity": "sha512-VoCRV2pGyFsqxvvZnUz7a0/rvzwNoS4c61cdyKX05K3fjiHuzBWezk5vNwkgE5pvtCGmMXaOmMwSfazSZ/rLLQ==", "integrity": "sha512-L3KPpPOXJaxMCezDrn4Yv0whEKeOtLy1Xe71UQ36TKTDaQ/ytHTvu5ShLWxFYFvdh8yCCvcGx+6YErXJogfwmw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@koishijs/utils": "^5.0.0-alpha.6", "@koishijs/utils": "^5.0.0-beta.1",
"fastest-levenshtein": "^1.0.12" "fastest-levenshtein": "^1.0.12",
"schemastery": "^1.0.0"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/@koishijs/plugin-cache-lru": { "node_modules/@koishijs/plugin-cache-lru": {
"version": "1.0.0-alpha.1", "version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-cache-lru/-/plugin-cache-lru-1.0.0-alpha.1.tgz", "resolved": "https://registry.npmjs.org/@koishijs/plugin-cache-lru/-/plugin-cache-lru-1.0.0-beta.1.tgz",
"integrity": "sha512-GaLkOMMOy7djNSOT/eGHSUEu4kikmUjmxJIvOrAA/Y7oJAdXaTcY4gcZi5Vtie6NWXUIBssqqJmcJBgF/Bwwvw==", "integrity": "sha512-8l5o4RKEZ58wZJIrII3x/2vmZYdxkHGzfuUm5jWOBXzw1bDmJRa0q8RrYhjabs/QKbTa9Q+fzmcMtaMnKEGtaw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"koishi": "^4.0.0-alpha.10" "koishi": "^4.0.0-beta.2"
} }
}, },
"node_modules/@koishijs/utils": { "node_modules/@koishijs/utils": {
"version": "5.0.0-alpha.7", "version": "5.0.0-beta.1",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-alpha.7.tgz", "resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-beta.1.tgz",
"integrity": "sha512-+1kwdQVq5raRZT/5vgWtBPj1PidtDHXmvP2ksIFikW7qSquddpgopQN4l0IfbjJGOz+Bb8oYGcyqLjQf+FpQRQ==", "integrity": "sha512-JZae1kaums2beMH+AVc7jiKYJArnqCgw+1h2kEuvnaiaSHe7qNJp+BAhMJfxrXOe3VZ/oYKoUOd71FNjzaN2RA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"supports-color": "^8.1.0" "supports-color": "^8.1.0"
...@@ -3015,41 +3016,29 @@ ...@@ -3015,41 +3016,29 @@
} }
}, },
"node_modules/koishi": { "node_modules/koishi": {
"version": "4.0.0-alpha.11", "version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-alpha.11.tgz", "resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-beta.2.tgz",
"integrity": "sha512-gohzZ2IbMA21Z+f+MF6DpioGpaf0N3iXFcGXxOjcB/rwRZkT4nXvJsur3Id+O85xfsGpSoSnITRbxFU3CEz//w==", "integrity": "sha512-5nLpioIS/9aboZSQyyB8cacY8PMXUulP2fjDO1uAbacSpSANOGBp+KRvTZYqZPIVZxfKR+T8WdsqNAdcBmrCiQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@koa/router": "^10.1.1", "@koa/router": "^10.1.1",
"@koishijs/core": "^4.0.0-alpha.10", "@koishijs/core": "^4.0.0-beta.2",
"@koishijs/plugin-cache-lru": "^1.0.0-alpha.1", "@koishijs/plugin-cache-lru": "^1.0.0-beta.1",
"@koishijs/utils": "^5.0.0-alpha.7", "@koishijs/utils": "^5.0.0-beta.1",
"@types/koa": "*", "@types/koa": "*",
"@types/koa__router": "*", "@types/koa__router": "*",
"@types/ws": "^7.4.7", "@types/ws": "^7.4.7",
"axios": "^0.21.4", "axios": "^0.21.4",
"koa": "^2.13.1", "koa": "^2.13.1",
"koa-bodyparser": "^4.3.0", "koa-bodyparser": "^4.3.0",
"parseurl": "^1.3.3",
"path-to-regexp": "^6.2.0",
"proxy-agent": "^5.0.0" "proxy-agent": "^5.0.0"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=12.0.0"
} }
}, },
"node_modules/koishi-utils-schemagen": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/koishi-utils-schemagen/-/koishi-utils-schemagen-1.1.7.tgz",
"integrity": "sha512-0fajhFliGZEUI8/Bt5BqCnvhPw4Aha8ceNxHqpqCE6zwS+9KCkY4WVXGZT1wrtzWxC8WKx8en9LtxerZsJ9TQA==",
"dev": true,
"dependencies": {
"class-transformer": "^0.4.0",
"lodash": "^4.17.21"
},
"peerDependencies": {
"koishi": "^4.0.0-alpha.10",
"reflect-metadata": "^0.1.13"
}
},
"node_modules/leven": { "node_modules/leven": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
...@@ -3110,8 +3099,7 @@ ...@@ -3110,8 +3099,7 @@
"node_modules/lodash": { "node_modules/lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"dev": true
}, },
"node_modules/lodash.clonedeep": { "node_modules/lodash.clonedeep": {
"version": "4.5.0", "version": "4.5.0",
...@@ -3931,9 +3919,7 @@ ...@@ -3931,9 +3919,7 @@
"node_modules/reflect-metadata": { "node_modules/reflect-metadata": {
"version": "0.1.13", "version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
"dev": true,
"peer": true
}, },
"node_modules/regexpp": { "node_modules/regexpp": {
"version": "3.2.0", "version": "3.2.0",
...@@ -4076,6 +4062,24 @@ ...@@ -4076,6 +4062,24 @@
"url": "https://opencollective.com/webpack" "url": "https://opencollective.com/webpack"
} }
}, },
"node_modules/schemastery": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-1.0.0.tgz",
"integrity": "sha512-TwjfFcstdU1rSkV9/dATEk8YFLa1OOxCuGT2mMepZxpMAATQdVm7Fw2tRr4tEsrqAitP+X1/8P5Vv51OUBClAw=="
},
"node_modules/schemastery-gen": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/schemastery-gen/-/schemastery-gen-1.0.3.tgz",
"integrity": "sha512-qJQS0N5ZOsCsMkv4ZhQYS50j9iIEaizIABC3u/331pY737al2E9rrx77cK5yc/ChZUq+ejm3/eKIgATrpLaCnQ==",
"dependencies": {
"lodash": "^4.17.21",
"reflect-metadata": "^0.1.13",
"typed-reflector": "^1.0.5"
},
"peerDependencies": {
"schemastery": "^1.0.0"
}
},
"node_modules/semver": { "node_modules/semver": {
"version": "7.3.5", "version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
...@@ -4646,6 +4650,14 @@ ...@@ -4646,6 +4650,14 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/typed-reflector": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.5.tgz",
"integrity": "sha512-uVXjRyfia44NftErLxahyXgXN2C9GhLtFvVnUxdjwU4fRn0dFI+MbqEKy8oYAMdVkC8xRh8xm3r4w/C1aYZMXg==",
"dependencies": {
"reflect-metadata": "^0.1.13"
}
},
"node_modules/typescript": { "node_modules/typescript": {
"version": "4.4.4", "version": "4.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
...@@ -5100,28 +5112,29 @@ ...@@ -5100,28 +5112,29 @@
} }
}, },
"@koishijs/core": { "@koishijs/core": {
"version": "4.0.0-alpha.10", "version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-alpha.10.tgz", "resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.0.0-beta.2.tgz",
"integrity": "sha512-VoCRV2pGyFsqxvvZnUz7a0/rvzwNoS4c61cdyKX05K3fjiHuzBWezk5vNwkgE5pvtCGmMXaOmMwSfazSZ/rLLQ==", "integrity": "sha512-L3KPpPOXJaxMCezDrn4Yv0whEKeOtLy1Xe71UQ36TKTDaQ/ytHTvu5ShLWxFYFvdh8yCCvcGx+6YErXJogfwmw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@koishijs/utils": "^5.0.0-alpha.6", "@koishijs/utils": "^5.0.0-beta.1",
"fastest-levenshtein": "^1.0.12" "fastest-levenshtein": "^1.0.12",
"schemastery": "^1.0.0"
} }
}, },
"@koishijs/plugin-cache-lru": { "@koishijs/plugin-cache-lru": {
"version": "1.0.0-alpha.1", "version": "1.0.0-beta.1",
"resolved": "https://registry.npmjs.org/@koishijs/plugin-cache-lru/-/plugin-cache-lru-1.0.0-alpha.1.tgz", "resolved": "https://registry.npmjs.org/@koishijs/plugin-cache-lru/-/plugin-cache-lru-1.0.0-beta.1.tgz",
"integrity": "sha512-GaLkOMMOy7djNSOT/eGHSUEu4kikmUjmxJIvOrAA/Y7oJAdXaTcY4gcZi5Vtie6NWXUIBssqqJmcJBgF/Bwwvw==", "integrity": "sha512-8l5o4RKEZ58wZJIrII3x/2vmZYdxkHGzfuUm5jWOBXzw1bDmJRa0q8RrYhjabs/QKbTa9Q+fzmcMtaMnKEGtaw==",
"dev": true, "dev": true,
"requires": { "requires": {
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
} }
}, },
"@koishijs/utils": { "@koishijs/utils": {
"version": "5.0.0-alpha.7", "version": "5.0.0-beta.1",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-alpha.7.tgz", "resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-5.0.0-beta.1.tgz",
"integrity": "sha512-+1kwdQVq5raRZT/5vgWtBPj1PidtDHXmvP2ksIFikW7qSquddpgopQN4l0IfbjJGOz+Bb8oYGcyqLjQf+FpQRQ==", "integrity": "sha512-JZae1kaums2beMH+AVc7jiKYJArnqCgw+1h2kEuvnaiaSHe7qNJp+BAhMJfxrXOe3VZ/oYKoUOd71FNjzaN2RA==",
"dev": true, "dev": true,
"requires": { "requires": {
"supports-color": "^8.1.0" "supports-color": "^8.1.0"
...@@ -7263,34 +7276,26 @@ ...@@ -7263,34 +7276,26 @@
} }
}, },
"koishi": { "koishi": {
"version": "4.0.0-alpha.11", "version": "4.0.0-beta.2",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-alpha.11.tgz", "resolved": "https://registry.npmjs.org/koishi/-/koishi-4.0.0-beta.2.tgz",
"integrity": "sha512-gohzZ2IbMA21Z+f+MF6DpioGpaf0N3iXFcGXxOjcB/rwRZkT4nXvJsur3Id+O85xfsGpSoSnITRbxFU3CEz//w==", "integrity": "sha512-5nLpioIS/9aboZSQyyB8cacY8PMXUulP2fjDO1uAbacSpSANOGBp+KRvTZYqZPIVZxfKR+T8WdsqNAdcBmrCiQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@koa/router": "^10.1.1", "@koa/router": "^10.1.1",
"@koishijs/core": "^4.0.0-alpha.10", "@koishijs/core": "^4.0.0-beta.2",
"@koishijs/plugin-cache-lru": "^1.0.0-alpha.1", "@koishijs/plugin-cache-lru": "^1.0.0-beta.1",
"@koishijs/utils": "^5.0.0-alpha.7", "@koishijs/utils": "^5.0.0-beta.1",
"@types/koa": "*", "@types/koa": "*",
"@types/koa__router": "*", "@types/koa__router": "*",
"@types/ws": "^7.4.7", "@types/ws": "^7.4.7",
"axios": "^0.21.4", "axios": "^0.21.4",
"koa": "^2.13.1", "koa": "^2.13.1",
"koa-bodyparser": "^4.3.0", "koa-bodyparser": "^4.3.0",
"parseurl": "^1.3.3",
"path-to-regexp": "^6.2.0",
"proxy-agent": "^5.0.0" "proxy-agent": "^5.0.0"
} }
}, },
"koishi-utils-schemagen": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/koishi-utils-schemagen/-/koishi-utils-schemagen-1.1.7.tgz",
"integrity": "sha512-0fajhFliGZEUI8/Bt5BqCnvhPw4Aha8ceNxHqpqCE6zwS+9KCkY4WVXGZT1wrtzWxC8WKx8en9LtxerZsJ9TQA==",
"dev": true,
"requires": {
"class-transformer": "^0.4.0",
"lodash": "^4.17.21"
}
},
"leven": { "leven": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
...@@ -7336,8 +7341,7 @@ ...@@ -7336,8 +7341,7 @@
"lodash": { "lodash": {
"version": "4.17.21", "version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
"dev": true
}, },
"lodash.clonedeep": { "lodash.clonedeep": {
"version": "4.5.0", "version": "4.5.0",
...@@ -7963,9 +7967,7 @@ ...@@ -7963,9 +7967,7 @@
"reflect-metadata": { "reflect-metadata": {
"version": "0.1.13", "version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
"dev": true,
"peer": true
}, },
"regexpp": { "regexpp": {
"version": "3.2.0", "version": "3.2.0",
...@@ -8058,6 +8060,21 @@ ...@@ -8058,6 +8060,21 @@
"ajv-keywords": "^3.5.2" "ajv-keywords": "^3.5.2"
} }
}, },
"schemastery": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-1.0.0.tgz",
"integrity": "sha512-TwjfFcstdU1rSkV9/dATEk8YFLa1OOxCuGT2mMepZxpMAATQdVm7Fw2tRr4tEsrqAitP+X1/8P5Vv51OUBClAw=="
},
"schemastery-gen": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/schemastery-gen/-/schemastery-gen-1.0.3.tgz",
"integrity": "sha512-qJQS0N5ZOsCsMkv4ZhQYS50j9iIEaizIABC3u/331pY737al2E9rrx77cK5yc/ChZUq+ejm3/eKIgATrpLaCnQ==",
"requires": {
"lodash": "^4.17.21",
"reflect-metadata": "^0.1.13",
"typed-reflector": "^1.0.5"
}
},
"semver": { "semver": {
"version": "7.3.5", "version": "7.3.5",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
...@@ -8474,6 +8491,14 @@ ...@@ -8474,6 +8491,14 @@
"mime-types": "~2.1.24" "mime-types": "~2.1.24"
} }
}, },
"typed-reflector": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/typed-reflector/-/typed-reflector-1.0.5.tgz",
"integrity": "sha512-uVXjRyfia44NftErLxahyXgXN2C9GhLtFvVnUxdjwU4fRn0dFI+MbqEKy8oYAMdVkC8xRh8xm3r4w/C1aYZMXg==",
"requires": {
"reflect-metadata": "^0.1.13"
}
},
"typescript": { "typescript": {
"version": "4.4.4", "version": "4.4.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz",
......
import { DefineSchema, UseSchema } from 'koishi-utils-schemagen'; import { DefineSchema, RegisterSchema } from 'schemastery-gen';
import { Schema } from 'koishi'; import { Schema } from 'koishi';
import { YGOProCardLike } from './YGOProCard'; import { YGOProCardLike } from './YGOProCard';
import _ from 'lodash'; import _ from 'lodash';
import { renderTemplate } from './utility'; import { renderTemplate } from './utility';
@RegisterSchema()
export class YGOCardConfig { export class YGOCardConfig {
@DefineSchema({ type: 'string', desc: '命令名', default: 'card' }) @DefineSchema({ type: 'string', desc: '命令名', default: 'card' })
commandName: string; commandName: string;
...@@ -19,7 +20,9 @@ export class YGOCardConfig { ...@@ -19,7 +20,9 @@ export class YGOCardConfig {
@DefineSchema({ type: 'number', default: 100, desc: '查询最多显示的数量' }) @DefineSchema({ type: 'number', default: 100, desc: '查询最多显示的数量' })
matchCount: number; matchCount: number;
@UseSchema(Schema.select(['cn', 'en'], '显示语言').default('cn')) @DefineSchema({
schema: Schema.select(['cn', 'en'], '显示语言').default('cn'),
})
lang: 'cn' | 'en'; lang: 'cn' | 'en';
@DefineSchema({ type: 'boolean', desc: '是否展示卡图', default: true }) @DefineSchema({ type: 'boolean', desc: '是否展示卡图', default: true })
......
import 'source-map-support/register'; import 'source-map-support/register';
import { Context } from 'koishi'; import { Context } from 'koishi';
import { Config, MyPlugin } from './plugin'; import { MyPlugin } from './plugin';
export { Config } from './plugin'; import { YGOCardConfig } from './config';
export * from './plugin';
export * from './config';
export const name = 'ygocard'; export const name = 'ygocard';
const plugin = new MyPlugin(); const plugin = new MyPlugin();
export const schema = plugin.schema; export const schema = plugin.schema;
export function apply(ctx: Context, config: Config) { export function apply(ctx: Context, config: YGOCardConfig) {
ctx.plugin(plugin, config); ctx.plugin(plugin, config);
} }
import 'source-map-support/register'; import 'source-map-support/register';
import { Context, Schema } from 'koishi'; import { Context } from 'koishi';
import { YGOCardConfig } from './config'; import { YGOCardConfig } from './config';
import { schemaFromClass, schemaTransform } from 'koishi-utils-schemagen';
import sqlite, { Database } from 'better-sqlite3'; import sqlite, { Database } from 'better-sqlite3';
import { promises as fs } from 'fs'; import { promises as fs } from 'fs';
import _ from 'lodash'; import _ from 'lodash';
...@@ -16,7 +15,7 @@ export class MyPlugin { ...@@ -16,7 +15,7 @@ export class MyPlugin {
private ctx: Context; private ctx: Context;
private dbs: Database[] = []; private dbs: Database[] = [];
name = 'ygocard-main'; name = 'ygocard-main';
schema: Schema<Config> = schemaFromClass(YGOCardConfig); schema = YGOCardConfig;
private queryInDB(value: string, db: Database) { private queryInDB(value: string, db: Database) {
const possibleValueNumber = parseInt(value) || 0; const possibleValueNumber = parseInt(value) || 0;
const statement = db.prepare<[number, string, string]>( const statement = db.prepare<[number, string, string]>(
...@@ -55,9 +54,9 @@ export class MyPlugin { ...@@ -55,9 +54,9 @@ export class MyPlugin {
}), }),
); );
} }
async apply(ctx: Context, config: Config) { async apply(ctx: Context, config: YGOCardConfig) {
this.ctx = ctx; this.ctx = ctx;
this.config = schemaTransform(YGOCardConfig, config); this.config = config;
await this.loadDBs(); await this.loadDBs();
ctx.on('connect', () => this.loadDBs()); ctx.on('connect', () => this.loadDBs());
ctx.on('disconnect', () => { ctx.on('disconnect', () => {
......
const path = require('path'); const path = require('path');
const packgeInfo = require('./package.json');
function externalsFromDep() {
return Object.fromEntries(
[
...Object.keys(packgeInfo.dependencies || {}),
...Object.keys(packgeInfo.peerDependencies || {}),
]
.filter((dep) => dep !== 'source-map-support')
.map((dep) => [dep, dep]),
);
}
const packAll = !!process.env.PACK_ALL;
module.exports = { module.exports = {
entry: './src/index.ts', entry: './src/index.ts',
...@@ -23,10 +37,10 @@ module.exports = { ...@@ -23,10 +37,10 @@ module.exports = {
library: { library: {
type: 'commonjs', type: 'commonjs',
}, },
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, packAll ? 'dist/full' : 'dist'),
}, },
externals: { externals: {
koishi: 'koishi', koishi: 'koishi',
'better-sqlite3': 'better-sqlite3', ...(packAll ? {} : externalsFromDep()),
}, },
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment