├── .editorconfig ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .npmrc ├── CONTRIB.md ├── LICENSE ├── README.md ├── esbuild.config.mjs ├── manifest.json ├── package.json ├── pnpm-lock.yaml ├── src ├── components │ └── OpenFilePlgSettingTab.ts └── main.ts ├── tsconfig.json ├── version-bump.mjs └── versions.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # top-most EditorConfig file 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | insert_final_newline = true 8 | indent_style = tab 9 | indent_size = 4 10 | tab_width = 4 11 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | npm node_modules 2 | build -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "parser": "@typescript-eslint/parser", 4 | "env": { "node": true }, 5 | "plugins": [ 6 | "@typescript-eslint" 7 | ], 8 | "extends": [ 9 | "eslint:recommended", 10 | "plugin:@typescript-eslint/eslint-recommended", 11 | "plugin:@typescript-eslint/recommended" 12 | ], 13 | "parserOptions": { 14 | "sourceType": "module" 15 | }, 16 | "rules": { 17 | "no-unused-vars": "off", 18 | "@typescript-eslint/no-unused-vars": ["error", { "args": "none" }], 19 | "@typescript-eslint/ban-ts-comment": "off", 20 | "no-prototype-builtins": "off", 21 | "@typescript-eslint/no-empty-function": "off" 22 | } 23 | } -------------------------------------------------------------------------------- /.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 | 24 | package-lock.json 25 | 26 | dist/**/* -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | tag-version-prefix="" -------------------------------------------------------------------------------- /CONTRIB.md: -------------------------------------------------------------------------------- 1 | Use directenv or autoshellenv to set OBSIDIAN_TEST_VAULT into process.env 2 | The build will use that env as the test vault. 3 | 4 | Placing a path in OPHIDIAN_TEST_VAULT will direct ophidian builder to send build artifacts to assigned dev vault. 5 | ie :$HOME/coding/contribute-to-git/obsidian-custom-classes/dev-vault 6 | 7 | # Features 8 | 9 | ## Hot Reload 10 | 11 | * withInstall has two params, the second is hot reload that defaults to true. 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 yekingyan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # obsidian-open-in-other-editor 2 | 3 | Open the current active file in gVim, VScode, or nvim-qt. 4 | 5 | ## How To Use 6 | 7 | 1. Ensure that you can use the `code`, `gvim`, or `nvim-qt` commands in the terminal. 8 | 2. `Ctrl` + `p` to open the command palette, then search for `open in other` 9 | 10 | ### For macOS Users 11 | 12 | 1. Put the absolute path to editor terminal command (`code` | `gvim`†) in `Open in other editor` settings tab. 13 | † Gvim functionality may be a work in progress. Functionality on non-darwin(mac) machines may also be a work in progress. 14 | 15 | (Powered by @mariomui) 16 | -------------------------------------------------------------------------------- /esbuild.config.mjs: -------------------------------------------------------------------------------- 1 | import Builder from "@ophidian/build"; 2 | import { createRequire } from "node:module"; 3 | const require = createRequire(import.meta.url); 4 | 5 | const manifest = require("./manifest.json"); 6 | 7 | new Builder("src/main.ts") 8 | .withWatch(new URL("", import.meta.url).pathname) 9 | .assign({ loader: { ".png": "dataurl" } }) 10 | .withSass() 11 | .withInstall(manifest.id) 12 | .build(); 13 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "obsidian-open-in-other-editor", 3 | "name": "Open in other editor", 4 | "version": "0.0.5", 5 | "minAppVersion": "1.3.5", 6 | "description": "Open current active file in gVim or VScode.", 7 | "author": "yekingyan", 8 | "authorUrl": "https://github.com/yekingyan/obsidian-open-in-other-editor", 9 | "isDesktopOnly": true 10 | } 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "obsidian-open-in-other-editor", 3 | "version": "0.0.5", 4 | "description": "Open current active file in gVim or VScode.", 5 | "main": "main.js", 6 | "scripts": { 7 | "dev": "node esbuild.config.mjs dev", 8 | "build": "OBSIDIAN_TEST_VAULT= node esbuild.config.mjs production", 9 | "version": "node --experimental-modules version-bump.mjs && git add manifest.json versions.json" 10 | }, 11 | "keywords": [], 12 | "author": "", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "@ophidian/build": "^1.1.0", 16 | "@types/node": "^16.11.6", 17 | "@typescript-eslint/eslint-plugin": "5.29.0", 18 | "@typescript-eslint/parser": "5.29.0", 19 | "builtin-modules": "3.3.0", 20 | "esbuild": "0.14.47", 21 | "obsidian": "latest", 22 | "tslib": "2.4.0", 23 | "typescript": "4.7.4" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@ophidian/build': ^1.1.0 5 | '@types/node': ^16.11.6 6 | '@typescript-eslint/eslint-plugin': 5.29.0 7 | '@typescript-eslint/parser': 5.29.0 8 | builtin-modules: 3.3.0 9 | esbuild: 0.14.47 10 | obsidian: latest 11 | tslib: 2.4.0 12 | typescript: 4.7.4 13 | 14 | devDependencies: 15 | '@ophidian/build': 1.1.0 16 | '@types/node': 16.18.35 17 | '@typescript-eslint/eslint-plugin': 5.29.0_treee22277sh3yq6pnqeflwlmi 18 | '@typescript-eslint/parser': 5.29.0_typescript@4.7.4 19 | builtin-modules: 3.3.0 20 | esbuild: 0.14.47 21 | obsidian: 1.2.8 22 | tslib: 2.4.0 23 | typescript: 4.7.4 24 | 25 | packages: 26 | 27 | /@esbuild/android-arm/0.17.19: 28 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 29 | engines: {node: '>=12'} 30 | cpu: [arm] 31 | os: [android] 32 | requiresBuild: true 33 | dev: true 34 | optional: true 35 | 36 | /@esbuild/android-arm64/0.17.19: 37 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 38 | engines: {node: '>=12'} 39 | cpu: [arm64] 40 | os: [android] 41 | requiresBuild: true 42 | dev: true 43 | optional: true 44 | 45 | /@esbuild/android-x64/0.17.19: 46 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 47 | engines: {node: '>=12'} 48 | cpu: [x64] 49 | os: [android] 50 | requiresBuild: true 51 | dev: true 52 | optional: true 53 | 54 | /@esbuild/darwin-arm64/0.17.19: 55 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 56 | engines: {node: '>=12'} 57 | cpu: [arm64] 58 | os: [darwin] 59 | requiresBuild: true 60 | dev: true 61 | optional: true 62 | 63 | /@esbuild/darwin-x64/0.17.19: 64 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 65 | engines: {node: '>=12'} 66 | cpu: [x64] 67 | os: [darwin] 68 | requiresBuild: true 69 | dev: true 70 | optional: true 71 | 72 | /@esbuild/freebsd-arm64/0.17.19: 73 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 74 | engines: {node: '>=12'} 75 | cpu: [arm64] 76 | os: [freebsd] 77 | requiresBuild: true 78 | dev: true 79 | optional: true 80 | 81 | /@esbuild/freebsd-x64/0.17.19: 82 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 83 | engines: {node: '>=12'} 84 | cpu: [x64] 85 | os: [freebsd] 86 | requiresBuild: true 87 | dev: true 88 | optional: true 89 | 90 | /@esbuild/linux-arm/0.17.19: 91 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 92 | engines: {node: '>=12'} 93 | cpu: [arm] 94 | os: [linux] 95 | requiresBuild: true 96 | dev: true 97 | optional: true 98 | 99 | /@esbuild/linux-arm64/0.17.19: 100 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 101 | engines: {node: '>=12'} 102 | cpu: [arm64] 103 | os: [linux] 104 | requiresBuild: true 105 | dev: true 106 | optional: true 107 | 108 | /@esbuild/linux-ia32/0.17.19: 109 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 110 | engines: {node: '>=12'} 111 | cpu: [ia32] 112 | os: [linux] 113 | requiresBuild: true 114 | dev: true 115 | optional: true 116 | 117 | /@esbuild/linux-loong64/0.17.19: 118 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 119 | engines: {node: '>=12'} 120 | cpu: [loong64] 121 | os: [linux] 122 | requiresBuild: true 123 | dev: true 124 | optional: true 125 | 126 | /@esbuild/linux-mips64el/0.17.19: 127 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 128 | engines: {node: '>=12'} 129 | cpu: [mips64el] 130 | os: [linux] 131 | requiresBuild: true 132 | dev: true 133 | optional: true 134 | 135 | /@esbuild/linux-ppc64/0.17.19: 136 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 137 | engines: {node: '>=12'} 138 | cpu: [ppc64] 139 | os: [linux] 140 | requiresBuild: true 141 | dev: true 142 | optional: true 143 | 144 | /@esbuild/linux-riscv64/0.17.19: 145 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 146 | engines: {node: '>=12'} 147 | cpu: [riscv64] 148 | os: [linux] 149 | requiresBuild: true 150 | dev: true 151 | optional: true 152 | 153 | /@esbuild/linux-s390x/0.17.19: 154 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 155 | engines: {node: '>=12'} 156 | cpu: [s390x] 157 | os: [linux] 158 | requiresBuild: true 159 | dev: true 160 | optional: true 161 | 162 | /@esbuild/linux-x64/0.17.19: 163 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 164 | engines: {node: '>=12'} 165 | cpu: [x64] 166 | os: [linux] 167 | requiresBuild: true 168 | dev: true 169 | optional: true 170 | 171 | /@esbuild/netbsd-x64/0.17.19: 172 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 173 | engines: {node: '>=12'} 174 | cpu: [x64] 175 | os: [netbsd] 176 | requiresBuild: true 177 | dev: true 178 | optional: true 179 | 180 | /@esbuild/openbsd-x64/0.17.19: 181 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 182 | engines: {node: '>=12'} 183 | cpu: [x64] 184 | os: [openbsd] 185 | requiresBuild: true 186 | dev: true 187 | optional: true 188 | 189 | /@esbuild/sunos-x64/0.17.19: 190 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 191 | engines: {node: '>=12'} 192 | cpu: [x64] 193 | os: [sunos] 194 | requiresBuild: true 195 | dev: true 196 | optional: true 197 | 198 | /@esbuild/win32-arm64/0.17.19: 199 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 200 | engines: {node: '>=12'} 201 | cpu: [arm64] 202 | os: [win32] 203 | requiresBuild: true 204 | dev: true 205 | optional: true 206 | 207 | /@esbuild/win32-ia32/0.17.19: 208 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 209 | engines: {node: '>=12'} 210 | cpu: [ia32] 211 | os: [win32] 212 | requiresBuild: true 213 | dev: true 214 | optional: true 215 | 216 | /@esbuild/win32-x64/0.17.19: 217 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 218 | engines: {node: '>=12'} 219 | cpu: [x64] 220 | os: [win32] 221 | requiresBuild: true 222 | dev: true 223 | optional: true 224 | 225 | /@nodelib/fs.scandir/2.1.5: 226 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 227 | engines: {node: '>= 8'} 228 | dependencies: 229 | '@nodelib/fs.stat': 2.0.5 230 | run-parallel: 1.2.0 231 | dev: true 232 | 233 | /@nodelib/fs.stat/2.0.5: 234 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 235 | engines: {node: '>= 8'} 236 | dev: true 237 | 238 | /@nodelib/fs.walk/1.2.8: 239 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 240 | engines: {node: '>= 8'} 241 | dependencies: 242 | '@nodelib/fs.scandir': 2.1.5 243 | fastq: 1.15.0 244 | dev: true 245 | 246 | /@ophidian/build/1.1.0: 247 | resolution: {integrity: sha512-eKamg+HfrBYJLA1DDLhFNFqgHfFf9aC+WvZ//k4G46x9Lo18gQNRyzRGx4mPQqnLYz5BuTMppTJezMRNrE/1HQ==} 248 | dependencies: 249 | builtin-modules: 3.3.0 250 | copy-newer: 2.1.2 251 | esbuild: 0.17.19 252 | esbuild-plugin-copy: 2.1.1_esbuild@0.17.19 253 | esbuild-plugin-sass: 1.0.1_esbuild@0.17.19 254 | fs-extra: 10.1.0 255 | monkey-around: 2.3.0 256 | dev: true 257 | 258 | /@types/codemirror/0.0.108: 259 | resolution: {integrity: sha512-3FGFcus0P7C2UOGCNUVENqObEb4SFk+S8Dnxq7K6aIsLVs/vDtlangl3PEO0ykaKXyK56swVF6Nho7VsA44uhw==} 260 | dependencies: 261 | '@types/tern': 0.23.4 262 | dev: true 263 | 264 | /@types/estree/1.0.1: 265 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 266 | dev: true 267 | 268 | /@types/json-schema/7.0.12: 269 | resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} 270 | dev: true 271 | 272 | /@types/node/16.18.35: 273 | resolution: {integrity: sha512-yqU2Rf94HFZqgHf6Tuyc/IqVD0l3U91KjvypSr1GtJKyrnl6L/kfnxVqN4QOwcF5Zx9tO/HKK+fozGr5AtqA+g==} 274 | dev: true 275 | 276 | /@types/tern/0.23.4: 277 | resolution: {integrity: sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==} 278 | dependencies: 279 | '@types/estree': 1.0.1 280 | dev: true 281 | 282 | /@typescript-eslint/eslint-plugin/5.29.0_treee22277sh3yq6pnqeflwlmi: 283 | resolution: {integrity: sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==} 284 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 285 | peerDependencies: 286 | '@typescript-eslint/parser': ^5.0.0 287 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 288 | typescript: '*' 289 | peerDependenciesMeta: 290 | typescript: 291 | optional: true 292 | dependencies: 293 | '@typescript-eslint/parser': 5.29.0_typescript@4.7.4 294 | '@typescript-eslint/scope-manager': 5.29.0 295 | '@typescript-eslint/type-utils': 5.29.0_typescript@4.7.4 296 | '@typescript-eslint/utils': 5.29.0_typescript@4.7.4 297 | debug: 4.3.4 298 | functional-red-black-tree: 1.0.1 299 | ignore: 5.2.4 300 | regexpp: 3.2.0 301 | semver: 7.5.1 302 | tsutils: 3.21.0_typescript@4.7.4 303 | typescript: 4.7.4 304 | transitivePeerDependencies: 305 | - supports-color 306 | dev: true 307 | 308 | /@typescript-eslint/parser/5.29.0_typescript@4.7.4: 309 | resolution: {integrity: sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==} 310 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 311 | peerDependencies: 312 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 313 | typescript: '*' 314 | peerDependenciesMeta: 315 | typescript: 316 | optional: true 317 | dependencies: 318 | '@typescript-eslint/scope-manager': 5.29.0 319 | '@typescript-eslint/types': 5.29.0 320 | '@typescript-eslint/typescript-estree': 5.29.0_typescript@4.7.4 321 | debug: 4.3.4 322 | typescript: 4.7.4 323 | transitivePeerDependencies: 324 | - supports-color 325 | dev: true 326 | 327 | /@typescript-eslint/scope-manager/5.29.0: 328 | resolution: {integrity: sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==} 329 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 330 | dependencies: 331 | '@typescript-eslint/types': 5.29.0 332 | '@typescript-eslint/visitor-keys': 5.29.0 333 | dev: true 334 | 335 | /@typescript-eslint/type-utils/5.29.0_typescript@4.7.4: 336 | resolution: {integrity: sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==} 337 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 338 | peerDependencies: 339 | eslint: '*' 340 | typescript: '*' 341 | peerDependenciesMeta: 342 | typescript: 343 | optional: true 344 | dependencies: 345 | '@typescript-eslint/utils': 5.29.0_typescript@4.7.4 346 | debug: 4.3.4 347 | tsutils: 3.21.0_typescript@4.7.4 348 | typescript: 4.7.4 349 | transitivePeerDependencies: 350 | - supports-color 351 | dev: true 352 | 353 | /@typescript-eslint/types/5.29.0: 354 | resolution: {integrity: sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==} 355 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 356 | dev: true 357 | 358 | /@typescript-eslint/typescript-estree/5.29.0_typescript@4.7.4: 359 | resolution: {integrity: sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==} 360 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 361 | peerDependencies: 362 | typescript: '*' 363 | peerDependenciesMeta: 364 | typescript: 365 | optional: true 366 | dependencies: 367 | '@typescript-eslint/types': 5.29.0 368 | '@typescript-eslint/visitor-keys': 5.29.0 369 | debug: 4.3.4 370 | globby: 11.1.0 371 | is-glob: 4.0.3 372 | semver: 7.5.1 373 | tsutils: 3.21.0_typescript@4.7.4 374 | typescript: 4.7.4 375 | transitivePeerDependencies: 376 | - supports-color 377 | dev: true 378 | 379 | /@typescript-eslint/utils/5.29.0_typescript@4.7.4: 380 | resolution: {integrity: sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==} 381 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 382 | peerDependencies: 383 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 384 | dependencies: 385 | '@types/json-schema': 7.0.12 386 | '@typescript-eslint/scope-manager': 5.29.0 387 | '@typescript-eslint/types': 5.29.0 388 | '@typescript-eslint/typescript-estree': 5.29.0_typescript@4.7.4 389 | eslint-scope: 5.1.1 390 | eslint-utils: 3.0.0 391 | transitivePeerDependencies: 392 | - supports-color 393 | - typescript 394 | dev: true 395 | 396 | /@typescript-eslint/visitor-keys/5.29.0: 397 | resolution: {integrity: sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==} 398 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 399 | dependencies: 400 | '@typescript-eslint/types': 5.29.0 401 | eslint-visitor-keys: 3.4.1 402 | dev: true 403 | 404 | /ansi-styles/4.3.0: 405 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 406 | engines: {node: '>=8'} 407 | dependencies: 408 | color-convert: 2.0.1 409 | dev: true 410 | 411 | /anymatch/3.1.3: 412 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 413 | engines: {node: '>= 8'} 414 | dependencies: 415 | normalize-path: 3.0.0 416 | picomatch: 2.3.1 417 | dev: true 418 | 419 | /array-union/1.0.2: 420 | resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} 421 | engines: {node: '>=0.10.0'} 422 | dependencies: 423 | array-uniq: 1.0.3 424 | dev: true 425 | 426 | /array-union/2.1.0: 427 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 428 | engines: {node: '>=8'} 429 | dev: true 430 | 431 | /array-uniq/1.0.3: 432 | resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} 433 | engines: {node: '>=0.10.0'} 434 | dev: true 435 | 436 | /arrify/1.0.1: 437 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} 438 | engines: {node: '>=0.10.0'} 439 | dev: true 440 | 441 | /balanced-match/1.0.2: 442 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 443 | dev: true 444 | 445 | /binary-extensions/2.2.0: 446 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 447 | engines: {node: '>=8'} 448 | dev: true 449 | 450 | /brace-expansion/1.1.11: 451 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 452 | dependencies: 453 | balanced-match: 1.0.2 454 | concat-map: 0.0.1 455 | dev: true 456 | 457 | /braces/3.0.2: 458 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 459 | engines: {node: '>=8'} 460 | dependencies: 461 | fill-range: 7.0.1 462 | dev: true 463 | 464 | /builtin-modules/3.3.0: 465 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 466 | engines: {node: '>=6'} 467 | dev: true 468 | 469 | /chalk/4.1.2: 470 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 471 | engines: {node: '>=10'} 472 | dependencies: 473 | ansi-styles: 4.3.0 474 | supports-color: 7.2.0 475 | dev: true 476 | 477 | /chokidar/3.5.3: 478 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 479 | engines: {node: '>= 8.10.0'} 480 | dependencies: 481 | anymatch: 3.1.3 482 | braces: 3.0.2 483 | glob-parent: 5.1.2 484 | is-binary-path: 2.1.0 485 | is-glob: 4.0.3 486 | normalize-path: 3.0.0 487 | readdirp: 3.6.0 488 | optionalDependencies: 489 | fsevents: 2.3.2 490 | dev: true 491 | 492 | /color-convert/2.0.1: 493 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 494 | engines: {node: '>=7.0.0'} 495 | dependencies: 496 | color-name: 1.1.4 497 | dev: true 498 | 499 | /color-name/1.1.4: 500 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 501 | dev: true 502 | 503 | /concat-map/0.0.1: 504 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 505 | dev: true 506 | 507 | /copy-newer/2.1.2: 508 | resolution: {integrity: sha512-IDhyNGNvbSqwjQXjZ3tAzZNXRw0UmXa+TmTQmMJziikQ+sdsV9EkI6B2WZX1u9m3TKHayBCc2pGqXU/KlBqJdg==} 509 | engines: {node: '>=4'} 510 | hasBin: true 511 | dependencies: 512 | fs-write-stream-atomic: 1.0.10 513 | globby: 4.1.0 514 | graceful-fs: 4.2.11 515 | minimist: 1.2.8 516 | mkdirp: 0.5.6 517 | pify: 2.3.0 518 | dev: true 519 | 520 | /core-util-is/1.0.3: 521 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 522 | dev: true 523 | 524 | /css-tree/1.1.3: 525 | resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} 526 | engines: {node: '>=8.0.0'} 527 | dependencies: 528 | mdn-data: 2.0.14 529 | source-map: 0.6.1 530 | dev: true 531 | 532 | /debug/4.3.4: 533 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 534 | engines: {node: '>=6.0'} 535 | peerDependencies: 536 | supports-color: '*' 537 | peerDependenciesMeta: 538 | supports-color: 539 | optional: true 540 | dependencies: 541 | ms: 2.1.2 542 | dev: true 543 | 544 | /dir-glob/3.0.1: 545 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 546 | engines: {node: '>=8'} 547 | dependencies: 548 | path-type: 4.0.0 549 | dev: true 550 | 551 | /esbuild-android-64/0.14.47: 552 | resolution: {integrity: sha512-R13Bd9+tqLVFndncMHssZrPWe6/0Kpv2/dt4aA69soX4PRxlzsVpCvoJeFE8sOEoeVEiBkI0myjlkDodXlHa0g==} 553 | engines: {node: '>=12'} 554 | cpu: [x64] 555 | os: [android] 556 | requiresBuild: true 557 | dev: true 558 | optional: true 559 | 560 | /esbuild-android-arm64/0.14.47: 561 | resolution: {integrity: sha512-OkwOjj7ts4lBp/TL6hdd8HftIzOy/pdtbrNA4+0oVWgGG64HrdVzAF5gxtJufAPOsEjkyh1oIYvKAUinKKQRSQ==} 562 | engines: {node: '>=12'} 563 | cpu: [arm64] 564 | os: [android] 565 | requiresBuild: true 566 | dev: true 567 | optional: true 568 | 569 | /esbuild-darwin-64/0.14.47: 570 | resolution: {integrity: sha512-R6oaW0y5/u6Eccti/TS6c/2c1xYTb1izwK3gajJwi4vIfNs1s8B1dQzI1UiC9T61YovOQVuePDcfqHLT3mUZJA==} 571 | engines: {node: '>=12'} 572 | cpu: [x64] 573 | os: [darwin] 574 | requiresBuild: true 575 | dev: true 576 | optional: true 577 | 578 | /esbuild-darwin-arm64/0.14.47: 579 | resolution: {integrity: sha512-seCmearlQyvdvM/noz1L9+qblC5vcBrhUaOoLEDDoLInF/VQ9IkobGiLlyTPYP5dW1YD4LXhtBgOyevoIHGGnw==} 580 | engines: {node: '>=12'} 581 | cpu: [arm64] 582 | os: [darwin] 583 | requiresBuild: true 584 | dev: true 585 | optional: true 586 | 587 | /esbuild-freebsd-64/0.14.47: 588 | resolution: {integrity: sha512-ZH8K2Q8/Ux5kXXvQMDsJcxvkIwut69KVrYQhza/ptkW50DC089bCVrJZZ3sKzIoOx+YPTrmsZvqeZERjyYrlvQ==} 589 | engines: {node: '>=12'} 590 | cpu: [x64] 591 | os: [freebsd] 592 | requiresBuild: true 593 | dev: true 594 | optional: true 595 | 596 | /esbuild-freebsd-arm64/0.14.47: 597 | resolution: {integrity: sha512-ZJMQAJQsIOhn3XTm7MPQfCzEu5b9STNC+s90zMWe2afy9EwnHV7Ov7ohEMv2lyWlc2pjqLW8QJnz2r0KZmeAEQ==} 598 | engines: {node: '>=12'} 599 | cpu: [arm64] 600 | os: [freebsd] 601 | requiresBuild: true 602 | dev: true 603 | optional: true 604 | 605 | /esbuild-linux-32/0.14.47: 606 | resolution: {integrity: sha512-FxZOCKoEDPRYvq300lsWCTv1kcHgiiZfNrPtEhFAiqD7QZaXrad8LxyJ8fXGcWzIFzRiYZVtB3ttvITBvAFhKw==} 607 | engines: {node: '>=12'} 608 | cpu: [ia32] 609 | os: [linux] 610 | requiresBuild: true 611 | dev: true 612 | optional: true 613 | 614 | /esbuild-linux-64/0.14.47: 615 | resolution: {integrity: sha512-nFNOk9vWVfvWYF9YNYksZptgQAdstnDCMtR6m42l5Wfugbzu11VpMCY9XrD4yFxvPo9zmzcoUL/88y0lfJZJJw==} 616 | engines: {node: '>=12'} 617 | cpu: [x64] 618 | os: [linux] 619 | requiresBuild: true 620 | dev: true 621 | optional: true 622 | 623 | /esbuild-linux-arm/0.14.47: 624 | resolution: {integrity: sha512-ZGE1Bqg/gPRXrBpgpvH81tQHpiaGxa8c9Rx/XOylkIl2ypLuOcawXEAo8ls+5DFCcRGt/o3sV+PzpAFZobOsmA==} 625 | engines: {node: '>=12'} 626 | cpu: [arm] 627 | os: [linux] 628 | requiresBuild: true 629 | dev: true 630 | optional: true 631 | 632 | /esbuild-linux-arm64/0.14.47: 633 | resolution: {integrity: sha512-ywfme6HVrhWcevzmsufjd4iT3PxTfCX9HOdxA7Hd+/ZM23Y9nXeb+vG6AyA6jgq/JovkcqRHcL9XwRNpWG6XRw==} 634 | engines: {node: '>=12'} 635 | cpu: [arm64] 636 | os: [linux] 637 | requiresBuild: true 638 | dev: true 639 | optional: true 640 | 641 | /esbuild-linux-mips64le/0.14.47: 642 | resolution: {integrity: sha512-mg3D8YndZ1LvUiEdDYR3OsmeyAew4MA/dvaEJxvyygahWmpv1SlEEnhEZlhPokjsUMfRagzsEF/d/2XF+kTQGg==} 643 | engines: {node: '>=12'} 644 | cpu: [mips64el] 645 | os: [linux] 646 | requiresBuild: true 647 | dev: true 648 | optional: true 649 | 650 | /esbuild-linux-ppc64le/0.14.47: 651 | resolution: {integrity: sha512-WER+f3+szmnZiWoK6AsrTKGoJoErG2LlauSmk73LEZFQ/iWC+KhhDsOkn1xBUpzXWsxN9THmQFltLoaFEH8F8w==} 652 | engines: {node: '>=12'} 653 | cpu: [ppc64] 654 | os: [linux] 655 | requiresBuild: true 656 | dev: true 657 | optional: true 658 | 659 | /esbuild-linux-riscv64/0.14.47: 660 | resolution: {integrity: sha512-1fI6bP3A3rvI9BsaaXbMoaOjLE3lVkJtLxsgLHqlBhLlBVY7UqffWBvkrX/9zfPhhVMd9ZRFiaqXnB1T7BsL2g==} 661 | engines: {node: '>=12'} 662 | cpu: [riscv64] 663 | os: [linux] 664 | requiresBuild: true 665 | dev: true 666 | optional: true 667 | 668 | /esbuild-linux-s390x/0.14.47: 669 | resolution: {integrity: sha512-eZrWzy0xFAhki1CWRGnhsHVz7IlSKX6yT2tj2Eg8lhAwlRE5E96Hsb0M1mPSE1dHGpt1QVwwVivXIAacF/G6mw==} 670 | engines: {node: '>=12'} 671 | cpu: [s390x] 672 | os: [linux] 673 | requiresBuild: true 674 | dev: true 675 | optional: true 676 | 677 | /esbuild-netbsd-64/0.14.47: 678 | resolution: {integrity: sha512-Qjdjr+KQQVH5Q2Q1r6HBYswFTToPpss3gqCiSw2Fpq/ua8+eXSQyAMG+UvULPqXceOwpnPo4smyZyHdlkcPppQ==} 679 | engines: {node: '>=12'} 680 | cpu: [x64] 681 | os: [netbsd] 682 | requiresBuild: true 683 | dev: true 684 | optional: true 685 | 686 | /esbuild-openbsd-64/0.14.47: 687 | resolution: {integrity: sha512-QpgN8ofL7B9z8g5zZqJE+eFvD1LehRlxr25PBkjyyasakm4599iroUpaj96rdqRlO2ShuyqwJdr+oNqWwTUmQw==} 688 | engines: {node: '>=12'} 689 | cpu: [x64] 690 | os: [openbsd] 691 | requiresBuild: true 692 | dev: true 693 | optional: true 694 | 695 | /esbuild-plugin-copy/2.1.1_esbuild@0.17.19: 696 | resolution: {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==} 697 | peerDependencies: 698 | esbuild: '>= 0.14.0' 699 | dependencies: 700 | chalk: 4.1.2 701 | chokidar: 3.5.3 702 | esbuild: 0.17.19 703 | fs-extra: 10.1.0 704 | globby: 11.1.0 705 | dev: true 706 | 707 | /esbuild-plugin-sass/1.0.1_esbuild@0.17.19: 708 | resolution: {integrity: sha512-YFxjzD9Z1vz92QCJcAmCO15WVCUiOobw9ypdVeMsW+xa6S+zqryLUIh8d3fe/UkRHRO5PODZz/3xDAQuEXZwmQ==} 709 | peerDependencies: 710 | esbuild: '>=0.11.14' 711 | dependencies: 712 | css-tree: 1.1.3 713 | esbuild: 0.17.19 714 | fs-extra: 10.0.0 715 | sass: 1.47.0 716 | tmp: 0.2.1 717 | dev: true 718 | 719 | /esbuild-sunos-64/0.14.47: 720 | resolution: {integrity: sha512-uOeSgLUwukLioAJOiGYm3kNl+1wJjgJA8R671GYgcPgCx7QR73zfvYqXFFcIO93/nBdIbt5hd8RItqbbf3HtAQ==} 721 | engines: {node: '>=12'} 722 | cpu: [x64] 723 | os: [sunos] 724 | requiresBuild: true 725 | dev: true 726 | optional: true 727 | 728 | /esbuild-windows-32/0.14.47: 729 | resolution: {integrity: sha512-H0fWsLTp2WBfKLBgwYT4OTfFly4Im/8B5f3ojDv1Kx//kiubVY0IQunP2Koc/fr/0wI7hj3IiBDbSrmKlrNgLQ==} 730 | engines: {node: '>=12'} 731 | cpu: [ia32] 732 | os: [win32] 733 | requiresBuild: true 734 | dev: true 735 | optional: true 736 | 737 | /esbuild-windows-64/0.14.47: 738 | resolution: {integrity: sha512-/Pk5jIEH34T68r8PweKRi77W49KwanZ8X6lr3vDAtOlH5EumPE4pBHqkCUdELanvsT14yMXLQ/C/8XPi1pAtkQ==} 739 | engines: {node: '>=12'} 740 | cpu: [x64] 741 | os: [win32] 742 | requiresBuild: true 743 | dev: true 744 | optional: true 745 | 746 | /esbuild-windows-arm64/0.14.47: 747 | resolution: {integrity: sha512-HFSW2lnp62fl86/qPQlqw6asIwCnEsEoNIL1h2uVMgakddf+vUuMcCbtUY1i8sst7KkgHrVKCJQB33YhhOweCQ==} 748 | engines: {node: '>=12'} 749 | cpu: [arm64] 750 | os: [win32] 751 | requiresBuild: true 752 | dev: true 753 | optional: true 754 | 755 | /esbuild/0.14.47: 756 | resolution: {integrity: sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==} 757 | engines: {node: '>=12'} 758 | hasBin: true 759 | requiresBuild: true 760 | optionalDependencies: 761 | esbuild-android-64: 0.14.47 762 | esbuild-android-arm64: 0.14.47 763 | esbuild-darwin-64: 0.14.47 764 | esbuild-darwin-arm64: 0.14.47 765 | esbuild-freebsd-64: 0.14.47 766 | esbuild-freebsd-arm64: 0.14.47 767 | esbuild-linux-32: 0.14.47 768 | esbuild-linux-64: 0.14.47 769 | esbuild-linux-arm: 0.14.47 770 | esbuild-linux-arm64: 0.14.47 771 | esbuild-linux-mips64le: 0.14.47 772 | esbuild-linux-ppc64le: 0.14.47 773 | esbuild-linux-riscv64: 0.14.47 774 | esbuild-linux-s390x: 0.14.47 775 | esbuild-netbsd-64: 0.14.47 776 | esbuild-openbsd-64: 0.14.47 777 | esbuild-sunos-64: 0.14.47 778 | esbuild-windows-32: 0.14.47 779 | esbuild-windows-64: 0.14.47 780 | esbuild-windows-arm64: 0.14.47 781 | dev: true 782 | 783 | /esbuild/0.17.19: 784 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 785 | engines: {node: '>=12'} 786 | hasBin: true 787 | requiresBuild: true 788 | optionalDependencies: 789 | '@esbuild/android-arm': 0.17.19 790 | '@esbuild/android-arm64': 0.17.19 791 | '@esbuild/android-x64': 0.17.19 792 | '@esbuild/darwin-arm64': 0.17.19 793 | '@esbuild/darwin-x64': 0.17.19 794 | '@esbuild/freebsd-arm64': 0.17.19 795 | '@esbuild/freebsd-x64': 0.17.19 796 | '@esbuild/linux-arm': 0.17.19 797 | '@esbuild/linux-arm64': 0.17.19 798 | '@esbuild/linux-ia32': 0.17.19 799 | '@esbuild/linux-loong64': 0.17.19 800 | '@esbuild/linux-mips64el': 0.17.19 801 | '@esbuild/linux-ppc64': 0.17.19 802 | '@esbuild/linux-riscv64': 0.17.19 803 | '@esbuild/linux-s390x': 0.17.19 804 | '@esbuild/linux-x64': 0.17.19 805 | '@esbuild/netbsd-x64': 0.17.19 806 | '@esbuild/openbsd-x64': 0.17.19 807 | '@esbuild/sunos-x64': 0.17.19 808 | '@esbuild/win32-arm64': 0.17.19 809 | '@esbuild/win32-ia32': 0.17.19 810 | '@esbuild/win32-x64': 0.17.19 811 | dev: true 812 | 813 | /eslint-scope/5.1.1: 814 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 815 | engines: {node: '>=8.0.0'} 816 | dependencies: 817 | esrecurse: 4.3.0 818 | estraverse: 4.3.0 819 | dev: true 820 | 821 | /eslint-utils/3.0.0: 822 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 823 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 824 | peerDependencies: 825 | eslint: '>=5' 826 | dependencies: 827 | eslint-visitor-keys: 2.1.0 828 | dev: true 829 | 830 | /eslint-visitor-keys/2.1.0: 831 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 832 | engines: {node: '>=10'} 833 | dev: true 834 | 835 | /eslint-visitor-keys/3.4.1: 836 | resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} 837 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 838 | dev: true 839 | 840 | /esrecurse/4.3.0: 841 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 842 | engines: {node: '>=4.0'} 843 | dependencies: 844 | estraverse: 5.3.0 845 | dev: true 846 | 847 | /estraverse/4.3.0: 848 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 849 | engines: {node: '>=4.0'} 850 | dev: true 851 | 852 | /estraverse/5.3.0: 853 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 854 | engines: {node: '>=4.0'} 855 | dev: true 856 | 857 | /fast-glob/3.2.12: 858 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 859 | engines: {node: '>=8.6.0'} 860 | dependencies: 861 | '@nodelib/fs.stat': 2.0.5 862 | '@nodelib/fs.walk': 1.2.8 863 | glob-parent: 5.1.2 864 | merge2: 1.4.1 865 | micromatch: 4.0.5 866 | dev: true 867 | 868 | /fastq/1.15.0: 869 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 870 | dependencies: 871 | reusify: 1.0.4 872 | dev: true 873 | 874 | /fill-range/7.0.1: 875 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 876 | engines: {node: '>=8'} 877 | dependencies: 878 | to-regex-range: 5.0.1 879 | dev: true 880 | 881 | /fs-extra/10.0.0: 882 | resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} 883 | engines: {node: '>=12'} 884 | dependencies: 885 | graceful-fs: 4.2.11 886 | jsonfile: 6.1.0 887 | universalify: 2.0.0 888 | dev: true 889 | 890 | /fs-extra/10.1.0: 891 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 892 | engines: {node: '>=12'} 893 | dependencies: 894 | graceful-fs: 4.2.11 895 | jsonfile: 6.1.0 896 | universalify: 2.0.0 897 | dev: true 898 | 899 | /fs-write-stream-atomic/1.0.10: 900 | resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} 901 | dependencies: 902 | graceful-fs: 4.2.11 903 | iferr: 0.1.5 904 | imurmurhash: 0.1.4 905 | readable-stream: 2.3.8 906 | dev: true 907 | 908 | /fs.realpath/1.0.0: 909 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 910 | dev: true 911 | 912 | /fsevents/2.3.2: 913 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 914 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 915 | os: [darwin] 916 | requiresBuild: true 917 | dev: true 918 | optional: true 919 | 920 | /functional-red-black-tree/1.0.1: 921 | resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} 922 | dev: true 923 | 924 | /glob-parent/5.1.2: 925 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 926 | engines: {node: '>= 6'} 927 | dependencies: 928 | is-glob: 4.0.3 929 | dev: true 930 | 931 | /glob/6.0.4: 932 | resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} 933 | dependencies: 934 | inflight: 1.0.6 935 | inherits: 2.0.4 936 | minimatch: 3.1.2 937 | once: 1.4.0 938 | path-is-absolute: 1.0.1 939 | dev: true 940 | 941 | /glob/7.2.3: 942 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 943 | dependencies: 944 | fs.realpath: 1.0.0 945 | inflight: 1.0.6 946 | inherits: 2.0.4 947 | minimatch: 3.1.2 948 | once: 1.4.0 949 | path-is-absolute: 1.0.1 950 | dev: true 951 | 952 | /globby/11.1.0: 953 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 954 | engines: {node: '>=10'} 955 | dependencies: 956 | array-union: 2.1.0 957 | dir-glob: 3.0.1 958 | fast-glob: 3.2.12 959 | ignore: 5.2.4 960 | merge2: 1.4.1 961 | slash: 3.0.0 962 | dev: true 963 | 964 | /globby/4.1.0: 965 | resolution: {integrity: sha512-JPDtMSr0bt25W64q792rvlrSwIaZwqUAhqdYKSr57Wh/xBcQ5JDWLM85ndn+Q1WdBQXLb9YGCl0QN/T0HpqU0A==} 966 | engines: {node: '>=0.10.0'} 967 | dependencies: 968 | array-union: 1.0.2 969 | arrify: 1.0.1 970 | glob: 6.0.4 971 | object-assign: 4.1.1 972 | pify: 2.3.0 973 | pinkie-promise: 2.0.1 974 | dev: true 975 | 976 | /graceful-fs/4.2.11: 977 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 978 | dev: true 979 | 980 | /has-flag/4.0.0: 981 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 982 | engines: {node: '>=8'} 983 | dev: true 984 | 985 | /iferr/0.1.5: 986 | resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} 987 | dev: true 988 | 989 | /ignore/5.2.4: 990 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 991 | engines: {node: '>= 4'} 992 | dev: true 993 | 994 | /immutable/4.3.0: 995 | resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} 996 | dev: true 997 | 998 | /imurmurhash/0.1.4: 999 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1000 | engines: {node: '>=0.8.19'} 1001 | dev: true 1002 | 1003 | /inflight/1.0.6: 1004 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1005 | dependencies: 1006 | once: 1.4.0 1007 | wrappy: 1.0.2 1008 | dev: true 1009 | 1010 | /inherits/2.0.4: 1011 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1012 | dev: true 1013 | 1014 | /is-binary-path/2.1.0: 1015 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1016 | engines: {node: '>=8'} 1017 | dependencies: 1018 | binary-extensions: 2.2.0 1019 | dev: true 1020 | 1021 | /is-extglob/2.1.1: 1022 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1023 | engines: {node: '>=0.10.0'} 1024 | dev: true 1025 | 1026 | /is-glob/4.0.3: 1027 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1028 | engines: {node: '>=0.10.0'} 1029 | dependencies: 1030 | is-extglob: 2.1.1 1031 | dev: true 1032 | 1033 | /is-number/7.0.0: 1034 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1035 | engines: {node: '>=0.12.0'} 1036 | dev: true 1037 | 1038 | /isarray/1.0.0: 1039 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1040 | dev: true 1041 | 1042 | /jsonfile/6.1.0: 1043 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1044 | dependencies: 1045 | universalify: 2.0.0 1046 | optionalDependencies: 1047 | graceful-fs: 4.2.11 1048 | dev: true 1049 | 1050 | /lru-cache/6.0.0: 1051 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1052 | engines: {node: '>=10'} 1053 | dependencies: 1054 | yallist: 4.0.0 1055 | dev: true 1056 | 1057 | /mdn-data/2.0.14: 1058 | resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} 1059 | dev: true 1060 | 1061 | /merge2/1.4.1: 1062 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1063 | engines: {node: '>= 8'} 1064 | dev: true 1065 | 1066 | /micromatch/4.0.5: 1067 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1068 | engines: {node: '>=8.6'} 1069 | dependencies: 1070 | braces: 3.0.2 1071 | picomatch: 2.3.1 1072 | dev: true 1073 | 1074 | /minimatch/3.1.2: 1075 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1076 | dependencies: 1077 | brace-expansion: 1.1.11 1078 | dev: true 1079 | 1080 | /minimist/1.2.8: 1081 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1082 | dev: true 1083 | 1084 | /mkdirp/0.5.6: 1085 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1086 | hasBin: true 1087 | dependencies: 1088 | minimist: 1.2.8 1089 | dev: true 1090 | 1091 | /moment/2.29.4: 1092 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 1093 | dev: true 1094 | 1095 | /monkey-around/2.3.0: 1096 | resolution: {integrity: sha512-QWcCUWjqE/MCk9cXlSKZ1Qc486LD439xw/Ak8Nt6l2PuL9+yrc9TJakt7OHDuOqPRYY4nTWBAEFKn32PE/SfXA==} 1097 | dev: true 1098 | 1099 | /ms/2.1.2: 1100 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1101 | dev: true 1102 | 1103 | /normalize-path/3.0.0: 1104 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1105 | engines: {node: '>=0.10.0'} 1106 | dev: true 1107 | 1108 | /object-assign/4.1.1: 1109 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1110 | engines: {node: '>=0.10.0'} 1111 | dev: true 1112 | 1113 | /obsidian/1.2.8: 1114 | resolution: {integrity: sha512-HrC+feA8o0tXspj4lEAqxb1btwLwHD2oHXSwbbN+CdRHURqbCkuIDLld+nkuyJ1w1c9uvVDRVk8BoeOnWheOrQ==} 1115 | peerDependencies: 1116 | '@codemirror/state': ^6.0.0 1117 | '@codemirror/view': ^6.0.0 1118 | dependencies: 1119 | '@types/codemirror': 0.0.108 1120 | moment: 2.29.4 1121 | dev: true 1122 | 1123 | /once/1.4.0: 1124 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1125 | dependencies: 1126 | wrappy: 1.0.2 1127 | dev: true 1128 | 1129 | /path-is-absolute/1.0.1: 1130 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1131 | engines: {node: '>=0.10.0'} 1132 | dev: true 1133 | 1134 | /path-type/4.0.0: 1135 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1136 | engines: {node: '>=8'} 1137 | dev: true 1138 | 1139 | /picomatch/2.3.1: 1140 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1141 | engines: {node: '>=8.6'} 1142 | dev: true 1143 | 1144 | /pify/2.3.0: 1145 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1146 | engines: {node: '>=0.10.0'} 1147 | dev: true 1148 | 1149 | /pinkie-promise/2.0.1: 1150 | resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} 1151 | engines: {node: '>=0.10.0'} 1152 | dependencies: 1153 | pinkie: 2.0.4 1154 | dev: true 1155 | 1156 | /pinkie/2.0.4: 1157 | resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} 1158 | engines: {node: '>=0.10.0'} 1159 | dev: true 1160 | 1161 | /process-nextick-args/2.0.1: 1162 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 1163 | dev: true 1164 | 1165 | /queue-microtask/1.2.3: 1166 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1167 | dev: true 1168 | 1169 | /readable-stream/2.3.8: 1170 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 1171 | dependencies: 1172 | core-util-is: 1.0.3 1173 | inherits: 2.0.4 1174 | isarray: 1.0.0 1175 | process-nextick-args: 2.0.1 1176 | safe-buffer: 5.1.2 1177 | string_decoder: 1.1.1 1178 | util-deprecate: 1.0.2 1179 | dev: true 1180 | 1181 | /readdirp/3.6.0: 1182 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1183 | engines: {node: '>=8.10.0'} 1184 | dependencies: 1185 | picomatch: 2.3.1 1186 | dev: true 1187 | 1188 | /regexpp/3.2.0: 1189 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 1190 | engines: {node: '>=8'} 1191 | dev: true 1192 | 1193 | /reusify/1.0.4: 1194 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1195 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1196 | dev: true 1197 | 1198 | /rimraf/3.0.2: 1199 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1200 | hasBin: true 1201 | dependencies: 1202 | glob: 7.2.3 1203 | dev: true 1204 | 1205 | /run-parallel/1.2.0: 1206 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1207 | dependencies: 1208 | queue-microtask: 1.2.3 1209 | dev: true 1210 | 1211 | /safe-buffer/5.1.2: 1212 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1213 | dev: true 1214 | 1215 | /sass/1.47.0: 1216 | resolution: {integrity: sha512-GtXwvwgD7/6MLUZPnlA5/8cdRgC9SzT5kAnnJMRmEZQFRE3J56Foswig4NyyyQGsnmNvg6EUM/FP0Pe9Y2zywQ==} 1217 | engines: {node: '>=8.9.0'} 1218 | hasBin: true 1219 | dependencies: 1220 | chokidar: 3.5.3 1221 | immutable: 4.3.0 1222 | source-map-js: 1.0.2 1223 | dev: true 1224 | 1225 | /semver/7.5.1: 1226 | resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} 1227 | engines: {node: '>=10'} 1228 | hasBin: true 1229 | dependencies: 1230 | lru-cache: 6.0.0 1231 | dev: true 1232 | 1233 | /slash/3.0.0: 1234 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1235 | engines: {node: '>=8'} 1236 | dev: true 1237 | 1238 | /source-map-js/1.0.2: 1239 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1240 | engines: {node: '>=0.10.0'} 1241 | dev: true 1242 | 1243 | /source-map/0.6.1: 1244 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1245 | engines: {node: '>=0.10.0'} 1246 | dev: true 1247 | 1248 | /string_decoder/1.1.1: 1249 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 1250 | dependencies: 1251 | safe-buffer: 5.1.2 1252 | dev: true 1253 | 1254 | /supports-color/7.2.0: 1255 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1256 | engines: {node: '>=8'} 1257 | dependencies: 1258 | has-flag: 4.0.0 1259 | dev: true 1260 | 1261 | /tmp/0.2.1: 1262 | resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} 1263 | engines: {node: '>=8.17.0'} 1264 | dependencies: 1265 | rimraf: 3.0.2 1266 | dev: true 1267 | 1268 | /to-regex-range/5.0.1: 1269 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1270 | engines: {node: '>=8.0'} 1271 | dependencies: 1272 | is-number: 7.0.0 1273 | dev: true 1274 | 1275 | /tslib/1.14.1: 1276 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 1277 | dev: true 1278 | 1279 | /tslib/2.4.0: 1280 | resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} 1281 | dev: true 1282 | 1283 | /tsutils/3.21.0_typescript@4.7.4: 1284 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 1285 | engines: {node: '>= 6'} 1286 | peerDependencies: 1287 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 1288 | dependencies: 1289 | tslib: 1.14.1 1290 | typescript: 4.7.4 1291 | dev: true 1292 | 1293 | /typescript/4.7.4: 1294 | resolution: {integrity: sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==} 1295 | engines: {node: '>=4.2.0'} 1296 | hasBin: true 1297 | dev: true 1298 | 1299 | /universalify/2.0.0: 1300 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 1301 | engines: {node: '>= 10.0.0'} 1302 | dev: true 1303 | 1304 | /util-deprecate/1.0.2: 1305 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1306 | dev: true 1307 | 1308 | /wrappy/1.0.2: 1309 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1310 | dev: true 1311 | 1312 | /yallist/4.0.0: 1313 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1314 | dev: true 1315 | -------------------------------------------------------------------------------- /src/components/OpenFilePlgSettingTab.ts: -------------------------------------------------------------------------------- 1 | import { App, PluginSettingTab, Setting } from "obsidian"; 2 | import OpenFilePlg from "../main"; 3 | 4 | export class OpenFilePlgSettingTab extends PluginSettingTab { 5 | plugin: OpenFilePlg; 6 | constructor(app: App, plugin: OpenFilePlg) { 7 | super(app, plugin); 8 | this.plugin = plugin; 9 | } 10 | display() { 11 | let { containerEl } = this; 12 | 13 | containerEl.empty(); 14 | 15 | new Setting(containerEl) 16 | .setName("vscode") 17 | .setDesc("macOS only") 18 | .addText((text) => 19 | text 20 | .setPlaceholder("Absolute path") 21 | .setValue(this.plugin.settingConfig.vscode_path) 22 | .onChange(async (value) => { 23 | this.plugin.settingConfig.vscode_path = value; 24 | await this.plugin.doSaveSettingConfig(); 25 | }) 26 | ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { DataAdapter, Plugin, Notice, App, Vault } from "obsidian"; 2 | import * as os from "os"; 3 | import { spawn, exec } from "child_process"; 4 | import { OpenFilePlgSettingTab } from "./components/OpenFilePlgSettingTab"; 5 | 6 | type EditorName = "gvim" | "code" | "nvim-qt"; 7 | type AdapterPlus = Partial & { 8 | path: any; 9 | basePath: any; 10 | }; 11 | 12 | function runCMD(cmd: string) { 13 | const { exec } = require("child_process"); 14 | exec(cmd, (error: string, stdout: string, stderr: string) => { 15 | if (error) { 16 | console.error(`run cmd err: ${error}, ${stdout}, ${stderr}`); 17 | return; 18 | } 19 | console.log(`run cmd: ${cmd}`); 20 | }); 21 | } 22 | 23 | type HandleArguments = { 24 | file: string; 25 | args: string[]; 26 | }; 27 | 28 | export async function execa(file: string, args: string[]) { 29 | const handledArgs = handleArguments(file, args); 30 | let spawned = spawn(handledArgs.file, handledArgs.args); 31 | return new Promise((resolve, reject) => { 32 | spawned.on("exit", (exitCode, signal) => { 33 | resolve({ exitCode, signal }); 34 | }); 35 | 36 | spawned.on("error", (error) => { 37 | reject(error); 38 | }); 39 | spawned.stdout.on("data", (data) => console.log(data.toString())); 40 | if (spawned.stdin) { 41 | spawned.stdin.on("error", (error) => { 42 | reject(error); 43 | }); 44 | } 45 | }); 46 | } 47 | 48 | function handleArguments( 49 | file: HandleArguments["file"], 50 | args: HandleArguments["args"] 51 | ) { 52 | return { file, args }; 53 | } 54 | 55 | type SettingConfig = { 56 | vscode_path: string; 57 | gvim_path: string; 58 | }; 59 | 60 | export default class OpenFilePlg extends Plugin { 61 | settingConfig: SettingConfig = { 62 | vscode_path: "", 63 | gvim_path: "", 64 | }; 65 | 66 | async doLoadSettingConfig() { 67 | this.settingConfig = { 68 | ...this.settingConfig, 69 | ...(await this.loadData()), 70 | }; 71 | } 72 | async doSaveSettingConfig() { 73 | await this.saveData(this.settingConfig); 74 | } 75 | async onload() { 76 | await this.doLoadSettingConfig(); 77 | 78 | this.addCommand({ 79 | id: "open-in-other-editor-gvim", 80 | name: "Open current active file in gVim", 81 | callback: () => { 82 | this.open("gvim"); 83 | }, 84 | }); 85 | 86 | this.addCommand({ 87 | id: "open-in-other-editor-vscode", 88 | name: "Open current active file in VScode", 89 | callback: () => { 90 | this.open("code"); 91 | }, 92 | }); 93 | 94 | this.addCommand({ 95 | id: "open-in-other-editor-nvim-qt", 96 | name: "Open current active file in nvim", 97 | callback: () => { 98 | this.open("nvim-qt"); 99 | }, 100 | }); 101 | 102 | this.addSettingTab(new OpenFilePlgSettingTab(app, this)); 103 | } 104 | 105 | onunload() {} 106 | 107 | private open(by: EditorName) { 108 | let curFilePath = this.app.workspace.getActiveFile()?.path; 109 | if (!curFilePath) { 110 | console.warn("no active file in workspace"); 111 | return; 112 | } 113 | const { adapter } = this.app.vault; 114 | const { basePath } = adapter as AdapterPlus; 115 | 116 | const platform: NodeJS.Platform = os.platform(); 117 | if (["darwin"].includes(platform)) { 118 | const file = { 119 | code: this.settingConfig.vscode_path, 120 | gvim: this.settingConfig.gvim_path, 121 | }; 122 | return this.macopen(basePath, curFilePath, file[by]); 123 | } else if (os.type() === "Windows_NT") { 124 | runCMD(`cd /d "${basePath}" && ${by} "./${curFilePath}"`); 125 | } else { 126 | runCMD(`cd "${basePath}" && ${by} "./${curFilePath}"`); 127 | } 128 | } 129 | 130 | macopen(basePath: string, curFilePath: string, by: string) { 131 | const { 132 | path: { join }, 133 | } = this.app.vault.adapter as AdapterPlus; 134 | const derived_path = join(basePath, curFilePath); 135 | 136 | void (async function ( 137 | file: string, 138 | app: App & { 139 | vault: { 140 | adapter: DataAdapter & { fsPromises?: any }; 141 | } & Vault; 142 | } 143 | ) { 144 | if (!file) { 145 | return new Notice( 146 | "Please save absolute path to vscode into settings", 147 | 7000 148 | ); 149 | } 150 | const { err, access } = await app.vault.adapter.fsPromises 151 | .stat(file) 152 | .then((access: any) => ({ access, err: null })) 153 | .catch((err: Error) => { 154 | return { 155 | err, 156 | }; 157 | }); 158 | if (err) { 159 | return console.log({ err }); 160 | } 161 | await execa(file, [derived_path]); 162 | })(by, this.app); 163 | } 164 | } 165 | -------------------------------------------------------------------------------- /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 | "strictNullChecks": true, 14 | "lib": [ 15 | "DOM", 16 | "ES5", 17 | "ES6", 18 | "ES7" 19 | ] 20 | }, 21 | "include": [ 22 | "**/*.ts" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /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.0.1": "0.15.0", 3 | "0.0.2": "0.15.0", 4 | "0.0.3": "0.15.0" 5 | } --------------------------------------------------------------------------------