diff --git a/client/tsconfig.json b/packages/client/tsconfig.json
similarity index 94%
rename from client/tsconfig.json
rename to packages/client/tsconfig.json
index 6d2a12b17..a98a49e08 100644
--- a/client/tsconfig.json
+++ b/packages/client/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../tsconfig.json",
+ "extends": "../../tsconfig.json",
"compilerOptions": {
"module": "esnext",
"moduleResolution": "node",
diff --git a/client/webpack.common.js b/packages/client/webpack.common.js
similarity index 98%
rename from client/webpack.common.js
rename to packages/client/webpack.common.js
index 6e39464dc..b69564ed6 100644
--- a/client/webpack.common.js
+++ b/packages/client/webpack.common.js
@@ -27,7 +27,7 @@ module.exports = () => {
return {
entry: ['regenerator-runtime/runtime.js', './src/index.tsx'],
output: {
- path: path.resolve(__dirname, '../build'),
+ path: path.resolve(__dirname, './build'),
filename: '[name].[contenthash].bundle.js',
clean: true,
},
diff --git a/client/webpack.dev.js b/packages/client/webpack.dev.js
similarity index 100%
rename from client/webpack.dev.js
rename to packages/client/webpack.dev.js
diff --git a/client/webpack.prod.js b/packages/client/webpack.prod.js
similarity index 100%
rename from client/webpack.prod.js
rename to packages/client/webpack.prod.js
diff --git a/packages/core/.babelrc b/packages/core/.babelrc
new file mode 100644
index 000000000..74cf64400
--- /dev/null
+++ b/packages/core/.babelrc
@@ -0,0 +1,38 @@
+{
+ "env": {
+ "production": {
+ "presets": [
+ "@babel/env",
+ [
+ "@babel/preset-react",
+ {
+ "runtime": "automatic"
+ }
+ ],
+ "@babel/preset-typescript"
+ ],
+ "plugins": ["@babel/plugin-proposal-class-properties"]
+ },
+ "development": {
+ "presets": [
+ "@babel/env",
+ [
+ "@babel/preset-react",
+ {
+ "runtime": "automatic"
+ }
+ ],
+ "@babel/preset-typescript"
+ ],
+ "plugins": ["@babel/plugin-proposal-class-properties"]
+ },
+ "test": {
+ "plugins": ["@babel/plugin-transform-runtime"],
+ "presets": [
+ "@babel/preset-env",
+ "@babel/preset-typescript",
+ "@babel/preset-react"
+ ]
+ }
+ }
+}
diff --git a/core/.env.example b/packages/core/.env.example
similarity index 100%
rename from core/.env.example
rename to packages/core/.env.example
diff --git a/core/.eslintignore b/packages/core/.eslintignore
similarity index 100%
rename from core/.eslintignore
rename to packages/core/.eslintignore
diff --git a/core/.eslintrc.js b/packages/core/.eslintrc.js
similarity index 100%
rename from core/.eslintrc.js
rename to packages/core/.eslintrc.js
diff --git a/core/.gitignore b/packages/core/.gitignore
similarity index 100%
rename from core/.gitignore
rename to packages/core/.gitignore
diff --git a/core/.npmignore b/packages/core/.npmignore
similarity index 100%
rename from core/.npmignore
rename to packages/core/.npmignore
diff --git a/core/.npmrc b/packages/core/.npmrc
similarity index 100%
rename from core/.npmrc
rename to packages/core/.npmrc
diff --git a/core/@types/deepEqual.d.ts b/packages/core/@types/deepEqual.d.ts
similarity index 100%
rename from core/@types/deepEqual.d.ts
rename to packages/core/@types/deepEqual.d.ts
diff --git a/core/@types/rete-comment-plugin.d.ts b/packages/core/@types/rete-comment-plugin.d.ts
similarity index 100%
rename from core/@types/rete-comment-plugin.d.ts
rename to packages/core/@types/rete-comment-plugin.d.ts
diff --git a/core/@types/rete-connection-reroute-plugin.d.ts b/packages/core/@types/rete-connection-reroute-plugin.d.ts
similarity index 100%
rename from core/@types/rete-connection-reroute-plugin.d.ts
rename to packages/core/@types/rete-connection-reroute-plugin.d.ts
diff --git a/core/@types/rete-context-menu-plugin.d.ts b/packages/core/@types/rete-context-menu-plugin.d.ts
similarity index 100%
rename from core/@types/rete-context-menu-plugin.d.ts
rename to packages/core/@types/rete-context-menu-plugin.d.ts
diff --git a/core/@types/rete-react-render-plugin.d.ts b/packages/core/@types/rete-react-render-plugin.d.ts
similarity index 100%
rename from core/@types/rete-react-render-plugin.d.ts
rename to packages/core/@types/rete-react-render-plugin.d.ts
diff --git a/core/README.md b/packages/core/README.md
similarity index 100%
rename from core/README.md
rename to packages/core/README.md
diff --git a/packages/core/data/booleanGateSpell.thoth b/packages/core/data/booleanGateSpell.thoth
new file mode 100644
index 000000000..ddb4f81b1
--- /dev/null
+++ b/packages/core/data/booleanGateSpell.thoth
@@ -0,0 +1 @@
+{"id":"9b970450-4a0f-43cd-8763-ce0920f9ce1e","name":"unfortunate olive","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"success":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":764,"input":"trigger","data":{"pins":[]}}]}},"position":[-1735.7923282597962,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"Press is a free WordPress theme made by Tom Usborne, a programmer from Canada. I’ve really seen it for many years from the WordPress repository. Most of you know that I am fairly picky when it comes to web performance, and so I tend to ignore everything from the repository. Typically because","success":false,"socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true},"inputs":{"input":{"connections":[{"node":756,"output":"result","data":{"pins":[]}},{"node":757,"output":"nope","data":{"pins":[]}}]},"trigger":{"connections":[{"node":756,"output":"trigger","data":{"pins":[]}},{"node":757,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-179.2551319405378,-378.55595753684764],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"yes","display":"yes","success":false,"socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"defaultValue":"no","playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"output":{"connections":[{"node":764,"input":"input","data":{"pins":[]}}]}},"position":[-1756.7490443350143,-376.7788066492969],"name":"Universal Input"},"756":{"id":756,"data":{"stop":"\\n","temp":0.7,"error":false,"display":"Press is a free WordPress theme made by Tom Usborne, a programmer from Canada. I’ve really seen it for many years from the WordPress repository. Most of you know that I am fairly picky when it comes to web performance, and so I tend to ignore everything from the repository. Typically because","fewshot":"Generate","success":false,"maxTokens":50,"dataControls":{"name":{"expanded":true},"stop":{"expanded":true},"temp":{"expanded":true},"model":{"expanded":true},"inputs":{"expanded":true},"fewshot":{"expanded":true},"maxTokens":{"expanded":true},"frequencyPenalty":{"expanded":true}}},"inputs":{"trigger":{"connections":[{"node":765,"output":"true","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"result":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]},"composed":{"connections":[]}},"position":[-582.8705727637084,-690.7753442242042],"name":"Generator"},"757":{"id":757,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {nope: 'nope'}\n}\n","display":"{\"nope\":\"nope\"}","outputs":[{"name":"nope","taskType":"output","socketKey":"nope","socketType":"anySocket","connectionType":"output"}],"success":false,"dataControls":{"code":{"expanded":true},"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true}}},"inputs":{"trigger":{"connections":[{"node":765,"output":"false","data":{"pins":[]}}]}},"outputs":{"nope":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]},"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]}},"position":[-559.1233977692019,-158.30703900660217],"name":"Code"},"764":{"id":764,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {output: inputs.input === 'yes'}\n}\n","dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true},"code":{"expanded":true}},"name":"is yes","inputs":[{"name":"input","taskType":"output","socketKey":"input","connectionType":"input","socketType":"anySocket"}],"outputs":[{"name":"output","taskType":"output","socketKey":"output","connectionType":"output","socketType":"anySocket"}],"display":"{\"output\":true}","success":false},"inputs":{"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]},"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":765,"input":"trigger","data":{"pins":[]}}]},"output":{"connections":[{"node":765,"input":"boolean","data":{"pins":[]}}]}},"position":[-1347.904741156958,-331.91528521654504],"name":"Code"},"765":{"id":765,"data":{"success":false},"inputs":{"boolean":{"connections":[{"node":764,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":764,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"true":{"connections":[{"node":756,"input":"trigger","data":{"pins":[]}}]},"false":{"connections":[{"node":757,"input":"trigger","data":{"pins":[]}}]}},"position":[-948.140606080078,-344.29304631970314],"name":"Boolean Gate"}}},"createdAt":"2022-06-01T22:46:39.699Z","updatedAt":"2022-06-02T01:44:07.070Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"introText":"This is a simple AI generator app. Type anything and let the AI continue "}}
\ No newline at end of file
diff --git a/packages/core/data/booleanGateSpell.ts b/packages/core/data/booleanGateSpell.ts
new file mode 100644
index 000000000..47c78893b
--- /dev/null
+++ b/packages/core/data/booleanGateSpell.ts
@@ -0,0 +1,252 @@
+import { Spell } from '@latitudegames/thoth-core/types'
+export default {
+ id: '9b970450-4a0f-43cd-8763-ce0920f9ce1e',
+ name: 'unfortunate olive',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ success: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 764, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1735.7923282597962, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display:
+ 'Press is a free WordPress theme made by Tom Usborne, a programmer from Canada. I’ve really seen it for many years from the WordPress repository. Most of you know that I am fairly picky when it comes to web performance, and so I tend to ignore everything from the repository. Typically because',
+ success: false,
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ },
+ inputs: {
+ input: {
+ connections: [
+ { node: 756, output: 'result', data: { pins: [] } },
+ { node: 757, output: 'nope', data: { pins: [] } },
+ ],
+ },
+ trigger: {
+ connections: [
+ { node: 756, output: 'trigger', data: { pins: [] } },
+ { node: 757, output: 'trigger', data: { pins: [] } },
+ ],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-179.2551319405378, -378.55595753684764],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'yes',
+ display: 'yes',
+ success: false,
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ defaultValue: 'no',
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 764, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1756.7490443350143, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '756': {
+ id: 756,
+ data: {
+ stop: '\\n',
+ temp: 0.7,
+ error: false,
+ display:
+ 'Press is a free WordPress theme made by Tom Usborne, a programmer from Canada. I’ve really seen it for many years from the WordPress repository. Most of you know that I am fairly picky when it comes to web performance, and so I tend to ignore everything from the repository. Typically because',
+ fewshot: 'Generate',
+ success: false,
+ maxTokens: 50,
+ dataControls: {
+ name: { expanded: true },
+ stop: { expanded: true },
+ temp: { expanded: true },
+ model: { expanded: true },
+ inputs: { expanded: true },
+ fewshot: { expanded: true },
+ maxTokens: { expanded: true },
+ frequencyPenalty: { expanded: true },
+ },
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 765, output: 'true', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ result: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ composed: { connections: [] },
+ },
+ position: [-582.8705727637084, -690.7753442242042],
+ name: 'Generator',
+ },
+ '757': {
+ id: 757,
+ data: {
+ code: "\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {nope: 'nope'}\n}\n",
+ display: '{"nope":"nope"}',
+ outputs: [
+ {
+ name: 'nope',
+ taskType: 'output',
+ socketKey: 'nope',
+ socketType: 'anySocket',
+ connectionType: 'output',
+ },
+ ],
+ success: false,
+ dataControls: {
+ code: { expanded: true },
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ },
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 765, output: 'false', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ nope: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-559.1233977692019, -158.30703900660217],
+ name: 'Code',
+ },
+ '764': {
+ id: 764,
+ data: {
+ code: "\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {output: inputs.input === 'yes'}\n}\n",
+ dataControls: {
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ name: 'is yes',
+ inputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ connectionType: 'input',
+ socketType: 'anySocket',
+ },
+ ],
+ outputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ display: '{"output":true}',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 765, input: 'trigger', data: { pins: [] } }],
+ },
+ output: {
+ connections: [{ node: 765, input: 'boolean', data: { pins: [] } }],
+ },
+ },
+ position: [-1347.904741156958, -331.91528521654504],
+ name: 'Code',
+ },
+ '765': {
+ id: 765,
+ data: { success: false },
+ inputs: {
+ boolean: {
+ connections: [{ node: 764, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 764, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ true: {
+ connections: [{ node: 756, input: 'trigger', data: { pins: [] } }],
+ },
+ false: {
+ connections: [{ node: 757, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-948.140606080078, -344.29304631970314],
+ name: 'Boolean Gate',
+ },
+ },
+ },
+ createdAt: '2022-06-01T22:46:39.699Z',
+ updatedAt: '2022-06-02T01:44:07.070Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {
+ introText:
+ 'This is a simple AI generator app. Type anything and let the AI continue ',
+ },
+} as unknown as Spell
diff --git a/packages/core/data/codeSpell.thoth b/packages/core/data/codeSpell.thoth
new file mode 100644
index 000000000..6581ed5b6
--- /dev/null
+++ b/packages/core/data/codeSpell.thoth
@@ -0,0 +1 @@
+{"id":"3b7add2b-0f49-4c6b-8db9-18ecbb34602c","name":"accurate white","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"success":false},"inputs":{},"outputs":{"trigger":{"connections":[{"node":754,"input":"trigger","data":{"pins":[]}}]}},"position":[-1556.5668566017482,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"test modified","socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true,"success":false},"inputs":{"input":{"connections":[{"node":754,"output":"modifiedInput","data":{"pins":[]}}]},"trigger":{"connections":[{"node":754,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-760.5421829740567,-356.3230037609839],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"test","socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"display":"test","success":false},"inputs":{},"outputs":{"output":{"connections":[{"node":754,"input":"input","data":{"pins":[]}}]}},"position":[-1555.1553378286703,-376.7788066492969],"name":"Universal Input"},"754":{"id":754,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {modifiedInput: inputs.input + ' modified'}\n}\n","dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true},"code":{"expanded":true}},"outputs":[{"name":"modifiedInput","taskType":"output","socketKey":"modifiedInput","connectionType":"output","socketType":"anySocket"}],"display":"{\"modifiedInput\":\"test modified\"}","success":false},"inputs":{"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]},"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"modifiedInput":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-1133.8938776147565,-354.9392611868693],"name":"Code"}}},"createdAt":"2022-05-25T22:31:10.259Z","updatedAt":"2022-05-25T22:33:55.441Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"introText":"This is a simple AI generator app. Type anything and let the AI continue "}}
\ No newline at end of file
diff --git a/packages/core/data/codeSpell.ts b/packages/core/data/codeSpell.ts
new file mode 100644
index 000000000..faafdf647
--- /dev/null
+++ b/packages/core/data/codeSpell.ts
@@ -0,0 +1,138 @@
+import { Spell } from '../types'
+
+export default {
+ id: '3b7add2b-0f49-4c6b-8db9-18ecbb34602c',
+ name: 'accurate white',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 754, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1556.5668566017482, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display: 'test modified',
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [
+ { node: 754, output: 'modifiedInput', data: { pins: [] } },
+ ],
+ },
+ trigger: {
+ connections: [{ node: 754, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-760.5421829740567, -356.3230037609839],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'test',
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ display: 'test',
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 754, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.1553378286703, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '754': {
+ id: 754,
+ data: {
+ code: "\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {modifiedInput: inputs.input + ' modified'}\n}\n",
+ dataControls: {
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ outputs: [
+ {
+ name: 'modifiedInput',
+ taskType: 'output',
+ socketKey: 'modifiedInput',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ display: '{"modifiedInput":"test modified"}',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ modifiedInput: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1133.8938776147565, -354.9392611868693],
+ name: 'Code',
+ },
+ },
+ },
+ createdAt: '2022-05-25T22:31:10.259Z',
+ updatedAt: '2022-05-25T22:33:55.441Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {
+ introText:
+ 'This is a simple AI generator app. Type anything and let the AI continue ',
+ },
+} as unknown as Spell
diff --git a/packages/core/data/forEachSpell.thoth b/packages/core/data/forEachSpell.thoth
new file mode 100644
index 000000000..1f6d976a6
--- /dev/null
+++ b/packages/core/data/forEachSpell.thoth
@@ -0,0 +1 @@
+{"id":"9b970450-4a0f-43cd-8763-ce0920f9ce1e","name":"instant tan","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"success":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":764,"input":"trigger","data":{"pins":[]}}]}},"position":[-1735.7923282597962,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"Press is a free WordPress theme made by Tom Usborne, a programmer from Canada. I’ve really seen it for many years from the WordPress repository. Most of you know that I am fairly picky when it comes to web performance, and so I tend to ignore everything from the repository. Typically because","success":false,"socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true},"inputs":{"input":{"connections":[{"node":769,"output":"list","data":{"pins":[]}}]},"trigger":{"connections":[{"node":766,"output":"done","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-333.00667343275376,-154.40816046144414],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"test","display":"yes","success":false,"socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"defaultValue":"no","playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"output":{"connections":[{"node":764,"input":"input","data":{"pins":[]}}]}},"position":[-1756.7490443350143,-376.7788066492969],"name":"Universal Input"},"764":{"id":764,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {output: [1,2,3]}\n}\n","name":"list return","inputs":[{"name":"input","taskType":"output","socketKey":"input","socketType":"anySocket","connectionType":"input"}],"display":"{\"output\":[1,2,3]}","outputs":[{"name":"output","taskType":"output","socketKey":"output","socketType":"anySocket","connectionType":"output"}],"success":false,"dataControls":{"code":{"expanded":true},"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true}}},"inputs":{"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"output":{"connections":[{"node":766,"input":"array","data":{"pins":[]}}]},"trigger":{"connections":[{"node":766,"input":"act1","data":{"pins":[]}}]}},"position":[-1348.7560502830124,-331.3813133122548],"name":"Code"},"766":{"id":766,"data":{"error":false},"inputs":{"act1":{"connections":[{"node":764,"output":"trigger","data":{"pins":[]}}]},"array":{"connections":[{"node":764,"output":"output","data":{"pins":[]}}]}},"outputs":{"act":{"connections":[{"node":767,"input":"trigger","data":{"pins":[]}}]},"element":{"connections":[{"node":767,"input":"list","data":{"pins":[]}}]},"done":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]}},"position":[-912.7229115653838,-394.39695880949944],"name":"ForEach"},"767":{"id":767,"data":{"inputs":[{"name":"list","taskType":"output","socketKey":"list","socketType":"anySocket","connectionType":"input"}],"dataControls":{"inputs":{"expanded":true}}},"inputs":{"list":{"connections":[{"node":766,"output":"element","data":{"pins":[]}}]},"trigger":{"connections":[{"node":766,"output":"act","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-436.4064615045899,-505.59288512311963],"name":"State Write"},"769":{"id":769,"data":{"outputs":[{"name":"list","taskType":"output","socketKey":"list","socketType":"anySocket","connectionType":"output"}],"dataControls":{"outputs":{"expanded":true}}},"inputs":{},"outputs":{"list":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-898.2551611087029,-48.60770873229342],"name":"State Read"}}},"createdAt":"2022-06-01T22:46:39.699Z","updatedAt":"2022-06-02T01:48:11.483Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"list":[]}}
\ No newline at end of file
diff --git a/packages/core/data/forEachSpell.ts b/packages/core/data/forEachSpell.ts
new file mode 100644
index 000000000..6b7675444
--- /dev/null
+++ b/packages/core/data/forEachSpell.ts
@@ -0,0 +1,218 @@
+import { Spell } from './../types'
+export default {
+ id: '9b970450-4a0f-43cd-8763-ce0920f9ce1e',
+ name: 'instant tan',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ success: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 764, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1735.7923282597962, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display:
+ 'Press is a free WordPress theme made by Tom Usborne, a programmer from Canada. I’ve really seen it for many years from the WordPress repository. Most of you know that I am fairly picky when it comes to web performance, and so I tend to ignore everything from the repository. Typically because',
+ success: false,
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 769, output: 'list', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 766, output: 'done', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-333.00667343275376, -154.40816046144414],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'test',
+ display: 'yes',
+ success: false,
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ defaultValue: 'no',
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 764, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1756.7490443350143, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '764': {
+ id: 764,
+ data: {
+ code: '\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {output: [1,2,3]}\n}\n',
+ name: 'list return',
+ inputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ socketType: 'anySocket',
+ connectionType: 'input',
+ },
+ ],
+ display: '{"output":[1,2,3]}',
+ outputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ socketType: 'anySocket',
+ connectionType: 'output',
+ },
+ ],
+ success: false,
+ dataControls: {
+ code: { expanded: true },
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ },
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ output: {
+ connections: [{ node: 766, input: 'array', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 766, input: 'act1', data: { pins: [] } }],
+ },
+ },
+ position: [-1348.7560502830124, -331.3813133122548],
+ name: 'Code',
+ },
+ '766': {
+ id: 766,
+ data: { error: false },
+ inputs: {
+ act1: {
+ connections: [{ node: 764, output: 'trigger', data: { pins: [] } }],
+ },
+ array: {
+ connections: [{ node: 764, output: 'output', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ act: {
+ connections: [{ node: 767, input: 'trigger', data: { pins: [] } }],
+ },
+ element: {
+ connections: [{ node: 767, input: 'list', data: { pins: [] } }],
+ },
+ done: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-912.7229115653838, -394.39695880949944],
+ name: 'ForEach',
+ },
+ '767': {
+ id: 767,
+ data: {
+ inputs: [
+ {
+ name: 'list',
+ taskType: 'output',
+ socketKey: 'list',
+ socketType: 'anySocket',
+ connectionType: 'input',
+ },
+ ],
+ dataControls: { inputs: { expanded: true } },
+ },
+ inputs: {
+ list: {
+ connections: [{ node: 766, output: 'element', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 766, output: 'act', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-436.4064615045899, -505.59288512311963],
+ name: 'State Write',
+ },
+ '769': {
+ id: 769,
+ data: {
+ outputs: [
+ {
+ name: 'list',
+ taskType: 'output',
+ socketKey: 'list',
+ socketType: 'anySocket',
+ connectionType: 'output',
+ },
+ ],
+ dataControls: { outputs: { expanded: true } },
+ },
+ inputs: {},
+ outputs: {
+ list: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-898.2551611087029, -48.60770873229342],
+ name: 'State Read',
+ },
+ },
+ },
+ createdAt: '2022-06-01T22:46:39.699Z',
+ updatedAt: '2022-06-02T01:48:11.483Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: { list: [] },
+} as unknown as Spell
diff --git a/packages/core/data/generatorSpell.thoth b/packages/core/data/generatorSpell.thoth
new file mode 100644
index 000000000..f2d47690f
--- /dev/null
+++ b/packages/core/data/generatorSpell.thoth
@@ -0,0 +1 @@
+{"id":"3b7add2b-0f49-4c6b-8db9-18ecbb34602c","name":"square amaranth","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":499,"input":"trigger","data":{"pins":[]}}]}},"position":[-1556.5668566017482,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"Continue the story from here:\nOnce there was a poor dude. He had nothing. He lived in a village in the country, and he spent his days working fishing nets. It was a shitty job, and he always got cold and wet. He never had any decent clothes and he could never afford a beer at","socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true},"inputs":{"input":{"connections":[{"node":499,"output":"composed","data":{"pins":[]}}]},"trigger":{"connections":[{"node":499,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-761.8236637217791,-374.13333794248774],"name":"Output"},"499":{"id":499,"data":{"stop":"\\n","temp":"0.8","error":false,"inputs":[{"name":"input","taskType":"output","socketKey":"input","socketType":"anySocket","connectionType":"input"}],"fewshot":"{{input}}","maxTokens":50,"dataControls":{"name":{"expanded":true},"stop":{"expanded":true},"temp":{"expanded":true},"inputs":{"expanded":true},"fewshot":{"expanded":true},"maxTokens":{"expanded":true},"frequencyPenalty":{"expanded":true}}},"inputs":{"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"result":{"connections":[]},"composed":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-1145.130755699551,-375.2348763349078],"name":"Generator"},"646":{"id":646,"data":{"name":"input","text":"Input text here","socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"output":{"connections":[{"node":499,"input":"input","data":{"pins":[]}}]}},"position":[-1555.1553378286703,-376.7788066492969],"name":"Universal Input"}}},"createdAt":"2022-05-25T22:31:10.259Z","updatedAt":"2022-05-25T22:31:41.984Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"introText":"This is a simple AI generator app. Type anything and let the AI continue "}}
\ No newline at end of file
diff --git a/packages/core/data/generatorSpell.ts b/packages/core/data/generatorSpell.ts
new file mode 100644
index 000000000..9c7c83fa5
--- /dev/null
+++ b/packages/core/data/generatorSpell.ts
@@ -0,0 +1,140 @@
+import { Spell } from '../types'
+export default {
+ id: '3b7add2b-0f49-4c6b-8db9-18ecbb34602c',
+ name: 'square amaranth',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 499, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1556.5668566017482, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display:
+ 'Continue the story from here:\nOnce there was a poor dude. He had nothing. He lived in a village in the country, and he spent his days working fishing nets. It was a shitty job, and he always got cold and wet. He never had any decent clothes and he could never afford a beer at',
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ },
+ inputs: {
+ input: {
+ connections: [
+ { node: 499, output: 'composed', data: { pins: [] } },
+ ],
+ },
+ trigger: {
+ connections: [{ node: 499, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-761.8236637217791, -374.13333794248774],
+ name: 'Output',
+ },
+ '499': {
+ id: 499,
+ data: {
+ stop: '\\n',
+ temp: '0.8',
+ error: false,
+ inputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ socketType: 'anySocket',
+ connectionType: 'input',
+ },
+ ],
+ fewshot: '{{input}}',
+ maxTokens: 50,
+ dataControls: {
+ name: { expanded: true },
+ stop: { expanded: true },
+ temp: { expanded: true },
+ inputs: { expanded: true },
+ fewshot: { expanded: true },
+ maxTokens: { expanded: true },
+ frequencyPenalty: { expanded: true },
+ },
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ result: { connections: [] },
+ composed: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1145.130755699551, -375.2348763349078],
+ name: 'Generator',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'Input text here',
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 499, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.1553378286703, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ },
+ },
+ createdAt: '2022-05-25T22:31:10.259Z',
+ updatedAt: '2022-05-25T22:31:41.984Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {
+ introText:
+ 'This is a simple AI generator app. Type anything and let the AI continue ',
+ },
+} as unknown as Spell
diff --git a/packages/core/data/generatorSwitchSpell.thoth b/packages/core/data/generatorSwitchSpell.thoth
new file mode 100644
index 000000000..719d14a83
--- /dev/null
+++ b/packages/core/data/generatorSwitchSpell.thoth
@@ -0,0 +1 @@
+{"id":"3b7add2b-0f49-4c6b-8db9-18ecbb34602c","name":"wee silver","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"success":false},"inputs":{},"outputs":{"trigger":{"connections":[{"node":755,"input":"trigger","data":{"pins":[]}}]}},"position":[-1556.5668566017482,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"nope","socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true,"success":false},"inputs":{"input":{"connections":[{"node":756,"output":"result","data":{"pins":[]}},{"node":757,"output":"nope","data":{"pins":[]}}]},"trigger":{"connections":[{"node":756,"output":"trigger","data":{"pins":[]}},{"node":757,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-355.34246696789677,-379.7943353508476],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"no","socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"display":"no","success":false},"inputs":{},"outputs":{"output":{"connections":[{"node":755,"input":"input","data":{"pins":[]}}]}},"position":[-1555.1553378286703,-376.7788066492969],"name":"Universal Input"},"755":{"id":755,"data":{"dataControls":{"outputs":{"expanded":true}},"outputs":[{"name":"yes","taskType":"option","socketKey":"yes","connectionType":"output","socketType":"triggerSocket"},{"name":"no","taskType":"option","socketKey":"no","connectionType":"output","socketType":"triggerSocket"}],"success":false},"inputs":{"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"default":{"connections":[]},"yes":{"connections":[{"node":756,"input":"trigger","data":{"pins":[]}}]},"no":{"connections":[{"node":757,"input":"trigger","data":{"pins":[]}}]}},"position":[-1176.2411766908515,-306.22492046552907],"name":"Switch"},"756":{"id":756,"data":{"stop":"\\n","temp":0.7,"maxTokens":50,"error":false,"dataControls":{"name":{"expanded":true},"model":{"expanded":true},"inputs":{"expanded":true},"fewshot":{"expanded":true},"stop":{"expanded":true},"temp":{"expanded":true},"maxTokens":{"expanded":true},"frequencyPenalty":{"expanded":true}},"fewshot":"Generate","display":"s a printable report for a given period.\nGenerated report will have following sections.\nTotal number of accounts, Class A, Class B, Class C, Class D, Class E.\nTotal number of accounts with","success":false},"inputs":{"trigger":{"connections":[{"node":755,"output":"yes","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"result":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]},"composed":{"connections":[]}},"position":[-756.0054171828833,-686.5866282949149],"name":"Generator"},"757":{"id":757,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {nope: 'nope'}\n}\n","dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true},"code":{"expanded":true}},"outputs":[{"name":"nope","taskType":"output","socketKey":"nope","connectionType":"output","socketType":"anySocket"}],"display":"{\"nope\":\"nope\"}","success":false},"inputs":{"trigger":{"connections":[{"node":755,"output":"no","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"nope":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-763.6582824038765,-158.00935186007678],"name":"Code"}}},"createdAt":"2022-05-25T22:31:10.259Z","updatedAt":"2022-05-25T22:36:33.629Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"introText":"This is a simple AI generator app. Type anything and let the AI continue "}}
\ No newline at end of file
diff --git a/packages/core/data/generatorSwitchSpell.ts b/packages/core/data/generatorSwitchSpell.ts
new file mode 100644
index 000000000..ca99e1341
--- /dev/null
+++ b/packages/core/data/generatorSwitchSpell.ts
@@ -0,0 +1,220 @@
+import { Spell } from '../types'
+
+export default {
+ id: '3b7add2b-0f49-4c6b-8db9-18ecbb34602c',
+ name: 'wee silver',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 755, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1556.5668566017482, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display: 'nope',
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [
+ { node: 756, output: 'result', data: { pins: [] } },
+ { node: 757, output: 'nope', data: { pins: [] } },
+ ],
+ },
+ trigger: {
+ connections: [
+ { node: 756, output: 'trigger', data: { pins: [] } },
+ { node: 757, output: 'trigger', data: { pins: [] } },
+ ],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-355.34246696789677, -379.7943353508476],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'no',
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ display: 'no',
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 755, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.1553378286703, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '755': {
+ id: 755,
+ data: {
+ dataControls: { outputs: { expanded: true } },
+ outputs: [
+ {
+ name: 'yes',
+ taskType: 'option',
+ socketKey: 'yes',
+ connectionType: 'output',
+ socketType: 'triggerSocket',
+ },
+ {
+ name: 'no',
+ taskType: 'option',
+ socketKey: 'no',
+ connectionType: 'output',
+ socketType: 'triggerSocket',
+ },
+ ],
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ default: { connections: [] },
+ yes: {
+ connections: [{ node: 756, input: 'trigger', data: { pins: [] } }],
+ },
+ no: {
+ connections: [{ node: 757, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1176.2411766908515, -306.22492046552907],
+ name: 'Switch',
+ },
+ '756': {
+ id: 756,
+ data: {
+ stop: '\\n',
+ temp: 0.7,
+ maxTokens: 50,
+ error: false,
+ dataControls: {
+ name: { expanded: true },
+ model: { expanded: true },
+ inputs: { expanded: true },
+ fewshot: { expanded: true },
+ stop: { expanded: true },
+ temp: { expanded: true },
+ maxTokens: { expanded: true },
+ frequencyPenalty: { expanded: true },
+ },
+ fewshot: 'Generate',
+ display:
+ 's a printable report for a given period.\nGenerated report will have following sections.\nTotal number of accounts, Class A, Class B, Class C, Class D, Class E.\nTotal number of accounts with',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 755, output: 'yes', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ result: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ composed: { connections: [] },
+ },
+ position: [-756.0054171828833, -686.5866282949149],
+ name: 'Generator',
+ },
+ '757': {
+ id: 757,
+ data: {
+ code: "\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {nope: 'nope'}\n}\n",
+ dataControls: {
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ outputs: [
+ {
+ name: 'nope',
+ taskType: 'output',
+ socketKey: 'nope',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ display: '{"nope":"nope"}',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 755, output: 'no', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ nope: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-763.6582824038765, -158.00935186007678],
+ name: 'Code',
+ },
+ },
+ },
+ createdAt: '2022-05-25T22:31:10.259Z',
+ updatedAt: '2022-05-25T22:36:33.629Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {
+ introText:
+ 'This is a simple AI generator app. Type anything and let the AI continue ',
+ },
+} as unknown as Spell
diff --git a/packages/core/data/imageGeneratorSpell.thoth b/packages/core/data/imageGeneratorSpell.thoth
new file mode 100644
index 000000000..5aeafa606
--- /dev/null
+++ b/packages/core/data/imageGeneratorSpell.thoth
@@ -0,0 +1 @@
+{"id":"3b7add2b-0f49-4c6b-8db9-18ecbb34602c","name":"like coral","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"success":false},"inputs":{},"outputs":{"trigger":{"connections":[{"node":758,"input":"trigger","data":{"pins":[]}}]}},"position":[-1556.5668566017482,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"https://aidungeon-images.s3.us-east-2.amazonaws.com/generated_images/7ceeda0b-b9a6-4c8e-a8a8-7f5b32af5c80.png","socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true,"success":false},"inputs":{"input":{"connections":[{"node":760,"output":"image","data":{"pins":[]}}]},"trigger":{"connections":[{"node":760,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-376.65549182217944,-309.8030022739871],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"image","socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"display":"image","success":false},"inputs":{},"outputs":{"output":{"connections":[{"node":758,"input":"caption","data":{"pins":[]}}]}},"position":[-1555.1553378286703,-376.7788066492969],"name":"Universal Input"},"758":{"id":758,"data":{"success":false},"inputs":{"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]},"caption":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":760,"input":"trigger","data":{"pins":[]}}]},"images":{"connections":[{"node":760,"input":"images","data":{"pins":[]}}]}},"position":[-1133.9388446003131,-290.6268952113074],"name":"VisualGeneration"},"760":{"id":760,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {image: inputs.images[0].imageUrl}\n}\n","dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true},"code":{"expanded":true}},"inputs":[{"name":"images","taskType":"output","socketKey":"images","connectionType":"input","socketType":"anySocket"}],"outputs":[{"name":"image","taskType":"output","socketKey":"image","connectionType":"output","socketType":"anySocket"}],"display":"{\"image\":\"https://aidungeon-images.s3.us-east-2.amazonaws.com/generated_images/7ceeda0b-b9a6-4c8e-a8a8-7f5b32af5c80.png\"}","success":false},"inputs":{"trigger":{"connections":[{"node":758,"output":"trigger","data":{"pins":[]}}]},"images":{"connections":[{"node":758,"output":"images","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"image":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-764.5575615198208,-302.86167492665004],"name":"Code"}}},"createdAt":"2022-05-25T22:31:10.259Z","updatedAt":"2022-05-25T22:38:42.619Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"introText":"This is a simple AI generator app. Type anything and let the AI continue "}}
\ No newline at end of file
diff --git a/packages/core/data/imageGeneratorSpell.ts b/packages/core/data/imageGeneratorSpell.ts
new file mode 100644
index 000000000..6614908ea
--- /dev/null
+++ b/packages/core/data/imageGeneratorSpell.ts
@@ -0,0 +1,169 @@
+import { Spell } from '../types'
+
+export default {
+ id: '3b7add2b-0f49-4c6b-8db9-18ecbb34602c',
+ name: 'like coral',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 758, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1556.5668566017482, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display:
+ 'https://aidungeon-images.s3.us-east-2.amazonaws.com/generated_images/7ceeda0b-b9a6-4c8e-a8a8-7f5b32af5c80.png',
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 760, output: 'image', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 760, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-376.65549182217944, -309.8030022739871],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'image',
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ display: 'image',
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 758, input: 'caption', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.1553378286703, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '758': {
+ id: 758,
+ data: { success: false },
+ inputs: {
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ caption: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 760, input: 'trigger', data: { pins: [] } }],
+ },
+ images: {
+ connections: [{ node: 760, input: 'images', data: { pins: [] } }],
+ },
+ },
+ position: [-1133.9388446003131, -290.6268952113074],
+ name: 'VisualGeneration',
+ },
+ '760': {
+ id: 760,
+ data: {
+ code: '\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {image: inputs.images[0].imageUrl}\n}\n',
+ dataControls: {
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ inputs: [
+ {
+ name: 'images',
+ taskType: 'output',
+ socketKey: 'images',
+ connectionType: 'input',
+ socketType: 'anySocket',
+ },
+ ],
+ outputs: [
+ {
+ name: 'image',
+ taskType: 'output',
+ socketKey: 'image',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ display:
+ '{"image":"https://aidungeon-images.s3.us-east-2.amazonaws.com/generated_images/7ceeda0b-b9a6-4c8e-a8a8-7f5b32af5c80.png"}',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 758, output: 'trigger', data: { pins: [] } }],
+ },
+ images: {
+ connections: [{ node: 758, output: 'images', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ image: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-764.5575615198208, -302.86167492665004],
+ name: 'Code',
+ },
+ },
+ },
+ createdAt: '2022-05-25T22:31:10.259Z',
+ updatedAt: '2022-05-25T22:38:42.619Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {
+ introText:
+ 'This is a simple AI generator app. Type anything and let the AI continue ',
+ },
+} as unknown as Spell
diff --git a/packages/core/data/inputOutputSpell.thoth b/packages/core/data/inputOutputSpell.thoth
new file mode 100644
index 000000000..67e770656
--- /dev/null
+++ b/packages/core/data/inputOutputSpell.thoth
@@ -0,0 +1 @@
+{"id":"3e645657-ec88-43e7-9b4d-6c177219c8f2","name":"modest bronze","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","dataControls":{"name":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]}},"position":[-1555.4724883179474,-132.7648214211178],"name":"Module Trigger In"},"232":{"id":232,"data":{"name":"Input","text":"Input text here","outputs":[],"socketKey":"9d61118c-3c5a-4379-9dae-41965e56207f","dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"defaultValue":"Input text here","playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"output":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-1554.8394720686588,-362.87891510530955],"name":"Universal Input"},"233":{"id":233,"data":{"name":"output-233","socketKey":"5fc83754-ddf3-43fc-a7e2-992c5009f853","dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true},"inputs":{"input":{"connections":[{"node":232,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-1134.1518031360474,-300.2158528655752],"name":"Output"}}},"createdAt":"2022-06-08T03:41:18.512Z","updatedAt":"2022-06-08T03:41:18.512Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{}}
\ No newline at end of file
diff --git a/packages/core/data/inputOutputSpell.ts b/packages/core/data/inputOutputSpell.ts
new file mode 100644
index 000000000..03e9ef938
--- /dev/null
+++ b/packages/core/data/inputOutputSpell.ts
@@ -0,0 +1,80 @@
+import { Spell } from './../types'
+export default {
+ id: '3e645657-ec88-43e7-9b4d-6c177219c8f2',
+ name: 'modest bronze',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ dataControls: { name: { expanded: true } },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.4724883179474, -132.7648214211178],
+ name: 'Module Trigger In',
+ },
+ '232': {
+ id: 232,
+ data: {
+ name: 'Input',
+ text: 'Input text here',
+ outputs: [],
+ socketKey: '9d61118c-3c5a-4379-9dae-41965e56207f',
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ defaultValue: 'Input text here',
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1554.8394720686588, -362.87891510530955],
+ name: 'Universal Input',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output-233',
+ socketKey: '5fc83754-ddf3-43fc-a7e2-992c5009f853',
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 232, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-1134.1518031360474, -300.2158528655752],
+ name: 'Output',
+ },
+ },
+ },
+ createdAt: '2022-06-08T03:41:18.512Z',
+ updatedAt: '2022-06-08T03:41:18.512Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {},
+} as unknown as Spell
diff --git a/packages/core/data/joinListSpell.thoth b/packages/core/data/joinListSpell.thoth
new file mode 100644
index 000000000..a097019f8
--- /dev/null
+++ b/packages/core/data/joinListSpell.thoth
@@ -0,0 +1 @@
+{"id":"9b970450-4a0f-43cd-8763-ce0920f9ce1e","name":"inappropriate apricot","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"success":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":764,"input":"trigger","data":{"pins":[]}}]}},"position":[-1735.7923282597962,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"1 2 3","success":false,"socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true},"inputs":{"input":{"connections":[{"node":771,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":771,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-33.11208105562871,-319.205540485338],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"test","display":"test","success":false,"socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"defaultValue":"no","playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"output":{"connections":[{"node":764,"input":"input","data":{"pins":[]}}]}},"position":[-1756.7490443350143,-376.7788066492969],"name":"Universal Input"},"764":{"id":764,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {output: [1,2,3]}\n}\n","name":"list return","inputs":[{"name":"input","taskType":"output","socketKey":"input","socketType":"anySocket","connectionType":"input"}],"display":"{\"output\":[1,2,3]}","outputs":[{"name":"output","taskType":"output","socketKey":"output","socketType":"anySocket","connectionType":"output"}],"success":false,"dataControls":{"code":{"expanded":true},"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true}}},"inputs":{"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"output":{"connections":[{"node":770,"input":"list","data":{"pins":[]}}]},"trigger":{"connections":[{"node":771,"input":"trigger","data":{"pins":[]}}]}},"position":[-1348.7560502830124,-331.3813133122548],"name":"Code"},"770":{"id":770,"data":{"separator":" ","success":false},"inputs":{"list":{"connections":[{"node":764,"output":"output","data":{"pins":[]}}]}},"outputs":{"text":{"connections":[{"node":771,"input":"output","data":{"pins":[]}}]}},"position":[-937.1562595051406,-331.62751718913506],"name":"Join List"},"771":{"id":771,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return inputs\n}\n","dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true},"code":{"expanded":true}},"inputs":[{"name":"output","taskType":"output","socketKey":"output","connectionType":"input","socketType":"anySocket"}],"outputs":[{"name":"output","taskType":"output","socketKey":"output","connectionType":"output","socketType":"anySocket"}],"display":"{\"output\":\"1 2 3\"}","success":false},"inputs":{"trigger":{"connections":[{"node":764,"output":"trigger","data":{"pins":[]}}]},"output":{"connections":[{"node":770,"output":"text","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"output":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-449.8833497648249,-311.4641422266668],"name":"Code"}}},"createdAt":"2022-06-01T22:46:39.699Z","updatedAt":"2022-06-02T01:50:25.520Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"list":[]}}
\ No newline at end of file
diff --git a/packages/core/data/joinListSpell.ts b/packages/core/data/joinListSpell.ts
new file mode 100644
index 000000000..816e57ca9
--- /dev/null
+++ b/packages/core/data/joinListSpell.ts
@@ -0,0 +1,209 @@
+import { Spell } from './../types'
+export default {
+ id: '9b970450-4a0f-43cd-8763-ce0920f9ce1e',
+ name: 'inappropriate apricot',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ success: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 764, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1735.7923282597962, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display: '1 2 3',
+ success: false,
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 771, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 771, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-33.11208105562871, -319.205540485338],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'test',
+ display: 'test',
+ success: false,
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ defaultValue: 'no',
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 764, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1756.7490443350143, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '764': {
+ id: 764,
+ data: {
+ code: '\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {output: [1,2,3]}\n}\n',
+ name: 'list return',
+ inputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ socketType: 'anySocket',
+ connectionType: 'input',
+ },
+ ],
+ display: '{"output":[1,2,3]}',
+ outputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ socketType: 'anySocket',
+ connectionType: 'output',
+ },
+ ],
+ success: false,
+ dataControls: {
+ code: { expanded: true },
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ },
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ output: {
+ connections: [{ node: 770, input: 'list', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 771, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1348.7560502830124, -331.3813133122548],
+ name: 'Code',
+ },
+ '770': {
+ id: 770,
+ data: { separator: ' ', success: false },
+ inputs: {
+ list: {
+ connections: [{ node: 764, output: 'output', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ text: {
+ connections: [{ node: 771, input: 'output', data: { pins: [] } }],
+ },
+ },
+ position: [-937.1562595051406, -331.62751718913506],
+ name: 'Join List',
+ },
+ '771': {
+ id: 771,
+ data: {
+ code: '\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return inputs\n}\n',
+ dataControls: {
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ inputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ connectionType: 'input',
+ socketType: 'anySocket',
+ },
+ ],
+ outputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ display: '{"output":"1 2 3"}',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 764, output: 'trigger', data: { pins: [] } }],
+ },
+ output: {
+ connections: [{ node: 770, output: 'text', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ output: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-449.8833497648249, -311.4641422266668],
+ name: 'Code',
+ },
+ },
+ },
+ createdAt: '2022-06-01T22:46:39.699Z',
+ updatedAt: '2022-06-02T01:50:25.520Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: { list: [] },
+} as unknown as Spell
diff --git a/packages/core/data/parentSpell.thoth b/packages/core/data/parentSpell.thoth
new file mode 100644
index 000000000..40cb1e718
--- /dev/null
+++ b/packages/core/data/parentSpell.thoth
@@ -0,0 +1 @@
+{"id":"801b7a36-9468-402a-8ecd-aed4038dfcd5","name":"whole amethyst","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","dataControls":{"name":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"success":false},"inputs":{},"outputs":{"trigger":{"connections":[{"node":238,"input":"20c0d2db-1916-433f-88c6-69d3ae123217","data":{"pins":[]}}]}},"position":[-1555.4724883179474,-132.7648214211178],"name":"Module Trigger In"},"232":{"id":232,"data":{"name":"Input","text":"test","outputs":[],"socketKey":"9d61118c-3c5a-4379-9dae-41965e56207f","dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true},"useDefault":{"expanded":true}},"defaultValue":"Input text here","playtestToggle":{"receivePlaytest":true},"display":"test","success":false},"inputs":{},"outputs":{"output":{"connections":[{"node":238,"input":"9d61118c-3c5a-4379-9dae-41965e56207f","data":{"pins":[]}}]}},"position":[-1554.5293524397525,-362.87500885530955],"name":"Universal Input"},"233":{"id":233,"data":{"name":"output-233","socketKey":"79aca82e-995f-451c-aa3b-8abe81e30cdb","display":"test","success":false},"inputs":{"input":{"connections":[{"node":238,"output":"940dc29f-91be-4d23-88a6-2b91d41aef15","data":{"pins":[]}}]},"trigger":{"connections":[{"node":238,"output":"02de01cf-48c8-4a90-b9ac-997fb3ce9cf5","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-758.8511439563598,-344.4560872405752],"name":"Output"},"238":{"id":238,"data":{"name":"bored ivory","spell":"bored ivory","inputs":[{"name":"Input","taskType":"output","socketKey":"9d61118c-3c5a-4379-9dae-41965e56207f","socketType":"anySocket","useSocketName":true,"connectionType":"input"},{"name":"default","taskType":"option","socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","socketType":"triggerSocket","useSocketName":true,"connectionType":"input"}],"outputs":[{"name":"output-233","taskType":"output","socketKey":"940dc29f-91be-4d23-88a6-2b91d41aef15","socketType":"anySocket","useSocketName":true,"connectionType":"output"},{"name":"trigger-out-247","taskType":"option","socketKey":"02de01cf-48c8-4a90-b9ac-997fb3ce9cf5","socketType":"triggerSocket","useSocketName":true,"connectionType":"output"}],"spellId":"bored ivory","dataControls":{"spell":{"expanded":true}},"display":"{\"output-233\":\"test\"}","success":false},"inputs":{"9d61118c-3c5a-4379-9dae-41965e56207f":{"connections":[{"node":232,"output":"output","data":{"pins":[]}}]},"20c0d2db-1916-433f-88c6-69d3ae123217":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"940dc29f-91be-4d23-88a6-2b91d41aef15":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]},"02de01cf-48c8-4a90-b9ac-997fb3ce9cf5":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]}},"position":[-1138.9208374023438,-368.720703125],"name":"Spell"}}},"createdAt":"2022-06-10T06:48:49.841Z","updatedAt":"2022-06-07T23:26:14.112Z","deletedAt":null,"userId":"29476106","modules":[],"gameState":null}
\ No newline at end of file
diff --git a/packages/core/data/parentSpell.ts b/packages/core/data/parentSpell.ts
new file mode 100644
index 000000000..d3e50782e
--- /dev/null
+++ b/packages/core/data/parentSpell.ts
@@ -0,0 +1,169 @@
+import { Spell } from '@latitudegames/thoth-core/dist/types'
+export default {
+ id: '801b7a36-9468-402a-8ecd-aed4038dfcd5',
+ name: 'whole amethyst',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ dataControls: { name: { expanded: true } },
+ playtestToggle: { receivePlaytest: true },
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [
+ {
+ node: 238,
+ input: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ data: { pins: [] },
+ },
+ ],
+ },
+ },
+ position: [-1555.4724883179474, -132.7648214211178],
+ name: 'Module Trigger In',
+ },
+ '232': {
+ id: 232,
+ data: {
+ name: 'Input',
+ text: 'test',
+ outputs: [],
+ socketKey: '9d61118c-3c5a-4379-9dae-41965e56207f',
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ useDefault: { expanded: true },
+ },
+ defaultValue: 'Input text here',
+ playtestToggle: { receivePlaytest: true },
+ display: 'test',
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [
+ {
+ node: 238,
+ input: '9d61118c-3c5a-4379-9dae-41965e56207f',
+ data: { pins: [] },
+ },
+ ],
+ },
+ },
+ position: [-1554.5293524397525, -362.87500885530955],
+ name: 'Universal Input',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output-233',
+ socketKey: '79aca82e-995f-451c-aa3b-8abe81e30cdb',
+ display: 'test',
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [
+ {
+ node: 238,
+ output: '940dc29f-91be-4d23-88a6-2b91d41aef15',
+ data: { pins: [] },
+ },
+ ],
+ },
+ trigger: {
+ connections: [
+ {
+ node: 238,
+ output: '02de01cf-48c8-4a90-b9ac-997fb3ce9cf5',
+ data: { pins: [] },
+ },
+ ],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-758.8511439563598, -344.4560872405752],
+ name: 'Output',
+ },
+ '238': {
+ id: 238,
+ data: {
+ name: 'expected amethyst',
+ spell: 'expected amethyst',
+ inputs: [
+ {
+ name: 'Input',
+ taskType: 'output',
+ socketKey: '9d61118c-3c5a-4379-9dae-41965e56207f',
+ socketType: 'anySocket',
+ useSocketName: true,
+ connectionType: 'input',
+ },
+ {
+ name: 'default',
+ taskType: 'option',
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ socketType: 'triggerSocket',
+ useSocketName: true,
+ connectionType: 'input',
+ },
+ ],
+ outputs: [
+ {
+ name: 'output-233',
+ taskType: 'output',
+ socketKey: '940dc29f-91be-4d23-88a6-2b91d41aef15',
+ socketType: 'anySocket',
+ useSocketName: true,
+ connectionType: 'output',
+ },
+ {
+ name: 'trigger-out-247',
+ taskType: 'option',
+ socketKey: '02de01cf-48c8-4a90-b9ac-997fb3ce9cf5',
+ socketType: 'triggerSocket',
+ useSocketName: true,
+ connectionType: 'output',
+ },
+ ],
+ spellId: 'expected amethyst',
+ dataControls: { spell: { expanded: true } },
+ display: '{"output-233":"test"}',
+ success: false,
+ },
+ inputs: {
+ '9d61118c-3c5a-4379-9dae-41965e56207f': {
+ connections: [{ node: 232, output: 'output', data: { pins: [] } }],
+ },
+ '20c0d2db-1916-433f-88c6-69d3ae123217': {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ '940dc29f-91be-4d23-88a6-2b91d41aef15': {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ '02de01cf-48c8-4a90-b9ac-997fb3ce9cf5': {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1138.9208374023438, -368.720703125],
+ name: 'Spell',
+ },
+ },
+ },
+ createdAt: '2022-06-10T06:48:49.841Z',
+ updatedAt: '2022-06-07T23:26:14.112Z',
+ deletedAt: null,
+ userId: '29476106',
+ modules: [],
+ gameState: null,
+} as unknown as Spell
diff --git a/packages/core/data/readWriteStateSpell.thoth b/packages/core/data/readWriteStateSpell.thoth
new file mode 100644
index 000000000..083c3b2f0
--- /dev/null
+++ b/packages/core/data/readWriteStateSpell.thoth
@@ -0,0 +1 @@
+{"id":"3b7add2b-0f49-4c6b-8db9-18ecbb34602c","name":"ridiculous orange","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"success":false},"inputs":{},"outputs":{"trigger":{"connections":[{"node":763,"input":"trigger","data":{"pins":[]}}]}},"position":[-1556.5668566017482,-114.13292905935491],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"test","socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true,"success":false},"inputs":{"input":{"connections":[{"node":764,"output":"input","data":{"pins":[]}}]},"trigger":{"connections":[{"node":764,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-362.4726875921044,-309.7961029517374],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"test","socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"display":"test","success":false},"inputs":{},"outputs":{"output":{"connections":[{"node":763,"input":"input","data":{"pins":[]}}]}},"position":[-1555.1553378286703,-376.7788066492969],"name":"Universal Input"},"763":{"id":763,"data":{"dataControls":{"inputs":{"expanded":true}},"inputs":[{"name":"input","taskType":"output","socketKey":"input","connectionType":"input","socketType":"anySocket"}],"success":false},"inputs":{"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]},"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":764,"input":"trigger","data":{"pins":[]}}]}},"position":[-1145.6038660676775,-248.81348929917337],"name":"State Write"},"764":{"id":764,"data":{"code":"\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return inputs\n}\n","dataControls":{"name":{"expanded":true},"inputs":{"expanded":true},"outputs":{"expanded":true},"code":{"expanded":true}},"inputs":[{"name":"input","taskType":"output","socketKey":"input","connectionType":"input","socketType":"anySocket"}],"outputs":[{"name":"input","taskType":"output","socketKey":"input","connectionType":"output","socketType":"anySocket"}],"display":"{\"input\":\"test\"}","success":false},"inputs":{"trigger":{"connections":[{"node":763,"output":"trigger","data":{"pins":[]}}]},"input":{"connections":[{"node":765,"output":"input","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"input":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-782.550724272031,-514.965542121559],"name":"Code"},"765":{"id":765,"data":{"dataControls":{"outputs":{"expanded":true}},"outputs":[{"name":"input","taskType":"output","socketKey":"input","connectionType":"output","socketType":"anySocket"}],"success":false},"inputs":{},"outputs":{"input":{"connections":[{"node":764,"input":"input","data":{"pins":[]}}]}},"position":[-1166.008967431614,-530.4797901925313],"name":"State Read"}}},"createdAt":"2022-05-25T22:31:10.259Z","updatedAt":"2022-05-25T22:42:08.703Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"input":"test","introText":"This is a simple AI generator app. Type anything and let the AI continue ","stateValue":"value"}}
\ No newline at end of file
diff --git a/packages/core/data/readWriteStateSpell.ts b/packages/core/data/readWriteStateSpell.ts
new file mode 100644
index 000000000..560bbb214
--- /dev/null
+++ b/packages/core/data/readWriteStateSpell.ts
@@ -0,0 +1,202 @@
+import { Spell } from '../types'
+
+export default {
+ id: '3b7add2b-0f49-4c6b-8db9-18ecbb34602c',
+ name: 'ridiculous orange',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 763, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1556.5668566017482, -114.13292905935491],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display: 'test',
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 764, output: 'input', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 764, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-362.4726875921044, -309.7961029517374],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'test',
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ display: 'test',
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 763, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.1553378286703, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '763': {
+ id: 763,
+ data: {
+ dataControls: { inputs: { expanded: true } },
+ inputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ connectionType: 'input',
+ socketType: 'anySocket',
+ },
+ ],
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 764, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1145.6038660676775, -248.81348929917337],
+ name: 'State Write',
+ },
+ '764': {
+ id: 764,
+ data: {
+ code: '\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return inputs\n}\n',
+ dataControls: {
+ name: { expanded: true },
+ inputs: { expanded: true },
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ inputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ connectionType: 'input',
+ socketType: 'anySocket',
+ },
+ ],
+ outputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ display: '{"input":"test"}',
+ success: false,
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 763, output: 'trigger', data: { pins: [] } }],
+ },
+ input: {
+ connections: [{ node: 765, output: 'input', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ input: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-782.550724272031, -514.965542121559],
+ name: 'Code',
+ },
+ '765': {
+ id: 765,
+ data: {
+ dataControls: { outputs: { expanded: true } },
+ outputs: [
+ {
+ name: 'input',
+ taskType: 'output',
+ socketKey: 'input',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ input: {
+ connections: [{ node: 764, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1166.008967431614, -530.4797901925313],
+ name: 'State Read',
+ },
+ },
+ },
+ createdAt: '2022-05-25T22:31:10.259Z',
+ updatedAt: '2022-05-25T22:42:08.703Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: {
+ input: 'test',
+ introText:
+ 'This is a simple AI generator app. Type anything and let the AI continue ',
+ stateValue: 'value',
+ },
+} as unknown as Spell
diff --git a/packages/core/data/stateReadOutputSpell.thoth b/packages/core/data/stateReadOutputSpell.thoth
new file mode 100644
index 000000000..c946195f5
--- /dev/null
+++ b/packages/core/data/stateReadOutputSpell.thoth
@@ -0,0 +1 @@
+{"id":"3e645657-ec88-43e7-9b4d-6c177219c8f2","name":"genetic crimson","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","dataControls":{"name":{"expanded":true}},"playtestToggle":{"receivePlaytest":true},"success":false},"inputs":{},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]}},"position":[-1555.4724883179474,-132.7648214211178],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output-233","socketKey":"5fc83754-ddf3-43fc-a7e2-992c5009f853","dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true,"display":"stateOutput","success":false},"inputs":{"input":{"connections":[{"node":776,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-971.6674208065258,-230.93850108116374],"name":"Output"},"776":{"id":776,"data":{"dataControls":{"outputs":{"expanded":true}},"outputs":[{"name":"output","taskType":"output","socketKey":"output","connectionType":"output","socketType":"anySocket"}],"success":false},"inputs":{},"outputs":{"output":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-1349.40625,-385.50390625],"name":"State Read"}}},"createdAt":"2022-06-09T15:41:18.512Z","updatedAt":"2022-06-08T03:42:12.331Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"output":"stateOutput"}}
\ No newline at end of file
diff --git a/packages/core/data/stateReadOutputSpell.ts b/packages/core/data/stateReadOutputSpell.ts
new file mode 100644
index 000000000..991e1afb0
--- /dev/null
+++ b/packages/core/data/stateReadOutputSpell.ts
@@ -0,0 +1,84 @@
+import { Spell } from '../types'
+
+export default {
+ id: '3e645657-ec88-43e7-9b4d-6c177219c8f2',
+ name: 'genetic crimson',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ dataControls: { name: { expanded: true } },
+ playtestToggle: { receivePlaytest: true },
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.4724883179474, -132.7648214211178],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output-233',
+ socketKey: '5fc83754-ddf3-43fc-a7e2-992c5009f853',
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ display: 'stateOutput',
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 776, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-971.6674208065258, -230.93850108116374],
+ name: 'Output',
+ },
+ '776': {
+ id: 776,
+ data: {
+ dataControls: { outputs: { expanded: true } },
+ outputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ connectionType: 'output',
+ socketType: 'anySocket',
+ },
+ ],
+ success: false,
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1349.40625, -385.50390625],
+ name: 'State Read',
+ },
+ },
+ },
+ createdAt: '2022-06-09T15:41:18.512Z',
+ updatedAt: '2022-06-08T03:42:12.331Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: { output: 'stateOutput' },
+} as unknown as Spell
diff --git a/packages/core/data/stringProcessorSpell.thoth b/packages/core/data/stringProcessorSpell.thoth
new file mode 100644
index 000000000..a0d009481
--- /dev/null
+++ b/packages/core/data/stringProcessorSpell.thoth
@@ -0,0 +1 @@
+{"id":"9b970450-4a0f-43cd-8763-ce0920f9ce1e","name":"gradual blush","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","error":false,"success":false,"socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","nodeLocked":true,"dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":772,"input":"trigger","data":{"pins":[]}}]}},"position":[-1756.3467650623343,-115.72306980887628],"name":"Module Trigger In"},"233":{"id":233,"data":{"name":"output","error":false,"display":"You said test!","success":false,"socketKey":"ba6ed95b-3aac-49e9-91ae-a33f5510c83b","nodeLocked":true,"dataControls":{"name":{"expanded":true},"sendToPlaytest":{"expanded":true}},"sendToPlaytest":true},"inputs":{"input":{"connections":[{"node":772,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":772,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[]}},"position":[-995.0405138261826,-295.3801234200136],"name":"Output"},"646":{"id":646,"data":{"name":"input","text":"test","display":"test","success":false,"socketKey":"3a9cfde5-32a0-4e96-9de7-7571a7a4e784","nodeLocked":true,"dataControls":{"name":{"expanded":true},"useDefault":{"expanded":true},"playtestToggle":{"expanded":true}},"defaultValue":"no","playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"output":{"connections":[{"node":772,"input":"input","data":{"pins":[]}}]}},"position":[-1756.7490443350143,-376.7788066492969],"name":"Universal Input"},"772":{"id":772,"data":{"code":"(inputStr) => {\n return { \"output\": `You said ${inputStr}!` }\n}","dataControls":{"outputs":{"expanded":true},"code":{"expanded":true}},"outputs":[{"name":"output","taskType":"output","socketKey":"output","connectionType":"output","socketType":"stringSocket"}],"success":false},"inputs":{"input":{"connections":[{"node":646,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"output":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-1386.0319940412824,-303.81826315707195],"name":"String Processor"}}},"createdAt":"2022-06-01T22:46:39.699Z","updatedAt":"2022-06-02T01:54:30.536Z","deletedAt":null,"userId":"2508068","modules":[],"gameState":{"list":[]}}
\ No newline at end of file
diff --git a/packages/core/data/stringProcessorSpell.ts b/packages/core/data/stringProcessorSpell.ts
new file mode 100644
index 000000000..01959362a
--- /dev/null
+++ b/packages/core/data/stringProcessorSpell.ts
@@ -0,0 +1,130 @@
+import { Spell } from './../types'
+export default {
+ id: '9b970450-4a0f-43cd-8763-ce0920f9ce1e',
+ name: 'gradual blush',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ error: false,
+ success: false,
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 772, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1756.3467650623343, -115.72306980887628],
+ name: 'Module Trigger In',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output',
+ error: false,
+ display: 'You said test!',
+ success: false,
+ socketKey: 'ba6ed95b-3aac-49e9-91ae-a33f5510c83b',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ sendToPlaytest: { expanded: true },
+ },
+ sendToPlaytest: true,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 772, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 772, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: { trigger: { connections: [] } },
+ position: [-995.0405138261826, -295.3801234200136],
+ name: 'Output',
+ },
+ '646': {
+ id: 646,
+ data: {
+ name: 'input',
+ text: 'test',
+ display: 'test',
+ success: false,
+ socketKey: '3a9cfde5-32a0-4e96-9de7-7571a7a4e784',
+ nodeLocked: true,
+ dataControls: {
+ name: { expanded: true },
+ useDefault: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ defaultValue: 'no',
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [{ node: 772, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1756.7490443350143, -376.7788066492969],
+ name: 'Universal Input',
+ },
+ '772': {
+ id: 772,
+ data: {
+ code: '(inputStr) => {\n return { "output": `You said ${inputStr}!` }\n}',
+ dataControls: {
+ outputs: { expanded: true },
+ code: { expanded: true },
+ },
+ outputs: [
+ {
+ name: 'output',
+ taskType: 'output',
+ socketKey: 'output',
+ connectionType: 'output',
+ socketType: 'stringSocket',
+ },
+ ],
+ success: false,
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 646, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ output: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1386.0319940412824, -303.81826315707195],
+ name: 'String Processor',
+ },
+ },
+ },
+ createdAt: '2022-06-01T22:46:39.699Z',
+ updatedAt: '2022-06-02T01:54:30.536Z',
+ deletedAt: null,
+ userId: '2508068',
+ modules: [],
+ gameState: { list: [] },
+} as unknown as Spell
diff --git a/packages/core/data/subSpell.thoth b/packages/core/data/subSpell.thoth
new file mode 100644
index 000000000..1a0105921
--- /dev/null
+++ b/packages/core/data/subSpell.thoth
@@ -0,0 +1 @@
+{"id":"e19d34b1-65ac-42ff-ac98-88b8cd14cf6a","name":"expected amethyst","chain":{"id":"demo@0.1.0","nodes":{"124":{"id":124,"data":{"name":"default","socketKey":"20c0d2db-1916-433f-88c6-69d3ae123217","dataControls":{"name":{"expanded":true}},"playtestToggle":{"receivePlaytest":true}},"inputs":{},"outputs":{"trigger":{"connections":[{"node":246,"input":"trigger","data":{"pins":[]}}]}},"position":[-1555.4724883179474,-132.7648214211178],"name":"Module Trigger In"},"232":{"id":232,"data":{"name":"Input","text":"Input text here","outputs":[],"socketKey":"9d61118c-3c5a-4379-9dae-41965e56207f","dataControls":{"name":{"expanded":true},"playtestToggle":{"expanded":true}},"defaultValue":"Input text here","playtestToggle":{"outputs":[],"receivePlaytest":false}},"inputs":{},"outputs":{"output":{"connections":[{"node":246,"input":"string","data":{"pins":[{"x":-1219.0300903320312,"y":-278.76190185546875}]}}]}},"position":[-1554.8394720686588,-362.87500885530955],"name":"Universal Input"},"233":{"id":233,"data":{"name":"output-233","socketKey":"940dc29f-91be-4d23-88a6-2b91d41aef15"},"inputs":{"input":{"connections":[{"node":246,"output":"output","data":{"pins":[]}}]},"trigger":{"connections":[{"node":246,"output":"trigger","data":{"pins":[]}}]}},"outputs":{"trigger":{"connections":[{"node":247,"input":"trigger","data":{"pins":[]}}]}},"position":[-783.9329310657348,-406.1566487640127],"name":"Output"},"246":{"id":246,"data":{},"inputs":{"trigger":{"connections":[{"node":124,"output":"trigger","data":{"pins":[]}}]},"string":{"connections":[{"node":232,"output":"output","data":{"pins":[{"x":-1219.0300903320312,"y":-278.76190185546875}]}}]}},"outputs":{"trigger":{"connections":[{"node":233,"input":"trigger","data":{"pins":[]}}]},"output":{"connections":[{"node":233,"input":"input","data":{"pins":[]}}]}},"position":[-1179.3508911132812,-273.85870361328125],"name":"Echo"},"247":{"id":247,"data":{"name":"trigger-out-247","socketKey":"02de01cf-48c8-4a90-b9ac-997fb3ce9cf5"},"inputs":{"trigger":{"connections":[{"node":233,"output":"trigger","data":{"pins":[]}}]}},"outputs":{},"position":[-689.080810546875,-83.10272216796875],"name":"Module Trigger Out"}}},"createdAt":"2022-06-09T10:51:18.973Z","updatedAt":"2022-06-07T23:22:58.901Z","deletedAt":null,"userId":"29476106","modules":[],"gameState":null}
\ No newline at end of file
diff --git a/packages/core/data/subSpell.ts b/packages/core/data/subSpell.ts
new file mode 100644
index 000000000..f90240616
--- /dev/null
+++ b/packages/core/data/subSpell.ts
@@ -0,0 +1,131 @@
+import { Spell } from '@latitudegames/thoth-core/dist/types'
+export default {
+ id: 'e19d34b1-65ac-42ff-ac98-88b8cd14cf6a',
+ name: 'expected amethyst',
+ chain: {
+ id: 'demo@0.1.0',
+ nodes: {
+ '124': {
+ id: 124,
+ data: {
+ name: 'default',
+ socketKey: '20c0d2db-1916-433f-88c6-69d3ae123217',
+ dataControls: { name: { expanded: true } },
+ playtestToggle: { receivePlaytest: true },
+ },
+ inputs: {},
+ outputs: {
+ trigger: {
+ connections: [{ node: 246, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-1555.4724883179474, -132.7648214211178],
+ name: 'Module Trigger In',
+ },
+ '232': {
+ id: 232,
+ data: {
+ name: 'Input',
+ text: 'Input text here',
+ outputs: [],
+ socketKey: '9d61118c-3c5a-4379-9dae-41965e56207f',
+ dataControls: {
+ name: { expanded: true },
+ playtestToggle: { expanded: true },
+ },
+ defaultValue: 'Input text here',
+ playtestToggle: { outputs: [], receivePlaytest: false },
+ },
+ inputs: {},
+ outputs: {
+ output: {
+ connections: [
+ {
+ node: 246,
+ input: 'string',
+ data: {
+ pins: [{ x: -1219.0300903320312, y: -278.76190185546875 }],
+ },
+ },
+ ],
+ },
+ },
+ position: [-1554.8394720686588, -362.87500885530955],
+ name: 'Universal Input',
+ },
+ '233': {
+ id: 233,
+ data: {
+ name: 'output-233',
+ socketKey: '940dc29f-91be-4d23-88a6-2b91d41aef15',
+ },
+ inputs: {
+ input: {
+ connections: [{ node: 246, output: 'output', data: { pins: [] } }],
+ },
+ trigger: {
+ connections: [{ node: 246, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 247, input: 'trigger', data: { pins: [] } }],
+ },
+ },
+ position: [-783.9329310657348, -406.1566487640127],
+ name: 'Output',
+ },
+ '246': {
+ id: 246,
+ data: {},
+ inputs: {
+ trigger: {
+ connections: [{ node: 124, output: 'trigger', data: { pins: [] } }],
+ },
+ string: {
+ connections: [
+ {
+ node: 232,
+ output: 'output',
+ data: {
+ pins: [{ x: -1219.0300903320312, y: -278.76190185546875 }],
+ },
+ },
+ ],
+ },
+ },
+ outputs: {
+ trigger: {
+ connections: [{ node: 233, input: 'trigger', data: { pins: [] } }],
+ },
+ output: {
+ connections: [{ node: 233, input: 'input', data: { pins: [] } }],
+ },
+ },
+ position: [-1179.3508911132812, -273.85870361328125],
+ name: 'Echo',
+ },
+ '247': {
+ id: 247,
+ data: {
+ name: 'trigger-out-247',
+ socketKey: '02de01cf-48c8-4a90-b9ac-997fb3ce9cf5',
+ },
+ inputs: {
+ trigger: {
+ connections: [{ node: 233, output: 'trigger', data: { pins: [] } }],
+ },
+ },
+ outputs: {},
+ position: [-689.080810546875, -83.10272216796875],
+ name: 'Module Trigger Out',
+ },
+ },
+ },
+ createdAt: '2022-06-09T10:51:18.973Z',
+ updatedAt: '2022-06-07T23:22:58.901Z',
+ deletedAt: null,
+ userId: '29476106',
+ modules: [],
+ gameState: null,
+} as unknown as Spell
diff --git a/packages/core/data/thothInterfaceStub.ts b/packages/core/data/thothInterfaceStub.ts
new file mode 100644
index 000000000..c21707cba
--- /dev/null
+++ b/packages/core/data/thothInterfaceStub.ts
@@ -0,0 +1,70 @@
+import {
+ ImageCacheResponse,
+ OpenAIResultChoice,
+ ThothWorkerInputs,
+} from '../types'
+import { VM } from 'vm2'
+export default {
+ completion: () => {
+ return new Promise(resolve => resolve('string')) as Promise<
+ string | OpenAIResultChoice
+ >
+ },
+ enkiCompletion: (): Promise<{ outputs: string[] }> => {
+ return new Promise(resolve => resolve({ outputs: ['string'] }))
+ },
+ huggingface: (): Promise<{ outputs: string[] }> => {
+ return new Promise(resolve => resolve({ outputs: ['string'] }))
+ },
+ getCurrentGameState: () => {
+ return {}
+ },
+ setCurrentGameState: (state: Record
) => {},
+ updateCurrentGameState: (state: Record) => {},
+ runSpell: (flattenedInputs: Record, spellId: string) => {
+ return new Promise(resolve => resolve({ outputs: ['string'] }))
+ },
+ readFromImageCache: (caption: string): Promise => {
+ return new Promise(resolve => resolve({} as ImageCacheResponse))
+ },
+ processCode: (
+ code: unknown,
+ inputs: ThothWorkerInputs,
+ data: Record,
+ state: Record
+ ) => {
+ const logValues: any[] = []
+
+ const sandboxConsole = {
+ log: (val: any, ...rest: any[]) => {
+ if (rest.length) {
+ logValues.push(JSON.stringify([val, ...rest], null, 2))
+ } else {
+ logValues.push(JSON.stringify(val, null, 2))
+ }
+ },
+ }
+
+ const flattenedInputs = Object.entries(inputs as ThothWorkerInputs).reduce(
+ (acc, [key, value]) => {
+ // eslint-disable-next-line prefer-destructuring
+ acc[key as string] = value[0] // as any[][0] <- this change was made 2 days ago
+ return acc
+ },
+ {} as Record
+ )
+ const vm = new VM()
+ vm.protect(state, 'state')
+
+ vm.freeze(flattenedInputs, 'input')
+ vm.freeze(data, 'data')
+ vm.freeze(sandboxConsole, 'console')
+
+ const codeToRun = `"use strict"; function runFn(input,data,state){ const copyFn=${code}; return copyFn(input,data,state)}; runFn(input,data,state);`
+ try {
+ return vm.run(codeToRun)
+ } catch (err) {
+ throw new Error('Error in runChain: processCode.')
+ }
+ },
+}
diff --git a/core/index.ts b/packages/core/index.ts
similarity index 100%
rename from core/index.ts
rename to packages/core/index.ts
diff --git a/packages/core/jest.config.js b/packages/core/jest.config.js
new file mode 100644
index 000000000..8dca67369
--- /dev/null
+++ b/packages/core/jest.config.js
@@ -0,0 +1,5 @@
+module.exports = {
+ testEnvironment: 'node',
+ testPathIgnorePatterns: ['/node_modules/'],
+ testMatch: ['**/test/**/*.test.ts?(x)'],
+}
diff --git a/core/package.json b/packages/core/package.json
similarity index 88%
rename from core/package.json
rename to packages/core/package.json
index 7ffce11d0..f1a1f126e 100644
--- a/core/package.json
+++ b/packages/core/package.json
@@ -23,7 +23,9 @@
"postpublish": "yarn clean",
"canary": "yarn build && auto canary",
"ship": "auto release --prerelease --base-branch main",
- "release": "yarn build && yarn ship"
+ "release": "yarn build && yarn ship",
+ "test": "jest",
+ "test:watch": "jest --watch"
},
"dependencies": {
"deep-equal": "^2.0.5",
@@ -39,11 +41,13 @@
"rete-context-menu-plugin": "^0.6.0-rc.1",
"rete-module-plugin": "^0.4.1",
"rete-react-render-plugin": "^0.2.1",
+ "socket.io": "^4.5.0",
"uuid": "^8.3.2"
},
"devDependencies": {
+ "@babel/plugin-transform-runtime": "^7.18.2",
"@rollup/plugin-babel": "^5.3.0",
- "@types/jest": "^26.0.24",
+ "@types/jest": "^27.5.1",
"@types/lodash": "^4.14.172",
"@types/node": "^16.4.3",
"@types/pubsub-js": "^1.8.2",
@@ -52,11 +56,14 @@
"auto": "^10.32.0",
"babel-loader": "^8.2.2",
"copyfiles": "^2.4.1",
+ "jest": "^28.1.0",
"rimraf": "^3.0.2",
"style-loader": "^3.3.0",
"terser-webpack-plugin": "^5.2.4",
+ "ts-jest": "^28.0.3",
"ts-loader": "^9.2.6",
- "typescript": "^4.2.0",
+ "typescript": "^4.6.4",
+ "vm2": "^3.9.9",
"webpack": "^5.54.0",
"webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.3.0"
diff --git a/core/server.ts b/packages/core/server.ts
similarity index 85%
rename from core/server.ts
rename to packages/core/server.ts
index 81d2836d6..cae557439 100644
--- a/core/server.ts
+++ b/packages/core/server.ts
@@ -2,12 +2,12 @@ import { getComponents, components } from './src/components/components'
import { initSharedEngine } from './src/engine'
import { Task } from './src/plugins/taskPlugin/task'
import { ThothComponent } from './src/thoth-component'
-import SpellRunner from './src/utils/SpellRunner'
export { getComponents } from './src/components/components'
export { Task } from './src/plugins/taskPlugin/task'
export { initSharedEngine }
-export { SpellRunner }
+
+export * from './src/spellManager'
export * from './src/utils/chainHelpers'
export default {
@@ -16,5 +16,4 @@ export default {
initSharedEngine,
Task,
ThothComponent,
- SpellRunner,
}
diff --git a/core/src/components/BooleanGate.ts b/packages/core/src/components/BooleanGate.ts
similarity index 100%
rename from core/src/components/BooleanGate.ts
rename to packages/core/src/components/BooleanGate.ts
diff --git a/core/src/components/Code.ts b/packages/core/src/components/Code.ts
similarity index 100%
rename from core/src/components/Code.ts
rename to packages/core/src/components/Code.ts
diff --git a/core/src/components/DifficultyDetector.ts b/packages/core/src/components/DifficultyDetector.ts
similarity index 100%
rename from core/src/components/DifficultyDetector.ts
rename to packages/core/src/components/DifficultyDetector.ts
diff --git a/core/src/components/EnkiTask.ts b/packages/core/src/components/EnkiTask.ts
similarity index 100%
rename from core/src/components/EnkiTask.ts
rename to packages/core/src/components/EnkiTask.ts
diff --git a/core/src/components/Generator.ts b/packages/core/src/components/Generator.ts
similarity index 98%
rename from core/src/components/Generator.ts
rename to packages/core/src/components/Generator.ts
index b96148d77..a6e525be2 100644
--- a/core/src/components/Generator.ts
+++ b/packages/core/src/components/Generator.ts
@@ -137,7 +137,7 @@ export class Generator extends ThothComponent> {
const stop = node?.data?.stop
? stopSequence.split(',').map(i => {
- if (i.includes('\n')) return i
+ if (i.includes('\\n')) return '\n'
return i.trim()
})
: ''
@@ -164,7 +164,7 @@ export class Generator extends ThothComponent> {
try {
const raw = (await completion(body)) as string
const result = raw
- const composed = `${prompt} ${result}`
+ const composed = `${prompt}${result}`
if (!silent) node.display(result)
diff --git a/core/src/components/Huggingface.ts b/packages/core/src/components/Huggingface.ts
similarity index 100%
rename from core/src/components/Huggingface.ts
rename to packages/core/src/components/Huggingface.ts
diff --git a/packages/core/src/components/InRange.ts b/packages/core/src/components/InRange.ts
new file mode 100644
index 000000000..0c52a8a82
--- /dev/null
+++ b/packages/core/src/components/InRange.ts
@@ -0,0 +1,76 @@
+import Rete from 'rete'
+
+import { NodeData, ThothNode, ThothWorkerInputs } from '../../types'
+import { InputControl } from '../dataControls/InputControl'
+import { triggerSocket, numSocket } from '../sockets'
+import { ThothComponent } from '../thoth-component'
+
+const info = `The In Range component takes either a manually input set of numbers or a dynamically generated set of numbers as a boundary. When supplied with a value to test its existance between the set range, will trigger 1 of 2 outputs. If the number exists within the range including the start and end number, will trigger the true output else will trigger the false output.`
+
+export class InRange extends ThothComponent {
+ constructor() {
+ super('In Range')
+
+ this.task = {
+ outputs: { true: 'option', false: 'option' },
+ }
+ this.category = 'Logic'
+ this.info = info
+ }
+
+ builder(node: ThothNode) {
+ const startNumSocket = new Rete.Input(
+ 'startNumber',
+ 'Start Number',
+ numSocket,
+ false
+ )
+
+ const endNumSocket = new Rete.Input(
+ 'endNumber',
+ 'End Number',
+ numSocket,
+ false
+ )
+ const inspectorStartNumSocket = new InputControl({
+ dataKey: 'startNumber',
+ name: 'Start Number',
+ defaultValue: 10,
+ })
+ const inspectorEndNumSocket = new InputControl({
+ dataKey: 'endNumber',
+ name: 'End Number',
+ defaultValue: 100,
+ })
+
+ const dataInput = new Rete.Input('trigger', 'Trigger', triggerSocket, true)
+ const testInput = new Rete.Input('input', 'Input To Test', numSocket)
+
+ const isTrue = new Rete.Output('true', 'True', triggerSocket)
+ const isFalse = new Rete.Output('false', 'False', triggerSocket)
+
+ node
+ .addInput(testInput)
+ .addInput(startNumSocket)
+ .addInput(endNumSocket)
+ .addInput(dataInput)
+ .addOutput(isTrue)
+ .addOutput(isFalse)
+
+ node.inspector.add(inspectorStartNumSocket).add(inspectorEndNumSocket)
+ }
+
+ worker(node: NodeData, inputs: ThothWorkerInputs) {
+ const startRange =
+ (inputs['startNumber'][0] as number) ?? (node.data.startNumber as number)
+ const endRange =
+ (inputs['endNumber'][0] as number) ?? (node.data.endNumber as number)
+ const numberToTest = inputs['input'][0] as number
+
+ if (numberToTest >= startRange && numberToTest <= endRange) {
+ this._task.closed = ['false']
+ } else {
+ this._task.closed = ['true']
+ }
+ }
+}
diff --git a/core/src/components/Input.ts b/packages/core/src/components/Input.ts
similarity index 94%
rename from core/src/components/Input.ts
rename to packages/core/src/components/Input.ts
index 4e2650deb..764bcc917 100644
--- a/core/src/components/Input.ts
+++ b/packages/core/src/components/Input.ts
@@ -126,10 +126,13 @@ export class InputComponent extends ThothComponent {
node.inspector.add(nameInput).add(togglePlaytest).add(toggleDefault)
const value = node.data.text ? node.data.text : 'Input text here'
- const input = new TextInputControl({
+
+ node.data.defaultValue = value
+
+ const defaultInput = new TextInputControl({
editor: this.editor,
key: 'text',
- value,
+ value: node.data.defaultValue,
label: 'Default value',
})
@@ -137,7 +140,7 @@ export class InputComponent extends ThothComponent {
// todo add this somewhere automated? Maybe wrap the modules builder in the plugin
node.data.socketKey = node?.data?.socketKey || uuidv4()
- return node.addOutput(out).addControl(input)
+ return node.addOutput(out).addControl(defaultInput)
}
worker(
@@ -162,10 +165,10 @@ export class InputComponent extends ThothComponent {
}
}
- // send default value if use default is explicity toggled on
+ // send default value if 'use default' is explicity toggled on
if (node.data.useDefault) {
return {
- output: node.data.text as string,
+ output: node.data.defaultValue as string,
}
}
diff --git a/core/src/components/JoinList.ts b/packages/core/src/components/JoinList.ts
similarity index 100%
rename from core/src/components/JoinList.ts
rename to packages/core/src/components/JoinList.ts
diff --git a/core/src/components/Output.ts b/packages/core/src/components/Output.ts
similarity index 98%
rename from core/src/components/Output.ts
rename to packages/core/src/components/Output.ts
index a250140a6..2cbc1cf9e 100644
--- a/core/src/components/Output.ts
+++ b/packages/core/src/components/Output.ts
@@ -78,6 +78,7 @@ export class Output extends ThothComponent {
{ silent, thoth }: { silent: boolean; thoth: EditorContext }
) {
if (!inputs.input) throw new Error('No input provided to output component')
+ console.log({ inputs })
const text = inputs.input.filter(Boolean)[0] as string
diff --git a/core/src/components/Spell.ts b/packages/core/src/components/Spell.ts
similarity index 100%
rename from core/src/components/Spell.ts
rename to packages/core/src/components/Spell.ts
diff --git a/core/src/components/StateRead.ts b/packages/core/src/components/StateRead.ts
similarity index 100%
rename from core/src/components/StateRead.ts
rename to packages/core/src/components/StateRead.ts
diff --git a/core/src/components/StateWrite.ts b/packages/core/src/components/StateWrite.ts
similarity index 100%
rename from core/src/components/StateWrite.ts
rename to packages/core/src/components/StateWrite.ts
diff --git a/core/src/components/StringProcessor.ts b/packages/core/src/components/StringProcessor.ts
similarity index 100%
rename from core/src/components/StringProcessor.ts
rename to packages/core/src/components/StringProcessor.ts
diff --git a/core/src/components/SwitchGate.ts b/packages/core/src/components/SwitchGate.ts
similarity index 100%
rename from core/src/components/SwitchGate.ts
rename to packages/core/src/components/SwitchGate.ts
diff --git a/core/src/components/TriggerIn.ts b/packages/core/src/components/TriggerIn.ts
similarity index 97%
rename from core/src/components/TriggerIn.ts
rename to packages/core/src/components/TriggerIn.ts
index e1bbee639..c6844ce8e 100644
--- a/core/src/components/TriggerIn.ts
+++ b/packages/core/src/components/TriggerIn.ts
@@ -101,10 +101,11 @@ export class TriggerIn extends ThothComponent {
destroyed(node: ThothNode) {
if (this.subscriptionMap[node.id]) this.subscriptionMap[node.id]()
delete this.subscriptionMap[node.id]
- if (this.triggerSubscriptionMap[node.id]) this.subscriptionMap[node.id]()
+ if (this.triggerSubscriptionMap[node.id])
+ this.triggerSubscriptionMap[node.id]()
delete this.triggerSubscriptionMap[node.id]
if (this.triggerSubscriptionMap['default'])
- this.subscriptionMap['default']()
+ this.triggerSubscriptionMap['default']()
delete this.triggerSubscriptionMap['default']
}
diff --git a/core/src/components/TriggerOut.ts b/packages/core/src/components/TriggerOut.ts
similarity index 100%
rename from core/src/components/TriggerOut.ts
rename to packages/core/src/components/TriggerOut.ts
diff --git a/core/src/components/VisualGeneration.ts b/packages/core/src/components/VisualGeneration.ts
similarity index 100%
rename from core/src/components/VisualGeneration.ts
rename to packages/core/src/components/VisualGeneration.ts
diff --git a/core/src/components/components.ts b/packages/core/src/components/components.ts
similarity index 84%
rename from core/src/components/components.ts
rename to packages/core/src/components/components.ts
index a2208ba7a..e52d76877 100644
--- a/core/src/components/components.ts
+++ b/packages/core/src/components/components.ts
@@ -1,6 +1,7 @@
-import { ActionTypeComponent } from './ActionType'
+import { ActionTypeComponent } from './deprecated/ActionType'
import { Alert } from './utility/AlertMessage'
import { BooleanGate } from './BooleanGate'
+import { InRange } from './InRange'
import { Code } from './Code'
import { InputFieldComponent } from './deprecated/InputField'
import { ModuleInput } from './deprecated/ModuleInput'
@@ -10,23 +11,23 @@ import { PlaytestPrint } from './deprecated/PlaytestPrint'
import { RunInputComponent } from './deprecated/RunInput'
import { DifficultyDetectorComponent } from './DifficultyDetector'
import { EnkiTask } from './EnkiTask'
-import { EntityDetector } from './EntityDetector'
-import { ForEach } from './ForEach'
+import { EntityDetector } from './deprecated/EntityDetector'
+import { ForEach } from './deprecated/ForEach'
import { Generator } from './Generator'
import { HuggingfaceComponent } from './Huggingface'
import { InputComponent } from './Input'
-import { ItemTypeComponent } from './ItemDetector'
+import { ItemTypeComponent } from './deprecated/ItemDetector'
import { JoinListComponent } from './JoinList'
import { Output } from './Output'
-import { ProseToScript } from './ProseToScript'
-import { SafetyVerifier } from './SafetyVerifier'
+import { ProseToScript } from './deprecated/ProseToScript'
+import { SafetyVerifier } from './deprecated/SafetyVerifier'
import { SpellComponent } from './Spell'
import { StateRead } from './StateRead'
import { StateWrite } from './StateWrite'
import { StringProcessor } from './StringProcessor'
import { SwitchGate } from './SwitchGate'
-import { TenseTransformer } from './TenseTransformer'
-import { TimeDetectorComponent } from './TimeDetector'
+import { TenseTransformer } from './deprecated/TenseTransformer'
+import { TimeDetectorComponent } from './deprecated/TimeDetector'
import { TriggerIn } from './TriggerIn'
import { TriggerOut } from './TriggerOut'
import { VisualGeneration } from './VisualGeneration'
@@ -39,6 +40,7 @@ export const components = {
actionTypeComponent: () => new ActionTypeComponent(),
alert: () => new Alert(),
booleanGate: () => new BooleanGate(),
+ inRange: () => new InRange(),
code: () => new Code(),
difficultyDetectorComponent: () => new DifficultyDetectorComponent(),
echoComponent: () => new Echo(),
diff --git a/core/src/components/ActionType.ts b/packages/core/src/components/deprecated/ActionType.ts
similarity index 90%
rename from core/src/components/ActionType.ts
rename to packages/core/src/components/deprecated/ActionType.ts
index e4b490ca4..c4ea5c6db 100644
--- a/core/src/components/ActionType.ts
+++ b/packages/core/src/components/deprecated/ActionType.ts
@@ -6,10 +6,10 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { FewshotControl } from '../dataControls/FewshotControl'
-import { stringSocket, triggerSocket } from '../sockets'
-import { ThothComponent } from '../thoth-component'
+} from '../../../types'
+import { FewshotControl } from '../../dataControls/FewshotControl'
+import { stringSocket, triggerSocket } from '../../sockets'
+import { ThothComponent } from '../../thoth-component'
const fewshot = `Given an action classify the type of action it is
Types: look, get, use, craft, dialog, movement, travel, combat, consume, other
@@ -48,6 +48,9 @@ export class ActionTypeComponent extends ThothComponent> {
this.category = 'AI/ML'
this.info = info
this.display = true
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
// the builder is used to "assemble" the node component.
diff --git a/core/src/components/EntityDetector.ts b/packages/core/src/components/deprecated/EntityDetector.ts
similarity index 91%
rename from core/src/components/EntityDetector.ts
rename to packages/core/src/components/deprecated/EntityDetector.ts
index db3ec3db9..404144efe 100644
--- a/core/src/components/EntityDetector.ts
+++ b/packages/core/src/components/deprecated/EntityDetector.ts
@@ -5,12 +5,12 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { FewshotControl } from '../dataControls/FewshotControl'
-import { EngineContext } from '../../types'
-import { TaskOptions } from '../plugins/taskPlugin/task'
-import { stringSocket, triggerSocket, arraySocket } from '../sockets'
-import { ThothComponent } from '../thoth-component'
+} from '../../../types'
+import { FewshotControl } from '../../dataControls/FewshotControl'
+import { EngineContext } from '../../../types'
+import { TaskOptions } from '../../plugins/taskPlugin/task'
+import { stringSocket, triggerSocket, arraySocket } from '../../sockets'
+import { ThothComponent } from '../../thoth-component'
const fewshot = `Given an action, detect what entities the player is interacting with. Ignore entities that the player is just asking about.
Entity types: food, person, creature, object, place, other, none
@@ -131,7 +131,7 @@ type WorkerReturn = {
}
export class EntityDetector extends ThothComponent<
- Promise
+ Promise
> {
constructor() {
// Name of the component
@@ -148,6 +148,9 @@ export class EntityDetector extends ThothComponent<
this.category = 'AI/ML'
this.display = true
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
// the builder is used to "assemble" the node component.
diff --git a/core/src/components/ForEach.ts b/packages/core/src/components/deprecated/ForEach.ts
similarity index 85%
rename from core/src/components/ForEach.ts
rename to packages/core/src/components/deprecated/ForEach.ts
index cd569396d..d3cc90ad5 100644
--- a/core/src/components/ForEach.ts
+++ b/packages/core/src/components/deprecated/ForEach.ts
@@ -5,15 +5,17 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { arraySocket, triggerSocket, anySocket } from '../sockets'
-import { ThothComponent, ThothTask } from '../thoth-component'
+} from '../../../types'
+import { arraySocket, triggerSocket, anySocket } from '../../sockets'
+import { ThothComponent, ThothTask } from '../../thoth-component'
const info = `The forEach component takes in an array, and will iterate over each item in the array, firing a new trigger signal with the appropriate value, until all items in the array have been processed.`
type WorkerReturn = {
element: string | string[] | unknown
}
export class ForEach extends ThothComponent> {
+ dev: true
+
constructor() {
super('ForEach')
this.task = {
@@ -21,6 +23,9 @@ export class ForEach extends ThothComponent> {
}
this.category = 'Logic'
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated, it will be re-enabled once stabilized.'
}
builder(node: ThothNode) {
diff --git a/core/src/components/deprecated/InputField.ts b/packages/core/src/components/deprecated/InputField.ts
similarity index 100%
rename from core/src/components/deprecated/InputField.ts
rename to packages/core/src/components/deprecated/InputField.ts
diff --git a/core/src/components/ItemDetector.ts b/packages/core/src/components/deprecated/ItemDetector.ts
similarity index 84%
rename from core/src/components/ItemDetector.ts
rename to packages/core/src/components/deprecated/ItemDetector.ts
index d272eb8b3..2d1f2df84 100644
--- a/core/src/components/ItemDetector.ts
+++ b/packages/core/src/components/deprecated/ItemDetector.ts
@@ -5,11 +5,11 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { FewshotControl } from '../dataControls/FewshotControl'
-import { EngineContext } from '../../types'
-import { stringSocket, triggerSocket } from '../sockets'
-import { ThothComponent } from '../thoth-component'
+} from '../../../types'
+import { FewshotControl } from '../../dataControls/FewshotControl'
+import { EngineContext } from '../../../types'
+import { stringSocket, triggerSocket } from '../../sockets'
+import { ThothComponent } from '../../thoth-component'
// For simplicity quests should be ONE thing not complete X and Y
const fewshot = `Given an action, detect the item which is taken.
@@ -38,6 +38,9 @@ export class ItemTypeComponent extends ThothComponent> {
this.category = 'AI/ML'
this.display = true
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
builder(node: ThothNode) {
diff --git a/core/src/components/deprecated/ModuleInput.ts b/packages/core/src/components/deprecated/ModuleInput.ts
similarity index 100%
rename from core/src/components/deprecated/ModuleInput.ts
rename to packages/core/src/components/deprecated/ModuleInput.ts
diff --git a/core/src/components/deprecated/ModuleOutput.ts b/packages/core/src/components/deprecated/ModuleOutput.ts
similarity index 100%
rename from core/src/components/deprecated/ModuleOutput.ts
rename to packages/core/src/components/deprecated/ModuleOutput.ts
diff --git a/core/src/components/deprecated/PlaytestInput.ts b/packages/core/src/components/deprecated/PlaytestInput.ts
similarity index 100%
rename from core/src/components/deprecated/PlaytestInput.ts
rename to packages/core/src/components/deprecated/PlaytestInput.ts
diff --git a/core/src/components/deprecated/PlaytestPrint.ts b/packages/core/src/components/deprecated/PlaytestPrint.ts
similarity index 100%
rename from core/src/components/deprecated/PlaytestPrint.ts
rename to packages/core/src/components/deprecated/PlaytestPrint.ts
diff --git a/core/src/components/ProseToScript.ts b/packages/core/src/components/deprecated/ProseToScript.ts
similarity index 94%
rename from core/src/components/ProseToScript.ts
rename to packages/core/src/components/deprecated/ProseToScript.ts
index 46e0cf081..95a53e529 100644
--- a/core/src/components/ProseToScript.ts
+++ b/packages/core/src/components/deprecated/ProseToScript.ts
@@ -5,10 +5,10 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { EngineContext } from '../../types'
-import { stringSocket, triggerSocket } from '../sockets'
-import { ThothComponent } from '../thoth-component'
+} from '../../../types'
+import { EngineContext } from '../../../types'
+import { stringSocket, triggerSocket } from '../../sockets'
+import { ThothComponent } from '../../thoth-component'
const fewshot = (prose: string) => {
const prompt = `Rewrite narrative snippets as a script:
@@ -83,6 +83,9 @@ export class ProseToScript extends ThothComponent> {
this.category = 'AI/ML'
this.display = true
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
builder(node: ThothNode) {
diff --git a/core/src/components/deprecated/RunInput.ts b/packages/core/src/components/deprecated/RunInput.ts
similarity index 100%
rename from core/src/components/deprecated/RunInput.ts
rename to packages/core/src/components/deprecated/RunInput.ts
diff --git a/core/src/components/SafetyVerifier.ts b/packages/core/src/components/deprecated/SafetyVerifier.ts
similarity index 88%
rename from core/src/components/SafetyVerifier.ts
rename to packages/core/src/components/deprecated/SafetyVerifier.ts
index 4e675204b..64578c5bb 100644
--- a/core/src/components/SafetyVerifier.ts
+++ b/packages/core/src/components/deprecated/SafetyVerifier.ts
@@ -5,11 +5,11 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { FewshotControl } from '../dataControls/FewshotControl'
-import { EngineContext } from '../../types'
-import { stringSocket, triggerSocket, booleanSocket } from '../sockets'
-import { ThothComponent } from '../thoth-component'
+} from '../../../types'
+import { FewshotControl } from '../../dataControls/FewshotControl'
+import { EngineContext } from '../../../types'
+import { stringSocket, triggerSocket, booleanSocket } from '../../sockets'
+import { ThothComponent } from '../../thoth-component'
const fewshot = `Rate the actions according to the following content categories
X: Explicit sexual content, rape, cannibalism, incest
@@ -98,6 +98,9 @@ export class SafetyVerifier extends ThothComponent> {
this.category = 'AI/ML'
this.display = true
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
builder(node: ThothNode) {
diff --git a/core/src/components/TenseTransformer.ts b/packages/core/src/components/deprecated/TenseTransformer.ts
similarity index 91%
rename from core/src/components/TenseTransformer.ts
rename to packages/core/src/components/deprecated/TenseTransformer.ts
index 3966d6ae2..50931b8f5 100644
--- a/core/src/components/TenseTransformer.ts
+++ b/packages/core/src/components/deprecated/TenseTransformer.ts
@@ -5,14 +5,14 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { FewshotControl } from '../dataControls/FewshotControl'
-import { EngineContext } from '../../types'
-import { stringSocket, triggerSocket } from '../sockets'
+} from '../../../types'
+import { FewshotControl } from '../../dataControls/FewshotControl'
+import { EngineContext } from '../../../types'
+import { stringSocket, triggerSocket } from '../../sockets'
// @seang todo: convert data controls to typescript to remove this
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
-import { ThothComponent } from '../thoth-component'
+import { ThothComponent } from '../../thoth-component'
const fewshot = `Change each statement to be in the third person present tense and correct all grammar.
Matt: am sleepy.
@@ -93,6 +93,9 @@ export class TenseTransformer extends ThothComponent> {
this.category = 'AI/ML'
this.display = true
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
// the builder is used to "assemble" the node component.
diff --git a/core/src/components/TimeDetector.ts b/packages/core/src/components/deprecated/TimeDetector.ts
similarity index 87%
rename from core/src/components/TimeDetector.ts
rename to packages/core/src/components/deprecated/TimeDetector.ts
index ea31e9eb7..60fe2321d 100644
--- a/core/src/components/TimeDetector.ts
+++ b/packages/core/src/components/deprecated/TimeDetector.ts
@@ -5,11 +5,11 @@ import {
ThothNode,
ThothWorkerInputs,
ThothWorkerOutputs,
-} from '../../types'
-import { FewshotControl } from '../dataControls/FewshotControl'
-import { EngineContext } from '../../types'
-import { stringSocket, triggerSocket } from '../sockets'
-import { ThothComponent } from '../thoth-component'
+} from '../../../types'
+import { FewshotControl } from '../../dataControls/FewshotControl'
+import { EngineContext } from '../../../types'
+import { stringSocket, triggerSocket } from '../../sockets'
+import { ThothComponent } from '../../thoth-component'
// For simplicity quests should be ONE thing not complete X and Y
const fewshot = `Given an action, predict how long it would take to complete out of the following categories: seconds, minutes, hours, days, weeks, years.
@@ -55,6 +55,9 @@ export class TimeDetectorComponent extends ThothComponent<
this.category = 'AI/ML'
this.display = true
this.info = info
+ this.deprecated = true
+ this.deprecationMessage =
+ 'This component has been deprecated. You can get similar functionality by using a generator with your own fewshots.'
}
builder(node: ThothNode) {
diff --git a/core/src/components/utility/AlertMessage.ts b/packages/core/src/components/utility/AlertMessage.ts
similarity index 100%
rename from core/src/components/utility/AlertMessage.ts
rename to packages/core/src/components/utility/AlertMessage.ts
diff --git a/core/src/components/utility/Echo.ts b/packages/core/src/components/utility/Echo.ts
similarity index 100%
rename from core/src/components/utility/Echo.ts
rename to packages/core/src/components/utility/Echo.ts
diff --git a/core/src/controls/DisplayControl.js b/packages/core/src/controls/DisplayControl.js
similarity index 100%
rename from core/src/controls/DisplayControl.js
rename to packages/core/src/controls/DisplayControl.js
diff --git a/core/src/controls/RunButtonControl.js b/packages/core/src/controls/RunButtonControl.js
similarity index 100%
rename from core/src/controls/RunButtonControl.js
rename to packages/core/src/controls/RunButtonControl.js
diff --git a/core/src/controls/TextInputControl.js b/packages/core/src/controls/TextInputControl.js
similarity index 100%
rename from core/src/controls/TextInputControl.js
rename to packages/core/src/controls/TextInputControl.js
diff --git a/core/src/dataControls/CodeControl.js b/packages/core/src/dataControls/CodeControl.js
similarity index 100%
rename from core/src/dataControls/CodeControl.js
rename to packages/core/src/dataControls/CodeControl.js
diff --git a/core/src/dataControls/DropdownControl.ts b/packages/core/src/dataControls/DropdownControl.ts
similarity index 100%
rename from core/src/dataControls/DropdownControl.ts
rename to packages/core/src/dataControls/DropdownControl.ts
diff --git a/core/src/dataControls/EmptyControl.js b/packages/core/src/dataControls/EmptyControl.js
similarity index 100%
rename from core/src/dataControls/EmptyControl.js
rename to packages/core/src/dataControls/EmptyControl.js
diff --git a/core/src/dataControls/EnkiThroughputControl.js b/packages/core/src/dataControls/EnkiThroughputControl.js
similarity index 100%
rename from core/src/dataControls/EnkiThroughputControl.js
rename to packages/core/src/dataControls/EnkiThroughputControl.js
diff --git a/core/src/dataControls/FewshotControl.js b/packages/core/src/dataControls/FewshotControl.js
similarity index 100%
rename from core/src/dataControls/FewshotControl.js
rename to packages/core/src/dataControls/FewshotControl.js
diff --git a/core/src/dataControls/InputControl.ts b/packages/core/src/dataControls/InputControl.ts
similarity index 100%
rename from core/src/dataControls/InputControl.ts
rename to packages/core/src/dataControls/InputControl.ts
diff --git a/core/src/dataControls/InputGenerator.js b/packages/core/src/dataControls/InputGenerator.js
similarity index 100%
rename from core/src/dataControls/InputGenerator.js
rename to packages/core/src/dataControls/InputGenerator.js
diff --git a/core/src/dataControls/ModelControl.ts b/packages/core/src/dataControls/ModelControl.ts
similarity index 100%
rename from core/src/dataControls/ModelControl.ts
rename to packages/core/src/dataControls/ModelControl.ts
diff --git a/core/src/dataControls/OutputGenerator.js b/packages/core/src/dataControls/OutputGenerator.js
similarity index 100%
rename from core/src/dataControls/OutputGenerator.js
rename to packages/core/src/dataControls/OutputGenerator.js
diff --git a/core/src/dataControls/PlaytestControl.js b/packages/core/src/dataControls/PlaytestControl.js
similarity index 100%
rename from core/src/dataControls/PlaytestControl.js
rename to packages/core/src/dataControls/PlaytestControl.js
diff --git a/core/src/dataControls/SocketGenerator.ts b/packages/core/src/dataControls/SocketGenerator.ts
similarity index 100%
rename from core/src/dataControls/SocketGenerator.ts
rename to packages/core/src/dataControls/SocketGenerator.ts
diff --git a/core/src/dataControls/SpellControl.ts b/packages/core/src/dataControls/SpellControl.ts
similarity index 100%
rename from core/src/dataControls/SpellControl.ts
rename to packages/core/src/dataControls/SpellControl.ts
diff --git a/core/src/dataControls/SwitchControl.ts b/packages/core/src/dataControls/SwitchControl.ts
similarity index 100%
rename from core/src/dataControls/SwitchControl.ts
rename to packages/core/src/dataControls/SwitchControl.ts
diff --git a/core/src/editor.ts b/packages/core/src/editor.ts
similarity index 90%
rename from core/src/editor.ts
rename to packages/core/src/editor.ts
index 4c3096bfd..90a800274 100644
--- a/core/src/editor.ts
+++ b/packages/core/src/editor.ts
@@ -5,10 +5,9 @@ import ConnectionReroutePlugin from 'rete-connection-reroute-plugin'
import ContextMenuPlugin from 'rete-context-menu-plugin'
import ReactRenderPlugin from 'rete-react-render-plugin'
import { Data } from 'rete/types/core/data'
-
import { EventsTypes, EditorContext } from '../types'
import { getComponents } from './components/components'
-import { initSharedEngine } from './engine'
+import { initSharedEngine, ThothEngine } from './engine'
// import CommentPlugin from './plugins/commentPlugin'
import AreaPlugin from './plugins/areaPlugin'
import DisplayPlugin from './plugins/displayPlugin'
@@ -17,12 +16,19 @@ import InspectorPlugin from './plugins/inspectorPlugin'
import LifecyclePlugin from './plugins/lifecyclePlugin'
import { ModuleManager } from './plugins/modulePlugin/module-manager'
import SocketGenerator from './plugins/socketGenerator'
+import SocketOverridePlugin from './plugins/socketPlugin/socketOverridePlugin'
import TaskPlugin, { Task } from './plugins/taskPlugin'
import { PubSubContext, ThothComponent } from './thoth-component'
import DebuggerPlugin from './plugins/debuggerPlugin'
import KeyCodePlugin from './plugins/keyCodePlugin'
import ModulePlugin from './plugins/modulePlugin'
+import SocketPlugin from './plugins/socketPlugin'
// import SelectionPlugin from './plugins/selectionPlugin'
+import errorPlugin from './plugins/errorPlugin'
+
+interface ThothEngineClient extends ThothEngine {
+ thoth: EditorContext
+}
export class ThothEditor extends NodeEditor {
tasks: Task[]
pubSub: PubSubContext
@@ -47,12 +53,16 @@ export const initEditor = async function ({
thoth,
tab,
node,
+ client,
+ feathers,
}: {
container: any
pubSub: any
thoth: any
tab: any
node: any
+ client?: any
+ feathers?: any
}) {
if (editorTabMap[tab.id]) editorTabMap[tab.id].clear()
@@ -75,6 +85,10 @@ export const initEditor = async function ({
// ██║ ███████╗╚██████╔╝╚██████╔╝██║██║ ╚████║███████║
// ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝╚═╝ ╚═══╝╚══════╝
+ if (client && feathers) {
+ editor.use(SocketOverridePlugin, { client })
+ }
+
// History plugin for undo/redo
editor.use(HistoryPlugin, { keyboard: false })
@@ -135,18 +149,25 @@ export const initEditor = async function ({
components,
server: false,
modules: {},
- })
+ }) as ThothEngineClient
+ engine.use(errorPlugin)
+ engine.thoth = thoth
// @seang TODO: update types for editor.use rather than casting as unknown here, we may want to bring our custom rete directly into the monorepo at this point
editor.onSpellUpdated = (spellId: string, callback: Function) => {
return thoth.onSubspellUpdated(spellId, callback)
}
- // WARNING: ModulePlugin needs to be initialized before TaskPlugin during engine setup
- editor.use(ModulePlugin, { engine, modules: {} } as unknown as void)
- editor.use(TaskPlugin)
editor.use(KeyCodePlugin)
+ if (client && feathers) {
+ editor.use(SocketPlugin, { client })
+ } else {
+ // WARNING: ModulePlugin needs to be initialized before TaskPlugin during engine setup
+ editor.use(ModulePlugin, { engine, modules: {} } as unknown as void)
+ editor.use(TaskPlugin)
+ }
+
// editor.use(SelectionPlugin, { enabled: true })
// editor.use(CommentPlugin, {
diff --git a/core/src/engine.ts b/packages/core/src/engine.ts
similarity index 91%
rename from core/src/engine.ts
rename to packages/core/src/engine.ts
index 5eb19934f..77afd336f 100644
--- a/core/src/engine.ts
+++ b/packages/core/src/engine.ts
@@ -1,6 +1,8 @@
+import io from 'socket.io'
import Rete, { Engine } from 'rete'
import { ChainData, ModuleType, NodeData, ThothWorkerInputs } from '../types'
+import SocketPlugin from './plugins/socketPlugin'
import debuggerPlugin from './plugins/debuggerPlugin'
import ModulePlugin from './plugins/modulePlugin'
import TaskPlugin, { Task } from './plugins/taskPlugin'
@@ -28,6 +30,7 @@ export abstract class ThothEngineComponent {
node: NodeData,
inputs: ThothWorkerInputs,
outputs: WorkerOutputs,
+ context: Record,
...args: unknown[]
): WorkerReturnType
}
@@ -40,6 +43,7 @@ export type InitEngineArguments = {
server: boolean
modules?: Record
throwError?: Function
+ socket?: io.Socket
}
// @seang TODO: update this to not use positional arguments
export const initSharedEngine = ({
@@ -48,6 +52,7 @@ export const initSharedEngine = ({
server = false,
modules = {},
throwError,
+ socket,
}: InitEngineArguments) => {
const engine = new Rete.Engine(name) as ThothEngine
@@ -55,6 +60,9 @@ export const initSharedEngine = ({
// WARNING: ModulePlugin needs to be initialized before TaskPlugin during engine setup
engine.use(debuggerPlugin, { server: true, throwError })
engine.use(ModulePlugin, { engine, modules } as any)
+ if (socket) {
+ engine.use(SocketPlugin, { socket, server: true })
+ }
engine.use(TaskPlugin)
}
diff --git a/core/src/index.ts b/packages/core/src/index.ts
similarity index 100%
rename from core/src/index.ts
rename to packages/core/src/index.ts
diff --git a/core/src/plugins/areaPlugin/background.js b/packages/core/src/plugins/areaPlugin/background.js
similarity index 100%
rename from core/src/plugins/areaPlugin/background.js
rename to packages/core/src/plugins/areaPlugin/background.js
diff --git a/core/src/plugins/areaPlugin/index.js b/packages/core/src/plugins/areaPlugin/index.js
similarity index 100%
rename from core/src/plugins/areaPlugin/index.js
rename to packages/core/src/plugins/areaPlugin/index.js
diff --git a/core/src/plugins/areaPlugin/restrictor.js b/packages/core/src/plugins/areaPlugin/restrictor.js
similarity index 100%
rename from core/src/plugins/areaPlugin/restrictor.js
rename to packages/core/src/plugins/areaPlugin/restrictor.js
diff --git a/core/src/plugins/areaPlugin/snap.js b/packages/core/src/plugins/areaPlugin/snap.js
similarity index 100%
rename from core/src/plugins/areaPlugin/snap.js
rename to packages/core/src/plugins/areaPlugin/snap.js
diff --git a/core/src/plugins/areaPlugin/style.css b/packages/core/src/plugins/areaPlugin/style.css
similarity index 100%
rename from core/src/plugins/areaPlugin/style.css
rename to packages/core/src/plugins/areaPlugin/style.css
diff --git a/core/src/plugins/areaPlugin/utils.js b/packages/core/src/plugins/areaPlugin/utils.js
similarity index 100%
rename from core/src/plugins/areaPlugin/utils.js
rename to packages/core/src/plugins/areaPlugin/utils.js
diff --git a/core/src/plugins/areaPlugin/zoom-at.js b/packages/core/src/plugins/areaPlugin/zoom-at.js
similarity index 100%
rename from core/src/plugins/areaPlugin/zoom-at.js
rename to packages/core/src/plugins/areaPlugin/zoom-at.js
diff --git a/core/src/plugins/commentPlugin/comment.js b/packages/core/src/plugins/commentPlugin/comment.js
similarity index 100%
rename from core/src/plugins/commentPlugin/comment.js
rename to packages/core/src/plugins/commentPlugin/comment.js
diff --git a/core/src/plugins/commentPlugin/draggable.js b/packages/core/src/plugins/commentPlugin/draggable.js
similarity index 100%
rename from core/src/plugins/commentPlugin/draggable.js
rename to packages/core/src/plugins/commentPlugin/draggable.js
diff --git a/core/src/plugins/commentPlugin/frame-comment.js b/packages/core/src/plugins/commentPlugin/frame-comment.js
similarity index 100%
rename from core/src/plugins/commentPlugin/frame-comment.js
rename to packages/core/src/plugins/commentPlugin/frame-comment.js
diff --git a/core/src/plugins/commentPlugin/index.js b/packages/core/src/plugins/commentPlugin/index.js
similarity index 100%
rename from core/src/plugins/commentPlugin/index.js
rename to packages/core/src/plugins/commentPlugin/index.js
diff --git a/core/src/plugins/commentPlugin/inline-comment.js b/packages/core/src/plugins/commentPlugin/inline-comment.js
similarity index 100%
rename from core/src/plugins/commentPlugin/inline-comment.js
rename to packages/core/src/plugins/commentPlugin/inline-comment.js
diff --git a/core/src/plugins/commentPlugin/manager.js b/packages/core/src/plugins/commentPlugin/manager.js
similarity index 100%
rename from core/src/plugins/commentPlugin/manager.js
rename to packages/core/src/plugins/commentPlugin/manager.js
diff --git a/core/src/plugins/commentPlugin/style.css b/packages/core/src/plugins/commentPlugin/style.css
similarity index 100%
rename from core/src/plugins/commentPlugin/style.css
rename to packages/core/src/plugins/commentPlugin/style.css
diff --git a/core/src/plugins/commentPlugin/utils.js b/packages/core/src/plugins/commentPlugin/utils.js
similarity index 100%
rename from core/src/plugins/commentPlugin/utils.js
rename to packages/core/src/plugins/commentPlugin/utils.js
diff --git a/core/src/plugins/debuggerPlugin/ThothConsole.ts b/packages/core/src/plugins/debuggerPlugin/ThothConsole.ts
similarity index 93%
rename from core/src/plugins/debuggerPlugin/ThothConsole.ts
rename to packages/core/src/plugins/debuggerPlugin/ThothConsole.ts
index 02336b4e7..bb4fb01f7 100644
--- a/core/src/plugins/debuggerPlugin/ThothConsole.ts
+++ b/packages/core/src/plugins/debuggerPlugin/ThothConsole.ts
@@ -8,6 +8,7 @@ type ConsoleConstructor = {
node: NodeData
server: boolean
throwError?: Function
+ isEngine?: boolean
}
export type Message = {
@@ -25,6 +26,7 @@ export class ThothConsole {
nodeView: NodeView
isServer: boolean
throwError?: Function
+ isEngine: boolean
constructor({
component,
@@ -32,14 +34,16 @@ export class ThothConsole {
node,
server,
throwError,
+ isEngine = false,
}: ConsoleConstructor) {
this.component = component
this.editor = editor
this.node = node
this.isServer = server
+ this.isEngine = isEngine
if (throwError) this.throwError = throwError
- if (server) return
+ if (server || isEngine) return
const nodeValues = Array.from(editor.view.nodes)
const foundNode = nodeValues.find(([, n]) => n.node.id === node.id)
@@ -69,6 +73,7 @@ export class ThothConsole {
}
renderError() {
+ if (this.isEngine) return
this.node.data.error = true
this.updateNodeView()
this.node.data.error = false
diff --git a/core/src/plugins/debuggerPlugin/index.ts b/packages/core/src/plugins/debuggerPlugin/index.ts
similarity index 58%
rename from core/src/plugins/debuggerPlugin/index.ts
rename to packages/core/src/plugins/debuggerPlugin/index.ts
index 852a1bac4..7f460f2dd 100644
--- a/core/src/plugins/debuggerPlugin/index.ts
+++ b/packages/core/src/plugins/debuggerPlugin/index.ts
@@ -1,20 +1,11 @@
import { IRunContextEditor } from '../../../types'
import { ThothComponent } from '../../thoth-component'
-import { outputNameFromSocketKey } from '../../utils/nodeHelpers'
import { ThothConsole } from './ThothConsole'
function install(
editor: IRunContextEditor,
{ server = false, throwError }: { server?: boolean; throwError?: Function }
) {
- // const _log = console.log
-
- // console.log = function (message) {
- // // if (editor.thoth.sendToDebug) editor.thoth.sendToDebug(message)
- // console.warn('testing')
- // return Function.prototype.bind.call(_log, arguments)
- // }
-
editor.on('componentregister', (component: ThothComponent) => {
const worker = component.worker
@@ -36,17 +27,6 @@ function install(
...args,
])
- // Hacky way to handle when the spell component returns a response with a UUID in it
- if (component.name === 'Spell') {
- result = Object.entries(result).reduce((acc, [uuid, value]) => {
- const name = outputNameFromSocketKey(node, uuid)
- if (!name) return acc
-
- acc[name] = value
- return acc
- }, {} as Record)
- }
-
node.console.log(result)
return result
diff --git a/core/src/plugins/displayPlugin/DisplayControl.js b/packages/core/src/plugins/displayPlugin/DisplayControl.js
similarity index 100%
rename from core/src/plugins/displayPlugin/DisplayControl.js
rename to packages/core/src/plugins/displayPlugin/DisplayControl.js
diff --git a/core/src/plugins/displayPlugin/index.js b/packages/core/src/plugins/displayPlugin/index.js
similarity index 100%
rename from core/src/plugins/displayPlugin/index.js
rename to packages/core/src/plugins/displayPlugin/index.js
diff --git a/packages/core/src/plugins/errorPlugin/index.ts b/packages/core/src/plugins/errorPlugin/index.ts
new file mode 100644
index 000000000..1e4cfa54a
--- /dev/null
+++ b/packages/core/src/plugins/errorPlugin/index.ts
@@ -0,0 +1,41 @@
+import { ThothComponent } from '@latitudegames/thoth-core/src/thoth-component'
+import { IRunContextEditor, NodeData } from '../../../types'
+import { ThothConsole } from '../debuggerPlugin/ThothConsole'
+
+function install(
+ engine: IRunContextEditor,
+ { server = false, throwError }: { server?: boolean; throwError?: Function }
+) {
+ engine.on(
+ 'error',
+ ({ message, data }: { message: string; data: NodeData }) => {
+ const component = engine.components.get(
+ data.name
+ ) as unknown as ThothComponent
+
+ if (!component) return
+
+ const console = new ThothConsole({
+ node: data,
+ component,
+ editor: engine,
+ server,
+ throwError,
+ isEngine: true,
+ })
+
+ if (message === 'Recursion detected') {
+ const error = new Error(`Recursion occured in node ID ${data.id}`)
+
+ console.error(error)
+ }
+ }
+ )
+}
+
+const defaultExport = {
+ name: 'errorPlugin',
+ install,
+}
+
+export default defaultExport
diff --git a/core/src/plugins/historyPlugin/action.js b/packages/core/src/plugins/historyPlugin/action.js
similarity index 100%
rename from core/src/plugins/historyPlugin/action.js
rename to packages/core/src/plugins/historyPlugin/action.js
diff --git a/core/src/plugins/historyPlugin/actions/connection.js b/packages/core/src/plugins/historyPlugin/actions/connection.js
similarity index 100%
rename from core/src/plugins/historyPlugin/actions/connection.js
rename to packages/core/src/plugins/historyPlugin/actions/connection.js
diff --git a/core/src/plugins/historyPlugin/actions/node.js b/packages/core/src/plugins/historyPlugin/actions/node.js
similarity index 100%
rename from core/src/plugins/historyPlugin/actions/node.js
rename to packages/core/src/plugins/historyPlugin/actions/node.js
diff --git a/core/src/plugins/historyPlugin/history.js b/packages/core/src/plugins/historyPlugin/history.js
similarity index 100%
rename from core/src/plugins/historyPlugin/history.js
rename to packages/core/src/plugins/historyPlugin/history.js
diff --git a/core/src/plugins/historyPlugin/index.js b/packages/core/src/plugins/historyPlugin/index.js
similarity index 100%
rename from core/src/plugins/historyPlugin/index.js
rename to packages/core/src/plugins/historyPlugin/index.js
diff --git a/core/src/plugins/inspectorPlugin/DataControl.ts b/packages/core/src/plugins/inspectorPlugin/DataControl.ts
similarity index 100%
rename from core/src/plugins/inspectorPlugin/DataControl.ts
rename to packages/core/src/plugins/inspectorPlugin/DataControl.ts
diff --git a/core/src/plugins/inspectorPlugin/Inspector.ts b/packages/core/src/plugins/inspectorPlugin/Inspector.ts
similarity index 99%
rename from core/src/plugins/inspectorPlugin/Inspector.ts
rename to packages/core/src/plugins/inspectorPlugin/Inspector.ts
index cc40608c7..2ab437791 100644
--- a/core/src/plugins/inspectorPlugin/Inspector.ts
+++ b/packages/core/src/plugins/inspectorPlugin/Inspector.ts
@@ -264,6 +264,7 @@ export class Inspector {
// update the node at the end ofthid
this.node.update()
+ this.editor.trigger('save')
}
get() {}
diff --git a/core/src/plugins/inspectorPlugin/dataControls/InfoControl.js b/packages/core/src/plugins/inspectorPlugin/dataControls/InfoControl.js
similarity index 100%
rename from core/src/plugins/inspectorPlugin/dataControls/InfoControl.js
rename to packages/core/src/plugins/inspectorPlugin/dataControls/InfoControl.js
diff --git a/core/src/plugins/inspectorPlugin/index.ts b/packages/core/src/plugins/inspectorPlugin/index.ts
similarity index 100%
rename from core/src/plugins/inspectorPlugin/index.ts
rename to packages/core/src/plugins/inspectorPlugin/index.ts
diff --git a/core/src/plugins/keyCodePlugin/index.ts b/packages/core/src/plugins/keyCodePlugin/index.ts
similarity index 100%
rename from core/src/plugins/keyCodePlugin/index.ts
rename to packages/core/src/plugins/keyCodePlugin/index.ts
diff --git a/core/src/plugins/lifecyclePlugin/index.ts b/packages/core/src/plugins/lifecyclePlugin/index.ts
similarity index 100%
rename from core/src/plugins/lifecyclePlugin/index.ts
rename to packages/core/src/plugins/lifecyclePlugin/index.ts
diff --git a/core/src/plugins/lifecyclePlugin/interfaces.ts b/packages/core/src/plugins/lifecyclePlugin/interfaces.ts
similarity index 100%
rename from core/src/plugins/lifecyclePlugin/interfaces.ts
rename to packages/core/src/plugins/lifecyclePlugin/interfaces.ts
diff --git a/core/src/plugins/lifecyclePlugin/utils.ts b/packages/core/src/plugins/lifecyclePlugin/utils.ts
similarity index 100%
rename from core/src/plugins/lifecyclePlugin/utils.ts
rename to packages/core/src/plugins/lifecyclePlugin/utils.ts
diff --git a/core/src/plugins/modulePlugin/index.ts b/packages/core/src/plugins/modulePlugin/index.ts
similarity index 100%
rename from core/src/plugins/modulePlugin/index.ts
rename to packages/core/src/plugins/modulePlugin/index.ts
diff --git a/core/src/plugins/modulePlugin/module-manager.ts b/packages/core/src/plugins/modulePlugin/module-manager.ts
similarity index 100%
rename from core/src/plugins/modulePlugin/module-manager.ts
rename to packages/core/src/plugins/modulePlugin/module-manager.ts
diff --git a/core/src/plugins/modulePlugin/module.ts b/packages/core/src/plugins/modulePlugin/module.ts
similarity index 100%
rename from core/src/plugins/modulePlugin/module.ts
rename to packages/core/src/plugins/modulePlugin/module.ts
diff --git a/core/src/plugins/modulePlugin/utils.ts b/packages/core/src/plugins/modulePlugin/utils.ts
similarity index 100%
rename from core/src/plugins/modulePlugin/utils.ts
rename to packages/core/src/plugins/modulePlugin/utils.ts
diff --git a/core/src/plugins/selectionPlugin/index.ts b/packages/core/src/plugins/selectionPlugin/index.ts
similarity index 100%
rename from core/src/plugins/selectionPlugin/index.ts
rename to packages/core/src/plugins/selectionPlugin/index.ts
diff --git a/core/src/plugins/socketGenerator/index.ts b/packages/core/src/plugins/socketGenerator/index.ts
similarity index 100%
rename from core/src/plugins/socketGenerator/index.ts
rename to packages/core/src/plugins/socketGenerator/index.ts
diff --git a/core/src/plugins/socketGenerator/socketManager.ts b/packages/core/src/plugins/socketGenerator/socketManager.ts
similarity index 84%
rename from core/src/plugins/socketGenerator/socketManager.ts
rename to packages/core/src/plugins/socketGenerator/socketManager.ts
index dbb6826ac..a48bba595 100644
--- a/core/src/plugins/socketGenerator/socketManager.ts
+++ b/packages/core/src/plugins/socketGenerator/socketManager.ts
@@ -1,9 +1,5 @@
-import {
- ChainData,
- DataSocketType,
- ThothEditor,
- ThothNode,
-} from '../../../types'
+import { ChainData, DataSocketType, ThothNode } from '../../../types'
+import { ThothEditor } from '../../editor'
import { ModuleSocketType } from '../modulePlugin/module-manager'
export default class SocketManager {
diff --git a/packages/core/src/plugins/socketPlugin/index.ts b/packages/core/src/plugins/socketPlugin/index.ts
new file mode 100644
index 000000000..111a8ac57
--- /dev/null
+++ b/packages/core/src/plugins/socketPlugin/index.ts
@@ -0,0 +1,65 @@
+import io from 'socket.io'
+import { IRunContextEditor, ThothComponent } from '../../../types'
+
+function install(
+ editor: IRunContextEditor,
+ // Need to better type the feathers client here
+ {
+ server = false,
+ socket,
+ client,
+ }: { server?: boolean; socket?: io.Socket; client?: any }
+) {
+ const subscriptionMap = new Map()
+
+ editor.on('componentregister', (component: ThothComponent) => {
+ const worker = component.worker
+
+ component.worker = async (node, inputs, outputs, context, ...args) => {
+ if (server) {
+ const result = await worker.apply(component, [
+ node,
+ inputs,
+ outputs,
+ context,
+ ...args,
+ ])
+
+ socket?.emit(`${node.id}`, {
+ output: result?.output,
+ })
+ return result
+ }
+
+ if (client) {
+ if (subscriptionMap.has(node.id)) return
+ // We may need to namespace this by spell as well
+ const unsubscribe = client.io.on(
+ node.id,
+ async (socketData: unknown) => {
+ const newContext = {
+ ...context,
+ socketOutput: socketData,
+ }
+ await worker.apply(component, [
+ node,
+ inputs,
+ outputs,
+ newContext,
+ ...args,
+ ])
+ }
+ )
+
+ subscriptionMap.set(node.id, unsubscribe)
+ }
+ }
+ })
+}
+
+const defaultExport = {
+ name: 'socketPlugin',
+ install,
+}
+
+export default defaultExport
diff --git a/packages/core/src/plugins/socketPlugin/socketOverridePlugin.ts b/packages/core/src/plugins/socketPlugin/socketOverridePlugin.ts
new file mode 100644
index 000000000..a98dc617b
--- /dev/null
+++ b/packages/core/src/plugins/socketPlugin/socketOverridePlugin.ts
@@ -0,0 +1,27 @@
+import io from 'socket.io'
+import { IRunContextEditor, ThothComponent } from '../../../types'
+
+function install(
+ editor: IRunContextEditor,
+ // Need to better type the feathers client here
+ {
+ server = false,
+ socket,
+ client,
+ }: { server?: boolean; socket?: io.Socket; client?: any }
+) {
+ editor.on('componentregister', (component: ThothComponent) => {
+ component.worker = async (node, inputs, outputs, context, ta, ...args) => {
+ if (context.socketOutput) {
+ return context.socketOutput
+ }
+ }
+ })
+}
+
+const defaultExport = {
+ name: 'socketOverridePlugin',
+ install,
+}
+
+export default defaultExport
diff --git a/core/src/plugins/taskPlugin/index.ts b/packages/core/src/plugins/taskPlugin/index.ts
similarity index 96%
rename from core/src/plugins/taskPlugin/index.ts
rename to packages/core/src/plugins/taskPlugin/index.ts
index 4c7d5b920..29a6ccf6c 100644
--- a/core/src/plugins/taskPlugin/index.ts
+++ b/packages/core/src/plugins/taskPlugin/index.ts
@@ -1,7 +1,7 @@
import { Component } from 'rete'
import { NodeData } from 'rete/types/core/data'
-
-import { ThothEditor, ThothWorkerInputs } from '../../../types'
+import { ThothEditor } from '../../editor'
+import { ThothWorkerInputs } from '../../../types'
import { ThothComponent } from '../../thoth-component'
import { Task } from './task'
diff --git a/core/src/plugins/taskPlugin/task.ts b/packages/core/src/plugins/taskPlugin/task.ts
similarity index 97%
rename from core/src/plugins/taskPlugin/task.ts
rename to packages/core/src/plugins/taskPlugin/task.ts
index 98f854a30..9432b33f5 100644
--- a/core/src/plugins/taskPlugin/task.ts
+++ b/packages/core/src/plugins/taskPlugin/task.ts
@@ -116,7 +116,12 @@ export class Task {
const inputPromises = this.inputs[key]
.filter((con: ThothReteInput) => {
// only filter inputs to remove ones that are not the origin if a task option is true
+ console.log({ component: this.component, fromNode, con })
if (!this.component.task.runOneInput || !fromNode) return true
+
+ // return true if the input is from a triggerless component
+ if (!con.task.node.outputs.trigger) return true
+
return con.task.node.id === fromNode.id
})
.map(async (con: ThothReteInput) => {
diff --git a/core/src/sockets.ts b/packages/core/src/sockets.ts
similarity index 100%
rename from core/src/sockets.ts
rename to packages/core/src/sockets.ts
diff --git a/packages/core/src/spellManager/SpellManager.ts b/packages/core/src/spellManager/SpellManager.ts
new file mode 100644
index 000000000..c740cf6aa
--- /dev/null
+++ b/packages/core/src/spellManager/SpellManager.ts
@@ -0,0 +1,41 @@
+import io from 'socket.io'
+import { EngineContext, Spell } from '../../types'
+import SpellRunner from './SpellRunner'
+
+export default class SpellManager {
+ spellRunnerMap: Map = new Map()
+ socket: io.Socket
+ thothInterface: EngineContext
+
+ constructor(thothInterface: EngineContext, socket: io.Socket) {
+ this.socket = socket
+ this.thothInterface = thothInterface
+ }
+
+ getSpellRunner(spellId: string) {
+ return this.spellRunnerMap.get(spellId)
+ }
+
+ load(spell: Spell, overload: boolean = false) {
+ if (this.spellRunnerMap.has(spell.name) && !overload)
+ return this.getSpellRunner(spell.name)
+
+ const spellRunner = new SpellRunner({
+ thothInterface: this.thothInterface,
+ socket: this.socket,
+ })
+
+ spellRunner.loadSpell(spell)
+
+ this.spellRunnerMap.set(spell.name, spellRunner)
+
+ return spellRunner
+ }
+
+ async run(spellId: string, inputs: Record) {
+ const runner = this.getSpellRunner(spellId)
+ const result = await runner?.defaultRun(inputs)
+
+ return result
+ }
+}
diff --git a/core/src/utils/SpellRunner.ts b/packages/core/src/spellManager/SpellRunner.ts
similarity index 93%
rename from core/src/utils/SpellRunner.ts
rename to packages/core/src/spellManager/SpellRunner.ts
index 9ccb5de96..556b88943 100644
--- a/core/src/utils/SpellRunner.ts
+++ b/packages/core/src/spellManager/SpellRunner.ts
@@ -1,3 +1,4 @@
+import io from 'socket.io'
import {
EngineContext,
ChainData,
@@ -7,10 +8,11 @@ import {
import { getComponents } from '../components/components'
import { extractNodes, initSharedEngine, ThothEngine } from '../engine'
import { Module } from '../plugins/modulePlugin/module'
-import { extractModuleInputKeys } from './chainHelpers'
+import { extractModuleInputKeys } from '../utils/chainHelpers'
type RunSpellConstructor = {
thothInterface: EngineContext
+ socket?: io.Socket
}
class SpellRunner {
@@ -19,19 +21,23 @@ class SpellRunner {
module: Module
thothInterface: EngineContext
ranSpells: string[] = []
+ socket?: io.Socket | null = null
- constructor({ thothInterface }: RunSpellConstructor) {
+ constructor({ thothInterface, socket }: RunSpellConstructor) {
// Initialize the engine
this.engine = initSharedEngine({
name: 'demo@0.1.0',
components: getComponents(),
server: true,
modules: {},
+ socket: socket || undefined,
}) as ThothEngine
// Set up the module to interface with the runtime processes
this.module = new Module()
+ if (socket) this.socket = socket
+
// Set the interface that this runner will use when running workers
this.thothInterface = thothInterface
@@ -175,7 +181,7 @@ class SpellRunner {
/**
* Main spell runner for now. Processes inputs, gets the right component that starts the
- * running. Would be even better iof we just took a node identifier, got its
+ * running. Would be even better if we just took a node identifier, got its
* component, and ran the one triggered rather than this slightly hacky hard coded
* method.
*/
@@ -192,7 +198,7 @@ class SpellRunner {
// Set the current spell into the cache of spells that have run now.
if (runSubspell) this.ranSpells.push(this.currentSpell.name)
- // ensaure we run from a clean sloate
+ // ensure we run from a clean slate
this._resetTasks()
// load the inputs into module memory
diff --git a/packages/core/src/spellManager/configureManager.ts b/packages/core/src/spellManager/configureManager.ts
new file mode 100644
index 000000000..8db1bb9e2
--- /dev/null
+++ b/packages/core/src/spellManager/configureManager.ts
@@ -0,0 +1,8 @@
+const configureManager = () => {
+ // we need to fix this typing here to extend from express application instead (or feathers application?)
+ return (app: any) => {
+ app.userSpellManagers = new Map()
+ }
+}
+
+export default configureManager
diff --git a/packages/core/src/spellManager/index.ts b/packages/core/src/spellManager/index.ts
new file mode 100644
index 000000000..b29ed481f
--- /dev/null
+++ b/packages/core/src/spellManager/index.ts
@@ -0,0 +1,5 @@
+import SpellManager from './SpellManager'
+import SpellRunner from './SpellRunner'
+import configureManager from './configureManager'
+
+export { SpellManager, SpellRunner, configureManager }
diff --git a/core/src/thoth-component.ts b/packages/core/src/thoth-component.ts
similarity index 95%
rename from core/src/thoth-component.ts
rename to packages/core/src/thoth-component.ts
index 70e02f7a2..b917d4cf5 100644
--- a/core/src/thoth-component.ts
+++ b/packages/core/src/thoth-component.ts
@@ -1,6 +1,6 @@
import { Node, Socket } from 'rete'
-
-import { PubSubBase, ThothEditor, ThothNode } from '../types'
+import { ThothEditor } from './editor'
+import { PubSubBase, ThothNode } from '../types'
import { ThothEngineComponent } from './engine'
import { Task, TaskOptions } from './plugins/taskPlugin/task'
diff --git a/core/src/utils/chainHelpers.ts b/packages/core/src/utils/chainHelpers.ts
similarity index 100%
rename from core/src/utils/chainHelpers.ts
rename to packages/core/src/utils/chainHelpers.ts
diff --git a/core/src/utils/nodeHelpers.ts b/packages/core/src/utils/nodeHelpers.ts
similarity index 100%
rename from core/src/utils/nodeHelpers.ts
rename to packages/core/src/utils/nodeHelpers.ts
diff --git a/core/src/utils/runChain.ts b/packages/core/src/utils/runChain.ts
similarity index 100%
rename from core/src/utils/runChain.ts
rename to packages/core/src/utils/runChain.ts
diff --git a/packages/core/test/spellManager/SpellRunner.test.ts b/packages/core/test/spellManager/SpellRunner.test.ts
new file mode 100644
index 000000000..cfc02934c
--- /dev/null
+++ b/packages/core/test/spellManager/SpellRunner.test.ts
@@ -0,0 +1,337 @@
+import { ImageCacheResponse, OpenAIResultChoice } from './../../types'
+import SpellRunner from '../../src/spellManager/SpellRunner'
+import imageGeneratorSpell from '../../data/imageGeneratorSpell'
+import thothInterfaceStub from '../../data/thothInterfaceStub'
+import generatorSpell from '../../data/generatorSpell'
+import codeSpell from '../../data/codeSpell'
+import generatorSwitchSpell from '../../data/generatorSwitchSpell'
+import readWriteStateSpell from '../../data/readWriteStateSpell'
+import parentSpell from '../../data/parentSpell'
+import subSpell from '../../data/subSpell'
+import booleanGateSpell from '../../data/booleanGateSpell'
+import joinListSpell from '../../data/joinListSpell'
+import stringProcessorSpell from '../../data/stringProcessorSpell'
+import inputOutputSpell from '../../data/inputOutputSpell'
+import stateReadOutputSpell from '../../data/stateReadOutputSpell'
+
+require('regenerator-runtime/runtime')
+
+describe('SpellRunner', () => {
+ it('Returns an Image Cache Response from an Image Generator Component Spell', async () => {
+ const imageCacheMock = jest
+ .fn()
+ .mockImplementation((caption: string): Promise => {
+ return new Promise(resolve =>
+ resolve({
+ images: [
+ {
+ imageUrl:
+ 'https://aidungeon-images.s3.us-east-2.amazonaws.com/generated_images/48b384e5-823b-44de-a77a-5aad3ee03908.png',
+ },
+ ],
+ } as ImageCacheResponse)
+ )
+ })
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ readFromImageCache: imageCacheMock,
+ },
+ })
+ await runnerInstance.loadSpell(imageGeneratorSpell)
+ const imageSpellResult = await runnerInstance.defaultRun({
+ input: 'imageprompt',
+ })
+ expect(imageCacheMock).toBeCalledWith('imageprompt', undefined, undefined)
+ expect(imageSpellResult).toEqual({
+ output:
+ 'https://aidungeon-images.s3.us-east-2.amazonaws.com/generated_images/48b384e5-823b-44de-a77a-5aad3ee03908.png',
+ })
+ })
+ it('Returns a Text Completion from an Generator Component Spell', async () => {
+ const completionMock = jest.fn().mockImplementation(() => {
+ return new Promise(resolve => resolve('completionresult')) as Promise<
+ string | OpenAIResultChoice
+ >
+ })
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ completion: completionMock,
+ },
+ })
+ await runnerInstance.loadSpell(generatorSpell)
+ const generatorSpellResult = await runnerInstance.defaultRun({
+ input: 'textprompt',
+ })
+ expect(completionMock).toBeCalledWith({
+ frequencyPenalty: 0,
+ maxTokens: 50,
+ model: 'vanilla-jumbo',
+ prompt: 'textprompt',
+ stop: ['\n'],
+ temperature: 0.8,
+ })
+ expect(generatorSpellResult).toEqual({
+ output: 'textpromptcompletionresult',
+ })
+ })
+ it('Returns a Text Completion from an Generator Spell that uses a Switch Component', async () => {
+ const completionMock = jest.fn().mockImplementation(() => {
+ return new Promise(resolve => resolve('completionresult')) as Promise<
+ string | OpenAIResultChoice
+ >
+ })
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ completion: completionMock,
+ },
+ })
+ await runnerInstance.loadSpell(generatorSwitchSpell)
+ const generatorSpellResult = await runnerInstance.defaultRun({
+ input: 'yes',
+ })
+ expect(completionMock).toBeCalledWith({
+ frequencyPenalty: 0,
+ maxTokens: 50,
+ model: 'vanilla-jumbo',
+ prompt: 'Generate',
+ stop: ['\n'],
+ temperature: 0.7,
+ })
+ expect(generatorSpellResult).toEqual({
+ output: 'completionresult',
+ })
+ })
+ it('Returns a Code component result from an Generator Spell that uses a Switch Component', async () => {
+ const completionMock = jest.fn().mockImplementation(() => {
+ return new Promise(resolve => resolve('completionresult')) as Promise<
+ string | OpenAIResultChoice
+ >
+ })
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ completion: completionMock,
+ },
+ })
+ await runnerInstance.loadSpell(generatorSwitchSpell)
+ const generatorSpellResult = await runnerInstance.defaultRun({
+ input: 'no',
+ })
+ expect(generatorSpellResult).toEqual({
+ output: 'nope',
+ })
+ })
+ it('Returns result from an Code Component Spell', async () => {
+ const codeMock = jest
+ .fn()
+ .mockImplementation(thothInterfaceStub.processCode)
+ const runnerInstance = new SpellRunner({
+ thothInterface: { ...thothInterfaceStub, processCode: codeMock },
+ })
+ await runnerInstance.loadSpell(codeSpell)
+ const codeSpellResult = await runnerInstance.defaultRun({
+ input: 'textprompt',
+ })
+ expect(codeMock).toBeCalledWith(
+ "\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return {modifiedInput: inputs.input + ' modified'}\n}\n",
+ { input: ['textprompt'] },
+ {},
+ {}
+ )
+ expect(codeSpellResult).toEqual({
+ output: 'textprompt modified',
+ })
+ })
+
+ it('Returns result from an Read/Write State Component Spell', async () => {
+ let spellState = {}
+ const codeMock = jest
+ .fn()
+ .mockImplementation(thothInterfaceStub.processCode)
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ processCode: codeMock,
+ getCurrentGameState: () => spellState,
+ setCurrentGameState: (state: Record) => {
+ spellState = state
+ },
+ updateCurrentGameState: (state: Record) => {
+ spellState = { ...spellState, ...state }
+ },
+ },
+ })
+
+ await runnerInstance.loadSpell(readWriteStateSpell)
+ const readWriteStateSpellResult = await runnerInstance.defaultRun({
+ input: 'textprompt',
+ })
+ expect(codeMock).toBeCalledWith(
+ '\n// inputs: dictionary of inputs based on socket names\n// data: internal data of the node to read or write to nodes data state\n// state: access to the current game state in the state manager window. Return state to update the state.\nfunction worker(inputs, data, state) {\n\n // Keys of the object returned must match the names \n // of your outputs you defined.\n // To update the state, you must return the modified state.\n return inputs\n}\n',
+ { input: ['textprompt'] },
+ {},
+ {
+ input: 'textprompt',
+ }
+ )
+ expect(readWriteStateSpellResult).toEqual({
+ output: 'textprompt',
+ })
+ })
+ it('Returns an Echo component result from a SubSpell one layer down', async () => {
+ const nestedRunnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ },
+ })
+ const runSpellMock = jest
+ .fn()
+ .mockImplementation(
+ async (
+ flattenedInputs: Record,
+ spellId: string,
+ state: Record
+ ) => {
+ await nestedRunnerInstance.loadSpell(subSpell)
+ const nestedSpellResult = await nestedRunnerInstance.defaultRun(
+ flattenedInputs
+ )
+ console.log({ flattenedInputs, nestedSpellResult })
+ return nestedSpellResult
+ }
+ )
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ runSpell: runSpellMock,
+ },
+ })
+ await runnerInstance.loadSpell(parentSpell)
+ const generatorSpellResult = await runnerInstance.defaultRun({
+ Input: 'echoThisInput',
+ })
+ expect(runSpellMock).toHaveBeenCalledWith(
+ {
+ Input: 'echoThisInput',
+ },
+ 'expected amethyst',
+ {}
+ )
+ expect(generatorSpellResult).toEqual({
+ 'output-233': 'echoThisInput',
+ })
+ })
+ it('Returns a Generator component result from a Boolean gate component', async () => {
+ const nestedRunnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ },
+ })
+
+ const completionMock = jest.fn().mockImplementation(() => {
+ return new Promise(resolve => resolve('completionresult')) as Promise<
+ string | OpenAIResultChoice
+ >
+ })
+
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ completion: completionMock,
+ },
+ })
+ await runnerInstance.loadSpell(booleanGateSpell)
+ const generatorSpellResult = await runnerInstance.defaultRun({
+ input: 'yes',
+ })
+
+ expect(generatorSpellResult).toEqual({
+ output: 'completionresult',
+ })
+ })
+ it('Returns a Code component result from a Boolean gate component', async () => {
+ const nestedRunnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ },
+ })
+
+ const completionMock = jest.fn().mockImplementation(() => {
+ return new Promise(resolve => resolve('completionresult')) as Promise<
+ string | OpenAIResultChoice
+ >
+ })
+
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ completion: completionMock,
+ },
+ })
+ await runnerInstance.loadSpell(booleanGateSpell)
+ const generatorSpellResult = await runnerInstance.defaultRun({
+ input: 'maybe not',
+ })
+
+ expect(generatorSpellResult).toEqual({
+ output: 'nope',
+ })
+ })
+
+ it('Returns result from a Join List Component Spell', async () => {
+ const runnerInstance = new SpellRunner({
+ thothInterface: { ...thothInterfaceStub },
+ })
+ await runnerInstance.loadSpell(joinListSpell)
+ const codeSpellResult = await runnerInstance.defaultRun({
+ input: ['text', 'prompt'],
+ })
+ expect(codeSpellResult).toEqual({
+ output: '1 2 3',
+ })
+ })
+
+ it('Returns result from a String Processor Component Spell', async () => {
+ const runnerInstance = new SpellRunner({
+ thothInterface: { ...thothInterfaceStub },
+ })
+ await runnerInstance.loadSpell(stringProcessorSpell)
+ const codeSpellResult = await runnerInstance.defaultRun({
+ input: ['text', 'prompt'],
+ })
+ expect(codeSpellResult).toEqual({
+ output: 'You said text,prompt!',
+ })
+ })
+
+ it('Returns result from a Input Component Spell', async () => {
+ const runnerInstance = new SpellRunner({
+ thothInterface: { ...thothInterfaceStub },
+ })
+ await runnerInstance.loadSpell(inputOutputSpell)
+ const codeSpellResult = await runnerInstance.defaultRun({
+ Input: 'You said text,prompt!',
+ })
+ expect(codeSpellResult).toEqual({
+ 'output-233': 'You said text,prompt!',
+ })
+ })
+ it('Returns result from a State Read Component Spell', async () => {
+ const runnerInstance = new SpellRunner({
+ thothInterface: {
+ ...thothInterfaceStub,
+ getCurrentGameState: () => {
+ return stateReadOutputSpell.gameState
+ },
+ },
+ })
+ await runnerInstance.loadSpell(stateReadOutputSpell)
+ const codeSpellResult = await runnerInstance.defaultRun({})
+ expect(codeSpellResult).toEqual({
+ 'output-233': 'stateOutput',
+ })
+ })
+})
diff --git a/core/tsconfig-release.json b/packages/core/tsconfig-release.json
similarity index 100%
rename from core/tsconfig-release.json
rename to packages/core/tsconfig-release.json
diff --git a/core/tsconfig.json b/packages/core/tsconfig.json
similarity index 79%
rename from core/tsconfig.json
rename to packages/core/tsconfig.json
index 142b03a2f..574168878 100644
--- a/core/tsconfig.json
+++ b/packages/core/tsconfig.json
@@ -1,5 +1,5 @@
{
- "extends": "../tsconfig.json",
+ "extends": "../../tsconfig.json",
"compilerOptions": {
"allowJs": true,
"module": "commonjs",
@@ -17,5 +17,5 @@
"sourceMap": true
},
"include": ["./"],
- "exclude": ["./node_modules/", "./dist/"]
+ "exclude": ["./node_modules/", "./dist/", "./test", "./data"]
}
diff --git a/core/types.ts b/packages/core/types.ts
similarity index 98%
rename from core/types.ts
rename to packages/core/types.ts
index 1802993a5..9bef5117a 100644
--- a/core/types.ts
+++ b/packages/core/types.ts
@@ -17,8 +17,8 @@ import { ThothTask } from './src/thoth-component'
import { ThothConsole } from './src/plugins/debuggerPlugin/ThothConsole'
import { Data } from 'rete/types/core/data'
export { ThothComponent } from './src/thoth-component'
-
-export { ThothEditor } from './src/editor'
+//@seang this was causing test enviroment issues to have it shared client/server
+// export { ThothEditor } from './src/editor'
export type { InspectorData } from './src/plugins/inspectorPlugin/Inspector'
diff --git a/core/webpack.common.js b/packages/core/webpack.common.js
similarity index 91%
rename from core/webpack.common.js
rename to packages/core/webpack.common.js
index 53a8cb607..6d5554096 100644
--- a/core/webpack.common.js
+++ b/packages/core/webpack.common.js
@@ -7,8 +7,8 @@ const LicenseWebpackPlugin =
module.exports = () => {
const config = {
entry: {
- index: './index.ts',
- server: './server.ts',
+ index: ['regenerator-runtime/runtime.js', './index.ts'],
+ server: ['regenerator-runtime/runtime.js', './server.ts'],
},
output: {
path: path.join(__dirname, 'dist'),
diff --git a/core/webpack.dev.js b/packages/core/webpack.dev.js
similarity index 100%
rename from core/webpack.dev.js
rename to packages/core/webpack.dev.js
diff --git a/core/webpack.prod.js b/packages/core/webpack.prod.js
similarity index 100%
rename from core/webpack.prod.js
rename to packages/core/webpack.prod.js
diff --git a/packages/runner/.editorconfig b/packages/runner/.editorconfig
new file mode 100644
index 000000000..e717f5eb6
--- /dev/null
+++ b/packages/runner/.editorconfig
@@ -0,0 +1,13 @@
+# http://editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/packages/runner/.env.example b/packages/runner/.env.example
new file mode 100644
index 000000000..5f0601024
--- /dev/null
+++ b/packages/runner/.env.example
@@ -0,0 +1,2 @@
+LATITUDE_API_URL=https://api.latitude.io/
+LATITUDE_API_KEY=yoursupersecretapitoken
\ No newline at end of file
diff --git a/packages/runner/.eslintrc.json b/packages/runner/.eslintrc.json
new file mode 100644
index 000000000..d0fbe2014
--- /dev/null
+++ b/packages/runner/.eslintrc.json
@@ -0,0 +1,38 @@
+{
+ "env": {
+ "es6": true,
+ "node": true,
+ "jest": true
+ },
+ "parserOptions": {
+ "parser": "@typescript-eslint/parser",
+ "ecmaVersion": 2018,
+ "sourceType": "module"
+ },
+ "plugins": [
+ "@typescript-eslint"
+ ],
+ "extends": [
+ "plugin:@typescript-eslint/recommended"
+ ],
+ "rules": {
+ "indent": [
+ "error",
+ 2
+ ],
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "quotes": [
+ "error",
+ "single"
+ ],
+ "semi": [
+ "error",
+ "always"
+ ],
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-empty-interface": "off"
+ }
+}
diff --git a/packages/runner/.gitignore b/packages/runner/.gitignore
new file mode 100644
index 000000000..3a6182fbf
--- /dev/null
+++ b/packages/runner/.gitignore
@@ -0,0 +1,113 @@
+# Logs
+logs
+*.log
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directory
+# Commenting this out is preferred by some people, see
+# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
+node_modules
+
+# Users Environment Variables
+.lock-wscript
+
+# IDEs and editors (shamelessly copied from @angular/cli's .gitignore)
+/.idea
+.project
+.classpath
+.c9/
+*.launch
+.settings/
+*.sublime-workspace
+
+# IDE - VSCode
+.vscode/*
+!.vscode/settings.json
+!.vscode/tasks.json
+!.vscode/launch.json
+!.vscode/extensions.json
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### OSX ###
+*.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+ehthumbs.db
+ehthumbs_vista.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# Others
+lib/
+data/
+.env
\ No newline at end of file
diff --git a/packages/runner/README.md b/packages/runner/README.md
new file mode 100644
index 000000000..a15854810
--- /dev/null
+++ b/packages/runner/README.md
@@ -0,0 +1,45 @@
+# @thoth/runner
+
+> Realtime spell running server
+
+## About
+
+This project uses [Feathers](http://feathersjs.com). An open source web framework for building modern real-time applications.
+
+## Getting Started
+
+Getting up and running is as easy as 1, 2, 3.
+
+1. Make sure you have [NodeJS](https://nodejs.org/) and [yarn](https://yarnpkg.com/) installed.
+2. Install your dependencies
+
+ ```
+ cd path/to/@thoth/runner
+ yarn
+ ```
+
+3. Start your app
+
+ ```
+ yarn start
+ ```
+
+## Testing
+
+Simply run `yarn test` and all your tests in the `test/` directory will be run.
+
+## Scaffolding
+
+Feathers has a powerful command line interface. Here are a few things it can do:
+
+```
+$ yarn global add @feathersjs/cli # Install Feathers CLI
+
+$ feathers generate service # Generate a new Service
+$ feathers generate hook # Generate a new Hook
+$ feathers help # Show all commands
+```
+
+## Help
+
+For more information on all the things you can do with Feathers visit [docs.feathersjs.com](http://docs.feathersjs.com).
diff --git a/packages/runner/config/default.json b/packages/runner/config/default.json
new file mode 100644
index 000000000..ba1d3f01e
--- /dev/null
+++ b/packages/runner/config/default.json
@@ -0,0 +1,31 @@
+{
+ "host": "localhost",
+ "port": 3030,
+ "public": "../public/",
+ "paginate": {
+ "default": 10,
+ "max": 50
+ },
+ "authentication": {
+ "entity": "user",
+ "service": "users",
+ "secret": "hmjvvOTQU/JYpfaajnb8W0aXfps=",
+ "authStrategies": [
+ "jwt",
+ "local"
+ ],
+ "jwtOptions": {
+ "header": {
+ "typ": "access"
+ },
+ "audience": "https://yourdomain.com",
+ "issuer": "feathers",
+ "algorithm": "HS256",
+ "expiresIn": "1d"
+ },
+ "local": {
+ "usernameField": "email",
+ "passwordField": "password"
+ }
+ }
+}
diff --git a/packages/runner/config/production.json b/packages/runner/config/production.json
new file mode 100644
index 000000000..61c41d582
--- /dev/null
+++ b/packages/runner/config/production.json
@@ -0,0 +1,4 @@
+{
+ "host": "@thoth/runner-app.feathersjs.com",
+ "port": "PORT"
+}
diff --git a/packages/runner/config/test.json b/packages/runner/config/test.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/packages/runner/config/test.json
@@ -0,0 +1 @@
+{}
diff --git a/packages/runner/jest.config.js b/packages/runner/jest.config.js
new file mode 100644
index 000000000..570708985
--- /dev/null
+++ b/packages/runner/jest.config.js
@@ -0,0 +1,9 @@
+module.exports = {
+ preset: 'ts-jest',
+ testEnvironment: 'node',
+ globals: {
+ 'ts-jest': {
+ diagnostics: false
+ }
+ }
+};
diff --git a/packages/runner/package.json b/packages/runner/package.json
new file mode 100644
index 000000000..62f7ed71e
--- /dev/null
+++ b/packages/runner/package.json
@@ -0,0 +1,73 @@
+{
+ "name": "@thoth/runner",
+ "description": "Realtime spell running server",
+ "version": "0.0.0",
+ "homepage": "",
+ "private": true,
+ "main": "src",
+ "keywords": [
+ "feathers"
+ ],
+ "author": {
+ "name": "Michael Sharpe",
+ "email": "m.sharpe@project89.org"
+ },
+ "contributors": [],
+ "bugs": {},
+ "directories": {
+ "lib": "src",
+ "test": "test/",
+ "config": "config/"
+ },
+ "scripts": {
+ "test": "yarn lint && yarn compile && yarn jest",
+ "lint": "eslint src/. test/. --config .eslintrc.json --ext .ts --fix",
+ "dev": "ts-node-dev --no-notify src/",
+ "start": "yarn compile && node lib/",
+ "jest": "jest --forceExit",
+ "compile": "shx rm -rf lib/ && tsc"
+ },
+ "standard": {
+ "env": [
+ "jest"
+ ],
+ "ignore": []
+ },
+ "types": "lib/",
+ "dependencies": {
+ "@feathersjs/authentication": "^4.5.11",
+ "@feathersjs/authentication-local": "^4.5.11",
+ "@feathersjs/authentication-oauth": "^4.5.11",
+ "@feathersjs/configuration": "^4.5.11",
+ "@feathersjs/errors": "^4.5.11",
+ "@feathersjs/express": "^4.5.11",
+ "@feathersjs/feathers": "^4.5.11",
+ "@feathersjs/socketio": "^4.5.11",
+ "@feathersjs/transport-commons": "^4.5.14",
+ "@latitudegames/thoth-core": "^0.0.68",
+ "@typescript-eslint/eslint-plugin": "^5.22.0",
+ "@typescript-eslint/parser": "^5.22.0",
+ "axios": "^0.27.2",
+ "compression": "^1.7.4",
+ "cors": "^2.8.5",
+ "dotenv": "^16.0.1",
+ "helmet": "^4.6.0",
+ "serve-favicon": "^2.5.0",
+ "vm2": "^3.9.9",
+ "winston": "^3.0.0"
+ },
+ "devDependencies": {
+ "@types/compression": "^1.7.2",
+ "@types/cors": "^2.8.12",
+ "@types/jest": "^27.4.1",
+ "@types/jsonwebtoken": "^8.5.8",
+ "@types/serve-favicon": "^2.5.3",
+ "axios": "^0.27.2",
+ "eslint": "^8.6.0",
+ "jest": "^28.0.3",
+ "shx": "^0.3.4",
+ "ts-jest": "^27.1.4",
+ "ts-node-dev": "^2.0.0",
+ "typescript": "^4.5.4"
+ }
+}
diff --git a/packages/runner/public/favicon.ico b/packages/runner/public/favicon.ico
new file mode 100644
index 000000000..7ed25a60b
Binary files /dev/null and b/packages/runner/public/favicon.ico differ
diff --git a/packages/runner/public/index.html b/packages/runner/public/index.html
new file mode 100644
index 000000000..73128e5b0
--- /dev/null
+++ b/packages/runner/public/index.html
@@ -0,0 +1,75 @@
+
+
+
+ A FeathersJS application
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/runner/src/@types/index.d.ts b/packages/runner/src/@types/index.d.ts
new file mode 100644
index 000000000..0c554cfab
--- /dev/null
+++ b/packages/runner/src/@types/index.d.ts
@@ -0,0 +1 @@
+declare module 'ot-json0'
diff --git a/packages/runner/src/api/axios.ts b/packages/runner/src/api/axios.ts
new file mode 100644
index 000000000..42758e82e
--- /dev/null
+++ b/packages/runner/src/api/axios.ts
@@ -0,0 +1,9 @@
+import axios from 'axios'
+import { LATITUDE_API_KEY, LATITUDE_API_URL } from '../config'
+
+export const authRequest = axios.create({
+ baseURL: LATITUDE_API_URL,
+ headers: {
+ 'x-api-key': LATITUDE_API_KEY,
+ },
+})
diff --git a/packages/runner/src/api/completion.ts b/packages/runner/src/api/completion.ts
new file mode 100644
index 000000000..b10857a18
--- /dev/null
+++ b/packages/runner/src/api/completion.ts
@@ -0,0 +1,18 @@
+import { authRequest } from './axios'
+
+export const completion = async (request: Record) => {
+ try {
+ const response = await authRequest({
+ url: '/text/completions_v2',
+ data: JSON.stringify(request),
+ })
+
+ console.log('response from completion', response)
+
+ return response.data
+ } catch (err) {
+ console.log('Error in completion!')
+ console.log('Err', err)
+ return {}
+ }
+}
diff --git a/packages/runner/src/api/spell.ts b/packages/runner/src/api/spell.ts
new file mode 100644
index 000000000..23f4bb384
--- /dev/null
+++ b/packages/runner/src/api/spell.ts
@@ -0,0 +1,46 @@
+import { authRequest } from './axios'
+
+export const getSpell = async (spellId: string) => {
+ try {
+ const response = await authRequest({
+ url: `/game/spells/${spellId}`,
+ })
+
+ return response.data
+ } catch (err) {
+ console.log('Error getting spell!')
+ console.log('Err', err)
+ return {}
+ }
+}
+
+type RunSpellArguments = {
+ spellId: string
+ inputs: Record
+ state?: Record
+ version?: string
+}
+
+export const runSpell = async ({
+ spellId,
+ version = 'latest',
+ inputs,
+ state = {},
+}: RunSpellArguments) => {
+ try {
+ const data = {
+ inputs,
+ state,
+ }
+ const response = await authRequest({
+ url: `game/chains/${spellId}/${version}`,
+ data: JSON.stringify(data),
+ })
+
+ return response.data
+ } catch (err) {
+ console.log('Error running spell!')
+ console.log('Err', err)
+ return {}
+ }
+}
diff --git a/packages/runner/src/app.hooks.ts b/packages/runner/src/app.hooks.ts
new file mode 100644
index 000000000..1be533832
--- /dev/null
+++ b/packages/runner/src/app.hooks.ts
@@ -0,0 +1,34 @@
+// Application hooks that run for every service
+// Don't remove this comment. It's needed to format import lines nicely.
+
+export default {
+ before: {
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: []
+ },
+
+ after: {
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: []
+ },
+
+ error: {
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: []
+ }
+};
diff --git a/packages/runner/src/app.ts b/packages/runner/src/app.ts
new file mode 100644
index 000000000..9686a3440
--- /dev/null
+++ b/packages/runner/src/app.ts
@@ -0,0 +1,85 @@
+import io from 'socket.io'
+import path from 'path'
+import favicon from 'serve-favicon'
+import compress from 'compression'
+import helmet from 'helmet'
+import cors from 'cors'
+
+import feathers from '@feathersjs/feathers'
+import configuration from '@feathersjs/configuration'
+import express from '@feathersjs/express'
+import socketio from '@feathersjs/socketio'
+
+import { Application } from './declarations'
+import logger from './logger'
+import middleware from './middleware'
+import services from './services'
+import appHooks from './app.hooks'
+import channels from './channels'
+import { HookContext as FeathersHookContext } from '@feathersjs/feathers'
+import handleSockets from './sockets'
+// import authentication from './authentication'
+import { configureManager } from '@latitudegames/thoth-core/dist/server'
+// Don't remove this comment. It's needed to format import lines nicely.
+
+const app: Application = express(feathers())
+export type HookContext = { app: Application } & FeathersHookContext
+
+// Load app configuration
+app.configure(configuration())
+// Enable security, CORS, compression, favicon and body parsing
+app.use(
+ helmet({
+ contentSecurityPolicy: false,
+ })
+)
+app.use(cors())
+
+app.use(compress())
+app.use(express.json())
+app.use(express.urlencoded({ extended: true }))
+app.use(favicon(path.join(app.get('public'), 'favicon.ico')))
+// Host the public folder
+app.use('/', express.static(app.get('public')))
+
+// Set up Plugins and providers
+app.configure(express.rest())
+
+const socketOptions = {
+ origins: ['http://localhost:3003'],
+
+ handlePreflightRequest: (_: any, res: any) => {
+ console.log('HANDLING PREFLIGHT!!')
+ res.writeHead(200, {
+ 'Access-Control-Allow-Origin': 'http://localhost:3003',
+ 'Access-Control-Allow-Methods': 'GET,POST',
+ 'Access-Control-Allow-Headers': 'Authorization',
+ 'Access-Control-Allow-Credentials': true,
+ })
+ res.end()
+ },
+}
+
+// configures this needed for the spellManager
+app.configure(configureManager())
+// Begins the entrypoint or where we handle our sockets
+app.configure(
+ // This is hacky. But some socket options are required by typescript, but the library uses defaults.
+ socketio(socketOptions as unknown as io.ServerOptions, handleSockets(app))
+)
+
+// Configure other middleware (see `middleware/index.ts`)
+app.configure(middleware)
+// app.configure(authentication)
+// Set up our services (see `services/index.ts`)
+app.configure(services)
+// Set up event channels (see channels.ts)
+app.configure(channels)
+
+// Configure a middleware for 404s and the error handler
+app.use(express.notFound())
+app.use(express.errorHandler({ logger } as any))
+
+app.hooks(appHooks)
+
+export default app
diff --git a/packages/runner/src/authentication.ts b/packages/runner/src/authentication.ts
new file mode 100644
index 000000000..d95d01c8e
--- /dev/null
+++ b/packages/runner/src/authentication.ts
@@ -0,0 +1,22 @@
+import { ServiceAddons } from '@feathersjs/feathers';
+import { AuthenticationService, JWTStrategy } from '@feathersjs/authentication';
+import { LocalStrategy } from '@feathersjs/authentication-local';
+import { expressOauth } from '@feathersjs/authentication-oauth';
+
+import { Application } from './declarations';
+
+declare module './declarations' {
+ interface ServiceTypes {
+ 'authentication': AuthenticationService & ServiceAddons;
+ }
+}
+
+export default function(app: Application): void {
+ const authentication = new AuthenticationService(app);
+
+ authentication.register('jwt', new JWTStrategy());
+ authentication.register('local', new LocalStrategy());
+
+ app.use('/authentication', authentication);
+ app.configure(expressOauth());
+}
diff --git a/packages/runner/src/channels.ts b/packages/runner/src/channels.ts
new file mode 100644
index 000000000..65d213bd0
--- /dev/null
+++ b/packages/runner/src/channels.ts
@@ -0,0 +1,65 @@
+import '@feathersjs/transport-commons';
+import { HookContext } from '@feathersjs/feathers';
+import { Application } from './declarations';
+
+export default function(app: Application): void {
+ if(typeof app.channel !== 'function') {
+ // If no real-time functionality has been configured just return
+ return;
+ }
+
+ app.on('connection', (connection: any): void => {
+ // On a new real-time connection, add it to the anonymous channel
+ app.channel('anonymous').join(connection);
+ });
+
+ app.on('login', (authResult: any, { connection }: any): void => {
+ // connection can be undefined if there is no
+ // real-time connection, e.g. when logging in via REST
+ if(connection) {
+ // Obtain the logged in user from the connection
+ // const user = connection.user;
+
+ // The connection is no longer anonymous, remove it
+ app.channel('anonymous').leave(connection);
+
+ // Add it to the authenticated user channel
+ app.channel('authenticated').join(connection);
+
+ // Channels can be named anything and joined on any condition
+
+ // E.g. to send real-time events only to admins use
+ // if(user.isAdmin) { app.channel('admins').join(connection); }
+
+ // If the user has joined e.g. chat rooms
+ // if(Array.isArray(user.rooms)) user.rooms.forEach(room => app.channel(`rooms/${room.id}`).join(connection));
+
+ // Easily organize users by email and userid for things like messaging
+ // app.channel(`emails/${user.email}`).join(connection);
+ // app.channel(`userIds/${user.id}`).join(connection);
+ }
+ });
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ app.publish((data: any, hook: HookContext) => {
+ // Here you can add event publishers to channels set up in `channels.ts`
+ // To publish only for a specific event use `app.publish(eventname, () => {})`
+
+ console.log('Publishing all events to all authenticated users. See `channels.ts` and https://docs.feathersjs.com/api/channels.html for more information.'); // eslint-disable-line
+
+ // e.g. to publish all service events to all authenticated users use
+ return app.channel('authenticated');
+ });
+
+ // Here you can also add service specific event publishers
+ // e.g. the publish the `users` service `created` event to the `admins` channel
+ // app.service('users').publish('created', () => app.channel('admins'));
+
+ // With the userid and email organization from above you can easily select involved users
+ // app.service('messages').publish(() => {
+ // return [
+ // app.channel(`userIds/${data.createdBy}`),
+ // app.channel(`emails/${data.recipientEmail}`)
+ // ];
+ // });
+};
diff --git a/packages/runner/src/config.ts b/packages/runner/src/config.ts
new file mode 100644
index 000000000..b0b6373d8
--- /dev/null
+++ b/packages/runner/src/config.ts
@@ -0,0 +1,4 @@
+export const LATITUDE_API_URL =
+ process.env.LATITUDE_API_URL || 'https://api.latitude.io/'
+
+export const LATITUDE_API_KEY = process.env.LATITUDE_API_KEY || 'youneedakey'
diff --git a/packages/runner/src/declarations.d.ts b/packages/runner/src/declarations.d.ts
new file mode 100644
index 000000000..948931f5f
--- /dev/null
+++ b/packages/runner/src/declarations.d.ts
@@ -0,0 +1,9 @@
+import { Application as ExpressFeathers } from '@feathersjs/express'
+import { SpellManager } from '@latitudegames/thoth-core/dist/server'
+
+// A mapping of service names to types. Will be extended in service files.
+export interface ServiceTypes {}
+// The application instance type that will be used everywhere else
+export interface Application extends ExpressFeathers {
+ userSpellManagers?: Map
+}
diff --git a/packages/runner/src/index.ts b/packages/runner/src/index.ts
new file mode 100644
index 000000000..1c62795b5
--- /dev/null
+++ b/packages/runner/src/index.ts
@@ -0,0 +1,18 @@
+import 'dotenv/config'
+import logger from './logger'
+import app from './app'
+
+const port = app.get('port')
+const server = app.listen(port)
+
+process.on('unhandledRejection', (reason, p) =>
+ logger.error('Unhandled Rejection at: Promise ', p, reason)
+)
+
+server.on('listening', () =>
+ logger.info(
+ 'Feathers application started on http://%s:%d',
+ app.get('host'),
+ port
+ )
+)
diff --git a/packages/runner/src/logger.ts b/packages/runner/src/logger.ts
new file mode 100644
index 000000000..739c222b0
--- /dev/null
+++ b/packages/runner/src/logger.ts
@@ -0,0 +1,16 @@
+import { createLogger, format, transports } from 'winston';
+
+// Configure the Winston logger. For the complete documentation see https://github.com/winstonjs/winston
+const logger = createLogger({
+ // To see more detailed errors, change this to 'debug'
+ level: 'info',
+ format: format.combine(
+ format.splat(),
+ format.simple()
+ ),
+ transports: [
+ new transports.Console()
+ ],
+});
+
+export default logger;
diff --git a/packages/runner/src/middleware/index.ts b/packages/runner/src/middleware/index.ts
new file mode 100644
index 000000000..e78268375
--- /dev/null
+++ b/packages/runner/src/middleware/index.ts
@@ -0,0 +1,6 @@
+import { Application } from '../declarations';
+// Don't remove this comment. It's needed to format import lines nicely.
+
+// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
+export default function (app: Application): void {
+}
diff --git a/packages/runner/src/services/index.ts b/packages/runner/src/services/index.ts
new file mode 100644
index 000000000..d9adbdc5d
--- /dev/null
+++ b/packages/runner/src/services/index.ts
@@ -0,0 +1,9 @@
+import { Application } from '../declarations';
+import users from './users/users.service';
+import spellRunner from './spell-runner/spell-runner.service';
+// Don't remove this comment. It's needed to format import lines nicely.
+
+export default function (app: Application): void {
+ app.configure(users);
+ app.configure(spellRunner);
+}
diff --git a/packages/runner/src/services/spell-runner/spell-runner.class.ts b/packages/runner/src/services/spell-runner/spell-runner.class.ts
new file mode 100644
index 000000000..b2273d7f3
--- /dev/null
+++ b/packages/runner/src/services/spell-runner/spell-runner.class.ts
@@ -0,0 +1,125 @@
+import otJson0 from 'ot-json0'
+import {
+ Id,
+ NullableId,
+ Paginated,
+ Params,
+ ServiceMethods,
+} from '@feathersjs/feathers'
+import { getSpell } from '../../api/spell'
+import { Application } from '../../declarations'
+
+interface Data {}
+
+interface CreateData {
+ inputs: Record
+ spellId: string
+}
+
+interface ServiceOptions {}
+
+type UserInfo = {
+ id: string
+}
+interface SpellRunnerParams extends Params {
+ user: UserInfo
+}
+
+export class SpellRunner implements ServiceMethods {
+ app: Application
+ options: ServiceOptions
+
+ constructor(options: ServiceOptions = {}, app: Application) {
+ this.options = options
+ this.app = app
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-varswaaaa
+ async find(params?: Params): Promise> {
+ return []
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async get(id: Id, params?: SpellRunnerParams): Promise {
+ if (!this.app.userSpellManagers) return {}
+ if (!params) throw new Error('No params present in service')
+
+ const { user } = params
+
+ if (!user) throw new Error('No user is present in service')
+ // Here we get the users spellManagerApp
+ const spellManager = this.app.userSpellManagers.get(user.id)
+
+ if (!spellManager) throw new Error('No spell manager created for user!')
+
+ const spell = await getSpell(id as string)
+
+ // Load the spell into the spellManager. If there is no spell runner, we make one.
+ const spellRunner = spellManager.load(spell)
+
+ console.log('spellRunner loaded!', spellRunner)
+
+ return spell
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async create(
+ data: CreateData,
+ params?: Params
+ ): Promise> {
+ if (!this.app.userSpellManagers) return {}
+ if (!params) throw new Error('No params present in service')
+
+ const { user } = params
+
+ if (!user) throw new Error('No user is present in service')
+
+ const { inputs, spellId } = data
+
+ const spellManager = this.app.userSpellManagers.get(user.id)
+
+ if (!spellManager) throw new Error('No spell manager found for user!')
+
+ const result = await spellManager.run(spellId, inputs)
+
+ return result || {}
+ }
+
+ async update(
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ spellId: string,
+ data: { diff: Record },
+ params?: Params
+ ): Promise {
+ if (!this.app.userSpellManagers) return {}
+ if (!params) throw new Error('No params present in service')
+
+ const { user } = params
+
+ if (!user) throw new Error('No user present in service')
+
+ const { diff } = data
+
+ const spellManager = this.app.userSpellManagers.get(user.id)
+ if (!spellManager) throw new Error('No spell manager found for user!')
+
+ const spellRunner = spellManager.getSpellRunner(spellId)
+ if (!spellRunner) throw new Error('No spell runner found!')
+
+ const spell = spellRunner.currentSpell
+ const updatedSpell = otJson0.type.apply(spell, diff)
+
+ spellManager.load(updatedSpell, true)
+ return updatedSpell
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async patch(id: NullableId, data: Data, params?: Params): Promise {
+ return data
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async remove(id: NullableId, params?: Params): Promise {
+ return { id }
+ }
+}
diff --git a/packages/runner/src/services/spell-runner/spell-runner.hooks.ts b/packages/runner/src/services/spell-runner/spell-runner.hooks.ts
new file mode 100644
index 000000000..82a8fcbc8
--- /dev/null
+++ b/packages/runner/src/services/spell-runner/spell-runner.hooks.ts
@@ -0,0 +1,39 @@
+// import { HooksObject } from '@feathersjs/feathers'
+// import * as authentication from '@feathersjs/authentication'
+// Don't remove this comment. It's needed to format import lines nicely.
+
+// const { authenticate } = authentication.hooks;
+
+export default {
+ before: {
+ // turning off authentication here for now.
+ // all: [ authenticate('jwt') ],
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: [],
+ },
+
+ after: {
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: [],
+ },
+
+ error: {
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: [],
+ },
+}
diff --git a/packages/runner/src/services/spell-runner/spell-runner.service.ts b/packages/runner/src/services/spell-runner/spell-runner.service.ts
new file mode 100644
index 000000000..b3f7d0bbb
--- /dev/null
+++ b/packages/runner/src/services/spell-runner/spell-runner.service.ts
@@ -0,0 +1,26 @@
+// Initializes the `spellRunner` service on path `/spell-runner`
+import { ServiceAddons } from '@feathersjs/feathers';
+import { Application } from '../../declarations';
+import { SpellRunner } from './spell-runner.class';
+import hooks from './spell-runner.hooks';
+
+// Add this service to the service type index
+declare module '../../declarations' {
+ interface ServiceTypes {
+ 'spell-runner': SpellRunner & ServiceAddons;
+ }
+}
+
+export default function (app: Application): void {
+ const options = {
+ paginate: app.get('paginate')
+ };
+
+ // Initialize our service with any options it requires
+ app.use('/spell-runner', new SpellRunner(options, app));
+
+ // Get our initialized service so that we can register hooks
+ const service = app.service('spell-runner');
+
+ service.hooks(hooks);
+}
diff --git a/packages/runner/src/services/users/users.class.ts b/packages/runner/src/services/users/users.class.ts
new file mode 100644
index 000000000..9046baac3
--- /dev/null
+++ b/packages/runner/src/services/users/users.class.ts
@@ -0,0 +1,52 @@
+import { Id, NullableId, Paginated, Params, ServiceMethods } from '@feathersjs/feathers';
+import { Application } from '../../declarations';
+
+interface Data {}
+
+interface ServiceOptions {}
+
+export class Users implements ServiceMethods {
+ app: Application;
+ options: ServiceOptions;
+
+ constructor (options: ServiceOptions = {}, app: Application) {
+ this.options = options;
+ this.app = app;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async find (params?: Params): Promise> {
+ return [];
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async get (id: Id, params?: Params): Promise {
+ return {
+ id, text: `A new message with ID: ${id}!`
+ };
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async create (data: Data, params?: Params): Promise {
+ if (Array.isArray(data)) {
+ return Promise.all(data.map(current => this.create(current, params)));
+ }
+
+ return data;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async update (id: NullableId, data: Data, params?: Params): Promise {
+ return data;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async patch (id: NullableId, data: Data, params?: Params): Promise {
+ return data;
+ }
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ async remove (id: NullableId, params?: Params): Promise {
+ return { id };
+ }
+}
diff --git a/packages/runner/src/services/users/users.hooks.ts b/packages/runner/src/services/users/users.hooks.ts
new file mode 100644
index 000000000..b3429ce85
--- /dev/null
+++ b/packages/runner/src/services/users/users.hooks.ts
@@ -0,0 +1,42 @@
+import * as feathersAuthentication from '@feathersjs/authentication';
+import * as local from '@feathersjs/authentication-local';
+// Don't remove this comment. It's needed to format import lines nicely.
+
+const { authenticate } = feathersAuthentication.hooks;
+const { hashPassword, protect } = local.hooks;
+
+export default {
+ before: {
+ all: [],
+ find: [ authenticate('jwt') ],
+ get: [ authenticate('jwt') ],
+ create: [ hashPassword('password') ],
+ update: [ hashPassword('password'), authenticate('jwt') ],
+ patch: [ hashPassword('password'), authenticate('jwt') ],
+ remove: [ authenticate('jwt') ]
+ },
+
+ after: {
+ all: [
+ // Make sure the password field is never sent to the client
+ // Always must be the last hook
+ protect('password')
+ ],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: []
+ },
+
+ error: {
+ all: [],
+ find: [],
+ get: [],
+ create: [],
+ update: [],
+ patch: [],
+ remove: []
+ }
+};
diff --git a/packages/runner/src/services/users/users.service.ts b/packages/runner/src/services/users/users.service.ts
new file mode 100644
index 000000000..0950123c6
--- /dev/null
+++ b/packages/runner/src/services/users/users.service.ts
@@ -0,0 +1,26 @@
+// Initializes the `users` service on path `/users`
+import { ServiceAddons } from '@feathersjs/feathers';
+import { Application } from '../../declarations';
+import { Users } from './users.class';
+import hooks from './users.hooks';
+
+// Add this service to the service type index
+declare module '../../declarations' {
+ interface ServiceTypes {
+ 'users': Users & ServiceAddons;
+ }
+}
+
+export default function (app: Application): void {
+ const options = {
+ paginate: app.get('paginate')
+ };
+
+ // Initialize our service with any options it requires
+ app.use('/users', new Users(options, app));
+
+ // Get our initialized service so that we can register hooks
+ const service = app.service('users');
+
+ service.hooks(hooks);
+}
diff --git a/packages/runner/src/sockets.ts b/packages/runner/src/sockets.ts
new file mode 100644
index 000000000..8c457ce8c
--- /dev/null
+++ b/packages/runner/src/sockets.ts
@@ -0,0 +1,53 @@
+// import io from 'socket.io'
+import axios from 'axios'
+import { SpellManager } from '@latitudegames/thoth-core/dist/server'
+import { buildThothInterface } from './thothInterface'
+
+// interface FeathersSocket extends io.Socket {
+// feathers: any
+// }
+
+const getUserInfo = async (sessionId: string) => {
+ try {
+ const response = await axios({
+ url: 'https://api.latitude.io/user/info',
+ headers: {
+ Authorization: `session ${sessionId}`,
+ },
+ })
+
+ return response.data
+ } catch (err) {
+ console.log('Error getting usert info!')
+ console.log(err)
+ }
+}
+
+const handleSockets = (app: any) => {
+ return (io: any) => {
+ // Another gross 'any' here
+ io.on('connection', async function (socket: any) {
+ console.log('CONNECTION ESTABLISHED')
+ const sessionId = socket.handshake.headers.authorization.split(' ')[1]
+
+ if (!sessionId) throw new Error('No session id provided for handshake')
+ // Authenticate with the auth headers here
+ const user = await getUserInfo(sessionId)
+
+ // Attach the user info to the params or use in services
+ socket.feathers.user = user
+
+ // probably need to move interface instantiation into the runner rather than the spell manager.
+ // Doing it this way makes the interface shared across all spells
+ // Which messes up state stuff.
+ const thothInterface = buildThothInterface({})
+ const spellManager = new SpellManager(thothInterface, socket)
+
+ app.userSpellManagers.set(user.id, spellManager)
+
+ socket.emit('connected')
+ })
+ }
+}
+
+export default handleSockets
diff --git a/packages/runner/src/thothInterface.ts b/packages/runner/src/thothInterface.ts
new file mode 100644
index 000000000..aed2d769e
--- /dev/null
+++ b/packages/runner/src/thothInterface.ts
@@ -0,0 +1,93 @@
+import vm2 from 'vm2'
+import {
+ EngineContext,
+ ThothWorkerInputs,
+} from '@latitudegames/thoth-core/dist/types'
+import { completion } from './api/completion'
+import { runSpell } from './api/spell'
+
+export const buildThothInterface = (
+ defaultState: Record
+): EngineContext => {
+ // notes: need a way to replace state between runs?
+
+ let gameState = {
+ ...defaultState,
+ }
+
+ return {
+ // would be good to get a proper type in here
+ async completion(request: Record) {
+ const response = await completion(request)
+ return response
+ },
+ getCurrentGameState: () => gameState,
+ setCurrentGameState: (state: Record) => {
+ gameState = state
+ },
+ updateCurrentGameState: (update: Record) => {
+ const newState = {
+ ...gameState,
+ ...update,
+ }
+ gameState = newState
+ },
+ async enkiCompletion() {
+ // Hit enki endpoint?
+ return { outputs: [] }
+ },
+ async huggingface() {
+ return {}
+ },
+ async runSpell(inputs: Record, spellId: string) {
+ return runSpell({ spellId, inputs })
+ },
+ async readFromImageCache() {
+ return { images: [] }
+ },
+ processCode: (
+ code: unknown,
+ inputs: ThothWorkerInputs,
+ data: Record,
+ state: Record
+ ) => {
+ const { VM } = vm2
+
+ const logValues: any[] = []
+
+ const sandboxConsole = {
+ log: (val: any, ...rest: any[]) => {
+ if (rest.length) {
+ logValues.push(JSON.stringify([val, ...rest], null, 2))
+ } else {
+ logValues.push(JSON.stringify(val, null, 2))
+ }
+ },
+ }
+
+ const flattenedInputs = Object.entries(
+ inputs as ThothWorkerInputs
+ ).reduce((acc, [key, value]) => {
+ // eslint-disable-next-line prefer-destructuring
+ acc[key as string] = value[0] // as any[][0] <- this change was made 2 days ago
+ return acc
+ }, {} as Record)
+
+ const vm = new VM()
+
+ vm.protect(state, 'state')
+
+ vm.freeze(flattenedInputs, 'input')
+ vm.freeze(data, 'data')
+ vm.freeze(sandboxConsole, 'console')
+
+ const codeToRun = `"use strict"; function runFn(input,data,state){ const copyFn=${code}; return copyFn(input,data,state)}; runFn(input,data,state);`
+ try {
+ return vm.run(codeToRun)
+ } catch (err) {
+ console.log({ err })
+ throw new Error('Error in runChain: processCode.')
+ }
+ },
+ }
+}
diff --git a/packages/runner/test/app.test.ts b/packages/runner/test/app.test.ts
new file mode 100644
index 000000000..4f7d365eb
--- /dev/null
+++ b/packages/runner/test/app.test.ts
@@ -0,0 +1,69 @@
+import assert from 'assert';
+import { Server } from 'http';
+import url from 'url';
+import axios from 'axios';
+
+import app from '../src/app';
+
+const port = app.get('port') || 8998;
+const getUrl = (pathname?: string): string => url.format({
+ hostname: app.get('host') || 'localhost',
+ protocol: 'http',
+ port,
+ pathname
+});
+
+describe('Feathers application tests (with jest)', () => {
+ let server: Server;
+
+ beforeAll(done => {
+ server = app.listen(port);
+ server.once('listening', () => done());
+ });
+
+ afterAll(done => {
+ server.close(done);
+ });
+
+ it('starts and shows the index page', async () => {
+ expect.assertions(1);
+
+ const { data } = await axios.get(getUrl());
+
+ expect(data.indexOf('')).not.toBe(-1);
+ });
+
+ describe('404', () => {
+ it('shows a 404 HTML page', async () => {
+ expect.assertions(2);
+
+ try {
+ await axios.get(getUrl('path/to/nowhere'), {
+ headers: {
+ 'Accept': 'text/html'
+ }
+ });
+ } catch (error: any) {
+ const { response } = error;
+
+ expect(response.status).toBe(404);
+ expect(response.data.indexOf('')).not.toBe(-1);
+ }
+ });
+
+ it('shows a 404 JSON error without stack trace', async () => {
+ expect.assertions(4);
+
+ try {
+ await axios.get(getUrl('path/to/nowhere'));
+ } catch (error: any) {
+ const { response } = error;
+
+ expect(response.status).toBe(404);
+ expect(response.data.code).toBe(404);
+ expect(response.data.message).toBe('Page not found');
+ expect(response.data.name).toBe('NotFound');
+ }
+ });
+ });
+});
diff --git a/packages/runner/test/authentication.test.ts b/packages/runner/test/authentication.test.ts
new file mode 100644
index 000000000..c92c9bb96
--- /dev/null
+++ b/packages/runner/test/authentication.test.ts
@@ -0,0 +1,32 @@
+import app from '../src/app';
+
+describe('authentication', () => {
+ it('registered the authentication service', () => {
+ expect(app.service('authentication')).toBeTruthy();
+ });
+
+ describe('local strategy', () => {
+ const userInfo = {
+ email: 'someone@example.com',
+ password: 'supersecret'
+ };
+
+ beforeAll(async () => {
+ try {
+ await app.service('users').create(userInfo);
+ } catch (error) {
+ // Do nothing, it just means the user already exists and can be tested
+ }
+ });
+
+ it('authenticates user and creates accessToken', async () => {
+ const { user, accessToken } = await app.service('authentication').create({
+ strategy: 'local',
+ ...userInfo
+ }, {});
+
+ expect(accessToken).toBeTruthy();
+ expect(user).toBeTruthy();
+ });
+ });
+});
diff --git a/packages/runner/test/services/spell-runner.test.ts b/packages/runner/test/services/spell-runner.test.ts
new file mode 100644
index 000000000..41e1e8e98
--- /dev/null
+++ b/packages/runner/test/services/spell-runner.test.ts
@@ -0,0 +1,8 @@
+import app from '../../src/app';
+
+describe('\'spellRunner\' service', () => {
+ it('registered the service', () => {
+ const service = app.service('spell-runner');
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/packages/runner/test/services/users.test.ts b/packages/runner/test/services/users.test.ts
new file mode 100644
index 000000000..20d1ebb3e
--- /dev/null
+++ b/packages/runner/test/services/users.test.ts
@@ -0,0 +1,8 @@
+import app from '../../src/app';
+
+describe('\'users\' service', () => {
+ it('registered the service', () => {
+ const service = app.service('users');
+ expect(service).toBeTruthy();
+ });
+});
diff --git a/packages/runner/tsconfig.json b/packages/runner/tsconfig.json
new file mode 100644
index 000000000..116c0244d
--- /dev/null
+++ b/packages/runner/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "compilerOptions": {
+ "target": "es2018",
+ "module": "commonjs",
+ "outDir": "./lib",
+ "rootDir": "./src",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "typeRoots": ["./@types"]
+ },
+ "exclude": ["test", "jest.config.js"]
+}
diff --git a/sharedb/@types/@teamwork/websocket-json-stream.d.ts b/packages/sharedb/@types/@teamwork/websocket-json-stream.d.ts
similarity index 100%
rename from sharedb/@types/@teamwork/websocket-json-stream.d.ts
rename to packages/sharedb/@types/@teamwork/websocket-json-stream.d.ts
diff --git a/sharedb/index.ts b/packages/sharedb/index.ts
similarity index 100%
rename from sharedb/index.ts
rename to packages/sharedb/index.ts
diff --git a/sharedb/package.json b/packages/sharedb/package.json
similarity index 100%
rename from sharedb/package.json
rename to packages/sharedb/package.json
diff --git a/sharedb/src/thothInterface.ts b/packages/sharedb/src/thothInterface.ts
similarity index 100%
rename from sharedb/src/thothInterface.ts
rename to packages/sharedb/src/thothInterface.ts
diff --git a/sharedb/tsconfig.json b/packages/sharedb/tsconfig.json
similarity index 100%
rename from sharedb/tsconfig.json
rename to packages/sharedb/tsconfig.json
diff --git a/runner-notes.md b/runner-notes.md
new file mode 100644
index 000000000..0bc1e3190
--- /dev/null
+++ b/runner-notes.md
@@ -0,0 +1,29 @@
+- feathers server for primary work using socket IO
+- user connects to the server with proper authentication headers right away
+- when socket connects, we add a spellManager to the socket for use during the lifetime of the socket connection
+ - spell manager contains a map of all spell runners or each spell
+ - spell manager is responsible for initiating spell runners for spells not in the map
+ - spell manager is responsible for destroying a spell runner when a spell is removed from the session
+- each open tab will request that spell connection, which will cause the spell manager to load the spell into memory for that sessions usage
+ - when a tab closes, we will remove that spell form the spell manager to conserve memory
+- we can send custom events UP to the client, which we use to publish the events required by the spell runner
+ - node id of the worker that was ruin, as well as any results
+ - this comes from passing in the IO and socket connection to the spell manager
+ - spell manager boots up each spell runner with the IO and the socket
+- we will likely want to create "channels" for the userId and the running spell.
+ - this channel would allow us to restrict the running of an individual spell to the owner itself
+ - allows us to target the right user when we are sending results of spell running
+- when a spell "runs" we send a message to the spellRunner service with the spell we want to "run"
+ - spell runner service will then use the spell manager to find the spell loaded in memory
+ - spell runner runs that spell runner, which triggers off the sequence of emitted messages of each node
+ - should also send a "completed" message at the end of the runtime
+ - or perhaps we send back the result of the spell runner as the result of that running.
+ - this will keep us REST compliant as well, as the service will still return a result event without sockets
+
+Implementation notes
+
+- we want to find a way to still "run" the graph to take advantage of other plugins, like console. However we want this run of the graph to just be populated with cached data from the REAL run that happened on the server.
+- As the spell is running on the server, it is pushing up values to the socket plugin which is caching those values for that node run.
+- When the spell runner is done running the spell, it sends up a 'completed' event. When the client receives this event, it will trigger off the graph to "run" as normal. However, in doing so, each worker will only return the cached output data that was received during the server run phase.
+- the worker returns this value, passing to the next node as normal.
+- not sure quite how this will interact with having components which connect to full streams of data. In this case we actually just "play" and "pause" spells, and when playing they are streaming their events up to the client.
diff --git a/yarn.lock b/yarn.lock
index 628e4e1f9..6813229c9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,14 @@
# yarn lockfile v1
+"@ampproject/remapping@^2.1.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
+ integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.1.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
"@auto-it/bot-list@10.32.0":
version "10.32.0"
resolved "https://registry.yarnpkg.com/@auto-it/bot-list/-/bot-list-10.32.0.tgz#3614b5fd04041f486b62fea98cc137ec83dc2f98"
@@ -99,11 +107,23 @@
dependencies:
"@babel/highlight" "^7.14.5"
+"@babel/code-frame@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
+ dependencies:
+ "@babel/highlight" "^7.16.7"
+
"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.15.0":
version "7.15.0"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176"
integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==
+"@babel/compat-data@^7.17.10":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab"
+ integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==
+
"@babel/core@^7.1.0", "@babel/core@^7.6.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5":
version "7.15.5"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9"
@@ -125,6 +145,27 @@
semver "^6.3.0"
source-map "^0.5.0"
+"@babel/core@^7.11.6", "@babel/core@^7.12.3":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05"
+ integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==
+ dependencies:
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.10"
+ "@babel/helper-compilation-targets" "^7.17.10"
+ "@babel/helper-module-transforms" "^7.17.7"
+ "@babel/helpers" "^7.17.9"
+ "@babel/parser" "^7.17.10"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.10"
+ "@babel/types" "^7.17.10"
+ convert-source-map "^1.7.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.1"
+ semver "^6.3.0"
+
"@babel/generator@^7.15.4", "@babel/generator@^7.7.2":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0"
@@ -134,6 +175,15 @@
jsesc "^2.5.1"
source-map "^0.5.0"
+"@babel/generator@^7.17.10":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189"
+ integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==
+ dependencies:
+ "@babel/types" "^7.17.10"
+ "@jridgewell/gen-mapping" "^0.1.0"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.14.5", "@babel/helper-annotate-as-pure@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz#3d0e43b00c5e49fdb6c57e421601a7a658d5f835"
@@ -159,6 +209,16 @@
browserslist "^4.16.6"
semver "^6.3.0"
+"@babel/helper-compilation-targets@^7.17.10":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe"
+ integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==
+ dependencies:
+ "@babel/compat-data" "^7.17.10"
+ "@babel/helper-validator-option" "^7.16.7"
+ browserslist "^4.20.2"
+ semver "^6.3.0"
+
"@babel/helper-create-class-features-plugin@^7.14.5", "@babel/helper-create-class-features-plugin@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz#7f977c17bd12a5fba363cb19bea090394bf37d2e"
@@ -207,6 +267,13 @@
resolve "^1.14.2"
semver "^6.1.2"
+"@babel/helper-environment-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-explode-assignable-expression@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.15.4.tgz#f9aec9d219f271eaf92b9f561598ca6b2682600c"
@@ -223,6 +290,14 @@
"@babel/template" "^7.15.4"
"@babel/types" "^7.15.4"
+"@babel/helper-function-name@^7.17.9":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12"
+ integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.17.0"
+
"@babel/helper-get-function-arity@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b"
@@ -237,6 +312,13 @@
dependencies:
"@babel/types" "^7.15.4"
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-member-expression-to-functions@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef"
@@ -272,6 +354,20 @@
"@babel/traverse" "^7.15.4"
"@babel/types" "^7.15.6"
+"@babel/helper-module-transforms@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd"
+ integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.17.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.3"
+ "@babel/types" "^7.17.0"
+
"@babel/helper-optimise-call-expression@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171"
@@ -289,6 +385,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
+"@babel/helper-plugin-utils@^7.17.12":
+ version "7.17.12"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96"
+ integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==
+
"@babel/helper-remap-async-to-generator@^7.14.5", "@babel/helper-remap-async-to-generator@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.15.4.tgz#2637c0731e4c90fbf58ac58b50b2b5a192fc970f"
@@ -315,6 +416,13 @@
dependencies:
"@babel/types" "^7.15.4"
+"@babel/helper-simple-access@^7.17.7":
+ version "7.17.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367"
+ integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==
+ dependencies:
+ "@babel/types" "^7.17.0"
+
"@babel/helper-skip-transparent-expression-wrappers@^7.14.5", "@babel/helper-skip-transparent-expression-wrappers@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz#707dbdba1f4ad0fa34f9114fc8197aec7d5da2eb"
@@ -329,6 +437,13 @@
dependencies:
"@babel/types" "^7.15.4"
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
+ dependencies:
+ "@babel/types" "^7.16.7"
+
"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9", "@babel/helper-validator-identifier@^7.15.7":
version "7.15.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
@@ -344,6 +459,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
+
"@babel/helper-wrap-function@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.15.4.tgz#6f754b2446cfaf3d612523e6ab8d79c27c3a3de7"
@@ -363,6 +483,15 @@
"@babel/traverse" "^7.15.4"
"@babel/types" "^7.15.4"
+"@babel/helpers@^7.17.9":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a"
+ integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==
+ dependencies:
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.17.9"
+ "@babel/types" "^7.17.0"
+
"@babel/highlight@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
@@ -372,11 +501,25 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
+"@babel/highlight@^7.16.7":
+ version "7.17.9"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
+ integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
+
"@babel/parser@^7.1.0", "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2":
version "7.15.7"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae"
integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==
+"@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78"
+ integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==
+
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.15.4":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.15.4.tgz#dbdeabb1e80f622d9f0b583efb2999605e0a567e"
@@ -896,6 +1039,18 @@
babel-plugin-polyfill-regenerator "^0.3.0"
semver "^6.3.0"
+"@babel/plugin-transform-runtime@^7.18.2":
+ version "7.18.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d"
+ integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.17.12"
+ babel-plugin-polyfill-corejs2 "^0.3.0"
+ babel-plugin-polyfill-corejs3 "^0.5.0"
+ babel-plugin-polyfill-regenerator "^0.3.0"
+ semver "^6.3.0"
+
"@babel/plugin-transform-shorthand-properties@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz#97f13855f1409338d8cadcbaca670ad79e091a58"
@@ -1098,6 +1253,15 @@
"@babel/parser" "^7.15.4"
"@babel/types" "^7.15.4"
+"@babel/template@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
+
"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.15.4", "@babel/traverse@^7.7.2":
version "7.15.4"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d"
@@ -1113,6 +1277,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5"
+ integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==
+ dependencies:
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.17.10"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.17.9"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.17.10"
+ "@babel/types" "^7.17.10"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/types@^7.0.0", "@babel/types@^7.14.9", "@babel/types@^7.15.4", "@babel/types@^7.15.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
version "7.15.6"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f"
@@ -1129,6 +1309,14 @@
"@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
+"@babel/types@^7.17.0", "@babel/types@^7.17.10":
+ version "7.17.10"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4"
+ integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.16.7"
+ to-fast-properties "^2.0.0"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -1141,6 +1329,11 @@
dependencies:
lodash.merge "^4.6.0"
+"@colors/colors@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
+ integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
+
"@craco/craco@^5.5.0":
version "5.9.0"
resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-5.9.0.tgz#dcd34330b558596a4841374743071b7fa041dce9"
@@ -1150,6 +1343,15 @@
lodash "^4.17.15"
webpack-merge "^4.2.2"
+"@dabh/diagnostics@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
+ integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
+ dependencies:
+ colorspace "1.1.x"
+ enabled "2.0.x"
+ kuler "^2.0.0"
+
"@discoveryjs/json-ext@^0.5.0":
version "0.5.5"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3"
@@ -1387,11 +1589,153 @@
ts-node "^9"
tslib "^2"
+"@eslint/eslintrc@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.2.tgz#4989b9e8c0216747ee7cca314ae73791bb281aae"
+ integrity sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.3.1"
+ globals "^13.9.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.0.4"
+ strip-json-comments "^3.1.1"
+
+"@feathersjs/authentication-local@^4.5.11":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/authentication-local/-/authentication-local-4.5.14.tgz#512a27f914b383b18003bc74c9ab0139278a9340"
+ integrity sha512-kxMh62qsAghifpA7WTwGZufkf2w3Xlb63di/t+BDgPbMTHV5Tgk0r/TylTYuTGh/S5eKkj+Hdf9ZA125Gf4dgw==
+ dependencies:
+ "@feathersjs/authentication" "^4.5.14"
+ "@feathersjs/errors" "^4.5.12"
+ "@feathersjs/feathers" "^4.5.12"
+ bcryptjs "^2.4.3"
+ debug "^4.3.3"
+ lodash "^4.17.21"
+
+"@feathersjs/authentication-oauth@^4.5.11":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/authentication-oauth/-/authentication-oauth-4.5.14.tgz#7d5ef39daed75d182f28828affc2a0af58d87de6"
+ integrity sha512-U2Mw8Jig7T8UCg9+uu+vkfynIUwEbWDPcMflAjEBn8S4Hc5sRhGIXomHRgXqFoR7st6FslTWpcGQLLavjRCxBQ==
+ dependencies:
+ "@feathersjs/authentication" "^4.5.14"
+ "@feathersjs/errors" "^4.5.12"
+ "@feathersjs/express" "^4.5.14"
+ "@feathersjs/feathers" "^4.5.12"
+ debug "^4.3.3"
+ express-session "^1.17.2"
+ grant "^4.7.0"
+ grant-profile "^0.0.11"
+ lodash "^4.17.21"
+
+"@feathersjs/authentication@^4.5.11", "@feathersjs/authentication@^4.5.14":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/authentication/-/authentication-4.5.14.tgz#f69b9c031d0dd87e6772d108bdeb8dc034eec732"
+ integrity sha512-i/29Kcndacs7KpzDRZGI+P2stgDH3Fq8WU3OxFy2q7H3aAntX7gV74brBZZQdx0EQpfpWcyY4qXXRUDNnMohwQ==
+ dependencies:
+ "@feathersjs/errors" "^4.5.12"
+ "@feathersjs/feathers" "^4.5.12"
+ "@feathersjs/transport-commons" "^4.5.14"
+ "@types/jsonwebtoken" "^8.5.6"
+ debug "^4.3.3"
+ jsonwebtoken "^8.5.1"
+ lodash "^4.17.21"
+ long-timeout "^0.1.1"
+ uuid "^8.3.2"
+
+"@feathersjs/client@^4.5.14":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/client/-/client-4.5.14.tgz#d2573e7c59bb1586919e58d16ef45ed8bed2bd1c"
+ integrity sha512-hnZdLpSkTC+1dO3qezEtLTYUt6Nkw/jXD1DZqZaD/VeAsjcAA8z25lmdSa0VV6GZV/DuNApYsJwZxaj3MkP8Cw==
+
+"@feathersjs/commons@^4.5.12":
+ version "4.5.12"
+ resolved "https://registry.yarnpkg.com/@feathersjs/commons/-/commons-4.5.12.tgz#42e60e933849905b8803a3ebd7d4424f85ee7d3f"
+ integrity sha512-ss3yyk8HurmOCSD+wvENIrT9iSa8vg9SmikoP5c9JaLkbtMmKpH88jCjgRl7jiO54f2+UcjW3PqccNgUGSNSDQ==
+
+"@feathersjs/configuration@^4.5.11":
+ version "4.5.12"
+ resolved "https://registry.yarnpkg.com/@feathersjs/configuration/-/configuration-4.5.12.tgz#599fe446ff728c9c1008be05002e6aca47e9b44f"
+ integrity sha512-9fmEcz/yCB8lpzo3cB5uwiAp7rDzSSxGv+pHh6O5a3ZZoCL/7AZrh7/mZB2fFIBK2yAVE1GNdHkLXJI4OMWDGA==
+ dependencies:
+ "@feathersjs/feathers" "^4.5.12"
+ config "^3.3.6"
+ debug "^4.3.3"
+
+"@feathersjs/errors@^4.5.11", "@feathersjs/errors@^4.5.12":
+ version "4.5.12"
+ resolved "https://registry.yarnpkg.com/@feathersjs/errors/-/errors-4.5.12.tgz#c9d408a103e2ead228e6c61ea24516e6fe635a43"
+ integrity sha512-xIQJ7t/acTuL1fTC6mpf0qlcWfJkA9x0rRMrSgjD3mzUnJU6VqxXFxusL8895ksGD0vQHwPueblbm8Hn6Ifqqw==
+ dependencies:
+ debug "^4.3.3"
+
+"@feathersjs/express@^4.5.11", "@feathersjs/express@^4.5.14":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/express/-/express-4.5.14.tgz#5616bf76b32b83dc755ea9af33cbf1d6348599c0"
+ integrity sha512-kVMRiilBw767K1rYBOdLXYZGzwJb3pzKiOygUtSaZe6FsUmjJTycUz6pM7/ij1bI6WhzmSW0O4cfzmfoEXdejg==
+ dependencies:
+ "@feathersjs/commons" "^4.5.12"
+ "@feathersjs/errors" "^4.5.12"
+ "@types/express" "^4.17.13"
+ debug "^4.3.3"
+ express "^4.17.2"
+ lodash "^4.17.21"
+ uberproto "^2.0.6"
+
+"@feathersjs/feathers@^4.5.11", "@feathersjs/feathers@^4.5.12":
+ version "4.5.12"
+ resolved "https://registry.yarnpkg.com/@feathersjs/feathers/-/feathers-4.5.12.tgz#86a99e601a99cd3a30f9e8841039b052676f5168"
+ integrity sha512-24bxpMpheBrDmVwwByNPPfXnXk2KkeiW3NvE3xXHbt7QzZj3OrPJ8WS5MqUZMPMFSLMyqlhRKs+hpQgfWhuxrA==
+ dependencies:
+ "@feathersjs/commons" "^4.5.12"
+ debug "^4.3.3"
+ events "^3.3.0"
+ uberproto "^2.0.6"
+
+"@feathersjs/socketio@^4.5.11":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/socketio/-/socketio-4.5.14.tgz#1d36ed05625972dca42fcaf0aec7e9a91accd08b"
+ integrity sha512-FWs6kg2Nqsa+vZFmqlK88Cn+b2Ouj3IfEoVmH0Wtc/U68ikQWw+98Do1hG6xnhTd1HUEdekZ6k5JAAKsA+mGig==
+ dependencies:
+ "@feathersjs/transport-commons" "^4.5.14"
+ "@types/socket.io" "^2.1.11"
+ debug "^4.3.3"
+ socket.io "^2.3.0"
+ uberproto "^2.0.6"
+
+"@feathersjs/transport-commons@^4.5.14":
+ version "4.5.14"
+ resolved "https://registry.yarnpkg.com/@feathersjs/transport-commons/-/transport-commons-4.5.14.tgz#d4797bdf881604bb426d0a67664407c2ec170db0"
+ integrity sha512-9cmWTB3+ewsVpdgO9tnz4nnw5XnbbblK9ofpWDw6crz3RlFnTVXS8icZa/qXKiMPhaYOL2oxnxCWWvuFnZ7nGw==
+ dependencies:
+ "@feathersjs/commons" "^4.5.12"
+ "@feathersjs/errors" "^4.5.12"
+ debug "^4.3.3"
+ lodash "^4.17.21"
+ radix-router "^3.0.1"
+
"@gar/promisify@^1.0.1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
+"@humanwhocodes/config-array@^0.9.2":
+ version "0.9.5"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
+ integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==
+ dependencies:
+ "@humanwhocodes/object-schema" "^1.2.1"
+ debug "^4.1.1"
+ minimatch "^3.0.4"
+
+"@humanwhocodes/object-schema@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
+ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
+
"@hutson/parse-repository-url@^3.0.0":
version "3.0.2"
resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340"
@@ -1425,6 +1769,30 @@
jest-util "^27.2.3"
slash "^3.0.0"
+"@jest/console@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.0.2.tgz#d11e8b43ae431ae9b3112656848417ae4008fcad"
+ integrity sha512-tiRpnMeeyQuuzgL5UNSeiqMwF8UOWPbAE5rzcu/1zyq4oPG2Ox6xm4YCOruwbp10F8odWc+XwVxTyGzMSLMqxA==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^28.0.2"
+ jest-util "^28.0.2"
+ slash "^3.0.0"
+
+"@jest/console@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.0.tgz#db78222c3d3b0c1db82f1b9de51094c2aaff2176"
+ integrity sha512-tscn3dlJFGay47kb4qVruQg/XWlmvU0xp3EJOjzzY+sBaI+YgwKcvAmTcyYU7xEiLLIY5HCdWRooAL8dqkFlDA==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^28.1.0"
+ jest-util "^28.1.0"
+ slash "^3.0.0"
+
"@jest/core@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.2.3.tgz#b21a3ffb69bef017c4562d27689bb798c0194501"
@@ -1460,6 +1828,76 @@
slash "^3.0.0"
strip-ansi "^6.0.0"
+"@jest/core@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.0.3.tgz#2b8223914ef6ae16ff740e65235ef8ef49c46d52"
+ integrity sha512-cCQW06vEZ+5r50SB06pOnSWsOBs7F+lswPYnKKfBz1ncLlj1sMqmvjgam8q40KhlZ8Ut4eNAL2Hvfx4BKIO2FA==
+ dependencies:
+ "@jest/console" "^28.0.2"
+ "@jest/reporters" "^28.0.3"
+ "@jest/test-result" "^28.0.2"
+ "@jest/transform" "^28.0.3"
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ jest-changed-files "^28.0.2"
+ jest-config "^28.0.3"
+ jest-haste-map "^28.0.2"
+ jest-message-util "^28.0.2"
+ jest-regex-util "^28.0.2"
+ jest-resolve "^28.0.3"
+ jest-resolve-dependencies "^28.0.3"
+ jest-runner "^28.0.3"
+ jest-runtime "^28.0.3"
+ jest-snapshot "^28.0.3"
+ jest-util "^28.0.2"
+ jest-validate "^28.0.2"
+ jest-watcher "^28.0.2"
+ micromatch "^4.0.4"
+ pretty-format "^28.0.2"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+ strip-ansi "^6.0.0"
+
+"@jest/core@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.0.tgz#784a1e6ce5358b46fcbdcfbbd93b1b713ed4ea80"
+ integrity sha512-/2PTt0ywhjZ4NwNO4bUqD9IVJfmFVhVKGlhvSpmEfUCuxYf/3NHcKmRFI+I71lYzbTT3wMuYpETDCTHo81gC/g==
+ dependencies:
+ "@jest/console" "^28.1.0"
+ "@jest/reporters" "^28.1.0"
+ "@jest/test-result" "^28.1.0"
+ "@jest/transform" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ jest-changed-files "^28.0.2"
+ jest-config "^28.1.0"
+ jest-haste-map "^28.1.0"
+ jest-message-util "^28.1.0"
+ jest-regex-util "^28.0.2"
+ jest-resolve "^28.1.0"
+ jest-resolve-dependencies "^28.1.0"
+ jest-runner "^28.1.0"
+ jest-runtime "^28.1.0"
+ jest-snapshot "^28.1.0"
+ jest-util "^28.1.0"
+ jest-validate "^28.1.0"
+ jest-watcher "^28.1.0"
+ micromatch "^4.0.4"
+ pretty-format "^28.1.0"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+ strip-ansi "^6.0.0"
+
"@jest/environment@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.2.3.tgz#3ae328d778a67e027bad27541d1c09ed94312609"
@@ -1470,6 +1908,56 @@
"@types/node" "*"
jest-mock "^27.2.3"
+"@jest/environment@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.0.2.tgz#a865949d876b2d364b979bbc0a46338ffd23de26"
+ integrity sha512-IvI7dEfqVEffDYlw9FQfVBt6kXt/OI38V7QUIur0ulOQgzpKYJDVvLzj4B1TVmHWTGW5tcnJdlZ3hqzV6/I9Qg==
+ dependencies:
+ "@jest/fake-timers" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ jest-mock "^28.0.2"
+
+"@jest/environment@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.0.tgz#dedf7d59ec341b9292fcf459fd0ed819eb2e228a"
+ integrity sha512-S44WGSxkRngzHslhV6RoAExekfF7Qhwa6R5+IYFa81mpcj0YgdBnRSmvHe3SNwOt64yXaE5GG8Y2xM28ii5ssA==
+ dependencies:
+ "@jest/fake-timers" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ jest-mock "^28.1.0"
+
+"@jest/expect-utils@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.0.2.tgz#0a055868d225261eac82a12013e2e0735238774d"
+ integrity sha512-YryfH2zN5c7M8eLtn9oTBRj1sfD+X4cHNXJnTejqCveOS33wADEZUxJ7de5++lRvByNpRpfAnc8zTK7yrUJqgA==
+ dependencies:
+ jest-get-type "^28.0.2"
+
+"@jest/expect-utils@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.0.tgz#a5cde811195515a9809b96748ae8bcc331a3538a"
+ integrity sha512-5BrG48dpC0sB80wpeIX5FU6kolDJI4K0n5BM9a5V38MGx0pyRvUBSS0u2aNTdDzmOrCjhOg8pGs6a20ivYkdmw==
+ dependencies:
+ jest-get-type "^28.0.2"
+
+"@jest/expect@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.0.3.tgz#80e0233bee62586e1112f904d28b904dd1143ef2"
+ integrity sha512-VEzZr85bqNomgayQkR7hWG5HnbZYWYWagQriZsixhLmOzU6PCpMP61aeVhkCoRrg7ri5f7JDpeTPzDAajIwFHw==
+ dependencies:
+ expect "^28.0.2"
+ jest-snapshot "^28.0.3"
+
+"@jest/expect@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.0.tgz#2e5a31db692597070932366a1602b5157f0f217c"
+ integrity sha512-be9ETznPLaHOmeJqzYNIXv1ADEzENuQonIoobzThOYPuK/6GhrWNIJDVTgBLCrz3Am73PyEU2urQClZp0hLTtA==
+ dependencies:
+ expect "^28.1.0"
+ jest-snapshot "^28.1.0"
+
"@jest/fake-timers@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.3.tgz#21cdef9cb9edd30c80026a0176eba58f5fbcaa67"
@@ -1482,6 +1970,30 @@
jest-mock "^27.2.3"
jest-util "^27.2.3"
+"@jest/fake-timers@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.0.2.tgz#d36e62bc58f39d65ea6adac1ff7749e63aff05f3"
+ integrity sha512-R75yUv+WeybPa4ZVhX9C+8XN0TKjUoceUX+/QEaDVQGxZZOK50eD74cs7iMDTtpodh00d8iLlc9197vgF6oZjA==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ "@sinonjs/fake-timers" "^9.1.1"
+ "@types/node" "*"
+ jest-message-util "^28.0.2"
+ jest-mock "^28.0.2"
+ jest-util "^28.0.2"
+
+"@jest/fake-timers@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.0.tgz#ea77878aabd5c5d50e1fc53e76d3226101e33064"
+ integrity sha512-Xqsf/6VLeAAq78+GNPzI7FZQRf5cCHj1qgQxCjws9n8rKw8r1UYoeaALwBvyuzOkpU3c1I6emeMySPa96rxtIg==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ "@sinonjs/fake-timers" "^9.1.1"
+ "@types/node" "*"
+ jest-message-util "^28.1.0"
+ jest-mock "^28.1.0"
+ jest-util "^28.1.0"
+
"@jest/globals@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.3.tgz#6b8d652083d78709b243d9571457058f1c6c5fea"
@@ -1491,6 +2003,24 @@
"@jest/types" "^27.2.3"
expect "^27.2.3"
+"@jest/globals@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.0.3.tgz#70f68a06c863d1c9d14aea151c69b9690e3efeb4"
+ integrity sha512-q/zXYI6CKtTSIt1WuTHBYizJhH7K8h+xG5PE3C0oawLlPIvUMDYmpj0JX0XsJwPRLCsz/fYXHZVG46AaEhSPmw==
+ dependencies:
+ "@jest/environment" "^28.0.2"
+ "@jest/expect" "^28.0.3"
+ "@jest/types" "^28.0.2"
+
+"@jest/globals@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.0.tgz#a4427d2eb11763002ff58e24de56b84ba79eb793"
+ integrity sha512-3m7sTg52OTQR6dPhsEQSxAvU+LOBbMivZBwOvKEZ+Rb+GyxVnXi9HKgOTYkx/S99T8yvh17U4tNNJPIEQmtwYw==
+ dependencies:
+ "@jest/environment" "^28.1.0"
+ "@jest/expect" "^28.1.0"
+ "@jest/types" "^28.1.0"
+
"@jest/reporters@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.3.tgz#47c27be7c3e2069042b6fba12c1f8f62f91302db"
@@ -1521,6 +2051,72 @@
terminal-link "^2.0.0"
v8-to-istanbul "^8.1.0"
+"@jest/reporters@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.0.3.tgz#9996189e5552e37fcdffe0f41c07754f5d2ea854"
+ integrity sha512-xrbIc7J/xwo+D7AY3enAR9ZWYCmJ8XIkstTukTGpKDph0gLl/TJje9jl3dssvE4KJzYqMKiSrnE5Nt68I4fTEg==
+ dependencies:
+ "@bcoe/v8-coverage" "^0.2.3"
+ "@jest/console" "^28.0.2"
+ "@jest/test-result" "^28.0.2"
+ "@jest/transform" "^28.0.3"
+ "@jest/types" "^28.0.2"
+ "@jridgewell/trace-mapping" "^0.3.7"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^5.1.0"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.1.3"
+ jest-util "^28.0.2"
+ jest-worker "^28.0.2"
+ slash "^3.0.0"
+ string-length "^4.0.1"
+ terminal-link "^2.0.0"
+ v8-to-istanbul "^9.0.0"
+
+"@jest/reporters@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.0.tgz#5183a28b9b593b6000fa9b89b031c7216b58a9a0"
+ integrity sha512-qxbFfqap/5QlSpIizH9c/bFCDKsQlM4uAKSOvZrP+nIdrjqre3FmKzpTtYyhsaVcOSNK7TTt2kjm+4BJIjysFA==
+ dependencies:
+ "@bcoe/v8-coverage" "^0.2.3"
+ "@jest/console" "^28.1.0"
+ "@jest/test-result" "^28.1.0"
+ "@jest/transform" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@jridgewell/trace-mapping" "^0.3.7"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^5.1.0"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.1.3"
+ jest-util "^28.1.0"
+ jest-worker "^28.1.0"
+ slash "^3.0.0"
+ string-length "^4.0.1"
+ strip-ansi "^6.0.0"
+ terminal-link "^2.0.0"
+ v8-to-istanbul "^9.0.0"
+
+"@jest/schemas@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613"
+ integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA==
+ dependencies:
+ "@sinclair/typebox" "^0.23.3"
+
"@jest/source-map@^27.0.6":
version "27.0.6"
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f"
@@ -1530,6 +2126,15 @@
graceful-fs "^4.2.4"
source-map "^0.6.0"
+"@jest/source-map@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.0.2.tgz#914546f4410b67b1d42c262a1da7e0406b52dc90"
+ integrity sha512-Y9dxC8ZpN3kImkk0LkK5XCEneYMAXlZ8m5bflmSL5vrwyeUpJfentacCUg6fOb8NOpOO7hz2+l37MV77T6BFPw==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.7"
+ callsites "^3.0.0"
+ graceful-fs "^4.2.9"
+
"@jest/test-result@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.2.3.tgz#7d8f790186c7ec7600edc1d8781656268f038255"
@@ -1540,6 +2145,26 @@
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
+"@jest/test-result@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.0.2.tgz#bc8e15a95347e3c2149572ae06a5a6fed939c522"
+ integrity sha512-4EUqgjq9VzyUiVTvZfI9IRJD6t3NYBNP4f+Eq8Zr93+hkJ0RrGU4OBTw8tfNzidKX+bmuYzn8FxqpxOPIGGCMA==
+ dependencies:
+ "@jest/console" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
+"@jest/test-result@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.0.tgz#fd149dee123510dd2fcadbbf5f0020f98ad7f12c"
+ integrity sha512-sBBFIyoPzrZho3N+80P35A5oAkSKlGfsEFfXFWuPGBsW40UAjCkGakZhn4UQK4iQlW2vgCDMRDOob9FGKV8YoQ==
+ dependencies:
+ "@jest/console" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
"@jest/test-sequencer@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.2.3.tgz#a9e376b91a64c6f5ab37f05e9d304340609125d7"
@@ -1550,6 +2175,26 @@
jest-haste-map "^27.2.3"
jest-runtime "^27.2.3"
+"@jest/test-sequencer@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.0.2.tgz#7669b7d8ff2aa7a8221b11bb37cce552de81b1bb"
+ integrity sha512-zhnZ8ydkZQTPL7YucB86eOlD79zPy5EGSUKiR2Iv93RVEDU6OEP33kwDBg70ywOcxeJGDRhyo09q7TafNCBiIg==
+ dependencies:
+ "@jest/test-result" "^28.0.2"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.0.2"
+ slash "^3.0.0"
+
+"@jest/test-sequencer@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.0.tgz#ce7294bbe986415b9a30e218c7e705e6ebf2cdf2"
+ integrity sha512-tZCEiVWlWNTs/2iK9yi6o3AlMfbbYgV4uuZInSVdzZ7ftpHZhCMuhvk2HLYhCZzLgPFQ9MnM1YaxMnh3TILFiQ==
+ dependencies:
+ "@jest/test-result" "^28.1.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.1.0"
+ slash "^3.0.0"
+
"@jest/transform@^27.2.3":
version "27.2.3"
resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.2.3.tgz#1df37dbfe5bc29c00f227acae11348437a76b77e"
@@ -1571,6 +2216,48 @@
source-map "^0.6.1"
write-file-atomic "^3.0.0"
+"@jest/transform@^28.0.3":
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.0.3.tgz#591fb5ebc1d84db5c5f21e1225c7406c35f5eb1e"
+ integrity sha512-+Y0ikI7SwoW/YbK8t9oKwC70h4X2Gd0OVuz5tctRvSV/EDQU00AAkoqevXgPSSFimUmp/sp7Yl8s/1bExDqOIg==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@jest/types" "^28.0.2"
+ "@jridgewell/trace-mapping" "^0.3.7"
+ babel-plugin-istanbul "^6.1.1"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.0.2"
+ jest-regex-util "^28.0.2"
+ jest-util "^28.0.2"
+ micromatch "^4.0.4"
+ pirates "^4.0.4"
+ slash "^3.0.0"
+ write-file-atomic "^4.0.1"
+
+"@jest/transform@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.0.tgz#224a3c9ba4cc98e2ff996c0a89a2d59db15c74ce"
+ integrity sha512-omy2xe5WxlAfqmsTjTPxw+iXRTRnf+NtX0ToG+4S0tABeb4KsKmPUHq5UBuwunHg3tJRwgEQhEp0M/8oiatLEA==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@jest/types" "^28.1.0"
+ "@jridgewell/trace-mapping" "^0.3.7"
+ babel-plugin-istanbul "^6.1.1"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.1.0"
+ jest-regex-util "^28.0.2"
+ jest-util "^28.1.0"
+ micromatch "^4.0.4"
+ pirates "^4.0.4"
+ slash "^3.0.0"
+ write-file-atomic "^4.0.1"
+
"@jest/types@^26.6.2":
version "26.6.2"
resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e"
@@ -1604,6 +2291,102 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
+"@jest/types@^28.0.2":
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.0.2.tgz#70b9538c1863fb060b2f438ca008b5563d00c5b4"
+ integrity sha512-hi3jUdm9iht7I2yrV5C4s3ucCJHUP8Eh3W6rQ1s4n/Qw9rQgsda4eqCt+r3BKRi7klVmZfQlMx1nGlzNMP2d8A==
+ dependencies:
+ "@jest/schemas" "^28.0.2"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^17.0.8"
+ chalk "^4.0.0"
+
+"@jest/types@^28.1.0":
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.0.tgz#508327a89976cbf9bd3e1cc74641a29fd7dfd519"
+ integrity sha512-xmEggMPr317MIOjjDoZ4ejCSr9Lpbt/u34+dvc99t7DS8YirW5rwZEhzKPC2BMUFkUhI48qs6qLUSGw5FuL0GA==
+ dependencies:
+ "@jest/schemas" "^28.0.2"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^17.0.8"
+ chalk "^4.0.0"
+
+"@jridgewell/gen-mapping@^0.1.0":
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
+ integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
+ dependencies:
+ "@jridgewell/set-array" "^1.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@jridgewell/resolve-uri@^3.0.3":
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352"
+ integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==
+
+"@jridgewell/set-array@^1.0.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01"
+ integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==
+
+"@jridgewell/sourcemap-codec@^1.4.10":
+ version "1.4.11"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec"
+ integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
+
+"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
+ integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
+"@latitudegames/thoth-core@0.0.69--canary.b8d4448.0":
+ version "0.0.69--canary.b8d4448.0"
+ resolved "https://npm.pkg.github.com/download/@latitudegames/thoth-core/0.0.69--canary.b8d4448.0/d15f186093165625dbc5dbfe8782588579f94473f168262b3cd00292a0c74db5#a45d886bbc67b6f33094b03df4468fe447b14ff9"
+ integrity sha512-8RbeqAQ6vNgt1u6RWWPHYsojkVtB1HwM0Y1btSqA2huosK0xo8LUsks2xCXg5Md/DoWdZlehYL+fGSrKDjzrnA==
+ dependencies:
+ deep-equal "^2.0.5"
+ handlebars "^4.7.7"
+ jsdom "^17.0.0"
+ license-webpack-plugin "^4.0.2"
+ path "^0.12.7"
+ react "^17.0.2"
+ regenerator-runtime "^0.13.9"
+ rete "https://github.com/latitudegames/rete.git#master"
+ rete-area-plugin "^0.2.1"
+ rete-connection-plugin "^0.9.0"
+ rete-context-menu-plugin "^0.6.0-rc.1"
+ rete-module-plugin "^0.4.1"
+ rete-react-render-plugin "^0.2.1"
+ socket.io "^4.5.0"
+ uuid "^8.3.2"
+
+"@latitudegames/thoth-core@^0.0.67":
+ version "0.0.67"
+ resolved "https://npm.pkg.github.com/download/@latitudegames/thoth-core/0.0.67/41babd5d6341947adce89dc7d6027bda9529a212617925c23d8a22146467f54b#e30318b84f1b3224edf3f9622fe8f9f7c09a2a15"
+ integrity sha512-Y6i1O1NI62R5fqewSnCM7ixXbr9VrraKN7lTGafhJCBrVVyi2r+8eOO2rCEJ+Hs4+0NbDTa01NaS8oViDL1HdA==
+ dependencies:
+ deep-equal "^2.0.5"
+ handlebars "^4.7.7"
+ jsdom "^17.0.0"
+ license-webpack-plugin "^4.0.2"
+ path "^0.12.7"
+ react "^17.0.2"
+ regenerator-runtime "^0.13.9"
+ rete "https://github.com/latitudegames/rete.git#master"
+ rete-area-plugin "^0.2.1"
+ rete-connection-plugin "^0.9.0"
+ rete-context-menu-plugin "^0.6.0-rc.1"
+ rete-module-plugin "^0.4.1"
+ rete-react-render-plugin "^0.2.1"
+ uuid "^8.3.2"
+
"@lerna/add@4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f"
@@ -2669,6 +3452,11 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
+"@sinclair/typebox@^0.23.3":
+ version "0.23.5"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d"
+ integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg==
+
"@sindresorhus/is@^0.14.0":
version "0.14.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
@@ -2688,6 +3476,18 @@
dependencies:
"@sinonjs/commons" "^1.7.0"
+"@sinonjs/fake-timers@^9.1.1":
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c"
+ integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==
+ dependencies:
+ "@sinonjs/commons" "^1.7.0"
+
+"@socket.io/component-emitter@~3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553"
+ integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==
+
"@styled-system/background@^5.1.2":
version "5.1.2"
resolved "https://registry.yarnpkg.com/@styled-system/background/-/background-5.1.2.tgz#75c63d06b497ab372b70186c0bf608d62847a2ba"
@@ -2911,6 +3711,18 @@
resolved "https://registry.yarnpkg.com/@types/command-line-usage/-/command-line-usage-5.0.2.tgz#ba5e3f6ae5a2009d466679cc431b50635bf1a064"
integrity sha512-n7RlEEJ+4x4TS7ZQddTmNSxP+zziEG0TNsMfiRIxcIVXt71ENJ9ojeXmGO3wPoTdn7pJcU2xc3CJYMktNT6DPg==
+"@types/component-emitter@^1.2.10":
+ version "1.2.11"
+ resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.11.tgz#50d47d42b347253817a39709fef03ce66a108506"
+ integrity sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==
+
+"@types/compression@^1.7.2":
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/@types/compression/-/compression-1.7.2.tgz#7cc1cdb01b4730eea284615a68fc70a2cdfd5e71"
+ integrity sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==
+ dependencies:
+ "@types/express" "*"
+
"@types/connect@*":
version "3.4.35"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
@@ -2918,6 +3730,23 @@
dependencies:
"@types/node" "*"
+"@types/cookie@^0.4.1":
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d"
+ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==
+
+"@types/cors@^2.8.12":
+ version "2.8.12"
+ resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080"
+ integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==
+
+"@types/engine.io@*":
+ version "3.1.7"
+ resolved "https://registry.yarnpkg.com/@types/engine.io/-/engine.io-3.1.7.tgz#86e541a5dc52fb7e97735383564a6ae4cfe2e8f5"
+ integrity sha512-qNjVXcrp+1sS8YpRUa714r0pgzOwESdW5UjHL7D/2ZFdBX0BXUXtg1LUrp+ylvqbvMcMWUy73YpRoxPN2VoKAQ==
+ dependencies:
+ "@types/node" "*"
+
"@types/eslint-scope@^3.7.0":
version "3.7.1"
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.1.tgz#8dc390a7b4f9dd9f1284629efce982e41612116e"
@@ -2953,7 +3782,7 @@
"@types/qs" "*"
"@types/range-parser" "*"
-"@types/express@^4.17.13":
+"@types/express@*", "@types/express@^4.17.13":
version "4.17.13"
resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
@@ -2963,7 +3792,7 @@
"@types/qs" "*"
"@types/serve-static" "*"
-"@types/graceful-fs@^4.1.2":
+"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3":
version "4.1.5"
resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==
@@ -3025,16 +3854,44 @@
jest-diff "^26.0.0"
pretty-format "^26.0.0"
+"@types/jest@^27.4.1":
+ version "27.4.1"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d"
+ integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw==
+ dependencies:
+ jest-matcher-utils "^27.0.0"
+ pretty-format "^27.0.0"
+
+"@types/jest@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.1.tgz#2c8b6dc6ff85c33bcd07d0b62cb3d19ddfdb3ab9"
+ integrity sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ==
+ dependencies:
+ jest-matcher-utils "^27.0.0"
+ pretty-format "^27.0.0"
+
"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8":
version "7.0.9"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
+"@types/json-schema@^7.0.9":
+ version "7.0.11"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
+ integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
+
"@types/json5@^0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
+"@types/jsonwebtoken@^8.5.6", "@types/jsonwebtoken@^8.5.8":
+ version "8.5.8"
+ resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-8.5.8.tgz#01b39711eb844777b7af1d1f2b4cf22fda1c0c44"
+ integrity sha512-zm6xBQpFDIDM6o9r6HSgDeIcLy82TKWctCXEPbJJcXb5AKmi5BNNdLXneixK4lplX3PqIVcwLBCGE/kAGnlD4A==
+ dependencies:
+ "@types/node" "*"
+
"@types/lodash@^4.14.172":
version "4.14.174"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.174.tgz#b4b06b6eced9850eed6b6a8f1abdd0f5192803c1"
@@ -3060,6 +3917,11 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.10.1.tgz#f3647623199ca920960006b3dccf633ea905f243"
integrity sha512-4/Z9DMPKFexZj/Gn3LylFgamNKHm4K3QDi0gz9B26Uk0c8izYf97B5fxfpspMNkWlFupblKM/nV8+NA9Ffvr+w==
+"@types/node@>=10.0.0":
+ version "17.0.31"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d"
+ integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q==
+
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301"
@@ -3126,13 +3988,12 @@
dependencies:
"@types/react" "*"
-"@types/react@*", "@types/react@^17.0.15":
- version "17.0.24"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.24.tgz#7e1b3f78d0fc53782543f9bce6d949959a5880bd"
- integrity sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg==
+"@types/react@*", "@types/react@17.0.2", "@types/react@^17.0.15", "@types/react@^17.0.24":
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.2.tgz#3de24c4efef902dd9795a49c75f760cbe4f7a5a8"
+ integrity sha512-Xt40xQsrkdvjn1EyWe1Bc0dJLcil/9x2vAuW7ya+PuQip4UYUaXyhzWmAbwRsdMgwOFHpfp7/FFZebDU6Y8VHA==
dependencies:
"@types/prop-types" "*"
- "@types/scheduler" "*"
csstype "^3.0.2"
"@types/regenerator-runtime@^0.13.1":
@@ -3145,10 +4006,12 @@
resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.1.tgz#d8f1c0d0dc23afad6dc16a9e993a0865774b4065"
integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==
-"@types/scheduler@*":
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
- integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
+"@types/serve-favicon@^2.5.3":
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/@types/serve-favicon/-/serve-favicon-2.5.3.tgz#6380c875059711090631abea8f3edc5906cccd32"
+ integrity sha512-HirXLRJjLXzwiSnjhE1vMu55X7+qaY+noXsKqi/7eK1uByl3L6TwkcALZuJnQXqOalMdmBz3b662yXvaR+89Vw==
+ dependencies:
+ "@types/express" "*"
"@types/serve-static@*":
version "1.13.10"
@@ -3163,8 +4026,24 @@
resolved "https://registry.yarnpkg.com/@types/sharedb/-/sharedb-2.2.0.tgz#61a1ab5d1bc5596bf8b0933a7eafb5b7fad8b2f6"
integrity sha512-VbsWaKdU/m9I9CUBtBSj+hcWMT8jr0mEg0qAebUxEwR2nreRKHC6/3WbhXKYqqaC36jDXleKv3TXnMMgTUioSQ==
-"@types/source-list-map@*":
- version "0.1.2"
+"@types/socket.io-parser@*":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/socket.io-parser/-/socket.io-parser-3.0.0.tgz#9726d3ab9235757a0a30dd5ccf8975dce54e5e2c"
+ integrity sha512-Ry/rbTE6HQNL9eu3LpL1Ocup5VexXu1bSSGlSho/IR5LuRc8YvxwSNJ3JxqTltVJEATLbZkMQETSbxfKNgp4Ew==
+ dependencies:
+ socket.io-parser "*"
+
+"@types/socket.io@^2.1.11":
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/@types/socket.io/-/socket.io-2.1.13.tgz#b6d694234e99956c96ff99e197eda824b6f9dc48"
+ integrity sha512-JRgH3nCgsWel4OPANkhH8TelpXvacAJ9VeryjuqCDiaVDMpLysd6sbt0dr6Z15pqH3p2YpOT3T1C5vQ+O/7uyg==
+ dependencies:
+ "@types/engine.io" "*"
+ "@types/node" "*"
+ "@types/socket.io-parser" "*"
+
+"@types/source-list-map@*":
+ version "0.1.2"
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
@@ -3173,6 +4052,16 @@
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
+"@types/strip-bom@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@types/strip-bom/-/strip-bom-3.0.0.tgz#14a8ec3956c2e81edb7520790aecf21c290aebd2"
+ integrity sha1-FKjsOVbC6B7bdSB5CuzyHCkK69I=
+
+"@types/strip-json-comments@0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/strip-json-comments/-/strip-json-comments-0.0.30.tgz#9aa30c04db212a9a0649d6ae6fd50accc40748a1"
+ integrity sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==
+
"@types/tapable@^1":
version "1.0.8"
resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
@@ -3244,6 +4133,13 @@
dependencies:
"@types/yargs-parser" "*"
+"@types/yargs@^17.0.8":
+ version "17.0.10"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a"
+ integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==
+ dependencies:
+ "@types/yargs-parser" "*"
+
"@typescript-eslint/eslint-plugin@^4.31.1":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.32.0.tgz#46d2370ae9311092f2a6f7246d28357daf2d4e89"
@@ -3258,6 +4154,21 @@
semver "^7.3.5"
tsutils "^3.21.0"
+"@typescript-eslint/eslint-plugin@^5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.22.0.tgz#7b52a0de2e664044f28b36419210aea4ab619e2a"
+ integrity sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==
+ dependencies:
+ "@typescript-eslint/scope-manager" "5.22.0"
+ "@typescript-eslint/type-utils" "5.22.0"
+ "@typescript-eslint/utils" "5.22.0"
+ debug "^4.3.2"
+ functional-red-black-tree "^1.0.1"
+ ignore "^5.1.8"
+ regexpp "^3.2.0"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
"@typescript-eslint/experimental-utils@4.32.0":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.32.0.tgz#53a8267d16ca5a79134739129871966c56a59dc4"
@@ -3280,6 +4191,16 @@
"@typescript-eslint/typescript-estree" "4.32.0"
debug "^4.3.1"
+"@typescript-eslint/parser@^5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.22.0.tgz#7bedf8784ef0d5d60567c5ba4ce162460e70c178"
+ integrity sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==
+ dependencies:
+ "@typescript-eslint/scope-manager" "5.22.0"
+ "@typescript-eslint/types" "5.22.0"
+ "@typescript-eslint/typescript-estree" "5.22.0"
+ debug "^4.3.2"
+
"@typescript-eslint/scope-manager@4.32.0":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.32.0.tgz#e03c8668f8b954072b3f944d5b799c0c9225a7d5"
@@ -3288,11 +4209,33 @@
"@typescript-eslint/types" "4.32.0"
"@typescript-eslint/visitor-keys" "4.32.0"
+"@typescript-eslint/scope-manager@5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.22.0.tgz#590865f244ebe6e46dc3e9cab7976fc2afa8af24"
+ integrity sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==
+ dependencies:
+ "@typescript-eslint/types" "5.22.0"
+ "@typescript-eslint/visitor-keys" "5.22.0"
+
+"@typescript-eslint/type-utils@5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.22.0.tgz#0c0e93b34210e334fbe1bcb7250c470f4a537c19"
+ integrity sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==
+ dependencies:
+ "@typescript-eslint/utils" "5.22.0"
+ debug "^4.3.2"
+ tsutils "^3.21.0"
+
"@typescript-eslint/types@4.32.0":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.32.0.tgz#52c633c18da47aee09449144bf59565ab36df00d"
integrity sha512-LE7Z7BAv0E2UvqzogssGf1x7GPpUalgG07nGCBYb1oK4mFsOiFC/VrSMKbZQzFJdN2JL5XYmsx7C7FX9p9ns0w==
+"@typescript-eslint/types@5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.22.0.tgz#50a4266e457a5d4c4b87ac31903b28b06b2c3ed0"
+ integrity sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==
+
"@typescript-eslint/typescript-estree@4.32.0":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.32.0.tgz#db00ccc41ccedc8d7367ea3f50c6994b8efa9f3b"
@@ -3306,6 +4249,31 @@
semver "^7.3.5"
tsutils "^3.21.0"
+"@typescript-eslint/typescript-estree@5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.22.0.tgz#e2116fd644c3e2fda7f4395158cddd38c0c6df97"
+ integrity sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==
+ dependencies:
+ "@typescript-eslint/types" "5.22.0"
+ "@typescript-eslint/visitor-keys" "5.22.0"
+ debug "^4.3.2"
+ globby "^11.0.4"
+ is-glob "^4.0.3"
+ semver "^7.3.5"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/utils@5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.22.0.tgz#1f2c4897e2cf7e44443c848a13c60407861babd8"
+ integrity sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ "@typescript-eslint/scope-manager" "5.22.0"
+ "@typescript-eslint/types" "5.22.0"
+ "@typescript-eslint/typescript-estree" "5.22.0"
+ eslint-scope "^5.1.1"
+ eslint-utils "^3.0.0"
+
"@typescript-eslint/visitor-keys@4.32.0":
version "4.32.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.32.0.tgz#455ba8b51242f2722a497ffae29313f33b14cb7f"
@@ -3314,6 +4282,14 @@
"@typescript-eslint/types" "4.32.0"
eslint-visitor-keys "^2.0.0"
+"@typescript-eslint/visitor-keys@5.22.0":
+ version "5.22.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.22.0.tgz#f49c0ce406944ffa331a1cfabeed451ea4d0909c"
+ integrity sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==
+ dependencies:
+ "@typescript-eslint/types" "5.22.0"
+ eslint-visitor-keys "^3.0.0"
+
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@@ -3661,12 +4637,17 @@ acorn-import-assertions@^1.7.6:
resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
+acorn-jsx@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
acorn-walk@^7.1.1:
version "7.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-acorn-walk@^8.0.0:
+acorn-walk@^8.0.0, acorn-walk@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
@@ -3686,6 +4667,11 @@ acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
+acorn@^8.7.0:
+ version "8.7.1"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
+ integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
+
add-px-to-style@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/add-px-to-style/-/add-px-to-style-1.0.0.tgz#d0c135441fa8014a8137904531096f67f28f263a"
@@ -3701,6 +4687,11 @@ add@^2.0.6:
resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235"
integrity sha1-JI8Kn25aUo7yKV2+7DBTITCuIjU=
+after@0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
+ integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=
+
agent-base@6, agent-base@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -3750,7 +4741,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -3874,6 +4865,11 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
aria-query@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
@@ -3988,6 +4984,11 @@ array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.4:
define-properties "^1.1.3"
es-abstract "^1.18.0-next.1"
+arraybuffer.slice@~0.0.7:
+ version "0.0.7"
+ resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
+ integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==
+
arraydiff@^0.1.1:
version "0.1.3"
resolved "https://registry.yarnpkg.com/arraydiff/-/arraydiff-0.1.3.tgz#86a5436d7b72f1bdda5fd6d74e8724e42f83ce4d"
@@ -4055,6 +5056,11 @@ async@^2.6.2, async@^2.6.3:
dependencies:
lodash "^4.17.14"
+async@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
+ integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -4112,6 +5118,14 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
+axios@^0.27.2:
+ version "0.27.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
+ integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
+ dependencies:
+ follow-redirects "^1.14.9"
+ form-data "^4.0.0"
+
babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -4154,6 +5168,32 @@ babel-jest@^27.2.3:
graceful-fs "^4.2.4"
slash "^3.0.0"
+babel-jest@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.0.3.tgz#843dc170da5b9671d4054ada9fdcd28f85f92a6e"
+ integrity sha512-S0ADyYdcrt5fp9YldRYWCUHdk1BKt9AkvBkLWBoNAEV9NoWZPIj5+MYhPcGgTS65mfv3a+Ymf2UqgWoAVd41cA==
+ dependencies:
+ "@jest/transform" "^28.0.3"
+ "@types/babel__core" "^7.1.14"
+ babel-plugin-istanbul "^6.1.1"
+ babel-preset-jest "^28.0.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ slash "^3.0.0"
+
+babel-jest@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.0.tgz#95a67f8e2e7c0042e7b3ad3951b8af41a533b5ea"
+ integrity sha512-zNKk0yhDZ6QUwfxh9k07GII6siNGMJWVUU49gmFj5gfdqDKLqa2RArXOF2CODp4Dr7dLxN2cvAV+667dGJ4b4w==
+ dependencies:
+ "@jest/transform" "^28.1.0"
+ "@types/babel__core" "^7.1.14"
+ babel-plugin-istanbul "^6.1.1"
+ babel-preset-jest "^28.0.2"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ slash "^3.0.0"
+
babel-loader@^8.2.2:
version "8.2.2"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
@@ -4205,6 +5245,17 @@ babel-plugin-istanbul@^6.0.0:
istanbul-lib-instrument "^4.0.0"
test-exclude "^6.0.0"
+babel-plugin-istanbul@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
+ integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@istanbuljs/load-nyc-config" "^1.0.0"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-instrument "^5.0.4"
+ test-exclude "^6.0.0"
+
babel-plugin-jest-hoist@^27.2.0:
version "27.2.0"
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.2.0.tgz#79f37d43f7e5c4fdc4b2ca3e10cc6cf545626277"
@@ -4215,6 +5266,16 @@ babel-plugin-jest-hoist@^27.2.0:
"@types/babel__core" "^7.0.0"
"@types/babel__traverse" "^7.0.6"
+babel-plugin-jest-hoist@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.0.2.tgz#9307d03a633be6fc4b1a6bc5c3a87e22bd01dd3b"
+ integrity sha512-Kizhn/ZL+68ZQHxSnHyuvJv8IchXD62KQxV77TBDV/xoBFBOfgRAk97GNs6hXdTTCiVES9nB2I6+7MXXrk5llQ==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.1.14"
+ "@types/babel__traverse" "^7.0.6"
+
babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.6.1:
version "2.8.0"
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
@@ -4318,6 +5379,14 @@ babel-preset-jest@^27.2.0:
babel-plugin-jest-hoist "^27.2.0"
babel-preset-current-node-syntax "^1.0.0"
+babel-preset-jest@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.0.2.tgz#d8210fe4e46c1017e9fa13d7794b166e93aa9f89"
+ integrity sha512-sYzXIdgIXXroJTFeB3S6sNDWtlJ2dllCdTEsnZ65ACrMojj3hVNFRmnJ1HZtomGi+Be7aqpY/HJ92fr8OhKVkQ==
+ dependencies:
+ babel-plugin-jest-hoist "^28.0.2"
+ babel-preset-current-node-syntax "^1.0.0"
+
babel-runtime@^6.22.0, babel-runtime@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
@@ -4367,16 +5436,31 @@ babylon@^6.18.0:
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
+backo2@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+ integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
+
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+base64-arraybuffer@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812"
+ integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=
+
base64-js@^1.0.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+base64id@2.0.0, base64id@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6"
+ integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==
+
base@^0.11.1:
version "0.11.2"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
@@ -4402,6 +5486,11 @@ bcrypt-pbkdf@^1.0.0:
dependencies:
tweetnacl "^0.14.3"
+bcryptjs@^2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb"
+ integrity sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=
+
before-after-hook@^2.2.0:
version "2.2.2"
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e"
@@ -4429,6 +5518,11 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"
+blob@0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
+ integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==
+
bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
@@ -4476,6 +5570,24 @@ body-parser@1.19.2:
raw-body "2.4.3"
type-is "~1.6.18"
+body-parser@1.20.0:
+ version "1.20.0"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
+ integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
+ dependencies:
+ bytes "3.1.2"
+ content-type "~1.0.4"
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ on-finished "2.4.1"
+ qs "6.10.3"
+ raw-body "2.5.1"
+ type-is "~1.6.18"
+ unpipe "1.0.0"
+
bonjour@^3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
@@ -4636,6 +5748,17 @@ browserslist@^4.19.1:
node-releases "^2.0.2"
picocolors "^1.0.0"
+browserslist@^4.20.2:
+ version "4.20.3"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf"
+ integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==
+ dependencies:
+ caniuse-lite "^1.0.30001332"
+ electron-to-chromium "^1.4.118"
+ escalade "^3.1.1"
+ node-releases "^2.0.3"
+ picocolors "^1.0.0"
+
bs-logger@0.x:
version "0.2.6"
resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
@@ -4650,6 +5773,11 @@ bser@2.1.1:
dependencies:
node-int64 "^0.4.0"
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
@@ -4834,6 +5962,11 @@ caniuse-lite@^1.0.30001317:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz#c1546d7d7bb66506f0ccdad6a7d07fc6d668c858"
integrity sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w==
+caniuse-lite@^1.0.30001332:
+ version "1.0.30001335"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a"
+ integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w==
+
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -4983,6 +6116,11 @@ ci-info@^3.1.1:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6"
integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==
+ci-info@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
+ integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
+
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"
@@ -5105,7 +6243,7 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.9.0:
+color-convert@^1.9.0, color-convert@^1.9.3:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -5124,11 +6262,27 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@~1.1.4:
+color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-string@^1.6.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+ integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^3.1.3:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
+ integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+ dependencies:
+ color-convert "^1.9.3"
+ color-string "^1.6.0"
+
colorette@^1.2.1:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40"
@@ -5139,6 +6293,14 @@ colorette@^2.0.10:
resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.12.tgz#7938ab254e7bb1bba29b0fd1b4cc168889ca4d74"
integrity sha512-lHID0PU+NtFzeNCwTL6JzUKdb6kDpyEjrwTD1H0cDZswTbsjLh2wTV2Eo2sNZLc0oSg0a5W1AI4Nj7bX4iIdjA==
+colorspace@1.1.x:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
+ integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
+ dependencies:
+ color "^3.1.3"
+ text-hex "1.0.x"
+
columnify@^1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb"
@@ -5221,11 +6383,26 @@ compare-func@^2.0.0:
array-ify "^1.0.0"
dot-prop "^5.1.0"
-component-emitter@^1.2.1:
+component-bind@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
+ integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=
+
+component-emitter@1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+ integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+
+component-emitter@^1.2.1, component-emitter@~1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+component-inherit@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
+ integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=
+
compressible@~2.0.16:
version "2.0.18"
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
@@ -5287,6 +6464,13 @@ config-chain@^1.1.12:
ini "^1.3.4"
proto-list "~1.2.1"
+config@^3.3.6:
+ version "3.3.7"
+ resolved "https://registry.yarnpkg.com/config/-/config-3.3.7.tgz#4310410dc2bf4e0effdca21a12a4035860a24ee4"
+ integrity sha512-mX/n7GKDYZMqvvkY6e6oBY49W8wxdmQt+ho/5lhwFDXqQW9gI+Ahp8EKp8VAbISPnmf2+Bv5uZK7lKXZ6pf1aA==
+ dependencies:
+ json5 "^2.1.1"
+
configstore@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
@@ -5442,11 +6626,21 @@ cookie@0.4.0:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
-cookie@0.4.2:
+cookie@0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
+ integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
+
+cookie@0.4.2, cookie@~0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
+cookie@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
+ integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
+
copy-concurrently@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@@ -5526,6 +6720,14 @@ core-util-is@~1.0.0:
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+cors@^2.8.5, cors@~2.8.5:
+ version "2.8.5"
+ resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
+ integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
+ dependencies:
+ object-assign "^4"
+ vary "^1"
+
cosmiconfig@7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3"
@@ -5617,7 +6819,7 @@ cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^7.0.0, cross-spawn@^7.0.3:
+cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -5816,13 +7018,34 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
dependencies:
ms "2.1.2"
-debug@^3.1.1, debug@^3.2.7:
+debug@^3.0.0, debug@^3.1.1, debug@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
dependencies:
ms "^2.1.1"
+debug@^4.3.2, debug@^4.3.3, debug@~4.3.1, debug@~4.3.2:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+debug@~3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
+debug@~4.1.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+ integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
+ dependencies:
+ ms "^2.1.1"
+
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -5901,7 +7124,7 @@ deep-extend@^0.6.0, deep-extend@~0.6.0:
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-deep-is@~0.1.3:
+deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
@@ -5988,6 +7211,11 @@ delegates@^1.0.0:
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+depd@2.0.0, depd@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+ integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
+
depd@^1.1.2, depd@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
@@ -6006,6 +7234,11 @@ des.js@^1.0.0:
inherits "^2.0.1"
minimalistic-assert "^1.0.0"
+destroy@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
+ integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
+
destroy@~1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
@@ -6054,6 +7287,16 @@ diff-sequences@^27.0.6:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723"
integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==
+diff-sequences@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
+ integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
+
+diff-sequences@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.0.2.tgz#40f8d4ffa081acbd8902ba35c798458d0ff1af41"
+ integrity sha512-YtEoNynLDFCRznv/XDalsKGSZDoj0U5kLnXvY0JSq3nBboRrZXjD81+eSiwi+nzcZDwedMmcowcxNwwgFW23mQ==
+
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
@@ -6114,6 +7357,13 @@ doctrine@^2.1.0:
dependencies:
esutils "^2.0.2"
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
dom-accessibility-api@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.7.tgz#8c2aa6325968f2933160a0b7dbb380893ddf3e7d"
@@ -6221,6 +7471,11 @@ dotenv-webpack@^7.0.3:
dependencies:
dotenv-defaults "^2.0.2"
+dotenv@^16.0.1:
+ version "16.0.1"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d"
+ integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==
+
dotenv@^8.0.0, dotenv@^8.2.0:
version "8.6.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
@@ -6246,6 +7501,13 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
+dynamic-dedupe@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1"
+ integrity sha1-BuRMIj9eTpTXjvnbI6ZRXOL5YqE=
+ dependencies:
+ xtend "^4.0.0"
+
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@@ -6254,6 +7516,13 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
+ecdsa-sig-formatter@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -6264,6 +7533,11 @@ electron-to-chromium@^1.3.846:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.850.tgz#c56c72abfeab051b4b328beb894461c5912d0456"
integrity sha512-ZzkDcdzePeF4dhoGZQT77V2CyJOpwfTZEOg4h0x6R/jQhGt/rIRpbRyVreWLtD7B/WsVxo91URm2WxMKR9JQZA==
+electron-to-chromium@^1.4.118:
+ version "1.4.129"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238"
+ integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==
+
electron-to-chromium@^1.4.84:
version "1.4.106"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz#e7a3bfa9d745dd9b9e597616cb17283cc349781a"
@@ -6282,6 +7556,11 @@ elliptic@^6.5.3:
minimalistic-assert "^1.0.1"
minimalistic-crypto-utils "^1.0.1"
+emittery@^0.10.2:
+ version "0.10.2"
+ resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933"
+ integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==
+
emittery@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
@@ -6297,6 +7576,11 @@ emojis-list@^3.0.0:
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
+enabled@2.0.x:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
+ integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -6325,6 +7609,67 @@ endent@^2.0.1:
fast-json-parse "^1.0.3"
objectorarray "^1.0.5"
+engine.io-client@~3.5.0:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.5.2.tgz#0ef473621294004e9ceebe73cef0af9e36f2f5fa"
+ integrity sha512-QEqIp+gJ/kMHeUun7f5Vv3bteRHppHH/FMBQX/esFj/fuYfjyUKWGMo3VCvIP/V8bE9KcjHmRZrhIz2Z9oNsDA==
+ dependencies:
+ component-emitter "~1.3.0"
+ component-inherit "0.0.3"
+ debug "~3.1.0"
+ engine.io-parser "~2.2.0"
+ has-cors "1.1.0"
+ indexof "0.0.1"
+ parseqs "0.0.6"
+ parseuri "0.0.6"
+ ws "~7.4.2"
+ xmlhttprequest-ssl "~1.6.2"
+ yeast "0.1.2"
+
+engine.io-parser@~2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7"
+ integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==
+ dependencies:
+ after "0.8.2"
+ arraybuffer.slice "~0.0.7"
+ base64-arraybuffer "0.1.4"
+ blob "0.0.5"
+ has-binary2 "~1.0.2"
+
+engine.io-parser@~5.0.3:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.0.4.tgz#0b13f704fa9271b3ec4f33112410d8f3f41d0fc0"
+ integrity sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==
+
+engine.io@~3.5.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.5.0.tgz#9d6b985c8a39b1fe87cd91eb014de0552259821b"
+ integrity sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==
+ dependencies:
+ accepts "~1.3.4"
+ base64id "2.0.0"
+ cookie "~0.4.1"
+ debug "~4.1.0"
+ engine.io-parser "~2.2.0"
+ ws "~7.4.2"
+
+engine.io@~6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.2.0.tgz#003bec48f6815926f2b1b17873e576acd54f41d0"
+ integrity sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==
+ dependencies:
+ "@types/cookie" "^0.4.1"
+ "@types/cors" "^2.8.12"
+ "@types/node" ">=10.0.0"
+ accepts "~1.3.4"
+ base64id "2.0.0"
+ cookie "~0.4.1"
+ cors "~2.8.5"
+ debug "~4.3.1"
+ engine.io-parser "~5.0.3"
+ ws "~8.2.3"
+
enhanced-resolve@^4.0.0, enhanced-resolve@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
@@ -6661,6 +8006,14 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
+eslint-scope@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
+ integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
eslint-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
@@ -6673,11 +8026,73 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
+ integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
+
+eslint@^8.6.0:
+ version "8.14.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.14.0.tgz#62741f159d9eb4a79695b28ec4989fcdec623239"
+ integrity sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==
+ dependencies:
+ "@eslint/eslintrc" "^1.2.2"
+ "@humanwhocodes/config-array" "^0.9.2"
+ ajv "^6.10.0"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.1.1"
+ eslint-utils "^3.0.0"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.3.1"
+ esquery "^1.4.0"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ functional-red-black-tree "^1.0.1"
+ glob-parent "^6.0.1"
+ globals "^13.6.0"
+ ignore "^5.2.0"
+ import-fresh "^3.0.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.0.4"
+ natural-compare "^1.4.0"
+ optionator "^0.9.1"
+ regexpp "^3.2.0"
+ strip-ansi "^6.0.1"
+ strip-json-comments "^3.1.0"
+ text-table "^0.2.0"
+ v8-compile-cache "^2.0.3"
+
+espree@^9.3.1:
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd"
+ integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==
+ dependencies:
+ acorn "^8.7.0"
+ acorn-jsx "^5.3.1"
+ eslint-visitor-keys "^3.3.0"
+
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+esquery@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
+ integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ dependencies:
+ estraverse "^5.1.0"
+
esrecurse@^4.1.0, esrecurse@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
@@ -6690,6 +8105,11 @@ estraverse@^4.1.1:
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+estraverse@^5.1.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
estraverse@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
@@ -6715,7 +8135,7 @@ eventemitter3@^4.0.0, eventemitter3@^4.0.4:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-events@^3.0.0, events@^3.2.0:
+events@^3.0.0, events@^3.2.0, events@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
@@ -6795,6 +8215,42 @@ expect@^27.2.3:
jest-message-util "^27.2.3"
jest-regex-util "^27.0.6"
+expect@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-28.0.2.tgz#86f0d6fa971bc533faf68d4d103d00f343d6a4b3"
+ integrity sha512-X0qIuI/zKv98k34tM+uGeOgAC73lhs4vROF9MkPk94C1zujtwv4Cla8SxhWn0G1OwvG9gLLL7RjFBkwGVaZ83w==
+ dependencies:
+ "@jest/expect-utils" "^28.0.2"
+ jest-get-type "^28.0.2"
+ jest-matcher-utils "^28.0.2"
+ jest-message-util "^28.0.2"
+ jest-util "^28.0.2"
+
+expect@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.0.tgz#10e8da64c0850eb8c39a480199f14537f46e8360"
+ integrity sha512-qFXKl8Pmxk8TBGfaFKRtcQjfXEnKAs+dmlxdwvukJZorwrAabT7M3h8oLOG01I2utEhkmUTi17CHaPBovZsKdw==
+ dependencies:
+ "@jest/expect-utils" "^28.1.0"
+ jest-get-type "^28.0.2"
+ jest-matcher-utils "^28.1.0"
+ jest-message-util "^28.1.0"
+ jest-util "^28.1.0"
+
+express-session@^1.17.2:
+ version "1.17.2"
+ resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.2.tgz#397020374f9bf7997f891b85ea338767b30d0efd"
+ integrity sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==
+ dependencies:
+ cookie "0.4.1"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "~2.0.0"
+ on-headers "~1.0.2"
+ parseurl "~1.3.3"
+ safe-buffer "5.2.1"
+ uid-safe "~2.1.5"
+
express@^4.17.1:
version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
@@ -6831,6 +8287,43 @@ express@^4.17.1:
utils-merge "1.0.1"
vary "~1.1.2"
+express@^4.17.2:
+ version "4.18.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
+ integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
+ dependencies:
+ accepts "~1.3.8"
+ array-flatten "1.1.1"
+ body-parser "1.20.0"
+ content-disposition "0.5.4"
+ content-type "~1.0.4"
+ cookie "0.5.0"
+ cookie-signature "1.0.6"
+ debug "2.6.9"
+ depd "2.0.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ finalhandler "1.2.0"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ path-to-regexp "0.1.7"
+ proxy-addr "~2.0.7"
+ qs "6.10.3"
+ range-parser "~1.2.1"
+ safe-buffer "5.2.1"
+ send "0.18.0"
+ serve-static "1.15.0"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ type-is "~1.6.18"
+ utils-merge "1.0.1"
+ vary "~1.1.2"
+
express@^4.17.3:
version "4.17.3"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1"
@@ -6925,7 +8418,7 @@ fast-deep-equal@^2.0.1:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
-fast-deep-equal@^3.1.1:
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
@@ -6946,6 +8439,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.5:
merge2 "^1.3.0"
micromatch "^4.0.4"
+fast-glob@^3.2.9:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
+ integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
fast-json-parse@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d"
@@ -6956,7 +8460,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-levenshtein@~2.0.6:
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
@@ -6987,6 +8491,27 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
+feathers-authentication-client@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/feathers-authentication-client/-/feathers-authentication-client-0.3.3.tgz#d2183e4b08287dfd3ecb4a96eb081cf0b4e7c263"
+ integrity sha512-JWixbDrGnfAkc4i90HDDANms9AeDybckhOyYse9hTuN34JPMF+dXX4p0M6mXgRkYwa4N8GUxO1E3OuaiwcyF9w==
+ dependencies:
+ debug "^2.2.0"
+ feathers-errors "^2.4.0"
+ jwt-decode "^2.1.0"
+
+feathers-errors@^2.4.0:
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/feathers-errors/-/feathers-errors-2.9.2.tgz#96ca0e5fe50cc56f0eccc90ce3fa5e1f8840828d"
+ integrity sha512-qwIX97bNW7+1tWVG073+omUA0rCYKJtTtwuzTrrvfrtdr8J8Dk1Fy4iaV9Fa6/YBD5AZu0lsplPE0iu4u/d4GQ==
+ dependencies:
+ debug "^3.0.0"
+
+fecha@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
+ integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
+
figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -7006,6 +8531,13 @@ figures@^3.0.0:
dependencies:
escape-string-regexp "^1.0.5"
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
file-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
@@ -7041,6 +8573,19 @@ filter-obj@^1.1.0:
resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs=
+finalhandler@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
+ integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+ dependencies:
+ debug "2.6.9"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ on-finished "2.4.1"
+ parseurl "~1.3.3"
+ statuses "2.0.1"
+ unpipe "~1.0.0"
+
finalhandler@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
@@ -7106,7 +8651,20 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
-flexlayout-react@^0.5.12:
+flat-cache@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
+ integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
+ dependencies:
+ flatted "^3.1.0"
+ rimraf "^3.0.2"
+
+flatted@^3.1.0:
+ version "3.2.5"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3"
+ integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==
+
+flexlayout-react@^0.5.12:
version "0.5.14"
resolved "https://registry.yarnpkg.com/flexlayout-react/-/flexlayout-react-0.5.14.tgz#d4dcbcf3a152020abb403426298c38bcc64f4111"
integrity sha512-blgap+7MxTr0PkANV/ya/RvCcmcGeqOA5N2bRpAsX4plexqsFN2RSbvdQlqt+z7uqJ7fmHLby6U2Md97DZPRww==
@@ -7119,11 +8677,21 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
+fn.name@1.x.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
+ integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
+
follow-redirects@^1.0.0:
version "1.14.4"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379"
integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==
+follow-redirects@^1.14.9:
+ version "1.14.9"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7"
+ integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==
+
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -7462,12 +9030,19 @@ glob-parent@^6.0.0:
dependencies:
is-glob "^4.0.1"
+glob-parent@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
glob-to-regexp@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -7491,6 +9066,13 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+globals@^13.6.0, globals@^13.9.0:
+ version "13.13.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b"
+ integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==
+ dependencies:
+ type-fest "^0.20.2"
+
globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -7508,6 +9090,18 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.0.3:
merge2 "^1.3.0"
slash "^3.0.0"
+globby@^11.0.4:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ dependencies:
+ array-union "^2.1.0"
+ dir-glob "^3.0.1"
+ fast-glob "^3.2.9"
+ ignore "^5.2.0"
+ merge2 "^1.4.1"
+ slash "^3.0.0"
+
globby@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
@@ -7542,6 +9136,29 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+graceful-fs@^4.2.9:
+ version "4.2.10"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
+ integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+
+grant-profile@^0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/grant-profile/-/grant-profile-0.0.11.tgz#1a3986f5721a12ad223394dcd400d194a781bac1"
+ integrity sha512-gfSFCZC2zmwkWYQ3rb2J6JbINbgExQgkjssOMJrKg1nq9izjP0Yzj5F0HzQuRUMi84onAo7dQJN4ZDVYXzavhw==
+ dependencies:
+ qs "^6.9.1"
+ request-compose "^1.2.1"
+ request-oauth "0.0.3"
+
+grant@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/grant/-/grant-4.7.0.tgz#ab879a38ced7860df668db6c66012aa02402f49b"
+ integrity sha512-QGPjCYDrBnb/OIiTRxbK3TnNOE6Ycgfc/GcgPzI4vyNIr+b7yisEexYp7VM74zj6bxr+mDTzfGONRLzzsVPJIA==
+ dependencies:
+ qs "^6.9.1"
+ request-compose "^1.2.1"
+ request-oauth "0.0.3"
+
gzip-size@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
@@ -7596,6 +9213,18 @@ has-bigints@^1.0.1:
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113"
integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==
+has-binary2@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
+ integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==
+ dependencies:
+ isarray "2.0.1"
+
+has-cors@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+ integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=
+
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -7693,6 +9322,11 @@ he@^1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+helmet@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/helmet/-/helmet-4.6.0.tgz#579971196ba93c5978eb019e4e8ec0e50076b4df"
+ integrity sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==
+
history@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/history/-/history-5.0.1.tgz#de35025ed08bce0db62364b47ebbf9d97b5eb06a"
@@ -7841,6 +9475,17 @@ http-errors@1.8.1:
statuses ">= 1.5.0 < 2"
toidentifier "1.0.1"
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
+ statuses "2.0.1"
+ toidentifier "1.0.1"
+
http-errors@~1.6.2:
version "1.6.3"
resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
@@ -7991,6 +9636,11 @@ ignore@^5.1.4, ignore@^5.1.8:
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
+ignore@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
+ integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+
immer@^9.0.6:
version "9.0.6"
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73"
@@ -8003,7 +9653,7 @@ import-cwd@^3.0.0:
dependencies:
import-from "^3.0.0"
-import-fresh@^3.1.0, import-fresh@^3.2.1:
+import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -8041,6 +9691,11 @@ indent-string@^4.0.0:
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
infer-owner@^1.0.3, infer-owner@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
@@ -8130,6 +9785,11 @@ internal-slot@^1.0.3:
has "^1.0.3"
side-channel "^1.0.4"
+interpret@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
+
interpret@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
@@ -8194,6 +9854,11 @@ is-arrayish@^0.2.1:
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
is-bigint@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
@@ -8254,6 +9919,13 @@ is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.6.0:
dependencies:
has "^1.0.3"
+is-core-module@^2.8.1:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69"
+ integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==
+ dependencies:
+ has "^1.0.3"
+
is-data-descriptor@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
@@ -8351,6 +10023,13 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-glob@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
is-in-browser@^1.0.2, is-in-browser@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835"
@@ -8583,6 +10262,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+isarray@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
+ integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=
+
isarray@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
@@ -8615,6 +10299,11 @@ istanbul-lib-coverage@^3.0.0:
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.1.tgz#e8900b3ed6069759229cf30f7067388d148aeb5e"
integrity sha512-GvCYYTxaCPqwMjobtVcVKvSHtAGe48MNhGjpK8LtVF8K0ISX7hCKl85LgtuaSneWVyQmaGcW3iXVV3GaZSLpmQ==
+istanbul-lib-coverage@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
+ integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
+
istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
@@ -8625,6 +10314,17 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
istanbul-lib-coverage "^3.0.0"
semver "^6.3.0"
+istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f"
+ integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/parser" "^7.14.7"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.2.0"
+ semver "^6.3.0"
+
istanbul-lib-report@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
@@ -8651,6 +10351,14 @@ istanbul-reports@^3.0.2:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
+istanbul-reports@^3.1.3:
+ version "3.1.4"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c"
+ integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==
+ dependencies:
+ html-escaper "^2.0.0"
+ istanbul-lib-report "^3.0.0"
+
java-properties@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211"
@@ -8665,6 +10373,14 @@ jest-changed-files@^27.2.3:
execa "^5.0.0"
throat "^6.0.1"
+jest-changed-files@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.0.2.tgz#7d7810660a5bd043af9e9cfbe4d58adb05e91531"
+ integrity sha512-QX9u+5I2s54ZnGoMEjiM2WeBvJR2J7w/8ZUmH2um/WLAuGAYFQcsVXY9+1YL6k0H/AGUdH8pXUAv6erDqEsvIA==
+ dependencies:
+ execa "^5.0.0"
+ throat "^6.0.1"
+
jest-circus@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.2.3.tgz#e46ed567b316323f0b7c12dc72cd12fe46656356"
@@ -8690,6 +10406,56 @@ jest-circus@^27.2.3:
stack-utils "^2.0.3"
throat "^6.0.1"
+jest-circus@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.0.3.tgz#45f77090b4b9fe5c1b84f72816868c9d4c0f57b1"
+ integrity sha512-HJ3rUCm3A3faSy7KVH5MFCncqJLtrjEFkTPn9UIcs4Kq77+TXqHsOaI+/k73aHe6DJQigLUXq9rCYj3MYFlbIw==
+ dependencies:
+ "@jest/environment" "^28.0.2"
+ "@jest/expect" "^28.0.3"
+ "@jest/test-result" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ dedent "^0.7.0"
+ is-generator-fn "^2.0.0"
+ jest-each "^28.0.2"
+ jest-matcher-utils "^28.0.2"
+ jest-message-util "^28.0.2"
+ jest-runtime "^28.0.3"
+ jest-snapshot "^28.0.3"
+ jest-util "^28.0.2"
+ pretty-format "^28.0.2"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+ throat "^6.0.1"
+
+jest-circus@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.0.tgz#e229f590911bd54d60efaf076f7acd9360296dae"
+ integrity sha512-rNYfqfLC0L0zQKRKsg4n4J+W1A2fbyGH7Ss/kDIocp9KXD9iaL111glsLu7+Z7FHuZxwzInMDXq+N1ZIBkI/TQ==
+ dependencies:
+ "@jest/environment" "^28.1.0"
+ "@jest/expect" "^28.1.0"
+ "@jest/test-result" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ dedent "^0.7.0"
+ is-generator-fn "^2.0.0"
+ jest-each "^28.1.0"
+ jest-matcher-utils "^28.1.0"
+ jest-message-util "^28.1.0"
+ jest-runtime "^28.1.0"
+ jest-snapshot "^28.1.0"
+ jest-util "^28.1.0"
+ pretty-format "^28.1.0"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+ throat "^6.0.1"
+
jest-cli@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.2.3.tgz#68add5b1626bd5502df6c7a4a4d574ebf797221a"
@@ -8708,6 +10474,42 @@ jest-cli@^27.2.3:
prompts "^2.0.1"
yargs "^16.0.3"
+jest-cli@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.0.3.tgz#4a4e55078ec772e0ea2583dd4c4b38fb306dc556"
+ integrity sha512-NCPTEONCnhYGo1qzPP4OOcGF04YasM5GZSwQLI1HtEluxa3ct4U65IbZs6DSRt8XN1Rq0jhXwv02m5lHB28Uyg==
+ dependencies:
+ "@jest/core" "^28.0.3"
+ "@jest/test-result" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ import-local "^3.0.2"
+ jest-config "^28.0.3"
+ jest-util "^28.0.2"
+ jest-validate "^28.0.2"
+ prompts "^2.0.1"
+ yargs "^17.3.1"
+
+jest-cli@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.0.tgz#cd1d8adb9630102d5ba04a22895f63decdd7ac1f"
+ integrity sha512-fDJRt6WPRriHrBsvvgb93OxgajHHsJbk4jZxiPqmZbMDRcHskfJBBfTyjFko0jjfprP544hOktdSi9HVgl4VUQ==
+ dependencies:
+ "@jest/core" "^28.1.0"
+ "@jest/test-result" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ import-local "^3.0.2"
+ jest-config "^28.1.0"
+ jest-util "^28.1.0"
+ jest-validate "^28.1.0"
+ prompts "^2.0.1"
+ yargs "^17.3.1"
+
jest-config@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.2.3.tgz#64606cd1f194fb9527cbbc3e4ff23b324653b992"
@@ -8735,6 +10537,62 @@ jest-config@^27.2.3:
micromatch "^4.0.4"
pretty-format "^27.2.3"
+jest-config@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.0.3.tgz#9c0556d60d692153a6bc8652974182c22db9244f"
+ integrity sha512-3gWOEHwGpNhyYOk9vnUMv94x15QcdjACm7A3lERaluwnyD6d1WZWe9RFCShgIXVOHzRfG1hWxsI2U0gKKSGgDQ==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@jest/test-sequencer" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ babel-jest "^28.0.3"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ deepmerge "^4.2.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-circus "^28.0.3"
+ jest-environment-node "^28.0.2"
+ jest-get-type "^28.0.2"
+ jest-regex-util "^28.0.2"
+ jest-resolve "^28.0.3"
+ jest-runner "^28.0.3"
+ jest-util "^28.0.2"
+ jest-validate "^28.0.2"
+ micromatch "^4.0.4"
+ parse-json "^5.2.0"
+ pretty-format "^28.0.2"
+ slash "^3.0.0"
+ strip-json-comments "^3.1.1"
+
+jest-config@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.0.tgz#fca22ca0760e746fe1ce1f9406f6b307ab818501"
+ integrity sha512-aOV80E9LeWrmflp7hfZNn/zGA4QKv/xsn2w8QCBP0t0+YqObuCWTSgNbHJ0j9YsTuCO08ZR/wsvlxqqHX20iUA==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@jest/test-sequencer" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ babel-jest "^28.1.0"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ deepmerge "^4.2.2"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-circus "^28.1.0"
+ jest-environment-node "^28.1.0"
+ jest-get-type "^28.0.2"
+ jest-regex-util "^28.0.2"
+ jest-resolve "^28.1.0"
+ jest-runner "^28.1.0"
+ jest-util "^28.1.0"
+ jest-validate "^28.1.0"
+ micromatch "^4.0.4"
+ parse-json "^5.2.0"
+ pretty-format "^28.1.0"
+ slash "^3.0.0"
+ strip-json-comments "^3.1.1"
+
jest-diff@^26.0.0:
version "26.6.2"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394"
@@ -8765,6 +10623,36 @@ jest-diff@^27.2.3:
jest-get-type "^27.0.6"
pretty-format "^27.2.3"
+jest-diff@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
+ integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
+jest-diff@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.0.2.tgz#a543c90082560cd6cb14c5f28c39e6d4618ad7a6"
+ integrity sha512-33Rnf821Y54OAloav0PGNWHlbtEorXpjwchnToyyWbec10X74FOW7hGfvrXLGz7xOe2dz0uo9JVFAHHj/2B5pg==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^28.0.2"
+ jest-get-type "^28.0.2"
+ pretty-format "^28.0.2"
+
+jest-diff@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.0.tgz#77686fef899ec1873dbfbf9330e37dd429703269"
+ integrity sha512-8eFd3U3OkIKRtlasXfiAQfbovgFgRDb0Ngcs2E+FMeBZ4rUezqIaGjuyggJBp+llosQXNEWofk/Sz4Hr5gMUhA==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^28.0.2"
+ jest-get-type "^28.0.2"
+ pretty-format "^28.1.0"
+
jest-docblock@^27.0.6:
version "27.0.6"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3"
@@ -8772,6 +10660,13 @@ jest-docblock@^27.0.6:
dependencies:
detect-newline "^3.0.0"
+jest-docblock@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.0.2.tgz#3cab8abea53275c9d670cdca814fc89fba1298c2"
+ integrity sha512-FH10WWw5NxLoeSdQlJwu+MTiv60aXV/t8KEwIRGEv74WARE1cXIqh1vGdy2CraHuWOOrnzTWj/azQKqW4fO7xg==
+ dependencies:
+ detect-newline "^3.0.0"
+
jest-each@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.2.3.tgz#7eaf7c7b362019f23c5a7998b57d82e78e6f6672"
@@ -8783,6 +10678,28 @@ jest-each@^27.2.3:
jest-util "^27.2.3"
pretty-format "^27.2.3"
+jest-each@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.0.2.tgz#fcf6843e9afe5a3f2d0b1c02aab1f41889d92f1d"
+ integrity sha512-/W5Wc0b+ipR36kDaLngdVEJ/5UYPOITK7rW0djTlCCQdMuWpCFJweMW4TzAoJ6GiRrljPL8FwiyOSoSHKrda2w==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ chalk "^4.0.0"
+ jest-get-type "^28.0.2"
+ jest-util "^28.0.2"
+ pretty-format "^28.0.2"
+
+jest-each@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.0.tgz#54ae66d6a0a5b1913e9a87588d26c2687c39458b"
+ integrity sha512-a/XX02xF5NTspceMpHujmOexvJ4GftpYXqr6HhhmKmExtMXsyIN/fvanQlt/BcgFoRKN4OCXxLQKth9/n6OPFg==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ chalk "^4.0.0"
+ jest-get-type "^28.0.2"
+ jest-util "^28.1.0"
+ pretty-format "^28.1.0"
+
jest-environment-jsdom@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.2.3.tgz#36ad673f93f1948dd5daa6dcb1c9b1ad09d60165"
@@ -8808,6 +10725,30 @@ jest-environment-node@^27.2.3:
jest-mock "^27.2.3"
jest-util "^27.2.3"
+jest-environment-node@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.0.2.tgz#bd58e192b8f36a37e52c52fac812bd24b360c0b9"
+ integrity sha512-o9u5UHZ+NCuIoa44KEF0Behhsz/p1wMm0WumsZfWR1k4IVoWSt3aN0BavSC5dd26VxSGQvkrCnJxxOzhhUEG3Q==
+ dependencies:
+ "@jest/environment" "^28.0.2"
+ "@jest/fake-timers" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ jest-mock "^28.0.2"
+ jest-util "^28.0.2"
+
+jest-environment-node@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.0.tgz#6ed2150aa31babba0c488c5b4f4d813a585c68e6"
+ integrity sha512-gBLZNiyrPw9CSMlTXF1yJhaBgWDPVvH0Pq6bOEwGMXaYNzhzhw2kA/OijNF8egbCgDS0/veRv97249x2CX+udQ==
+ dependencies:
+ "@jest/environment" "^28.1.0"
+ "@jest/fake-timers" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ jest-mock "^28.1.0"
+ jest-util "^28.1.0"
+
jest-get-type@^26.3.0:
version "26.3.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0"
@@ -8818,6 +10759,16 @@ jest-get-type@^27.0.6:
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe"
integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==
+jest-get-type@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
+ integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
+
+jest-get-type@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203"
+ integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==
+
jest-haste-map@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.3.tgz#cec807c59c312872f0ea4cc1b6b5ca7b46131705"
@@ -8838,6 +10789,44 @@ jest-haste-map@^27.2.3:
optionalDependencies:
fsevents "^2.3.2"
+jest-haste-map@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.0.2.tgz#0c768f43680013cfd2a4471a3ec76c47bfb9e7c6"
+ integrity sha512-EokdL7l5uk4TqWGawwrIt8w3tZNcbeiRxmKGEURf42pl+/rWJy3sCJlon5HBhJXZTW978jk6600BLQOI7i25Ig==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ "@types/graceful-fs" "^4.1.3"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-regex-util "^28.0.2"
+ jest-util "^28.0.2"
+ jest-worker "^28.0.2"
+ micromatch "^4.0.4"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.3.2"
+
+jest-haste-map@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.0.tgz#6c1ee2daf1c20a3e03dbd8e5b35c4d73d2349cf0"
+ integrity sha512-xyZ9sXV8PtKi6NCrJlmq53PyNVHzxmcfXNVvIRHpHmh1j/HChC4pwKgyjj7Z9us19JMw8PpQTJsFWOsIfT93Dw==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ "@types/graceful-fs" "^4.1.3"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-regex-util "^28.0.2"
+ jest-util "^28.1.0"
+ jest-worker "^28.1.0"
+ micromatch "^4.0.4"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.3.2"
+
jest-jasmine2@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.2.3.tgz#19fe549b7e86128cd7d0d1668ebf4377dd3981f9"
@@ -8870,6 +10859,32 @@ jest-leak-detector@^27.2.3:
jest-get-type "^27.0.6"
pretty-format "^27.2.3"
+jest-leak-detector@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.0.2.tgz#cbde3d22d09bd690ececdc2ed01c608435328456"
+ integrity sha512-UGaSPYtxKXl/YKacq6juRAKmMp1z2os8NaU8PSC+xvNikmu3wF6QFrXrihMM4hXeMr9HuNotBrQZHmzDY8KIBQ==
+ dependencies:
+ jest-get-type "^28.0.2"
+ pretty-format "^28.0.2"
+
+jest-leak-detector@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.0.tgz#b65167776a8787443214d6f3f54935a4c73c8a45"
+ integrity sha512-uIJDQbxwEL2AMMs2xjhZl2hw8s77c3wrPaQ9v6tXJLGaaQ+4QrNJH5vuw7hA7w/uGT/iJ42a83opAqxGHeyRIA==
+ dependencies:
+ jest-get-type "^28.0.2"
+ pretty-format "^28.1.0"
+
+jest-matcher-utils@^27.0.0:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab"
+ integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
jest-matcher-utils@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.2.3.tgz#db7f992f3921f5004f4de36aafa0c03f2565122a"
@@ -8880,6 +10895,26 @@ jest-matcher-utils@^27.2.3:
jest-get-type "^27.0.6"
pretty-format "^27.2.3"
+jest-matcher-utils@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.0.2.tgz#eb461af204b6d0f05281e9228094f0ab7e9e8537"
+ integrity sha512-SxtTiI2qLJHFtOz/bySStCnwCvISAuxQ/grS+74dfTy5AuJw3Sgj9TVUvskcnImTfpzLoMCDJseRaeRrVYbAOA==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^28.0.2"
+ jest-get-type "^28.0.2"
+ pretty-format "^28.0.2"
+
+jest-matcher-utils@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.0.tgz#2ae398806668eeabd293c61712227cb94b250ccf"
+ integrity sha512-onnax0n2uTLRQFKAjC7TuaxibrPSvZgKTcSCnNUz/tOjJ9UhxNm7ZmPpoQavmTDUjXvUQ8KesWk2/VdrxIFzTQ==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^28.1.0"
+ jest-get-type "^28.0.2"
+ pretty-format "^28.1.0"
+
jest-message-util@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.3.tgz#cd1091a3f0f3ff919756b15cfccc0ba43eeeeff0"
@@ -8895,6 +10930,36 @@ jest-message-util@^27.2.3:
slash "^3.0.0"
stack-utils "^2.0.3"
+jest-message-util@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.0.2.tgz#f3cf36be72be4c4c4058cb34bd6673996d26dee3"
+ integrity sha512-knK7XyojvwYh1XiF2wmVdskgM/uN11KsjcEWWHfnMZNEdwXCrqB4sCBO94F4cfiAwCS8WFV6CDixDwPlMh/wdA==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^28.0.2"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^28.0.2"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
+jest-message-util@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.0.tgz#7e8f0b9049e948e7b94c2a52731166774ba7d0af"
+ integrity sha512-RpA8mpaJ/B2HphDMiDlrAZdDytkmwFqgjDZovM21F35lHGeUeCvYmm6W+sbQ0ydaLpg5bFAUuWG1cjqOl8vqrw==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^28.1.0"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^28.1.0"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
jest-mock@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.2.3.tgz#f532d2c8c158e8b899f2a0a5bd3077af37619c29"
@@ -8903,6 +10968,22 @@ jest-mock@^27.2.3:
"@jest/types" "^27.2.3"
"@types/node" "*"
+jest-mock@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.0.2.tgz#059b500b34c1dd76474ebcdeccc249fe4dd0249f"
+ integrity sha512-vfnJ4zXRB0i24jOTGtQJyl26JKsgBKtqRlCnsrORZbG06FToSSn33h2x/bmE8XxqxkLWdZBRo+/65l8Vi3nD+g==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+
+jest-mock@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.0.tgz#ccc7cc12a9b330b3182db0c651edc90d163ff73e"
+ integrity sha512-H7BrhggNn77WhdL7O1apG0Q/iwl0Bdd5E1ydhCJzL3oBLh/UYxAwR3EJLsBZ9XA3ZU4PA3UNw4tQjduBTCTmLw==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+
jest-pnp-resolver@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
@@ -8913,6 +10994,11 @@ jest-regex-util@^27.0.6:
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5"
integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ==
+jest-regex-util@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead"
+ integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
+
jest-resolve-dependencies@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.3.tgz#fcb620684108fe7a099185052434d26f17de98e6"
@@ -8922,6 +11008,22 @@ jest-resolve-dependencies@^27.2.3:
jest-regex-util "^27.0.6"
jest-snapshot "^27.2.3"
+jest-resolve-dependencies@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.0.3.tgz#76d8f59f7e76ba36d76a1677eeaaed24560da7e0"
+ integrity sha512-lCgHMm0/5p0qHemrOzm7kI6JDei28xJwIf7XOEcv1HeAVHnsON8B8jO/woqlU+/GcOXb58ymieYqhk3zjGWnvQ==
+ dependencies:
+ jest-regex-util "^28.0.2"
+ jest-snapshot "^28.0.3"
+
+jest-resolve-dependencies@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.0.tgz#167becb8bee6e20b5ef4a3a728ec67aef6b0b79b"
+ integrity sha512-Ue1VYoSZquPwEvng7Uefw8RmZR+me/1kr30H2jMINjGeHgeO/JgrR6wxj2ofkJ7KSAA11W3cOrhNCbj5Dqqd9g==
+ dependencies:
+ jest-regex-util "^28.0.2"
+ jest-snapshot "^28.1.0"
+
jest-resolve@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.2.3.tgz#868911cf705c537f433befcfc65e6ddc70c9d7f9"
@@ -8938,6 +11040,36 @@ jest-resolve@^27.2.3:
resolve "^1.20.0"
slash "^3.0.0"
+jest-resolve@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.0.3.tgz#63f8e6b53e40f265b3ca9116195221dd43e3d16d"
+ integrity sha512-lfgjd9JhEjpjIN3HLUfdysdK+A7ePQoYmd7WL9DUEWqdnngb1rF56eee6iDXJxl/3eSolpP43VD7VrhjL3NsoQ==
+ dependencies:
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.0.2"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^28.0.2"
+ jest-validate "^28.0.2"
+ resolve "^1.20.0"
+ resolve.exports "^1.1.0"
+ slash "^3.0.0"
+
+jest-resolve@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.0.tgz#b1f32748a6cee7d1779c7ef639c0a87078de3d35"
+ integrity sha512-vvfN7+tPNnnhDvISuzD1P+CRVP8cK0FHXRwPAcdDaQv4zgvwvag2n55/h5VjYcM5UJG7L4TwE5tZlzcI0X2Lhw==
+ dependencies:
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.1.0"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^28.1.0"
+ jest-validate "^28.1.0"
+ resolve "^1.20.0"
+ resolve.exports "^1.1.0"
+ slash "^3.0.0"
+
jest-runner@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.2.3.tgz#22f6ef7bd4140fec74cec18eef29c24d07cb6ad5"
@@ -8966,6 +11098,60 @@ jest-runner@^27.2.3:
source-map-support "^0.5.6"
throat "^6.0.1"
+jest-runner@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.0.3.tgz#a8a409c685ad3081a44b149b2eb04bc4d47faaf9"
+ integrity sha512-4OsHMjBLtYUWCENucAQ4Za0jGfEbOFi/Fusv6dzUuaweqx8apb4+5p2LR2yvgF4StFulmxyC238tGLftfu+zBA==
+ dependencies:
+ "@jest/console" "^28.0.2"
+ "@jest/environment" "^28.0.2"
+ "@jest/test-result" "^28.0.2"
+ "@jest/transform" "^28.0.3"
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ emittery "^0.10.2"
+ graceful-fs "^4.2.9"
+ jest-docblock "^28.0.2"
+ jest-environment-node "^28.0.2"
+ jest-haste-map "^28.0.2"
+ jest-leak-detector "^28.0.2"
+ jest-message-util "^28.0.2"
+ jest-resolve "^28.0.3"
+ jest-runtime "^28.0.3"
+ jest-util "^28.0.2"
+ jest-watcher "^28.0.2"
+ jest-worker "^28.0.2"
+ source-map-support "0.5.13"
+ throat "^6.0.1"
+
+jest-runner@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.0.tgz#aefe2a1e618a69baa0b24a50edc54fdd7e728eaa"
+ integrity sha512-FBpmuh1HB2dsLklAlRdOxNTTHKFR6G1Qmd80pVDvwbZXTriqjWqjei5DKFC1UlM732KjYcE6yuCdiF0WUCOS2w==
+ dependencies:
+ "@jest/console" "^28.1.0"
+ "@jest/environment" "^28.1.0"
+ "@jest/test-result" "^28.1.0"
+ "@jest/transform" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ emittery "^0.10.2"
+ graceful-fs "^4.2.9"
+ jest-docblock "^28.0.2"
+ jest-environment-node "^28.1.0"
+ jest-haste-map "^28.1.0"
+ jest-leak-detector "^28.1.0"
+ jest-message-util "^28.1.0"
+ jest-resolve "^28.1.0"
+ jest-runtime "^28.1.0"
+ jest-util "^28.1.0"
+ jest-watcher "^28.1.0"
+ jest-worker "^28.1.0"
+ source-map-support "0.5.13"
+ throat "^6.0.1"
+
jest-runtime@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.2.3.tgz#e6fc25bbbc63b19fae50c3994060efb1b2922b7e"
@@ -8999,6 +11185,62 @@ jest-runtime@^27.2.3:
strip-bom "^4.0.0"
yargs "^16.0.3"
+jest-runtime@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.0.3.tgz#02346a34de0ac61d23bdb0e8c035ad973d7bb087"
+ integrity sha512-7FtPUmvbZEHLOdjsF6dyHg5Pe4E0DU+f3Vvv8BPzVR7mQA6nFR4clQYLAPyJGnsUvN8WRWn+b5a5SVwnj1WaGg==
+ dependencies:
+ "@jest/environment" "^28.0.2"
+ "@jest/fake-timers" "^28.0.2"
+ "@jest/globals" "^28.0.3"
+ "@jest/source-map" "^28.0.2"
+ "@jest/test-result" "^28.0.2"
+ "@jest/transform" "^28.0.3"
+ "@jest/types" "^28.0.2"
+ chalk "^4.0.0"
+ cjs-module-lexer "^1.0.0"
+ collect-v8-coverage "^1.0.0"
+ execa "^5.0.0"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.0.2"
+ jest-message-util "^28.0.2"
+ jest-mock "^28.0.2"
+ jest-regex-util "^28.0.2"
+ jest-resolve "^28.0.3"
+ jest-snapshot "^28.0.3"
+ jest-util "^28.0.2"
+ slash "^3.0.0"
+ strip-bom "^4.0.0"
+
+jest-runtime@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.0.tgz#4847dcb2a4eb4b0f9eaf41306897e51fb1665631"
+ integrity sha512-wNYDiwhdH/TV3agaIyVF0lsJ33MhyujOe+lNTUiolqKt8pchy1Hq4+tDMGbtD5P/oNLA3zYrpx73T9dMTOCAcg==
+ dependencies:
+ "@jest/environment" "^28.1.0"
+ "@jest/fake-timers" "^28.1.0"
+ "@jest/globals" "^28.1.0"
+ "@jest/source-map" "^28.0.2"
+ "@jest/test-result" "^28.1.0"
+ "@jest/transform" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ chalk "^4.0.0"
+ cjs-module-lexer "^1.0.0"
+ collect-v8-coverage "^1.0.0"
+ execa "^5.0.0"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^28.1.0"
+ jest-message-util "^28.1.0"
+ jest-mock "^28.1.0"
+ jest-regex-util "^28.0.2"
+ jest-resolve "^28.1.0"
+ jest-snapshot "^28.1.0"
+ jest-util "^28.1.0"
+ slash "^3.0.0"
+ strip-bom "^4.0.0"
+
jest-serializer@^27.0.6:
version "27.0.6"
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1"
@@ -9037,6 +11279,64 @@ jest-snapshot@^27.2.3:
pretty-format "^27.2.3"
semver "^7.3.2"
+jest-snapshot@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.0.3.tgz#9a768d0c617d070e87c1bd37240f22b344616154"
+ integrity sha512-nVzAAIlAbrMuvVUrS1YxmAeo1TfSsDDU+K5wv/Ow56MBp+L+Y71ksAbwRp3kGCgZAz4oOXcAMPAwtT9Yh1hlQQ==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@babel/generator" "^7.7.2"
+ "@babel/plugin-syntax-typescript" "^7.7.2"
+ "@babel/traverse" "^7.7.2"
+ "@babel/types" "^7.3.3"
+ "@jest/expect-utils" "^28.0.2"
+ "@jest/transform" "^28.0.3"
+ "@jest/types" "^28.0.2"
+ "@types/babel__traverse" "^7.0.6"
+ "@types/prettier" "^2.1.5"
+ babel-preset-current-node-syntax "^1.0.0"
+ chalk "^4.0.0"
+ expect "^28.0.2"
+ graceful-fs "^4.2.9"
+ jest-diff "^28.0.2"
+ jest-get-type "^28.0.2"
+ jest-haste-map "^28.0.2"
+ jest-matcher-utils "^28.0.2"
+ jest-message-util "^28.0.2"
+ jest-util "^28.0.2"
+ natural-compare "^1.4.0"
+ pretty-format "^28.0.2"
+ semver "^7.3.5"
+
+jest-snapshot@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.0.tgz#4b74fa8816707dd10fe9d551c2c258e5a67b53b6"
+ integrity sha512-ex49M2ZrZsUyQLpLGxQtDbahvgBjlLPgklkqGM0hq/F7W/f8DyqZxVHjdy19QKBm4O93eDp+H5S23EiTbbUmHw==
+ dependencies:
+ "@babel/core" "^7.11.6"
+ "@babel/generator" "^7.7.2"
+ "@babel/plugin-syntax-typescript" "^7.7.2"
+ "@babel/traverse" "^7.7.2"
+ "@babel/types" "^7.3.3"
+ "@jest/expect-utils" "^28.1.0"
+ "@jest/transform" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/babel__traverse" "^7.0.6"
+ "@types/prettier" "^2.1.5"
+ babel-preset-current-node-syntax "^1.0.0"
+ chalk "^4.0.0"
+ expect "^28.1.0"
+ graceful-fs "^4.2.9"
+ jest-diff "^28.1.0"
+ jest-get-type "^28.0.2"
+ jest-haste-map "^28.1.0"
+ jest-matcher-utils "^28.1.0"
+ jest-message-util "^28.1.0"
+ jest-util "^28.1.0"
+ natural-compare "^1.4.0"
+ pretty-format "^28.1.0"
+ semver "^7.3.5"
+
jest-util@^27.0.0, jest-util@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.2.3.tgz#f766354b7c489c1f9ea88cd1d96d044fbd2b5d4d"
@@ -9049,6 +11349,30 @@ jest-util@^27.0.0, jest-util@^27.2.3:
is-ci "^3.0.0"
picomatch "^2.2.3"
+jest-util@^28.0.0, jest-util@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.0.tgz#d54eb83ad77e1dd441408738c5a5043642823be5"
+ integrity sha512-qYdCKD77k4Hwkose2YBEqQk7PzUf/NSE+rutzceduFveQREeH6b+89Dc9+wjX9dAwHcgdx4yedGA3FQlU/qCTA==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
+
+jest-util@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.0.2.tgz#8e22cdd6e0549e0a393055f0e2da7eacc334b143"
+ integrity sha512-EVdpIRCC8lzqhp9A0u0aAKlsFIzufK6xKxNK7awsnebTdOP4hpyQW5o6Ox2qPl8gbeUKYF+POLyItaND53kpGA==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
+
jest-validate@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.3.tgz#4fcc49e581f13fbe260a77e711a80f0256138a7a"
@@ -9061,6 +11385,30 @@ jest-validate@^27.2.3:
leven "^3.1.0"
pretty-format "^27.2.3"
+jest-validate@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.0.2.tgz#58bb7e826c054a8bb3b54c05f73758d96cf6dbef"
+ integrity sha512-nr0UOvCTtxP0YPdsk01Gk7e7c0xIiEe2nncAe3pj0wBfUvAykTVrMrdeASlAJnlEQCBuwN/GF4hKoCzbkGNCNw==
+ dependencies:
+ "@jest/types" "^28.0.2"
+ camelcase "^6.2.0"
+ chalk "^4.0.0"
+ jest-get-type "^28.0.2"
+ leven "^3.1.0"
+ pretty-format "^28.0.2"
+
+jest-validate@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.0.tgz#8a6821f48432aba9f830c26e28226ad77b9a0e18"
+ integrity sha512-Lly7CJYih3vQBfjLeANGgBSBJ7pEa18cxpQfQEq2go2xyEzehnHfQTjoUia8xUv4x4J80XKFIDwJJThXtRFQXQ==
+ dependencies:
+ "@jest/types" "^28.1.0"
+ camelcase "^6.2.0"
+ chalk "^4.0.0"
+ jest-get-type "^28.0.2"
+ leven "^3.1.0"
+ pretty-format "^28.1.0"
+
jest-watcher@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.2.3.tgz#2989228bdd05138094f7ec19a23cbb2665f2efb7"
@@ -9074,6 +11422,34 @@ jest-watcher@^27.2.3:
jest-util "^27.2.3"
string-length "^4.0.1"
+jest-watcher@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.0.2.tgz#649fa24df531d4071be5784b6274d494d788c88b"
+ integrity sha512-uIVJLpQ/5VTGQWBiBatHsi7jrCqHjHl0e0dFHMWzwuIfUbdW/muk0DtSr0fteY2T7QTFylv+7a5Rm8sBKrE12Q==
+ dependencies:
+ "@jest/test-result" "^28.0.2"
+ "@jest/types" "^28.0.2"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ emittery "^0.10.2"
+ jest-util "^28.0.2"
+ string-length "^4.0.1"
+
+jest-watcher@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.0.tgz#aaa7b4164a4e77eeb5f7d7b25ede5e7b4e9c9aaf"
+ integrity sha512-tNHMtfLE8Njcr2IRS+5rXYA4BhU90gAOwI9frTGOqd+jX0P/Au/JfRSNqsf5nUTcWdbVYuLxS1KjnzILSoR5hA==
+ dependencies:
+ "@jest/test-result" "^28.1.0"
+ "@jest/types" "^28.1.0"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ emittery "^0.10.2"
+ jest-util "^28.1.0"
+ string-length "^4.0.1"
+
jest-worker@^27.0.6:
version "27.2.2"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.2.2.tgz#636deeae8068abbf2b34b4eb9505f8d4e5bd625c"
@@ -9092,6 +11468,24 @@ jest-worker@^27.2.3:
merge-stream "^2.0.0"
supports-color "^8.0.0"
+jest-worker@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.0.2.tgz#75f7e5126541289ba02e9c1a67e46349ddb8141d"
+ integrity sha512-pijNxfjxT0tGAx+8+OzZ+eayVPCwy/rsZFhebmC0F4YnXu1EHPEPxg7utL3m5uX3EaFH1/jwDxGa1EbjJCST2g==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jest-worker@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.0.tgz#ced54757a035e87591e1208253a6e3aac1a855e5"
+ integrity sha512-ZHwM6mNwaWBR52Snff8ZvsCTqQsvhCxP/bT1I6T6DAnb6ygkshsyLQIMxFwHpYxht0HOoqt23JlC01viI7T03A==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
jest@^27.2.3:
version "27.2.3"
resolved "https://registry.yarnpkg.com/jest/-/jest-27.2.3.tgz#9c2af9ce874a3eb202f83d92fbc1cc61ccc73248"
@@ -9101,6 +11495,24 @@ jest@^27.2.3:
import-local "^3.0.2"
jest-cli "^27.2.3"
+jest@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-28.0.3.tgz#92a7d6ee097b61de4ba2db7f3ab723e81a99b32d"
+ integrity sha512-uS+T5J3w5xyzd1KSJCGKhCo8WTJXbNl86f5SW11wgssbandJOVLRKKUxmhdFfmKxhPeksl1hHZ0HaA8VBzp7xA==
+ dependencies:
+ "@jest/core" "^28.0.3"
+ import-local "^3.0.2"
+ jest-cli "^28.0.3"
+
+jest@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.0.tgz#f420e41c8f2395b9a30445a97189ebb57593d831"
+ integrity sha512-TZR+tHxopPhzw3c3560IJXZWLNHgpcz1Zh0w5A65vynLGNcg/5pZ+VildAd7+XGOu6jd58XMY/HNn0IkZIXVXg==
+ dependencies:
+ "@jest/core" "^28.1.0"
+ import-local "^3.0.2"
+ jest-cli "^28.1.0"
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -9119,6 +11531,13 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@@ -9230,6 +11649,11 @@ json-schema@0.2.3:
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+
json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
@@ -9256,6 +11680,11 @@ json5@^1.0.1:
dependencies:
minimist "^1.2.0"
+json5@^2.1.1, json5@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
+ integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
@@ -9270,6 +11699,22 @@ jsonparse@^1.2.0, jsonparse@^1.3.1:
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=
+jsonwebtoken@^8.5.1:
+ version "8.5.1"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
+ integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==
+ dependencies:
+ jws "^3.2.2"
+ lodash.includes "^4.3.0"
+ lodash.isboolean "^3.0.3"
+ lodash.isinteger "^4.0.4"
+ lodash.isnumber "^3.0.3"
+ lodash.isplainobject "^4.0.6"
+ lodash.isstring "^4.0.1"
+ lodash.once "^4.0.0"
+ ms "^2.1.1"
+ semver "^5.6.0"
+
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -9350,6 +11795,28 @@ jss@10.9.0, jss@^10.8.2:
is-in-browser "^1.1.3"
tiny-warning "^1.0.2"
+jwa@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
+ dependencies:
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jws@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
+ dependencies:
+ jwa "^1.4.1"
+ safe-buffer "^5.0.1"
+
+jwt-decode@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79"
+ integrity sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=
+
keyv@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9"
@@ -9386,6 +11853,11 @@ kleur@^3.0.3:
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
+kuler@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
+ integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
+
latest-version@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face"
@@ -9427,6 +11899,14 @@ leven@^3.1.0:
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
@@ -9586,21 +12066,61 @@ lodash.get@^4:
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
+lodash.includes@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
+ integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=
+
+lodash.isboolean@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
+
lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
+lodash.isinteger@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
+ integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=
+
lodash.ismatch@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37"
integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=
-lodash.merge@^4.6.0:
+lodash.isnumber@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
+ integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
+
+lodash.isplainobject@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+ integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.isstring@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+ integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
+
+lodash.memoize@4.x:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+
+lodash.merge@^4.6.0, lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.once@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
+
lodash.template@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
@@ -9629,6 +12149,22 @@ log-symbols@^4.0.0:
chalk "^4.1.0"
is-unicode-supported "^0.1.0"
+logform@^2.3.2, logform@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.0.tgz#131651715a17d50f09c2a2c1a524ff1a4164bcfe"
+ integrity sha512-CPSJw4ftjf517EhXZGGvTHHkYobo7ZCc0kvwUoOYcjfR2UVrI66RHj8MCrfAdEitdmFqbu2BYdYs8FHHZSb6iw==
+ dependencies:
+ "@colors/colors" "1.5.0"
+ fecha "^4.2.0"
+ ms "^2.1.1"
+ safe-stable-stringify "^2.3.1"
+ triple-beam "^1.3.0"
+
+long-timeout@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/long-timeout/-/long-timeout-0.1.1.tgz#9721d788b47e0bcb5a24c2e2bee1a0da55dab514"
+ integrity sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=
+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -9843,7 +12379,7 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-merge2@^1.3.0:
+merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
@@ -9978,6 +12514,11 @@ minimist@^1.2.0, minimist@^1.2.5:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+minimist@^1.2.3:
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
+
minipass-collect@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
@@ -10360,6 +12901,11 @@ node-releases@^2.0.2:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96"
integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==
+node-releases@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476"
+ integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==
+
nodemon@^2.0.15:
version "2.0.15"
resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.15.tgz#504516ce3b43d9dc9a955ccd9ec57550a31a8d4e"
@@ -10593,12 +13139,17 @@ nwsapi@^2.2.0:
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
+oauth-sign@^0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+ integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
+
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@^4.1.0, object-assign@^4.1.1:
+object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -10701,6 +13252,13 @@ obuf@^1.0.0, obuf@^1.1.2:
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+on-finished@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
+ integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
+ dependencies:
+ ee-first "1.1.1"
+
on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
@@ -10720,6 +13278,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
dependencies:
wrappy "1"
+one-time@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
+ integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
+ dependencies:
+ fn.name "1.x.x"
+
onetime@^5.1.0, onetime@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
@@ -10753,6 +13318,18 @@ optionator@^0.8.1:
type-check "~0.3.2"
word-wrap "~1.2.3"
+optionator@^0.9.1:
+ version "0.9.1"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
+ integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
+ dependencies:
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+ word-wrap "^1.2.3"
+
os-browserify@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
@@ -11002,7 +13579,7 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"
-parse-json@^5.0.0:
+parse-json@^5.0.0, parse-json@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
@@ -11049,6 +13626,16 @@ parse5@6.0.1, parse5@^6.0.1:
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+parseqs@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5"
+ integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==
+
+parseuri@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a"
+ integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==
+
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -11102,7 +13689,7 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-path-parse@^1.0.5, path-parse@^1.0.6:
+path-parse@^1.0.5, path-parse@^1.0.6, path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
@@ -11190,6 +13777,11 @@ pirates@^4.0.1:
dependencies:
node-modules-regexp "^1.0.0"
+pirates@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
+ integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
+
pkg-conf@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058"
@@ -11295,6 +13887,11 @@ prefix-style@2.0.1:
resolved "https://registry.yarnpkg.com/prefix-style/-/prefix-style-2.0.1.tgz#66bba9a870cfda308a5dc20e85e9120932c95a06"
integrity sha1-ZrupqHDP2jCKXcIOhekSCTLJWgY=
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
@@ -11355,6 +13952,35 @@ pretty-format@^27.2.3:
ansi-styles "^5.0.0"
react-is "^17.0.1"
+pretty-format@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
+ integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
+ dependencies:
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^17.0.1"
+
+pretty-format@^28.0.2:
+ version "28.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.0.2.tgz#6a24d71cbb61a5e5794ba7513fe22101675481bc"
+ integrity sha512-UmGZ1IERwS3yY35LDMTaBUYI1w4udZDdJGGT/DqQeKG9ZLDn7/K2Jf/JtYSRiHCCKMHvUA+zsEGSmHdpaVp1yw==
+ dependencies:
+ "@jest/schemas" "^28.0.2"
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^18.0.0"
+
+pretty-format@^28.1.0:
+ version "28.1.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.0.tgz#8f5836c6a0dfdb834730577ec18029052191af55"
+ integrity sha512-79Z4wWOYCdvQkEoEuSlBhHJqWeZ8D8YRPiPctJFCtvuaClGpiwiQYSCUOE6IEKUbbFukKOTFIUAXE8N4EQTo1Q==
+ dependencies:
+ "@jest/schemas" "^28.0.2"
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^18.0.0"
+
pretty-ms@^7.0.0:
version "7.0.1"
resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8"
@@ -11530,6 +14156,13 @@ q@^1.5.1:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+qs@6.10.3, qs@^6.5.1, qs@^6.9.1:
+ version "6.10.3"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
+ integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
+ dependencies:
+ side-channel "^1.0.4"
+
qs@6.7.0:
version "6.7.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
@@ -11582,6 +14215,11 @@ quick-lru@^4.0.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+radix-router@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/radix-router/-/radix-router-3.0.1.tgz#5522c829f7100e60c58fd1acf8803e0b2b312d97"
+ integrity sha512-jpHXHgP+ZmVzEfmZ7WVRSvc/EqMoAqYuMtBsHd9s47Hs9Iy8FDJhkweMrDH0wmdxanLzVIWhq0UpomLXNpW8tg==
+
raf@^3.1.0, raf@^3.4.1:
version "3.4.1"
resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
@@ -11602,6 +14240,11 @@ randexp@0.4.6:
discontinuous-range "1.0.0"
ret "~0.1.10"
+random-bytes@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b"
+ integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=
+
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -11642,6 +14285,16 @@ raw-body@2.4.3:
iconv-lite "0.4.24"
unpipe "1.0.0"
+raw-body@2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
+ integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
+ dependencies:
+ bytes "3.1.2"
+ http-errors "2.0.0"
+ iconv-lite "0.4.24"
+ unpipe "1.0.0"
+
rc@^1.2.8, rc@~1.2.7:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
@@ -11730,6 +14383,11 @@ react-is@^17.0.1, react-is@^17.0.2:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+react-is@^18.0.0:
+ version "18.1.0"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67"
+ integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==
+
react-redux@^7.2.5:
version "7.2.5"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.5.tgz#213c1b05aa1187d9c940ddfc0b29450957f6a3b8"
@@ -11916,7 +14574,7 @@ read@1, read@~1.0.1:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.5.0, readable-stream@^3.6.0:
+readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -11968,6 +14626,13 @@ rebass@^4.0.7:
dependencies:
reflexbox "^4.0.6"
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
+ dependencies:
+ resolve "^1.1.6"
+
rechoir@^0.7.0:
version "0.7.1"
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686"
@@ -12071,7 +14736,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0:
call-bind "^1.0.2"
define-properties "^1.1.3"
-regexpp@^3.1.0:
+regexpp@^3.1.0, regexpp@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
@@ -12150,6 +14815,20 @@ repeat-string@^1.6.1:
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+request-compose@^1.2.1:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/request-compose/-/request-compose-1.2.3.tgz#b04110786cc25e3af6b1757553f5abcfefe0887b"
+ integrity sha512-i2m8y3kEveoaAVTsTqig2LmWI10bUdakqzIVHkTEAK8kcsr4a/+iL93tsujsLaMiCZmnB1Osdk3WEMsB//H66A==
+
+request-oauth@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/request-oauth/-/request-oauth-0.0.3.tgz#b3ea1ff857b9add3b0d49e42993a88e256d791ab"
+ integrity sha512-q7WdJlpIcPaIDac0FZSy/yH37FO3UkUuPDIsiLALiLjuC6vzvuKIU14YIC3Lm0wtQRXS9GqvSo/fCYj8n75xSw==
+ dependencies:
+ oauth-sign "^0.8.2"
+ qs "^6.5.1"
+ uuid "^3.2.1"
+
request@^2.88.0, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
@@ -12222,6 +14901,20 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+resolve.exports@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
+ integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
+
+resolve@^1.0.0, resolve@^1.1.6:
+ version "1.22.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198"
+ integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==
+ dependencies:
+ is-core-module "^2.8.1"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
@@ -12298,6 +14991,14 @@ rete-react-render-plugin@^0.2.1:
resolved "https://registry.yarnpkg.com/rete-react-render-plugin/-/rete-react-render-plugin-0.2.1.tgz#71a6d73f18f850b85262563f678b40080a7b0e32"
integrity sha512-2ZMXUP0v+EiejHVMqdrOmUwyDBHC2UDOJ/pFkElaZL1Kn/E40JZA5yzdBXi6ajYZI2DCzoW5ZBcA2Ihjtur8MQ==
+"rete@git+https://github.com/latitudegames/rete.git#master":
+ version "1.4.5"
+ uid "24565a81a2bbcdd4cd73b0a725977550cc8ff988"
+ resolved "git+https://github.com/latitudegames/rete.git#24565a81a2bbcdd4cd73b0a725977550cc8ff988"
+ dependencies:
+ lodash "^4.17.21"
+ watch "^1.0.2"
+
"rete@https://github.com/latitudegames/rete.git#master":
version "1.4.5"
resolved "https://github.com/latitudegames/rete.git#24565a81a2bbcdd4cd73b0a725977550cc8ff988"
@@ -12320,7 +15021,7 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rimraf@^2.5.4, rimraf@^2.6.3:
+rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -12376,6 +15077,11 @@ rxjs@^6.6.0:
dependencies:
tslib "^1.9.0"
+safe-buffer@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
+ integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -12393,6 +15099,11 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
+safe-stable-stringify@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73"
+ integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg==
+
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -12527,6 +15238,25 @@ send@0.17.2:
range-parser "~1.2.1"
statuses "~1.5.0"
+send@0.18.0:
+ version "0.18.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
+ integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
serialize-javascript@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
@@ -12541,6 +15271,17 @@ serialize-javascript@^6.0.0:
dependencies:
randombytes "^2.1.0"
+serve-favicon@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.5.0.tgz#935d240cdfe0f5805307fdfe967d88942a2cbcf0"
+ integrity sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=
+ dependencies:
+ etag "~1.8.1"
+ fresh "0.5.2"
+ ms "2.1.1"
+ parseurl "~1.3.2"
+ safe-buffer "5.1.1"
+
serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
@@ -12574,6 +15315,16 @@ serve-static@1.14.2:
parseurl "~1.3.3"
send "0.17.2"
+serve-static@1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
+ integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.3"
+ send "0.18.0"
+
set-blocking@~2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
@@ -12664,6 +15415,23 @@ shell-quote@^1.6.1:
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123"
integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==
+shelljs@^0.8.5:
+ version "0.8.5"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c"
+ integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
+shx@^0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02"
+ integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==
+ dependencies:
+ minimist "^1.2.3"
+ shelljs "^0.8.5"
+
side-channel@^1.0.3, side-channel@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
@@ -12678,6 +15446,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.4.tgz#366a4684d175b9cab2081e3681fda3747b6c51d7"
integrity sha512-rqYhcAnZ6d/vTPGghdrw7iumdcbXpsk1b8IG/rz+VWV51DM0p7XCtMoJ3qhPLIbp3tvyt3pKRbaaEMZYpHto8Q==
+signal-exit@^3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
+ integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
+
signale@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/signale/-/signale-1.4.0.tgz#c4be58302fb0262ac00fc3d886a7c113759042f1"
@@ -12687,6 +15460,13 @@ signale@^1.4.0:
figures "^2.0.0"
pkg-conf "^2.1.0"
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
+
sirv@^1.0.7:
version "1.0.17"
resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.17.tgz#86e2c63c612da5a1dace1c16c46f524aaa26ac45"
@@ -12751,6 +15531,92 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"
+socket.io-adapter@~1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9"
+ integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==
+
+socket.io-adapter@~2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz#b50a4a9ecdd00c34d4c8c808224daa1a786152a6"
+ integrity sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==
+
+socket.io-client@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.4.0.tgz#aafb5d594a3c55a34355562fc8aea22ed9119a35"
+ integrity sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==
+ dependencies:
+ backo2 "1.0.2"
+ component-bind "1.0.0"
+ component-emitter "~1.3.0"
+ debug "~3.1.0"
+ engine.io-client "~3.5.0"
+ has-binary2 "~1.0.2"
+ indexof "0.0.1"
+ parseqs "0.0.6"
+ parseuri "0.0.6"
+ socket.io-parser "~3.3.0"
+ to-array "0.1.4"
+
+socket.io-parser@*:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.0.tgz#3f01e5bc525d94aa52a97ed5cbc12e229bbc4d6b"
+ integrity sha512-tLfmEwcEwnlQTxFB7jibL/q2+q8dlVQzj4JdRLJ/W/G1+Fu9VSxCx1Lo+n1HvXxKnM//dUuD0xgiA7tQf57Vng==
+ dependencies:
+ "@socket.io/component-emitter" "~3.1.0"
+ debug "~4.3.1"
+
+socket.io-parser@~3.3.0:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.2.tgz#ef872009d0adcf704f2fbe830191a14752ad50b6"
+ integrity sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==
+ dependencies:
+ component-emitter "~1.3.0"
+ debug "~3.1.0"
+ isarray "2.0.1"
+
+socket.io-parser@~3.4.0:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a"
+ integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==
+ dependencies:
+ component-emitter "1.2.1"
+ debug "~4.1.0"
+ isarray "2.0.1"
+
+socket.io-parser@~4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0"
+ integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==
+ dependencies:
+ "@types/component-emitter" "^1.2.10"
+ component-emitter "~1.3.0"
+ debug "~4.3.1"
+
+socket.io@^2.3.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.4.1.tgz#95ad861c9a52369d7f1a68acf0d4a1b16da451d2"
+ integrity sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w==
+ dependencies:
+ debug "~4.1.0"
+ engine.io "~3.5.0"
+ has-binary2 "~1.0.2"
+ socket.io-adapter "~1.1.0"
+ socket.io-client "2.4.0"
+ socket.io-parser "~3.4.0"
+
+socket.io@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.5.0.tgz#78ae2e84784c29267086a416620c18ef95b37186"
+ integrity sha512-slTYqU2jCgMjXwresG8grhUi/cC6GjzmcfqArzaH3BN/9I/42eZk9yamNvZJdBfTubkjEdKAKs12NEztId+bUA==
+ dependencies:
+ accepts "~1.3.4"
+ base64id "~2.0.0"
+ debug "~4.3.2"
+ engine.io "~6.2.0"
+ socket.io-adapter "~2.4.0"
+ socket.io-parser "~4.0.4"
+
sockjs@^0.3.21:
version "0.3.21"
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417"
@@ -12838,6 +15704,22 @@ source-map-resolve@^0.6.0:
atob "^2.1.2"
decode-uri-component "^0.2.0"
+source-map-support@0.5.13:
+ version "0.5.13"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
+ integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-support@^0.5.12:
+ version "0.5.21"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
source-map-support@^0.5.17, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20:
version "0.5.20"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
@@ -12975,6 +15857,11 @@ ssri@^8.0.0, ssri@^8.0.1:
dependencies:
minipass "^3.1.1"
+stack-trace@0.0.x:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
+ integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
+
stack-utils@^2.0.3:
version "2.0.5"
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
@@ -12995,6 +15882,11 @@ static-extend@^0.1.1:
define-property "^0.2.5"
object-copy "^0.1.0"
+statuses@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
+ integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+
"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
@@ -13070,7 +15962,7 @@ string-width@^1.0.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
-string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2:
+string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -13182,11 +16074,16 @@ strip-indent@^3.0.0:
dependencies:
min-indent "^1.0.0"
-strip-json-comments@~2.0.1:
+strip-json-comments@^2.0.0, strip-json-comments@~2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
strong-log-transformer@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10"
@@ -13264,6 +16161,11 @@ supports-hyperlinks@^2.0.0:
has-flag "^4.0.0"
supports-color "^7.0.0"
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
@@ -13397,6 +16299,16 @@ text-extensions@^1.0.0:
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==
+text-hex@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
+ integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
throat@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375"
@@ -13456,6 +16368,11 @@ tmpl@1.0.x:
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
+to-array@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
+ integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=
+
to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
@@ -13585,11 +16502,21 @@ tr46@~0.0.3:
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
+tree-kill@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
+ integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
+
trim-newlines@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144"
integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==
+triple-beam@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
+ integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
+
ts-jest@^27.0.5:
version "27.0.5"
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.5.tgz#0b0604e2271167ec43c12a69770f0bb65ad1b750"
@@ -13604,6 +16531,34 @@ ts-jest@^27.0.5:
semver "7.x"
yargs-parser "20.x"
+ts-jest@^27.1.4:
+ version "27.1.4"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00"
+ integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==
+ dependencies:
+ bs-logger "0.x"
+ fast-json-stable-stringify "2.x"
+ jest-util "^27.0.0"
+ json5 "2.x"
+ lodash.memoize "4.x"
+ make-error "1.x"
+ semver "7.x"
+ yargs-parser "20.x"
+
+ts-jest@^28.0.3:
+ version "28.0.3"
+ resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.3.tgz#d1c47f167e56eef3989bb51afaf7fc1c87a04c52"
+ integrity sha512-HzgbEDQ2KgVtDmpXToqAcKTyGHdHsG23i/iUjfxji92G5eT09S1m9UHZd7csF0Bfgh9txM4JzwHnv7r1waFPlw==
+ dependencies:
+ bs-logger "0.x"
+ fast-json-stable-stringify "2.x"
+ jest-util "^28.0.0"
+ json5 "^2.2.1"
+ lodash.memoize "4.x"
+ make-error "1.x"
+ semver "7.x"
+ yargs-parser "^20.x"
+
ts-loader@8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-8.2.0.tgz#6a3aeaa378aecda543e2ed2c332d3123841d52e0"
@@ -13625,7 +16580,23 @@ ts-loader@^9.2.6:
micromatch "^4.0.0"
semver "^7.3.4"
-ts-node@^9, ts-node@^9.1.1:
+ts-node-dev@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ts-node-dev/-/ts-node-dev-1.1.8.tgz#95520d8ab9d45fffa854d6668e2f8f9286241066"
+ integrity sha512-Q/m3vEwzYwLZKmV6/0VlFxcZzVV/xcgOt+Tx/VjaaRHyiBcFlV0541yrT09QjzzCxlDZ34OzKjrFAynlmtflEg==
+ dependencies:
+ chokidar "^3.5.1"
+ dynamic-dedupe "^0.3.0"
+ minimist "^1.2.5"
+ mkdirp "^1.0.4"
+ resolve "^1.0.0"
+ rimraf "^2.6.1"
+ source-map-support "^0.5.12"
+ tree-kill "^1.2.2"
+ ts-node "^9.0.0"
+ tsconfig "^7.0.0"
+
+ts-node@^9, ts-node@^9.0.0, ts-node@^9.1.1:
version "9.1.1"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d"
integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==
@@ -13647,6 +16618,16 @@ tsconfig-paths@^3.11.0:
minimist "^1.2.0"
strip-bom "^3.0.0"
+tsconfig@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-7.0.0.tgz#84538875a4dc216e5c4a5432b3a4dec3d54e91b7"
+ integrity sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==
+ dependencies:
+ "@types/strip-bom" "^3.0.0"
+ "@types/strip-json-comments" "0.0.30"
+ strip-bom "^3.0.0"
+ strip-json-comments "^2.0.0"
+
tslib@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
@@ -13691,6 +16672,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
@@ -13763,6 +16751,11 @@ typescript@^4.2.0:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324"
integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==
+typescript@^4.5.4, typescript@^4.6.4:
+ version "4.6.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9"
+ integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==
+
typical@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4"
@@ -13773,6 +16766,11 @@ typical@^5.2.0:
resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066"
integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==
+uberproto@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/uberproto/-/uberproto-2.0.6.tgz#709274d183bce6fb734dfd3880d2086ed72b69e5"
+ integrity sha512-68H97HffZoFaa3HFtpstahWorN9dSp5uTU6jo3GjIQ6JkJBR3hC2Nx/e/HFOoYHdUyT/Z1MRWfxN1EiQJZUyCQ==
+
uglify-js@^3.1.4:
version "3.14.2"
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.2.tgz#d7dd6a46ca57214f54a2d0a43cad0f35db82ac99"
@@ -13783,6 +16781,13 @@ uid-number@0.0.6:
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=
+uid-safe@~2.1.5:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a"
+ integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==
+ dependencies:
+ random-bytes "~1.0.0"
+
umask@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d"
@@ -14012,7 +17017,7 @@ utils-merge@1.0.1:
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
-uuid@^3.3.2, uuid@^3.4.0:
+uuid@^3.2.1, uuid@^3.3.2, uuid@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
@@ -14022,7 +17027,7 @@ uuid@^8.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-v8-compile-cache@^2.2.0:
+v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
@@ -14036,6 +17041,15 @@ v8-to-istanbul@^8.1.0:
convert-source-map "^1.6.0"
source-map "^0.7.3"
+v8-to-istanbul@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz#be0dae58719fc53cb97e5c7ac1d7e6d4f5b19511"
+ integrity sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.7"
+ "@types/istanbul-lib-coverage" "^2.0.1"
+ convert-source-map "^1.6.0"
+
validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
@@ -14051,7 +17065,7 @@ validate-npm-package-name@^3.0.0:
dependencies:
builtins "^1.0.3"
-vary@~1.1.2:
+vary@^1, vary@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
@@ -14070,6 +17084,14 @@ vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
+vm2@^3.9.9:
+ version "3.9.9"
+ resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5"
+ integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==
+ dependencies:
+ acorn "^8.7.0"
+ acorn-walk "^8.2.0"
+
vue@2.6.10:
version "2.6.10"
resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"
@@ -14502,7 +17524,32 @@ wildcard@^2.0.0:
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
-word-wrap@~1.2.3:
+winston-transport@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
+ integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==
+ dependencies:
+ logform "^2.3.2"
+ readable-stream "^3.6.0"
+ triple-beam "^1.3.0"
+
+winston@^3.0.0:
+ version "3.7.2"
+ resolved "https://registry.yarnpkg.com/winston/-/winston-3.7.2.tgz#95b4eeddbec902b3db1424932ac634f887c400b1"
+ integrity sha512-QziIqtojHBoyzUOdQvQiar1DH0Xp9nF1A1y7NVy2DGEsz82SBDtOalS0ulTRGVT14xPX3WRWkCsdcJKqNflKng==
+ dependencies:
+ "@dabh/diagnostics" "^2.0.2"
+ async "^3.2.3"
+ is-stream "^2.0.0"
+ logform "^2.4.0"
+ one-time "^1.0.0"
+ readable-stream "^3.4.0"
+ safe-stable-stringify "^2.3.1"
+ stack-trace "0.0.x"
+ triple-beam "^1.3.0"
+ winston-transport "^4.5.0"
+
+word-wrap@^1.2.3, word-wrap@~1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
@@ -14560,6 +17607,14 @@ write-file-atomic@^3.0.0, write-file-atomic@^3.0.3:
signal-exit "^3.0.2"
typedarray-to-buffer "^3.1.5"
+write-file-atomic@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f"
+ integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==
+ dependencies:
+ imurmurhash "^0.1.4"
+ signal-exit "^3.0.7"
+
write-json-file@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a"
@@ -14598,7 +17653,7 @@ ws@^7.3.1, ws@^7.4.6:
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881"
integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==
-ws@^8.0.0:
+ws@^8.0.0, ws@~8.2.3:
version "8.2.3"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.3.tgz#63a56456db1b04367d0b721a0b80cae6d8becbba"
integrity sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==
@@ -14613,6 +17668,11 @@ ws@^8.5.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
+ws@~7.4.2:
+ version "7.4.6"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
+ integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
+
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
@@ -14628,6 +17688,11 @@ xmlchars@^2.2.0:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+xmlhttprequest-ssl@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz#03b713873b01659dfa2c1c5d056065b27ddc2de6"
+ integrity sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==
+
xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
@@ -14663,11 +17728,16 @@ yargs-parser@20.2.4:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
-yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3:
+yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20.x:
version "20.2.9"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+yargs-parser@^21.0.0:
+ version "21.0.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35"
+ integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==
+
yargs@^16.0.3, yargs@^16.1.0, yargs@^16.2.0:
version "16.2.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
@@ -14681,6 +17751,24 @@ yargs@^16.0.3, yargs@^16.1.0, yargs@^16.2.0:
y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@^17.3.1:
+ version "17.4.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284"
+ integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.0.0"
+
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+ integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=
+
yn@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"