From 1e5cdfa781110b16086092518a5d573532cf556d Mon Sep 17 00:00:00 2001 From: solufa Date: Mon, 3 Apr 2023 01:21:14 +0900 Subject: [PATCH 1/4] feat: update fastify@4.15.0 and zod@3.21.4 --- package.json | 14 +-- yarn.lock | 272 ++++++++++++++++++++++++++++----------------------- 2 files changed, 155 insertions(+), 131 deletions(-) diff --git a/package.json b/package.json index a7d1510..caac695 100644 --- a/package.json +++ b/package.json @@ -80,22 +80,22 @@ "dependencies": { "aspida": "^1.11.0", "velona": "^0.7.0", - "zod": "^3.19.1" + "zod": "^3.21.4" }, "devDependencies": { "@aspida/axios": "^1.11.0", "@aspida/node-fetch": "^1.11.0", - "@fastify/multipart": "^7.3.0", + "@fastify/multipart": "^7.5.0", "@types/busboy": "^1.3.0", "@types/jest": "^29.2.3", "@types/node-fetch": "^2.5.10", "@types/rimraf": "^3.0.2", - "@typescript-eslint/eslint-plugin": "^5.42.1", - "@typescript-eslint/parser": "^5.42.1", + "@typescript-eslint/eslint-plugin": "^5.57.0", + "@typescript-eslint/parser": "^5.57.0", "axios": "^0.26.0", "class-transformer": "^0.5.1", "class-validator": "^0.13.1", - "eslint": "^8.27.0", + "eslint": "^8.37.0", "eslint-config-prettier": "^8.3.0", "eslint-config-standard": "^16.0.3", "eslint-plugin-import": "^2.25.4", @@ -103,7 +103,7 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^5.1.0", "eslint-plugin-standard": "^5.0.0", - "fastify": "^4.10.2", + "fastify": "^4.15.0", "jest": "^29.3.1", "node-fetch": "^2.6.1", "prettier": "^2.7.1", @@ -111,6 +111,6 @@ "rimraf": "^3.0.2", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", - "typescript": "^4.9.3" + "typescript": "^5.0.3" } } diff --git a/yarn.lock b/yarn.lock index 9d532c7..ac58ef3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -505,25 +505,42 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@eslint/eslintrc@^1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95" - integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.5.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724" + integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ== + +"@eslint/eslintrc@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" + integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" - globals "^13.15.0" + espree "^9.5.1" + globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.0" minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@fastify/ajv-compiler@^3.3.1": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.4.0.tgz#e001b7e234b5b704654b1d617d69fa63c348f2a7" - integrity sha512-69JnK7Cot+ktn7LD5TikP3b7psBPX55tYpQa8WSumt8r117PCa2zwHnImfBtRWYExreJlI48hr0WZaVrTBGj7w== +"@eslint/js@8.37.0": + version "8.37.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.37.0.tgz#cf1b5fa24217fe007f6487a26d765274925efa7d" + integrity sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A== + +"@fastify/ajv-compiler@^3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@fastify/ajv-compiler/-/ajv-compiler-3.5.0.tgz#459bff00fefbf86c96ec30e62e933d2379e46670" + integrity sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA== dependencies: ajv "^8.11.0" ajv-formats "^2.1.1" @@ -546,17 +563,17 @@ resolved "https://registry.yarnpkg.com/@fastify/error/-/error-3.0.0.tgz#bfcb7b33cec0196413083a91ef2edc7b2c88455b" integrity sha512-dPRyT40GiHRzSCll3/Jn2nPe25+E1VXc9tDwRAIKwFCxd5Np5wzgz1tmooWG3sV0qKgrBibihVoCna2ru4SEFg== -"@fastify/fast-json-stringify-compiler@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.1.0.tgz#ebf657ce4ec88e27ba311f7560eaa0b37de8719d" - integrity sha512-cTKBV2J9+u6VaKDhX7HepSfPSzw+F+TSd+k0wzifj4rG+4E5PjSFJCk19P8R6tr/72cuzgGd+mbB3jFT6lvAgw== +"@fastify/fast-json-stringify-compiler@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-4.2.0.tgz#52d047fac76b0d75bd660f04a5dd606659f57c5a" + integrity sha512-ypZynRvXA3dibfPykQN3RB5wBdEUgSGgny8Qc6k163wYPLD4mEGEDkACp+00YmqkGvIm8D/xYoHajwyEdWD/eg== dependencies: fast-json-stringify "^5.0.0" -"@fastify/multipart@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@fastify/multipart/-/multipart-7.3.0.tgz#152908c32fbca9fbe55ee6ca114b818d4c9d1e9b" - integrity sha512-tbzQiRFxoADCn0G10CqiQ/nDWWcfegtwg826Pfz2h7+XvuqJhGnko0TbafrWIY7hnGD+sNCGMdiTVsxxs6zigA== +"@fastify/multipart@^7.5.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@fastify/multipart/-/multipart-7.5.0.tgz#cc373ed1d2ffbf1397b3b6f8841860181403294c" + integrity sha512-cAQzz+vVRaNomTppActeqA3xZstF18WK9gjwCMAkoU6xKFljsnKewdGw2RkcYAaiWgFzGBQUD8owSKPFgzhJAA== dependencies: "@fastify/busboy" "^1.0.0" "@fastify/deepmerge" "^1.0.0" @@ -567,10 +584,10 @@ secure-json-parse "^2.4.0" stream-wormhole "^1.1.0" -"@humanwhocodes/config-array@^0.11.6": - version "0.11.7" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f" - integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw== +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -1062,29 +1079,30 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz#696b9cc21dfd4749c1c8ad1307f76a36a00aa0e3" - integrity sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg== +"@typescript-eslint/eslint-plugin@^5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz#52c8a7a4512f10e7249ca1e2e61f81c62c34365c" + integrity sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA== dependencies: - "@typescript-eslint/scope-manager" "5.42.1" - "@typescript-eslint/type-utils" "5.42.1" - "@typescript-eslint/utils" "5.42.1" + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.57.0" + "@typescript-eslint/type-utils" "5.57.0" + "@typescript-eslint/utils" "5.57.0" debug "^4.3.4" + grapheme-splitter "^1.0.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" - regexpp "^3.2.0" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.42.1.tgz#3e66156f2f74b11690b45950d8f5f28a62751d35" - integrity sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q== +"@typescript-eslint/parser@^5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.0.tgz#f675bf2cd1a838949fd0de5683834417b757e4fa" + integrity sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ== dependencies: - "@typescript-eslint/scope-manager" "5.42.1" - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/typescript-estree" "5.42.1" + "@typescript-eslint/scope-manager" "5.57.0" + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/typescript-estree" "5.57.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.13.0": @@ -1095,21 +1113,21 @@ "@typescript-eslint/types" "5.13.0" "@typescript-eslint/visitor-keys" "5.13.0" -"@typescript-eslint/scope-manager@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz#05e5e1351485637d466464237e5259b49f609b18" - integrity sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ== +"@typescript-eslint/scope-manager@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz#79ccd3fa7bde0758059172d44239e871e087ea36" + integrity sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw== dependencies: - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/visitor-keys" "5.42.1" + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/visitor-keys" "5.57.0" -"@typescript-eslint/type-utils@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz#21328feb2d4b193c5852b35aabd241ccc1449daa" - integrity sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg== +"@typescript-eslint/type-utils@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz#98e7531c4e927855d45bd362de922a619b4319f2" + integrity sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ== dependencies: - "@typescript-eslint/typescript-estree" "5.42.1" - "@typescript-eslint/utils" "5.42.1" + "@typescript-eslint/typescript-estree" "5.57.0" + "@typescript-eslint/utils" "5.57.0" debug "^4.3.4" tsutils "^3.21.0" @@ -1118,10 +1136,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.13.0.tgz#da1de4ae905b1b9ff682cab0bed6b2e3be9c04e5" integrity sha512-LmE/KO6DUy0nFY/OoQU0XelnmDt+V8lPQhh8MOVa7Y5k2gGRd6U9Kp3wAjhB4OHg57tUO0nOnwYQhRRyEAyOyg== -"@typescript-eslint/types@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.42.1.tgz#0d4283c30e9b70d2aa2391c36294413de9106df2" - integrity sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA== +"@typescript-eslint/types@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.0.tgz#727bfa2b64c73a4376264379cf1f447998eaa132" + integrity sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ== "@typescript-eslint/typescript-estree@5.13.0": version "5.13.0" @@ -1136,31 +1154,31 @@ semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz#f9a223ecb547a781d37e07a5ac6ba9ff681eaef0" - integrity sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw== +"@typescript-eslint/typescript-estree@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz#ebcd0ee3e1d6230e888d88cddf654252d41e2e40" + integrity sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw== dependencies: - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/visitor-keys" "5.42.1" + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/visitor-keys" "5.57.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.42.1.tgz#2789b1cd990f0c07aaa3e462dbe0f18d736d5071" - integrity sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ== +"@typescript-eslint/utils@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.0.tgz#eab8f6563a2ac31f60f3e7024b91bf75f43ecef6" + integrity sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw== dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.42.1" - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/typescript-estree" "5.42.1" + "@typescript-eslint/scope-manager" "5.57.0" + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/typescript-estree" "5.57.0" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" semver "^7.3.7" "@typescript-eslint/utils@^5.10.0": @@ -1183,12 +1201,12 @@ "@typescript-eslint/types" "5.13.0" eslint-visitor-keys "^3.0.0" -"@typescript-eslint/visitor-keys@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz#df10839adf6605e1cdb79174cf21e46df9be4872" - integrity sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A== +"@typescript-eslint/visitor-keys@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz#e2b2f4174aff1d15eef887ce3d019ecc2d7a8ac1" + integrity sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g== dependencies: - "@typescript-eslint/types" "5.42.1" + "@typescript-eslint/types" "5.57.0" eslint-visitor-keys "^3.3.0" abort-controller@^3.0.0: @@ -1668,11 +1686,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -content-type@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -2011,13 +2024,21 @@ eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.27.0: - version "8.27.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.27.0.tgz#d547e2f7239994ad1faa4bb5d84e5d809db7cf64" - integrity sha512-0y1bfG2ho7mty+SiILVf9PfuRA49ek4Nc60Wmmu62QlobNR+CeXa4xXIJgcuwSQgZiWaPH+5BDsctpIW0PR/wQ== - dependencies: - "@eslint/eslintrc" "^1.3.3" - "@humanwhocodes/config-array" "^0.11.6" +eslint-visitor-keys@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== + +eslint@^8.37.0: + version "8.37.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.37.0.tgz#1f660ef2ce49a0bfdec0b0d698e0b8b627287412" + integrity sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.2" + "@eslint/js" "8.37.0" + "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" ajv "^6.10.0" @@ -2027,16 +2048,15 @@ eslint@^8.27.0: doctrine "^3.0.0" escape-string-regexp "^4.0.0" eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" + eslint-visitor-keys "^3.4.0" + espree "^9.5.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" find-up "^5.0.0" glob-parent "^6.0.2" - globals "^13.15.0" + globals "^13.19.0" grapheme-splitter "^1.0.4" ignore "^5.2.0" import-fresh "^3.0.0" @@ -2051,29 +2071,28 @@ eslint@^8.27.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.1" - regexpp "^3.2.0" strip-ansi "^6.0.1" strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== +espree@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" + integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.0" esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" @@ -2140,6 +2159,11 @@ expect@^29.0.0, expect@^29.3.1: jest-message-util "^29.3.1" jest-util "^29.3.1" +fast-content-type-parse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-content-type-parse/-/fast-content-type-parse-1.0.0.tgz#cddce00df7d7efb3727d375a598e4904bfcb751c" + integrity sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA== + fast-decode-uri-component@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" @@ -2205,18 +2229,18 @@ fastify-plugin@^4.0.0: resolved "https://registry.yarnpkg.com/fastify-plugin/-/fastify-plugin-4.3.0.tgz#c6eaa87a7a0d6d1d16129e43e31d6bc1d8868e53" integrity sha512-M3+i368lV0OYTJ5TfClIoPKEKSOF7112iiPdwgfSR0gN98BjA1Nk+c6oBHtfcVt9KiMxl+EQKHC1QNWo3ZOpYQ== -fastify@^4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.10.2.tgz#0dd1cb8d16df3c14eff938c08aa6da63b4035d0d" - integrity sha512-0T+4zI6N3S8ex0LCZi3H4FasJR4AzWw834fUkPWvV8r6GBJkLmAOfFxH8f5V29Plef24IK0QSQD/tz1Nx+1UOA== +fastify@^4.15.0: + version "4.15.0" + resolved "https://registry.yarnpkg.com/fastify/-/fastify-4.15.0.tgz#4ebadaea706217467a332341f9cfa632072d51f2" + integrity sha512-m/CaRN8nf5uyYdrDe2qqq+0z3oGyE+A++qlKQoLJTI4WI0nWK9D6R3FxXQ3MVwt/md977GMR4F43pE9oqrS2zw== dependencies: - "@fastify/ajv-compiler" "^3.3.1" + "@fastify/ajv-compiler" "^3.5.0" "@fastify/error" "^3.0.0" - "@fastify/fast-json-stringify-compiler" "^4.1.0" + "@fastify/fast-json-stringify-compiler" "^4.2.0" abstract-logging "^2.0.1" avvio "^8.2.0" - content-type "^1.0.4" - find-my-way "^7.3.0" + fast-content-type-parse "^1.0.0" + find-my-way "^7.6.0" light-my-request "^5.6.1" pino "^8.5.0" process-warning "^2.0.0" @@ -2254,10 +2278,10 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -find-my-way@^7.3.0: - version "7.3.1" - resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-7.3.1.tgz#fd8a0b468a18c283e05be59f93a627f37e306cfa" - integrity sha512-kGvM08SOkqvheLcuQ8GW9t/H901Qb9rZEbcNWbXopzy4jDRoaJpJoObPSKf4MnQLZ20ZTp7rL5MpF6rf+pqmyg== +find-my-way@^7.6.0: + version "7.6.0" + resolved "https://registry.yarnpkg.com/find-my-way/-/find-my-way-7.6.0.tgz#f1e271fd1aafe87e87860662f9940124274f73c7" + integrity sha512-H7berWdHJ+5CNVr4ilLWPai4ml7Y2qAsxjw3pfeBxPigZmaDTzF0wjJLj90xRCmGcWYcyt050yN+34OZDJm1eQ== dependencies: fast-deep-equal "^3.1.3" fast-querystring "^1.0.0" @@ -2410,10 +2434,10 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" @@ -3656,7 +3680,7 @@ reflect-metadata@^0.1.13: resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -regexpp@^3.0.0, regexpp@^3.2.0: +regexpp@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== @@ -4081,10 +4105,10 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@^4.9.3: - version "4.9.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" - integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== +typescript@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.3.tgz#fe976f0c826a88d0a382007681cbb2da44afdedf" + integrity sha512-xv8mOEDnigb/tN9PSMTwSEqAnUvkoXMQlicOb0IUVDBSQCgBSaAAROUZYy2IcUy5qU6XajK5jjjO7TMWqBTKZA== unbox-primitive@^1.0.1: version "1.0.1" @@ -4238,7 +4262,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@^3.19.1: - version "3.19.1" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.19.1.tgz#112f074a97b50bfc4772d4ad1576814bd8ac4473" - integrity sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA== +zod@^3.21.4: + version "3.21.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db" + integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw== From 62d9521639c1417efd3f3d7341dd629ac87e5eef Mon Sep 17 00:00:00 2001 From: solufa Date: Mon, 3 Apr 2023 01:23:06 +0900 Subject: [PATCH 2/4] fix: remove unused props from validatorsToSchema --- servers/all/$server.ts | 9 ++++----- servers/minimum/$server.ts | 2 +- servers/noMulter/$server.ts | 2 +- servers/noTypedParams/$server.ts | 2 +- servers/noValidator/$server.ts | 9 ++++----- src/buildServerFile.ts | 9 ++++----- 6 files changed, 15 insertions(+), 18 deletions(-) diff --git a/servers/all/$server.ts b/servers/all/$server.ts index eae975a..7afc950 100644 --- a/servers/all/$server.ts +++ b/servers/all/$server.ts @@ -99,7 +99,7 @@ export type ServerHooks = {}> = { } export type ServerMethodHandler = {}> = ServerHandler | ServerHandlerPromise | { - validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + validators?: { [Key in keyof RequestParams]?: z.ZodType[Key]>} schemas?: { response?: { [V in HttpStatusOk]?: Schema }} hooks?: ServerHooks handler: ServerHandler | ServerHandlerPromise @@ -235,10 +235,9 @@ const validatorCompiler: FastifySchemaCompiler = ({ schema }) => return result.success ? { value: result.data } : { error: result.error } } -const validatorsToSchema = (validator?: { query?: unknown; body?: unknown; headers?: unknown }): FastifySchema => ({ - querystring: validator?.query, - body: validator?.body, - headers: validator?.headers +const validatorsToSchema = ({ query, ...validators }: { query?: unknown; body?: unknown; headers?: unknown }): FastifySchema => ({ + ...(query ? { querystring: query } : {}), + ...validators }) const methodToHandler = ( diff --git a/servers/minimum/$server.ts b/servers/minimum/$server.ts index 00cdb5c..8ac664c 100644 --- a/servers/minimum/$server.ts +++ b/servers/minimum/$server.ts @@ -59,7 +59,7 @@ export type ServerHooks = {}> = { } export type ServerMethodHandler = {}> = ServerHandler | ServerHandlerPromise | { - validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + validators?: { [Key in keyof RequestParams]?: z.ZodType[Key]>} schemas?: { response?: { [V in HttpStatusOk]?: Schema }} hooks?: ServerHooks handler: ServerHandler | ServerHandlerPromise diff --git a/servers/noMulter/$server.ts b/servers/noMulter/$server.ts index a9f138c..4f1b2f7 100644 --- a/servers/noMulter/$server.ts +++ b/servers/noMulter/$server.ts @@ -77,7 +77,7 @@ export type ServerHooks = {}> = { } export type ServerMethodHandler = {}> = ServerHandler | ServerHandlerPromise | { - validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + validators?: { [Key in keyof RequestParams]?: z.ZodType[Key]>} schemas?: { response?: { [V in HttpStatusOk]?: Schema }} hooks?: ServerHooks handler: ServerHandler | ServerHandlerPromise diff --git a/servers/noTypedParams/$server.ts b/servers/noTypedParams/$server.ts index fa90bba..9c8944a 100644 --- a/servers/noTypedParams/$server.ts +++ b/servers/noTypedParams/$server.ts @@ -90,7 +90,7 @@ export type ServerHooks = {}> = { } export type ServerMethodHandler = {}> = ServerHandler | ServerHandlerPromise | { - validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + validators?: { [Key in keyof RequestParams]?: z.ZodType[Key]>} schemas?: { response?: { [V in HttpStatusOk]?: Schema }} hooks?: ServerHooks handler: ServerHandler | ServerHandlerPromise diff --git a/servers/noValidator/$server.ts b/servers/noValidator/$server.ts index fffd0e4..5b50e42 100644 --- a/servers/noValidator/$server.ts +++ b/servers/noValidator/$server.ts @@ -82,7 +82,7 @@ export type ServerHooks = {}> = { } export type ServerMethodHandler = {}> = ServerHandler | ServerHandlerPromise | { - validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + validators?: { [Key in keyof RequestParams]?: z.ZodType[Key]>} schemas?: { response?: { [V in HttpStatusOk]?: Schema }} hooks?: ServerHooks handler: ServerHandler | ServerHandlerPromise @@ -135,10 +135,9 @@ const validatorCompiler: FastifySchemaCompiler = ({ schema }) => return result.success ? { value: result.data } : { error: result.error } } -const validatorsToSchema = (validator?: { query?: unknown; body?: unknown; headers?: unknown }): FastifySchema => ({ - querystring: validator?.query, - body: validator?.body, - headers: validator?.headers +const validatorsToSchema = ({ query, ...validators }: { query?: unknown; body?: unknown; headers?: unknown }): FastifySchema => ({ + ...(query ? { querystring: query } : {}), + ...validators }) const methodToHandler = ( diff --git a/src/buildServerFile.ts b/src/buildServerFile.ts index 6075fe7..4bd65f9 100644 --- a/src/buildServerFile.ts +++ b/src/buildServerFile.ts @@ -161,7 +161,7 @@ export type ServerHooks = {}> = { } export type ServerMethodHandler = {}> = ServerHandler | ServerHandlerPromise | { - validators?: Partial<{ [Key in keyof RequestParams]?: z.ZodType[Key]>}> + validators?: { [Key in keyof RequestParams]?: z.ZodType[Key]>} schemas?: { response?: { [V in HttpStatusOk]?: Schema }} hooks?: ServerHooks handler: ServerHandler | ServerHandlerPromise @@ -329,10 +329,9 @@ const validatorCompiler: FastifySchemaCompiler = ({ schema }) => hasValidatorsToSchema ? ` -const validatorsToSchema = (validator?: { query?: unknown; body?: unknown; headers?: unknown }): FastifySchema => ({ - querystring: validator?.query, - body: validator?.body, - headers: validator?.headers +const validatorsToSchema = ({ query, ...validators }: { query?: unknown; body?: unknown; headers?: unknown }): FastifySchema => ({ + ...(query ? { querystring: query } : {}), + ...validators })` : '' } From bf2de972c8696a3db54f3e16945eefd8a4e31e29 Mon Sep 17 00:00:00 2001 From: solufa Date: Mon, 3 Apr 2023 01:38:46 +0900 Subject: [PATCH 3/4] docs: replace images to svg --- README.md | 4 ++-- docs/assets/images/OneTS.svg | 1 + docs/assets/images/TwoTS.svg | 1 + docs/assets/images/architecture.png | Bin 39599 -> 0 bytes docs/assets/images/problem.png | Bin 25721 -> 0 bytes 5 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 docs/assets/images/OneTS.svg create mode 100644 docs/assets/images/TwoTS.svg delete mode 100644 docs/assets/images/architecture.png delete mode 100644 docs/assets/images/problem.png diff --git a/README.md b/README.md index 20726ef..b19f631 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ We are always forced to write "Two TypeScript". We waste a lot of time on dynamic testing using the browser and server.
- Why frourio ? + Why frourio ?


@@ -40,7 +40,7 @@ We waste a lot of time on dynamic testing using the browser and server. Frourio is a framework for developing web apps quickly and safely in **"One TypeScript"**.
- Architecture of create-frourio-app + Architecture of create-frourio-app


diff --git a/docs/assets/images/OneTS.svg b/docs/assets/images/OneTS.svg new file mode 100644 index 0000000..4fb9815 --- /dev/null +++ b/docs/assets/images/OneTS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/images/TwoTS.svg b/docs/assets/images/TwoTS.svg new file mode 100644 index 0000000..c864210 --- /dev/null +++ b/docs/assets/images/TwoTS.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/assets/images/architecture.png b/docs/assets/images/architecture.png deleted file mode 100644 index e4119d5a4c7e4f123e3c807802c5cd65ea78474b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39599 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 diff --git a/docs/assets/images/problem.png b/docs/assets/images/problem.png deleted file mode 100644 index e7fef0c517da230e51f35389e001ef6a921aa3ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25721 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 From 333cfafb3160beec08ebf660d6c52627e9465d26 Mon Sep 17 00:00:00 2001 From: solufa Date: Tue, 4 Apr 2023 06:39:00 +0900 Subject: [PATCH 4/4] chore: update CHANGELOG --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22c7a60..62da3e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [0.32.0](https://github.com/frouriojs/frourio/compare/v0.31.1...v0.32.0) (2023-04-04) + +### Features + +- update fastify@4.15.0 and zod@3.21.4 (https://github.com/frouriojs/frourio/pull/290) + +### Bug Fixes + +- remove unused props from validatorsToSchema (https://github.com/frouriojs/frourio/pull/269) + ## [0.31.1](https://github.com/frouriojs/frourio/compare/v0.31.0...v0.31.1) (2022-12-09) ### Bug Fixes