Auto tagging obsidian notes w/ AI
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Rename to AI Tagger for future multi-provider support

- Change name from "Claude AI Tagger" to "AI Tagger"
- Update all CSS classes from claude-tagger to ai-tagger
- Update setting names and descriptions to be provider-agnostic
- Prepare codebase for supporting multiple AI providers

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>

Jasper Mayone cef899ab

+3203
+10
.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
+3
.eslintignore
··· 1 + node_modules/ 2 + 3 + main.js
+23
.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 + }
+35
.github/workflows/release.yml
··· 1 + name: Release Obsidian plugin 2 + 3 + on: 4 + push: 5 + tags: 6 + - "*" 7 + 8 + jobs: 9 + build: 10 + runs-on: ubuntu-latest 11 + permissions: 12 + contents: write 13 + steps: 14 + - uses: actions/checkout@v3 15 + 16 + - name: Use Node.js 17 + uses: actions/setup-node@v3 18 + with: 19 + node-version: "18.x" 20 + 21 + - name: Build plugin 22 + run: | 23 + npm install 24 + npm run build 25 + 26 + - name: Create release 27 + env: 28 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 29 + run: | 30 + tag="${GITHUB_REF#refs/tags/}" 31 + 32 + gh release create "$tag" \ 33 + --title="$tag" \ 34 + --draft \ 35 + main.js manifest.json styles.css
+22
.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
+1
.npmrc
··· 1 + tag-version-prefix=""
+93
README.md
··· 1 + # AI Tagger for Obsidian 2 + 3 + This Obsidian plugin uses Claude AI to automatically generate tags for your notes and add them to the frontmatter. It analyzes the content of your notes and suggests relevant tags based on the text. 4 + 5 + ## Features 6 + 7 + - Automatically generate tags for your notes using Claude AI 8 + - Add the generated tags to your note's frontmatter 9 + - Tag a single note or batch tag all notes in your vault 10 + - Customize the prompt used to generate tags 11 + - Choose from different Claude models 12 + - Configure maximum number of tags per note 13 + 14 + ## Installation 15 + 16 + 1. In Obsidian, go to Settings > Community plugins 17 + 2. Disable Safe mode 18 + 3. Click "Browse" and search for "Claude AI Tagger" 19 + 4. Install the plugin 20 + 5. Enable the plugin after installation 21 + 22 + Alternatively, you can manually install the plugin: 23 + 24 + 1. Download the `main.js`, `styles.css`, and `manifest.json` files 25 + 2. Create a folder named `claude-ai-tagger` in your vault's `.obsidian/plugins/` directory 26 + 3. Place the downloaded files in this folder 27 + 4. Enable the plugin in Obsidian's Community Plugins settings 28 + 29 + ## Setup 30 + 31 + Before using the plugin, you need to configure your Claude API key: 32 + 33 + 1. Get a Claude API key from [Anthropic](https://www.anthropic.com/) 34 + 2. In Obsidian, go to Settings > Claude AI Tagger 35 + 3. Enter your API key in the appropriate field 36 + 4. Configure other settings as desired 37 + 38 + ## Usage 39 + 40 + ### Tag Current Note 41 + 42 + 1. Open the note you want to tag 43 + 2. Use the command palette (Ctrl/Cmd + P) and search for "Tag current note with Claude" 44 + 3. The plugin will analyze your note and add relevant tags to the frontmatter 45 + 46 + ### Tag All Notes 47 + 48 + 1. Use the command palette (Ctrl/Cmd + P) and search for "Tag all notes with Claude" 49 + 2. Confirm the action in the dialog that appears 50 + 3. The plugin will process all notes in your vault and add tags to each one 51 + 52 + You can also use the ribbon icon (tag symbol) to access these commands. 53 + 54 + ## Settings 55 + 56 + - **Claude API Key**: Your Anthropic API key for Claude 57 + - **Claude Model**: Choose which Claude model to use (Claude 3.5 Sonnet, Claude 3 Opus, etc.) 58 + - **Maximum Number of Tags**: Set how many tags should be generated per note (1-20) 59 + - **Prompt Template**: Customize the prompt sent to Claude to generate tags 60 + 61 + ## Customizing the Prompt 62 + 63 + You can customize the prompt sent to Claude using the following placeholders: 64 + 65 + - `{maxTags}`: Will be replaced with the maximum number of tags setting 66 + - `{content}`: Will be replaced with the note content 67 + 68 + Default prompt: 69 + 70 + ``` 71 + Generate {maxTags} relevant tags for the following note content. Return only the tags as a comma-separated list, without any additional commentary. Tags should be lowercase and use hyphens for multi-word tags. 72 + 73 + Content: 74 + {content} 75 + ``` 76 + 77 + ## Development 78 + 79 + This plugin is built with TypeScript and uses the Obsidian API. If you'd like to contribute or modify the plugin: 80 + 81 + 1. Clone the repository 82 + 2. Install dependencies with `npm install` 83 + 3. Make your changes 84 + 4. Build with `npm run build` 85 + 5. Test in your Obsidian vault 86 + 87 + ## Support 88 + 89 + If you encounter any issues or have suggestions, please create an issue on the GitHub repository. 90 + 91 + ## License 92 + 93 + This plugin is licensed under the MIT License.
+49
esbuild.config.mjs
··· 1 + import esbuild from "esbuild"; 2 + import process from "process"; 3 + import builtins from "builtin-modules"; 4 + 5 + const banner = 6 + `/* 7 + THIS IS A GENERATED/BUNDLED FILE BY ESBUILD 8 + if you want to view the source, please visit the github repository of this plugin 9 + */ 10 + `; 11 + 12 + const prod = (process.argv[2] === "production"); 13 + 14 + const context = await esbuild.context({ 15 + banner: { 16 + js: banner, 17 + }, 18 + entryPoints: ["main.ts"], 19 + bundle: true, 20 + external: [ 21 + "obsidian", 22 + "electron", 23 + "@codemirror/autocomplete", 24 + "@codemirror/collab", 25 + "@codemirror/commands", 26 + "@codemirror/language", 27 + "@codemirror/lint", 28 + "@codemirror/search", 29 + "@codemirror/state", 30 + "@codemirror/view", 31 + "@lezer/common", 32 + "@lezer/highlight", 33 + "@lezer/lr", 34 + ...builtins], 35 + format: "cjs", 36 + target: "es2018", 37 + logLevel: "info", 38 + sourcemap: prod ? false : "inline", 39 + treeShaking: true, 40 + outfile: "main.js", 41 + minify: prod, 42 + }); 43 + 44 + if (prod) { 45 + await context.rebuild(); 46 + process.exit(0); 47 + } else { 48 + await context.watch(); 49 + }
+436
main.ts
··· 1 + import * as yaml from "js-yaml"; 2 + import { 3 + App, 4 + MarkdownView, 5 + Modal, 6 + Notice, 7 + Plugin, 8 + PluginSettingTab, 9 + Setting, 10 + TFile, 11 + requestUrl, 12 + } from "obsidian"; 13 + 14 + interface AITaggerSettings { 15 + apiKey: string; 16 + modelName: string; 17 + maxTags: number; 18 + promptTemplate: string; 19 + } 20 + 21 + const DEFAULT_SETTINGS: AITaggerSettings = { 22 + apiKey: "", 23 + modelName: "claude-3-5-sonnet-20240620", 24 + maxTags: 5, 25 + promptTemplate: 26 + "Generate {maxTags} relevant tags for the following note content. Return only the tags as a comma-separated list, without any additional commentary. Tags should be lowercase and use hyphens for multi-word tags.\n\nContent:\n{content}", 27 + }; 28 + 29 + export default class AITaggerPlugin extends Plugin { 30 + settings: AITaggerSettings; 31 + 32 + async onload() { 33 + await this.loadSettings(); 34 + 35 + // Create an icon in the left ribbon 36 + const ribbonIconEl = this.addRibbonIcon( 37 + "tag", 38 + "Auto-tag with AI", 39 + (evt: MouseEvent) => { 40 + if (!this.settings.apiKey) { 41 + new ConfirmModal( 42 + this.app, 43 + "AI Tagging API Key Missing", 44 + () => {}, 45 + true, 46 + "API key not configured. Please add your API key in the plugin settings." 47 + ).open(); 48 + return; 49 + } 50 + new Notice( 51 + "Select a command to auto-tag the current note or all notes" 52 + ); 53 + } 54 + ); 55 + ribbonIconEl.addClass("ai-tagger-ribbon-class"); 56 + 57 + // Add command to tag current note 58 + this.addCommand({ 59 + id: "tag-current-note", 60 + name: "Tag current note with AI", 61 + checkCallback: (checking: boolean) => { 62 + const markdownView = 63 + this.app.workspace.getActiveViewOfType(MarkdownView); 64 + if (markdownView) { 65 + if (!checking) { 66 + if (!this.settings.apiKey) { 67 + new ConfirmModal( 68 + this.app, 69 + "AI Tagging API Key Missing", 70 + () => {}, 71 + true, 72 + "API key not configured. Please add your API key in the plugin settings." 73 + ).open(); 74 + return true; 75 + } 76 + this.tagCurrentNote(); 77 + } 78 + return true; 79 + } 80 + return false; 81 + }, 82 + }); 83 + 84 + // Add command to tag all notes (but might need to limit this or add pagination) 85 + this.addCommand({ 86 + id: "tag-all-notes", 87 + name: "Tag all notes with AI", 88 + callback: () => { 89 + if (!this.settings.apiKey) { 90 + new ConfirmModal( 91 + this.app, 92 + "AI Tagging API Key Missing", 93 + () => {}, 94 + true, 95 + "API key not configured. Please add your API key in the plugin settings." 96 + ).open(); 97 + return; 98 + } 99 + 100 + new ConfirmModal( 101 + this.app, 102 + "This will tag all notes in your vault. This may take a while and consume API credits. Do you want to continue?", 103 + () => this.tagAllNotes() 104 + ).open(); 105 + }, 106 + }); 107 + 108 + // Add settings tab 109 + this.addSettingTab(new AITaggerSettingTab(this.app, this)); 110 + } 111 + 112 + onunload() { 113 + // Nothing specific to clean up 114 + } 115 + 116 + async loadSettings() { 117 + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); 118 + } 119 + 120 + async saveSettings() { 121 + await this.saveData(this.settings); 122 + } 123 + 124 + async tagCurrentNote() { 125 + if (!this.settings.apiKey) { 126 + new Notice( 127 + "API key not configured. Please add your API key in the plugin settings." 128 + ); 129 + return; 130 + } 131 + 132 + const activeView = this.app.workspace.getActiveViewOfType(MarkdownView); 133 + if (!activeView || !activeView.file) { 134 + new Notice("No active note to tag"); 135 + return; 136 + } 137 + 138 + const file = activeView.file; 139 + const content = await this.app.vault.read(file); 140 + 141 + try { 142 + new Notice("Analyzing note content and generating tags..."); 143 + const tags = await this.generateTags(content); 144 + await this.updateNoteFrontmatter(file, tags); 145 + new Notice(`Successfully added tags: ${tags.join(", ")}`); 146 + } catch (error: any) { 147 + console.error("Error tagging note:", error); 148 + new Notice(`Error tagging note: ${error.message}`); 149 + } 150 + } 151 + 152 + async tagAllNotes() { 153 + if (!this.settings.apiKey) { 154 + new Notice( 155 + "API key not configured. Please add your API key in the plugin settings." 156 + ); 157 + return; 158 + } 159 + 160 + const files = this.app.vault.getMarkdownFiles(); 161 + let processed = 0; 162 + let successful = 0; 163 + 164 + new Notice(`Starting to tag ${files.length} notes...`); 165 + 166 + for (const file of files) { 167 + try { 168 + const content = await this.app.vault.read(file); 169 + const tags = await this.generateTags(content); 170 + await this.updateNoteFrontmatter(file, tags); 171 + successful++; 172 + } catch (error: any) { 173 + console.error(`Error tagging note ${file.path}:`, error); 174 + } 175 + 176 + processed++; 177 + if (processed % 10 === 0) { 178 + new Notice( 179 + `Processed ${processed}/${files.length} notes (${successful} successful)` 180 + ); 181 + } 182 + } 183 + 184 + new Notice( 185 + `Completed tagging ${successful}/${files.length} notes successfully` 186 + ); 187 + } 188 + 189 + async generateTags(content: string): Promise<string[]> { 190 + if (!this.settings.apiKey) { 191 + throw new Error( 192 + "API key not configured. Please add your API key in the plugin settings." 193 + ); 194 + } 195 + 196 + // Replace placeholders in the prompt template 197 + const prompt = this.settings.promptTemplate 198 + .replace("{maxTags}", this.settings.maxTags.toString()) 199 + .replace("{content}", content); 200 + 201 + try { 202 + const response = await requestUrl({ 203 + url: "https://api.anthropic.com/v1/messages", 204 + method: "POST", 205 + headers: { 206 + "Content-Type": "application/json", 207 + "x-api-key": this.settings.apiKey, 208 + "anthropic-version": "2023-06-01", 209 + }, 210 + body: JSON.stringify({ 211 + model: this.settings.modelName, 212 + max_tokens: 1000, 213 + messages: [ 214 + { 215 + role: "user", 216 + content: prompt, 217 + }, 218 + ], 219 + }), 220 + }); 221 + 222 + if (response.status !== 200) { 223 + throw new Error( 224 + `API returned status code ${response.status}: ${JSON.stringify( 225 + response.json 226 + )}` 227 + ); 228 + } 229 + 230 + const result = response.json; 231 + const tagText = result.content[0].text; 232 + 233 + // Split by commas and trim whitespace 234 + return tagText 235 + .split(",") 236 + .map((tag: string) => tag.trim()) 237 + .filter((tag: string) => tag.length > 0); 238 + } catch (error: any) { 239 + console.error("Error calling Claude API:", error); 240 + throw new Error(`Failed to generate tags: ${error.message}`); 241 + } 242 + } 243 + 244 + async updateNoteFrontmatter(file: TFile, newTags: string[]): Promise<void> { 245 + // Read the file content 246 + const content = await this.app.vault.read(file); 247 + 248 + let frontmatter: any = {}; 249 + let fileContent = content; 250 + const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n/); 251 + 252 + // If frontmatter exists, parse it 253 + if (frontmatterMatch) { 254 + try { 255 + frontmatter = yaml.load(frontmatterMatch[1]); 256 + fileContent = content.replace(/^---\n[\s\S]*?\n---\n/, ""); 257 + } catch (e) { 258 + console.error("Error parsing frontmatter:", e); 259 + throw new Error("Could not parse existing frontmatter"); 260 + } 261 + } 262 + 263 + // Add new tags to existing tags or create new tags field 264 + if (!frontmatter.tags) { 265 + frontmatter.tags = newTags; 266 + } else { 267 + // Handle case where tags is a string 268 + if (typeof frontmatter.tags === "string") { 269 + frontmatter.tags = [frontmatter.tags, ...newTags]; 270 + } 271 + // Handle case where tags is already an array 272 + else if (Array.isArray(frontmatter.tags)) { 273 + frontmatter.tags = [...frontmatter.tags, ...newTags]; 274 + } 275 + 276 + // Remove duplicates 277 + frontmatter.tags = [...new Set(frontmatter.tags)]; 278 + } 279 + 280 + // Convert frontmatter back to YAML 281 + const newFrontmatter = yaml.dump(frontmatter); 282 + const newContent = `---\n${newFrontmatter}---\n${fileContent}`; 283 + 284 + // Write the updated content back to the file 285 + await this.app.vault.modify(file, newContent); 286 + } 287 + } 288 + 289 + class ConfirmModal extends Modal { 290 + onConfirmCallback: () => void; 291 + message: string; 292 + hasError: boolean; 293 + errorMessage: string; 294 + 295 + constructor( 296 + app: App, 297 + message: string, 298 + onConfirmCallback: () => void, 299 + hasError = false, 300 + errorMessage = "" 301 + ) { 302 + super(app); 303 + this.message = message; 304 + this.onConfirmCallback = onConfirmCallback; 305 + this.hasError = hasError; 306 + this.errorMessage = errorMessage; 307 + } 308 + 309 + onOpen() { 310 + const { contentEl } = this; 311 + 312 + contentEl.createEl("p", { text: this.message }); 313 + 314 + if (this.hasError) { 315 + const errorEl = contentEl.createEl("p", { text: this.errorMessage }); 316 + errorEl.addClass("ai-tagger-error-message"); 317 + 318 + const buttonContainer = contentEl.createDiv(); 319 + buttonContainer.addClass("ai-tagger-modal-buttons"); 320 + 321 + const settingsButton = buttonContainer.createEl("button", { 322 + text: "Open Settings", 323 + }); 324 + settingsButton.addEventListener("click", () => { 325 + this.close(); 326 + // Open settings tab 327 + (this.app as any).setting.open(); 328 + (this.app as any).setting.openTabById("obsidian-sample-plugin"); 329 + }); 330 + 331 + const cancelButton = buttonContainer.createEl("button", { 332 + text: "Cancel", 333 + }); 334 + cancelButton.addEventListener("click", () => { 335 + this.close(); 336 + }); 337 + } else { 338 + const buttonContainer = contentEl.createDiv(); 339 + buttonContainer.addClass("ai-tagger-modal-buttons"); 340 + 341 + const confirmButton = buttonContainer.createEl("button", { 342 + text: "Confirm", 343 + }); 344 + confirmButton.addEventListener("click", () => { 345 + this.onConfirmCallback(); 346 + this.close(); 347 + }); 348 + 349 + const cancelButton = buttonContainer.createEl("button", { 350 + text: "Cancel", 351 + }); 352 + cancelButton.addEventListener("click", () => { 353 + this.close(); 354 + }); 355 + } 356 + } 357 + 358 + onClose() { 359 + const { contentEl } = this; 360 + contentEl.empty(); 361 + } 362 + } 363 + 364 + class AITaggerSettingTab extends PluginSettingTab { 365 + plugin: AITaggerPlugin; 366 + 367 + constructor(app: App, plugin: AITaggerPlugin) { 368 + super(app, plugin); 369 + this.plugin = plugin; 370 + } 371 + 372 + display(): void { 373 + const { containerEl } = this; 374 + 375 + containerEl.empty(); 376 + containerEl.createEl("h2", { text: "AI Tagging Settings" }); 377 + 378 + new Setting(containerEl) 379 + .setName("API Key") 380 + .setDesc("Your Anthropic API key. Required to use the AI service.") 381 + .addText((text) => 382 + text 383 + .setPlaceholder("Enter your API key") 384 + .setValue(this.plugin.settings.apiKey) 385 + .onChange(async (value) => { 386 + this.plugin.settings.apiKey = value; 387 + await this.plugin.saveSettings(); 388 + }) 389 + ); 390 + 391 + new Setting(containerEl) 392 + .setName("AI Model") 393 + .setDesc("Choose which AI model to use for tag generation.") 394 + .addDropdown((dropdown) => 395 + dropdown 396 + .addOption("claude-3-5-sonnet-20240620", "Claude 3.5 Sonnet") 397 + .addOption("claude-3-opus-20240229", "Claude 3 Opus") 398 + .addOption("claude-3-sonnet-20240229", "Claude 3 Sonnet") 399 + .addOption("claude-3-haiku-20240307", "Claude 3 Haiku") 400 + .setValue(this.plugin.settings.modelName) 401 + .onChange(async (value) => { 402 + this.plugin.settings.modelName = value; 403 + await this.plugin.saveSettings(); 404 + }) 405 + ); 406 + 407 + new Setting(containerEl) 408 + .setName("Maximum Number of Tags") 409 + .setDesc("Set the maximum number of tags to generate per note.") 410 + .addSlider((slider) => 411 + slider 412 + .setLimits(1, 20, 1) 413 + .setValue(this.plugin.settings.maxTags) 414 + .setDynamicTooltip() 415 + .onChange(async (value) => { 416 + this.plugin.settings.maxTags = value; 417 + await this.plugin.saveSettings(); 418 + }) 419 + ); 420 + 421 + new Setting(containerEl) 422 + .setName("Prompt Template") 423 + .setDesc( 424 + "Customize the prompt sent to the AI. Use {maxTags} and {content} as placeholders." 425 + ) 426 + .addTextArea((textarea) => 427 + textarea 428 + .setValue(this.plugin.settings.promptTemplate) 429 + .onChange(async (value) => { 430 + this.plugin.settings.promptTemplate = value; 431 + await this.plugin.saveSettings(); 432 + }) 433 + ) 434 + .setClass("ai-tagger-wide-setting"); 435 + } 436 + }
+10
manifest.json
··· 1 + { 2 + "id": "ai-tagger", 3 + "name": "AI Tagger", 4 + "version": "1.0.0", 5 + "minAppVersion": "0.15.0", 6 + "description": "Automatically tag your notes using AI and update frontmatter with generated tags.", 7 + "author": "Your Name", 8 + "authorUrl": "https://github.com/yourusername", 9 + "isDesktopOnly": false 10 + }
+2404
package-lock.json
··· 1 + { 2 + "name": "obsidian-claude-ai-tagger", 3 + "version": "1.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "obsidian-claude-ai-tagger", 9 + "version": "1.0.0", 10 + "license": "MIT", 11 + "dependencies": { 12 + "js-yaml": "^4.1.0" 13 + }, 14 + "devDependencies": { 15 + "@types/js-yaml": "^4.0.5", 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.17.3", 21 + "obsidian": "latest", 22 + "tslib": "2.4.0", 23 + "typescript": "4.7.4" 24 + } 25 + }, 26 + "node_modules/@codemirror/state": { 27 + "version": "6.5.2", 28 + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", 29 + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", 30 + "dev": true, 31 + "license": "MIT", 32 + "peer": true, 33 + "dependencies": { 34 + "@marijn/find-cluster-break": "^1.0.0" 35 + } 36 + }, 37 + "node_modules/@codemirror/view": { 38 + "version": "6.36.4", 39 + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.36.4.tgz", 40 + "integrity": "sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==", 41 + "dev": true, 42 + "license": "MIT", 43 + "peer": true, 44 + "dependencies": { 45 + "@codemirror/state": "^6.5.0", 46 + "style-mod": "^4.1.0", 47 + "w3c-keyname": "^2.2.4" 48 + } 49 + }, 50 + "node_modules/@esbuild/android-arm": { 51 + "version": "0.17.3", 52 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.3.tgz", 53 + "integrity": "sha512-1Mlz934GvbgdDmt26rTLmf03cAgLg5HyOgJN+ZGCeP3Q9ynYTNMn2/LQxIl7Uy+o4K6Rfi2OuLsr12JQQR8gNg==", 54 + "cpu": [ 55 + "arm" 56 + ], 57 + "dev": true, 58 + "license": "MIT", 59 + "optional": true, 60 + "os": [ 61 + "android" 62 + ], 63 + "engines": { 64 + "node": ">=12" 65 + } 66 + }, 67 + "node_modules/@esbuild/android-arm64": { 68 + "version": "0.17.3", 69 + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.3.tgz", 70 + "integrity": "sha512-XvJsYo3dO3Pi4kpalkyMvfQsjxPWHYjoX4MDiB/FUM4YMfWcXa5l4VCwFWVYI1+92yxqjuqrhNg0CZg3gSouyQ==", 71 + "cpu": [ 72 + "arm64" 73 + ], 74 + "dev": true, 75 + "license": "MIT", 76 + "optional": true, 77 + "os": [ 78 + "android" 79 + ], 80 + "engines": { 81 + "node": ">=12" 82 + } 83 + }, 84 + "node_modules/@esbuild/android-x64": { 85 + "version": "0.17.3", 86 + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.3.tgz", 87 + "integrity": "sha512-nuV2CmLS07Gqh5/GrZLuqkU9Bm6H6vcCspM+zjp9TdQlxJtIe+qqEXQChmfc7nWdyr/yz3h45Utk1tUn8Cz5+A==", 88 + "cpu": [ 89 + "x64" 90 + ], 91 + "dev": true, 92 + "license": "MIT", 93 + "optional": true, 94 + "os": [ 95 + "android" 96 + ], 97 + "engines": { 98 + "node": ">=12" 99 + } 100 + }, 101 + "node_modules/@esbuild/darwin-arm64": { 102 + "version": "0.17.3", 103 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.3.tgz", 104 + "integrity": "sha512-01Hxaaat6m0Xp9AXGM8mjFtqqwDjzlMP0eQq9zll9U85ttVALGCGDuEvra5Feu/NbP5AEP1MaopPwzsTcUq1cw==", 105 + "cpu": [ 106 + "arm64" 107 + ], 108 + "dev": true, 109 + "license": "MIT", 110 + "optional": true, 111 + "os": [ 112 + "darwin" 113 + ], 114 + "engines": { 115 + "node": ">=12" 116 + } 117 + }, 118 + "node_modules/@esbuild/darwin-x64": { 119 + "version": "0.17.3", 120 + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.3.tgz", 121 + "integrity": "sha512-Eo2gq0Q/er2muf8Z83X21UFoB7EU6/m3GNKvrhACJkjVThd0uA+8RfKpfNhuMCl1bKRfBzKOk6xaYKQZ4lZqvA==", 122 + "cpu": [ 123 + "x64" 124 + ], 125 + "dev": true, 126 + "license": "MIT", 127 + "optional": true, 128 + "os": [ 129 + "darwin" 130 + ], 131 + "engines": { 132 + "node": ">=12" 133 + } 134 + }, 135 + "node_modules/@esbuild/freebsd-arm64": { 136 + "version": "0.17.3", 137 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.3.tgz", 138 + "integrity": "sha512-CN62ESxaquP61n1ZjQP/jZte8CE09M6kNn3baos2SeUfdVBkWN5n6vGp2iKyb/bm/x4JQzEvJgRHLGd5F5b81w==", 139 + "cpu": [ 140 + "arm64" 141 + ], 142 + "dev": true, 143 + "license": "MIT", 144 + "optional": true, 145 + "os": [ 146 + "freebsd" 147 + ], 148 + "engines": { 149 + "node": ">=12" 150 + } 151 + }, 152 + "node_modules/@esbuild/freebsd-x64": { 153 + "version": "0.17.3", 154 + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.3.tgz", 155 + "integrity": "sha512-feq+K8TxIznZE+zhdVurF3WNJ/Sa35dQNYbaqM/wsCbWdzXr5lyq+AaTUSER2cUR+SXPnd/EY75EPRjf4s1SLg==", 156 + "cpu": [ 157 + "x64" 158 + ], 159 + "dev": true, 160 + "license": "MIT", 161 + "optional": true, 162 + "os": [ 163 + "freebsd" 164 + ], 165 + "engines": { 166 + "node": ">=12" 167 + } 168 + }, 169 + "node_modules/@esbuild/linux-arm": { 170 + "version": "0.17.3", 171 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.3.tgz", 172 + "integrity": "sha512-CLP3EgyNuPcg2cshbwkqYy5bbAgK+VhyfMU7oIYyn+x4Y67xb5C5ylxsNUjRmr8BX+MW3YhVNm6Lq6FKtRTWHQ==", 173 + "cpu": [ 174 + "arm" 175 + ], 176 + "dev": true, 177 + "license": "MIT", 178 + "optional": true, 179 + "os": [ 180 + "linux" 181 + ], 182 + "engines": { 183 + "node": ">=12" 184 + } 185 + }, 186 + "node_modules/@esbuild/linux-arm64": { 187 + "version": "0.17.3", 188 + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.3.tgz", 189 + "integrity": "sha512-JHeZXD4auLYBnrKn6JYJ0o5nWJI9PhChA/Nt0G4MvLaMrvXuWnY93R3a7PiXeJQphpL1nYsaMcoV2QtuvRnF/g==", 190 + "cpu": [ 191 + "arm64" 192 + ], 193 + "dev": true, 194 + "license": "MIT", 195 + "optional": true, 196 + "os": [ 197 + "linux" 198 + ], 199 + "engines": { 200 + "node": ">=12" 201 + } 202 + }, 203 + "node_modules/@esbuild/linux-ia32": { 204 + "version": "0.17.3", 205 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.3.tgz", 206 + "integrity": "sha512-FyXlD2ZjZqTFh0sOQxFDiWG1uQUEOLbEh9gKN/7pFxck5Vw0qjWSDqbn6C10GAa1rXJpwsntHcmLqydY9ST9ZA==", 207 + "cpu": [ 208 + "ia32" 209 + ], 210 + "dev": true, 211 + "license": "MIT", 212 + "optional": true, 213 + "os": [ 214 + "linux" 215 + ], 216 + "engines": { 217 + "node": ">=12" 218 + } 219 + }, 220 + "node_modules/@esbuild/linux-loong64": { 221 + "version": "0.17.3", 222 + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.3.tgz", 223 + "integrity": "sha512-OrDGMvDBI2g7s04J8dh8/I7eSO+/E7nMDT2Z5IruBfUO/RiigF1OF6xoH33Dn4W/OwAWSUf1s2nXamb28ZklTA==", 224 + "cpu": [ 225 + "loong64" 226 + ], 227 + "dev": true, 228 + "license": "MIT", 229 + "optional": true, 230 + "os": [ 231 + "linux" 232 + ], 233 + "engines": { 234 + "node": ">=12" 235 + } 236 + }, 237 + "node_modules/@esbuild/linux-mips64el": { 238 + "version": "0.17.3", 239 + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.3.tgz", 240 + "integrity": "sha512-DcnUpXnVCJvmv0TzuLwKBC2nsQHle8EIiAJiJ+PipEVC16wHXaPEKP0EqN8WnBe0TPvMITOUlP2aiL5YMld+CQ==", 241 + "cpu": [ 242 + "mips64el" 243 + ], 244 + "dev": true, 245 + "license": "MIT", 246 + "optional": true, 247 + "os": [ 248 + "linux" 249 + ], 250 + "engines": { 251 + "node": ">=12" 252 + } 253 + }, 254 + "node_modules/@esbuild/linux-ppc64": { 255 + "version": "0.17.3", 256 + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.3.tgz", 257 + "integrity": "sha512-BDYf/l1WVhWE+FHAW3FzZPtVlk9QsrwsxGzABmN4g8bTjmhazsId3h127pliDRRu5674k1Y2RWejbpN46N9ZhQ==", 258 + "cpu": [ 259 + "ppc64" 260 + ], 261 + "dev": true, 262 + "license": "MIT", 263 + "optional": true, 264 + "os": [ 265 + "linux" 266 + ], 267 + "engines": { 268 + "node": ">=12" 269 + } 270 + }, 271 + "node_modules/@esbuild/linux-riscv64": { 272 + "version": "0.17.3", 273 + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.3.tgz", 274 + "integrity": "sha512-WViAxWYMRIi+prTJTyV1wnqd2mS2cPqJlN85oscVhXdb/ZTFJdrpaqm/uDsZPGKHtbg5TuRX/ymKdOSk41YZow==", 275 + "cpu": [ 276 + "riscv64" 277 + ], 278 + "dev": true, 279 + "license": "MIT", 280 + "optional": true, 281 + "os": [ 282 + "linux" 283 + ], 284 + "engines": { 285 + "node": ">=12" 286 + } 287 + }, 288 + "node_modules/@esbuild/linux-s390x": { 289 + "version": "0.17.3", 290 + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.3.tgz", 291 + "integrity": "sha512-Iw8lkNHUC4oGP1O/KhumcVy77u2s6+KUjieUqzEU3XuWJqZ+AY7uVMrrCbAiwWTkpQHkr00BuXH5RpC6Sb/7Ug==", 292 + "cpu": [ 293 + "s390x" 294 + ], 295 + "dev": true, 296 + "license": "MIT", 297 + "optional": true, 298 + "os": [ 299 + "linux" 300 + ], 301 + "engines": { 302 + "node": ">=12" 303 + } 304 + }, 305 + "node_modules/@esbuild/linux-x64": { 306 + "version": "0.17.3", 307 + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.3.tgz", 308 + "integrity": "sha512-0AGkWQMzeoeAtXQRNB3s4J1/T2XbigM2/Mn2yU1tQSmQRmHIZdkGbVq2A3aDdNslPyhb9/lH0S5GMTZ4xsjBqg==", 309 + "cpu": [ 310 + "x64" 311 + ], 312 + "dev": true, 313 + "license": "MIT", 314 + "optional": true, 315 + "os": [ 316 + "linux" 317 + ], 318 + "engines": { 319 + "node": ">=12" 320 + } 321 + }, 322 + "node_modules/@esbuild/netbsd-x64": { 323 + "version": "0.17.3", 324 + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.3.tgz", 325 + "integrity": "sha512-4+rR/WHOxIVh53UIQIICryjdoKdHsFZFD4zLSonJ9RRw7bhKzVyXbnRPsWSfwybYqw9sB7ots/SYyufL1mBpEg==", 326 + "cpu": [ 327 + "x64" 328 + ], 329 + "dev": true, 330 + "license": "MIT", 331 + "optional": true, 332 + "os": [ 333 + "netbsd" 334 + ], 335 + "engines": { 336 + "node": ">=12" 337 + } 338 + }, 339 + "node_modules/@esbuild/openbsd-x64": { 340 + "version": "0.17.3", 341 + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.3.tgz", 342 + "integrity": "sha512-cVpWnkx9IYg99EjGxa5Gc0XmqumtAwK3aoz7O4Dii2vko+qXbkHoujWA68cqXjhh6TsLaQelfDO4MVnyr+ODeA==", 343 + "cpu": [ 344 + "x64" 345 + ], 346 + "dev": true, 347 + "license": "MIT", 348 + "optional": true, 349 + "os": [ 350 + "openbsd" 351 + ], 352 + "engines": { 353 + "node": ">=12" 354 + } 355 + }, 356 + "node_modules/@esbuild/sunos-x64": { 357 + "version": "0.17.3", 358 + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.3.tgz", 359 + "integrity": "sha512-RxmhKLbTCDAY2xOfrww6ieIZkZF+KBqG7S2Ako2SljKXRFi+0863PspK74QQ7JpmWwncChY25JTJSbVBYGQk2Q==", 360 + "cpu": [ 361 + "x64" 362 + ], 363 + "dev": true, 364 + "license": "MIT", 365 + "optional": true, 366 + "os": [ 367 + "sunos" 368 + ], 369 + "engines": { 370 + "node": ">=12" 371 + } 372 + }, 373 + "node_modules/@esbuild/win32-arm64": { 374 + "version": "0.17.3", 375 + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.3.tgz", 376 + "integrity": "sha512-0r36VeEJ4efwmofxVJRXDjVRP2jTmv877zc+i+Pc7MNsIr38NfsjkQj23AfF7l0WbB+RQ7VUb+LDiqC/KY/M/A==", 377 + "cpu": [ 378 + "arm64" 379 + ], 380 + "dev": true, 381 + "license": "MIT", 382 + "optional": true, 383 + "os": [ 384 + "win32" 385 + ], 386 + "engines": { 387 + "node": ">=12" 388 + } 389 + }, 390 + "node_modules/@esbuild/win32-ia32": { 391 + "version": "0.17.3", 392 + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.3.tgz", 393 + "integrity": "sha512-wgO6rc7uGStH22nur4aLFcq7Wh86bE9cOFmfTr/yxN3BXvDEdCSXyKkO+U5JIt53eTOgC47v9k/C1bITWL/Teg==", 394 + "cpu": [ 395 + "ia32" 396 + ], 397 + "dev": true, 398 + "license": "MIT", 399 + "optional": true, 400 + "os": [ 401 + "win32" 402 + ], 403 + "engines": { 404 + "node": ">=12" 405 + } 406 + }, 407 + "node_modules/@esbuild/win32-x64": { 408 + "version": "0.17.3", 409 + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.3.tgz", 410 + "integrity": "sha512-FdVl64OIuiKjgXBjwZaJLKp0eaEckifbhn10dXWhysMJkWblg3OEEGKSIyhiD5RSgAya8WzP3DNkngtIg3Nt7g==", 411 + "cpu": [ 412 + "x64" 413 + ], 414 + "dev": true, 415 + "license": "MIT", 416 + "optional": true, 417 + "os": [ 418 + "win32" 419 + ], 420 + "engines": { 421 + "node": ">=12" 422 + } 423 + }, 424 + "node_modules/@eslint-community/eslint-utils": { 425 + "version": "4.4.1", 426 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", 427 + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", 428 + "dev": true, 429 + "license": "MIT", 430 + "peer": true, 431 + "dependencies": { 432 + "eslint-visitor-keys": "^3.4.3" 433 + }, 434 + "engines": { 435 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 436 + }, 437 + "funding": { 438 + "url": "https://opencollective.com/eslint" 439 + }, 440 + "peerDependencies": { 441 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 442 + } 443 + }, 444 + "node_modules/@eslint-community/regexpp": { 445 + "version": "4.12.1", 446 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", 447 + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", 448 + "dev": true, 449 + "license": "MIT", 450 + "peer": true, 451 + "engines": { 452 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 453 + } 454 + }, 455 + "node_modules/@eslint/eslintrc": { 456 + "version": "2.1.4", 457 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 458 + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 459 + "dev": true, 460 + "license": "MIT", 461 + "peer": true, 462 + "dependencies": { 463 + "ajv": "^6.12.4", 464 + "debug": "^4.3.2", 465 + "espree": "^9.6.0", 466 + "globals": "^13.19.0", 467 + "ignore": "^5.2.0", 468 + "import-fresh": "^3.2.1", 469 + "js-yaml": "^4.1.0", 470 + "minimatch": "^3.1.2", 471 + "strip-json-comments": "^3.1.1" 472 + }, 473 + "engines": { 474 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 475 + }, 476 + "funding": { 477 + "url": "https://opencollective.com/eslint" 478 + } 479 + }, 480 + "node_modules/@eslint/js": { 481 + "version": "8.57.1", 482 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", 483 + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", 484 + "dev": true, 485 + "license": "MIT", 486 + "peer": true, 487 + "engines": { 488 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 489 + } 490 + }, 491 + "node_modules/@humanwhocodes/config-array": { 492 + "version": "0.13.0", 493 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", 494 + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", 495 + "deprecated": "Use @eslint/config-array instead", 496 + "dev": true, 497 + "license": "Apache-2.0", 498 + "peer": true, 499 + "dependencies": { 500 + "@humanwhocodes/object-schema": "^2.0.3", 501 + "debug": "^4.3.1", 502 + "minimatch": "^3.0.5" 503 + }, 504 + "engines": { 505 + "node": ">=10.10.0" 506 + } 507 + }, 508 + "node_modules/@humanwhocodes/module-importer": { 509 + "version": "1.0.1", 510 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 511 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 512 + "dev": true, 513 + "license": "Apache-2.0", 514 + "peer": true, 515 + "engines": { 516 + "node": ">=12.22" 517 + }, 518 + "funding": { 519 + "type": "github", 520 + "url": "https://github.com/sponsors/nzakas" 521 + } 522 + }, 523 + "node_modules/@humanwhocodes/object-schema": { 524 + "version": "2.0.3", 525 + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", 526 + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", 527 + "deprecated": "Use @eslint/object-schema instead", 528 + "dev": true, 529 + "license": "BSD-3-Clause", 530 + "peer": true 531 + }, 532 + "node_modules/@marijn/find-cluster-break": { 533 + "version": "1.0.2", 534 + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", 535 + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", 536 + "dev": true, 537 + "license": "MIT", 538 + "peer": true 539 + }, 540 + "node_modules/@nodelib/fs.scandir": { 541 + "version": "2.1.5", 542 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 543 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 544 + "dev": true, 545 + "license": "MIT", 546 + "dependencies": { 547 + "@nodelib/fs.stat": "2.0.5", 548 + "run-parallel": "^1.1.9" 549 + }, 550 + "engines": { 551 + "node": ">= 8" 552 + } 553 + }, 554 + "node_modules/@nodelib/fs.stat": { 555 + "version": "2.0.5", 556 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 557 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 558 + "dev": true, 559 + "license": "MIT", 560 + "engines": { 561 + "node": ">= 8" 562 + } 563 + }, 564 + "node_modules/@nodelib/fs.walk": { 565 + "version": "1.2.8", 566 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 567 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 568 + "dev": true, 569 + "license": "MIT", 570 + "dependencies": { 571 + "@nodelib/fs.scandir": "2.1.5", 572 + "fastq": "^1.6.0" 573 + }, 574 + "engines": { 575 + "node": ">= 8" 576 + } 577 + }, 578 + "node_modules/@types/codemirror": { 579 + "version": "5.60.8", 580 + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.8.tgz", 581 + "integrity": "sha512-VjFgDF/eB+Aklcy15TtOTLQeMjTo07k7KAjql8OK5Dirr7a6sJY4T1uVBDuTVG9VEmn1uUsohOpYnVfgC6/jyw==", 582 + "dev": true, 583 + "license": "MIT", 584 + "dependencies": { 585 + "@types/tern": "*" 586 + } 587 + }, 588 + "node_modules/@types/estree": { 589 + "version": "1.0.6", 590 + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 591 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 592 + "dev": true, 593 + "license": "MIT" 594 + }, 595 + "node_modules/@types/js-yaml": { 596 + "version": "4.0.9", 597 + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", 598 + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", 599 + "dev": true, 600 + "license": "MIT" 601 + }, 602 + "node_modules/@types/json-schema": { 603 + "version": "7.0.15", 604 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 605 + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 606 + "dev": true, 607 + "license": "MIT" 608 + }, 609 + "node_modules/@types/node": { 610 + "version": "16.18.126", 611 + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", 612 + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", 613 + "dev": true, 614 + "license": "MIT" 615 + }, 616 + "node_modules/@types/tern": { 617 + "version": "0.23.9", 618 + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", 619 + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", 620 + "dev": true, 621 + "license": "MIT", 622 + "dependencies": { 623 + "@types/estree": "*" 624 + } 625 + }, 626 + "node_modules/@typescript-eslint/eslint-plugin": { 627 + "version": "5.29.0", 628 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz", 629 + "integrity": "sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w==", 630 + "dev": true, 631 + "license": "MIT", 632 + "dependencies": { 633 + "@typescript-eslint/scope-manager": "5.29.0", 634 + "@typescript-eslint/type-utils": "5.29.0", 635 + "@typescript-eslint/utils": "5.29.0", 636 + "debug": "^4.3.4", 637 + "functional-red-black-tree": "^1.0.1", 638 + "ignore": "^5.2.0", 639 + "regexpp": "^3.2.0", 640 + "semver": "^7.3.7", 641 + "tsutils": "^3.21.0" 642 + }, 643 + "engines": { 644 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 645 + }, 646 + "funding": { 647 + "type": "opencollective", 648 + "url": "https://opencollective.com/typescript-eslint" 649 + }, 650 + "peerDependencies": { 651 + "@typescript-eslint/parser": "^5.0.0", 652 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 653 + }, 654 + "peerDependenciesMeta": { 655 + "typescript": { 656 + "optional": true 657 + } 658 + } 659 + }, 660 + "node_modules/@typescript-eslint/parser": { 661 + "version": "5.29.0", 662 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.29.0.tgz", 663 + "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", 664 + "dev": true, 665 + "license": "BSD-2-Clause", 666 + "dependencies": { 667 + "@typescript-eslint/scope-manager": "5.29.0", 668 + "@typescript-eslint/types": "5.29.0", 669 + "@typescript-eslint/typescript-estree": "5.29.0", 670 + "debug": "^4.3.4" 671 + }, 672 + "engines": { 673 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 674 + }, 675 + "funding": { 676 + "type": "opencollective", 677 + "url": "https://opencollective.com/typescript-eslint" 678 + }, 679 + "peerDependencies": { 680 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 681 + }, 682 + "peerDependenciesMeta": { 683 + "typescript": { 684 + "optional": true 685 + } 686 + } 687 + }, 688 + "node_modules/@typescript-eslint/scope-manager": { 689 + "version": "5.29.0", 690 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz", 691 + "integrity": "sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA==", 692 + "dev": true, 693 + "license": "MIT", 694 + "dependencies": { 695 + "@typescript-eslint/types": "5.29.0", 696 + "@typescript-eslint/visitor-keys": "5.29.0" 697 + }, 698 + "engines": { 699 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 700 + }, 701 + "funding": { 702 + "type": "opencollective", 703 + "url": "https://opencollective.com/typescript-eslint" 704 + } 705 + }, 706 + "node_modules/@typescript-eslint/type-utils": { 707 + "version": "5.29.0", 708 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz", 709 + "integrity": "sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg==", 710 + "dev": true, 711 + "license": "MIT", 712 + "dependencies": { 713 + "@typescript-eslint/utils": "5.29.0", 714 + "debug": "^4.3.4", 715 + "tsutils": "^3.21.0" 716 + }, 717 + "engines": { 718 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 719 + }, 720 + "funding": { 721 + "type": "opencollective", 722 + "url": "https://opencollective.com/typescript-eslint" 723 + }, 724 + "peerDependencies": { 725 + "eslint": "*" 726 + }, 727 + "peerDependenciesMeta": { 728 + "typescript": { 729 + "optional": true 730 + } 731 + } 732 + }, 733 + "node_modules/@typescript-eslint/types": { 734 + "version": "5.29.0", 735 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.29.0.tgz", 736 + "integrity": "sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg==", 737 + "dev": true, 738 + "license": "MIT", 739 + "engines": { 740 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 741 + }, 742 + "funding": { 743 + "type": "opencollective", 744 + "url": "https://opencollective.com/typescript-eslint" 745 + } 746 + }, 747 + "node_modules/@typescript-eslint/typescript-estree": { 748 + "version": "5.29.0", 749 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz", 750 + "integrity": "sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ==", 751 + "dev": true, 752 + "license": "BSD-2-Clause", 753 + "dependencies": { 754 + "@typescript-eslint/types": "5.29.0", 755 + "@typescript-eslint/visitor-keys": "5.29.0", 756 + "debug": "^4.3.4", 757 + "globby": "^11.1.0", 758 + "is-glob": "^4.0.3", 759 + "semver": "^7.3.7", 760 + "tsutils": "^3.21.0" 761 + }, 762 + "engines": { 763 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 764 + }, 765 + "funding": { 766 + "type": "opencollective", 767 + "url": "https://opencollective.com/typescript-eslint" 768 + }, 769 + "peerDependenciesMeta": { 770 + "typescript": { 771 + "optional": true 772 + } 773 + } 774 + }, 775 + "node_modules/@typescript-eslint/utils": { 776 + "version": "5.29.0", 777 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.29.0.tgz", 778 + "integrity": "sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A==", 779 + "dev": true, 780 + "license": "MIT", 781 + "dependencies": { 782 + "@types/json-schema": "^7.0.9", 783 + "@typescript-eslint/scope-manager": "5.29.0", 784 + "@typescript-eslint/types": "5.29.0", 785 + "@typescript-eslint/typescript-estree": "5.29.0", 786 + "eslint-scope": "^5.1.1", 787 + "eslint-utils": "^3.0.0" 788 + }, 789 + "engines": { 790 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 791 + }, 792 + "funding": { 793 + "type": "opencollective", 794 + "url": "https://opencollective.com/typescript-eslint" 795 + }, 796 + "peerDependencies": { 797 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 798 + } 799 + }, 800 + "node_modules/@typescript-eslint/visitor-keys": { 801 + "version": "5.29.0", 802 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz", 803 + "integrity": "sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ==", 804 + "dev": true, 805 + "license": "MIT", 806 + "dependencies": { 807 + "@typescript-eslint/types": "5.29.0", 808 + "eslint-visitor-keys": "^3.3.0" 809 + }, 810 + "engines": { 811 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 812 + }, 813 + "funding": { 814 + "type": "opencollective", 815 + "url": "https://opencollective.com/typescript-eslint" 816 + } 817 + }, 818 + "node_modules/@ungap/structured-clone": { 819 + "version": "1.3.0", 820 + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", 821 + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", 822 + "dev": true, 823 + "license": "ISC", 824 + "peer": true 825 + }, 826 + "node_modules/acorn": { 827 + "version": "8.14.1", 828 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", 829 + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", 830 + "dev": true, 831 + "license": "MIT", 832 + "peer": true, 833 + "bin": { 834 + "acorn": "bin/acorn" 835 + }, 836 + "engines": { 837 + "node": ">=0.4.0" 838 + } 839 + }, 840 + "node_modules/acorn-jsx": { 841 + "version": "5.3.2", 842 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 843 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 844 + "dev": true, 845 + "license": "MIT", 846 + "peer": true, 847 + "peerDependencies": { 848 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 849 + } 850 + }, 851 + "node_modules/ajv": { 852 + "version": "6.12.6", 853 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 854 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 855 + "dev": true, 856 + "license": "MIT", 857 + "peer": true, 858 + "dependencies": { 859 + "fast-deep-equal": "^3.1.1", 860 + "fast-json-stable-stringify": "^2.0.0", 861 + "json-schema-traverse": "^0.4.1", 862 + "uri-js": "^4.2.2" 863 + }, 864 + "funding": { 865 + "type": "github", 866 + "url": "https://github.com/sponsors/epoberezkin" 867 + } 868 + }, 869 + "node_modules/ansi-regex": { 870 + "version": "5.0.1", 871 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 872 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 873 + "dev": true, 874 + "license": "MIT", 875 + "peer": true, 876 + "engines": { 877 + "node": ">=8" 878 + } 879 + }, 880 + "node_modules/ansi-styles": { 881 + "version": "4.3.0", 882 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 883 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 884 + "dev": true, 885 + "license": "MIT", 886 + "peer": true, 887 + "dependencies": { 888 + "color-convert": "^2.0.1" 889 + }, 890 + "engines": { 891 + "node": ">=8" 892 + }, 893 + "funding": { 894 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 895 + } 896 + }, 897 + "node_modules/argparse": { 898 + "version": "2.0.1", 899 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 900 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 901 + "license": "Python-2.0" 902 + }, 903 + "node_modules/array-union": { 904 + "version": "2.1.0", 905 + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 906 + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 907 + "dev": true, 908 + "license": "MIT", 909 + "engines": { 910 + "node": ">=8" 911 + } 912 + }, 913 + "node_modules/balanced-match": { 914 + "version": "1.0.2", 915 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 916 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 917 + "dev": true, 918 + "license": "MIT", 919 + "peer": true 920 + }, 921 + "node_modules/brace-expansion": { 922 + "version": "1.1.11", 923 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 924 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 925 + "dev": true, 926 + "license": "MIT", 927 + "peer": true, 928 + "dependencies": { 929 + "balanced-match": "^1.0.0", 930 + "concat-map": "0.0.1" 931 + } 932 + }, 933 + "node_modules/braces": { 934 + "version": "3.0.3", 935 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 936 + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 937 + "dev": true, 938 + "license": "MIT", 939 + "dependencies": { 940 + "fill-range": "^7.1.1" 941 + }, 942 + "engines": { 943 + "node": ">=8" 944 + } 945 + }, 946 + "node_modules/builtin-modules": { 947 + "version": "3.3.0", 948 + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 949 + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 950 + "dev": true, 951 + "license": "MIT", 952 + "engines": { 953 + "node": ">=6" 954 + }, 955 + "funding": { 956 + "url": "https://github.com/sponsors/sindresorhus" 957 + } 958 + }, 959 + "node_modules/callsites": { 960 + "version": "3.1.0", 961 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 962 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 963 + "dev": true, 964 + "license": "MIT", 965 + "peer": true, 966 + "engines": { 967 + "node": ">=6" 968 + } 969 + }, 970 + "node_modules/chalk": { 971 + "version": "4.1.2", 972 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 973 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 974 + "dev": true, 975 + "license": "MIT", 976 + "peer": true, 977 + "dependencies": { 978 + "ansi-styles": "^4.1.0", 979 + "supports-color": "^7.1.0" 980 + }, 981 + "engines": { 982 + "node": ">=10" 983 + }, 984 + "funding": { 985 + "url": "https://github.com/chalk/chalk?sponsor=1" 986 + } 987 + }, 988 + "node_modules/color-convert": { 989 + "version": "2.0.1", 990 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 991 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 992 + "dev": true, 993 + "license": "MIT", 994 + "peer": true, 995 + "dependencies": { 996 + "color-name": "~1.1.4" 997 + }, 998 + "engines": { 999 + "node": ">=7.0.0" 1000 + } 1001 + }, 1002 + "node_modules/color-name": { 1003 + "version": "1.1.4", 1004 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1005 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1006 + "dev": true, 1007 + "license": "MIT", 1008 + "peer": true 1009 + }, 1010 + "node_modules/concat-map": { 1011 + "version": "0.0.1", 1012 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1013 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1014 + "dev": true, 1015 + "license": "MIT", 1016 + "peer": true 1017 + }, 1018 + "node_modules/cross-spawn": { 1019 + "version": "7.0.6", 1020 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1021 + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1022 + "dev": true, 1023 + "license": "MIT", 1024 + "peer": true, 1025 + "dependencies": { 1026 + "path-key": "^3.1.0", 1027 + "shebang-command": "^2.0.0", 1028 + "which": "^2.0.1" 1029 + }, 1030 + "engines": { 1031 + "node": ">= 8" 1032 + } 1033 + }, 1034 + "node_modules/debug": { 1035 + "version": "4.4.0", 1036 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", 1037 + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", 1038 + "dev": true, 1039 + "license": "MIT", 1040 + "dependencies": { 1041 + "ms": "^2.1.3" 1042 + }, 1043 + "engines": { 1044 + "node": ">=6.0" 1045 + }, 1046 + "peerDependenciesMeta": { 1047 + "supports-color": { 1048 + "optional": true 1049 + } 1050 + } 1051 + }, 1052 + "node_modules/deep-is": { 1053 + "version": "0.1.4", 1054 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 1055 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 1056 + "dev": true, 1057 + "license": "MIT", 1058 + "peer": true 1059 + }, 1060 + "node_modules/dir-glob": { 1061 + "version": "3.0.1", 1062 + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1063 + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1064 + "dev": true, 1065 + "license": "MIT", 1066 + "dependencies": { 1067 + "path-type": "^4.0.0" 1068 + }, 1069 + "engines": { 1070 + "node": ">=8" 1071 + } 1072 + }, 1073 + "node_modules/doctrine": { 1074 + "version": "3.0.0", 1075 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1076 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1077 + "dev": true, 1078 + "license": "Apache-2.0", 1079 + "peer": true, 1080 + "dependencies": { 1081 + "esutils": "^2.0.2" 1082 + }, 1083 + "engines": { 1084 + "node": ">=6.0.0" 1085 + } 1086 + }, 1087 + "node_modules/esbuild": { 1088 + "version": "0.17.3", 1089 + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.3.tgz", 1090 + "integrity": "sha512-9n3AsBRe6sIyOc6kmoXg2ypCLgf3eZSraWFRpnkto+svt8cZNuKTkb1bhQcitBcvIqjNiK7K0J3KPmwGSfkA8g==", 1091 + "dev": true, 1092 + "hasInstallScript": true, 1093 + "license": "MIT", 1094 + "bin": { 1095 + "esbuild": "bin/esbuild" 1096 + }, 1097 + "engines": { 1098 + "node": ">=12" 1099 + }, 1100 + "optionalDependencies": { 1101 + "@esbuild/android-arm": "0.17.3", 1102 + "@esbuild/android-arm64": "0.17.3", 1103 + "@esbuild/android-x64": "0.17.3", 1104 + "@esbuild/darwin-arm64": "0.17.3", 1105 + "@esbuild/darwin-x64": "0.17.3", 1106 + "@esbuild/freebsd-arm64": "0.17.3", 1107 + "@esbuild/freebsd-x64": "0.17.3", 1108 + "@esbuild/linux-arm": "0.17.3", 1109 + "@esbuild/linux-arm64": "0.17.3", 1110 + "@esbuild/linux-ia32": "0.17.3", 1111 + "@esbuild/linux-loong64": "0.17.3", 1112 + "@esbuild/linux-mips64el": "0.17.3", 1113 + "@esbuild/linux-ppc64": "0.17.3", 1114 + "@esbuild/linux-riscv64": "0.17.3", 1115 + "@esbuild/linux-s390x": "0.17.3", 1116 + "@esbuild/linux-x64": "0.17.3", 1117 + "@esbuild/netbsd-x64": "0.17.3", 1118 + "@esbuild/openbsd-x64": "0.17.3", 1119 + "@esbuild/sunos-x64": "0.17.3", 1120 + "@esbuild/win32-arm64": "0.17.3", 1121 + "@esbuild/win32-ia32": "0.17.3", 1122 + "@esbuild/win32-x64": "0.17.3" 1123 + } 1124 + }, 1125 + "node_modules/escape-string-regexp": { 1126 + "version": "4.0.0", 1127 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1128 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1129 + "dev": true, 1130 + "license": "MIT", 1131 + "peer": true, 1132 + "engines": { 1133 + "node": ">=10" 1134 + }, 1135 + "funding": { 1136 + "url": "https://github.com/sponsors/sindresorhus" 1137 + } 1138 + }, 1139 + "node_modules/eslint": { 1140 + "version": "8.57.1", 1141 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", 1142 + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", 1143 + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", 1144 + "dev": true, 1145 + "license": "MIT", 1146 + "peer": true, 1147 + "dependencies": { 1148 + "@eslint-community/eslint-utils": "^4.2.0", 1149 + "@eslint-community/regexpp": "^4.6.1", 1150 + "@eslint/eslintrc": "^2.1.4", 1151 + "@eslint/js": "8.57.1", 1152 + "@humanwhocodes/config-array": "^0.13.0", 1153 + "@humanwhocodes/module-importer": "^1.0.1", 1154 + "@nodelib/fs.walk": "^1.2.8", 1155 + "@ungap/structured-clone": "^1.2.0", 1156 + "ajv": "^6.12.4", 1157 + "chalk": "^4.0.0", 1158 + "cross-spawn": "^7.0.2", 1159 + "debug": "^4.3.2", 1160 + "doctrine": "^3.0.0", 1161 + "escape-string-regexp": "^4.0.0", 1162 + "eslint-scope": "^7.2.2", 1163 + "eslint-visitor-keys": "^3.4.3", 1164 + "espree": "^9.6.1", 1165 + "esquery": "^1.4.2", 1166 + "esutils": "^2.0.2", 1167 + "fast-deep-equal": "^3.1.3", 1168 + "file-entry-cache": "^6.0.1", 1169 + "find-up": "^5.0.0", 1170 + "glob-parent": "^6.0.2", 1171 + "globals": "^13.19.0", 1172 + "graphemer": "^1.4.0", 1173 + "ignore": "^5.2.0", 1174 + "imurmurhash": "^0.1.4", 1175 + "is-glob": "^4.0.0", 1176 + "is-path-inside": "^3.0.3", 1177 + "js-yaml": "^4.1.0", 1178 + "json-stable-stringify-without-jsonify": "^1.0.1", 1179 + "levn": "^0.4.1", 1180 + "lodash.merge": "^4.6.2", 1181 + "minimatch": "^3.1.2", 1182 + "natural-compare": "^1.4.0", 1183 + "optionator": "^0.9.3", 1184 + "strip-ansi": "^6.0.1", 1185 + "text-table": "^0.2.0" 1186 + }, 1187 + "bin": { 1188 + "eslint": "bin/eslint.js" 1189 + }, 1190 + "engines": { 1191 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1192 + }, 1193 + "funding": { 1194 + "url": "https://opencollective.com/eslint" 1195 + } 1196 + }, 1197 + "node_modules/eslint-scope": { 1198 + "version": "5.1.1", 1199 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 1200 + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 1201 + "dev": true, 1202 + "license": "BSD-2-Clause", 1203 + "dependencies": { 1204 + "esrecurse": "^4.3.0", 1205 + "estraverse": "^4.1.1" 1206 + }, 1207 + "engines": { 1208 + "node": ">=8.0.0" 1209 + } 1210 + }, 1211 + "node_modules/eslint-utils": { 1212 + "version": "3.0.0", 1213 + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", 1214 + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", 1215 + "dev": true, 1216 + "license": "MIT", 1217 + "dependencies": { 1218 + "eslint-visitor-keys": "^2.0.0" 1219 + }, 1220 + "engines": { 1221 + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" 1222 + }, 1223 + "funding": { 1224 + "url": "https://github.com/sponsors/mysticatea" 1225 + }, 1226 + "peerDependencies": { 1227 + "eslint": ">=5" 1228 + } 1229 + }, 1230 + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { 1231 + "version": "2.1.0", 1232 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", 1233 + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", 1234 + "dev": true, 1235 + "license": "Apache-2.0", 1236 + "engines": { 1237 + "node": ">=10" 1238 + } 1239 + }, 1240 + "node_modules/eslint-visitor-keys": { 1241 + "version": "3.4.3", 1242 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 1243 + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 1244 + "dev": true, 1245 + "license": "Apache-2.0", 1246 + "engines": { 1247 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1248 + }, 1249 + "funding": { 1250 + "url": "https://opencollective.com/eslint" 1251 + } 1252 + }, 1253 + "node_modules/eslint/node_modules/eslint-scope": { 1254 + "version": "7.2.2", 1255 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 1256 + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 1257 + "dev": true, 1258 + "license": "BSD-2-Clause", 1259 + "peer": true, 1260 + "dependencies": { 1261 + "esrecurse": "^4.3.0", 1262 + "estraverse": "^5.2.0" 1263 + }, 1264 + "engines": { 1265 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1266 + }, 1267 + "funding": { 1268 + "url": "https://opencollective.com/eslint" 1269 + } 1270 + }, 1271 + "node_modules/eslint/node_modules/estraverse": { 1272 + "version": "5.3.0", 1273 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1274 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1275 + "dev": true, 1276 + "license": "BSD-2-Clause", 1277 + "peer": true, 1278 + "engines": { 1279 + "node": ">=4.0" 1280 + } 1281 + }, 1282 + "node_modules/espree": { 1283 + "version": "9.6.1", 1284 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 1285 + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 1286 + "dev": true, 1287 + "license": "BSD-2-Clause", 1288 + "peer": true, 1289 + "dependencies": { 1290 + "acorn": "^8.9.0", 1291 + "acorn-jsx": "^5.3.2", 1292 + "eslint-visitor-keys": "^3.4.1" 1293 + }, 1294 + "engines": { 1295 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1296 + }, 1297 + "funding": { 1298 + "url": "https://opencollective.com/eslint" 1299 + } 1300 + }, 1301 + "node_modules/esquery": { 1302 + "version": "1.6.0", 1303 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", 1304 + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", 1305 + "dev": true, 1306 + "license": "BSD-3-Clause", 1307 + "peer": true, 1308 + "dependencies": { 1309 + "estraverse": "^5.1.0" 1310 + }, 1311 + "engines": { 1312 + "node": ">=0.10" 1313 + } 1314 + }, 1315 + "node_modules/esquery/node_modules/estraverse": { 1316 + "version": "5.3.0", 1317 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1318 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1319 + "dev": true, 1320 + "license": "BSD-2-Clause", 1321 + "peer": true, 1322 + "engines": { 1323 + "node": ">=4.0" 1324 + } 1325 + }, 1326 + "node_modules/esrecurse": { 1327 + "version": "4.3.0", 1328 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1329 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1330 + "dev": true, 1331 + "license": "BSD-2-Clause", 1332 + "dependencies": { 1333 + "estraverse": "^5.2.0" 1334 + }, 1335 + "engines": { 1336 + "node": ">=4.0" 1337 + } 1338 + }, 1339 + "node_modules/esrecurse/node_modules/estraverse": { 1340 + "version": "5.3.0", 1341 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 1342 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 1343 + "dev": true, 1344 + "license": "BSD-2-Clause", 1345 + "engines": { 1346 + "node": ">=4.0" 1347 + } 1348 + }, 1349 + "node_modules/estraverse": { 1350 + "version": "4.3.0", 1351 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1352 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1353 + "dev": true, 1354 + "license": "BSD-2-Clause", 1355 + "engines": { 1356 + "node": ">=4.0" 1357 + } 1358 + }, 1359 + "node_modules/esutils": { 1360 + "version": "2.0.3", 1361 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1362 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1363 + "dev": true, 1364 + "license": "BSD-2-Clause", 1365 + "peer": true, 1366 + "engines": { 1367 + "node": ">=0.10.0" 1368 + } 1369 + }, 1370 + "node_modules/fast-deep-equal": { 1371 + "version": "3.1.3", 1372 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1373 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1374 + "dev": true, 1375 + "license": "MIT", 1376 + "peer": true 1377 + }, 1378 + "node_modules/fast-glob": { 1379 + "version": "3.3.3", 1380 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", 1381 + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", 1382 + "dev": true, 1383 + "license": "MIT", 1384 + "dependencies": { 1385 + "@nodelib/fs.stat": "^2.0.2", 1386 + "@nodelib/fs.walk": "^1.2.3", 1387 + "glob-parent": "^5.1.2", 1388 + "merge2": "^1.3.0", 1389 + "micromatch": "^4.0.8" 1390 + }, 1391 + "engines": { 1392 + "node": ">=8.6.0" 1393 + } 1394 + }, 1395 + "node_modules/fast-glob/node_modules/glob-parent": { 1396 + "version": "5.1.2", 1397 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1398 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1399 + "dev": true, 1400 + "license": "ISC", 1401 + "dependencies": { 1402 + "is-glob": "^4.0.1" 1403 + }, 1404 + "engines": { 1405 + "node": ">= 6" 1406 + } 1407 + }, 1408 + "node_modules/fast-json-stable-stringify": { 1409 + "version": "2.1.0", 1410 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1411 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1412 + "dev": true, 1413 + "license": "MIT", 1414 + "peer": true 1415 + }, 1416 + "node_modules/fast-levenshtein": { 1417 + "version": "2.0.6", 1418 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1419 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 1420 + "dev": true, 1421 + "license": "MIT", 1422 + "peer": true 1423 + }, 1424 + "node_modules/fastq": { 1425 + "version": "1.19.1", 1426 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", 1427 + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", 1428 + "dev": true, 1429 + "license": "ISC", 1430 + "dependencies": { 1431 + "reusify": "^1.0.4" 1432 + } 1433 + }, 1434 + "node_modules/file-entry-cache": { 1435 + "version": "6.0.1", 1436 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 1437 + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 1438 + "dev": true, 1439 + "license": "MIT", 1440 + "peer": true, 1441 + "dependencies": { 1442 + "flat-cache": "^3.0.4" 1443 + }, 1444 + "engines": { 1445 + "node": "^10.12.0 || >=12.0.0" 1446 + } 1447 + }, 1448 + "node_modules/fill-range": { 1449 + "version": "7.1.1", 1450 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1451 + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1452 + "dev": true, 1453 + "license": "MIT", 1454 + "dependencies": { 1455 + "to-regex-range": "^5.0.1" 1456 + }, 1457 + "engines": { 1458 + "node": ">=8" 1459 + } 1460 + }, 1461 + "node_modules/find-up": { 1462 + "version": "5.0.0", 1463 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1464 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1465 + "dev": true, 1466 + "license": "MIT", 1467 + "peer": true, 1468 + "dependencies": { 1469 + "locate-path": "^6.0.0", 1470 + "path-exists": "^4.0.0" 1471 + }, 1472 + "engines": { 1473 + "node": ">=10" 1474 + }, 1475 + "funding": { 1476 + "url": "https://github.com/sponsors/sindresorhus" 1477 + } 1478 + }, 1479 + "node_modules/flat-cache": { 1480 + "version": "3.2.0", 1481 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 1482 + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 1483 + "dev": true, 1484 + "license": "MIT", 1485 + "peer": true, 1486 + "dependencies": { 1487 + "flatted": "^3.2.9", 1488 + "keyv": "^4.5.3", 1489 + "rimraf": "^3.0.2" 1490 + }, 1491 + "engines": { 1492 + "node": "^10.12.0 || >=12.0.0" 1493 + } 1494 + }, 1495 + "node_modules/flatted": { 1496 + "version": "3.3.3", 1497 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", 1498 + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", 1499 + "dev": true, 1500 + "license": "ISC", 1501 + "peer": true 1502 + }, 1503 + "node_modules/fs.realpath": { 1504 + "version": "1.0.0", 1505 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1506 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 1507 + "dev": true, 1508 + "license": "ISC", 1509 + "peer": true 1510 + }, 1511 + "node_modules/functional-red-black-tree": { 1512 + "version": "1.0.1", 1513 + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1514 + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", 1515 + "dev": true, 1516 + "license": "MIT" 1517 + }, 1518 + "node_modules/glob": { 1519 + "version": "7.2.3", 1520 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1521 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1522 + "deprecated": "Glob versions prior to v9 are no longer supported", 1523 + "dev": true, 1524 + "license": "ISC", 1525 + "peer": true, 1526 + "dependencies": { 1527 + "fs.realpath": "^1.0.0", 1528 + "inflight": "^1.0.4", 1529 + "inherits": "2", 1530 + "minimatch": "^3.1.1", 1531 + "once": "^1.3.0", 1532 + "path-is-absolute": "^1.0.0" 1533 + }, 1534 + "engines": { 1535 + "node": "*" 1536 + }, 1537 + "funding": { 1538 + "url": "https://github.com/sponsors/isaacs" 1539 + } 1540 + }, 1541 + "node_modules/glob-parent": { 1542 + "version": "6.0.2", 1543 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1544 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1545 + "dev": true, 1546 + "license": "ISC", 1547 + "peer": true, 1548 + "dependencies": { 1549 + "is-glob": "^4.0.3" 1550 + }, 1551 + "engines": { 1552 + "node": ">=10.13.0" 1553 + } 1554 + }, 1555 + "node_modules/globals": { 1556 + "version": "13.24.0", 1557 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1558 + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1559 + "dev": true, 1560 + "license": "MIT", 1561 + "peer": true, 1562 + "dependencies": { 1563 + "type-fest": "^0.20.2" 1564 + }, 1565 + "engines": { 1566 + "node": ">=8" 1567 + }, 1568 + "funding": { 1569 + "url": "https://github.com/sponsors/sindresorhus" 1570 + } 1571 + }, 1572 + "node_modules/globby": { 1573 + "version": "11.1.0", 1574 + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1575 + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1576 + "dev": true, 1577 + "license": "MIT", 1578 + "dependencies": { 1579 + "array-union": "^2.1.0", 1580 + "dir-glob": "^3.0.1", 1581 + "fast-glob": "^3.2.9", 1582 + "ignore": "^5.2.0", 1583 + "merge2": "^1.4.1", 1584 + "slash": "^3.0.0" 1585 + }, 1586 + "engines": { 1587 + "node": ">=10" 1588 + }, 1589 + "funding": { 1590 + "url": "https://github.com/sponsors/sindresorhus" 1591 + } 1592 + }, 1593 + "node_modules/graphemer": { 1594 + "version": "1.4.0", 1595 + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1596 + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1597 + "dev": true, 1598 + "license": "MIT", 1599 + "peer": true 1600 + }, 1601 + "node_modules/has-flag": { 1602 + "version": "4.0.0", 1603 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1604 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1605 + "dev": true, 1606 + "license": "MIT", 1607 + "peer": true, 1608 + "engines": { 1609 + "node": ">=8" 1610 + } 1611 + }, 1612 + "node_modules/ignore": { 1613 + "version": "5.3.2", 1614 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", 1615 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", 1616 + "dev": true, 1617 + "license": "MIT", 1618 + "engines": { 1619 + "node": ">= 4" 1620 + } 1621 + }, 1622 + "node_modules/import-fresh": { 1623 + "version": "3.3.1", 1624 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", 1625 + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", 1626 + "dev": true, 1627 + "license": "MIT", 1628 + "peer": true, 1629 + "dependencies": { 1630 + "parent-module": "^1.0.0", 1631 + "resolve-from": "^4.0.0" 1632 + }, 1633 + "engines": { 1634 + "node": ">=6" 1635 + }, 1636 + "funding": { 1637 + "url": "https://github.com/sponsors/sindresorhus" 1638 + } 1639 + }, 1640 + "node_modules/imurmurhash": { 1641 + "version": "0.1.4", 1642 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1643 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1644 + "dev": true, 1645 + "license": "MIT", 1646 + "peer": true, 1647 + "engines": { 1648 + "node": ">=0.8.19" 1649 + } 1650 + }, 1651 + "node_modules/inflight": { 1652 + "version": "1.0.6", 1653 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1654 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1655 + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", 1656 + "dev": true, 1657 + "license": "ISC", 1658 + "peer": true, 1659 + "dependencies": { 1660 + "once": "^1.3.0", 1661 + "wrappy": "1" 1662 + } 1663 + }, 1664 + "node_modules/inherits": { 1665 + "version": "2.0.4", 1666 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1667 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1668 + "dev": true, 1669 + "license": "ISC", 1670 + "peer": true 1671 + }, 1672 + "node_modules/is-extglob": { 1673 + "version": "2.1.1", 1674 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1675 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1676 + "dev": true, 1677 + "license": "MIT", 1678 + "engines": { 1679 + "node": ">=0.10.0" 1680 + } 1681 + }, 1682 + "node_modules/is-glob": { 1683 + "version": "4.0.3", 1684 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1685 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1686 + "dev": true, 1687 + "license": "MIT", 1688 + "dependencies": { 1689 + "is-extglob": "^2.1.1" 1690 + }, 1691 + "engines": { 1692 + "node": ">=0.10.0" 1693 + } 1694 + }, 1695 + "node_modules/is-number": { 1696 + "version": "7.0.0", 1697 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1698 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1699 + "dev": true, 1700 + "license": "MIT", 1701 + "engines": { 1702 + "node": ">=0.12.0" 1703 + } 1704 + }, 1705 + "node_modules/is-path-inside": { 1706 + "version": "3.0.3", 1707 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1708 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1709 + "dev": true, 1710 + "license": "MIT", 1711 + "peer": true, 1712 + "engines": { 1713 + "node": ">=8" 1714 + } 1715 + }, 1716 + "node_modules/isexe": { 1717 + "version": "2.0.0", 1718 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1719 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1720 + "dev": true, 1721 + "license": "ISC", 1722 + "peer": true 1723 + }, 1724 + "node_modules/js-yaml": { 1725 + "version": "4.1.0", 1726 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1727 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1728 + "license": "MIT", 1729 + "dependencies": { 1730 + "argparse": "^2.0.1" 1731 + }, 1732 + "bin": { 1733 + "js-yaml": "bin/js-yaml.js" 1734 + } 1735 + }, 1736 + "node_modules/json-buffer": { 1737 + "version": "3.0.1", 1738 + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1739 + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1740 + "dev": true, 1741 + "license": "MIT", 1742 + "peer": true 1743 + }, 1744 + "node_modules/json-schema-traverse": { 1745 + "version": "0.4.1", 1746 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1747 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1748 + "dev": true, 1749 + "license": "MIT", 1750 + "peer": true 1751 + }, 1752 + "node_modules/json-stable-stringify-without-jsonify": { 1753 + "version": "1.0.1", 1754 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1755 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1756 + "dev": true, 1757 + "license": "MIT", 1758 + "peer": true 1759 + }, 1760 + "node_modules/keyv": { 1761 + "version": "4.5.4", 1762 + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1763 + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1764 + "dev": true, 1765 + "license": "MIT", 1766 + "peer": true, 1767 + "dependencies": { 1768 + "json-buffer": "3.0.1" 1769 + } 1770 + }, 1771 + "node_modules/levn": { 1772 + "version": "0.4.1", 1773 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1774 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1775 + "dev": true, 1776 + "license": "MIT", 1777 + "peer": true, 1778 + "dependencies": { 1779 + "prelude-ls": "^1.2.1", 1780 + "type-check": "~0.4.0" 1781 + }, 1782 + "engines": { 1783 + "node": ">= 0.8.0" 1784 + } 1785 + }, 1786 + "node_modules/locate-path": { 1787 + "version": "6.0.0", 1788 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1789 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1790 + "dev": true, 1791 + "license": "MIT", 1792 + "peer": true, 1793 + "dependencies": { 1794 + "p-locate": "^5.0.0" 1795 + }, 1796 + "engines": { 1797 + "node": ">=10" 1798 + }, 1799 + "funding": { 1800 + "url": "https://github.com/sponsors/sindresorhus" 1801 + } 1802 + }, 1803 + "node_modules/lodash.merge": { 1804 + "version": "4.6.2", 1805 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1806 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1807 + "dev": true, 1808 + "license": "MIT", 1809 + "peer": true 1810 + }, 1811 + "node_modules/merge2": { 1812 + "version": "1.4.1", 1813 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1814 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1815 + "dev": true, 1816 + "license": "MIT", 1817 + "engines": { 1818 + "node": ">= 8" 1819 + } 1820 + }, 1821 + "node_modules/micromatch": { 1822 + "version": "4.0.8", 1823 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", 1824 + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", 1825 + "dev": true, 1826 + "license": "MIT", 1827 + "dependencies": { 1828 + "braces": "^3.0.3", 1829 + "picomatch": "^2.3.1" 1830 + }, 1831 + "engines": { 1832 + "node": ">=8.6" 1833 + } 1834 + }, 1835 + "node_modules/minimatch": { 1836 + "version": "3.1.2", 1837 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1838 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1839 + "dev": true, 1840 + "license": "ISC", 1841 + "peer": true, 1842 + "dependencies": { 1843 + "brace-expansion": "^1.1.7" 1844 + }, 1845 + "engines": { 1846 + "node": "*" 1847 + } 1848 + }, 1849 + "node_modules/moment": { 1850 + "version": "2.29.4", 1851 + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", 1852 + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", 1853 + "dev": true, 1854 + "license": "MIT", 1855 + "engines": { 1856 + "node": "*" 1857 + } 1858 + }, 1859 + "node_modules/ms": { 1860 + "version": "2.1.3", 1861 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1862 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1863 + "dev": true, 1864 + "license": "MIT" 1865 + }, 1866 + "node_modules/natural-compare": { 1867 + "version": "1.4.0", 1868 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1869 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1870 + "dev": true, 1871 + "license": "MIT", 1872 + "peer": true 1873 + }, 1874 + "node_modules/obsidian": { 1875 + "version": "1.8.7", 1876 + "resolved": "https://registry.npmjs.org/obsidian/-/obsidian-1.8.7.tgz", 1877 + "integrity": "sha512-h4bWwNFAGRXlMlMAzdEiIM2ppTGlrh7uGOJS6w4gClrsjc+ei/3YAtU2VdFUlCiPuTHpY4aBpFJJW75S1Tl/JA==", 1878 + "dev": true, 1879 + "license": "MIT", 1880 + "dependencies": { 1881 + "@types/codemirror": "5.60.8", 1882 + "moment": "2.29.4" 1883 + }, 1884 + "peerDependencies": { 1885 + "@codemirror/state": "^6.0.0", 1886 + "@codemirror/view": "^6.0.0" 1887 + } 1888 + }, 1889 + "node_modules/once": { 1890 + "version": "1.4.0", 1891 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1892 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1893 + "dev": true, 1894 + "license": "ISC", 1895 + "peer": true, 1896 + "dependencies": { 1897 + "wrappy": "1" 1898 + } 1899 + }, 1900 + "node_modules/optionator": { 1901 + "version": "0.9.4", 1902 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", 1903 + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", 1904 + "dev": true, 1905 + "license": "MIT", 1906 + "peer": true, 1907 + "dependencies": { 1908 + "deep-is": "^0.1.3", 1909 + "fast-levenshtein": "^2.0.6", 1910 + "levn": "^0.4.1", 1911 + "prelude-ls": "^1.2.1", 1912 + "type-check": "^0.4.0", 1913 + "word-wrap": "^1.2.5" 1914 + }, 1915 + "engines": { 1916 + "node": ">= 0.8.0" 1917 + } 1918 + }, 1919 + "node_modules/p-limit": { 1920 + "version": "3.1.0", 1921 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1922 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1923 + "dev": true, 1924 + "license": "MIT", 1925 + "peer": true, 1926 + "dependencies": { 1927 + "yocto-queue": "^0.1.0" 1928 + }, 1929 + "engines": { 1930 + "node": ">=10" 1931 + }, 1932 + "funding": { 1933 + "url": "https://github.com/sponsors/sindresorhus" 1934 + } 1935 + }, 1936 + "node_modules/p-locate": { 1937 + "version": "5.0.0", 1938 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1939 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1940 + "dev": true, 1941 + "license": "MIT", 1942 + "peer": true, 1943 + "dependencies": { 1944 + "p-limit": "^3.0.2" 1945 + }, 1946 + "engines": { 1947 + "node": ">=10" 1948 + }, 1949 + "funding": { 1950 + "url": "https://github.com/sponsors/sindresorhus" 1951 + } 1952 + }, 1953 + "node_modules/parent-module": { 1954 + "version": "1.0.1", 1955 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1956 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1957 + "dev": true, 1958 + "license": "MIT", 1959 + "peer": true, 1960 + "dependencies": { 1961 + "callsites": "^3.0.0" 1962 + }, 1963 + "engines": { 1964 + "node": ">=6" 1965 + } 1966 + }, 1967 + "node_modules/path-exists": { 1968 + "version": "4.0.0", 1969 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1970 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1971 + "dev": true, 1972 + "license": "MIT", 1973 + "peer": true, 1974 + "engines": { 1975 + "node": ">=8" 1976 + } 1977 + }, 1978 + "node_modules/path-is-absolute": { 1979 + "version": "1.0.1", 1980 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1981 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1982 + "dev": true, 1983 + "license": "MIT", 1984 + "peer": true, 1985 + "engines": { 1986 + "node": ">=0.10.0" 1987 + } 1988 + }, 1989 + "node_modules/path-key": { 1990 + "version": "3.1.1", 1991 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1992 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1993 + "dev": true, 1994 + "license": "MIT", 1995 + "peer": true, 1996 + "engines": { 1997 + "node": ">=8" 1998 + } 1999 + }, 2000 + "node_modules/path-type": { 2001 + "version": "4.0.0", 2002 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2003 + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2004 + "dev": true, 2005 + "license": "MIT", 2006 + "engines": { 2007 + "node": ">=8" 2008 + } 2009 + }, 2010 + "node_modules/picomatch": { 2011 + "version": "2.3.1", 2012 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2013 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2014 + "dev": true, 2015 + "license": "MIT", 2016 + "engines": { 2017 + "node": ">=8.6" 2018 + }, 2019 + "funding": { 2020 + "url": "https://github.com/sponsors/jonschlinkert" 2021 + } 2022 + }, 2023 + "node_modules/prelude-ls": { 2024 + "version": "1.2.1", 2025 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2026 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2027 + "dev": true, 2028 + "license": "MIT", 2029 + "peer": true, 2030 + "engines": { 2031 + "node": ">= 0.8.0" 2032 + } 2033 + }, 2034 + "node_modules/punycode": { 2035 + "version": "2.3.1", 2036 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2037 + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2038 + "dev": true, 2039 + "license": "MIT", 2040 + "peer": true, 2041 + "engines": { 2042 + "node": ">=6" 2043 + } 2044 + }, 2045 + "node_modules/queue-microtask": { 2046 + "version": "1.2.3", 2047 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2048 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2049 + "dev": true, 2050 + "funding": [ 2051 + { 2052 + "type": "github", 2053 + "url": "https://github.com/sponsors/feross" 2054 + }, 2055 + { 2056 + "type": "patreon", 2057 + "url": "https://www.patreon.com/feross" 2058 + }, 2059 + { 2060 + "type": "consulting", 2061 + "url": "https://feross.org/support" 2062 + } 2063 + ], 2064 + "license": "MIT" 2065 + }, 2066 + "node_modules/regexpp": { 2067 + "version": "3.2.0", 2068 + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", 2069 + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", 2070 + "dev": true, 2071 + "license": "MIT", 2072 + "engines": { 2073 + "node": ">=8" 2074 + }, 2075 + "funding": { 2076 + "url": "https://github.com/sponsors/mysticatea" 2077 + } 2078 + }, 2079 + "node_modules/resolve-from": { 2080 + "version": "4.0.0", 2081 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2082 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2083 + "dev": true, 2084 + "license": "MIT", 2085 + "peer": true, 2086 + "engines": { 2087 + "node": ">=4" 2088 + } 2089 + }, 2090 + "node_modules/reusify": { 2091 + "version": "1.1.0", 2092 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", 2093 + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", 2094 + "dev": true, 2095 + "license": "MIT", 2096 + "engines": { 2097 + "iojs": ">=1.0.0", 2098 + "node": ">=0.10.0" 2099 + } 2100 + }, 2101 + "node_modules/rimraf": { 2102 + "version": "3.0.2", 2103 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2104 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2105 + "deprecated": "Rimraf versions prior to v4 are no longer supported", 2106 + "dev": true, 2107 + "license": "ISC", 2108 + "peer": true, 2109 + "dependencies": { 2110 + "glob": "^7.1.3" 2111 + }, 2112 + "bin": { 2113 + "rimraf": "bin.js" 2114 + }, 2115 + "funding": { 2116 + "url": "https://github.com/sponsors/isaacs" 2117 + } 2118 + }, 2119 + "node_modules/run-parallel": { 2120 + "version": "1.2.0", 2121 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2122 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2123 + "dev": true, 2124 + "funding": [ 2125 + { 2126 + "type": "github", 2127 + "url": "https://github.com/sponsors/feross" 2128 + }, 2129 + { 2130 + "type": "patreon", 2131 + "url": "https://www.patreon.com/feross" 2132 + }, 2133 + { 2134 + "type": "consulting", 2135 + "url": "https://feross.org/support" 2136 + } 2137 + ], 2138 + "license": "MIT", 2139 + "dependencies": { 2140 + "queue-microtask": "^1.2.2" 2141 + } 2142 + }, 2143 + "node_modules/semver": { 2144 + "version": "7.7.1", 2145 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", 2146 + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", 2147 + "dev": true, 2148 + "license": "ISC", 2149 + "bin": { 2150 + "semver": "bin/semver.js" 2151 + }, 2152 + "engines": { 2153 + "node": ">=10" 2154 + } 2155 + }, 2156 + "node_modules/shebang-command": { 2157 + "version": "2.0.0", 2158 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2159 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2160 + "dev": true, 2161 + "license": "MIT", 2162 + "peer": true, 2163 + "dependencies": { 2164 + "shebang-regex": "^3.0.0" 2165 + }, 2166 + "engines": { 2167 + "node": ">=8" 2168 + } 2169 + }, 2170 + "node_modules/shebang-regex": { 2171 + "version": "3.0.0", 2172 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2173 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2174 + "dev": true, 2175 + "license": "MIT", 2176 + "peer": true, 2177 + "engines": { 2178 + "node": ">=8" 2179 + } 2180 + }, 2181 + "node_modules/slash": { 2182 + "version": "3.0.0", 2183 + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2184 + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2185 + "dev": true, 2186 + "license": "MIT", 2187 + "engines": { 2188 + "node": ">=8" 2189 + } 2190 + }, 2191 + "node_modules/strip-ansi": { 2192 + "version": "6.0.1", 2193 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2194 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2195 + "dev": true, 2196 + "license": "MIT", 2197 + "peer": true, 2198 + "dependencies": { 2199 + "ansi-regex": "^5.0.1" 2200 + }, 2201 + "engines": { 2202 + "node": ">=8" 2203 + } 2204 + }, 2205 + "node_modules/strip-json-comments": { 2206 + "version": "3.1.1", 2207 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2208 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2209 + "dev": true, 2210 + "license": "MIT", 2211 + "peer": true, 2212 + "engines": { 2213 + "node": ">=8" 2214 + }, 2215 + "funding": { 2216 + "url": "https://github.com/sponsors/sindresorhus" 2217 + } 2218 + }, 2219 + "node_modules/style-mod": { 2220 + "version": "4.1.2", 2221 + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", 2222 + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", 2223 + "dev": true, 2224 + "license": "MIT", 2225 + "peer": true 2226 + }, 2227 + "node_modules/supports-color": { 2228 + "version": "7.2.0", 2229 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2230 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2231 + "dev": true, 2232 + "license": "MIT", 2233 + "peer": true, 2234 + "dependencies": { 2235 + "has-flag": "^4.0.0" 2236 + }, 2237 + "engines": { 2238 + "node": ">=8" 2239 + } 2240 + }, 2241 + "node_modules/text-table": { 2242 + "version": "0.2.0", 2243 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2244 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2245 + "dev": true, 2246 + "license": "MIT", 2247 + "peer": true 2248 + }, 2249 + "node_modules/to-regex-range": { 2250 + "version": "5.0.1", 2251 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2252 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2253 + "dev": true, 2254 + "license": "MIT", 2255 + "dependencies": { 2256 + "is-number": "^7.0.0" 2257 + }, 2258 + "engines": { 2259 + "node": ">=8.0" 2260 + } 2261 + }, 2262 + "node_modules/tslib": { 2263 + "version": "2.4.0", 2264 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 2265 + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", 2266 + "dev": true, 2267 + "license": "0BSD" 2268 + }, 2269 + "node_modules/tsutils": { 2270 + "version": "3.21.0", 2271 + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 2272 + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 2273 + "dev": true, 2274 + "license": "MIT", 2275 + "dependencies": { 2276 + "tslib": "^1.8.1" 2277 + }, 2278 + "engines": { 2279 + "node": ">= 6" 2280 + }, 2281 + "peerDependencies": { 2282 + "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" 2283 + } 2284 + }, 2285 + "node_modules/tsutils/node_modules/tslib": { 2286 + "version": "1.14.1", 2287 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2288 + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 2289 + "dev": true, 2290 + "license": "0BSD" 2291 + }, 2292 + "node_modules/type-check": { 2293 + "version": "0.4.0", 2294 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2295 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2296 + "dev": true, 2297 + "license": "MIT", 2298 + "peer": true, 2299 + "dependencies": { 2300 + "prelude-ls": "^1.2.1" 2301 + }, 2302 + "engines": { 2303 + "node": ">= 0.8.0" 2304 + } 2305 + }, 2306 + "node_modules/type-fest": { 2307 + "version": "0.20.2", 2308 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2309 + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2310 + "dev": true, 2311 + "license": "(MIT OR CC0-1.0)", 2312 + "peer": true, 2313 + "engines": { 2314 + "node": ">=10" 2315 + }, 2316 + "funding": { 2317 + "url": "https://github.com/sponsors/sindresorhus" 2318 + } 2319 + }, 2320 + "node_modules/typescript": { 2321 + "version": "4.7.4", 2322 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", 2323 + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", 2324 + "dev": true, 2325 + "license": "Apache-2.0", 2326 + "bin": { 2327 + "tsc": "bin/tsc", 2328 + "tsserver": "bin/tsserver" 2329 + }, 2330 + "engines": { 2331 + "node": ">=4.2.0" 2332 + } 2333 + }, 2334 + "node_modules/uri-js": { 2335 + "version": "4.4.1", 2336 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2337 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2338 + "dev": true, 2339 + "license": "BSD-2-Clause", 2340 + "peer": true, 2341 + "dependencies": { 2342 + "punycode": "^2.1.0" 2343 + } 2344 + }, 2345 + "node_modules/w3c-keyname": { 2346 + "version": "2.2.8", 2347 + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", 2348 + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", 2349 + "dev": true, 2350 + "license": "MIT", 2351 + "peer": true 2352 + }, 2353 + "node_modules/which": { 2354 + "version": "2.0.2", 2355 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2356 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2357 + "dev": true, 2358 + "license": "ISC", 2359 + "peer": true, 2360 + "dependencies": { 2361 + "isexe": "^2.0.0" 2362 + }, 2363 + "bin": { 2364 + "node-which": "bin/node-which" 2365 + }, 2366 + "engines": { 2367 + "node": ">= 8" 2368 + } 2369 + }, 2370 + "node_modules/word-wrap": { 2371 + "version": "1.2.5", 2372 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", 2373 + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", 2374 + "dev": true, 2375 + "license": "MIT", 2376 + "peer": true, 2377 + "engines": { 2378 + "node": ">=0.10.0" 2379 + } 2380 + }, 2381 + "node_modules/wrappy": { 2382 + "version": "1.0.2", 2383 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2384 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2385 + "dev": true, 2386 + "license": "ISC", 2387 + "peer": true 2388 + }, 2389 + "node_modules/yocto-queue": { 2390 + "version": "0.1.0", 2391 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2392 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2393 + "dev": true, 2394 + "license": "MIT", 2395 + "peer": true, 2396 + "engines": { 2397 + "node": ">=10" 2398 + }, 2399 + "funding": { 2400 + "url": "https://github.com/sponsors/sindresorhus" 2401 + } 2402 + } 2403 + } 2404 + }
+35
package.json
··· 1 + { 2 + "name": "obsidian-ai-tagger", 3 + "version": "1.0.0", 4 + "description": "Automatically tag your notes using AI and update frontmatter with generated tags", 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 && git add manifest.json versions.json" 10 + }, 11 + "keywords": [ 12 + "obsidian", 13 + "plugin", 14 + "claude", 15 + "ai", 16 + "tagging", 17 + "frontmatter" 18 + ], 19 + "author": "Your Name", 20 + "license": "MIT", 21 + "devDependencies": { 22 + "@types/js-yaml": "^4.0.5", 23 + "@types/node": "^16.11.6", 24 + "@typescript-eslint/eslint-plugin": "5.29.0", 25 + "@typescript-eslint/parser": "5.29.0", 26 + "builtin-modules": "3.3.0", 27 + "esbuild": "0.17.3", 28 + "obsidian": "latest", 29 + "tslib": "2.4.0", 30 + "typescript": "4.7.4" 31 + }, 32 + "dependencies": { 33 + "js-yaml": "^4.1.0" 34 + } 35 + }
+41
styles.css
··· 1 + /* 2 + AI Tagger Plugin Styles 3 + */ 4 + 5 + /* Modal button styling */ 6 + .ai-tagger-modal-buttons { 7 + display: flex; 8 + justify-content: flex-end; 9 + gap: 10px; 10 + margin-top: 20px; 11 + } 12 + 13 + .ai-tagger-modal-buttons button { 14 + padding: 6px 12px; 15 + border-radius: 4px; 16 + font-size: 14px; 17 + cursor: pointer; 18 + } 19 + 20 + /* Settings styling */ 21 + .ai-tagger-wide-setting textarea { 22 + width: 100%; 23 + min-height: 120px; 24 + font-family: var(--font-monospace); 25 + resize: vertical; 26 + } 27 + 28 + /* Add a subtle highlight for successfully tagged notes if needed */ 29 + .ai-tagged { 30 + border-left: 2px solid var(--interactive-accent); 31 + } 32 + 33 + /* Error message styling */ 34 + .ai-tagger-error-message { 35 + color: var(--text-error); 36 + font-weight: 500; 37 + margin-top: 10px; 38 + padding: 8px 12px; 39 + background-color: var(--background-modifier-error); 40 + border-radius: 4px; 41 + }
+24
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 + }
+14
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"));
+3
versions.json
··· 1 + { 2 + "1.0.0": "0.15.0" 3 + }