From 515d38603fa1fe68b3cee930b6bff29b206457b7 Mon Sep 17 00:00:00 2001 From: Aman Kumar Date: Wed, 8 Jan 2025 14:50:23 +0530 Subject: [PATCH 1/4] feat: auto install tsgen plugin in CLI --- package-lock.json | 209 ++++++++++++++++++++++++++++- packages/contentstack/README.md | 41 +++++- packages/contentstack/package.json | 10 +- pnpm-lock.yaml | 187 +++++++++++++++++++++++++- 4 files changed, 435 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36ca1725a4..1272642a93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1109,6 +1109,39 @@ "dev": true, "license": "MIT" }, + "node_modules/@gql2ts/language-typescript": { + "version": "2.0.0-0", + "resolved": "https://registry.npmjs.org/@gql2ts/language-typescript/-/language-typescript-2.0.0-0.tgz", + "integrity": "sha512-7jxNsQutjQ5rUfOxNZuovUXFldIA5hhIjQh95aJLQIRYKBVDCIceM6QpCCbf1iuhwx4P23jx1kc/4uLsAJHnug==", + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "@gql2ts/util": "^2.0.0-0", + "humps": "^2.0.0" + } + }, + "node_modules/@gql2ts/language-typescript/node_modules/@gql2ts/util": { + "version": "2.0.0-0", + "resolved": "https://registry.npmjs.org/@gql2ts/util/-/util-2.0.0-0.tgz", + "integrity": "sha512-lMUYZZtoo31klzenNvJ4cMYzFbs3T4peT7fSlCAq1EEthbIuXFtrY8aFIa2Y5BdrnhoHFYDgdlYbr3xJ0j1teA==", + "license": "ISC", + "peerDependencies": { + "graphql": ">= 0.10 <15" + } + }, + "node_modules/@gql2ts/language-typescript/node_modules/graphql": { + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", + "license": "MIT", + "peer": true, + "dependencies": { + "iterall": "^1.2.2" + }, + "engines": { + "node": ">= 6.x" + } + }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", @@ -3130,7 +3163,6 @@ "version": "10.3.0", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" @@ -6463,6 +6495,152 @@ "node": ">= 10.14.2" } }, + "node_modules/contentstack-cli-tsgen": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/contentstack-cli-tsgen/-/contentstack-cli-tsgen-3.0.1.tgz", + "integrity": "sha512-B+O1rAeb94tTFRf/k92BGAybNqAr6bf6pIVGbLv+mbawFOs1wgFUV2diSB3GX/ChEsJ9IUt7gaiTH98aHZdTAQ==", + "license": "MIT", + "dependencies": { + "@contentstack/cli-command": "^1.3.1", + "@contentstack/cli-utilities": "^1.7.3", + "@gql2ts/from-schema": "^2.0.0-4", + "async": "^3.2.6", + "fancy-test": "^3.0.16", + "graphql": "^14.7.0", + "lodash": "^4.17.21", + "prettier": "^2.8.8", + "tslib": "^1.14.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/@gql2ts/from-schema": { + "version": "2.0.0-4", + "resolved": "https://registry.npmjs.org/@gql2ts/from-schema/-/from-schema-2.0.0-4.tgz", + "integrity": "sha512-dx9OCgL5A6IiDecIFxKyfbpzCsEI6dbyCLlYwQU0dzr+L3IN0YkEIpNtPmO83W1MRZAi34G1AiKZBgbRcT0S9g==", + "license": "ISC", + "dependencies": { + "@gql2ts/language-typescript": "^2.0.0-0", + "@gql2ts/util": "^2.0.0-0", + "dedent": "^0.7.0" + }, + "peerDependencies": { + "graphql": ">= 0.10 <15" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/@gql2ts/util": { + "version": "2.0.0-0", + "resolved": "https://registry.npmjs.org/@gql2ts/util/-/util-2.0.0-0.tgz", + "integrity": "sha512-lMUYZZtoo31klzenNvJ4cMYzFbs3T4peT7fSlCAq1EEthbIuXFtrY8aFIa2Y5BdrnhoHFYDgdlYbr3xJ0j1teA==", + "license": "ISC", + "peerDependencies": { + "graphql": ">= 0.10 <15" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "license": "MIT" + }, + "node_modules/contentstack-cli-tsgen/node_modules/fancy-test": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/fancy-test/-/fancy-test-3.0.16.tgz", + "integrity": "sha512-y1xZFpyYbE2TMiT+agOW2Emv8gr73zvDrKKbcXc8L+gMyIVJFn71cc4ICfzu2zEXjHirpHpdDJN0JBX99wwDXQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "@types/chai": "*", + "@types/lodash": "*", + "@types/node": "*", + "@types/sinon": "*", + "lodash": "^4.17.13", + "mock-stdin": "^1.0.0", + "nock": "^13.5.4", + "sinon": "^16.1.3", + "stdout-stderr": "^0.1.9" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/graphql": { + "version": "14.7.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.7.0.tgz", + "integrity": "sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA==", + "license": "MIT", + "dependencies": { + "iterall": "^1.2.2" + }, + "engines": { + "node": ">= 6.x" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz", + "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/contentstack-cli-tsgen/node_modules/sinon": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", + "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/contentstack-cli-tsgen/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -7032,7 +7210,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -10628,6 +10805,12 @@ "ms": "^2.0.0" } }, + "node_modules/humps": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz", + "integrity": "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==", + "license": "MIT" + }, "node_modules/husky": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", @@ -12392,6 +12575,12 @@ "node": ">=8" } }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", + "license": "MIT" + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -20492,6 +20681,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -26591,6 +26795,7 @@ "@oclif/plugin-not-found": "^2.4.3", "@oclif/plugin-plugins": "^5.4.22", "chalk": "^4.1.2", + "contentstack-cli-tsgen": "^3.0.1", "debug": "^4.4.0", "figlet": "^1.8.0", "inquirer": "8.2.6", diff --git a/packages/contentstack/README.md b/packages/contentstack/README.md index 155e998819..100044d790 100644 --- a/packages/contentstack/README.md +++ b/packages/contentstack/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli $ csdx COMMAND running command... $ csdx (--version|-v) -@contentstack/cli/1.32.2 darwin-arm64 node-v22.8.0 +@contentstack/cli/1.32.2 darwin-arm64 node-v18.20.2 $ csdx --help [COMMAND] USAGE $ csdx COMMAND @@ -119,6 +119,7 @@ USAGE * [`csdx plugins:unlink [PLUGIN]`](#csdx-pluginsunlink-plugin) * [`csdx plugins:update`](#csdx-pluginsupdate) * [`csdx tokens`](#csdx-tokens) +* [`csdx tsgen`](#csdx-tsgen) * [`csdx whoami`](#csdx-whoami) ## `csdx audit` @@ -4165,6 +4166,44 @@ EXAMPLES $ csdx auth:tokens ``` +## `csdx tsgen` + +generate TypeScript typings from a Stack + +``` +USAGE + $ csdx tsgen -a -o [-p ] [-d] [--branch ] [--include-system-fields] + [--api-type rest|graphql] [--namespace ] + +FLAGS + -a, --token-alias= (required) delivery token alias + -d, --[no-]doc include documentation comments + -o, --output= (required) full path to output + -p, --prefix= interface prefix, e.g. "I" + --api-type=