diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..03ad24b --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been created automatically by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..92dc88b --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json", + "changelog": "@changesets/changelog-git", + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..1fab240 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +## Description + + + +## Type of Change + + + +- [ ] Feature (new functionality) +- [ ] Bug fix +- [ ] Improvement/Refactor +- [ ] Documentation +- [ ] Dependencies update + +## Testing + + + +## Checklist + +- [ ] Code follows project style guidelines +- [ ] Self-review completed +- [ ] Comments added for complex code +- [ ] Documentation updated (if needed) +- [ ] No new warnings generated + diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..4a872e8 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,31 @@ +# Auto-label PRs based on title patterns +# This helps with automatic release notes generation + +"type: feature": + - title: ["feat:", "feature:", "add "] + - head: ["feat/", "feature/", "add/"] + +"type: bug": + - title: ["fix:", "bug:", "bugfix:", "resolve "] + - head: ["fix/", "bug/", "bugfix/"] + +"type: improvement": + - title: ["refactor:", "improve:", "update ", "enhance "] + - head: ["refactor/", "improve/", "update/"] + +"type: docs": + - title: ["docs:", "documentation:"] + - head: ["docs/", "documentation/"] + +dependencies: + - title: ["deps:", "dependencies:", "bump "] + - head: ["deps/", "dependencies/"] + +"type: chore": + - title: ["chore:"] + - head: ["chore/"] + +breaking: + - title: ["breaking:", "BREAKING:"] + - head: ["breaking/"] + diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..4885a53 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,29 @@ +changelog: + exclude: + labels: + - ignore-for-release + authors: + - dependabot + - github-actions + categories: + - title: Features + labels: + - "type: feature" + - title: Bugs + labels: + - "type: bug" + - title: Improvements + labels: + - "type: improvement" + - title: Documentation + labels: + - "type: docs" + - docs + - title: Dependencies + labels: + - dependencies + - dependabot + - title: Other Changes + labels: + - "*" + diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml new file mode 100644 index 0000000..51fb39a --- /dev/null +++ b/.github/workflows/pr-labeler.yml @@ -0,0 +1,20 @@ +name: PR Labeler + +on: + pull_request: + types: [opened, synchronize] + +jobs: + label: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - name: Label PR based on title + uses: actions/labeler@v5 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + configuration-path: .github/labeler.yml + sync-labels: true + diff --git a/.github/workflows/release-on-merge.yml b/.github/workflows/release-on-merge.yml new file mode 100644 index 0000000..371ff04 --- /dev/null +++ b/.github/workflows/release-on-merge.yml @@ -0,0 +1,270 @@ +name: Create Tag and Release on Merge + +# This workflow creates a tag and GitHub Release when a release PR is merged to main +# Triggered when PR with title starting with "release:" is merged to main + +on: + pull_request: + types: [closed] + branches: + - main + +jobs: + create-tag-and-release: + if: github.event.pull_request.merged == true && startsWith(github.event.pull_request.title, 'release:') + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: read + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: main + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: Enable Corepack + run: corepack enable + + - name: Install dependencies + run: yarn install --immutable + + - name: Extract version from package.json + id: version + run: | + VERSION=$(node -p "require('./package.json').version") + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "tag=v$VERSION" >> $GITHUB_OUTPUT + echo "✅ Detected version: $VERSION" + + - name: Check if tag already exists + id: check-tag + run: | + TAG_NAME="${{ steps.version.outputs.tag }}" + if git rev-parse "$TAG_NAME" >/dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "⚠️ Tag $TAG_NAME already exists locally" + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "✅ Tag $TAG_NAME does not exist, will create" + fi + + - name: Create Git Tag + if: steps.check-tag.outputs.exists == 'false' + run: | + TAG_NAME="${{ steps.version.outputs.tag }}" + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git tag -a "$TAG_NAME" -m "Release $TAG_NAME" + git push origin "$TAG_NAME" + echo "✅ Tag $TAG_NAME created and pushed" + + - name: Generate and Create GitHub Release + uses: actions/github-script@v7 + with: + script: | + const { execSync } = require('child_process'); + const fs = require('fs'); + + // Get version from package.json + const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8')); + const version = packageJson.version; + const tagName = `v${version}`; + + console.log(`📦 Creating release for tag: ${tagName}`); + + // Check if release already exists + try { + const existingRelease = await github.rest.repos.getReleaseByTag({ + owner: context.repo.owner, + repo: context.repo.repo, + tag: tagName + }); + console.log(`⚠️ Release ${tagName} already exists!`); + console.log(`Release URL: ${existingRelease.data.html_url}`); + return; + } catch (error) { + if (error.status !== 404) { + throw error; + } + console.log(`✅ No existing release found for ${tagName}, proceeding...`); + } + + // Get previous tag + const { data: tags } = await github.rest.repos.listTags({ + owner: context.repo.owner, + repo: context.repo.repo, + per_page: 10, + }); + + let previousTagName = ''; + for (const tag of tags) { + if (tag.name !== tagName) { + previousTagName = tag.name; + break; + } + } + + console.log(`Generating release notes from ${previousTagName || 'start'} to ${tagName}`); + + // Get commits between tags + let commits = []; + try { + const { data: comparison } = await github.rest.repos.compareCommits({ + owner: context.repo.owner, + repo: context.repo.repo, + base: previousTagName || 'HEAD~50', + head: tagName, + }); + commits = comparison.commits; + console.log(`Found ${commits.length} commits between ${previousTagName || 'start'} and ${tagName}`); + } catch (error) { + console.log(`Could not compare commits: ${error.message}`); + commits = []; + } + + // Get PRs for commits + const prMap = new Map(); + for (const commit of commits) { + try { + const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: commit.sha, + }); + + for (const pr of prs) { + if (pr.merged_at && + !prMap.has(pr.number) && + !pr.title.toLowerCase().includes('release:')) { + prMap.set(pr.number, pr); + } + } + } catch (error) { + console.log(`Could not get PRs for commit ${commit.sha.substring(0, 7)}:`, error.message); + } + } + + const prs = Array.from(prMap.values()); + console.log(`Found ${prs.length} merged PRs between tags`); + + // Categorize PRs by labels + const breaking = []; + const features = []; + const bugs = []; + const improvements = []; + const docs = []; + const dependencies = []; + const chores = []; + const other = []; + + prs.forEach(pr => { + const labels = pr.labels.map(l => l.name); + const prLine = `- ${pr.title} (#${pr.number}) @${pr.user.login}`; + + if (labels.includes('breaking')) { + breaking.push(prLine); + } else if (labels.includes('type: feature')) { + features.push(prLine); + } else if (labels.includes('type: bug')) { + bugs.push(prLine); + } else if (labels.includes('type: improvement')) { + improvements.push(prLine); + } else if (labels.includes('type: docs')) { + docs.push(prLine); + } else if (labels.includes('dependencies')) { + dependencies.push(prLine); + } else if (labels.includes('type: chore')) { + chores.push(prLine); + } else { + other.push(prLine); + } + }); + + // Build release notes + let releaseNotes = ``; + + // Get CHANGELOG.md content for this version + let changelogContent = ''; + try { + const changelogPath = './CHANGELOG.md'; + if (fs.existsSync(changelogPath)) { + const changelogText = fs.readFileSync(changelogPath, 'utf8'); + const versionNumber = version; + const escapedVersion = versionNumber.replace(/\./g, '\\.'); + const versionRegex = new RegExp(`##\\s+${escapedVersion}\\s*\\n([\\s\\S]*?)(?=\\n##|$)`); + const match = changelogText.match(versionRegex); + + if (match && match[1]) { + changelogContent = match[1].trim(); + console.log(`✅ Found CHANGELOG.md content for version ${versionNumber}`); + } + } + } catch (error) { + console.log(`Could not read CHANGELOG.md: ${error.message}`); + } + + // Use CHANGELOG.md if available + if (changelogContent) { + releaseNotes += changelogContent + '\n\n'; + releaseNotes += `---\n\n`; + releaseNotes += `## Pull Requests\n\n`; + } else { + if (prs.length > 0) { + const totalPRs = prs.length; + releaseNotes += `This release includes ${totalPRs} ${totalPRs === 1 ? 'change' : 'changes'}.\n\n`; + } + } + + if (breaking.length > 0) { + releaseNotes += `### Breaking Changes\n${breaking.join('\n')}\n\n`; + } + if (features.length > 0) { + releaseNotes += `### New Features\n${features.join('\n')}\n\n`; + } + if (bugs.length > 0) { + releaseNotes += `### Bug Fixes\n${bugs.join('\n')}\n\n`; + } + if (improvements.length > 0) { + releaseNotes += `### Improvements\n${improvements.join('\n')}\n\n`; + } + if (docs.length > 0) { + releaseNotes += `### Documentation\n${docs.join('\n')}\n\n`; + } + if (dependencies.length > 0) { + releaseNotes += `### Dependencies\n${dependencies.join('\n')}\n\n`; + } + if (chores.length > 0) { + releaseNotes += `### Chores\n${chores.join('\n')}\n\n`; + } + if (other.length > 0) { + releaseNotes += `### Other Changes\n${other.join('\n')}\n\n`; + } + + if (prs.length === 0) { + releaseNotes += `No merged pull requests found for this release.\n\n`; + } + + if (previousTagName) { + releaseNotes += `\n---\n**Full Changelog**: https://github.com/${context.repo.owner}/${context.repo.repo}/compare/${previousTagName}...${tagName}`; + } + + // Create GitHub Release + const release = await github.rest.repos.createRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + tag_name: tagName, + name: `Release ${tagName}`, + body: releaseNotes, + draft: false, + prerelease: false, + make_latest: 'true' + }); + + console.log(`✅ Release ${tagName} created successfully!`); + console.log(`Release URL: ${release.data.html_url}`); diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..4a6a84d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# training-app + +## 1.0.1 + +### Patch Changes + +- Add release automation and improve repository documentation and presentation diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..f1c0a76 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,132 @@ +# Contributing Guide + +This guide explains how we organize releases, structure branches, and prepare pull requests so changes land smoothly. + +## Branch Model + +- **`main`** – Release-ready code. Every commit is tagged and deployable. Keep PRs targeting `main` limited to hotfixes or release preparation approved by maintainers. +- **`develop`** – Nightly builds and upcoming release work. Base regular feature work off `develop` so it can soak in automation and shared testing. +- **Topic branches** – Create a dedicated branch per change using the format `feat/` (for example `feat/customer-export`). Use other prefixes when appropriate (`fix/`, `chore/`, `docs/`). + +## Working on Features + +1. **Branch from `develop`**: + ```bash + git checkout develop + git pull origin develop + git checkout -b feat/your-feature-name + ``` + +2. **Keep commits scoped and descriptive**: + ```bash + git commit -m "feat: add customer export feature" + ``` + +3. **Keep your branch up to date**: + ```bash + git pull --rebase origin develop + ``` + +4. **Open PR targeting `develop`**: + - Describe the user impact, architectural notes, and testing performed + - Ensure the branch merges cleanly and CI is green before requesting review + - Reference related issues or discussions + +## Release Process + +### Normal Release Flow + +1. **Prepare release on `develop`**: + ```bash + git checkout develop + git pull origin develop + yarn changeset version # Updates package.json and CHANGELOG.md + git add . + git commit -m "chore: version packages" + git push origin develop + ``` + +2. **Create release branch**: + ```bash + git checkout -b release/v1.1.X + git push origin release/v1.1.X + ``` + +3. **Open PR: `release/v1.1.X` → `main`**: + - Title: `release: v1.1.X` + - Description: Include summary of changes from CHANGELOG.md + - Wait for review/approval + +4. **After PR merge to `main`**: + - Tag will be created automatically (or create manually): + ```bash + git checkout main + git pull origin main + git tag -a v1.1.X -m "Release v1.1.X" + git push origin v1.1.X + ``` + - Create GitHub Release using workflow: Actions → "Create Release" → Run workflow + +5. **Synchronize `develop`** (if needed): + ```bash + git checkout develop + git merge main # Only if main has commits not in develop + git push origin develop + ``` + +### Hotfix Flow + +1. **Create hotfix branch from `main`**: + ```bash + git checkout main + git pull origin main + git checkout -b hotfix/critical-bug + ``` + +2. **Make fix and commit**: + ```bash + # ... make changes ... + git commit -m "fix: critical bug description" + git push origin hotfix/critical-bug + ``` + +3. **Open PR: `hotfix/critical-bug` → `main`**: + - After merge, create tag and release + +4. **Merge `main` → `develop`** (synchronization): + ```bash + git checkout develop + git merge main + git push origin develop + ``` + +## Pull Requests + +- **Open PRs against `develop`** unless you are coordinating a release hotfix +- **Describe the user impact**, architectural notes, and testing performed +- **Ensure the branch merges cleanly** and CI is green before requesting review +- **Reference related issues** or discussions +- **Tag maintainers early** if you need design or architectural guidance + +## Versioning + +We use [Changesets](https://github.com/changesets/changesets) for version management: + +- **Add changeset** when making changes: + ```bash + yarn changeset + ``` + +- **Version bump** happens during release preparation: + ```bash + yarn changeset version + ``` + +- **Version format**: Semantic versioning (MAJOR.MINOR.PATCH) + +## Helpful Resources + +- 📚 Documentation: Check project README.md +- 💬 Issues: [GitHub Issues](https://github.com/codee-sh/payload-training-app/issues) + +Thanks for contributing! diff --git a/README.md b/README.md index 7ae7748..c65eb97 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,15 @@ A coach-facing admin and client-facing training tracker built with Payload CMS a **Client (web app)** — logs in, sees their active plan, works through workouts session by session, and logs each set (reps, weight, RIR, time, etc.). +## Navigation +- [Data model](#data-model) +- [Tech stack](#tech-stack) +- [Getting started](#getting-started) +- [Project structure](#project-structure) +- [Key scripts](#key-scripts) +- [Development](#development) +- [Screenshots](#screenshots) + ## Data model ``` @@ -164,3 +173,9 @@ yarn install-skills ``` Skills live in `.ai/skills/` and cover: Payload patterns, collection scaffolding, admin module structure, UI copy, and spec writing. + +## Screenshots + +

+ Training App mockup +

diff --git a/docs/mockup-1.png b/docs/mockup-1.png new file mode 100644 index 0000000..072b2ab Binary files /dev/null and b/docs/mockup-1.png differ diff --git a/package.json b/package.json index 2515725..54ac0b7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "training-app", - "version": "1.0.0", + "version": "1.0.1", "description": "Aplikacja treningowa na Payload 3", "license": "MIT", "type": "module", @@ -15,7 +15,13 @@ "lint": "cross-env NODE_OPTIONS=--no-deprecation eslint .", "payload": "cross-env NODE_OPTIONS=--no-deprecation tsx node_modules/payload/bin.js --disable-transpile", "start": "cross-env NODE_OPTIONS=--no-deprecation next start", - "install-skills": "sh scripts/install-skills.sh" + "install-skills": "sh scripts/install-skills.sh", + "format": "prettier --write \"src/**/*.{ts,tsx}\"", + "format:check": "prettier --check \"src/**/*.{ts,tsx}\"", + "changeset": "changeset", + "version": "changeset version", + "prepare-release": "bash scripts/prepare-release.sh", + "pr:create": "bash scripts/create-pr.sh" }, "dependencies": { "@payloadcms/db-postgres": "3.85.1", @@ -36,6 +42,7 @@ "sharp": "0.34.2" }, "devDependencies": { + "@changesets/cli": "^2.31.0", "@tailwindcss/postcss": "^4.3.0", "@types/node": "24.12.3", "@types/react": "19.2.14", diff --git a/scripts/create-pr.sh b/scripts/create-pr.sh new file mode 100755 index 0000000..7ed03c1 --- /dev/null +++ b/scripts/create-pr.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Creates a GitHub PR from the current branch and generates a description. +# Requires: gh CLI authenticated. + +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$REPO_ROOT" + +if ! command -v gh >/dev/null 2>&1; then + echo "Error: gh CLI is required but not found in PATH." >&2 + exit 1 +fi + +if ! gh auth status >/dev/null 2>&1; then + echo "Error: gh CLI is not authenticated. Run 'gh auth login'." >&2 + exit 1 +fi + +CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" +if [[ -z "$CURRENT_BRANCH" || "$CURRENT_BRANCH" == "HEAD" ]]; then + echo "Error: unable to determine current branch." >&2 + exit 1 +fi + +BASE_BRANCH="${BASE_BRANCH:-develop}" # override: BASE_BRANCH=main bash scripts/create-pr.sh +PR_TITLE="${PR_TITLE:-${CURRENT_BRANCH}}" + +changeset_summaries=() +if [[ -d .changeset ]]; then + while IFS= read -r -d '' file; do + # Extract first non-empty paragraph after the second --- + summary=$(awk ' + BEGIN { sep=0; out="" } + /^---$/ { sep++; next } + sep>=2 { + if (out=="" && $0 ~ /\S/) { out=$0; next } + if (out!="" && $0 ~ /^\s*$/) { exit } + if (out!="" ) { out=out" " $0 } + } + END { print out } + ' "$file") + if [[ -n "$summary" ]]; then + changeset_summaries+=("$summary") + fi + done < <(git diff --name-only "$BASE_BRANCH"...HEAD -- .changeset \ + | grep -E '\.md$' \ + | tr '\n' '\0') +fi + +BODY_FILE="${BODY_FILE:-/tmp/pr-body-$$.md}" +{ + echo "## Summary" + if [[ ${#changeset_summaries[@]} -gt 0 ]]; then + for s in "${changeset_summaries[@]}"; do + echo "- $s" + done + else + echo "- Describe the changes in this PR." + fi + echo + echo "## Testing" + echo "- Not run (not requested)." +} > "$BODY_FILE" + +# Create PR +if gh pr create \ + --base "$BASE_BRANCH" \ + --head "$CURRENT_BRANCH" \ + --title "$PR_TITLE" \ + --body-file "$BODY_FILE"; then + echo "PR created successfully." +else + echo "Failed to create PR." >&2 + exit 1 +fi + +rm -f "$BODY_FILE" diff --git a/scripts/prepare-release.sh b/scripts/prepare-release.sh new file mode 100755 index 0000000..da2f0c1 --- /dev/null +++ b/scripts/prepare-release.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# Script to prepare release on develop and create release branch +# Usage: ./scripts/prepare-release.sh + +set -euo pipefail + +echo "🚀 Starting release preparation..." + +# Step 1: Prepare release on develop +echo "" +echo "📦 Step 1: Preparing release on develop..." +git checkout develop +git pull origin develop + +echo "Running changeset version..." +yarn changeset version + +# Check if there are changes +if git diff --quiet && git diff --cached --quiet; then + echo "⚠️ No changes detected after 'yarn changeset version'" + echo " This might mean there are no changesets to process." + exit 1 +fi + +echo "Staging changes..." +git add . + +echo "Committing version bump..." +git commit -m "chore: version packages" + +echo "Pushing to develop..." +git push origin develop + +# Step 2: Create release branch +echo "" +echo "🌿 Step 2: Creating release branch..." + +# Extract version from package.json +VERSION=$(node -p "require('./package.json').version") +RELEASE_BRANCH="release/v${VERSION}" + +echo "Detected version: ${VERSION}" +echo "Creating branch: ${RELEASE_BRANCH}" + +git checkout -b "${RELEASE_BRANCH}" +git push origin "${RELEASE_BRANCH}" + +echo "" +echo "✅ Release preparation complete!" +echo "" +echo "📋 Next steps:" +echo "1. Go to GitHub and create PR: ${RELEASE_BRANCH} → main" +echo "2. Title: release: v${VERSION}" +echo "3. Description: Copy relevant section from CHANGELOG.md" +echo "4. Merge PR to main" +echo "" +echo "✨ After merge, workflow will automatically:" +echo " - Create tag v${VERSION}" +echo " - Create GitHub Release" diff --git a/yarn.lock b/yarn.lock index bc28ad1..8b69bd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -212,6 +212,239 @@ __metadata: languageName: node linkType: hard +"@changesets/apply-release-plan@npm:^7.1.1": + version: 7.1.1 + resolution: "@changesets/apply-release-plan@npm:7.1.1" + dependencies: + "@changesets/config": "npm:^3.1.4" + "@changesets/get-version-range-type": "npm:^0.4.0" + "@changesets/git": "npm:^3.0.4" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + detect-indent: "npm:^6.0.0" + fs-extra: "npm:^7.0.1" + lodash.startcase: "npm:^4.4.0" + outdent: "npm:^0.5.0" + prettier: "npm:^2.7.1" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.5.3" + checksum: 10c0/27de184e74e8e48b43fca1f73e7c7a2887b0cdacfe7ba9c09cdc4547dff0de1587bed5fe2d5ec0a3754fa422f6b8a528e0ac452c22ac7a6ae5211f5ac089bfb2 + languageName: node + linkType: hard + +"@changesets/assemble-release-plan@npm:^6.0.10": + version: 6.0.10 + resolution: "@changesets/assemble-release-plan@npm:6.0.10" + dependencies: + "@changesets/errors": "npm:^0.2.0" + "@changesets/get-dependents-graph": "npm:^2.1.4" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + semver: "npm:^7.5.3" + checksum: 10c0/a0ea336a5f19f8d0a97b684983bcd9c3bb8d6881b7b6abd5b482b301795ae4600924c188982f5f98dc48ac88e94a063b66ab72659041eb2623ade3e35f05d555 + languageName: node + linkType: hard + +"@changesets/changelog-git@npm:^0.2.1": + version: 0.2.1 + resolution: "@changesets/changelog-git@npm:0.2.1" + dependencies: + "@changesets/types": "npm:^6.1.0" + checksum: 10c0/6a6fb315ffb2266fcb8f32ae9a60ccdb5436e52350a2f53beacf9822d3355f9052aba5001a718e12af472b4a8fabd69b408d0b11c02ac909ba7a183d27a9f7fd + languageName: node + linkType: hard + +"@changesets/cli@npm:^2.31.0": + version: 2.31.0 + resolution: "@changesets/cli@npm:2.31.0" + dependencies: + "@changesets/apply-release-plan": "npm:^7.1.1" + "@changesets/assemble-release-plan": "npm:^6.0.10" + "@changesets/changelog-git": "npm:^0.2.1" + "@changesets/config": "npm:^3.1.4" + "@changesets/errors": "npm:^0.2.0" + "@changesets/get-dependents-graph": "npm:^2.1.4" + "@changesets/get-release-plan": "npm:^4.0.16" + "@changesets/git": "npm:^3.0.4" + "@changesets/logger": "npm:^0.1.1" + "@changesets/pre": "npm:^2.0.2" + "@changesets/read": "npm:^0.6.7" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" + "@changesets/write": "npm:^0.4.0" + "@inquirer/external-editor": "npm:^1.0.2" + "@manypkg/get-packages": "npm:^1.1.3" + ansi-colors: "npm:^4.1.3" + enquirer: "npm:^2.4.1" + fs-extra: "npm:^7.0.1" + mri: "npm:^1.2.0" + package-manager-detector: "npm:^0.2.0" + picocolors: "npm:^1.1.0" + resolve-from: "npm:^5.0.0" + semver: "npm:^7.5.3" + spawndamnit: "npm:^3.0.1" + term-size: "npm:^2.1.0" + bin: + changeset: bin.js + checksum: 10c0/3b15f4f5fc7ccaa0b82ca4f9803977ed141b6bed66f83cf8004c2f4ab8e3a00c3a813569b76e4c757d0a8ca5e778bcb6df6e4df91be6c98e0dfaa2cff87c9434 + languageName: node + linkType: hard + +"@changesets/config@npm:^3.1.4": + version: 3.1.4 + resolution: "@changesets/config@npm:3.1.4" + dependencies: + "@changesets/errors": "npm:^0.2.0" + "@changesets/get-dependents-graph": "npm:^2.1.4" + "@changesets/logger": "npm:^0.1.1" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + fs-extra: "npm:^7.0.1" + micromatch: "npm:^4.0.8" + checksum: 10c0/1c0e7975aa719e2c87dfda3f5a1eb81b9f4852cdfb5b5c9d181fa2f8f485e92370b3bdfdb6f666432207dd75a3f79fa8fffe7847d48fb11308acb5ecf327bc12 + languageName: node + linkType: hard + +"@changesets/errors@npm:^0.2.0": + version: 0.2.0 + resolution: "@changesets/errors@npm:0.2.0" + dependencies: + extendable-error: "npm:^0.1.5" + checksum: 10c0/f2757c752ab04e9733b0dfd7903f1caf873f9e603794c4d9ea2294af4f937c73d07273c24be864ad0c30b6a98424360d5b96a6eab14f97f3cf2cbfd3763b95c1 + languageName: node + linkType: hard + +"@changesets/get-dependents-graph@npm:^2.1.4": + version: 2.1.4 + resolution: "@changesets/get-dependents-graph@npm:2.1.4" + dependencies: + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + picocolors: "npm:^1.1.0" + semver: "npm:^7.5.3" + checksum: 10c0/37b12ba42f16c458d0b574bcafa0247ff2b9a218686a64c86fc75bccc9ba3982f9c27206542941cf3a0563d9b199f40a830682b45e9fd902536de91344cbd0a2 + languageName: node + linkType: hard + +"@changesets/get-release-plan@npm:^4.0.16": + version: 4.0.16 + resolution: "@changesets/get-release-plan@npm:4.0.16" + dependencies: + "@changesets/assemble-release-plan": "npm:^6.0.10" + "@changesets/config": "npm:^3.1.4" + "@changesets/pre": "npm:^2.0.2" + "@changesets/read": "npm:^0.6.7" + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + checksum: 10c0/4be4553e13fe331f6d5b2ed98fece21c8d2b38c04a0543f726a0398b7538ef8fd073d712c35ae4540ed4fc6f84f08de6335318bc09dd562b189fb6968d049e95 + languageName: node + linkType: hard + +"@changesets/get-version-range-type@npm:^0.4.0": + version: 0.4.0 + resolution: "@changesets/get-version-range-type@npm:0.4.0" + checksum: 10c0/e466208c8383489a383f37958d8b5b9aed38539f9287b47fe155a2e8855973f6960fb1724a1ee33b11580d65e1011059045ee654e8ef51e4783017d8989c9d3f + languageName: node + linkType: hard + +"@changesets/git@npm:^3.0.4": + version: 3.0.4 + resolution: "@changesets/git@npm:3.0.4" + dependencies: + "@changesets/errors": "npm:^0.2.0" + "@manypkg/get-packages": "npm:^1.1.3" + is-subdir: "npm:^1.1.1" + micromatch: "npm:^4.0.8" + spawndamnit: "npm:^3.0.1" + checksum: 10c0/4abbdc1dec6ddc50b6ad927d9eba4f23acd775fdff615415813099befb0cecd1b0f56ceea5e18a5a3cbbb919d68179366074b02a954fbf4016501e5fd125d2b5 + languageName: node + linkType: hard + +"@changesets/logger@npm:^0.1.1": + version: 0.1.1 + resolution: "@changesets/logger@npm:0.1.1" + dependencies: + picocolors: "npm:^1.1.0" + checksum: 10c0/a0933b5bd4d99e10730b22612dc1bdfd25b8804c5b48f8cada050bf5c7a89b2ae9a61687f846a5e9e5d379a95b59fef795c8d5d91e49a251f8da2be76133f83f + languageName: node + linkType: hard + +"@changesets/parse@npm:^0.4.3": + version: 0.4.3 + resolution: "@changesets/parse@npm:0.4.3" + dependencies: + "@changesets/types": "npm:^6.1.0" + js-yaml: "npm:^4.1.1" + checksum: 10c0/4d8488eaf224974ae335fec964dc1dc486abcfa9f96856cf4267c2765b02ed6af1778375ec03d38252ebab9e191aa4a11c5f37a6ad42e907e08290fed2b9690c + languageName: node + linkType: hard + +"@changesets/pre@npm:^2.0.2": + version: 2.0.2 + resolution: "@changesets/pre@npm:2.0.2" + dependencies: + "@changesets/errors": "npm:^0.2.0" + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + fs-extra: "npm:^7.0.1" + checksum: 10c0/0af9396d84c47a88d79b757e9db4e3579b6620260f92c243b8349e7fcefca3c2652583f6d215c13115bed5d5cdc30c975f307fd6acbb89d205b1ba2ae403b918 + languageName: node + linkType: hard + +"@changesets/read@npm:^0.6.7": + version: 0.6.7 + resolution: "@changesets/read@npm:0.6.7" + dependencies: + "@changesets/git": "npm:^3.0.4" + "@changesets/logger": "npm:^0.1.1" + "@changesets/parse": "npm:^0.4.3" + "@changesets/types": "npm:^6.1.0" + fs-extra: "npm:^7.0.1" + p-filter: "npm:^2.1.0" + picocolors: "npm:^1.1.0" + checksum: 10c0/eebda5f5cea8684b9cb470e74cd5e67043a62ca54452ac88bb1a998bebeee1a2e3a642dc76818155a145863551c65f10f9c4ff85378b0419179fc60049edbbc6 + languageName: node + linkType: hard + +"@changesets/should-skip-package@npm:^0.1.2": + version: 0.1.2 + resolution: "@changesets/should-skip-package@npm:0.1.2" + dependencies: + "@changesets/types": "npm:^6.1.0" + "@manypkg/get-packages": "npm:^1.1.3" + checksum: 10c0/484e339e7d6e6950e12bff4eda6e8eccb077c0fbb1f09dd95d2ae948b715226a838c71eaf50cd2d7e0e631ce3bfb1ca93ac752436e6feae5b87aece2e917b440 + languageName: node + linkType: hard + +"@changesets/types@npm:^4.0.1": + version: 4.1.0 + resolution: "@changesets/types@npm:4.1.0" + checksum: 10c0/a372ad21f6a1e0d4ce6c19573c1ca269eef1ad53c26751ad9515a24f003e7c49dcd859dbb1fedb6badaf7be956c1559e8798304039e0ec0da2d9a68583f13464 + languageName: node + linkType: hard + +"@changesets/types@npm:^6.1.0": + version: 6.1.0 + resolution: "@changesets/types@npm:6.1.0" + checksum: 10c0/b4cea3a4465d1eaf0bbd7be1e404aca5a055a61d4cc72aadcb73bbbda1670b4022736b8d3052616cbf1f451afa0637545d077697f4b923236539af9cd5abce6c + languageName: node + linkType: hard + +"@changesets/write@npm:^0.4.0": + version: 0.4.0 + resolution: "@changesets/write@npm:0.4.0" + dependencies: + "@changesets/types": "npm:^6.1.0" + fs-extra: "npm:^7.0.1" + human-id: "npm:^4.1.1" + prettier: "npm:^2.7.1" + checksum: 10c0/311f4d0e536d1b5f2d3f9053537d62b2d4cdbd51e1d2767807ac9d1e0f380367f915d2ad370e5c73902d5a54bffd282d53fff5418c8ad31df51751d652bea826 + languageName: node + linkType: hard + "@date-fns/tz@npm:1.2.0": version: 1.2.0 resolution: "@date-fns/tz@npm:1.2.0" @@ -1669,6 +1902,21 @@ __metadata: languageName: node linkType: hard +"@inquirer/external-editor@npm:^1.0.2": + version: 1.0.3 + resolution: "@inquirer/external-editor@npm:1.0.3" + dependencies: + chardet: "npm:^2.1.1" + iconv-lite: "npm:^0.7.0" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/82951cb7f3762dd78cca2ea291396841e3f4adfe26004b5badfed1cec4b6a04bb567dff94d0e41b35c61bdd7957317c64c22f58074d14b238d44e44d9e420019 + languageName: node + linkType: hard + "@isaacs/fs-minipass@npm:^4.0.0": version: 4.0.1 resolution: "@isaacs/fs-minipass@npm:4.0.1" @@ -2009,6 +2257,32 @@ __metadata: languageName: node linkType: hard +"@manypkg/find-root@npm:^1.1.0": + version: 1.1.0 + resolution: "@manypkg/find-root@npm:1.1.0" + dependencies: + "@babel/runtime": "npm:^7.5.5" + "@types/node": "npm:^12.7.1" + find-up: "npm:^4.1.0" + fs-extra: "npm:^8.1.0" + checksum: 10c0/0ee907698e6c73d6f1821ff630f3fec6dcf38260817c8752fec8991ac38b95ba431ab11c2773ddf9beb33d0e057f1122b00e8ffc9b8411b3fd24151413626fa6 + languageName: node + linkType: hard + +"@manypkg/get-packages@npm:^1.1.3": + version: 1.1.3 + resolution: "@manypkg/get-packages@npm:1.1.3" + dependencies: + "@babel/runtime": "npm:^7.5.5" + "@changesets/types": "npm:^4.0.1" + "@manypkg/find-root": "npm:^1.1.0" + fs-extra: "npm:^8.1.0" + globby: "npm:^11.0.0" + read-yaml-file: "npm:^1.1.0" + checksum: 10c0/f05907d1174ae28861eaa06d0efdc144f773d9a4b8b65e1e7cdc01eb93361d335351b4a336e05c6aac02661be39e8809a3f7ad28bc67b6b338071434ab442130 + languageName: node + linkType: hard + "@monaco-editor/loader@npm:^1.5.0": version: 1.7.0 resolution: "@monaco-editor/loader@npm:1.7.0" @@ -2955,6 +3229,13 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:^12.7.1": + version: 12.20.55 + resolution: "@types/node@npm:12.20.55" + checksum: 10c0/3b190bb0410047d489c49bbaab592d2e6630de6a50f00ba3d7d513d59401d279972a8f5a598b5bb8ddc1702f8a2f4ec57a65d93852f9c329639738e7053637d1 + languageName: node + linkType: hard + "@types/parse-json@npm:^4.0.0": version: 4.0.2 resolution: "@types/parse-json@npm:4.0.2" @@ -3000,6 +3281,13 @@ __metadata: languageName: node linkType: hard +"@types/semver@npm:^7": + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 + languageName: node + linkType: hard + "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.3 resolution: "@types/unist@npm:3.0.3" @@ -3372,6 +3660,20 @@ __metadata: languageName: node linkType: hard +"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + "ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -3391,6 +3693,15 @@ __metadata: languageName: node linkType: hard +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" @@ -3431,6 +3742,13 @@ __metadata: languageName: node linkType: hard +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" @@ -3590,6 +3908,15 @@ __metadata: languageName: node linkType: hard +"better-path-resolve@npm:1.0.0": + version: 1.0.0 + resolution: "better-path-resolve@npm:1.0.0" + dependencies: + is-windows: "npm:^1.0.0" + checksum: 10c0/7335130729d59a14b8e4753fea180ca84e287cccc20cb5f2438a95667abc5810327c414eee7b3c79ed1b5a348a40284ea872958f50caba69432c40405eb0acce + languageName: node + linkType: hard + "binary-extensions@npm:^2.0.0": version: 2.3.0 resolution: "binary-extensions@npm:2.3.0" @@ -3770,6 +4097,13 @@ __metadata: languageName: node linkType: hard +"chardet@npm:^2.1.1": + version: 2.1.1 + resolution: "chardet@npm:2.1.1" + checksum: 10c0/d8391dd412338442b3de0d3a488aa9327f8bcf74b62b8723d6bd0b85c4084d50b731320e0a7c710edb1d44de75969995d2784b80e4c13b004a6c7a0db4c6e793 + languageName: node + linkType: hard + "charenc@npm:0.0.2": version: 0.0.2 resolution: "charenc@npm:0.0.2" @@ -3937,7 +4271,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.6": +"cross-spawn@npm:^7.0.5, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -4117,6 +4451,13 @@ __metadata: languageName: node linkType: hard +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 + languageName: node + linkType: hard + "detect-libc@npm:^2.0.3, detect-libc@npm:^2.0.4, detect-libc@npm:^2.1.2": version: 2.1.2 resolution: "detect-libc@npm:2.1.2" @@ -4133,6 +4474,15 @@ __metadata: languageName: node linkType: hard +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -4312,6 +4662,16 @@ __metadata: languageName: node linkType: hard +"enquirer@npm:^2.4.1": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + languageName: node + linkType: hard + "entities@npm:^7.0.1": version: 7.0.1 resolution: "entities@npm:7.0.1" @@ -5021,6 +5381,16 @@ __metadata: languageName: node linkType: hard +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + "esquery@npm:^1.5.0": version: 1.7.0 resolution: "esquery@npm:1.7.0" @@ -5077,6 +5447,13 @@ __metadata: languageName: node linkType: hard +"extendable-error@npm:^0.1.5": + version: 0.1.7 + resolution: "extendable-error@npm:0.1.7" + checksum: 10c0/c46648b7682448428f81b157cbfe480170fd96359c55db477a839ddeaa34905a18cba0b989bafe5e83f93c2491a3fcc7cc536063ea326ba9d72e9c6e2fe736a7 + languageName: node + linkType: hard + "fast-copy@npm:^3.0.2": version: 3.0.2 resolution: "fast-copy@npm:3.0.2" @@ -5104,6 +5481,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.9": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -5190,6 +5580,16 @@ __metadata: languageName: node linkType: hard +"find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + "find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -5235,6 +5635,28 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^7.0.1": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: "npm:^4.1.2" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/1943bb2150007e3739921b8d13d4109abdc3cc481e53b97b7ea7f77eda1c3c642e27ae49eac3af074e3496ea02fde30f411ef410c760c70a38b92e656e5da784 + languageName: node + linkType: hard + +"fs-extra@npm:^8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^4.0.0" + universalify: "npm:^0.1.0" + checksum: 10c0/259f7b814d9e50d686899550c4f9ded85c46c643f7fe19be69504888e007fcbc08f306fae8ec495b8b998635e997c9e3e175ff2eeed230524ef1c1684cc96423 + languageName: node + linkType: hard + "fsevents@npm:~2.3.2, fsevents@npm:~2.3.3": version: 2.3.3 resolution: "fsevents@npm:2.3.3" @@ -5395,6 +5817,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^11.0.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" @@ -5402,7 +5838,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 @@ -5556,6 +5992,22 @@ __metadata: languageName: node linkType: hard +"human-id@npm:^3.0.0": + version: 3.0.1 + resolution: "human-id@npm:3.0.1" + checksum: 10c0/8d8f10fde5fc0134defe06ef1b328794a4acc8aebfdadab0c544b5f9c0ac7fc631368d71bdf3ab1ce8aa1f693ebacd33353cbfaaf8e18b23324cfdcded2a875c + languageName: node + linkType: hard + +"iconv-lite@npm:^0.7.0": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/3c228920f3bd307f56bf8363706a776f4a060eb042f131cd23855ceca962951b264d0997ab38a1ad340e1c5df8499ed26e1f4f0db6b2a2ad9befaff22f14b722 + languageName: node + linkType: hard + "icu-minify@npm:^4.13.0": version: 4.13.0 resolution: "icu-minify@npm:4.13.0" @@ -5904,6 +6356,15 @@ __metadata: languageName: node linkType: hard +"is-subdir@npm:^1.1.1": + version: 1.2.0 + resolution: "is-subdir@npm:1.2.0" + dependencies: + better-path-resolve: "npm:1.0.0" + checksum: 10c0/03a03ee2ee6578ce589b1cfaf00e65c86b20fd1b82c1660625557c535439a7477cda77e20c62cda6d4c99e7fd908b4619355ae2d989f4a524a35350a44353032 + languageName: node + linkType: hard + "is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": version: 1.1.1 resolution: "is-symbol@npm:1.1.1" @@ -5950,6 +6411,13 @@ __metadata: languageName: node linkType: hard +"is-windows@npm:^1.0.0": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -6015,6 +6483,18 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^3.6.1": + version: 3.14.2 + resolution: "js-yaml@npm:3.14.2" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/3261f25912f5dd76605e5993d0a126c2b6c346311885d3c483706cd722efe34f697ea0331f654ce27c00a42b426e524518ec89d65ed02ea47df8ad26dcc8ce69 + languageName: node + linkType: hard + "js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": version: 4.2.0 resolution: "js-yaml@npm:4.2.0" @@ -6109,6 +6589,18 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: "npm:^4.1.6" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/7dc94b628d57a66b71fb1b79510d460d662eb975b5f876d723f81549c2e9cd316d58a2ddf742b2b93a4fa6b17b2accaf1a738a0e2ea114bdfb13a32e5377e480 + languageName: node + linkType: hard + "jsox@npm:1.2.121": version: 1.2.121 resolution: "jsox@npm:1.2.121" @@ -6306,6 +6798,15 @@ __metadata: languageName: node linkType: hard +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + "locate-path@npm:^6.0.0": version: 6.0.0 resolution: "locate-path@npm:6.0.0" @@ -6322,6 +6823,13 @@ __metadata: languageName: node linkType: hard +"lodash.startcase@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.startcase@npm:4.4.0" + checksum: 10c0/bd82aa87a45de8080e1c5ee61128c7aee77bf7f1d86f4ff94f4a6d7438fc9e15e5f03374b947be577a93804c8ad6241f0251beaf1452bf716064eeb657b3a9f0 + languageName: node + linkType: hard + "lodash@npm:^4.17.21": version: 4.18.1 resolution: "lodash@npm:4.18.1" @@ -6475,7 +6983,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0": +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb @@ -6769,7 +7277,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4": +"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -6820,6 +7328,13 @@ __metadata: languageName: node linkType: hard +"mri@npm:^1.2.0": + version: 1.2.0 + resolution: "mri@npm:1.2.0" + checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 + languageName: node + linkType: hard + "ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" @@ -7133,6 +7648,13 @@ __metadata: languageName: node linkType: hard +"outdent@npm:^0.5.0": + version: 0.5.0 + resolution: "outdent@npm:0.5.0" + checksum: 10c0/e216a4498889ba1babae06af84cdc4091f7cac86da49d22d0163b3be202a5f52efcd2bcd3dfca60a361eb3a27b4299f185c5655061b6b402552d7fcd1d040cff + languageName: node + linkType: hard + "own-keys@npm:^1.0.1": version: 1.0.1 resolution: "own-keys@npm:1.0.1" @@ -7144,6 +7666,24 @@ __metadata: languageName: node linkType: hard +"p-filter@npm:^2.1.0": + version: 2.1.0 + resolution: "p-filter@npm:2.1.0" + dependencies: + p-map: "npm:^2.0.0" + checksum: 10c0/5ac34b74b3b691c04212d5dd2319ed484f591c557a850a3ffc93a08cb38c4f5540be059c6b10a185773c479ca583a91ea00c7d6c9958c815e6b74d052f356645 + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + "p-limit@npm:^3.0.2": version: 3.1.0 resolution: "p-limit@npm:3.1.0" @@ -7153,6 +7693,15 @@ __metadata: languageName: node linkType: hard +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + "p-locate@npm:^5.0.0": version: 5.0.0 resolution: "p-locate@npm:5.0.0" @@ -7162,6 +7711,29 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^2.0.0": + version: 2.1.0 + resolution: "p-map@npm:2.1.0" + checksum: 10c0/735dae87badd4737a2dd582b6d8f93e49a1b79eabbc9815a4d63a528d5e3523e978e127a21d784cccb637010e32103a40d2aaa3ab23ae60250b1a820ca752043 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-manager-detector@npm:^0.2.0": + version: 0.2.11 + resolution: "package-manager-detector@npm:0.2.11" + dependencies: + quansync: "npm:^0.2.7" + checksum: 10c0/247991de461b9e731f3463b7dae9ce187e53095b7b94d7d96eec039abf418b61ccf74464bec1d0c11d97311f33472e77baccd4c5898f77358da4b5b33395e0b1 + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -7357,7 +7929,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -7378,6 +7950,13 @@ __metadata: languageName: node linkType: hard +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + "pino-abstract-transport@npm:^2.0.0": version: 2.0.0 resolution: "pino-abstract-transport@npm:2.0.0" @@ -7518,6 +8097,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.7.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + languageName: node + linkType: hard + "prettier@npm:^3.2.5, prettier@npm:^3.4.2": version: 3.8.4 resolution: "prettier@npm:3.8.4" @@ -7593,6 +8181,13 @@ __metadata: languageName: node linkType: hard +"quansync@npm:^0.2.7": + version: 0.2.11 + resolution: "quansync@npm:0.2.11" + checksum: 10c0/cb9a1f8ebce074069f2f6a78578873ffedd9de9f6aa212039b44c0870955c04a71c3b1311b5d97f8ac2f2ec476de202d0a5c01160cb12bc0a11b7ef36d22ef56 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -7726,6 +8321,18 @@ __metadata: languageName: node linkType: hard +"read-yaml-file@npm:^1.1.0": + version: 1.1.0 + resolution: "read-yaml-file@npm:1.1.0" + dependencies: + graceful-fs: "npm:^4.1.5" + js-yaml: "npm:^3.6.1" + pify: "npm:^4.0.1" + strip-bom: "npm:^3.0.0" + checksum: 10c0/85a9ba08bb93f3c91089bab4f1603995ec7156ee595f8ce40ae9f49d841cbb586511508bd47b7cf78c97f678c679b2c6e2c0092e63f124214af41b6f8a25ca31 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -7786,6 +8393,13 @@ __metadata: languageName: node linkType: hard +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" @@ -7910,6 +8524,13 @@ __metadata: languageName: node linkType: hard +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + "sanitize-filename@npm:1.6.3": version: 1.6.3 resolution: "sanitize-filename@npm:1.6.3" @@ -7953,16 +8574,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d - languageName: node - linkType: hard - -"semver@npm:^7.3.5, semver@npm:^7.7.1, semver@npm:^7.7.2, semver@npm:^7.7.3": +"semver@npm:^7.6.0": version: 7.8.4 resolution: "semver@npm:7.8.4" bin: @@ -8231,6 +8843,13 @@ __metadata: languageName: node linkType: hard +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + "simple-swizzle@npm:^0.2.2": version: 0.2.4 resolution: "simple-swizzle@npm:0.2.4" @@ -8254,6 +8873,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + "sonic-boom@npm:^4.0.1": version: 4.2.1 resolution: "sonic-boom@npm:4.2.1" @@ -8304,6 +8930,16 @@ __metadata: languageName: node linkType: hard +"spawndamnit@npm:^3.0.1": + version: 3.0.1 + resolution: "spawndamnit@npm:3.0.1" + dependencies: + cross-spawn: "npm:^7.0.5" + signal-exit: "npm:^4.0.1" + checksum: 10c0/a9821a59bc78a665bd44718dea8f4f4010bb1a374972b0a6a1633b9186cda6d6fd93f22d1e49d9944d6bb175ba23ce29036a4bd624884fb157d981842c3682f3 + languageName: node + linkType: hard + "split2@npm:^4.0.0, split2@npm:^4.1.0": version: 4.2.0 resolution: "split2@npm:4.2.0" @@ -8311,6 +8947,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + "stable-hash@npm:^0.0.5": version: 0.0.5 resolution: "stable-hash@npm:0.0.5" @@ -8433,6 +9076,15 @@ __metadata: languageName: node linkType: hard +"strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" @@ -8536,6 +9188,13 @@ __metadata: languageName: node linkType: hard +"term-size@npm:^2.1.0": + version: 2.2.1 + resolution: "term-size@npm:2.2.1" + checksum: 10c0/89f6bba1d05d425156c0910982f9344d9e4aebf12d64bfa1f460d93c24baa7bc4c4a21d355fbd7153c316433df0538f64d0ae6e336cc4a69fdda4f85d62bc79d + languageName: node + linkType: hard + "thread-stream@npm:^3.0.0": version: 3.2.0 resolution: "thread-stream@npm:3.2.0" @@ -8604,6 +9263,7 @@ __metadata: version: 0.0.0-use.local resolution: "training-app@workspace:." dependencies: + "@changesets/cli": "npm:^2.31.0" "@payloadcms/db-postgres": "npm:3.85.1" "@payloadcms/next": "npm:3.85.1" "@payloadcms/richtext-lexical": "npm:3.85.1" @@ -8613,6 +9273,7 @@ __metadata: "@types/node": "npm:24.12.3" "@types/react": "npm:19.2.14" "@types/react-dom": "npm:19.2.3" + "@types/semver": "npm:^7" cross-env: "npm:10.1.0" dotenv: "npm:16.4.7" eslint: "npm:^9.16.0" @@ -8627,6 +9288,7 @@ __metadata: react: "npm:^19.2.7" react-dom: "npm:^19.2.7" react-hook-form: "npm:^7.79.0" + semver: "npm:^7.6.0" sharp: "npm:0.34.2" tailwindcss: "npm:^4.3.0" tsx: "npm:^4.22.4" @@ -8883,6 +9545,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 10c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 + languageName: node + linkType: hard + "unrs-resolver@npm:^1.6.2": version: 1.12.2 resolution: "unrs-resolver@npm:1.12.2"