From ca3466246b8cc489a2fa1ed1a8ee13ce31802224 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 16 Nov 2022 23:19:53 +0000 Subject: [PATCH] updates --- api/index.ts | 20 ++-- package-lock.json | 248 ++++++++++------------------------------------ package.json | 9 +- 3 files changed, 70 insertions(+), 207 deletions(-) diff --git a/api/index.ts b/api/index.ts index 05ca7a6..c355e91 100644 --- a/api/index.ts +++ b/api/index.ts @@ -1,5 +1,4 @@ import { VercelRequest, VercelResponse } from '@vercel/node' -import axios, { AxiosResponse } from 'axios' interface NomadListLocation { city: string @@ -23,16 +22,25 @@ interface NomadListLocationResponse { } export default async (req: VercelRequest, res: VercelResponse) => { - if (!process.env.NOMADLIST_PROFILE) return - try { - const response: AxiosResponse = await axios( + if (!process.env.NOMADLIST_PROFILE) { + throw new Error('Missing NOMADLIST_PROFILE env variable') + } + if (!process.env.NOMADLIST_KEY) { + throw new Error('Missing NOMADLIST_KEY env variable') + } + + const response = await fetch( `https://nomadlist.com/@${process.env.NOMADLIST_PROFILE}.json?key=${process.env.NOMADLIST_KEY}` ) - if (!response?.data) return + if (!response || !response.ok || response.status !== 200) { + throw new Error("Couldn't fetch data from NomadList") + } + const json = (await response.json()) as NomadListLocationResponse + res.setHeader('Cache-Control', 's-maxage=1, stale-while-revalidate') // return only the location part of the data - res.json(response.data.location) + res.status(200).json(json.location) } catch (error) { res.status(500).send(error) } diff --git a/package-lock.json b/package-lock.json index 7aeff9d..e35ca2a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,14 @@ "name": "@kremalicious/location", "version": "0.1.0", "license": "MIT", - "dependencies": { - "axios": "^1.1.3" - }, "devDependencies": { "@types/node": "^18.11.9", - "@vercel/node": "^2.6.1", + "@vercel/node": "^2.6.3", "prettier": "^2.7.1", - "typescript": "^4.8.4" + "typescript": "^4.9.3" }, "engines": { - "node": ">=14" + "node": "16" } }, "node_modules/@edge-runtime/format": { @@ -102,22 +99,22 @@ "dev": true }, "node_modules/@vercel/build-utils": { - "version": "5.5.7", - "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.7.tgz", - "integrity": "sha512-F8brek8VcR3CLgcuKyXbb8k8y/KRwqO/yEV5dTUW6OZ0fGxxa+0RnaaY1UbHlCVF1Cnu+/IsMDsmsj9o1RCP5A==", + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.8.tgz", + "integrity": "sha512-DDgud8URl951OKbH9pwGs1MgR47UXSvNW1s+ftOjMKlw/qwDdCbIUclVKMcJc3MhLdnvRoo/a12f01b7dpwZDw==", "dev": true }, "node_modules/@vercel/node": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.6.1.tgz", - "integrity": "sha512-8AXrXxx1XKMT5OpSjQ5ghzjw0HYp4Cuv6GUWJ48jPcvzmU9VC5mZvjmhzmbIT4pPHdKjKZLPy8/rHqDjqztuJg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.6.3.tgz", + "integrity": "sha512-zLwv+V9VnMi3Hxrg098sGU0v92+eocwFtD5ZIqVoCiIVEmv9s3TzK+nkF0dYIsy+IW/AV8rcG8qPbgtSHvapIA==", "dev": true, "dependencies": { "@edge-runtime/vm": "2.0.0", - "@types/node": "*", - "@vercel/build-utils": "5.5.7", - "@vercel/node-bridge": "3.1.1", - "@vercel/static-config": "2.0.5", + "@types/node": "14.18.33", + "@vercel/build-utils": "5.5.8", + "@vercel/node-bridge": "3.1.2", + "@vercel/static-config": "2.0.6", "edge-runtime": "2.0.0", "esbuild": "0.14.47", "exit-hook": "2.2.1", @@ -127,9 +124,15 @@ } }, "node_modules/@vercel/node-bridge": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@vercel/node-bridge/-/node-bridge-3.1.1.tgz", - "integrity": "sha512-sWg2okUTj8IbeWnAaY3IKbDp3Vinj4zdt3Q11S+cRMXO+pAUbqJxmiPD5+MS0RyIVvufoNotooiitRGlgQjA5w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vercel/node-bridge/-/node-bridge-3.1.2.tgz", + "integrity": "sha512-dgcLXug0IqUeRsywf0G8IrhUFcgw+GYj+EZB4JneglKSofFBh3Xy/t7KfBUxLlKnoq6kyGYJvTmAVB1YBt11qw==", + "dev": true + }, + "node_modules/@vercel/node/node_modules/@types/node": { + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", "dev": true }, "node_modules/@vercel/node/node_modules/typescript": { @@ -146,9 +149,9 @@ } }, "node_modules/@vercel/static-config": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vercel/static-config/-/static-config-2.0.5.tgz", - "integrity": "sha512-f3wt+vQ3ARRR7hXHteMbrRNjH8iMETmP8f/t2HC8TpOjitjsjUKZg+3YS54AtLDEw/ZZ1s/7EG9nMK2BbU/t6g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vercel/static-config/-/static-config-2.0.6.tgz", + "integrity": "sha512-P0kh9ZBA9RrP4u0pDENxsuU/PAOw/ph+CoGgS5ZfDNa7P0qYhi9TfgVAtjFnGxi0dImq/S49uTVW5NPYWwc+ww==", "dev": true, "dependencies": { "ajv": "8.6.3", @@ -178,21 +181,6 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -233,17 +221,6 @@ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -259,14 +236,6 @@ "node": ">=8" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -706,38 +675,6 @@ "node": ">=8" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -833,25 +770,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -980,11 +898,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1150,9 +1063,9 @@ "dev": true }, "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -1270,22 +1183,22 @@ "dev": true }, "@vercel/build-utils": { - "version": "5.5.7", - "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.7.tgz", - "integrity": "sha512-F8brek8VcR3CLgcuKyXbb8k8y/KRwqO/yEV5dTUW6OZ0fGxxa+0RnaaY1UbHlCVF1Cnu+/IsMDsmsj9o1RCP5A==", + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-5.5.8.tgz", + "integrity": "sha512-DDgud8URl951OKbH9pwGs1MgR47UXSvNW1s+ftOjMKlw/qwDdCbIUclVKMcJc3MhLdnvRoo/a12f01b7dpwZDw==", "dev": true }, "@vercel/node": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.6.1.tgz", - "integrity": "sha512-8AXrXxx1XKMT5OpSjQ5ghzjw0HYp4Cuv6GUWJ48jPcvzmU9VC5mZvjmhzmbIT4pPHdKjKZLPy8/rHqDjqztuJg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@vercel/node/-/node-2.6.3.tgz", + "integrity": "sha512-zLwv+V9VnMi3Hxrg098sGU0v92+eocwFtD5ZIqVoCiIVEmv9s3TzK+nkF0dYIsy+IW/AV8rcG8qPbgtSHvapIA==", "dev": true, "requires": { "@edge-runtime/vm": "2.0.0", - "@types/node": "*", - "@vercel/build-utils": "5.5.7", - "@vercel/node-bridge": "3.1.1", - "@vercel/static-config": "2.0.5", + "@types/node": "14.18.33", + "@vercel/build-utils": "5.5.8", + "@vercel/node-bridge": "3.1.2", + "@vercel/static-config": "2.0.6", "edge-runtime": "2.0.0", "esbuild": "0.14.47", "exit-hook": "2.2.1", @@ -1294,6 +1207,12 @@ "typescript": "4.3.4" }, "dependencies": { + "@types/node": { + "version": "14.18.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", + "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", + "dev": true + }, "typescript": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.4.tgz", @@ -1303,15 +1222,15 @@ } }, "@vercel/node-bridge": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@vercel/node-bridge/-/node-bridge-3.1.1.tgz", - "integrity": "sha512-sWg2okUTj8IbeWnAaY3IKbDp3Vinj4zdt3Q11S+cRMXO+pAUbqJxmiPD5+MS0RyIVvufoNotooiitRGlgQjA5w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vercel/node-bridge/-/node-bridge-3.1.2.tgz", + "integrity": "sha512-dgcLXug0IqUeRsywf0G8IrhUFcgw+GYj+EZB4JneglKSofFBh3Xy/t7KfBUxLlKnoq6kyGYJvTmAVB1YBt11qw==", "dev": true }, "@vercel/static-config": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vercel/static-config/-/static-config-2.0.5.tgz", - "integrity": "sha512-f3wt+vQ3ARRR7hXHteMbrRNjH8iMETmP8f/t2HC8TpOjitjsjUKZg+3YS54AtLDEw/ZZ1s/7EG9nMK2BbU/t6g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@vercel/static-config/-/static-config-2.0.6.tgz", + "integrity": "sha512-P0kh9ZBA9RrP4u0pDENxsuU/PAOw/ph+CoGgS5ZfDNa7P0qYhi9TfgVAtjFnGxi0dImq/S49uTVW5NPYWwc+ww==", "dev": true, "requires": { "ajv": "8.6.3", @@ -1337,21 +1256,6 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "axios": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.1.3.tgz", - "integrity": "sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==", - "requires": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1389,14 +1293,6 @@ "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1409,11 +1305,6 @@ "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -1648,21 +1539,6 @@ "to-regex-range": "^5.0.1" } }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, "glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -1737,19 +1613,6 @@ "picomatch": "^2.3.1" } }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "requires": { - "mime-db": "1.52.0" - } - }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -1825,11 +1688,6 @@ "parse-ms": "^2.1.0" } }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1933,9 +1791,9 @@ "dev": true }, "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true }, "uri-js": { diff --git a/package.json b/package.json index 3ccc86a..eca82d4 100644 --- a/package.json +++ b/package.json @@ -10,20 +10,17 @@ "format": "prettier --ignore-path .gitignore './**/*.{css,yml,js,ts,tsx,json}' --write", "type-check": "tsc --noEmit" }, - "dependencies": { - "axios": "^1.1.3" - }, "devDependencies": { "@types/node": "^18.11.9", - "@vercel/node": "^2.6.1", + "@vercel/node": "^2.6.3", "prettier": "^2.7.1", - "typescript": "^4.8.4" + "typescript": "^4.9.3" }, "repository": { "type": "git", "url": "https://github.com/kremalicious/location" }, "engines": { - "node": ">=14" + "node": "16" } }