Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
5c685e8
Merge pull request #2673 from contentstack/main
harshitha-cstk Jul 30, 2026
e106d94
fixed circular object parsing bug
Jul 30, 2026
a5a475a
merged latest changes
Jul 30, 2026
3c56390
sca-scan.yml
Aravind-Kumar-cstk Aug 2, 2026
1fd66c0
Merge branch 'main' into development
cs-raj Aug 4, 2026
4c6077c
chore: bump dependency overrides and update lockfile
cs-raj Aug 4, 2026
b3a6f6a
Merge pull request #2678 from contentstack/fix/sca-permissions-dep-ov…
netrajpatel Aug 4, 2026
34fdde3
Merge branch 'development' into fix/logger-circular-object-parsing
netrajpatel Aug 4, 2026
1ea73c0
fix(config): correct swapped flag descriptions in config:set:early-ac…
cs-raj Aug 5, 2026
81686da
Merge pull request #2683 from contentstack/fix/config-set-early-acces…
netrajpatel Aug 5, 2026
6b96eba
chore(config): bump @contentstack/cli-config to 1.21.1
cs-raj Aug 5, 2026
147ef23
Merge pull request #2684 from contentstack/chore/config-version-bump-…
netrajpatel Aug 5, 2026
2296333
Merge branch 'development' of github.com:contentstack/cli into fix/lo…
Aug 5, 2026
96e3d19
Merge branch 'fix/logger-circular-object-parsing' of github.com:conte…
Aug 5, 2026
a3230d9
Merge pull request #2675 from contentstack/fix/logger-circular-object…
shafeeqd959 Aug 5, 2026
6bec2b0
docs(cli): replace oclif command dump with concise README and plugin …
cs-raj Aug 5, 2026
57248d6
version bump
Aug 5, 2026
0c6c9ad
Merge branch 'development' into chore/readme-cleanup-contentstack-pkg
cs-raj Aug 5, 2026
6d79345
revert: undo version bump in packages/contentstack/package.json
Aug 5, 2026
7dba181
updated lock file
Aug 5, 2026
779ede3
docs(cli): remove bulk-operations, asterisk footnotes, and bulk note
cs-raj Aug 5, 2026
9b07386
Merge pull request #2687 from contentstack/version-bump
shafeeqd959 Aug 5, 2026
1c73bc2
Merge branch 'development' into chore/readme-cleanup-contentstack-pkg
cs-raj Aug 5, 2026
53dbeaa
docs(cli): add documentation links to plugin tables (v1)
cs-raj Aug 5, 2026
f64e250
docs(cli): add all verified documentation links to plugin tables (v1)
cs-raj Aug 5, 2026
3d6af47
Merge pull request #2686 from contentstack/chore/readme-cleanup-conte…
netrajpatel Aug 5, 2026
4df4b90
chore: bump @contentstack/cli to 1.67.0 with updated plugin dependenc…
Aug 5, 2026
e674691
Merge pull request #2685 from contentstack/development
shafeeqd959 Aug 5, 2026
2761939
updated lock file
Aug 5, 2026
2afec4c
Merge pull request #2690 from contentstack/chore/cli-version-bump-1.66.1
shafeeqd959 Aug 5, 2026
87e4f0f
Merge pull request #2691 from contentstack/development
shafeeqd959 Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/sca-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ on:
jobs:
security-sca:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@master
- name: Run Snyk to check for vulnerabilities
Expand Down
4 changes: 3 additions & 1 deletion .talismanrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
fileignoreconfig:
- filename: pnpm-lock.yaml
checksum: 763c12b0555cbd63ca4015664e08de315f0e675125a34de2d9c8d1a73a3723e8
checksum: ad8af6ca67f20585ba2e3478cb6119a50508da89492119eabb7d96ec2b56545f
- filename: packages/contentstack/README.md
checksum: df0892cbcf3f04972161b30a1a0ef8844a2682ce8a3270f2911909e7789ad8d7
version: '1.0'
2 changes: 1 addition & 1 deletion packages/contentstack-auth/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-auth
$ csdx COMMAND
running command...
$ csdx (--version)
@contentstack/cli-auth/1.8.4 darwin-arm64 node-v22.13.1
@contentstack/cli-auth/1.8.6 darwin-arm64 node-v24.18.0
$ csdx --help [COMMAND]
USAGE
$ csdx COMMAND
Expand Down
4 changes: 2 additions & 2 deletions packages/contentstack-auth/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contentstack/cli-auth",
"description": "Contentstack CLI plugin for authentication activities",
"version": "1.8.5",
"version": "1.8.6",
"author": "Contentstack",
"bugs": "https://github.com/contentstack/cli/issues",
"scripts": {
Expand All @@ -16,7 +16,7 @@
},
"dependencies": {
"@contentstack/cli-command": "~1.8.5",
"@contentstack/cli-utilities": "~1.19.0",
"@contentstack/cli-utilities": "~1.19.1",
"@oclif/core": "^4.11.4",
"otplib": "^12.0.1"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/contentstack-command/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contentstack/cli-command",
"description": "Contentstack CLI plugin for configuration",
"version": "1.8.5",
"version": "1.8.6",
"author": "Contentstack",
"main": "lib/index.js",
"types": "lib/index.d.ts",
Expand All @@ -14,7 +14,7 @@
"lint": "eslint src/**/*.ts"
},
"dependencies": {
"@contentstack/cli-utilities": "~1.19.0",
"@contentstack/cli-utilities": "~1.19.1",
"contentstack": "^3.27.0",
"@oclif/core": "^4.11.4"
},
Expand Down
10 changes: 5 additions & 5 deletions packages/contentstack-config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-config
$ csdx COMMAND
running command...
$ csdx (--version)
@contentstack/cli-config/1.20.5 darwin-arm64 node-v22.13.1
@contentstack/cli-config/1.21.1 darwin-arm64 node-v24.18.0
$ csdx --help [COMMAND]
USAGE
$ csdx COMMAND
Expand Down Expand Up @@ -316,8 +316,8 @@ USAGE
$ csdx config:set:ea-header [--header-alias <value>] [--header <value>]

FLAGS
--header=<value> (optional) Provide the Early Access header alias name.
--header-alias=<value> (optional) Provide the Early Access header value.
--header=<value> (optional) Provide the Early Access header value.
--header-alias=<value> (optional) Provide a name (alias) for this Early Access header.

DESCRIPTION
Set Early Access header
Expand All @@ -340,8 +340,8 @@ USAGE
$ csdx config:set:early-access-header [--header-alias <value>] [--header <value>]

FLAGS
--header=<value> (optional) Provide the Early Access header alias name.
--header-alias=<value> (optional) Provide the Early Access header value.
--header=<value> (optional) Provide the Early Access header value.
--header-alias=<value> (optional) Provide a name (alias) for this Early Access header.

DESCRIPTION
Set Early Access header
Expand Down
4 changes: 2 additions & 2 deletions packages/contentstack-config/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contentstack/cli-config",
"description": "Contentstack CLI plugin for configuration",
"version": "1.21.0",
"version": "1.21.1",
"author": "Contentstack",
"scripts": {
"build": "pnpm compile && oclif manifest && oclif readme",
Expand All @@ -15,7 +15,7 @@
},
"dependencies": {
"@contentstack/cli-command": "~1.8.5",
"@contentstack/cli-utilities": "~1.19.0",
"@contentstack/cli-utilities": "~1.19.1",
"@contentstack/utils": "~1.9.1",
"@oclif/core": "^4.11.4"
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ export default class SetEarlyAccessHeaderCommand extends Command {
static description = 'Set Early Access header';
static aliases: string[] = ['config:set:ea-header'];
static flags: FlagInput = {
'header-alias': flags.string({ description: '(optional) Provide the Early Access header value.' }),
header: flags.string({ description: '(optional) Provide the Early Access header alias name.' }),
'header-alias': flags.string({ description: '(optional) Provide a name (alias) for this Early Access header.' }),
header: flags.string({ description: '(optional) Provide the Early Access header value.' }),
};
static examples: string[] = [
'$ <%= config.bin %> <%= command.id %>',
Expand Down
2 changes: 1 addition & 1 deletion packages/contentstack-utilities/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@contentstack/cli-utilities",
"version": "1.19.0",
"version": "1.19.1",
"description": "Utilities for contentstack projects",
"main": "lib/index.js",
"types": "lib/index.d.ts",
Expand Down
29 changes: 26 additions & 3 deletions packages/contentstack-utilities/src/logger/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export default class Logger {
winston.format.printf((info) => {
// Apply minimal redaction for files (debugging info preserved)
const redactedInfo = this.redact(info, false);
return JSON.stringify(redactedInfo);
return this.safeStringify(redactedInfo);
}),
),
}),
Expand Down Expand Up @@ -117,6 +117,26 @@ export default class Logger {
}
}

/**
* Stringifies a log entry without throwing on circular references.
* `redact()` can fall back to the original (still-circular) object when
* cloning fails, so this must never assume the input is cycle-free.
*/
private safeStringify(value: any): string {
const seen = new WeakSet();
try {
return JSON.stringify(value, (_key, val) => {
if (typeof val === 'object' && val !== null) {
if (seen.has(val)) return '[Circular]';
seen.add(val);
}
return val;
});
} catch {
return JSON.stringify({ level: value?.level, message: value?.message ?? '[Unserializable log entry]' });
}
}

private shouldLog(level: LogType, target: 'console' | 'file'): boolean {
// If console logging is disabled, don't log to console
if (target === 'console' && this.config.consoleLoggingEnabled === false) {
Expand Down Expand Up @@ -186,9 +206,12 @@ export default class Logger {
this.loggers.error.error(logPayload);
}

// For console, use debug level if hidden, otherwise error level
// For console, use debug level if hidden, otherwise error level. Each level's
// winston logger instance bundles both the file and console transports, so only
// write again here when the target differs from the one already written above —
// otherwise this would duplicate both the console line and the file entry.
const consoleLevel: LogType = params.hidden ? 'debug' : 'error';
if (this.shouldLog(consoleLevel, 'console')) {
if (consoleLevel !== 'error' && this.shouldLog(consoleLevel, 'console')) {
this.loggers[consoleLevel].error(logPayload);
}
}
Expand Down
Loading
Loading