mirror of
https://github.com/kargnas/obsidian-create-note-with-date.git
synced 2026-07-22 05:48:47 +00:00
Automatic Release (#1)
This commit is contained in:
parent
9a538e3b99
commit
4e9ec0ac24
11 changed files with 876 additions and 178 deletions
49
.github/workflows/auto-release.yml
vendored
Normal file
49
.github/workflows/auto-release.yml
vendored
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
name: Auto Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
release:
|
||||
if: "${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && !contains(github.event.head_commit.message, 'chore: release')) }}"
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'npm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
|
||||
- name: Wait for 10 minutes
|
||||
if: github.event_name == 'push'
|
||||
run: |
|
||||
echo "Waiting 10 minutes before release..."
|
||||
sleep 600
|
||||
|
||||
- name: Configure Git
|
||||
run: |
|
||||
git config --global user.name "github-actions[bot]"
|
||||
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Run release script
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: npm run release
|
||||
43
.github/workflows/build.yml
vendored
Normal file
43
.github/workflows/build.yml
vendored
Normal file
|
|
@ -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 }}
|
||||
28
.github/workflows/lint.yml
vendored
Normal file
28
.github/workflows/lint.yml
vendored
Normal file
|
|
@ -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
|
||||
31
.github/workflows/test.yml
vendored
Normal file
31
.github/workflows/test.yml
vendored
Normal file
|
|
@ -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
|
||||
137
.sisyphus/plans/release-automation.md
Normal file
137
.sisyphus/plans/release-automation.md
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
# Plan: Release Automation & Safety Guardrails
|
||||
|
||||
## Context
|
||||
|
||||
### Original Request
|
||||
- **Auto-release**: Switch to `minor` version updates on push.
|
||||
- **Manual release**: Add dropdown for version selection (Patch/Minor/Major), default to `patch`.
|
||||
- **Safety**: Skip auto-release if changes exceed 300 lines (insertions or deletions).
|
||||
- **Protection**: Prevent infinite loops in CI.
|
||||
|
||||
### Momus Review (Reject & Fixes)
|
||||
- **Diff Logic**: `HEAD~1` is brittle. Use event payload ranges (`before`..`sha`).
|
||||
- **Parsing**: `--shortstat` is brittle (singular/plural). Use `--numstat`.
|
||||
- **Atomic Push**: `release.mjs` pushes separately. Use `git push --follow-tags`.
|
||||
- **Versions.json**: Must be staged and updated.
|
||||
- **Loop Prevention**: Use BOTH `[skip ci]` (in commit) AND existing message check (in workflow).
|
||||
- **Tag Alignment**: `release.mjs` uses `0.x.x` (no `v`), but workflows might expect `v0.x.x`. Keep existing behavior (no `v`) for now to match current `release.mjs` logic, unless user requested change.
|
||||
|
||||
---
|
||||
|
||||
## Work Objectives
|
||||
|
||||
### Core Objective
|
||||
Make release automation robust, safe from infinite loops, and flexible (auto=minor, manual=user-choice).
|
||||
|
||||
### Concrete Deliverables
|
||||
1. **Updated `release.mjs`**:
|
||||
- Updates `versions.json`.
|
||||
- Uses `[skip ci]`.
|
||||
- Uses `git push --follow-tags`.
|
||||
2. **Updated `.github/workflows/auto-release.yml`**:
|
||||
- `workflow_dispatch` with inputs.
|
||||
- Robust diff check using `--numstat`.
|
||||
- Explicit branching for Auto(Minor) vs Manual(Input).
|
||||
|
||||
### Must Have
|
||||
- `versions.json` sync in `release.mjs`.
|
||||
- `git diff --numstat` logic (summing columns).
|
||||
- Threshold: If `sum(insertions) > 300` OR `sum(deletions) > 300`, skip.
|
||||
- **Auto-release**: Defaults to `minor` (unless skipped).
|
||||
- **Manual release**: Defaults to `patch` (or user selection).
|
||||
|
||||
---
|
||||
|
||||
## Verification Strategy
|
||||
|
||||
### Manual Execution Verification
|
||||
|
||||
1. **Test `release.mjs` logic**:
|
||||
- Dry run locally to check `versions.json` update.
|
||||
- Verify commit message format.
|
||||
|
||||
2. **Test Diff Logic**:
|
||||
- Run `git diff --numstat HEAD~1 HEAD | awk '{s+=$1} END {print s}'` manually.
|
||||
- Verify it sums correctly.
|
||||
|
||||
---
|
||||
|
||||
## Task Flow
|
||||
1. Update `release.mjs` (Logic Fixes)
|
||||
2. Update `.github/workflows/auto-release.yml` (Workflow Logic)
|
||||
|
||||
---
|
||||
|
||||
## TODOs
|
||||
|
||||
- [ ] 1. Update `release.mjs` for robustness
|
||||
|
||||
**What to do**:
|
||||
- **Read versions.json**: Load existing versions.
|
||||
- **Update versions.json**: Add `[newVersion]: minAppVersion`.
|
||||
- **Write versions.json**: Save back to disk.
|
||||
- **Stage versions.json**: Add to `git add` command.
|
||||
- **Commit Message**: Change to `chore: release ${version} [skip ci]`.
|
||||
- **Atomic Push**: Replace `git push && git push --tags` with `git push --follow-tags origin main`.
|
||||
- **Tag Check**: Before tagging, check if tag exists (idempotency).
|
||||
|
||||
**References**:
|
||||
- `version-bump.mjs` (logic source for versions.json).
|
||||
- `release.mjs`.
|
||||
|
||||
**Acceptance Criteria**:
|
||||
- [ ] `node release.mjs patch` (dry run) updates `versions.json`.
|
||||
- [ ] Commit message contains `[skip ci]`.
|
||||
- [ ] Push is atomic.
|
||||
|
||||
- [ ] 2. Update `.github/workflows/auto-release.yml` with strict guardrails
|
||||
|
||||
**What to do**:
|
||||
- **Inputs**: Add `version_type` (default: patch, type: choice).
|
||||
- **Diff Check Step**:
|
||||
```bash
|
||||
# Determine range
|
||||
if [ "${{ github.event_name }}" == "push" ]; then
|
||||
RANGE="${{ github.event.before }}..${{ github.sha }}"
|
||||
# Handle initial/force push (zero sha)
|
||||
if [[ "${{ github.event.before }}" =~ ^0+$ ]]; then
|
||||
RANGE="HEAD~1..HEAD" # Fallback or just HEAD
|
||||
fi
|
||||
else
|
||||
# Manual dispatch: just check last commit for safety, or skip check
|
||||
RANGE="HEAD~1..HEAD"
|
||||
fi
|
||||
|
||||
# Robust parsing with numstat
|
||||
# Output format: inserted deleted file
|
||||
STATS=$(git diff --numstat $RANGE)
|
||||
INS=$(echo "$STATS" | awk '{s+=$1} END {print s+0}')
|
||||
DEL=$(echo "$STATS" | awk '{s+=$2} END {print s+0}')
|
||||
|
||||
echo "Insertions: $INS, Deletions: $DEL"
|
||||
|
||||
if [ "$INS" -gt 300 ] || [ "$DEL" -gt 300 ]; then
|
||||
echo "skip_release=true" >> $GITHUB_OUTPUT
|
||||
echo "⚠️ Skipping release: Changes too large ($INS ins, $DEL del)"
|
||||
else
|
||||
echo "skip_release=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
```
|
||||
- **Release Step**:
|
||||
- `id: check_size`
|
||||
- `if: steps.check_size.outputs.skip_release != 'true'`
|
||||
- Logic:
|
||||
- Manual: `npm run release ${{ inputs.version_type }}`
|
||||
- Push: `npm run release:minor`
|
||||
|
||||
**References**:
|
||||
- `.github/workflows/auto-release.yml`
|
||||
|
||||
**Acceptance Criteria**:
|
||||
- [ ] Workflow valid.
|
||||
- [ ] Manual triggers allow patch/minor/major.
|
||||
- [ ] Auto triggers force minor.
|
||||
- [ ] Large changes skip execution (success state, but no action).
|
||||
|
||||
**Commit**:
|
||||
- `ci: update release workflow with robust guardrails`
|
||||
186
AGENTS.md
Normal file
186
AGENTS.md
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
# 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<string, string> = {})` 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`
|
||||
- **GitHub Actions Auto-Release**:
|
||||
- Automatically triggered 10 minutes after a push to the `main` branch.
|
||||
- If a new push occurs within the 10-minute window, the previous release task is cancelled.
|
||||
- Can be manually triggered via GitHub Actions `workflow_dispatch`.
|
||||
- Skips execution if the commit message already contains `chore: release`.
|
||||
|
||||
### 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) <no-reply@opencode.ai>`
|
||||
188
README.ai-ready.md
Normal file
188
README.ai-ready.md
Normal file
|
|
@ -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.
|
||||
213
README.md
213
README.md
|
|
@ -1,76 +1,199 @@
|
|||
# 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 <repository-url>
|
||||
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
|
||||
### 🤖 Automated Release (GitHub Actions)
|
||||
|
||||
MIT
|
||||
A GitHub Action is configured to automate this process:
|
||||
- **Trigger**: Any push to the `main` branch
|
||||
- **Delay**: 10 minutes (to allow for quick fixes or additional commits)
|
||||
- **Cancellation**: If a new push occurs during the 10-minute wait, the previous release job is cancelled and a new one starts
|
||||
- **Manual Trigger**: Can be executed manually via the "Actions" tab in GitHub
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
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) <no-reply@opencode.ai>
|
||||
```
|
||||
|
||||
## 📚 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**
|
||||
|
|
|
|||
23
main.ts
23
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, string> = {}): 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<string, unknown>)[k];
|
||||
}
|
||||
|
||||
if (typeof value !== 'string') return key;
|
||||
|
|
|
|||
155
package-lock.json
generated
155
package-lock.json
generated
|
|
@ -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"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in a new issue