From d04c316d24ac50aaf57a26f24ac664b3bef399aa Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 26 Jan 2023 18:17:12 +0100 Subject: [PATCH 01/36] resolver use package.json, yarn lock --- .../src/lib/compiler-content-imports.ts | 26 +++++++++++++- libs/remix-url-resolver/src/resolve.ts | 36 ++++++++++++++++++- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 756e7dc22b..8afd4e22b3 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -20,7 +20,31 @@ export class CompilerImports extends Plugin { urlResolver: any constructor () { super(profile) - this.urlResolver = new RemixURLResolver() + this.urlResolver = new RemixURLResolver(async () => { + try { + let yarnLock + if (await this.call('fileManager', 'exists', './yarn.lock')) { + yarnLock = await this.call('fileManager', 'readFile', './yarn.lock') + } + + let packageLock + if (await this.call('fileManager', 'exists', './package-lock.json')) { + packageLock = await this.call('fileManager', 'readFile', './package-lock.json') + packageLock = JSON.parse(packageLock) + } + + if (await this.call('fileManager', 'exists', './package.json')) { + const content = await this.call('fileManager', 'readFile', './package.json') + const pkg = JSON.parse(content) + return { deps: { ...pkg['dependencies'], ...pkg['devDependencies'] }, yarnLock, packageLock } + } else { + return {} + } + } catch (e) { + console.error(e) + return {} + } + }) this.previouslyHandled = {} // cache import so we don't make the request at each compilation. } diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index e3d9c4cf4b..2798943058 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -23,13 +23,17 @@ interface HandlerResponse { cleanUrl: string } +export type getPackages = () => Promise<{ [name: string]: string }> + export class RemixURLResolver { private previouslyHandled: PreviouslyHandledImports gistAccessToken: string protocol: string + getDependencies: getPackages - constructor (gistToken?: string, protocol = 'http:') { + constructor (getDependencies?: getPackages, gistToken?: string, protocol = 'http:') { this.previouslyHandled = {} + this.getDependencies = getDependencies this.setGistToken(gistToken, protocol) } @@ -130,6 +134,36 @@ export class RemixURLResolver { async handleNpmImport (url: string): Promise { // eslint-disable-next-line no-useless-catch try { + if (this.getDependencies) { + try { + const { deps, yarnLock, packageLock } = await this.getDependencies() + for (const pkg of Object.keys(deps)) { + if (url.startsWith(pkg)) { + let version + if (yarnLock) { + // yarn.lock + const regex = new RegExp(`"${pkg}@(.*)"`, 'g') + const yarnVersion = regex.exec(yarnLock) + if (yarnVersion && yarnVersion.length > 1) { + version = yarnVersion[1] + } + } + if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + // package-lock.json + version = packageLock['dependencies'][pkg]['version'] + } + if (!version) { + // package.json + version = deps[pkg] + } + if (version) url = url.replace(pkg, `${pkg}@${version}`) + break + } + } + } catch (e) { + console.log(e) + } + } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) return { content: response.data, cleanUrl: url } From eb89ef9d2562a3ef4504b8b4e0cd44f15f992b02 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 31 Jan 2023 10:28:51 +0100 Subject: [PATCH 02/36] fix import cache --- .../src/lib/compiler-content-imports.ts | 14 +------------- libs/remix-url-resolver/src/resolve.ts | 4 ++-- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 8afd4e22b3..0d199a001f 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -16,7 +16,6 @@ export type ResolvedImport = { } export class CompilerImports extends Plugin { - previouslyHandled: Record urlResolver: any constructor () { super(profile) @@ -45,7 +44,6 @@ export class CompilerImports extends Plugin { return {} } }) - this.previouslyHandled = {} // cache import so we don't make the request at each compilation. } async setToken () { @@ -95,22 +93,12 @@ export class CompilerImports extends Plugin { if (!cb) cb = () => {} const self = this - if (force) delete this.previouslyHandled[url] - const imported = this.previouslyHandled[url] - if (imported) { - return cb(null, imported.content, imported.cleanUrl, imported.type, url) - } let resolved try { await this.setToken() - resolved = await this.urlResolver.resolve(url) + resolved = await this.urlResolver.resolve(url, [], force) const { content, cleanUrl, type } = resolved - self.previouslyHandled[url] = { - content, - cleanUrl, - type - } cb(null, content, cleanUrl, type, url) } catch (e) { return cb(new Error('not found ' + url)) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 2798943058..5afab62519 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -207,9 +207,9 @@ export class RemixURLResolver { ] } - public async resolve (filePath: string, customHandlers?: Handler[]): Promise { + public async resolve (filePath: string, customHandlers?: Handler[], force?: boolean): Promise { let imported: Imported = this.previouslyHandled[filePath] - if (imported) { + if (!force && imported) { return imported } const builtinHandlers: Handler[] = this.getHandlers() From 8e82517208d73a2d2c84b156ceafcf1dfcd159c6 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 31 Jan 2023 12:05:11 +0100 Subject: [PATCH 03/36] fix using package json dependencies --- libs/remix-url-resolver/src/resolve.ts | 49 +++++++++++++++----------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 5afab62519..135ff05b14 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -137,29 +137,36 @@ export class RemixURLResolver { if (this.getDependencies) { try { const { deps, yarnLock, packageLock } = await this.getDependencies() - for (const pkg of Object.keys(deps)) { - if (url.startsWith(pkg)) { - let version - if (yarnLock) { - // yarn.lock - const regex = new RegExp(`"${pkg}@(.*)"`, 'g') - const yarnVersion = regex.exec(yarnLock) - if (yarnVersion && yarnVersion.length > 1) { - version = yarnVersion[1] - } - } - if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { - // package-lock.json - version = packageLock['dependencies'][pkg]['version'] - } - if (!version) { - // package.json - version = deps[pkg] + let matchLength = 0 + let pkg + Object.keys(deps).map((dep) => { + const reg = new RegExp(dep, 'g') + const match = url.match(reg) + if (match && match.length > 0 && matchLength < match[0].length) { + matchLength = match[0].length + pkg = dep + } + }) + if (pkg) { + let version + if (yarnLock) { + // yarn.lock + const regex = new RegExp(`"${pkg}@(.*)"`, 'g') + const yarnVersion = regex.exec(yarnLock) + if (yarnVersion && yarnVersion.length > 1) { + version = yarnVersion[1] } - if (version) url = url.replace(pkg, `${pkg}@${version}`) - break } - } + if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + // package-lock.json + version = packageLock['dependencies'][pkg]['version'] + } + if (!version) { + // package.json + version = deps[pkg] + } + if (version) url = url.replace(pkg, `${pkg}@${version}`) + } } catch (e) { console.log(e) } From 53e285ae43b3044c5f6a7f5ba4a7af5323a494ec Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 31 Jan 2023 12:17:54 +0100 Subject: [PATCH 04/36] clear the import cache --- libs/remix-core-plugin/src/lib/compiler-content-imports.ts | 1 + libs/remix-url-resolver/src/resolve.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 0d199a001f..30d31e054f 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -44,6 +44,7 @@ export class CompilerImports extends Plugin { return {} } }) + this.on('filePanel', 'setWorkspace', () => this.urlResolver.clearCache()) } async setToken () { diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 135ff05b14..4abfd53bcb 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -42,6 +42,10 @@ export class RemixURLResolver { this.protocol = protocol } + clearCache () { + this.previouslyHandled = {} + } + /** * Handle an import statement based on github * @param root The root of the github import statement From e9fb512c98219fb887c687777821005bd6343bf8 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Feb 2023 13:07:44 +0100 Subject: [PATCH 05/36] move listener --- libs/remix-core-plugin/src/lib/compiler-content-imports.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 30d31e054f..85c811ef91 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -44,6 +44,10 @@ export class CompilerImports extends Plugin { return {} } }) + + } + + onActivation(): void { this.on('filePanel', 'setWorkspace', () => this.urlResolver.clearCache()) } From b7e871b761ae1be0d71126cc89db53877a8d42f8 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Feb 2023 14:02:57 +0100 Subject: [PATCH 06/36] fix console --- libs/remix-url-resolver/src/resolve.ts | 60 ++++++++++++++------------ 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 4abfd53bcb..0375588112 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -135,48 +135,52 @@ export class RemixURLResolver { * Handle an import statement based on NPM * @param url The url of the NPM import statement */ - async handleNpmImport (url: string): Promise { + async handleNpmImport(url: string): Promise { // eslint-disable-next-line no-useless-catch try { if (this.getDependencies) { try { - const { deps, yarnLock, packageLock } = await this.getDependencies() + const { deps, yarnLock, packageLock } = await this.getDependencies() + console.log('deps', deps, yarnLock, packageLock) let matchLength = 0 let pkg - Object.keys(deps).map((dep) => { - const reg = new RegExp(dep, 'g') - const match = url.match(reg) - if (match && match.length > 0 && matchLength < match[0].length) { - matchLength = match[0].length - pkg = dep - } - }) - if (pkg) { - let version - if (yarnLock) { - // yarn.lock - const regex = new RegExp(`"${pkg}@(.*)"`, 'g') - const yarnVersion = regex.exec(yarnLock) - if (yarnVersion && yarnVersion.length > 1) { - version = yarnVersion[1] + if (deps) { + Object.keys(deps).map((dep) => { + const reg = new RegExp(dep, 'g') + const match = url.match(reg) + if (match && match.length > 0 && matchLength < match[0].length) { + matchLength = match[0].length + pkg = dep } + }) + if (pkg) { + let version + if (yarnLock) { + // yarn.lock + const regex = new RegExp(`"${pkg}@(.*)"`, 'g') + const yarnVersion = regex.exec(yarnLock) + if (yarnVersion && yarnVersion.length > 1) { + version = yarnVersion[1] + } + } + if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + // package-lock.json + version = packageLock['dependencies'][pkg]['version'] + } + if (!version) { + // package.json + version = deps[pkg] + } + if (version) url = url.replace(pkg, `${pkg}@${version}`) } - if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { - // package-lock.json - version = packageLock['dependencies'][pkg]['version'] - } - if (!version) { - // package.json - version = deps[pkg] - } - if (version) url = url.replace(pkg, `${pkg}@${version}`) - } + } } catch (e) { console.log(e) } } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) + console.log('handleNpmImport', url, response.data, req) return { content: response.data, cleanUrl: url } } catch (e) { throw e From 7dc446a8a50a3045415365b94faa29048b280904 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Feb 2023 14:03:17 +0100 Subject: [PATCH 07/36] rm console --- libs/remix-url-resolver/src/resolve.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 0375588112..c358b02968 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -141,7 +141,6 @@ export class RemixURLResolver { if (this.getDependencies) { try { const { deps, yarnLock, packageLock } = await this.getDependencies() - console.log('deps', deps, yarnLock, packageLock) let matchLength = 0 let pkg if (deps) { From f4f607c503e777924b5e6c412461a2c10d9fbefe Mon Sep 17 00:00:00 2001 From: filip mertens Date: Thu, 9 Feb 2023 11:06:55 +0100 Subject: [PATCH 08/36] fix undefined --- libs/remix-url-resolver/src/resolve.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index c358b02968..aba4213bcf 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -162,7 +162,7 @@ export class RemixURLResolver { version = yarnVersion[1] } } - if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + if (!version && packageLock && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { // package-lock.json version = packageLock['dependencies'][pkg]['version'] } @@ -179,7 +179,7 @@ export class RemixURLResolver { } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) - console.log('handleNpmImport', url, response.data, req) + console.log('handleNpmImport', req) return { content: response.data, cleanUrl: url } } catch (e) { throw e From 449b62a772c29e43b8555b6627a384806c4409df Mon Sep 17 00:00:00 2001 From: yann300 Date: Thu, 26 Jan 2023 18:17:12 +0100 Subject: [PATCH 09/36] resolver use package.json, yarn lock --- .../src/lib/compiler-content-imports.ts | 26 +++++++++++++- libs/remix-url-resolver/src/resolve.ts | 36 ++++++++++++++++++- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 756e7dc22b..8afd4e22b3 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -20,7 +20,31 @@ export class CompilerImports extends Plugin { urlResolver: any constructor () { super(profile) - this.urlResolver = new RemixURLResolver() + this.urlResolver = new RemixURLResolver(async () => { + try { + let yarnLock + if (await this.call('fileManager', 'exists', './yarn.lock')) { + yarnLock = await this.call('fileManager', 'readFile', './yarn.lock') + } + + let packageLock + if (await this.call('fileManager', 'exists', './package-lock.json')) { + packageLock = await this.call('fileManager', 'readFile', './package-lock.json') + packageLock = JSON.parse(packageLock) + } + + if (await this.call('fileManager', 'exists', './package.json')) { + const content = await this.call('fileManager', 'readFile', './package.json') + const pkg = JSON.parse(content) + return { deps: { ...pkg['dependencies'], ...pkg['devDependencies'] }, yarnLock, packageLock } + } else { + return {} + } + } catch (e) { + console.error(e) + return {} + } + }) this.previouslyHandled = {} // cache import so we don't make the request at each compilation. } diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index e3d9c4cf4b..2798943058 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -23,13 +23,17 @@ interface HandlerResponse { cleanUrl: string } +export type getPackages = () => Promise<{ [name: string]: string }> + export class RemixURLResolver { private previouslyHandled: PreviouslyHandledImports gistAccessToken: string protocol: string + getDependencies: getPackages - constructor (gistToken?: string, protocol = 'http:') { + constructor (getDependencies?: getPackages, gistToken?: string, protocol = 'http:') { this.previouslyHandled = {} + this.getDependencies = getDependencies this.setGistToken(gistToken, protocol) } @@ -130,6 +134,36 @@ export class RemixURLResolver { async handleNpmImport (url: string): Promise { // eslint-disable-next-line no-useless-catch try { + if (this.getDependencies) { + try { + const { deps, yarnLock, packageLock } = await this.getDependencies() + for (const pkg of Object.keys(deps)) { + if (url.startsWith(pkg)) { + let version + if (yarnLock) { + // yarn.lock + const regex = new RegExp(`"${pkg}@(.*)"`, 'g') + const yarnVersion = regex.exec(yarnLock) + if (yarnVersion && yarnVersion.length > 1) { + version = yarnVersion[1] + } + } + if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + // package-lock.json + version = packageLock['dependencies'][pkg]['version'] + } + if (!version) { + // package.json + version = deps[pkg] + } + if (version) url = url.replace(pkg, `${pkg}@${version}`) + break + } + } + } catch (e) { + console.log(e) + } + } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) return { content: response.data, cleanUrl: url } From 91194463df92c75ed192f891e13d9d258f4eb851 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 31 Jan 2023 10:28:51 +0100 Subject: [PATCH 10/36] fix import cache --- .../src/lib/compiler-content-imports.ts | 14 +------------- libs/remix-url-resolver/src/resolve.ts | 4 ++-- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 8afd4e22b3..0d199a001f 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -16,7 +16,6 @@ export type ResolvedImport = { } export class CompilerImports extends Plugin { - previouslyHandled: Record urlResolver: any constructor () { super(profile) @@ -45,7 +44,6 @@ export class CompilerImports extends Plugin { return {} } }) - this.previouslyHandled = {} // cache import so we don't make the request at each compilation. } async setToken () { @@ -95,22 +93,12 @@ export class CompilerImports extends Plugin { if (!cb) cb = () => {} const self = this - if (force) delete this.previouslyHandled[url] - const imported = this.previouslyHandled[url] - if (imported) { - return cb(null, imported.content, imported.cleanUrl, imported.type, url) - } let resolved try { await this.setToken() - resolved = await this.urlResolver.resolve(url) + resolved = await this.urlResolver.resolve(url, [], force) const { content, cleanUrl, type } = resolved - self.previouslyHandled[url] = { - content, - cleanUrl, - type - } cb(null, content, cleanUrl, type, url) } catch (e) { return cb(new Error('not found ' + url)) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 2798943058..5afab62519 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -207,9 +207,9 @@ export class RemixURLResolver { ] } - public async resolve (filePath: string, customHandlers?: Handler[]): Promise { + public async resolve (filePath: string, customHandlers?: Handler[], force?: boolean): Promise { let imported: Imported = this.previouslyHandled[filePath] - if (imported) { + if (!force && imported) { return imported } const builtinHandlers: Handler[] = this.getHandlers() From 83cee5bef1f3619d247c49fee3ae023f0a3b2f52 Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 31 Jan 2023 12:05:11 +0100 Subject: [PATCH 11/36] fix using package json dependencies --- libs/remix-url-resolver/src/resolve.ts | 49 +++++++++++++++----------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 5afab62519..135ff05b14 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -137,29 +137,36 @@ export class RemixURLResolver { if (this.getDependencies) { try { const { deps, yarnLock, packageLock } = await this.getDependencies() - for (const pkg of Object.keys(deps)) { - if (url.startsWith(pkg)) { - let version - if (yarnLock) { - // yarn.lock - const regex = new RegExp(`"${pkg}@(.*)"`, 'g') - const yarnVersion = regex.exec(yarnLock) - if (yarnVersion && yarnVersion.length > 1) { - version = yarnVersion[1] - } - } - if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { - // package-lock.json - version = packageLock['dependencies'][pkg]['version'] - } - if (!version) { - // package.json - version = deps[pkg] + let matchLength = 0 + let pkg + Object.keys(deps).map((dep) => { + const reg = new RegExp(dep, 'g') + const match = url.match(reg) + if (match && match.length > 0 && matchLength < match[0].length) { + matchLength = match[0].length + pkg = dep + } + }) + if (pkg) { + let version + if (yarnLock) { + // yarn.lock + const regex = new RegExp(`"${pkg}@(.*)"`, 'g') + const yarnVersion = regex.exec(yarnLock) + if (yarnVersion && yarnVersion.length > 1) { + version = yarnVersion[1] } - if (version) url = url.replace(pkg, `${pkg}@${version}`) - break } - } + if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + // package-lock.json + version = packageLock['dependencies'][pkg]['version'] + } + if (!version) { + // package.json + version = deps[pkg] + } + if (version) url = url.replace(pkg, `${pkg}@${version}`) + } } catch (e) { console.log(e) } From 09fdd29c0659e215d8ead107a06fd5c47f1a6d8e Mon Sep 17 00:00:00 2001 From: yann300 Date: Tue, 31 Jan 2023 12:17:54 +0100 Subject: [PATCH 12/36] clear the import cache --- libs/remix-core-plugin/src/lib/compiler-content-imports.ts | 1 + libs/remix-url-resolver/src/resolve.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 0d199a001f..30d31e054f 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -44,6 +44,7 @@ export class CompilerImports extends Plugin { return {} } }) + this.on('filePanel', 'setWorkspace', () => this.urlResolver.clearCache()) } async setToken () { diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 135ff05b14..4abfd53bcb 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -42,6 +42,10 @@ export class RemixURLResolver { this.protocol = protocol } + clearCache () { + this.previouslyHandled = {} + } + /** * Handle an import statement based on github * @param root The root of the github import statement From 0b610966aac8479cf0f95f4cf33c992ea5f994e2 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Feb 2023 13:07:44 +0100 Subject: [PATCH 13/36] move listener --- libs/remix-core-plugin/src/lib/compiler-content-imports.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 30d31e054f..85c811ef91 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -44,6 +44,10 @@ export class CompilerImports extends Plugin { return {} } }) + + } + + onActivation(): void { this.on('filePanel', 'setWorkspace', () => this.urlResolver.clearCache()) } From c817014925966f1c1364e36bcb8c6689a02a9dfa Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Feb 2023 14:02:57 +0100 Subject: [PATCH 14/36] fix console --- libs/remix-url-resolver/src/resolve.ts | 60 ++++++++++++++------------ 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 4abfd53bcb..0375588112 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -135,48 +135,52 @@ export class RemixURLResolver { * Handle an import statement based on NPM * @param url The url of the NPM import statement */ - async handleNpmImport (url: string): Promise { + async handleNpmImport(url: string): Promise { // eslint-disable-next-line no-useless-catch try { if (this.getDependencies) { try { - const { deps, yarnLock, packageLock } = await this.getDependencies() + const { deps, yarnLock, packageLock } = await this.getDependencies() + console.log('deps', deps, yarnLock, packageLock) let matchLength = 0 let pkg - Object.keys(deps).map((dep) => { - const reg = new RegExp(dep, 'g') - const match = url.match(reg) - if (match && match.length > 0 && matchLength < match[0].length) { - matchLength = match[0].length - pkg = dep - } - }) - if (pkg) { - let version - if (yarnLock) { - // yarn.lock - const regex = new RegExp(`"${pkg}@(.*)"`, 'g') - const yarnVersion = regex.exec(yarnLock) - if (yarnVersion && yarnVersion.length > 1) { - version = yarnVersion[1] + if (deps) { + Object.keys(deps).map((dep) => { + const reg = new RegExp(dep, 'g') + const match = url.match(reg) + if (match && match.length > 0 && matchLength < match[0].length) { + matchLength = match[0].length + pkg = dep } + }) + if (pkg) { + let version + if (yarnLock) { + // yarn.lock + const regex = new RegExp(`"${pkg}@(.*)"`, 'g') + const yarnVersion = regex.exec(yarnLock) + if (yarnVersion && yarnVersion.length > 1) { + version = yarnVersion[1] + } + } + if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + // package-lock.json + version = packageLock['dependencies'][pkg]['version'] + } + if (!version) { + // package.json + version = deps[pkg] + } + if (version) url = url.replace(pkg, `${pkg}@${version}`) } - if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { - // package-lock.json - version = packageLock['dependencies'][pkg]['version'] - } - if (!version) { - // package.json - version = deps[pkg] - } - if (version) url = url.replace(pkg, `${pkg}@${version}`) - } + } } catch (e) { console.log(e) } } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) + console.log('handleNpmImport', url, response.data, req) return { content: response.data, cleanUrl: url } } catch (e) { throw e From 6041903c11fad52d21b32f2bb013b974e00026cd Mon Sep 17 00:00:00 2001 From: filip mertens Date: Wed, 8 Feb 2023 14:03:17 +0100 Subject: [PATCH 15/36] rm console --- libs/remix-url-resolver/src/resolve.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 0375588112..c358b02968 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -141,7 +141,6 @@ export class RemixURLResolver { if (this.getDependencies) { try { const { deps, yarnLock, packageLock } = await this.getDependencies() - console.log('deps', deps, yarnLock, packageLock) let matchLength = 0 let pkg if (deps) { From a850975b89057b6db35ca940252331fe1dd8cb53 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Thu, 9 Feb 2023 11:06:55 +0100 Subject: [PATCH 16/36] fix undefined --- libs/remix-url-resolver/src/resolve.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index c358b02968..aba4213bcf 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -162,7 +162,7 @@ export class RemixURLResolver { version = yarnVersion[1] } } - if (!version && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { + if (!version && packageLock && packageLock['dependencies'] && packageLock['dependencies'][pkg] && packageLock['dependencies'][pkg]['version']) { // package-lock.json version = packageLock['dependencies'][pkg]['version'] } @@ -179,7 +179,7 @@ export class RemixURLResolver { } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) - console.log('handleNpmImport', url, response.data, req) + console.log('handleNpmImport', req) return { content: response.data, cleanUrl: url } } catch (e) { throw e From a910bacdfa5e774233aeaed38652beebef123d90 Mon Sep 17 00:00:00 2001 From: bunsenstraat Date: Mon, 20 Feb 2023 16:47:23 +0100 Subject: [PATCH 17/36] clear cache --- .../src/lib/compiler-content-imports.ts | 11 +++++++++++ libs/remix-url-resolver/src/resolve.ts | 1 - 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts index 85c811ef91..b64308ff34 100644 --- a/libs/remix-core-plugin/src/lib/compiler-content-imports.ts +++ b/libs/remix-core-plugin/src/lib/compiler-content-imports.ts @@ -48,7 +48,18 @@ export class CompilerImports extends Plugin { } onActivation(): void { + const packageFiles = ['package.json', 'package-lock.json', 'yarn.lock'] this.on('filePanel', 'setWorkspace', () => this.urlResolver.clearCache()) + this.on('fileManager', 'fileRemoved', (file: string) => { + if (packageFiles.includes(file)) { + this.urlResolver.clearCache() + } + }) + this.on('fileManager', 'fileChanged', (file: string) => { + if (packageFiles.includes(file)) { + this.urlResolver.clearCache() + } + }) } async setToken () { diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index aba4213bcf..850e2015ab 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -179,7 +179,6 @@ export class RemixURLResolver { } const req = 'https://unpkg.com/' + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) - console.log('handleNpmImport', req) return { content: response.data, cleanUrl: url } } catch (e) { throw e From 0753fb6d959c32abf0279d48417a310974c3f8d9 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 18:44:26 +0100 Subject: [PATCH 18/36] use local pkg for CI --- .circleci/config.yml | 5 ++++- libs/remix-url-resolver/src/resolve.ts | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 01e2df4fc3..dff8f2ef9c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,7 +24,7 @@ jobs: key: v1-deps-{{ checksum "yarn.lock" }} paths: - node_modules - - run: NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js yarn build:production + - run: NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js NX_NPM_URL=http://localhost:9090/ yarn build:production - run: yarn nx build remix-ide-e2e-src-local-plugin & yarn run build:libs - run: yarn nx run debugger:build:production - run: yarn nx run solidity-compiler:build:production @@ -74,6 +74,7 @@ jobs: - run: cd dist/libs/remix-tests && yarn add @remix-project/remix-simulator ../../libs/remix-simulator - run: cd dist/libs/remix-tests && ./bin/remix-tests ./../../../libs/remix-tests/tests/examples_0/assert_ok_test.sol - run: node dist/libs/remix-tests/bin/remix-tests ./libs/remix-tests/tests/examples_0/assert_ok_test.sol + - run: http-server -p 9090 --cors='*' ./node_modules - run: yarn run test:libs remix-ide-browser: @@ -132,6 +133,7 @@ jobs: name: Start Selenium command: yarn run selenium background: true + - run: http-server -p 9090 --cors='*' ./node_modules - run: ./apps/remix-ide/ci/<< parameters.script >> << parameters.browser >> << parameters.jobsize >> << parameters.job >> - store_test_results: path: ./reports/tests @@ -178,6 +180,7 @@ jobs: name: Start Selenium command: yarn run selenium background: true + - run: http-server -p 9090 --cors='*' ./node_modules - run: ./apps/remix-ide/ci/<< parameters.script >> - store_test_results: path: ./reports/tests diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index e3d9c4cf4b..ffeaf3417c 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -128,9 +128,10 @@ export class RemixURLResolver { * @param url The url of the NPM import statement */ async handleNpmImport (url: string): Promise { + const NX_NPM_URL: string = process && process.env && process.env['NX_NPM_URL'] ? process.env['NX_NPM_URL'] : 'https://unpkg.com/' // eslint-disable-next-line no-useless-catch try { - const req = 'https://unpkg.com/' + url + const req = NX_NPM_URL + url const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) return { content: response.data, cleanUrl: url } } catch (e) { From 139186e46aa3c7076bcfb5729bd82776f004f43a Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 18:51:20 +0100 Subject: [PATCH 19/36] add hardhat --- package.json | 1 + yarn.lock | 606 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 595 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index bd340874c2..48359f3649 100644 --- a/package.json +++ b/package.json @@ -307,6 +307,7 @@ "ganache-cli": "^6.8.1", "gists": "^1.0.1", "gulp": "^4.0.2", + "hardhat": "^2.12.7", "https-browserify": "^1.0.0", "ipfs-http-client": "^47.0.1", "ipfs-mini": "^1.1.5", diff --git a/yarn.lock b/yarn.lock index 955e09d759..2e21b101a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2371,7 +2371,7 @@ "@ethersproject/properties" "^5.5.0" "@ethersproject/strings" "^5.5.0" -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -4596,6 +4596,17 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + "@monaco-editor/loader@^1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.2.tgz#04effbb87052d19cd7d3c9d81c0635490f9bb6d8" @@ -4646,11 +4657,21 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + "@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -4677,6 +4698,204 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@nomicfoundation/ethereumjs-block@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz#fdd5c045e7baa5169abeed0e1202bf94e4481c49" + integrity sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-blockchain@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz#1a8c243a46d4d3691631f139bfb3a4a157187b0c" + integrity sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw== + dependencies: + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-ethash" "^2.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + abstract-level "^1.0.3" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + level "^8.0.0" + lru-cache "^5.1.1" + memory-level "^1.0.0" + +"@nomicfoundation/ethereumjs-common@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz#f6bcc7753994555e49ab3aa517fc8bcf89c280b9" + integrity sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA== + dependencies: + "@nomicfoundation/ethereumjs-util" "^8.0.0" + crc-32 "^1.2.0" + +"@nomicfoundation/ethereumjs-ethash@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz#11539c32fe0990e1122ff987d1b84cfa34774e81" + integrity sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew== + dependencies: + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + abstract-level "^1.0.3" + bigint-crypto-utils "^3.0.23" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-evm@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz#99cd173c03b59107c156a69c5e215409098a370b" + integrity sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@types/async-eventemitter" "^0.2.1" + async-eventemitter "^0.2.4" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/ethereumjs-rlp@^4.0.0", "@nomicfoundation/ethereumjs-rlp@^4.0.0-beta.2": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz#d9a9c5f0f10310c8849b6525101de455a53e771d" + integrity sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw== + +"@nomicfoundation/ethereumjs-statemanager@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz#14a9d4e1c828230368f7ab520c144c34d8721e4b" + integrity sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" + +"@nomicfoundation/ethereumjs-trie@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz#dcfbe3be53a94bc061c9767a396c16702bc2f5b7" + integrity sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + readable-stream "^3.6.0" + +"@nomicfoundation/ethereumjs-tx@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz#59dc7452b0862b30342966f7052ab9a1f7802f52" + integrity sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w== + dependencies: + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz#deb2b15d2c308a731e82977aefc4e61ca0ece6c5" + integrity sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "^4.0.0-beta.2" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-vm@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz#2bb50d332bf41790b01a3767ffec3987585d1de6" + integrity sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w== + dependencies: + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-evm" "^1.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@types/async-eventemitter" "^0.2.1" + async-eventemitter "^0.2.4" + debug "^4.3.3" + ethereum-cryptography "0.1.3" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + rustbn.js "~0.2.0" + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz#83a7367342bd053a76d04bbcf4f373fef07cf760" + integrity sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz#1225f7da647ae1ad25a87125664704ecc0af6ccc" + integrity sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA== + +"@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz#dbc052dcdfd50ae50fd5ae1788b69b4e0fa40040" + integrity sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz#e6b2eea633995b557e74e881d2a43eab4760903d" + integrity sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz#af81107f5afa794f19988a368647727806e18dc4" + integrity sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz#6877e1da1a06a9f08446070ab6e0a5347109f868" + integrity sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz#bb6cd83a0c259eccef4183796b6329a66cf7ebd9" + integrity sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg== + +"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz#9d4bca1cc9a1333fde985675083b0b7d165f6076" + integrity sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw== + +"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz#0db5bfc6aa952bea4098d8d2c8947b4e5c4337ee" + integrity sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz#2e0f39a2924dcd77db6b419828595e984fabcb33" + integrity sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA== + +"@nomicfoundation/solidity-analyzer@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz#e5ddc43ad5c0aab96e5054520d8e16212e125f50" + integrity sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.0" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.0" + "@nomicfoundation/solidity-analyzer-freebsd-x64" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.0" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.0" + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc" "0.1.0" + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.0" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.0" + "@nrwl/cli@15.6.3", "@nrwl/cli@^15.6.3": version "15.6.3" resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.6.3.tgz#999531d6efb30afc39373bdcbd7e78254a3a3fd3" @@ -5243,6 +5462,15 @@ "@noble/secp256k1" "~1.6.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + "@scure/bip39@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" @@ -5251,6 +5479,82 @@ "@noble/hashes" "~1.1.1" "@scure/base" "~1.1.0" +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + "@sinclair/typebox@^0.24.1": version "0.24.44" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.44.tgz#0a0aa3bf4a155a678418527342a3ee84bd8caa5c" @@ -5489,6 +5793,11 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== +"@types/async-eventemitter@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz#f8e6280e87e8c60b2b938624b0a3530fb3e24712" + integrity sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg== + "@types/axios@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46" @@ -5801,6 +6110,11 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.176.tgz#641150fc1cda36fbfa329de603bbb175d7ee20c0" integrity sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ== +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + "@types/mime@*": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" @@ -6564,6 +6878,11 @@ acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -6597,6 +6916,14 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -6689,7 +7016,7 @@ ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -7145,6 +7472,13 @@ async-each@^1.0.0, async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -7162,7 +7496,7 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" -async@^2.6.2, async@^2.6.4: +async@^2.4.0, async@^2.6.2, async@^2.6.4: version "2.6.4" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== @@ -8203,7 +8537,7 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.6, bn.js@^4.11.9: +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== @@ -8828,6 +9162,13 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" @@ -9451,6 +9792,11 @@ clean-git-ref@^2.0.1: resolved "https://registry.yarnpkg.com/clean-git-ref/-/clean-git-ref-2.0.1.tgz#dcc0ca093b90e527e67adb5a5e55b1af6816dcd9" integrity sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw== +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -10141,6 +10487,11 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + copy-concurrently@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.3.tgz#45fb7866249a1ca889aa5708e6cbd273e75bb250" @@ -11654,7 +12005,7 @@ enhanced-resolve@^5.10.0, enhanced-resolve@^5.7.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@~2.3.6: +enquirer@^2.3.0, enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -12227,7 +12578,7 @@ ethereum-bloom-filters@^1.0.6: dependencies: js-sha3 "^0.8.0" -ethereum-cryptography@^0.1.3: +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== @@ -12248,6 +12599,16 @@ ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + ethereum-cryptography@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" @@ -12258,7 +12619,15 @@ ethereum-cryptography@^1.1.2: "@scure/bip32" "1.1.0" "@scure/bip39" "1.1.0" -ethereumjs-util@6.2.1: +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== @@ -13358,6 +13727,16 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + fraction.js@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" @@ -13452,6 +13831,15 @@ fs-extra@^4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -14347,6 +14735,62 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== +hardhat@^2.12.7: + version "2.12.7" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.12.7.tgz#d8de2dc32e9a2956d53cf26ef4cd5857e57a3138" + integrity sha512-voWoN6zn5d8BOEaczSyK/1PyfdeOeI3SbGCFb36yCHTJUt6OIqLb+ZDX30VhA1UsYKzLqG7UnWl3fKJUuANc6A== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/ethereumjs-block" "^4.0.0" + "@nomicfoundation/ethereumjs-blockchain" "^6.0.0" + "@nomicfoundation/ethereumjs-common" "^3.0.0" + "@nomicfoundation/ethereumjs-evm" "^1.0.0" + "@nomicfoundation/ethereumjs-rlp" "^4.0.0" + "@nomicfoundation/ethereumjs-statemanager" "^1.0.0" + "@nomicfoundation/ethereumjs-trie" "^5.0.0" + "@nomicfoundation/ethereumjs-tx" "^4.0.0" + "@nomicfoundation/ethereumjs-util" "^8.0.0" + "@nomicfoundation/ethereumjs-vm" "^6.0.0" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -14925,6 +15369,11 @@ immutable@^4.0.0: resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== +immutable@^4.0.0-rc.12: + version "4.2.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a" + integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w== + import-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" @@ -15172,6 +15621,13 @@ invert-kv@^2.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + ip-regex@^4.0.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" @@ -17425,6 +17881,15 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keccak@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + keccakjs@^0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/keccakjs/-/keccakjs-0.2.3.tgz#5e4e969ce39689a3861f445d7752ee3477f9fe72" @@ -18070,7 +18535,7 @@ lodash.without@~4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1: +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -18206,6 +18671,11 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" @@ -18703,6 +19173,13 @@ minimatch@4.2.1: dependencies: brace-expansion "^1.1.7" +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.0, minimatch@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" @@ -18876,6 +19353,13 @@ mkpath@1.0.0: resolved "https://registry.yarnpkg.com/mkpath/-/mkpath-1.0.0.tgz#ebb3a977e7af1c683ae6fda12b545a6ba6c5853d" integrity sha1-67Opd+evHGg65v2hK1Raa6bFhT0= +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + mocha@9.2.2: version "9.2.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" @@ -18906,6 +19390,33 @@ mocha@9.2.2: yargs-parser "20.2.4" yargs-unparser "2.0.0" +mocha@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== + dependencies: + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + mocha@^8.0.1: version "8.4.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" @@ -19259,6 +19770,11 @@ nanoid@3.3.1: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + nanoid@^3.0.2, nanoid@^3.1.3: version "3.1.29" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.29.tgz#214fb2d7a33e1a5bef4757b779dfaeb6a4e5aeb4" @@ -20221,6 +20737,11 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + oboe@2.1.5: version "2.1.5" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" @@ -20568,6 +21089,13 @@ p-map@^2.1.0: resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" @@ -22084,7 +22612,7 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" -qs@6.11.0, qs@^6.4.0, qs@^6.9.4: +qs@6.11.0, qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== @@ -22206,7 +22734,7 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.1: +raw-body@2.5.1, raw-body@^2.4.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== @@ -23172,6 +23700,13 @@ resolve.exports@1.1.0, resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@~1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" @@ -24110,6 +24645,21 @@ sol2uml@^2.4.3: js-graph-algorithms "^1.0.18" klaw "^4.0.1" +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + solc@0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.4.tgz#9c5ed81ae0692e3e614e47cd5b500b0f9485b98d" @@ -24212,7 +24762,7 @@ source-map-support@0.5.19: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.16: +source-map-support@^0.5.13, source-map-support@^0.5.16: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -24511,6 +25061,11 @@ stream-to-it@^0.2.0, stream-to-it@^0.2.1: dependencies: get-iterator "^1.0.2" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -25587,7 +26142,7 @@ tslib@2.4.0, tslib@^2.4.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.10.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" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -25616,6 +26171,11 @@ tslint@~6.0.0: tslib "^1.10.0" tsutils "^2.29.0" +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + tsutils@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" @@ -25642,11 +26202,21 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -25893,6 +26463,13 @@ undertaker@^1.2.1: object.reduce "^1.0.0" undertaker-registry "^1.0.0" +undici@^5.14.0: + version "5.19.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.19.1.tgz#92b1fd3ab2c089b5a6bd3e579dcda8f1934ebf6d" + integrity sha512-YiZ61LPIgY73E7syxCDxxa3LV2yl3sN8spnIuTct60boiiRaE1J8mNWHO8Im2Zi/sFrPusjLlmRPrsyraSqX6A== + dependencies: + busboy "^1.6.0" + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -27105,6 +27682,11 @@ workerpool@6.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" From 5934b031f362ba1958265261d2a2c4245cce4959 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 18:56:26 +0100 Subject: [PATCH 20/36] npx --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index dff8f2ef9c..c2b05c6c9d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,7 +74,7 @@ jobs: - run: cd dist/libs/remix-tests && yarn add @remix-project/remix-simulator ../../libs/remix-simulator - run: cd dist/libs/remix-tests && ./bin/remix-tests ./../../../libs/remix-tests/tests/examples_0/assert_ok_test.sol - run: node dist/libs/remix-tests/bin/remix-tests ./libs/remix-tests/tests/examples_0/assert_ok_test.sol - - run: http-server -p 9090 --cors='*' ./node_modules + - run: npx http-server -p 9090 --cors='*' ./node_modules - run: yarn run test:libs remix-ide-browser: @@ -133,7 +133,7 @@ jobs: name: Start Selenium command: yarn run selenium background: true - - run: http-server -p 9090 --cors='*' ./node_modules + - run: npx http-server -p 9090 --cors='*' ./node_modules - run: ./apps/remix-ide/ci/<< parameters.script >> << parameters.browser >> << parameters.jobsize >> << parameters.job >> - store_test_results: path: ./reports/tests @@ -180,7 +180,7 @@ jobs: name: Start Selenium command: yarn run selenium background: true - - run: http-server -p 9090 --cors='*' ./node_modules + - run: npx http-server -p 9090 --cors='*' ./node_modules - run: ./apps/remix-ide/ci/<< parameters.script >> - store_test_results: path: ./reports/tests From 3d0e2e92674f2ccc1bed542f8bcbc9f2c5b57ce9 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 19:07:12 +0100 Subject: [PATCH 21/36] config --- .circleci/config.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index c2b05c6c9d..3f255b1ca8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,7 +74,7 @@ jobs: - run: cd dist/libs/remix-tests && yarn add @remix-project/remix-simulator ../../libs/remix-simulator - run: cd dist/libs/remix-tests && ./bin/remix-tests ./../../../libs/remix-tests/tests/examples_0/assert_ok_test.sol - run: node dist/libs/remix-tests/bin/remix-tests ./libs/remix-tests/tests/examples_0/assert_ok_test.sol - - run: npx http-server -p 9090 --cors='*' ./node_modules + - run: npx http-server -p 9090 --cors='*' ./node_modules > http.log 2>&1 & - run: yarn run test:libs remix-ide-browser: @@ -133,7 +133,7 @@ jobs: name: Start Selenium command: yarn run selenium background: true - - run: npx http-server -p 9090 --cors='*' ./node_modules + - run: npx http-server -p 9090 --cors='*' ./node_modules > http.log 2>&1 & - run: ./apps/remix-ide/ci/<< parameters.script >> << parameters.browser >> << parameters.jobsize >> << parameters.job >> - store_test_results: path: ./reports/tests @@ -180,7 +180,7 @@ jobs: name: Start Selenium command: yarn run selenium background: true - - run: npx http-server -p 9090 --cors='*' ./node_modules + - run: npx http-server -p 9090 --cors='*' ./node_modules > http.log 2>&1 & - run: ./apps/remix-ide/ci/<< parameters.script >> - store_test_results: path: ./reports/tests From 83183e050382ed725b44c5870918e590539acc67 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 19:25:54 +0100 Subject: [PATCH 22/36] mv script --- .circleci/config.yml | 3 --- apps/remix-ide/ci/browser_test.sh | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3f255b1ca8..e67c148d6a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -74,7 +74,6 @@ jobs: - run: cd dist/libs/remix-tests && yarn add @remix-project/remix-simulator ../../libs/remix-simulator - run: cd dist/libs/remix-tests && ./bin/remix-tests ./../../../libs/remix-tests/tests/examples_0/assert_ok_test.sol - run: node dist/libs/remix-tests/bin/remix-tests ./libs/remix-tests/tests/examples_0/assert_ok_test.sol - - run: npx http-server -p 9090 --cors='*' ./node_modules > http.log 2>&1 & - run: yarn run test:libs remix-ide-browser: @@ -133,7 +132,6 @@ jobs: name: Start Selenium command: yarn run selenium background: true - - run: npx http-server -p 9090 --cors='*' ./node_modules > http.log 2>&1 & - run: ./apps/remix-ide/ci/<< parameters.script >> << parameters.browser >> << parameters.jobsize >> << parameters.job >> - store_test_results: path: ./reports/tests @@ -180,7 +178,6 @@ jobs: name: Start Selenium command: yarn run selenium background: true - - run: npx http-server -p 9090 --cors='*' ./node_modules > http.log 2>&1 & - run: ./apps/remix-ide/ci/<< parameters.script >> - store_test_results: path: ./reports/tests diff --git a/apps/remix-ide/ci/browser_test.sh b/apps/remix-ide/ci/browser_test.sh index 600e794c7f..9e846eb94a 100755 --- a/apps/remix-ide/ci/browser_test.sh +++ b/apps/remix-ide/ci/browser_test.sh @@ -8,6 +8,7 @@ BUILD_ID=${CIRCLE_BUILD_NUM:-${TRAVIS_JOB_NUMBER}} echo "$BUILD_ID" TEST_EXITCODE=0 yarn run ganache-cli & +npx http-server -p 9090 --cors='*' ./node_modules & yarn run serve:production & echo 'sharing folder: ' $PWD '/apps/remix-ide/contracts' & From a8511b2d02f8622f55dbd43b0d5c01a1428d95b0 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 19:37:47 +0100 Subject: [PATCH 23/36] add contracts --- apps/remix-ide/ci/browser_tests_plugin_api.sh | 1 + package.json | 1 + yarn.lock | 5 +++++ 3 files changed, 7 insertions(+) diff --git a/apps/remix-ide/ci/browser_tests_plugin_api.sh b/apps/remix-ide/ci/browser_tests_plugin_api.sh index a955297d12..1ee693c174 100755 --- a/apps/remix-ide/ci/browser_tests_plugin_api.sh +++ b/apps/remix-ide/ci/browser_tests_plugin_api.sh @@ -7,6 +7,7 @@ echo "$BUILD_ID" TEST_EXITCODE=0 yarn run ganache-cli & +npx http-server -p 9090 --cors='*' ./node_modules & yarn run serve:production & npx nx serve remix-ide-e2e-src-local-plugin & diff --git a/package.json b/package.json index 48359f3649..4d9400656d 100644 --- a/package.json +++ b/package.json @@ -234,6 +234,7 @@ "@nrwl/web": "15.6.3", "@nrwl/webpack": "15.6.3", "@nrwl/workspace": "^15.6.3", + "@openzeppelin/contracts-upgradeable": "^4.8.1", "@svgr/webpack": "^6.5.1", "@testing-library/react": "13.4.0", "@types/axios": "^0.14.0", diff --git a/yarn.lock b/yarn.lock index 2e21b101a8..866a264484 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5262,6 +5262,11 @@ dependencies: "@octokit/openapi-types" "^11.2.0" +"@openzeppelin/contracts-upgradeable@^4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.1.tgz#363f7dd08f25f8f77e16d374350c3d6b43340a7a" + integrity sha512-1wTv+20lNiC0R07jyIAbHU7TNHKRwGiTGRfiNnA8jOWjKT98g5OgLpYWOi40Vgpk8SPLA9EvfJAbAeIyVn+7Bw== + "@openzeppelin/contracts@^4.7.3": version "4.7.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.3.tgz#939534757a81f8d69cc854c7692805684ff3111e" From f4b3bff280dd8d225b901655feb4166f5c25839f Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 19:55:00 +0100 Subject: [PATCH 24/36] jsdelivr --- libs/remix-url-resolver/src/resolve.ts | 45 +++++++++++++++----------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index ffeaf3417c..665eb2f3dd 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -28,12 +28,12 @@ export class RemixURLResolver { gistAccessToken: string protocol: string - constructor (gistToken?: string, protocol = 'http:') { + constructor(gistToken?: string, protocol = 'http:') { this.previouslyHandled = {} this.setGistToken(gistToken, protocol) } - async setGistToken (gistToken?: string, protocol = 'http:') { + async setGistToken(gistToken?: string, protocol = 'http:') { this.gistAccessToken = gistToken || '' this.protocol = protocol } @@ -43,7 +43,7 @@ export class RemixURLResolver { * @param root The root of the github import statement * @param filePath path of the file in github */ - async handleGithubCall (root: string, filePath: string): Promise { + async handleGithubCall(root: string, filePath: string): Promise { const regex = filePath.match(/blob\/([^/]+)\/(.*)/) let reference = 'master' if (regex) { @@ -67,7 +67,7 @@ export class RemixURLResolver { * @param url The url of the import statement * @param cleanUrl */ - async handleHttp (url: string, cleanUrl: string): Promise { + async handleHttp(url: string, cleanUrl: string): Promise { // eslint-disable-next-line no-useless-catch try { const response: AxiosResponse = await axios.get(url, { transformResponse: [] }) @@ -82,7 +82,7 @@ export class RemixURLResolver { * @param url The url of the import statement * @param cleanUrl */ - async handleHttps (url: string, cleanUrl: string): Promise { + async handleHttps(url: string, cleanUrl: string): Promise { // eslint-disable-next-line no-useless-catch try { const response: AxiosResponse = await axios.get(url, { transformResponse: [] }) @@ -92,7 +92,7 @@ export class RemixURLResolver { } } - async handleSwarm (url: string, cleanUrl: string): Promise { + async handleSwarm(url: string, cleanUrl: string): Promise { // eslint-disable-next-line no-useless-catch try { const bzz = new Bzz({ url: this.protocol + '//swarm-gateways.net' }) @@ -108,7 +108,7 @@ export class RemixURLResolver { * Handle an import statement based on IPFS * @param url The url of the IPFS import statement */ - async handleIPFS (url: string): Promise { + async handleIPFS(url: string): Promise { // replace ipfs:// with /ipfs/ url = url.replace(/^ipfs:\/\/?/, 'ipfs/') // eslint-disable-next-line no-useless-catch @@ -127,19 +127,28 @@ export class RemixURLResolver { * Handle an import statement based on NPM * @param url The url of the NPM import statement */ - async handleNpmImport (url: string): Promise { - const NX_NPM_URL: string = process && process.env && process.env['NX_NPM_URL'] ? process.env['NX_NPM_URL'] : 'https://unpkg.com/' - // eslint-disable-next-line no-useless-catch - try { - const req = NX_NPM_URL + url - const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) - return { content: response.data, cleanUrl: url } - } catch (e) { - throw e + async handleNpmImport(url: string): Promise { + const urls = ["https://cdn.jsdelivr.net/npm/", "https://unpkg.com/"] + process && process.env && process.env['NX_NPM_URL'] && urls.unshift(process.env['NX_NPM_URL']) + let content = null + // get response from all urls + for (let i = 0; i < urls.length; i++) { + try { + const req = urls[i] + url + const response: AxiosResponse = await axios.get(req, { transformResponse: [] }) + content = response.data + break + } catch (e) { + // try next url + } } + + + return { content: content, cleanUrl: url } + } - getHandlers (): Handler[] { + getHandlers(): Handler[] { return [ { type: 'github', @@ -174,7 +183,7 @@ export class RemixURLResolver { ] } - public async resolve (filePath: string, customHandlers?: Handler[]): Promise { + public async resolve(filePath: string, customHandlers?: Handler[]): Promise { let imported: Imported = this.previouslyHandled[filePath] if (imported) { return imported From d27e269199d6ce40b02e9113304496f6a7360b9c Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 20:06:46 +0100 Subject: [PATCH 25/36] throw error --- libs/remix-url-resolver/src/resolve.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 665eb2f3dd..2e564f352a 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -128,7 +128,7 @@ export class RemixURLResolver { * @param url The url of the NPM import statement */ async handleNpmImport(url: string): Promise { - const urls = ["https://cdn.jsdelivr.net/npm/", "https://unpkg.com/"] + const urls = ["https://cdn.jsdelivr.net/npm/o", "https://unpkg.com/"] process && process.env && process.env['NX_NPM_URL'] && urls.unshift(process.env['NX_NPM_URL']) let content = null // get response from all urls @@ -142,9 +142,8 @@ export class RemixURLResolver { // try next url } } - - - return { content: content, cleanUrl: url } + if (!content) throw new Error('Unable to load ' + url) + return { content, cleanUrl: url } } From 5caea756570fa3fd0d73dfaf68b444693c2ede85 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 20:16:47 +0100 Subject: [PATCH 26/36] typo --- libs/remix-url-resolver/src/resolve.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 2e564f352a..5b10f76ddf 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -128,7 +128,7 @@ export class RemixURLResolver { * @param url The url of the NPM import statement */ async handleNpmImport(url: string): Promise { - const urls = ["https://cdn.jsdelivr.net/npm/o", "https://unpkg.com/"] + const urls = ["https://cdn.jsdelivr.net/npm/", "https://unpkg.com/"] process && process.env && process.env['NX_NPM_URL'] && urls.unshift(process.env['NX_NPM_URL']) let content = null // get response from all urls From 9d411a780d65b50884509235b5311a21ba0555cc Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 20:25:23 +0100 Subject: [PATCH 27/36] spaces --- libs/remix-url-resolver/src/resolve.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index 5b10f76ddf..fbb1abdacc 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -43,7 +43,7 @@ export class RemixURLResolver { * @param root The root of the github import statement * @param filePath path of the file in github */ - async handleGithubCall(root: string, filePath: string): Promise { + async handleGithubCall (root: string, filePath: string): Promise { const regex = filePath.match(/blob\/([^/]+)\/(.*)/) let reference = 'master' if (regex) { @@ -67,7 +67,7 @@ export class RemixURLResolver { * @param url The url of the import statement * @param cleanUrl */ - async handleHttp(url: string, cleanUrl: string): Promise { + async handleHttp (url: string, cleanUrl: string): Promise { // eslint-disable-next-line no-useless-catch try { const response: AxiosResponse = await axios.get(url, { transformResponse: [] }) @@ -82,7 +82,7 @@ export class RemixURLResolver { * @param url The url of the import statement * @param cleanUrl */ - async handleHttps(url: string, cleanUrl: string): Promise { + async handleHttps (url: string, cleanUrl: string): Promise { // eslint-disable-next-line no-useless-catch try { const response: AxiosResponse = await axios.get(url, { transformResponse: [] }) @@ -92,7 +92,7 @@ export class RemixURLResolver { } } - async handleSwarm(url: string, cleanUrl: string): Promise { + async handleSwarm (url: string, cleanUrl: string): Promise { // eslint-disable-next-line no-useless-catch try { const bzz = new Bzz({ url: this.protocol + '//swarm-gateways.net' }) @@ -108,7 +108,7 @@ export class RemixURLResolver { * Handle an import statement based on IPFS * @param url The url of the IPFS import statement */ - async handleIPFS(url: string): Promise { + async handleIPFS (url: string): Promise { // replace ipfs:// with /ipfs/ url = url.replace(/^ipfs:\/\/?/, 'ipfs/') // eslint-disable-next-line no-useless-catch @@ -127,7 +127,7 @@ export class RemixURLResolver { * Handle an import statement based on NPM * @param url The url of the NPM import statement */ - async handleNpmImport(url: string): Promise { + async handleNpmImport (url: string): Promise { const urls = ["https://cdn.jsdelivr.net/npm/", "https://unpkg.com/"] process && process.env && process.env['NX_NPM_URL'] && urls.unshift(process.env['NX_NPM_URL']) let content = null @@ -147,7 +147,7 @@ export class RemixURLResolver { } - getHandlers(): Handler[] { + getHandlers (): Handler[] { return [ { type: 'github', @@ -182,7 +182,7 @@ export class RemixURLResolver { ] } - public async resolve(filePath: string, customHandlers?: Handler[]): Promise { + public async resolve (filePath: string, customHandlers?: Handler[]): Promise { let imported: Imported = this.previouslyHandled[filePath] if (imported) { return imported From c32fdb189f36f8fc378c46c5ced85222edd2423d Mon Sep 17 00:00:00 2001 From: filip mertens Date: Fri, 17 Feb 2023 20:25:49 +0100 Subject: [PATCH 28/36] spaces --- libs/remix-url-resolver/src/resolve.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index fbb1abdacc..ac6a373339 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -28,12 +28,12 @@ export class RemixURLResolver { gistAccessToken: string protocol: string - constructor(gistToken?: string, protocol = 'http:') { + constructor (gistToken?: string, protocol = 'http:') { this.previouslyHandled = {} this.setGistToken(gistToken, protocol) } - async setGistToken(gistToken?: string, protocol = 'http:') { + async setGistToken (gistToken?: string, protocol = 'http:') { this.gistAccessToken = gistToken || '' this.protocol = protocol } From 99c553f1a72292a7e42dfec71b657b9ce4b97336 Mon Sep 17 00:00:00 2001 From: bunsenstraat Date: Sat, 18 Feb 2023 11:22:37 +0100 Subject: [PATCH 29/36] Update config.yml --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e67c148d6a..9c7acdc58c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,7 +24,7 @@ jobs: key: v1-deps-{{ checksum "yarn.lock" }} paths: - node_modules - - run: NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js NX_NPM_URL=http://localhost:9090/ yarn build:production + - run: NX_BIN_URL=http://127.0.0.1:8080/assets/js NX_WASM_URL=http://127.0.0.1:8080/assets/js NPM_URL=http://localhost:9090/ yarn build:production - run: yarn nx build remix-ide-e2e-src-local-plugin & yarn run build:libs - run: yarn nx run debugger:build:production - run: yarn nx run solidity-compiler:build:production From f595099546f2e68e436e50190e8d6bde79b18d0d Mon Sep 17 00:00:00 2001 From: bunsenstraat Date: Sat, 18 Feb 2023 11:23:05 +0100 Subject: [PATCH 30/36] Update resolve.ts --- libs/remix-url-resolver/src/resolve.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/remix-url-resolver/src/resolve.ts b/libs/remix-url-resolver/src/resolve.ts index ac6a373339..9fdbd5f5ea 100644 --- a/libs/remix-url-resolver/src/resolve.ts +++ b/libs/remix-url-resolver/src/resolve.ts @@ -129,7 +129,7 @@ export class RemixURLResolver { */ async handleNpmImport (url: string): Promise { const urls = ["https://cdn.jsdelivr.net/npm/", "https://unpkg.com/"] - process && process.env && process.env['NX_NPM_URL'] && urls.unshift(process.env['NX_NPM_URL']) + process && process.env && process.env['NPM_URL'] && urls.unshift(process.env['NPM_URL']) let content = null // get response from all urls for (let i = 0; i < urls.length; i++) { From 77bf879243f1fd4bf73d4ee57ee708d90063d2c9 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Tue, 21 Feb 2023 15:12:48 +0100 Subject: [PATCH 31/36] refactor --- apps/etherscan/src/app/RemixPlugin.tsx | 7 ++++--- apps/etherscan/src/app/utils/utilities.ts | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/apps/etherscan/src/app/RemixPlugin.tsx b/apps/etherscan/src/app/RemixPlugin.tsx index f9c6a4e18a..e4879ef6ce 100644 --- a/apps/etherscan/src/app/RemixPlugin.tsx +++ b/apps/etherscan/src/app/RemixPlugin.tsx @@ -23,9 +23,10 @@ export class RemixClient extends PluginClient { const etherscanApi = getEtherScanApi(network) const receiptStatus = await getReceiptStatus(receiptGuid, apiKey, etherscanApi) return { - status: receiptStatus, - message: receiptStatus, - succeed: true + status: receiptStatus.status, + message: receiptStatus.message, + result: receiptStatus.result, + succeed: receiptStatus.status === '0' ? false : true } } catch (e: any){ return { diff --git a/apps/etherscan/src/app/utils/utilities.ts b/apps/etherscan/src/app/utils/utilities.ts index d7300806a3..11cc6bd8e7 100644 --- a/apps/etherscan/src/app/utils/utilities.ts +++ b/apps/etherscan/src/app/utils/utilities.ts @@ -2,6 +2,12 @@ import { PluginClient } from "@remixproject/plugin" import axios from 'axios' type RemixClient = PluginClient +export type receiptStatus = { + result: string + message: string + status: string +} + export const getEtherScanApi = (network: string) => { return network === "main" ? `https://api.etherscan.io/api` @@ -20,12 +26,16 @@ export const getReceiptStatus = async ( receiptGuid: string, apiKey: string, etherscanApi: string -) => { +): Promise => { const params = `guid=${receiptGuid}&module=contract&action=checkverifystatus&apiKey=${apiKey}` try { const response = await axios.get(`${etherscanApi}?${params}`) - const { result } = response.data - return result + const { result, message, status } = response.data + return { + result, + message, + status, + } } catch (error) { console.error(error) } From fb4af34e3026691af97d50db9dad2e8b4455ec49 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Tue, 21 Feb 2023 15:30:29 +0100 Subject: [PATCH 32/36] fix build --- apps/etherscan/.babelrc | 18 ++- apps/etherscan/src/app/RemixPlugin.tsx | 4 +- apps/etherscan/src/app/app.tsx | 4 +- apps/etherscan/src/app/utils/utilities.ts | 5 + apps/etherscan/src/app/utils/verify.ts | 4 +- apps/etherscan/src/app/views/ReceiptsView.tsx | 2 +- apps/etherscan/webpack.config.js | 104 +++++++++++++----- 7 files changed, 98 insertions(+), 43 deletions(-) diff --git a/apps/etherscan/.babelrc b/apps/etherscan/.babelrc index b1fc975456..e37036ce66 100644 --- a/apps/etherscan/.babelrc +++ b/apps/etherscan/.babelrc @@ -1,13 +1,9 @@ { - "presets": [ - [ - "@nrwl/react/babel", { - "runtime": "automatic" - - } - ] - ], - "plugins": [ - + "presets": ["@babel/preset-env", ["@babel/preset-react", + {"runtime": "automatic"} + ]], + "plugins": ["@babel/plugin-proposal-class-properties", "@babel/plugin-transform-runtime", "@babel/plugin-proposal-nullish-coalescing-operator"], + "ignore": [ + "**/node_modules/**" ] -} +} \ No newline at end of file diff --git a/apps/etherscan/src/app/RemixPlugin.tsx b/apps/etherscan/src/app/RemixPlugin.tsx index e4879ef6ce..601e523920 100644 --- a/apps/etherscan/src/app/RemixPlugin.tsx +++ b/apps/etherscan/src/app/RemixPlugin.tsx @@ -23,9 +23,7 @@ export class RemixClient extends PluginClient { const etherscanApi = getEtherScanApi(network) const receiptStatus = await getReceiptStatus(receiptGuid, apiKey, etherscanApi) return { - status: receiptStatus.status, - message: receiptStatus.message, - result: receiptStatus.result, + message: receiptStatus.result, succeed: receiptStatus.status === '0' ? false : true } } catch (e: any){ diff --git a/apps/etherscan/src/app/app.tsx b/apps/etherscan/src/app/app.tsx index 5a141e239d..9b5450cb0a 100644 --- a/apps/etherscan/src/app/app.tsx +++ b/apps/etherscan/src/app/app.tsx @@ -89,7 +89,7 @@ const App = () => { }) if (receiptsNotVerified.length > 0) { - let timer1 = setInterval(() => { + const timer1 = setInterval(() => { for (const item in receiptsNotVerified) { } @@ -106,7 +106,7 @@ const App = () => { apiKey, getEtherScanApi(network) ) - if (status === "Pass - Verified") { + if (status.result === "Pass - Verified") { const newReceipts = receipts.map((currentReceipt: Receipt) => { if (currentReceipt.guid === item.guid) { return { diff --git a/apps/etherscan/src/app/utils/utilities.ts b/apps/etherscan/src/app/utils/utilities.ts index 11cc6bd8e7..b7db856364 100644 --- a/apps/etherscan/src/app/utils/utilities.ts +++ b/apps/etherscan/src/app/utils/utilities.ts @@ -2,6 +2,11 @@ import { PluginClient } from "@remixproject/plugin" import axios from 'axios' type RemixClient = PluginClient +/* + status: 0=Error, 1=Pass + message: OK, NOTOK + result: explanation +*/ export type receiptStatus = { result: string message: string diff --git a/apps/etherscan/src/app/utils/verify.ts b/apps/etherscan/src/app/utils/verify.ts index e3cfabd9d9..305c926fca 100644 --- a/apps/etherscan/src/app/utils/verify.ts +++ b/apps/etherscan/src/app/utils/verify.ts @@ -90,6 +90,8 @@ export const verify = async ( const response = await axios.post(etherscanApi, body) const { message, result, status } = await response.data + console.log("response", response.data) + if (message === "OK" && status === "1") { resetAfter10Seconds(client, setResults) const receiptStatus = await getReceiptStatus( @@ -100,7 +102,7 @@ export const verify = async ( const returnValue = { guid: result, - status: receiptStatus, + status: receiptStatus.result, message: `Verification process started correctly. Receipt GUID ${result}`, succeed: true } diff --git a/apps/etherscan/src/app/views/ReceiptsView.tsx b/apps/etherscan/src/app/views/ReceiptsView.tsx index ad13fbee33..4d07953a38 100644 --- a/apps/etherscan/src/app/views/ReceiptsView.tsx +++ b/apps/etherscan/src/app/views/ReceiptsView.tsx @@ -30,7 +30,7 @@ export const ReceiptsView: React.FC = () => { apiKey, etherscanApi ) - setResults(result) + setResults(result.result) } catch (error: any) { setResults(error.message) } diff --git a/apps/etherscan/webpack.config.js b/apps/etherscan/webpack.config.js index 68ea64e4a1..8fda923d20 100644 --- a/apps/etherscan/webpack.config.js +++ b/apps/etherscan/webpack.config.js @@ -1,28 +1,82 @@ -const nxWebpack = require('@nrwl/react/plugins/webpack') - -module.exports = config => { - const nxWebpackConfig = nxWebpack(config) - const webpackConfig = { - ...nxWebpackConfig, - resolve : { - ...nxWebpackConfig.resolve, - fallback: { - ...nxWebpackConfig.resolve.fallback, - "http": require.resolve("stream-http"), - "https": require.resolve("https-browserify"), - "stream": require.resolve("stream-browserify"), - "zlib": require.resolve("browserify-zlib"), - }, - } +const { composePlugins, withNx } = require('@nrwl/webpack') +const webpack = require('webpack') +const TerserPlugin = require("terser-webpack-plugin") +const CssMinimizerPlugin = require("css-minimizer-webpack-plugin") + +// Nx plugins for webpack. +module.exports = composePlugins(withNx(), (config) => { + // Update the webpack config as needed here. + // e.g. `config.plugins.push(new MyPlugin())` + + // add fallback for node modules + config.resolve.fallback = { + ...config.resolve.fallback, + "crypto": require.resolve("crypto-browserify"), + "stream": require.resolve("stream-browserify"), + "path": require.resolve("path-browserify"), + "http": require.resolve("stream-http"), + "https": require.resolve("https-browserify"), + "constants": require.resolve("constants-browserify"), + "os": false, //require.resolve("os-browserify/browser"), + "timers": false, // require.resolve("timers-browserify"), + "zlib": require.resolve("browserify-zlib"), + "fs": false, + "module": false, + "tls": false, + "net": false, + "readline": false, + "child_process": false, + "buffer": require.resolve("buffer/"), + "vm": require.resolve('vm-browserify'), } - if (process.env.NODE_ENV === 'production') { - return { - ...webpackConfig, - mode: 'production', - devtool: 'source-map', - } - } else { - return webpackConfig + + // add externals + config.externals = { + ...config.externals, + solc: 'solc', } -} + + // add public path + config.output.publicPath = '/' + + + + // add copy & provide plugin + config.plugins.push( + new webpack.ProvidePlugin({ + Buffer: ['buffer', 'Buffer'], + url: ['url', 'URL'], + process: 'process/browser', + }) + ) + + // souce-map loader + config.module.rules.push({ + test: /\.js$/, + use: ["source-map-loader"], + enforce: "pre" + }) + + config.ignoreWarnings = [/Failed to parse source map/] // ignore source-map-loader warnings + + + // set minimizer + config.optimization.minimizer = [ + new TerserPlugin({ + parallel: true, + terserOptions: { + ecma: 2015, + compress: false, + mangle: false, + format: { + comments: false, + }, + }, + extractComments: false, + }), + new CssMinimizerPlugin(), + ]; + + return config; +}); \ No newline at end of file From 42237ad3b1082f13986dc92be3ed5c7b6e7c6a42 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Tue, 21 Feb 2023 15:40:58 +0100 Subject: [PATCH 33/36] fix the test --- apps/remix-ide-e2e/src/tests/etherscan_api.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/etherscan_api.ts b/apps/remix-ide-e2e/src/tests/etherscan_api.ts index f951942f0d..15a3fa62e7 100644 --- a/apps/remix-ide-e2e/src/tests/etherscan_api.ts +++ b/apps/remix-ide-e2e/src/tests/etherscan_api.ts @@ -54,7 +54,7 @@ module.exports = { .clickLaunchIcon('filePanel') .addFile('receiptStatusScript.ts', { content: receiptStatusScript }) .click('*[data-id="play-editor"]') // run the script - .waitForElementContainsText('*[data-id="terminalJournal"]', 'Pass - Verified', 60000) + .waitForElementContainsText('*[data-id="terminalJournal"]', 'Already Verified', 60000) } } @@ -119,7 +119,7 @@ const receiptStatusScript = ` const receiptStatus = async () => { try { const apikey = '2HKUX5ZVASZIKWJM8MIQVCRUVZ6JAWT531' - const ret = await remix.call('etherscan' as any, 'receiptStatus', 'n1qtqfn8jggwqv9uvni5zzectnztqbxqqvizznvl4vg1pndb9v', apikey) + const ret = await remix.call('etherscan' as any, 'receiptStatus', 'tsrrzmayenrslvixnvhdv7fbbp6kk1xuqkg667aqlesblpkimt', apikey) console.log(ret) } catch (e) { console.log(e.message) From 67053439d03a853868d4c3533fbcbc849b1838f7 Mon Sep 17 00:00:00 2001 From: bunsenstraat Date: Tue, 21 Feb 2023 17:36:18 +0100 Subject: [PATCH 34/36] Update verify.ts --- apps/etherscan/src/app/utils/verify.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/etherscan/src/app/utils/verify.ts b/apps/etherscan/src/app/utils/verify.ts index 305c926fca..f20ce3fa9b 100644 --- a/apps/etherscan/src/app/utils/verify.ts +++ b/apps/etherscan/src/app/utils/verify.ts @@ -90,8 +90,6 @@ export const verify = async ( const response = await axios.post(etherscanApi, body) const { message, result, status } = await response.data - console.log("response", response.data) - if (message === "OK" && status === "1") { resetAfter10Seconds(client, setResults) const receiptStatus = await getReceiptStatus( @@ -171,4 +169,4 @@ export const verify = async ( } } return contractMetadata - } \ No newline at end of file + } From 372340e5322906cd2f5268d6e129cd56598f76c3 Mon Sep 17 00:00:00 2001 From: filip mertens Date: Tue, 21 Feb 2023 16:09:22 +0100 Subject: [PATCH 35/36] fix test --- .../src/tests/solidityImport.test.ts | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/apps/remix-ide-e2e/src/tests/solidityImport.test.ts b/apps/remix-ide-e2e/src/tests/solidityImport.test.ts index 2cdd6894f6..2b75395e2a 100644 --- a/apps/remix-ide-e2e/src/tests/solidityImport.test.ts +++ b/apps/remix-ide-e2e/src/tests/solidityImport.test.ts @@ -34,19 +34,6 @@ module.exports = { timeout: 120000, suppressNotFoundErrors: true }) - .click('[data-id="compilerContainerCompileBtn"]') - .isVisible({ - selector: "//span[contains(.,'not found Untitled11')]", - locateStrategy: 'xpath', - timeout: 120000, - suppressNotFoundErrors: true - }) - .click('[data-id="compilerContainerCompileBtn"]') - .waitForElementVisible({ - selector: "//span[contains(.,'not found Untitled11')]", - locateStrategy: 'xpath', - timeout: 120000, - }) }, @@ -135,11 +122,11 @@ const sources = [ 'Untitled.sol': { content: 'contract test1 {} contract test2 {}' } }, { - 'Untitled1.sol': { content: 'import "./Untitled2.sol"; contract test6 {}' }, + 'Untitled1.sol': { content: 'import "/Untitled2.sol"; contract test6 {}' }, 'Untitled2.sol': { content: 'contract test4 {} contract test5 {}' } }, { - 'Untitled3.sol': { content: 'import "./Untitled11.sol"; contract test6 {}' } + 'Untitled3.sol': { content: 'import "/Untitled11.sol"; contract test6 {}' } }, { 'Untitled4.sol': { content: 'import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol"; contract test7 {}' } From 10d5be24018ffef9c454becb078a50f278c0813d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Feb 2023 14:12:23 +0000 Subject: [PATCH 36/36] Bump loader-utils from 1.4.0 to 1.4.2 Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.0 to 1.4.2. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v1.4.0...v1.4.2) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 44 ++++++++++++++------------------------------ 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/yarn.lock b/yarn.lock index 866a264484..63d8b716ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17734,25 +17734,13 @@ json5@^0.5.1: integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -json5@^2.2.2: +json5@^2.1.2, json5@^2.2.1, json5@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -18240,24 +18228,15 @@ loader-runner@^4.2.0: integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" json5 "^1.0.1" -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^2.0.3: +loader-utils@^2.0.0, loader-utils@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== @@ -19238,11 +19217,16 @@ minimist@1.2.6, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.0, minimist@~1.2.5: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.5, minimist@~1.2.0, minimist@~1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.0: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"