Compare commits

...

10 Commits

Author SHA1 Message Date
renovate[bot]
c25126f546 chore(actions): update softprops/action-gh-release action (v2.5.0 → v2.5.3)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-15 17:15:06 +00:00
8a5c9f9089 chore: general maintenance and cleanup (#306) 2026-03-15 19:14:36 +02:00
renovate[bot]
2410f343c2 chore(deps): update pre-commit hook astral-sh/ruff-pre-commit (v0.15.5 → v0.15.6) (#305) 2026-03-13 20:06:51 +02:00
renovate[bot]
d120839830 chore(actions): update ivuorinen/actions action (v2026.03.02 → v2026.03.11) (#304)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 08:40:10 +02:00
renovate[bot]
5662d09202 chore(deps): update pre-commit hook johnnymorganz/stylua (v2.3.1 → v2.4.0) (#303)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-08 19:31:45 +02:00
renovate[bot]
076050ad58 chore(deps): update pre-commit hook astral-sh/ruff-pre-commit (v0.15.4 → v0.15.5) (#302) 2026-03-07 03:46:31 +02:00
renovate[bot]
313915e55c chore(deps): update loopwerk/tag-changelog action (v1.3.0 → v1.5.0) (#300) 2026-03-05 22:07:58 +02:00
renovate[bot]
e490a735c8 chore(deps): lock file maintenance (#301) 2026-03-05 22:06:11 +02:00
renovate[bot]
5fe82b2898 chore(deps): lock file maintenance (#299) 2026-03-03 08:19:51 +02:00
renovate[bot]
6621bcb470 chore(deps): update ivuorinen/actions action (v2026.02.24 → v2026.03.02) (#298)
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-03 05:54:49 +00:00
30 changed files with 323 additions and 766 deletions

View File

@@ -0,0 +1,14 @@
---
name: code-reviewer
description: Reviews shell/fish/lua changes for correctness and style
tools: [Read, Grep, Glob, Bash]
---
Review the changed files for:
1. **Shell scripts**: POSIX compliance for /bin/sh scripts, proper quoting, shellcheck issues
2. **Fish files**: fish syntax correctness, consistent function patterns
3. **Lua files**: stylua compliance, Neovim API usage patterns
4. **All**: EditorConfig compliance (2-space indent, LF endings)
Report only high-confidence issues. Skip vendor files (fzf-tmux).

View File

@@ -22,6 +22,10 @@
{ {
"type": "command", "type": "command",
"command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && [ -f \"$fp\" ] && case \"$fp\" in *.fish) command -v fish_indent > /dev/null && fish_indent -w \"$fp\";; esac; exit 0" "command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && [ -f \"$fp\" ] && case \"$fp\" in *.fish) command -v fish_indent > /dev/null && fish_indent -w \"$fp\";; esac; exit 0"
},
{
"type": "command",
"command": "fp=$(cat | jq -r '.tool_input.file_path // empty') && [ -n \"$fp\" ] && [ -f \"$fp\" ] && case \"$fp\" in *.lua) command -v stylua > /dev/null && stylua \"$fp\";; esac; exit 0"
} }
] ]
} }

View File

@@ -0,0 +1,38 @@
---
name: yaml-validate
description: >-
Validate YAML files after editing.
Apply when writing or modifying any .yml or .yaml file.
user-invocable: false
allowed-tools: Bash, Read
---
After editing any YAML file, validate it:
## 1. Syntax check
Run yamllint on the file:
```bash
yamllint <file>
```
If yamllint is not available, fall back to:
```bash
python3 -c "import yaml; yaml.safe_load(open('<file>'))"
```
## 2. GitHub Actions workflows
If the file is under `.github/workflows/`, also run:
```bash
actionlint <file>
```
If actionlint is not available, skip silently.
## Files to skip
- `config/gh/hosts.yml` — managed by `gh` CLI, not hand-edited

View File

@@ -24,7 +24,7 @@ jobs:
- name: Create changelog text - name: Create changelog text
id: changelog id: changelog
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0 uses: loopwerk/tag-changelog@8dd150d55fbf1fe93e0ea00a29a6153aaeb81912 # v1.5.0
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js config_file: .github/tag-changelog-config.js

View File

@@ -5,7 +5,7 @@ name: Lint Code Base
# yamllint disable-line # yamllint disable-line
on: on:
pull_request: pull_request:
branches: [master, main] branches: [main]
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref }} group: ${{ github.workflow }}-${{ github.ref }}
@@ -36,4 +36,4 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
- name: Run PR Lint - name: Run PR Lint
uses: ivuorinen/actions/pr-lint@8faacf8a1cae049c1471708dcb408a167e91afaf # v2026.02.24 uses: ivuorinen/actions/pr-lint@7f6a23b59316795c4b3cb3b3b28dd53e53655a33 # v2026.03.11

View File

@@ -35,14 +35,14 @@ jobs:
- name: Create changelog text - name: Create changelog text
if: steps.daily-version.outputs.created if: steps.daily-version.outputs.created
id: changelog id: changelog
uses: loopwerk/tag-changelog@941366edb8920e2071eae0449031830984b9f26e # v1.3.0 uses: loopwerk/tag-changelog@8dd150d55fbf1fe93e0ea00a29a6153aaeb81912 # v1.5.0
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
config_file: .github/tag-changelog-config.js config_file: .github/tag-changelog-config.js
- name: Create release - name: Create release
if: steps.daily-version.outputs.created if: steps.daily-version.outputs.created
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2.5.0 uses: softprops/action-gh-release@1853d73993c8ca1b2c9c1a7fede39682d0ab5c2a # v2.5.3
with: with:
token: ${{ secrets.GITHUB_TOKEN }} token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ steps.daily-version.outputs.version }} tag_name: ${{ steps.daily-version.outputs.version }}

View File

@@ -30,4 +30,4 @@ jobs:
issues: write issues: write
steps: steps:
- uses: ivuorinen/actions/sync-labels@8faacf8a1cae049c1471708dcb408a167e91afaf # v2026.02.24 - uses: ivuorinen/actions/sync-labels@7f6a23b59316795c4b3cb3b3b28dd53e53655a33 # v2026.03.11

View File

@@ -5,7 +5,7 @@ name: Update submodules
on: on:
schedule: schedule:
# At 04:00 on Monday and Thursday. # At 04:00 on Monday and Thursday.
- cron: "0 4 * * 1" - cron: "0 4 * * 1,4"
workflow_dispatch: workflow_dispatch:
concurrency: concurrency:

View File

@@ -39,13 +39,13 @@ repos:
hooks: hooks:
- id: yamllint - id: yamllint
- repo: https://github.com/pre-commit/mirrors-prettier - repo: local
rev: v4.0.0-alpha.8
hooks: hooks:
- id: prettier - id: prettier
name: Prettier (YAML)
entry: yarn prettier --write
language: system
types_or: [yaml] types_or: [yaml]
additional_dependencies:
- prettier@3.8.1
- repo: https://github.com/shellcheck-py/shellcheck-py - repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.11.0.1 rev: v0.11.0.1
@@ -64,7 +64,7 @@ repos:
- id: actionlint - id: actionlint
- repo: https://github.com/JohnnyMorganz/StyLua - repo: https://github.com/JohnnyMorganz/StyLua
rev: v2.3.1 rev: v2.4.0
hooks: hooks:
- id: stylua # or stylua-system / stylua-github - id: stylua # or stylua-system / stylua-github
exclude: hammerspoon\.types\.lua$ exclude: hammerspoon\.types\.lua$
@@ -76,7 +76,7 @@ repos:
- id: fish_indent - id: fish_indent
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.4 rev: v0.15.6
hooks: hooks:
- id: ruff-check - id: ruff-check
args: [--fix] args: [--fix]

View File

@@ -15,5 +15,4 @@ config/zsh
local/bin/antigen.zsh local/bin/antigen.zsh
local/bin/asdf local/bin/asdf
tools tools
docs/plans
config/gh/hosts.yml config/gh/hosts.yml

View File

@@ -1,55 +0,0 @@
# Project guidelines
This repository contains configuration files and helper scripts for managing
a development environment.
Dotbot drives installation, and host-specific folders under `hosts/` contain extra configs.
## Setup
1. Run `yarn install` to fetch linting tools and the Bats test framework.
2. Re-run `yarn install` whenever `package.json` changes.
3. Yarn is the package manager of choice; avoid `npm` commands.
## Keeping the repository up to date
1. Update submodules with `git submodule update --remote --merge`.
2. Pull the latest changes and run `./install`.
## Linting and tests
- Format files with:
```bash
yarn fix:prettier
yarn fix:markdown
```
- Shell scripts must pass `shellcheck`.
```bash
find . -path ./node_modules -prune -o -name '*.sh' -print0 | xargs -0 shellcheck
```
- Ensure `.editorconfig` rules pass:
```bash
tools/install-ec.sh
ec
```
- Execute tests with `yarn test` when code changes.
## Debugging lint issues
- `yarn lint:prettier` and `yarn lint:markdown` show formatting errors.
- Ensure shell scripts have a shebang or `# shellcheck shell=bash` directive.
- Consult `.shellcheckrc` for project specific checks.
Scripts rely on helpers in `config/shared.sh` so they run under Bash, Zsh and Fish by default.
## Commits and PRs
- Use Semantic Commit messages: `type(scope): summary`.
- Keep PR titles in the same format.
<!-- vim: set ft=markdown spell spelllang=en_us cc=80 : -->

View File

@@ -52,13 +52,13 @@ yarn test # Run all tests in tests/
shellcheck <script> # Lint shell scripts shellcheck <script> # Lint shell scripts
# Tooling maintenance # Tooling maintenance
yarn biome migrate --write # Update biome schema version npx @biomejs/biome migrate --write # Update biome schema version
``` ```
## Pre-commit Hooks ## Pre-commit Hooks
Configured in `.pre-commit-config.yaml`: shellcheck, shfmt, biome, Configured in `.pre-commit-config.yaml`: shellcheck, shfmt, biome,
yamllint, prettier, actionlint, stylua, fish_syntax/fish_indent. yamllint, prettier, actionlint, stylua, fish_syntax/fish_indent, ruff.
Run `pre-commit run --all-files` to check everything. Run `pre-commit run --all-files` to check everything.
## Commit Convention ## Commit Convention
@@ -124,7 +124,7 @@ These are layered on top of the global config during installation.
- **Lua** (neovim config): Formatted with stylua (`stylua.toml`), - **Lua** (neovim config): Formatted with stylua (`stylua.toml`),
90-char line length. 90-char line length.
- **JSON/JS/TS/Markdown**: Formatted with Biome (`biome.json`), - **JSON/JS/TS/Markdown**: Formatted with Biome (`biome.json`),
80-char width. 80-char width (Markdown uses 120-char override).
- **YAML**: Formatted with Prettier (`.prettierrc.json`), - **YAML**: Formatted with Prettier (`.prettierrc.json`),
validated with yamllint (`.yamllint.yml`). validated with yamllint (`.yamllint.yml`).
@@ -154,8 +154,17 @@ SC2174 (mkdir -p -m), SC2016 (single-quote expressions).
- **Hooks** (`.claude/settings.json`): - **Hooks** (`.claude/settings.json`):
- *PreToolUse*: Blocks edits to `fzf-tmux`, `yarn.lock`, `.yarn/` - *PreToolUse*: Blocks edits to `fzf-tmux`, `yarn.lock`, `.yarn/`
- *PostToolUse*: Auto-runs `shfmt` on shell scripts after Edit/Write - *PostToolUse*: Auto-runs `shfmt` on shell scripts after Edit/Write
- *PostToolUse*: Auto-runs `fish_indent` on `.fish` files after Edit/Write
- *PostToolUse*: Auto-runs `stylua` on `.lua` files after Edit/Write
- **Skills** (`.claude/skills/`): - **Skills** (`.claude/skills/`):
- `shell-validate`: Auto-validates shell scripts (syntax + shellcheck) - `shell-validate`: Auto-validates shell scripts (syntax + shellcheck)
- `fish-validate`: Auto-validates fish scripts (syntax + fish_indent)
- `lua-format`: Auto-formats Lua files with stylua
- `yaml-validate`: Auto-validates YAML files (yamllint + actionlint)
- **Subagents** (`.claude/agents/`):
- `code-reviewer`: Reviews shell/fish/lua changes for correctness and style
- **MCP Servers**:
- `context7`: Live documentation lookup for tools and libraries
## Package Manager ## Package Manager

View File

@@ -1,22 +0,0 @@
function ___paths_plugin_set_colors
if not set -q ___paths_plugin_colors
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
end
return 0
end
function _paths_uninstall --on-event paths_uninstall
for i in ___paths_plugin_wrap_color ___paths_plugin_output ___paths_plugin_handle_found_item ___paths_plugin_handle_source ___paths_plugin_cycle_color
functions -e $i
end
set -e ___paths_plugin_colors
set -e ___paths_plugin_current_color
end
function _paths_install --on-event _paths_install
___paths_plugin_set_colors
end
function _paths_update --on-event paths_update
___paths_plugin_set_colors
end

View File

@@ -2,6 +2,8 @@
# │ fish/config.fish # │ fish/config.fish
# ╰──────────────────────────────────────────────────────────╯ # ╰──────────────────────────────────────────────────────────╯
set -g fish_greeting
fish_config theme choose "Catppuccin Mocha" fish_config theme choose "Catppuccin Mocha"
test -e "$HOME/.config/fish/alias.fish" && test -e "$HOME/.config/fish/alias.fish" &&
@@ -33,7 +35,7 @@ if status is-interactive
type -q zoxide; and zoxide init fish | source type -q zoxide; and zoxide init fish | source
# Start tmux if not already running and not in SSH # Start tmux if not already running and not in SSH
#open-tmux # defined in functions/open-tmux.fish #.t # defined in functions/.t.fish
end end
# Added by LM Studio CLI (lms) # Added by LM Studio CLI (lms)
@@ -48,3 +50,8 @@ fish_add_path $HOME/.opencode/bin
# Added by OrbStack: command-line tools and integration # Added by OrbStack: command-line tools and integration
# This won't be added again if you remove it. # This won't be added again if you remove it.
source ~/.orbstack/shell/init2.fish 2>/dev/null || : source ~/.orbstack/shell/init2.fish 2>/dev/null || :
# Warn if GITHUB_TOKEN is not set
if status is-interactive; and not set -q GITHUB_TOKEN
echo "Warning: GITHUB_TOKEN is not set" >&2
end

View File

@@ -21,7 +21,7 @@ fish_add_path "$XDG_BIN_HOME"
fish_add_path "$XDG_DATA_HOME/mise/shims" fish_add_path "$XDG_DATA_HOME/mise/shims"
# Add cargo bin to path # Add cargo bin to path
fish_add_path "$XDG_SHARE_HOME/cargo/bin" fish_add_path "$XDG_DATA_HOME/cargo/bin"
# NPM/NVM configuration # NPM/NVM configuration
set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm" set -q NVM_DIR; or set -x NVM_DIR "$XDG_DATA_HOME/nvm"
@@ -128,7 +128,7 @@ set -q CARGO_BIN_HOME; or set -x CARGO_BIN_HOME "$XDG_BIN_HOME"
set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup" set -q RUSTUP_HOME; or set -x RUSTUP_HOME "$XDG_DATA_HOME/rustup"
set -x RUST_WITHOUT "clippy,docs,rls" set -x RUST_WITHOUT "clippy,docs,rls"
fish_add_path "$CARGO_HOME/bin" fish_add_path "$CARGO_HOME/bin"
fish_add_path "$XDG_SHARE_HOME/bob/nvim-bin" fish_add_path "$XDG_DATA_HOME/bob/nvim-bin"
# screen configuration # screen configuration
set -q SCREENRC; or set -x SCREENRC "$XDG_CONFIG_HOME/misc/screenrc" set -q SCREENRC; or set -x SCREENRC "$XDG_CONFIG_HOME/misc/screenrc"

View File

@@ -3,3 +3,4 @@ jethrokuan/z
ivuorinen/phpenv.fish ivuorinen/phpenv.fish
ilancosman/tide@v6 ilancosman/tide@v6
catppuccin/fish catppuccin/fish
edc/bass

View File

@@ -1,7 +1,7 @@
# Description: Open tmux session if not already open # Description: Open tmux session if not already open
# Dependencies: tmux # Dependencies: tmux
# Usage: open-tmux # Usage: .t
function open-tmux --wraps='tmux attach-session -t main || tmux new-session -s main' --description 'open tmux session' function .t --wraps='tmux attach-session -t main || tmux new-session -s main' --description 'open tmux session'
# Check if not in an SSH session and not already in a tmux session # Check if not in an SSH session and not already in a tmux session
if test -z "$SSH_TTY"; and not set -q TMUX if test -z "$SSH_TTY"; and not set -q TMUX
command tmux attach-session -t main || command tmux new-session -s main command tmux attach-session -t main || command tmux new-session -s main

View File

@@ -1,175 +0,0 @@
function ___paths_plugin_wrap_color
set_color normal
set_color "$argv[1]"
echo -n (set_color "$argv[1]")"$argv[2..]"
set_color normal
end
# duplicated in conf.d
function ___paths_plugin_set_colors
if not set -q ___paths_plugin_colors
set -Ux ___paths_plugin_colors 27e6ff 29e0ff 5cd8ff 77d0ff 8ac8ff 9cbfff afb5ff c5a7ff d99bfe ea8feb f684d5 fe7abd ff73a3 ff708a fa7070 ff708a ff73a3 fe7abd f684d5 ea8feb d99bfe c5a7ff afb5ff 9cbfff 8ac8ff 77d0ff 5cd8ff 29e0ff
end
return 0
end
function ___paths_plugin_cycle_color
if not set -q ___paths_plugin_current_color
set -Ux ___paths_plugin_current_color 1
else if test $___paths_plugin_current_color -gt (count $___paths_plugin_colors)
set -Ux ___paths_plugin_current_color 1
end
echo $___paths_plugin_colors[$___paths_plugin_current_color]
set -Ux ___paths_plugin_current_color (math $___paths_plugin_current_color + 1)
end
function ___paths_plugin_handle_found_item -a testName outFlags
set -f flags (string split -n ' ' -- "$outFlags")
set -f options (fish_opt -s c -l clean)
set -a options (fish_opt -s s -l single)
set -a options (fish_opt -s k -l no-color)
set -a options (fish_opt -s n -l inline)
argparse $options -- $flags
set -f arrow "=>"
# check if file exists
if test -e "$testName"
set -f nameOut (string trim -- "$testName")
if not set -q _flag_c # is not clean
if test -L "$testName" # is symlink
set -f __linkname (readlink -f "$testName")
set __linkname (string trim -- "$__linkname")
set testName (string trim -- "$testName")
if not set -q _flag_k # is color
set nameOut (___paths_plugin_wrap_color (___paths_plugin_cycle_color) $testName) (___paths_plugin_wrap_color "yellow" "$arrow") (___paths_plugin_wrap_color (___paths_plugin_cycle_color) $__linkname)
else # is color
set nameOut (echo -n "$testName" "$arrow" "$__linkname")
end
else # is not symlink
if not set -q _flag_k # is color
set testName (string trim -- "$testName")
set nameOut (___paths_plugin_wrap_color (___paths_plugin_cycle_color) "$testName")
else
set testName (string trim -- "$testName")
set nameOut "$testName"
end
end
set nameOut (string trim -- "$nameOut")
# do the tick
if set -q _flag_k # is not color
set nameOut "- $nameOut"
else # is color
set nameOut (___paths_plugin_wrap_color "yellow" "-") "$nameOut"
end
end
set nameOut (string trim -- "$nameOut")
echo -n $nameOut
end
end
function paths --description "Reveal the executable matches in shell paths or fish autoload."
set -f options (fish_opt -s c -l clean)
set -a options (fish_opt -s s -l single)
set -a options (fish_opt -s k -l no-color)
set -a options (fish_opt -s q -l quiet)
set -a options (fish_opt -s n -l inline)
argparse $options -- $argv
if test (count $argv) -lt 1
echo "paths - executable matches in shell paths or fish autoload."
and echo "usage: paths [-c|-s|-k] <name>"
and echo -e "\t-c or --no-color: output without color"
and echo -e "\t-s or --single: output without color or headers, the first result"
and echo -e "\t-k or --clean: output without tick marks or headers"
# and echo -e "\t-n or --inline: output without endline"
and return 1
end
set -f foundStatus 1
set -f input (string trim -- $argv)
# deprecated
if set -q _flag_q
set _flag_c True
end
if set -q _flag_s
set _flag_k True
set _flag_c True
end
set -f outFlags ''
set -q _flag_n; and set -a outFlags -n
set -q _flag_c; and set -a outFlags -c
set -q _flag_k; and set -a outFlags -k
set -q _flag_s; and set -a outFlags -s
set outFlags (string split -n " " -- "$outFlags")
___paths_plugin_set_colors
# loop over list of path lists
for pVar in VIRTUAL_ENV fisher_path fish_function_path fish_user_paths PATH
set -e acc
set -f acc ''
set -e hit
# see if variable is empty
if test -z "$pVar"
continue
end
set -f acc (begin
for t in $$pVar
for snit in "$t/$input.fish" "$t/$input"
set -f found (___paths_plugin_handle_found_item "$snit" "$outFlags")
set found (string trim -- "$found")
if test -n "$found"
set -f hit True
echo "$found"
if set -q _flag_s
break
end
end
end
if set -q _flag_s
if set -q hit
break
end
end
end
end)
# prepend source
if not set -q _flag_c
if set -q hit
set pVar (string trim -- "$pVar")
echo -e -n "$pVar\n"
end
end
if test -n "$acc"
set foundStatus 0
for fk in $acc
echo $fk
if set -q _flag_s
# stop after one
return $foundStatus
end
end
end
end
# check
set -l built (type --type $input 12&>/dev/null)
if test -n "$built"
and test "$built" = builtin
set $foundStatus 0
if not set -q _flag_c
echo -e -n "builtin\n"
if set -q _flag_k
echo - "$input"
else # is color
echo (___paths_plugin_wrap_color "yellow" "-") (___paths_plugin_wrap_color (___paths_plugin_cycle_color) "$input")
end
else
echo "$input"
end
end
return $foundStatus
end

View File

@@ -7,6 +7,7 @@
*-secret *-secret
__secret __secret
__ignored __ignored
__ignored/*
__test_*.php __test_*.php
__test_*.txt __test_*.txt
__test.php __test.php

View File

@@ -19,8 +19,8 @@
logs = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit logs = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit
nah = !git reset --hard && git clean -df nah = !git reset --hard && git clean -df
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r" recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d reset-origin = !git fetch origin && git reset --hard origin/HEAD && git clean -f -d
reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d reset-upstream = !git fetch upstream && git reset --hard upstream/HEAD && git clean -f -d
rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)' rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\" tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
undo = reset --soft HEAD^ undo = reset --soft HEAD^

View File

@@ -2,7 +2,7 @@
-- │ ivuorinen's Neovim configuration │ -- │ ivuorinen's Neovim configuration │
-- ╰─────────────────────────────────────────────────────────╯ -- ╰─────────────────────────────────────────────────────────╯
-- ── Install lazylazy ──────────────────────────────────────────────── -- ── Install lazy ────────────────────────────────────────────────────
-- https://github.com/folke/lazy.nvim -- https://github.com/folke/lazy.nvim
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
if not (vim.uv or vim.loop).fs_stat(lazypath) then if not (vim.uv or vim.loop).fs_stat(lazypath) then
@@ -53,7 +53,7 @@ require('lazy').setup(
path = '~/Code/nvim', -- Load wip plugins from this path path = '~/Code/nvim', -- Load wip plugins from this path
}, },
install = { install = {
colorscheme = { vim.g.colors_theme }, colorscheme = { 'catppuccin' },
}, },
profiling = { profiling = {
loader = true, loader = true,
@@ -61,8 +61,6 @@ require('lazy').setup(
} }
) )
-- require('nvm-default').setup()
require 'keymaps' require 'keymaps'
-- vim: set ts=2 sts=2 sw=2 wrap et : -- vim: set ts=2 sts=2 sw=2 wrap et :

View File

@@ -28,7 +28,6 @@ K.d('<C-k>', { 'n', 'v' }, ":m '<-2<CR>gv=gv", 'Move Block Up')
K.d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down') K.d('<C-j>', { 'n', 'v' }, ":m '>+1<CR>gv=gv", 'Move Block Down')
-- ── Other operations ──────────────────────────────────────────────── -- ── Other operations ────────────────────────────────────────────────
K.nl('o', function() require('snacks').gitbrowse() end, 'Open repo in browser')
K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true }) K.n('<C-s>', ':w!<cr>', { desc = 'Save', noremap = true })
K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' }) K.n('<esc><esc>', ':nohlsearch<cr>', { desc = 'Clear Search Highlighting' })
@@ -59,7 +58,6 @@ K.ld('cci', 'n', function() b().lsp_incoming_calls() end, 'Incoming calls')
K.ld('cco', 'n', function() b().lsp_outgoing_calls() end, 'Outgoing calls') K.ld('cco', 'n', function() b().lsp_outgoing_calls() end, 'Outgoing calls')
K.ld('cd', 'n', function() b().lsp_definitions() end, 'Definitions') K.ld('cd', 'n', function() b().lsp_definitions() end, 'Definitions')
K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format') K.ld('cf', { 'n', 'x' }, ':lua vim.lsp.buf.format()<CR>', 'Format')
K.ld('cg', 'n', ':lua require("neogen").generate()<CR>', 'Generate annotations')
K.ld('ci', 'n', function() b().lsp_implementations() end, 'Implementations') K.ld('ci', 'n', function() b().lsp_implementations() end, 'Implementations')
K.ld('cp', 'n', function() b().lsp_type_definitions() end, 'Type Definition') K.ld('cp', 'n', function() b().lsp_type_definitions() end, 'Type Definition')
K.ld('cr', 'n', vim.lsp.buf.rename, 'Rename') K.ld('cr', 'n', vim.lsp.buf.rename, 'Rename')

View File

@@ -1,120 +0,0 @@
-- Get nvm default version and use it in node_host_prog
-- and g.copilot_node_command.
--
-- This module automatically configures Neovim to use the default Node.js version
-- from NVM. It requires a working NVM installation and 'default' alias to be set,
-- and also neovim npm package to be installed.
--
-- You can install the neovim package by running:
-- npm i --global neovim
--
-- Usage:
-- require('nvm-default').setup({
-- add_to_path = true, -- optional: add NVM bin directory to PATH
-- nvm_path = "~/.nvm", -- optional: custom NVM installation path
-- notify_level = "info" -- optional: notification level
-- })
local M = {}
M.name = 'nvm-default.nvim'
M.version = '0.1.0' -- x-release-please-version
-- Helper function to run a shell command
---@param cmd string Run a shell command
---@return string? Return the result of the command
local function run_command(cmd)
local result = vim.fn.system(cmd)
return vim.v.shell_error == 0 and result:gsub('%s+$', '') or nil
end
-- Helper function to show a notification
---@param msg string Show a message
---@param level "info"|"warn"|"error"|"trace" Notification level
local function n(msg, level)
if msg == nil then msg = M.name .. ': No message provided' end
if level == nil then level = 'trace' end
local log_level = vim.log.levels.INFO
if level == 'info' then
log_level = vim.log.levels.INFO
elseif level == 'warn' then
log_level = vim.log.levels.WARN
elseif level == 'error' then
log_level = vim.log.levels.ERROR
elseif level == 'trace' then
log_level = vim.log.levels.TRACE
end
vim.notify(M.name .. ': ' .. msg, log_level)
end
---@class NvmDefaultOptions
---@field add_to_path boolean Add found NVM bin directory to PATH
---@field nvm_path string Where nvm installation is located
---@field notify_level number|"info"|"warn"|"error"|"trace" Notification level filter
-- Default options
---@type NvmDefaultOptions
M.defaults = {
add_to_path = vim.g.nvm_default_add_to_path or true,
nvm_path = vim.fn.expand(os.getenv 'NVM_DIR' or '~/.nvm'),
notify_level = vim.g.nvm_default_notify_level or 'info',
}
-- Fetch the NVM default version or fallback to node version
---@param opts? NvmDefaultOptions Plugin options
function M.setup(opts)
local options = vim.tbl_deep_extend('force', M.defaults, opts or {})
local nvm_path = options.nvm_path
local node_version = run_command(
string.format('. %s/nvm.sh && nvm version default', nvm_path)
) or run_command(string.format('. %s/nvm.sh && nvm version node', nvm_path)) or nil
if node_version and node_version:match '^v' then
-- Set vim.g.node_host_prog and vim.g.copilot_node_command
local current_nvm_version_path =
string.format('%s/versions/node/%s', nvm_path, node_version)
local current_nvm_node_bin_path = string.format('%s/bin', current_nvm_version_path)
local current_nvm_node_bin = string.format('%s/node', current_nvm_node_bin_path)
local neovim_node_host_bin_path =
string.format('%s/neovim-node-host', current_nvm_node_bin_path)
-- Collect missing files and directories errors for error output
local missing = {}
-- If node_dir isn't there, stop and show error
if not vim.fn.isdirectory(current_nvm_version_path) then
table.insert(missing, 'Node.js directory: ' .. current_nvm_version_path)
end
-- If node_bin isn't there, stop and show error
if not vim.fn.filereadable(current_nvm_node_bin) then
table.insert(missing, 'Node.js binary: ' .. current_nvm_node_bin)
end
if not vim.fn.filereadable(neovim_node_host_bin_path) then
table.insert(missing, 'Neovim host binary: ' .. neovim_node_host_bin_path)
end
if #missing > 0 then
n('Missing required files:\n- ' .. table.concat(missing, '\n- '), 'error')
return
end
-- Add to PATH if requested. Can be turned off by setting if it messes with
-- other tools.
if options.add_to_path then
vim.env.PATH = current_nvm_node_bin_path .. ':' .. vim.env.PATH
end
vim.g.node_host_prog = neovim_node_host_bin_path
vim.g.copilot_node_command = current_nvm_node_bin
else
n('Unable to determine the Node.js version from nvm.', 'error')
end
end
return M

View File

@@ -13,10 +13,6 @@ local a = vim.api -- A table to store API functions
g.mapleader = ' ' -- Space as the leader key g.mapleader = ' ' -- Space as the leader key
g.maplocalleader = ' ' -- Space as the local leader key g.maplocalleader = ' ' -- Space as the local leader key
-- g.colors_theme = 'onedark' -- Set the colorscheme
-- g.colors_variant_light = 'tokyonight-day' -- Set the light variant
-- g.colors_variant_dark = 'tokyonight-storm' -- Set the dark variant
g.editorconfig = true -- Make sure editorconfig support is enabled g.editorconfig = true -- Make sure editorconfig support is enabled
g.loaded_perl_provider = 0 -- Disable perl provider g.loaded_perl_provider = 0 -- Disable perl provider
g.loaded_ruby_provider = 0 -- Disable ruby provider g.loaded_ruby_provider = 0 -- Disable ruby provider

View File

@@ -1,6 +1,6 @@
return { return {
-- Performant, batteries-included completion plugin for Neovim -- Performant, batteries-included completion plugin for Neovim
-- https:/github.com/saghen/blink.cmp -- https://github.com/saghen/blink.cmp
{ {
'saghen/blink.cmp', 'saghen/blink.cmp',
version = '*', version = '*',

View File

@@ -24,7 +24,14 @@ return {
-- https://github.com/fatih/vim-go -- https://github.com/fatih/vim-go
{ {
'fatih/vim-go', 'fatih/vim-go',
config = function() end, ft = 'go',
config = function()
vim.g.go_def_mode = 'gopls'
vim.g.go_info_mode = 'gopls'
vim.g.go_fmt_autosave = 0
vim.g.go_imports_autosave = 0
vim.g.go_mod_fmt_autosave = 0
end,
}, },
-- Clarify and beautify your comments using boxes and lines. -- Clarify and beautify your comments using boxes and lines.

View File

@@ -223,7 +223,7 @@ return {
vim.env.VIMRUNTIME, vim.env.VIMRUNTIME,
} }
client.config.settings.Lua.runtime = { version = 'LuaJIT' } client.config.settings.Lua.runtime = { version = 'LuaJIT' }
client.notify( client:notify(
'workspace/didChangeConfiguration', 'workspace/didChangeConfiguration',
{ settings = client.config.settings } { settings = client.config.settings }
) )

View File

@@ -89,15 +89,12 @@ return {
'f-person/auto-dark-mode.nvim', 'f-person/auto-dark-mode.nvim',
opts = { opts = {
update_interval = 1000, update_interval = 1000,
-- stylua: ignore
set_dark_mode = function() set_dark_mode = function()
vim.api.nvim_set_option_value('background', 'dark', {}) vim.api.nvim_set_option_value('background', 'dark', {})
-- vim.cmd.colorscheme(vim.g.colors_variant_dark)
-- vim.cmd 'colorscheme rose-pine'
end, end,
set_light_mode = function() set_light_mode = function()
vim.api.nvim_set_option_value('background', 'light', {}) vim.api.nvim_set_option_value('background', 'light', {})
-- vim.cmd.colorscheme(vim.g.colors_variant_light)
-- vim.cmd 'colorscheme rose-pine-dawn'
end, end,
}, },
}, },

View File

@@ -100,5 +100,6 @@ function GetIntelephenseLicense()
local f = assert(io.open(p, 'rb')) local f = assert(io.open(p, 'rb'))
local content = f:read '*a' local content = f:read '*a'
f:close() f:close()
return string.gsub(content, '%s+', '')[1] or nil local stripped = string.gsub(content, '%s+', '')
return stripped == '' and nil or stripped
end end

561
yarn.lock
View File

@@ -1,385 +1,244 @@
# This file is generated by running "yarn install" inside your project. # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# Manual changes might be lost - proceed with caution! # yarn lockfile v1
__metadata:
version: 8
cacheKey: 10c0
"@biomejs/biome@npm:^2.4.4": "@biomejs/biome@^2.4.4":
version: 2.4.4 version "2.4.7"
resolution: "@biomejs/biome@npm:2.4.4" resolved "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.7.tgz"
integrity sha512-vXrgcmNGZ4lpdwZSpMf1hWw1aWS6B+SyeSYKTLrNsiUsAdSRN0J4d/7mF3ogJFbIwFFSOL3wT92Zzxia/d5/ng==
optionalDependencies:
"@biomejs/cli-darwin-arm64" "2.4.7"
"@biomejs/cli-darwin-x64" "2.4.7"
"@biomejs/cli-linux-arm64" "2.4.7"
"@biomejs/cli-linux-arm64-musl" "2.4.7"
"@biomejs/cli-linux-x64" "2.4.7"
"@biomejs/cli-linux-x64-musl" "2.4.7"
"@biomejs/cli-win32-arm64" "2.4.7"
"@biomejs/cli-win32-x64" "2.4.7"
"@biomejs/cli-darwin-arm64@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.7.tgz"
integrity sha512-Oo0cF5mHzmvDmTXw8XSjhCia8K6YrZnk7aCS54+/HxyMdZMruMO3nfpDsrlar/EQWe41r1qrwKiCa2QDYHDzWA==
"@biomejs/cli-darwin-x64@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.7.tgz"
integrity sha512-I+cOG3sd/7HdFtvDSnF9QQPrWguUH7zrkIMMykM3PtfWU9soTcS2yRb9Myq6MHmzbeCT08D1UmY+BaiMl5CcoQ==
"@biomejs/cli-linux-arm64-musl@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.7.tgz"
integrity sha512-I2NvM9KPb09jWml93O2/5WMfNR7Lee5Latag1JThDRMURVhPX74p9UDnyTw3Ae6cE1DgXfw7sqQgX7rkvpc0vw==
"@biomejs/cli-linux-arm64@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.7.tgz"
integrity sha512-om6FugwmibzfP/6ALj5WRDVSND4H2G9X0nkI1HZpp2ySf9lW2j0X68oQSaHEnls6666oy4KDsc5RFjT4m0kV0w==
"@biomejs/cli-linux-x64-musl@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.7.tgz"
integrity sha512-00kx4YrBMU8374zd2wHuRV5wseh0rom5HqRND+vDldJPrWwQw+mzd/d8byI9hPx926CG+vWzq6AeiT7Yi5y59g==
"@biomejs/cli-linux-x64@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.7.tgz"
integrity sha512-bV8/uo2Tj+gumnk4sUdkerWyCPRabaZdv88IpbmDWARQQoA/Q0YaqPz1a+LSEDIL7OfrnPi9Hq1Llz4ZIGyIQQ==
"@biomejs/cli-win32-arm64@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.7.tgz"
integrity sha512-hOUHBMlFCvDhu3WCq6vaBoG0dp0LkWxSEnEEsxxXvOa9TfT6ZBnbh72A/xBM7CBYB7WgwqboetzFEVDnMxelyw==
"@biomejs/cli-win32-x64@2.4.7":
version "2.4.7"
resolved "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.7.tgz"
integrity sha512-qEpGjSkPC3qX4ycbMUthXvi9CkRq7kZpkqMY1OyhmYlYLnANnooDQ7hDerM8+0NJ+DZKVnsIc07h30XOpt7LtQ==
"@types/node@^25.3.2":
version "25.5.0"
resolved "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz"
integrity sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==
dependencies: dependencies:
"@biomejs/cli-darwin-arm64": "npm:2.4.4" undici-types "~7.18.0"
"@biomejs/cli-darwin-x64": "npm:2.4.4"
"@biomejs/cli-linux-arm64": "npm:2.4.4"
"@biomejs/cli-linux-arm64-musl": "npm:2.4.4"
"@biomejs/cli-linux-x64": "npm:2.4.4"
"@biomejs/cli-linux-x64-musl": "npm:2.4.4"
"@biomejs/cli-win32-arm64": "npm:2.4.4"
"@biomejs/cli-win32-x64": "npm:2.4.4"
dependenciesMeta:
"@biomejs/cli-darwin-arm64":
optional: true
"@biomejs/cli-darwin-x64":
optional: true
"@biomejs/cli-linux-arm64":
optional: true
"@biomejs/cli-linux-arm64-musl":
optional: true
"@biomejs/cli-linux-x64":
optional: true
"@biomejs/cli-linux-x64-musl":
optional: true
"@biomejs/cli-win32-arm64":
optional: true
"@biomejs/cli-win32-x64":
optional: true
bin:
biome: bin/biome
checksum: 10c0/f2b7620d39caeeb9e0ed070dd1065cc2378626c7fa6ecda3db84b64df4c94fb4909407726044e28c83e8a95121ad389498cc3f0e5be600a421d906ca705b821c
languageName: node
linkType: hard
"@biomejs/cli-darwin-arm64@npm:2.4.4": balanced-match@^4.0.2:
version: 2.4.4 version "4.0.4"
resolution: "@biomejs/cli-darwin-arm64@npm:2.4.4" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz"
conditions: os=darwin & cpu=arm64 integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==
languageName: node
linkType: hard
"@biomejs/cli-darwin-x64@npm:2.4.4": bats@^1.13.0:
version: 2.4.4 version "1.13.0"
resolution: "@biomejs/cli-darwin-x64@npm:2.4.4" resolved "https://registry.npmjs.org/bats/-/bats-1.13.0.tgz"
conditions: os=darwin & cpu=x64 integrity sha512-giSYKGTOcPZyJDbfbTtzAedLcNWdjCLbXYU3/MwPnjyvDXzu6Dgw8d2M+8jHhZXSmsCMSQqCp+YBsJ603UO4vQ==
languageName: node
linkType: hard
"@biomejs/cli-linux-arm64-musl@npm:2.4.4": brace-expansion@^5.0.2:
version: 2.4.4 version "5.0.4"
resolution: "@biomejs/cli-linux-arm64-musl@npm:2.4.4" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz"
conditions: os=linux & cpu=arm64 & libc=musl integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==
languageName: node
linkType: hard
"@biomejs/cli-linux-arm64@npm:2.4.4":
version: 2.4.4
resolution: "@biomejs/cli-linux-arm64@npm:2.4.4"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@biomejs/cli-linux-x64-musl@npm:2.4.4":
version: 2.4.4
resolution: "@biomejs/cli-linux-x64-musl@npm:2.4.4"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@biomejs/cli-linux-x64@npm:2.4.4":
version: 2.4.4
resolution: "@biomejs/cli-linux-x64@npm:2.4.4"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@biomejs/cli-win32-arm64@npm:2.4.4":
version: 2.4.4
resolution: "@biomejs/cli-win32-arm64@npm:2.4.4"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@biomejs/cli-win32-x64@npm:2.4.4":
version: 2.4.4
resolution: "@biomejs/cli-win32-x64@npm:2.4.4"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@types/node@npm:^25.3.2":
version: 25.3.3
resolution: "@types/node@npm:25.3.3"
dependencies: dependencies:
undici-types: "npm:~7.18.0" balanced-match "^4.0.2"
checksum: 10c0/63e1d3816a9f4a706ab5d588d18cb98aa824b97748ff585537d327528e9438f58f69f45c7762e7cd3a1ab32c1619f551aabe8075d13172f9273cf10f6d83ab91
languageName: node
linkType: hard
"balanced-match@npm:^4.0.2": debug@^4.3.4:
version: 4.0.4 version "4.4.3"
resolution: "balanced-match@npm:4.0.4" resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
checksum: 10c0/07e86102a3eb2ee2a6a1a89164f29d0dbaebd28f2ca3f5ca786f36b8b23d9e417eb3be45a4acf754f837be5ac0a2317de90d3fcb7f4f4dc95720a1f36b26a17b integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
languageName: node
linkType: hard
"bats@npm:^1.13.0":
version: 1.13.0
resolution: "bats@npm:1.13.0"
bin:
bats: bin/bats
checksum: 10c0/7f697d6305d80d328d620bd58c658f7830fbed57e28a43f18771d89fb6f941a131b440ab18d951fd15fdd23f3c687687d607d7fc03ac4c99f4725e64d2432832
languageName: node
linkType: hard
"brace-expansion@npm:^5.0.2":
version: 5.0.4
resolution: "brace-expansion@npm:5.0.4"
dependencies: dependencies:
balanced-match: "npm:^4.0.2" ms "^2.1.3"
checksum: 10c0/359cbcfa80b2eb914ca1f3440e92313fbfe7919ee6b274c35db55bec555aded69dac5ee78f102cec90c35f98c20fa43d10936d0cd9978158823c249257e1643a
languageName: node
linkType: hard
"debug@npm:^4.3.4": deep-is@^0.1.3:
version: 4.4.3 version "0.1.4"
resolution: "debug@npm:4.4.3" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
editorconfig-checker@^6.1.1:
version "6.1.1"
resolved "https://registry.npmjs.org/editorconfig-checker/-/editorconfig-checker-6.1.1.tgz"
integrity sha512-kiOb6qaWpMNt7Z/43ba0Pa1Inhr2/t9nKbvEKtCeXJ5AesztoM9AgLOOQVB4QUv/nGjgz3xkbx4pcogVRD2NWw==
fast-levenshtein@^2.0.6:
version "2.0.6"
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
find-package-json@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/find-package-json/-/find-package-json-1.2.0.tgz"
integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw==
fs-extra@^11.1.1:
version "11.3.4"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz"
integrity sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==
dependencies: dependencies:
ms: "npm:^2.1.3" graceful-fs "^4.2.0"
peerDependenciesMeta: jsonfile "^6.0.1"
supports-color: universalify "^2.0.0"
optional: true
checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6
languageName: node
linkType: hard
"deep-is@npm:^0.1.3": glob@^13.0.0:
version: 0.1.4 version "13.0.6"
resolution: "deep-is@npm:0.1.4" resolved "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz"
checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c integrity sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==
languageName: node
linkType: hard
"editorconfig-checker@npm:^6.1.1":
version: 6.1.1
resolution: "editorconfig-checker@npm:6.1.1"
bin:
ec: dist/index.js
editorconfig-checker: dist/index.js
checksum: 10c0/0a46ce93e2821041c4b4bbf2ab9dc30e1b4eb03d3f20e5b14bbe45767f6f2aafd5e1310ea737c15402d8e193f702a421a814041e072584250e8a7d5e63d83741
languageName: node
linkType: hard
"fast-levenshtein@npm:^2.0.6":
version: 2.0.6
resolution: "fast-levenshtein@npm:2.0.6"
checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4
languageName: node
linkType: hard
"find-package-json@npm:^1.2.0":
version: 1.2.0
resolution: "find-package-json@npm:1.2.0"
checksum: 10c0/85d6c97afb9f8f0deb0d344a1c4eb8027347cf4d61666c28d3ac3f913e916684441218682b3dd6f8ad570e5d43c96a7db521f70183d70df559d07e1f99cdc635
languageName: node
linkType: hard
"fs-extra@npm:^11.1.1":
version: 11.3.3
resolution: "fs-extra@npm:11.3.3"
dependencies: dependencies:
graceful-fs: "npm:^4.2.0" minimatch "^10.2.2"
jsonfile: "npm:^6.0.1" minipass "^7.1.3"
universalify: "npm:^2.0.0" path-scurry "^2.0.2"
checksum: 10c0/984924ff4104e3e9f351b658a864bf3b354b2c90429f57aec0acd12d92c4e6b762cbacacdffb4e745b280adce882e1f980c485d9f02c453f769ab4e7fc646ce3
languageName: node
linkType: hard
"glob@npm:^13.0.0": graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version: 13.0.6 version "4.2.11"
resolution: "glob@npm:13.0.6" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
jsonfile@^6.0.1:
version "6.2.0"
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz"
integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==
dependencies: dependencies:
minimatch: "npm:^10.2.2" universalify "^2.0.0"
minipass: "npm:^7.1.3" optionalDependencies:
path-scurry: "npm:^2.0.2" graceful-fs "^4.1.6"
checksum: 10c0/269c236f11a9b50357fe7a8c6aadac667e01deb5242b19c84975628f05f4438d8ee1354bb62c5d6c10f37fd59911b54d7799730633a2786660d8c69f1d18120a
languageName: node
linkType: hard
"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0": levn@^0.4.1:
version: 4.2.11 version "0.4.1"
resolution: "graceful-fs@npm:4.2.11" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
languageName: node
linkType: hard
"ivuorinen-dotfiles@workspace:.":
version: 0.0.0-use.local
resolution: "ivuorinen-dotfiles@workspace:."
dependencies: dependencies:
"@biomejs/biome": "npm:^2.4.4" prelude-ls "^1.2.1"
"@types/node": "npm:^25.3.2" type-check "~0.4.0"
bats: "npm:^1.13.0"
editorconfig-checker: "npm:^6.1.1"
markdown-table-formatter: "npm:^1.7.0"
prettier: "npm:^3.8.1"
typescript: "npm:^5.9.3"
languageName: unknown
linkType: soft
"jsonfile@npm:^6.0.1": lru-cache@^11.0.0:
version: 6.2.0 version "11.2.7"
resolution: "jsonfile@npm:6.2.0" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz"
integrity sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==
markdown-table-formatter@^1.7.0:
version "1.7.0"
resolved "https://registry.npmjs.org/markdown-table-formatter/-/markdown-table-formatter-1.7.0.tgz"
integrity sha512-/yddr66lbp5N1HESvkJoFIQq2VUUdFoBEJ+jAU/Mm/H2xaK80Nq2e0ugkJPWCRrix4GXhTUAccbsg1tQg5jiew==
dependencies: dependencies:
graceful-fs: "npm:^4.1.6" debug "^4.3.4"
universalify: "npm:^2.0.0" find-package-json "^1.2.0"
dependenciesMeta: fs-extra "^11.1.1"
graceful-fs: glob "^13.0.0"
optional: true markdown-table-prettify "^3.6.0"
checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d optionator "^0.9.4"
languageName: node
linkType: hard
"levn@npm:^0.4.1": markdown-table-prettify@^3.6.0:
version: 0.4.1 version "3.7.0"
resolution: "levn@npm:0.4.1" resolved "https://registry.npmjs.org/markdown-table-prettify/-/markdown-table-prettify-3.7.0.tgz"
integrity sha512-woZ1X+u0HsTygXL5kcptMSDwnjU//3UKTOH6fGdaABSSLOxTdWjr2P6i7dVrru5t/pxyEOT48/skv/8m8/VqdA==
minimatch@^10.2.2:
version "10.2.4"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz"
integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==
dependencies: dependencies:
prelude-ls: "npm:^1.2.1" brace-expansion "^5.0.2"
type-check: "npm:~0.4.0"
checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e
languageName: node
linkType: hard
"lru-cache@npm:^11.0.0": minipass@^7.1.2, minipass@^7.1.3:
version: 11.2.6 version "7.1.3"
resolution: "lru-cache@npm:11.2.6" resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz"
checksum: 10c0/73bbffb298760e71b2bfe8ebc16a311c6a60ceddbba919cfedfd8635c2d125fbfb5a39b71818200e67973b11f8d59c5a9e31d6f90722e340e90393663a66e5cd integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==
languageName: node
linkType: hard
"markdown-table-formatter@npm:^1.7.0": ms@^2.1.3:
version: 1.7.0 version "2.1.3"
resolution: "markdown-table-formatter@npm:1.7.0" resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
optionator@^0.9.4:
version "0.9.4"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==
dependencies: dependencies:
debug: "npm:^4.3.4" deep-is "^0.1.3"
find-package-json: "npm:^1.2.0" fast-levenshtein "^2.0.6"
fs-extra: "npm:^11.1.1" levn "^0.4.1"
glob: "npm:^13.0.0" prelude-ls "^1.2.1"
markdown-table-prettify: "npm:^3.6.0" type-check "^0.4.0"
optionator: "npm:^0.9.4" word-wrap "^1.2.5"
bin:
markdown-table-formatter: lib/index.js
checksum: 10c0/0f0d5eaec2c3bb9c60328ffbb4652305845def5387f4c87dd6e83559ef793961353af64ae44bce9cda3394469e419e046ae42fe7e9cafd47414b42deaa28f3b7
languageName: node
linkType: hard
"markdown-table-prettify@npm:^3.6.0": path-scurry@^2.0.2:
version: 3.7.0 version "2.0.2"
resolution: "markdown-table-prettify@npm:3.7.0" resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz"
bin: integrity sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==
markdown-table-prettify: cli/index.js
checksum: 10c0/f387b1ca81ceaa201bda2ce1db8e4d392a4d4ac3d7bb3173c7d9e3d9ca389e31d247eee2ccd2fa30f3132ae2447dc51285fb68636cdaf825633a43a499f41cd6
languageName: node
linkType: hard
"minimatch@npm:^10.2.4":
version: 10.2.4
resolution: "minimatch@npm:10.2.4"
dependencies: dependencies:
brace-expansion: "npm:^5.0.2" lru-cache "^11.0.0"
checksum: 10c0/35f3dfb7b99b51efd46afd378486889f590e7efb10e0f6a10ba6800428cf65c9a8dedb74427d0570b318d749b543dc4e85f06d46d2858bc8cac7e1eb49a95945 minipass "^7.1.2"
languageName: node
linkType: hard
"minipass@npm:^7.1.2, minipass@npm:^7.1.3": prelude-ls@^1.2.1:
version: 7.1.3 version "1.2.1"
resolution: "minipass@npm:7.1.3" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
languageName: node
linkType: hard
"ms@npm:^2.1.3": prettier@^3.8.1:
version: 2.1.3 version "3.8.1"
resolution: "ms@npm:2.1.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz"
checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 integrity sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==
languageName: node
linkType: hard
"optionator@npm:^0.9.4": type-check@^0.4.0, type-check@~0.4.0:
version: 0.9.4 version "0.4.0"
resolution: "optionator@npm:0.9.4" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
dependencies: dependencies:
deep-is: "npm:^0.1.3" prelude-ls "^1.2.1"
fast-levenshtein: "npm:^2.0.6"
levn: "npm:^0.4.1"
prelude-ls: "npm:^1.2.1"
type-check: "npm:^0.4.0"
word-wrap: "npm:^1.2.5"
checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675
languageName: node
linkType: hard
"path-scurry@npm:^2.0.2": typescript@^5.9.3:
version: 2.0.2 version "5.9.3"
resolution: "path-scurry@npm:2.0.2" resolved "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz"
dependencies: integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==
lru-cache: "npm:^11.0.0"
minipass: "npm:^7.1.2"
checksum: 10c0/b35ad37cf6557a87fd057121ce2be7695380c9138d93e87ae928609da259ea0a170fac6f3ef1eb3ece8a068e8b7f2f3adf5bb2374cf4d4a57fe484954fcc9482
languageName: node
linkType: hard
"prelude-ls@npm:^1.2.1": undici-types@~7.18.0:
version: 1.2.1 version "7.18.2"
resolution: "prelude-ls@npm:1.2.1" resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz"
checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==
languageName: node
linkType: hard
"prettier@npm:^3.8.1": universalify@^2.0.0:
version: 3.8.1 version "2.0.1"
resolution: "prettier@npm:3.8.1" resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
bin: integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
prettier: bin/prettier.cjs
checksum: 10c0/33169b594009e48f570471271be7eac7cdcf88a209eed39ac3b8d6d78984039bfa9132f82b7e6ba3b06711f3bfe0222a62a1bfb87c43f50c25a83df1b78a2c42
languageName: node
linkType: hard
"type-check@npm:^0.4.0, type-check@npm:~0.4.0": word-wrap@^1.2.5:
version: 0.4.0 version "1.2.5"
resolution: "type-check@npm:0.4.0" resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
dependencies: integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
prelude-ls: "npm:^1.2.1"
checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58
languageName: node
linkType: hard
"typescript@npm:^5.9.3":
version: 5.9.3
resolution: "typescript@npm:5.9.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/6bd7552ce39f97e711db5aa048f6f9995b53f1c52f7d8667c1abdc1700c68a76a308f579cd309ce6b53646deb4e9a1be7c813a93baaf0a28ccd536a30270e1c5
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A^5.9.3#optional!builtin<compat/typescript>":
version: 5.9.3
resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin<compat/typescript>::version=5.9.3&hash=5786d5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/ad09fdf7a756814dce65bc60c1657b40d44451346858eea230e10f2e95a289d9183b6e32e5c11e95acc0ccc214b4f36289dcad4bf1886b0adb84d711d336a430
languageName: node
linkType: hard
"undici-types@npm:~7.18.0":
version: 7.18.2
resolution: "undici-types@npm:7.18.2"
checksum: 10c0/85a79189113a238959d7a647368e4f7c5559c3a404ebdb8fc4488145ce9426fcd82252a844a302798dfc0e37e6fb178ff481ed03bc4caf634c5757d9ef43521d
languageName: node
linkType: hard
"universalify@npm:^2.0.0":
version: 2.0.1
resolution: "universalify@npm:2.0.1"
checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a
languageName: node
linkType: hard
"word-wrap@npm:^1.2.5":
version: 1.2.5
resolution: "word-wrap@npm:1.2.5"
checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20
languageName: node
linkType: hard