diff --git a/.github/actions/protocol-sync-workspace/action.yml b/.github/actions/protocol-sync-workspace/action.yml new file mode 100644 index 000000000..c2b094a47 --- /dev/null +++ b/.github/actions/protocol-sync-workspace/action.yml @@ -0,0 +1,20 @@ +name: "Sync workspace for protocol tests" +description: "Sync workspace for protocol tests" +inputs: + package-json-checksum: + description: "Checksum of package.json" + required: true +runs: + using: "composite" + steps: + - name: Sync workspace + uses: ./.github/actions/sync-workspace + with: + package-json-checksum: ${{ inputs.package-json-checksum }} + - uses: actions/cache/restore@v3 + id: cache_protocol + with: + path: packages/protocol/.tmp/released_chain + key: protocol-${{ github.sha }} + enableCrossOsArchive: true + fail-on-cache-miss: true diff --git a/.github/actions/sync-workspace/action.yml b/.github/actions/sync-workspace/action.yml new file mode 100644 index 000000000..e986a9f00 --- /dev/null +++ b/.github/actions/sync-workspace/action.yml @@ -0,0 +1,49 @@ +name: "Sync workspace" +description: "Sync GitHub Action workspace using GitHub cache" +inputs: + package-json-checksum: + description: "Checksum of package.json" + required: true + rebuild-package: + description: "Rebuild package. It also disable fail-on-cache-miss" + required: false + default: 'false' +runs: + using: "composite" + steps: + - uses: actions/cache/restore@v3 + id: cache_node + env: + REBUILD_PACKAGE: ${{ inputs.rebuild-package }} + with: + path: | + node_modules + packages/**/node_modules + key: node-${{ runner.os }}-${{ runner.arch }}-${{ env.NODE_MODULE_CACHE_VERSION }}-${{ hashFiles('**/yarn.lock') }}-${{ inputs.package-json-checksum }} + enableCrossOsArchive: true + fail-on-cache-miss: "!${{ fromJSON(env.REBUILD_PACKAGE) }}" + - name: Restore build artifacts cache + uses: actions/cache/restore@v3 + id: cache_build_artifacts + env: + REBUILD_PACKAGE: ${{ inputs.rebuild-package }} + with: + # We need to cache all the artifacts generated by yarn install+build + # Update this list also in .github/actions/sync-workspace/action.yml with exactly the same list + path: | + packages/**/lib + packages/**/dist + packages/**/build + key: code-${{ github.sha }} + restore-keys: | + code-${{ github.sha }} + enableCrossOsArchive: true + fail-on-cache-miss: "!${{ fromJSON(env.REBUILD_PACKAGE) }}" + - name: Rebuild package + shell: bash --login -eo pipefail {0} + env: + REBUILD_PACKAGE: ${{ inputs.rebuild-package }} + if: ${{ fromJSON(env.REBUILD_PACKAGE) }} + run: | + yarn install + yarn build --ignore docs --include-dependencies diff --git a/.github/workflows/circleci.yml b/.github/workflows/circleci.yml index cab9bd955..932864d6e 100644 --- a/.github/workflows/circleci.yml +++ b/.github/workflows/circleci.yml @@ -45,7 +45,9 @@ jobs: # Adding a initial comma so ',' matches also for the first file all_modified_files: ',${{ steps.changed-files.outputs.all_modified_files }}' # runs-on: ubuntu-latest - runs-on: ['self-hosted', 'monorepo-node18'] + runs-on: ['self-hosted', 'org', '8-cpu'] + container: + image: us-west1-docker.pkg.dev/devopsre/actions-runner-controller/celo-monorepo:node18 timeout-minutes: 30 steps: - name: Restore .git cache @@ -63,8 +65,8 @@ jobs: run: | set -euo pipefail set -v - # To get the "master" branch mapping - git checkout master + # To get the "main" branch mapping + git checkout main git checkout ${GITHUB_SHA} # Verify that following commands work, they are later called in the incremental testing script # Their output does not matter here, the fact that they finish successfully does. @@ -74,7 +76,6 @@ jobs: id: node-checksums run: | find . -maxdepth 5 -type f -name 'package.json' -not -path "*node_modules*" -print0 | sort -z | xargs -0 cat > $RUNNER_TEMP/package.checksum - find ./patches -type f -name '*.patch' -print0 | sort -z | xargs -0 cat >> $RUNNER_TEMP/package.checksum echo "PACKAGE_JSON_CHECKSUM=$(md5sum $RUNNER_TEMP/package.checksum | cut -f1 -d' ')" echo "PACKAGE_JSON_CHECKSUM=$(md5sum $RUNNER_TEMP/package.checksum | cut -f1 -d' ')" >> "$GITHUB_OUTPUT" - name: Restore node cache @@ -134,7 +135,9 @@ jobs: - run: echo ",${{ steps.changed-files.outputs.all_modified_files }}" lint-checks: name: Lint code - runs-on: ['self-hosted', 'monorepo-node18'] + runs-on: ['self-hosted', 'org', '8-cpu'] + container: + image: us-west1-docker.pkg.dev/devopsre/actions-runner-controller/celo-monorepo:node18 timeout-minutes: 30 needs: install-dependencies steps: @@ -154,7 +157,9 @@ jobs: - run: yarn run lint general_test: name: General jest test - runs-on: ['self-hosted', 'monorepo-node18'] + runs-on: ['self-hosted', 'org', '8-cpu'] + container: + image: us-west1-docker.pkg.dev/devopsre/actions-runner-controller/celo-monorepo:node18 needs: install-dependencies steps: - uses: actions/cache/restore@v3 @@ -172,14 +177,7 @@ jobs: mkdir -p test-results/jest # Skipping packages that are tested in a specific job below yarn run lerna \ - --ignore @celo/contractkit \ - --ignore @celo/protocol \ - --ignore @celo/celotool \ - --ignore @celo/celocli \ - --ignore @celo/env-tests \ --ignore @celo/identity \ - --ignore @celo/transactions-uri \ - --ignore '@celo/wallet-*' \ run test - name: Upload Jest Test Results uses: actions/upload-artifact@v3 @@ -190,11 +188,13 @@ jobs: identity-tests: name: Identity Tests - runs-on: ['self-hosted', 'monorepo-node18'] + runs-on: ['self-hosted', 'org', '8-cpu'] + container: + image: us-west1-docker.pkg.dev/devopsre/actions-runner-controller/celo-monorepo:node18 timeout-minutes: 30 needs: [install-dependencies] if: | - github.base_ref == 'master' || contains(github.base_ref, 'staging') || contains(github.base_ref, 'production') || + github.base_ref == 'main' || contains(github.base_ref, 'staging') || contains(github.base_ref, 'production') || contains(needs.install-dependencies.outputs.all_modified_files, 'packages/phone-number-privacy/common') || contains(needs.install-dependencies.outputs.all_modified_files, ',yarn.lock') || false @@ -209,58 +209,22 @@ jobs: uses: ./.github/actions/sync-workspace with: package-json-checksum: ${{ needs.install-dependencies.outputs.package-json-checksum }} - - name: Generate DevChain - run: | - cd packages/sdk/identity - yarn test:reset - - name: Run tests - run: | - yarn --cwd=packages/sdk/identity test - transactions-uri-tests: - name: Transaction URI Tests - runs-on: ['self-hosted', 'monorepo-node18'] - timeout-minutes: 30 - needs: [install-dependencies, contractkit-tests] - if: | - github.base_ref == 'master' || contains(github.base_ref, 'staging') || contains(github.base_ref, 'production') || - contains(needs.install-dependencies.outputs.all_modified_files, 'packages/protocol') || - contains(needs.install-dependencies.outputs.all_modified_files, 'packages/dev-utils') || - contains(needs.install-dependencies.outputs.all_modified_files, 'packages/sdk') || - contains(needs.install-dependencies.outputs.all_modified_files, 'packages/typescript') || - contains(needs.install-dependencies.outputs.all_modified_files, ',package.json') || - contains(needs.install-dependencies.outputs.all_modified_files, ',yarn.lock') || - false - steps: - - uses: actions/cache/restore@v3 - id: cache_git - with: - path: .git - key: git-${{ github.ref }} - - uses: actions/checkout@v3 - - name: Sync workspace - uses: ./.github/actions/sync-workspace - with: - package-json-checksum: ${{ needs.install-dependencies.outputs.package-json-checksum }} - - name: Get changed files - id: changed-files - uses: tj-actions/changed-files@v37 - with: - fetch_depth: '150' - - name: Generate DevChain - run: | - cd packages/sdk/identity - yarn test:reset + #- name: Generate DevChain + # run: | + # cd packages/sdk/identity + # yarn test:reset - name: Run tests run: | yarn --cwd=packages/sdk/identity test - odis-test: name: ODIS test - runs-on: ['self-hosted', 'monorepo-node18'] + runs-on: ['self-hosted', 'org', '8-cpu'] + container: + image: us-west1-docker.pkg.dev/devopsre/actions-runner-controller/celo-monorepo:node18 timeout-minutes: 30 needs: [install-dependencies, lint-checks] if: | - github.base_ref == 'master' || contains(github.base_ref, 'staging') || contains(github.base_ref, 'production') || + github.base_ref == 'main' || contains(github.base_ref, 'staging') || contains(github.base_ref, 'production') || contains(needs.install-dependencies.outputs.all_modified_files, 'packages/phone-number-privacy') || contains(needs.install-dependencies.outputs.all_modified_files, 'packages/protocol') || contains(needs.install-dependencies.outputs.all_modified_files, 'packages/sdk') || diff --git a/package.json b/package.json index 448d03248..765202ff4 100644 --- a/package.json +++ b/package.json @@ -37,9 +37,11 @@ ] }, "devDependencies": { + "@celo/typescript": "0.0.2", "@babel/core": "^7.8.4", "@babel/runtime": "^7.8.4", "@changesets/cli": "^2.26.2", + "@tsconfig/recommended": "^1.0.3", "@types/jest": "^29.1.1", "@types/node": "18.7.16", "@types/prompt": "1.1.1", diff --git a/packages/phone-number-privacy/combiner/src/common/combine.ts b/packages/phone-number-privacy/combiner/src/common/combine.ts index 2f10b5a2d..9c8f3f575 100644 --- a/packages/phone-number-privacy/combiner/src/common/combine.ts +++ b/packages/phone-number-privacy/combiner/src/common/combine.ts @@ -58,6 +58,7 @@ export async function thresholdCallToSigners( } = options const manualAbort = new AbortController() + // @ts-ignore const timeoutSignal = AbortSignal.timeout(requestTimeoutMS) const abortSignal = abortSignalAny([manualAbort.signal, timeoutSignal]) diff --git a/packages/phone-number-privacy/combiner/src/common/io.ts b/packages/phone-number-privacy/combiner/src/common/io.ts index 58aafaca4..22dfd6a80 100644 --- a/packages/phone-number-privacy/combiner/src/common/io.ts +++ b/packages/phone-number-privacy/combiner/src/common/io.ts @@ -85,7 +85,6 @@ export async function fetchSignerResponseWithFallback( [KEY_VERSION_HEADER]: keyVersion.toString() }, body: JSON.stringify(request.body), - // @ts-expect-error -- wants a param for abortifThrown but thats not available on the incoming yet. @alec will fix it ;) signal: abortSignal, agent: url.startsWith("https://") ? httpsAgent : httpAgent }) diff --git a/packages/phone-number-privacy/combiner/tsconfig.json b/packages/phone-number-privacy/combiner/tsconfig.json index c9ee1249b..2f8613e01 100644 --- a/packages/phone-number-privacy/combiner/tsconfig.json +++ b/packages/phone-number-privacy/combiner/tsconfig.json @@ -1,26 +1,14 @@ { + "extends": "@tsconfig/recommended/tsconfig.json", "compilerOptions": { "plugins": [ { "name": "typescript-tslint-plugin" } ], - "lib": ["es2017"], - "module": "commonjs", - "strict": true, - "allowJs": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "sourceMap": true, "declaration": true, - "target": "es2017", "rootDir": "src", - "outDir": "./dist", - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "preserveConstEnums": true, - "composite": true + "outDir": "dist" }, "include": ["src"], "compileOnSave": true diff --git a/packages/phone-number-privacy/common/jest.config.js b/packages/phone-number-privacy/common/jest.config.js index ac1faeacb..80daded05 100644 --- a/packages/phone-number-privacy/common/jest.config.js +++ b/packages/phone-number-privacy/common/jest.config.js @@ -7,4 +7,5 @@ module.exports = { lines: 80, }, }, + tsConfig: '/tsconfig.test.json', } diff --git a/packages/phone-number-privacy/common/test/utils/authentication.test.ts b/packages/phone-number-privacy/common/test/utils/authentication.test.ts index 355eb630d..d43b6171a 100644 --- a/packages/phone-number-privacy/common/test/utils/authentication.test.ts +++ b/packages/phone-number-privacy/common/test/utils/authentication.test.ts @@ -2,7 +2,7 @@ import { hexToBuffer } from '@celo/base' import { ContractKit } from '@celo/contractkit' import Logger from 'bunyan' import { Request } from 'express' -import { ErrorMessage, ErrorType } from '../../lib' +import { ErrorMessage, ErrorType } from '../../src/interfaces/errors' import { AuthenticationMethod } from '../../src/interfaces/requests' import * as auth from '../../src/utils/authentication' import { newContractKitFetcher } from '../../src/utils/authentication' diff --git a/packages/phone-number-privacy/common/tsconfig.json b/packages/phone-number-privacy/common/tsconfig.json index 1f3b359f1..ba2a119ad 100644 --- a/packages/phone-number-privacy/common/tsconfig.json +++ b/packages/phone-number-privacy/common/tsconfig.json @@ -1,26 +1,14 @@ { + "extends": "@tsconfig/recommended", "compilerOptions": { "plugins": [ { "name": "typescript-tslint-plugin" } ], - "lib": ["es2017"], - "module": "commonjs", - "strict": true, - "allowJs": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "sourceMap": true, "declaration": true, - "target": "es2017", "rootDir": "src", - "outDir": "./lib", - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "preserveConstEnums": true, - "composite": true + "outDir": "lib" }, "include": ["src", "index.d.ts"], "compileOnSave": true diff --git a/packages/phone-number-privacy/common/tsconfig.test.json b/packages/phone-number-privacy/common/tsconfig.test.json new file mode 100644 index 000000000..b2ad54980 --- /dev/null +++ b/packages/phone-number-privacy/common/tsconfig.test.json @@ -0,0 +1,15 @@ +{ + "extends": "@tsconfig/recommended", + "compilerOptions": { + "plugins": [ + { + "name": "typescript-tslint-plugin" + } + ], + "declaration": true, + "rootDir": ".", + "outDir": "lib" + }, + "exclude": ["node_modules", "lib", "dist", "coverage"], + "include": ["test", "src", "index.d.ts"], +} diff --git a/packages/phone-number-privacy/common/tslint.json b/packages/phone-number-privacy/common/tslint.json index 5fc86ecb7..c7b303baf 100644 --- a/packages/phone-number-privacy/common/tslint.json +++ b/packages/phone-number-privacy/common/tslint.json @@ -2,6 +2,6 @@ "extends": ["@celo/typescript/tslint.json"], "rules": { "no-global-arrow-functions": false, - "no-console": true + "no-console": true } } diff --git a/packages/phone-number-privacy/monitor/tsconfig.json b/packages/phone-number-privacy/monitor/tsconfig.json index 5a050f2a7..dc14030ae 100644 --- a/packages/phone-number-privacy/monitor/tsconfig.json +++ b/packages/phone-number-privacy/monitor/tsconfig.json @@ -1,26 +1,14 @@ { + "extends": "@tsconfig/recommended/tsconfig.json", "compilerOptions": { "plugins": [ { "name": "typescript-tslint-plugin" } ], - "lib": ["es2017"], - "module": "commonjs", - "strict": true, - "allowJs": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "sourceMap": true, "declaration": true, - "target": "es2017", "rootDir": "src", - "outDir": "./dist", - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "preserveConstEnums": true, - "composite": true + "outDir": "dist" }, "include": ["src", "index.d.ts"], "compileOnSave": true diff --git a/packages/phone-number-privacy/signer/tsconfig.json b/packages/phone-number-privacy/signer/tsconfig.json index 73b06e83a..dc14030ae 100644 --- a/packages/phone-number-privacy/signer/tsconfig.json +++ b/packages/phone-number-privacy/signer/tsconfig.json @@ -1,26 +1,14 @@ { + "extends": "@tsconfig/recommended/tsconfig.json", "compilerOptions": { "plugins": [ { "name": "typescript-tslint-plugin" } ], - "lib": ["es2017", "ES2020.Promise"], - "module": "commonjs", - "strict": true, - "allowJs": false, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "sourceMap": true, "declaration": true, - "target": "es2017", "rootDir": "src", - "outDir": "./dist", - "skipLibCheck": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "preserveConstEnums": true, - "composite": true + "outDir": "dist" }, "include": ["src", "index.d.ts"], "compileOnSave": true diff --git a/packages/sdk/encrypted-backup/tsconfig.json b/packages/sdk/encrypted-backup/tsconfig.json index 1079a56ae..9c0590cb0 100644 --- a/packages/sdk/encrypted-backup/tsconfig.json +++ b/packages/sdk/encrypted-backup/tsconfig.json @@ -1,6 +1,7 @@ { - "extends": "../../../tsconfig.json", + "extends": "@tsconfig/recommended", "compilerOptions": { + "declaration": true, "rootDir": "src", "outDir": "lib" }, diff --git a/packages/sdk/identity/tsconfig.json b/packages/sdk/identity/tsconfig.json index 062baaea2..7220d1f34 100644 --- a/packages/sdk/identity/tsconfig.json +++ b/packages/sdk/identity/tsconfig.json @@ -1,6 +1,7 @@ { - "extends": "../../../tsconfig.library.json", + "extends": "@tsconfig/recommended", "compilerOptions": { + "declaration": true, "rootDir": "src", "outDir": "lib" }, diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 8d662d06c..000000000 --- a/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "allowJs": true, - "allowSyntheticDefaultImports": false, - "baseUrl": ".", - "importHelpers": true, - "jsx": "react", - "lib": ["es7", "esnext", "dom"], - "moduleResolution": "node", - "noImplicitAny": true, - "noUnusedLocals": true, - "strictNullChecks": true, - "skipLibCheck": true, - "target": "es3", - "strict": true - }, - "exclude": ["node_modules"] -} diff --git a/tsconfig.library.json b/tsconfig.library.json deleted file mode 100644 index 45376c841..000000000 --- a/tsconfig.library.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compileOnSave": false, - "compilerOptions": { - "lib": ["dom", "es2015", "es2016"], - "target": "es5", - "module": "commonjs", - "moduleResolution": "node", - "jsx": "preserve", - "composite": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "strict": true, - "declaration": true, - "sourceMap": true, - "skipLibCheck": true, - "noImplicitAny": true, - "noUnusedLocals": true, - "noUnusedParameters": true - } -} diff --git a/yarn.lock b/yarn.lock index e9803efc9..4879deef7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -713,6 +713,16 @@ resolved "https://registry.npmjs.org/@celo/poprf/-/poprf-0.1.9.tgz" integrity sha512-+993EA/W+TBCZyY5G0B2EVdXnPX6t2AldgRAIMaT9WIqTwZKi/TcdJDUQl8mj7HEHMPHlpgCBOVgaHkUcwo/5A== +"@celo/typescript@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@celo/typescript/-/typescript-0.0.2.tgz#9c36901405851c061fbdbdf6564b5960a86b5da7" + integrity sha512-cEx24Y4UkmjKhdiuoispVNeQDcsRYJjScDKxNDI7d8YjiYdTM+ZuyFuXugbw9WRS4h2E7n8rEAkOlm/QH6+xzw== + dependencies: + tslint "^5.20.0" + tslint-config-prettier "^1.18.0" + tslint-eslint-rules "^5.4.0" + tslint-microsoft-contrib "^6.2.0" + "@celo/utils@1.5.2": version "1.5.2" resolved "https://registry.npmjs.org/@celo/utils/-/utils-1.5.2.tgz" @@ -4207,6 +4217,11 @@ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== +"@tsconfig/recommended@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.3.tgz#742540ba9170897a44097e838bca411abf56ccd2" + integrity sha512-+jby/Guq9H8O7NWgCv6X8VAiQE8Dr/nccsCtL74xyHKhu2Knu5EAKmOZj3nLCnLm1KooUzKY+5DsnGVqhM8/wQ== + "@types/accepts@*": version "1.3.5" resolved "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz" @@ -7662,6 +7677,14 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" + integrity sha512-qiB/Rir6Un6Ad/TIgTRzsremsTGWzs8j7woXvp14jgq00676uBiBT5eUOi+FgRywZFVy5Us/c04ISRpZhRbS6w== + dependencies: + esutils "^1.1.6" + isarray "0.0.1" + dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" @@ -8144,6 +8167,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +esutils@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" + integrity sha512-RG1ZkUT7iFJG9LSHr7KDuuMSlujfeTtMNIcInURxKAxhMtwQhI3NrQhz26gZQYlsYZQKzsnwtpKrFKj9K9Qu1A== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" @@ -16994,6 +17022,11 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" + integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== + tslib@^1.10.0, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -17009,6 +17042,27 @@ tslib@^2.0.1, tslib@^2.3.0: resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslint-config-prettier@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" + integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== + +tslint-eslint-rules@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" + integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== + dependencies: + doctrine "0.7.2" + tslib "1.9.0" + tsutils "^3.0.0" + +tslint-microsoft-contrib@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-6.2.0.tgz#8aa0f40584d066d05e6a5e7988da5163b85f2ad4" + integrity sha512-6tfi/2tHqV/3CL77pULBcK+foty11Rr0idRDxKnteTaKm6gWF9qmaCNU17HVssOuwlYNyOmd9Jsmjd+1t3a3qw== + dependencies: + tsutils "^2.27.2 <2.29.0" + tslint@^5.20.0: version "5.20.1" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" @@ -17028,6 +17082,13 @@ tslint@^5.20.0: tslib "^1.8.0" tsutils "^2.29.0" +"tsutils@^2.27.2 <2.29.0": + version "2.28.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1" + integrity sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA== + dependencies: + tslib "^1.8.1" + tsutils@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" @@ -17035,6 +17096,13 @@ tsutils@^2.29.0: dependencies: tslib "^1.8.1" +tsutils@^3.0.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tty-table@^4.1.5: version "4.2.1" resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.1.tgz#c06cd76c54542acf4e2b4a0e9a5802984b65cba6"