diff --git a/package.json b/package.json index 44184f2720..cd98cd0138 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "refs": "yarn update-project-references", "types": "yarn type-check", "messages": "yarn message-system-sign-config", - "validate": "yarn verify-project-references && yarn nx:lint:js && yarn nx:lint:styles && yarn nx:build:libs && yarn nx:type-check && yarn nx:test-unit && yarn check-workspace-resolutions", + "validate": "yarn verify-project-references && yarn lint:js && yarn nx:lint:styles && yarn nx:build:libs && yarn nx:type-check && yarn nx:test-unit && yarn check-workspace-resolutions", "a": "yarn native:android", "ios": "yarn native:ios", "p": "yarn native:prebuild", @@ -143,6 +143,7 @@ "tar": "^6.2.0", "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", + "tslib": "^2.6.2", "tsx": "^4.7.0", "typescript": "5.3.3", "version-bump-prompt": "^6.1.0" diff --git a/packages/analytics/tsconfig.lib.json b/packages/analytics/tsconfig.lib.json index ad8172a710..795079b249 100644 --- a/packages/analytics/tsconfig.lib.json +++ b/packages/analytics/tsconfig.lib.json @@ -2,8 +2,15 @@ "extends": "../../tsconfig.lib.json", "compilerOptions": { "outDir": "./lib", - "importHelpers": true, "esModuleInterop": false }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../env-utils" + }, + { + "path": "../utils" + } + ] } diff --git a/packages/auth-server/package.json b/packages/auth-server/package.json index 8c03a8cec4..93cf176429 100644 --- a/packages/auth-server/package.json +++ b/packages/auth-server/package.json @@ -9,7 +9,7 @@ "lint:js": "yarn g:eslint '**/*.{ts,tsx,js}'", "type-check": "yarn g:tsc --build", "dev": "yarn g:tsx watch ./src/index.ts", - "build": "rimraf ./lib && yarn g:tsc --build tsconfig.lib.json && ../../scripts/replace-imports.sh ./lib", + "build": "yarn g:rimraf ./lib && yarn g:tsc --build tsconfig.lib.json && ../../scripts/replace-imports.sh ./lib", "start": "node ./lib/index.js" }, "dependencies": { @@ -18,5 +18,8 @@ }, "devDependencies": { "@types/cors": "^2.8.17" + }, + "peerDependencies": { + "tslib": "^2.6.2" } } diff --git a/packages/auth-server/tsconfig.lib.json b/packages/auth-server/tsconfig.lib.json index 7358953497..81f5735adf 100644 --- a/packages/auth-server/tsconfig.lib.json +++ b/packages/auth-server/tsconfig.lib.json @@ -3,5 +3,6 @@ "compilerOptions": { "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/blockchain-link-types/package.json b/packages/blockchain-link-types/package.json index 9a0cb916f4..0e04379473 100644 --- a/packages/blockchain-link-types/package.json +++ b/packages/blockchain-link-types/package.json @@ -27,5 +27,8 @@ "devDependencies": { "ripple-lib": "^1.10.1", "tsx": "^4.7.0" + }, + "peerDependencies": { + "tslib": "^2.6.2" } } diff --git a/packages/blockchain-link-types/tsconfig.lib.json b/packages/blockchain-link-types/tsconfig.lib.json index 7358953497..3f6aa579d1 100644 --- a/packages/blockchain-link-types/tsconfig.lib.json +++ b/packages/blockchain-link-types/tsconfig.lib.json @@ -3,5 +3,13 @@ "compilerOptions": { "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../type-utils" + }, + { + "path": "../utxo-lib" + } + ] } diff --git a/packages/blockchain-link-utils/tsconfig.lib.json b/packages/blockchain-link-utils/tsconfig.lib.json index c6fba22519..c5a01f534e 100644 --- a/packages/blockchain-link-utils/tsconfig.lib.json +++ b/packages/blockchain-link-utils/tsconfig.lib.json @@ -1,8 +1,18 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../utils" + }, + { + "path": "../blockchain-link-types" + }, + { + "path": "../type-utils" + } + ] } diff --git a/packages/blockchain-link/tsconfig.lib.json b/packages/blockchain-link/tsconfig.lib.json index b1294ebfc2..7d58581ade 100644 --- a/packages/blockchain-link/tsconfig.lib.json +++ b/packages/blockchain-link/tsconfig.lib.json @@ -3,8 +3,27 @@ "compilerOptions": { "outDir": "./lib", "lib": ["webworker"], - "types": ["jest", "node", "web"], - "importHelpers": true + "types": ["jest", "node", "web"] }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../blockchain-link-types" + }, + { + "path": "../blockchain-link-utils" + }, + { + "path": "../utils" + }, + { + "path": "../utxo-lib" + }, + { + "path": "../e2e-utils" + }, + { + "path": "../type-utils" + } + ] } diff --git a/packages/connect-analytics/tsconfig.lib.json b/packages/connect-analytics/tsconfig.lib.json index ad8172a710..33616645ea 100644 --- a/packages/connect-analytics/tsconfig.lib.json +++ b/packages/connect-analytics/tsconfig.lib.json @@ -2,8 +2,12 @@ "extends": "../../tsconfig.lib.json", "compilerOptions": { "outDir": "./lib", - "importHelpers": true, "esModuleInterop": false }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../analytics" + } + ] } diff --git a/packages/connect-common/tsconfig.lib.json b/packages/connect-common/tsconfig.lib.json index ad8172a710..795079b249 100644 --- a/packages/connect-common/tsconfig.lib.json +++ b/packages/connect-common/tsconfig.lib.json @@ -2,8 +2,15 @@ "extends": "../../tsconfig.lib.json", "compilerOptions": { "outDir": "./lib", - "importHelpers": true, "esModuleInterop": false }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../env-utils" + }, + { + "path": "../utils" + } + ] } diff --git a/packages/connect-plugin-ethereum/tsconfig.lib.json b/packages/connect-plugin-ethereum/tsconfig.lib.json index f457a17c5e..968c8c54c3 100644 --- a/packages/connect-plugin-ethereum/tsconfig.lib.json +++ b/packages/connect-plugin-ethereum/tsconfig.lib.json @@ -2,8 +2,8 @@ "extends": "../../tsconfig.lib.json", "compilerOptions": { "outDir": "lib", - "importHelpers": true, "lib": ["ES2019"] }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/connect-plugin-stellar/tsconfig.lib.json b/packages/connect-plugin-stellar/tsconfig.lib.json index c6fba22519..81f5735adf 100644 --- a/packages/connect-plugin-stellar/tsconfig.lib.json +++ b/packages/connect-plugin-stellar/tsconfig.lib.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/connect-web/tsconfig.lib.json b/packages/connect-web/tsconfig.lib.json index d9b3fb3dd5..28965c9985 100644 --- a/packages/connect-web/tsconfig.lib.json +++ b/packages/connect-web/tsconfig.lib.json @@ -3,8 +3,18 @@ "compilerOptions": { "outDir": "lib", "target": "es2017", - "types": ["chrome", "w3c-web-usb"], - "importHelpers": true + "types": ["chrome", "w3c-web-usb"] }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../connect" + }, + { + "path": "../connect-common" + }, + { + "path": "../utils" + } + ] } diff --git a/packages/connect-webextension/tsconfig.lib.json b/packages/connect-webextension/tsconfig.lib.json index d9b3fb3dd5..2600ac9935 100644 --- a/packages/connect-webextension/tsconfig.lib.json +++ b/packages/connect-webextension/tsconfig.lib.json @@ -3,8 +3,27 @@ "compilerOptions": { "outDir": "lib", "target": "es2017", - "types": ["chrome", "w3c-web-usb"], - "importHelpers": true + "types": ["chrome", "w3c-web-usb"] }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../connect" + }, + { + "path": "../connect-common" + }, + { + "path": "../connect-web" + }, + { + "path": "../utils" + }, + { + "path": "../node-utils" + }, + { + "path": "../trezor-user-env-link" + } + ] } diff --git a/packages/connect/tsconfig.lib.json b/packages/connect/tsconfig.lib.json index 4b92c546bc..73a185f2df 100644 --- a/packages/connect/tsconfig.lib.json +++ b/packages/connect/tsconfig.lib.json @@ -3,10 +3,42 @@ "compilerOptions": { "outDir": "lib", "target": "es2019", - "lib": ["es2019", "webworker"], - // note: do not remove tslib from package.json. It might seem that it is not used - // but it is required due to importHelpers: true - "importHelpers": true + "lib": ["es2019", "webworker"] }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../blockchain-link" + }, + { + "path": "../blockchain-link-types" + }, + { + "path": "../connect-analytics" + }, + { + "path": "../connect-common" + }, + { + "path": "../protobuf" + }, + { + "path": "../protocol" + }, + { + "path": "../schema-utils" + }, + { + "path": "../transport" + }, + { + "path": "../utils" + }, + { + "path": "../utxo-lib" + }, + { + "path": "../trezor-user-env-link" + } + ] } diff --git a/packages/env-utils/tsconfig.lib.json b/packages/env-utils/tsconfig.lib.json index c6fba22519..81f5735adf 100644 --- a/packages/env-utils/tsconfig.lib.json +++ b/packages/env-utils/tsconfig.lib.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/protobuf/tsconfig.lib.json b/packages/protobuf/tsconfig.lib.json index c6fba22519..bd2ca40728 100644 --- a/packages/protobuf/tsconfig.lib.json +++ b/packages/protobuf/tsconfig.lib.json @@ -1,8 +1,12 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../schema-utils" + } + ] } diff --git a/packages/protocol/tsconfig.lib.json b/packages/protocol/tsconfig.lib.json index c6fba22519..81f5735adf 100644 --- a/packages/protocol/tsconfig.lib.json +++ b/packages/protocol/tsconfig.lib.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/schema-utils/package.json b/packages/schema-utils/package.json index 90c8b7780f..76e554d8af 100644 --- a/packages/schema-utils/package.json +++ b/packages/schema-utils/package.json @@ -15,7 +15,7 @@ "test:unit": "yarn g:jest", "lint:js": "yarn g:eslint '**/*.{ts,tsx,js}'", "type-check": "yarn g:tsc --build", - "build:lib": "rimraf ./lib && yarn g:tsc --build tsconfig.lib.json && ../../scripts/replace-imports.sh ./lib", + "build:lib": "yarn g:rimraf ./lib && yarn g:tsc --build tsconfig.lib.json && ../../scripts/replace-imports.sh ./lib", "codegen": "ts-node --skip-project ./src/codegen.ts", "prepublishOnly": "yarn tsx ../../scripts/prepublishNPM.js", "prepublish": "yarn tsx ../../scripts/prepublish.js" @@ -28,5 +28,8 @@ "dependencies": { "@sinclair/typebox": "^0.31.28", "ts-mixer": "^6.0.3" + }, + "peerDependencies": { + "tslib": "^2.6.2" } } diff --git a/packages/schema-utils/tsconfig.lib.json b/packages/schema-utils/tsconfig.lib.json index c6fba22519..81f5735adf 100644 --- a/packages/schema-utils/tsconfig.lib.json +++ b/packages/schema-utils/tsconfig.lib.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/transport/tsconfig.lib.json b/packages/transport/tsconfig.lib.json index 4ccc793bf2..f254044a95 100644 --- a/packages/transport/tsconfig.lib.json +++ b/packages/transport/tsconfig.lib.json @@ -2,8 +2,21 @@ "extends": "../../tsconfig.lib.json", "compilerOptions": { "outDir": "./lib", - "types": ["w3c-web-usb"], - "importHelpers": true + "types": ["w3c-web-usb"] }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../protobuf" + }, + { + "path": "../protocol" + }, + { + "path": "../utils" + }, + { + "path": "../trezor-user-env-link" + } + ] } diff --git a/packages/utils/tsconfig.lib.json b/packages/utils/tsconfig.lib.json index c6fba22519..81f5735adf 100644 --- a/packages/utils/tsconfig.lib.json +++ b/packages/utils/tsconfig.lib.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "lib", - "importHelpers": true + "outDir": "lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [] } diff --git a/packages/utxo-lib/package.json b/packages/utxo-lib/package.json index 9b832e33a7..cd14fbe64b 100644 --- a/packages/utxo-lib/package.json +++ b/packages/utxo-lib/package.json @@ -20,13 +20,16 @@ "utxo", "javascript" ], - "main": "./lib/index.js", + "main": "./src/index.ts", "files": [ "lib/", "!**/*.map" ], - "types": "lib/index.d.ts", - "typings": "lib/index.d.ts", + "publishConfig": { + "main": "./lib/index.js", + "types": "lib/index.d.ts", + "typings": "lib/index.d.ts" + }, "scripts": { "lint:js": "yarn g:eslint '**/*.{ts,tsx,js}'", "test:unit": "yarn g:jest --verbose -c jest.config.js", diff --git a/packages/utxo-lib/tsconfig.lib.json b/packages/utxo-lib/tsconfig.lib.json index 519d531006..8a0c426558 100644 --- a/packages/utxo-lib/tsconfig.lib.json +++ b/packages/utxo-lib/tsconfig.lib.json @@ -1,8 +1,12 @@ { "extends": "../../tsconfig.lib.json", "compilerOptions": { - "outDir": "./lib", - "importHelpers": true + "outDir": "./lib" }, - "include": ["./src"] + "include": ["./src"], + "references": [ + { + "path": "../utils" + } + ] } diff --git a/scripts/updateProjectReferences.ts b/scripts/updateProjectReferences.ts index 4da5383390..2cf889ea87 100644 --- a/scripts/updateProjectReferences.ts +++ b/scripts/updateProjectReferences.ts @@ -28,9 +28,12 @@ const rootTsConfigLocation = path.join(__dirname, '..', 'tsconfig.json'); const prettierConfig = await getPrettierConfig(); - const serializeConfig = (config: any) => { + const serializeConfig = (config: any, stringifySpaces?: number) => { try { - return prettier.format(JSON.stringify(config).replace(/\\\\/g, '/'), prettierConfig); + return prettier.format( + JSON.stringify(config, null, stringifySpaces).replace(/\\\\/g, '/'), + prettierConfig, + ); } catch (error) { console.error(error); process.exit(1); @@ -119,6 +122,33 @@ const rootTsConfigLocation = path.join(__dirname, '..', 'tsconfig.json'); if (!readOnlyGlobs.some((path: string) => minimatch(workspace.location, path))) { fs.writeFileSync(workspaceConfigPath, await serializeConfig(workspaceConfig)); } + + // Copy references also to tsconfig.lib.json if exists + const workspaceLibConfigPath = path.resolve(workspacePath, 'tsconfig.lib.json'); + if (fs.existsSync(workspaceLibConfigPath)) { + try { + const workspaceLibConfig = JSON.parse( + fs.readFileSync(workspaceLibConfigPath).toString(), + ); + + workspaceLibConfig.references = nextWorkspaceReferences; + + if ( + !readOnlyGlobs.some((path: string) => minimatch(workspace.location, path)) + ) { + fs.writeFileSync( + workspaceLibConfigPath, + await serializeConfig(workspaceLibConfig, 2), + ); + } + } catch { + console.error( + chalk.bold.red('Error while parsing file: '), + workspaceLibConfigPath, + ); + process.exit(1); + } + } }); if (isTesting) { diff --git a/tsconfig.lib.json b/tsconfig.lib.json index 4fcb891709..56e7c8a7f8 100644 --- a/tsconfig.lib.json +++ b/tsconfig.lib.json @@ -4,6 +4,7 @@ "module": "commonjs", "moduleResolution": "node", "target": "es6", + "importHelpers": true, "composite": false, "incremental": false, diff --git a/yarn.lock b/yarn.lock index b3cade4346..0def4da6c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9568,6 +9568,8 @@ __metadata: "@types/cors": "npm:^2.8.17" cors: "npm:^2.8.5" express: "npm:^4.18.2" + peerDependencies: + tslib: ^2.6.2 languageName: unknown linkType: soft @@ -9581,6 +9583,8 @@ __metadata: ripple-lib: "npm:^1.10.1" socks-proxy-agent: "npm:6.1.1" tsx: "npm:^4.7.0" + peerDependencies: + tslib: ^2.6.2 languageName: unknown linkType: soft @@ -10114,6 +10118,8 @@ __metadata: ts-mixer: "npm:^6.0.3" ts-node: "npm:^10.9.2" tsx: "npm:^4.7.0" + peerDependencies: + tslib: ^2.6.2 languageName: unknown linkType: soft @@ -33249,6 +33255,7 @@ __metadata: tar: "npm:^6.2.0" ts-node: "npm:^10.9.2" tsconfig-paths: "npm:^4.2.0" + tslib: "npm:^2.6.2" tsx: "npm:^4.7.0" typescript: "npm:5.3.3" version-bump-prompt: "npm:^6.1.0"