diff --git a/eslint.config.js b/eslint.config.js index 3cbc0ed..6a04e38 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -2,10 +2,11 @@ import js from "@eslint/js"; import globals from "globals"; import mochaPlugin from 'eslint-plugin-mocha'; // https://www.npmjs.com/package/eslint-plugin-mocha -import stylisticJs from '@stylistic/eslint-plugin-js' +import stylisticJs from '@stylistic/eslint-plugin' + export default [ js.configs.recommended, // Recommended config applied to all files - mochaPlugin.configs.flat.recommended, // or `mochaPlugin.configs.flat.all` to enable all + mochaPlugin.configs.recommended, // or `mochaPlugin.configs.all` to enable all { "files": ["lib/**/*.js", "examples/**/*.js", "tests/**/*.js"], "languageOptions": { diff --git a/lib/MTDropbox.js b/lib/MTDropbox.js index a4f35a4..60d4c81 100644 --- a/lib/MTDropbox.js +++ b/lib/MTDropbox.js @@ -22,13 +22,14 @@ export default class MTDropbox { }) .catch(filesListError => { MUST_LOG_DEBUG && console.log('filesListError', filesListError) - const {status, error} = filesListError; + const {status} = filesListError; if (status === 409) { reject(new Error(`Dropbox path '${path}' dont exist`)); return; } - const errorMessage = `Dropbox list ${path}: [status:${status}] ${error?.error_summary}`; - reject(new Error(errorMessage)); + reject(new Error( + `Dropbox list ${path}: ${dropboxErrorResponseToSummary(filesListError)}` + )); }); }) .catch(err => reject(err)); @@ -59,9 +60,9 @@ export default class MTDropbox { }) .catch(uploadErr => { MUST_LOG_DEBUG && console.log('uploadErr', uploadErr) - const {status, error} = uploadErr; - const errorMessage = `Dropbox upload ${dbxFilename}: [status:${status}] ${error?.error_summary}`; - reject(new Error(errorMessage)); + reject(new Error( + `Dropbox upload ${dbxFilename}: ${dropboxErrorResponseToSummary(uploadErr)}` + )); }); }); }) @@ -71,7 +72,7 @@ export default class MTDropbox { // https://github.com/dropbox/dropbox-sdk-js/blob/main/examples/javascript/node/download.js mongorestoreDownloadFromDropbox(options) { - return new Promise( (resolve, reject) => { + return new Promise((resolve, reject) => { const dbxFullFilename = options.dumpFile; const localPath = options.getDropboxLocalPath(); const fileName = extractFilename(dbxFullFilename); @@ -98,9 +99,9 @@ export default class MTDropbox { }) .catch(downloadErr => { MUST_LOG_DEBUG && console.log('downloadErr', downloadErr) - const {status, error} = downloadErr; - const errorMessage = `Dropbox download ${dbxFullFilename}: [status:${status}] ${error?.error_summary}`; - reject(new Error(errorMessage)); + reject(new Error( + `Dropbox download ${dbxFullFilename}: ${dropboxErrorResponseToSummary(downloadErr)}` + )); }); }) .catch(err => reject(err)); @@ -138,9 +139,9 @@ export default class MTDropbox { }) .catch(filesListError => { MUST_LOG_DEBUG && console.log('filesListError', filesListError) - const {status, error} = filesListError; - const errorMessage = `Dropbox list ${path}: [status:${status}] ${error?.error_summary}`; - reject(new Error(errorMessage)); + reject(new Error( + `Dropbox list ${path}: ${dropboxErrorResponseToSummary(filesListError)}` + )); }); }) .catch(err => reject(err)); @@ -227,4 +228,10 @@ function getDropbox(options) { .catch(err => reject(err)) }); }) +} + +function dropboxErrorResponseToSummary(dropboxResponseError) { + const {status, error} = dropboxResponseError + const error_summary = error?.error_summary /* deprecated */ || error; + return `[status:${status}] ${error_summary}`; } \ No newline at end of file diff --git a/package.json b/package.json index 5e35529..ab6431e 100644 --- a/package.json +++ b/package.json @@ -53,19 +53,19 @@ "dropbox-refresh-token": "^0.0.5" }, "devDependencies": { - "@eslint/js": "^9.0.0", - "@stylistic/eslint-plugin-js": "^4.4.1", - "@types/node": "^24.5.0", + "@eslint/js": "^9.35.0", + "@stylistic/eslint-plugin": "^5.3.1", + "@types/node": "^24.5.1", "chai": "^6.0.1", - "chai-string": "^1.5.0", - "eslint": "^9.0.0", + "chai-string": "^1.6.0", + "eslint": "^9.35.0", "eslint-plugin-eslint-plugin": "^7.0.0", "eslint-plugin-mocha": "^11.1.0", "eslint-plugin-node": "^11.1.0", "globals": "^16.4.0", "json5": "^2.2.3", "mocha": "^11.7.2", - "mongoose": "^8.3.2", + "mongoose": "^8.18.1", "npm-force-resolutions": "^0.0.10", "nyc": "^17.1.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1131d9b..443e406 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,25 +19,25 @@ importers: version: 10.34.0(@types/node-fetch@2.6.13) dropbox-refresh-token: specifier: ^0.0.5 - version: 0.0.5(@types/node@24.5.0) + version: 0.0.5(@types/node@24.5.1) devDependencies: '@eslint/js': - specifier: ^9.0.0 + specifier: ^9.35.0 version: 9.35.0 - '@stylistic/eslint-plugin-js': - specifier: ^4.4.1 - version: 4.4.1(eslint@9.35.0) + '@stylistic/eslint-plugin': + specifier: ^5.3.1 + version: 5.3.1(eslint@9.35.0) '@types/node': - specifier: ^24.5.0 - version: 24.5.0 + specifier: ^24.5.1 + version: 24.5.1 chai: specifier: ^6.0.1 version: 6.0.1 chai-string: - specifier: ^1.5.0 + specifier: ^1.6.0 version: 1.6.0(chai@6.0.1) eslint: - specifier: ^9.0.0 + specifier: ^9.35.0 version: 9.35.0 eslint-plugin-eslint-plugin: specifier: ^7.0.0 @@ -58,7 +58,7 @@ importers: specifier: ^11.7.2 version: 11.7.2 mongoose: - specifier: ^8.3.2 + specifier: ^8.18.1 version: 8.18.1 npm-force-resolutions: specifier: ^0.0.10 @@ -238,8 +238,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@stylistic/eslint-plugin-js@4.4.1': - resolution: {integrity: sha512-eLisyHvx7Sel8vcFZOEwDEBGmYsYM1SqDn81BWgmbqEXfXRf8oe6Rwp+ryM/8odNjlxtaaxp0Ihmt86CnLAxKg==} + '@stylistic/eslint-plugin@5.3.1': + resolution: {integrity: sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=9.0.0' @@ -253,8 +253,8 @@ packages: '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node@24.5.0': - resolution: {integrity: sha512-y1dMvuvJspJiPSDZUQ+WMBvF7dpnEqN4x9DDC9ie5Fs/HUZJA3wFp7EhHoVaKX/iI0cRoECV8X2jL8zi0xrHCg==} + '@types/node@24.5.1': + resolution: {integrity: sha512-/SQdmUP2xa+1rdx7VwB9yPq8PaKej8TD5cQ+XfKDPWWC+VDJU4rvVVagXqKUzhKjtFoNA8rXDJAkCxQPAe00+Q==} '@types/webidl-conversions@7.0.3': resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} @@ -262,6 +262,10 @@ packages: '@types/whatwg-url@11.0.5': resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + '@typescript-eslint/types@8.44.0': + resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -508,8 +512,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.218: - resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} + electron-to-chromium@1.5.220: + resolution: {integrity: sha512-TWXijEwR1ggr4BdAKrb1nMNqYLTx1/4aD1fkeZU+FVJGTKu53/T7UyHKXlqEX3Ub02csyHePbHmkvnrjcaYzMA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1124,6 +1128,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -1590,12 +1598,12 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/external-editor@1.0.2(@types/node@24.5.0)': + '@inquirer/external-editor@1.0.2(@types/node@24.5.1)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.5.0 + '@types/node': 24.5.1 '@inquirer/figures@1.0.13': {} @@ -1644,11 +1652,15 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@stylistic/eslint-plugin-js@4.4.1(eslint@9.35.0)': + '@stylistic/eslint-plugin@5.3.1(eslint@9.35.0)': dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0) + '@typescript-eslint/types': 8.44.0 eslint: 9.35.0 eslint-visitor-keys: 4.2.1 espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.3 '@types/estree@1.0.8': {} @@ -1656,10 +1668,10 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 24.5.0 + '@types/node': 24.5.1 form-data: 4.0.4 - '@types/node@24.5.0': + '@types/node@24.5.1': dependencies: undici-types: 7.12.0 @@ -1669,6 +1681,8 @@ snapshots: dependencies: '@types/webidl-conversions': 7.0.3 + '@typescript-eslint/types@8.44.0': {} + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -1742,7 +1756,7 @@ snapshots: dependencies: baseline-browser-mapping: 2.8.4 caniuse-lite: 1.0.30001743 - electron-to-chromium: 1.5.218 + electron-to-chromium: 1.5.220 node-releases: 2.0.21 update-browserslist-db: 1.1.3(browserslist@4.26.2) @@ -1872,10 +1886,10 @@ snapshots: diff@7.0.0: {} - dropbox-refresh-token@0.0.5(@types/node@24.5.0): + dropbox-refresh-token@0.0.5(@types/node@24.5.1): dependencies: cross-fetch: 4.1.0 - inquirer: 9.3.8(@types/node@24.5.0) + inquirer: 9.3.8(@types/node@24.5.1) yesno: 0.4.0 transitivePeerDependencies: - '@types/node' @@ -1896,7 +1910,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.218: {} + electron-to-chromium@1.5.220: {} emoji-regex@8.0.0: {} @@ -2186,9 +2200,9 @@ snapshots: inherits@2.0.4: {} - inquirer@9.3.8(@types/node@24.5.0): + inquirer@9.3.8(@types/node@24.5.1): dependencies: - '@inquirer/external-editor': 1.0.2(@types/node@24.5.0) + '@inquirer/external-editor': 1.0.2(@types/node@24.5.1) '@inquirer/figures': 1.0.13 ansi-escapes: 4.3.2 cli-width: 4.1.0 @@ -2560,6 +2574,8 @@ snapshots: picocolors@1.1.1: {} + picomatch@4.0.3: {} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0