diff --git a/.eslintrc.js b/.eslintrc.js index 0e6e1fa34b..8a72f7c429 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -70,7 +70,6 @@ module.exports = { 'no-negated-condition': 'off', 'no-new': 'off', 'no-param-reassign': 'off', - 'node/prefer-global/text-decoder': 'off', radix: 'off', 'require-atomic-updates': 'off', 'jsdoc/match-description': [ diff --git a/packages/assets-controllers/jest.config.js b/packages/assets-controllers/jest.config.js index 215aad04a0..f5f9ab33de 100644 --- a/packages/assets-controllers/jest.config.js +++ b/packages/assets-controllers/jest.config.js @@ -24,5 +24,5 @@ module.exports = merge(baseConfig, { }, // We rely on `window` to make requests - testEnvironment: 'jsdom', + testEnvironment: '/jest.environment.js', }); diff --git a/packages/assets-controllers/jest.environment.js b/packages/assets-controllers/jest.environment.js new file mode 100644 index 0000000000..7a5aed1bf1 --- /dev/null +++ b/packages/assets-controllers/jest.environment.js @@ -0,0 +1,18 @@ +/* eslint-disable */ +const JSDOMEnvironment = require('jest-environment-jsdom'); + +// Custom test environment copied from https://github.com/jsdom/jsdom/issues/2524 +// in order to add TextEncoder to jsdom. TextEncoder is expected by jose. + +module.exports = class CustomTestEnvironment extends JSDOMEnvironment { + async setup() { + await super.setup(); + if (typeof this.global.TextEncoder === 'undefined') { + const { TextEncoder, TextDecoder } = require('util'); + this.global.TextEncoder = TextEncoder; + this.global.TextDecoder = TextDecoder; + this.global.ArrayBuffer = ArrayBuffer; + this.global.Uint8Array = Uint8Array; + } + } +}; \ No newline at end of file diff --git a/packages/assets-controllers/package.json b/packages/assets-controllers/package.json index b05153b5e5..1db1200840 100644 --- a/packages/assets-controllers/package.json +++ b/packages/assets-controllers/package.json @@ -58,6 +58,7 @@ "deepmerge": "^4.2.2", "ethjs-provider-http": "^0.1.6", "jest": "^26.4.2", + "jest-environment-jsdom": "^26.4.2", "nock": "^13.0.7", "sinon": "^9.2.4", "ts-jest": "^26.5.2", diff --git a/tests/setup.ts b/tests/setup.ts index 3ae380be5e..9f4b4e806a 100644 --- a/tests/setup.ts +++ b/tests/setup.ts @@ -1,6 +1 @@ import 'isomorphic-fetch'; -// eslint-disable-next-line -import { TextDecoder } from 'util'; - -// not sure why this is a type mismatch and has to be type cast to any...? -global.TextDecoder = TextDecoder as any; diff --git a/yarn.lock b/yarn.lock index eb64164b07..f7d04ee594 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1052,6 +1052,18 @@ __metadata: languageName: node linkType: hard +"@jest/environment@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/environment@npm:26.6.2" + dependencies: + "@jest/fake-timers": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + jest-mock: ^26.6.2 + checksum: 7748081b2a758161785aff161780b05084dccaff908c8ed82c04f7da5d5e5439e77b5eb667306d5c4e1422653c7a67ed2955f26704f48c65c404195e1e21780a + languageName: node + linkType: hard + "@jest/fake-timers@npm:^26.3.0": version: 26.3.0 resolution: "@jest/fake-timers@npm:26.3.0" @@ -1066,6 +1078,20 @@ __metadata: languageName: node linkType: hard +"@jest/fake-timers@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/fake-timers@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@sinonjs/fake-timers": ^6.0.1 + "@types/node": "*" + jest-message-util: ^26.6.2 + jest-mock: ^26.6.2 + jest-util: ^26.6.2 + checksum: c732658fac4014a424e6629495296c3b2e8697787518df34c74539ec139625e7141ad792b8a4d3c8392b47954ad01be9846b7c57cc8c631490969e7cafa84e6a + languageName: node + linkType: hard + "@jest/globals@npm:^26.4.2": version: 26.4.2 resolution: "@jest/globals@npm:26.4.2" @@ -1435,6 +1461,7 @@ __metadata: ethjs-provider-http: ^0.1.6 immer: ^9.0.6 jest: ^26.4.2 + jest-environment-jsdom: ^26.4.2 multiformats: ^9.5.2 nock: ^13.0.7 single-call-balance-checker-abi: ^1.0.0 @@ -2187,6 +2214,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:1": + version: 1.1.2 + resolution: "@tootallnate/once@npm:1.1.2" + checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 + languageName: node + linkType: hard + "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2522,6 +2556,13 @@ __metadata: languageName: node linkType: hard +"@types/stack-utils@npm:^2.0.0": + version: 2.0.1 + resolution: "@types/stack-utils@npm:2.0.1" + checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 + languageName: node + linkType: hard + "@types/uuid@npm:^8.3.0": version: 8.3.0 resolution: "@types/uuid@npm:8.3.0" @@ -2722,6 +2763,13 @@ __metadata: languageName: node linkType: hard +"abab@npm:^2.0.5": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e + languageName: node + linkType: hard + "abbrev@npm:1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -2807,7 +2855,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.4.1": +"acorn@npm:^8.2.4, acorn@npm:^8.4.1": version: 8.8.1 resolution: "acorn@npm:8.8.1" bin: @@ -3921,7 +3969,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": +"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -4107,7 +4155,7 @@ __metadata: languageName: node linkType: hard -"cssstyle@npm:^2.2.0": +"cssstyle@npm:^2.2.0, cssstyle@npm:^2.3.0": version: 2.3.0 resolution: "cssstyle@npm:2.3.0" dependencies: @@ -4192,6 +4240,13 @@ __metadata: languageName: node linkType: hard +"decimal.js@npm:^10.2.1": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae + languageName: node + linkType: hard + "decode-uri-component@npm:^0.2.0": version: 0.2.0 resolution: "decode-uri-component@npm:0.2.0" @@ -4628,6 +4683,25 @@ __metadata: languageName: node linkType: hard +"escodegen@npm:^2.0.0": + version: 2.0.0 + resolution: "escodegen@npm:2.0.0" + dependencies: + esprima: ^4.0.1 + estraverse: ^5.2.0 + esutils: ^2.0.2 + optionator: ^0.8.1 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef + languageName: node + linkType: hard + "eslint-config-prettier@npm:^8.5.0": version: 8.5.0 resolution: "eslint-config-prettier@npm:8.5.0" @@ -5926,6 +6000,17 @@ __metadata: languageName: node linkType: hard +"form-data@npm:^3.0.0": + version: 3.0.1 + resolution: "form-data@npm:3.0.1" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.8 + mime-types: ^2.1.12 + checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d + languageName: node + linkType: hard + "form-data@npm:~2.3.2": version: 2.3.3 resolution: "form-data@npm:2.3.3" @@ -6462,6 +6547,17 @@ __metadata: languageName: node linkType: hard +"http-proxy-agent@npm:^4.0.1": + version: 4.0.1 + resolution: "http-proxy-agent@npm:4.0.1" + dependencies: + "@tootallnate/once": 1 + agent-base: 6 + debug: 4 + checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 + languageName: node + linkType: hard + "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -7019,6 +7115,13 @@ __metadata: languageName: node linkType: hard +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab + languageName: node + linkType: hard + "is-regex@npm:^1.0.4": version: 1.0.4 resolution: "is-regex@npm:1.0.4" @@ -7412,6 +7515,21 @@ __metadata: languageName: node linkType: hard +"jest-environment-jsdom@npm:^26.4.2": + version: 26.6.2 + resolution: "jest-environment-jsdom@npm:26.6.2" + dependencies: + "@jest/environment": ^26.6.2 + "@jest/fake-timers": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + jest-mock: ^26.6.2 + jest-util: ^26.6.2 + jsdom: ^16.4.0 + checksum: 8af9ffdf1b147362a19032bfe9ed51b709d43c74dc4b1c45e56d721808bf6cabdca8c226855b55a985ea196ce51cdb171bfe420ceec3daa2d13818d5c1915890 + languageName: node + linkType: hard + "jest-environment-node@npm:^26.3.0": version: 26.3.0 resolution: "jest-environment-node@npm:26.3.0" @@ -7536,6 +7654,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-message-util@npm:26.6.2" + dependencies: + "@babel/code-frame": ^7.0.0 + "@jest/types": ^26.6.2 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + micromatch: ^4.0.2 + pretty-format: ^26.6.2 + slash: ^3.0.0 + stack-utils: ^2.0.2 + checksum: ffe5a715591c41240b9ed4092faf10f3eaf9ddfdf25d257a0c9f903aaa8d9eed5baa7e38016d2ec4f610fd29225e0f5231a91153e087a043e62824972c83d015 + languageName: node + linkType: hard + "jest-mock@npm:^26.3.0": version: 26.3.0 resolution: "jest-mock@npm:26.3.0" @@ -7546,6 +7681,16 @@ __metadata: languageName: node linkType: hard +"jest-mock@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-mock@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/node": "*" + checksum: 6c0fe028ff0cdc87b5d63b9ca749af04cae6c5577aaab234f602e546cae3f4b932adac9d77e6de2abb24955ee00978e1e5d5a861725654e2f9a42317d91fbc1f + languageName: node + linkType: hard + "jest-pnp-resolver@npm:^1.2.2": version: 1.2.2 resolution: "jest-pnp-resolver@npm:1.2.2" @@ -7689,7 +7834,7 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^26.1.0": +"jest-util@npm:^26.1.0, jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" dependencies: @@ -7886,6 +8031,46 @@ __metadata: languageName: node linkType: hard +"jsdom@npm:^16.4.0": + version: 16.7.0 + resolution: "jsdom@npm:16.7.0" + dependencies: + abab: ^2.0.5 + acorn: ^8.2.4 + acorn-globals: ^6.0.0 + cssom: ^0.4.4 + cssstyle: ^2.3.0 + data-urls: ^2.0.0 + decimal.js: ^10.2.1 + domexception: ^2.0.1 + escodegen: ^2.0.0 + form-data: ^3.0.0 + html-encoding-sniffer: ^2.0.1 + http-proxy-agent: ^4.0.1 + https-proxy-agent: ^5.0.0 + is-potential-custom-element-name: ^1.0.1 + nwsapi: ^2.2.0 + parse5: 6.0.1 + saxes: ^5.0.1 + symbol-tree: ^3.2.4 + tough-cookie: ^4.0.0 + w3c-hr-time: ^1.0.2 + w3c-xmlserializer: ^2.0.0 + webidl-conversions: ^6.1.0 + whatwg-encoding: ^1.0.5 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.5.0 + ws: ^7.4.6 + xml-name-validator: ^3.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 + languageName: node + linkType: hard + "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -8247,7 +8432,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.x, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21": +"lodash@npm:4.x, lodash@npm:^4.17.13, lodash@npm:^4.17.14, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -9277,6 +9462,13 @@ __metadata: languageName: node linkType: hard +"parse5@npm:6.0.1": + version: 6.0.1 + resolution: "parse5@npm:6.0.1" + checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd + languageName: node + linkType: hard + "pascalcase@npm:^0.1.1": version: 0.1.1 resolution: "pascalcase@npm:0.1.1" @@ -9660,6 +9852,13 @@ __metadata: languageName: node linkType: hard +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.0 resolution: "pump@npm:3.0.0" @@ -9698,6 +9897,13 @@ __metadata: languageName: node linkType: hard +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 + languageName: node + linkType: hard + "randombytes@npm:^2.0.1, randombytes@npm:^2.0.6, randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -10000,6 +10206,13 @@ __metadata: languageName: node linkType: hard +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff + languageName: node + linkType: hard + "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -10277,7 +10490,7 @@ __metadata: languageName: node linkType: hard -"saxes@npm:^5.0.0": +"saxes@npm:^5.0.0, saxes@npm:^5.0.1": version: 5.0.1 resolution: "saxes@npm:5.0.1" dependencies: @@ -11230,6 +11443,18 @@ __metadata: languageName: node linkType: hard +"tough-cookie@npm:^4.0.0": + version: 4.1.2 + resolution: "tough-cookie@npm:4.1.2" + dependencies: + psl: ^1.1.33 + punycode: ^2.1.1 + universalify: ^0.2.0 + url-parse: ^1.5.3 + checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a + languageName: node + linkType: hard + "tough-cookie@npm:~2.5.0": version: 2.5.0 resolution: "tough-cookie@npm:2.5.0" @@ -11249,6 +11474,15 @@ __metadata: languageName: node linkType: hard +"tr46@npm:^2.1.0": + version: 2.1.0 + resolution: "tr46@npm:2.1.0" + dependencies: + punycode: ^2.1.1 + checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + languageName: node + linkType: hard + "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" @@ -11574,6 +11808,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 + languageName: node + linkType: hard + "unset-value@npm:^1.0.0": version: 1.0.0 resolution: "unset-value@npm:1.0.0" @@ -11600,6 +11841,16 @@ __metadata: languageName: node linkType: hard +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: ^2.1.1 + requires-port: ^1.0.0 + checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf + languageName: node + linkType: hard + "use@npm:^3.1.0": version: 3.1.1 resolution: "use@npm:3.1.1" @@ -11842,6 +12093,17 @@ __metadata: languageName: node linkType: hard +"whatwg-url@npm:^8.5.0": + version: 8.7.0 + resolution: "whatwg-url@npm:8.7.0" + dependencies: + lodash: ^4.7.0 + tr46: ^2.1.0 + webidl-conversions: ^6.1.0 + checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e + languageName: node + linkType: hard + "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -12021,6 +12283,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7.4.6": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: c3c100a181b731f40b7f2fddf004aa023f79d64f489706a28bc23ff88e87f6a64b3c6651fbec3a84a53960b75159574d7a7385709847a62ddb7ad6af76f49138 + languageName: node + linkType: hard + "xhr2@npm:0.1.3": version: 0.1.3 resolution: "xhr2@npm:0.1.3"