diff --git a/.eslintrc.node9.js b/.eslintrc.node9.js new file mode 100644 index 00000000..5d43d6fd --- /dev/null +++ b/.eslintrc.node9.js @@ -0,0 +1,13 @@ +const base = require('./.eslintrc.js'); + +module.exports = { + ...base, + plugins: [...new Set([...(base.plugins || []), 'node'])], + rules: { + ...base.rules, + 'node/no-unsupported-features/es-syntax': ['error', { + version: '>=9.0.0', + ignores: ['modules'] + }] + } +}; diff --git a/package.json b/package.json index 4c82341c..eb924c4e 100644 --- a/package.json +++ b/package.json @@ -11,29 +11,30 @@ }, "main": "cloudinary.js", "dependencies": { - "lodash": "^4.17.21" + "lodash": "^4.17.23" }, "devDependencies": { - "@types/expect.js": "^0.3.29", - "@types/mocha": "^7.0.2", - "@types/node": "^13.5.0", - "date-fns": "^2.16.1", - "dotenv": "4.x", - "dtslint": "^0.9.1", + "@types/expect.js": "^0.3.32", + "@types/mocha": "^10.0.10", + "@types/node": "^22.9.3", + "date-fns": "^2.30.0", + "dotenv": "^8.2.0", + "dtslint": "^2.0.6", "eslint": "^6.8.0", "eslint-config-airbnb-base": "^14.2.1", - "eslint-plugin-import": "^2.20.2", - "expect.js": "0.3.x", - "glob": "^7.1.6", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-node": "^11.1.0", + "expect.js": "^0.3.1", + "glob": "^7.2.3", "jsdoc": "^4.0.4", - "jsdom": "^9.12.0", - "jsdom-global": "2.1.1", - "mocha": "^6.2.3", - "nyc": "^14.1.1", - "rimraf": "^3.0.0", - "sinon": "^6.1.4", - "typescript": "^3.7.5", - "webpack-cli": "^3.2.1" + "jsdom": "^15.2.1", + "jsdom-global": "^3.0.2", + "mocha": "^7.2.0", + "nyc": "^15.1.0", + "rimraf": "^3.0.2", + "sinon": "^9.2.4", + "typescript": "^4.9.5", + "webpack-cli": "^3.3.12" }, "files": [ "lib/**/*", diff --git a/test/setup.js b/test/setup.js index 33c63230..66ac7fc2 100644 --- a/test/setup.js +++ b/test/setup.js @@ -1,4 +1,6 @@ -require('dotenv').load({ +const dotenv = require('dotenv'); +const dotenvInit = typeof dotenv.config === 'function' ? dotenv.config : dotenv.load; +dotenvInit({ silent: true }); diff --git a/test/testUtils/testConstants.js b/test/testUtils/testConstants.js index ca2f5e0e..ed118880 100644 --- a/test/testUtils/testConstants.js +++ b/test/testUtils/testConstants.js @@ -1,4 +1,6 @@ -require('dotenv').load({ +const dotenv = require('dotenv'); +const dotenvInit = typeof dotenv.config === 'function' ? dotenv.config : dotenv.load; +dotenvInit({ silent: true }); const UNIQUE_JOB_SUFFIX_ID = process.env.TRAVIS_JOB_ID || Math.floor(Math.random() * 999999); diff --git a/tools/createTestCloud.js b/tools/createTestCloud.js index f70cdeaa..5950589e 100644 --- a/tools/createTestCloud.js +++ b/tools/createTestCloud.js @@ -31,7 +31,9 @@ function setup() { fs.writeFileSync(`tools/cloudinary_url.sh`, URL); // This is needed for Travis fs.writeFileSync(ENV_FILE_PATH, URL); // This is needed for local develoepr tests - require('dotenv').load(); + const dotenv = require('dotenv'); + const dotenvInit = typeof dotenv.config === 'function' ? dotenv.config : dotenv.load; + dotenvInit(); cloudinary.config(true); @@ -58,4 +60,3 @@ function setup() { } setup(); - diff --git a/tools/scripts/lint.sh b/tools/scripts/lint.sh index 85686db5..e2c8b288 100755 --- a/tools/scripts/lint.sh +++ b/tools/scripts/lint.sh @@ -2,3 +2,5 @@ set -e; eslint ./test ./lib +# Enforce source syntax compatibility with the oldest supported runtime. +eslint --config .eslintrc.node9.js ./cloudinary.js ./lib diff --git a/types/cloudinary_ts_spec.ts b/types/cloudinary_ts_spec.ts index 6fead38a..d046009d 100644 --- a/types/cloudinary_ts_spec.ts +++ b/types/cloudinary_ts_spec.ts @@ -900,7 +900,7 @@ cloudinary.v2.uploader.upload("ftp://user1:mypass@ftp.example.com/sample.jpg", console.log(result, error); }); -// $ExpectType Promise | UploadStream +// $ExpectType UploadStream | Promise cloudinary.v2.uploader.upload_large("my_large_video.mp4", { resource_type: "video", @@ -910,7 +910,7 @@ cloudinary.v2.uploader.upload_large("my_large_video.mp4", console.log(result, error); }); -// $ExpectType Promise | UploadStream +// $ExpectType UploadStream | Promise cloudinary.v2.uploader.upload_large("my_large_video.mp4", {resource_type: "video"}, function (error, result) {