Skip to content

Commit d704c0e

Browse files
authored
Merge pull request #337 from contentstack/development
DX | 06-05-2025 | Release
2 parents fe9c07d + 9f211a8 commit d704c0e

File tree

8 files changed

+283
-79
lines changed

8 files changed

+283
-79
lines changed

.husky/pre-commit

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env sh
2+
# Pre-commit hook to run Snyk and Talisman scans, completing both before deciding to commit
3+
4+
# Function to check if a command exists
5+
command_exists() {
6+
command -v "$1" >/dev/null 2>&1
7+
}
8+
9+
# Check if Snyk is installed
10+
if ! command_exists snyk; then
11+
echo "Error: Snyk is not installed. Please install it and try again."
12+
exit 1
13+
fi
14+
15+
# Check if Talisman is installed
16+
if ! command_exists talisman; then
17+
echo "Error: Talisman is not installed. Please install it and try again."
18+
exit 1
19+
fi
20+
21+
# Allow bypassing the hook with an environment variable
22+
if [ "$SKIP_HOOK" = "1" ]; then
23+
echo "Skipping Snyk and Talisman scans (SKIP_HOOK=1)."
24+
exit 0
25+
fi
26+
27+
# Initialize variables to track scan results
28+
snyk_failed=false
29+
talisman_failed=false
30+
31+
# Run Snyk vulnerability scan
32+
echo "Running Snyk vulnerability scan..."
33+
snyk test --all-projects > snyk_output.log 2>&1
34+
snyk_exit_code=$?
35+
36+
if [ $snyk_exit_code -eq 0 ]; then
37+
echo "Snyk scan passed: No vulnerabilities found."
38+
elif [ $snyk_exit_code -eq 1 ]; then
39+
echo "Snyk found vulnerabilities. See snyk_output.log for details."
40+
snyk_failed=true
41+
else
42+
echo "Snyk scan failed with error (exit code $snyk_exit_code). See snyk_output.log for details."
43+
snyk_failed=true
44+
fi
45+
46+
# Run Talisman secret scan (continues even if Snyk failed)
47+
echo "Running Talisman secret scan..."
48+
talisman --githook pre-commit > talisman_output.log 2>&1
49+
talisman_exit_code=$?
50+
51+
if [ $talisman_exit_code -eq 0 ]; then
52+
echo "Talisman scan passed: No secrets found."
53+
else
54+
echo "Talisman scan failed (exit code $talisman_exit_code). See talisman_output.log for details."
55+
talisman_failed=true
56+
fi
57+
58+
# Evaluate results after both scans
59+
if [ "$snyk_failed" = true ] || [ "$talisman_failed" = true ]; then
60+
echo "Commit aborted due to issues found in one or both scans."
61+
[ "$snyk_failed" = true ] && echo "- Snyk issues: Check snyk_output.log"
62+
[ "$talisman_failed" = true ] && echo "- Talisman issues: Check talisman_output.log"
63+
exit 1
64+
fi
65+
66+
# If both scans pass, allow the commit
67+
echo "All scans passed. Proceeding with commit.cd ."
68+
rm -f snyk_output.log talisman_output.log
69+
exit 0

.talismanrc

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
threshold: medium
21
fileignoreconfig:
3-
- filename: package-lock.json
4-
checksum: 9d0340f9359927d477fe8ab4650642c068c592be63fb817651d866849e0dbbc2
2+
- filename: package-lock.json
3+
checksum: 1c800fd99bd50e77185fe36aa6494210e33096452dc72280a9931fc4a3dc67e3
4+
- filename: .husky/pre-commit
5+
checksum: 5baabd7d2c391648163f9371f0e5e9484f8fb90fa2284cfc378732ec3192c193
56
version: ""

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## [v1.21.0](https://github.com/contentstack/contentstack-management-javascript/tree/v1.21.0) (2025-05-05)
4+
- Enhancement
5+
- Region support added
6+
37
## [v1.20.3](https://github.com/contentstack/contentstack-management-javascript/tree/v1.20.3) (2025-04-21)
48
- Fix
59
- Handle the sanity tests when ENVs are not provided

lib/contentstack.js

+23-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ import clonedeep from 'lodash/cloneDeep'
77
import getUserAgent from './core/Util.js'
88
import contentstackClient from './contentstackClient.js'
99
import httpClient from './core/contentstackHTTPClient.js'
10+
const regionHostMap = {
11+
NA: 'api.contentstack.io',
12+
EU: 'eu-api.contentstack.com',
13+
AZURE_NA: 'azure-na-api.contentstack.com',
14+
AZURE_EU: 'azure-eu-api.contentstack.com',
15+
GCP_NA: 'gcp-na-api.contentstack.com',
16+
GCP_EU: 'gcp-eu-api.contentstack.com'
17+
}
1018

1119
/**
1220
* Create client instance
@@ -161,8 +169,22 @@ import httpClient from './core/contentstackHTTPClient.js'
161169
* @returns Contentstack.Client
162170
*/
163171
export function client (params = {}) {
172+
let defaultHostName
173+
174+
if (params.region) {
175+
const region = params.region.toUpperCase()
176+
if (!regionHostMap[region]) {
177+
throw new Error(`Invalid region '${params.region}' provided. Allowed regions are: ${Object.keys(regionHostMap).join(', ')}`)
178+
}
179+
defaultHostName = regionHostMap[region]
180+
} else if (params.host) {
181+
defaultHostName = params.host
182+
} else {
183+
defaultHostName = regionHostMap['NA']
184+
}
185+
164186
const defaultParameter = {
165-
defaultHostName: 'api.contentstack.io'
187+
defaultHostName: defaultHostName
166188
}
167189

168190
const sdkAgent = `contentstack-management-javascript/${packages.version}`

lib/core/contentstackHTTPClient.js

+3
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ export default function contentstackHttpClient (options) {
5353
let port = config.port || 443
5454
const version = config.version || 'v3'
5555

56+
if (config.region) {
57+
config.host = config.defaultHostName // set region on priority
58+
}
5659
if (isHost(config.host)) {
5760
const parsed = config.host.split(':')
5861
if (parsed.length === 2) {

0 commit comments

Comments
 (0)