├── .obsidian
├── appearance.json
├── community-plugins.json
├── hotkeys.json
├── app.json
├── plugins
│ ├── obsidian-git
│ │ ├── manifest.json
│ │ └── styles.css
│ └── templater-obsidian
│ │ ├── manifest.json
│ │ ├── data.json
│ │ └── styles.css
├── core-plugins.json
├── core-plugins-migration.json
└── workspace.json
├── 04 - Templates
├── 04 - Template Structure
│ ├── 0405 - Basic.md
│ ├── 0408 - Personal.md
│ ├── 0406 - Tool.md
│ ├── 0401 - Primary Category.md
│ ├── 0404 - Metadata.md
│ ├── 0402 - Secondary Category.md
│ ├── 0408 - Resources.md
│ ├── 0409 - Resources.md
│ ├── 0403 - Content Header.md
│ └── 0407 - README.md
└── 0400 - General Template.md
├── 06 - Images
├── templater.png
├── obsidian-git-cp.png
├── templater-hotkey.png
├── obsidian git settings.png
├── obsidian general settings.png
└── obsidian-files-and-links.png
├── 01 - Primary Categories
├── 01 - Administration.md
└── 01 - Pentest.md
├── 00 - Global Index.md
├── 02 - Secondary Categories
└── 02 - Obsidian.md
├── 03 - Content
├── Obsidian Plugins.md
├── Obsidian - Getting Started.md
├── Obsidian General Settings.md
├── Obsidian - Git.md
└── Templater.md
└── README.md
/.obsidian/appearance.json:
--------------------------------------------------------------------------------
1 | {
2 | "accentColor": ""
3 | }
--------------------------------------------------------------------------------
/.obsidian/community-plugins.json:
--------------------------------------------------------------------------------
1 | [
2 | "templater-obsidian"
3 | ]
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0405 - Basic.md:
--------------------------------------------------------------------------------
1 | ## Overview
2 |
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0408 - Personal.md:
--------------------------------------------------------------------------------
1 |
2 | ## Overview
--------------------------------------------------------------------------------
/06 - Images/templater.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackedbyagirl/Offensive-Security-Vault/HEAD/06 - Images/templater.png
--------------------------------------------------------------------------------
/06 - Images/obsidian-git-cp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackedbyagirl/Offensive-Security-Vault/HEAD/06 - Images/obsidian-git-cp.png
--------------------------------------------------------------------------------
/06 - Images/templater-hotkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackedbyagirl/Offensive-Security-Vault/HEAD/06 - Images/templater-hotkey.png
--------------------------------------------------------------------------------
/06 - Images/obsidian git settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackedbyagirl/Offensive-Security-Vault/HEAD/06 - Images/obsidian git settings.png
--------------------------------------------------------------------------------
/06 - Images/obsidian general settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackedbyagirl/Offensive-Security-Vault/HEAD/06 - Images/obsidian general settings.png
--------------------------------------------------------------------------------
/06 - Images/obsidian-files-and-links.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hackedbyagirl/Offensive-Security-Vault/HEAD/06 - Images/obsidian-files-and-links.png
--------------------------------------------------------------------------------
/01 - Primary Categories/01 - Administration.md:
--------------------------------------------------------------------------------
1 | Links: [[00 - Global Index]]
2 |
3 | # [[01 - Administration]]
4 | ***
5 |
6 | [[02 - Obsidian]]
7 | [[02 - New Hires]]
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0406 - Tool.md:
--------------------------------------------------------------------------------
1 | ## Overview
2 |
3 |
4 | ## Pre-requirements
5 |
6 |
7 | ## Installation
8 |
9 |
10 | ## Usage
11 |
12 |
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0401 - Primary Category.md:
--------------------------------------------------------------------------------
1 | Links: [[00 - Global Index]]
2 |
3 | # [[<% tp.file.title %>]]
4 | ***
5 |
6 | { Links to related secondary categories }
7 |
--------------------------------------------------------------------------------
/.obsidian/hotkeys.json:
--------------------------------------------------------------------------------
1 | {
2 | "templater-obsidian:04 - Templates/0400 - General Template.md": [
3 | {
4 | "modifiers": [
5 | "Meta"
6 | ],
7 | "key": "N"
8 | }
9 | ]
10 | }
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0404 - Metadata.md:
--------------------------------------------------------------------------------
1 | ---
2 | creation date: <% tp.file.creation_date('MMMM DD YYYY') %>
3 | last modifed: <% tp.file.last_modified_date('MMMM DD YYYY') %>
4 | aliases: []
5 | ---
6 |
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0402 - Secondary Category.md:
--------------------------------------------------------------------------------
1 | Primary Categories: { Add link(s) [[]] back to related PRIMARY categories }
2 |
3 | # [[<% tp.file.title %>]]
4 | ***
5 |
6 | { Links to related content categories }
7 |
--------------------------------------------------------------------------------
/00 - Global Index.md:
--------------------------------------------------------------------------------
1 | # [[00 - Global Index]]
2 |
3 | ***
4 | ## Primary Categories
5 | [[01 - Administration]]
6 | [[01 - Blue Team]]
7 | [[01 - Development]]
8 | [[01 - Infrastructure]]
9 | [[01 - Pentest]]
10 | [[01 - Red Team]]
11 |
--------------------------------------------------------------------------------
/02 - Secondary Categories/02 - Obsidian.md:
--------------------------------------------------------------------------------
1 | Primary Categories: [[01 - Administration]]
2 |
3 | # [[02 - Obsidian]]
4 |
5 | ## Getting Started
6 | [[Obsidian - Getting Started]]
7 |
8 | ## Customization
9 | [[Obsidian Plugins]]
10 |
11 |
--------------------------------------------------------------------------------
/.obsidian/app.json:
--------------------------------------------------------------------------------
1 | {
2 | "showInlineTitle": false,
3 | "defaultViewMode": "preview",
4 | "livePreview": false,
5 | "showLineNumber": true,
6 | "spellcheck": true,
7 | "alwaysUpdateLinks": true,
8 | "attachmentFolderPath": "06 - Images"
9 | }
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0408 - Resources.md:
--------------------------------------------------------------------------------
1 | ***
2 | ## Resources:
3 |
4 | | Hyperlink | Info |
5 | | --------- | ---- |
6 |
7 | creation date: <% tp.file.creation_date('MMMM DD YYYY') %>
8 | last modified: <% tp.file.last_modified_date('MMMM DD YYYY') %>
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0409 - Resources.md:
--------------------------------------------------------------------------------
1 | ***
2 | ## Resources:
3 |
4 | | Hyperlink | Info |
5 | | --------- | ---- |
6 |
7 | creation date: <% tp.file.creation_date('MMMM DD YYYY') %>
8 | last modified: <% tp.file.last_modified_date('MMMM DD YYYY') %>
--------------------------------------------------------------------------------
/.obsidian/plugins/obsidian-git/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "obsidian-git",
3 | "name": "Obsidian Git",
4 | "description": "Backup your vault with Git.",
5 | "isDesktopOnly": false,
6 | "fundingUrl": "https://ko-fi.com/vinzent",
7 | "js": "main.js",
8 | "version": "2.15.0"
9 | }
10 |
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0403 - Content Header.md:
--------------------------------------------------------------------------------
1 | Primary Categories: { Add link(s) [[]] back to related PRIMARY categories }
2 | Secondary Categories: { Add link(s) [[]] back to related SECONDARY categories }
3 | Links: {Add link(s) [[]] to related terms}
4 |
5 | # [[<% tp.file.title %>]]
6 | ***
7 |
--------------------------------------------------------------------------------
/01 - Primary Categories/01 - Pentest.md:
--------------------------------------------------------------------------------
1 | Links: [[00 - Global Index]]
2 |
3 | # [[01 - Pentest]]
4 | ***
5 |
6 | [[02 - Internal]]
7 | [[02 - External]]
8 | [[02 - Reconnaissance]]
9 | [[02 - Payloads]]
10 | [[02 - Lateral Movement]]
11 | [[02 - Persistence]]
12 | [[02 - Privilege Escalation]]
13 | [[02 - Post Exploitation]]
--------------------------------------------------------------------------------
/.obsidian/plugins/templater-obsidian/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "templater-obsidian",
3 | "name": "Templater",
4 | "version": "1.16.0",
5 | "description": "Create and use templates",
6 | "minAppVersion": "0.11.13",
7 | "author": "SilentVoid",
8 | "authorUrl": "https://github.com/SilentVoid13",
9 | "isDesktopOnly": false
10 | }
11 |
--------------------------------------------------------------------------------
/.obsidian/core-plugins.json:
--------------------------------------------------------------------------------
1 | [
2 | "file-explorer",
3 | "global-search",
4 | "switcher",
5 | "graph",
6 | "backlink",
7 | "canvas",
8 | "outgoing-link",
9 | "tag-pane",
10 | "page-preview",
11 | "note-composer",
12 | "command-palette",
13 | "editor-status",
14 | "starred",
15 | "outline",
16 | "word-count",
17 | "file-recovery"
18 | ]
--------------------------------------------------------------------------------
/03 - Content/Obsidian Plugins.md:
--------------------------------------------------------------------------------
1 | Primary Categories: [[01 - Administration]]
2 | Secondary Categories: [[02 - Obsidian]] - [[02 - Resources]]
3 | Links: [[Obsidian - Getting Started]]
4 |
5 | # [[Obsidian Plugins]]
6 | ***
7 |
8 | ## Required
9 | [[Obsidian - Git]]
10 | [[Templater]]
11 |
12 | ## Optional
13 | [[Admonition]]
14 | [[Advanced Tables]]
15 | [[Excalidraw]]
16 | [[Find Orphaned Files and Broken Links]]
17 | [[Kanban]]
18 | [[Linter]]
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Offensive-Security-Vault
2 | This is a Personal Knowledge Management tools for taking and managing notes related Offensive Security in Obsidian
3 |
4 |
5 | ## Usage
6 | 1. Download Obsidian from [Obsidian](https://obsidian.md)
7 | 2. Clone this repository
8 | `git clone https://github.com/hackedbyagirl/Offensive-Security-Vault.git`
9 | 3. Begin by navigating to `02 - Obsidian`
10 |
11 | For more explination on how to use this repo, please read the following blog as it was the inspiration for this design.
12 |
13 | [TrustedSec - Obsidian](https://www.trustedsec.com/blog/obsidian-taming-a-collective-consciousness/)
14 |
--------------------------------------------------------------------------------
/03 - Content/Obsidian - Getting Started.md:
--------------------------------------------------------------------------------
1 |
2 | ---
3 | creation date: January 09 2023
4 | last modifed: January 09 2023
5 | aliases: [Obsidian]
6 | ---
7 | Primary Categories: [[01 - Administration]]
8 | Secondary Categories: [[02 - Obsidian]]
9 |
10 | # [[Obsidian - Getting Started]]
11 | ***
12 |
13 | ## Overview
14 | This is my guide to setting up your [Obsidian](https://obsidian.md) vault.
15 |
16 | ## Setup
17 | [[Obsidian General Settings]]
18 | [[Obsidian Plugins]]
19 | ***
20 | ## Resources:
21 |
22 | | Hyperlink | Info |
23 | | --------- | ---- |
24 |
25 | creation date: January 09 2023
26 | last modified: January 09 2023
--------------------------------------------------------------------------------
/.obsidian/plugins/templater-obsidian/data.json:
--------------------------------------------------------------------------------
1 | {
2 | "command_timeout": 5,
3 | "templates_folder": "04 - Templates",
4 | "templates_pairs": [
5 | [
6 | "",
7 | ""
8 | ]
9 | ],
10 | "trigger_on_file_creation": true,
11 | "auto_jump_to_cursor": false,
12 | "enable_system_commands": false,
13 | "shell_path": "",
14 | "user_scripts_folder": "",
15 | "enable_folder_templates": true,
16 | "folder_templates": [
17 | {
18 | "folder": "",
19 | "template": ""
20 | }
21 | ],
22 | "syntax_highlighting": true,
23 | "enabled_templates_hotkeys": [
24 | "04 - Templates/0400 - General Template.md"
25 | ],
26 | "startup_templates": [
27 | ""
28 | ],
29 | "enable_ribbon_icon": true
30 | }
--------------------------------------------------------------------------------
/.obsidian/core-plugins-migration.json:
--------------------------------------------------------------------------------
1 | {
2 | "file-explorer": true,
3 | "global-search": true,
4 | "switcher": true,
5 | "graph": true,
6 | "backlink": true,
7 | "canvas": true,
8 | "outgoing-link": true,
9 | "tag-pane": true,
10 | "page-preview": true,
11 | "daily-notes": false,
12 | "templates": false,
13 | "note-composer": true,
14 | "command-palette": true,
15 | "slash-command": false,
16 | "editor-status": true,
17 | "starred": true,
18 | "markdown-importer": false,
19 | "zk-prefixer": false,
20 | "random-note": false,
21 | "outline": true,
22 | "word-count": true,
23 | "slides": false,
24 | "audio-recorder": false,
25 | "workspaces": false,
26 | "file-recovery": true,
27 | "publish": false,
28 | "sync": false
29 | }
--------------------------------------------------------------------------------
/03 - Content/Obsidian General Settings.md:
--------------------------------------------------------------------------------
1 |
2 | ---
3 | creation date: January 09 2023
4 | last modifed: January 09 2023
5 | aliases: []
6 | ---
7 | Primary Categories: [[01 - Administration]]
8 | Secondary Categories: [[02 - Obsidian]]
9 | Links: [[Obsidian - Getting Started]]
10 |
11 | # [[Obsidian General Settings]]
12 | ***
13 | ## Overview
14 | Basic settings I use to set up my obsidian vault. To begin, navigate to the `Settings` icon in the bottom left of the screen
15 |
16 | ### Editor
17 | 1. *Default view for new tabs*: Reading View
18 | 2. *Default editing mode*: Source mode
19 | 3. *Show line number*: True
20 | 4. *Spellcheck*: True
21 |
22 | ![[obsidian general settings.png]]
23 |
24 | ### Files & Links
25 | 1. *Automatically update internal links*: True
26 | 2. *Default new location for new attachments*: `06 - Images`
27 |
28 | ![[obsidian-files-and-links.png]]
29 |
30 | ### Appearance
31 | 1. *Show inline title*: False
32 |
33 | ### Core Plugins
34 | 1. *Daily Notes:* False
35 | 2. *Slides*: False
36 | 3. *Templates*: False
37 | 4. *Unique Note Creator*: False
38 |
39 | ### Community Plugins
40 | [[Obsidian Plugins]]
41 |
42 | ***
43 | ## Resources:
44 |
45 | | Hyperlink | Info |
46 | | --------- | ---- |
47 |
48 | creation date: January 09 2023
49 | last modifed: January 09 2023
--------------------------------------------------------------------------------
/03 - Content/Obsidian - Git.md:
--------------------------------------------------------------------------------
1 |
2 | ---
3 | creation date: January 09 2023
4 | last modifed: January 09 2023
5 | aliases: []
6 | ---
7 | Primary Categories: [[01 - Administration]]
8 | Secondary Categories: [[02 - Obsidian]]
9 | Links: [[Obsidian Plugins]] - [[Obsidian - Getting Started]]
10 |
11 | # [[Obsidian - Git]]
12 | ***
13 | ## Overview
14 | Simple plugin that allows you to backup your [Obsidian](https://obsidian.md) vault to a remote git repository (e.g. private repo on GitHub).
15 |
16 | This plugin assumes you have existing git repository initialized locally and credentials are setup. This is the mechanism by which all your notes are sync'd to the Offpipe repository and shared between consultants.
17 |
18 | ## Installation
19 | Obsidian-Git is a registered Obsidian Community Plugin and can be installed directly from `Settings > Community Plugins > Browse > Obsidian Git`
20 |
21 | ## Settings
22 | 1. Enable `Obsidian Git-` under `Settings > Community Plugins > Obsidian Git`
23 | 2. Navigate to `Settings > Obsidian Git`
24 | 3. Edit the following settings
25 | 1. *Vault Backup Interval*: 60
26 | 2. *Auto Pull Interval*: 10
27 | 3. *Commit message*: FLast {{date}}
28 | 4. *Date placeholder*: MM-DD-YYYY HH:mm:ss
29 | 5. *Pull changes before push*: Enabled (default)
30 |
31 | ## Commands
32 | All associated commands specific to Obsidian git can be reviewed from the Command Pallete (**CTRL + P** to open)
33 |
34 | ![[obsidian-git-cp.png]]
35 | ***
36 | These commands can be added to hotkey combinations which greatly simply the addons use.
37 |
38 | ![[obsidian git settings.png]]
39 |
40 | ***
41 | ## Resources:
42 |
43 | | Hyperlink | Info |
44 | | --------- | ---- |
45 | | [Obsidian Git Github Repo](https://github.com/denolehov/obsidian-git) | Git Repo |
46 |
47 | creation date: January 09 2023
48 | last modifed: January 09 2023
--------------------------------------------------------------------------------
/03 - Content/Templater.md:
--------------------------------------------------------------------------------
1 |
2 | ---
3 | creation date: January 09 2023
4 | last modifed: January 09 2023
5 | aliases: []
6 | ---
7 | Primary Categories: [[01 - Administration]]
8 | Secondary Categories: [[02 - Obsidian]]
9 | Links: [[Obsidian Plugins]] - [[Obsidian - Getting Started]]
10 |
11 | # [[Templater]]
12 | ***
13 | ## Overview
14 | [Templater](https://silentvoid13.github.io/Templater/introduction.html) is a template language that lets you generate templates for [Obsidian](https://obsidian.md/) notes.
15 |
16 | ### Usage
17 | - Prompt for template on new note creation (Binded hotkey)
18 | - Add date _created_ automatically
19 | - Update _last updated_ automatically
20 | - Move the note to the appropriate location
21 | - 01 - Primary Categories
22 | - 02 - Secondary Categories
23 | - 03 - Content
24 | ***
25 | ## Installation
26 | Templater is a registered Obsidian Community Plugin and can be installed directly from `Settings > Community Plugins > Browse > Templater`
27 |
28 | *Note: Make sure to **disable** Core Plugin Templates*
29 |
30 | ## Settings
31 | 1. Disable `Templates` under `Settings > Core Plugins > Templates`
32 | 2. Enable `Templater` under `Settings > Community Plugins > Templater`
33 | 3. Navigate to `Settings > Templater`
34 | 4. Edit the following settings
35 | 1. *Template Folder Location*: 04 - Templates
36 | 2. *Trigger Templater on New File Creation*: True
37 | 3. *Template Hotkeys*: 04 - Templates/0400 - General Template
38 | 1. `+` to add hotkey for template triggering
39 |
40 | *Note: Make sure to **disable** core plugin Templates and **enable** Templater *
41 |
42 | *TemplaterSettings*
43 | ![[templater.png]]
44 |
45 | *TemplaterHotkey*
46 | ![[templater-hotkey.png]]
47 |
48 | ***
49 | ## Resources:
50 |
51 | | Hyperlink | Info |
52 | | --------- | ---- |
53 | | [Templater Github Repo](https://github.com/SilentVoid13/Templater) | Github Repo |
54 | | [Templater](https://silentvoid13.github.io/Templater/introduction.html) | Templater Docs |
55 |
--------------------------------------------------------------------------------
/04 - Templates/0400 - General Template.md:
--------------------------------------------------------------------------------
1 | <%*
2 | let title = tp.file.title;
3 | var note;
4 | ////////////////////////////////////// Main //////////////////////////////////////
5 |
6 | // Present selection of Search Tags to user
7 | let tag = await tp.system.suggester(["Primary", "Secondary", "Basic", "Tool", "README", "TTP"], ["Primary", "Secondary", "Basic", "Tool", "README", "TTP"], true)
8 |
9 | await setNoteStructure(tag, title);
10 |
11 | ////////////////////////////////// Functions /////////////////////////////////////
12 | async function setNoteStructure(note_tag, noteTitle) {
13 | console.log("Getting Struct MD for tag: " + note_tag);
14 |
15 | var struct;
16 | var file_destination;
17 | var isCat = true;
18 |
19 | if (note_tag.startsWith("Primary")) {
20 | struct = "[[0401 - Primary Category]]";
21 | file_destination = "01 - Primary Categories/";
22 | }
23 | else if (note_tag.startsWith("Secondary")) {
24 | struct = "[[0402 - Secondary Category]]";
25 | file_destination = "02 - Secondary Categories/";
26 | }
27 | else if (note_tag.startsWith("Basic")) {
28 | struct = "[[0405 - Basic]]";
29 | file_destination = "03 - Content/";
30 | isCat = false;
31 | }
32 | else if (note_tag.startsWith("Tool")) {
33 | struct = "[[0406 - Tool]]";
34 | file_destination = "03 - Content/";
35 | isCat = false;
36 | }
37 | else if (note_tag.startsWith("README")) {
38 | struct = "[[0408 - README]]";
39 | file_destination = "03 - Content/";
40 | isCat = false;
41 | }
42 | else {
43 | console.log("You selected an option outside what was expected.");
44 | console.log("Try again.");
45 | }
46 | await buildNote(noteTitle, struct, file_destination, isCat);
47 | }
48 |
49 | async function buildNote(notetitle, content, dest, category){
50 | let metadata = "[[0404 - Metadata]]";
51 | let header = "[[0403 - Content Header]]";
52 | let resources = "[[0408 - Resources]]";
53 |
54 | var meta = await tp.file.include(metadata);
55 | var body = await tp.file.include(content);
56 | var head = await tp.file.include(header);
57 | var body = await tp.file.include(content);
58 | var resc = await tp.file.include(resources);
59 |
60 | if (category === true) {
61 | await tp.file.move(dest + notetitle);
62 | note = meta + body;
63 | }
64 | else if (category === false) {
65 | await tp.file.move(dest + notetitle);
66 | note = meta + head + body + resc;
67 | }
68 | }
69 | %>
70 | <%* tR += `${note}` %>
--------------------------------------------------------------------------------
/04 - Templates/04 - Template Structure/0407 - README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Project Title
7 |
8 |
9 |
10 | []()
11 | [](https://github.com/kylelobo/The-Documentation-Compendium/issues)
12 | [](https://github.com/kylelobo/The-Documentation-Compendium/pulls)
13 | [](/LICENSE)
14 |
15 |
16 |
17 | ---
18 |
19 | Few lines describing your project.
20 |
21 |
22 |
23 | ## 📝 Table of Contents
24 | - [About](#about)
25 | - [Getting Started](#getting_started)
26 | - [Deployment](#deployment)
27 | - [Usage](#usage)
28 | - [Built Using](#built_using)
29 | - [TODO](../TODO.md)
30 | - [Contributing](../CONTRIBUTING.md)
31 | - [Authors](#authors)
32 | - [Acknowledgments](#acknowledgement)
33 |
34 | ## 🧐 About
35 | Write about 1-2 paragraphs describing the purpose of your project.
36 |
37 | ## 🏁 Getting Started
38 | These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See [deployment](#deployment) for notes on how to deploy the project on a live system.
39 |
40 | ### Prerequisites
41 | What things you need to install the software and how to install them.
42 |
43 | ```
44 | Give examples
45 | ```
46 |
47 | ### Installing
48 | A step by step series of examples that tell you how to get a development env running.
49 |
50 | Say what the step will be
51 |
52 | ```
53 | Give the example
54 | ```
55 |
56 | And repeat
57 |
58 | ```
59 | until finished
60 | ```
61 |
62 | End with an example of getting some data out of the system or using it for a little demo.
63 |
64 | ## 🔧 Running the tests
65 | Explain how to run the automated tests for this system.
66 |
67 | ### Break down into end to end tests
68 | Explain what these tests test and why
69 |
70 | ```
71 | Give an example
72 | ```
73 |
74 | ### And coding style tests
75 | Explain what these tests test and why
76 |
77 | ```
78 | Give an example
79 | ```
80 |
81 | ## 🎈 Usage
82 | Add notes about how to use the system.
83 |
84 | ## 🚀 Deployment
85 | Add additional notes about how to deploy this on a live system.
86 |
87 | ## ⛏️ Built Using
88 | - [MongoDB](https://www.mongodb.com/) - Database
89 | - [Express](https://expressjs.com/) - Server Framework
90 | - [VueJs](https://vuejs.org/) - Web Framework
91 | - [NodeJs](https://nodejs.org/en/) - Server Environment
92 |
93 | ## ✍️ Authors
94 | - [@kylelobo](https://github.com/kylelobo) - Idea & Initial work
95 |
96 | See also the list of [contributors](https://github.com/kylelobo/The-Documentation-Compendium/contributors) who participated in this project.
97 |
98 | ## 🎉 Acknowledgements
99 | - Hat tip to anyone whose code was used
100 | - Inspiration
101 | - References
102 |
--------------------------------------------------------------------------------
/.obsidian/workspace.json:
--------------------------------------------------------------------------------
1 | {
2 | "main": {
3 | "id": "803bd50cd286d021",
4 | "type": "split",
5 | "children": [
6 | {
7 | "id": "6af126196319715f",
8 | "type": "tabs",
9 | "children": [
10 | {
11 | "id": "eeba3cd71248f10c",
12 | "type": "leaf",
13 | "state": {
14 | "type": "empty",
15 | "state": {}
16 | }
17 | }
18 | ]
19 | }
20 | ],
21 | "direction": "vertical"
22 | },
23 | "left": {
24 | "id": "04d883b20fab1a98",
25 | "type": "split",
26 | "children": [
27 | {
28 | "id": "f33f3ef271ad5d49",
29 | "type": "tabs",
30 | "children": [
31 | {
32 | "id": "9d408fb73f29c8a1",
33 | "type": "leaf",
34 | "state": {
35 | "type": "file-explorer",
36 | "state": {
37 | "sortOrder": "alphabetical"
38 | }
39 | }
40 | },
41 | {
42 | "id": "fa1d091155953a4e",
43 | "type": "leaf",
44 | "state": {
45 | "type": "search",
46 | "state": {
47 | "query": "",
48 | "matchingCase": false,
49 | "explainSearch": false,
50 | "collapseAll": false,
51 | "extraContext": false,
52 | "sortOrder": "alphabetical"
53 | }
54 | }
55 | },
56 | {
57 | "id": "5d1acb0eb372732e",
58 | "type": "leaf",
59 | "state": {
60 | "type": "starred",
61 | "state": {}
62 | }
63 | }
64 | ]
65 | }
66 | ],
67 | "direction": "horizontal",
68 | "width": 300
69 | },
70 | "right": {
71 | "id": "c9584ff9768d1b3f",
72 | "type": "split",
73 | "children": [
74 | {
75 | "id": "37cd0c8962be4e03",
76 | "type": "tabs",
77 | "children": [
78 | {
79 | "id": "8f77bb93be0a2f87",
80 | "type": "leaf",
81 | "state": {
82 | "type": "backlink",
83 | "state": {
84 | "collapseAll": false,
85 | "extraContext": false,
86 | "sortOrder": "alphabetical",
87 | "showSearch": false,
88 | "searchQuery": "",
89 | "backlinkCollapsed": false,
90 | "unlinkedCollapsed": true
91 | }
92 | }
93 | },
94 | {
95 | "id": "99eb5a42c8b91aff",
96 | "type": "leaf",
97 | "state": {
98 | "type": "outgoing-link",
99 | "state": {
100 | "linksCollapsed": false,
101 | "unlinkedCollapsed": true
102 | }
103 | }
104 | },
105 | {
106 | "id": "377373a2378ff61d",
107 | "type": "leaf",
108 | "state": {
109 | "type": "tag",
110 | "state": {
111 | "sortOrder": "frequency",
112 | "useHierarchy": true
113 | }
114 | }
115 | },
116 | {
117 | "id": "3bca36c24ff7bf40",
118 | "type": "leaf",
119 | "state": {
120 | "type": "outline",
121 | "state": {}
122 | }
123 | }
124 | ]
125 | }
126 | ],
127 | "direction": "horizontal",
128 | "width": 300,
129 | "collapsed": true
130 | },
131 | "left-ribbon": {
132 | "hiddenItems": {
133 | "switcher:Open quick switcher": false,
134 | "graph:Open graph view": false,
135 | "canvas:Create new canvas": false,
136 | "command-palette:Open command palette": false,
137 | "templater-obsidian:Templater": false
138 | }
139 | },
140 | "active": "eeba3cd71248f10c",
141 | "lastOpenFiles": [
142 | "04 - Templates/0400 - General Template.md",
143 | "04 - Templates/04 - Template Structure/0409 - Resources.md",
144 | "04 - Templates/04 - Template Structure/0408 - Personal.md",
145 | "04 - Templates/04 - Template Structure/0407 - README.md",
146 | "04 - Templates/04 - Template Structure/0406 - Tool.md",
147 | "04 - Templates/04 - Template Structure/0405 - Basic.md",
148 | "04 - Templates/04 - Template Structure/0404 - Metadata.md",
149 | "04 - Templates/04 - Template Structure/0403 - Content Header.md",
150 | "03 - Content/Obsidian - Git.md",
151 | "03 - Content/Templater.md"
152 | ]
153 | }
--------------------------------------------------------------------------------
/.obsidian/plugins/templater-obsidian/styles.css:
--------------------------------------------------------------------------------
1 | .templater_search {
2 | width: calc(100% - 20px);
3 | }
4 |
5 | .templater_div {
6 | border-top: 1px solid var(--background-modifier-border);
7 | }
8 |
9 | .templater_div > .setting-item {
10 | border-top: none !important;
11 | align-self: center;
12 | }
13 |
14 | .templater_div > .setting-item > .setting-item-control {
15 | justify-content: space-around;
16 | padding: 0;
17 | width: 100%;
18 | }
19 |
20 | .templater_div
21 | > .setting-item
22 | > .setting-item-control
23 | > .setting-editor-extra-setting-button {
24 | align-self: center;
25 | }
26 |
27 | .templater_donating {
28 | margin: 10px;
29 | }
30 |
31 | .templater_title {
32 | margin: 0;
33 | padding: 0;
34 | margin-top: 5px;
35 | text-align: center;
36 | }
37 |
38 | .templater_template {
39 | align-self: center;
40 | margin-left: 5px;
41 | margin-right: 5px;
42 | width: 70%;
43 | }
44 |
45 | .templater_cmd {
46 | margin-left: 5px;
47 | margin-right: 5px;
48 | font-size: 14px;
49 | width: 100%;
50 | }
51 |
52 | .templater_div2 > .setting-item {
53 | align-content: center;
54 | justify-content: center;
55 | }
56 |
57 | .templater-prompt-div {
58 | display: flex;
59 | }
60 |
61 | .templater-prompt-form {
62 | display: flex;
63 | flex-grow: 1;
64 | }
65 |
66 | .templater-prompt-input {
67 | flex-grow: 1;
68 | }
69 |
70 | .templater-button-div {
71 | display: flex;
72 | flex-direction: column;
73 | align-items: center;
74 | margin-top: 1rem;
75 | }
76 |
77 | textarea.templater-prompt-input {
78 | height: 10rem;
79 | }
80 |
81 | textarea.templater-prompt-input:focus {
82 | border-color: var(--interactive-accent);
83 | }
84 |
85 | .cm-s-obsidian .templater-command-bg {
86 | left: 0px;
87 | right: 0px;
88 | background-color: var(--background-primary-alt);
89 | }
90 |
91 | .cm-s-obsidian .cm-templater-command {
92 | font-size: 0.85em;
93 | font-family: var(--font-monospace);
94 | line-height: 1.3;
95 | }
96 |
97 | .cm-s-obsidian .templater-inline .cm-templater-command {
98 | background-color: var(--background-primary-alt);
99 | }
100 |
101 | .cm-s-obsidian .cm-templater-command.cm-templater-opening-tag {
102 | font-weight: bold;
103 | }
104 |
105 | .cm-s-obsidian .cm-templater-command.cm-templater-closing-tag {
106 | font-weight: bold;
107 | }
108 |
109 | .cm-s-obsidian .cm-templater-command.cm-templater-interpolation-tag {
110 | color: #008bff;
111 | }
112 |
113 | .cm-s-obsidian .cm-templater-command.cm-templater-execution-tag {
114 | color: #c0d700;
115 | }
116 |
117 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-keyword {
118 | color: #00a7aa;
119 | font-weight: normal;
120 | }
121 |
122 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-atom {
123 | color: #f39b35;
124 | }
125 |
126 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-number {
127 | color: #a06fca;
128 | }
129 |
130 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-type {
131 | color: #a06fca;
132 | }
133 |
134 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-def {
135 | color: #98e342;
136 | }
137 |
138 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-property {
139 | color: #d4d4d4;
140 | }
141 |
142 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-variable {
143 | color: #d4d4d4;
144 | }
145 |
146 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-variable-2 {
147 | color: #da7dae;
148 | }
149 |
150 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-variable-3 {
151 | color: #a06fca;
152 | }
153 |
154 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-type.cm-def {
155 | color: #fc4384;
156 | }
157 |
158 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-property.cm-def {
159 | color: #fc4384;
160 | }
161 |
162 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-callee {
163 | color: #fc4384;
164 | }
165 |
166 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-operator {
167 | color: #fc4384;
168 | }
169 |
170 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-qualifier {
171 | color: #fc4384;
172 | }
173 |
174 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-tag {
175 | color: #fc4384;
176 | }
177 |
178 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-tag.cm-bracket {
179 | color: #d4d4d4;
180 | }
181 |
182 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-attribute {
183 | color: #a06fca;
184 | }
185 |
186 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-comment {
187 | color: #696d70;
188 | }
189 |
190 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-comment.cm-tag {
191 | color: #fc4384;
192 | }
193 |
194 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-comment.cm-attribute {
195 | color: #d4d4d4;
196 | }
197 |
198 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-string {
199 | color: #e6db74;
200 | }
201 |
202 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-string-2 {
203 | color: #f39b35;
204 | }
205 |
206 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-meta {
207 | color: #d4d4d4;
208 | background: inherit;
209 | }
210 |
211 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-builtin {
212 | color: #fc4384;
213 | }
214 |
215 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-header {
216 | color: #da7dae;
217 | }
218 |
219 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-hr {
220 | color: #98e342;
221 | }
222 |
223 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-link {
224 | color: #696d70;
225 | }
226 |
227 | .theme-dark .cm-s-obsidian .cm-templater-command.cm-error {
228 | border-bottom: 1px solid #c42412;
229 | }
230 |
231 | .theme-dark .cm-s-obsidian pre.HyperMD-codeblock .cm-keyword {
232 | font-weight: normal;
233 | }
234 |
235 | .theme-dark
236 | .cm-s-obsidian
237 | .cm-templater-command.CodeMirror-activeline-background {
238 | background: #272727;
239 | }
240 |
241 | .theme-dark .cm-s-obsidian .cm-templater-command.CodeMirror-matchingbracket {
242 | outline: 1px solid grey;
243 | color: #d4d4d4 !important;
244 | }
245 |
246 | .CodeMirror-hints {
247 | position: absolute;
248 | z-index: 10;
249 | overflow: hidden;
250 | list-style: none;
251 |
252 | margin: 0;
253 | padding: 2px;
254 |
255 | -webkit-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
256 | -moz-box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
257 | box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.2);
258 | border-radius: 3px;
259 | border: 1px solid silver;
260 |
261 | background: white;
262 | font-size: 90%;
263 | font-family: monospace;
264 |
265 | max-height: 20em;
266 | overflow-y: auto;
267 | }
268 |
269 | .CodeMirror-hint {
270 | margin: 0;
271 | padding: 0 4px;
272 | border-radius: 2px;
273 | white-space: pre;
274 | color: black;
275 | cursor: pointer;
276 | }
277 |
278 | li.CodeMirror-hint-active {
279 | background: #08f;
280 | color: white;
281 | }
282 |
--------------------------------------------------------------------------------
/.obsidian/plugins/obsidian-git/styles.css:
--------------------------------------------------------------------------------
1 | @keyframes loading {
2 | 0% {
3 | transform: rotate(0deg);
4 | }
5 |
6 | 100% {
7 | transform: rotate(360deg);
8 | }
9 | }
10 |
11 | .workspace-leaf-content[data-type='git-view'] .view-content {
12 | padding: 0;
13 | }
14 |
15 | .loading>svg {
16 | animation: 2s linear infinite loading;
17 | transform-origin: 50% 50%;
18 | display: inline-block;
19 | }
20 |
21 | .obsidian-git-center {
22 | margin: auto;
23 | text-align: center;
24 | width: 50%;
25 | }
26 |
27 | .obsidian-git-textarea {
28 | display: block;
29 | margin-left: auto;
30 | margin-right: auto;
31 | }
32 |
33 | .obsidian-git-center-button {
34 | display: block;
35 | margin: 20px auto;
36 | }
37 |
38 | .tooltip.mod-left {
39 | overflow-wrap: break-word;
40 | }
41 |
42 | .tooltip.mod-right {
43 | overflow-wrap: break-word;
44 | }
45 |
46 | .obsidian-git-shortcuts {
47 | margin: 10px;
48 | }
49 |
50 | .diff-err {
51 | height: 100%;
52 | display: flex;
53 | justify-content: center;
54 | flex-direction: column;
55 | align-items: center;
56 | }
57 |
58 | .diff-err-sign {
59 | font-size: 2em;
60 | }
61 |
62 | .workspace-leaf-content[data-type="diff-view"] .d2h-d-none {
63 | display: none;
64 | }
65 |
66 | .workspace-leaf-content[data-type="diff-view"] .d2h-wrapper {
67 | text-align: left;
68 | }
69 |
70 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-header {
71 | background-color: var(--background-primary);
72 | border-bottom: 1px solid var(--interactive-accent);
73 | font-family: var(--font-monospace);
74 | height: 35px;
75 | padding: 5px 10px;
76 | }
77 |
78 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-header,
79 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
80 | display: -webkit-box;
81 | display: -ms-flexbox;
82 | display: flex;
83 | }
84 |
85 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-stats {
86 | font-size: 14px;
87 | margin-left: auto;
88 | }
89 |
90 | .workspace-leaf-content[data-type="diff-view"] .d2h-lines-added {
91 | border: 1px solid #b4e2b4;
92 | border-radius: 5px 0 0 5px;
93 | color: #399839;
94 | padding: 2px;
95 | text-align: right;
96 | vertical-align: middle;
97 | }
98 |
99 | .workspace-leaf-content[data-type="diff-view"] .d2h-lines-deleted {
100 | border: 1px solid #e9aeae;
101 | border-radius: 0 5px 5px 0;
102 | color: #c33;
103 | margin-left: 1px;
104 | padding: 2px;
105 | text-align: left;
106 | vertical-align: middle;
107 | }
108 |
109 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-name-wrapper {
110 | -webkit-box-align: center;
111 | -ms-flex-align: center;
112 | align-items: center;
113 | display: -webkit-box;
114 | display: -ms-flexbox;
115 | display: flex;
116 | font-size: 15px;
117 | width: 100%;
118 | }
119 |
120 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-name {
121 | overflow-x: hidden;
122 | text-overflow: ellipsis;
123 | white-space: nowrap;
124 | }
125 |
126 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-wrapper {
127 | border: 1px solid var(--background-modifier-border);
128 | border-radius: 3px;
129 | margin-bottom: 1em;
130 | }
131 |
132 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse {
133 | -webkit-box-pack: end;
134 | -ms-flex-pack: end;
135 | -webkit-box-align: center;
136 | -ms-flex-align: center;
137 | align-items: center;
138 | border: 1px solid var(--background-modifier-border);
139 | border-radius: 3px;
140 | cursor: pointer;
141 | display: none;
142 | font-size: 12px;
143 | justify-content: flex-end;
144 | padding: 4px 8px;
145 | }
146 |
147 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse.d2h-selected {
148 | background-color: #c8e1ff;
149 | }
150 |
151 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-collapse-input {
152 | margin: 0 4px 0 0;
153 | }
154 |
155 | .workspace-leaf-content[data-type="diff-view"] .d2h-diff-table {
156 | border-collapse: collapse;
157 | font-family: Menlo, Consolas, monospace;
158 | font-size: 13px;
159 | width: 100%;
160 | }
161 |
162 | .workspace-leaf-content[data-type="diff-view"] .d2h-files-diff {
163 | width: 100%;
164 | }
165 |
166 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff {
167 | overflow-y: hidden;
168 | }
169 |
170 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-side-diff {
171 | display: inline-block;
172 | margin-bottom: -8px;
173 | margin-right: -4px;
174 | overflow-x: scroll;
175 | overflow-y: hidden;
176 | width: 50%;
177 | }
178 |
179 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line {
180 | padding: 0 8em;
181 | }
182 |
183 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line,
184 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
185 | display: inline-block;
186 | -webkit-user-select: none;
187 | -moz-user-select: none;
188 | -ms-user-select: none;
189 | user-select: none;
190 | white-space: nowrap;
191 | width: 100%;
192 | }
193 |
194 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line {
195 | padding: 0 4.5em;
196 | }
197 |
198 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line-ctn {
199 | word-wrap: normal;
200 | background: none;
201 | display: inline-block;
202 | padding: 0;
203 | -webkit-user-select: text;
204 | -moz-user-select: text;
205 | -ms-user-select: text;
206 | user-select: text;
207 | vertical-align: middle;
208 | white-space: pre;
209 | width: 100%;
210 | }
211 |
212 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
213 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del {
214 | background-color: #ffb6ba;
215 | }
216 |
217 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
218 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del {
219 | background-color: #8d232881;
220 | }
221 |
222 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line del,
223 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
224 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line del,
225 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
226 | border-radius: 0.2em;
227 | display: inline-block;
228 | margin-top: -1px;
229 | text-decoration: none;
230 | vertical-align: middle;
231 | }
232 |
233 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
234 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
235 | background-color: #97f295;
236 | text-align: left;
237 | }
238 |
239 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-line ins,
240 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-line ins {
241 | background-color: #1d921996;
242 | text-align: left;
243 | }
244 |
245 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix {
246 | word-wrap: normal;
247 | background: none;
248 | display: inline;
249 | padding: 0;
250 | white-space: pre;
251 | }
252 |
253 | .workspace-leaf-content[data-type="diff-view"] .line-num1 {
254 | float: left;
255 | }
256 |
257 | .workspace-leaf-content[data-type="diff-view"] .line-num1,
258 | .workspace-leaf-content[data-type="diff-view"] .line-num2 {
259 | -webkit-box-sizing: border-box;
260 | box-sizing: border-box;
261 | overflow: hidden;
262 | padding: 0 0.5em;
263 | text-overflow: ellipsis;
264 | width: 3.5em;
265 | }
266 |
267 | .workspace-leaf-content[data-type="diff-view"] .line-num2 {
268 | float: right;
269 | }
270 |
271 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber {
272 | background-color: var(--background-primary);
273 | border: solid var(--background-modifier-border);
274 | border-width: 0 1px;
275 | -webkit-box-sizing: border-box;
276 | box-sizing: border-box;
277 | color: var(--text-muted);
278 | cursor: pointer;
279 | display: inline-block;
280 | position: absolute;
281 | text-align: right;
282 | width: 7.5em;
283 | }
284 |
285 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber:after {
286 | content: "\200b";
287 | }
288 |
289 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
290 | background-color: var(--background-primary);
291 | border: solid var(--background-modifier-border);
292 | border-width: 0 1px;
293 | -webkit-box-sizing: border-box;
294 | box-sizing: border-box;
295 | color: var(--text-muted);
296 | cursor: pointer;
297 | display: inline-block;
298 | overflow: hidden;
299 | padding: 0 0.5em;
300 | position: absolute;
301 | text-align: right;
302 | text-overflow: ellipsis;
303 | width: 4em;
304 | }
305 |
306 | .workspace-leaf-content[data-type="diff-view"] .d2h-diff-tbody tr {
307 | position: relative;
308 | }
309 |
310 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber:after {
311 | content: "\200b";
312 | }
313 |
314 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-emptyplaceholder,
315 | .workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
316 | background-color: var(--background-primary);
317 | border-color: var(--background-modifier-border);
318 | }
319 |
320 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-line-prefix,
321 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
322 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber,
323 | .workspace-leaf-content[data-type="diff-view"] .d2h-emptyplaceholder {
324 | -webkit-user-select: none;
325 | -moz-user-select: none;
326 | -ms-user-select: none;
327 | user-select: none;
328 | }
329 |
330 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-linenumber,
331 | .workspace-leaf-content[data-type="diff-view"] .d2h-code-side-linenumber {
332 | direction: rtl;
333 | }
334 |
335 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-del {
336 | background-color: #fee8e9;
337 | border-color: #e9aeae;
338 | }
339 |
340 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
341 | background-color: #dfd;
342 | border-color: #b4e2b4;
343 | }
344 |
345 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-del {
346 | background-color: #521b1d83;
347 | border-color: #691d1d73;
348 | }
349 |
350 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-ins {
351 | background-color: rgba(30, 71, 30, 0.5);
352 | border-color: #13501381;
353 | }
354 |
355 | .workspace-leaf-content[data-type="diff-view"] .d2h-info {
356 | background-color: var(--background-primary);
357 | border-color: var(--background-modifier-border);
358 | color: var(--text-normal);
359 | }
360 |
361 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change {
362 | background-color: #fdf2d0;
363 | }
364 |
365 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-del.d2h-change {
366 | background-color: #55492480;
367 | }
368 |
369 | .theme-light .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change {
370 | background-color: #ded;
371 | }
372 |
373 | .theme-dark .workspace-leaf-content[data-type="diff-view"] .d2h-file-diff .d2h-ins.d2h-change {
374 | background-color: rgba(37, 78, 37, 0.418);
375 | }
376 |
377 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper {
378 | margin-bottom: 10px;
379 | }
380 |
381 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a {
382 | color: #3572b0;
383 | text-decoration: none;
384 | }
385 |
386 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-wrapper a:visited {
387 | color: #3572b0;
388 | }
389 |
390 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-header {
391 | text-align: left;
392 | }
393 |
394 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-title {
395 | font-weight: 700;
396 | }
397 |
398 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list-line {
399 | display: -webkit-box;
400 | display: -ms-flexbox;
401 | display: flex;
402 | text-align: left;
403 | }
404 |
405 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list {
406 | display: block;
407 | list-style: none;
408 | margin: 0;
409 | padding: 0;
410 | }
411 |
412 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li {
413 | border-bottom: 1px solid var(--background-modifier-border);
414 | margin: 0;
415 | padding: 5px 10px;
416 | }
417 |
418 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-list>li:last-child {
419 | border-bottom: none;
420 | }
421 |
422 | .workspace-leaf-content[data-type="diff-view"] .d2h-file-switch {
423 | cursor: pointer;
424 | display: none;
425 | font-size: 10px;
426 | }
427 |
428 | .workspace-leaf-content[data-type="diff-view"] .d2h-icon {
429 | fill: currentColor;
430 | margin-right: 10px;
431 | vertical-align: middle;
432 | }
433 |
434 | .workspace-leaf-content[data-type="diff-view"] .d2h-deleted {
435 | color: #c33;
436 | }
437 |
438 | .workspace-leaf-content[data-type="diff-view"] .d2h-added {
439 | color: #399839;
440 | }
441 |
442 | .workspace-leaf-content[data-type="diff-view"] .d2h-changed {
443 | color: #d0b44c;
444 | }
445 |
446 | .workspace-leaf-content[data-type="diff-view"] .d2h-moved {
447 | color: #3572b0;
448 | }
449 |
450 | .workspace-leaf-content[data-type="diff-view"] .d2h-tag {
451 | background-color: var(--background-primary);
452 | display: -webkit-box;
453 | display: -ms-flexbox;
454 | display: flex;
455 | font-size: 10px;
456 | margin-left: 5px;
457 | padding: 0 2px;
458 | }
459 |
460 | .workspace-leaf-content[data-type="diff-view"] .d2h-deleted-tag {
461 | border: 2px solid #c33;
462 | }
463 |
464 | .workspace-leaf-content[data-type="diff-view"] .d2h-added-tag {
465 | border: 1px solid #399839;
466 | }
467 |
468 | .workspace-leaf-content[data-type="diff-view"] .d2h-changed-tag {
469 | border: 1px solid #d0b44c;
470 | }
471 |
472 | .workspace-leaf-content[data-type="diff-view"] .d2h-moved-tag {
473 | border: 1px solid #3572b0;
474 | }
--------------------------------------------------------------------------------