Skip to content

Commit ace877a

Browse files
authored
Merge pull request #167 from contentstack/enhc/DX-7531-migrate-tsgen-v1
feat(DX-7531): migrate contentstack-cli-tsgen v1 into cli-plugins monorepo
2 parents 8f23871 + f5b9176 commit ace877a

32 files changed

Lines changed: 1635 additions & 49 deletions

File tree

.cursor/rules/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ This is a **CLI plugins** monorepo with plugin packages under `packages/`, inclu
5151
- `contentstack-seed` - Seed stacks with generated data
5252
- `contentstack-variants` - Manage content variants
5353
- `contentstack-apps-cli` - Developer Hub apps (`app:*` commands; npm `@contentstack/apps-cli`)
54+
- `contentstack-cli-tsgen` - TypeScript typings (`csdx tsgen`; npm `contentstack-cli-tsgen`; Jest integration tests)
5455

5556
All plugins depend on:
5657
- `@contentstack/cli-command` - Base Command class

.github/config/release.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"launch": false,
2121
"branches": false,
2222
"apps-cli": false,
23+
"tsgen": false,
2324
"bulk-operations": false,
2425
"core": false
2526
}

.github/workflows/release-production-plugins.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,14 @@ jobs:
159159
package: ./packages/contentstack-query-export/package.json
160160
tag: latest
161161

162+
# Tsgen
163+
- name: Publishing tsgen (Production)
164+
uses: JS-DevTools/npm-publish@v3
165+
with:
166+
token: ${{ secrets.NPM_TOKEN }}
167+
package: ./packages/contentstack-cli-tsgen/package.json
168+
tag: latest
169+
162170
- name: Create Production Release
163171
id: create_release
164172
env:
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Tsgen Integration Tests
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
7+
jobs:
8+
tsgen-integration:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Checkout code
12+
uses: actions/checkout@v4
13+
14+
- name: Setup pnpm
15+
uses: pnpm/action-setup@v4
16+
with:
17+
version: 10.28.0
18+
19+
- name: Set up Node.js
20+
uses: actions/setup-node@v4
21+
with:
22+
node-version: '22.x'
23+
cache: 'pnpm'
24+
25+
- name: Install dependencies
26+
run: pnpm install --frozen-lockfile
27+
28+
- name: Build tsgen plugin
29+
run: pnpm --filter contentstack-cli-tsgen run build
30+
31+
- name: Install Contentstack CLI (v1)
32+
run: npm i -g @contentstack/cli
33+
34+
- name: Configure CLI region
35+
run: csdx config:set:region ${{ secrets.REGION }}
36+
37+
- name: Add delivery token
38+
run: csdx auth:tokens:add -a ${{ secrets.TOKEN_ALIAS }} --delivery -k ${{ secrets.APIKEY }} --token ${{ secrets.DELIVERYKEY }} -e ${{ secrets.ENVIRONMENT }}
39+
40+
- name: Link tsgen plugin
41+
working-directory: ./packages/contentstack-cli-tsgen
42+
run: csdx plugins:link
43+
44+
- name: Run integration tests
45+
run: pnpm --filter contentstack-cli-tsgen run test:integration
46+
env:
47+
TOKEN_ALIAS: ${{ secrets.TOKEN_ALIAS }}
48+
49+
- name: Unlink tsgen plugin
50+
working-directory: ./packages/contentstack-cli-tsgen
51+
run: csdx plugins:unlink
52+
if: always()

.github/workflows/unit-test.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ jobs:
7070
working-directory: ./packages/contentstack-apps-cli
7171
run: npm run test:unit:report:json
7272

73+
- name: Run tests for Contentstack Tsgen plugin
74+
working-directory: ./packages/contentstack-cli-tsgen
75+
run: npm run test
76+
7377
- name: Run tests for Contentstack Migrate RTE
7478
working-directory: ./packages/contentstack-migrate-rte
7579
run: npm test

.talismanrc

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,76 @@
11
fileignoreconfig:
2-
- filename: pnpm-lock.yaml
3-
checksum: 89acb731dc98c886694fa4d267c11c188000b8ecbe5ee6e4809e5bc6ec33a2f3
2+
- filename: packages/contentstack-migrate-rte/test/dummy/expectedEntriesResponse.json
3+
checksum: a2784a3cb21780434958478d478dcb91d2d9a3a8025567d90fe8d74e9141b052
4+
- filename: packages/contentstack-migrate-rte/test/dummy/entriesResponse.json
5+
checksum: 691f3dcfbbcf69fd21e109a0d7003bdb500af2d0253bb7d7e8a0636d8f2a58f4
6+
- filename: packages/contentstack-bulk-operations/src/core/operation-executor.ts
7+
checksum: 46295f495f007ad291787133936c5af3c76838d72f2be0de9c235bb644d6f905
8+
- filename: packages/contentstack-bulk-operations/src/utils/interactive.ts
9+
checksum: ba4fdd6f17c7d43cae639158f82dea3065ba8a368ddce8c476bfe49a6945e5c1
10+
- filename: packages/contentstack-bulk-operations/src/core/rate-limiter.ts
11+
checksum: 81e3d624166ab34a589e3e8527b9e57ebc7e7f4374efd0483b1df0dd11788b68
12+
- filename: packages/contentstack-bulk-operations/src/base-bulk-command.ts
13+
checksum: 34907f0e00c40096cbe517b680a24fdf57caac351e45bc44b96e41987e619b67
14+
- filename: packages/contentstack-bulk-operations/src/interfaces/index.ts
15+
checksum: 0ff6bbc372758a20783f36bd391ba9d500530433fde472a1aacaf54f6b4a1688
16+
- filename: packages/contentstack-bulk-operations/README.md
17+
checksum: 169110e7c6159632f19dc16e17dcb5bac22e5d6880339b35ba076a2fe0d75266
18+
- filename: packages/contentstack-bulk-operations/eslint.config.js
19+
checksum: 0d93d7f660fe4cd6d62348c85ac10bf7c66018ea0b8e3e6d5a53419433f15867
20+
- filename: packages/contentstack-bulk-operations/src/utils/revert-retry-handler.ts
21+
checksum: 76899098d74de1dd20f1b08401c65f23b2bec584c051388e63f70f3d24a6d1a4
22+
- filename: packages/contentstack-bulk-operations/src/messages/index.ts
23+
checksum: 2d904462af6dc3ddc00ae6bb4433c846500ddfecee5a9e1fb1c236bd598a2ee1
24+
- filename: packages/contentstack-bulk-operations/src/utils/bulk-publish-url-generator.ts
25+
checksum: 052d811adb5da9bac8c70e5b3dc4ddf700d5aea274dd2aa90a2df374118fbd26
26+
- filename: packages/contentstack-bulk-operations/src/utils/batch-queue-handler.ts
27+
checksum: d1d031242b99f5c738e2f4587ca2f5f3e96373e479ebaf4d93b2f98152943593
28+
- filename: packages/contentstack-bulk-operations/src/utils/client.ts
29+
checksum: efdada21291db6d66e3114b7408163dee4cafe6ddb3904f02aa67140a1a89bb6
30+
- filename: packages/contentstack-bulk-operations/test/unit/core/index.test.ts
31+
checksum: 0d789258f5a9664e8a7dc5f5b23da846d0eaf8c52638ff20fb1f26104d3f9f8d
32+
- filename: packages/contentstack-bulk-operations/src/utils/config-builder.ts
33+
checksum: a7b5259ad719b8c5929f9fea3783bdc92610dc2549426204c1bb6813e7e1112a
34+
- filename: packages/contentstack-bulk-operations/test/unit/base-bulk-command.test.ts
35+
checksum: 18684a596707865e671f1ee57b4819cb3f4b4f2633d6c49f7f4b6ce09391359f
36+
- filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-entries.test.ts
37+
checksum: 845512e660813a6d7d96efd89dcff6eba4591a3f9ff371dc9b1aad38921e18a6
38+
- filename: packages/contentstack-bulk-operations/test/unit/commands/bulk-assets.test.ts
39+
checksum: c099c628c7ae1a40a9ca5580de0afa8309a611b2dff7837b10bb8f70eb92f8b3
40+
- filename: packages/contentstack-bulk-operations/test/unit/utils/config-builder.test.ts
41+
checksum: d46757d3bb98d76845e83d4585f269b62b1fa9cb5bee3215b88fed38fd1dbb53
42+
- filename: packages/contentstack-bulk-operations/test/unit/core/operation-executor.test.ts
43+
checksum: 97f0ddd4d547f37a8d93650aa1e8af4ef4dbce343dd51853e34bbde6107cd725
44+
- filename: packages/contentstack-bulk-operations/test/unit/messages/index.test.ts
45+
checksum: e86e76db4f4afc899ae2a4742627a71a7d227a7139014361b9d83de6154b3c7a
46+
- filename: packages/contentstack-migrate-rte/README.md
47+
checksum: 3810817d905405de86814af35fc0f0a6712cacd70f43223869b4f0599b6e579c
48+
- filename: packages/contentstack-bulk-operations/test/unit/utils/interactive.test.ts
49+
checksum: 3ee0ff5a74929346bfe997aeb977b4e93d398ea63892efc5f85e0b51a21074f6
50+
- filename: packages/contentstack-bulk-operations/test/unit/utils/operation-confirmation.test.ts
51+
checksum: 043185e56361ffae2116a2af5a4da16986816ad054fd94f189269e5b6150609e
52+
- filename: packages/contentstack-migrate-rte/src/commands/cm/entries/migrate-html-rte.js
53+
checksum: a069c50d5152022a0957d5f597158e2d8c74803b3d24ff6bbbe3b09f0e9053e2
54+
- filename: packages/contentstack-bulk-operations/test/unit/services/index.test.ts
55+
checksum: aae62ba072551bedf869ec7b1f6bf90238bc039336f37e7c583da8ba0637f9be
56+
- filename: packages/contentstack-bulk-operations/test/unit/services/taxonomy-service.test.ts
57+
checksum: 33af8ee198158dd92916d76207e172b5316864d063a6929526ca259b459ec79a
58+
- filename: packages/contentstack-bulk-operations/test/unit/utils/taxonomy-interactive-select.test.ts
59+
checksum: 34a085702d01d7e16e1507ea1e434b374c2cba5dd884aad5996c5484412897c0
60+
- filename: packages/contentstack-migrate-rte/src/lib/util/index.js
61+
checksum: 7d85f342c7fd7875713cebfae83f68d8592cc732a15cca48ddecbeae818cb4c5
62+
- filename: packages/contentstack-bulk-operations/test/unit/utils/revert-retry-handler.test.ts
63+
checksum: 078f9633edb53204ed14ebe3cf6b1d6063729dd37b7ee1c6e936a344ceabebda
64+
- filename: packages/contentstack-migrate-rte/test/commands/json-migration.test.js
65+
checksum: 56e10f1e0d2794fa13bcf5a6bb3e868b28277df1762fb3df0a8a82ad44f8045b
66+
- filename: packages/contentstack-bulk-operations/test/unit/utils/validators.test.ts
67+
checksum: 69cf394584e325b972d6825879de7c31b9dd1bd50b0bb057aecb739258ac0317
68+
- filename: packages/contentstack-bulk-operations/test/unit/utils/batch-queue-handler.test.ts
69+
checksum: c91f1822b5cfd34a4f4ba05dfc56c10a66e0f5ddb55a1cf5b454fa9549ea0052
70+
- filename: packages/contentstack-migrate-rte/test/utils/index.js
71+
checksum: bc2a509a86174aecbaf0bfc44d6ad3afabe57ef871ec91b796d498e00177e3f0
72+
- filename: packages/contentstack-bulk-operations/test/unit/utils/client.test.ts
73+
checksum: 178611b1f153b46a0020da22cc18293d5bd9c539ec2e54557fd8c1a3c2e796b3
74+
- filename: packages/contentstack-bulk-operations/test/unit/utils/bulk-operation-log-handler.test.ts
75+
checksum: cec7ba35157c6516d67931d41deb57b7a156d9fc05dbab93ca5116e89b95c820
476
version: '1.0'

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,4 @@ To get a more detailed documentation for every command, visit the [CLI section](
5555

5656
## Useful Plugins
5757

58-
- [Generate TypeScript typings from a Stack](https://github.com/Contentstack-Solutions/contentstack-cli-tsgen)
58+
- [Generate TypeScript typings from a Stack](https://github.com/contentstack/cli-plugins/tree/v1-dev/packages/contentstack-cli-tsgen) (`contentstack-cli-tsgen`)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
module.exports = {
2+
parser: "@typescript-eslint/parser",
3+
parserOptions: {
4+
ecmaVersion: 2020,
5+
sourceType: "module",
6+
},
7+
plugins: ["@typescript-eslint"],
8+
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
9+
rules: {
10+
"unicorn/prefer-module": "off",
11+
"unicorn/no-abusive-eslint-disable": "off",
12+
"@typescript-eslint/no-use-before-define": "off",
13+
"node/no-missing-import": "off",
14+
"@typescript-eslint/no-explicit-any": "off",
15+
"@typescript-eslint/no-require-imports": "off",
16+
"no-useless-escape": "off",
17+
},
18+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
*-debug.log
2+
*-error.log
3+
/.nyc_output
4+
/dist
5+
/lib
6+
/tmp
7+
node_modules
8+
.DS_Store
9+
coverage
10+
.env
11+
oclif.manifest.json
12+
talisman_output.log
13+
snyk_output.log
14+
tsconfig.tsbuildinfo
15+
tests/integration/generated.d.ts
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# contentstack-cli-tsgen – Agent guide
2+
3+
**Universal entry point** for contributors and AI agents. Detailed conventions live in **`skills/*/SKILL.md`**.
4+
5+
## What this repo is
6+
7+
| Field | Detail |
8+
| --- | --- |
9+
| **Name:** | `contentstack-cli-tsgen` ([contentstack/cli-plugins](https://github.com/contentstack/cli-plugins)`packages/contentstack-cli-tsgen`) |
10+
| **Purpose:** | OCLIF plugin that adds **`csdx tsgen`** to generate TypeScript typings from a stack. Generation is delegated to **`@contentstack/types-generator`** (`generateTS` / `graphqlTS`); this package owns flags, auth alias, file output, and CLI error formatting. |
11+
| **Out of scope (if any):** | Core type-generation logic belongs in **`@contentstack/types-generator`** ([npm](https://www.npmjs.com/package/@contentstack/types-generator)), not reimplemented here. |
12+
13+
## Tech stack (at a glance)
14+
15+
| Area | Details |
16+
| --- | --- |
17+
| **Language** | TypeScript **5.9** (`strict` in [tsconfig.json](tsconfig.json)) |
18+
| **Build** | `pnpm run build``tsc -b``lib/`; OCLIF manifest + readme |
19+
| **Tests** | **Jest** + **ts-jest** ([jest.config.js](jest.config.js)); integration tests under `tests/integration/` |
20+
| **Lint / coverage** | ESLint via `lint` and `posttest` |
21+
| **Other** | OCLIF v4, Node **>= 14**; **v1** `@contentstack/cli-command` ~1.8.2 / `@contentstack/cli-utilities` ~1.18.3 |
22+
23+
**Main dependencies:** `@contentstack/cli-command`, `@contentstack/cli-utilities`, `@contentstack/types-generator`.
24+
25+
## Commands (quick reference)
26+
27+
| Command type | Command |
28+
| --- | --- |
29+
| **Build** | `pnpm run build` (from repo root: `pnpm --filter contentstack-cli-tsgen run build`) |
30+
| **Test** | `pnpm test` (then **`posttest`** → ESLint) |
31+
| **Integration** | `pnpm run test:integration` |
32+
| **Lint** | `pnpm run lint` |
33+
34+
CI: [tsgen-integration-test.yml](../../.github/workflows/tsgen-integration-test.yml) (live stack); tests in [unit-test.yml](../../.github/workflows/unit-test.yml); release via [release-production-plugins.yml](../../.github/workflows/release-production-plugins.yml) on **`main`** (`latest` tag).
35+
36+
## Credentials and integration tests
37+
38+
Integration tests spawn **`csdx tsgen`** and require a **delivery token alias**. Set **`TOKEN_ALIAS`** (e.g. **`.env`** at package root; see [tests/integration/tsgen.integration.test.ts](tests/integration/tsgen.integration.test.ts)). CI uses secrets **`REGION`**, **`TOKEN_ALIAS`**, **`APIKEY`**, **`DELIVERYKEY`**, **`ENVIRONMENT`**.
39+
40+
## Where the documentation lives: skills
41+
42+
| Skill | Path | What it covers |
43+
| --- | --- | --- |
44+
| Development workflow | [skills/dev-workflow/SKILL.md](skills/dev-workflow/SKILL.md) | pnpm, CI, PRs, releases |
45+
| TypeScript CLI tsgen | [skills/typescript-cli-tsgen/SKILL.md](skills/typescript-cli-tsgen/SKILL.md) | OCLIF command, flags, delegation to the library |
46+
| Testing | [skills/testing/SKILL.md](skills/testing/SKILL.md) | Jest, integration env, CI |
47+
| Code review | [skills/code-review/SKILL.md](skills/code-review/SKILL.md) | PR checklist, terminology, semver |
48+
49+
An index with “when to use” hints is in [skills/README.md](skills/README.md).
50+
51+
## Migration from standalone repo
52+
53+
See [TSGEN-MIGRATION.md](../../TSGEN-MIGRATION.md) at the monorepo root.

0 commit comments

Comments
 (0)