From 04f114687edaaf7e96c1cc40668466d34c4646d0 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Thu, 17 Apr 2025 14:21:09 +0530 Subject: [PATCH 1/7] Test Commit --- .husky/pre-commit | 69 +++++++++++++++++++++++++++++++++++++++++++++++ .talismanrc | 7 ++--- package-lock.json | 17 ++++++++++++ package.json | 2 +- 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100755 .husky/pre-commit diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..4f1fbbc3 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,69 @@ +#!/usr/bin/env sh +# Pre-commit hook to run Snyk and Talisman scans, completing both before deciding to commit + +# Function to check if a command exists +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +# Check if Snyk is installed +if ! command_exists snyk; then + echo "Error: Snyk is not installed. Please install it and try again." + exit 1 +fi + +# Check if Talisman is installed +if ! command_exists talisman; then + echo "Error: Talisman is not installed. Please install it and try again." + exit 1 +fi + +# Allow bypassing the hook with an environment variable +if [ "$SKIP_HOOK" = "1" ]; then + echo "Skipping Snyk and Talisman scans (SKIP_HOOK=1)." + exit 0 +fi + +# Initialize variables to track scan results +snyk_failed=false +talisman_failed=false + +# Run Snyk vulnerability scan +echo "Running Snyk vulnerability scan..." +snyk test --all-projects > snyk_output.log 2>&1 +snyk_exit_code=$? + +if [ $snyk_exit_code -eq 0 ]; then + echo "Snyk scan passed: No vulnerabilities found." +elif [ $snyk_exit_code -eq 1 ]; then + echo "Snyk found vulnerabilities. See snyk_output.log for details." + snyk_failed=true +else + echo "Snyk scan failed with error (exit code $snyk_exit_code). See snyk_output.log for details." + snyk_failed=true +fi + +# Run Talisman secret scan (continues even if Snyk failed) +echo "Running Talisman secret scan..." +talisman --githook pre-commit > talisman_output.log 2>&1 +talisman_exit_code=$? + +if [ $talisman_exit_code -eq 0 ]; then + echo "Talisman scan passed: No secrets found." +else + echo "Talisman scan failed (exit code $talisman_exit_code). See talisman_output.log for details." + talisman_failed=true +fi + +# Evaluate results after both scans +if [ "$snyk_failed" = true ] || [ "$talisman_failed" = true ]; then + echo "Commit aborted due to issues found in one or both scans." + [ "$snyk_failed" = true ] && echo "- Snyk issues: Check snyk_output.log" + [ "$talisman_failed" = true ] && echo "- Talisman issues: Check talisman_output.log" + exit 1 +fi + +# If both scans pass, allow the commit +echo "All scans passed. Proceeding with commit.cd ." +rm -f snyk_output.log talisman_output.log +exit 0 \ No newline at end of file diff --git a/.talismanrc b/.talismanrc index 6d3f969f..2851ed18 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,5 +1,6 @@ -threshold: medium fileignoreconfig: -- filename: package-lock.json - checksum: 9d0340f9359927d477fe8ab4650642c068c592be63fb817651d866849e0dbbc2 + - filename: package-lock.json + checksum: 4e433a9d090a831a6dba0f4b5a49191c361be5db267f662c8599dcfb08ff2a33 + - filename: .husky/pre-commit + checksum: 5baabd7d2c391648163f9371f0e5e9484f8fb90fa2284cfc378732ec3192c193 version: "" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5b5b6f65..da133037 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,6 +46,7 @@ "eslint-plugin-node": "^9.2.0", "eslint-plugin-promise": "^4.3.1", "eslint-plugin-standard": "^4.1.0", + "husky": "^9.1.7", "jest": "^28.1.3", "jsdoc": "^4.0.4", "mocha": "^11.1.0", @@ -6554,6 +6555,22 @@ "node": ">=10.17.0" } }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.5.2", "dev": true, diff --git a/package.json b/package.json index 8134643c..c6a4cf36 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "scripts": { "clean": "rimraf coverage && rimraf dist", - "build": "npm run clean && npm run build:es5 && npm run build:es-modules && npm run buildall", + "build": "husky && chmod +x .husky/pre-commit && npm run clean && npm run build:es5 && npm run build:es-modules && npm run buildall", "build:es5": "BABEL_ENV=es5 babel lib -d dist/es5", "build:es-modules": "BABEL_ENV=es-modules babel lib -d dist/es-modules", "buildall": "npm run buildnode && npm run buildweb && npm run buildreactnative && npm run buildnativescript", From 9562b27bd118a128efddebb2010b3070f9ba6cb5 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Thu, 17 Apr 2025 14:25:48 +0530 Subject: [PATCH 2/7] Script change --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index c6a4cf36..d1935396 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ }, "scripts": { "clean": "rimraf coverage && rimraf dist", - "build": "husky && chmod +x .husky/pre-commit && npm run clean && npm run build:es5 && npm run build:es-modules && npm run buildall", + "build": "npm run clean && npm run build:es5 && npm run build:es-modules && npm run buildall", "build:es5": "BABEL_ENV=es5 babel lib -d dist/es5", "build:es-modules": "BABEL_ENV=es-modules babel lib -d dist/es-modules", "buildall": "npm run buildnode && npm run buildweb && npm run buildreactnative && npm run buildnativescript", @@ -39,7 +39,7 @@ "test:debug": "BABEL_ENV=test mocha debug --require @babel/register ./test", "lint": "eslint lib test", "format": "eslint --fix lib test", - "prepare": "npm run build", + "prepare": "npm run build && husky && chmod +x .husky/pre-commit", "pretest": "rimraf coverage && npm run lint", "precommit": "npm run lint", "prepush": "npm run test:unit", From d1306c927b636dc2b250a37f4b64206c9ca46f02 Mon Sep 17 00:00:00 2001 From: raj pandey Date: Thu, 17 Apr 2025 14:29:00 +0530 Subject: [PATCH 3/7] Adding husky as dependency --- package-lock.json | 3 +-- package.json | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index da133037..130e855d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "axios": "^1.8.4", "buffer": "^6.0.3", "form-data": "^4.0.2", + "husky": "^9.1.7", "lodash": "^4.17.21", "qs": "^6.14.0", "stream-browserify": "^3.0.0" @@ -46,7 +47,6 @@ "eslint-plugin-node": "^9.2.0", "eslint-plugin-promise": "^4.3.1", "eslint-plugin-standard": "^4.1.0", - "husky": "^9.1.7", "jest": "^28.1.3", "jsdoc": "^4.0.4", "mocha": "^11.1.0", @@ -6559,7 +6559,6 @@ "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", - "dev": true, "license": "MIT", "bin": { "husky": "bin.js" diff --git a/package.json b/package.json index d1935396..f3754452 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "axios": "^1.8.4", "buffer": "^6.0.3", "form-data": "^4.0.2", + "husky": "^9.1.7", "lodash": "^4.17.21", "qs": "^6.14.0", "stream-browserify": "^3.0.0" From 08943f1fd8f045dd337a62e95a411fbcb0b95fc3 Mon Sep 17 00:00:00 2001 From: Aravind Kumar Date: Wed, 23 Apr 2025 21:38:20 +0530 Subject: [PATCH 4/7] policy-scan.yml --- .github/workflows/policy-scan.yml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/policy-scan.yml b/.github/workflows/policy-scan.yml index 13bd3623..ff259231 100644 --- a/.github/workflows/policy-scan.yml +++ b/.github/workflows/policy-scan.yml @@ -24,4 +24,23 @@ jobs: - uses: actions/checkout@master - name: Checks for License file run: | - if ! [[ -f "LICENSE" || -f "License.txt" || -f "LICENSE.md" ]]; then exit 1; fi \ No newline at end of file + expected_license_files=("LICENSE" "LICENSE.txt" "LICENSE.md" "License.txt") + license_file_found=false + current_year=$(date +"%Y") + + for license_file in "${expected_license_files[@]}"; do + if [ -f "$license_file" ]; then + license_file_found=true + # check the license file for the current year, if not exists, exit with error + if ! grep -q "$current_year" "$license_file"; then + echo "License file $license_file does not contain the current year." + exit 2 + fi + break + fi + done + + if [ "$license_file_found" = false ]; then + echo "No license file found. Please add a license file to the repository." + exit 1 + fi \ No newline at end of file From 4607de0c019879f5c2de2885be32630b2d0729d1 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:12:21 +0530 Subject: [PATCH 5/7] Region support added --- CHANGELOG.md | 4 ++ lib/contentstack.js | 27 ++++++++++++- lib/core/contentstackHTTPClient.js | 3 ++ package-lock.json | 4 +- package.json | 2 +- test/sanity-check/api/user-test.js | 63 ++++++++++++++++++++++++++++++ 6 files changed, 98 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cc607393..adabd7d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [v1.21.0](https://github.com/contentstack/contentstack-management-javascript/tree/v1.21.0) (2025-05-05) + - Enhancement + - Region support added + ## [v1.20.3](https://github.com/contentstack/contentstack-management-javascript/tree/v1.20.3) (2025-04-21) - Fix - Handle the sanity tests when ENVs are not provided diff --git a/lib/contentstack.js b/lib/contentstack.js index cf716495..86ed1844 100644 --- a/lib/contentstack.js +++ b/lib/contentstack.js @@ -7,6 +7,14 @@ import clonedeep from 'lodash/cloneDeep' import getUserAgent from './core/Util.js' import contentstackClient from './contentstackClient.js' import httpClient from './core/contentstackHTTPClient.js' +const regionHostMap = { + 'NA': 'api.contentstack.io', + 'EU': 'eu-api.contentstack.com', + 'AZURE_NA': 'azure-na-api.contentstack.com', + 'AZURE_EU': 'azure-eu-api.contentstack.com', + 'GCP_NA': 'gcp-na-api.contentstack.com', + 'GCP_EU': 'gcp-eu-api.contentstack.com' +} /** * Create client instance @@ -161,9 +169,24 @@ import httpClient from './core/contentstackHTTPClient.js' * @returns Contentstack.Client */ export function client (params = {}) { - const defaultParameter = { - defaultHostName: 'api.contentstack.io' + + let defaultHostName + +if (params.region) { + const region = params.region.toUpperCase() + if (!regionHostMap[region]) { + throw new Error(`Invalid region '${params.region}' provided. Allowed regions are: ${Object.keys(regionHostMap).join(', ')}`) } + defaultHostName = regionHostMap[region] +} else if (params.host) { + defaultHostName = params.host +} else { + defaultHostName = regionHostMap['NA'] +} + +const defaultParameter = { + defaultHostName: defaultHostName +} const sdkAgent = `contentstack-management-javascript/${packages.version}` const userAgentHeader = getUserAgent(sdkAgent, diff --git a/lib/core/contentstackHTTPClient.js b/lib/core/contentstackHTTPClient.js index 67cf14ba..327ec07c 100644 --- a/lib/core/contentstackHTTPClient.js +++ b/lib/core/contentstackHTTPClient.js @@ -53,6 +53,9 @@ export default function contentstackHttpClient (options) { let port = config.port || 443 const version = config.version || 'v3' + if (config.region) { + config.host = config.defaultHostName //set region on priority + } if (isHost(config.host)) { const parsed = config.host.split(':') if (parsed.length === 2) { diff --git a/package-lock.json b/package-lock.json index 130e855d..2850ae8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@contentstack/management", - "version": "1.20.3", + "version": "1.21.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@contentstack/management", - "version": "1.20.3", + "version": "1.21.0", "license": "MIT", "dependencies": { "assert": "^2.1.0", diff --git a/package.json b/package.json index f3754452..90f1d66b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/management", - "version": "1.20.3", + "version": "1.21.0", "description": "The Content Management API is used to manage the content of your Contentstack account", "main": "./dist/node/contentstack-management.js", "browser": "./dist/web/contentstack-management.js", diff --git a/test/sanity-check/api/user-test.js b/test/sanity-check/api/user-test.js index 838828cf..0929f5e0 100644 --- a/test/sanity-check/api/user-test.js +++ b/test/sanity-check/api/user-test.js @@ -4,6 +4,7 @@ import { contentstackClient } from '../../sanity-check/utility/ContentstackClien import { jsonWrite } from '../../sanity-check/utility/fileOperations/readwrite' import axios from 'axios' import dotenv from 'dotenv' +import * as contentstack from '../../../lib/contentstack.js' dotenv.config() var authtoken = '' @@ -74,4 +75,66 @@ describe('Contentstack User Session api Test', () => { }) .catch(done) }) + + it('should get host for NA region by default', done => { + const client = contentstack.client() + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('api.contentstack.io', 'region NA set correctly by default') + done() + }) + + it('should get host for NA region', done => { + const client = contentstack.client({ region: 'NA' }) + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('api.contentstack.io', 'region NA set correctly') + done() + }) + + it('should get host for NA region on priority', done => { + const client = contentstack.client({ region: 'NA', host: 'dev11-api.csnonprod.com' }) + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('api.contentstack.io', 'region NA set correctly with priority') + done() + }) + + it('should get custom host', done => { + const client = contentstack.client({ host: 'dev11-api.csnonprod.com' }) + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('dev11-api.csnonprod.com', 'custom host set correctly') + done() + }) + + it('should get host for EU region', done => { + const client = contentstack.client({ region: 'EU' }) + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('eu-api.contentstack.com', 'region EU set correctly') + done() + }) + + it('should get host for AZURE_NA region', done => { + const client = contentstack.client({ region: 'AZURE_NA' }) + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('azure-na-api.contentstack.com', 'region AZURE_NA set correctly') + done() + }) + + it('should get host for GCP_NA region', done => { + const client = contentstack.client({ region: 'GCP_NA' }) + const baseUrl = client.axiosInstance.defaults.baseURL + expect(baseUrl).to.include('gcp-na-api.contentstack.com', 'region GCP_NA set correctly') + done() + }) + + + it('should throw error for invalid region', done => { + try { + contentstack.client({ region: 'DUMMYREGION' }) + done(new Error('Expected error was not thrown for invalid region')) + } catch (error) { + expect(error.message).to.include('Invalid region', 'Error message should indicate invalid region') + done() + } + }) + + }) From f211b1869f1df3052b02a7388cb9441c037a74d9 Mon Sep 17 00:00:00 2001 From: sunil-lakshman <104969541+sunil-lakshman@users.noreply.github.com> Date: Tue, 29 Apr 2025 16:17:27 +0530 Subject: [PATCH 6/7] Fixed linting errors --- lib/contentstack.js | 37 +++++++++++++++--------------- lib/core/contentstackHTTPClient.js | 2 +- test/sanity-check/api/user-test.js | 3 --- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/lib/contentstack.js b/lib/contentstack.js index 86ed1844..18ded7fd 100644 --- a/lib/contentstack.js +++ b/lib/contentstack.js @@ -8,12 +8,12 @@ import getUserAgent from './core/Util.js' import contentstackClient from './contentstackClient.js' import httpClient from './core/contentstackHTTPClient.js' const regionHostMap = { - 'NA': 'api.contentstack.io', - 'EU': 'eu-api.contentstack.com', - 'AZURE_NA': 'azure-na-api.contentstack.com', - 'AZURE_EU': 'azure-eu-api.contentstack.com', - 'GCP_NA': 'gcp-na-api.contentstack.com', - 'GCP_EU': 'gcp-eu-api.contentstack.com' + NA: 'api.contentstack.io', + EU: 'eu-api.contentstack.com', + AZURE_NA: 'azure-na-api.contentstack.com', + AZURE_EU: 'azure-eu-api.contentstack.com', + GCP_NA: 'gcp-na-api.contentstack.com', + GCP_EU: 'gcp-eu-api.contentstack.com' } /** @@ -169,24 +169,23 @@ const regionHostMap = { * @returns Contentstack.Client */ export function client (params = {}) { - let defaultHostName -if (params.region) { - const region = params.region.toUpperCase() - if (!regionHostMap[region]) { - throw new Error(`Invalid region '${params.region}' provided. Allowed regions are: ${Object.keys(regionHostMap).join(', ')}`) - } - defaultHostName = regionHostMap[region] -} else if (params.host) { + if (params.region) { + const region = params.region.toUpperCase() + if (!regionHostMap[region]) { + throw new Error(`Invalid region '${params.region}' provided. Allowed regions are: ${Object.keys(regionHostMap).join(', ')}`) + } + defaultHostName = regionHostMap[region] + } else if (params.host) { defaultHostName = params.host -} else { + } else { defaultHostName = regionHostMap['NA'] -} + } -const defaultParameter = { - defaultHostName: defaultHostName -} + const defaultParameter = { + defaultHostName: defaultHostName + } const sdkAgent = `contentstack-management-javascript/${packages.version}` const userAgentHeader = getUserAgent(sdkAgent, diff --git a/lib/core/contentstackHTTPClient.js b/lib/core/contentstackHTTPClient.js index 327ec07c..c1e12770 100644 --- a/lib/core/contentstackHTTPClient.js +++ b/lib/core/contentstackHTTPClient.js @@ -54,7 +54,7 @@ export default function contentstackHttpClient (options) { const version = config.version || 'v3' if (config.region) { - config.host = config.defaultHostName //set region on priority + config.host = config.defaultHostName // set region on priority } if (isHost(config.host)) { const parsed = config.host.split(':') diff --git a/test/sanity-check/api/user-test.js b/test/sanity-check/api/user-test.js index 0929f5e0..015307fa 100644 --- a/test/sanity-check/api/user-test.js +++ b/test/sanity-check/api/user-test.js @@ -125,7 +125,6 @@ describe('Contentstack User Session api Test', () => { done() }) - it('should throw error for invalid region', done => { try { contentstack.client({ region: 'DUMMYREGION' }) @@ -135,6 +134,4 @@ describe('Contentstack User Session api Test', () => { done() } }) - - }) From 9a142c4e466861b8e96f0a2223d50277eff09c0c Mon Sep 17 00:00:00 2001 From: raj pandey Date: Wed, 30 Apr 2025 17:19:29 +0530 Subject: [PATCH 7/7] Lock file update --- .talismanrc | 2 +- package-lock.json | 153 +++++++++++++++++++++++++++------------------- package.json | 21 ++++--- 3 files changed, 102 insertions(+), 74 deletions(-) diff --git a/.talismanrc b/.talismanrc index 2851ed18..f1e85f86 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,6 +1,6 @@ fileignoreconfig: - filename: package-lock.json - checksum: 4e433a9d090a831a6dba0f4b5a49191c361be5db267f662c8599dcfb08ff2a33 + checksum: 1c800fd99bd50e77185fe36aa6494210e33096452dc72280a9931fc4a3dc67e3 - filename: .husky/pre-commit checksum: 5baabd7d2c391648163f9371f0e5e9484f8fb90fa2284cfc378732ec3192c193 version: "" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 2850ae8a..50fa7f36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "assert": "^2.1.0", - "axios": "^1.8.4", + "axios": "^1.9.0", "buffer": "^6.0.3", "form-data": "^4.0.2", "husky": "^9.1.7", @@ -19,18 +19,18 @@ "stream-browserify": "^3.0.0" }, "devDependencies": { - "@babel/cli": "^7.26.4", - "@babel/core": "^7.26.9", - "@babel/eslint-parser": "^7.26.8", - "@babel/plugin-transform-runtime": "^7.26.9", + "@babel/cli": "^7.27.0", + "@babel/core": "^7.26.10", + "@babel/eslint-parser": "^7.27.0", + "@babel/plugin-transform-runtime": "^7.26.10", "@babel/preset-env": "^7.26.9", "@babel/register": "^7.25.9", - "@babel/runtime": "^7.26.9", + "@babel/runtime": "^7.27.0", "@slack/bolt": "^4.2.1", "@types/chai": "^4.3.20", "@types/jest": "^28.1.8", "@types/lodash": "^4.17.16", - "@types/mocha": "^7.0.2", + "@types/mocha": "^8.2.3", "axios-mock-adapter": "^1.22.0", "babel-loader": "^8.4.1", "babel-plugin-add-module-exports": "^1.0.4", @@ -40,7 +40,7 @@ "chai": "^4.5.0", "clean-webpack-plugin": "^4.0.0", "docdash": "^1.2.0", - "dotenv": "^16.4.7", + "dotenv": "^16.5.0", "eslint": "^8.57.1", "eslint-config-standard": "^13.0.1", "eslint-plugin-import": "^2.31.0", @@ -82,7 +82,9 @@ } }, "node_modules/@babel/cli": { - "version": "7.26.4", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.27.0.tgz", + "integrity": "sha512-bZfxn8DRxwiVzDO5CEeV+7IqXeCkzI4yYnrQbpwjT76CUyossQc6RYE7n+xfm0/2k40lPaCpW0FhxYs7EBAetw==", "dev": true, "license": "MIT", "dependencies": { @@ -131,20 +133,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.9", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", + "@babel/generator": "^7.26.10", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -160,10 +164,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.8.tgz", - "integrity": "sha512-3tBctaHRW6xSub26z7n8uyOTwwUsCdvIug/oxBH9n6yCO5hMj2vwDJAo7RbBMKrM7P+W2j61zLKviJQFGOYKMg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz", + "integrity": "sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -182,17 +187,20 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/@babel/generator": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -419,23 +427,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.9" + "@babel/types": "^7.27.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -1357,14 +1369,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.9", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.26.5", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -1587,18 +1601,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.11.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3", - "core-js-compat": "^3.40.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "dev": true, @@ -1631,7 +1633,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, "license": "MIT", "dependencies": { @@ -1642,28 +1646,32 @@ } }, "node_modules/@babel/template": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.9", - "@babel/types": "^7.26.9" + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1672,7 +1680,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.9", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dev": true, "license": "MIT", "dependencies": { @@ -2630,6 +2640,7 @@ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } @@ -2639,6 +2650,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -2652,6 +2664,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3073,7 +3086,9 @@ "license": "MIT" }, "node_modules/@types/mocha": { - "version": "7.0.2", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", + "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", "dev": true, "license": "MIT" }, @@ -3654,6 +3669,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -3696,9 +3712,9 @@ } }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", @@ -3964,12 +3980,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -4170,7 +4188,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", @@ -4308,6 +4327,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -5024,7 +5044,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.7", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -6473,8 +6495,6 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -6598,7 +6618,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "5.3.2", @@ -7021,6 +7042,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -10704,6 +10726,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11595,6 +11618,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -11604,6 +11628,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } @@ -12463,6 +12488,7 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -12474,7 +12500,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", diff --git a/package.json b/package.json index 90f1d66b..51587221 100644 --- a/package.json +++ b/package.json @@ -39,11 +39,12 @@ "test:debug": "BABEL_ENV=test mocha debug --require @babel/register ./test", "lint": "eslint lib test", "format": "eslint --fix lib test", - "prepare": "npm run build && husky && chmod +x .husky/pre-commit", + "prepare": "npm run build", "pretest": "rimraf coverage && npm run lint", "precommit": "npm run lint", "prepush": "npm run test:unit", - "generate:docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --readme README.md --verbose" + "generate:docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --readme README.md --verbose", + "husky-check": "npx husky && chmod +x .husky/pre-commit" }, "engines": { "node": ">=8.0.0" @@ -52,7 +53,7 @@ "license": "MIT", "dependencies": { "assert": "^2.1.0", - "axios": "^1.8.4", + "axios": "^1.9.0", "buffer": "^6.0.3", "form-data": "^4.0.2", "husky": "^9.1.7", @@ -66,18 +67,18 @@ "management api" ], "devDependencies": { - "@babel/cli": "^7.26.4", - "@babel/core": "^7.26.9", - "@babel/eslint-parser": "^7.26.8", - "@babel/plugin-transform-runtime": "^7.26.9", + "@babel/cli": "^7.27.0", + "@babel/core": "^7.26.10", + "@babel/eslint-parser": "^7.27.0", + "@babel/plugin-transform-runtime": "^7.26.10", "@babel/preset-env": "^7.26.9", "@babel/register": "^7.25.9", - "@babel/runtime": "^7.26.9", + "@babel/runtime": "^7.27.0", "@slack/bolt": "^4.2.1", "@types/chai": "^4.3.20", "@types/jest": "^28.1.8", "@types/lodash": "^4.17.16", - "@types/mocha": "^7.0.2", + "@types/mocha": "^8.2.3", "axios-mock-adapter": "^1.22.0", "babel-loader": "^8.4.1", "babel-plugin-add-module-exports": "^1.0.4", @@ -87,7 +88,7 @@ "chai": "^4.5.0", "clean-webpack-plugin": "^4.0.0", "docdash": "^1.2.0", - "dotenv": "^16.4.7", + "dotenv": "^16.5.0", "eslint": "^8.57.1", "eslint-config-standard": "^13.0.1", "eslint-plugin-import": "^2.31.0",