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}}0>) OR <1>{{{C}}} length greater than {{value}}1>',
- },
- },
- {
- 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"