diff --git a/package.json b/package.json index a4eea25ad296..a333974ca7d0 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,10 @@ "build:dev:filter": "lerna run --stream --concurrency 1 --sort build:dev --include-filtered-dependencies --include-filtered-dependents --scope", "build:es5": "yarn lerna run --stream --concurrency 1 --sort build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "lerna run --stream --concurrency 1 --sort build:esm", + "build:types": "lerna run --stream --concurrency 1 --sort build:types", "build:watch": "lerna run --parallel build:watch", "build:dev:watch": "lerna run --parallel build:dev:watch", + "build:types:watch": "ts-node scripts/build-types-watch.ts", "circularDepCheck": "lerna run --parallel circularDepCheck", "clean": "lerna run --parallel clean && lerna clean --yes", "codecov": "codecov", @@ -82,6 +84,8 @@ "sinon": "^7.3.2", "size-limit": "^4.5.5", "ts-jest": "^24.3.0", + "ts-node": "^10.7.0", + "tslib": "^2.3.1", "typedoc": "^0.18.0", "typescript": "3.7.5" }, diff --git a/packages/angular/package.json b/packages/angular/package.json index 41788915b056..e8ca4ee3884a 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -33,16 +33,18 @@ "@angular/router": "^10.0.3" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/angular/tsconfig.types.json b/packages/angular/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/angular/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/browser/package.json b/packages/browser/package.json index 78750c2697d0..156f9dbc0071 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -44,18 +44,20 @@ "webpack": "^4.30.0" }, "scripts": { - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:cjs build:esm build:bundle build:types", "build:bundle": "rollup --config", "build:cjs": "tsc -p tsconfig.cjs.json", - "build:dev": "run-p build:cjs build:esm", + "build:dev": "run-p build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", - "build:dev:watch": "run-p build:cjs:watch build:esm:watch", + "build:dev:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build coverage .rpt2_cache", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/browser/tsconfig.types.json b/packages/browser/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/browser/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/core/package.json b/packages/core/package.json index ad1a96d14907..127dafe394c5 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -23,16 +23,18 @@ "tslib": "^1.9.3" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/core/tsconfig.types.json b/packages/core/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/core/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 925588295bca..0b48665f5761 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -15,7 +15,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "files": [ "/dist", "/esm", @@ -40,16 +40,18 @@ "react": "^17.0.0" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/gatsby/tsconfig.types.json b/packages/gatsby/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/gatsby/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/hub/package.json b/packages/hub/package.json index 92340d2061a3..f12f71cd72c8 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -21,16 +21,18 @@ "tslib": "^1.9.3" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/hub/tsconfig.types.json b/packages/hub/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/hub/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/integrations/package.json b/packages/integrations/package.json index adc11b1c481f..b327f5f9043a 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -14,7 +14,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "dependencies": { "@sentry/types": "6.18.2", "@sentry/utils": "6.18.2", @@ -25,17 +25,19 @@ "chai": "^4.1.2" }, "scripts": { - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:cjs build:esm build:types build:bundle", "build:bundle": "bash scripts/buildBundles.sh", "build:cjs": "tsc -p tsconfig.cjs.json", - "build:dev": "run-s build:cjs build:esm", + "build:dev": "run-s build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build coverage .rpt2_cache", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/integrations/tsconfig.types.json b/packages/integrations/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/integrations/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/minimal/package.json b/packages/minimal/package.json index f75331db7c01..9d99416ee7bd 100644 --- a/packages/minimal/package.json +++ b/packages/minimal/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -21,16 +21,18 @@ "tslib": "^1.9.3" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/minimal/tsconfig.types.json b/packages/minimal/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/minimal/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 400378f5282c..7121be3bb050 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -12,7 +12,7 @@ "main": "./dist/index.server.js", "module": "./esm/index.server.js", "browser": "./esm/index.client.js", - "types": "./esm/index.server.d.ts", + "types": "./build/types/index.server.d.ts", "publishConfig": { "access": "public" }, @@ -43,16 +43,18 @@ } }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.client.ts && madge --circular --exclude 'config/types\\.ts' src/index.server.ts # see https://github.com/pahen/madge/issues/306", "clean": "rimraf dist esm coverage *.js *.js.map *.d.ts", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/nextjs/tsconfig.types.json b/packages/nextjs/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/nextjs/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/node/package.json b/packages/node/package.json index fcf6fb632a95..8db2ecd62641 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -34,16 +34,18 @@ "nock": "^13.0.5" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/node/tsconfig.types.json b/packages/node/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/node/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/react/package.json b/packages/react/package.json index ab28dde38b51..9820b7a8dabb 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -50,16 +50,18 @@ "redux": "^4.0.5" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/react/tsconfig.types.json b/packages/react/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/react/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/serverless/package.json b/packages/serverless/package.json index 81e0971027bb..874b70925e9f 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -39,17 +39,19 @@ "read-pkg": "^5.2.0" }, "scripts": { - "build": "run-p build:cjs build:esm && yarn build:awslambda-layer", + "build": "run-p build:cjs build:esm build:types && yarn build:awslambda-layer", "build:awslambda-layer": "node scripts/build-awslambda-layer.js", "build:cjs": "tsc -p tsconfig.cjs.json", - "build:dev": "run-s build:cjs build:esm", + "build:dev": "run-s build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build dist-awslambda-layer coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/serverless/tsconfig.types.json b/packages/serverless/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/serverless/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 5305bfebe3cf..40cb4dfe9247 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -29,18 +29,20 @@ "jsdom": "^16.2.2" }, "scripts": { - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:cjs build:esm build:types build:bundle", "build:bundle": "rollup --config", "build:cjs": "tsc -p tsconfig.cjs.json", - "build:dev": "run-s build:cjs build:esm", + "build:dev": "run-s build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:bundle:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "clean": "rimraf dist esm build coverage", "circularDepCheck": "madge --circular src/index.ts", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/tracing/tsconfig.types.json b/packages/tracing/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/tracing/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/types/package.json b/packages/types/package.json index 22431fb478d5..30f7357907eb 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -11,21 +11,23 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "link:yarn": "yarn link", "lint": "run-s lint:prettier lint:eslint", "lint:eslint": "eslint . --cache --cache-location '../../eslintcache/' --format stylish", diff --git a/packages/types/tsconfig.types.json b/packages/types/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/types/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/utils/package.json b/packages/utils/package.json index f4f750ee98b9..34fc6e05bf1d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -24,16 +24,18 @@ "jsdom": "^16.2.2" }, "scripts": { - "build": "run-p build:cjs build:esm", + "build": "run-p build:cjs build:esm build:types", "build:cjs": "tsc -p tsconfig.cjs.json", "build:dev": "run-s build", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm coverage *.js *.js.map *.d.ts", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/utils/tsconfig.types.json b/packages/utils/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/utils/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/vue/package.json b/packages/vue/package.json index 21cd1c3b6dd0..43106a6f1055 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -31,18 +31,20 @@ "jsdom": "^16.2.2" }, "scripts": { - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:cjs build:esm build:bundle build:types", "build:bundle": "rollup --config", "build:cjs": "tsc -p tsconfig.cjs.json", - "build:dev": "run-s build:cjs build:esm", + "build:dev": "run-s build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:bundle:watch": "rollup --config --watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm build coverage", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/vue/tsconfig.types.json b/packages/vue/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/vue/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 8e1f4de9c125..dfcb687f7a92 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -11,7 +11,7 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "types": "dist/index.d.ts", + "types": "build/types/index.d.ts", "publishConfig": { "access": "public" }, @@ -29,17 +29,19 @@ "puppeteer": "^5.5.0" }, "scripts": { - "build": "run-p build:cjs build:esm build:bundle", + "build": "run-p build:cjs build:esm build:bundle build:types", "build:bundle": "rollup --config", "build:cjs": "tsc -p tsconfig.cjs.json", - "build:dev": "run-s build:cjs build:esm", + "build:dev": "run-s build:cjs build:esm build:types", "build:es5": "yarn build:cjs # *** backwards compatibility - remove in v7 ***", "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:cjs:watch build:esm:watch", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:cjs:watch build:esm:watch build:types:watch", "build:cjs:watch": "tsc -p tsconfig.cjs.json --watch", "build:dev:watch": "run-s build:watch", "build:es5:watch": "yarn build:cjs:watch # *** backwards compatibility - remove in v7 ***", "build:esm:watch": "tsc -p tsconfig.esm.json --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", "circularDepCheck": "madge --circular src/index.ts", "clean": "rimraf dist esm coverage *.js.map *.d.ts", "fix": "run-s fix:eslint fix:prettier", diff --git a/packages/wasm/tsconfig.types.json b/packages/wasm/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/packages/wasm/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/scripts/build-types-watch.ts b/scripts/build-types-watch.ts new file mode 100644 index 000000000000..d8a4cedb32aa --- /dev/null +++ b/scripts/build-types-watch.ts @@ -0,0 +1,43 @@ +/** + * If `yarn build:types:watch` is run without types files previously having been created, the build will get stuck in an + * errored state. This happens because lerna runs all of the packages' `yarn build:types:watch` statements in parallel, + * and so packages like `@sentry/browser` will at first be missing types they import from packages like `@sentry/utils` + * and `@sentry/types`, causing errors to be thrown. Normally this is fine, because as the dependencies' types get + * built, file changes will be detected and the dependent packages' types will try again to build themselves. There + * might be several rounds of this, but in theory, eventually all packages should end up with an error-free build. For + * whatever reason, though, at a certain point the process hangs, either because changes stop being detected or because + * recompiles stop being triggered by detected changes. + * + * Either way, the process gets stuck. The solution is to run a sequential build first, because as long as there are + * existing files the first time the watch command runs, no subsequent changes ever cause a hang, no matter how many + * rounds of recompilation are needed. (It's not entirely clear why this is the case.) We only want to take the time to + * do that if we have to, though, so we first check all of the relevant packages to see if there are pre-existing types + * files. + */ + +import * as childProcess from 'child_process'; +import * as fs from 'fs'; +import * as path from 'path'; + +const packages = fs.readdirSync(path.join(__dirname, '../packages')); + +for (const pkg of packages) { + const packagePath = path.join(__dirname, '../packages', pkg); + + if (!fs.lstatSync(packagePath).isDirectory() || !fs.readdirSync(packagePath).includes('package.json')) { + continue; + } + + const packageJSON = JSON.parse(fs.readFileSync(path.resolve(packagePath, 'package.json'), 'utf-8')); + + if ('build:types' in packageJSON.scripts && !fs.existsSync(path.resolve(packagePath, 'build/types'))) { + console.warn( + `\nWarning: Found no pre-existing types in package \`${pkg}\`. Performing a sequential types build before starting the watch process.\n`, + ); + childProcess.execSync('yarn build:types', { stdio: 'inherit' }); + break; + } +} + +console.log('\nStarting `yarn build:types:watch`.\n'); +childProcess.execSync('yarn lerna run --parallel build:types:watch', { stdio: 'inherit' }); diff --git a/tsconfig-templates/README.md b/tsconfig-templates/README.md index 53eaa2d7d832..4cb4d29d788f 100644 --- a/tsconfig-templates/README.md +++ b/tsconfig-templates/README.md @@ -1,5 +1,5 @@ # `tsconfig` Templates -Every package should get its own copy of these four files. Package-specific options should go in `tsconfig.json` and -test-specific options in `tsconfig.test.json`. The `cjs` and `esm` files shouldn't need to be modified, and only exist -because tsconfigs don't support multiple inheritence. +Every package should get its own copy of these five files. Package-specific options should go in `tsconfig.json` and +test-specific options in `tsconfig.test.json`. The `cjs`, `esm`, and `types` files shouldn't need to be modified, and +only exist because tsconfigs don't support multiple inheritence. diff --git a/tsconfig-templates/tsconfig.types.json b/tsconfig-templates/tsconfig.types.json new file mode 100644 index 000000000000..65455f66bd75 --- /dev/null +++ b/tsconfig-templates/tsconfig.types.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} diff --git a/tsconfig.json b/tsconfig.json index 7dd191ead9ef..f2ffa0c4e07c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,10 @@ "extends": "./packages/typescript/tsconfig.json", "compilerOptions": { + // TODO: turn these on once we switch to only generating types once, using `tsconfig.types.json` + // "declaration": false, + // "declarationMap": false, + "allowSyntheticDefaultImports": true, "types": ["node"], "noErrorTruncation": true // move me up to @sentry/typescript diff --git a/yarn.lock b/yarn.lock index bd7ea7abf2cf..e1cb1984c431 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1544,6 +1544,18 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@cspotcode/source-map-consumer@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + +"@cspotcode/source-map-support@0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + "@ember-data/rfc395-data@^0.0.4": version "0.0.4" resolved "https://registry.yarnpkg.com/@ember-data/rfc395-data/-/rfc395-data-0.0.4.tgz#ecb86efdf5d7733a76ff14ea651a1b0ed1f8a843" @@ -3311,6 +3323,26 @@ "@types/semver" "^7.3.9" ts-type "^2.1.4" +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "@types/aria-query@^4.2.0": version "4.2.1" resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" @@ -4508,6 +4540,11 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3" integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + acorn@^5.5.3: version "5.7.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" @@ -4756,6 +4793,11 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -8018,6 +8060,11 @@ create-react-context@^0.2.2: fbjs "^0.8.0" gud "^1.0.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-env@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" @@ -15024,7 +15071,7 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-error@1.x: +make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -20956,6 +21003,25 @@ ts-jest@^24.3.0: semver "^5.5" yargs-parser "10.x" +ts-node@^10.7.0: + version "10.7.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" + integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== + dependencies: + "@cspotcode/source-map-support" "0.7.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.0" + yn "3.1.1" + ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -21510,6 +21576,11 @@ uuid@^8.0.0, uuid@^8.3.0, uuid@^8.3.1, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache-lib@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" + integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== + v8-compile-cache@^2.0.3: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -22320,6 +22391,11 @@ yeast@0.1.2: resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"