diff --git a/.eslintrc.js b/.eslintrc.js index 4253e17..0fba31a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -12,7 +12,6 @@ module.exports = { 'no-magic-numbers': 0, 'no-param-reassign': 0, 'fp/no-class': 0, - 'fp/no-delete': 0, 'fp/no-let': 0, 'fp/no-loops': 0, 'fp/no-mutating-assign': 0, diff --git a/package-lock.json b/package-lock.json index f678ad5..0145abc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5716,11 +5716,6 @@ "to-regex-range": "^5.0.1" } }, - "filter-obj": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.1.tgz", - "integrity": "sha512-yDEp513p7+iLdFHWBVdZFnRiOYwg8ZqmpaAiZCMjzqsbo7tCS4Qm4ulXOht337NGzkukKa9u3W4wqQ9tQPm3Ug==" - }, "find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -7900,7 +7895,8 @@ "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true }, "lodash.isempty": { "version": "4.4.0", @@ -7924,11 +7920,6 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" - }, "lodash.transform": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz", @@ -8959,6 +8950,11 @@ "symbol-observable": "^1.0.4" } }, + "omit.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz", + "integrity": "sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", diff --git a/package.json b/package.json index 9d318d5..614e8e8 100644 --- a/package.json +++ b/package.json @@ -69,16 +69,14 @@ "@netlify/zip-it-and-ship-it": "^1.3.12", "backoff": "^2.5.0", "clean-deep": "^3.3.0", - "filter-obj": "^2.0.1", "flush-write-stream": "^2.0.0", "folder-walker": "^3.2.0", "from2-array": "0.0.4", "hasha": "^5.0.0", "lodash.camelcase": "^4.3.0", - "lodash.get": "^4.4.2", - "lodash.set": "^4.3.2", "micro-api-client": "^3.3.0", "node-fetch": "^2.2.0", + "omit.js": "^2.0.2", "p-map": "^3.0.0", "p-wait-for": "^3.1.0", "parallel-transform": "^1.1.0", diff --git a/src/index.js b/src/index.js index 9ad83c6..14da497 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,4 @@ const dfn = require('@netlify/open-api') -const get = require('lodash.get') -const set = require('lodash.set') const pWaitFor = require('p-wait-for') const deploy = require('./deploy') @@ -41,15 +39,24 @@ class NetlifyAPI { } get accessToken() { - return (get(this, 'defaultHeaders.Authorization') || '').replace('Bearer ', '') || null + const { + defaultHeaders: { Authorization }, + } = this + if (typeof Authorization !== 'string' || !Authorization.startsWith('Bearer ')) { + return null + } + + return Authorization.replace('Bearer ', '') } set accessToken(token) { - if (token) { - set(this, 'defaultHeaders.Authorization', `Bearer ${token}`) - } else { + if (!token) { + // eslint-disable-next-line fp/no-delete delete this.defaultHeaders.Authorization + return } + + this.defaultHeaders.Authorization = `Bearer ${token}` } get basePath() { diff --git a/src/methods/response.js b/src/methods/response.js index b807ba3..37b2020 100644 --- a/src/methods/response.js +++ b/src/methods/response.js @@ -1,4 +1,5 @@ const { JSONHTTPError, TextHTTPError } = require('micro-api-client') +const omit = require('omit.js').default // Read and parse the HTTP response const parseResponse = async function (response) { @@ -38,8 +39,7 @@ const parseJsonResponse = function (response, textResponse, responseType) { } const getFetchError = function (error, url, opts) { - const data = { ...opts } - delete data.Authorization + const data = omit(opts, ['Authorization']) Object.assign(error, { name: 'FetchError', url, data }) return error } diff --git a/src/operations.js b/src/operations.js index cd9a22b..8800244 100644 --- a/src/operations.js +++ b/src/operations.js @@ -1,6 +1,5 @@ const { paths } = require('@netlify/open-api') - -const { omit } = require('./utils/omit') +const omit = require('omit.js').default // Retrieve all OpenAPI operations const getOperations = function () { diff --git a/src/utils/omit.js b/src/utils/omit.js deleted file mode 100644 index dc3ad99..0000000 --- a/src/utils/omit.js +++ /dev/null @@ -1,8 +0,0 @@ -const filterObj = require('filter-obj') - -// lodash.omit is 1400 lines of codes. filter-obj is much smaller and simpler. -const omit = function (obj, keys) { - return filterObj(obj, (key) => !keys.includes(key)) -} - -module.exports = { omit }