├── .github
└── workflows
│ └── release.yml
├── .gitignore
├── .prettierrc
├── LICENSE
├── README.md
├── esbuild.config.mjs
├── images
├── enable.png
├── example.gif
└── settings.png
├── main.ts
├── manifest.json
├── package.json
├── src
├── commands
│ ├── default.ts
│ ├── exampleless.ts
│ └── index.ts
├── commandsSuggest.ts
├── i18n.ts
├── index.ts
└── settings.ts
├── tsconfig.json
├── version-bump.mjs
├── versions.json
└── yarn.lock
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Build obsidian plugin
2 |
3 | on:
4 | push:
5 | tags:
6 | - "*"
7 |
8 | env:
9 | PLUGIN_NAME: markdown-commands
10 |
11 | jobs:
12 | build:
13 | runs-on: ubuntu-latest
14 |
15 | steps:
16 | - uses: actions/checkout@v2
17 | - name: Use Node.js
18 | uses: actions/setup-node@v1
19 | with:
20 | node-version: "14.x" # You might need to adjust this value to your own version
21 | - name: Build
22 | id: build
23 | run: |
24 | yarn
25 | yarn run build --if-present
26 | mkdir ${{ env.PLUGIN_NAME }}
27 | cp main.js manifest.json ${{ env.PLUGIN_NAME }}
28 | zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
29 | ls
30 | echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)"
31 | - name: Create Release
32 | id: create_release
33 | uses: actions/create-release@v1
34 | env:
35 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36 | VERSION: ${{ github.ref }}
37 | with:
38 | tag_name: ${{ github.ref }}
39 | release_name: ${{ github.ref }}
40 | draft: false
41 | prerelease: false
42 | - name: Upload zip file
43 | id: upload-zip
44 | uses: actions/upload-release-asset@v1
45 | env:
46 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47 | with:
48 | upload_url: ${{ steps.create_release.outputs.upload_url }}
49 | asset_path: ./${{ env.PLUGIN_NAME }}.zip
50 | asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.zip
51 | asset_content_type: application/zip
52 | - name: Upload main.js
53 | id: upload-main
54 | uses: actions/upload-release-asset@v1
55 | env:
56 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57 | with:
58 | upload_url: ${{ steps.create_release.outputs.upload_url }}
59 | asset_path: ./main.js
60 | asset_name: main.js
61 | asset_content_type: text/javascript
62 | - name: Upload manifest.json
63 | id: upload-manifest
64 | uses: actions/upload-release-asset@v1
65 | env:
66 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67 | with:
68 | upload_url: ${{ steps.create_release.outputs.upload_url }}
69 | asset_path: ./manifest.json
70 | asset_name: manifest.json
71 | asset_content_type: application/json
72 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # vscode
2 | .vscode
3 |
4 | # Intellij
5 | *.iml
6 | .idea
7 |
8 | # npm
9 | node_modules
10 |
11 | # Don't include the compiled main.js file in the repo.
12 | # They should be uploaded to GitHub releases instead.
13 | main.js
14 |
15 | # Exclude sourcemaps
16 | *.map
17 |
18 | # obsidian
19 | data.json
20 |
21 | # Exclude macOS Finder (System Explorer) View States
22 | .DS_Store
23 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "arrowParens": "avoid",
3 | "tabWidth": 4,
4 | "semi": false
5 | }
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2022 Jules Guesnon
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://GitHub.com/Naereen/StrapDown.js/releases/) [](https://GitHub.com/Naereen/StrapDown.js/releases/)
2 |
3 | # Obsidian Markdown Shortcuts
4 |
5 | This is a plugin for Obsidian (https://obsidian.md).
6 |
7 | # Why?
8 |
9 | If you're used to software like Notion, going from assisted markdown to plain markdown may be a bit hard if you're not used to it. You'll probably have to work with a [cheatsheet](https://www.markdownguide.org/cheat-sheet/) open in a tab in order to make sure you're not doing it wrong.
10 |
11 | Also some syntaxes are a bit cumbersome to write like the [table](https://www.markdownguide.org/cheat-sheet/#extended-syntax) one.
12 |
13 | So, if you're learning markdown or too lazy to write a table, this plugin is for you.
14 |
15 | # How it works?
16 |
17 | ## Show the commands
18 |
19 | All you have to do is to write a `>` whenever you want in a file, then make your choice.
20 |
21 | 
22 |
23 | ## Configure the plugin
24 |
25 | - `Trigger character` Set the character that will trigger the commands.
26 | - `Simple commands` Insert commands without examples.
27 |
28 | 
29 |
30 | # How to install?
31 |
32 | First, you need to have `Obsidian v0.12.17+`.
33 |
34 | - Go to `Settings > Community plugins`
35 |
36 | - Turn safe mode to `off`
37 |
38 | - Go to the [releases page](https://github.com/JulesGuesnon/obsidian-markdown-commands/releases)
39 |
40 | - Download the latest `markdown-commands-.zip`
41 |
42 | - Put the zip into `/.obsidian/plugins` (if the folder plugins doesn't exist you can create it)
43 |
44 | - Extract it
45 |
46 | - Enable the plugin in the settings and you're ready to go
47 |
48 | 
49 |
50 | # Any issue or suggestion?
51 |
52 | If you're facing an issue feel free to [open a new one](https://github.com/JulesGuesnon/obsidian-markdown-commands/issues/new) and describe as much as possible the issue, the context of the issue, etc...
53 |
54 | If you think that the plugin is missing something or could be improved, feel free to [open an issue](https://github.com/JulesGuesnon/obsidian-markdown-commands/issues/new) and describe your idea.
55 |
--------------------------------------------------------------------------------
/esbuild.config.mjs:
--------------------------------------------------------------------------------
1 | import esbuild from "esbuild"
2 | import process from "process"
3 | import builtins from "builtin-modules"
4 |
5 | const banner = `/*
6 | THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
7 | if you want to view the source, please visit the github repository of this plugin
8 | */
9 | `
10 |
11 | const prod = process.argv[2] === "production"
12 |
13 | esbuild
14 | .build({
15 | banner: {
16 | js: banner,
17 | },
18 | entryPoints: ["main.ts"],
19 | bundle: true,
20 | external: [
21 | "obsidian",
22 | "electron",
23 | "@codemirror/autocomplete",
24 | "@codemirror/closebrackets",
25 | "@codemirror/collab",
26 | "@codemirror/commands",
27 | "@codemirror/comment",
28 | "@codemirror/fold",
29 | "@codemirror/gutter",
30 | "@codemirror/highlight",
31 | "@codemirror/history",
32 | "@codemirror/language",
33 | "@codemirror/lint",
34 | "@codemirror/matchbrackets",
35 | "@codemirror/panel",
36 | "@codemirror/rangeset",
37 | "@codemirror/rectangular-selection",
38 | "@codemirror/search",
39 | "@codemirror/state",
40 | "@codemirror/stream-parser",
41 | "@codemirror/text",
42 | "@codemirror/tooltip",
43 | "@codemirror/view",
44 | ...builtins,
45 | ],
46 | format: "cjs",
47 | watch: !prod,
48 | target: "es2016",
49 | logLevel: "info",
50 | sourcemap: prod ? false : "inline",
51 | treeShaking: true,
52 | outfile: "main.js",
53 | minify: prod,
54 | })
55 | .catch(() => process.exit(1))
56 |
--------------------------------------------------------------------------------
/images/enable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JulesGuesnon/obsidian-markdown-shortcuts/92e4c21082d56d18beef236f4d63643aca3b52e8/images/enable.png
--------------------------------------------------------------------------------
/images/example.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JulesGuesnon/obsidian-markdown-shortcuts/92e4c21082d56d18beef236f4d63643aca3b52e8/images/example.gif
--------------------------------------------------------------------------------
/images/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JulesGuesnon/obsidian-markdown-shortcuts/92e4c21082d56d18beef236f4d63643aca3b52e8/images/settings.png
--------------------------------------------------------------------------------
/main.ts:
--------------------------------------------------------------------------------
1 | import { Editor, MarkdownView, Plugin } from "obsidian"
2 | import { Settings, CommandsSuggest, t } from "./src"
3 |
4 | interface MarkdownShortcutsSettings {
5 | triggerChar: string
6 | examplelessCommands: boolean
7 | }
8 |
9 | const DEFAULT_SETTINGS: MarkdownShortcutsSettings = {
10 | triggerChar: ">",
11 | examplelessCommands: false,
12 | }
13 |
14 | export default class MarkdownShortcuts extends Plugin {
15 | settings: MarkdownShortcutsSettings
16 |
17 | async onload() {
18 | await this.loadSettings()
19 |
20 | this.addSettingTab(new Settings(this.app, this))
21 |
22 | this.registerEditorSuggest(new CommandsSuggest(this.app, this))
23 | }
24 |
25 | onunload() {}
26 |
27 | async loadSettings() {
28 | this.settings = { ...DEFAULT_SETTINGS, ...(await this.loadData()) }
29 | }
30 |
31 | async saveSettings() {
32 | await this.saveData(this.settings)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "markdown-shortcuts",
3 | "name": "Markdown shortcuts",
4 | "version": "0.4.0",
5 | "minAppVersion": "0.12.17",
6 | "description": "Allows to write markdown from shortcuts (example: >h1 -> #).",
7 | "author": "Jules Guesnon",
8 | "authorUrl": "https://github.com/JulesGuesnon",
9 | "isDesktopOnly": false
10 | }
11 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "markdown-shortcuts",
3 | "version": "0.4.0",
4 | "description": "A configurable plugin for Obsidian that allow you to write commands to make markdown (example: >h1 -> #)",
5 | "main": "main.js",
6 | "scripts": {
7 | "dev": "node esbuild.config.mjs",
8 | "build": "tsc -noEmit -skipLibCheck && node esbuild.config.mjs production",
9 | "version": "node version-bump.mjs",
10 | "lint": "prettier --write *.ts ./src"
11 | },
12 | "keywords": [],
13 | "author": "",
14 | "license": "MIT",
15 | "devDependencies": {
16 | "@types/node": "^16.11.6",
17 | "@typescript-eslint/eslint-plugin": "^5.2.0",
18 | "@typescript-eslint/parser": "^5.2.0",
19 | "builtin-modules": "^3.2.0",
20 | "esbuild": "0.13.12",
21 | "obsidian": "^0.12.17",
22 | "tslib": "2.3.1",
23 | "typescript": "4.4.4"
24 | },
25 | "dependencies": {
26 | "prettier": "^2.7.1"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/commands/default.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | label: "h1",
4 | value: "# ",
5 | },
6 | {
7 | label: "h2",
8 | value: "## ",
9 | },
10 | {
11 | label: "h3",
12 | value: "### ",
13 | },
14 | {
15 | label: "h4",
16 | value: "#### ",
17 | },
18 | {
19 | label: "h5",
20 | value: "##### ",
21 | },
22 | {
23 | label: "h6",
24 | value: "###### ",
25 | },
26 | {
27 | label: "bold",
28 | value: "**bold**",
29 | },
30 | {
31 | label: "italic",
32 | value: "*italic*",
33 | },
34 | {
35 | label: "strike",
36 | value: "~~strike~~",
37 | },
38 | {
39 | label: "highlight",
40 | value: "==highlight==",
41 | },
42 | {
43 | label: "quote",
44 | value: "> ",
45 | },
46 | {
47 | label: "ordered-list",
48 | value: `
49 | 1. First item
50 | 2. Second item
51 | 3. Third item`,
52 | },
53 | {
54 | label: "unordered-list",
55 | value: `
56 | - First item
57 | - Second item
58 | - Third item`,
59 | },
60 | {
61 | label: "external-link",
62 | value: "[link text](https://my.link)",
63 | },
64 | {
65 | label: "image",
66 | value: "",
67 | },
68 | {
69 | label: "table",
70 | value: `
71 | |Left aligned text|Centered text| Right aligned text|
72 | |---|:---:|---:|
73 | |Cell|Cell|Cell|`,
74 | },
75 | {
76 | label: "inline-code",
77 | value: `\`let hello = "world"\``,
78 | },
79 | {
80 | label: "codeblock",
81 | value: `
82 | \`\`\`rust
83 | let hello = 'world'
84 | \`\`\``,
85 | },
86 | {
87 | label: "todo",
88 | value: "- [ ] To do",
89 | },
90 | {
91 | label: "line-break",
92 | value: "
",
93 | },
94 |
95 | {
96 | label: "divider",
97 | value: `
98 | Optional
99 | ---`,
100 | },
101 | {
102 | label: "footnote",
103 | value: "[^id]: value",
104 | },
105 | {
106 | label: "link",
107 | value: "[[note|alias]]",
108 | },
109 | {
110 | label: "embed",
111 | value: "![[page]]",
112 | },
113 | {
114 | label: "tag",
115 | value: "#tag",
116 | },
117 | ]
118 |
--------------------------------------------------------------------------------
/src/commands/exampleless.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | label: "h1",
4 | value: "# ",
5 | },
6 | {
7 | label: "h2",
8 | value: "## ",
9 | },
10 | {
11 | label: "h3",
12 | value: "### ",
13 | },
14 | {
15 | label: "h4",
16 | value: "#### ",
17 | },
18 | {
19 | label: "h5",
20 | value: "##### ",
21 | },
22 | {
23 | label: "h6",
24 | value: "###### ",
25 | },
26 | {
27 | label: "bold",
28 | value: "****",
29 | },
30 | {
31 | label: "italic",
32 | value: "**",
33 | },
34 | {
35 | label: "strike",
36 | value: "~~~~",
37 | },
38 | {
39 | label: "highlight",
40 | value: "====",
41 | },
42 | {
43 | label: "quote",
44 | value: "> ",
45 | },
46 | {
47 | label: "ordered-list",
48 | value: `1. `,
49 | },
50 | {
51 | label: "unordered-list",
52 | value: `- `,
53 | },
54 | {
55 | label: "external-link",
56 | value: "[]()",
57 | },
58 | {
59 | label: "image",
60 | value: "![]()",
61 | },
62 | {
63 | label: "table",
64 | value: `
65 | | | | |
66 | |---|:---:|---:|
67 | | | | |`,
68 | },
69 | {
70 | label: "inline-code",
71 | value: `\`\``,
72 | },
73 | {
74 | label: "codeblock",
75 | value: `
76 | \`\`\`
77 |
78 | \`\`\``,
79 | },
80 | {
81 | label: "todo",
82 | value: "- [ ] ",
83 | },
84 | {
85 | label: "line-break",
86 | value: "
",
87 | },
88 |
89 | {
90 | label: "divider",
91 | value: `
92 | ---
93 | `,
94 | },
95 | {
96 | label: "footnote",
97 | value: "[^]: ",
98 | },
99 | {
100 | label: "link",
101 | value: "[[|]]",
102 | },
103 | {
104 | label: "embed",
105 | value: "![[]]",
106 | },
107 | {
108 | label: "tag",
109 | value: "#",
110 | },
111 | ]
112 |
--------------------------------------------------------------------------------
/src/commands/index.ts:
--------------------------------------------------------------------------------
1 | import MarkdownShortcuts from "../../main"
2 | import defaultCommands from "./default"
3 | import examplelessCommands from "./exampleless"
4 |
5 | export type Command = {
6 | label: string
7 | value: string
8 | }
9 |
10 | export function resolveCommands(plugin: MarkdownShortcuts) {
11 | if (plugin.settings.examplelessCommands) return examplelessCommands
12 | return defaultCommands
13 | }
14 |
--------------------------------------------------------------------------------
/src/commandsSuggest.ts:
--------------------------------------------------------------------------------
1 | import MarkdownShortcuts from "../main"
2 | import {
3 | App,
4 | Editor,
5 | EditorPosition,
6 | EditorSuggest,
7 | EditorSuggestContext,
8 | EditorSuggestTriggerInfo,
9 | TFile,
10 | } from "obsidian"
11 | import { resolveCommands, Command } from "./commands"
12 | import t from "./i18n"
13 |
14 | export default class CommandsSuggest extends EditorSuggest {
15 | inCmd = false
16 | cmdStartCh = 0
17 | plugin: MarkdownShortcuts
18 |
19 | constructor(app: App, plugin: MarkdownShortcuts) {
20 | super(app)
21 | this.plugin = plugin
22 | }
23 | resetInfos() {
24 | this.cmdStartCh = 0
25 | this.inCmd = false
26 | }
27 |
28 | onTrigger(
29 | cursor: EditorPosition,
30 | editor: Editor,
31 | _file: TFile
32 | ): EditorSuggestTriggerInfo {
33 | const currentLine = editor.getLine(cursor.line).slice(0, cursor.ch)
34 |
35 | if (
36 | !this.inCmd &&
37 | currentLine[currentLine.length - 1] !==
38 | this.plugin.settings.triggerChar
39 | ) {
40 | this.resetInfos()
41 | return null
42 | }
43 |
44 | if (!this.inCmd) {
45 | this.cmdStartCh = currentLine.length - 1
46 | this.inCmd = true
47 | }
48 |
49 | const currentCmd = currentLine.slice(this.cmdStartCh, cursor.ch)
50 |
51 | if (
52 | currentCmd.includes(" ") ||
53 | !currentCmd.includes(this.plugin.settings.triggerChar)
54 | ) {
55 | this.resetInfos()
56 | return null
57 | }
58 |
59 | return { start: cursor, end: cursor, query: currentCmd.slice(1) }
60 | }
61 |
62 | getSuggestions(
63 | context: EditorSuggestContext
64 | ): Command[] | Promise {
65 | const suggestions = resolveCommands(this.plugin).filter(({ label }) =>
66 | label.includes(context.query)
67 | )
68 |
69 | return suggestions.length > 0
70 | ? suggestions
71 | : [{ label: t.commandsSuggest.noResult, value: "" }]
72 | }
73 |
74 | renderSuggestion(value: Command, el: HTMLElement): void {
75 | const div = document.createElement("div")
76 |
77 | div.textContent = value.label
78 |
79 | el.appendChild(div)
80 | }
81 |
82 | selectSuggestion(cmd: Command, _evt: MouseEvent | KeyboardEvent): void {
83 | if (cmd.label === t.commandsSuggest.noResult) return
84 |
85 | this.context.editor.replaceRange(
86 | cmd.value,
87 | { ...this.context.start, ch: this.cmdStartCh },
88 | this.context.end
89 | )
90 |
91 | this.resetInfos()
92 |
93 | this.close()
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/i18n.ts:
--------------------------------------------------------------------------------
1 | class T {
2 | lang: string
3 |
4 | all = {
5 | en: {
6 | settings: {
7 | title: "Markdown commands settings",
8 | description:
9 | "To quickly enable or disable the plugin, you can use the command palette.",
10 | toggle: {
11 | title: "Activated",
12 | description: "Wether or not the suggest will be triggered.",
13 | },
14 | character: {
15 | title: "Trigger character",
16 | description:
17 | "Which character should show the suggestions. (press a key to replace the current char)",
18 | },
19 | examplelessCommands: {
20 | title: "Exampleless commands",
21 | description:
22 | "Insert commands without examples: [ ]( ) instead of [link text](https://my.link)",
23 | tooltip: "Exampleless commands",
24 | },
25 | },
26 | commandsSuggest: {
27 | noResult: "No result",
28 | },
29 | commandPalette: {
30 | enable: "Enable",
31 | disabled: "Disable",
32 | },
33 | },
34 | fr: {
35 | settings: {
36 | title: "Réglages Commandes Markdown",
37 | description:
38 | "Pour rapidement activer ou désactiver le plugin, vous pouvez utiliser la palette de commande.",
39 | toggle: {
40 | title: "Activé",
41 | description: "Si la suggestion sera déclenchée ou non.",
42 | },
43 | character: {
44 | title: "Caractère de déclenchement",
45 | description:
46 | "Quel caractère doit déclencher l'affichage des suggestions. (appuyez sur une touche pour remplacer le caractère actuel)",
47 | },
48 | examplelessCommands: {
49 | title: "Commandes sans exemple",
50 | description:
51 | "Insère des commandes sans exemple: [ ]( ) au lieu de [link text](https://my.link)",
52 | tooltip: "Commandes sans exemple",
53 | },
54 | },
55 | commandsSuggest: {
56 | noResult: "Pas de résultat",
57 | },
58 | commandPalette: {
59 | enable: "Activer",
60 | disabled: "Désactiver",
61 | },
62 | },
63 | }
64 |
65 | constructor() {
66 | this.lang = localStorage.getItem("language")
67 | }
68 |
69 | get texts(): typeof this.all.en {
70 | return this.all[this.lang === "fr" ? "fr" : "en"]
71 | }
72 | }
73 |
74 | export default new T().texts
75 |
--------------------------------------------------------------------------------
/src/index.ts:
--------------------------------------------------------------------------------
1 | export { default as Settings } from "./settings"
2 | export { default as CommandsSuggest } from "./commandsSuggest"
3 | export { default as t } from "./i18n"
4 |
--------------------------------------------------------------------------------
/src/settings.ts:
--------------------------------------------------------------------------------
1 | import MarkdownShortcuts from "../main"
2 | import { App, PluginSettingTab, Setting } from "obsidian"
3 | import t from "./i18n"
4 |
5 | export default class SettingTab extends PluginSettingTab {
6 | plugin: MarkdownShortcuts
7 |
8 | constructor(app: App, plugin: MarkdownShortcuts) {
9 | super(app, plugin)
10 | this.plugin = plugin
11 | }
12 |
13 | display(): void {
14 | const { containerEl } = this
15 |
16 | containerEl.empty()
17 |
18 | containerEl.createEl("h2", { text: t.settings.title })
19 | containerEl.createEl("p", {
20 | text: t.settings.description,
21 | })
22 |
23 | new Setting(containerEl)
24 | .setName(t.settings.character.title)
25 | .setDesc(t.settings.character.description)
26 | .addText(text => {
27 | text.setValue(this.plugin.settings.triggerChar).onChange(
28 | async value => {
29 | if (value.trim().length < 1) {
30 | text.setValue(this.plugin.settings.triggerChar)
31 | return
32 | }
33 |
34 | let char = value[0]
35 |
36 | if (value.trim().length === 2) {
37 | char = value.replace(
38 | this.plugin.settings.triggerChar,
39 | ""
40 | )
41 | }
42 |
43 | text.setValue(char)
44 |
45 | this.plugin.settings.triggerChar = char
46 |
47 | await this.plugin.saveSettings()
48 | }
49 | )
50 | })
51 |
52 | new Setting(containerEl)
53 | .setName(t.settings.examplelessCommands.title)
54 | .setDesc(t.settings.examplelessCommands.description)
55 | .addToggle(toggle => {
56 | toggle
57 | .setTooltip(t.settings.examplelessCommands.tooltip)
58 | .setValue(this.plugin.settings.examplelessCommands)
59 | .onChange(async value => {
60 | this.plugin.settings.examplelessCommands = value
61 | await this.plugin.saveSettings()
62 | })
63 | })
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "inlineSourceMap": true,
5 | "inlineSources": true,
6 | "module": "ESNext",
7 | "target": "ES6",
8 | "allowJs": true,
9 | "noImplicitAny": true,
10 | "moduleResolution": "node",
11 | "importHelpers": true,
12 | "isolatedModules": true,
13 | "lib": [
14 | "DOM",
15 | "ES5",
16 | "ES6",
17 | "ES7"
18 | ]
19 | },
20 | "include": [
21 | "**/*.ts"
22 | ]
23 | }
24 |
--------------------------------------------------------------------------------
/version-bump.mjs:
--------------------------------------------------------------------------------
1 | import { readFileSync, writeFileSync } from "fs";
2 |
3 | const targetVersion = process.env.npm_package_version;
4 |
5 | // read minAppVersion from manifest.json and bump version to target version
6 | let manifest = JSON.parse(readFileSync("manifest.json", "utf8"));
7 | const { minAppVersion } = manifest;
8 | manifest.version = targetVersion;
9 | writeFileSync("manifest.json", JSON.stringify(manifest, null, "\t"));
10 |
11 | // update versions.json with target version and minAppVersion from manifest.json
12 | let versions = JSON.parse(readFileSync("versions.json", "utf8"));
13 | versions[targetVersion] = minAppVersion;
14 | writeFileSync("versions.json", JSON.stringify(versions, null, "\t"));
15 |
--------------------------------------------------------------------------------
/versions.json:
--------------------------------------------------------------------------------
1 | {
2 | "0.1.0": "0.12.17",
3 | "0.1.1": "0.12.17",
4 | "0.2.0": "0.12.17",
5 | "0.2.1": "0.12.17",
6 | "0.2.2": "0.12.17",
7 | "0.2.3": "0.12.17",
8 | "0.3.0": "0.12.17",
9 | "0.3.1": "0.12.17",
10 | "0.4.0": "0.12.17"
11 | }
12 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@nodelib/fs.scandir@2.1.5":
6 | version "2.1.5"
7 | resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
8 | integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
9 | dependencies:
10 | "@nodelib/fs.stat" "2.0.5"
11 | run-parallel "^1.1.9"
12 |
13 | "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
14 | version "2.0.5"
15 | resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
16 | integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
17 |
18 | "@nodelib/fs.walk@^1.2.3":
19 | version "1.2.8"
20 | resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
21 | integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
22 | dependencies:
23 | "@nodelib/fs.scandir" "2.1.5"
24 | fastq "^1.6.0"
25 |
26 | "@types/codemirror@0.0.108":
27 | version "0.0.108"
28 | resolved "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.108.tgz"
29 | integrity sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==
30 | dependencies:
31 | "@types/tern" "*"
32 |
33 | "@types/estree@*":
34 | version "0.0.51"
35 | resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz"
36 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
37 |
38 | "@types/json-schema@^7.0.9":
39 | version "7.0.9"
40 | resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz"
41 | integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
42 |
43 | "@types/node@^16.11.6":
44 | version "16.11.24"
45 | resolved "https://registry.npmjs.org/@types/node/-/node-16.11.24.tgz"
46 | integrity sha512-Ezv33Rl4mIi6YdSHfIRNBd4Q9kUe5okiaw/ikvJiJDmuQZNW5kfdg7+oQPF8NO6sTcr3woIpj3jANzTXdvEZXA==
47 |
48 | "@types/tern@*":
49 | version "0.23.4"
50 | resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz"
51 | integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==
52 | dependencies:
53 | "@types/estree" "*"
54 |
55 | "@typescript-eslint/eslint-plugin@^5.2.0":
56 | version "5.11.0"
57 | resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.11.0.tgz"
58 | integrity sha512-HJh33bgzXe6jGRocOj4FmefD7hRY4itgjzOrSs3JPrTNXsX7j5+nQPciAUj/1nZtwo2kAc3C75jZO+T23gzSGw==
59 | dependencies:
60 | "@typescript-eslint/scope-manager" "5.11.0"
61 | "@typescript-eslint/type-utils" "5.11.0"
62 | "@typescript-eslint/utils" "5.11.0"
63 | debug "^4.3.2"
64 | functional-red-black-tree "^1.0.1"
65 | ignore "^5.1.8"
66 | regexpp "^3.2.0"
67 | semver "^7.3.5"
68 | tsutils "^3.21.0"
69 |
70 | "@typescript-eslint/parser@^5.2.0":
71 | version "5.11.0"
72 | resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.11.0.tgz"
73 | integrity sha512-x0DCjetHZYBRovJdr3U0zG9OOdNXUaFLJ82ehr1AlkArljJuwEsgnud+Q7umlGDFLFrs8tU8ybQDFocp/eX8mQ==
74 | dependencies:
75 | "@typescript-eslint/scope-manager" "5.11.0"
76 | "@typescript-eslint/types" "5.11.0"
77 | "@typescript-eslint/typescript-estree" "5.11.0"
78 | debug "^4.3.2"
79 |
80 | "@typescript-eslint/scope-manager@5.11.0":
81 | version "5.11.0"
82 | resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.11.0.tgz"
83 | integrity sha512-z+K4LlahDFVMww20t/0zcA7gq/NgOawaLuxgqGRVKS0PiZlCTIUtX0EJbC0BK1JtR4CelmkPK67zuCgpdlF4EA==
84 | dependencies:
85 | "@typescript-eslint/types" "5.11.0"
86 | "@typescript-eslint/visitor-keys" "5.11.0"
87 |
88 | "@typescript-eslint/type-utils@5.11.0":
89 | version "5.11.0"
90 | resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.11.0.tgz"
91 | integrity sha512-wDqdsYO6ofLaD4DsGZ0jGwxp4HrzD2YKulpEZXmgN3xo4BHJwf7kq49JTRpV0Gx6bxkSUmc9s0EIK1xPbFFpIA==
92 | dependencies:
93 | "@typescript-eslint/utils" "5.11.0"
94 | debug "^4.3.2"
95 | tsutils "^3.21.0"
96 |
97 | "@typescript-eslint/types@5.11.0":
98 | version "5.11.0"
99 | resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.11.0.tgz"
100 | integrity sha512-cxgBFGSRCoBEhvSVLkKw39+kMzUKHlJGVwwMbPcTZX3qEhuXhrjwaZXWMxVfxDgyMm+b5Q5b29Llo2yow8Y7xQ==
101 |
102 | "@typescript-eslint/typescript-estree@5.11.0":
103 | version "5.11.0"
104 | resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.11.0.tgz"
105 | integrity sha512-yVH9hKIv3ZN3lw8m/Jy5I4oXO4ZBMqijcXCdA4mY8ull6TPTAoQnKKrcZ0HDXg7Bsl0Unwwx7jcXMuNZc0m4lg==
106 | dependencies:
107 | "@typescript-eslint/types" "5.11.0"
108 | "@typescript-eslint/visitor-keys" "5.11.0"
109 | debug "^4.3.2"
110 | globby "^11.0.4"
111 | is-glob "^4.0.3"
112 | semver "^7.3.5"
113 | tsutils "^3.21.0"
114 |
115 | "@typescript-eslint/utils@5.11.0":
116 | version "5.11.0"
117 | resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.11.0.tgz"
118 | integrity sha512-g2I480tFE1iYRDyMhxPAtLQ9HAn0jjBtipgTCZmd9I9s11OV8CTsG+YfFciuNDcHqm4csbAgC2aVZCHzLxMSUw==
119 | dependencies:
120 | "@types/json-schema" "^7.0.9"
121 | "@typescript-eslint/scope-manager" "5.11.0"
122 | "@typescript-eslint/types" "5.11.0"
123 | "@typescript-eslint/typescript-estree" "5.11.0"
124 | eslint-scope "^5.1.1"
125 | eslint-utils "^3.0.0"
126 |
127 | "@typescript-eslint/visitor-keys@5.11.0":
128 | version "5.11.0"
129 | resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.11.0.tgz"
130 | integrity sha512-E8w/vJReMGuloGxJDkpPlGwhxocxOpSVgSvjiLO5IxZPmxZF30weOeJYyPSEACwM+X4NziYS9q+WkN/2DHYQwA==
131 | dependencies:
132 | "@typescript-eslint/types" "5.11.0"
133 | eslint-visitor-keys "^3.0.0"
134 |
135 | array-union@^2.1.0:
136 | version "2.1.0"
137 | resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
138 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
139 |
140 | braces@^3.0.1:
141 | version "3.0.2"
142 | resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
143 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
144 | dependencies:
145 | fill-range "^7.0.1"
146 |
147 | builtin-modules@^3.2.0:
148 | version "3.2.0"
149 | resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz"
150 | integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
151 |
152 | debug@^4.3.2:
153 | version "4.3.3"
154 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz"
155 | integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==
156 | dependencies:
157 | ms "2.1.2"
158 |
159 | dir-glob@^3.0.1:
160 | version "3.0.1"
161 | resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
162 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
163 | dependencies:
164 | path-type "^4.0.0"
165 |
166 | esbuild-android-arm64@0.13.12:
167 | version "0.13.12"
168 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.12.tgz#e1f199dc05405cdc6670c00fb6c793822bf8ae4c"
169 | integrity sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==
170 |
171 | esbuild-darwin-64@0.13.12:
172 | version "0.13.12"
173 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.12.tgz#f5c59e622955c01f050e5a7ac9c1d41db714b94d"
174 | integrity sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==
175 |
176 | esbuild-darwin-arm64@0.13.12:
177 | version "0.13.12"
178 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.12.tgz#8abae74c2956a8aa568fc52c78829338c4a4b988"
179 | integrity sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==
180 |
181 | esbuild-freebsd-64@0.13.12:
182 | version "0.13.12"
183 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.12.tgz#6ad2ab8c0364ee7dd2d6e324d876a8e60ae75d12"
184 | integrity sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==
185 |
186 | esbuild-freebsd-arm64@0.13.12:
187 | version "0.13.12"
188 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.12.tgz#6f38155f4c300ac4c8adde1fde3cc6a4440a8294"
189 | integrity sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==
190 |
191 | esbuild-linux-32@0.13.12:
192 | version "0.13.12"
193 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.12.tgz#b1d15e330188a8c21de75c3f0058628a3eefade7"
194 | integrity sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==
195 |
196 | esbuild-linux-64@0.13.12:
197 | version "0.13.12"
198 | resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.12.tgz"
199 | integrity sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==
200 |
201 | esbuild-linux-arm64@0.13.12:
202 | version "0.13.12"
203 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.12.tgz#ba582298457cc5c9ac823a275de117620c06537f"
204 | integrity sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==
205 |
206 | esbuild-linux-arm@0.13.12:
207 | version "0.13.12"
208 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.12.tgz#6bc81c957bff22725688cc6359c29a25765be09b"
209 | integrity sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==
210 |
211 | esbuild-linux-mips64le@0.13.12:
212 | version "0.13.12"
213 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.12.tgz#ef3c4aba3e585d847cbade5945a8b4a5c62c7ce2"
214 | integrity sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==
215 |
216 | esbuild-linux-ppc64le@0.13.12:
217 | version "0.13.12"
218 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.12.tgz#a21fb64e80c38bef06122e48283990fc6db578e1"
219 | integrity sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==
220 |
221 | esbuild-netbsd-64@0.13.12:
222 | version "0.13.12"
223 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.12.tgz#1ea7fc8cfce88a20a4047b867ef184049a6641ae"
224 | integrity sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==
225 |
226 | esbuild-openbsd-64@0.13.12:
227 | version "0.13.12"
228 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.12.tgz#adde32f2f1b05dc4bd4fc544d6ea5a4379f9ca4d"
229 | integrity sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==
230 |
231 | esbuild-sunos-64@0.13.12:
232 | version "0.13.12"
233 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.12.tgz#a7ecaf52b7364fbee76dc8aa707fa3e1cff3342c"
234 | integrity sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==
235 |
236 | esbuild-windows-32@0.13.12:
237 | version "0.13.12"
238 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.12.tgz#a8756033dc905c4b7bea19be69f7ee68809f8770"
239 | integrity sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==
240 |
241 | esbuild-windows-64@0.13.12:
242 | version "0.13.12"
243 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.12.tgz#ae694aa66ca078acb8509b2da31197ed1f40f798"
244 | integrity sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==
245 |
246 | esbuild-windows-arm64@0.13.12:
247 | version "0.13.12"
248 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.12.tgz#782c5a8bd6d717ea55aaafe648f9926ca36a4a88"
249 | integrity sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==
250 |
251 | esbuild@0.13.12:
252 | version "0.13.12"
253 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.13.12.tgz"
254 | integrity sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==
255 | optionalDependencies:
256 | esbuild-android-arm64 "0.13.12"
257 | esbuild-darwin-64 "0.13.12"
258 | esbuild-darwin-arm64 "0.13.12"
259 | esbuild-freebsd-64 "0.13.12"
260 | esbuild-freebsd-arm64 "0.13.12"
261 | esbuild-linux-32 "0.13.12"
262 | esbuild-linux-64 "0.13.12"
263 | esbuild-linux-arm "0.13.12"
264 | esbuild-linux-arm64 "0.13.12"
265 | esbuild-linux-mips64le "0.13.12"
266 | esbuild-linux-ppc64le "0.13.12"
267 | esbuild-netbsd-64 "0.13.12"
268 | esbuild-openbsd-64 "0.13.12"
269 | esbuild-sunos-64 "0.13.12"
270 | esbuild-windows-32 "0.13.12"
271 | esbuild-windows-64 "0.13.12"
272 | esbuild-windows-arm64 "0.13.12"
273 |
274 | eslint-scope@^5.1.1:
275 | version "5.1.1"
276 | resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
277 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
278 | dependencies:
279 | esrecurse "^4.3.0"
280 | estraverse "^4.1.1"
281 |
282 | eslint-utils@^3.0.0:
283 | version "3.0.0"
284 | resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz"
285 | integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
286 | dependencies:
287 | eslint-visitor-keys "^2.0.0"
288 |
289 | eslint-visitor-keys@^2.0.0:
290 | version "2.1.0"
291 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
292 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
293 |
294 | eslint-visitor-keys@^3.0.0:
295 | version "3.3.0"
296 | resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
297 | integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
298 |
299 | esrecurse@^4.3.0:
300 | version "4.3.0"
301 | resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
302 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
303 | dependencies:
304 | estraverse "^5.2.0"
305 |
306 | estraverse@^4.1.1:
307 | version "4.3.0"
308 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
309 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
310 |
311 | estraverse@^5.2.0:
312 | version "5.3.0"
313 | resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
314 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
315 |
316 | fast-glob@^3.2.9:
317 | version "3.2.11"
318 | resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz"
319 | integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
320 | dependencies:
321 | "@nodelib/fs.stat" "^2.0.2"
322 | "@nodelib/fs.walk" "^1.2.3"
323 | glob-parent "^5.1.2"
324 | merge2 "^1.3.0"
325 | micromatch "^4.0.4"
326 |
327 | fastq@^1.6.0:
328 | version "1.13.0"
329 | resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz"
330 | integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
331 | dependencies:
332 | reusify "^1.0.4"
333 |
334 | fill-range@^7.0.1:
335 | version "7.0.1"
336 | resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
337 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
338 | dependencies:
339 | to-regex-range "^5.0.1"
340 |
341 | functional-red-black-tree@^1.0.1:
342 | version "1.0.1"
343 | resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz"
344 | integrity "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g=="
345 |
346 | glob-parent@^5.1.2:
347 | version "5.1.2"
348 | resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
349 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
350 | dependencies:
351 | is-glob "^4.0.1"
352 |
353 | globby@^11.0.4:
354 | version "11.1.0"
355 | resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
356 | integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
357 | dependencies:
358 | array-union "^2.1.0"
359 | dir-glob "^3.0.1"
360 | fast-glob "^3.2.9"
361 | ignore "^5.2.0"
362 | merge2 "^1.4.1"
363 | slash "^3.0.0"
364 |
365 | ignore@^5.1.8, ignore@^5.2.0:
366 | version "5.2.0"
367 | resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"
368 | integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
369 |
370 | is-extglob@^2.1.1:
371 | version "2.1.1"
372 | resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
373 | integrity "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
374 |
375 | is-glob@^4.0.1, is-glob@^4.0.3:
376 | version "4.0.3"
377 | resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
378 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
379 | dependencies:
380 | is-extglob "^2.1.1"
381 |
382 | is-number@^7.0.0:
383 | version "7.0.0"
384 | resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
385 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
386 |
387 | lru-cache@^6.0.0:
388 | version "6.0.0"
389 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
390 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
391 | dependencies:
392 | yallist "^4.0.0"
393 |
394 | merge2@^1.3.0, merge2@^1.4.1:
395 | version "1.4.1"
396 | resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
397 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
398 |
399 | micromatch@^4.0.4:
400 | version "4.0.4"
401 | resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz"
402 | integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==
403 | dependencies:
404 | braces "^3.0.1"
405 | picomatch "^2.2.3"
406 |
407 | moment@2.29.1:
408 | version "2.29.1"
409 | resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz"
410 | integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
411 |
412 | ms@2.1.2:
413 | version "2.1.2"
414 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
415 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
416 |
417 | obsidian@^0.12.17:
418 | version "0.12.17"
419 | resolved "https://registry.npmjs.org/obsidian/-/obsidian-0.12.17.tgz"
420 | integrity sha512-YvCAlRym9D8zNPXt6Ez8QubSTVGoChx6lb58zqI13Dcrz3l1lgUO+pcOGDiD5Qa67nzDZLXo3aV2rqkCCpTvGQ==
421 | dependencies:
422 | "@types/codemirror" "0.0.108"
423 | moment "2.29.1"
424 |
425 | path-type@^4.0.0:
426 | version "4.0.0"
427 | resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
428 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
429 |
430 | picomatch@^2.2.3:
431 | version "2.3.1"
432 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
433 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
434 |
435 | prettier@^2.7.1:
436 | version "2.7.1"
437 | resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz"
438 | integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==
439 |
440 | queue-microtask@^1.2.2:
441 | version "1.2.3"
442 | resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
443 | integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
444 |
445 | regexpp@^3.2.0:
446 | version "3.2.0"
447 | resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz"
448 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
449 |
450 | reusify@^1.0.4:
451 | version "1.0.4"
452 | resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
453 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
454 |
455 | run-parallel@^1.1.9:
456 | version "1.2.0"
457 | resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
458 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
459 | dependencies:
460 | queue-microtask "^1.2.2"
461 |
462 | semver@^7.3.5:
463 | version "7.3.5"
464 | resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz"
465 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
466 | dependencies:
467 | lru-cache "^6.0.0"
468 |
469 | slash@^3.0.0:
470 | version "3.0.0"
471 | resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
472 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
473 |
474 | to-regex-range@^5.0.1:
475 | version "5.0.1"
476 | resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
477 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
478 | dependencies:
479 | is-number "^7.0.0"
480 |
481 | tslib@2.3.1:
482 | version "2.3.1"
483 | resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz"
484 | integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
485 |
486 | tslib@^1.8.1:
487 | version "1.14.1"
488 | resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
489 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
490 |
491 | tsutils@^3.21.0:
492 | version "3.21.0"
493 | resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"
494 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
495 | dependencies:
496 | tslib "^1.8.1"
497 |
498 | typescript@4.4.4:
499 | version "4.4.4"
500 | resolved "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz"
501 | integrity sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==
502 |
503 | yallist@^4.0.0:
504 | version "4.0.0"
505 | resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
506 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
507 |
--------------------------------------------------------------------------------