Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
0f5d4c3
fix: add global fields FVRs in export
Jun 15, 2026
babff65
Merge branch 'development' into fix/DX-8587
Jun 30, 2026
8ab39bd
feat: add global field rule handling to content type
Jun 30, 2026
3a15a12
Merge branch 'development' into fix/DX-8587
naman-contentstack Jul 1, 2026
59de86d
feat: enhance field rules audit to include global fields and add corr…
Jul 1, 2026
922e81a
fix: typo in test case name
naman-contentstack Jul 7, 2026
08b53a9
fix: update the commented msg
naman-contentstack Jul 7, 2026
af8818e
Merge branch 'development' into fix/DX-8587
Jul 16, 2026
3537a04
refactor: success logging for content types import
Jul 16, 2026
3143916
Merge pull request #232 from contentstack/fix/DX-8587
naman-contentstack Jul 21, 2026
c7cca9a
test(cli-plugins): repair failing unit test suites across packages [D…
netrajpatel Jul 21, 2026
b40ac61
chore(deps): override fast-uri and ws to patched versions [DX-9770]
netrajpatel Jul 21, 2026
80b2abb
chore(lint): repair ESLint 10 flat configs across 10 packages [DX-9770]
netrajpatel Jul 21, 2026
fbd63ec
chore(lint): standardize lint scripts, decouple from test, add Lint w…
netrajpatel Jul 21, 2026
b629e96
Merge remote-tracking branch 'origin/development' into DX-9770
netrajpatel Jul 21, 2026
2bacec4
chore(deps): consolidate dependency overrides into pnpm-workspace.yam…
netrajpatel Jul 22, 2026
c8f7fe4
Merge pull request #303 from contentstack/DX-9770
netrajpatel Jul 22, 2026
7bf0996
Merge remote-tracking branch 'origin/development' into DX-9770-v2-dev
netrajpatel Jul 22, 2026
60823a4
test: normalize plugin test scripts, add tsgen coverage, package-wise…
netrajpatel Jul 22, 2026
3374169
ci: run unit tests in a single job, not a per-package matrix [DX-9770]
netrajpatel Jul 22, 2026
634bc5f
test: prune dead/orphaned integration, fix bootstrap suite, declare s…
netrajpatel Jul 22, 2026
379cd76
chore: refresh .talismanrc allowlist for regex-validate test + lockfi…
netrajpatel Jul 22, 2026
3646824
ci: drop nyc from apps-cli test to fix CI failure [DX-9770]
netrajpatel Jul 23, 2026
a4a44d5
fix(apps-cli,lint): make apps-cli tests hermetic; repair ESLint-10 co…
netrajpatel Jul 23, 2026
da8e395
fix(apps-cli): drop oclif manifest from build so tests load src, not …
netrajpatel Jul 23, 2026
9e73968
Merge branch 'v2-dev' into DX-9770-v2-dev [DX-9770]
netrajpatel Jul 23, 2026
5a96df9
test(external-migrate): convert merged create-stack.test.ts from vite…
netrajpatel Jul 23, 2026
982c814
test(asset-management): fix flaky import assets test (unique temp dir…
netrajpatel Jul 23, 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
21 changes: 21 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Lint

on:
pull_request:
types: [opened, synchronize, reopened]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
with:
version: 10.28.0
- uses: actions/setup-node@v4
with:
node-version: '22.x'
cache: 'pnpm'
- run: pnpm install --no-frozen-lockfile
- run: pnpm -r --sort --workspace-concurrency=1 run build
- run: pnpm run lint
2 changes: 1 addition & 1 deletion .github/workflows/tsgen-integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
run: csdx plugins:link

- name: Run integration tests
run: pnpm --filter contentstack-cli-tsgen run test
run: pnpm --filter contentstack-cli-tsgen run test:integration
env:
TOKEN_ALIAS: ${{ secrets.TOKEN_ALIAS }}

Expand Down
82 changes: 9 additions & 73 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,80 +22,16 @@ jobs:
node-version: '22.x'
cache: 'pnpm' # optional but recommended

- name: Prune pnpm store
run: pnpm store prune
- name: Install Dependencies
run: pnpm install --no-frozen-lockfile

- name: Build all plugins
run: |
NODE_ENV=PREPACK_MODE pnpm -r --sort run build

- name: Run tests for Contentstack Import Plugin
working-directory: ./packages/contentstack-import
run: npm run test:unit

- name: Run tests for Contentstack Export Plugin
working-directory: ./packages/contentstack-export
run: npm run test:unit

- name: Run tests for Audit plugin
working-directory: ./packages/contentstack-audit
run: npm run test:unit

- name: Run tests for Contentstack Migration
working-directory: ./packages/contentstack-migration
run: npm run test

- name: Run tests for Contentstack Export To CSV
working-directory: ./packages/contentstack-export-to-csv
run: npm run test:unit

- name: Run tests for Contentstack Bootstrap
working-directory: ./packages/contentstack-bootstrap
run: npm run test

- name: Run tests for Contentstack Branches
working-directory: ./packages/contentstack-branches
run: npm run test:unit

- name: Run tests for Contentstack Query Export
working-directory: ./packages/contentstack-query-export
run: npm run test:unit

- name: Run tests for Contentstack Apps CLI
working-directory: ./packages/contentstack-apps-cli
run: npm run test:unit:report

- name: Run tests for Contentstack Content Type plugin
working-directory: ./packages/contentstack-content-type
run: npm run test:unit

- name: Run tests for Contentstack Regex Validate plugin
working-directory: ./packages/contentstack-cli-cm-regex-validate
run: npm run test:unit

- name: Run tests for Contentstack Migrate RTE
working-directory: ./packages/contentstack-migrate-rte
run: npm test

- name: Run tests for Contentstack Bulk Operations
working-directory: ./packages/contentstack-bulk-operations
run: npm test

- name: Run tests for Contentstack Variants
working-directory: ./packages/contentstack-variants
run: npm run test

- name: Run tests for Contentstack Asset Management
working-directory: ./packages/contentstack-asset-management
run: npm run test:unit

- name: Run tests for Contentstack Clone
working-directory: ./packages/contentstack-clone
run: npm run test:unit

# - name: Run tests for Contentstack External Migrate
# working-directory: ./packages/contentstack-external-migrate
# run: npm test

run: NODE_ENV=PREPACK_MODE pnpm -r --sort run build

# Single run over every plugin's `test` (unit) script. --no-bail runs all packages even
# when one fails, and pnpm prints a per-package summary at the end, so failures are still
# easy to locate in the one log. --workspace-concurrency=1 keeps the output sequential and
# readable. Integration suites live under a separate `test:integration` script and do not
# run here; the tsgen integration suite has its own workflow (tsgen-integration-test.yml).
- name: Run unit tests for all plugins
run: pnpm -r --no-bail --workspace-concurrency=1 --filter './packages/*' run test
66 changes: 41 additions & 25 deletions .talismanrc
Original file line number Diff line number Diff line change
@@ -1,26 +1,42 @@
fileignoreconfig:
- filename: pnpm-lock.yaml
checksum: e6eecc09255df3dcb320328998d5faef14f2d1e18f561d4b9efcd8ed599476b9
- filename: packages/contentstack-bulk-operations/src/messages/index.ts
checksum: 07c2bf3f3130ad5e8b6a2971d76139e9b643c70a9ff5f7450adfb5c9bf3d7164
- filename: packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts
checksum: 99a3c3eb422a17f73f4c8f15088004fa4c95df3545bdf510310c1f3a20e4c2c2
- filename: packages/contentstack-bulk-operations/src/base-bulk-command.ts
checksum: cb1147ac666b607a093c4c827d143d0bd2de5b6e9d59973f1b7052451e82a89b
- filename: packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts
checksum: 8bca423db4c3815c651ad922d986a53b6271cce3ea27f5987b66ee594151165e
- filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts
checksum: 590b1cfe42d46d0917ac90f363b1ccd05200b180bd9c58c770ffd1f12eb18327
- filename: packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts
checksum: 35451ca4c03359b06531a8461091f4a3a45c4dea1f8853081fb53e4ce28c1cc3
- filename: packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts
checksum: ca699a9d73757d44ded4d9d27beb4f460f911a7c88a14551a9402a3ac0c69873
- filename: packages/contentstack-external-migrate/src/lib/create-stack.ts
checksum: 68a9510db6f2746ac5006c091d276c1ba619a9e15c76a3edae3967e4f9c2dd4e
- filename: packages/contentstack-external-migrate/test/lib/create-stack.test.ts
checksum: 45af4e45e4baadf7e418a11a46a6243b8ffabafdbf32d0269d89c5d3db837a13
- filename: CHANGELOG.md
checksum: 88c7e1dee308fa4ae25e7815ead0842b1aac7ed669b02859cc8b25cba879595d
- filename: packages/contentstack-bulk-operations/test/unit/services/taxonomy-service.test.ts
checksum: abc5ac707341760cf59d5b8b1c4e13cf2c79955e2735c33e2db3ec6bc48eddb6
version: ""
- filename: pnpm-lock.yaml
checksum: f149ffa2864c1e5aa5b3f3363ea0d690e288168167d103775cb1f61be81151d5
- filename: packages/contentstack-branches/test/unit/helpers/stub-auth.ts
checksum: 8cafd5994d3ec13ba9af74c80b330bfd14721ea4e0359b456598964a6c2913ce
- filename: packages/contentstack-export/src/config/index.ts
checksum: 0219426b1873decef4d74bef5bfd50d1ed8f2567a2136122d869e4e53e4b4b99
- filename: packages/contentstack-clone/README.md
checksum: fad666bf6290c980406ddd18caec2dd89d9c7a22b422010865199659956ab523
- filename: packages/contentstack-migration/README.md
checksum: ceb7631888ee81711a32e2ac07762957bbf0f9c6c7f3f6bbc5d86326bd4352cc
- filename: packages/contentstack-external-migrate/test/commands/migrate/import.test.ts
checksum: 1d955eb34ab7e7e11cfad35cdbcb00692e39568bc690f46089fcbc0ca22a4852
- filename: packages/contentstack-external-migrate/test/adapters/contentful/export.test.ts
checksum: 118cc140edf3b68191d1ef770c4142f9f5aa7af87a5a1832d6b3edee53d61c83
- filename: packages/contentstack-cli-tsgen/test/unit/helper.test.ts
checksum: 146ff2a85a8f5ec463e51821f54c5f08143fa04209541a51017270e83b6ed46d
- filename: packages/contentstack-cli-cm-regex-validate/test/utils/connect-stack.test.ts
checksum: 018980aa2b919967b9ef9ab1bdf635d4867fe21593fba5890afa443f440228ff
- filename: packages/contentstack-bulk-operations/src/messages/index.ts
checksum: 07c2bf3f3130ad5e8b6a2971d76139e9b643c70a9ff5f7450adfb5c9bf3d7164
- filename: packages/contentstack-bulk-operations/src/utils/operation-flag-matrix.ts
checksum: 99a3c3eb422a17f73f4c8f15088004fa4c95df3545bdf510310c1f3a20e4c2c2
- filename: packages/contentstack-bulk-operations/src/base-bulk-command.ts
checksum: cb1147ac666b607a093c4c827d143d0bd2de5b6e9d59973f1b7052451e82a89b
- filename: packages/contentstack-bulk-operations/src/commands/cm/stacks/bulk-assets.ts
checksum: 8bca423db4c3815c651ad922d986a53b6271cce3ea27f5987b66ee594151165e
- filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-assets-init.test.ts
checksum: 590b1cfe42d46d0917ac90f363b1ccd05200b180bd9c58c770ffd1f12eb18327
- filename: packages/contentstack-bulk-operations/test/unit/utils/operation-flag-matrix.test.ts
checksum: 35451ca4c03359b06531a8461091f4a3a45c4dea1f8853081fb53e4ce28c1cc3
- filename: packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts
checksum: ca699a9d73757d44ded4d9d27beb4f460f911a7c88a14551a9402a3ac0c69873
- filename: packages/contentstack-external-migrate/src/lib/create-stack.ts
checksum: 68a9510db6f2746ac5006c091d276c1ba619a9e15c76a3edae3967e4f9c2dd4e
- filename: packages/contentstack-external-migrate/test/lib/create-stack.test.ts
checksum: 2dcbc359ee275e59e0536f3c325416eac8c43eb341b04da0d3757f5b5e556d9c
- filename: CHANGELOG.md
checksum: 88c7e1dee308fa4ae25e7815ead0842b1aac7ed669b02859cc8b25cba879595d
- filename: packages/contentstack-bulk-operations/test/unit/services/taxonomy-service.test.ts
checksum: abc5ac707341760cf59d5b8b1c4e13cf2c79955e2735c33e2db3ec6bc48eddb6
version: '1.0'
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"clean:packages": "pnpm -r --filter './packages/*' run clean",
"build": "pnpm -r --filter './packages/*' run build",
"test": "pnpm -r --filter './packages/*' run test",
"lint": "pnpm -r --filter './packages/*' run lint",
"prepack": "pnpm -r --filter './packages/*' run prepack",
"bootstrap": "pnpm install",
"clean:modules": "rm -rf node_modules packages/**/node_modules",
Expand Down
47 changes: 25 additions & 22 deletions packages/contentstack-apps-cli/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,50 @@
import tseslint from 'typescript-eslint';
import globals from 'globals';
import unicorn from 'eslint-plugin-unicorn';
import n from 'eslint-plugin-n';

export default [
...tseslint.configs.recommended,
{
ignores: [
'lib/**/*',
'test/**/*',
'dist/**/*',
],
ignores: ['lib/**/*', 'test/**/*', 'types/**/*', 'node_modules/**/*', '*.js'],
},
{
languageOptions: {
parser: tseslint.parser,
parserOptions: {
project: './tsconfig.json',
sourceType: 'module',
},
sourceType: 'module',
globals: {
...globals.node,
},
},
// unicorn/node registered (not enabled) so pre-existing inline eslint-disable
// directives that reference their rules resolve under ESLint 10 flat config.
plugins: {
'@typescript-eslint': tseslint.plugin,
unicorn,
node: n,
},
rules: {
'@typescript-eslint/no-unused-vars': [
'error',
{
args: 'none',
},
],
'@typescript-eslint/prefer-namespace-keyword': 'error',
quotes: 'off',
semi: 'off',
// Pre-existing lint debt surfaced once the ESLint-10 flat-config crash was
// fixed. Kept visible as warnings (tracked for follow-up cleanup) rather
// than blocking, since these rules were never enforced while lint crashed.
'@typescript-eslint/no-unused-vars': ['warn', { args: 'none', ignoreRestSiblings: true }],
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-unused-expressions': ['warn', { allowShortCircuit: true, allowTernary: true }],
'@typescript-eslint/no-require-imports': 'warn',
'@typescript-eslint/ban-ts-comment': 'warn',
'@typescript-eslint/no-wrapper-object-types': 'warn',
'@typescript-eslint/no-unsafe-function-type': 'warn',
'@typescript-eslint/no-empty-object-type': 'warn',
'@typescript-eslint/no-this-alias': 'warn',
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/no-redeclare': 'off',
eqeqeq: ['error', 'smart'],
'id-match': 'error',
'prefer-const': 'warn',
'prefer-rest-params': 'warn',
'no-var': 'warn',
eqeqeq: 'warn',
'no-eval': 'error',
'no-var': 'error',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-require-imports': 'off',
'prefer-const': 'error',
},
},
];
17 changes: 8 additions & 9 deletions packages/contentstack-apps-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,15 @@
}
},
"scripts": {
"build": "npm run clean && shx rm -rf lib && tsc -b",
"lint": "eslint .",
"postpack": "shx rm -f oclif.manifest.json",
"posttest": "npm run lint",
"prepack": "npm run build && oclif manifest && oclif readme",
"test": "mocha --forbid-only \"test/**/*.test.ts\"",
"build": "pnpm compile",
"lint": "eslint \"src/**/*.ts\"",
"postpack": "rm -f oclif.manifest.json",
"prepack": "pnpm compile && oclif manifest && oclif readme",
"test": "mocha --forbid-only \"test/unit/**/*.test.ts\"",
"version": "oclif readme && git add README.md",
"clean": "rm -rf ./lib tsconfig.tsbuildinfo oclif.manifest.json",
"test:unit:report": "nyc --extension .ts mocha --forbid-only \"test/unit/**/*.test.ts\"",
"test:unit:report:json": "mocha --reporter json --reporter-options output=report.json --forbid-only \"test/unit/**/*.test.ts\" && nyc --reporter=clover --extension .ts mocha --forbid-only \"test/unit/**/*.test.ts\""
"clean": "rm -rf ./lib ./node_modules tsconfig.tsbuildinfo oclif.manifest.json",
"compile": "tsc -b tsconfig.json",
"format": "eslint \"src/**/*.ts\" --fix"
},
"engines": {
"node": ">=22.0.0"
Expand Down
64 changes: 27 additions & 37 deletions packages/contentstack-asset-management/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,60 +1,50 @@
import tseslint from 'typescript-eslint';
import globals from 'globals';
import oclif from 'eslint-config-oclif-typescript';
import unicorn from 'eslint-plugin-unicorn';
import n from 'eslint-plugin-n';

export default [
...tseslint.configs.recommended,
oclif,
{
ignores: ['lib/**/*', 'test/**/*', 'types/**/*', 'node_modules/**/*', '*.js'],
},
{
languageOptions: {
parser: tseslint.parser,
parserOptions: {
project: './tsconfig.json',
sourceType: 'module',
},
sourceType: 'module',
globals: {
...globals.node,
},
},
// unicorn/node registered (not enabled) so pre-existing inline eslint-disable
// directives that reference their rules resolve under ESLint 10 flat config.
plugins: {
'@typescript-eslint': tseslint.plugin,
unicorn,
node: n,
},
rules: {
'@typescript-eslint/no-unused-vars': [
'error',
{
args: 'none',
},
],
'@typescript-eslint/prefer-namespace-keyword': 'error',
'@typescript-eslint/quotes': [
'error',
'single',
{
avoidEscape: true,
allowTemplateLiterals: true,
},
],
semi: 'off',
'@typescript-eslint/type-annotation-spacing': 'error',
// Pre-existing lint debt surfaced once the ESLint-10 flat-config crash was
// fixed. Kept visible as warnings (tracked for follow-up cleanup) rather
// than blocking, since these rules were never enforced while lint crashed.
'@typescript-eslint/no-unused-vars': ['warn', { args: 'none', ignoreRestSiblings: true }],
'@typescript-eslint/no-explicit-any': 'warn',
'@typescript-eslint/no-unused-expressions': ['warn', { allowShortCircuit: true, allowTernary: true }],
'@typescript-eslint/no-require-imports': 'warn',
'@typescript-eslint/ban-ts-comment': 'warn',
'@typescript-eslint/no-wrapper-object-types': 'warn',
'@typescript-eslint/no-unsafe-function-type': 'warn',
'@typescript-eslint/no-empty-object-type': 'warn',
'@typescript-eslint/no-this-alias': 'warn',
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/no-redeclare': 'off',
eqeqeq: ['error', 'smart'],
'id-match': 'error',
'prefer-const': 'warn',
'prefer-rest-params': 'warn',
'no-var': 'warn',
eqeqeq: 'warn',
'no-eval': 'error',
'no-var': 'error',
quotes: 'off',
indent: 'off',
camelcase: 'off',
'comma-dangle': 'off',
'arrow-parens': 'off',
'operator-linebreak': 'off',
'object-curly-spacing': 'off',
'node/no-missing-import': 'off',
'padding-line-between-statements': 'off',
'@typescript-eslint/ban-ts-ignore': 'off',
'unicorn/no-abusive-eslint-disable': 'off',
'unicorn/consistent-function-scoping': 'off',
'@typescript-eslint/no-use-before-define': 'off',
},
},
];
Loading
Loading