diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..32d5590 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,43 @@ +name: Build and Release + +on: + push: + tags: + - 'v*.*.*' + workflow_dispatch: + inputs: + version: + description: 'Version (e.g., v0.2.6)' + required: true + default: 'v0.2.6' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build project + run: npm run build + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + files: | + main.js + manifest.json + styles.css + generate_release_notes: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..196ef93 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,28 @@ +name: Lint + +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + workflow_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Run ESLint + run: npx eslint main.ts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..55bb679 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,31 @@ +name: Test + +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build project + run: npm run build + + - name: Run TypeScript type check + run: npx tsc -noEmit -skipLibCheck diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..495808c --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,181 @@ +# Environment +You are an AI coding agent helping with Obsidian plugin development. You have access to specialized tools for file operations, code analysis, and project management. + +# Language +- Default conversation language: Korean + +# Rules + +## Policy +- NEVER say "I found the problem!" unless the problem is 99% solved +- NEVER use sequential thinking MCP in the Plan mode +- NEVER `git checkout` without the user's confirmation. Ask to the user before do that + +## Code Quality + +### Before Committing +- Before you commit to the git, or after you finish a task, you must follow the guidelines below: +- You need to watch the `git status`, and make sure if there is no more unnecessary code, and see if strictly followed my prompts. Change your persona as critical code-reviewer, and blame code if there is some code that doesn't need. Then tell to the user which code is unnecessary and removable at the summary. +- ALWAYS write human-readable code which is easy to understand and maintain even after a year when you look back. You can use any method to achieve this, such as using descriptive variable names, commenting your code, and writing modular code. +- You can easily delete code, functions or files if you are sure that it is not needed anymore. We have git, so you never need to worry about losing code. + +### Build Verification +- Make sure run and build success +- For JavaScript/TypeScript edits, you must ALWAYS run `npm run build` to make sure there is no error when build. If you find an error, you must fix it and run build again. + +### Linting +- Run ESLint before committing: `npx eslint main.ts` (or relevant source files) +- Fix all linting errors before committing +- Follow the project's ESLint configuration in `.eslintrc` + +### Testing +- This project does not have automated tests yet. If you add tests, you must run them and make sure they pass. + +## Concise +- Keep your response detailed, including your intention, purpose and goals after coding done. I need to understand your private thoughts too. +- Use emoji and Markdown to make more readable. Only for readability since you can't draw image in the chat. + +## UI Writing Style +- UI messages should be in Korean +- Follow the existing i18n structure in `i18n/` directory +- All user-facing strings should be in the JSON files under `i18n/{lang}/` + +## Coding Standards + +### Localization +- Use sentence case for command names (e.g., `Create new note (Today's date)`) instead of Title Case +- All UI strings must be defined in i18n JSON files + +### Naming Conventions +- Use kebab-case for file names (e.g., `my-component.ts`) +- Use camelCase for variables and function names (e.g., `myVariable`, `myFunction()`) +- Use UpperCamelCase (PascalCase) for classes, types, and interfaces (e.g., `MyClass`, `MyInterface`) +- Use ALL_CAPS for constants and enum values (e.g., `MAX_COUNT`, `Color.RED`) + +### File Organization +- Group related functionality into modules +- Use index files to simplify imports +- Keep main plugin logic in `main.ts` +- Store translations in `i18n/{lang}/` directory with JSON files + +### Code Style +- Prefer `const` over `let` when variables won't be reassigned +- Use arrow functions for better lexical scoping and concise syntax +- Utilize TypeScript's type system fully: use types over interfaces, and use generics where appropriate +- Implement error handling with proper error types +- Write pure functions where possible to improve testability and reduce side effects +- Avoid using `any` type - use `unknown` or specific types instead + +### Best Practices +- Follow the Single Responsibility Principle +- Use dependency injection to improve testability and flexibility +- Implement proper error handling and logging +- Use async/await for asynchronous operations instead of callbacks or raw promises +- Leverage TypeScript's strict mode for enhanced type checking + +### Documentation +- Use JSDoc comments for functions, classes, and complex types +- Include examples in documentation where appropriate +- Keep README files up-to-date with setup instructions, usage examples, and contribution guidelines + +## Project Specifics + +### Obsidian Plugin Development +- This is an Obsidian plugin that creates a new note with today's date +- Plugin extends the base `Plugin` class from `obsidian` package +- Use the Obsidian API for file operations, workspace management, and UI interactions +- Plugin commands are registered in the `onload()` method +- Plugin cleanup should be done in the `onunload()` method + +### i18n System +- Translations are stored in `i18n/{lang}/` directory +- Each language has `command.json` for UI commands and `notice.json` for user notifications +- Language detection uses `window.localStorage.getItem('language')` +- Fallback to English if translation is not available +- Use `getText(key: string, vars: Record = {})` method to retrieve translated strings +- Supported languages: Arabic (ar), English (en), Spanish (es-ES), Japanese (ja), Korean (ko), Chinese Simplified (zh-CN), Chinese Traditional (zh-TW) + +### Build System +- Use `npm run dev` for development mode with watch +- Use `npm run build` for production build +- Build process: TypeScript compilation with `tsc` + esbuild bundling +- Configuration files: `tsconfig.json`, `esbuild.config.mjs` + +### Release Process +- Automated release script: `npm run release` (patch), `npm run release:minor`, `npm run release:major` +- Release script updates: package.json, manifest.json, versions.json +- Creates git commit and tags version +- Pushes compiled files (main.js, manifest.json, styles.css) to GitHub +- Version bump script: `version-bump.mjs` + +### Tech Stack +- **Runtime**: Node.js +- **Language**: TypeScript 4.7.4 +- **Package Manager**: npm +- **Build Tool**: esbuild 0.17.3 +- **Linter**: ESLint with TypeScript support +- **Dependencies**: moment (for date handling, currently unused) + +### Directory Structure +``` +. +├── i18n/ # Internationalization files +│ ├── ar/ # Arabic +│ ├── en/ # English +│ ├── es-ES/ # Spanish +│ ├── ja/ # Japanese +│ ├── ko/ # Korean +│ ├── zh-CN/ # Chinese Simplified +│ └── zh-TW/ # Chinese Traditional +├── main.ts # Main plugin file +├── manifest.json # Obsidian plugin manifest +├── package.json # Project dependencies and scripts +├── esbuild.config.mjs # Build configuration +├── tsconfig.json # TypeScript configuration +└── styles.css # Plugin styles +``` + +### Git Workflow +- Main branch is the production branch +- Create feature branches from main for new features +- Use conventional commit messages +- PRs are preferred over direct commits to main +- Recent history shows automated releases with version tags + +### Restrictions & Avoid +- DO NOT use `any` type - use `unknown` or specific types +- DO NOT use `moment` library - use native Date API (moment is deprecated and unused) +- DO NOT ignore ESLint errors +- DO NOT commit code without running `npm run build` first +- DO NOT add external dependencies without necessity +- DO NOT modify manifest.json manually - use the release script +- DO NOT hardcode strings - use the i18n system + +### Mandatory Actions +- ALWAYS run `npm run build` after any TypeScript changes +- ALWAYS run `npx eslint main.ts` before committing +- ALWAYS update i18n files when adding new user-facing strings +- ALWAYS test in Obsidian before releasing +- ALWAYS use the automated release script for version updates +- MUST update existing AGENTS.md when you have done every task + +### Development Environment Setup +1. Clone the repository +2. Run `npm install` to install dependencies +3. Run `npm run dev` to start development mode with watch +4. Build for production: `npm run build` +5. For linting: `npx eslint main.ts` +6. Load plugin in Obsidian: Copy built files to `.obsidian/plugins/obsidian-create-note-with-date/` + +### Codebase Understanding +Run `tree` command to explore the full directory structure and understand file organization better. + +## Git Commit Rules +- Use conventional commit format: `type: description` +- Types: `feat`, `fix`, `chore`, `docs`, `style`, `refactor`, `test`, `perf` +- Recent examples: + - `chore: release 0.2.5` + - `Remove 'v' prefix from version strings in release script` + - `Add automated release script and documentation for version management` +- Attach credit to commits: + - `> Co-authored-by: opencode (oMo, vibe-kanban) ` diff --git a/README.ai-ready.md b/README.ai-ready.md new file mode 100644 index 0000000..e152c82 --- /dev/null +++ b/README.ai-ready.md @@ -0,0 +1,188 @@ +# AI Agent Development Setup Guide + +> 📖 **Purpose**: This guide helps you (human coders) set up the development environment quickly for working with AI agents. It's designed to be straightforward, even if you're new to AI-assisted development. + +--- + +## 🚀 Quick Setup (5 minutes) + +```bash +# 1. Install dependencies +npm install + +# 2. Start development +npm run dev +``` + +--- + +## 📋 Prerequisites + +- **Node.js**: Version 16.x or higher +- **npm**: Comes with Node.js +- **Obsidian**: For testing the plugin + +--- + +## 🏗️ Project Structure + +``` +obsidian-create-note-with-date/ +├── main.ts # Main plugin file (core logic) +├── i18n/ # Translations for 7 languages +│ ├── en/ # English +│ ├── ko/ # Korean +│ └── ... # Other languages +├── manifest.json # Obsidian plugin manifest (auto-generated) +├── package.json # Dependencies and scripts +├── AGENTS.md # AI agent instructions +└── README.ai-ready.md # This file +``` + +--- + +## 🔧 Development Commands + +| Command | Purpose | +|---------|---------| +| `npm install` | Install dependencies | +| `npm run dev` | Start development mode with watch | +| `npm run build` | Build for production | +| `npx eslint main.ts` | Lint code | +| `npm run release` | Patch version release | + +--- + +## 🧪 Testing the Plugin + +Since there's no automated test suite yet: + +1. **Build the plugin**: `npm run build` +2. **Load in Obsidian**: + ``` + cp main.js manifest.json styles.css ~/.obsidian/plugins/obsidian-create-note-with-date/ + ``` +3. **Enable plugin** in Obsidian Settings → Community Plugins + +--- + +## 🤖 Working with AI Agents + +### When an AI Agent Makes Changes + +1. **Review the changes**: Check `git diff` to see what was modified +2. **Run build**: `npm run build` (mandatory) +3. **Lint check**: `npx eslint main.ts` (mandatory) +4. **Test manually**: Try the plugin in Obsidian + +### Common AI Agent Workflows + +| Task | AI Agent Action | Your Action | +|------|-----------------|-------------| +| Fix bug | Modifies `main.ts` | Run `npm run build`, test in Obsidian | +| Add feature | Adds code + i18n strings | Review, build, test | +| Refactor | Restructures code | Review thoroughly, build, test | + +--- + +## 📝 Code Quality Standards + +- **TypeScript**: Strict mode enabled +- **Linting**: ESLint with TypeScript support +- **Build**: Must pass `npm run build` before commit +- **Comments**: Use descriptive variable names instead of excessive comments + +--- + +## 🌍 Adding New Translations + +To add a new language: + +1. Create directory: `i18n/{lang}/` +2. Add `command.json` and `notice.json` +3. Import in `main.ts` +4. Add to `translations` map and `LANG_CODE_MAP` + +Example structure: +```json +// i18n/fr/command.json +{ + "CREATE_TODAY_NOTE": "Create note with today's date" +} + +// i18n/fr/notice.json +{ + "FILE_CREATED": "File {filename} created" +} +``` + +--- + +## 🐛 Debugging + +### Common Issues + +| Issue | Solution | +|-------|----------| +| Build fails | Check TypeScript errors, fix imports | +| Plugin not loading | Check manifest.json matches package.json version | +| Translation missing | Check `i18n/{lang}/` files exist and are imported | + +### Debug Mode + +Open Obsidian Developer Console (Ctrl+Shift+I / Cmd+Option+I) to see: +- Plugin load errors +- Runtime errors +- Console logs (if any) + +--- + +## 📚 Useful Resources + +- [Obsidian Plugin API](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin) +- [TypeScript Documentation](https://www.typescriptlang.org/docs/) +- [esbuild Documentation](https://esbuild.github.io/) + +--- + +## 🤝 Contributing + +1. Create feature branch from `main` +2. Make changes +3. Run `npm run build` and `npx eslint main.ts` +4. Test in Obsidian +5. Commit with conventional format: `feat: description` +6. Create PR (preferred) or commit directly to main + +--- + +## ⚙️ Environment Variables + +**None required** - This is a client-side Obsidian plugin with: +- ✅ No database connections +- ✅ No external API calls +- ✅ No authentication needed +- ✅ No sensitive data handling + +--- + +## 📄 License + +MIT License - See LICENSE.md for details. + +--- + +## ❓ Quick FAQ + +**Q: Do I need to install anything else?** +A: No, just Node.js and npm. Obsidian is needed only for testing. + +**Q: Can I use this with Codex Cloud?** +A: Yes! This plugin is perfect for AI agent workflows - no external dependencies. + +**Q: How do I release a new version?** +A: Run `npm run release` for patch, `npm run release:minor` for minor update. + +--- + +**Need help?** Check AGENTS.md for AI agent-specific instructions. diff --git a/README.md b/README.md index 4466bdc..6d439b6 100644 --- a/README.md +++ b/README.md @@ -1,76 +1,191 @@ # Create Note with Date -This Obsidian plugin allows you to create a new note with today's date in the current directory. It's perfect for daily notes, journals, or any situation where you need to create date-based notes quickly. +An Obsidian plugin that helps you quickly create daily notes with today's date. Perfect for daily journals, meeting notes, or any date-based note-taking workflow. -## Features +## ✨ Features -- Create a new note with today's date (YYYY-MM-DD format) in the current directory -- Automatically opens the newly created note -- Supports both English and Korean languages -- Language automatically detected from your system settings +- **One-click note creation**: Create a new note with today's date (YYYY-MM-DD format) in the current directory +- **Automatic opening**: Newly created notes open automatically for immediate editing +- **Multi-language support**: Available in 7 languages (English, Korean, Japanese, Spanish, Arabic, Chinese Simplified/Traditional) +- **Smart language detection**: Automatically detects your system language +- **Lightweight**: No external dependencies or database required -## Usage +## 🚀 Installation -1. Open any note in the directory where you want to create a new dated note -2. Use the command palette (Cmd/Ctrl + P) and search for "Create Note with Date in This Directory" -3. A new note will be created with today's date as the filename (e.g., `2025-04-15.md`) +### From Obsidian Community Plugins (Recommended) -## Installation - -### From Obsidian - -1. Open Settings in Obsidian -2. Go to Community Plugins and disable Safe Mode -3. Click Browse and search for "Create Note with Date" -4. Install the plugin and enable it +1. Open **Settings** → **Community Plugins** +2. Disable **Safe Mode** +3. Click **Browse** and search for "Create Note with Date" +4. Click **Install** +5. Enable the plugin ### Manual Installation -1. Download the latest release from the releases page -2. Extract the files to your vault's `.obsidian/plugins/create-note-with-date/` directory -3. Reload Obsidian -4. Enable the plugin in Settings -> Community Plugins +1. Download the latest [release](../../releases) +2. Extract files to your vault's `.obsidian/plugins/obsidian-create-note-with-date/` directory +3. Reload Obsidian (Ctrl+R / Cmd+R) +4. Enable the plugin in **Settings** → **Community Plugins** -## Language Support +## 📖 Usage -The plugin automatically detects your system language and displays messages in either: +1. Open any note in the directory where you want to create a dated note +2. Press `Cmd/Ctrl + P` to open the **Command Palette** +3. Search for "Create note with today's date in this directory" +4. Press Enter -- English (default) -- Korean (한국어) -- Japanese (日本語) -- Spanish (Español) -- Arabic (العربية) -- Chinese (简体中文) -- Chinese (繁體中文) +A new note named `YYYY-MM-DD.md` will be created in the same directory. -## Development +## 🌍 Supported Languages -1. Clone this repository -2. Run `npm install` -3. Run `npm run dev` to start compilation in watch mode +- 🇺🇸 **English** (default) +- 🇰🇷 **Korean** (한국어) +- 🇯🇵 **Japanese** (日本語) +- 🇪🇸 **Spanish** (Español) +- 🇸🇦 **Arabic** (العربية) +- 🇨🇳 **Chinese Simplified** (简体中文) +- 🇹🇼 **Chinese Traditional** (繁體中文) -## Release Process +The plugin automatically detects your system's language preference from Obsidian settings. -This project includes an automated release script that makes it easy to version and publish updates: +## 🛠️ Development + +### Prerequisites + +- Node.js 16.x or higher +- npm (comes with Node.js) + +### Setup ```bash -# Update patch version (e.g., 0.2.2 → 0.2.3) +# Clone the repository +git clone +cd obsidian-create-note-with-date + +# Install dependencies +npm install + +# Start development mode with watch +npm run dev +``` + +### Build & Test + +```bash +# Build for production +npm run build + +# Lint code +npx eslint main.ts + +# Load plugin in Obsidian for testing +# Copy built files to your vault's plugin directory +cp main.js manifest.json styles.css ~/.obsidian/plugins/obsidian-create-note-with-date/ +``` + +### Project Structure + +``` +obsidian-create-note-with-date/ +├── i18n/ # Internationalization files +│ ├── en/ # English translations +│ ├── ko/ # Korean translations +│ └── ... # Other languages +├── main.ts # Main plugin logic +├── manifest.json # Obsidian plugin manifest (auto-generated) +├── package.json # Dependencies and scripts +├── esbuild.config.mjs # Build configuration +└── tsconfig.json # TypeScript configuration +``` + +The plugin follows standard Obsidian plugin conventions with no complex custom architecture. + +## 📦 Release Process + +Automated version management scripts are included: + +```bash +# Patch version (e.g., 0.2.2 → 0.2.3) npm run release -# Update minor version (e.g., 0.2.2 → 0.3.0) +# Minor version (e.g., 0.2.2 → 0.3.0) npm run release:minor -# Update major version (e.g., 0.2.2 → 1.0.0) +# Major version (e.g., 0.2.2 → 1.0.0) npm run release:major ``` The release script automatically: -- Updates version numbers in package.json and manifest.json +- Updates version numbers in `package.json` and `manifest.json` - Builds the project -- Creates a Git commit with the version change +- Creates a Git commit with version change - Adds a version tag -- Pushes the compiled files (main.js, manifest.json, styles.css) to GitHub +- Pushes compiled files to GitHub releases -## License +## 🤝 Contributing -MIT +Contributions are welcome! Here's how to contribute: + +1. **Fork** the repository (optional, you can also create a branch directly) +2. **Create a new branch**: `git checkout -b feature/my-feature` +3. **Make your changes** +4. **Test thoroughly**: + - Run `npm run build` to ensure no build errors + - Run `npx eslint main.ts` to check code quality + - Test in Obsidian with actual usage +5. **Commit** with conventional format: `feat: add new feature` or `fix: resolve bug` +6. **Create a Pull Request** (preferred) or commit directly to main + +### Commit Message Format + +Follow conventional commits: +- `feat:` - New feature +- `fix:` - Bug fix +- `chore:` - Maintenance tasks +- `docs:` - Documentation updates +- `refactor:` - Code refactoring +- `style:` - Code style changes (formatting, etc.) +- `test:` - Adding or updating tests +- `perf:` - Performance improvements + +Example: +``` +feat: add support for custom date format + +> Co-authored-by: opencode (oMo, vibe-kanban) +``` + +## 📚 Documentation + +- **[AGENTS.md](AGENTS.md)** - AI agent coding instructions and project guidelines +- **[README.ai-ready.md](README.ai-ready.md)** - Quick setup guide for AI agent development +- **[Obsidian Plugin API](https://docs.obsidian.md/Plugins/Getting+started/Build+a+plugin)** - Official Obsidian documentation + +## 📄 License + +MIT License - See [LICENSE.md](LICENSE.md) for details. + +## ⚠️ Note + +This is an OP.GG internal project. If you leave OP.GG, please delete this repository from your computer. + +## 🐛 Troubleshooting + +**Plugin not appearing after installation?** +- Make sure **Safe Mode** is disabled +- Try reloading Obsidian (Ctrl+R / Cmd+R) +- Check the Developer Console (Ctrl+Shift+I / Cmd+Option+I) for errors + +**Date format is wrong?** +- The plugin uses your system's date format settings +- Ensure your system language is set correctly + +**Want to add a new language?** +- Create a new directory in `i18n/` with language code +- Add `command.json` and `notice.json` files +- Import and register in `main.ts` +- Submit a PR with your translation! + +--- + +**Made with ❤️ by OP.GG** diff --git a/main.ts b/main.ts index d4924b2..180d164 100644 --- a/main.ts +++ b/main.ts @@ -1,5 +1,4 @@ -import { App, Editor, MarkdownView, Modal, Notice, Plugin, TFile, TAbstractFile } from 'obsidian'; -import * as moment from 'moment'; +import { Notice, Plugin, TFile } from 'obsidian'; // Import JSON files directly // Import translations import arCommand from './i18n/ar/command.json'; @@ -68,17 +67,7 @@ const translations: TranslationsMap = { } }; -interface Translations { - COMMANDS: { - CREATE_TODAY_NOTE: string; - }; - NOTICES: { - FILE_EXISTS: string; - FILE_CREATED: string; - FOLDER_NOT_FOUND: string; - ERROR_CREATING_FILE: string; - }; -} + export default class KarsPlugin extends Plugin { getText(key: string, vars: Record = {}): string { @@ -86,12 +75,12 @@ export default class KarsPlugin extends Plugin { const rawLanguage = window.localStorage.getItem('language') || 'en'; const language = LANG_CODE_MAP[rawLanguage] || rawLanguage; const currentTranslations = translations[language] || translations.en; - + const keys = key.split('.'); - let value: any = currentTranslations; + let value: unknown = currentTranslations; for (const k of keys) { - if (!value || !value[k]) return key; - value = value[k]; + if (!value || typeof value !== 'object' || !(k in value)) return key; + value = (value as Record)[k]; } if (typeof value !== 'string') return key; diff --git a/package-lock.json b/package-lock.json index 9b2c3fc..7eed7f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "obsidian-sample-plugin", - "version": "1.0.0", + "name": "obsidian-create-note-with-date", + "version": "0.2.5", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "obsidian-sample-plugin", - "version": "1.0.0", + "name": "obsidian-create-note-with-date", + "version": "0.2.5", "license": "MIT", "dependencies": { "moment": "^2.30.1" @@ -15,6 +15,7 @@ "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "5.29.0", "@typescript-eslint/parser": "5.29.0", + "actionlint": "^2.0.6", "builtin-modules": "3.3.0", "esbuild": "^0.17.3", "obsidian": "latest", @@ -426,7 +427,6 @@ "integrity": "sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -446,7 +446,6 @@ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -457,7 +456,6 @@ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -482,7 +480,6 @@ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -494,7 +491,6 @@ "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -510,7 +506,6 @@ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=12.22" }, @@ -525,16 +520,14 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@marijn/find-cluster-break": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", @@ -655,6 +648,7 @@ "integrity": "sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.29.0", "@typescript-eslint/types": "5.29.0", @@ -812,8 +806,7 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/acorn": { "version": "8.14.1", @@ -835,18 +828,23 @@ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/actionlint": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/actionlint/-/actionlint-2.0.6.tgz", + "integrity": "sha512-tNx8f48yJNSLXTIygGntu5dSZlIZblDt8sR7pIs7EEmmb2PkEF87d+3UKZV2GUgCuN9Awj7k4ZPrwdAxFWEqgw==", + "dev": true, + "license": "MIT" + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -864,7 +862,6 @@ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -875,7 +872,6 @@ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -891,8 +887,7 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "Python-2.0", - "peer": true + "license": "Python-2.0" }, "node_modules/array-union": { "version": "2.1.0", @@ -909,8 +904,7 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -918,7 +912,6 @@ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -956,7 +949,6 @@ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -967,7 +959,6 @@ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -985,7 +976,6 @@ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -998,16 +988,14 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", @@ -1015,7 +1003,6 @@ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1048,8 +1035,7 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1070,7 +1056,6 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -1122,7 +1107,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -1250,7 +1234,6 @@ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -1268,7 +1251,6 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -1279,7 +1261,6 @@ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -1298,7 +1279,6 @@ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "estraverse": "^5.1.0" }, @@ -1312,7 +1292,6 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -1356,7 +1335,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1366,8 +1344,7 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", @@ -1404,16 +1381,14 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/fastq": { "version": "1.19.1", @@ -1431,7 +1406,6 @@ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -1458,7 +1432,6 @@ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -1476,7 +1449,6 @@ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -1491,16 +1463,14 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -1516,7 +1486,6 @@ "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1538,7 +1507,6 @@ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -1552,7 +1520,6 @@ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -1589,8 +1556,7 @@ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/has-flag": { "version": "4.0.0", @@ -1598,7 +1564,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -1619,7 +1584,6 @@ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1637,7 +1601,6 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.19" } @@ -1649,7 +1612,6 @@ "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.", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1660,8 +1622,7 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/is-extglob": { "version": "2.1.1", @@ -1702,7 +1663,6 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -1712,8 +1672,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -1721,7 +1680,6 @@ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "argparse": "^2.0.1" }, @@ -1734,24 +1692,21 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", @@ -1759,7 +1714,6 @@ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "json-buffer": "3.0.1" } @@ -1770,7 +1724,6 @@ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1785,7 +1738,6 @@ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -1801,8 +1753,7 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", @@ -1834,7 +1785,6 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1863,8 +1813,7 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/obsidian": { "version": "1.8.7", @@ -1897,7 +1846,6 @@ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "wrappy": "1" } @@ -1908,7 +1856,6 @@ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -1927,7 +1874,6 @@ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -1944,7 +1890,6 @@ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -1961,7 +1906,6 @@ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -1975,7 +1919,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -1986,7 +1929,6 @@ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -1997,7 +1939,6 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -2031,7 +1972,6 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -2042,7 +1982,6 @@ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -2087,7 +2026,6 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -2110,7 +2048,6 @@ "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -2164,7 +2101,6 @@ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2178,7 +2114,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -2199,7 +2134,6 @@ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2213,7 +2147,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" }, @@ -2226,8 +2159,7 @@ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz", "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", @@ -2235,7 +2167,6 @@ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2248,8 +2179,7 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -2300,7 +2230,6 @@ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2314,7 +2243,6 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=10" }, @@ -2328,6 +2256,7 @@ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2342,7 +2271,6 @@ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "punycode": "^2.1.0" } @@ -2352,8 +2280,7 @@ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/which": { "version": "2.0.2", @@ -2361,7 +2288,6 @@ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -2378,7 +2304,6 @@ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2388,8 +2313,7 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/yocto-queue": { "version": "0.1.0", @@ -2397,7 +2321,6 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 373e21b..d1a8e50 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@types/node": "^16.11.6", "@typescript-eslint/eslint-plugin": "5.29.0", "@typescript-eslint/parser": "5.29.0", + "actionlint": "^2.0.6", "builtin-modules": "3.3.0", "esbuild": "^0.17.3", "obsidian": "latest",