From 283cbd55806c7ccd4237bc6e4c359da00d35db40 Mon Sep 17 00:00:00 2001 From: John Kaster Date: Fri, 24 Sep 2021 15:24:00 -0700 Subject: [PATCH] chore: refreshing hackathon app (#835) * chore: refreshing hackathon app also - updated TypeScript - updated Prettier - bumped ts-jest - updated ts-node * Fixing APIX CI workflow --- .github/workflows/apix-ci.yml | 2 +- examples/access-token-server/README.md | 2 +- examples/access-token-server/package.json | 10 +- .../access-token-server/src/routes/status.ts | 7 +- .../src/services/looker_auth.ts | 11 +- package.json | 13 ++- .../ExtensionConnector/ExtensionConnector.tsx | 3 +- .../src/authToken/extensionProxyTransport.ts | 2 +- .../hackathon/src/authToken/gAuthSession.ts | 2 +- packages/hackathon/src/models/Hacker.ts | 5 +- .../hackathon/src/models/SheetData.spec.ts | 4 +- packages/run-it/src/RunIt.tsx | 2 +- .../src/components/ConfigForm/ConfigForm.tsx | 2 +- .../src/components/ConfigForm/configUtils.ts | 2 +- packages/sdk-codegen-scripts/src/fetchSpec.ts | 8 +- packages/sdk-codegen-scripts/src/legacy.ts | 2 +- packages/sdk-codegen-scripts/src/nodeUtils.ts | 6 +- packages/sdk-codegen-scripts/src/sdkGen.ts | 4 +- .../sdk-codegen-scripts/src/specConvert.ts | 2 +- packages/sdk-node/src/nodeTransport.ts | 6 +- packages/sdk-node/test/methods.spec.ts | 2 +- packages/sdk-rtl/src/browserTransport.ts | 15 ++- packages/sdk-rtl/src/paging.ts | 2 +- packages/wholly-sheet/src/WhollySheet.spec.ts | 4 +- packages/wholly-sheet/src/WhollySheet.ts | 2 +- yarn.lock | 110 +++++++++++++++--- 26 files changed, 158 insertions(+), 72 deletions(-) diff --git a/.github/workflows/apix-ci.yml b/.github/workflows/apix-ci.yml index 87ecb731b..5d69019ef 100644 --- a/.github/workflows/apix-ci.yml +++ b/.github/workflows/apix-ci.yml @@ -56,7 +56,7 @@ jobs: yarn build - name: Run unit tests - run: yarn jest "packages/(code-editor|run-it|api-explorer|extension-api-explorer)/src" --reporters=default --reporters=jest-junit + run: yarn test:apix --reporters=default --reporters=jest-junit - name: Upload ts unit test results if: ${{ always() }} diff --git a/examples/access-token-server/README.md b/examples/access-token-server/README.md index 63d498404..2d72aa057 100644 --- a/examples/access-token-server/README.md +++ b/examples/access-token-server/README.md @@ -15,7 +15,7 @@ The access token gets google oauth access tokens using a service account. The re ## Environment variables -The server will read an update environment variables from a .env file in this directory. The format the of .env file is as follows +The server will read an update environment variables from a .env file in this directory. The format of the `.env` file is: ### Required diff --git a/examples/access-token-server/package.json b/examples/access-token-server/package.json index 4292be73c..fb21971c1 100644 --- a/examples/access-token-server/package.json +++ b/examples/access-token-server/package.json @@ -11,9 +11,9 @@ "create-status-json": "ts-node script/create_status_json.ts" }, "dependencies": { - "@looker/sdk": "21.0.4", - "@looker/sdk-rtl": "21.0.4", - "@looker/sdk-node": "21.0.4", + "@looker/sdk": "^21.14.0", + "@looker/sdk-rtl": "^21.0.20", + "@looker/sdk-node": "^21.14.0", "body-parser": "^1.19.0", "crypto-js": "^4.0.0", "dotenv": "^8.2.0", @@ -30,7 +30,7 @@ "node-fetch": "^2.6.1", "nodemon": "^2.0.4", "test": "^0.6.0", - "ts-jest": "^26.4.1", - "ts-node": "^9.0.0" + "ts-jest": "^26.5.6", + "ts-node": "^10.2.1" } } diff --git a/examples/access-token-server/src/routes/status.ts b/examples/access-token-server/src/routes/status.ts index bdaa9ae87..e6c9b4cb1 100644 --- a/examples/access-token-server/src/routes/status.ts +++ b/examples/access-token-server/src/routes/status.ts @@ -2,7 +2,7 @@ MIT License - Copyright (c) 2020 Looker Data Sciences, Inc. + Copyright (c) 2021 Looker Data Sciences, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -35,7 +35,7 @@ const router = Router() * status endpoint. Returns a status json file provided by devops. Doesnt do * anything else as it does not have enough information. */ -router.get('/status', async (req, res) => { +router.get('/status', async (_req, res) => { let statusCode = 200 let status: any = { errors: [], @@ -43,7 +43,8 @@ router.get('/status', async (req, res) => { try { const statusString = readFileSync(`${cwd()}/status.json`, 'utf8') status = { ...JSON.parse(statusString), ...status } - } catch (err) { + } catch (err: any) { + // eslint-disable-next-line no-console console.error(err) statusCode = 542 status.errors.push('failed to read or parse status.json file') diff --git a/examples/access-token-server/src/services/looker_auth.ts b/examples/access-token-server/src/services/looker_auth.ts index b990fcf4d..50da24a98 100644 --- a/examples/access-token-server/src/services/looker_auth.ts +++ b/examples/access-token-server/src/services/looker_auth.ts @@ -2,7 +2,7 @@ MIT License - Copyright (c) 2020 Looker Data Sciences, Inc. + Copyright (c) 2021 Looker Data Sciences, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24,7 +24,8 @@ */ -import { DefaultSettings, IApiSection } from '@looker/sdk-rtl' +import type { IApiSection } from '@looker/sdk-rtl' +import { DefaultSettings } from '@looker/sdk-rtl' import { NodeSession } from '@looker/sdk-node' import { getSettings } from '../shared/settings' @@ -38,6 +39,7 @@ export const validateLookerCredentials = async ( client_secret: string ): Promise => { const lookerSettings = DefaultSettings() + // eslint-disable-next-line no-console console.log({ client_id, client_secret }) lookerSettings.readConfig = (): IApiSection => { return { client_id, client_secret } @@ -49,9 +51,12 @@ export const validateLookerCredentials = async ( try { const authToken = await session.login() return authToken.isActive() - } catch (err) { + } catch (err: any) { + // eslint-disable-next-line no-console console.error('looker credentials incorrect') + // eslint-disable-next-line no-console console.error(`server url ${session.settings.base_url}`) + // eslint-disable-next-line no-console console.error(err) return false } diff --git a/package.json b/package.json index 13cff2851..4b9d19942 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "build:es": "lerna exec --stream 'BABEL_ENV=build babel src --root-mode upward --out-dir lib/esm --source-maps --extensions .ts,.tsx --no-comments'", "build:ts": "lerna exec --stream --sort 'tsc -b tsconfig.build.json'", "dev:apix": "yarn workspace @looker/api-explorer develop", + "dev:hack": "yarn workspace @looker/hackathon develop", "dev:xapix": "yarn workspace @looker/extension-api-explorer develop", "clean": "rm -Rf packages/*/lib", "prepublishOnly": "jest packages/sdk-rtl packages/sdk-node/test", @@ -83,7 +84,7 @@ "@types/js-yaml": "^3.12.1", "@types/lodash": "^4.14.162", "@types/node": "^13.13.4", - "@types/prettier": "^1.18.2", + "@types/prettier": "^2.3.2", "@types/readable-stream": "^2.3.5", "@types/request": "^2.48.3", "@types/request-promise-native": "^1.0.17", @@ -94,7 +95,7 @@ "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.2", "eslint": "^7.32.0", - "eslint-plugin-prettier": "3.4.0", + "eslint-plugin-prettier": "4.0.0", "jest": "^26.6.3", "jest-canvas-mock": "^2.3.0", "jest-junit": "^12.0.0", @@ -109,13 +110,13 @@ "npm-run-all": "^4.1.5", "openapi3-ts": "^1.3.0", "pre-commit": "1.2.2", - "prettier": "^2.3.0", + "prettier": "^2.4.1", "react": "^16.13.1", "react-dom": "^16.13.1", "styled-components": "^5.2.1", - "ts-jest": "^26.4.4", - "ts-node": "^9.1.1", - "typescript": "^4.1.3", + "ts-jest": "^26.5.6", + "ts-node": "^10.2.1", + "typescript": "^4.4.3", "url-loader": "^4.1.1", "webpack": "^5.10.0", "webpack-bundle-analyzer": "^4.4.1", diff --git a/packages/extension-sdk-react/src/components/ExtensionConnector/ExtensionConnector.tsx b/packages/extension-sdk-react/src/components/ExtensionConnector/ExtensionConnector.tsx index 45d1c2da9..b159aa538 100644 --- a/packages/extension-sdk-react/src/components/ExtensionConnector/ExtensionConnector.tsx +++ b/packages/extension-sdk-react/src/components/ExtensionConnector/ExtensionConnector.tsx @@ -88,7 +88,8 @@ export const ExtensionConnector: React.FC = ({ }) connectedCallback(extensionHost) setInitializing(false) - } catch (error) { + } catch (error: any) { + // eslint-disable-next-line no-console console.error(error) setInitializeError(error.message || 'Extension failed to initialize.') setInitializing(false) diff --git a/packages/hackathon/src/authToken/extensionProxyTransport.ts b/packages/hackathon/src/authToken/extensionProxyTransport.ts index 195044b70..849e0364b 100644 --- a/packages/hackathon/src/authToken/extensionProxyTransport.ts +++ b/packages/hackathon/src/authToken/extensionProxyTransport.ts @@ -166,7 +166,7 @@ export class ExtensionProxyTransport extends BaseTransport { } else { return { error: res.body, ok: false } } - } catch (e) { + } catch (e: any) { const error: ISDKError = { message: typeof e.message === 'string' diff --git a/packages/hackathon/src/authToken/gAuthSession.ts b/packages/hackathon/src/authToken/gAuthSession.ts index 2580559e1..1411b2a07 100644 --- a/packages/hackathon/src/authToken/gAuthSession.ts +++ b/packages/hackathon/src/authToken/gAuthSession.ts @@ -108,7 +108,7 @@ export class GAuthSession extends AuthSession { ) const { access_token, expiry_date } = response.body this.activeToken = new GAuthToken(access_token, expiry_date) - } catch (error) { + } catch (error: any) { throw sdkError({ message: error.message }) } } diff --git a/packages/hackathon/src/models/Hacker.ts b/packages/hackathon/src/models/Hacker.ts index 8f6d18a0f..5fb45fe51 100644 --- a/packages/hackathon/src/models/Hacker.ts +++ b/packages/hackathon/src/models/Hacker.ts @@ -145,7 +145,7 @@ export class Hacker implements IHacker { if (this.staffRole) this.roles.add('staff') if (this.judgeRole) this.roles.add('judge') if (this.adminRole) this.roles.add('admin') - } catch (err) { + } catch (err: any) { if (err.message !== 'Not found') { throw err } @@ -298,6 +298,7 @@ export class Hackers extends TypedRows { const adminRole = roles.find((r: IRole) => r.name?.match(/admin/i)) if (adminRole) { const users = await this.sdk.ok( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.sdk.role_users({ fields: 'id', role_id: adminRole.id! }) ) admins = users.map((user) => user.id?.toString() || 'no id') @@ -307,6 +308,7 @@ export class Hackers extends TypedRows { ) if (judgeRole) { const users = await this.sdk.ok( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.sdk.role_users({ fields: 'id', role_id: judgeRole.id! }) ) judges = users.map((user) => user.id?.toString() || 'no id') @@ -316,6 +318,7 @@ export class Hackers extends TypedRows { ) if (staffRole) { const users = await this.sdk.ok( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.sdk.role_users({ fields: 'id', role_id: staffRole.id! }) ) staff = users.map((user) => user.id?.toString() || 'no id') diff --git a/packages/hackathon/src/models/SheetData.spec.ts b/packages/hackathon/src/models/SheetData.spec.ts index a43d3afcc..7a8fbb0e7 100644 --- a/packages/hackathon/src/models/SheetData.spec.ts +++ b/packages/hackathon/src/models/SheetData.spec.ts @@ -135,7 +135,7 @@ describe('SheetData', () => { try { project = await project.join(hacker) expect('we').toEqual('should not be here') - } catch (e) { + } catch (e: any) { expect(e.message).toMatch(/team members per project/) } } @@ -254,7 +254,7 @@ describe('SheetData', () => { try { await project.addJudge(hacker) expect('we').toEqual('should not be here') - } catch (e) { + } catch (e: any) { expect(e.message).toMatch(/is not a judge/) } }) diff --git a/packages/run-it/src/RunIt.tsx b/packages/run-it/src/RunIt.tsx index 7dbe9e67a..77d4c3475 100644 --- a/packages/run-it/src/RunIt.tsx +++ b/packages/run-it/src/RunIt.tsx @@ -184,7 +184,7 @@ export const RunIt: FC = ({ queryParams, body ) - } catch (err) { + } catch (err: any) { // This should not happen but it could. runRequest uses // sdk.ok to login once. sdk.ok throws an error so fake // out the response so something can be rendered. diff --git a/packages/run-it/src/components/ConfigForm/ConfigForm.tsx b/packages/run-it/src/components/ConfigForm/ConfigForm.tsx index e4e91f8eb..f04b9c73f 100644 --- a/packages/run-it/src/components/ConfigForm/ConfigForm.tsx +++ b/packages/run-it/src/components/ConfigForm/ConfigForm.tsx @@ -200,7 +200,7 @@ export const ConfigForm: FC = ({ updateMessage(POSITIVE, `Saved ${webUrl} as OAuth server`) } } - } catch (err) { + } catch (err: any) { fetchError(err.message) } } diff --git a/packages/run-it/src/components/ConfigForm/configUtils.ts b/packages/run-it/src/components/ConfigForm/configUtils.ts index 3cb22ed21..f1e549d0b 100644 --- a/packages/run-it/src/components/ConfigForm/configUtils.ts +++ b/packages/run-it/src/components/ConfigForm/configUtils.ts @@ -210,7 +210,7 @@ export const loadSpecsFromVersions = async ( return spec.api } specs = await getSpecsFromVersions(versions, fetchSpec) - } catch (e) { + } catch (e: any) { fetchResult = e.message } diff --git a/packages/sdk-codegen-scripts/src/fetchSpec.ts b/packages/sdk-codegen-scripts/src/fetchSpec.ts index 61648d995..77854991e 100644 --- a/packages/sdk-codegen-scripts/src/fetchSpec.ts +++ b/packages/sdk-codegen-scripts/src/fetchSpec.ts @@ -175,7 +175,7 @@ export const authGetUrl = async ( try { // Try first without login. Most Looker instances don't require auth for spec retrieval content = await getUrl(props, url, options) - } catch (err) { + } catch (err: any) { if (err.message.indexOf('ETIMEDOUT') > 0) { throw err } @@ -214,7 +214,7 @@ export const fetchLookerVersion = async ( if (!versions) { try { versions = await fetchLookerVersions(props, options) - } catch (e) { + } catch (e: any) { warn( `Could not retrieve looker release version from "${props.base_url}/versions": ${e.message}` ) @@ -241,7 +241,7 @@ export const fetchSpec = async ( createJsonFile(fileName, content) return fileName - } catch (err) { + } catch (err: any) { checkCertError(err) return quit(err) } @@ -273,7 +273,7 @@ export const getVersionInfo = async ( }, lookerVersion, } - } catch (e) { + } catch (e: any) { warn( `Could not retrieve version information. Is ${props.base_url} running?` ) diff --git a/packages/sdk-codegen-scripts/src/legacy.ts b/packages/sdk-codegen-scripts/src/legacy.ts index 4f288274c..75d22c8b5 100644 --- a/packages/sdk-codegen-scripts/src/legacy.ts +++ b/packages/sdk-codegen-scripts/src/legacy.ts @@ -36,7 +36,7 @@ import { quit } from './nodeUtils' const args = process.argv.slice(2) await runConfig(name, props, args) - } catch (e) { + } catch (e: any) { quit(e) } })() diff --git a/packages/sdk-codegen-scripts/src/nodeUtils.ts b/packages/sdk-codegen-scripts/src/nodeUtils.ts index 8dffd8911..2d39c52b1 100644 --- a/packages/sdk-codegen-scripts/src/nodeUtils.ts +++ b/packages/sdk-codegen-scripts/src/nodeUtils.ts @@ -53,7 +53,7 @@ export const writeFileSync = ( export const isDirSync = (filePath: string) => { try { return fs.statSync(filePath).isDirectory() - } catch (e) { + } catch (e: any) { if (e.code === 'ENOENT') { return false } else { @@ -89,7 +89,7 @@ export const createJsonFile = ( export const isFileSync = (filePath: string) => { try { return fs.statSync(filePath).isFile() - } catch (e) { + } catch (e: any) { if (e.code === 'ENOENT') { return false } else { @@ -137,7 +137,7 @@ export const run = ( // const result = await spawnSync(command, args, options) command += ' ' + args.join(' ') return execSync(command, options) - } catch (e) { + } catch (e: any) { if (warning) { warn(errMsg) return '' diff --git a/packages/sdk-codegen-scripts/src/sdkGen.ts b/packages/sdk-codegen-scripts/src/sdkGen.ts index 524b704aa..591257468 100644 --- a/packages/sdk-codegen-scripts/src/sdkGen.ts +++ b/packages/sdk-codegen-scripts/src/sdkGen.ts @@ -60,7 +60,7 @@ export const writeCodeFile = (fileName: string, content: string): string => { let config try { config = await prepGen(process.argv.slice(2)) - } catch (e) { + } catch (e: any) { quit(e) } if (!config) return @@ -142,7 +142,7 @@ export const writeCodeFile = (fileName: string, content: string): string => { } // finally, reformat all the files that have been generated formatter.reformat() - } catch (e) { + } catch (e: any) { quit(e) } })() diff --git a/packages/sdk-codegen-scripts/src/specConvert.ts b/packages/sdk-codegen-scripts/src/specConvert.ts index 912531195..9a009b2c4 100644 --- a/packages/sdk-codegen-scripts/src/specConvert.ts +++ b/packages/sdk-codegen-scripts/src/specConvert.ts @@ -75,7 +75,7 @@ const fetchAndConvert = async () => { ) await fetchAndConvert() } - } catch (e) { + } catch (e: any) { quit(e) } })() diff --git a/packages/sdk-node/src/nodeTransport.ts b/packages/sdk-node/src/nodeTransport.ts index 17a78fb73..31c83e16c 100644 --- a/packages/sdk-node/src/nodeTransport.ts +++ b/packages/sdk-node/src/nodeTransport.ts @@ -119,7 +119,7 @@ export class NodeTransport extends BaseTransport { } // Update OK with response statusCode check rawResponse.ok = this.ok(rawResponse) - } catch (e) { + } catch (e: any) { let statusMessage = `${method} ${path}` let statusCode = 404 let contentType = 'text' @@ -200,7 +200,7 @@ export class NodeTransport extends BaseTransport { if (!error) { response = { ok: true, value: result } } else { - response = { ok: false, error } + response = { ok: false, error: error as TError } } return response } @@ -223,7 +223,7 @@ export class NodeTransport extends BaseTransport { options ) return await this.parseResponse(res) - } catch (e) { + } catch (e: any) { const error: ISDKError = { message: typeof e.message === 'string' diff --git a/packages/sdk-node/test/methods.spec.ts b/packages/sdk-node/test/methods.spec.ts index ef376ce36..d36601c01 100644 --- a/packages/sdk-node/test/methods.spec.ts +++ b/packages/sdk-node/test/methods.spec.ts @@ -247,7 +247,7 @@ describe('LookerNodeSDK', () => { ) // We shouldn't get here but if we do, delete the test attribute await sdk.ok(sdk.delete_user_attribute(attrib.id!)) - } catch (e) { + } catch (e: any) { // Using this instead of `rejects.toThrowError` because that pattern fails to match valid RegEx condition expect(e.message).toMatch( /hidden_value_domain_whitelist must be a comma-separated list of urls with optional wildcards/gim diff --git a/packages/sdk-rtl/src/browserTransport.ts b/packages/sdk-rtl/src/browserTransport.ts index e012a8769..f4de20587 100644 --- a/packages/sdk-rtl/src/browserTransport.ts +++ b/packages/sdk-rtl/src/browserTransport.ts @@ -25,7 +25,6 @@ */ import type { Readable } from 'readable-stream' -import { PassThrough } from 'readable-stream' import type { ISDKError, SDKResponse, @@ -269,7 +268,7 @@ export class BrowserTransport extends BaseTransport { } let result: SDKResponse if (error) { - result = { ok: false, error } + result = { ok: false, error: error as TError } } else { result = { ok: true, value } } @@ -357,7 +356,7 @@ export class BrowserTransport extends BaseTransport { // TODO finish this method async stream( - callback: (readable: Readable) => Promise, + _callback: (readable: Readable) => Promise, method: HttpMethod, path: string, queryParams?: any, @@ -366,8 +365,8 @@ export class BrowserTransport extends BaseTransport { options?: Partial ): Promise { options = options ? { ...this.options, ...options } : this.options - const stream = new PassThrough() - const returnPromise = callback(stream) + // const stream = new PassThrough() + // const returnPromise = callback(stream) const requestPath = this.makeUrl(path, options, queryParams) const props = await this.initRequest( method, @@ -380,10 +379,10 @@ export class BrowserTransport extends BaseTransport { return Promise.reject( // Silly error message to prevent linter from complaining about unused variables + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore Error( - `Streaming for${returnPromise ? 'callback' : ''} ${props.method} ${ - props.requestPath - } is not implemented` + `Streaming for callback ${props.method} ${props.requestPath} is not implemented` ) ) diff --git a/packages/sdk-rtl/src/paging.ts b/packages/sdk-rtl/src/paging.ts index d8e3d6d8d..dd6b80a1f 100644 --- a/packages/sdk-rtl/src/paging.ts +++ b/packages/sdk-rtl/src/paging.ts @@ -358,7 +358,7 @@ export class Paging this.parse(raw) this.items = await sdkOk(this.transport.parseResponse(raw)) result = { ok: true, value: this.items } - } catch (e) { + } catch (e: any) { result = { ok: false, error: e } } return result diff --git a/packages/wholly-sheet/src/WhollySheet.spec.ts b/packages/wholly-sheet/src/WhollySheet.spec.ts index 85d35b1c5..a7379412d 100644 --- a/packages/wholly-sheet/src/WhollySheet.spec.ts +++ b/packages/wholly-sheet/src/WhollySheet.spec.ts @@ -188,7 +188,7 @@ describe('WhollySheet', () => { try { await sheet.update(row) expect('whoops').toEqual('We should never get here') - } catch (e) { + } catch (e: any) { expect(e.message).toMatch(/Row 2 is outdated:/i) } }) @@ -202,7 +202,7 @@ describe('WhollySheet', () => { try { await sheet.update(row) expect('whoops').toEqual('We should never get here') - } catch (e) { + } catch (e: any) { expect(e.message).toMatch(/row must be > 0 to update/i) } }) diff --git a/packages/wholly-sheet/src/WhollySheet.ts b/packages/wholly-sheet/src/WhollySheet.ts index 7fe0bafee..f70e7c736 100644 --- a/packages/wholly-sheet/src/WhollySheet.ts +++ b/packages/wholly-sheet/src/WhollySheet.ts @@ -579,7 +579,7 @@ export abstract class WhollySheet delta.deletes.forEach((d) => this.checkOutdated(d, this.typeRow(values[d._row - 1])) ) - } catch (e) { + } catch (e: any) { errors.push(e.message) } if (errors.length > 0) throw new SheetError(errors.join('\n')) diff --git a/yarn.lock b/yarn.lock index c4d6c4b87..2fc74bf7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1224,6 +1224,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.6.1": + version "0.6.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960" + integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg== + dependencies: + "@cspotcode/source-map-consumer" "0.8.0" + "@discoveryjs/json-ext@^0.5.0": version "0.5.2" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" @@ -3056,6 +3068,26 @@ dependencies: "@babel/runtime" "^7.12.5" +"@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" @@ -3337,7 +3369,7 @@ resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-5.0.3.tgz#e7b5aebbac150f8b5fdd4a46e7f0bd8e65e19109" integrity sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw== -"@types/prettier@^1.18.2", "@types/prettier@^1.19.0": +"@types/prettier@^1.19.0": version "1.19.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== @@ -3347,6 +3379,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.2.tgz#e2280c89ddcbeef340099d6968d8c86ba155fdf6" integrity sha512-i99hy7Ki19EqVOl77WplDrvgNugHnsSjECVR/wUrzw2TJXz1zlUfT2ngGckR6xN7yFYaijsMAqPkOLx9HgUqHg== +"@types/prettier@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" + integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== + "@types/prop-types@*": version "15.7.3" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" @@ -3834,6 +3871,11 @@ acorn-walk@^8.0.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.0.tgz#d3c6a9faf00987a5e2b9bdb506c2aa76cd707f83" integrity sha512-mjmzmv12YIG/G8JQdQuz2MUDShEJ6teYpT5bmWA4q7iwoGen8xtt3twF3OvzIUl+Q06aWIjvnwQUKvQ6TtMRjg== +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@^6.0.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" @@ -3849,6 +3891,11 @@ acorn@^8.0.4, acorn@^8.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.2.tgz#c4574e4fea298d6e6ed4b85ab844b06dd59f26d6" integrity sha512-VrMS8kxT0e7J1EX0p6rI/E0FbfOVcvBpbIqHThFv+f8YrZIlMfVotYcXKVPmTvPW8sW5miJzfUFrrvthUZg8VQ== +acorn@^8.4.1: + version "8.5.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2" + integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -6635,6 +6682,13 @@ eslint-plugin-prettier@3.4.0: dependencies: prettier-linter-helpers "^1.0.0" +eslint-plugin-prettier@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" + integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-plugin-promise@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz#fb2188fb734e4557993733b41aa1a688f46c6f24" @@ -12169,16 +12223,16 @@ prettier@^2.1.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== -prettier@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" - integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== - prettier@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.0.tgz#85bdfe0f70c3e777cf13a4ffff39713ca6f64cba" integrity sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ== +prettier@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" + integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== + pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" @@ -13826,7 +13880,7 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.19: +source-map-support@^0.5.6, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -14689,7 +14743,7 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -ts-jest@^26.2.0, ts-jest@^26.4.4: +ts-jest@^26.2.0: version "26.5.2" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.2.tgz#5281d6b44c2f94f71205728a389edc3d7995b0c4" integrity sha512-bwyJ2zJieSugf7RB+o8fgkMeoMVMM2KPDE0UklRLuACxjwJsOrZNo6chrcScmK33YavPSwhARffy8dZx5LJdUQ== @@ -14706,16 +14760,38 @@ ts-jest@^26.2.0, ts-jest@^26.4.4: semver "7.x" yargs-parser "20.x" -ts-node@^9.1.1: - version "9.1.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" - integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== +ts-jest@^26.5.6: + version "26.5.6" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35" + integrity sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA== dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + jest-util "^26.1.0" + json5 "2.x" + lodash "4.x" + make-error "1.x" + mkdirp "1.x" + semver "7.x" + yargs-parser "20.x" + +ts-node@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5" + integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw== + dependencies: + "@cspotcode/source-map-support" "0.6.1" + "@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" - source-map-support "^0.5.17" yn "3.1.1" tsconfig-paths@^3.11.0: @@ -14870,10 +14946,10 @@ typescript@4.4.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.2.tgz#6d618640d430e3569a1dfb44f7d7e600ced3ee86" integrity sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ== -typescript@^4.1.3: - version "4.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.2.tgz#1450f020618f872db0ea17317d16d8da8ddb8c4c" - integrity sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ== +typescript@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" + integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== uglify-js@^3.1.4: version "3.13.0"