Переглянути джерело

added the option to add abilities to the dashboard from character

Warafear 1 рік тому
батько
коміт
46a6a14584

+ 478 - 0
.nx/cache/d/daemon.log

@@ -467864,3 +467864,481 @@ To fix this, set a unique name for each project in a project.json inside the pro
     at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
 [NX Daemon Server] - 2024-02-27T08:53:58.893Z - Time taken for 'hash changed files from watcher' 28.74870002269745ms
 [NX Daemon Server] - 2024-02-27T08:53:58.893Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:21.366Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:21.372Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:21.373Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:21.375Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:21.375Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:21.377Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:22.320Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:22.321Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:22.321Z - Time taken for 'hash changed files from watcher' 29.070899963378906ms
+[NX Daemon Server] - 2024-02-27T09:48:22.321Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.322Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.323Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.323Z - [WATCHER]: Processing file changes in outputs
+[NX Daemon Server] - 2024-02-27T09:48:22.323Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:23.726Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:23.728Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:23.736Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:23.738Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:23.739Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:23.741Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:23.813Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:23.814Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:23.815Z - Time taken for 'hash changed files from watcher' 26.10479998588562ms
+[NX Daemon Server] - 2024-02-27T09:48:23.817Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:24.045Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:24.048Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:24.060Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:24.060Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:24.060Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:24.061Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:24.138Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:24.139Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:24.139Z - Time taken for 'hash changed files from watcher' 32.059200048446655ms
+[NX Daemon Server] - 2024-02-27T09:48:24.139Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:25.460Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:25.464Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:25.475Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:25.477Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:25.477Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:25.478Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:25.535Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:25.535Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:25.537Z - Time taken for 'hash changed files from watcher' 12.052600026130676ms
+[NX Daemon Server] - 2024-02-27T09:48:25.538Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:28.444Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:28.446Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:28.457Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:28.457Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:28.458Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:28.459Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:28.516Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:28.516Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:28.517Z - Time taken for 'hash changed files from watcher' 14.632299900054932ms
+[NX Daemon Server] - 2024-02-27T09:48:28.517Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:29.649Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:29.651Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:29.661Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:29.663Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:29.664Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:29.665Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:29.737Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:29.738Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:29.739Z - Time taken for 'hash changed files from watcher' 27.19159996509552ms
+[NX Daemon Server] - 2024-02-27T09:48:29.741Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:37.788Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:37.790Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:37.800Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:37.801Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:37.801Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:37.803Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:37.873Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:37.873Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:37.874Z - Time taken for 'hash changed files from watcher' 29.356000065803528ms
+[NX Daemon Server] - 2024-02-27T09:48:37.874Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:39.025Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:39.027Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:39.036Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:39.038Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:39.038Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:39.040Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:39.101Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:39.101Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:39.102Z - Time taken for 'hash changed files from watcher' 12.664199948310852ms
+[NX Daemon Server] - 2024-02-27T09:48:39.103Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:54.156Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:54.158Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:54.168Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:54.168Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:48:54.169Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:54.170Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:54.227Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:54.228Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:54.228Z - Time taken for 'hash changed files from watcher' 15.197100043296814ms
+[NX Daemon Server] - 2024-02-27T09:48:54.228Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:48:55.379Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:48:55.383Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:48:55.385Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:55.387Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-27T09:48:55.389Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:48:55.391Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:48:55.462Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:48:55.462Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:48:55.464Z - Time taken for 'hash changed files from watcher' 21.045400023460388ms
+[NX Daemon Server] - 2024-02-27T09:48:55.466Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:49:19.516Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:49:19.518Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:49:19.519Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:49:19.520Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T09:49:19.520Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:49:19.522Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:49:19.597Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:49:19.597Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:49:19.598Z - Time taken for 'hash changed files from watcher' 30.260900020599365ms
+[NX Daemon Server] - 2024-02-27T09:49:19.598Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T09:49:20.724Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T09:49:20.728Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T09:49:20.731Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:49:20.732Z - Established a connection. Number of open connections: 2
+[NX Daemon Server] - 2024-02-27T09:49:20.733Z - Closed a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T09:49:20.735Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T09:49:20.810Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T09:49:20.810Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T09:49:20.812Z - Time taken for 'hash changed files from watcher' 22.34089994430542ms
+[NX Daemon Server] - 2024-02-27T09:49:20.814Z - Done responding to the client null
+[NX Daemon Server] - 2024-02-27T10:34:41.935Z - Started listening on: \\.\pipe\nx\C:\Users\chris\AppData\Local\Temp\83d14e7134fc08a15480\d.sock
+[NX Daemon Server] - 2024-02-27T10:34:41.936Z - [WATCHER]: Subscribed to changes within: c:\Softwareprojekte\DnD (native)
+[NX Daemon Server] - 2024-02-27T10:34:41.943Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T10:34:41.943Z - Closed a connection. Number of open connections: 0
+[NX Daemon Server] - 2024-02-27T10:34:41.944Z - Established a connection. Number of open connections: 1
+[NX Daemon Server] - 2024-02-27T10:34:41.946Z - [REQUEST]: Client Request for Project Graph Received
+[NX Daemon Server] - 2024-02-27T10:34:42.009Z - Error detected when recomputing project file map: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+[NX Daemon Server] - 2024-02-27T10:34:42.010Z - [REQUEST]: Responding to the client with an error. Error when preparing serialized project graph. The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+Error: The following projects are defined in multiple locations:
+- DnDTools: 
+  - 
+  - .
+
+To fix this, set a unique name for each project in a project.json inside the project's root. If the project does not currently have a project.json, you can create one that contains only a name.
+    at readProjectConfigurationsFromRootMap (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:97:15)
+    at buildProjectsConfigurationsFromProjectPathsAndPlugins (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\project-configuration-utils.js:70:19)
+    at createProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:131:129)
+    at WorkspaceContext.<anonymous> (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:82:39)
+    at getProjectConfigurationsFromContext (c:\Softwareprojekte\DnD\node_modules\nx\src\utils\workspace-context.js:26:29)
+    at _retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:81:72)
+    at retrieveProjectConfigurations (c:\Softwareprojekte\DnD\node_modules\nx\src\project-graph\utils\retrieve-workspace-files.js:58:12)
+    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
+    at async processCollectedUpdatedAndDeletedFiles (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:102:34)
+    at async processFilesAndCreateAndSerializeProjectGraph (c:\Softwareprojekte\DnD\node_modules\nx\src\daemon\server\project-graph-incremental-recomputation.js:138:17)
+[NX Daemon Server] - 2024-02-27T10:34:42.010Z - Time taken for 'hash changed files from watcher' 12.541800022125244ms
+[NX Daemon Server] - 2024-02-27T10:34:42.010Z - Done responding to the client null

+ 1 - 1
.nx/cache/d/server-process.json

@@ -1 +1 @@
-{"processId":11280}
+{"processId":2056}

+ 6 - 6
package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "dndtools",
-  "version": "0.4.0",
+  "version": "0.5.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "dndtools",
-      "version": "0.4.0",
+      "version": "0.5.0",
       "dependencies": {
         "@angular/animations": "^17.0.3",
         "@angular/cdk": "^17.0.0",
@@ -22,7 +22,7 @@
         "@popperjs/core": "^2.11.6",
         "bootstrap": "^5.2.3",
         "localbase": "^0.7.5",
-        "marked": "^9.0.0",
+        "marked": "^9.1.6",
         "ngx-editor": "^16.0.1",
         "ngx-markdown": "^17.1.1",
         "rxjs": "~7.8.0",
@@ -17394,9 +17394,9 @@
       }
     },
     "node_modules/marked": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/marked/-/marked-9.0.0.tgz",
-      "integrity": "sha512-37yoTpjU+TSXb9OBYY5n78z/CqXh76KiQj9xsKxEdztzU9fRLmbWO5YqKxgCVGKlNdexppnbKTkwB3RipVri8w==",
+      "version": "9.1.6",
+      "resolved": "https://registry.npmjs.org/marked/-/marked-9.1.6.tgz",
+      "integrity": "sha512-jcByLnIFkd5gSXZmjNvS1TlmRhCXZjIzHYlaGkPlLIekG55JDR2Z4va9tZwCiP+/RDERiNhMOFu01xd6O5ct1Q==",
       "bin": {
         "marked": "bin/marked.js"
       },

+ 1 - 1
package.json

@@ -25,7 +25,7 @@
     "@popperjs/core": "^2.11.6",
     "bootstrap": "^5.2.3",
     "localbase": "^0.7.5",
-    "marked": "^9.0.0",
+    "marked": "^9.1.6",
     "ngx-editor": "^16.0.1",
     "ngx-markdown": "^17.1.1",
     "rxjs": "~7.8.0",

+ 8 - 5
src/app/journal/journal-character/class/class.component.html

@@ -1,17 +1,20 @@
 <div class="class-container">
   <div class="title">{{ class.title }}</div>
 
-  <markdown [data]="class.description"></markdown>
+  <div [innerHTML]="class.description"></div>
 
   <div class="features">
     @for(feature of class.features; track feature){
     <div class="feature">
       <div class="feature-name">{{ feature.name }}</div>
       <div class="feature-level">{{ feature.level }}</div>
-      <markdown
-        class="feature-description"
-        [data]="feature.description"
-      ></markdown>
+      <icon-button
+        [icon]="'add'"
+        class="feature-button"
+        (click)="addFeature(feature)"
+      ></icon-button>
+      <div [innerHTML]="feature.description"></div>
+      <hr />
     </div>
     }
   </div>

+ 9 - 5
src/app/journal/journal-character/class/class.component.scss

@@ -21,11 +21,8 @@
     margin: 0 0 2rem 0;
 }
 
-.description {
-}
-
 .feature {
-    margin-top: 2rem;
+    margin-top: 1.5rem;
     position: relative;
 }
 
@@ -33,16 +30,23 @@
     font-size: 1.5rem;
     font-weight: 600;
     margin-bottom: 1rem;
+    margin-left: 1rem;
 }
 
 .feature-level {
     position: absolute;
-    left: -1.75rem;
+    left: -1.5rem;
     top: 0;
     font-size: 1.5rem;
     font-weight: 600;
 }
 
+.feature-button {
+    position: absolute;
+    right: 0;
+    top: 0;
+}
+
 .feature-description {
     margin-top: 1rem;
 }

+ 47 - 1
src/app/journal/journal-character/class/class.component.ts

@@ -1,6 +1,9 @@
 import { Component } from '@angular/core';
 import { ClassService } from 'src/services/class/class.service';
 import { DataService } from 'src/services/data/data.service';
+import { ModalService } from 'src/services/modal/modal.service';
+import { AbilityModalComponent } from '../../journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component';
+import { Ability } from 'src/interfaces/ability';
 
 @Component({
   selector: 'class',
@@ -12,7 +15,8 @@ export class ClassComponent {
   public class: any;
   public constructor(
     private classAccessor: ClassService,
-    private dataAccessor: DataService
+    private dataAccessor: DataService,
+    private modalAccessor: ModalService
   ) {}
 
   public ngOnInit(): void {
@@ -20,4 +24,46 @@ export class ClassComponent {
     this.class = this.classAccessor.getClassDetails(this.className);
     console.log(this.class);
   }
+
+  public addFeature(feature: any) {
+    if ('ability' in feature) {
+      this.addAbility(feature);
+    } else {
+      this.addTrait(feature);
+    }
+  }
+
+  private addAbility(feature: any) {
+    let index = feature.name.indexOf('Optional');
+    if (index > -1) {
+      feature.name = feature.name.slice(index, 8);
+    }
+    let ability: Ability = {
+      name: feature.name,
+      shortDescription: '',
+      longDescription: feature.description,
+      cost: '',
+      charges: 0,
+      currentlyUsedCharges: 0,
+    };
+    this.modalAccessor.openModal(AbilityModalComponent, {
+      ability: ability,
+      isUpdate: true,
+      isAddedFromCharacter: true,
+    });
+    const resultSubscription = this.modalAccessor.result$.subscribe(
+      (result) => {
+        if (result.state === 'update' || result.state === 'add') {
+          let ability = this.dataAccessor.abilities;
+          ability.push(result.data);
+          this.dataAccessor.abilities = ability;
+        }
+        resultSubscription.unsubscribe();
+      }
+    );
+  }
+
+  private addTrait(feature: any) {
+    console.log('trait');
+  }
 }

+ 1 - 0
src/app/journal/journal-notes/journal-notes.component.html

@@ -19,5 +19,6 @@
     [placeholder]="'Coming soon...'"
   ></ngx-editor>
 </div>
+<p [innerHTML]="htmlString"></p>
 
 <div [innerHTML]="html"></div>

+ 17 - 0
src/app/journal/journal-notes/journal-notes.component.ts

@@ -1,5 +1,6 @@
 import { Component, OnInit, OnDestroy } from '@angular/core';
 import { Editor } from 'ngx-editor';
+import { marked } from 'marked';
 
 @Component({
   selector: 'app-journal-notes',
@@ -10,6 +11,22 @@ export class JournalNotesComponent implements OnInit, OnDestroy {
   editor: Editor = new Editor();
   html = '';
 
+  markdownString =
+    ' # Hello \n \
+  this is a test \
+  **hi** \
+   \
+  - 1\
+  - 2';
+
+  htmlString = '';
+
+  constructor() {
+    this.htmlString = marked(this.markdownString);
+    console.log(this.markdownString);
+    console.log(this.htmlString);
+  }
+
   ngOnInit(): void {}
 
   // make sure to destory the editor

+ 2 - 2
src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.html

@@ -65,13 +65,13 @@
     </div>
 
     <div class="horizontal-buttons">
-      @if(isUpdate){
+      @if(isUpdate && !isAddedFromCharacter){
       <ui-button [color]="'green'" style="width: 45%" (click)="update()"
         >Aktualisieren</ui-button
       >
       }@else{
       <ui-button [color]="'green'" style="width: 45%" (click)="add()"
-        >hinzufügen</ui-button
+        >Hinzufügen</ui-button
       >
       }
       <ui-button [color]="'red'" style="width: 45%" (click)="cancel()"

+ 1 - 0
src/app/journal/journal-stats/ability-panel/ability-table/ability-modal/ability-modal.component.ts

@@ -11,6 +11,7 @@ import { Ability } from 'src/interfaces/ability';
 export class AbilityModalComponent {
   @Input() public isUpdate: boolean = false;
   @Input() public ability: Ability | undefined;
+  @Input() public isAddedFromCharacter: boolean = false;
 
   shortEditor: Editor = new Editor();
   longEditor: Editor = new Editor();

+ 289 - 21
src/services/class/class.service.ts

@@ -16,6 +16,8 @@ export class ClassService {
         return this.barbarian;
       case 'Cleric':
         return this.cleric;
+      case 'Monk':
+        return this.monk;
       default:
         return this.notImplementedYet;
     }
@@ -23,11 +25,277 @@ export class ClassService {
 
   // CLASS DETAILS
 
+  public monk: any = {
+    title: 'Mönch',
+    description: `
+      <p>Monks are united in their ability to magically harness the energy that flows in their bodies. Whether channeled as a striking display of combat prowess or a subtler focus of defensive ability and speed, this energy infuses all that a monk does.</p>
+      <h4>Class Features</h4>
+      <p>As a monk, you gain the following class features.</p>
+      <h5 id="toc1"><span>Hit Points</span></h5>
+      <p><strong>Hit Dice:</strong> 1d8 per monk level<br />
+      <strong>Hit Points at 1st Level:</strong> 8 + your Constitution modifier<br />
+      <strong>Hit Points at Higher Levels:</strong> 1d8 (or 5) + your Constitution modifier per monk level after 1st</p>
+      <h5 id="toc2"><span>Proficiencies</span></h5>
+      <p><strong>Armor:</strong> None<br />
+      <strong>Weapons:</strong> Simple weapons, shortswords<br />
+      <strong>Tools:</strong> Choose one type of artisan's tools or one musical instrument<br />
+      <strong>Saving Throws:</strong> Strength, Dexterity<br />
+      <strong>Skills:</strong> Choose two from Acrobatics, Athletics, History, Insight, Religion, and Stealth</p>
+      <h5 id="toc3"><span>Equipment</span></h5>
+      <p>You start with the following equipment, in addition to the equipment granted by your background:</p>
+      <ul>
+      <li>(a) a shortsword or (b) any simple weapon</li>
+      <li>(a) a dungeoneer's pack or (b) an explorer's pack</li>
+      <li>10 darts</li>
+      </ul>`,
+    features: [
+      {
+        name: 'Unarmored Defense',
+        level: 1,
+        description: `
+          <p>Beginning at 1st level, while you are wearing no armor and not wielding a shield, your AC equals 10 + your Dexterity modifier + your Wisdom modifier.</p>
+          `,
+      },
+      {
+        name: 'Martial Arts',
+        level: 1,
+        description: `
+          <p>At 1st level, your practice of martial arts gives you mastery of combat styles that use unarmed strikes and monk weapons, which are shortswords and any simple melee weapons that don't have the two-handed or heavy property.</p>
+          <p>You gain the following benefits while you are unarmed or wielding only monk weapons and you aren't wearing armor or wielding a shield:</p>
+          <ul>
+          <li>You can use Dexterity instead of Strength for the attack and damage rolls of your unarmed strikes and monk weapons.</li>
+          </ul>
+          <ul>
+          <li>You can roll a d4 in place of the normal damage of your unarmed strike or monk weapon. This die changes as you gain monk levels, as shown in the Martial Arts column of the Monk table.</li>
+          </ul>
+          <ul>
+          <li>When you use the Attack action with an unarmed strike or a monk weapon on your turn, you can make one unarmed strike as a bonus action. For example, if you take the Attack action and attack with a quarterstaff, you can also make an unarmed strike as a bonus action, assuming you haven't already taken a bonus action this turn.</li>
+          </ul>
+          <p>Certain monasteries use specialized forms of the monk weapons. For example, you might use a club that is two lengths of wood connected by a short chain (called a nunchaku) or a sickle with a shorter, straighter blade (called a kama). Whatever name you use for a monk weapon, you can use the game statistics provided for the weapon on the <a href="http://dnd5e.wikidot.com/weapons">Weapons</a> page.</p>
+          `,
+      },
+      {
+        name: 'Ki',
+        level: 2,
+        description: `
+          <p>Starting at 2nd level, your training allows you to harness the mystic energy of ki. Your access to this energy is represented by a number of ki points. Your monk level determines the number of points you have, as shown in the Ki Points column of the Monk table.</p>
+          <p>You can spend these points to fuel various ki features. You start knowing three such features: Flurry of Blows, Patient Defense, and Step of the Wind. You learn more ki features as you gain levels in this class.</p>
+          <p>When you spend a ki point, it is unavailable until you finish a short or long rest, at the end of which you draw all of your expended ki back into yourself. You must spend at least 30 minutes of the rest meditating to regain your ki points.</p>
+          <p>Some of your ki features require your target to make a saving throw to resist the feature's effects. The saving throw DC is calculated as follows:</p>
+          <p><strong>Ki save DC</strong> = 8 + your proficiency bonus + your Wisdom modifier</p>
+          <ul>
+          <li><strong>Flurry of Blows.</strong> Immediately after you take the Attack action on your turn, you can spend 1 ki point to make two unarmed strikes as a bonus action.</li>
+          </ul>
+          <ul>
+          <li><strong>Patient Defense.</strong> You can spend 1 ki point to take the Dodge action as a bonus action on your turn.</li>
+          </ul>
+          <ul>
+          <li><strong>Step of the Wind.</strong> You can spend 1 ki point to take the Disengage or Dash action as a bonus action on your turn, and your jump distance is doubled for the turn.</li>
+          </ul>`,
+      },
+      {
+        name: 'Unarmored Movement',
+        level: 2,
+        description: `
+          <p>Starting at 2nd level, your speed increases by 10 feet while you are not wearing armor or wielding a shield. This bonus increases when you reach certain monk levels, as shown in the Monk table.</p>
+          <p>At 9th level, you gain the ability to move along vertical surfaces and across liquids on your turn without falling during the move.</p>
+          `,
+      },
+      {
+        name: 'Dedicated Weapons (Optional)',
+        level: 2,
+        description: `
+        <p>Also at 2nd level, you train yourself to use a variety of weapons as monk weapons, not just simple melee weapons and shortswords. Whenever you finish a short or long rest, you can touch one weapon, focus your ki on it, and then count that weapon as a monk weapon until you use this feature again.</p>
+          <p>The chosen weapon must meet these criteria:</p>
+          <ul>
+          <li>The weapon must be a simple or martial weapon.</li>
+          </ul>
+          <ul>
+          <li>You must be proficient with it.</li>
+          </ul>
+          <ul>
+          <li>It must lack the heavy and special properties.</li>
+          </ul>`,
+      },
+      {
+        name: 'Monasteric Tradition',
+        level: 3,
+        description: `
+          <p>When you reach 3rd level, you commit yourself to a monastic tradition. Your tradition grants you features at 3rd level and again at 6th, 11th, and 17th level.</p>
+            `,
+      },
+      {
+        name: 'Deflect Missile',
+        level: 3,
+        description: `
+        <p>Starting at 3rd level, you can use your reaction to deflect or catch the missile when you are hit by a ranged weapon attack. When you do so, the damage you take from the attack is reduced by 1d10 + your Dexterity modifier + your monk level.</p>
+        <p>If you reduce the damage to 0, you can catch the missile if it is small enough for you to hold in one hand and you have at least one hand free. If you catch a missile in this way, you can spend 1 ki point to make a ranged attack with a range of 20/60 using the weapon or piece of ammunition you just caught, as part of the same reaction. You make this attack with proficiency, regardless of your weapon proficiencies, and the missile counts as a monk weapon for the attack.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Ki-Fueled Attack (Optional)',
+        level: 3,
+        description: `
+        <p>Also at 3rd level, if you spend 1 ki point or more as part of your action on your turn, you can make one attack with an unarmed strike or a monk weapon as a bonus action before the end of the turn.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Ability Score Improvement',
+        level: 4,
+        description: `
+        <p>When you reach 4th level, and again at 8th, 12th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.</p>
+        `,
+      },
+      {
+        name: 'Slow Fall',
+        level: 4,
+        description: `
+        <p>Beginning at 4th level, you can use your reaction when you fall to reduce any falling damage you take by an amount equal to five times your monk level.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Quickened Healing',
+        level: 4,
+        description: `
+        <p>Also at 4th level, as an action, you can spend 2 ki points and roll a Martial Arts die. You regain a number of hit points equal to the number rolled plus your proficiency bonus.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Extra Attack',
+        level: 5,
+        description: `
+        <p>Beginning at 5th level, you can attack twice, instead of once, whenever you take the Attack action on your turn.</p>
+        `,
+      },
+      {
+        name: 'Stunning Strike',
+        level: 5,
+        description: `
+        <p>Starting at 5th level, you can interfere with the flow of ki in an opponent's body. When you hit another creature with a melee weapon attack, you can spend 1 ki point to attempt a stunning strike. The target must succeed on a Constitution saving throw or be stunned until the end of your next turn.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Focused Aim (Optional)',
+        level: 5,
+        description: `
+        <p>Also at 5th level, when you miss with an attack roll, you can spend 1 to 3 ki points to increase your attack roll by 2 for each of these ki points you spend, potentially turning the miss into a hit.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Ki-Empowered Strikes',
+        level: 6,
+        description: `
+        <p>Starting at 6th level, your unarmed strikes count as magical for the purpose of overcoming resistance and immunity to nonmagical attacks and damage.</p>
+        `,
+      },
+      {
+        name: 'Evasion',
+        level: 7,
+        description: `
+        <p>At 7th level, your instinctive agility lets you dodge out of the way of certain area effects, such as a blue dragon's lightning breath or a fireball spell. When you are subjected to an effect that allows you to make a Dexterity saving throw to take only half damage, you instead take no damage if you succeed on the saving throw, and only half damage if you fail.</p>
+        `,
+      },
+      {
+        name: 'Stillness of Mind',
+        level: 7,
+        description: `
+        <p>Starting at 7th level, you can use your action to end one effect on yourself that is causing you to be charmed or frightened.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Purity of Blood',
+        level: 10,
+        description: `
+        <p>At 10th level, your mastery of the ki flowing through you makes you immune to disease and poison.</p>
+        `,
+      },
+      {
+        name: 'Tongue of the Sun and Moon',
+        level: 13,
+        description: `
+        <p>Starting at 13th level, you learn to touch the ki of other minds so that you understand all spoken languages. Moreover, any creature that can understand a language can understand what you say.</p>
+        `,
+      },
+      {
+        name: 'Diamond Soul',
+        level: 14,
+        description: `
+        <p>Beginning at 14th level, your mastery of ki grants you proficiency in all saving throws.</p>
+        `,
+      },
+      {
+        name: 'Timeless Body',
+        level: 15,
+        description: `
+        <p>At 15th level, your ki sustains you so that you suffer none of the frailty of old age, and you can't be aged magically. You can still die of old age, however. In addition, you no longer need food or water.</p>
+        `,
+      },
+      {
+        name: 'Empty Body',
+        level: 18,
+        description: `
+        <p>Beginning at 18th level, you can use your action to spend 4 ki points to become invisible for 1 minute. During that time, you also have resistance to all damage but force damage.</p>
+        <p>Additionally, you can spend 8 ki points to cast the <em><a href="/spell:astral-projection">astral projection</a></em> spell, without needing material components. When you do so, you can't take any other creatures with you.</p>
+        `,
+        ability: '',
+      },
+      {
+        name: 'Perfect Self',
+        level: 20,
+        description: `
+        <p>At 20th level, when you roll for initiative and have no ki points remaining, you regain 4 ki points.</p>
+        `,
+      },
+    ],
+  };
+
   public fighter: any = {
     title: 'Kämpfer',
     description: `
-    Fighters share an unparalleled mastery with weapons and armor, and a thorough knowledge of the skills of combat. They are well acquainted with death, both meting it out and staring it defiantly in the face.
+    <p>    Fighters share an unparalleled mastery with weapons and armor, and a thorough knowledge of the skills of combat. They are well acquainted with death, both meting it out and staring it defiantly in the face.</p>
+    <h3>Class Features</h3>
+    <p>As a fighter, you gain the following class features.</p>
+
+    <h4> Hit Points </h4>
+
+    <b>Hit Dice:</b> 1d10 per fighter level
+
+    <b>Hit Points at 1st Level:</b> 10 + your Constitution modifier
+
+    <b>Hit Points at Higher Levels:</b> 1d10 (or 6) + your Constitution modifier per fighter level after 1st
+
+    <h4> Proficiencies</h4>
+    <b>Armor:</b> All armor, shields
 
+    <b>Weapons:</b> Simple weapons, martial weapons
+
+    <b>Tools:</b> None
+
+    <b>Saving Throws:</b> Strength, Constitution
+
+    <b>Skills:</b> Choose two skills from Acrobatics, Animal Handling, Athletics, History, Insight, Intimidation, Perception, and Survival
+
+    <h4> Equipment</h4>
+    <ul>
+    <li>(a) chain mail or (b) leather, longbow, and 20 arrows</li>
+    <li>(a) a martial weapon and a shield or (b) two martial weapons</li>
+    <li>(a) a light crossbow and 20 bolts or (b) two handaxes</li>
+    <li>(a) a dungeoneer's pack or (b) an explorer's pack</li>
+    
+    `,
+  };
+
+  public fighter2: any = {
+    title: 'Kämpfer',
+    description: `
+    Fighters share an unparalleled mastery with weapons and armor, and a thorough knowledge of the skills of combat. They are well acquainted with death, both meting it out and staring it defiantly in the face.
 
     ### Class Features
 
@@ -36,9 +304,9 @@ export class ClassService {
     #### Hit Points
 
     **Hit Dice:** 1d10 per fighter level
-    
+
     **Hit Points at 1st Level:** 10 + your Constitution modifier
-    
+
     **Hit Points at Higher Levels:** 1d10 (or 6) + your Constitution modifier per fighter level after 1st
 
     #### Proficiencies
@@ -83,7 +351,7 @@ export class ClassService {
       - Close Quarters Shooter (UA). When making a ranged attack while you are within 5 feet of a hostile creature, you do not have disadvantage on the attack roll. Your ranged attacks ignore half cover and three-quarters cover against targets within 30 feet of you. You have a +1 bonus to attack rolls on ranged attacks.
       - Mariner (UA). As long as you are not wearing heavy armor or using a shield, you have a swimming speed and a climbing speed equal to your normal speed, and you gain a +1 bonus to armor class.
       - Tunnel Fighter (UA). As a bonus action, you can enter a defensive stance that lasts until the start of your next turn. While in your defensive stance, you can make opportunity attacks without using your reaction, and you can use your reaction to make a melee attack against a creature that moves more than 5 feet while within your reach.
-      
+
       `,
       },
       {
@@ -93,7 +361,7 @@ export class ClassService {
           You have a limited well of stamina that you can draw on to protect yourself from harm. On your turn, you can use a bonus action to regain hit points equal to 1d10 + your fighter level.
 
           Once you use this feature, you must finish a short or long rest before you can use it again.
-      
+
         `,
       },
       {
@@ -103,21 +371,21 @@ export class ClassService {
           Starting at 2nd level, you can push yourself beyond your normal limits for a moment. On your turn, you can take one additional action.
 
           Once you use this feature, you must finish a short or long rest before you can use it again. Starting at 17th level, you can use it twice before a rest, but only once on the same turn.
-      
+
         `,
       },
       {
         name: 'Martial Archetype',
         level: 3,
         description: `
-          At 3rd level, you choose an archetype that you strive to emulate in your combat styles and techniques. The archetype you choose grants you features at 3rd level and again at 7th, 10th, 15th, and 18th level.    
+          At 3rd level, you choose an archetype that you strive to emulate in your combat styles and techniques. The archetype you choose grants you features at 3rd level and again at 7th, 10th, 15th, and 18th level.
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 4,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
@@ -126,70 +394,70 @@ export class ClassService {
         description: `
           Beginning at 5th level, you can attack twice, instead of once, whenever you take the Attack action on your turn.
 
-          The number of attacks increases to three when you reach 11th level in this class and to four when you reach 20th level in this class.    
+          The number of attacks increases to three when you reach 11th level in this class and to four when you reach 20th level in this class.
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 6,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 8,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
         name: 'Indomitable',
         level: 9,
         description: `
-          Beginning at 9th level, you can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest.  
+          Beginning at 9th level, you can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest.
         `,
       },
       {
         name: 'Extra Attack (x3)',
         level: 11,
         description: `
-          You can now attack thrice whenever you take the Attack action on your turn.   
+          You can now attack thrice whenever you take the Attack action on your turn.
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 12,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
         name: 'Indomitable (x2)',
         level: 13,
         description: `
-          You can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest. You can now use this feature twice between long rests.  
+          You can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest. You can now use this feature twice between long rests.
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 14,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 16,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
         name: 'Indomitable (x3)',
         level: 17,
         description: `
-          You can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest. You can now use this feature thrice between long rests.  
+          You can reroll a saving throw that you fail. If you do so, you must use the new roll, and you can't use this feature again until you finish a long rest. You can now use this feature thrice between long rests.
         `,
       },
       {
@@ -197,21 +465,21 @@ export class ClassService {
         level: 17,
         description: `
           Starting at 17th level, you can use it twice before a rest, but only once on the same turn.
-      
+
         `,
       },
       {
         name: 'Ability Score Improvement',
         level: 19,
         description: `
-          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.  
+          When you reach 4th level, and again at 6th, 8th, 12th, 14th, 16th, and 19th level, you can increase one ability score of your choice by 2, or you can increase two ability scores of your choice by 1. As normal, you can't increase an ability score above 20 using this feature.
         `,
       },
       {
         name: 'Extra Attack (x4)',
         level: 20,
         description: `
-          You can now attack four times whenever you take the Attack action on your turn. 
+          You can now attack four times whenever you take the Attack action on your turn.
         `,
       },
     ],