diff --git a/package.json b/package.json index 076ae385d..e3473ba0a 100644 --- a/package.json +++ b/package.json @@ -79,6 +79,7 @@ "dayjs": "1.11.4", "ejs": "^3.1.8", "entities": "^4.3.1", + "file-type": "^17.1.6", "handlebars": "^4.7.7", "i": "^0.3.7", "image-size": "^1.0.2", @@ -86,6 +87,7 @@ "jszip": "^3.10.0", "lodash": "*", "marked": "^4.0.18", + "mime": "^3.0.0", "mkdirp": "^1.0.4", "mongoose": "6.5.0", "mongoose-aggregate-paginate-v2": "1.0.6", @@ -121,6 +123,7 @@ "@types/js-yaml": "^4.0.5", "@types/lodash": "4.14.182", "@types/marked": "^4.0.3", + "@types/mime": "^3.0.1", "@types/mongoose-aggregate-paginate-v2": "^1.0.5", "@types/node": "17.0.24", "@types/nodemailer": "6.4.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e70206304..2aa761bf8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,6 +30,7 @@ specifiers: '@types/js-yaml': ^4.0.5 '@types/lodash': 4.14.182 '@types/marked': ^4.0.3 + '@types/mime': ^3.0.1 '@types/mongoose-aggregate-paginate-v2': ^1.0.5 '@types/node': 17.0.24 '@types/nodemailer': 6.4.5 @@ -57,6 +58,7 @@ specifiers: ejs: ^3.1.8 entities: ^4.3.1 eslint: '*' + file-type: ^17.1.6 get-image-colors: ^4.0.1 handlebars: ^4.7.7 husky: 7.0.4 @@ -68,6 +70,7 @@ specifiers: lint-staged: 13.0.3 lodash: '*' marked: ^4.0.18 + mime: ^3.0.0 mkdirp: ^1.0.4 mongodb-memory-server: 8.8.0 mongoose: 6.5.0 @@ -132,6 +135,7 @@ dependencies: dayjs: 1.11.4 ejs: 3.1.8 entities: 4.3.1 + file-type: 17.1.6 handlebars: 4.7.7 i: 0.3.7 image-size: 1.0.2 @@ -139,6 +143,7 @@ dependencies: jszip: 3.10.0 lodash: 4.17.21 marked: 4.0.18 + mime: 3.0.0 mkdirp: 1.0.4 mongoose: 6.5.0 mongoose-aggregate-paginate-v2: 1.0.6 @@ -178,6 +183,7 @@ devDependencies: '@types/js-yaml': 4.0.5 '@types/lodash': 4.14.182 '@types/marked': 4.0.3 + '@types/mime': 3.0.1 '@types/mongoose-aggregate-paginate-v2': 1.0.5 '@types/node': 17.0.24 '@types/nodemailer': 6.4.5 @@ -1045,6 +1051,10 @@ packages: '@redis/client': 1.2.0 dev: false + /@tokenizer/token/0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: false + /@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true @@ -1228,6 +1238,10 @@ packages: resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} dev: true + /@types/mime/3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + /@types/minimist/1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true @@ -3754,6 +3768,15 @@ packages: flat-cache: 3.0.4 dev: true + /file-type/17.1.6: + resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.0.0 + token-types: 5.0.1 + dev: false + /filelist/1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} dependencies: @@ -5259,6 +5282,12 @@ packages: engines: {node: '>=4'} hasBin: true + /mime/3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + dev: false + /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -5957,6 +5986,11 @@ packages: resolution: {integrity: sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==} dev: false + /peek-readable/5.0.0: + resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} + engines: {node: '>=14.16'} + dev: false + /pend/1.2.0: resolution: {integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA=} dev: false @@ -6254,6 +6288,13 @@ packages: abort-controller: 3.0.0 dev: false + /readable-web-to-node-stream/3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.0 + dev: false + /readdirp/3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -6915,6 +6956,14 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: true + /strtok3/7.0.0: + resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.0.0 + dev: false + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -7120,6 +7169,14 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + /token-types/5.0.1: + resolution: {integrity: sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==} + engines: {node: '>=14.16'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: false + /tough-cookie/2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -7352,7 +7409,7 @@ packages: punycode: 2.1.1 /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} /utils-merge/1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} diff --git a/src/bootstrap.ts b/src/bootstrap.ts index 5d369101e..3bb330653 100644 --- a/src/bootstrap.ts +++ b/src/bootstrap.ts @@ -36,7 +36,7 @@ export async function bootstrap() { ejs: require("ejs"), }, templates: join(THEME_DIR), // 模板目录,模板名字应在 Render 中指定 - viewExt: "ejs", + viewExt: "ejs", // 模板文件的后缀名 defaultContext: { dev: process.env.NODE_ENV === "development", },