Skip to content

Development - #335

Merged
shafeeqd959 merged 58 commits into
mainfrom
development
Aug 5, 2026
Merged

Development#335
shafeeqd959 merged 58 commits into
mainfrom
development

Conversation

@shafeeqd959

Copy link
Copy Markdown
Contributor

No description provided.

naman-contentstackand others added 30 commits June 5, 2026 14:39
feat: add asset scanning support in import
…Each
Assets loaded from --data-dir backup may not have a publish_details field
if they were never published. The optional chain only guarded `asset`,
not `publish_details`, causing a TypeError in displayAssetsDetails().
…sets.js
setConfig() assigned to `config` at module scope but the variable was
never declared, causing a ReferenceError on any cm:assets:publish run
that goes through the data-dir flow.
fix: Update flags in AssetsPublishCommand and add user reminder in ImportCommand for asset publishing
publish() flattened each asset's publish_details into independent
environments[] and locales[] arrays, so the CMA republished the cartesian
product. For a ragged publish state (different locales on different
environments) this over-published to env-locale pairs that never existed
on the source stack.
Add buildPublishGroups: group publish_details by environment, coalesce
environments with an identical locale set, and emit one publish call per
group so each call is a single rectangle the CMA reproduces exactly. A
rectangular asset still collapses to one call (unchanged behavior). The
DX-1656 invalid-environment guard is preserved (envs absent from the
destination are still skipped).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bumps [adm-zip](https://github.com/cthackers/adm-zip) from 0.5.18 to 0.6.0.
- [Release notes](https://github.com/cthackers/adm-zip/releases)
- [Changelog](https://github.com/cthackers/adm-zip/blob/master/history.md)
- [Commits](cthackers/adm-zip@v0.5.18...v0.6.0)
---
updated-dependencies:
- dependency-name: adm-zip
dependency-version: 0.6.0
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
git-diff@2.0.7 is unmaintained (last published 2018) and pulls in
chalk@2, diff@3, loglevel, shelljs and shelljs.exec. Snyk flagged the
only vulnerable path in the monorepo through that tree:
Missing Release of Resource after Effective Lifetime [Medium]
SNYK-JS-INFLIGHT-6095116
git-diff@2.0.7 > shelljs@0.8.5 > glob@7.2.3 > inflight@1.0.6
Snyk reports no direct upgrade or patch, since git-diff is abandoned.
Replace it with diff@^9 (jsdiff): zero runtime dependencies, bundled
TypeScript types, dual CJS/ESM. It also removes the dependency on a
`git` binary and the temp-file/subprocess round trip git-diff used to
shell out through shelljs.
buildDiffString now calls createTwoFilesPatch, which emits the `---`
and `+++` file headers itself, so the hand-rolled header concatenation
is gone. Output was verified equivalent: both patch strings were run
through Diff2html.parse and compared on file names, added/deleted line
counts, hunk headers and every line type plus content - identical.
Identical inputs are also handled better. git-diff returned undefined
when both sides matched, which interpolated the literal string
"undefined" into the patch; createTwoFilesPatch returns a well-formed
patch with no hunks.
Drop @types/git-diff, since diff ships its own types.
Tests: the existing spec mocked diff2html, so the generated patch was
never asserted. Add two cases covering the string handed to
Diff2html.parse - one for headers, hunk and changed lines, one for the
identical-input case. Both were mutation-checked against a corrupted
buildDiffString.
Suite: 78 passed, 16 suites, tsc clean, Snyk reports no vulnerable
paths across the monorepo.
Bump the pinned pnpm-lock.yaml checksum in .talismanrc, which the
lockfile change invalidates. The finding is the usual sha512 integrity
hashes, not a secret.
Note: this commit also carries a pre-existing, uncommitted version bump
to 1.5.4 that was already present in package.json.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
added audit check and fix for assets in pending or quarantined state
handled assets in pending or quarantine states export failure

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates multiple CLI plugins to better support Contentstack “asset scanning” workflows by (a) propagating asset scan status through export/audit, (b) preventing unsafe downloads/publishes while scans are pending/quarantined, and (c) adding a post-import publish flow that can run after scanning completes.

Changes:

  • Export now requests and stores _asset_scan_status, skips downloading assets in configured blocking statuses, and reports what was skipped.
  • Import now performs deferred plan checks, can auto-skip asset publish when assetsScan is enabled, and preserves env↔locale pairing in asset publish payloads.
  • Bulk publish adds scan-status gating (with retry handling) and a --backup-dir mode to publish imported assets to their original env/locale targets.

Reviewed changes

Copilot reviewed 42 out of 44 changed files in this pull request and generated 6 comments.

Show a summary per file
FileDescription
pnpm-workspace.yamlBumps pnpm overrides for several transitive deps.
packages/contentstack-query-export/package.jsonFormatting-only adjustment.
packages/contentstack-import/test/unit/import/modules/assets.test.tsUpdates/adds tests for new asset publish grouping behavior.
packages/contentstack-import/src/utils/import-config-handler.tsAdds deferred plan checks and scanning-driven import flags.
packages/contentstack-import/src/types/import-config.tsAdds planStatus and assetScanningEnabled to config typing.
packages/contentstack-import/src/import/modules/assets.tsPreserves env↔locale pairing and adds scanning/publish messaging.
packages/contentstack-import/src/commands/cm/stacks/import.tsPasses command context into config setup; adds end-of-run reminder.
packages/contentstack-import/package.jsonDeclares plan-protected feature assetsScan.
packages/contentstack-external-migrate/tsconfig.tsbuildinfoAdds a TS build info artifact file.
packages/contentstack-export/test/unit/export/modules/stack.test.tsUpdates test config to include blocking scan statuses.
packages/contentstack-export/test/unit/export/modules/base-class.test.tsUpdates test config to include blocking scan statuses.
packages/contentstack-export/test/unit/export/modules/assets.test.tsAdds tests validating scan-status download skipping behavior.
packages/contentstack-export/src/utils/export-config-handler.tsAdds deferred plan checks and exports planStatus into config.
packages/contentstack-export/src/types/export-config.tsAdds planStatus typing.
packages/contentstack-export/src/types/default-config.tsAdds blockingScanStatuses typing under assets config.
packages/contentstack-export/src/export/modules/base-class.tsAdds rejection logging and guards resolve/reject callbacks.
packages/contentstack-export/src/export/modules/assets.tsRequests scan status and skips downloads for blocking statuses.
packages/contentstack-export/src/config/index.tsAdds default blockingScanStatuses.
packages/contentstack-export/src/commands/cm/stacks/export.tsPasses command context into config setup.
packages/contentstack-export/package.jsonDeclares plan-protected feature assetsScan.
packages/contentstack-export/messages/index.jsonAdds messages for scan-status skip logs/summaries.
packages/contentstack-content-type/tests/core/content-type/compare.test.tsAdds tests for unified patch formatting passed to diff2html.
packages/contentstack-content-type/src/core/content-type/compare.tsSwitches diff generation from git-diff to diff.
packages/contentstack-content-type/skills/contentstack-cli-content-type/SKILL.mdUpdates docs to reflect diff library change.
packages/contentstack-content-type/skills/code-review/SKILL.mdUpdates dependency-audit list (git-diff → diff).
packages/contentstack-content-type/package.jsonBumps version; adds diff and adjusts typings deps.
packages/contentstack-bulk-publish/test/unit/util/asset-scan.test.jsAdds unit tests for asset scan retry/status helpers.
packages/contentstack-bulk-publish/src/util/asset-scan.jsIntroduces scan status helpers and retry/backoff logic.
packages/contentstack-bulk-publish/src/producer/publish-assets.jsAdds scan gating, pending retry processing, and --backup-dir publish mode.
packages/contentstack-bulk-publish/src/consumer/publish.jsMakes publish_details iteration null-safe.
packages/contentstack-bulk-publish/src/commands/cm/assets/publish.jsAdds --backup-dir flag and validation changes.
packages/contentstack-bulk-publish/.mocharc.jsonAdds new util test file to Mocha run list.
packages/contentstack-audit/test/unit/modules/entries.test.tsAdds tests for asset metadata indexing and entry file-field validation/fix.
packages/contentstack-audit/test/unit/modules/assets.test.tsAdds tests for scan-status validation/fix in assets module.
packages/contentstack-audit/test/unit/mock/contents/assets/chunk1-assets.jsonAdds mock asset scan status fixtures.
packages/contentstack-audit/test/unit/mock/contents/assets/assets.jsonAdds mock assets index fixture.
packages/contentstack-audit/src/types/content-types.tsAdds output columns for scan_status and mandatory.
packages/contentstack-audit/src/modules/entries.tsAdds asset metadata indexing and file-field scan-status validation/fix.
packages/contentstack-audit/src/modules/assets.tsAdds scan-status blocking/fix behavior for assets audit.
packages/contentstack-audit/src/messages/index.tsAdds messages for scan-status-related warnings/fixes.
packages/contentstack-audit/src/config/index.tsAdds blocking scan statuses and new report module keys.
packages/contentstack-audit/src/audit-base-command.tsAdds new report modules to display/report gating.
.talismanrcUpdates pnpm-lock checksum entry formatting/values.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadpackages/contentstack-bulk-publish/src/util/asset-scan.js
Comment threadpackages/contentstack-audit/src/modules/entries.ts
Comment threadpackages/contentstack-external-migrate/tsconfig.tsbuildinfo
@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

ℹ️ Note: Only vulnerabilities with available fixes (upgrades or patches) are counted toward thresholds.

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0010✅ Passed
🟠 High Severity0025✅ Passed
🟡 Medium Severity00500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

✅ No SLA breaches detected. All vulnerabilities are within acceptable time thresholds.

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 365 days✅ Passed

✅ BUILD PASSED - All security checks passed

netrajpatel
netrajpatel previously approved these changes Aug 5, 2026
…-zip-0.6.0
chore(deps): bump adm-zip from 0.5.18 to 0.6.0
@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

ℹ️ Note: Only vulnerabilities with available fixes (upgrades or patches) are counted toward thresholds.

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0010✅ Passed
🟠 High Severity0025✅ Passed
🟡 Medium Severity00500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

✅ No SLA breaches detected. All vulnerabilities are within acceptable time thresholds.

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 365 days✅ Passed

✅ BUILD PASSED - All security checks passed

OMpawar-21
OMpawar-21 previously approved these changes Aug 5, 2026
@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

ℹ️ Note: Only vulnerabilities with available fixes (upgrades or patches) are counted toward thresholds.

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0010✅ Passed
🟠 High Severity0025✅ Passed
🟡 Medium Severity00500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

✅ No SLA breaches detected. All vulnerabilities are within acceptable time thresholds.

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 365 days✅ Passed

✅ BUILD PASSED - All security checks passed

@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

ℹ️ Note: Only vulnerabilities with available fixes (upgrades or patches) are counted toward thresholds.

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0010✅ Passed
🟠 High Severity0025✅ Passed
🟡 Medium Severity00500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

✅ No SLA breaches detected. All vulnerabilities are within acceptable time thresholds.

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 365 days✅ Passed

✅ BUILD PASSED - All security checks passed

@shafeeqd959
shafeeqd959 merged commit e484954 into mainAug 5, 2026
11 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@shafeeqd959@netrajpatel@cs-raj@OMpawar-21@aniket-shikhare-cstk@naman-contentstack