プレイグラウンド、サンドボックス、使い捨てスクリプト置き場
0

Configure Feed

Select the types of activity you want to include in your feed.

update fastify

Kohei Watanabe (Dec 9, 2024, 5:19 PM +0900) f55e325b 42888000

+303 -307
+4 -2
fastify-validation/package.json
··· 1 1 { 2 2 "devDependencies": { 3 - "fastify": "^4.22.2" 4 - } 3 + "fastify": "^5.1.0", 4 + "secure-json-parse": "^3.0.1" 5 + }, 6 + "packageManager": "pnpm@9.14.4+sha512.c8180b3fbe4e4bca02c94234717896b5529740a6cbadf19fa78254270403ea2f27d4e1d46a08a0f56c89b63dc8ebfd3ee53326da720273794e6200fcf0d184ab" 5 7 }
+264 -300
fastify-validation/pnpm-lock.yaml
··· 1 - lockfileVersion: '6.0' 1 + lockfileVersion: '9.0' 2 2 3 - devDependencies: 4 - fastify: 5 - specifier: ^4.22.2 6 - version: 4.22.2 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + devDependencies: 11 + fastify: 12 + specifier: ^5.1.0 13 + version: 5.1.0 14 + secure-json-parse: 15 + specifier: ^3.0.1 16 + version: 3.0.1 7 17 8 18 packages: 9 19 10 - /@fastify/ajv-compiler@3.5.0: 11 - resolution: {integrity: sha512-ebbEtlI7dxXF5ziNdr05mOY8NnDiPB1XvAlLHctRt/Rc+C3LCOVW5imUVX+mhvUhnNzmPBHewUkOFgGlCxgdAA==} 12 - dependencies: 13 - ajv: 8.12.0 14 - ajv-formats: 2.1.1(ajv@8.12.0) 15 - fast-uri: 2.2.0 16 - dev: true 20 + '@fastify/ajv-compiler@4.0.1': 21 + resolution: {integrity: sha512-DxrBdgsjNLP0YM6W5Hd6/Fmj43S8zMKiFJYgi+Ri3htTGAowPVG/tG1wpnWLMjufEnehRivUCKZ1pLDIoZdTuw==} 17 22 18 - /@fastify/deepmerge@1.3.0: 19 - resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} 20 - dev: true 23 + '@fastify/error@4.0.0': 24 + resolution: {integrity: sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==} 21 25 22 - /@fastify/error@3.3.0: 23 - resolution: {integrity: sha512-dj7vjIn1Ar8sVXj2yAXiMNCJDmS9MQ9XMlIecX2dIzzhjSHCyKo4DdXjXMs7wKW2kj6yvVRSpuQjOZ3YLrh56w==} 24 - dev: true 25 - 26 - /@fastify/fast-json-stringify-compiler@4.3.0: 27 - resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} 28 - dependencies: 29 - fast-json-stringify: 5.8.0 30 - dev: true 26 + '@fastify/fast-json-stringify-compiler@5.0.1': 27 + resolution: {integrity: sha512-f2d3JExJgFE3UbdFcpPwqNUEoHWmt8pAKf8f+9YuLESdefA0WgqxeT6DrGL4Yrf/9ihXNSKOqpjEmurV405meA==} 31 28 32 - /abort-controller@3.0.0: 33 - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 34 - engines: {node: '>=6.5'} 35 - dependencies: 36 - event-target-shim: 5.0.1 37 - dev: true 29 + '@fastify/merge-json-schemas@0.1.1': 30 + resolution: {integrity: sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA==} 38 31 39 - /abstract-logging@2.0.1: 32 + abstract-logging@2.0.1: 40 33 resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} 41 - dev: true 42 34 43 - /ajv-formats@2.1.1(ajv@8.12.0): 44 - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 35 + ajv-formats@3.0.1: 36 + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} 45 37 peerDependencies: 46 38 ajv: ^8.0.0 47 39 peerDependenciesMeta: 48 40 ajv: 49 41 optional: true 50 - dependencies: 51 - ajv: 8.12.0 52 - dev: true 53 42 54 - /ajv@8.12.0: 55 - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} 56 - dependencies: 57 - fast-deep-equal: 3.1.3 58 - json-schema-traverse: 1.0.0 59 - require-from-string: 2.0.2 60 - uri-js: 4.4.1 61 - dev: true 43 + ajv@8.17.1: 44 + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 62 45 63 - /archy@1.0.0: 64 - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} 65 - dev: true 66 - 67 - /atomic-sleep@1.0.0: 46 + atomic-sleep@1.0.0: 68 47 resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 69 48 engines: {node: '>=8.0.0'} 70 - dev: true 49 + 50 + avvio@9.1.0: 51 + resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} 52 + 53 + cookie@1.0.2: 54 + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 55 + engines: {node: '>=18'} 56 + 57 + fast-decode-uri-component@1.0.1: 58 + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 59 + 60 + fast-deep-equal@3.1.3: 61 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 62 + 63 + fast-json-stringify@6.0.0: 64 + resolution: {integrity: sha512-FGMKZwniMTgZh7zQp9b6XnBVxUmKVahQLQeRQHqwYmPDqDhcEKZ3BaQsxelFFI5PY7nN71OEeiL47/zUWcYe1A==} 65 + 66 + fast-querystring@1.1.2: 67 + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 71 68 72 - /avvio@8.2.1: 73 - resolution: {integrity: sha512-TAlMYvOuwGyLK3PfBb5WKBXZmXz2fVCgv23d6zZFdle/q3gPjmxBaeuC0pY0Dzs5PWMSgfqqEZkrye19GlDTgw==} 69 + fast-redact@3.5.0: 70 + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 71 + engines: {node: '>=6'} 72 + 73 + fast-uri@2.4.0: 74 + resolution: {integrity: sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==} 75 + 76 + fast-uri@3.0.3: 77 + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} 78 + 79 + fastify@5.1.0: 80 + resolution: {integrity: sha512-0SdUC5AoiSgMSc2Vxwv3WyKzyGMDJRAW/PgNsK1kZrnkO6MeqUIW9ovVg9F2UGIqtIcclYMyeJa4rK6OZc7Jxg==} 81 + 82 + fastq@1.17.1: 83 + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 84 + 85 + find-my-way@9.1.0: 86 + resolution: {integrity: sha512-Y5jIsuYR4BwWDYYQ2A/RWWE6gD8a0FMgtU+HOq1WKku+Cwdz8M1v8wcAmRXXM1/iqtoqg06v+LjAxMYbCjViMw==} 87 + engines: {node: '>=14'} 88 + 89 + forwarded@0.2.0: 90 + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 91 + engines: {node: '>= 0.6'} 92 + 93 + ipaddr.js@1.9.1: 94 + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 95 + engines: {node: '>= 0.10'} 96 + 97 + json-schema-ref-resolver@1.0.1: 98 + resolution: {integrity: sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw==} 99 + 100 + json-schema-traverse@1.0.0: 101 + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 102 + 103 + light-my-request@6.3.0: 104 + resolution: {integrity: sha512-bWTAPJmeWQH5suJNYwG0f5cs0p6ho9e6f1Ppoxv5qMosY+s9Ir2+ZLvvHcgA7VTDop4zl/NCHhOVVqU+kd++Ow==} 105 + 106 + on-exit-leak-free@2.1.2: 107 + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 108 + engines: {node: '>=14.0.0'} 109 + 110 + pino-abstract-transport@2.0.0: 111 + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} 112 + 113 + pino-std-serializers@7.0.0: 114 + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} 115 + 116 + pino@9.5.0: 117 + resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} 118 + hasBin: true 119 + 120 + process-warning@4.0.0: 121 + resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} 122 + 123 + proxy-addr@2.0.7: 124 + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 125 + engines: {node: '>= 0.10'} 126 + 127 + quick-format-unescaped@4.0.4: 128 + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 129 + 130 + real-require@0.2.0: 131 + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 132 + engines: {node: '>= 12.13.0'} 133 + 134 + require-from-string@2.0.2: 135 + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 136 + engines: {node: '>=0.10.0'} 137 + 138 + ret@0.5.0: 139 + resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} 140 + engines: {node: '>=10'} 141 + 142 + reusify@1.0.4: 143 + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 144 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 145 + 146 + rfdc@1.4.1: 147 + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 148 + 149 + safe-regex2@4.0.0: 150 + resolution: {integrity: sha512-Hvjfv25jPDVr3U+4LDzBuZPPOymELG3PYcSk5hcevooo1yxxamQL/bHs/GrEPGmMoMEwRrHVGiCA1pXi97B8Ew==} 151 + 152 + safe-stable-stringify@2.5.0: 153 + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 154 + engines: {node: '>=10'} 155 + 156 + secure-json-parse@2.7.0: 157 + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 158 + 159 + secure-json-parse@3.0.1: 160 + resolution: {integrity: sha512-9QR7G96th4QJ2+dJwvZB+JoXyt8PN+DbEjOr6kL2/JU4KH8Eb2sFdU+gt8EDdzWDWoWH0uocDdfCoFzdVSixUA==} 161 + 162 + semver@7.6.3: 163 + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 164 + engines: {node: '>=10'} 165 + hasBin: true 166 + 167 + set-cookie-parser@2.7.1: 168 + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 169 + 170 + sonic-boom@4.2.0: 171 + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} 172 + 173 + split2@4.2.0: 174 + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 175 + engines: {node: '>= 10.x'} 176 + 177 + thread-stream@3.1.0: 178 + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} 179 + 180 + toad-cache@3.7.0: 181 + resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} 182 + engines: {node: '>=12'} 183 + 184 + snapshots: 185 + 186 + '@fastify/ajv-compiler@4.0.1': 74 187 dependencies: 75 - archy: 1.0.0 76 - debug: 4.3.4 77 - fastq: 1.15.0 78 - transitivePeerDependencies: 79 - - supports-color 80 - dev: true 188 + ajv: 8.17.1 189 + ajv-formats: 3.0.1(ajv@8.17.1) 190 + fast-uri: 3.0.3 81 191 82 - /base64-js@1.5.1: 83 - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 84 - dev: true 192 + '@fastify/error@4.0.0': {} 85 193 86 - /buffer@6.0.3: 87 - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 194 + '@fastify/fast-json-stringify-compiler@5.0.1': 88 195 dependencies: 89 - base64-js: 1.5.1 90 - ieee754: 1.2.1 91 - dev: true 196 + fast-json-stringify: 6.0.0 92 197 93 - /cookie@0.5.0: 94 - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 95 - engines: {node: '>= 0.6'} 96 - dev: true 198 + '@fastify/merge-json-schemas@0.1.1': 199 + dependencies: 200 + fast-deep-equal: 3.1.3 97 201 98 - /debug@4.3.4: 99 - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 100 - engines: {node: '>=6.0'} 101 - peerDependencies: 102 - supports-color: '*' 103 - peerDependenciesMeta: 104 - supports-color: 105 - optional: true 202 + abstract-logging@2.0.1: {} 203 + 204 + ajv-formats@3.0.1(ajv@8.17.1): 205 + optionalDependencies: 206 + ajv: 8.17.1 207 + 208 + ajv@8.17.1: 106 209 dependencies: 107 - ms: 2.1.2 108 - dev: true 210 + fast-deep-equal: 3.1.3 211 + fast-uri: 3.0.3 212 + json-schema-traverse: 1.0.0 213 + require-from-string: 2.0.2 109 214 110 - /event-target-shim@5.0.1: 111 - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 112 - engines: {node: '>=6'} 113 - dev: true 215 + atomic-sleep@1.0.0: {} 114 216 115 - /events@3.3.0: 116 - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 117 - engines: {node: '>=0.8.x'} 118 - dev: true 217 + avvio@9.1.0: 218 + dependencies: 219 + '@fastify/error': 4.0.0 220 + fastq: 1.17.1 119 221 120 - /fast-content-type-parse@1.0.0: 121 - resolution: {integrity: sha512-Xbc4XcysUXcsP5aHUU7Nq3OwvHq97C+WnbkeIefpeYLX+ryzFJlU6OStFJhs6Ol0LkUGpcK+wL0JwfM+FCU5IA==} 122 - dev: true 222 + cookie@1.0.2: {} 123 223 124 - /fast-decode-uri-component@1.0.1: 125 - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 126 - dev: true 224 + fast-decode-uri-component@1.0.1: {} 127 225 128 - /fast-deep-equal@3.1.3: 129 - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 130 - dev: true 226 + fast-deep-equal@3.1.3: {} 131 227 132 - /fast-json-stringify@5.8.0: 133 - resolution: {integrity: sha512-VVwK8CFMSALIvt14U8AvrSzQAwN/0vaVRiFFUVlpnXSnDGrSkOAO5MtzyN8oQNjLd5AqTW5OZRgyjoNuAuR3jQ==} 228 + fast-json-stringify@6.0.0: 134 229 dependencies: 135 - '@fastify/deepmerge': 1.3.0 136 - ajv: 8.12.0 137 - ajv-formats: 2.1.1(ajv@8.12.0) 230 + '@fastify/merge-json-schemas': 0.1.1 231 + ajv: 8.17.1 232 + ajv-formats: 3.0.1(ajv@8.17.1) 138 233 fast-deep-equal: 3.1.3 139 - fast-uri: 2.2.0 140 - rfdc: 1.3.0 141 - dev: true 234 + fast-uri: 2.4.0 235 + json-schema-ref-resolver: 1.0.1 236 + rfdc: 1.4.1 142 237 143 - /fast-querystring@1.1.2: 144 - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 238 + fast-querystring@1.1.2: 145 239 dependencies: 146 240 fast-decode-uri-component: 1.0.1 147 - dev: true 241 + 242 + fast-redact@3.5.0: {} 148 243 149 - /fast-redact@3.3.0: 150 - resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} 151 - engines: {node: '>=6'} 152 - dev: true 244 + fast-uri@2.4.0: {} 153 245 154 - /fast-uri@2.2.0: 155 - resolution: {integrity: sha512-cIusKBIt/R/oI6z/1nyfe2FvGKVTohVRfvkOhvx0nCEW+xf5NoCXjAHcWp93uOUBchzYcsvPlrapAdX1uW+YGg==} 156 - dev: true 246 + fast-uri@3.0.3: {} 157 247 158 - /fastify@4.22.2: 159 - resolution: {integrity: sha512-rK8mF/1mZJHH6H/L22OhmilTgrp5XMkk3RHcSy03LC+TJ6+wLhbq+4U62bjns15VzIbBNgxTqAForBqtGAa0NQ==} 248 + fastify@5.1.0: 160 249 dependencies: 161 - '@fastify/ajv-compiler': 3.5.0 162 - '@fastify/error': 3.3.0 163 - '@fastify/fast-json-stringify-compiler': 4.3.0 250 + '@fastify/ajv-compiler': 4.0.1 251 + '@fastify/error': 4.0.0 252 + '@fastify/fast-json-stringify-compiler': 5.0.1 164 253 abstract-logging: 2.0.1 165 - avvio: 8.2.1 166 - fast-content-type-parse: 1.0.0 167 - fast-json-stringify: 5.8.0 168 - find-my-way: 7.6.2 169 - light-my-request: 5.10.0 170 - pino: 8.15.1 171 - process-warning: 2.2.0 254 + avvio: 9.1.0 255 + fast-json-stringify: 6.0.0 256 + find-my-way: 9.1.0 257 + light-my-request: 6.3.0 258 + pino: 9.5.0 259 + process-warning: 4.0.0 172 260 proxy-addr: 2.0.7 173 - rfdc: 1.3.0 261 + rfdc: 1.4.1 174 262 secure-json-parse: 2.7.0 175 - semver: 7.5.4 176 - tiny-lru: 11.0.1 177 - transitivePeerDependencies: 178 - - supports-color 179 - dev: true 263 + semver: 7.6.3 264 + toad-cache: 3.7.0 180 265 181 - /fastq@1.15.0: 182 - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 266 + fastq@1.17.1: 183 267 dependencies: 184 268 reusify: 1.0.4 185 - dev: true 186 269 187 - /find-my-way@7.6.2: 188 - resolution: {integrity: sha512-0OjHn1b1nCX3eVbm9ByeEHiscPYiHLfhei1wOUU9qffQkk98wE0Lo8VrVYfSGMgnSnDh86DxedduAnBf4nwUEw==} 189 - engines: {node: '>=14'} 270 + find-my-way@9.1.0: 190 271 dependencies: 191 272 fast-deep-equal: 3.1.3 192 273 fast-querystring: 1.1.2 193 - safe-regex2: 2.0.0 194 - dev: true 274 + safe-regex2: 4.0.0 195 275 196 - /forwarded@0.2.0: 197 - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 198 - engines: {node: '>= 0.6'} 199 - dev: true 276 + forwarded@0.2.0: {} 200 277 201 - /ieee754@1.2.1: 202 - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 203 - dev: true 278 + ipaddr.js@1.9.1: {} 204 279 205 - /ipaddr.js@1.9.1: 206 - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 207 - engines: {node: '>= 0.10'} 208 - dev: true 209 - 210 - /json-schema-traverse@1.0.0: 211 - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 212 - dev: true 213 - 214 - /light-my-request@5.10.0: 215 - resolution: {integrity: sha512-ZU2D9GmAcOUculTTdH9/zryej6n8TzT+fNGdNtm6SDp5MMMpHrJJkvAdE3c6d8d2chE9i+a//dS9CWZtisknqA==} 280 + json-schema-ref-resolver@1.0.1: 216 281 dependencies: 217 - cookie: 0.5.0 218 - process-warning: 2.2.0 219 - set-cookie-parser: 2.6.0 220 - dev: true 282 + fast-deep-equal: 3.1.3 283 + 284 + json-schema-traverse@1.0.0: {} 221 285 222 - /lru-cache@6.0.0: 223 - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 224 - engines: {node: '>=10'} 286 + light-my-request@6.3.0: 225 287 dependencies: 226 - yallist: 4.0.0 227 - dev: true 288 + cookie: 1.0.2 289 + process-warning: 4.0.0 290 + set-cookie-parser: 2.7.1 228 291 229 - /ms@2.1.2: 230 - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 231 - dev: true 292 + on-exit-leak-free@2.1.2: {} 232 293 233 - /on-exit-leak-free@2.1.0: 234 - resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} 235 - dev: true 236 - 237 - /pino-abstract-transport@1.1.0: 238 - resolution: {integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==} 294 + pino-abstract-transport@2.0.0: 239 295 dependencies: 240 - readable-stream: 4.4.2 241 296 split2: 4.2.0 242 - dev: true 243 297 244 - /pino-std-serializers@6.2.2: 245 - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 246 - dev: true 298 + pino-std-serializers@7.0.0: {} 247 299 248 - /pino@8.15.1: 249 - resolution: {integrity: sha512-Cp4QzUQrvWCRJaQ8Lzv0mJzXVk4z2jlq8JNKMGaixC2Pz5L4l2p95TkuRvYbrEbe85NQsDKrAd4zalf7Ml6WiA==} 250 - hasBin: true 300 + pino@9.5.0: 251 301 dependencies: 252 302 atomic-sleep: 1.0.0 253 - fast-redact: 3.3.0 254 - on-exit-leak-free: 2.1.0 255 - pino-abstract-transport: 1.1.0 256 - pino-std-serializers: 6.2.2 257 - process-warning: 2.2.0 303 + fast-redact: 3.5.0 304 + on-exit-leak-free: 2.1.2 305 + pino-abstract-transport: 2.0.0 306 + pino-std-serializers: 7.0.0 307 + process-warning: 4.0.0 258 308 quick-format-unescaped: 4.0.4 259 309 real-require: 0.2.0 260 - safe-stable-stringify: 2.4.3 261 - sonic-boom: 3.3.0 262 - thread-stream: 2.4.0 263 - dev: true 264 - 265 - /process-warning@2.2.0: 266 - resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} 267 - dev: true 310 + safe-stable-stringify: 2.5.0 311 + sonic-boom: 4.2.0 312 + thread-stream: 3.1.0 268 313 269 - /process@0.11.10: 270 - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 271 - engines: {node: '>= 0.6.0'} 272 - dev: true 314 + process-warning@4.0.0: {} 273 315 274 - /proxy-addr@2.0.7: 275 - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 276 - engines: {node: '>= 0.10'} 316 + proxy-addr@2.0.7: 277 317 dependencies: 278 318 forwarded: 0.2.0 279 319 ipaddr.js: 1.9.1 280 - dev: true 281 320 282 - /punycode@2.3.0: 283 - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 284 - engines: {node: '>=6'} 285 - dev: true 321 + quick-format-unescaped@4.0.4: {} 286 322 287 - /quick-format-unescaped@4.0.4: 288 - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 289 - dev: true 323 + real-require@0.2.0: {} 290 324 291 - /readable-stream@4.4.2: 292 - resolution: {integrity: sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==} 293 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 294 - dependencies: 295 - abort-controller: 3.0.0 296 - buffer: 6.0.3 297 - events: 3.3.0 298 - process: 0.11.10 299 - string_decoder: 1.3.0 300 - dev: true 325 + require-from-string@2.0.2: {} 301 326 302 - /real-require@0.2.0: 303 - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 304 - engines: {node: '>= 12.13.0'} 305 - dev: true 327 + ret@0.5.0: {} 306 328 307 - /require-from-string@2.0.2: 308 - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 309 - engines: {node: '>=0.10.0'} 310 - dev: true 329 + reusify@1.0.4: {} 311 330 312 - /ret@0.2.2: 313 - resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} 314 - engines: {node: '>=4'} 315 - dev: true 331 + rfdc@1.4.1: {} 316 332 317 - /reusify@1.0.4: 318 - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 319 - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 320 - dev: true 333 + safe-regex2@4.0.0: 334 + dependencies: 335 + ret: 0.5.0 321 336 322 - /rfdc@1.3.0: 323 - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} 324 - dev: true 337 + safe-stable-stringify@2.5.0: {} 325 338 326 - /safe-buffer@5.2.1: 327 - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 328 - dev: true 339 + secure-json-parse@2.7.0: {} 329 340 330 - /safe-regex2@2.0.0: 331 - resolution: {integrity: sha512-PaUSFsUaNNuKwkBijoAPHAK6/eM6VirvyPWlZ7BAQy4D+hCvh4B6lIG+nPdhbFfIbP+gTGBcrdsOaUs0F+ZBOQ==} 332 - dependencies: 333 - ret: 0.2.2 334 - dev: true 341 + secure-json-parse@3.0.1: {} 335 342 336 - /safe-stable-stringify@2.4.3: 337 - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} 338 - engines: {node: '>=10'} 339 - dev: true 343 + semver@7.6.3: {} 340 344 341 - /secure-json-parse@2.7.0: 342 - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 343 - dev: true 344 - 345 - /semver@7.5.4: 346 - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 347 - engines: {node: '>=10'} 348 - hasBin: true 349 - dependencies: 350 - lru-cache: 6.0.0 351 - dev: true 352 - 353 - /set-cookie-parser@2.6.0: 354 - resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 355 - dev: true 345 + set-cookie-parser@2.7.1: {} 356 346 357 - /sonic-boom@3.3.0: 358 - resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} 347 + sonic-boom@4.2.0: 359 348 dependencies: 360 349 atomic-sleep: 1.0.0 361 - dev: true 362 350 363 - /split2@4.2.0: 364 - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 365 - engines: {node: '>= 10.x'} 366 - dev: true 351 + split2@4.2.0: {} 367 352 368 - /string_decoder@1.3.0: 369 - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 370 - dependencies: 371 - safe-buffer: 5.2.1 372 - dev: true 373 - 374 - /thread-stream@2.4.0: 375 - resolution: {integrity: sha512-xZYtOtmnA63zj04Q+F9bdEay5r47bvpo1CaNqsKi7TpoJHcotUez8Fkfo2RJWpW91lnnaApdpRbVwCWsy+ifcw==} 353 + thread-stream@3.1.0: 376 354 dependencies: 377 355 real-require: 0.2.0 378 - dev: true 379 356 380 - /tiny-lru@11.0.1: 381 - resolution: {integrity: sha512-iNgFugVuQgBKrqeO/mpiTTgmBsTP0WL6yeuLfLs/Ctf0pI/ixGqIRm8sDCwMcXGe9WWvt2sGXI5mNqZbValmJg==} 382 - engines: {node: '>=12'} 383 - dev: true 384 - 385 - /uri-js@4.4.1: 386 - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 387 - dependencies: 388 - punycode: 2.3.0 389 - dev: true 390 - 391 - /yallist@4.0.0: 392 - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 393 - dev: true 357 + toad-cache@3.7.0: {}
+35 -5
fastify-validation/server.mjs
··· 1 1 import fastify from "fastify"; 2 + import { parse as JsonParse } from "secure-json-parse"; 2 3 3 4 const server = fastify({ logger: true }); 4 5 5 - server.get("/", { 6 + server.get("/array", { 7 + schema: { 8 + querystring: { 9 + type: "object", 10 + properties: { array: { type: "array", items: { type: "string" } } }, 11 + required: ["array"], 12 + }, 13 + }, 14 + async preValidation(req) { 15 + req.query.array = [req.query.array].flat().flatMap((s) => { 16 + try { 17 + const parsed = JsonParse(s); 18 + return Array.isArray(parsed) ? parsed : [s]; 19 + } catch { 20 + return [s]; 21 + } 22 + }); 23 + }, 24 + handler({ query }) { 25 + console.log({ ...query }); 26 + return "ok"; 27 + }, 28 + }); 29 + 30 + // valid 31 + await server.inject(`/array?array=["123",4]`); 32 + 33 + /* 34 + server.get("/dateTime", { 6 35 schema: { 7 36 querystring: { 8 37 type: "object", ··· 16 45 }); 17 46 18 47 // valid 19 - await server.inject("/?dateTime=2021-09-10T15:30:00Z"); 48 + await server.inject("/dateTime?dateTime=2021-09-10T15:30:00Z"); 20 49 21 - // valid 22 - await server.inject("/?dateTime=2021-09-10T15:30:00"); 50 + // valid: fasitfy@4.22.2, invalid fastify@5.1.0: querystring/dateTime must match format "date-time" 51 + await server.inject("/dateTime?dateTime=2021-09-10T15:30:00"); 23 52 24 53 // invalid: querystring/dateTime must match format "date-time" 25 - await server.inject("/?dateTime=2021-09-10"); 54 + await server.inject("/dateTime?dateTime=2021-09-10"); 55 + */