From 15b61e80902f7dc3e32c7e46369a881ce5b632f9 Mon Sep 17 00:00:00 2001
From: Michael Behrisch <m.behrisch@uu.nl>
Date: Wed, 9 Mar 2022 17:18:47 +0100
Subject: [PATCH] Revert "feat(vis-schema): :sparkles: introduces graph-layout
 library with various algorithms"

This reverts commit 2c26f4edf45df0c2936a535a19b799d524cf5064.
---
 .vscode/launch.json                           |  22 +-
 apps/web-graphpolaris/.babelrc                |   4 +-
 apps/web-graphpolaris/src/app/app.tsx         |   5 +-
 .../src/components/schema/initial-elements.js | 121 ----------
 .../src/components/schema/schema.stories.tsx  | 136 +++++++++--
 .../src/components/schema/schema.tsx          |  85 +++----
 .../src/lib/schema-usecases.spec.ts           |  62 +----
 .../src/lib/schema-usecases.ts                |   7 +-
 .../shared/data-access/store/src/lib/hooks.ts |  12 +-
 .../store/src/lib/schemaSlice.spec.ts         |  64 ++++--
 .../data-access/store/src/lib/schemaSlice.ts  |  31 +--
 libs/shared/graph-layout/.babelrc             |   3 -
 libs/shared/graph-layout/.eslintrc.json       |  18 --
 libs/shared/graph-layout/README.md            |   7 -
 libs/shared/graph-layout/jest.config.js       |  15 --
 libs/shared/graph-layout/project.json         |  29 ---
 .../shared/graph-layout/src/factory/Layout.ts |  21 --
 .../src/factory/cytoscape-layouts.ts          |  54 -----
 .../src/factory/graphology-layouts.ts         | 169 --------------
 .../factory/layout-creator-usecase.spec.ts    | 142 ------------
 .../src/factory/layout-creator-usecase.ts     |  77 -------
 libs/shared/graph-layout/src/factory/test.ts  |   0
 libs/shared/graph-layout/src/index.ts         |   6 -
 libs/shared/graph-layout/tsconfig.json        |  22 --
 libs/shared/graph-layout/tsconfig.lib.json    |  11 -
 libs/shared/graph-layout/tsconfig.spec.json   |  19 --
 package.json                                  |   3 -
 tsconfig.base.json                            |   4 -
 yarn.lock                                     | 212 +-----------------
 29 files changed, 215 insertions(+), 1146 deletions(-)
 delete mode 100644 apps/web-graphpolaris/src/components/schema/initial-elements.js
 delete mode 100644 libs/shared/graph-layout/.babelrc
 delete mode 100644 libs/shared/graph-layout/.eslintrc.json
 delete mode 100644 libs/shared/graph-layout/README.md
 delete mode 100644 libs/shared/graph-layout/jest.config.js
 delete mode 100644 libs/shared/graph-layout/project.json
 delete mode 100644 libs/shared/graph-layout/src/factory/Layout.ts
 delete mode 100644 libs/shared/graph-layout/src/factory/cytoscape-layouts.ts
 delete mode 100644 libs/shared/graph-layout/src/factory/graphology-layouts.ts
 delete mode 100644 libs/shared/graph-layout/src/factory/layout-creator-usecase.spec.ts
 delete mode 100644 libs/shared/graph-layout/src/factory/layout-creator-usecase.ts
 delete mode 100644 libs/shared/graph-layout/src/factory/test.ts
 delete mode 100644 libs/shared/graph-layout/src/index.ts
 delete mode 100644 libs/shared/graph-layout/tsconfig.json
 delete mode 100644 libs/shared/graph-layout/tsconfig.lib.json
 delete mode 100644 libs/shared/graph-layout/tsconfig.spec.json

diff --git a/.vscode/launch.json b/.vscode/launch.json
index 520ee6d53..f73ba1c65 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -14,22 +14,12 @@
       "port": 9229
     },
     {
-      "name": "Run Storybook server",
-      "type": "node",
-      "request": "launch",
-      "protocol": "inspector",
-      "program": "${workspaceRoot}/node_modules/.bin/start-storybook",
-      "args": ["-p", "6006"],
-      "stopOnEntry": false,
-      "runtimeArgs": ["--nolazy"],
-      "sourceMaps": false
-    },
-    {
+      // Requires the extension Debugger for Chrome: https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome
       "type": "chrome",
       "request": "launch",
-      "name": "Launch Chrome for Storybook",
+      "name": "Storybook Debug",
       "breakOnLoad": true,
-      "url": "http://localhost:6006",
+      "url": "http://localhost:4400/?path=/story/",
       "sourceMaps": true,
       "webRoot": "${workspaceFolder}",
       "sourceMapPathOverrides": {
@@ -39,11 +29,5 @@
         "webpack:///./~/*": "${webRoot}/node_modules/*"
       }
     }
-  ],
-  "compounds": [
-    {
-      "name": "Launch Storybook",
-      "configurations": ["Launch Chrome for Storybook", "Run Storybook server"]
-    }
   ]
 }
diff --git a/apps/web-graphpolaris/.babelrc b/apps/web-graphpolaris/.babelrc
index 09947a5fd..61641ec8a 100644
--- a/apps/web-graphpolaris/.babelrc
+++ b/apps/web-graphpolaris/.babelrc
@@ -5,7 +5,7 @@
       {
         "runtime": "automatic"
       }
-    ],
+    ]
   ],
-  "plugins": ["@babel/plugin-syntax-flow"]
+  "plugins": []
 }
diff --git a/apps/web-graphpolaris/src/app/app.tsx b/apps/web-graphpolaris/src/app/app.tsx
index 4b52a8ebc..e94971f9d 100644
--- a/apps/web-graphpolaris/src/app/app.tsx
+++ b/apps/web-graphpolaris/src/app/app.tsx
@@ -11,7 +11,6 @@ import { RawJSONVis } from '../components/visualisations/rawjsonvis/rawjsonvis';
 import SemanticSubstrates from '../components/visualisations/semanticsubstrates/semanticsubstrates';
 import LoginScreen from '../components/login/loginScreen';
 import { OurThemeProvider } from '@graphpolaris/shared/data-access/theme';
-import Schema from '../components/schema/schema';
 
 function useIsAuthorized() {
   const [userAuthorized, setUserAuthorized] = useState(false);
@@ -52,9 +51,7 @@ export function App() {
           key="schema-panel"
           data-grid={{ x: 0, y: 0, w: 3, h: 30, maxW: 5, isDraggable: false }}
         >
-          <Panel content="Schema Panel" color="red">
-            <Schema />
-          </Panel>
+          <Panel content="Schema Panel" color="red"></Panel>
         </div>
         <div
           key="query-panel"
diff --git a/apps/web-graphpolaris/src/components/schema/initial-elements.js b/apps/web-graphpolaris/src/components/schema/initial-elements.js
deleted file mode 100644
index 09ea3488c..000000000
--- a/apps/web-graphpolaris/src/components/schema/initial-elements.js
+++ /dev/null
@@ -1,121 +0,0 @@
-import React from 'react';
-
-export default [
-  {
-    id: '1',
-    type: 'input',
-    data: { label: 'Node 1' },
-    position: { x: 250, y: 5 },
-  },
-  // you can also pass a React Node as a label
-  { id: '2', data: { label: <div>Node 2</div> }, position: { x: 100, y: 100 } },
-  { id: 'e1-2', source: '1', target: '2', animated: true },
-];
-
-// export default [
-//   {
-//     id: '1',
-//     type: 'input',
-//     data: {
-//       label: (
-//         <>
-//           Welcome to <strong>React Flow!</strong>
-//         </>
-//       ),
-//     },
-//     position: { x: 250, y: 0 },
-//   },
-//   {
-//     id: '2',
-//     data: {
-//       label: (
-//         <>
-//           This is a <strong>default node</strong>
-//         </>
-//       ),
-//     },
-//     position: { x: 100, y: 100 },
-//   },
-//   {
-//     id: '3',
-//     data: {
-//       label: (
-//         <>
-//           This one has a <strong>custom style</strong>
-//         </>
-//       ),
-//     },
-//     position: { x: 400, y: 100 },
-//     style: {
-//       background: '#D6D5E6',
-//       color: '#333',
-//       border: '1px solid #222138',
-//       width: 180,
-//     },
-//   },
-//   {
-//     id: '4',
-//     position: { x: 250, y: 200 },
-//     data: {
-//       label: 'Another default node',
-//     },
-//   },
-//   {
-//     id: '5',
-//     data: {
-//       label: 'Node id: 5',
-//     },
-//     position: { x: 250, y: 325 },
-//   },
-//   {
-//     id: '6',
-//     type: 'output',
-//     data: {
-//       label: (
-//         <>
-//           An <strong>output node</strong>
-//         </>
-//       ),
-//     },
-//     position: { x: 100, y: 480 },
-//   },
-//   {
-//     id: '7',
-//     type: 'output',
-//     data: { label: 'Another output node' },
-//     position: { x: 400, y: 450 },
-//   },
-//   { id: 'e1-2', source: '1', target: '2', label: 'this is an edge label' },
-//   { id: 'e1-3', source: '1', target: '3' },
-//   {
-//     id: 'e3-4',
-//     source: '3',
-//     target: '4',
-//     animated: true,
-//     label: 'animated edge',
-//   },
-//   {
-//     id: 'e4-5',
-//     source: '4',
-//     target: '5',
-//     // arrowHeadType: 'arrowclosed',
-//     label: 'edge with arrow head',
-//   },
-//   {
-//     id: 'e5-6',
-//     source: '5',
-//     target: '6',
-//     type: 'smoothstep',
-//     label: 'smooth step edge',
-//   },
-//   {
-//     id: 'e5-7',
-//     source: '5',
-//     target: '7',
-//     type: 'step',
-//     style: { stroke: '#f6ab6c' },
-//     label: 'a step edge',
-//     animated: true,
-//     labelStyle: { fill: '#f6ab6c', fontWeight: 700 },
-//   },
-// ];
diff --git a/apps/web-graphpolaris/src/components/schema/schema.stories.tsx b/apps/web-graphpolaris/src/components/schema/schema.stories.tsx
index a38499b13..7441b44b9 100644
--- a/apps/web-graphpolaris/src/components/schema/schema.stories.tsx
+++ b/apps/web-graphpolaris/src/components/schema/schema.stories.tsx
@@ -1,16 +1,10 @@
-import { parseSchemaFromBackend } from '@graphpolaris/schema/schema-usecases';
 import {
-  SchemaFromBackend,
-  schemaSlice,
-  setSchema,
-  store,
-} from '@graphpolaris/shared/data-access/store';
+  // handleSchemaLayout,
+  parseSchemaFromBackend
+} from '@graphpolaris/schema/schema-usecases';
 import {
-  movieSchema,
-  northWindSchema,
-  twitterSchema,
-} from '@graphpolaris/shared/mock-data';
-import { configureStore } from '@reduxjs/toolkit';
+  store
+} from '@graphpolaris/shared/data-access/store';
 import { ComponentMeta, ComponentStory } from '@storybook/react';
 import React from 'react';
 import { Provider } from 'react-redux';
@@ -26,7 +20,7 @@ export default {
   decorators: [
     (story) => (
       <div style={{ padding: '3rem' }}>
-        <Provider store={Mockstore}>{story()}</Provider>
+        <Provider store={store}>{story()}</Provider>
       </div>
     ),
   ],
@@ -35,15 +29,119 @@ export default {
 const Template: ComponentStory<typeof Schema> = (args) => <Schema {...args} />;
 
 // // A super-simple mock of a redux store
-const Mockstore = configureStore({
-  reducer: {
-    schema: schemaSlice.reducer,
-  },
-});
+// const Mockstore = configureStore({
+//   reducer: {
+//     schema: schemaSlice,
+//   },
+// });
 
 export const TestWithSchema = Template.bind({});
 
 TestWithSchema.play = async () => {
-  const parsed = parseSchemaFromBackend(twitterSchema as SchemaFromBackend);
-  Mockstore.dispatch(setSchema(parsed.export()));
+  const dispatch = store.dispatch;
+
+  const schema = parseSchemaFromBackend({
+    nodes: [
+      {
+        name: 'Thijs',
+        attributes: [],
+      },
+      {
+        name: 'Airport',
+        attributes: [
+          { name: 'city', type: 'string' },
+          { name: 'vip', type: 'bool' },
+          { name: 'state', type: 'string' },
+        ],
+      },
+      {
+        name: 'Airport2',
+        attributes: [
+          { name: 'city', type: 'string' },
+          { name: 'vip', type: 'bool' },
+          { name: 'state', type: 'string' },
+        ],
+      },
+      {
+        name: 'Plane',
+        attributes: [
+          { name: 'type', type: 'string' },
+          { name: 'maxFuelCapacity', type: 'int' },
+        ],
+      },
+      { name: 'Staff', attributes: [] },
+    ],
+    edges: [
+      {
+        name: 'Airport2:Airport',
+        from: 'Airport2',
+        to: 'Airport',
+        collection: 'flights',
+        attributes: [
+          { name: 'arrivalTime', type: 'int' },
+          { name: 'departureTime', type: 'int' },
+        ],
+      },
+      {
+        name: 'Airport:Staff',
+        from: 'Airport',
+        to: 'Staff',
+        collection: 'flights',
+        attributes: [{ name: 'salary', type: 'int' }],
+      },
+      {
+        name: 'Plane:Airport',
+        from: 'Plane',
+        to: 'Airport',
+        collection: 'flights',
+        attributes: [],
+      },
+      {
+        name: 'Airport:Thijs',
+        from: 'Airport',
+        to: 'Thijs',
+        collection: 'flights',
+        attributes: [{ name: 'hallo', type: 'string' }],
+      },
+      {
+        name: 'Thijs:Airport',
+        from: 'Thijs',
+        to: 'Airport',
+        collection: 'flights',
+        attributes: [{ name: 'hallo', type: 'string' }],
+      },
+      {
+        name: 'Staff:Plane',
+        from: 'Staff',
+        to: 'Plane',
+        collection: 'flights',
+        attributes: [{ name: 'hallo', type: 'string' }],
+      },
+      {
+        name: 'Staff:Airport2',
+        from: 'Staff',
+        to: 'Airport2',
+        collection: 'flights',
+        attributes: [{ name: 'hallo', type: 'string' }],
+      },
+      {
+        name: 'Airport2:Plane',
+        from: 'Airport2',
+        to: 'Plane',
+        collection: 'flights',
+        attributes: [{ name: 'hallo', type: 'string' }],
+      },
+
+      {
+        name: 'Airport:Airport',
+        from: 'Airport',
+        to: 'Airport',
+        collection: 'flights',
+        attributes: [{ name: 'test', type: 'string' }],
+      },
+    ],
+  });
+
+  //dispatch(setSchema(schema));
+  // handleSchemaLayout(schema);
 };
diff --git a/apps/web-graphpolaris/src/components/schema/schema.tsx b/apps/web-graphpolaris/src/components/schema/schema.tsx
index 094621fb9..1023e2e3a 100644
--- a/apps/web-graphpolaris/src/components/schema/schema.tsx
+++ b/apps/web-graphpolaris/src/components/schema/schema.tsx
@@ -1,63 +1,45 @@
+import { useSchema } from '@graphpolaris/shared/data-access/store';
+//import { useEffect } from 'react';
+import ReactFlow from 'react-flow-renderer';
 import { createReactFlowElements } from '@graphpolaris/schema/schema-usecases';
-import {
-  useSchema,
-  useSchemaLayout,
-} from '@graphpolaris/shared/data-access/store';
-import {
-  AllLayoutAlgorithms,
-  LayoutFactory,
-} from '@graphpolaris/shared/graph-layout';
-import { Attributes } from 'graphology-types';
 import { useEffect, useState } from 'react';
-import ReactFlow, {
-  Node,
-  Edge,
-  Elements,
-  ReactFlowProvider,
-  FlowElement,
-} from 'react-flow-renderer';
 
 interface Props {
-  // content: string;
+  content: string;
 }
 
-const onLoad = (reactFlowInstance: any) => {
-  setTimeout(() => reactFlowInstance.fitView(), 0);
-};
+const initialElements = [
+  {
+    id: '1',
+    type: 'input',
+    data: { label: 'Input Node' },
+    position: { x: 250, y: 25 },
+  },
+  {
+    id: '2',
+    data: { label: 'Another Node' },
+    position: { x: 100, y: 125 },
+  },
+];
 
 const Schema = (props: Props) => {
-  const [elements, setElements] = useState([] as FlowElement[]);
-  // In case the schema is updated
   const dbschema = useSchema();
-  const schemaLayout = useSchemaLayout();
+  console.log(dbschema);
 
-  useEffect(() => {
-    const layoutFactory = new LayoutFactory();
+  const flowElements = createReactFlowElements(dbschema);
+  console.log(flowElements);
 
-    // console.log('schema Layout', schemaLayout);
-    const layout = layoutFactory.createLayout(
-      // schemaLayout as AllLayoutAlgorithms
-      'Graphology_noverlap'
-    );
-    layout?.layout(dbschema);
+  // const [dbschema, setSchema] = useState(useSchema());
 
-    // dbschema.forEachNode((node, attr) => {
-    //   console.log('x', dbschema.getNodeAttribute(node, 'x'));
-    //   console.log('y', dbschema.getNodeAttribute(node, 'y'));
-    // });
+  // const [flowElements, setFlowElements] = useState(initialElements);
 
-    const flowElements = createReactFlowElements(dbschema);
-    setElements(flowElements);
-    console.log(
-      'update schema useEffect',
-      dbschema,
-      dbschema.order,
-      flowElements
-    );
-  }, [dbschema, schemaLayout]);
-
-  const graphStyles = { width: '100%', height: '500px' };
+  // In case the schema is updated
+  // useEffect(() => {
+  //   const flowElements = createReactFlowElements(dbschema);
+  //   console.log('update schema useEffect');
+  // }, [dbschema]);
 
+  // console.log(dbschema);
   return (
     <div
       style={{
@@ -65,16 +47,7 @@ const Schema = (props: Props) => {
         height: '100%',
       }}
     >
-      {elements.length == 0 && <p>DEBUG: No Elements</p>}
-      <ReactFlowProvider>
-        <ReactFlow elements={elements} style={graphStyles} onLoad={onLoad} />
-        {/* // onElementsRemove={onElementsRemove}
-        // onConnect={onConnect}
-        // 
-        snapToGrid={true}
-        snapGrid={[15, 15]}
-      ></ReactFlow> */}
-      </ReactFlowProvider>
+      <ReactFlow elements={createReactFlowElements(dbschema)} />
     </div>
   );
 };
diff --git a/libs/schema/schema-usecases/src/lib/schema-usecases.spec.ts b/libs/schema/schema-usecases/src/lib/schema-usecases.spec.ts
index 87156cb18..a466f3101 100644
--- a/libs/schema/schema-usecases/src/lib/schema-usecases.spec.ts
+++ b/libs/schema/schema-usecases/src/lib/schema-usecases.spec.ts
@@ -1,19 +1,14 @@
-import {
-  SchemaFromBackend,
-  setSchema,
-} from '@graphpolaris/shared/data-access/store';
+import { SchemaFromBackend } from '@graphpolaris/shared/data-access/store';
 import { MultiGraph } from 'graphology';
+import { parse } from 'path/posix';
+import { parseSchemaFromBackend } from '..';
 import { Attributes } from 'graphology-types';
 import {
   movieSchema,
   northWindSchema,
   simpleSchema,
   twitterSchema,
-} from '@graphpolaris/shared/mock-data';
-import { parseSchemaFromBackend } from '..';
-
-import { store } from '@graphpolaris/shared/data-access/store';
-import { LayoutFactory } from '@graphpolaris/shared/graph-layout';
+} from 'libs/shared/mock-data/src';
 
 describe('SchemaUsecases', () => {
   test.each([
@@ -72,53 +67,4 @@ describe('SchemaUsecases', () => {
     expect(data).toBeDefined();
     expect(data.nodes).toBeDefined();
   });
-
-  test.each([
-    { data: simpleSchema },
-    { data: movieSchema },
-    { data: northWindSchema },
-    { data: twitterSchema },
-  ])('should load my test json $data', ({ data }) => {
-    const dispatch = store.dispatch;
-
-    const parsed = parseSchemaFromBackend(data as SchemaFromBackend);
-    dispatch(setSchema(parsed.export()));
-
-    const state = store.getState();
-    const schema = state.schema.graphologySerialized;
-    expect(schema);
-    const graphReloaded = MultiGraph.from(schema);
-
-    expect(graphReloaded).toStrictEqual(parsed);
-  });
-
-  test.each([
-    { data: simpleSchema },
-    { data: movieSchema },
-    { data: northWindSchema },
-    { data: twitterSchema },
-  ])('should layout schema', ({ data }) => {
-    const parsed = parseSchemaFromBackend(data as SchemaFromBackend);
-    expect(parsed).toBeDefined();
-
-    const layout = store.getState().schema.schemaLayout;
-    expect(layout);
-
-    // const carFactory = new CarFactory();
-    const layouter = new LayoutFactory();
-
-    const layoutAlgorithm = layouter.createLayout('Graphology_noverlap');
-    layoutAlgorithm?.layout(parsed);
-
-    // const carFactory = new CarFactory();
-
-    // const carModels: AllCarModels[] = ['BMW_coupe', 'Audi_q4', 'Audi_etron', 'BMW_i4'];
-
-    // const cars = carModels.map(model => carFactory.createCar(model)?.drive());
-
-    // const audi = carFactory.createCar('Audi_etron');
-    // const bmw = carFactory.createCar('BMW_coupe');
-
-    // audi?.specialAudiFunction();
-  });
 });
diff --git a/libs/schema/schema-usecases/src/lib/schema-usecases.ts b/libs/schema/schema-usecases/src/lib/schema-usecases.ts
index 04dcbd855..ea3fdc0fa 100644
--- a/libs/schema/schema-usecases/src/lib/schema-usecases.ts
+++ b/libs/schema/schema-usecases/src/lib/schema-usecases.ts
@@ -1,11 +1,8 @@
 import Graph, { MultiGraph } from 'graphology';
 // import cytoscape from 'cytoscape'; // eslint-disable-line
-import {
-  setSchema,
-  store,
-  SchemaFromBackend,
-} from '@graphpolaris/shared/data-access/store';
+import { setSchema, store } from '@graphpolaris/shared/data-access/store';
 import { Elements, Node, Edge } from 'react-flow-renderer';
+import { SchemaFromBackend } from '@graphpolaris/shared/data-access/store';
 import { Attributes } from 'graphology-types';
 
 type CytoNode = {
diff --git a/libs/shared/data-access/store/src/lib/hooks.ts b/libs/shared/data-access/store/src/lib/hooks.ts
index 0d4265931..df0faef46 100644
--- a/libs/shared/data-access/store/src/lib/hooks.ts
+++ b/libs/shared/data-access/store/src/lib/hooks.ts
@@ -1,6 +1,6 @@
 import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';
 import { selectGraphQueryResult } from './graphQueryResultSlice';
-import { selectSchema, selectSchemaLayout } from './schemaSlice';
+import { selectSchema } from './schemaSlice';
 import type { RootState, AppDispatch } from './store';
 
 // Use throughout your app instead of plain `useDispatch` and `useSelector`
@@ -10,13 +10,5 @@ export const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;
 // Gives the graphQueryResult from the store
 export const useGraphQueryResult = () => useAppSelector(selectGraphQueryResult);
 
-/**
- * 
- Gives the schema form the store (as a graphology object)
- *  */
+// Gives the schema form the store (as a graphology object)
 export const useSchema = () => useAppSelector(selectSchema);
-
-/**
- *  Gives the schema form the store (as a enumeration of existing layout algorithms)
- *  */
-export const useSchemaLayout = () => useAppSelector(selectSchemaLayout);
diff --git a/libs/shared/data-access/store/src/lib/schemaSlice.spec.ts b/libs/shared/data-access/store/src/lib/schemaSlice.spec.ts
index b0da5d51f..3a6b17a52 100644
--- a/libs/shared/data-access/store/src/lib/schemaSlice.spec.ts
+++ b/libs/shared/data-access/store/src/lib/schemaSlice.spec.ts
@@ -5,13 +5,6 @@ import reducer, { selectSchema, setSchema, initialState } from './schemaSlice';
 // import { deleteBook, updateBook, addNewBook } from '../redux/bookSlice';
 import { store } from './store';
 
-import {
-  movieSchema,
-  northWindSchema,
-  simpleSchema,
-  twitterSchema,
-} from '@graphpolaris/shared/mock-data';
-
 describe('SchemaSlice Tests', () => {
   it('should make a graphology graph', () => {
     const graph = new MultiGraph({ allowSelfLoops: true });
@@ -38,7 +31,7 @@ describe('SchemaSlice Tests', () => {
     expect(initialState);
   });
 
-  it('state should return the initial state', () => {
+  it('should return the initial state', () => {
     let state = store.getState();
 
     const schema = state.schema;
@@ -50,19 +43,52 @@ describe('SchemaSlice Tests', () => {
     // console.log(initialState);
     expect(graph);
   });
-});
 
-test.each([
-  { data: simpleSchema },
-  { data: movieSchema },
-  { data: northWindSchema },
-  { data: twitterSchema },
-])('store and retrieve', ({ data }) => {
+  //   it('should handle a todo being added to an empty list', () => {
+  //     let state = store.getState().schema;
+  //     let schema = useSchema();
 
-  let state = store.getState();
+  //     // const unchangedBook = state.bookList.find((book) => book.id === '1');
+  //     // expect(unchangedBook?.title).toBe('1984');
+  //     // expect(unchangedBook?.author).toBe('George Orwell');
 
-  const schema = state.schema;
-  expect(schema);
+  //     // store.dispatch(updateBook({ id: '1', title: '1985', author: 'George Bush' }));
+  //     // state = store.getState().book;
+  //     // let changeBook = state.bookList.find((book) => book.id === '1');
+  //     // expect(changeBook?.title).toBe('1985');
+  //     // expect(changeBook?.author).toBe('George Bush');
 
-  expect(data).toBeDefined();
+  //     // store.dispatch(
+  //     //     updateBook({ id: '1', title: '1984', author: 'George Orwell' })
+  //     // );
+  //     // state = store.getState().book;
+  //     // const backToUnchangedBook = state.bookList.find((book) => book.id === '1');
+
+  //     // expect(backToUnchangedBook).toEqual(unchangedBook);
+  //     // ]);
+  //   });
 });
+
+// test('Deletes a book from list with id', () => {
+//   let state = store.getState().book;
+//   const initialBookCount = state.bookList.length;
+
+//   store.dispatch(deleteBook({ id: '1' }));
+//   state = store.getState().book;
+
+//   expect(state.bookList.length).toBeLessThan(initialBookCount); // Checking if new length smaller than inital length, which is 3
+// });
+
+// test('Adds a new book', () => {
+//   let state = store.getState().book;
+//   const initialBookCount = state.bookList.length;
+
+//   store.dispatch(
+//     addNewBook({ id: '4', author: 'Tester', title: 'Testers manual' })
+//   );
+//   state = store.getState().book;
+//   const newlyAddedBook = state.bookList.find((book) => book.id === '4');
+//   expect(newlyAddedBook?.author).toBe('Tester');
+//   expect(newlyAddedBook?.title).toBe('Testers manual');
+//   expect(state.bookList.length).toBeGreaterThan(initialBookCount);
+// });
diff --git a/libs/shared/data-access/store/src/lib/schemaSlice.ts b/libs/shared/data-access/store/src/lib/schemaSlice.ts
index 686cec2ee..eb8fdb562 100644
--- a/libs/shared/data-access/store/src/lib/schemaSlice.ts
+++ b/libs/shared/data-access/store/src/lib/schemaSlice.ts
@@ -1,9 +1,6 @@
 import { createSlice, PayloadAction } from '@reduxjs/toolkit';
 import type { RootState } from './store';
-import { MultiGraph } from 'graphology';
-import { SerializedGraph } from 'graphology-types';
-import { AllLayoutAlgorithms } from '@graphpolaris/shared/graph-layout';
-import { Graphology } from 'libs/shared/graph-layout/src/factory/graphology-layouts';
+import Graph, { MultiGraph } from 'graphology';
 
 /*************** schema format from the backend *************** */
 // TODO: should probably not live here
@@ -38,7 +35,6 @@ export type Edge = {
 // Define the initial state using that type
 export const initialState = {
   graphologySerialized: new MultiGraph().export(),
-  schemaLayout: 'Graphology_noverlap',
 };
 
 export const schemaSlice = createSlice({
@@ -46,10 +42,12 @@ export const schemaSlice = createSlice({
   // `createSlice` will infer the state type from the `initialState` argument
   initialState,
   reducers: {
-    setSchema: (state, action: PayloadAction<SerializedGraph>) => {
-      // console.log('setSchema in schemaslice', action);
-      state.graphologySerialized = action.payload;
+    setSchema: (state, action: PayloadAction<Graph>) => {
+      console.log('setSchema', action);
+
+      state.graphologySerialized = action.payload.export();
     },
+
     readInSchemaFromBackend: (
       state,
       action: PayloadAction<SchemaFromBackend>
@@ -91,26 +89,13 @@ export const schemaSlice = createSlice({
 
       state.graphologySerialized = schema.export();
     },
-    setGraphLayout: (state, action: PayloadAction<AllLayoutAlgorithms>) => {
-      state.schemaLayout = action.payload;
-    },
   },
 });
 
 export const { readInSchemaFromBackend, setSchema } = schemaSlice.actions;
 
-/**
- * Select the schema and convert it to a graphology object
- * */
+// Select the schema and convert it to a graphology object
 export const selectSchema = (state: RootState) =>
-  MultiGraph.from(state.schema.graphologySerialized).copy();
-
-/**
- * selects the SchemaLayout enum
- * @param {GraphLayout} state
- * @returns {GraphLayout} enum of type GraphLayout
- */
-export const selectSchemaLayout = (state: RootState) =>
-  state.schema.schemaLayout;
+  Graph.from(state.schema.graphologySerialized);
 
 export default schemaSlice.reducer;
diff --git a/libs/shared/graph-layout/.babelrc b/libs/shared/graph-layout/.babelrc
deleted file mode 100644
index 0cae4a9a8..000000000
--- a/libs/shared/graph-layout/.babelrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "presets": ["@nrwl/web/babel"]
-}
diff --git a/libs/shared/graph-layout/.eslintrc.json b/libs/shared/graph-layout/.eslintrc.json
deleted file mode 100644
index 3456be9b9..000000000
--- a/libs/shared/graph-layout/.eslintrc.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "extends": ["../../../.eslintrc.json"],
-  "ignorePatterns": ["!**/*"],
-  "overrides": [
-    {
-      "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
-      "rules": {}
-    },
-    {
-      "files": ["*.ts", "*.tsx"],
-      "rules": {}
-    },
-    {
-      "files": ["*.js", "*.jsx"],
-      "rules": {}
-    }
-  ]
-}
diff --git a/libs/shared/graph-layout/README.md b/libs/shared/graph-layout/README.md
deleted file mode 100644
index b7f37ef4a..000000000
--- a/libs/shared/graph-layout/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# shared-graph-layout 
-
-This library was generated with [Nx](https://nx.dev).
-
-## Running unit tests
-
-Run `nx test shared-graph-layout` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/libs/shared/graph-layout/jest.config.js b/libs/shared/graph-layout/jest.config.js
deleted file mode 100644
index 489b3c0e0..000000000
--- a/libs/shared/graph-layout/jest.config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-module.exports = {
-  displayName: 'shared-graph-layout',
-  preset: '../../../jest.preset.js',
-  globals: {
-    'ts-jest': {
-      tsconfig: '<rootDir>/tsconfig.spec.json',
-    },
-  },
-  transform: {
-    '^.+\\.[tj]s$': 'ts-jest',
-  },
-  moduleFileExtensions: ['ts', 'js', 'html'],
-  coverageDirectory: '../../../coverage/libs/shared/graph-layout',
-  testEnvironment: 'jsdom',
-};
diff --git a/libs/shared/graph-layout/project.json b/libs/shared/graph-layout/project.json
deleted file mode 100644
index b9148c494..000000000
--- a/libs/shared/graph-layout/project.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "root": "libs/shared/graph-layout",
-  "sourceRoot": "libs/shared/graph-layout/src",
-  "projectType": "library",
-  "targets": {
-    "lint": {
-      "executor": "@nrwl/linter:eslint",
-      "outputs": ["{options.outputFile}"],
-      "options": {
-        "lintFilePatterns": ["libs/shared/graph-layout/**/*.ts"]
-      }
-    },
-    "test": {
-      "executor": "@nrwl/jest:jest",
-      "outputs": ["coverage/libs/shared/graph-layout"],
-      "options": {
-        "jestConfig": "libs/shared/graph-layout/jest.config.js",
-        "passWithNoTests": true
-      }
-    },
-    "version": {
-      "executor": "@jscutlery/semver:version",
-      "options": {
-        "commitMessageFormat": "chore(${projectName}): release version ${version}"
-      }
-    }
-  },
-  "tags": []
-}
diff --git a/libs/shared/graph-layout/src/factory/Layout.ts b/libs/shared/graph-layout/src/factory/Layout.ts
deleted file mode 100644
index 06f4da35e..000000000
--- a/libs/shared/graph-layout/src/factory/Layout.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import Graph from 'graphology';
-import { Providers, LayoutAlgorithm } from './layout-creator-usecase';
-
-/**
- * This is our Product
- */
-
-export abstract class Layout<provider extends Providers> {
-  constructor(
-    public provider: provider,
-    public algorithm: LayoutAlgorithm<provider>
-  ) {
-    console.log(
-      `Created the following Layout: ${provider} - ${this.algorithm}`
-    );
-  }
-
-  public layout(graph: Graph) {
-    console.log(`${this.provider} [${this.algorithm}] layouting now`);
-  }
-}
diff --git a/libs/shared/graph-layout/src/factory/cytoscape-layouts.ts b/libs/shared/graph-layout/src/factory/cytoscape-layouts.ts
deleted file mode 100644
index ce7800a50..000000000
--- a/libs/shared/graph-layout/src/factory/cytoscape-layouts.ts
+++ /dev/null
@@ -1,54 +0,0 @@
-import { Layout } from './Layout';
-import { ILayoutFactory, LayoutAlgorithm } from './layout-creator-usecase';
-
-export type CytoscapeProvider = 'Cytoscape';
-
-export type CytoscapeLayoutAlgorithms =
-  | `${CytoscapeProvider}_coupe`
-  | `${CytoscapeProvider}_i4`;
-
-/**
- * This is a ConcreteCreator
- */
-export class CytoscapeFactory
-  implements ILayoutFactory<CytoscapeLayoutAlgorithms>
-{
-  createLayout(LayoutAlgorithm: CytoscapeLayoutAlgorithms): Cytoscape | null {
-    switch (LayoutAlgorithm) {
-      case 'Cytoscape_coupe':
-        return new CytoscapeCoupe();
-      case 'Cytoscape_i4':
-        return new CytoscapeI4();
-      default:
-        return null;
-    }
-  }
-}
-
-export abstract class Cytoscape extends Layout<CytoscapeProvider> {
-  constructor(public override algorithm: LayoutAlgorithm<CytoscapeProvider>) {
-    super('Cytoscape', algorithm);
-  }
-
-  public specialCytoscapeFunction() {
-    console.log('Only Cytoscape Layouts can do this.');
-  }
-}
-
-/**
- * This is a ConcreteProduct
- */
-class CytoscapeI4 extends Cytoscape {
-  constructor() {
-    super('Cytoscape_i4');
-  }
-}
-
-/**
- * This is a ConcreteProduct
- */
-class CytoscapeCoupe extends Cytoscape {
-  constructor() {
-    super('Cytoscape_coupe');
-  }
-}
diff --git a/libs/shared/graph-layout/src/factory/graphology-layouts.ts b/libs/shared/graph-layout/src/factory/graphology-layouts.ts
deleted file mode 100644
index ce9976091..000000000
--- a/libs/shared/graph-layout/src/factory/graphology-layouts.ts
+++ /dev/null
@@ -1,169 +0,0 @@
-import Graph from 'graphology';
-import { circular, random } from 'graphology-layout';
-import forceAtlas2, {
-  ForceAtlas2Settings,
-} from 'graphology-layout-forceatlas2';
-import noverlap from 'graphology-layout-noverlap';
-import { RandomLayoutOptions } from 'graphology-layout/random';
-import { NoverlapSettings } from 'graphology-library/layout-noverlap';
-import { Attributes } from 'graphology-types';
-import { Layout } from './Layout';
-import { ILayoutFactory, LayoutAlgorithm } from './layout-creator-usecase';
-
-export type GraphologyProvider = 'Graphology';
-
-export type GraphologyLayoutAlgorithms =
-  | `${GraphologyProvider}_circular`
-  | `${GraphologyProvider}_random`
-  | `${GraphologyProvider}_noverlap`
-  | `${GraphologyProvider}_forceAtlas2`;
-
-/**
- * This is a ConcreteCreator
- */
-export class GraphologyFactory
-  implements ILayoutFactory<GraphologyLayoutAlgorithms>
-{
-  createLayout(layoutAlgorithm: GraphologyLayoutAlgorithms): Graphology | null {
-    switch (layoutAlgorithm) {
-      case 'Graphology_random':
-        return new GraphologyRandom();
-      case 'Graphology_circular':
-        return new GraphologyCircular();
-      case 'Graphology_noverlap':
-        return new GraphologyNoverlap();
-      case 'Graphology_forceAtlas2':
-        return new GraphologyForceAtlas2();
-      default:
-        return null;
-    }
-  }
-}
-
-export abstract class Graphology extends Layout<GraphologyProvider> {
-  height: number = 100;
-  width: number = 100;
-  constructor(public override algorithm: LayoutAlgorithm<GraphologyProvider>) {
-    super('Graphology', algorithm);
-    this.setDimensions(100, 200);
-  }
-
-  public specialGraphologyFunction() {
-    // graph.forEachNode((node, attr) => {
-    //   graph.setNodeAttribute(node, 'x', 0);
-    //   graph.setNodeAttribute(node, 'y', 0);
-    // });
-  }
-
-  public setDimensions(width = 100, height = 100) {
-    this.width = width;
-    this.height = height;
-  }
-}
-
-/**
- * This is a ConcreteProduct
- */
-export class GraphologyCircular extends Graphology {
-  constructor() {
-    super('Graphology_circular');
-  }
-
-  public override layout(
-    graph: Graph<Attributes, Attributes, Attributes>
-  ): void {
-    // To directly assign the positions to the nodes:
-    circular.assign(graph, {
-      scale: 100,
-    });
-  }
-}
-
-const DEFAULT_RANDOM_SETTINGS: RandomLayoutOptions = {
-  scale: 250,
-};
-/**
- * This is a ConcreteProduct
- */
-export class GraphologyRandom extends Graphology {
-  constructor() {
-    super('Graphology_random');
-  }
-
-  public override layout(
-    graph: Graph<Attributes, Attributes, Attributes>
-  ): void {
-    // const positions = random(graph);
-
-    // To directly assign the positions to the nodes:
-    random.assign(graph, DEFAULT_RANDOM_SETTINGS);
-  }
-}
-
-const DEFAULT_NOVERLAP_SETTINGS: NoverlapSettings = {
-  margin: 40,
-  ratio: 40,
-  // gridSize: 50,
-
-  // gridSize ?number 20: number of grid cells horizontally and vertically subdivising the graph’s space. This is used as an optimization scheme. Set it to 1 and you will have O(n²) time complexity, which can sometimes perform better with very few nodes.
-  // margin ?number 5: margin to keep between nodes.
-  // expansion ?number 1.1: percentage of current space that nodes could attempt to move outside of.
-  // ratio ?number 1.0: ratio scaling node sizes.
-  // speed ?number 3: dampening factor that will slow down node movements to ease the overall process.
-};
-
-/**
- * This is a ConcreteProduct
- */
-export class GraphologyNoverlap extends Graphology {
-  constructor() {
-    super('Graphology_noverlap');
-  }
-
-  public override layout(
-    graph: Graph<Attributes, Attributes, Attributes>
-  ): void {
-    // // // To directly assign the positions to the nodes:
-    noverlap.assign(graph, {
-      maxIterations: 5000,
-      settings: DEFAULT_NOVERLAP_SETTINGS,
-    });
-  }
-}
-
-const DEFAULT_FORCEATLAS2_SETTINGS: ForceAtlas2Settings = {
-  gravity: 10,
-  adjustSizes: true,
-  linLogMode: true,
-
-  // adjustSizes ?boolean false: should the node’s sizes be taken into account?
-  // barnesHutOptimize ?boolean false: whether to use the Barnes-Hut approximation to compute repulsion in O(n*log(n)) rather than default O(n^2), n being the number of nodes.
-  // barnesHutTheta ?number 0.5: Barnes-Hut approximation theta parameter.
-  // edgeWeightInfluence ?number 1: influence of the edge’s weights on the layout. To consider edge weight, don’t forget to pass weighted as true when applying the synchronous layout or when instantiating the worker.
-  // gravity ?number 1: strength of the layout’s gravity.
-  // linLogMode ?boolean false: whether to use Noack’s LinLog model.
-  // outboundAttractionDistribution ?boolean false
-  // scalingRatio ?number 1
-  // slowDown ?number 1
-  // strongGravityMode ?boolean false
-};
-
-/**
- * This is a ConcreteProduct
- */
-export class GraphologyForceAtlas2 extends Graphology {
-  constructor() {
-    super('Graphology_forceAtlas2');
-  }
-
-  public override layout(
-    graph: Graph<Attributes, Attributes, Attributes>
-  ): void {
-    // To directly assign the positions to the nodes:
-
-    forceAtlas2.assign(graph, {
-      iterations: 500000,
-      settings: DEFAULT_FORCEATLAS2_SETTINGS,
-    });
-  }
-}
diff --git a/libs/shared/graph-layout/src/factory/layout-creator-usecase.spec.ts b/libs/shared/graph-layout/src/factory/layout-creator-usecase.spec.ts
deleted file mode 100644
index e9a0771d5..000000000
--- a/libs/shared/graph-layout/src/factory/layout-creator-usecase.spec.ts
+++ /dev/null
@@ -1,142 +0,0 @@
-import {
-  AllLayoutAlgorithms,
-  LayoutFactory,
-} from '@graphpolaris/shared/graph-layout';
-
-import {
-  movieSchema,
-  northWindSchema,
-  simpleSchema,
-  twitterSchema,
-} from '@graphpolaris/shared/mock-data';
-import Graph, { MultiGraph } from 'graphology';
-
-import ladder from 'graphology-generators/classic/ladder';
-
-/**
- * @jest-environment jsdom
- */
-describe('LayoutFactory', () => {
-  /**
-   * @jest-environment jsdom
-   */
-  it('should work with noverlap from graphology ', () => {
-    const graph = new MultiGraph();
-
-    // Adding some nodes
-    graph.addNode('John', { x: 0, y: 0 });
-    graph.addNode('Martha', { x: 0, y: 0 });
-
-    // Adding an edge
-    graph.addEdge('John', 'Martha');
-
-    const layoutFactory = new LayoutFactory();
-
-    const layout = layoutFactory.createLayout('Graphology_noverlap');
-
-    layout?.layout(graph);
-
-    graph.forEachNode((node, attr) => {
-      console.log(node, attr);
-    });
-  });
-
-  test('should work with noverlap from graphology on generated graph', () => {
-    // Creating a ladder graph
-    const graph = ladder(Graph, 10);
-
-    graph.forEachNode((node, attr) => {
-      graph.setNodeAttribute(node, 'x', 0);
-      graph.setNodeAttribute(node, 'y', 0);
-    });
-
-    const layoutFactory = new LayoutFactory();
-
-    const layout = layoutFactory.createLayout('Graphology_noverlap');
-    layout?.layout(graph);
-
-    graph.forEachNode((node, attr) => {
-      console.log(node, attr);
-    });
-  });
-
-  test('should work with random from graphology on generated graph', () => {
-    // Creating a ladder graph
-    const graph = ladder(Graph, 10);
-
-    graph.forEachNode((node, attr) => {
-      graph.setNodeAttribute(node, 'x', 0);
-      graph.setNodeAttribute(node, 'y', 0);
-    });
-
-    const layoutFactory = new LayoutFactory();
-
-    const layout = layoutFactory.createLayout('Graphology_random');
-    layout?.setDimensions(100, 100);
-    layout?.layout(graph);
-
-    graph.forEachNode((node, attr) => {
-      console.log(node, attr);
-    });
-  });
-
-  test('should work with circular from graphology on generated graph', () => {
-    // Creating a ladder graph
-    const graph = ladder(Graph, 100);
-
-    graph.forEachNode((node, attr) => {
-      graph.setNodeAttribute(node, 'x', 0);
-      graph.setNodeAttribute(node, 'y', 0);
-    });
-
-    const layoutFactory = new LayoutFactory();
-
-    const layout = layoutFactory.createLayout('Graphology_circular');
-    layout?.setDimensions(100, 100);
-    layout?.layout(graph);
-
-    graph.forEachNode((node, attr) => {
-      console.log(node, attr);
-    });
-  });
-
-  test('should work with circular from graphology on generated graph', () => {
-    // Creating a ladder graph
-    const graph = ladder(Graph, 100);
-
-    graph.forEachNode((node, attr) => {
-      graph.setNodeAttribute(node, 'x', 0);
-      graph.setNodeAttribute(node, 'y', 0);
-    });
-
-    const layoutFactory = new LayoutFactory();
-    const layout = layoutFactory.createLayout('Graphology_forceAtlas2');
-    layout?.setDimensions(100, 100);
-    layout?.layout(graph);
-
-    graph.forEachNode((node, attr) => {
-      console.log(node, attr);
-    });
-  });
-
-  test('should add x,y for graphology layouts if not existing', () => {
-    // console.log(Object.keys(AllLayoutAlgorithms))
-
-    const graph = ladder(Graph, 100);
-
-    graph.forEachNode((node, attr) => {
-      expect(graph.getNodeAttribute(node, 'x')).toBeUndefined();
-      expect(graph.getNodeAttribute(node, 'y')).toBeUndefined();
-    });
-
-    const layoutFactory = new LayoutFactory();
-    const layout = layoutFactory.createLayout('Graphology_forceAtlas2');
-    layout?.setDimensions(100, 100);
-    layout?.layout(graph);
-
-    graph.forEachNode((node, attr) => {
-      expect(graph.getNodeAttribute(node, 'x')).toBeDefined();
-      expect(graph.getNodeAttribute(node, 'y')).toBeDefined();
-    });
-  });
-});
diff --git a/libs/shared/graph-layout/src/factory/layout-creator-usecase.ts b/libs/shared/graph-layout/src/factory/layout-creator-usecase.ts
deleted file mode 100644
index 53a6411db..000000000
--- a/libs/shared/graph-layout/src/factory/layout-creator-usecase.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import {
-  Cytoscape,
-  CytoscapeFactory,
-  CytoscapeLayoutAlgorithms,
-  CytoscapeProvider,
-} from './cytoscape-layouts';
-import {
-  Graphology,
-  GraphologyFactory,
-  GraphologyLayoutAlgorithms,
-  GraphologyProvider,
-} from './graphology-layouts';
-import { Layout } from './Layout';
-
-export type Providers = GraphologyProvider | CytoscapeProvider;
-export type LayoutAlgorithm<Provider extends Providers> =
-  `${Provider}_${string}`;
-
-export type AllLayoutAlgorithms =
-  | GraphologyLayoutAlgorithms
-  | CytoscapeLayoutAlgorithms;
-
-export type AlgorithmToLayoutProvider<Algorithm extends AllLayoutAlgorithms> =
-  Algorithm extends GraphologyLayoutAlgorithms
-    ? Graphology
-    : Algorithm extends CytoscapeLayoutAlgorithms
-    ? Cytoscape
-    : Cytoscape | Graphology;
-
-export interface ILayoutFactory<Algorithm extends AllLayoutAlgorithms> {
-  createLayout: (
-    Algorithm: Algorithm
-  ) => AlgorithmToLayoutProvider<Algorithm> | null;
-}
-
-/**
- * This is our Creator
- */
-export class LayoutFactory implements ILayoutFactory<AllLayoutAlgorithms> {
-  private graphologyFactory = new GraphologyFactory();
-  private cytoscapeFactory = new CytoscapeFactory();
-
-  private isSpecificAlgorithm<Algorithm extends AllLayoutAlgorithms>(
-    LayoutAlgorithm: AllLayoutAlgorithms,
-    startsWith: string
-  ): LayoutAlgorithm is Algorithm {
-    return LayoutAlgorithm.startsWith(startsWith);
-  }
-
-  createLayout<Algorithm extends AllLayoutAlgorithms>(
-    layoutAlgorithm: Algorithm
-  ): AlgorithmToLayoutProvider<Algorithm> | null {
-    if (
-      this.isSpecificAlgorithm<GraphologyLayoutAlgorithms>(
-        layoutAlgorithm,
-        'Graphology'
-      )
-    ) {
-      return this.graphologyFactory.createLayout(
-        layoutAlgorithm
-      ) as AlgorithmToLayoutProvider<Algorithm>;
-    }
-
-    if (
-      this.isSpecificAlgorithm<CytoscapeLayoutAlgorithms>(
-        layoutAlgorithm,
-        'Cytoscape'
-      )
-    ) {
-      return this.cytoscapeFactory.createLayout(
-        layoutAlgorithm
-      ) as AlgorithmToLayoutProvider<Algorithm>;
-    }
-
-    return null;
-  }
-}
diff --git a/libs/shared/graph-layout/src/factory/test.ts b/libs/shared/graph-layout/src/factory/test.ts
deleted file mode 100644
index e69de29bb..000000000
diff --git a/libs/shared/graph-layout/src/index.ts b/libs/shared/graph-layout/src/index.ts
deleted file mode 100644
index 7bdb94a4e..000000000
--- a/libs/shared/graph-layout/src/index.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-// export * from './factory/layout-creator-usecase';
-
-export {
-  AllLayoutAlgorithms,
-  LayoutFactory,
-} from './factory/layout-creator-usecase';
diff --git a/libs/shared/graph-layout/tsconfig.json b/libs/shared/graph-layout/tsconfig.json
deleted file mode 100644
index 648c1247a..000000000
--- a/libs/shared/graph-layout/tsconfig.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "extends": "../../../tsconfig.base.json",
-  "files": [],
-  "include": [],
-  "references": [
-    {
-      "path": "./tsconfig.lib.json"
-    },
-    {
-      "path": "./tsconfig.spec.json"
-    }
-  ],
-  "compilerOptions": {
-    "forceConsistentCasingInFileNames": true,
-    "strict": true,
-    "noImplicitReturns": true,
-    "noFallthroughCasesInSwitch": true,
-    "lib": ["webworker", "scripthost"],
-    "esModuleInterop": true,
-    "composite": true
-  }
-}
diff --git a/libs/shared/graph-layout/tsconfig.lib.json b/libs/shared/graph-layout/tsconfig.lib.json
deleted file mode 100644
index 6eb3eb9ea..000000000
--- a/libs/shared/graph-layout/tsconfig.lib.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "extends": "./tsconfig.json",
-  "compilerOptions": {
-    "outDir": "../../../dist/out-tsc",
-    "declaration": true,
-    "types": [],
-    "composite": true
-  },
-  "include": ["**/*.ts"],
-  "exclude": ["**/*.spec.ts"]
-}
diff --git a/libs/shared/graph-layout/tsconfig.spec.json b/libs/shared/graph-layout/tsconfig.spec.json
deleted file mode 100644
index d8716fecf..000000000
--- a/libs/shared/graph-layout/tsconfig.spec.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-  "extends": "./tsconfig.json",
-  "compilerOptions": {
-    "outDir": "../../../dist/out-tsc",
-    "module": "commonjs",
-    "types": ["jest", "node"]
-  },
-  "include": [
-    "**/*.test.ts",
-    "**/*.spec.ts",
-    "**/*.test.tsx",
-    "**/*.spec.tsx",
-    "**/*.test.js",
-    "**/*.spec.js",
-    "**/*.test.jsx",
-    "**/*.spec.jsx",
-    "**/*.d.ts"
-  ]
-}
diff --git a/package.json b/package.json
index c2b43c245..a400f2140 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,6 @@
     "core-js": "^3.6.5",
     "cytoscape": "^3.21.0",
     "graphology": "^0.24.0",
-    "graphology-library": "^0.7.1",
     "graphology-types": "^0.24.0",
     "react": "17.0.2",
     "react-cookie": "^4.1.1",
@@ -36,8 +35,6 @@
   },
   "devDependencies": {
     "@babel/core": "7.12.13",
-    "@babel/plugin-syntax-flow": "^7.16.7",
-    "@babel/preset-flow": "^7.16.7",
     "@babel/preset-typescript": "7.12.13",
     "@commitlint/cli": "^16.0.1",
     "@commitlint/config-angular": "^16.0.0",
diff --git a/tsconfig.base.json b/tsconfig.base.json
index f20c2ad21..60c712ba8 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -28,10 +28,6 @@
         "libs/shared/data-access/theme/src/index.ts"
       ],
       "@graphpolaris/shared/mock-data": ["libs/shared/mock-data/src/index.ts"],
-      "@graphpolaris/shared/graph-layout": [
-        "libs/shared/graph-layout/src/index.ts"
-      ],
-
       "@mui/styled-engine": ["./node_modules/@mui/styled-engine-sc"]
     }
   },
diff --git a/yarn.lock b/yarn.lock
index 898701c93..3d6d637e5 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1133,7 +1133,7 @@
     core-js-compat "^3.20.2"
     semver "^6.3.0"
 
-"@babel/preset-flow@^7.12.1", "@babel/preset-flow@^7.16.7":
+"@babel/preset-flow@^7.12.1":
   version "7.16.7"
   resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd"
   integrity sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==
@@ -4929,11 +4929,6 @@
     "@webassemblyjs/wast-parser" "1.9.0"
     "@xtuc/long" "4.2.2"
 
-"@xmldom/xmldom@^0.7.5":
-  version "0.7.5"
-  resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
-  integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==
-
 "@xtuc/ieee754@^1.2.0":
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
@@ -4954,11 +4949,6 @@
     tslib "^2.3.1"
     upath2 "^3.1.12"
 
-"@yomguithereal/helpers@^1.1.1":
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/@yomguithereal/helpers/-/helpers-1.1.1.tgz#185dfb0f88ca2beec53d0adf6eed15c33b1c549d"
-  integrity sha512-UYvAq/XCA7xoh1juWDYsq3W0WywOB+pz8cgVnE1b45ZfdMhBvHDrgmSFG3jXeZSr2tMTYLGHFHON+ekG05Jebg==
-
 JSONStream@^1.0.4:
   version "1.3.5"
   resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
@@ -9577,185 +9567,11 @@ 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.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
   integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
 
-graphology-assertions@~2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/graphology-assertions/-/graphology-assertions-2.2.1.tgz#2fdc64a26434a2aac2de3d6d4ef889a0005ff379"
-  integrity sha512-X6yvm8eYDepIyywDM/K0ud/NDD6I5aZj5+D459z4wZFEtb8B33A4NNPsMpjMNwjNdEo1q4VL1Gqp/usoItEP4g==
-  dependencies:
-    fast-deep-equal "^3.1.3"
-    graphology-utils "^2.1.2"
-
-graphology-communities-louvain@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/graphology-communities-louvain/-/graphology-communities-louvain-2.0.0.tgz#ef93a89e0122078ce77676f5351731ee7eb58df9"
-  integrity sha512-zHqfPBh43XHs5Pp/u2XwdXrPmMLGBEdlgXqciowpa/dsD/VOC7pnD9HquJ3dGuLa2V2cdUAesOehFDb2M7soeA==
-  dependencies:
-    graphology-indices "^0.16.4"
-    graphology-utils "^2.4.4"
-    mnemonist "^0.39.0"
-    pandemonium "^2.3.0"
-
-graphology-components@~1.5.2:
-  version "1.5.2"
-  resolved "https://registry.yarnpkg.com/graphology-components/-/graphology-components-1.5.2.tgz#a2bdf0f3e09eee1e3d5913a95442cadcd74b912f"
-  integrity sha512-EW26mjHWX9sggUhZcW1OHsOnEV7lj0nx50mcEHFRNucC3MBoe4yDYtBY8HQqUcGH4FdEq0ukNzzweJGLiy58Tg==
-  dependencies:
-    graphology-indices "^0.16.2"
-    graphology-utils "^2.1.2"
-
-graphology-generators@~0.11.2:
-  version "0.11.2"
-  resolved "https://registry.yarnpkg.com/graphology-generators/-/graphology-generators-0.11.2.tgz#eff2c97e4f5bf401e86ab045470dded95f2ebe24"
-  integrity sha512-hx+F0OZRkVdoQ0B1tWrpxoakmHZNex0c6RAoR0PrqJ+6fz/gz6CQ88Qlw78C6yD9nlZVRgepIoDYhRTFV+bEHg==
-  dependencies:
-    graphology-metrics "^2.0.0"
-    graphology-utils "^2.3.0"
-
-graphology-gexf@~0.10.1:
-  version "0.10.1"
-  resolved "https://registry.yarnpkg.com/graphology-gexf/-/graphology-gexf-0.10.1.tgz#55165379945bc5e1435ab8c12cb51052792c8d58"
-  integrity sha512-vNBn5eVOWRSiedwAFVBehuA0KxzOzorBMvRW2md01UZcaVVh0BRzB6uFEB6+QHmdRqtpewhCQ6RQUifQ8r7btg==
-  dependencies:
-    "@xmldom/xmldom" "^0.7.5"
-    graphology-operators "^1.5.0"
-    graphology-utils "^2.4.1"
-    xml-writer "^1.7.0"
-
-graphology-graphml@^0.5.0:
-  version "0.5.1"
-  resolved "https://registry.yarnpkg.com/graphology-graphml/-/graphology-graphml-0.5.1.tgz#d6573694b16e8daecb3fd33196daf21a92fafa51"
-  integrity sha512-h2bpxlMtSC5lxQuv53r2i4sGqapAmeGUsfjbPmIH1v+y2BiEq4kLbqZuE1JKTD5oXQJeSsHksXKhN8pMGXOnxQ==
-  dependencies:
-    "@xmldom/xmldom" "^0.7.5"
-    graphology-operators "^1.5.0"
-    graphology-utils "^2.4.1"
-    xml-writer "^1.7.0"
-
-graphology-indices@^0.16.2, graphology-indices@^0.16.3, graphology-indices@^0.16.4:
-  version "0.16.6"
-  resolved "https://registry.yarnpkg.com/graphology-indices/-/graphology-indices-0.16.6.tgz#0de112ef0367e44041490933e34ad2075cb24e80"
-  integrity sha512-tozTirLb7pd37wULJ5qeIZfZqKuVln/V+bWmUWJ7MmoTU8YkW5dehOkRz2by/O+5MdJ52imqL8LH4+GCd0yEVw==
-  dependencies:
-    graphology-utils "^2.4.2"
-    mnemonist "^0.39.0"
-
-graphology-layout-force@~0.2.3:
-  version "0.2.4"
-  resolved "https://registry.yarnpkg.com/graphology-layout-force/-/graphology-layout-force-0.2.4.tgz#a9b5f2aa5c7b56985503d302dbce4c73c76b9eb3"
-  integrity sha512-NYZz0YAnDkn5pkm30cvB0IScFoWGtbzJMrqaiH070dYlYJiag12Oc89dbVfaMaVR/w8DMIKxn/ix9Bqj+Umm9Q==
-  dependencies:
-    graphology-utils "^2.4.2"
-
-graphology-layout-forceatlas2@~0.8.1:
-  version "0.8.1"
-  resolved "https://registry.yarnpkg.com/graphology-layout-forceatlas2/-/graphology-layout-forceatlas2-0.8.1.tgz#bb6f34f5181616bb25ea7a8adec73c79aef2aa8d"
-  integrity sha512-lAm9T0uBxhECZTVyYDMMnPi3l7h5kG2+7yfxqoT9wpgF/omComGc6vR9wmQqClQjSXiM3OU4frO4j2Il5E72Xg==
-  dependencies:
-    graphology-utils "^2.1.0"
-
-graphology-layout-noverlap@^0.4.1:
-  version "0.4.2"
-  resolved "https://registry.yarnpkg.com/graphology-layout-noverlap/-/graphology-layout-noverlap-0.4.2.tgz#2ffa054ceeebaa31fcffe695d271fc55707cd29c"
-  integrity sha512-13WwZSx96zim6l1dfZONcqLh3oqyRcjIBsqz2c2iJ3ohgs3605IDWjldH41Gnhh462xGB1j6VGmuGhZ2FKISXA==
-  dependencies:
-    graphology-utils "^2.3.0"
-
-graphology-layout@~0.5.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/graphology-layout/-/graphology-layout-0.5.0.tgz#a0a54861cebae5f486c778dbdafc6294859f23b5"
-  integrity sha512-aIeXYPLeGMLvXIkO41TlhBv0ROFWUx1bqR2VQoJ7Mp2IW+TF+rxqMeRUrmyLHoe3HtKo8jhloB2KHp7g6fcDSg==
-  dependencies:
-    graphology-utils "^2.3.0"
-    pandemonium "^1.5.0"
-
-graphology-library@^0.7.1:
-  version "0.7.1"
-  resolved "https://registry.yarnpkg.com/graphology-library/-/graphology-library-0.7.1.tgz#9fdec0f6d00f5207895dc9b7e299e454bb3c52f8"
-  integrity sha512-pKqaMiuKNAaVwYQAL9I3EVADYOh1tcWe1NfxzmoSGWLYdHvalNGAI+c63Wd4DG021He2YUYR6yB5gtccqVUS3Q==
-  dependencies:
-    graphology-assertions "~2.2.1"
-    graphology-communities-louvain "~2.0.0"
-    graphology-components "~1.5.2"
-    graphology-generators "~0.11.2"
-    graphology-gexf "~0.10.1"
-    graphology-graphml "^0.5.0"
-    graphology-layout "~0.5.0"
-    graphology-layout-force "~0.2.3"
-    graphology-layout-forceatlas2 "~0.8.1"
-    graphology-layout-noverlap "^0.4.1"
-    graphology-metrics "~2.0.0"
-    graphology-operators "~1.5.0"
-    graphology-shortest-path "~2.0.0"
-    graphology-simple-path "^0.1.2"
-    graphology-traversal "^0.3.0"
-    graphology-utils "~2.5.0"
-
-graphology-metrics@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/graphology-metrics/-/graphology-metrics-2.1.0.tgz#7d00bae92d8970583afd020e6d40d8a16c378002"
-  integrity sha512-E+y4kgVGxhYl/+bPHEftJeWLS8LgVno4/Wvg+C7IoDIjY6OlIZghgMKDR8LKsxU6GC43mlx08FTZs229cvEkwQ==
-  dependencies:
-    graphology-shortest-path "^2.0.0"
-    graphology-utils "^2.4.4"
-    mnemonist "^0.39.0"
-
-graphology-metrics@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/graphology-metrics/-/graphology-metrics-2.0.0.tgz#af2bfcadd1d5842d14c9a6092175e22fbab7024f"
-  integrity sha512-vh2XaAaiB9Of92ac2imaztFjPHmMIotuIN/rNt/X+DqJhxpuyOp+Ir3fQPVJScvk11zMWOimTsMdLYt1gbXWeQ==
-  dependencies:
-    graphology-shortest-path "^2.0.0"
-    graphology-utils "^2.4.4"
-    mnemonist "^0.39.0"
-
-graphology-operators@^1.5.0, graphology-operators@~1.5.0:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/graphology-operators/-/graphology-operators-1.5.1.tgz#67f4447df21baa59b571ab7a4c688a2302f9ce20"
-  integrity sha512-VojhTwtKlGtbopHPzOmAsAgM8MJY1HScgAs3G8FobtI+xsSlnFSKQeuWIibXEg6/wwPHGYT2oxMJbgHcwAEr3Q==
-  dependencies:
-    graphology-utils "^2.0.0"
-
-graphology-shortest-path@^2.0.0, graphology-shortest-path@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/graphology-shortest-path/-/graphology-shortest-path-2.0.0.tgz#27a01b3a9980872bd44a197fc77114623dd2b302"
-  integrity sha512-6dJWgbr7w4YQKb7Y0w7vhZn2qAkqP+J0IhE9F3vz/HZcx7VSOqnNfTGtYr44BQ5ohdXj0l9iKjlWCb+3vqEINQ==
-  dependencies:
-    "@yomguithereal/helpers" "^1.1.1"
-    graphology-indices "^0.16.3"
-    graphology-utils "^2.4.3"
-    mnemonist "^0.39.0"
-
-graphology-simple-path@^0.1.2:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/graphology-simple-path/-/graphology-simple-path-0.1.2.tgz#b8d84852c94a069a8e906faa5274d33df0a53419"
-  integrity sha512-jOut2ihx5XMN97eUtmy4ZMp22btx3oa8GnvzQXHiBZOMyaC/gCpupnKVh0IvtzKd0RmmC5lT0zPBAqvU2O7Ejg==
-  dependencies:
-    graphology-utils "^1.8.0"
-    mnemonist "^0.39.0"
-
-graphology-traversal@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/graphology-traversal/-/graphology-traversal-0.3.0.tgz#1045af9e35a86932bc964caf110b45338769cfcb"
-  integrity sha512-/dexAoGbaRqmBMtv9IBXUuLZg7b5YBpWYXZYirwRaFX0DsQmsqMAJ+Jx0RQndQqLCOJI3LZyheemv3+tLlrjjQ==
-  dependencies:
-    graphology-indices "^0.16.4"
-    graphology-utils "^2.0.0"
-
 graphology-types@^0.24.0:
   version "0.24.0"
   resolved "https://registry.yarnpkg.com/graphology-types/-/graphology-types-0.24.0.tgz#81aaef55226edb692dd63a9ce5eaecc80694cd93"
   integrity sha512-3qSanRtucm6rwBjpwuAc18GQcl68NqIRE4OA3wFUzdB2HRVXYoCAUsUJVS898bW+byEgd+BTcwR26CbltNvSWQ==
 
-graphology-utils@^1.8.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/graphology-utils/-/graphology-utils-1.8.0.tgz#41315c468656e2a3e028a76468bbc2fbe42b0145"
-  integrity sha512-Pa7SW30OMm8fVtyH49b3GJ/uxlMHGfXly50wIhlcc7ZoX9ahZa7sPBz+obo4WZClrRV6wh3tIu0GJoI42eao1A==
-
-graphology-utils@^2.0.0, graphology-utils@^2.1.0, graphology-utils@^2.1.2, graphology-utils@^2.3.0, graphology-utils@^2.4.1, graphology-utils@^2.4.2, graphology-utils@^2.4.3, graphology-utils@^2.4.4, graphology-utils@~2.5.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/graphology-utils/-/graphology-utils-2.5.0.tgz#ccb0ec8231e4de403ed7a385644c911e40bc4833"
-  integrity sha512-TmuBAoM1rZxWo3Wd7qC2Rhnu3KZwq8pWNgjWCFKubn3pt3a1Vh/k3CJaFw4G7k6Mvb6aSdWVYJnlGNThMl+bAQ==
-
 graphology@^0.24.0:
   version "0.24.0"
   resolved "https://registry.yarnpkg.com/graphology/-/graphology-0.24.0.tgz#c3c78b197f8ff6d8d3422a2d705c16e637b295f6"
@@ -12468,13 +12284,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4, mkdirp@~1.0.4:
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
   integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
 
-mnemonist@^0.39.0:
-  version "0.39.0"
-  resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.39.0.tgz#4c83dd22e8d9d05dfb721ff66a905fec4c460041"
-  integrity sha512-7v08Ldk1lnlywnIShqfKYN7EW4WKLUnkoWApdmR47N1xA2xmEtWERfEvyRCepbuFCETG5OnfaGQpp/p4Bus6ZQ==
-  dependencies:
-    obliterator "^2.0.1"
-
 modify-values@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022"
@@ -12892,7 +12701,7 @@ objectorarray@^1.0.5:
   resolved "https://registry.yarnpkg.com/objectorarray/-/objectorarray-1.0.5.tgz#2c05248bbefabd8f43ad13b41085951aac5e68a5"
   integrity sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==
 
-obliterator@^2.0.1, obliterator@^2.0.2:
+obliterator@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.2.tgz#25f50dc92e1181371b9d8209d11890f1a3c2fc21"
   integrity sha512-g0TrA7SbUggROhDPK8cEu/qpItwH2LSKcNl4tlfBNT54XY+nOsqrs0Q68h1V9b3HOSpIWv15jb1lax2hAggdIg==
@@ -13146,18 +12955,6 @@ pako@~1.0.5:
   resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
   integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
 
-pandemonium@^1.5.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/pandemonium/-/pandemonium-1.5.0.tgz#93f35af555de1420022b341e730215c51c725be3"
-  integrity sha512-9PU9fy93rJhZHLMjX+4M1RwZPEYl6g7DdWKGmGNhkgBZR5+tOBVExNZc00kzdEGMxbaAvWdQy9MqGAScGwYlcA==
-
-pandemonium@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/pandemonium/-/pandemonium-2.3.0.tgz#d9c70686bb33c3ee4f435162601b0755a439bdcb"
-  integrity sha512-/+5rFCn3npqNwAvhKOSRKwAnEWQeXH4xFuur7vWKlj5Z7AM2JNJt1tC2rptfm1M7t7OlXAyeBuRjspqe+gQGHA==
-  dependencies:
-    mnemonist "^0.39.0"
-
 parallel-transform@^1.1.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
@@ -17314,11 +17111,6 @@ xml-name-validator@^3.0.0:
   resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
   integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
 
-xml-writer@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/xml-writer/-/xml-writer-1.7.0.tgz#b76f1d591c16a2634ebdb703c7bdbd0fd6819065"
-  integrity sha1-t28dWRwWomNOvbcDx729D9aBkGU=
-
 xmlchars@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
-- 
GitLab