Load browser compiler

pull/5770/head
ioedeveloper 2 months ago committed by Aniket
parent 1dabe225a3
commit aefc12632c
  1. 9
      apps/noir-compiler/src/app/app.tsx
  2. 163
      apps/noir-compiler/src/app/services/noirFileManager.ts
  3. 40
      apps/noir-compiler/src/app/services/noirPluginClient.ts
  4. 38
      apps/noir-compiler/src/app/services/remixMockFs.ts
  5. 0
      apps/noir-compiler/src/css/app.css
  6. 3
      apps/noir-compiler/src/main.tsx
  7. 4
      apps/noir-compiler/src/profile.json
  8. 2
      apps/remix-ide/project.json
  9. 2
      apps/remix-ide/src/app/plugins/matomo.ts
  10. 3
      apps/remix-ide/src/remixAppManager.js
  11. 1
      apps/remix-ide/src/remixEngine.js
  12. 2
      libs/remix-ui/helper/src/lib/remix-ui-helper.ts
  13. 10
      libs/remix-ui/tabs/src/lib/remix-ui-tabs.tsx
  14. 1
      package.json
  15. 177
      yarn.lock

@ -0,0 +1,9 @@
import { NoirPluginClient } from "./services/noirPluginClient";
const plugin = new NoirPluginClient()
function App() {
return <></>
}
export default App

@ -0,0 +1,163 @@
import { dirname, isAbsolute, join } from 'path';
/**
* A file system interface that matches the node fs module.
*/
export interface FileSystem {
/** Checks if the file exists */
existsSync: (path: string) => boolean;
/** Creates a directory structure */
mkdir: (
dir: string,
opts?: {
/** Create parent directories as needed */
recursive: boolean;
},
) => Promise<void>;
/** Writes a file */
writeFile: (path: string, data: Uint8Array) => Promise<void>;
/** Reads a file */
readFile: (path: string, encoding?: 'utf-8') => Promise<Uint8Array | string>;
/** Renames a file */
rename: (oldPath: string, newPath: string) => Promise<void>;
/** Reads a directory */
readdir: (
path: string,
options?: {
/** Traverse child directories recursively */
recursive: boolean;
},
) => Promise<string[]>;
}
/**
* A file manager that writes file to a specific directory but reads globally.
*/
export class FileManager {
#fs: FileSystem;
#dataDir: string;
constructor(fs: FileSystem, dataDir: string) {
this.#fs = fs;
this.#dataDir = dataDir;
}
/**
* Returns the data directory
*/
getDataDir() {
return this.#dataDir;
}
/**
* Saves a file to the data directory.
* @param name - File to save
* @param stream - File contents
*/
public async writeFile(name: string, stream: ReadableStream<Uint8Array>): Promise<void> {
if (isAbsolute(name)) {
throw new Error("can't write absolute path");
}
const path = this.#getPath(name);
const chunks: Uint8Array[] = [];
const reader = stream.getReader();
// eslint-disable-next-line no-constant-condition
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
chunks.push(value);
}
const file = new Uint8Array(chunks.reduce((acc, chunk) => acc + chunk.length, 0));
let offset = 0;
for (const chunk of chunks) {
file.set(chunk, offset);
offset += chunk.length;
}
await this.#fs.mkdir(dirname(path), { recursive: true });
await this.#fs.writeFile(this.#getPath(path), file);
}
/**
* Reads a file from the filesystem and returns a buffer
* Saves a file to the data directory.
* @param oldName - File to save
* @param newName - File contents
*/
async moveFile(oldName: string, newName: string) {
if (isAbsolute(oldName) || isAbsolute(newName)) {
throw new Error("can't move absolute path");
}
const oldPath = this.#getPath(oldName);
const newPath = this.#getPath(newName);
await this.#fs.mkdir(dirname(newPath), { recursive: true });
await this.#fs.rename(oldPath, newPath);
}
/**
* Reads a file from the disk and returns a buffer
* @param name - File to read
*/
public async readFile(name: string): Promise<Uint8Array>;
/**
* Reads a file from the filesystem as a string
* @param name - File to read
* @param encoding - Encoding to use
*/
public async readFile(name: string, encoding: 'utf-8'): Promise<string>;
/**
* Reads a file from the filesystem
* @param name - File to read
* @param encoding - Encoding to use
*/
public async readFile(name: string, encoding?: 'utf-8'): Promise<string | Uint8Array> {
const path = this.#getPath(name);
const data = await this.#fs.readFile(path, encoding);
if (!encoding) {
return typeof data === 'string'
? new TextEncoder().encode(data) // this branch shouldn't be hit, but just in case
: new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);
}
return data;
}
/**
* Checks if a file exists and is accessible
* @param name - File to check
*/
public hasFileSync(name: string): boolean {
return this.#fs.existsSync(this.#getPath(name));
}
#getPath(name: string) {
return isAbsolute(name) ? name : join(this.#dataDir, name);
}
/**
* Reads a file from the filesystem
* @param dir - File to read
* @param options - Readdir options
*/
public async readdir(
dir: string,
options?: {
/**
* Traverse child directories recursively
*/
recursive: boolean;
},
) {
const dirPath = this.#getPath(dir);
return await this.#fs.readdir(dirPath, options);
}
}

@ -1,15 +1,31 @@
import { PluginClient } from '@remixproject/plugin'
import { createClient } from '@remixproject/plugin-webview'
import EventManager from 'events'
// @ts-ignore
import { compile_program, compile_contract, createFileManager } from '@noir-lang/noir_wasm/default'
import { NoirFS } from './remixMockFs'
import { FileManager } from './noirFileManager'
const DEFAULT_TOML_CONFIG = `[package]
name = "test"
authors = [""]
compiler_version = ">=0.18.0"
type = "bin"
[dependencies]
`
export class NoirPluginClient extends PluginClient {
public internalEvents: EventManager
public fs: NoirFS
public fm: FileManager
constructor() {
super()
this.methods = ['init']
this.methods = ['init', 'parse', 'compile']
createClient(this)
this.internalEvents = new EventManager()
this.fs = new NoirFS(this)
this.fm = new FileManager(this.fs, '/')
this.onload()
}
@ -20,4 +36,26 @@ export class NoirPluginClient extends PluginClient {
onActivation(): void {
this.internalEvents.emit('noir_activated')
}
compile(path: string): void {
this.parse(path)
}
async parse(path: string): Promise<void> {
// @ts-ignore
const tomlFileExists = await this.call('fileManager', 'exists', '/Nargo.toml')
// @ts-ignore
const srcDirExists = await this.call('fileManager', 'exists', '/src')
if (!tomlFileExists) {
await this.call('fileManager', 'writeFile', '/Nargo.toml', DEFAULT_TOML_CONFIG)
}
if (!srcDirExists) {
await this.call('fileManager', 'mkdir', '/src')
}
// @ts-ignore
const program = await compile_program(this.fm)
console.log('program: ', program)
}
}

@ -0,0 +1,38 @@
import type { FileSystem } from './noirFileManager'
import { PluginClient } from '@remixproject/plugin'
export class NoirFS implements FileSystem {
plugin: PluginClient
constructor (plugin: PluginClient) {
this.plugin = plugin
}
existsSync: (path: string) => boolean
async readdir (path: string, options?: { recursive: boolean }): Promise<string[]> {
console.log('readdir: ', path)
// @ts-ignore
return await this.plugin.call('fileManager', 'readdir', path, options)
}
async rename (oldPath: string, newPath: string): Promise<void> {
// @ts-ignore
return await this.plugin.call('fileManager', 'rename', oldPath, newPath)
}
async readFile (path: string, encoding?: 'utf-8'): Promise<Uint8Array | string> {
// @ts-ignore
return await this.plugin.call('fileManager', 'readFile', path, { encoding: null })
}
async writeFile (path: string, data: Uint8Array): Promise<void> {
// @ts-ignore
return await this.plugin.call('fileManager', 'writeFile', path, data, { encoding: null })
}
async mkdir (dir: string, opts?: { recursive: boolean }): Promise<void> {
// @ts-ignore
return await this.plugin.call('fileManager', 'mkdir', dir, opts)
}
}

@ -1,8 +1,9 @@
import React from 'react'
import { createRoot } from 'react-dom/client'
import App from './app/app'
const container = document.getElementById('root')
if (container) {
createRoot(container).render(<></>)
createRoot(container).render(<App />)
}

@ -4,11 +4,11 @@
"displayName": "Noir Compiler",
"events": [],
"version": "2.0.0",
"methods": ["init", "parse"],
"methods": ["init", "parse", "compile"],
"canActivate": [],
"url": "",
"description": "Enables support for noir circuit compilation",
"icon": "assets/img/circom-icon-bw-800b.webp",
"icon": "assets/img/noir-icon-bw-800b.webp",
"location": "sidePanel",
"documentation": "",
"repo": "https://github.com/ethereum/remix-project/tree/master/apps/noir-compiler",

@ -3,7 +3,7 @@
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/remix-ide/src",
"projectType": "application",
"implicitDependencies": ["doc-gen", "doc-viewer", "contract-verification", "vyper", "solhint", "walletconnect", "circuit-compiler", "learneth", "quick-dapp", "remix-dapp"],
"implicitDependencies": ["doc-gen", "doc-viewer", "contract-verification", "vyper", "solhint", "walletconnect", "circuit-compiler", "learneth", "quick-dapp", "remix-dapp", "noir-compiler"],
"targets": {
"build": {
"executor": "@nrwl/webpack:webpack",

@ -11,7 +11,7 @@ const profile = {
version: '1.0.0'
}
const allowedPlugins = ['LearnEth', 'etherscan', 'vyper', 'circuit-compiler', 'doc-gen', 'doc-viewer', 'solhint', 'walletconnect', 'scriptRunner', 'scriptRunnerBridge', 'dgit', 'contract-verification']
const allowedPlugins = ['LearnEth', 'etherscan', 'vyper', 'circuit-compiler', 'doc-gen', 'doc-viewer', 'solhint', 'walletconnect', 'scriptRunner', 'scriptRunnerBridge', 'dgit', 'contract-verification', 'noir-compiler']
export class Matomo extends Plugin {

@ -95,7 +95,7 @@ let requiredModules = [
// dependentModules shouldn't be manually activated (e.g hardhat is activated by remixd)
const dependentModules = ['foundry', 'hardhat', 'truffle', 'slither']
const loadLocalPlugins = ['doc-gen', 'doc-viewer', 'contract-verification', 'vyper', 'solhint', 'walletconnect', 'circuit-compiler', 'learneth', 'quick-dapp']
const loadLocalPlugins = ['doc-gen', 'doc-viewer', 'contract-verification', 'vyper', 'solhint', 'walletconnect', 'circuit-compiler', 'learneth', 'quick-dapp', 'noir-compiler']
const partnerPlugins = ['cookbookdev']
@ -151,6 +151,7 @@ export function isNative(name) {
'contract-verification',
'popupPanel',
'LearnEth',
'noir-compiler'
]
return nativePlugins.includes(name) || requiredModules.includes(name) || isInjectedProvider(name) || isVM(name) || isScriptRunner(name)
}

@ -31,6 +31,7 @@ export class RemixEngine extends Engine {
if (name === 'cookbookdev') return { queueTimeout: 60000 * 3 }
if (name === 'contentImport') return { queueTimeout: 60000 * 3 }
if (name === 'circom') return { queueTimeout: 60000 * 4 }
if (name === 'noir-compiler') return { queueTimeout: 60000 * 4 }
return { queueTimeout: 10000 }
}

@ -82,7 +82,7 @@ export const getPathIcon = (path: string) => {
? 'fad fa-brackets-curly' : path.endsWith('.cairo')
? 'small fa-kit fa-cairo' : path.endsWith('.circom')
? 'fa-kit fa-circom' : path.endsWith('.nr')
? 'fa-duotone fa-regular fa-diamond' : 'far fa-file'
? 'fa-kit fa-noir' : 'far fa-file'
}
export const isNumeric = (value) => {

@ -66,6 +66,7 @@ const tabsReducer = (state: ITabsState, action: ITabsAction) => {
return state
}
}
const PlayExtList = ['js', 'ts', 'sol', 'circom', 'vy', 'nr']
export const TabsUI = (props: TabsUIProps) => {
const [tabsState, dispatch] = useReducer(tabsReducer, initialTabsState)
@ -208,23 +209,22 @@ export const TabsUI = (props: TabsUIProps) => {
<button
data-id="play-editor"
className="btn text-success pr-0 py-0 d-flex"
disabled={!(tabsState.currentExt === 'js' || tabsState.currentExt === 'ts' || tabsState.currentExt === 'sol' || tabsState.currentExt === 'circom' || tabsState.currentExt === 'vy')}
disabled={!(PlayExtList.includes(tabsState.currentExt))}
onClick={async () => {
const path = active().substr(active().indexOf('/') + 1, active().length)
const content = await props.plugin.call('fileManager', 'readFile', path)
if (tabsState.currentExt === 'js' || tabsState.currentExt === 'ts') {
await props.plugin.call('scriptRunnerBridge', 'execute', content, path)
_paq.push(['trackEvent', 'editor', 'clickRunFromEditor', tabsState.currentExt])
} else if (tabsState.currentExt === 'sol' || tabsState.currentExt === 'yul') {
await props.plugin.call('solidity', 'compile', path)
_paq.push(['trackEvent', 'editor', 'clickRunFromEditor', tabsState.currentExt])
} else if (tabsState.currentExt === 'circom') {
await props.plugin.call('circuit-compiler', 'compile', path)
_paq.push(['trackEvent', 'editor', 'clickRunFromEditor', tabsState.currentExt])
} else if (tabsState.currentExt === 'vy') {
await props.plugin.call('vyper', 'vyperCompileCustomAction')
_paq.push(['trackEvent', 'editor', 'clickRunFromEditor', tabsState.currentExt])
} else if (tabsState.currentExt === 'nr') {
await props.plugin.call('noir-compiler', 'compile', path)
}
_paq.push(['trackEvent', 'editor', 'clickRunFromEditor', tabsState.currentExt])
}}
>
<i className="fas fa-play"></i>

@ -110,6 +110,7 @@
"@nlux/highlighter": "^2.17.1",
"@nlux/react": "^2.17.1",
"@nlux/themes": "^2.17.1",
"@noir-lang/noir_wasm": "^1.0.0-beta.0",
"@openzeppelin/contracts": "^5.0.0",
"@openzeppelin/upgrades-core": "^1.30.0",
"@openzeppelin/wizard": "0.4.0",

@ -5409,6 +5409,19 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
"@noir-lang/noir_wasm@^1.0.0-beta.0":
version "1.0.0-beta.0"
resolved "https://registry.yarnpkg.com/@noir-lang/noir_wasm/-/noir_wasm-1.0.0-beta.0.tgz#dd97a3e2fe3884c83da079d6a0de3b0f598ffb2e"
integrity sha512-rM+tjYwIvEE09Gys99EDTqx6sSByQayIa3cj4X6lyRXb9fQA936/2gQYy0qwJfx1FRFc9k3Nc1Fh4WuFtC0sZg==
dependencies:
"@noir-lang/types" "1.0.0-beta.0"
pako "^2.1.0"
"@noir-lang/types@1.0.0-beta.0":
version "1.0.0-beta.0"
resolved "https://registry.yarnpkg.com/@noir-lang/types/-/types-1.0.0-beta.0.tgz#39ee2243df9f8c701f106beaaa86e2c4894ad4d9"
integrity sha512-+LGd8GpZfGh/gir3LX/VjphHG9wWfF/YaZWOUcaxX/TJDU/Lk+THJQnaNhxNG0z2qn/LJVlCOT65L+BLZKBidw==
"@nomicfoundation/ethereumjs-block@5.0.1":
version "5.0.1"
resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.1.tgz#6f89664f55febbd723195b6d0974773d29ee133d"
@ -9619,7 +9632,7 @@ async-settle@^1.0.0:
dependencies:
async-done "^1.2.2"
async@^2.4.0, async@^2.6.2, async@^2.6.4:
async@^2.1.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==
@ -10910,6 +10923,14 @@ browser-stdout@1.3.1:
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
browserfs@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/browserfs/-/browserfs-1.4.3.tgz#92ffc6063967612daccdb8566d3fc03f521205fb"
integrity sha512-tz8HClVrzTJshcyIu8frE15cjqjcBIu15Bezxsvl/i+6f59iNCN3kznlWjz0FEb3DlnDx3gW5szxeT6D1x0s0w==
dependencies:
async "^2.1.4"
pako "^1.0.4"
browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
@ -11414,6 +11435,24 @@ call-bind@^1.0.7:
get-intrinsic "^1.2.4"
set-function-length "^1.2.1"
call-bind@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
dependencies:
call-bind-apply-helpers "^1.0.0"
es-define-property "^1.0.0"
get-intrinsic "^1.2.4"
set-function-length "^1.2.2"
call-bound@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681"
integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==
dependencies:
call-bind-apply-helpers "^1.0.1"
get-intrinsic "^1.2.6"
call-limit@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea"
@ -11883,6 +11922,11 @@ ci-info@^3.2.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.4.0.tgz#b28484fd436cbc267900364f096c9dc185efb251"
integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==
ci-info@^3.7.0:
version "3.9.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
cids@^1.0.0:
version "1.1.9"
resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f"
@ -14129,6 +14173,15 @@ dset@^3.1.2:
resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.4.tgz#f8eaf5f023f068a036d08cd07dc9ffb7d0065248"
integrity sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==
dunder-proto@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
dependencies:
call-bind-apply-helpers "^1.0.1"
es-errors "^1.3.0"
gopd "^1.2.0"
duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
version "0.1.4"
resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
@ -14591,6 +14644,11 @@ es-define-property@^1.0.0:
dependencies:
get-intrinsic "^1.2.4"
es-define-property@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
es-errors@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
@ -14615,6 +14673,13 @@ es-module-lexer@^1.2.1:
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78"
integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==
es-object-atoms@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
dependencies:
es-errors "^1.3.0"
es-set-tostringtag@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
@ -16021,6 +16086,13 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
find-yarn-workspace-root@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
dependencies:
micromatch "^4.0.2"
findup-sync@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
@ -16382,7 +16454,7 @@ fs-extra@^8.1.0:
jsonfile "^4.0.0"
universalify "^0.1.0"
fs-extra@^9.0.1:
fs-extra@^9.0.0, fs-extra@^9.0.1:
version "9.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
@ -16693,6 +16765,22 @@ get-intrinsic@^1.2.4:
has-symbols "^1.0.3"
hasown "^2.0.0"
get-intrinsic@^1.2.6:
version "1.2.6"
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5"
integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==
dependencies:
call-bind-apply-helpers "^1.0.1"
dunder-proto "^1.0.0"
es-define-property "^1.0.1"
es-errors "^1.3.0"
es-object-atoms "^1.0.0"
function-bind "^1.1.2"
gopd "^1.2.0"
has-symbols "^1.1.0"
hasown "^2.0.2"
math-intrinsics "^1.0.0"
get-iterator@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82"
@ -17178,6 +17266,11 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
gopd@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
got@^11.7.0, got@^11.8.5:
version "11.8.6"
resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a"
@ -17533,6 +17626,11 @@ has-symbols@^1.0.3:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
has-tostringtag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
@ -17607,7 +17705,7 @@ hasha@^3.0.0:
dependencies:
is-stream "^1.0.1"
hasown@^2.0.0:
hasown@^2.0.0, hasown@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
@ -19261,7 +19359,7 @@ is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2:
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
is-wsl@^2.2.0:
is-wsl@^2.1.1, is-wsl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
@ -20118,6 +20216,17 @@ json-stable-stringify@^1.0.1:
dependencies:
jsonify "~0.0.0"
json-stable-stringify@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.2.1.tgz#addb683c2b78014d0b78d704c2fcbdf0695a60e2"
integrity sha512-Lp6HbbBgosLmJbjx0pBLbgvx68FaFU1sdkmBuckmhhJ88kL13OA51CDtR2yJB50eCNMH9wRqtQNNiAqQH4YXnA==
dependencies:
call-bind "^1.0.8"
call-bound "^1.0.3"
isarray "^2.0.5"
jsonify "^0.0.1"
object-keys "^1.1.1"
json-stable-stringify@~0.0.0:
version "0.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
@ -20202,6 +20311,11 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
jsonify@^0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
jsonify@~0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
@ -20409,6 +20523,13 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
klaw-sync@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
dependencies:
graceful-fs "^4.1.11"
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
@ -21542,6 +21663,11 @@ matcher@^3.0.0:
dependencies:
escape-string-regexp "^4.0.0"
math-intrinsics@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
math-random@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c"
@ -24180,6 +24306,14 @@ onnxruntime-web@^1.18.0:
platform "^1.3.6"
protobufjs "^7.2.4"
open@^7.4.2:
version "7.4.2"
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
dependencies:
is-docker "^2.0.0"
is-wsl "^2.1.1"
open@^8.0.9, open@^8.4.0:
version "8.4.0"
resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
@ -24539,11 +24673,16 @@ package-json@^6.3.0:
registry-url "^5.0.0"
semver "^6.2.0"
pako@^1.0.10, pako@~1.0.2, pako@~1.0.5:
pako@^1.0.10, pako@^1.0.4, pako@~1.0.2, pako@~1.0.5:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
pako@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==
parallel-transform@^1.1.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
@ -24737,6 +24876,27 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
patch-package@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
dependencies:
"@yarnpkg/lockfile" "^1.1.0"
chalk "^4.1.2"
ci-info "^3.7.0"
cross-spawn "^7.0.3"
find-yarn-workspace-root "^2.0.0"
fs-extra "^9.0.0"
json-stable-stringify "^1.0.2"
klaw-sync "^6.0.0"
minimist "^1.2.6"
open "^7.4.2"
rimraf "^2.6.3"
semver "^7.5.3"
slash "^2.0.0"
tmp "^0.0.33"
yaml "^2.2.2"
path-browserify@^1.0.0, path-browserify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
@ -27806,6 +27966,11 @@ semver@^7.3.8, semver@^7.5.4:
dependencies:
lru-cache "^6.0.0"
semver@^7.5.3:
version "7.6.3"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
semver@~5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
@ -27900,7 +28065,7 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
set-function-length@^1.2.1:
set-function-length@^1.2.1, set-function-length@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==

Loading…
Cancel
Save