diff --git a/.eslintrc.js b/.eslintrc.js index 6753607da287..9b5958a184db 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -102,4 +102,5 @@ module.exports = { }, }, ], + ignorePatterns: ['**/dist/**'], }; diff --git a/.gitignore b/.gitignore index 5a36cf21b91b..a8a5525c5aef 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ coverage/ .temp/ storybook-static/ .nx/cache +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9e95cd0d0586..3430d6761643 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7190,6 +7190,12 @@ "version": "0.16.5", "license": "MIT" }, + "node_modules/@types/semaphore": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/semaphore/-/semaphore-1.1.4.tgz", + "integrity": "sha512-W+KOVSGHKo5yoPXG69RFIKOdmvAcrAo2qnRrcDv80kIcxDnEUQ+c3IVKq0Jkp+BhhYfrbthPY9cXWFL0L9uzuw==", + "dev": true + }, "node_modules/@types/semver": { "version": "7.5.4", "dev": true, @@ -33240,6 +33246,9 @@ "js-base64": "^3.0.0", "semaphore": "^1.1.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -33259,6 +33268,9 @@ "js-base64": "^3.0.0", "semaphore": "^1.1.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -33280,6 +33292,9 @@ "semaphore": "^1.1.0", "what-the-diff": "^0.6.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -33332,6 +33347,9 @@ "js-base64": "^3.0.0", "semaphore": "^1.1.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -33358,6 +33376,9 @@ "js-base64": "^3.0.0", "semaphore": "^1.1.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -33380,6 +33401,9 @@ "js-base64": "^3.0.0", "semaphore": "^1.1.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -33477,6 +33501,7 @@ "devDependencies": { "@types/history": "^4.7.8", "@types/redux-mock-store": "^1.0.2", + "@types/semaphore": "^1.1.4", "@types/url-join": "^4.0.0", "redux-mock-store": "^1.5.3" }, @@ -33575,6 +33600,9 @@ "localforage": "^1.7.3", "semaphore": "^1.1.0" }, + "devDependencies": { + "@types/semaphore": "^1.1.4" + }, "peerDependencies": { "immutable": "^3.7.6", "lodash": "^4.17.11" diff --git a/package.json b/package.json index 4c8a1300b45a..6baa434672bd 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,13 @@ "build:esm": "nx run-many -t build:esm", "build:demo": "npm run build && ncp packages/decap-cms/dist dev-test/dist/", "build-preview": "npm run build && nx run decap-cms:build-preview --output-style=stream", - "type-check": "tsc --noEmit", + "type-check": "tsc --build", "type-check:watch": "npm run type-check -- --watch", - "clean": "rimraf \"packages/*/dist\" dev-test/dist \"packages/*/node_modules\" \".nx/cache\"", + "clean": "rimraf \"packages/*/dist\" dev-test/dist \"packages/*/node_modules\" \".nx/cache\" \"packages/*/tsconfig.tsbuildinfo\"", "reset": "npm run clean", "test": "npm run lint && npm run type-check && npm run test:unit", "test:all": "npm run test && npm run test:e2e", - "test:ci": "npm run lint-quiet && npm run type-check && npm run test:unit", + "test:ci": "npm run lint-quiet && npm run test:unit", "test:unit": "cross-env NODE_ENV=test jest --no-cache", "test:e2e": "npm run build:demo && npm run test:e2e:run", "test:e2e:ci": "npm run build:demo && npm run test:e2e:run-ci", diff --git a/packages/decap-cms-app/index.d.ts b/packages/decap-cms-app/index.d.ts deleted file mode 100644 index 71c98a8d9310..000000000000 --- a/packages/decap-cms-app/index.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -declare module 'decap-cms-app' { - import type { CMS } from 'decap-cms-core'; - - export const DecapCmsApp: CMS; - - export default DecapCmsApp; -} diff --git a/packages/decap-cms-app/package.json b/packages/decap-cms-app/package.json index 12a9a84bf74d..4b0a371f83ad 100644 --- a/packages/decap-cms-app/package.json +++ b/packages/decap-cms-app/package.json @@ -6,18 +6,20 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-app", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-app.js", "files": [ "src/", "dist/", "index.d.ts" ], - "types": "index.d.ts", "scripts": { "develop": "npm run build:esm -- --watch", "webpack": "node --max_old_space_size=4096 ../../node_modules/webpack/bin/webpack.js", - "build": "cross-env NODE_ENV=production run-s webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build": "cross-env NODE_ENV=production webpack", + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "keywords": [ "cms", diff --git a/packages/decap-cms-app/src/index.js b/packages/decap-cms-app/src/index.ts similarity index 66% rename from packages/decap-cms-app/src/index.js rename to packages/decap-cms-app/src/index.ts index 2e0c08afae08..edae630c4e8f 100644 --- a/packages/decap-cms-app/src/index.js +++ b/packages/decap-cms-app/src/index.ts @@ -1,6 +1,13 @@ import { DecapCmsCore as CMS } from 'decap-cms-core'; import './extensions.js'; +export * from 'decap-cms-core'; + +declare global { + // This is not really a global but a literal injected by babel + const DECAP_CMS_APP_VERSION: string; +} + // Log version if (typeof window !== 'undefined') { if (typeof DECAP_CMS_APP_VERSION === 'string') { diff --git a/packages/decap-cms-app/tsconfig.json b/packages/decap-cms-app/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-app/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-aws-cognito-github-proxy/package.json b/packages/decap-cms-backend-aws-cognito-github-proxy/package.json index ff45694102fb..cb82a27fd636 100644 --- a/packages/decap-cms-backend-aws-cognito-github-proxy/package.json +++ b/packages/decap-cms-backend-aws-cognito-github-proxy/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-backend-aws-cognito-github-proxy", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-aws-cognito-github-proxy.js", "keywords": [ "decap-cms", @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore **/__tests__ --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "apollo-cache-inmemory": "^1.6.2", @@ -40,5 +43,8 @@ "lodash": "^4.17.11", "prop-types": "^15.7.2", "react": "^18.2.0" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-backend-aws-cognito-github-proxy/tsconfig.json b/packages/decap-cms-backend-aws-cognito-github-proxy/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-aws-cognito-github-proxy/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-azure/package.json b/packages/decap-cms-backend-azure/package.json index d1e9e209dc58..a342c5ed971f 100644 --- a/packages/decap-cms-backend-azure/package.json +++ b/packages/decap-cms-backend-azure/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-backend-azure", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-azure.js", "keywords": [ "decap-cms", @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore **/__tests__ --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "js-base64": "^3.0.0", @@ -33,5 +36,8 @@ "lodash": "^4.17.11", "prop-types": "^15.7.2", "react": "^18.2.0" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-backend-azure/tsconfig.json b/packages/decap-cms-backend-azure/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-azure/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-bitbucket/package.json b/packages/decap-cms-backend-bitbucket/package.json index 801444f51539..d26dc598f7ff 100644 --- a/packages/decap-cms-backend-bitbucket/package.json +++ b/packages/decap-cms-backend-bitbucket/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-backend-bitbucket", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-bitbucket.js", "license": "MIT", "keywords": [ @@ -16,7 +17,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "common-tags": "^1.8.0", @@ -34,5 +37,8 @@ "lodash": "^4.17.11", "prop-types": "^15.7.2", "react": "^18.2.0" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-backend-bitbucket/src/API.ts b/packages/decap-cms-backend-bitbucket/src/API.ts index 22cb4ace4ab4..91b379539e3e 100644 --- a/packages/decap-cms-backend-bitbucket/src/API.ts +++ b/packages/decap-cms-backend-bitbucket/src/API.ts @@ -469,7 +469,11 @@ export default class API { branch: filesBranch, parseText: false, }); - formData.append(file.path.replace(sourceDir, destDir), content, basename(file.path)); + formData.append( + file.path.replace(sourceDir, destDir), + content as Blob, + basename(file.path), + ); } } diff --git a/packages/decap-cms-backend-bitbucket/src/implementation.ts b/packages/decap-cms-backend-bitbucket/src/implementation.ts index 2f6ce39d706e..e46212c5961d 100644 --- a/packages/decap-cms-backend-bitbucket/src/implementation.ts +++ b/packages/decap-cms-backend-bitbucket/src/implementation.ts @@ -134,7 +134,7 @@ export default class BitbucketBackend implements Implementation { } async status() { - const api = await fetch(BITBUCKET_STATUS_ENDPOINT) + const api = await fetch(BITBUCKET_STATUS_ENDPOINT, undefined) .then(res => res.json()) .then(res => { return res['components'] @@ -272,10 +272,14 @@ export default class BitbucketBackend implements Implementation { this.authenticator = new NetlifyAuthenticator(cfg); } - this.refreshedTokenPromise = this.authenticator!.refresh({ - provider: 'bitbucket', - refresh_token: this.refreshToken as string, - }).then(({ token, refresh_token }) => { + this.refreshedTokenPromise = this.authenticator!.refresh( + { + provider: 'bitbucket', + refresh_token: this.refreshToken as string, + }, + undefined, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ).then(({ token, refresh_token }: any) => { this.token = token; this.refreshToken = refresh_token; this.refreshedTokenPromise = undefined; diff --git a/packages/decap-cms-backend-bitbucket/tsconfig.json b/packages/decap-cms-backend-bitbucket/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-bitbucket/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-git-gateway/package.json b/packages/decap-cms-backend-git-gateway/package.json index 0f1444cc4a2c..2272fd0b3e6c 100644 --- a/packages/decap-cms-backend-git-gateway/package.json +++ b/packages/decap-cms-backend-git-gateway/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-backend-git-gateway", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-git-gateway.js", "license": "MIT", "keywords": [ @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "gotrue-js": "^0.9.24", diff --git a/packages/decap-cms-backend-git-gateway/tsconfig.json b/packages/decap-cms-backend-git-gateway/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-git-gateway/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-gitea/package.json b/packages/decap-cms-backend-gitea/package.json index cb343a98f0d4..761c82fcf2a3 100644 --- a/packages/decap-cms-backend-gitea/package.json +++ b/packages/decap-cms-backend-gitea/package.json @@ -6,6 +6,7 @@ "bugs": "https://github.com/decaporg/decap-cms/issues", "license": "MIT", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-gitea.js", "keywords": [ "decap-cms", @@ -16,7 +17,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "js-base64": "^3.0.0", @@ -32,5 +35,8 @@ "lodash": "^4.17.11", "prop-types": "^15.7.2", "react": "^18.2.0" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-backend-gitea/tsconfig.json b/packages/decap-cms-backend-gitea/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-gitea/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-github/package.json b/packages/decap-cms-backend-github/package.json index 5f506b7d4287..8295c1c2d407 100644 --- a/packages/decap-cms-backend-github/package.json +++ b/packages/decap-cms-backend-github/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-backend-github", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-github.js", "keywords": [ "decap-cms", @@ -16,7 +17,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc", "createFragmentTypes": "node scripts/createFragmentTypes.js" }, "dependencies": { @@ -39,5 +42,8 @@ "lodash": "^4.17.11", "prop-types": "^15.7.2", "react": "^18.2.0" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-backend-github/src/implementation.tsx b/packages/decap-cms-backend-github/src/implementation.tsx index 31149d8e9f26..ad89ed2e824c 100644 --- a/packages/decap-cms-backend-github/src/implementation.tsx +++ b/packages/decap-cms-backend-github/src/implementation.tsx @@ -138,7 +138,7 @@ export default class GitHub implements Implementation { } async status() { - const api = await fetch(GITHUB_STATUS_ENDPOINT) + const api = await fetch(GITHUB_STATUS_ENDPOINT, undefined) .then(res => res.json()) .then(res => { return res['components'] diff --git a/packages/decap-cms-backend-github/tsconfig.json b/packages/decap-cms-backend-github/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-github/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-gitlab/package.json b/packages/decap-cms-backend-gitlab/package.json index 4fcd5edd891d..5f0c5ba2f230 100644 --- a/packages/decap-cms-backend-gitlab/package.json +++ b/packages/decap-cms-backend-gitlab/package.json @@ -6,6 +6,7 @@ "bugs": "https://github.com/decaporg/decap-cms/issues", "license": "MIT", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-gitlab.js", "keywords": [ "decap-cms", @@ -16,7 +17,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "apollo-cache-inmemory": "^1.6.2", @@ -36,5 +39,8 @@ "lodash": "^4.17.11", "prop-types": "^15.7.2", "react": "^18.2.0" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-backend-gitlab/tsconfig.json b/packages/decap-cms-backend-gitlab/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-gitlab/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-proxy/package.json b/packages/decap-cms-backend-proxy/package.json index 47fa5f7932b6..ae68151793a6 100644 --- a/packages/decap-cms-backend-proxy/package.json +++ b/packages/decap-cms-backend-proxy/package.json @@ -6,6 +6,7 @@ "bugs": "https://github.com/decaporg/decap-cms/issues", "license": "MIT", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-proxy.js", "keywords": [ "decap-cms", @@ -15,7 +16,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-backend-proxy/tsconfig.json b/packages/decap-cms-backend-proxy/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-proxy/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-backend-test/package.json b/packages/decap-cms-backend-test/package.json index bc237a0a499e..c5725174a49a 100644 --- a/packages/decap-cms-backend-test/package.json +++ b/packages/decap-cms-backend-test/package.json @@ -6,6 +6,7 @@ "bugs": "https://github.com/decaporg/decap-cms/issues", "license": "MIT", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-backend-test.js", "keywords": [ "decap-cms", @@ -15,7 +16,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-backend-test/tsconfig.json b/packages/decap-cms-backend-test/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-backend-test/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-core/index.d.ts b/packages/decap-cms-core/index.d.ts deleted file mode 100644 index 9eb5e7f9855e..000000000000 --- a/packages/decap-cms-core/index.d.ts +++ /dev/null @@ -1,603 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -declare module 'decap-cms-core' { - import type { ComponentType } from 'react'; - import type { List, Map } from 'immutable'; - import type { Pluggable } from 'unified'; - - export type CmsBackendType = - | 'azure' - | 'git-gateway' - | 'github' - | 'gitlab' - | 'gitea' - | 'bitbucket' - | 'test-repo' - | 'proxy'; - - export type CmsMapWidgetType = 'Point' | 'LineString' | 'Polygon'; - - export type CmsMarkdownWidgetButton = - | 'bold' - | 'italic' - | 'code' - | 'link' - | 'heading-one' - | 'heading-two' - | 'heading-three' - | 'heading-four' - | 'heading-five' - | 'heading-six' - | 'quote' - | 'code-block' - | 'bulleted-list' - | 'numbered-list'; - - export interface CmsSelectWidgetOptionObject { - label: string; - value: any; - } - - export type CmsCollectionFormatType = string; - - export type CmsAuthScope = 'repo' | 'public_repo'; - - export type CmsPublishMode = 'simple' | 'editorial_workflow' | ''; - - export type CmsSlugEncoding = 'unicode' | 'ascii'; - - export interface CmsI18nConfig { - structure: 'multiple_folders' | 'multiple_files' | 'single_file'; - locales: string[]; - default_locale?: string; - } - - export interface CmsFieldBase { - name: string; - label?: string; - required?: boolean; - hint?: string; - pattern?: [string, string]; - i18n?: boolean | 'translate' | 'duplicate' | 'none'; - media_folder?: string; - public_folder?: string; - comment?: string; - } - - export interface CmsFieldBoolean { - widget: 'boolean'; - default?: boolean; - } - - export interface CmsFieldCode { - widget: 'code'; - default?: any; - - default_language?: string; - allow_language_selection?: boolean; - keys?: { code: string; lang: string }; - output_code_only?: boolean; - } - - export interface CmsFieldColor { - widget: 'color'; - default?: string; - - allowInput?: boolean; - enableAlpha?: boolean; - } - - export interface CmsFieldDateTime { - widget: 'datetime'; - default?: string; - - format?: string; - date_format?: boolean | string; - time_format?: boolean | string; - picker_utc?: boolean; - - /** - * @deprecated Use date_format instead - */ - dateFormat?: boolean | string; - /** - * @deprecated Use time_format instead - */ - timeFormat?: boolean | string; - /** - * @deprecated Use picker_utc instead - */ - pickerUtc?: boolean; - } - - export interface CmsFieldFileOrImage { - widget: 'file' | 'image'; - default?: string; - - media_library?: CmsMediaLibrary; - allow_multiple?: boolean; - choose_url?: boolean; - config?: any; - } - - export interface CmsFieldObject { - widget: 'object'; - default?: any; - - collapsed?: boolean; - summary?: string; - fields: CmsField[]; - } - - export interface CmsFieldList { - widget: 'list'; - default?: any; - - allow_add?: boolean; - collapsed?: boolean; - summary?: string; - minimize_collapsed?: boolean; - label_singular?: string; - field?: CmsField; - fields?: CmsField[]; - max?: number; - min?: number; - add_to_top?: boolean; - types?: (CmsFieldBase & CmsFieldObject)[]; - } - - export interface CmsFieldMap { - widget: 'map'; - default?: string; - - decimals?: number; - type?: CmsMapWidgetType; - } - - export interface CmsFieldMarkdown { - widget: 'markdown'; - default?: string; - - minimal?: boolean; - buttons?: CmsMarkdownWidgetButton[]; - editor_components?: string[]; - modes?: ('raw' | 'rich_text')[]; - - /** - * @deprecated Use editor_components instead - */ - editorComponents?: string[]; - } - - export interface CmsFieldNumber { - widget: 'number'; - default?: string | number; - - value_type?: 'int' | 'float' | string; - min?: number; - max?: number; - - step?: number; - - /** - * @deprecated Use valueType instead - */ - valueType?: 'int' | 'float' | string; - } - - export interface CmsFieldSelect { - widget: 'select'; - default?: string | string[]; - - options: string[] | CmsSelectWidgetOptionObject[]; - multiple?: boolean; - min?: number; - max?: number; - } - - export interface CmsFieldRelation { - widget: 'relation'; - default?: string | string[]; - - collection: string; - value_field: string; - search_fields: string[]; - file?: string; - display_fields?: string[]; - multiple?: boolean; - options_length?: number; - - /** - * @deprecated Use value_field instead - */ - valueField?: string; - /** - * @deprecated Use search_fields instead - */ - searchFields?: string[]; - /** - * @deprecated Use display_fields instead - */ - displayFields?: string[]; - /** - * @deprecated Use options_length instead - */ - optionsLength?: number; - } - - export interface CmsFieldHidden { - widget: 'hidden'; - default?: any; - } - - export interface CmsFieldStringOrText { - // This is the default widget, so declaring its type is optional. - widget?: 'string' | 'text'; - default?: string; - } - - export interface CmsFieldMeta { - name: string; - label: string; - widget: string; - required: boolean; - index_file: string; - meta: boolean; - } - - export type CmsField = CmsFieldBase & - ( - | CmsFieldBoolean - | CmsFieldCode - | CmsFieldColor - | CmsFieldDateTime - | CmsFieldFileOrImage - | CmsFieldList - | CmsFieldMap - | CmsFieldMarkdown - | CmsFieldNumber - | CmsFieldObject - | CmsFieldRelation - | CmsFieldSelect - | CmsFieldHidden - | CmsFieldStringOrText - | CmsFieldMeta - ); - - export interface CmsCollectionFile { - name: string; - label: string; - file: string; - fields: CmsField[]; - label_singular?: string; - description?: string; - preview_path?: string; - preview_path_date_field?: string; - i18n?: boolean | CmsI18nConfig; - media_folder?: string; - public_folder?: string; - } - - export interface ViewFilter { - label: string; - field: string; - pattern: string; - } - - export interface ViewGroup { - label: string; - field: string; - pattern?: string; - } - - export interface CmsCollection { - name: string; - label: string; - label_singular?: string; - description?: string; - folder?: string; - files?: CmsCollectionFile[]; - identifier_field?: string; - summary?: string; - slug?: string; - preview_path?: string; - preview_path_date_field?: string; - create?: boolean; - delete?: boolean; - hide?: boolean; - editor?: { - preview?: boolean; - }; - publish?: boolean; - nested?: { - depth: number; - }; - meta?: { path?: { label: string; widget: string; index_file: string } }; - - /** - * It accepts the following values: yml, yaml, toml, json, md, markdown, html - * - * You may also specify a custom extension not included in the list above, by specifying the format value. - */ - extension?: string; - format?: CmsCollectionFormatType; - - frontmatter_delimiter?: string[] | string; - fields?: CmsField[]; - filter?: { field: string; value: any }; - path?: string; - media_folder?: string; - public_folder?: string; - sortable_fields?: string[]; - view_filters?: ViewFilter[]; - view_groups?: ViewGroup[]; - i18n?: boolean | CmsI18nConfig; - - /** - * @deprecated Use sortable_fields instead - */ - sortableFields?: string[]; - } - - export interface CmsBackend { - name: CmsBackendType; - auth_scope?: CmsAuthScope; - open_authoring?: boolean; - always_fork?: boolean; - repo?: string; - branch?: string; - api_root?: string; - site_domain?: string; - base_url?: string; - auth_endpoint?: string; - app_id?: string; - auth_type?: 'implicit' | 'pkce'; - cms_label_prefix?: string; - squash_merges?: boolean; - proxy_url?: string; - commit_messages?: { - create?: string; - update?: string; - delete?: string; - uploadMedia?: string; - deleteMedia?: string; - openAuthoring?: string; - }; - } - - export interface CmsSlug { - encoding?: CmsSlugEncoding; - clean_accents?: boolean; - sanitize_replacement?: string; - } - - export interface CmsLocalBackend { - url?: string; - allowed_hosts?: string[]; - } - - export interface CmsConfig { - backend: CmsBackend; - collections: CmsCollection[]; - locale?: string; - site_url?: string; - display_url?: string; - logo_url?: string; - show_preview_links?: boolean; - media_folder?: string; - public_folder?: string; - media_folder_relative?: boolean; - media_library?: CmsMediaLibrary; - publish_mode?: CmsPublishMode; - load_config_file?: boolean; - integrations?: { - hooks: string[]; - provider: string; - collections?: '*' | string[]; - applicationID?: string; - apiKey?: string; - getSignedFormURL?: string; - }[]; - slug?: CmsSlug; - i18n?: CmsI18nConfig; - local_backend?: boolean | CmsLocalBackend; - editor?: { - preview?: boolean; - }; - } - - export interface InitOptions { - config: CmsConfig; - } - - export type EditorComponentField = - | ({ - name: string; - label: string; - } & { - widget: Omit; - }) - | { - widget: 'list'; - /** - * Used if widget === "list" to create a flat array - */ - field?: EditorComponentField; - /** - * Used if widget === "list" to create an array of objects - */ - fields?: EditorComponentField[]; - }; - - export interface EditorComponentOptions { - id: string; - label: string; - fields?: EditorComponentField[]; - pattern: RegExp; - allow_add?: boolean; - fromBlock: (match: RegExpMatchArray) => any; - toBlock: (data: any) => string; - toPreview: (data: any) => string | JSX.Element; - } - - export interface PreviewStyleOptions { - raw: boolean; - } - - export interface PreviewStyle extends PreviewStyleOptions { - value: string; - } - - export type CmsBackendClass = any; // TODO: type properly - - export interface CmsRegistryBackend { - init: (args: any) => CmsBackendClass; - } - - export interface CmsWidgetControlProps { - value: T; - field: Map; - onChange: (value: T) => void; - forID: string; - classNameWrapper: string; - } - - export interface CmsWidgetPreviewProps { - value: T; - field: Map; - metadata: Map; - getAsset: GetAssetFunction; - entry: Map; - fieldsMetaData: Map; - } - - export interface CmsWidgetParam { - name: string; - controlComponent: CmsWidgetControlProps; - previewComponent?: CmsWidgetPreviewProps; - globalStyles?: any; - } - - export interface CmsWidget { - control: CmsWidgetControlProps; - preview?: CmsWidgetPreviewProps; - globalStyles?: any; - } - - export type CmsWidgetValueSerializer = any; // TODO: type properly - - export type CmsMediaLibraryOptions = any; // TODO: type properly - - export interface CmsMediaLibrary { - name: string; - config?: CmsMediaLibraryOptions; - } - - export interface CmsEventListener { - name: 'prePublish' | 'postPublish' | 'preUnpublish' | 'postUnpublish' | 'preSave' | 'postSave'; - handler: ({ - entry, - author, - }: { - entry: Map; - author: { login: string; name: string }; - }) => any; - } - - export type CmsEventListenerOptions = any; // TODO: type properly - - export type CmsLocalePhrases = any; // TODO: type properly - - export type Formatter = { - fromFile(content: string): unknown; - toFile(data: object, sortedKeys?: string[], comments?: Record): string; - }; - - export interface CmsRegistry { - backends: { - [name: string]: CmsRegistryBackend; - }; - templates: { - [name: string]: ComponentType; - }; - previewStyles: PreviewStyle[]; - widgets: { - [name: string]: CmsWidget; - }; - editorComponents: Map>; - widgetValueSerializers: { - [name: string]: CmsWidgetValueSerializer; - }; - mediaLibraries: CmsMediaLibrary[]; - locales: { - [name: string]: CmsLocalePhrases; - }; - formats: { - [name: string]: Formatter; - }; - } - - type GetAssetFunction = (asset: string) => { - url: string; - path: string; - field?: any; - fileObj: File; - }; - - export type PreviewTemplateComponentProps = { - entry: Map; - collection: Map; - getCollection: (collectionName: string, slug?: string) => Promise[]>; - widgetFor: (name: any, fields?: any, values?: any, fieldsMetaData?: any) => JSX.Element | null; - widgetsFor: (name: any) => any; - getAsset: GetAssetFunction; - boundGetAsset: (collection: any, path: any) => GetAssetFunction; - fieldsMetaData: Map; - config: Map; - fields: List>; - isLoadingAsset: boolean; - window: Window; - document: Document; - }; - - export interface CMS { - getBackend: (name: string) => CmsRegistryBackend | undefined; - getEditorComponents: () => Map>; - getRemarkPlugins: () => Array; - getLocale: (locale: string) => CmsLocalePhrases | undefined; - getMediaLibrary: (name: string) => CmsMediaLibrary | undefined; - getPreviewStyles: () => PreviewStyle[]; - getPreviewTemplate: (name: string) => ComponentType | undefined; - getWidget: (name: string) => CmsWidget | undefined; - getWidgetValueSerializer: (widgetName: string) => CmsWidgetValueSerializer | undefined; - init: (options?: InitOptions) => void; - registerBackend: (name: string, backendClass: CmsBackendClass) => void; - registerEditorComponent: (options: EditorComponentOptions) => void; - registerRemarkPlugin: (plugin: Pluggable) => void; - registerEventListener: ( - eventListener: CmsEventListener, - options?: CmsEventListenerOptions, - ) => void; - registerLocale: (locale: string, phrases: CmsLocalePhrases) => void; - registerMediaLibrary: (mediaLibrary: CmsMediaLibrary, options?: CmsMediaLibraryOptions) => void; - registerPreviewStyle: (filePath: string, options?: PreviewStyleOptions) => void; - registerPreviewTemplate: ( - name: string, - component: ComponentType, - ) => void; - registerWidget: ( - widget: string | CmsWidgetParam, - control?: ComponentType | string, - preview?: ComponentType, - ) => void; - registerWidgetValueSerializer: ( - widgetName: string, - serializer: CmsWidgetValueSerializer, - ) => void; - resolveWidget: (name: string) => CmsWidget | undefined; - registerCustomFormat: (name: string, extension: string, formatter: Formatter) => void; - } - - export const DecapCmsCore: CMS; - - export default DecapCmsCore; -} diff --git a/packages/decap-cms-core/package.json b/packages/decap-cms-core/package.json index 68e8aff56787..484a8179f44e 100644 --- a/packages/decap-cms-core/package.json +++ b/packages/decap-cms-core/package.json @@ -5,18 +5,19 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-core", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-core.js", "files": [ "src/", - "dist/", - "index.d.ts" + "dist/" ], - "types": "index.d.ts", "scripts": { "develop": "npm run build:esm -- --watch", "webpack": "node --max_old_space_size=4096 ../../node_modules/webpack/bin/webpack.js", - "build": "cross-env NODE_ENV=production run-s webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build": "cross-env NODE_ENV=production webpack", + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "keywords": [ "cms", @@ -94,6 +95,7 @@ "devDependencies": { "@types/history": "^4.7.8", "@types/redux-mock-store": "^1.0.2", + "@types/semaphore": "^1.1.4", "@types/url-join": "^4.0.0", "redux-mock-store": "^1.5.3" } diff --git a/packages/decap-cms-core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js b/packages/decap-cms-core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js index 39424176ac95..3cc025fd705d 100644 --- a/packages/decap-cms-core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js +++ b/packages/decap-cms-core/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js @@ -6,8 +6,8 @@ import ImmutablePropTypes from 'react-immutable-proptypes'; import Frame, { FrameContextConsumer } from 'react-frame-component'; import { lengths } from 'decap-cms-ui-default'; import { connect } from 'react-redux'; -import { encodeEntry } from 'decap-cms-lib-util/src/stega'; +import { encodeEntry } from '../../../lib/stega'; import { resolveWidget, getPreviewTemplate, diff --git a/packages/decap-cms-core/src/formats/formats.ts b/packages/decap-cms-core/src/formats/formats.ts index 6e79c5e5035b..3f3e12e040a6 100644 --- a/packages/decap-cms-core/src/formats/formats.ts +++ b/packages/decap-cms-core/src/formats/formats.ts @@ -10,7 +10,7 @@ import { getCustomFormatsExtensions, getCustomFormatsFormatters } from '../lib/r import type { Delimiter } from './frontmatter'; import type { Collection, EntryObject, Format } from '../types/redux'; import type { EntryValue } from '../valueObjects/Entry'; -import type { Formatter } from 'decap-cms-core'; +import type { Formatter } from '../types'; export const frontmatterFormats = ['yaml-frontmatter', 'toml-frontmatter', 'json-frontmatter']; diff --git a/packages/decap-cms-core/src/index.js b/packages/decap-cms-core/src/index.ts similarity index 59% rename from packages/decap-cms-core/src/index.js rename to packages/decap-cms-core/src/index.ts index 43e7ed7a39f3..900cb5143f32 100644 --- a/packages/decap-cms-core/src/index.js +++ b/packages/decap-cms-core/src/index.ts @@ -1,7 +1,10 @@ import bootstrap from './bootstrap'; import Registry from './lib/registry'; -export const DecapCmsCore = { +import type { CMS } from './types'; +export * from './types'; + +export const DecapCmsCore: CMS = { ...Registry, init: bootstrap, }; diff --git a/packages/decap-cms-lib-util/src/stega.ts b/packages/decap-cms-core/src/lib/stega.ts similarity index 97% rename from packages/decap-cms-lib-util/src/stega.ts rename to packages/decap-cms-core/src/lib/stega.ts index 099b86e6db03..5fb935565564 100644 --- a/packages/decap-cms-lib-util/src/stega.ts +++ b/packages/decap-cms-core/src/lib/stega.ts @@ -1,9 +1,8 @@ import { vercelStegaEncode } from '@vercel/stega'; - -import { isImmutableMap, isImmutableList } from './types'; +import { isImmutableMap, isImmutableList } from 'decap-cms-lib-util/src/types'; import type { Map as ImmutableMap, List } from 'immutable'; -import type { CmsField } from 'decap-cms-core'; +import type { CmsField } from '../types'; /** * Context passed to encode functions, containing the current state of the encoding process diff --git a/packages/decap-cms-core/src/types/index.ts b/packages/decap-cms-core/src/types/index.ts new file mode 100644 index 000000000000..406525b51826 --- /dev/null +++ b/packages/decap-cms-core/src/types/index.ts @@ -0,0 +1,596 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import type { ComponentType, JSX } from 'react'; +import type { List, Map } from 'immutable'; +import type { Pluggable } from 'unified'; + +export type CmsBackendType = + | 'azure' + | 'git-gateway' + | 'github' + | 'gitlab' + | 'gitea' + | 'bitbucket' + | 'test-repo' + | 'proxy'; + +export type CmsMapWidgetType = 'Point' | 'LineString' | 'Polygon'; + +export type CmsMarkdownWidgetButton = + | 'bold' + | 'italic' + | 'code' + | 'link' + | 'heading-one' + | 'heading-two' + | 'heading-three' + | 'heading-four' + | 'heading-five' + | 'heading-six' + | 'quote' + | 'code-block' + | 'bulleted-list' + | 'numbered-list'; + +export interface CmsSelectWidgetOptionObject { + label: string; + value: any; +} + +export type CmsCollectionFormatType = string; + +export type CmsAuthScope = 'repo' | 'public_repo'; + +export type CmsPublishMode = 'simple' | 'editorial_workflow' | ''; + +export type CmsSlugEncoding = 'unicode' | 'ascii'; + +export interface CmsI18nConfig { + structure: 'multiple_folders' | 'multiple_files' | 'single_file'; + locales: string[]; + default_locale?: string; +} + +export interface CmsFieldBase { + name: string; + label?: string; + required?: boolean; + hint?: string; + pattern?: [string, string]; + i18n?: boolean | 'translate' | 'duplicate' | 'none'; + media_folder?: string; + public_folder?: string; + comment?: string; +} + +export interface CmsFieldBoolean { + widget: 'boolean'; + default?: boolean; +} + +export interface CmsFieldCode { + widget: 'code'; + default?: any; + + default_language?: string; + allow_language_selection?: boolean; + keys?: { code: string; lang: string }; + output_code_only?: boolean; +} + +export interface CmsFieldColor { + widget: 'color'; + default?: string; + + allowInput?: boolean; + enableAlpha?: boolean; +} + +export interface CmsFieldDateTime { + widget: 'datetime'; + default?: string; + + format?: string; + date_format?: boolean | string; + time_format?: boolean | string; + picker_utc?: boolean; + + /** + * @deprecated Use date_format instead + */ + dateFormat?: boolean | string; + /** + * @deprecated Use time_format instead + */ + timeFormat?: boolean | string; + /** + * @deprecated Use picker_utc instead + */ + pickerUtc?: boolean; +} + +export interface CmsFieldFileOrImage { + widget: 'file' | 'image'; + default?: string; + + media_library?: CmsMediaLibrary; + allow_multiple?: boolean; + choose_url?: boolean; + config?: any; +} + +export interface CmsFieldObject { + widget: 'object'; + default?: any; + + collapsed?: boolean; + summary?: string; + fields: CmsField[]; +} + +export interface CmsFieldList { + widget: 'list'; + default?: any; + + allow_add?: boolean; + collapsed?: boolean; + summary?: string; + minimize_collapsed?: boolean; + label_singular?: string; + field?: CmsField; + fields?: CmsField[]; + max?: number; + min?: number; + add_to_top?: boolean; + types?: (CmsFieldBase & CmsFieldObject)[]; +} + +export interface CmsFieldMap { + widget: 'map'; + default?: string; + + decimals?: number; + type?: CmsMapWidgetType; +} + +export interface CmsFieldMarkdown { + widget: 'markdown'; + default?: string; + + minimal?: boolean; + buttons?: CmsMarkdownWidgetButton[]; + editor_components?: string[]; + modes?: ('raw' | 'rich_text')[]; + + /** + * @deprecated Use editor_components instead + */ + editorComponents?: string[]; +} + +export interface CmsFieldNumber { + widget: 'number'; + default?: string | number; + + value_type?: 'int' | 'float' | string; + min?: number; + max?: number; + + step?: number; + + /** + * @deprecated Use valueType instead + */ + valueType?: 'int' | 'float' | string; +} + +export interface CmsFieldSelect { + widget: 'select'; + default?: string | string[]; + + options: string[] | CmsSelectWidgetOptionObject[]; + multiple?: boolean; + min?: number; + max?: number; +} + +export interface CmsFieldRelation { + widget: 'relation'; + default?: string | string[]; + + collection: string; + value_field: string; + search_fields: string[]; + file?: string; + display_fields?: string[]; + multiple?: boolean; + options_length?: number; + + /** + * @deprecated Use value_field instead + */ + valueField?: string; + /** + * @deprecated Use search_fields instead + */ + searchFields?: string[]; + /** + * @deprecated Use display_fields instead + */ + displayFields?: string[]; + /** + * @deprecated Use options_length instead + */ + optionsLength?: number; +} + +export interface CmsFieldHidden { + widget: 'hidden'; + default?: any; +} + +export interface CmsFieldStringOrText { + // This is the default widget, so declaring its type is optional. + widget?: 'string' | 'text'; + default?: string; +} + +export interface CmsFieldMeta { + name: string; + label: string; + widget: string; + required: boolean; + index_file: string; + meta: boolean; +} + +export type CmsField = CmsFieldBase & + ( + | CmsFieldBoolean + | CmsFieldCode + | CmsFieldColor + | CmsFieldDateTime + | CmsFieldFileOrImage + | CmsFieldList + | CmsFieldMap + | CmsFieldMarkdown + | CmsFieldNumber + | CmsFieldObject + | CmsFieldRelation + | CmsFieldSelect + | CmsFieldHidden + | CmsFieldStringOrText + | CmsFieldMeta + ); + +export interface CmsCollectionFile { + name: string; + label: string; + file: string; + fields: CmsField[]; + label_singular?: string; + description?: string; + preview_path?: string; + preview_path_date_field?: string; + i18n?: boolean | CmsI18nConfig; + media_folder?: string; + public_folder?: string; +} + +export interface ViewFilter { + label: string; + field: string; + pattern: string; +} + +export interface ViewGroup { + label: string; + field: string; + pattern?: string; +} + +export interface CmsCollection { + name: string; + label: string; + label_singular?: string; + description?: string; + folder?: string; + files?: CmsCollectionFile[]; + identifier_field?: string; + summary?: string; + slug?: string; + preview_path?: string; + preview_path_date_field?: string; + create?: boolean; + delete?: boolean; + hide?: boolean; + editor?: { + preview?: boolean; + visualEditing?: boolean; + }; + publish?: boolean; + nested?: { + depth: number; + }; + meta?: { path?: { label: string; widget: string; index_file: string } }; + + /** + * It accepts the following values: yml, yaml, toml, json, md, markdown, html + * + * You may also specify a custom extension not included in the list above, by specifying the format value. + */ + extension?: string; + format?: CmsCollectionFormatType; + + frontmatter_delimiter?: string[] | string; + fields?: CmsField[]; + filter?: { field: string; value: any }; + path?: string; + media_folder?: string; + public_folder?: string; + sortable_fields?: string[]; + view_filters?: ViewFilter[]; + view_groups?: ViewGroup[]; + i18n?: boolean | CmsI18nConfig; + + /** + * @deprecated Use sortable_fields instead + */ + sortableFields?: string[]; +} + +export interface CmsBackend { + name: CmsBackendType; + auth_scope?: CmsAuthScope; + open_authoring?: boolean; + always_fork?: boolean; + repo?: string; + branch?: string; + api_root?: string; + site_domain?: string; + base_url?: string; + auth_endpoint?: string; + app_id?: string; + auth_type?: 'implicit' | 'pkce'; + cms_label_prefix?: string; + squash_merges?: boolean; + proxy_url?: string; + commit_messages?: { + create?: string; + update?: string; + delete?: string; + uploadMedia?: string; + deleteMedia?: string; + openAuthoring?: string; + }; +} + +export interface CmsSlug { + encoding?: CmsSlugEncoding; + clean_accents?: boolean; + sanitize_replacement?: string; +} + +export interface CmsLocalBackend { + url?: string; + allowed_hosts?: string[]; +} + +export interface CmsConfig { + backend: CmsBackend; + collections: CmsCollection[]; + locale?: string; + site_url?: string; + display_url?: string; + logo_url?: string; + show_preview_links?: boolean; + media_folder?: string; + public_folder?: string; + media_folder_relative?: boolean; + media_library?: CmsMediaLibrary; + publish_mode?: CmsPublishMode; + load_config_file?: boolean; + integrations?: { + hooks: string[]; + provider: string; + collections?: '*' | string[]; + applicationID?: string; + apiKey?: string; + getSignedFormURL?: string; + }[]; + slug?: CmsSlug; + i18n?: CmsI18nConfig; + local_backend?: boolean | CmsLocalBackend; + editor?: { + preview?: boolean; + }; +} + +export interface InitOptions { + config: CmsConfig; +} + +export type EditorComponentField = + | ({ + name: string; + label: string; + } & { + widget: Omit; + }) + | { + widget: 'list'; + /** + * Used if widget === "list" to create a flat array + */ + field?: EditorComponentField; + /** + * Used if widget === "list" to create an array of objects + */ + fields?: EditorComponentField[]; + }; + +export interface EditorComponentOptions { + id: string; + label: string; + fields?: EditorComponentField[]; + pattern: RegExp; + allow_add?: boolean; + fromBlock: (match: RegExpMatchArray) => any; + toBlock: (data: any) => string; + toPreview: (data: any) => string | JSX.Element; +} + +export interface PreviewStyleOptions { + raw: boolean; +} + +export interface PreviewStyle extends PreviewStyleOptions { + value: string; +} + +export type CmsBackendClass = any; // TODO: type properly + +export interface CmsRegistryBackend { + init: (args: any) => CmsBackendClass; +} + +export interface CmsWidgetControlProps { + value: T; + field: Map; + onChange: (value: T) => void; + forID: string; + classNameWrapper: string; +} + +export interface CmsWidgetPreviewProps { + value: T; + field: Map; + metadata: Map; + getAsset: GetAssetFunction; + entry: Map; + fieldsMetaData: Map; +} + +export interface CmsWidgetParam { + name: string; + controlComponent: CmsWidgetControlProps; + previewComponent?: CmsWidgetPreviewProps; + globalStyles?: any; +} + +export interface CmsWidget { + control: CmsWidgetControlProps; + preview?: CmsWidgetPreviewProps; + globalStyles?: any; +} + +export type CmsWidgetValueSerializer = any; // TODO: type properly + +export type CmsMediaLibraryOptions = any; // TODO: type properly + +export interface CmsMediaLibrary { + name: string; + config?: CmsMediaLibraryOptions; +} + +export interface CmsEventListener { + name: 'prePublish' | 'postPublish' | 'preUnpublish' | 'postUnpublish' | 'preSave' | 'postSave'; + handler: ({ + entry, + author, + }: { + entry: Map; + author: { login: string; name: string }; + }) => any; +} + +export type CmsEventListenerOptions = any; // TODO: type properly + +export type CmsLocalePhrases = any; // TODO: type properly + +export type Formatter = { + fromFile(content: string): unknown; + toFile(data: object, sortedKeys?: string[], comments?: Record): string; +}; + +export interface CmsRegistry { + backends: { + [name: string]: CmsRegistryBackend; + }; + templates: { + [name: string]: ComponentType; + }; + previewStyles: PreviewStyle[]; + widgets: { + [name: string]: CmsWidget; + }; + editorComponents: Map>; + widgetValueSerializers: { + [name: string]: CmsWidgetValueSerializer; + }; + mediaLibraries: CmsMediaLibrary[]; + locales: { + [name: string]: CmsLocalePhrases; + }; + formats: { + [name: string]: Formatter; + }; +} + +type GetAssetFunction = (asset: string) => { + url: string; + path: string; + field?: any; + fileObj: File; +}; + +export type PreviewTemplateComponentProps = { + entry: Map; + collection: Map; + getCollection: (collectionName: string, slug?: string) => Promise[]>; + widgetFor: (name: any, fields?: any, values?: any, fieldsMetaData?: any) => JSX.Element | null; + widgetsFor: (name: any) => any; + getAsset: GetAssetFunction; + boundGetAsset: (collection: any, path: any) => GetAssetFunction; + fieldsMetaData: Map; + config: Map; + fields: List>; + isLoadingAsset: boolean; + window: Window; + document: Document; +}; + +export interface CMS { + getBackend: (name: string) => CmsRegistryBackend | undefined; + getEditorComponents: () => Map>; + getRemarkPlugins: () => Array; + getLocale: (locale: string) => CmsLocalePhrases | undefined; + getMediaLibrary: (name: string) => CmsMediaLibrary | undefined; + getPreviewStyles: () => PreviewStyle[]; + getPreviewTemplate: (name: string) => ComponentType | undefined; + getWidget: (name: string) => CmsWidget | undefined; + getWidgetValueSerializer: (widgetName: string) => CmsWidgetValueSerializer | undefined; + init: (options?: InitOptions) => void; + registerBackend: (name: string, backendClass: CmsBackendClass) => void; + registerEditorComponent: (options: EditorComponentOptions) => void; + registerRemarkPlugin: (plugin: Pluggable) => void; + registerEventListener: ( + eventListener: CmsEventListener, + options?: CmsEventListenerOptions, + ) => void; + registerLocale: (locale: string, phrases: CmsLocalePhrases) => void; + registerMediaLibrary: (mediaLibrary: CmsMediaLibrary, options?: CmsMediaLibraryOptions) => void; + registerPreviewStyle: (filePath: string, options?: PreviewStyleOptions) => void; + registerPreviewTemplate: ( + name: string, + component: ComponentType, + ) => void; + registerWidget: ( + widget: string | CmsWidgetParam, + control?: ComponentType | string, + preview?: ComponentType, + ) => void; + registerWidgetValueSerializer: (widgetName: string, serializer: CmsWidgetValueSerializer) => void; + resolveWidget: (name: string) => CmsWidget | undefined; + registerCustomFormat: (name: string, extension: string, formatter: Formatter) => void; +} diff --git a/packages/decap-cms-core/src/types/redux.ts b/packages/decap-cms-core/src/types/redux.ts index b69a82311532..700cf2a1d2f0 100644 --- a/packages/decap-cms-core/src/types/redux.ts +++ b/packages/decap-cms-core/src/types/redux.ts @@ -322,6 +322,7 @@ export interface CmsCollection { delete?: boolean; editor?: { preview?: boolean; + visualEditing?: boolean; }; publish?: boolean; nested?: { diff --git a/packages/decap-cms-core/tsconfig.json b/packages/decap-cms-core/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-core/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-default-exports/package.json b/packages/decap-cms-default-exports/package.json index 30837512d5ca..039b59af229b 100644 --- a/packages/decap-cms-default-exports/package.json +++ b/packages/decap-cms-default-exports/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-default-exports", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-default-exports.js", "license": "MIT", "keywords": [ @@ -16,7 +17,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-default-exports/tsconfig.json b/packages/decap-cms-default-exports/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-default-exports/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-editor-component-image/package.json b/packages/decap-cms-editor-component-image/package.json index 20646619a9bc..c1ae4491aca4 100644 --- a/packages/decap-cms-editor-component-image/package.json +++ b/packages/decap-cms-editor-component-image/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-editor-component-image", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-editor-component-image.js", "license": "MIT", "keywords": [ @@ -16,7 +17,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "devDependencies": { "cross-env": "^7.0.0" diff --git a/packages/decap-cms-editor-component-image/tsconfig.json b/packages/decap-cms-editor-component-image/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-editor-component-image/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-lib-auth/package.json b/packages/decap-cms-lib-auth/package.json index 1d981305a625..8a9b4bae375a 100644 --- a/packages/decap-cms-lib-auth/package.json +++ b/packages/decap-cms-lib-auth/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-lib-auth", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-lib-auth.js", "license": "MIT", "files": [ @@ -18,7 +19,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "immutable": "^3.7.6", diff --git a/packages/decap-cms-lib-auth/tsconfig.json b/packages/decap-cms-lib-auth/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-lib-auth/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-lib-util/package.json b/packages/decap-cms-lib-util/package.json index 2f9c59073b49..0d7ccb56a271 100644 --- a/packages/decap-cms-lib-util/package.json +++ b/packages/decap-cms-lib-util/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-lib-util", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-lib-util.js", "license": "MIT", "keywords": [ @@ -14,7 +15,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "js-sha256": "^0.9.0", @@ -24,5 +27,8 @@ "peerDependencies": { "immutable": "^3.7.6", "lodash": "^4.17.11" + }, + "devDependencies": { + "@types/semaphore": "^1.1.4" } } diff --git a/packages/decap-cms-lib-util/tsconfig.json b/packages/decap-cms-lib-util/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-lib-util/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-lib-widgets/package.json b/packages/decap-cms-lib-widgets/package.json index 2a2668d78775..b00d4c7d5987 100644 --- a/packages/decap-cms-lib-widgets/package.json +++ b/packages/decap-cms-lib-widgets/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-lib-widgets", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-lib-widgets.js", "license": "MIT", "keywords": [ @@ -14,7 +15,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "dayjs": "^1.11.10" diff --git a/packages/decap-cms-lib-widgets/tsconfig.json b/packages/decap-cms-lib-widgets/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-lib-widgets/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-locales/package.json b/packages/decap-cms-locales/package.json index e84bef19908d..b90f2f30bffe 100644 --- a/packages/decap-cms-locales/package.json +++ b/packages/decap-cms-locales/package.json @@ -6,6 +6,7 @@ "bugs": "https://github.com/decaporg/decap-cms/issues", "license": "MIT", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-locales.js", "keywords": [ "decap-cms" @@ -14,6 +15,8 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" } } diff --git a/packages/decap-cms-locales/tsconfig.json b/packages/decap-cms-locales/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-locales/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-media-library-cloudinary/package.json b/packages/decap-cms-media-library-cloudinary/package.json index adfa6598a037..6bd7f378e0b0 100644 --- a/packages/decap-cms-media-library-cloudinary/package.json +++ b/packages/decap-cms-media-library-cloudinary/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-media-library-cloudinary", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-media-library-cloudinary.js", "license": "MIT", "keywords": [ @@ -21,7 +22,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "decap-cms-lib-util": "^3.0.0" diff --git a/packages/decap-cms-media-library-cloudinary/tsconfig.json b/packages/decap-cms-media-library-cloudinary/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-media-library-cloudinary/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-media-library-uploadcare/package.json b/packages/decap-cms-media-library-uploadcare/package.json index 3a1ff06f70b4..1c8970cbad09 100644 --- a/packages/decap-cms-media-library-uploadcare/package.json +++ b/packages/decap-cms-media-library-uploadcare/package.json @@ -5,6 +5,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-media-library-uploadcare", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-media-library-uploadcare.js", "license": "MIT", "keywords": [ @@ -19,7 +20,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "uploadcare-widget": "^3.7.0", diff --git a/packages/decap-cms-media-library-uploadcare/tsconfig.json b/packages/decap-cms-media-library-uploadcare/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-media-library-uploadcare/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-ui-default/package.json b/packages/decap-cms-ui-default/package.json index da0de26fc859..ba11f850a489 100644 --- a/packages/decap-cms-ui-default/package.json +++ b/packages/decap-cms-ui-default/package.json @@ -6,6 +6,7 @@ "bugs": "https://github.com/decaporg/decap-cms/issues", "license": "MIT", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-ui-default.js", "keywords": [ "decap-cms" @@ -14,7 +15,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "react-aria-menubutton": "^7.0.0", diff --git a/packages/decap-cms-ui-default/tsconfig.json b/packages/decap-cms-ui-default/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-ui-default/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-boolean/package.json b/packages/decap-cms-widget-boolean/package.json index 46970028664a..cd00c5d22508 100644 --- a/packages/decap-cms-widget-boolean/package.json +++ b/packages/decap-cms-widget-boolean/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-boolean", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-boolean.js", "license": "MIT", "keywords": [ @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-widget-boolean/tsconfig.json b/packages/decap-cms-widget-boolean/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-boolean/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-code/package.json b/packages/decap-cms-widget-code/package.json index e5a9d0257355..35d5bc9288dd 100644 --- a/packages/decap-cms-widget-code/package.json +++ b/packages/decap-cms-widget-code/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-code", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-code.js", "license": "MIT", "keywords": [ @@ -20,7 +21,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward", + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc", "process:languages": "node ./scripts/process-languages" }, "peerDependencies": { diff --git a/packages/decap-cms-widget-code/tsconfig.json b/packages/decap-cms-widget-code/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-code/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-colorstring/package.json b/packages/decap-cms-widget-colorstring/package.json index c0515c6c9644..87fb3b35781b 100644 --- a/packages/decap-cms-widget-colorstring/package.json +++ b/packages/decap-cms-widget-colorstring/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-colorstring", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-colorstring.js", "license": "MIT", "keywords": [ @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "react-color": "^2.18.1", diff --git a/packages/decap-cms-widget-colorstring/tsconfig.json b/packages/decap-cms-widget-colorstring/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-colorstring/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-datetime/package.json b/packages/decap-cms-widget-datetime/package.json index c7df361d3bcd..ad96b5715e07 100644 --- a/packages/decap-cms-widget-datetime/package.json +++ b/packages/decap-cms-widget-datetime/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-datetime", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-datetime.js", "license": "MIT", "keywords": [ @@ -19,7 +20,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "dayjs": "^1.11.10" diff --git a/packages/decap-cms-widget-datetime/tsconfig.json b/packages/decap-cms-widget-datetime/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-datetime/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-file/package.json b/packages/decap-cms-widget-file/package.json index 633f0aa13bf3..a12535f44138 100644 --- a/packages/decap-cms-widget-file/package.json +++ b/packages/decap-cms-widget-file/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-file", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-file.js", "license": "MIT", "keywords": [ @@ -19,7 +20,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "@dnd-kit/core": "^6.0.8", diff --git a/packages/decap-cms-widget-file/tsconfig.json b/packages/decap-cms-widget-file/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-file/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-image/package.json b/packages/decap-cms-widget-image/package.json index 9c300d33c298..1f6f2b5106cb 100644 --- a/packages/decap-cms-widget-image/package.json +++ b/packages/decap-cms-widget-image/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-image", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-image.js", "license": "MIT", "keywords": [ @@ -19,7 +20,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-widget-image/tsconfig.json b/packages/decap-cms-widget-image/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-image/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-list/package.json b/packages/decap-cms-widget-list/package.json index e312aa084726..15f4408b0d30 100644 --- a/packages/decap-cms-widget-list/package.json +++ b/packages/decap-cms-widget-list/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-list", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-list.js", "license": "MIT", "keywords": [ @@ -18,7 +19,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "@dnd-kit/core": "^6.0.8", diff --git a/packages/decap-cms-widget-list/tsconfig.json b/packages/decap-cms-widget-list/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-list/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-map/package.json b/packages/decap-cms-widget-map/package.json index c4506c2f4887..39758e2261d3 100644 --- a/packages/decap-cms-widget-map/package.json +++ b/packages/decap-cms-widget-map/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-map", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-map.js", "license": "MIT", "keywords": [ @@ -18,7 +19,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-widget-map/tsconfig.json b/packages/decap-cms-widget-map/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-map/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-markdown/package.json b/packages/decap-cms-widget-markdown/package.json index 3f382d0e03df..505be2b02072 100644 --- a/packages/decap-cms-widget-markdown/package.json +++ b/packages/decap-cms-widget-markdown/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-markdown", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-markdown.js", "license": "MIT", "keywords": [ @@ -18,7 +19,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "dompurify": "^2.2.6", diff --git a/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js b/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js index 9f3770fa5e96..cfa82dcccb98 100644 --- a/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js +++ b/packages/decap-cms-widget-markdown/src/serializers/__tests__/slate.spec.js @@ -2,7 +2,7 @@ import { flow } from 'lodash'; -import h from '../../../test-helpers/h'; +import h from '../test-helpers/h'; import { markdownToSlate, slateToMarkdown } from '../index'; const process = flow([markdownToSlate, slateToMarkdown]); diff --git a/packages/decap-cms-widget-markdown/test-helpers/h.js b/packages/decap-cms-widget-markdown/src/serializers/test-helpers/h.js similarity index 100% rename from packages/decap-cms-widget-markdown/test-helpers/h.js rename to packages/decap-cms-widget-markdown/src/serializers/test-helpers/h.js diff --git a/packages/decap-cms-widget-markdown/tsconfig.json b/packages/decap-cms-widget-markdown/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-markdown/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-number/package.json b/packages/decap-cms-widget-number/package.json index 02f4135e2485..3baca5f247d8 100644 --- a/packages/decap-cms-widget-number/package.json +++ b/packages/decap-cms-widget-number/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-number", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-number.js", "license": "MIT", "keywords": [ @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "decap-cms-ui-default": "^3.0.0", diff --git a/packages/decap-cms-widget-number/tsconfig.json b/packages/decap-cms-widget-number/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-number/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-object/package.json b/packages/decap-cms-widget-object/package.json index 1b5e6489913d..d4e2db7fe586 100644 --- a/packages/decap-cms-widget-object/package.json +++ b/packages/decap-cms-widget-object/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-object", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-object.js", "license": "MIT", "keywords": [ @@ -19,7 +20,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "@emotion/react": "^11.11.1", diff --git a/packages/decap-cms-widget-object/tsconfig.json b/packages/decap-cms-widget-object/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-object/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-relation/package.json b/packages/decap-cms-widget-relation/package.json index d6bf32ee191f..f9c06143a324 100644 --- a/packages/decap-cms-widget-relation/package.json +++ b/packages/decap-cms-widget-relation/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-relation", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-relation.js", "license": "MIT", "keywords": [ @@ -18,7 +19,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "@dnd-kit/core": "^6.0.8", diff --git a/packages/decap-cms-widget-relation/tsconfig.json b/packages/decap-cms-widget-relation/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-relation/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-select/package.json b/packages/decap-cms-widget-select/package.json index aad6c506b478..cd81f67baf4e 100644 --- a/packages/decap-cms-widget-select/package.json +++ b/packages/decap-cms-widget-select/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-select", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-select.js", "license": "MIT", "keywords": [ @@ -19,7 +20,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "decap-cms-lib-widgets": "^3.0.0", diff --git a/packages/decap-cms-widget-select/tsconfig.json b/packages/decap-cms-widget-select/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-select/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-string/package.json b/packages/decap-cms-widget-string/package.json index def7f3dc1816..3b264ed9e19a 100644 --- a/packages/decap-cms-widget-string/package.json +++ b/packages/decap-cms-widget-string/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-string", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-string.js", "license": "MIT", "keywords": [ @@ -17,7 +18,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "peerDependencies": { "decap-cms-ui-default": "^3.0.0", diff --git a/packages/decap-cms-widget-string/tsconfig.json b/packages/decap-cms-widget-string/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-string/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-cms-widget-text/package.json b/packages/decap-cms-widget-text/package.json index 4c108d0bd1f2..b58d93ec5f34 100644 --- a/packages/decap-cms-widget-text/package.json +++ b/packages/decap-cms-widget-text/package.json @@ -6,6 +6,7 @@ "repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-text", "bugs": "https://github.com/decaporg/decap-cms/issues", "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", "main": "dist/decap-cms-widget-text.js", "license": "MIT", "keywords": [ @@ -20,7 +21,9 @@ "scripts": { "develop": "npm run build:esm -- --watch", "build": "cross-env NODE_ENV=production webpack", - "build:esm": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward" + "build:esm": "run-p build:types build:babel", + "build:babel": "cross-env NODE_ENV=esm babel src --out-dir dist/esm --ignore \"**/__tests__\" --root-mode upward --extensions \".js,.jsx,.ts,.tsx\"", + "build:types": "tsc" }, "dependencies": { "react-textarea-autosize": "^8.0.0" diff --git a/packages/decap-cms-widget-text/tsconfig.json b/packages/decap-cms-widget-text/tsconfig.json new file mode 100644 index 000000000000..7f469f7dc2a6 --- /dev/null +++ b/packages/decap-cms-widget-text/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "composite": true, + "outDir": "./dist/esm", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["**/*.spec.ts", "**/*.test.ts"] +} \ No newline at end of file diff --git a/packages/decap-server/tsconfig.json b/packages/decap-server/tsconfig.json index a847f832cafa..de552cfa7ad6 100644 --- a/packages/decap-server/tsconfig.json +++ b/packages/decap-server/tsconfig.json @@ -12,6 +12,7 @@ "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": true, + "skipLibCheck": true, "sourceMap": true }, "include": ["src/**/*"], diff --git a/tsconfig.json b/tsconfig.json index 732806af3e16..af3bb0ed2476 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,28 +1,58 @@ { "compilerOptions": { + "composite": true, "declaration": true, + "emitDeclarationOnly": true, "jsx": "react", "target": "esnext", "module": "esnext", "moduleResolution": "node", "esModuleInterop": true, - "noEmit": true, "strict": true, "isolatedModules": true, "skipLibCheck": true, "allowJs": true, "noUnusedLocals": true, "noUnusedParameters": true, - "useUnknownInCatchVariables": false, - "baseUrl": "./", - "paths": { - "decap-cms-backend-bitbucket": ["packages/decap-cms-backend-bitbucket/src"], - "decap-cms-backend-github": ["packages/decap-cms-backend-github/src"], - "decap-cms-backend-gitlab": ["packages/decap-cms-backend-gitlab/src"], - "decap-cms-lib-util": ["packages/decap-cms-lib-util/src"], - "decap-cms-lib-widgets": ["packages/decap-cms-lib-widgets/src"] - } - }, - "include": ["**/src/**/*"], - "exclude": ["node_modules", "**/*.spec.ts"] + "useUnknownInCatchVariables": false, + }, + "references": [ + {"path": "packages/decap-cms-app"}, + {"path": "packages/decap-cms-backend-aws-cognito-github-proxy"}, + {"path": "packages/decap-cms-backend-azure"}, + {"path": "packages/decap-cms-backend-bitbucket"}, + {"path": "packages/decap-cms-backend-git-gateway"}, + {"path": "packages/decap-cms-backend-gitea"}, + {"path": "packages/decap-cms-backend-github"}, + {"path": "packages/decap-cms-backend-gitlab"}, + {"path": "packages/decap-cms-backend-proxy"}, + {"path": "packages/decap-cms-backend-test"}, + {"path": "packages/decap-cms-core"}, + {"path": "packages/decap-cms-default-exports"}, + {"path": "packages/decap-cms-editor-component-image"}, + {"path": "packages/decap-cms-lib-auth"}, + {"path": "packages/decap-cms-lib-util"}, + {"path": "packages/decap-cms-lib-widgets"}, + {"path": "packages/decap-cms-locales"}, + {"path": "packages/decap-cms-media-library-cloudinary"}, + {"path": "packages/decap-cms-media-library-uploadcare"}, + {"path": "packages/decap-cms-ui-default"}, + {"path": "packages/decap-cms-widget-boolean"}, + {"path": "packages/decap-cms-widget-code"}, + {"path": "packages/decap-cms-widget-colorstring"}, + {"path": "packages/decap-cms-widget-datetime"}, + {"path": "packages/decap-cms-widget-file"}, + {"path": "packages/decap-cms-widget-image"}, + {"path": "packages/decap-cms-widget-list"}, + {"path": "packages/decap-cms-widget-map"}, + {"path": "packages/decap-cms-widget-markdown"}, + {"path": "packages/decap-cms-widget-number"}, + {"path": "packages/decap-cms-widget-object"}, + {"path": "packages/decap-cms-widget-relation"}, + {"path": "packages/decap-cms-widget-select"}, + {"path": "packages/decap-cms-widget-string"}, + {"path": "packages/decap-cms-widget-text"}, + {"path": "packages/decap-server"} + ], + "include": [], }