diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7262fa47..edfd284e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,5 @@ jobs: cache: "yarn" - name: Install dependencies run: yarn install --unsafe-perm --immutable --network-timeout 500000 - - name: Install sharp - run: yarn workspace @encrejs/core add sharp --ignore-engines && yarn workspace @encrejs/api add sharp --ignore-engines - name: Test - run: yarn workspace @encrejs/core run test && yarn workspace @encrejs/api run test + run: yarn workspace @encrejs/core run test diff --git a/packages/app/.env b/packages/app/.env index 6b673d44..16ae5fe5 100644 --- a/packages/app/.env +++ b/packages/app/.env @@ -1,2 +1,2 @@ REACT_APP_ENV=local -ELECTRON_START_URL='http://localhost:3000' \ No newline at end of file +ELECTRON_START_URL='http://localhost:8080' \ No newline at end of file diff --git a/packages/app/.gitignore b/packages/app/.gitignore index 5229cc9e..f6ebd83b 100644 --- a/packages/app/.gitignore +++ b/packages/app/.gitignore @@ -10,6 +10,7 @@ # production /build +/dist # misc .DS_Store diff --git a/packages/app/config-overrides.cjs b/packages/app/config-overrides.cjs new file mode 100644 index 00000000..79fa3328 --- /dev/null +++ b/packages/app/config-overrides.cjs @@ -0,0 +1,41 @@ +const webpack = require("webpack"); +const NodePolyfillPlugin = require("node-polyfill-webpack-plugin"); + +module.exports = function override(config) { + const fallback = config.resolve.fallback || {}; + Object.assign(fallback, { + perf_hooks: false, + child_process: false, + fs: false, + tls: false, + net: false, + path: require.resolve("path-browserify"), + util: require.resolve("util/"), + crypto: require.resolve("crypto-browserify"), + stream: require.resolve("stream-browserify"), + // "stream/web": false, + assert: require.resolve("assert"), + http: require.resolve("stream-http"), + https: require.resolve("https-browserify"), + os: require.resolve("os-browserify"), + url: require.resolve("url"), + "process/browser": require.resolve("process/browser"), + process: require.resolve("process/browser"), // Ensures process is available + }); + config.resolve.fallback = fallback; + config.plugins = (config.plugins || []).concat([ + new webpack.IgnorePlugin({ + resourceRegExp: /^node:/, // Regular expression to match all node: prefixed modules + }), + new webpack.IgnorePlugin({ + resourceRegExp: /^stream\/web/, // Regular expression to match all node: prefixed modules + }), + new NodePolyfillPlugin(), + new webpack.ProvidePlugin({ + process: "process/browser", + Buffer: ["buffer", "Buffer"], + }), + ]); + // config.resolve.extensions = [".js", ".json", ".jsx", ".mjs"]; // Make sure to include '.mjs' if you're dealing with ES Modules + return config; +}; diff --git a/packages/app/electron/electron.ts b/packages/app/electron/electron.ts index bebf8b6c..8517e8e1 100644 --- a/packages/app/electron/electron.ts +++ b/packages/app/electron/electron.ts @@ -1,4 +1,4 @@ -import { app, BrowserWindow } from "electron"; +import { app, BrowserWindow, ipcMain } from "electron"; import path from "path"; import url from "url"; @@ -26,7 +26,22 @@ function createWindow() { // ); // } - mainWindow.loadURL(process.env.ELECTRON_START_URL || "http://localhost:3000"); + mainWindow.loadURL(process.env.ELECTRON_START_URL || "http://localhost:8080"); + // mainWindow.loadFile(path.join(__dirname, "public", "index.html")); + + // ipcMain.handle("globalNodeRegistry", async (event, arg) => { + // const encre = await import("@encrejs/core"); + + // return encre.globalNodeRegistry; + // }); + + mainWindow.webContents.on("before-input-event", (_, input) => { + if (input.type === "keyDown" && input.key === "F12") { + mainWindow?.webContents.isDevToolsOpened() + ? mainWindow?.webContents.closeDevTools() + : mainWindow?.webContents.openDevTools({ mode: "left" }); + } + }); mainWindow.on("closed", () => { mainWindow = null; diff --git a/packages/app/electron/tsconfig.json b/packages/app/electron/tsconfig.json index fe4140ee..4671a7ab 100644 --- a/packages/app/electron/tsconfig.json +++ b/packages/app/electron/tsconfig.json @@ -2,12 +2,12 @@ "extends": "../tsconfig.json", "compilerOptions": { "noEmit": false, - "outDir": "../build/electron", + "outDir": "../dist/main", "rootDir": ".", - "module": "commonjs" - // "module": "ESNext", - // "moduleResolution": "node", - // "target": "ESNext" + "target": "ESNEXT", + "module": "ESNext", + "moduleResolution": "Node", + "esModuleInterop": true }, - "include": ["./**/*.ts"] + "include": ["electron.ts"] } diff --git a/packages/app/package.json b/packages/app/package.json index 2bed64d8..a55f9ede 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -5,9 +5,9 @@ "author": "Encre", "license": "MIT", "private": true, - "type": "commonjs", - "packageManager": "yarn@1.22.21", - "main": "build/electron/electron.js", + "type": "module", + "packageManager": "yarn@1.22.19", + "main": "dist/main/electron.js", "devDependencies": { "@atlaskit/eslint-plugin-design-system": "^4.11.2", "@babel/plugin-proposal-private-property-in-object": "^7.21.11", @@ -25,7 +25,8 @@ "@typescript-eslint/eslint-plugin": "^6.7.0", "@typescript-eslint/parser": "^6.7.0", "concurrently": "^8.2.1", - "electron": "^26.3.0", + "css-loader": "^7.1.2", + "electron": "^28.0.0", "eslint": "^8.49.0", "eslint-cjs-to-esm": "^2.2.0", "eslint-config-prettier": "^9.0.0", @@ -35,10 +36,16 @@ "eslint-plugin-n": "^16.1.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^6.1.1", + "esm": "^3.2.25", + "node-polyfill-webpack-plugin": "^4.0.0", "prettier": "^3.0.3", + "react-app-rewired": "^2.2.1", "react-scripts": "5.0.1", "recoil-persist": "^5.1.0", - "wait-on": "^7.0.1" + "style-loader": "^4.0.0", + "ts-loader": "^9.5.1", + "wait-on": "^7.0.1", + "webpack-cli": "^5.1.4" }, "dependencies": { "@atlaskit/css-reset": "^6.5.4", @@ -46,6 +53,7 @@ "@dnd-kit/core": "^6.0.8", "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", + "@encrejs/core": "workspace:^", "@ffmpeg/ffmpeg": "^0.12.10", "@ffmpeg/util": "^0.12.1", "@floating-ui/react": "^0.26.0", @@ -57,15 +65,14 @@ "ahooks": "^3.7.8", "clsx": "^2.0.0", "immer": "^10.0.3", - "langchain": "^0.0.149", "lodash-es": "^4.17.21", "marked": "^9.0.0", "monaco-editor": "^0.45.0", - "openai": "^4.7.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-error-boundary": "^4.0.12", "react-redux": "^8.1.2", + "react-transition-group": "^4.4.5", "recoil": "^0.7.7", "recoil-persist": "^5.1.0", "ts-dedent": "^2.2.0", @@ -77,13 +84,21 @@ "ws": "^8.14.1", "yaml": "^2.3.2" }, + "imports": { + "@encrejs/core": "./node_modules/@encrejs/core/*.js" + }, "scripts": { - "start": "react-scripts start", + "start": "react-app-rewired start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "lint": "eslint src/**/*.{ts,tsx} --quiet --fix", "lint-fix": "eslint --fix src/**/*.{ts,tsx} src/**/**/*.{ts,tsx}", + "build:react": "webpack --config webpack.config.cjs", + "build:electron": "tsc -p electron/tsconfig.json", + "start:dev": "concurrently \"yarn start:react\" \"wait-on http://localhost:8000 && yarn start:electron\"", + "start:react": "webpack serve --config webpack.config.cjs --mode development", + "start:electron": "electron .", "electron-build": "tsc -p electron/tsconfig.json", "electron-start": "yarn electron-build && electron .", "electron-dev": "concurrently \"yarn start\" \"wait-on http://localhost:3000 && yarn electron-start\"" @@ -106,4 +121,4 @@ "last 1 safari version" ] } -} +} \ No newline at end of file diff --git a/packages/app/public/index.html b/packages/app/public/index.html index 300398bd..4755de6d 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -2,19 +2,19 @@ - + - + - + + diff --git a/packages/app/src/components/NodeCanvas.tsx b/packages/app/src/components/NodeCanvas.tsx index f662ed8b..8cb5a3f0 100644 --- a/packages/app/src/components/NodeCanvas.tsx +++ b/packages/app/src/components/NodeCanvas.tsx @@ -63,7 +63,12 @@ import { draggingWireClosestPortState } from '../state/wire'; import { NodeCanvasProps, type CanvasPosition } from '../types/canvas.type'; import { type ContextMenuConfigContextData } from '../types/contextmenu.type'; import { HighlightedPort } from '../types/port.type'; -import { GraphComment, Node, NodeConnection } from '../types/studio.type'; +import { + GraphComment, + Node, + NodeConnection, + RecordId, +} from '../types/studio.type'; const styles = css` position: relative; @@ -651,7 +656,7 @@ export const NodeCanvas: FC = ({ ); const onNodeMouseOver = useStableCallback( - (event: React.MouseEvent, nodeId: string) => { + (event: React.MouseEvent, nodeId: RecordId) => { setHoveringNodeId(nodeId); }, ); diff --git a/packages/app/src/components/NodeContentBody.tsx b/packages/app/src/components/NodeContentBody.tsx index a3166403..50638eb7 100644 --- a/packages/app/src/components/NodeContentBody.tsx +++ b/packages/app/src/components/NodeContentBody.tsx @@ -3,9 +3,11 @@ import React, { FC, memo, useState } from 'react'; import styled from '@emotion/styled'; import { useQuery } from '@tanstack/react-query'; import { useAsyncEffect } from 'ahooks'; +import { useRecoilValue } from 'recoil'; import { useStableCallback } from '../hooks/useStableCallback'; import { useUIContextDescriptors } from '../hooks/useUIContextDescriptors'; +import { nodeInstanceState } from '../state/node'; import { KnownNodeContentBodyProps, NodeContentBodyProps, @@ -33,6 +35,8 @@ const NodeContentBodyWrapper = styled.div<{ export const NodeContentBody: FC = memo( ({ node }: NodeContentBodyProps) => { + const nodeInstance = useRecoilValue(nodeInstanceState(node.id)); + const { isPending, error, @@ -40,7 +44,7 @@ export const NodeContentBody: FC = memo( isFetching, } = useQuery({ queryKey: ['nodeBody', node.id], - queryFn: () => node.getBody(), + queryFn: () => nodeInstance?.getBody(), }); if (isPending) return <>; diff --git a/packages/app/src/components/NodeGraphBuilder.tsx b/packages/app/src/components/NodeGraphBuilder.tsx index bb6ec49e..66129786 100644 --- a/packages/app/src/components/NodeGraphBuilder.tsx +++ b/packages/app/src/components/NodeGraphBuilder.tsx @@ -11,7 +11,7 @@ import { commentsState, selectingCommentIdsState } from '../state/comment'; import { nodesState, selectingNodeIdsState } from '../state/node'; import { connectionsState } from '../state/nodeconnection'; import { selectingWireIdsState } from '../state/wire'; -import { GraphComment, Node } from '../types/studio.type'; +import { GraphComment, Node, RecordId } from '../types/studio.type'; export const NodeGraphBuilder: FC = () => { const [nodes, setNodes] = useRecoilState(nodesState); @@ -33,7 +33,7 @@ export const NodeGraphBuilder: FC = () => { const onNodesSelect = useStableCallback( (newNodes: Node[], isMulti?: boolean) => { if (isMulti) { - setSelectingNodeIds((nodeIds: string[]) => [ + setSelectingNodeIds((nodeIds: RecordId[]) => [ ...new Set([...nodeIds, ...newNodes.map((n) => n.id)]), ]); } else { diff --git a/packages/app/src/components/WireLayer.tsx b/packages/app/src/components/WireLayer.tsx index 6f6bf329..a4904bed 100644 --- a/packages/app/src/components/WireLayer.tsx +++ b/packages/app/src/components/WireLayer.tsx @@ -24,7 +24,7 @@ import { isSelectingMultiWiresState, selectingWireIdsState, } from '../state/wire'; -import { NodeInputPortDef } from '../types/studio.type'; +import { NodeInputPortDef, RecordId } from '../types/studio.type'; import { WireLayerProps } from '../types/wire.type'; const WireLayerContainer = styled.svg` @@ -188,7 +188,7 @@ export const WireLayer: FC = ({ })[0] as HTMLElement; const nodeId = closestHoverEl!.parentElement!.dataset.nodeid as - | string + | RecordId | undefined; const portName = closestHoverEl!.parentElement!.dataset.portname as | string diff --git a/packages/app/src/hooks/useAudioRecorder.ts b/packages/app/src/hooks/useAudioRecorder.ts index ffbf6d9c..82afcaf7 100644 --- a/packages/app/src/hooks/useAudioRecorder.ts +++ b/packages/app/src/hooks/useAudioRecorder.ts @@ -69,7 +69,6 @@ export function useAudioRecorder( }); }) .catch((err: DOMException) => { - console.log(err.name, err.message, err.cause); onNotAllowedOrFound?.(err); }); }, [ diff --git a/packages/app/src/hooks/useChangeNodeVisualContent.ts b/packages/app/src/hooks/useChangeNodeVisualContent.ts index a838c3cd..51c05ad5 100644 --- a/packages/app/src/hooks/useChangeNodeVisualContent.ts +++ b/packages/app/src/hooks/useChangeNodeVisualContent.ts @@ -6,6 +6,7 @@ import { nodeVisualContentDataMapState, updateNodeVisualContentDataState, } from '../state/node'; +import { RecordId } from '../types/studio.type'; export function useChangeNodeVisualContent() { const nodeVisualContentDataMap = useRecoilValue( @@ -16,7 +17,7 @@ export function useChangeNodeVisualContent() { ); const updateNodeColor = useCallback( - (nodeId: string, color: string) => { + (nodeId: RecordId, color: string) => { const nodeVisualContentData = nodeVisualContentDataMap[nodeId]; updateNodeVisualContentData({ diff --git a/packages/app/src/hooks/useContextMenu.ts b/packages/app/src/hooks/useContextMenu.ts index d636f590..65c982af 100644 --- a/packages/app/src/hooks/useContextMenu.ts +++ b/packages/app/src/hooks/useContextMenu.ts @@ -6,6 +6,7 @@ import { showContextMenuState } from '../state/contextmenu'; import { selectingNodeIdsState } from '../state/node'; import { selectingWireIdsState } from '../state/wire'; import { ContextMenuData, ContextMenu } from '../types/contextmenu.type'; +import { RecordId } from '../types/studio.type'; /** * `useContextMenu` hook @@ -128,8 +129,8 @@ export function useContextMenu() { setContextMenu({ x: event.clientX, y: event.clientY, data }); if (data?.type.startsWith('node-')) { - const nodeId: string = data.element.dataset.nodeid as string; - setSelectingNodeIds((nodeIds: string[]) => [ + const nodeId: RecordId = data.element.dataset.nodeid as RecordId; + setSelectingNodeIds((nodeIds: RecordId[]) => [ ...new Set([...nodeIds, nodeId]), ]); } else if (data?.type.startsWith('wire-')) { diff --git a/packages/app/src/hooks/useContextMenuConfigContexts.ts b/packages/app/src/hooks/useContextMenuConfigContexts.ts index c3200761..42b9a4c3 100644 --- a/packages/app/src/hooks/useContextMenuConfigContexts.ts +++ b/packages/app/src/hooks/useContextMenuConfigContexts.ts @@ -14,6 +14,7 @@ import { useContextMenuMoveToNodeConfigContexts } from './useContextMenuMoveToNo import { useHotKeyDisplay } from './useHotKeyDisplay'; import { ContextMenuConfigContexts } from '../types/contextmenu.type'; import { HOTKEY } from '../types/hotkey.type'; +import { RecordId } from '../types/studio.type'; import { typeOf } from '../utils/safeTypes'; export function useContextMenuConfigContexts(): ContextMenuConfigContexts { @@ -132,7 +133,7 @@ export function useContextMenuConfigContexts(): ContextMenuConfigContexts { }, node: { contextType: typeOf<{ - nodeId: string; + nodeId: RecordId; nodeType: string; nodeSubType: string; registerArgs?: Record; diff --git a/packages/app/src/hooks/useContextMenuMoveToNodeConfigContexts.ts b/packages/app/src/hooks/useContextMenuMoveToNodeConfigContexts.ts index 6ce9fee1..21d67304 100644 --- a/packages/app/src/hooks/useContextMenuMoveToNodeConfigContexts.ts +++ b/packages/app/src/hooks/useContextMenuMoveToNodeConfigContexts.ts @@ -7,7 +7,7 @@ export function useContextMenuMoveToNodeConfigContexts() { return nodes.map((node) => ({ id: `move-to-node:${node.id}`, - name: node.title, + name: node.title ?? (node.data._id[node.data._id.length - 1] as string), data: { nodeId: node.id, }, diff --git a/packages/app/src/hooks/useContextMenuNodeGraphHandler.ts b/packages/app/src/hooks/useContextMenuNodeGraphHandler.ts index a3b6dc3f..04778caa 100644 --- a/packages/app/src/hooks/useContextMenuNodeGraphHandler.ts +++ b/packages/app/src/hooks/useContextMenuNodeGraphHandler.ts @@ -20,6 +20,7 @@ import { showContextMenuState } from '../state/contextmenu'; import { collapsingNodeIdsState, nodeMapState, + nodeRegistryState, nodesState, pinningNodeIdsState, selectingNodeIdsState, @@ -28,15 +29,14 @@ import { connectionsState } from '../state/nodeconnection'; import { removeWireDataState, selectingWireIdsState } from '../state/wire'; import { ContextMenuConfigContextData } from '../types/contextmenu.type'; import { + // globalNodeRegistry, GraphComment, Node, NodeBody, NodeConnection, NodeInputPortDef, NodeOutputPortDef, - ProcessContext, - ProcessInputMap, - ProcessOutputMap, + RecordId, } from '../types/studio.type'; import { WireData, WireType } from '../types/wire.type'; import { fakeId } from '../utils/fakeId'; @@ -53,6 +53,7 @@ export function useContextMenuNodeGraphHandler() { const [selectingCommentIds, setSelectingCommentIds] = useRecoilState( selectingCommentIdsState, ); + const nodeRegistry = useRecoilValue(nodeRegistryState); const nodeMap = useRecoilValue(nodeMapState); const [selectingWireIds, setSelectingWireIds] = useRecoilState( selectingWireIdsState, @@ -109,7 +110,7 @@ export function useContextMenuNodeGraphHandler() { }, ); - const addCommentAsNodeGroup = useStableCallback((...nodeIds: string[]) => { + const addCommentAsNodeGroup = useStableCallback((...nodeIds: RecordId[]) => { const boundingBoxOfCopiedNodes = nodeIds.reduce( (acc, nId) => { const node = nodeMap[nId]; @@ -169,109 +170,22 @@ export function useContextMenuNodeGraphHandler() { position: { x: number; y: number }, registerArgs?: Record, ) => { - // TODO: change this to globalNodeRegistry.create() from core - const newNodeId: string = fakeId(17); - const newNode: Node = { - id: newNodeId, - type: nodeType, - subType: nodeSubType, - registerArgs: registerArgs, - visualInfo: { + if (nodeRegistry) { + const newNode: Node = nodeRegistry.createDynamic( + nodeType, + nodeSubType, + registerArgs, + ); + newNode.visualInfo = { + ...newNode.visualInfo, position: { - x: position.x, - y: position.y, - zIndex: 999, + ...newNode.visualInfo.position, + ...position, }, - size: { - width: 300, - height: 500, - }, - }, - title: 'new node', - name: 'new-node', - aliases: {}, - secrets: {}, - kwargs: {}, - inputs: { - input1: ['string'], - }, - outputs: { - output1: ['string'], - }, - setKwarg: function (key: string, value: unknown): void { - throw new Error('Function not implemented.'); - }, - getBody: async (): Promise => { - return [ - { - type: 'code', - text: `attr1: "1" -attr2: [2, 3] -attr3: true -attr4: [ - { - "sub1": 1, - "sub2": "2" - }, - { - "sub3": 3, - "sub4": "4" - } -] -attr6: `, - language: 'encre-code', - keywords: [ - 'attr1', - 'attr2', - 'attr3', - 'attr4', - 'attr5', - 'attr6', - 'attr7', - 'attr8', - ], - isHoldingValues: true, - }, - ]; - }, - getInputPortDefs: function ( - cs: NodeConnection[], - ns: Record, - ): NodeInputPortDef[] { - return [ - { - nodeId: newNodeId, - name: 'input1', - type: ['string'], - }, - ]; - }, - getOutputPortDefs: function ( - cs: NodeConnection[], - ns: Record, - ): NodeOutputPortDef[] { - return [ - { - nodeId: newNodeId, - name: 'output1', - type: ['string'], - }, - ]; - }, - validateInputs: function ( - inputs?: ProcessInputMap | undefined, - ): boolean { - throw new Error('Function not implemented.'); - }, - process: function ( - inputs: ProcessInputMap, - context: ProcessContext, - ): Promise { - throw new Error('Function not implemented.'); - }, - }; + }; - changeNodes?.([...nodes, newNode]); + changeNodes?.([...nodes, newNode]); + } }, ); @@ -329,7 +243,7 @@ attr6: `, setConnections?.(newConnections); }); - const moveToNode = useStableCallback((nodeId: string) => { + const moveToNode = useStableCallback((nodeId: RecordId) => { const node = nodeMap[nodeId]; setCanvasPosition({ @@ -482,7 +396,7 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; copyNodes(nodeId); @@ -493,7 +407,7 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; duplicateNodes(nodeId); @@ -509,10 +423,10 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] @@ -534,10 +448,10 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] @@ -559,7 +473,7 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; const maxZIndex: number = nodes.reduce((maxVal, node) => { @@ -572,7 +486,7 @@ attr6: `, return Math.max(maxVal, zIndex); }, 0); - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] @@ -601,7 +515,7 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; const minZIndex: number = nodes.reduce((minVal, node) => { @@ -614,7 +528,7 @@ attr6: `, return Math.min(minVal, zIndex); }, 0); - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] @@ -643,10 +557,10 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] @@ -660,7 +574,7 @@ attr6: `, } const { nodeId } = data as { - nodeId: string; + nodeId: RecordId; }; moveToNode(nodeId); @@ -671,14 +585,14 @@ attr6: `, } const { nodeId } = context.data as { - nodeId: string; + nodeId: RecordId; }; const { colorType } = data as { colorType: string; }; - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] diff --git a/packages/app/src/hooks/useCopyNodes.ts b/packages/app/src/hooks/useCopyNodes.ts index 82be3673..22b274a9 100644 --- a/packages/app/src/hooks/useCopyNodes.ts +++ b/packages/app/src/hooks/useCopyNodes.ts @@ -3,6 +3,7 @@ import { useRecoilValue, useSetRecoilState } from 'recoil'; import { clipboardState } from '../state/clipboard'; import { nodeMapState, selectingNodeIdsState } from '../state/node'; import { connectionsState } from '../state/nodeconnection'; +import { RecordId } from '../types/studio.type'; import { isNotNull } from '../utils/safeTypes'; export function useCopyNodes() { @@ -11,7 +12,7 @@ export function useCopyNodes() { const connections = useRecoilValue(connectionsState); const setClipboard = useSetRecoilState(clipboardState); - return (additionalNodeId?: string) => { + return (additionalNodeId?: RecordId) => { const nodeIds = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, additionalNodeId])] diff --git a/packages/app/src/hooks/useDraggingNode.ts b/packages/app/src/hooks/useDraggingNode.ts index 081dc521..ced2692f 100644 --- a/packages/app/src/hooks/useDraggingNode.ts +++ b/packages/app/src/hooks/useDraggingNode.ts @@ -16,7 +16,7 @@ import { nodesState, selectingNodeIdsState, } from '../state/node'; -import { Node } from '../types/studio.type'; +import { Node, RecordId } from '../types/studio.type'; import { isNotNull } from '../utils/safeTypes'; export function useDraggingNode(onNodesChange: (ns: Node[]) => void) { @@ -32,9 +32,9 @@ export function useDraggingNode(onNodesChange: (ns: Node[]) => void) { const onNodeStartDrag = useCallback( (e: DragStartEvent) => { - const draggingNodeId: string = e.active.id as string; + const draggingNodeId: RecordId = e.active.id as RecordId; - const nodeIdsToDrag: string[] = + const nodeIdsToDrag: RecordId[] = isDraggingMultipleNodes && selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, draggingNodeId])] : [draggingNodeId]; diff --git a/packages/app/src/hooks/useDraggingWire.ts b/packages/app/src/hooks/useDraggingWire.ts index 7cf98b99..db5558ba 100644 --- a/packages/app/src/hooks/useDraggingWire.ts +++ b/packages/app/src/hooks/useDraggingWire.ts @@ -17,6 +17,7 @@ import { NodeConnection, NodeInputPortDef, NodeOutputPortDef, + RecordId, } from '../types/studio.type'; import { DefaultWireOptions, WireData } from '../types/wire.type'; @@ -75,7 +76,7 @@ export const useDraggingWire = ( const onWireStartDrag = useCallback( ( e: React.MouseEvent, - fromNodeId: string, + fromNodeId: RecordId, fromPortName: string, isInput?: boolean, ) => { diff --git a/packages/app/src/hooks/useDuplicateNodes.ts b/packages/app/src/hooks/useDuplicateNodes.ts index a5d1b684..205a97ab 100644 --- a/packages/app/src/hooks/useDuplicateNodes.ts +++ b/packages/app/src/hooks/useDuplicateNodes.ts @@ -3,10 +3,12 @@ import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'; import { nodeMapState, nodesState, selectingNodeIdsState } from '../state/node'; import { connectionsState } from '../state/nodeconnection'; import { + RecordId, Node, NodeConnection, NodeInputPortDef, NodeOutputPortDef, + // getRecordId, } from '../types/studio.type'; import { fakeId } from '../utils/fakeId'; import { isNotNull } from '../utils/safeTypes'; @@ -20,16 +22,16 @@ export function useDuplicateNodes() { selectingNodeIdsState, ); - return (nodeId: string) => { + return (nodeId: RecordId) => { // const node = nodeMap[nodeId]; - const nodeIds: string[] = ( + const nodeIds: RecordId[] = ( selectingNodeIds.length > 0 ? [...new Set([...selectingNodeIds, nodeId])] : [nodeId] ).filter(isNotNull); - const oldNewNodeIdMap: Record = {}; + const oldNewNodeIdMap: Record = {}; const newNodes = nodeIds .map((nId) => { const node = nodeMap[nId]; @@ -38,55 +40,11 @@ export function useDuplicateNodes() { return; } - // TODO: change this to globalNodeRegistry.create() from core - const inputDefs: NodeInputPortDef[] = node.getInputPortDefs([], {}); - const outputDefs: NodeOutputPortDef[] = node.getOutputPortDefs([], {}); - const newNodeId: string = fakeId(17); + const newNodeId: RecordId = fakeId(17) as RecordId; oldNewNodeIdMap[nId] = newNodeId; - const newNode: Node = { - id: newNodeId, - type: node.type, - subType: node.subType, - registerArgs: node.registerArgs, - visualInfo: { - ...node.visualInfo, - position: { - ...node.visualInfo.position, - x: node.visualInfo.position.x + 100, - y: node.visualInfo.position.y + 100, - }, - }, - title: node.title, - name: node.name, - aliases: node.aliases, - secrets: node.secrets, - kwargs: node.kwargs, - inputs: node.inputs, - outputs: node.outputs, - setKwarg: node.setKwarg, - getBody: node.getBody, - getInputPortDefs: function ( - cs: NodeConnection[], - ns: Record, - ): NodeInputPortDef[] { - return inputDefs.map((def) => ({ - ...def, - nodeId: newNodeId, - })); - }, - getOutputPortDefs: function ( - cs: NodeConnection[], - ns: Record, - ): NodeOutputPortDef[] { - return outputDefs.map((def) => ({ - ...def, - nodeId: newNodeId, - })); - }, - validateInputs: node.validateInputs, - process: node.process, - }; + const newNode: Node = node; + newNode.id = newNodeId; return newNode; }) diff --git a/packages/app/src/hooks/useNodeIO.ts b/packages/app/src/hooks/useNodeIO.ts index 8c050125..7c80a90e 100644 --- a/packages/app/src/hooks/useNodeIO.ts +++ b/packages/app/src/hooks/useNodeIO.ts @@ -1,7 +1,8 @@ import { useRecoilValue } from 'recoil'; import { ioDefFromNodeIdState } from '../state/node'; +import { RecordId } from '../types/studio.type'; -export function useNodeIO(nodeId: string | undefined) { +export function useNodeIO(nodeId: RecordId | undefined) { return useRecoilValue(ioDefFromNodeIdState(nodeId)); } diff --git a/packages/app/src/hooks/usePasteNodes.ts b/packages/app/src/hooks/usePasteNodes.ts index 478b8eb8..1ac9b4df 100644 --- a/packages/app/src/hooks/usePasteNodes.ts +++ b/packages/app/src/hooks/usePasteNodes.ts @@ -6,6 +6,8 @@ import { clipboardState } from '../state/clipboard'; import { nodesState, selectingNodeIdsState } from '../state/node'; import { connectionsState } from '../state/nodeconnection'; import { + RecordId, + // getRecordId, NodeConnection, NodeInputPortDef, NodeOutputPortDef, @@ -60,12 +62,11 @@ export function usePasteNodes() { }, ); - const oldNewNodeIdMap: Record = {}; + const oldNewNodeIdMap: Record = {}; const newNodes = clipboard.nodes.map((node) => { return produce(node, (draft) => { - // TODO: change this to generate a new random RecordId from core - const newNodeId = fakeId(17); + const newNodeId = fakeId(17) as RecordId; oldNewNodeIdMap[node.id] = newNodeId; draft.id = newNodeId; @@ -78,29 +79,6 @@ export function usePasteNodes() { draft.visualInfo.position.y = canvasPosition.y + (node.visualInfo.position.y - boundingBoxOfCopiedNodes.minY); - - // TODO: we don't need this when the core is ready - draft.getBody = node.getBody; - const inputDefs: NodeInputPortDef[] = node.getInputPortDefs([], {}); - const outputDefs: NodeOutputPortDef[] = node.getOutputPortDefs([], {}); - draft.getInputPortDefs = function ( - cs: NodeConnection[], - ns: Record, - ): NodeInputPortDef[] { - return inputDefs.map((def) => ({ - ...def, - nodeId: newNodeId, - })); - } as any; - draft.getOutputPortDefs = function ( - cs: NodeConnection[], - ns: Record, - ): NodeOutputPortDef[] { - return outputDefs.map((def) => ({ - ...def, - nodeId: newNodeId, - })); - } as any; }); }); diff --git a/packages/app/src/state/graph.ts b/packages/app/src/state/graph.ts index 6d65adf2..886aad1b 100644 --- a/packages/app/src/state/graph.ts +++ b/packages/app/src/state/graph.ts @@ -10,12 +10,10 @@ import myMp3 from '../assets/sunflower.mp3'; import myPng from '../assets/timetable.png'; import { NodeGraph } from '../types/graph.type'; import { + // globalNodeRegistry, Node, NodeInputPortDef, NodeOutputPortDef, - ProcessInputMap, - ProcessContext, - ProcessOutputMap, NodeBody, NodeConnection, } from '../types/studio.type'; @@ -662,351 +660,7 @@ export const graphState = atom({ // throw new Error("Function not implemented."); // }, // }, - { - id: 'vyopwbzpnsanaan', - type: 'condition', - subType: 'if', - title: 'If', - name: 'If', - aliases: {}, - secrets: {}, - kwargs: {}, - visualInfo: { - position: { - x: 500, - y: 100, - zIndex: 1, - }, - size: { - width: 300, - height: 500, - }, - }, - inputs: { - A: ['unknown'], - B: ['unknown'], - C: ['unknown'], - }, - outputs: { - D: ['unknown'], - }, - setKwarg: function (key: string, value: unknown): void { - throw new Error('Function not implemented.'); - }, - getInputPortDefs: function ( - connections: NodeConnection[], - nodes: Record, - ): NodeInputPortDef[] { - return [ - { - nodeId: 'dnaofnaodbfuaol', - name: 'A', - type: ['unknown'], - }, - { - nodeId: 'dnaofnaodbfuaol', - name: 'B', - type: ['unknown'], - }, - { - nodeId: 'dnaofnaodbfuaol', - name: 'C', - type: ['unknown'], - }, - ]; - }, - getOutputPortDefs: ( - connections: NodeConnection[], - nodes: Record, - ): NodeOutputPortDef[] => { - return [ - { - nodeId: 'dnaofnaodbfuaol', - name: 'D', - type: ['unknown'], - }, - { - nodeId: 'dnaofnaodbfuaol', - name: 'E', - type: ['unknown'], - }, - ]; - }, - getBody: async (): Promise => { - return [ - { - type: 'condition', - target: 'D', - sources: ['A', 'B', 'C'], - conditions: [ - { - type: 'if', - description: - '(A (exists AND is equal to 2) OR length greater than 2) AND B contains "Peter"', - metadata: { - _type: 'rule-collection', - collection: { - '0': { - _type: 'rule-collection', - collection: { - A: { - _ruleType: 'string', - _type: 'rule', - description: - '(exists AND is equal to {{right.value}}) OR length greater than {{right.value}}', - func: `function anonymous(input,variables -) { -return (async function(input, variables) { - - const leftFunc = async (input, variables) => { - -return (async function(input, variables) { - - const leftFunc = async (input) => { - -return (async function(input) { - return input !== undefined; - }).apply(this, [input]) - -}; - const rightFunc = async (input, variables) => { - -return (async function(input, variables) { - return input === variables.value; - }).apply(this, [input, variables]) - -}; - - const result1 = await leftFunc(input).catch( - (e) => false - ); - const result2 = await rightFunc(input, variables.right).catch( - (e) => false - ); - - const results = await Promise.all([result1, result2]); - - return results.every((result) => result === true); - -}).apply(this, [input, variables]) - -}; - const rightFunc = async (input, variables) => { - -return (async function(input, variables) { - return input.length > variables.value; - }).apply(this, [input, variables]) - -}; - - const result1 = await leftFunc(input, variables.left).catch( - (e) => false - ); - const result2 = await rightFunc(input, variables.right).catch( - (e) => false - ); - - const results = await Promise.all([result1, result2]); - - return results.some((result) => result === true); - -}).apply(this, [input, variables]) -}`, - metadata: { - conjunction: 'or', - left: { - _ruleType: 'string', - _type: 'rule', - description: - 'exists AND is equal to {{right.value}}', - func: `function anonymous(input,variables -) { -return (async function(input, variables) { - - const leftFunc = async (input) => { - -return (async function(input) { - return input !== undefined; - }).apply(this, [input]) - -}; - const rightFunc = async (input, variables) => { - -return (async function(input, variables) { - return input === variables.value; - }).apply(this, [input, variables]) - -}; - - const result1 = await leftFunc(input).catch( - (e) => false - ); - const result2 = await rightFunc(input, variables.right).catch( - (e) => false - ); - - const results = await Promise.all([result1, result2]); - - return results.every((result) => result === true); - -}).apply(this, [input, variables]) -}`, - metadata: { - conjunction: 'and', - left: { - _ruleType: 'string', - _type: 'rule', - description: 'exists', - func: `function anonymous(input -) { -return (async function(input) { - return input !== undefined; - }).apply(this, [input]) -}`, - metadata: undefined, - variables: undefined, - }, - right: { - _ruleType: 'string', - _type: 'rule', - description: 'is equal to {{value}}', - func: `function anonymous(input,variables -) { -return (async function(input, variables) { - return input === variables.value; - }).apply(this, [input, variables]) -}`, - metadata: undefined, - variables: { - value: 'John', - }, - }, - }, - variables: { - left: {}, - right: { - value: 'John', - }, - }, - }, - right: { - _ruleType: 'string', - _type: 'rule', - description: 'length greater than {{value}}', - func: `function anonymous(input,variables -) { -return (async function(input, variables) { - return input.length > variables.value; - }).apply(this, [input, variables]) -}`, - metadata: undefined, - variables: { - value: 2, - }, - }, - }, - variables: { - left: { - left: {}, - right: { - value: 'John', - }, - }, - right: { - value: 2, - }, - }, - }, - B: { - _ruleType: 'array', - _type: 'rule', - description: 'contains {{value}}', - func: `function anonymous(input,variables -) { -return (async function(input, variables) { - return input.includes(variables.value); - }).apply(this, [input, variables]) -}`, - metadata: undefined, - variables: { - value: 'Peter', - }, - }, - }, - conjunction: 'and', - description: - '({{{A}}} (exists AND is equal to {{right.value}}) OR length greater than {{right.value}}) AND {{{B}}} contains {{value}}', - }, - '1': { - _type: 'rule-collection', - collection: { - C: { - _ruleType: 'string', - _type: 'rule', - description: 'length greater than {{value}}', - func: `function anonymous(input,variables -) { -return (async function(input, variables) { - return input.length > variables.value; - }).apply(this, [input, variables]) -}`, - metadata: undefined, - variables: { - value: 2, - }, - }, - }, - conjunction: 'and', - description: - '{{{C}}} length greater than {{value}}', - }, - }, - conjunction: 'or', - description: - '(<0>({{{A}}} (exists AND is equal to {{right.value}}) OR length greater than {{right.value}}) AND {{{B}}} contains {{value}}) OR <1>{{{C}}} length greater than {{value}}', - }, - }, - { - type: 'else-if', - description: "A is not string AND B is 'Bag'", - }, - { - type: 'otherwise', - }, - ], - }, - { - type: 'context', - text: [ - { - type: 'plain', - text: '7', - }, - ], - metadata: [ - { - type: 'code', - text: 'sub1: 2', - language: 'encre-code', - keywords: ['sub1'], - isHoldingValues: false, - }, - ], - }, - ]; - }, - validateInputs: function ( - inputs?: ProcessInputMap | undefined, - ): boolean { - throw new Error('Function not implemented.'); - }, - process: function ( - inputs: ProcessInputMap, - context: ProcessContext, - ): Promise { - throw new Error('Function not implemented.'); - }, - }, + // globalNodeRegistry.createDynamic('prompt', 'string'), ], connections: [], comments: [ diff --git a/packages/app/src/state/node.ts b/packages/app/src/state/node.ts index fea37ae8..04f34feb 100644 --- a/packages/app/src/state/node.ts +++ b/packages/app/src/state/node.ts @@ -1,19 +1,44 @@ -import { DefaultValue, atom, selector, selectorFamily } from 'recoil'; +import type { NodeImpl } from '@encrejs/core/build/studio/nodes/base'; +import { mapValues, keys, map } from "lodash-es"; +import { DefaultValue, atom, selector, selectorFamily } from "recoil"; -import { graphState } from './graph'; -import { connectionMapState } from './nodeconnection'; -import { NodeGraph } from '../types/graph.type'; -import { NodeVisualContentData } from '../types/node.type'; +import { graphState } from "./graph"; +import { connectionMapState } from "./nodeconnection"; +import { NodeGraph } from "../types/graph.type"; +import { NodeVisualContentData } from "../types/node.type"; import { + // globalNodeRegistry, + RecordId, CommentVisualInfo, GraphComment, Node, NodeConnection, NodeInputPortDef, NodeOutputPortDef, -} from '../types/studio.type'; + NodeRegistration, +} from "../types/studio.type"; -export const nodesState = selector({ +export const nodeRegistryState = atom({ + key: "nodeRegistryState", + default: selectorFamily({ + key: "nodeRegistryState/default", + get: () => async () => { + // const { ipcRenderer } = window.require('electron'); + // try { + // const globalNodeRegistry = + // await ipcRenderer.invoke('globalNodeRegistry'); + // return globalNodeRegistry; + // } catch (e) { + // console.log(`failed to get globalNodeRegistry: ${e}`); + // return undefined; + // } + + return undefined; + }, + })(undefined), +}); + +export const nodesState = selector({ key: 'nodes', get: ({ get }) => { return get(graphState).nodes; @@ -28,7 +53,7 @@ export const nodesState = selector({ }, }); -export const nodeMapState = selector({ +export const nodeMapState = selector>({ key: 'nodeMapState', get: ({ get }) => { return get(nodesState).reduce( @@ -36,29 +61,78 @@ export const nodeMapState = selector({ acc[node.id] = node; return acc; }, - {} as Record, + {} as Record, ); }, }); +export const nodeInstanceState = selectorFamily< + NodeImpl | undefined, + RecordId +>({ + key: "nodeInstanceState", + get: (nodeId) => async () => { + // const { ipcRenderer } = window.require("electron"); + + // try { + // const globalNodeRegistry = await ipcRenderer.invoke("globalNodeRegistry"); + + // return globalNodeRegistry.createDynamicImpl(nodeId) as NodeImpl; + // } catch (e) { + // return undefined; + // } + + return undefined; + }, +}); + +export const nodeInstanceMapState = selector< + Record | undefined> +>({ + key: "nodeInstanceMapState", + get: ({ get }) => { + const nodeMap = get(nodeMapState); + + return mapValues(nodeMap, (node) => undefined); + + // return Object.fromEntries( + // await Promise.all( + // Object.entries(nodeMap).map(async ([k, v]) => { + // try { + // const globalNodeRegistry = + // await ipcRenderer.invoke('globalNodeRegistry'); + + // return [ + // k, + // globalNodeRegistry.createDynamicImpl(v) as NodeImpl, + // ]; + // } catch (e) { + // return [k, undefined]; + // } + // }), + // ), + // ); + }, +}); + export const nodeVisualContentDataMapState = atom< - Record + Record >({ key: 'nodeVisualContentDataMapState', default: {}, }); -export const selectingNodeIdsState = atom({ +export const selectingNodeIdsState = atom({ key: 'selectingNodeIdsState', default: [], }); -export const editingNodeIdState = atom({ +export const editingNodeIdState = atom({ key: 'selectingNodeIdState', default: undefined, }); -export const hoveringNodeIdState = atom({ +export const hoveringNodeIdState = atom({ key: 'hoveringNodeIdState', default: undefined, }); @@ -73,27 +147,27 @@ export const draggingNodesInCommentsState = atom({ default: [], }); -export const pinningNodeIdsState = atom({ +export const pinningNodeIdsState = atom({ key: 'pinningNodeIdsState', default: [], }); -export const collapsingNodeIdsState = atom({ +export const collapsingNodeIdsState = atom({ key: 'collapsingNodeIdsState', default: [], }); -export const isPinnedState = selectorFamily({ +export const isPinnedState = selectorFamily({ key: 'isPinnedState', get: - (nodeId: string) => + (nodeId: RecordId) => ({ get }) => get(pinningNodeIdsState).includes(nodeId), }); export const nodeIODefState = selector< Record< - string, + RecordId, { inputDefs: NodeInputPortDef[]; outputDefs: NodeOutputPortDef[]; @@ -102,21 +176,19 @@ export const nodeIODefState = selector< >({ key: 'nodeIODefState', get: ({ get }) => { - // TODO: instead of getting it from the node, get it from nodeImpl const nodeMap = get(nodeMapState); + // const nodeInstanceMap = get(nodeInstanceMapState); const connectionMap = get(connectionMapState); const getIOFromNode = (node: Node) => { const connections: NodeConnection[] = connectionMap[node.id] ?? []; - const inputDefs: NodeInputPortDef[] = node?.getInputPortDefs( - connections, - nodeMap, - ); - const outputDefs: NodeOutputPortDef[] = node?.getOutputPortDefs( - connections, - nodeMap, - ); + const nodeInstance = get(nodeInstanceState(node.id)); + + const inputDefs: NodeInputPortDef[] = + nodeInstance?.getInputPortDefs(connections, nodeMap) ?? []; + const outputDefs: NodeOutputPortDef[] = + nodeInstance?.getOutputPortDefs(connections, nodeMap) ?? []; return inputDefs && outputDefs ? { @@ -130,18 +202,18 @@ export const nodeIODefState = selector< Object.entries(nodeMap).map(([nodeId, node]) => [ nodeId, getIOFromNode(node), - ]), + ]) ); }, }); export const nodeFromNodeIdState = selectorFamily< Node | undefined, - string | undefined + RecordId | undefined >({ key: 'nodeFromNodeIdState', get: - (nodeId: string | undefined) => + (nodeId: RecordId | undefined) => ({ get }) => { return nodeId ? get(nodeMapState)[nodeId] : undefined; }, @@ -149,11 +221,11 @@ export const nodeFromNodeIdState = selectorFamily< export const nodeVisualContentDataFromNodeIdState = selectorFamily< NodeVisualContentData | undefined, - string | undefined + RecordId | undefined >({ key: 'nodeVisualContentDataFromNodeIdState', get: - (nodeId: string | undefined) => + (nodeId: RecordId | undefined) => ({ get }) => { return nodeId ? get(nodeVisualContentDataMapState)[nodeId] : undefined; }, @@ -164,11 +236,11 @@ export const ioDefFromNodeIdState = selectorFamily< inputDefs: NodeInputPortDef[]; outputDefs: NodeOutputPortDef[]; }, - string | undefined + RecordId | undefined >({ key: 'ioDefFromNodeIdState', get: - (nodeId: string | undefined) => + (nodeId: RecordId | undefined) => ({ get }) => { return nodeId ? get(nodeIODefState)[nodeId]! @@ -211,7 +283,7 @@ export const nodesToDragInCommentsState = selectorFamily< }); export const updateNodeVisualContentDataState = selector<{ - id: string; + id: RecordId; nodeVisualContentData: NodeVisualContentData; }>({ key: 'updateNodeVisualContentDataState', @@ -222,7 +294,7 @@ export const updateNodeVisualContentDataState = selector<{ }, set: ({ set, get }, newVal) => { if (newVal instanceof DefaultValue) return; - const id: string = newVal.id; + const id: RecordId = newVal.id; const nodeVisualContentData: NodeVisualContentData = newVal.nodeVisualContentData; @@ -232,7 +304,7 @@ export const updateNodeVisualContentDataState = selector<{ }, }); -export const removeNodeVisualContentDataState = selector({ +export const removeNodeVisualContentDataState = selector({ key: 'removeNodeVisualContentDataState', get: ({ get }) => { throw new Error( @@ -242,7 +314,7 @@ export const removeNodeVisualContentDataState = selector({ set: ({ set, get }, newVal) => { if (newVal instanceof DefaultValue) return; - const id: string = newVal; + const id: RecordId = newVal; const currMap = get(nodeVisualContentDataMapState); if (currMap[id]) { diff --git a/packages/app/src/types/node.type.ts b/packages/app/src/types/node.type.ts index 1c3f2f09..e76c7630 100644 --- a/packages/app/src/types/node.type.ts +++ b/packages/app/src/types/node.type.ts @@ -1,7 +1,7 @@ import { HTMLAttributes } from 'react'; import { ColorCache } from './canvas.type'; -import { Node, NodeConnection } from './studio.type'; +import { RecordId, Node, NodeConnection } from './studio.type'; import { DraggingWire } from './wire.type'; export type DraggableNodeProps = { @@ -21,15 +21,15 @@ export type DraggableNodeProps = { onNodeSelect?: (node: Node) => void; onNodeMouseOver?: ( event: React.MouseEvent, - nodeId: string, + nodeId: RecordId, ) => void; onNodeMouseOut?: ( event: React.MouseEvent, - nodeId: string, + nodeId: RecordId, ) => void; onWireStartDrag?: ( event: React.MouseEvent, - fromNodeId: string, + fromNodeId: RecordId, fromPortName: string, isInput?: boolean, ) => void; @@ -57,15 +57,15 @@ export type VisualNodeProps = { onNodeSelect?: () => void; onNodeMouseOver?: ( event: React.MouseEvent, - nodeId: string, + nodeId: RecordId, ) => void; onNodeMouseOut?: ( event: React.MouseEvent, - nodeId: string, + nodeId: RecordId, ) => void; onWireStartDrag?: ( event: React.MouseEvent, - fromNodeId: string, + fromNodeId: RecordId, fromPortName: string, isInput?: boolean, ) => void; @@ -92,7 +92,7 @@ export type VisualNodeContentProps = { onNodeSizeChange?: (width?: number, height?: number) => void; onWireStartDrag?: ( event: React.MouseEvent, - fromNodeId: string, + fromNodeId: RecordId, fromPortName: string, isInput?: boolean, ) => void; diff --git a/packages/app/src/types/nodeconnection.type.ts b/packages/app/src/types/nodeconnection.type.ts index 717681da..56c0c9c2 100644 --- a/packages/app/src/types/nodeconnection.type.ts +++ b/packages/app/src/types/nodeconnection.type.ts @@ -1,5 +1,7 @@ +import type { RecordId } from './studio.type'; + export type PartialConnection = { - nodeId: string; + nodeId: RecordId; portName: string; toX: number; toY: number; diff --git a/packages/app/src/types/port.type.ts b/packages/app/src/types/port.type.ts index 8c32de21..030cb965 100644 --- a/packages/app/src/types/port.type.ts +++ b/packages/app/src/types/port.type.ts @@ -6,18 +6,19 @@ import { NodeConnection, NodeInputPortDef, NodeOutputPortDef, + RecordId, } from './studio.type'; import { DraggingWire } from './wire.type'; export type DraggingWireClosestPort = { - nodeId: string; + nodeId: RecordId; portName: string; input: NodeInputPortDef; portEl: HTMLElement; }; export type HighlightedPort = { - nodeId: string; + nodeId: RecordId; portName: string; definition: NodeInputPortDef | NodeOutputPortDef; isInput?: boolean; @@ -26,7 +27,7 @@ export type HighlightedPort = { export type PortPositons = Record; export type PortProps = { - nodeId: string; + nodeId: RecordId; title: string; definition: NodeInputPortDef | NodeOutputPortDef; attributeListeners?: HTMLAttributes; @@ -54,7 +55,7 @@ export type NodePortGroupProps = { isCollapsed?: boolean; onWireStartDrag?: ( event: React.MouseEvent, - fromNodeId: string, + fromNodeId: RecordId, fromPortName: string, isInput?: boolean, ) => void; diff --git a/packages/app/src/types/studio.type.ts b/packages/app/src/types/studio.type.ts index e140f593..ec7b1b95 100644 --- a/packages/app/src/types/studio.type.ts +++ b/packages/app/src/types/studio.type.ts @@ -1,21 +1,33 @@ -import type { Opaque } from 'type-fest'; - -export type BuiltInNodeType = - | 'loader' - | 'message' - | 'prompt' - | 'splitter' - | 'llm' - | 'chatlm'; - -export type BuiltInNodeTypePairs = { - loader: string[]; - message: string[]; - prompt: string[]; - splitter: string[]; - llm: string[]; - chatlm: string[]; -}; +import type { + RecordId as IRecordId, + // SerializableNode as INode, + // NodeConnection as INodeConnection, + // NodeInputPortDef as INodeInputPortDef, + // NodeOutputPortDef as INodeOutputPortDef, + // NodePortFields as INodePortFields, + DataType as IDataType, + ChatMessageData, + NodeRegistration as INodeRegistration, + BuiltInNodeTypes as IBuiltInNodeTypes, + BuiltInNodeTypePairs as IBuiltInNodeTypePairs, +} from "@encrejs/core"; +// import { globalNodeRegistry as coreGlobalNodeRegistry } from '@encrejs/core/studio/registration/nodes'; +import { extMap as coreExtMap } from "@encrejs/core/studio/ui"; +import { getRecordId as coreGetRecordId } from "@encrejs/core/utils/nanoid"; + +// export const globalNodeRegistry = coreGlobalNodeRegistry; + +export type RecordId = IRecordId; + +export function getRecordId() { + return coreGetRecordId(); +} + +export type NodeRegistration = INodeRegistration; + +export type BuiltInNodeTypes = IBuiltInNodeTypes; + +export type BuiltInNodeTypePairs = IBuiltInNodeTypePairs; export type VisualInfo = { position: { @@ -29,59 +41,61 @@ export type VisualInfo = { }; content?: { color?: - | 'red' - | 'orange' - | 'gold' - | 'yellow' - | 'palmera' - | 'green' - | 'meadow' - | 'cyan' - | 'blue' - | 'cornflower' - | 'purple' - | 'pink' - | 'razzmatazz' - | 'silver' - | 'dark'; + | "red" + | "orange" + | "gold" + | "yellow" + | "palmera" + | "green" + | "meadow" + | "cyan" + | "blue" + | "cornflower" + | "purple" + | "pink" + | "razzmatazz" + | "silver" + | "dark"; }; }; export type CommentVisualInfo = VisualInfo & { content?: { - horitontal?: 'center' | 'start' | 'end' | 'justify'; - vertical?: 'center' | 'start' | 'end'; + horitontal?: "center" | "start" | "end" | "justify"; + vertical?: "center" | "start" | "end"; color?: - | 'red' - | 'orange' - | 'gold' - | 'yellow' - | 'palmera' - | 'green' - | 'meadow' - | 'cyan' - | 'blue' - | 'cornflower' - | 'purple' - | 'pink' - | 'razzmatazz' - | 'silver' - | 'dark'; + | "red" + | "orange" + | "gold" + | "yellow" + | "palmera" + | "green" + | "meadow" + | "cyan" + | "blue" + | "cornflower" + | "purple" + | "pink" + | "razzmatazz" + | "silver" + | "dark"; }; }; export type NodeInputPortDef = { - nodeId: string; + nodeId: RecordId; name: string; type: DataType | Readonly; + required?: boolean; data?: ValueOf | Readonly[]>; default?: unknown; }; export type NodeOutputPortDef = { - nodeId: string; + nodeId: RecordId; name: string; type: DataType | Readonly; + required?: boolean; data?: ValueOf | Readonly[]>; default?: unknown; }; @@ -101,17 +115,17 @@ export interface BaseComment { } export interface PlainTextComment extends BaseComment { - type: 'plain'; + type: "plain"; text: string; } export interface MarkdownComment extends BaseComment { - type: 'markdown'; + type: "markdown"; text: string; } export interface CodeComment extends BaseComment { - type: 'code'; + type: "code"; text: string; language?: string; @@ -120,114 +134,102 @@ export interface CodeComment extends BaseComment { export type GraphComment = PlainTextComment | MarkdownComment | CodeComment; -// This is mocking NodeImpl +export type NodePortSizes = { + [key: string]: number; +}; + export interface Node { - id: string; - type: string; - subType: string; - registerArgs?: Record; - title: string; - name: string; - aliases: { - [key: string]: string; + id: RecordId; + visualInfo: { + position: { + x: number; + y: number; + zIndex?: number; + }; + size: { + width: number; + height: number; + }; + content?: { + color?: + | "red" + | "orange" + | "gold" + | "yellow" + | "palmera" + | "green" + | "meadow" + | "cyan" + | "blue" + | "cornflower" + | "purple" + | "pink" + | "razzmatazz" + | "silver" + | "dark"; + }; }; - secrets: { - [key: string]: string; - }; - kwargs: DataFields; inputs: NodePortFields | undefined; outputs: NodePortFields | undefined; - visualInfo: VisualInfo; - - setKwarg: (key: string, value: unknown) => void; - getInputPortDefs: ( - connections: NodeConnection[], - nodes: Record, - ) => NodeInputPortDef[]; - getOutputPortDefs: ( - connections: NodeConnection[], - nodes: Record, - ) => NodeOutputPortDef[]; - validateInputs: (inputs?: ProcessInputMap) => boolean; - getBody: () => Promise; - process: ( - inputs: ProcessInputMap, - context: ProcessContext, - ) => Promise; + title?: string | undefined; + description?: string | undefined; + outputSizes?: NodePortSizes | undefined; + + type: string; + subType: string; + registerArgs?: Record; + runtime?: number; + memory?: number; + data: any; tags?: Array; - state?: 'init' | 'pending' | 'success' | 'failed'; + state?: "init" | "pending" | "success" | "failed"; isDebug?: boolean; } export type NodeConnection = { - fromNodeId: string; - + fromNodeId: RecordId; fromPortName: string; - - toNodeId: string; - + toNodeId: RecordId; toPortName: string; }; -export function getNodeTypes() { - return ['loader', 'message', 'prompt', 'splitter', 'llm', 'chatlm']; +export interface Context> { + pageContent: string; + metadata: Metadata; } -export interface Guardrail { - id: string; - name: string; - detail: string; - type: string; - dataType: DataType | Readonly; +export type MessageRole = + | "human" + | "assistant" + | "system" + | "function" + | "general"; + +export type ContentLike = + | string + | { + [key: string]: unknown; + }; + +export interface BaseMessage { + content: ContentLike | ContentLike[]; + name?: string; + additionalKwargs?: { + [key: string]: unknown; + }; } -/** - * Creates a tuple ensuring at least one instance of each specified string literal type. - * - * `exhaustiveTuple` is a higher-order function for compile-time validation of tuples to contain at least - * one of each specified string literal in type `T`. Useful in cases requiring a complete set of specified literals. - * - * @see https://stackoverflow.com/questions/55265679/enforce-that-an-array-is-exhaustive-over-a-union-type/55266531#55266531 - * - * @example - * ``` - * type Fruit = "apple" | "banana" | "cherry"; - * - * const missingFruit = exhaustiveTuple()("apple", "banana"); - * // error, argument of type '"apple"' is not assignable to parameter of type '"cherry"' - * - * const extraFruit = exhaustiveTuple()("apple", "banana", "cherry", "orange"); - * // error, "orange" is not assignable to a parameter of type 'Fruit' - * - * const fruitTuple = exhaustiveTuple()("apple", "banana", "cherry"); - * // fruitTuple is now ensured to contain each literal in `Fruit` at least once. - * ``` - */ -export const exhaustiveTuple = - () => - >( - ...x: [T] extends any - ? Exclude extends never - ? L - : Exclude[] - : never - ) => - x; - -type AtLeastOne = [T, ...T[]]; - -export type DataDef = { - type: T; - value: RuntimeType; -}; +export type BaseMessageLike = BaseMessage | [MessageRole, string] | string; -export type StringData = DataDef<'string', string>; -export type NumberData = DataDef<'number', number>; -export type BooleanData = DataDef<'boolean', boolean>; -export type UnknownData = DataDef<'unknown', unknown>; -export type JSONObjectData = DataDef<'object', Record>; -export type BlobData = DataDef<'blob', Blob>; +export type StringData = DataDef<"string", string>; +export type NumberData = DataDef<"number", number>; +export type BooleanData = DataDef<"boolean", boolean>; +export type UnknownData = DataDef<"unknown", unknown>; +export type JSONObjectData = DataDef<"object", Record>; +export type BlobData = DataDef<"blob", Blob>; +export type ContextData = DataDef<"context", Context>; +// export type ChatMessageData = DataDef<'chat-message', BaseMessageLike>; export type ScalarData = | StringData @@ -235,149 +237,70 @@ export type ScalarData = | BooleanData | UnknownData | JSONObjectData - | BlobData; -export type ScalarDataType = ScalarData['type']; + | BlobData + | ContextData + | ChatMessageData; + +export type DataDef = { + type: T; + value: RuntimeType; +}; export type ArrayOf = DataDef< - `${T['type']}[]`, - T['value'][] + `${T["type"]}[]`, + T["value"][] >; + export type ArrayData = { - [P in ScalarData['type']]: ArrayOf>; -}[ScalarData['type']]; -export type ArrayDataType = ArrayData['type']; + [P in ScalarData["type"]]: ArrayOf< + Extract< + ScalarData, + { + type: P; + } + > + >; +}[ScalarData["type"]]; export type Data = ScalarData | ArrayData; -export type DataType = Data['type']; - -export type ValueOf = Extract; - -export type DataFields = { - [key: string]: Data | undefined; -}; -export const scalarDefaults: { - [P in ScalarDataType]: Extract['value']; -} = { - string: '', - number: 0, - boolean: false, - unknown: undefined, - object: {}, - blob: new Blob(['']), -}; - -export const scalarTypes = exhaustiveTuple()( - 'string', - 'number', - 'boolean', - 'unknown', - 'object', - 'blob', -); - -export const dataTypes = exhaustiveTuple()( - 'string', - 'string[]', - 'number', - 'number[]', - 'boolean', - 'boolean[]', - 'unknown', - 'unknown[]', - 'object', - 'object[]', - 'blob', - 'blob[]', -); - -export function isArrayData(data: Data | undefined): data is ArrayData { - if (!data) return false; - - return ( - isArrayDataType(data.type) || - ((data.type === 'unknown' || data.type === 'object') && - Array.isArray(data.value)) - ); -} -export function isArrayDataType(type: DataType): type is ArrayDataType { - return type.endsWith('[]'); -} - -export function isScalarData(data: Data | undefined): data is ScalarData { - if (!data) return false; - - return isScalarDataType(data.type); -} -export function isScalarDataType(type: DataType): type is ScalarDataType { - return !isArrayDataType(type); -} - -export function getScalarTypeOf(type: DataType): ScalarDataType { - if (isArrayDataType(type)) { - return toScalarFromArray(type); +export type ValueOf = Extract< + Data, + { + type: T; } +>; - return type; -} -export function toScalarFromArray(arrayType: ArrayDataType): ScalarDataType { - return arrayType.slice(0, -2) as ScalarDataType; -} -export function toArrayFromScalar(scalarType: ScalarDataType): ArrayDataType { - return `${scalarType}[]` as ArrayDataType; -} - -/** - * Turns a {@link ArrayData} into an array of {@link ScalarData}, or puts a - * {@link ScalarData} into an array. - * - * @param data can be either {@link ArrayData} or {@link ScalarData} - * @returns an array of {@link ScalarData} - */ -export function arrayizeData(data: Data): ScalarData[] { - if (!isArrayData(data)) { - return [data]; - } - - const type = data.type; - const unwrappedType = isArrayDataType(type) ? toScalarFromArray(type) : type; - - return (data.value as unknown[]).map((v) => ({ - type: unwrappedType, - value: v, - })) as ScalarData[]; -} - -export function getDefaultValue( - type: T, -): (Data & { type: T })['value'] { - if (isArrayDataType(type)) { - return [] as any; - } +export type DataType = IDataType; - return scalarDefaults[getScalarTypeOf(type)] as any; +export interface Guardrail { + id: string; + name: string; + detail: string; + type: string; + dataType: DataType | Readonly; } export type NodeBody = string | UIContext | UIContext[] | undefined; export type BaseUIContext = { fontSize?: number; - fontFamily?: 'monospace' | 'sans-serif'; + fontFamily?: "monospace" | "sans-serif"; isReadOnly?: boolean; }; export type PlainUIContext = { - type: 'plain'; + type: "plain"; text: string; }; export type MarkdownUIContext = { - type: 'markdown'; + type: "markdown"; text: string; }; export type CodeUIContext = { - type: 'code'; + type: "code"; text: string; language?: string; @@ -388,20 +311,20 @@ export type CodeUIContext = { }; export type BlobUIContext = { - type: 'blob'; + type: "blob"; blob: Array; size: number; blobType: string; }; export type ContextUIContext = { - type: 'context'; + type: "context"; text: Array; metadata: Array; }; export type MessageUIContext = { - type: 'message'; + type: "message"; content: Array; kwargs: Array; role: string; @@ -410,38 +333,38 @@ export type MessageUIContext = { }; export type ImageUIContext = { - type: 'image'; - mimeType: 'image/png' | 'image/jpeg' | 'image/gif' | 'image/svg+xml'; + type: "image"; + mimeType: "image/png" | "image/jpeg" | "image/gif" | "image/svg+xml"; data: Uint8Array; }; export type AudioUIContext = { - type: 'audio'; - mimeType: 'audio/mp3' | 'audio/wav' | 'audio/ogg'; + type: "audio"; + mimeType: "audio/mp3" | "audio/wav" | "audio/ogg"; data: Uint8Array; }; export type FileUIContext = { - type: 'file'; + type: "file"; mimeType: - | 'text/plain' - | 'text/html' - | 'text/javascript' - | 'text/css' - | 'application/json' - | 'application/pdf' - | 'application/xml'; + | "text/plain" + | "text/html" + | "text/javascript" + | "text/css" + | "application/json" + | "application/pdf" + | "application/xml"; data: Uint8Array; }; export type SerializedRuleMetadata = { left: SerializedRule; right?: SerializedRule; - conjunction: 'and' | 'or'; + conjunction: "and" | "or"; }; export type SerializedRule = { - _type: 'rule'; + _type: "rule"; _ruleType: string; description: string; func: string; @@ -450,28 +373,28 @@ export type SerializedRule = { }; export type SerializedRuleCollection = { - _type: 'rule-collection'; + _type: "rule-collection"; description: string; collection: Record; - conjunction: 'and' | 'or'; + conjunction: "and" | "or"; }; export type IfConditionUI = { - type: 'if'; + type: "if"; description?: string; metadata?: SerializedRuleCollection; source?: string; }; export type ElseIfConditionUI = { - type: 'else-if'; + type: "else-if"; description?: string; metadata?: SerializedRuleCollection; source?: string; }; export type OtherwiseConditionUI = { - type: 'otherwise'; + type: "otherwise"; source?: string; }; @@ -481,7 +404,7 @@ export type ConditionUI = | OtherwiseConditionUI; export type ConditionUIContext = { - type: 'condition'; + type: "condition"; target: string; sources: string[]; conditions: ConditionUI[]; @@ -501,100 +424,9 @@ export type UIContext = BaseUIContext & | ConditionUIContext ); -export const UIDataTypesMap: Record = { - string: 'code', - number: 'code', - boolean: 'code', - object: 'code', - unknown: 'code', - blob: 'blob', - 'string[]': 'code', - 'number[]': 'code', - 'boolean[]': 'code', - 'object[]': 'code', - 'unknown[]': 'code', - 'blob[]': 'blob', -}; - export const extMap: Record< - | ImageUIContext['mimeType'] - | AudioUIContext['mimeType'] - | FileUIContext['mimeType'], + | ImageUIContext["mimeType"] + | AudioUIContext["mimeType"] + | FileUIContext["mimeType"], string -> = { - 'text/plain': 'bin', - 'text/html': 'html', - 'text/javascript': 'js', - 'text/css': 'css', - 'application/json': 'json', - 'application/pdf': 'pdf', - 'application/xml': 'xml', - 'image/png': 'png', - 'image/jpeg': 'jpeg', - 'image/gif': 'gif', - 'image/svg+xml': 'svg', - 'audio/mp3': 'mp3', - 'audio/ogg': 'ogg', - 'audio/wav': 'wav', -}; - -export type ProcessId = Opaque; - -export type ProcessInputMap = Record; -export type ProcessOutputMap = Record; - -export type ProcessDataMap = ProcessInputMap | ProcessOutputMap; - -export type ProcessContext = { - processId: ProcessId; - - signal: AbortSignal; - - contextData: Record; - - graphInputs: Record; - - graphOutputs: Record; -}; - -/** - * Validate whether the ports are full-filled with the process data. - */ -export function validateProcessDataFromPorts( - processData: ProcessDataMap, - portFields: NodePortFields, -): boolean { - const keywords: string[] = Object.keys(portFields); - - return keywords.every((keyword: string): boolean => { - // Return false if there is no such a port keyword in the process data. - if (!Object.prototype.hasOwnProperty.call(processData, keyword)) { - return false; - } - - const processValue: Data | undefined = processData[keyword]; - const portType: DataType | Readonly = portFields[keyword]; - - // Check if this keyword can support multiple types of data - if (Array.isArray(portType)) { - // Return true if the process data value and the type are both empty. - if (!processValue) { - return ( - portType.length === 0 || - portType.some((t: DataType) => t === 'unknown') - ); - } - - // Return true if there is some type in the type array that can be valid. - // TODO: think about if coerceTypeOptional can apply here - return portType.some((t: DataType) => processValue['type'] === t); - } - - // Return false if the process data value is empty and the type is non-empty. - if (!processValue) return portType === 'unknown'; - - // Validate the types - // TODO: think about if coerceTypeOptional can apply here - return processValue['type'] === portType; - }); -} +> = coreExtMap; diff --git a/packages/app/src/types/wire.type.ts b/packages/app/src/types/wire.type.ts index d5f0da12..ffb08389 100644 --- a/packages/app/src/types/wire.type.ts +++ b/packages/app/src/types/wire.type.ts @@ -2,14 +2,14 @@ import { CSSProperties } from 'react'; import { PartialConnection } from './nodeconnection.type'; import { HighlightedPort, PortPositons } from './port.type'; -import { Data, DataType, Node, NodeConnection, ValueOf } from './studio.type'; +import { RecordId, DataType, Node, NodeConnection } from './studio.type'; export type Wire = { - fromNodeId: string; + fromNodeId: RecordId; fromPortName: string; fromPortIsInput: boolean; - toNodeId?: string; + toNodeId?: RecordId; toPortName?: string; }; @@ -27,7 +27,7 @@ export type WireLayerProps = { portPositions: PortPositons; draggingWire?: Wire; isDraggingFromNode?: boolean; - highlightedNodeIds?: string[]; + highlightedNodeIds?: RecordId[]; highlightedPort?: HighlightedPort; // selectingWireIds?: string[]; onWiresSelect?: (wireId: string[], isMulti?: boolean) => void; diff --git a/packages/app/src/utils/monacoEditor.ts b/packages/app/src/utils/monacoEditor.ts index a075e233..a4b0cea8 100644 --- a/packages/app/src/utils/monacoEditor.ts +++ b/packages/app/src/utils/monacoEditor.ts @@ -1,7 +1,6 @@ +import { dataTypes } from '@encrejs/core/studio/data'; import * as monaco from 'monaco-editor'; -import { dataTypes } from '../types/studio.type'; - export { monaco }; monaco.languages.register({ id: 'encre-code' }); diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index 85ee69c4..512e72b2 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -13,20 +13,20 @@ "allowJs": true /* Allow javascript files to be compiled. */, "skipLibCheck": true, // "checkJs": true /* Report errors in .js files. */, - "jsx": "react-jsx" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, + "jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */, // "declaration": true /* Generates corresponding '.d.ts' file. */, // "declarationMap": true /* Generates a sourcemap for each corresponding '.d.ts' file. */, // "sourceMap": true /* Generates corresponding '.map' file. */, // "outFile": "./dist/bundle.js", /* Concatenate and emit output to single file. */ - // "outDir": "./build" /* Redirect output structure to the directory. */, + "outDir": "./dist/renderer" /* Redirect output structure to the directory. */, // "rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, // "composite": true, /* Enable project compilation */ // "removeComments": true /* Do not emit comments to output. */, - "noEmit": true /* Do not emit outputs. */, + "noEmit": false /* Do not emit outputs. */, // "importHelpers": true, /* Import emit helpers from 'tslib'. */ // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ "isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */, - // "noEmitOnError": true, + "noEmitOnError": false, /* Strict Type-Checking Options */ "strict": true /* Enable all strict type-checking options. */, @@ -48,7 +48,7 @@ /* Module Resolution Options */ "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, "resolveJsonModule": true, - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + "baseUrl": "." /* Base directory to resolve non-absolute module names. */, // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ // "typeRoots": [], /* List of folders to include type definitions from. */ @@ -69,6 +69,6 @@ "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */, "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */ }, - "include": ["src"], + "include": ["src/**/*.tsx", "src/**/*.ts"], "exclude": ["node_modules", "build"] } diff --git a/packages/app/webpack.config.cjs b/packages/app/webpack.config.cjs new file mode 100644 index 00000000..a3a09560 --- /dev/null +++ b/packages/app/webpack.config.cjs @@ -0,0 +1,40 @@ +const path = require("path"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); + +module.exports = { + mode: "development", + entry: "./src/index.tsx", + output: { + path: path.resolve(__dirname, "dist", "renderer"), + filename: "bundle.js", + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: [ + { + loader: "ts-loader", + options: { + configFile: "tsconfig.json", + }, + }, + ], + exclude: /node_modules/, + }, + { + test: /\.css$/, // This rule will apply to any files ending in .css + use: ["style-loader", "css-loader"], // Use these loaders for .css files + }, + ], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: "./public/index.html", // Path to your original index.html + }), + ], + resolve: { + extensions: [".tsx", ".ts", ".js"], + }, + target: "electron-renderer", +}; diff --git a/packages/core/package.json b/packages/core/package.json index 5142860c..1d59c970 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -21,8 +21,8 @@ "scripts": { "release": "yarn lint-fix && release-it --only-version --config .release-it.json", "build": "yarn clean && yarn build:esm && yarn build:cjs && node scripts/create-entrypoints.js && node scripts/check-tree-shaking.js", - "build:esm": "tsc --outDir build/ --composite false && rimraf build/tests/ build/**/tests/", - "build:cjs": "tsc --outDir build-cjs/ --composite false -p tsconfig.cjs.json && node scripts/move-cjs-to-build.js && rimraf build-cjs build/tests/ build/**/tests/", + "build:esm": "tsc --outDir build/ --composite false && rimraf build/tests build/**/tests/", + "build:cjs": "tsc --outDir build-cjs/ --composite false -p tsconfig.cjs.json && node scripts/move-cjs-to-build.js && rimraf build-cjs build/tests build/**/tests", "build:watch": "node scripts/create-entrypoints.js && tsc --outDir build/ --watch", "clean": "rimraf build/ && node scripts/create-entrypoints.js pre", "lint": "eslint src/*.ts src/**/*.ts && yarn lint:dpdm", @@ -82,7 +82,6 @@ "pdf-parse": "^1.1.1", "redis": "^4.6.10", "release-it": "^17.3.0", - "sharp": "^0.33.2", "tiktoken": "^1.0.10", "ts-node": "^10.9.1", "ts-pattern": "^5.0.6", @@ -113,9 +112,6 @@ "redis": { "optional": true }, - "sharp": { - "optional": true - }, "tiktoken": { "optional": true } diff --git a/packages/core/src/events/inference/chat/llms/openai/chat.ts b/packages/core/src/events/inference/chat/llms/openai/chat.ts index ccfc552a..34bf1fae 100644 --- a/packages/core/src/events/inference/chat/llms/openai/chat.ts +++ b/packages/core/src/events/inference/chat/llms/openai/chat.ts @@ -4,7 +4,6 @@ import { ClientOptions as OpenAIClientOptions, } from 'openai'; import type { RequestOptions as OpenAIClientRequestOptions } from 'openai/core'; -import sharp from 'sharp'; import { type SecretFields, @@ -959,11 +958,13 @@ export class OpenAIChat< if (part.image_url.url.startsWith('data:')) { // base64 try { + const sizeOf = await import('image-size'); + let b64: string = part.image_url.url; b64 = b64.split(';base64,').pop()!; const image = Buffer.from(b64, 'base64'); - const metadata = await sharp(image).metadata(); + const metadata = sizeOf.imageSize(image); if (!metadata.width || !metadata.height) { throw new Error( @@ -979,13 +980,15 @@ export class OpenAIChat< } else { // image url try { + const sizeOf = await import('image-size'); + const res = await axios({ url: part.image_url.url, responseType: 'arraybuffer', }); const image = Buffer.from(res.data, 'base64'); - const metadata = await sharp(image).metadata(); + const metadata = sizeOf.imageSize(image); if (!metadata.width || !metadata.height) { throw new Error( `image from base64 has invalid width and height: ${metadata.width}, ${metadata.height}` diff --git a/packages/node/package.json b/packages/node/package.json index c040fe40..ab05e5aa 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -67,13 +67,7 @@ "emittery": "^1.0.3", "nanoid": "^5.0.2", "p-queue": "^7.4.1", - "release-it": "^17.3.0", - "sharp": "^0.33.4" - }, - "peerDependenciesMeta": { - "sharp": { - "optional": true - } + "release-it": "^17.3.0" }, "exports": { "./api": { diff --git a/yarn.lock b/yarn.lock index fd531f74..9464cb87 100644 --- a/yarn.lock +++ b/yarn.lock @@ -178,20 +178,6 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@anthropic-ai/sdk@^0.6.2": - version "0.6.2" - resolved "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.6.2.tgz" - integrity sha512-fB9PUj9RFT+XjkL+E9Ol864ZIJi+1P8WnbHspN3N3/GK2uSzjd0cbVIKTGgf4v3N8MwaQu+UWnU7C4BG/fap/g== - dependencies: - "@types/node" "^18.11.18" - "@types/node-fetch" "^2.6.4" - abort-controller "^3.0.0" - agentkeepalive "^4.2.1" - digest-fetch "^1.3.0" - form-data-encoder "1.7.2" - formdata-node "^4.3.2" - node-fetch "^2.6.7" - "@apideck/better-ajv-errors@^0.3.1": version "0.3.6" resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" @@ -1957,7 +1943,7 @@ resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@discoveryjs/json-ext@0.5.7": +"@discoveryjs/json-ext@0.5.7", "@discoveryjs/json-ext@^0.5.0": version "0.5.7" resolved "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -2561,24 +2547,15 @@ resolved "https://registry.yarnpkg.com/@encrejs/core/-/core-0.0.3.tgz#58646216115c49082a081f4a87a341e64f83ef0e" integrity sha512-HVzW1Ta/fXw/19B3dCoDCAAhBoq83TL1ZLEk9GFO1eepNUMJHIOsS3j5KF9zheEhxLChcBHC9j2DnENg37Yh7A== dependencies: - "@google/generative-ai" "^0.1.3" "@types/object-hash" "^3.0.5" - "@types/pdf-parse" "^1.1.2" camelcase "^8.0.0" - chromadb "^1.8.1" decamelize "^6.0.0" emittery "^1.0.3" - js-tiktoken "^1.0.7" - ml-distance "^4.0.1" nanoid "^5.0.2" object-hash "^3.0.0" - openai "^4.29.2" p-queue "^7.4.1" - pdf-parse "^1.1.1" redis "^4.6.10" release-it "^17.3.0" - sharp "^0.33.2" - tiktoken "^1.0.10" ts-node "^10.9.1" ts-pattern "^5.0.6" typescript "^5.2.2" @@ -2824,232 +2801,6 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== -"@img/sharp-darwin-arm64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz#0a52a82c2169112794dac2c71bfba9e90f7c5bd1" - integrity sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w== - optionalDependencies: - "@img/sharp-libvips-darwin-arm64" "1.0.1" - -"@img/sharp-darwin-arm64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz#a1cf4a7febece334f16e0328b9689f05797d7aec" - integrity sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA== - optionalDependencies: - "@img/sharp-libvips-darwin-arm64" "1.0.2" - -"@img/sharp-darwin-x64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.2.tgz#982e26bb9d38a81f75915c4032539aed621d1c21" - integrity sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg== - optionalDependencies: - "@img/sharp-libvips-darwin-x64" "1.0.1" - -"@img/sharp-darwin-x64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz#f77be2d7c3609d3e77cd337b199a772e07b87bd2" - integrity sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw== - optionalDependencies: - "@img/sharp-libvips-darwin-x64" "1.0.2" - -"@img/sharp-libvips-darwin-arm64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.1.tgz#81e83ffc2c497b3100e2f253766490f8fad479cd" - integrity sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw== - -"@img/sharp-libvips-darwin-arm64@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz#b69f49fecbe9572378675769b189410721b0fa53" - integrity sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA== - -"@img/sharp-libvips-darwin-x64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.1.tgz#fc1fcd9d78a178819eefe2c1a1662067a83ab1d6" - integrity sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog== - -"@img/sharp-libvips-darwin-x64@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz#5665da7360d8e5ed7bee314491c8fe736b6a3c39" - integrity sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw== - -"@img/sharp-libvips-linux-arm64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.1.tgz#26eb8c556a9b0db95f343fc444abc3effb67ebcf" - integrity sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA== - -"@img/sharp-libvips-linux-arm64@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz#8a05e5e9e9b760ff46561e32f19bd5e035fa881c" - integrity sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw== - -"@img/sharp-libvips-linux-arm@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.1.tgz#2a377b959ff7dd6528deee486c25461296a4fa8b" - integrity sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ== - -"@img/sharp-libvips-linux-arm@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz#0fd33b9bf3221948ce0ca7a5a725942626577a03" - integrity sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw== - -"@img/sharp-libvips-linux-s390x@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.1.tgz#af28ac9ba929204467ecdf843330d791e9421e10" - integrity sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ== - -"@img/sharp-libvips-linux-s390x@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz#4b89150ec91b256ee2cbb5bb125321bf029a4770" - integrity sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog== - -"@img/sharp-libvips-linux-x64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.1.tgz#4273d182aa51912e655e1214ea47983d7c1f7f8d" - integrity sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw== - -"@img/sharp-libvips-linux-x64@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz#947ccc22ca5bc8c8cfe921b39a5fdaebc5e39f3f" - integrity sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ== - -"@img/sharp-libvips-linuxmusl-arm64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.1.tgz#d150c92151cea2e8d120ad168b9c358d09c77ce8" - integrity sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg== - -"@img/sharp-libvips-linuxmusl-arm64@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz#821d58ce774f0f8bed065b69913a62f65d512f2f" - integrity sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ== - -"@img/sharp-libvips-linuxmusl-x64@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.1.tgz#e297c1a4252c670d93b0f9e51fca40a7a5b6acfd" - integrity sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw== - -"@img/sharp-libvips-linuxmusl-x64@1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz#4309474bd8b728a61af0b3b4fad0c476b5f3ccbe" - integrity sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw== - -"@img/sharp-linux-arm64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.2.tgz#af3409f801a9bee1d11d0c7e971dcd6180f80022" - integrity sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew== - optionalDependencies: - "@img/sharp-libvips-linux-arm64" "1.0.1" - -"@img/sharp-linux-arm64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz#bd390113e256487041411b988ded13a26cfc5f95" - integrity sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q== - optionalDependencies: - "@img/sharp-libvips-linux-arm64" "1.0.2" - -"@img/sharp-linux-arm@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.2.tgz#181f7466e6ac074042a38bfb679eb82505e17083" - integrity sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA== - optionalDependencies: - "@img/sharp-libvips-linux-arm" "1.0.1" - -"@img/sharp-linux-arm@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz#14ecc81f38f75fb4cd7571bc83311746d6745fca" - integrity sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ== - optionalDependencies: - "@img/sharp-libvips-linux-arm" "1.0.2" - -"@img/sharp-linux-s390x@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.2.tgz#9c171f49211f96fba84410b3e237b301286fa00f" - integrity sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA== - optionalDependencies: - "@img/sharp-libvips-linux-s390x" "1.0.1" - -"@img/sharp-linux-s390x@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz#119e8081e2c6741b5ac908fe02244e4c559e525f" - integrity sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ== - optionalDependencies: - "@img/sharp-libvips-linux-s390x" "1.0.2" - -"@img/sharp-linux-x64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.2.tgz#b956dfc092adc58c2bf0fae2077e6f01a8b2d5d7" - integrity sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A== - optionalDependencies: - "@img/sharp-libvips-linux-x64" "1.0.1" - -"@img/sharp-linux-x64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz#21d4c137b8da9a313b069ff5c920ded709f853d7" - integrity sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw== - optionalDependencies: - "@img/sharp-libvips-linux-x64" "1.0.2" - -"@img/sharp-linuxmusl-arm64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.2.tgz#10e0ec5a79d1234c6a71df44c9f3b0bef0bc0f15" - integrity sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64" "1.0.1" - -"@img/sharp-linuxmusl-arm64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz#f3fde68fd67b85a32da6f1155818c3b58b8e7ae0" - integrity sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-arm64" "1.0.2" - -"@img/sharp-linuxmusl-x64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.2.tgz#29e0030c24aa27c38201b1fc84e3d172899fcbe0" - integrity sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64" "1.0.1" - -"@img/sharp-linuxmusl-x64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz#44373724aecd7b69900e0578228144e181db7892" - integrity sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw== - optionalDependencies: - "@img/sharp-libvips-linuxmusl-x64" "1.0.2" - -"@img/sharp-wasm32@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.2.tgz#38d7c740a22de83a60ad1e6bcfce17462b0d4230" - integrity sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ== - dependencies: - "@emnapi/runtime" "^0.45.0" - -"@img/sharp-wasm32@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz#88e3f18d7e7cd8cfe1af98e9963db4d7b6491435" - integrity sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ== - dependencies: - "@emnapi/runtime" "^1.1.1" - -"@img/sharp-win32-ia32@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.2.tgz#09456314e223f68e5417c283b45c399635c16202" - integrity sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g== - -"@img/sharp-win32-ia32@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz#b1c772dd2952e983980b1eb85808fa8129484d46" - integrity sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw== - -"@img/sharp-win32-x64@0.33.2": - version "0.33.2" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.2.tgz#148e96dfd6e68747da41a311b9ee4559bb1b1471" - integrity sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg== - -"@img/sharp-win32-x64@0.33.4": - version "0.33.4" - resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz#106f911134035b4157ec92a0c154a6b6f88fa4c1" - integrity sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw== - "@inquirer/figures@^1.0.2": version "1.0.3" resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.3.tgz#1227cc980f88e6d6ab85abadbf164f5038041edd" @@ -5035,11 +4786,6 @@ resolved "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz" integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== -"@types/uuid@^9.0.1": - version "9.0.5" - resolved "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.5.tgz" - integrity sha512-xfHdwa1FMJ082prjSJpoEI57GZITiQz10r3vEJCHa2khEFQjKy91aWKz6+zybzssCvXUwE1LQWgWVwZ4nYUvHQ== - "@types/ws@^8.5.5": version "8.5.6" resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.6.tgz" @@ -5375,6 +5121,21 @@ "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" @@ -5836,6 +5597,26 @@ asap@~2.0.3, asap@~2.0.6: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +asn1.js@^4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +assert@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" @@ -6224,7 +6005,7 @@ big.js@^5.2.2: resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -binary-extensions@^2.0.0, binary-extensions@^2.2.0: +binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== @@ -6258,6 +6039,16 @@ bluebird@^3.7.2: resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== +bn.js@^4.0.0, bn.js@^4.1.0, 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== + +bn.js@^5.0.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + body-parser@1.20.2: version "1.20.2" resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" @@ -6353,11 +6144,85 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== +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" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" + integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.5" + hash-base "~3.0" + inherits "^2.0.4" + parse-asn1 "^5.1.7" + readable-stream "^2.3.8" + safe-buffer "^5.2.1" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: version "4.22.1" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz" @@ -6402,6 +6267,11 @@ buffer-from@^1.0.0: resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -6410,11 +6280,24 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + builtin-modules@^3.1.0, builtin-modules@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + builtins@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz" @@ -6519,16 +6402,16 @@ camelcase-css@^2.0.1: resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@6, camelcase@^6.2.0, camelcase@^6.2.1: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + camelcase@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz" @@ -6697,6 +6580,14 @@ ci-info@^3.2.0, ci-info@^3.8.0: resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" @@ -6884,7 +6775,7 @@ colord@^2.9.1, colord@^2.9.3: resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.10: +colorette@^2.0.10, colorette@^2.0.14: version "2.0.20" resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -7025,6 +6916,16 @@ consola@^2.15.3: resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== +console-browserify@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ== + content-disposition@0.5.2: version "0.5.2" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" @@ -7160,6 +7061,37 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: parse-json "^5.2.0" path-type "^4.0.0" +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + create-jest@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" @@ -7199,6 +7131,23 @@ crypt@0.0.2: resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== +crypto-browserify@^3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" @@ -7249,6 +7198,20 @@ css-loader@^6.5.1, css-loader@^6.8.1: postcss-value-parser "^4.2.0" semver "^7.3.8" +css-loader@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" + integrity sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + css-minimizer-webpack-plugin@^3.2.0: version "3.4.1" resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" @@ -7615,11 +7578,6 @@ debug@^4.0.0, debug@^4.3.1: dependencies: ms "2.1.2" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - decamelize@^6.0.0: version "6.0.0" resolved "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz" @@ -7828,6 +7786,14 @@ dequal@^2.0.0, dequal@^2.0.3: resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" @@ -7891,6 +7857,15 @@ diff@^4.0.1: resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + digest-fetch@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz" @@ -7988,6 +7963,11 @@ dom-serializer@^2.0.0: domhandler "^5.0.2" entities "^4.2.0" +domain-browser@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-5.7.0.tgz#81b942459672e3c7ed8f721fe31135a5628f31cf" + integrity sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ== + domelementtype@1: version "1.3.1" resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" @@ -8120,15 +8100,28 @@ electron-to-chromium@^1.4.668: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz" integrity sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA== -electron@^26.3.0: - version "26.3.0" - resolved "https://registry.npmjs.org/electron/-/electron-26.3.0.tgz" - integrity sha512-7ZpvSHu+jmqialSvywTZnOQZZGLqlyj+yV5HGDrEzFnMiFaXBRpbByHgoUhaExJ/8t/0xKQjKlMRAY65w+zNZQ== +electron@^28.0.0: + version "28.3.3" + resolved "https://registry.yarnpkg.com/electron/-/electron-28.3.3.tgz#2df898f653c4f77b66b4cf3eeba79d8bea6d03c0" + integrity sha512-ObKMLSPNhomtCOBAxFS8P2DW/4umkh72ouZUlUKzXGtYuPzgr1SYhskhFWgzAsPtUzhL2CzyV2sfbHcEW4CXqw== dependencies: "@electron/get" "^2.0.0" "@types/node" "^18.11.18" extract-zip "^2.0.1" +elliptic@^6.5.3, elliptic@^6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.10.2: version "0.10.2" resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" @@ -8191,6 +8184,14 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhanced-resolve@^5.0.0: + version "5.17.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" + integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enhanced-resolve@^5.12.0, enhanced-resolve@^5.15.0: version "5.15.0" resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz" @@ -8214,6 +8215,11 @@ env-paths@^2.2.0, env-paths@^2.2.1: resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== +envinfo@^7.7.3: + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" @@ -8917,6 +8923,11 @@ eslint@^8.3.0, eslint@^8.44.0, eslint@^8.49.0: strip-ansi "^6.0.1" text-table "^0.2.0" +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" @@ -9047,7 +9058,7 @@ event-target-shim@^5.0.0: resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -eventemitter3@^4.0.0, eventemitter3@^4.0.4: +eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -9057,11 +9068,19 @@ eventemitter3@^5.0.1: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -events@^3.2.0: +events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + execa@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c" @@ -9133,11 +9152,6 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -expr-eval@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/expr-eval/-/expr-eval-2.0.2.tgz" - integrity sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg== - express@^4.17.3: version "4.19.2" resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" @@ -9256,6 +9270,11 @@ fast-url-parser@1.1.3: dependencies: punycode "^1.3.2" +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + fastq@^1.6.0: version "1.15.0" resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" @@ -9358,6 +9377,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" @@ -10066,6 +10092,31 @@ has@^1.0.3: resolved "https://registry.npmjs.org/has/-/has-1.0.4.tgz" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-base@~3.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" @@ -10204,6 +10255,15 @@ history@^4.9.0: tiny-warning "^1.0.0" value-equal "^1.0.1" +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" @@ -10404,6 +10464,11 @@ http2-wrapper@^2.1.10: quick-lru "^5.1.1" resolve-alpn "^1.2.0" +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" @@ -10473,7 +10538,7 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13: +ieee754@^1.1.13, ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -10544,7 +10609,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -10618,6 +10683,11 @@ interpret@^1.0.0: resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + intersection-observer@^0.12.0: version "0.12.2" resolved "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.12.2.tgz" @@ -10666,7 +10736,7 @@ is-any-array@^2.0.0: resolved "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz" integrity sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ== -is-arguments@^1.1.1: +is-arguments@^1.0.4, is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -10817,7 +10887,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.10: +is-generator-function@^1.0.10, is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -10876,6 +10946,14 @@ is-module@^1.0.0: resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" @@ -11027,7 +11105,7 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: dependencies: which-typed-array "^1.1.11" -is-typed-array@^1.1.13: +is-typed-array@^1.1.13, is-typed-array@^1.1.3: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== @@ -12262,7 +12340,7 @@ jsonpath@^1.1.1: static-eval "2.0.2" underscore "1.12.1" -jsonpointer@^5.0.0, jsonpointer@^5.0.1: +jsonpointer@^5.0.0: version "5.0.1" resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== @@ -12306,50 +12384,6 @@ klona@^2.0.4, klona@^2.0.5: resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== -langchain@^0.0.149: - version "0.0.149" - resolved "https://registry.npmjs.org/langchain/-/langchain-0.0.149.tgz" - integrity sha512-7Ky7TqlUCbhx6hBwNW+dIyjCXLAPX/3WP1LFZ0ZGz/B0GaAHbyBkm8uuy1jMA3f7/8lJwZMWDL3639Idd7euWA== - dependencies: - "@anthropic-ai/sdk" "^0.6.2" - ansi-styles "^5.0.0" - binary-extensions "^2.2.0" - camelcase "6" - decamelize "^1.2.0" - expr-eval "^2.0.2" - flat "^5.0.2" - js-tiktoken "^1.0.7" - js-yaml "^4.1.0" - jsonpointer "^5.0.1" - langchainhub "~0.0.6" - langsmith "~0.0.31" - ml-distance "^4.0.0" - object-hash "^3.0.0" - openai "~4.4.0" - openapi-types "^12.1.3" - p-queue "^6.6.2" - p-retry "4" - uuid "^9.0.0" - yaml "^2.2.1" - zod "^3.21.4" - zod-to-json-schema "^3.20.4" - -langchainhub@~0.0.6: - version "0.0.6" - resolved "https://registry.npmjs.org/langchainhub/-/langchainhub-0.0.6.tgz" - integrity sha512-SW6105T+YP1cTe0yMf//7kyshCgvCTyFBMTgH2H3s9rTAR4e+78DA/BBrUL/Mt4Q5eMWui7iGuAYb3pgGsdQ9w== - -langsmith@~0.0.31: - version "0.0.42" - resolved "https://registry.npmjs.org/langsmith/-/langsmith-0.0.42.tgz" - integrity sha512-sFuN+e7E+pPBIRaRgFqZh/BRBWNHTZNAwi6uj4kydQawooCZYoJmM5snOkiQrhVSvAhgu6xFhLvmfvkPcKzD7w== - dependencies: - "@types/uuid" "^9.0.1" - commander "^10.0.1" - p-queue "^6.6.2" - p-retry "4" - uuid "^9.0.0" - language-subtag-registry@~0.3.2: version "0.3.22" resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" @@ -12665,6 +12699,15 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + md5@^2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" @@ -13359,6 +13402,14 @@ micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" +micromatch@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" @@ -13367,6 +13418,14 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" @@ -13433,11 +13492,16 @@ mini-css-extract-plugin@^2.4.5, mini-css-extract-plugin@^2.7.6: dependencies: schema-utils "^4.0.0" -minimalistic-assert@^1.0.0: +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" @@ -13502,7 +13566,7 @@ ml-distance-euclidean@^2.0.0: resolved "https://registry.npmjs.org/ml-distance-euclidean/-/ml-distance-euclidean-2.0.0.tgz" integrity sha512-yC9/2o8QF0A3m/0IXqCTXCzz2pNEzvmcE/9HFKOZGnTjatvBbsn4lWYJkxENkA4Ug2fnYl7PXQxnPi21sgMy/Q== -ml-distance@^4.0.0, ml-distance@^4.0.1: +ml-distance@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/ml-distance/-/ml-distance-4.0.1.tgz" integrity sha512-feZ5ziXs01zhyFUUUeZV5hwc0f5JW0Sh0ckU1koZe/wdVkJdGxcP06KNQuF0WBTj8FttQUzcvQcpcrOp/XrlEw== @@ -13667,6 +13731,36 @@ node-int64@^0.4.0: resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-polyfill-webpack-plugin@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-4.0.0.tgz#99c4e4a0b41073b65aa8c584b0d195798aed2c76" + integrity sha512-WLk77vLpbcpmTekRj6s6vYxk30XoyaY5MDZ4+9g8OaKoG3Ij+TjOqhpQjVUlfDZBPBgpNATDltaQkzuXSnnkwg== + dependencies: + assert "^2.1.0" + browserify-zlib "^0.2.0" + buffer "^6.0.3" + console-browserify "^1.2.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.12.0" + domain-browser "^5.7.0" + events "^3.3.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "^1.0.1" + process "^0.11.10" + punycode "^2.3.1" + querystring-es3 "^0.2.1" + readable-stream "^4.5.2" + stream-browserify "^3.0.0" + stream-http "^3.2.0" + string_decoder "^1.3.0" + timers-browserify "^2.0.12" + tty-browserify "^0.0.1" + type-fest "^4.18.2" + url "^0.11.3" + util "^0.12.5" + vm-browserify "^1.1.2" + node-releases@^2.0.13: version "2.0.13" resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" @@ -13941,39 +14035,6 @@ openai@^4.29.2: node-fetch "^2.6.7" web-streams-polyfill "^3.2.1" -openai@^4.7.0: - version "4.11.1" - resolved "https://registry.npmjs.org/openai/-/openai-4.11.1.tgz" - integrity sha512-GU0HQWbejXuVAQlDjxIE8pohqnjptFDIm32aPlNT1H9ucMz1VJJD0DaTJRQsagNaJ97awWjjVLEG7zCM6sm4SA== - dependencies: - "@types/node" "^18.11.18" - "@types/node-fetch" "^2.6.4" - abort-controller "^3.0.0" - agentkeepalive "^4.2.1" - digest-fetch "^1.3.0" - form-data-encoder "1.7.2" - formdata-node "^4.3.2" - node-fetch "^2.6.7" - -openai@~4.4.0: - version "4.4.0" - resolved "https://registry.npmjs.org/openai/-/openai-4.4.0.tgz" - integrity sha512-JN0t628Kh95T0IrXl0HdBqnlJg+4Vq0Bnh55tio+dfCnyzHvMLiWyCM9m726MAJD2YkDU4/8RQB6rNbEq9ct2w== - dependencies: - "@types/node" "^18.11.18" - "@types/node-fetch" "^2.6.4" - abort-controller "^3.0.0" - agentkeepalive "^4.2.1" - digest-fetch "^1.3.0" - form-data-encoder "1.7.2" - formdata-node "^4.3.2" - node-fetch "^2.6.7" - -openapi-types@^12.1.3: - version "12.1.3" - resolved "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz" - integrity sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw== - opener@^1.5.2: version "1.5.2" resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" @@ -14033,6 +14094,11 @@ ora@^5.4.1: strip-ansi "^6.0.0" wcwidth "^1.0.1" +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A== + os-name@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-5.1.0.tgz#4f5ab5edfa6938b590112714f1570fe79f1d957a" @@ -14056,11 +14122,6 @@ p-cancelable@^3.0.0: resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" @@ -14117,14 +14178,6 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - p-queue@^7.4.1: version "7.4.1" resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.4.1.tgz" @@ -14133,7 +14186,7 @@ p-queue@^7.4.1: eventemitter3 "^5.0.1" p-timeout "^5.0.2" -p-retry@4, p-retry@^4.5.0: +p-retry@^4.5.0: version "4.6.2" resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== @@ -14141,13 +14194,6 @@ p-retry@4, p-retry@^4.5.0: "@types/retry" "0.12.0" retry "^0.13.1" -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - p-timeout@^5.0.2: version "5.1.0" resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz" @@ -14195,6 +14241,11 @@ package-json@^8.1.0: registry-url "^6.0.0" semver "^7.3.7" +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== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" @@ -14210,6 +14261,18 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-asn1@^5.0.0, parse-asn1@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" + integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== + dependencies: + asn1.js "^4.10.1" + browserify-aes "^1.2.0" + evp_bytestokey "^1.0.3" + hash-base "~3.0" + pbkdf2 "^3.1.2" + safe-buffer "^5.2.1" + parse-entities@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz" @@ -14286,6 +14349,11 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" @@ -14361,6 +14429,17 @@ path-type@^5.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== +pbkdf2@^3.0.3, pbkdf2@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + pdf-parse@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/pdf-parse/-/pdf-parse-1.1.1.tgz" @@ -14840,6 +14919,11 @@ postcss-modules-extract-imports@^3.0.0: resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + postcss-modules-local-by-default@^4.0.3: version "4.0.3" resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz" @@ -14849,6 +14933,15 @@ postcss-modules-local-by-default@^4.0.3: postcss-selector-parser "^6.0.2" postcss-value-parser "^4.1.0" +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + postcss-modules-scope@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" @@ -14856,6 +14949,13 @@ postcss-modules-scope@^3.0.0: dependencies: postcss-selector-parser "^6.0.4" +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== + dependencies: + postcss-selector-parser "^6.0.4" + postcss-modules-values@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" @@ -15243,7 +15343,7 @@ postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4. picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.38: +postcss@^8.4.33, postcss@^8.4.38: version "8.4.38" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -15338,6 +15438,11 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + progress@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" @@ -15433,6 +15538,18 @@ psl@^1.1.33: resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + pump@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" @@ -15441,7 +15558,7 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@^1.3.2: +punycode@^1.3.2, punycode@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== @@ -15451,6 +15568,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + pupa@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz" @@ -15475,6 +15597,18 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@^6.11.2: + version "6.12.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" + integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== + dependencies: + side-channel "^1.0.6" + +querystring-es3@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" @@ -15504,13 +15638,21 @@ raf@^3.4.1: dependencies: performance-now "^2.1.0" -randombytes@^2.1.0: +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + range-parser@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" @@ -15553,6 +15695,13 @@ react-app-polyfill@^3.0.0: regenerator-runtime "^0.13.9" whatwg-fetch "^3.6.2" +react-app-rewired@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.2.1.tgz#84901ee1e3f26add0377ebec0b41bcdfce9fc211" + integrity sha512-uFQWTErXeLDrMzOJHKp0h8P1z0LV9HzPGsJ6adOtGlA/B9WfT6Shh4j2tLTTGlXOfiVx6w6iWpp7SOC5pvk+gA== + dependencies: + semver "^5.6.0" + react-dev-utils@^12.0.1: version "12.0.1" resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" @@ -15770,7 +15919,7 @@ react-scripts@5.0.1: react-transition-group@^4.4.5: version "4.4.5" - resolved "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== dependencies: "@babel/runtime" "^7.5.5" @@ -15811,7 +15960,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1: +readable-stream@^2.0.1, readable-stream@^2.3.8: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -15824,7 +15973,7 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.4.0: +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.2" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -15833,6 +15982,17 @@ readable-stream@^3.0.6, readable-stream@^3.4.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -15852,6 +16012,13 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + recoil-persist@^5.1.0: version "5.1.0" resolved "https://registry.npmjs.org/recoil-persist/-/recoil-persist-5.1.0.tgz" @@ -16297,6 +16464,14 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + roarr@^2.15.3: version "2.15.4" resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" @@ -16416,7 +16591,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -16562,12 +16737,12 @@ semver-diff@^4.0.0: dependencies: semver "^7.3.5" -"semver@2 || 3 || 4 || 5": +"semver@2 || 3 || 4 || 5", semver@^5.6.0: version "5.7.2" resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== -semver@7.6.2, semver@^7.6.0: +semver@7.6.2, semver@^7.3.4: version "7.6.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== @@ -16682,7 +16857,7 @@ set-function-name@^2.0.0, set-function-name@^2.0.1: functions-have-names "^1.2.3" has-property-descriptors "^1.0.0" -setimmediate@^1.0.5: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== @@ -16697,6 +16872,14 @@ setprototypeof@1.2.0: resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz" @@ -16709,64 +16892,6 @@ shallowequal@^1.1.0: resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== -sharp@^0.33.2: - version "0.33.2" - resolved "https://registry.npmjs.org/sharp/-/sharp-0.33.2.tgz" - integrity sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ== - dependencies: - color "^4.2.3" - detect-libc "^2.0.2" - semver "^7.5.4" - optionalDependencies: - "@img/sharp-darwin-arm64" "0.33.2" - "@img/sharp-darwin-x64" "0.33.2" - "@img/sharp-libvips-darwin-arm64" "1.0.1" - "@img/sharp-libvips-darwin-x64" "1.0.1" - "@img/sharp-libvips-linux-arm" "1.0.1" - "@img/sharp-libvips-linux-arm64" "1.0.1" - "@img/sharp-libvips-linux-s390x" "1.0.1" - "@img/sharp-libvips-linux-x64" "1.0.1" - "@img/sharp-libvips-linuxmusl-arm64" "1.0.1" - "@img/sharp-libvips-linuxmusl-x64" "1.0.1" - "@img/sharp-linux-arm" "0.33.2" - "@img/sharp-linux-arm64" "0.33.2" - "@img/sharp-linux-s390x" "0.33.2" - "@img/sharp-linux-x64" "0.33.2" - "@img/sharp-linuxmusl-arm64" "0.33.2" - "@img/sharp-linuxmusl-x64" "0.33.2" - "@img/sharp-wasm32" "0.33.2" - "@img/sharp-win32-ia32" "0.33.2" - "@img/sharp-win32-x64" "0.33.2" - -sharp@^0.33.4: - version "0.33.4" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.4.tgz#b88e6e843e095c6ab5e1a0c59c4885e580cd8405" - integrity sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q== - dependencies: - color "^4.2.3" - detect-libc "^2.0.3" - semver "^7.6.0" - optionalDependencies: - "@img/sharp-darwin-arm64" "0.33.4" - "@img/sharp-darwin-x64" "0.33.4" - "@img/sharp-libvips-darwin-arm64" "1.0.2" - "@img/sharp-libvips-darwin-x64" "1.0.2" - "@img/sharp-libvips-linux-arm" "1.0.2" - "@img/sharp-libvips-linux-arm64" "1.0.2" - "@img/sharp-libvips-linux-s390x" "1.0.2" - "@img/sharp-libvips-linux-x64" "1.0.2" - "@img/sharp-libvips-linuxmusl-arm64" "1.0.2" - "@img/sharp-libvips-linuxmusl-x64" "1.0.2" - "@img/sharp-linux-arm" "0.33.4" - "@img/sharp-linux-arm64" "0.33.4" - "@img/sharp-linux-s390x" "0.33.4" - "@img/sharp-linux-x64" "0.33.4" - "@img/sharp-linuxmusl-arm64" "0.33.4" - "@img/sharp-linuxmusl-x64" "0.33.4" - "@img/sharp-wasm32" "0.33.4" - "@img/sharp-win32-ia32" "0.33.4" - "@img/sharp-win32-x64" "0.33.4" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" @@ -16812,6 +16937,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" @@ -16969,7 +17104,7 @@ source-map@^0.5.7: resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.7.0, source-map@^0.7.3: +source-map@^0.7.0, source-map@^0.7.3, source-map@^0.7.4: version "0.7.4" resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -17111,6 +17246,24 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" +stream-browserify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-http@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + string-length@^4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" @@ -17238,7 +17391,7 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -17342,6 +17495,11 @@ style-loader@^3.3.1: resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== +style-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-4.0.0.tgz#0ea96e468f43c69600011e0589cb05c44f3b17a5" + integrity sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA== + style-to-object@^0.4.0: version "0.4.4" resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz" @@ -17645,6 +17803,13 @@ tiktoken@^1.0.10: resolved "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.10.tgz" integrity sha512-gF8ndTCNu7WcRFbl1UUWaFIB4CTXmHzS3tRYdyUYF7x3C6YR6Evoao4zhKDmWIwv2PzNbzoQMV8Pxt+17lEDbA== +timers-browserify@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + tiny-invariant@^1.0.2: version "1.3.3" resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz" @@ -17772,6 +17937,17 @@ ts-jest@^29.1.1: semver "^7.5.3" yargs-parser "^21.0.1" +ts-loader@^9.5.1: + version "9.5.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + ts-node@^10.9.1: version "10.9.1" resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" @@ -17844,6 +18020,11 @@ tsx@^3.12.10: optionalDependencies: fsevents "~2.3.3" +tty-browserify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + turbo-darwin-64@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.0.4.tgz#83c7835f8ba1f7a5473487ce73cfc8d5ad523614" @@ -17945,6 +18126,11 @@ type-fest@^2.13.0, type-fest@^2.5.0, type-fest@^2.5.1: resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== +type-fest@^4.18.2: + version "4.20.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.20.1.tgz#d97bb1e923bf524e5b4b43421d586760fb2ee8be" + integrity sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" @@ -18321,6 +18507,14 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +url@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== + dependencies: + punycode "^1.4.1" + qs "^6.11.2" + use-sync-external-store@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz" @@ -18341,6 +18535,17 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + utila@~0.4: version "0.4.0" resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" @@ -18361,11 +18566,6 @@ uuid@^8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" @@ -18432,6 +18632,11 @@ vfile@^6.0.0, vfile@^6.0.1: unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" +vm-browserify@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + vscode-oniguruma@^1.7.0: version "1.7.0" resolved "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz" @@ -18554,6 +18759,25 @@ webpack-bundle-analyzer@^4.9.0: sirv "^2.0.3" ws "^7.3.1" +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + webpack-dev-middleware@^5.3.1: version "5.3.4" resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz" @@ -18609,7 +18833,7 @@ webpack-manifest-plugin@^4.0.2: tapable "^2.0.0" webpack-sources "^2.2.0" -webpack-merge@^5.9.0: +webpack-merge@^5.7.3, webpack-merge@^5.9.0: version "5.10.0" resolved "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz" integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== @@ -18791,7 +19015,7 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.9: gopd "^1.0.1" has-tostringtag "^1.0.0" -which-typed-array@^1.1.14, which-typed-array@^1.1.15: +which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -19105,6 +19329,11 @@ xmlchars@^2.2.0: resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" @@ -19125,7 +19354,7 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yaml@^2.1.1, yaml@^2.2.1, yaml@^2.3.2: +yaml@^2.1.1, yaml@^2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz" integrity sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg== @@ -19189,16 +19418,6 @@ yocto-queue@^1.0.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -zod-to-json-schema@^3.20.4: - version "3.21.4" - resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.21.4.tgz" - integrity sha512-fjUZh4nQ1s6HMccgIeE0VP4QG/YRGPmyjO9sAh890aQKPEk3nqbfUXhMFaC+Dr5KvYBm8BCyvfpZf2jY9aGSsw== - -zod@^3.21.4: - version "3.22.3" - resolved "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz" - integrity sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug== - zwitch@^2.0.0: version "2.0.4" resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz"