From 70ced335ecd6d84db02dfd58e5d60fc1ae64a98d Mon Sep 17 00:00:00 2001 From: Ulad Kasach Date: Sun, 4 Jan 2026 00:05:07 -0600 Subject: [PATCH] fix(practs): bump to latest best --- .agent/repo=.this/role=any/readme.md | 1 + .../repo=.this/role=any/skills/use.apikeys.sh | 59 + .agent/repo=bhuild/role=behaver/briefs/briefs | 1 + .agent/repo=bhuild/role=behaver/inits | 1 + .agent/repo=bhuild/role=behaver/readme.md | 3 + .agent/repo=bhuild/role=behaver/skills/skills | 1 + .agent/repo=ehmpathy/role=mechanic/briefs | 1 + .../role=mechanic/briefs/.briefs | 1 - .agent/repo=ehmpathy/role=mechanic/inits | 1 + .agent/repo=ehmpathy/role=mechanic/skills | 1 + .../role=mechanic/skills/.skills | 1 - .depcheckrc.yml | 7 + .github/actions/please-release/action.yml | 426 +++++ .github/workflows/.declastruct.yml | 36 +- .github/workflows/.publish-npm.yml | 66 +- .github/workflows/.test.yml | 63 +- .github/workflows/provision.yml | 6 +- .github/workflows/publish.yml | 5 +- .github/workflows/release.yml | 48 +- .github/workflows/test.yml | 5 +- .gitignore | 1 + .husky/check.yalc.sh | 6 +- .husky/commit-msg | 4 + .husky/post-checkout | 4 + .husky/post-merge | 4 + .husky/post-rewrite | 4 + .husky/pre-commit | 4 + .nvmrc | 2 +- biome.json => biome.jsonc | 19 +- changelog.md | 536 ------ commitlint.config.js | 19 +- jest.acceptance.config.ts | 4 + jest.acceptance.env.ts | 35 + jest.integration.config.ts | 4 + jest.integration.env.ts | 35 + jest.unit.config.ts | 4 + package.json | 44 +- pnpm-lock.yaml | 1671 +++-------------- .../resources.ts} | 7 +- rhachet.use.ts | 7 +- ...sertDomainObjectIsSafeToManipulate.test.ts | 3 +- .../assertDomainObjectIsSafeToManipulate.ts | 4 +- src/{domain => domain.objects}/constants.ts | 0 src/instantiation/DomainObject.ts | 8 +- src/instantiation/Ref.test.ts | 7 +- src/instantiation/Ref.ts | 7 +- src/instantiation/RefByPrimary.test.ts | 3 +- src/instantiation/RefByPrimary.ts | 8 +- src/instantiation/RefByUnique.test.ts | 3 +- src/instantiation/RefByUnique.ts | 7 +- .../hydrate/hydrateNestedDomainObjects.ts | 4 +- .../inherit/isOfDomainEntity.test.ts | 5 +- src/instantiation/inherit/isOfDomainEntity.ts | 5 +- .../inherit/isOfDomainEvent.test.ts | 5 +- src/instantiation/inherit/isOfDomainEvent.ts | 5 +- .../inherit/isOfDomainLiteral.test.ts | 5 +- .../inherit/isOfDomainLiteral.ts | 5 +- .../inherit/isOfDomainObject.test.ts | 9 +- src/instantiation/inherit/isOfDomainObject.ts | 5 +- src/manipulation/HasReadonly.type.test.ts | 5 +- src/manipulation/clone/clone.test.ts | 3 +- src/manipulation/clone/clone.ts | 2 +- src/manipulation/getMetadataKeys.test.ts | 5 +- src/manipulation/getMetadataKeys.ts | 11 +- src/manipulation/getPrimaryIdentifier.test.ts | 5 +- src/manipulation/getPrimaryIdentifier.ts | 17 +- src/manipulation/getReadonlyKeys.test.ts | 9 +- src/manipulation/getReadonlyKeys.ts | 9 +- src/manipulation/getUniqueIdentifier.test.ts | 7 +- src/manipulation/getUniqueIdentifier.ts | 19 +- .../getUniqueIdentifierSlug.test.ts | 5 +- src/manipulation/getUniqueIdentifierSlug.ts | 5 +- .../getUpdatableProperties.test.ts | 5 +- src/manipulation/getUpdatableProperties.ts | 9 +- src/manipulation/hasReadonly.test.ts | 5 +- src/manipulation/hasReadonly.ts | 9 +- src/manipulation/immute/withImmute.ts | 2 +- src/manipulation/omitMetadata.test.ts | 5 +- src/manipulation/omitMetadata.ts | 7 +- src/manipulation/omitReadonly.test.ts | 7 +- src/manipulation/omitReadonly.ts | 7 +- src/manipulation/relate/dedupe.test.ts | 5 +- src/manipulation/relate/dedupe.ts | 14 +- src/manipulation/serde/deserialize.test.ts | 6 +- src/manipulation/serde/deserialize.ts | 4 +- src/manipulation/serde/serialize.test.ts | 8 +- src/manipulation/serde/serialize.ts | 10 +- src/reference/Ref.type.test.ts | 3 +- src/reference/Ref.type.ts | 5 +- src/reference/RefKeysUnique.test.ts | 3 +- src/reference/Refable.ts | 4 +- src/reference/isRefByPrimary.test.ts | 7 +- src/reference/isRefByPrimary.ts | 3 +- src/reference/isRefByUnique.test.ts | 7 +- src/reference/isRefByUnique.ts | 3 +- src/reference/refByPrimary.test.ts | 5 +- src/reference/refByPrimary.ts | 3 +- src/reference/refByUnique.test.ts | 5 +- src/reference/refByUnique.ts | 3 +- tsconfig.json | 11 +- 100 files changed, 1322 insertions(+), 2190 deletions(-) create mode 100644 .agent/repo=.this/role=any/readme.md create mode 100644 .agent/repo=.this/role=any/skills/use.apikeys.sh create mode 120000 .agent/repo=bhuild/role=behaver/briefs/briefs create mode 120000 .agent/repo=bhuild/role=behaver/inits create mode 100644 .agent/repo=bhuild/role=behaver/readme.md create mode 120000 .agent/repo=bhuild/role=behaver/skills/skills create mode 120000 .agent/repo=ehmpathy/role=mechanic/briefs delete mode 120000 .agent/repo=ehmpathy/role=mechanic/briefs/.briefs create mode 120000 .agent/repo=ehmpathy/role=mechanic/inits create mode 120000 .agent/repo=ehmpathy/role=mechanic/skills delete mode 120000 .agent/repo=ehmpathy/role=mechanic/skills/.skills create mode 100644 .github/actions/please-release/action.yml rename biome.json => biome.jsonc (76%) delete mode 100644 changelog.md rename provision/{github/declastruct.resources.ts => github.repo/resources.ts} (95%) rename src/{domain => domain.objects}/constants.ts (100%) diff --git a/.agent/repo=.this/role=any/readme.md b/.agent/repo=.this/role=any/readme.md new file mode 100644 index 0000000..84feb31 --- /dev/null +++ b/.agent/repo=.this/role=any/readme.md @@ -0,0 +1 @@ +this role applies to any agent that works within this repo diff --git a/.agent/repo=.this/role=any/skills/use.apikeys.sh b/.agent/repo=.this/role=any/skills/use.apikeys.sh new file mode 100644 index 0000000..8c6f127 --- /dev/null +++ b/.agent/repo=.this/role=any/skills/use.apikeys.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +###################################################################### +# .what = export api keys for integration tests +# .why = enables running integration tests that require api keys +# +# usage: +# source .agent/repo=.this/role=any/skills/use.apikeys.sh +# +# note: +# - must be called with `source` to export vars to current shell +# - loads from ~/.config/rhachet/apikeys.env if available +# - falls back to .env.local (gitignored) in repo root +###################################################################### + +# fail if not sourced +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + echo "error: this script must be sourced, not executed" + echo "usage: source ${BASH_SOURCE[0]}" + exit 1 +fi + +# try loading from user config first +if [[ -f ~/.config/rhachet/apikeys.env ]]; then + source ~/.config/rhachet/apikeys.env + echo "✓ loaded api keys from ~/.config/rhachet/apikeys.env" + +# fallback to local gitignored file +elif [[ -f .env.local ]]; then + source .env.local + echo "✓ loaded api keys from .env.local" + +else + echo "⚠ no api keys file found" + echo "" + echo "create one of:" + echo " ~/.config/rhachet/apikeys.env" + echo " .env.local (in repo root)" + echo "" + echo "with contents like:" + echo " export OPENAI_API_KEY=sk-..." + echo " export ANTHROPIC_API_KEY=sk-..." + return 1 +fi + +# read required keys from json config if present +APIKEYS_CONFIG=".agent/repo=.this/role=any/skills/use.apikeys.json" +if [[ -f "$APIKEYS_CONFIG" ]]; then + # extract required keys using jq + REQUIRED_KEYS=$(jq -r '.apikeys.required[]?' "$APIKEYS_CONFIG" 2>/dev/null) + + # verify each required key is set + for KEY in $REQUIRED_KEYS; do + if [[ -z "${!KEY}" ]]; then + echo "⚠ $KEY not set (required by $APIKEYS_CONFIG)" + return 1 + fi + echo "✓ $KEY set" + done +fi diff --git a/.agent/repo=bhuild/role=behaver/briefs/briefs b/.agent/repo=bhuild/role=behaver/briefs/briefs new file mode 120000 index 0000000..916432b --- /dev/null +++ b/.agent/repo=bhuild/role=behaver/briefs/briefs @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/rhachet-roles-bhuild@0.5.0_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-bhuild/dist/domain.roles/behaver/briefs \ No newline at end of file diff --git a/.agent/repo=bhuild/role=behaver/inits b/.agent/repo=bhuild/role=behaver/inits new file mode 120000 index 0000000..cfc88b1 --- /dev/null +++ b/.agent/repo=bhuild/role=behaver/inits @@ -0,0 +1 @@ +../../../node_modules/.pnpm/rhachet-roles-bhuild@0.5.0_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-bhuild/dist/domain.roles/behaver/inits \ No newline at end of file diff --git a/.agent/repo=bhuild/role=behaver/readme.md b/.agent/repo=bhuild/role=behaver/readme.md new file mode 100644 index 0000000..749667b --- /dev/null +++ b/.agent/repo=bhuild/role=behaver/readme.md @@ -0,0 +1,3 @@ +## 📐 Behaver + +Used to declare clear and testable behaviors that can be reliably built and verified. \ No newline at end of file diff --git a/.agent/repo=bhuild/role=behaver/skills/skills b/.agent/repo=bhuild/role=behaver/skills/skills new file mode 120000 index 0000000..65ef144 --- /dev/null +++ b/.agent/repo=bhuild/role=behaver/skills/skills @@ -0,0 +1 @@ +../../../../node_modules/.pnpm/rhachet-roles-bhuild@0.5.0_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-bhuild/dist/domain.roles/behaver/skills \ No newline at end of file diff --git a/.agent/repo=ehmpathy/role=mechanic/briefs b/.agent/repo=ehmpathy/role=mechanic/briefs new file mode 120000 index 0000000..dd28612 --- /dev/null +++ b/.agent/repo=ehmpathy/role=mechanic/briefs @@ -0,0 +1 @@ +../../../node_modules/.pnpm/rhachet-roles-ehmpathy@1.15.25_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-ehmpathy/dist/domain.roles/mechanic/briefs \ No newline at end of file diff --git a/.agent/repo=ehmpathy/role=mechanic/briefs/.briefs b/.agent/repo=ehmpathy/role=mechanic/briefs/.briefs deleted file mode 120000 index 23d3eba..0000000 --- a/.agent/repo=ehmpathy/role=mechanic/briefs/.briefs +++ /dev/null @@ -1 +0,0 @@ -../../../../node_modules/.pnpm/rhachet-roles-ehmpathy@1.13.3_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-ehmpathy/dist/logic/roles/mechanic/.briefs \ No newline at end of file diff --git a/.agent/repo=ehmpathy/role=mechanic/inits b/.agent/repo=ehmpathy/role=mechanic/inits new file mode 120000 index 0000000..84e050d --- /dev/null +++ b/.agent/repo=ehmpathy/role=mechanic/inits @@ -0,0 +1 @@ +../../../node_modules/.pnpm/rhachet-roles-ehmpathy@1.15.25_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-ehmpathy/dist/domain.roles/mechanic/inits \ No newline at end of file diff --git a/.agent/repo=ehmpathy/role=mechanic/skills b/.agent/repo=ehmpathy/role=mechanic/skills new file mode 120000 index 0000000..9049b06 --- /dev/null +++ b/.agent/repo=ehmpathy/role=mechanic/skills @@ -0,0 +1 @@ +../../../node_modules/.pnpm/rhachet-roles-ehmpathy@1.15.25_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-ehmpathy/dist/domain.roles/mechanic/skills \ No newline at end of file diff --git a/.agent/repo=ehmpathy/role=mechanic/skills/.skills b/.agent/repo=ehmpathy/role=mechanic/skills/.skills deleted file mode 120000 index 70abe91..0000000 --- a/.agent/repo=ehmpathy/role=mechanic/skills/.skills +++ /dev/null @@ -1 +0,0 @@ -../../../../node_modules/.pnpm/rhachet-roles-ehmpathy@1.13.3_@types+node@22.15.21_zod@3.25.76/node_modules/rhachet-roles-ehmpathy/dist/logic/roles/mechanic/.skills \ No newline at end of file diff --git a/.depcheckrc.yml b/.depcheckrc.yml index 7f02b00..f5a8c67 100644 --- a/.depcheckrc.yml +++ b/.depcheckrc.yml @@ -14,3 +14,10 @@ ignores: - esbuild-register - "@swc/core" - "@swc/jest" + - "@src/*" + - "@src/.*" + - rhachet-roles-bhrain + - rhachet-roles-bhuild + - rhachet-roles-ehmpathy + - tsc-alias + - yalc diff --git a/.github/actions/please-release/action.yml b/.github/actions/please-release/action.yml new file mode 100644 index 0000000..06982f1 --- /dev/null +++ b/.github/actions/please-release/action.yml @@ -0,0 +1,426 @@ +name: please-release +description: upsert release pr or cutta release tag + +inputs: + github-token: + description: token for gh cli calls + required: true + commit-message: + description: the head commit message + required: true + commit-sha: + description: the head commit sha + required: true + repository: + description: the repository (owner/repo) + required: true + +outputs: + action: + description: what action was taken (noop, created, updated, released) + value: ${{ steps.result.outputs.action }} + version: + description: the computed or released version + value: ${{ steps.result.outputs.version }} + pr-number: + description: the release pr number + value: ${{ steps.result.outputs.pr-number }} + +runs: + using: "composite" + steps: + # step 1: cutta tag, if release commit + - name: cutta tag, if release commit + id: cutta + shell: bash + env: + GITHUB_TOKEN: ${{ inputs.github-token }} + run: | + set -euo pipefail + COMMIT_MSG="${{ inputs.commit-message }}" + REPO_URL="https://github.com/${{ inputs.repository }}" + + # check if this is a release commit + if [[ "$COMMIT_MSG" != chore\(release\):* ]]; then + echo "🔭 cutta tag" + echo " └── skipped (not a release commit)" + echo "did-cutta=false" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "🔭 cutta tag" + + # extract version from commit message + VERSION=$(echo "$COMMIT_MSG" | sed -n 's/^chore(release): \(v[0-9.]*\).*/\1/p') + + # failfast if version not found + if [ -z "$VERSION" ]; then + echo " └── ⛈️ could not extract version from: $COMMIT_MSG" + echo "::error::could not extract version from commit message: $COMMIT_MSG" + exit 1 + fi + + # find the release pr that was merged (by head branch, not search - avoids indexing delay) + PR_NUMBER=$(gh pr list --state merged --head "release/${VERSION}" --json number --jq '.[0].number') + + # failfast if release pr not found + if [ -z "$PR_NUMBER" ]; then + echo " └── ⛈️ could not find merged release pr for: $VERSION" + echo "::error::could not find merged release pr for version: $VERSION" + exit 1 + fi + + echo " ├── version: $VERSION" + echo " ├── release-pr: #$PR_NUMBER" + + # create and push tag + git tag "$VERSION" + git push origin "$VERSION" + echo " ├── ✨ tag pushed" + + # create github release + RELEASE_URL=$(gh release create "$VERSION" \ + --title "$VERSION" \ + --generate-notes \ + --latest) + echo " └── ✨ release created: $RELEASE_URL" + + # comment on the release pr + gh pr comment "$PR_NUMBER" --body "🐢 released at ${RELEASE_URL}" + + # extract pr links from the release pr body and comment on each + PR_BODY=$(gh pr view "$PR_NUMBER" --json body --jq '.body') + REFERENCED_PRS=$(echo "$PR_BODY" | grep -oE '/pull/[0-9]+' | grep -oE '[0-9]+' | sort -u || true) + + for REF_PR in $REFERENCED_PRS; do + gh pr comment "$REF_PR" --body "🐢 released at ${RELEASE_URL}" 2>/dev/null || true + done + + echo "🌊 cutta tag complete" + echo "did-cutta=true" >> $GITHUB_OUTPUT + echo "version=$VERSION" >> $GITHUB_OUTPUT + echo "action=released" >> $GITHUB_OUTPUT + + # step 2: crunch future semver, if other commit + # + # version resolution strategy: + # 1. if latest-pkg-version > latest-tag-version: user has manually bumped, use package.json version as-is + # 2. otherwise: auto-compute next version from max(latest-pkg-version, latest-tag-version) based on conventional commits + # + # this lets users manually control versions when needed (e.g., major releases, pre-releases) + # while still providing automatic semver bumping for typical workflows + # + - name: crunch future semver, if other commit + id: semver + if: ${{ steps.cutta.outputs.did-cutta == 'false' }} + shell: bash + run: | + set -euo pipefail + echo "🔭 crunch semver" + + # helper: compare semver (returns 0 if $1 > $2, 1 otherwise) + version_gt() { + [ "$(printf '%s\n%s' "$1" "$2" | sort -V | tail -n1)" = "$1" ] && [ "$1" != "$2" ] + } + + # get versions from all sources + LATEST_PACKAGE_VERSION=$(jq -r '.version' package.json) + LATEST_GITTAG_VERSION=$(git describe --tags --abbrev=0 2>/dev/null | sed 's/^v//' || echo "0.0.0") + + # find last release commit (shared with changelog step via output) + LAST_RELEASE_SHA=$(git log --pretty=format:"%H" --grep="^chore(release):" -n 1 || true) + LAST_RELEASE_MSG=$(git log --pretty=format:"%s" --grep="^chore(release):" -n 1 2>/dev/null || true) + LATEST_RELEASE_VERSION=$(echo "$LAST_RELEASE_MSG" | sed -n 's/^chore(release): v\([0-9.]*\).*/\1/p') + + echo "last-release-sha=$LAST_RELEASE_SHA" >> $GITHUB_OUTPUT + echo " ├── package-version: $LATEST_PACKAGE_VERSION" + echo " ├── gittag-version: $LATEST_GITTAG_VERSION" + echo " ├── release-version: ${LATEST_RELEASE_VERSION:-"(none)"}" + echo " ├── release-sha: ${LAST_RELEASE_SHA:0:7}${LAST_RELEASE_SHA:+...}" + + # case 1: package.json > release-version means user manually bumped AFTER last release + # (if package == release-version, that was set by automation, not user) + if [ -n "$LATEST_RELEASE_VERSION" ] && version_gt "$LATEST_PACKAGE_VERSION" "$LATEST_RELEASE_VERSION"; then + echo " ├── ✨ pkg > release: user manually bumped" + echo " └── 🌊 next-version: v${LATEST_PACKAGE_VERSION}" + echo "next-version=v${LATEST_PACKAGE_VERSION}" >> $GITHUB_OUTPUT + echo "current-tag=v${LATEST_GITTAG_VERSION}" >> $GITHUB_OUTPUT + exit 0 + fi + + # case 2: auto-compute next version from the greater of tag vs package.json + # (handles edge cases like tag existing but package.json being behind) + if version_gt "$LATEST_GITTAG_VERSION" "$LATEST_PACKAGE_VERSION"; then + BASE_VERSION="$LATEST_GITTAG_VERSION" + echo " ├── base: gittag ($LATEST_GITTAG_VERSION)" + else + BASE_VERSION="$LATEST_PACKAGE_VERSION" + echo " ├── base: package ($LATEST_PACKAGE_VERSION)" + fi + + # handle first release + if [ "$BASE_VERSION" = "0.0.0" ]; then + echo " ├── ✨ first release" + echo " └── 🌊 next-version: v0.1.0" + echo "next-version=v0.1.0" >> $GITHUB_OUTPUT + echo "current-tag=v0.0.0" >> $GITHUB_OUTPUT + exit 0 + fi + + # get commits since last release (reuse LAST_RELEASE_SHA computed above) + if [ -n "$LAST_RELEASE_SHA" ]; then + COMMITS=$(git log ${LAST_RELEASE_SHA}..HEAD --pretty=format:"%s") + else + COMMITS=$(git log --pretty=format:"%s") + fi + COMMIT_COUNT=$(echo "$COMMITS" | grep -c . || echo "0") + echo " ├── commits: $COMMIT_COUNT" + + # determine bump type + BUMP="patch" # default + + if echo "$COMMITS" | grep -qE "^break(\(.+\))?:"; then + BUMP="major" + elif echo "$COMMITS" | grep -qE "^feat(\(.+\))?:"; then + BUMP="minor" + fi + echo " ├── bump: $BUMP" + + # compute next version + IFS='.' read -r MAJOR MINOR PATCH <<< "$BASE_VERSION" + + case $BUMP in + major) NEXT_VERSION="v$((MAJOR + 1)).0.0" ;; + minor) NEXT_VERSION="v${MAJOR}.$((MINOR + 1)).0" ;; + patch) NEXT_VERSION="v${MAJOR}.${MINOR}.$((PATCH + 1))" ;; + esac + + echo " └── 🌊 next-version: $NEXT_VERSION" + echo "next-version=$NEXT_VERSION" >> $GITHUB_OUTPUT + echo "current-tag=v${BASE_VERSION}" >> $GITHUB_OUTPUT + + # step 3: crunch future changelog, if other commit + - name: crunch future changelog, if other commit + id: changelog + if: ${{ steps.cutta.outputs.did-cutta == 'false' }} + shell: bash + run: | + set -euo pipefail + echo "🔭 crunch changelog" + REPO_URL="https://github.com/${{ inputs.repository }}" + PREV_TAG="${{ steps.semver.outputs.current-tag }}" + NEXT_TAG="${{ steps.semver.outputs.next-version }}" + LAST_RELEASE_SHA="${{ steps.semver.outputs.last-release-sha }}" + TODAY=$(date +%Y-%m-%d) + + # get commits since last release (reuse SHA from semver step) + if [ -n "$LAST_RELEASE_SHA" ]; then + COMMITS_SINCE_LAST_RELEASE=$(git log ${LAST_RELEASE_SHA}..HEAD --pretty=format:"%H %cs %s") + else + COMMITS_SINCE_LAST_RELEASE=$(git log --pretty=format:"%H %cs %s") + fi + + # group commits by type (hash, date, subject) + FEATS=$(echo "$COMMITS_SINCE_LAST_RELEASE" | grep -E "^[a-f0-9]+ [0-9-]+ feat(\(.+\))?:" || true) + FIXES=$(echo "$COMMITS_SINCE_LAST_RELEASE" | grep -E "^[a-f0-9]+ [0-9-]+ fix(\(.+\))?:" || true) + BREAKS=$(echo "$COMMITS_SINCE_LAST_RELEASE" | grep -E "^[a-f0-9]+ [0-9-]+ break(\(.+\))?:" || true) + + # format changelog - write to temp file to avoid yaml parsing issues with multiline strings + CHANGELOG_FILE="/tmp/changelog.md" + echo "## [${NEXT_TAG#v}](${REPO_URL}/compare/${PREV_TAG}...${NEXT_TAG}) (${TODAY})" > "$CHANGELOG_FILE" + + format_commits() { + local commits="$1" + while IFS= read -r line; do + [ -z "$line" ] && continue + HASH="${line%% *}" + REST="${line#* }" + DATE="${REST%% *}" + COMMIT_MESSAGE="${REST#* }" + SHORT_HASH="${HASH:0:7}" + # extract pr number from message if present + PR_NUM=$(echo "$COMMIT_MESSAGE" | grep -oE '\(#[0-9]+\)' | head -1 | tr -d '(#)' || true) + echo "  ○ ${COMMIT_MESSAGE}" + if [ -n "$PR_NUM" ]; then + echo "     ├── ${DATE}" + echo "     ├── [#${PR_NUM}](${REPO_URL}/pull/${PR_NUM})" + echo "     └── [${SHORT_HASH}](${REPO_URL}/commit/${HASH})" + else + echo "     ├── ${DATE}" + echo "     └── [${SHORT_HASH}](${REPO_URL}/commit/${HASH})" + fi + echo "" + done <<< "$commits" + } + + # count non-empty lines (handles empty vars gracefully) + BREAK_COUNT=0; [ -n "$BREAKS" ] && BREAK_COUNT=$(echo "$BREAKS" | wc -l | tr -d ' ') + FEAT_COUNT=0; [ -n "$FEATS" ] && FEAT_COUNT=$(echo "$FEATS" | wc -l | tr -d ' ') + FIX_COUNT=0; [ -n "$FIXES" ] && FIX_COUNT=$(echo "$FIXES" | wc -l | tr -d ' ') + + if [ -n "$BREAKS" ]; then + { echo ""; echo "### breaks"; echo ""; format_commits "$BREAKS"; } >> "$CHANGELOG_FILE" + fi + if [ -n "$FEATS" ]; then + { echo ""; echo "### feats"; echo ""; format_commits "$FEATS"; } >> "$CHANGELOG_FILE" + fi + if [ -n "$FIXES" ]; then + { echo ""; echo "### fixes"; echo ""; format_commits "$FIXES"; } >> "$CHANGELOG_FILE" + fi + + echo " ├── breaks: $BREAK_COUNT" + echo " ├── feats: $FEAT_COUNT" + echo " └── fixes: $FIX_COUNT" + + echo "changelog-file=$CHANGELOG_FILE" >> $GITHUB_OUTPUT + + # step 4: upsert release pr, if other commit + - name: upsert release pr, if other commit + id: upsert + if: ${{ steps.cutta.outputs.did-cutta == 'false' }} + shell: bash + env: + GITHUB_TOKEN: ${{ inputs.github-token }} + run: | + set -euo pipefail + echo "🔭 upsert release pr" + NEXT_VERSION="${{ steps.semver.outputs.next-version }}" + CHANGELOG=$(cat "${{ steps.changelog.outputs.changelog-file }}") + + # failfast if package.json doesnt exist + if [ ! -f package.json ]; then + echo " └── ⛈️ package.json not found" + echo "::error::package.json not found" + exit 1 + fi + + REPO="${{ inputs.repository }}" + + # find release pr by head branch pattern (more reliable than search) + FOUND_PR=$(gh pr list --state open --json number,headRefName --jq '[.[] | select(.headRefName | startswith("release/"))] | .[0]') + echo " ├── version: $NEXT_VERSION" + + # build pr body in temp file to avoid yaml parsing issues + PR_BODY_FILE="/tmp/pr-body.md" + echo "🐢 noice! ready to let these changes ride?" > "$PR_BODY_FILE" + echo "---" >> "$PR_BODY_FILE" + echo "" >> "$PR_BODY_FILE" + cat "${{ steps.changelog.outputs.changelog-file }}" >> "$PR_BODY_FILE" + PR_BODY=$(cat "$PR_BODY_FILE") + + # operation: upsert rebased commit on a branch (atomic, no PR auto-close) + # - creates blob, tree, commit based on parent_sha + # - upserts branch ref (create if missing, update if exists) + upsert_rebased_commit() { + local branch="$1" + local parent_sha="$2" + local message="$3" + + # update package.json version locally + CURRENT_VERSION=$(jq -r '.version' package.json) + if [ "$CURRENT_VERSION" != "${NEXT_VERSION#v}" ]; then + npm version "${NEXT_VERSION#v}" --no-git-tag-version --ignore-scripts + fi + + # create blob with updated package.json + PKG_CONTENT=$(base64 -w0 package.json) + BLOB_SHA=$(gh api "repos/${REPO}/git/blobs" \ + -f content="$PKG_CONTENT" \ + -f encoding="base64" \ + --jq '.sha') + + # get parent's tree + PARENT_TREE=$(gh api "repos/${REPO}/git/commits/${parent_sha}" --jq '.tree.sha') + + # create new tree with updated package.json + NEW_TREE=$(gh api "repos/${REPO}/git/trees" \ + -f base_tree="$PARENT_TREE" \ + -f 'tree[][path]=package.json' \ + -f 'tree[][mode]=100644' \ + -f 'tree[][type]=blob' \ + -f "tree[][sha]=$BLOB_SHA" \ + --jq '.sha') + + # create commit (auto-verified by github!) + COMMIT_SHA=$(gh api "repos/${REPO}/git/commits" \ + -f message="$message" \ + -f tree="$NEW_TREE" \ + -f "parents[]=$parent_sha" \ + --jq '.sha') + + # upsert branch ref (create or update, never equals main) + if gh api "repos/${REPO}/git/ref/heads/${branch}" --jq '.object.sha' 2>/dev/null; then + gh api "repos/${REPO}/git/refs/heads/${branch}" -X PATCH -f sha="$COMMIT_SHA" -F force=true > /dev/null + else + gh api "repos/${REPO}/git/refs" -X POST -f ref="refs/heads/${branch}" -f sha="$COMMIT_SHA" > /dev/null + fi + + echo "$COMMIT_SHA" + } + + # get main head (shared by both flows) + MAIN_SHA=$(gh api "repos/${REPO}/git/ref/heads/main" --jq '.object.sha') + + if [ -n "$FOUND_PR" ] && [ "$FOUND_PR" != "null" ]; then + PR_NUMBER=$(echo "$FOUND_PR" | jq -r '.number') + BRANCH=$(echo "$FOUND_PR" | jq -r '.headRefName') + echo " ├── found-pr: #$PR_NUMBER ($BRANCH)" + + # upsert rebased commit + echo " ├── upserting rebased commit..." + COMMIT_SHA=$(upsert_rebased_commit "$BRANCH" "$MAIN_SHA" "chore(release): ${NEXT_VERSION} 🎉") + echo " ├── commit: ${COMMIT_SHA:0:7}" + + # update pr metadata + echo " ├── updating pr metadata..." + gh pr edit "$PR_NUMBER" \ + --title "chore(release): ${NEXT_VERSION} 🎉" \ + --body "$PR_BODY" + + echo " ├── ✨ pr updated: #$PR_NUMBER" + echo " └── 🌊 action: updated" + echo "action=updated" >> $GITHUB_OUTPUT + echo "pr-number=$PR_NUMBER" >> $GITHUB_OUTPUT + else + BRANCH="release/${NEXT_VERSION}" + echo " ├── found-pr: (none)" + echo " ├── branch: $BRANCH" + + # upsert rebased commit (creates branch if missing) + echo " ├── upserting rebased commit..." + COMMIT_SHA=$(upsert_rebased_commit "$BRANCH" "$MAIN_SHA" "chore(release): ${NEXT_VERSION} 🎉") + echo " ├── commit: ${COMMIT_SHA:0:7}" + + # create pr + echo " ├── creating pr..." + PR_URL=$(gh pr create \ + --title "chore(release): ${NEXT_VERSION} 🎉" \ + --body "$PR_BODY" \ + --base main \ + --head "$BRANCH") + + PR_NUMBER=$(echo "$PR_URL" | grep -oE '[0-9]+$') + echo " ├── ✨ pr created: #$PR_NUMBER" + echo " └── 🌊 action: created" + + echo "action=created" >> $GITHUB_OUTPUT + echo "pr-number=$PR_NUMBER" >> $GITHUB_OUTPUT + fi + + echo "version=$NEXT_VERSION" >> $GITHUB_OUTPUT + + # step 5: aggregate outputs + - name: aggregate outputs + id: result + if: always() + shell: bash + run: | + set -euo pipefail + if [ "${{ steps.cutta.outputs.did-cutta }}" = "true" ]; then + echo "action=${{ steps.cutta.outputs.action }}" >> $GITHUB_OUTPUT + echo "version=${{ steps.cutta.outputs.version }}" >> $GITHUB_OUTPUT + else + echo "action=${{ steps.upsert.outputs.action }}" >> $GITHUB_OUTPUT + echo "version=${{ steps.upsert.outputs.version }}" >> $GITHUB_OUTPUT + echo "pr-number=${{ steps.upsert.outputs.pr-number }}" >> $GITHUB_OUTPUT + fi diff --git a/.github/workflows/.declastruct.yml b/.github/workflows/.declastruct.yml index 1acdd8d..6c2d048 100644 --- a/.github/workflows/.declastruct.yml +++ b/.github/workflows/.declastruct.yml @@ -13,10 +13,18 @@ on: type: boolean description: "whether the apply step is enabled. defaults to true on main" default: ${{ github.ref == 'refs/heads/main' }} + creds-github-app-owner: + type: string + required: false + description: "the owner of the github app to generate a token for" + creds-github-app-id: + type: string + required: false + description: "the id of the github app to generate a token for" secrets: - github-token: + creds-github-app-private-key: required: false - description: optional credentials to support authenticating with github provider + description: the private key of the github app to generate a token for jobs: # install the dependencies @@ -43,13 +51,23 @@ jobs: path: ./node_modules key: ${{ needs.install.outputs.node-modules-cache-key }} + - name: get github auth, if creds supplied + if: ${{ inputs.creds-github-app-id }} + id: github-app-token + uses: actions/create-github-app-token@v2 + with: + owner: ${{ inputs.creds-github-app-owner }} + repositories: ${{ github.event.repository.name }} + app-id: ${{ inputs.creds-github-app-id }} + private-key: ${{ secrets.creds-github-app-private-key }} + - name: declastruct plan id: plan run: | set -o pipefail npx declastruct plan --wish ${{ inputs.wish-path }} --into ${{ inputs.wish-path }}.plan.json | tee ./plan.log env: - GITHUB_TOKEN: ${{ secrets.github-token }} # allow specifying a github token to pass to the terraform command + GITHUB_TOKEN: ${{ steps.github-app-token.outputs.token }} - name: evaluate plan id: evaluate-plan @@ -105,9 +123,19 @@ jobs: name: declastruct-plan path: ${{ steps.extract-dir.outputs.wish-dir }} + - name: get github auth, if creds supplied + if: ${{ inputs.creds-github-app-id }} + id: github-app-token + uses: actions/create-github-app-token@v2 + with: + owner: ${{ inputs.creds-github-app-owner }} + repositories: ${{ github.event.repository.name }} + app-id: ${{ inputs.creds-github-app-id }} + private-key: ${{ secrets.creds-github-app-private-key }} + - name: declastruct apply run: | set -o pipefail npx declastruct apply --plan ${{ inputs.wish-path }}.plan.json | tee ./apply.log env: - GITHUB_TOKEN: ${{ secrets.github-token }} # allow specifying a github token to pass to the terraform command + GITHUB_TOKEN: ${{ steps.github-app-token.outputs.token }} diff --git a/.github/workflows/.publish-npm.yml b/.github/workflows/.publish-npm.yml index 23166ba..8321245 100644 --- a/.github/workflows/.publish-npm.yml +++ b/.github/workflows/.publish-npm.yml @@ -2,10 +2,9 @@ name: .publish-npm on: workflow_call: - secrets: - npm-auth-token: - required: true - description: required credentials to authenticate with the aws account under which to publish + +permissions: + id-token: write # required for oidc jobs: install: @@ -31,10 +30,63 @@ jobs: path: ./node_modules key: ${{ needs.install.outputs.node-modules-cache-key }} + - name: verify oidc auth + run: | + OIDC_TOKEN=$(curl -sS -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=npm:registry.npmjs.org" | jq -r '.value') + PACKAGE_NAME_PLAIN=$(jq -r '.name' package.json) + PACKAGE_NAME_ENCODED=$(printf '%s' "$PACKAGE_NAME_PLAIN" | jq -sRr @uri) + HTTP_CODE=$(curl -sS -o /dev/null -w '%{http_code}' -X POST -H "Authorization: Bearer $OIDC_TOKEN" "https://registry.npmjs.org/-/npm/v1/oidc/token/exchange/package/$PACKAGE_NAME_ENCODED") + if [[ "$HTTP_CODE" =~ ^2 ]]; then + echo "oidc: configured for $PACKAGE_NAME_PLAIN" + else + echo "::error::oidc: not configured for $PACKAGE_NAME_PLAIN (http $HTTP_CODE). add oidc by-hand at https://www.npmjs.com/package/$PACKAGE_NAME_ENCODED/access" + exit 1 + fi + + - name: verify oidc compat + run: | + NPM_VERSION=$(npm --version) + MIN_VERSION="11.5.1" + if [ "$(printf '%s\n' "$MIN_VERSION" "$NPM_VERSION" | sort -V | head -n1)" != "$MIN_VERSION" ]; then + echo "npm $NPM_VERSION < $MIN_VERSION, will upgrade npm now to support oidc..." + npm install -g npm@latest + else + echo "npm $NPM_VERSION >= $MIN_VERSION, ready to use!" + fi + - name: build run: npm run build - name: publish - run: npm publish --access public - env: - NODE_AUTH_TOKEN: ${{ secrets.npm-auth-token }} + id: publish + continue-on-error: true + run: npm publish --access public --provenance + + # if publish fails, check whether the intent was successful still, for behavioral idempotency (i.e., if the failure just reported that this is a retry, then its an idempotent success) + - name: idempotify + if: steps.publish.outcome == 'failure' + run: | + # get package info + PACKAGE_NAME=$(jq -r '.name' package.json) + PACKAGE_VERSION=$(jq -r '.version' package.json) + + # check if version exists on npm + if ! npm view "$PACKAGE_NAME@$PACKAGE_VERSION" dist.shasum > /dev/null 2>&1; then + echo "::error::publish: this version failed to be published. see prior step for cause" + exit 1 + fi + + # get shasums: local (via dry-run) and published (via registry) + EXPECTED_SHASUM=$(npm pack --dry-run --json 2>/dev/null | jq -r '.[0].shasum') + DETECTED_SHASUM=$(npm view "$PACKAGE_NAME@$PACKAGE_VERSION" dist.shasum) + echo "EXPECTED_SHASUM=$EXPECTED_SHASUM" + echo "DETECTED_SHASUM=$DETECTED_SHASUM" + + # compare shasums + if [ "$EXPECTED_SHASUM" = "$DETECTED_SHASUM" ]; then + echo "publish: idempotent success. detected version matches expected version. this was a succesful retry" + exit 0 + else + echo "::error::publish: this version was already published with a different payload. overwrites are forbidden. EXPECTED_SHASUM=$EXPECTED_SHASUM, DETECTED_SHASUM=$DETECTED_SHASUM" + exit 1 + fi diff --git a/.github/workflows/.test.yml b/.github/workflows/.test.yml index f01e0ea..6eadf78 100644 --- a/.github/workflows/.test.yml +++ b/.github/workflows/.test.yml @@ -3,20 +3,19 @@ name: .test on: workflow_call: inputs: - aws-region: - type: string - description: the aws region within which we should run the tests - required: false - secrets: - aws-account-id: - description: the id of the account the credentials are expected to access + creds-aws-role-arn: + description: "creds for aws, specifies the role to assume via oidc. if not provided, aws auth is skipped" required: false - aws-access-key-id: - required: false - description: required credentials to authenticate with aws the aws account against which to run the tests - aws-secret-access-key: + type: string + creds-aws-region: + description: "creds for aws, specifies the region. defaults to us-east-1" required: false - description: required credentials to authenticate with aws the aws account against which to run the tests + type: string + default: "us-east-1" + +permissions: + id-token: write # required for oidc + contents: read jobs: # install the dependencies @@ -152,21 +151,12 @@ jobs: path: ./node_modules key: ${{ needs.install.outputs.node-modules-cache-key }} - - name: configure aws credentials - if: "${{ inputs.aws-region != '' }}" - uses: aws-actions/configure-aws-credentials@v1 - id: credentials + - name: get aws auth, if creds supplied + if: ${{ inputs.creds-aws-role-arn }} + uses: aws-actions/configure-aws-credentials@v4 with: - aws-access-key-id: ${{ secrets.aws-access-key-id }} - aws-secret-access-key: ${{ secrets.aws-secret-access-key }} - aws-region: ${{ inputs.aws-region }} - - - name: confirm aws credentials - if: "${{ inputs.aws-region != '' }}" - run: | - [[ ${{steps.credentials.outputs.aws-account-id}} != ${{ secrets.aws-account-id }} ]] \ - && echo 'wrong aws account' && exit 1 \ - || echo 'correct aws account'; + role-to-assume: ${{ inputs.creds-aws-role-arn }} + aws-region: ${{ inputs.creds-aws-region }} - name: start:testdb run: npm run start:testdb --if-present @@ -195,21 +185,12 @@ jobs: path: ./node_modules key: ${{ needs.install.outputs.node-modules-cache-key }} - - name: configure aws credentials - if: "${{ inputs.aws-region != '' }}" - uses: aws-actions/configure-aws-credentials@v1 - id: credentials + - name: get aws auth, if creds supplied + if: ${{ inputs.creds-aws-role-arn }} + uses: aws-actions/configure-aws-credentials@v4 with: - aws-access-key-id: ${{ secrets.aws-access-key-id }} - aws-secret-access-key: ${{ secrets.aws-secret-access-key }} - aws-region: ${{ inputs.aws-region }} - - - name: confirm aws credentials - if: "${{ inputs.aws-region != '' }}" - run: | - [[ ${{steps.credentials.outputs.aws-account-id}} != ${{ secrets.aws-account-id }} ]] \ - && echo 'wrong aws account' && exit 1 \ - || echo 'correct aws account'; + role-to-assume: ${{ inputs.creds-aws-role-arn }} + aws-region: ${{ inputs.creds-aws-region }} - name: start:testdb run: npm run start:testdb --if-present @@ -218,4 +199,4 @@ jobs: run: npm run start:livedb:dev --if-present - name: test:acceptance:locally - run: npm run test:acceptance:locally + run: THOROUGH=true npm run test:acceptance --if-present diff --git a/.github/workflows/provision.yml b/.github/workflows/provision.yml index 1ffc647..fe4dc10 100644 --- a/.github/workflows/provision.yml +++ b/.github/workflows/provision.yml @@ -18,7 +18,9 @@ jobs: github: uses: ./.github/workflows/.declastruct.yml with: - wish-path: provision/github/declastruct.resources.ts + wish-path: provision/github.repo/resources.ts github-environment: prod + creds-github-app-owner: ehmpathy + creds-github-app-id: ${{ vars.DECLASTRUCT_GITHUB_CONFORMER_APP_ID }} secrets: - github-token: ${{ secrets.PROVISION_GITHUB_GITHUB_TOKEN }} + creds-github-app-private-key: ${{ secrets.DECLASTRUCT_GITHUB_CONFORMER_APP_PRIVATE_KEY }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4c6cc9a..204f3d2 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,9 +12,10 @@ concurrency: jobs: test: uses: ./.github/workflows/.test.yml + with: + creds-aws-region: us-east-1 + creds-aws-role-arn: ${{ vars.CREDS_CICD_AWS_DEV_OIDC_ROLE_ARN }} # use aws auth via oidc, if this repo supplies it publish: uses: ./.github/workflows/.publish-npm.yml needs: [test] - secrets: - npm-auth-token: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fd9c5f7..c95b0f9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,20 +9,6 @@ jobs: please-release: runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 # need full history for tags - - - name: check tags - id: check-tags - run: | - if git tag | grep -q .; then - echo "has-tags=true" >> $GITHUB_OUTPUT - else - echo "has-tags=false" >> $GITHUB_OUTPUT - echo "No tags found - will start at v0.1.0" - fi - - name: get github token id: github-token uses: actions/create-github-app-token@v2 @@ -32,29 +18,15 @@ jobs: app-id: ${{ vars.RHELEASE_APP_ID }} private-key: ${{ secrets.RHELEASE_APP_PRIVATE_KEY }} - - name: upsert the tag or pr - id: release - uses: google-github-actions/release-please-action@v3.7.6 # https://github.com/googleapis/release-please-action/issues/840 + - uses: actions/checkout@v4 with: - token: ${{ steps.github-token.outputs.token }} - release-type: node - release-as: ${{ steps.check-tags.outputs.has-tags == 'false' && '0.1.0' || null }} # ensures new packages start at a sane choice of v0, instead of their default of v1 - pull-request-title-pattern: "chore(release): v${version} 🎉" - changelog-path: changelog.md + fetch-depth: 0 + token: ${{ steps.github-token.outputs.token }} # enables git push with app token - - name: upvibe the pr, if pr - if: ${{ steps.release.outputs.pr }} - run: | - PR="${{ fromJson(steps.release.outputs.pr).number }}" - - body="$(gh pr view "$PR" --json body -q .body)" - - updated="$(printf "%s" "$body" \ - | sed '1s/^:robot: I have created a release \*beep\* \*boop\*$/🐢 noice! ready to let these changes ride?/' \ - | sed 's/^### Features$/### features/' \ - | sed 's/^### Bug Fixes$/### fixes/' \ - )" - - gh pr edit "$PR" --body "$updated" - env: - GH_TOKEN: ${{ steps.github-token.outputs.token }} + - name: please release + uses: ./.github/actions/please-release + with: + github-token: ${{ steps.github-token.outputs.token }} + commit-message: ${{ github.event.head_commit.message }} + commit-sha: ${{ github.sha }} + repository: ${{ github.repository }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f20225d..f2df942 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,7 +4,7 @@ on: workflow_call: push: branches-ignore: - - 'main' # exclude main branch, since deploy workflow triggers on main, and calls the test workflow inside of it already + - main # exclude main branch, since deploy workflow triggers on main, and calls the test workflow inside of it already tags-ignore: - v* # exclude tags, since deploy workflow triggers on tags, and calls the test workflow inside of it already @@ -15,3 +15,6 @@ concurrency: jobs: suite: uses: ./.github/workflows/.test.yml + with: + creds-aws-region: us-east-1 + creds-aws-role-arn: ${{ vars.CREDS_CICD_AWS_DEV_OIDC_ROLE_ARN }} # use aws auth via oidc, if this repo supplies it diff --git a/.gitignore b/.gitignore index 91ee172..3b15a25 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +*.bak.* *.local.json *.log *.tsbuildinfo diff --git a/.husky/check.yalc.sh b/.husky/check.yalc.sh index dd64998..a1e0563 100755 --- a/.husky/check.yalc.sh +++ b/.husky/check.yalc.sh @@ -1,9 +1,11 @@ #!/bin/bash # https://github.com/wclr/yalc -if command -v npx &> /dev/null; then - if [ "$(npx yalc check 2>/dev/null)" ]; then +if command -v node > /dev/null 2>&1 && [ -x ./node_modules/.bin/yalc ]; then + if [ "$(./node_modules/.bin/yalc check 2>/dev/null)" ]; then echo "✋ package.json has yalc references. Run 'npx yalc remove --all' to remove these local testing references." fi +else + echo "🟡 yalc not available, wont check for yalc references" fi diff --git a/.husky/commit-msg b/.husky/commit-msg index c07b75a..8a1c08b 100755 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,8 @@ #!/bin/sh +if [ ! -f "$(dirname -- "$0")/_/husky.sh" ]; then + echo "🟡 husky not available, skipping hook" + exit 0 +fi . "$(dirname -- "$0")/_/husky.sh" . "$(dirname -- "$0")/check.commit.sh" diff --git a/.husky/post-checkout b/.husky/post-checkout index 9ef84af..e1bc6be 100755 --- a/.husky/post-checkout +++ b/.husky/post-checkout @@ -1,4 +1,8 @@ #!/bin/sh +if [ ! -f "$(dirname -- "$0")/_/husky.sh" ]; then + echo "🟡 husky not available, skipping hook" + exit 0 +fi . "$(dirname -- "$0")/_/husky.sh" . "$(dirname -- "$0")/check.nvm.sh" diff --git a/.husky/post-merge b/.husky/post-merge index 825c2ec..92dd502 100755 --- a/.husky/post-merge +++ b/.husky/post-merge @@ -1,4 +1,8 @@ #!/bin/sh +if [ ! -f "$(dirname -- "$0")/_/husky.sh" ]; then + echo "🟡 husky not available, skipping hook" + exit 0 +fi . "$(dirname -- "$0")/_/husky.sh" . "$(dirname -- "$0")/check.lockfile.sh" diff --git a/.husky/post-rewrite b/.husky/post-rewrite index 825c2ec..92dd502 100755 --- a/.husky/post-rewrite +++ b/.husky/post-rewrite @@ -1,4 +1,8 @@ #!/bin/sh +if [ ! -f "$(dirname -- "$0")/_/husky.sh" ]; then + echo "🟡 husky not available, skipping hook" + exit 0 +fi . "$(dirname -- "$0")/_/husky.sh" . "$(dirname -- "$0")/check.lockfile.sh" diff --git a/.husky/pre-commit b/.husky/pre-commit index 766c5ea..31397a7 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,8 @@ #!/bin/sh +if [ ! -f "$(dirname -- "$0")/_/husky.sh" ]; then + echo "🟡 husky not available, skipping hook" + exit 0 +fi . "$(dirname -- "$0")/_/husky.sh" . "$(dirname -- "$0")/check.yalc.sh" diff --git a/.nvmrc b/.nvmrc index a81deba..b09ba46 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20.12.2 +v22.21.0 diff --git a/biome.json b/biome.jsonc similarity index 76% rename from biome.json rename to biome.jsonc index 50757ec..aec6bb9 100644 --- a/biome.json +++ b/biome.jsonc @@ -8,6 +8,7 @@ "files": { "includes": [ "**/src/**/*.ts", + "**/provision/**/*.ts", "!**/dist", "!**/coverage", "!**/node_modules", @@ -31,7 +32,20 @@ "assist": { "actions": { "source": { - "organizeImports": "on" + "organizeImports": { + "level": "on", + "options": { + "groups": [ + ":SIDE_EFFECT:", + ":BLANK_LINE:", + [":PACKAGE:", "!@src", "!@src/**"], + ":BLANK_LINE:", + ["@src", "@src/**"], + ":BLANK_LINE:", + ":RELATIVE:" + ] + } + } } } }, @@ -65,7 +79,8 @@ "noEmptyBlockStatements": "off", "noUnsafeDeclarationMerging": "off", "useIterableCallbackReturn": "warn", - "noDuplicateTestHooks": "off" + "noDuplicateTestHooks": "off", + "noThenProperty": "warn" }, "nursery": { "noFloatingPromises": "error", diff --git a/changelog.md b/changelog.md deleted file mode 100644 index 68d5c7d..0000000 --- a/changelog.md +++ /dev/null @@ -1,536 +0,0 @@ -# Changelog - -## [0.31.8](https://github.com/ehmpathy/domain-objects/compare/v0.31.7...v0.31.8) (2026-01-04) - - -### Bug Fixes - -* **deps:** prune unneeded prod deps ([#106](https://github.com/ehmpathy/domain-objects/issues/106)) ([9315b54](https://github.com/ehmpathy/domain-objects/commit/9315b54272e6053255ac0d29de2a80fcaa9abb2a)) - -## [0.31.7](https://github.com/ehmpathy/domain-objects/compare/v0.31.6...v0.31.7) (2025-12-08) - - -### Bug Fixes - -* **refs:** refs dont have metadata ([#103](https://github.com/ehmpathy/domain-objects/issues/103)) ([ab2dcc2](https://github.com/ehmpathy/domain-objects/commit/ab2dcc2eb6b0de6338bacff2975e56fe5d717fe2)) - -## [0.31.6](https://github.com/ehmpathy/domain-objects/compare/v0.31.5...v0.31.6) (2025-12-08) - - -### Bug Fixes - -* **refs:** nested dobjs should be instantiated as refs ([#102](https://github.com/ehmpathy/domain-objects/issues/102)) ([93021de](https://github.com/ehmpathy/domain-objects/commit/93021de948b377d6457e365e21346fb15fa70247)) - -## [0.31.5](https://github.com/ehmpathy/domain-objects/compare/v0.31.4...v0.31.5) (2025-12-08) - - -### Bug Fixes - -* **practs:** bump to latest best ([#100](https://github.com/ehmpathy/domain-objects/issues/100)) ([ca3dd88](https://github.com/ehmpathy/domain-objects/commit/ca3dd88e3cea42c436aea8e1915ab6b1af3b0d87)) - -## [0.31.4](https://github.com/ehmpathy/domain-objects/compare/v0.31.3...v0.31.4) (2025-12-08) - - -### Bug Fixes - -* **refs:** expose Ref domain literal ([#98](https://github.com/ehmpathy/domain-objects/issues/98)) ([2d5dee2](https://github.com/ehmpathy/domain-objects/commit/2d5dee2b76473549d2d02bcdea26b472f15521a7)) - -## [0.31.3](https://github.com/ehmpathy/domain-objects/compare/v0.31.2...v0.31.3) (2025-12-03) - - -### Bug Fixes - -* **deps:** bump uuid-fns depver ([#96](https://github.com/ehmpathy/domain-objects/issues/96)) ([f569ee2](https://github.com/ehmpathy/domain-objects/commit/f569ee2685323e4df0187caa963c8148e532757c)) - -## [0.31.2](https://github.com/ehmpathy/domain-objects/compare/v0.31.1...v0.31.2) (2025-12-03) - - -### Bug Fixes - -* **practs:** bump to latest best ([#94](https://github.com/ehmpathy/domain-objects/issues/94)) ([e5628ef](https://github.com/ehmpathy/domain-objects/commit/e5628ef26477d30a10300df5d8aba885427be5f1)) - -## [0.31.1](https://github.com/ehmpathy/domain-objects/compare/v0.31.0...v0.31.1) (2025-12-02) - - -### Bug Fixes - -* **deps:** drop cross-sha256 hash dep ([#92](https://github.com/ehmpathy/domain-objects/issues/92)) ([24b7526](https://github.com/ehmpathy/domain-objects/commit/24b752683cc20aea8a23bbf81c0bbc398c965f29)) - -## [0.31.0](https://github.com/ehmpathy/domain-objects/compare/v0.30.0...v0.31.0) (2025-11-28) - - -### Features - -* **readonly:** expose HasReadonly generic and hasReadonly guard ([#90](https://github.com/ehmpathy/domain-objects/issues/90)) ([64a7523](https://github.com/ehmpathy/domain-objects/commit/64a75232c89cd31574a9208328b287171c15caf5)) - -## [0.30.0](https://github.com/ehmpathy/domain-objects/compare/v0.29.5...v0.30.0) (2025-11-28) - - -### Features - -* **readonly:** support readonly attributes on entities ([#88](https://github.com/ehmpathy/domain-objects/issues/88)) ([45a7882](https://github.com/ehmpathy/domain-objects/commit/45a7882327962a14c3b733f583eb648adbba4f73)) - -## [0.29.5](https://github.com/ehmpathy/domain-objects/compare/v0.29.4...v0.29.5) (2025-11-28) - - -### Bug Fixes - -* **cicd:** unblock declastruct-github provision of repo ([b3f6726](https://github.com/ehmpathy/domain-objects/commit/b3f6726eb37fb5282163c9c30009fdb37af55608)) - -## [0.29.4](https://github.com/ehmpathy/domain-objects/compare/v0.29.3...v0.29.4) (2025-11-27) - - -### Bug Fixes - -* **manip:** replace all instanceof references with cross-version isOfDomainX pattern ([756c4a6](https://github.com/ehmpathy/domain-objects/commit/756c4a67a96ee321972cf0d3bce2ff12fbd45eb6)) -* **practs:** bump to latest best ([4f35a7b](https://github.com/ehmpathy/domain-objects/commit/4f35a7b9255bf89ed489a59369241ea9a0a0109a)) - -## [0.29.3](https://github.com/ehmpathy/domain-objects/compare/v0.29.2...v0.29.3) (2025-11-27) - - -### Bug Fixes - -* **refs:** assure that RefByPrimary requires presence when key is optionable metadata ([51f728c](https://github.com/ehmpathy/domain-objects/commit/51f728c9844f3c73172801a20d0ae2b509edf950)) - -## [0.29.2](https://github.com/ehmpathy/domain-objects/compare/v0.29.1...v0.29.2) (2025-11-24) - - -### Bug Fixes - -* **refs:** instantiate refs to domain entities within props ([001bdd8](https://github.com/ehmpathy/domain-objects/commit/001bdd89fb0c46fbc62e43d804eae2b0232c1329)) - -## [0.29.1](https://github.com/ehmpathy/domain-objects/compare/v0.29.0...v0.29.1) (2025-11-24) - - -### Bug Fixes - -* **refs:** ensure RefByUnique and RefByPrimary constructors narrow down the attributes if built from Refable instance ([6359661](https://github.com/ehmpathy/domain-objects/commit/6359661ab048f7ba495cc0e5a9a86759d2ba5ea8)) - -## [0.29.0](https://github.com/ehmpathy/domain-objects/compare/v0.28.1...v0.29.0) (2025-11-24) - - -### Features - -* **mark:** mark classes explicitly for cross version compat ([35f784c](https://github.com/ehmpathy/domain-objects/commit/35f784cdeb9868e6573b67b872bf561455ae27df)) - -## [0.28.1](https://github.com/ehmpathy/domain-objects/compare/v0.28.0...v0.28.1) (2025-11-24) - - -### Bug Fixes - -* **obs:** increase observability of getUniqueIdentifier rejections ([782b6fb](https://github.com/ehmpathy/domain-objects/commit/782b6fb6346570457480ca101a0e04ac820ac6ac)) - -## [0.28.0](https://github.com/ehmpathy/domain-objects/compare/v0.27.0...v0.28.0) (2025-11-24) - - -### Features - -* **refs:** enable instantiation of RefByUnique and RefByPrimary ([b466b76](https://github.com/ehmpathy/domain-objects/commit/b466b763e91a74e2e3e1cab489f35b16883a67f0)) - -## [0.27.0](https://github.com/ehmpathy/domain-objects/compare/v0.26.1...v0.27.0) (2025-11-23) - - -### Features - -* **refs:** standardize into ubiquitous names for refs; no more synonyms ([bb71ef5](https://github.com/ehmpathy/domain-objects/commit/bb71ef5fcb870c312b3263d0566d893a71cb2891)) - -## [0.26.1](https://github.com/ehmpathy/domain-objects/compare/v0.26.0...v0.26.1) (2025-11-23) - - -### Bug Fixes - -* **unique:** recursively extract unique refs ([70e7f9e](https://github.com/ehmpathy/domain-objects/commit/70e7f9e72c0088f78358e68ec33f7bc680fb4e45)) -* **unique:** update getUniqueIdentifier to leverage refByUnique ([6c372e5](https://github.com/ehmpathy/domain-objects/commit/6c372e515e54d8f953d87b8e9c524e1980313881)) - -## [0.26.0](https://github.com/ehmpathy/domain-objects/compare/v0.25.7...v0.26.0) (2025-11-23) - - -### Features - -* **ref:** refByUnique and refByPrimary ([60434ef](https://github.com/ehmpathy/domain-objects/commit/60434ef221121cf06929dc003d0759accf0dba61)) - -## [0.25.7](https://github.com/ehmpathy/domain-objects/compare/v0.25.6...v0.25.7) (2025-11-23) - - -### Bug Fixes - -* **clone:** preserve constructor inheritance on .clone ([98e765a](https://github.com/ehmpathy/domain-objects/commit/98e765a9de078dc160125fbc99d945b287a58edc)) - -## [0.25.6](https://github.com/ehmpathy/domain-objects/compare/v0.25.5...v0.25.6) (2025-11-23) - - -### Bug Fixes - -* **tests:** add explicit test coverage on .clone constructor preservation ([a5158ad](https://github.com/ehmpathy/domain-objects/commit/a5158ad8405a119a89bf277a901b4318282e87f7)) - -## [0.25.5](https://github.com/ehmpathy/domain-objects/compare/v0.25.4...v0.25.5) (2025-11-22) - - -### Bug Fixes - -* **audit:** apply npm audit fix ([177f811](https://github.com/ehmpathy/domain-objects/commit/177f8118fc6d68f380e53e3cdd4798e4f2510898)) - -## [0.25.4](https://github.com/ehmpathy/domain-objects/compare/v0.25.3...v0.25.4) (2025-11-22) - - -### Bug Fixes - -* **dobj:** propose alias .as to .build, for readability++ ([#73](https://github.com/ehmpathy/domain-objects/issues/73)) ([e61ffa0](https://github.com/ehmpathy/domain-objects/commit/e61ffa06ff5a0d8f3632af0cb5cb2b8669f526dc)) -* **obs:** make it easier to detect invalid nested dobjs ([cf37f10](https://github.com/ehmpathy/domain-objects/commit/cf37f100c04c582b960f5b6b584cf00a8f13512f)) -* **readme:** describe reference type utils ([#71](https://github.com/ehmpathy/domain-objects/issues/71)) ([68f2b36](https://github.com/ehmpathy/domain-objects/commit/68f2b362fb7f50d2f7c582eadd78787ddeae3aa0)) - -## [0.25.3](https://github.com/ehmpathy/domain-objects/compare/v0.25.2...v0.25.3) (2025-09-02) - - -### Bug Fixes - -* **practs:** bump to latest best ([#69](https://github.com/ehmpathy/domain-objects/issues/69)) ([e4a79cc](https://github.com/ehmpathy/domain-objects/commit/e4a79cc4ee19a3f5dde5ac31bc3d8e3315d5a89a)) - -## [0.25.2](https://github.com/ehmpathy/domain-objects/compare/v0.25.1...v0.25.2) (2025-07-05) - - -### Bug Fixes - -* **.build:** narrow .build props to exact shape ([abc3947](https://github.com/ehmpathy/domain-objects/commit/abc3947c7782f56a4e6cf2d32ce14a3c407c01e9)) - -## [0.25.1](https://github.com/ehmpathy/domain-objects/compare/v0.25.0...v0.25.1) (2025-07-04) - - -### Bug Fixes - -* **pkg:** expose withImmute and clone via pkg ([2238b34](https://github.com/ehmpathy/domain-objects/commit/2238b343c882a0ab0ed53647503e6d32809e1c53)) - -## [0.25.0](https://github.com/ehmpathy/domain-objects/compare/v0.24.3...v0.25.0) (2025-07-04) - - -### Features - -* **clone:** dobj.build and .clone for immute support ([a5aabaf](https://github.com/ehmpathy/domain-objects/commit/a5aabaf57717109da86edc7f34412010d004840b)) - - -### Bug Fixes - -* **practs:** bump to latest best ([f8dccbf](https://github.com/ehmpathy/domain-objects/commit/f8dccbfb2a2ac2f331929820c0862416b3c2a072)) - -## [0.24.3](https://github.com/ehmpathy/domain-objects/compare/v0.24.2...v0.24.3) (2025-01-08) - - -### Bug Fixes - -* **uni:** check for buffer existence before usage ([#64](https://github.com/ehmpathy/domain-objects/issues/64)) ([25a99b6](https://github.com/ehmpathy/domain-objects/commit/25a99b6d530eb222b0e7bf7327ef05a550bfe8f2)) - -## [0.24.2](https://github.com/ehmpathy/domain-objects/compare/v0.24.1...v0.24.2) (2024-11-28) - - -### Bug Fixes - -* **uni:** ensure deserialization cache hash doesnt block react native ([#62](https://github.com/ehmpathy/domain-objects/issues/62)) ([e6f0637](https://github.com/ehmpathy/domain-objects/commit/e6f06373978cce307edd64a577ffb20336cb5c50)) - -## [0.24.1](https://github.com/ehmpathy/domain-objects/compare/v0.24.0...v0.24.1) (2024-09-14) - - -### Bug Fixes - -* **metadata:** enable omitmetadata on arrays directly ([290204a](https://github.com/ehmpathy/domain-objects/commit/290204a72903e3383cea3bc235742546adb97cfb)) - -## [0.24.0](https://github.com/ehmpathy/domain-objects/compare/v0.23.0...v0.24.0) (2024-09-01) - - -### Features - -* **serde:** cache deserialize in memory since deterministic ([ed9787c](https://github.com/ehmpathy/domain-objects/commit/ed9787c35a5831c2cdd76e358356fd78d8160390)) - -## [0.23.0](https://github.com/ehmpathy/domain-objects/compare/v0.22.1...v0.23.0) (2024-09-01) - - -### Features - -* **dobjs:** enable skip.schema option on instantiation ([1c48fc6](https://github.com/ehmpathy/domain-objects/commit/1c48fc6246894e928844d99e0c3776955ff47127)) - - -### Bug Fixes - -* **practs:** bump practs to latest best ([39c6f8a](https://github.com/ehmpathy/domain-objects/commit/39c6f8abaa97f1a5f1d6123653d73c4ad0321760)) - -## [0.22.1](https://github.com/ehmpathy/domain-objects/compare/v0.22.0...v0.22.1) (2024-07-26) - - -### Bug Fixes - -* **audit:** drop lodash dependency ([#56](https://github.com/ehmpathy/domain-objects/issues/56)) ([02ad03b](https://github.com/ehmpathy/domain-objects/commit/02ad03b984423be691bc896381f52fd991466bd0)) - -## [0.22.0](https://github.com/ehmpathy/domain-objects/compare/v0.21.9...v0.22.0) (2024-07-26) - - -### Features - -* **refs:** expose pivot ref declaration ([e020c18](https://github.com/ehmpathy/domain-objects/commit/e020c18d9f8f67fd50e97432e8e4f269ee286487)) - -## [0.21.9](https://github.com/ehmpathy/domain-objects/compare/v0.21.8...v0.21.9) (2024-07-14) - - -### Bug Fixes - -* **refs:** expose shorthand aliases for ref by unique and ref by primary ([540485e](https://github.com/ehmpathy/domain-objects/commit/540485e9b7c0d84bc8dbc52ec1ccc0c10ebb062d)) - -## [0.21.8](https://github.com/ehmpathy/domain-objects/compare/v0.21.7...v0.21.8) (2024-07-14) - - -### Bug Fixes - -* **practs:** bump practs to latest best ([c14fbc2](https://github.com/ehmpathy/domain-objects/commit/c14fbc27590ae1f2fcb5b93a8f266338cf63e58b)) - -## [0.21.7](https://github.com/ehmpathy/domain-objects/compare/v0.21.6...v0.21.7) (2024-07-14) - - -### Bug Fixes - -* **refs:** standardize shape of DomainReference to maximize devexp ([a9ff3ab](https://github.com/ehmpathy/domain-objects/commit/a9ff3abed6e9eeb72a00d060fc27a42e7c59c246)) -* **tests:** bump to latest test-fns dep ([79f37bc](https://github.com/ehmpathy/domain-objects/commit/79f37bcae6d9e2ee4941237b2c2f18faee3ffc87)) - -## [0.21.6](https://github.com/ehmpathy/domain-objects/compare/v0.21.5...v0.21.6) (2024-07-12) - - -### Bug Fixes - -* **rels:** expose reference intuitive.via and support explicit reference prefix ([351e305](https://github.com/ehmpathy/domain-objects/commit/351e30526c935895f6030169acdb2f1b17d4f493)) - -## [0.21.5](https://github.com/ehmpathy/domain-objects/compare/v0.21.4...v0.21.5) (2024-06-18) - - -### Bug Fixes - -* **dedupe:** improve dedupe operation cost from O(n^2) to O(n) ([87faa66](https://github.com/ehmpathy/domain-objects/commit/87faa663ebefba97432c3bd39b4fd227429c0f82)) - -## [0.21.4](https://github.com/ehmpathy/domain-objects/compare/v0.21.3...v0.21.4) (2024-06-18) - - -### Bug Fixes - -* **dedupe:** support dedupe of literals as well ([5a1f06a](https://github.com/ehmpathy/domain-objects/commit/5a1f06a483fb2e2e53041f159265bfff5cbdcbc2)) - -## [0.21.3](https://github.com/ehmpathy/domain-objects/compare/v0.21.2...v0.21.3) (2024-06-14) - - -### Bug Fixes - -* **refs:** explicitly check for unique keys rather than invert primary keys ([1a2525e](https://github.com/ehmpathy/domain-objects/commit/1a2525e000b82cae6234f4d115a332092eae5306)) - -## [0.21.2](https://github.com/ehmpathy/domain-objects/compare/v0.21.1...v0.21.2) (2024-06-14) - - -### Bug Fixes - -* **refs:** expose typeguard to check isPrimaryKeyRef and isUniqueKeyRef ([a454602](https://github.com/ehmpathy/domain-objects/commit/a454602b538e364c3947a9b1115e70e634fbe2e3)) - -## [0.21.1](https://github.com/ehmpathy/domain-objects/compare/v0.21.0...v0.21.1) (2024-06-14) - - -### Bug Fixes - -* **refs:** ensure primary key shape requires the property even if its optional in def ([e045166](https://github.com/ehmpathy/domain-objects/commit/e045166721e8a889caac5904734b02ac5b4743f6)) - -## [0.21.0](https://github.com/ehmpathy/domain-objects/compare/v0.20.0...v0.21.0) (2024-05-27) - - -### Features - -* **refs:** expose DomainUniqueKeyShape and DomainPrimaryKeyShape ([4239032](https://github.com/ehmpathy/domain-objects/commit/42390325d9a046d7802e9887f06460a9dea43d97)) - -## [0.20.0](https://github.com/ehmpathy/domain-objects/compare/v0.19.1...v0.20.0) (2024-05-25) - - -### Features - -* **ref:** support DomainReferences via class statics ([4f7a284](https://github.com/ehmpathy/domain-objects/commit/4f7a284590fee9eafe8d8e14dba1a858965d7555)) - -## [0.19.1](https://github.com/ehmpathy/domain-objects/compare/v0.19.0...v0.19.1) (2024-05-17) - - -### Bug Fixes - -* **dedupe:** add safety with failfast on diff entity version detection ([491d716](https://github.com/ehmpathy/domain-objects/commit/491d7167490f8c3cdd4dd1263a5bfdf62981ef2e)) -* **readme:** update the docs to improve examples ([29963b8](https://github.com/ehmpathy/domain-objects/commit/29963b844a841a4e79117d99678a1dd7500b3303)) - -## [0.19.0](https://github.com/ehmpathy/domain-objects/compare/v0.18.0...v0.19.0) (2024-05-16) - - -### Features - -* **alias:** support specification of plural vs singular alias ([55f3bc7](https://github.com/ehmpathy/domain-objects/commit/55f3bc79d944a596839e584c86b8364044b1abc7)) - -## [0.18.0](https://github.com/ehmpathy/domain-objects/compare/v0.17.0...v0.18.0) (2024-05-16) - - -### Features - -* **literal:** rename DomainValueObject to DomainLiteral for intuition++ ([fb77ff7](https://github.com/ehmpathy/domain-objects/commit/fb77ff7b31ed29ebfbd51e31c2b9576682d4b6da)) - -## [0.17.0](https://github.com/ehmpathy/domain-objects/compare/v0.16.0...v0.17.0) (2024-05-11) - - -### Features - -* **schema:** support zod schema for runtime validation ([#39](https://github.com/ehmpathy/domain-objects/issues/39)) ([b6c4000](https://github.com/ehmpathy/domain-objects/commit/b6c4000f86e9e5980e183d97170ee528621bce7e)) - -## [0.16.0](https://github.com/ehmpathy/domain-objects/compare/v0.15.0...v0.16.0) (2024-05-11) - - -### Features - -* **alias:** support DomainObject.alias declaration ([#37](https://github.com/ehmpathy/domain-objects/issues/37)) ([7348ae2](https://github.com/ehmpathy/domain-objects/commit/7348ae257d392725fd5885d47fc055f4b76cf8fd)) - -## [0.15.0](https://github.com/ehmpathy/domain-objects/compare/v0.14.0...v0.15.0) (2024-04-28) - - -### Features - -* **exports:** expose method to dedupe by identity ([6f043cc](https://github.com/ehmpathy/domain-objects/commit/6f043cc48f47c6932d19f767345d31ad21de5f14)) - -## [0.14.0](https://github.com/ehmpathy/domain-objects/compare/v0.13.2...v0.14.0) (2024-04-28) - - -### Features - -* **relate:** add method to dedupe dobjs by identity ([ef13b1e](https://github.com/ehmpathy/domain-objects/commit/ef13b1ebda66e63a00bdc67ffb84e5bcdc694ee6)) - -## [0.13.2](https://github.com/ehmpathy/domain-objects/compare/v0.13.1...v0.13.2) (2023-08-07) - - -### Bug Fixes - -* **manip:** limit unique identifier slug to shorter string ([df74bda](https://github.com/ehmpathy/domain-objects/commit/df74bda3e0e341bcb4656a07ea428b84c12f2848)) - -## [0.13.1](https://github.com/ehmpathy/domain-objects/compare/v0.13.0...v0.13.1) (2023-08-07) - - -### Bug Fixes - -* **devexp:** make unexpected domain object errors more helpful ([83c4215](https://github.com/ehmpathy/domain-objects/commit/83c4215e508c63e59182e5fbc3a7ef4c15963228)) - -## [0.13.0](https://github.com/ehmpathy/domain-objects/compare/v0.12.0...v0.13.0) (2023-08-07) - - -### Features - -* **manipulation:** add getUniqueIdentifierSlug method ([896864b](https://github.com/ehmpathy/domain-objects/commit/896864bc7ec6a5909b7cbd9e19347a5c0ab91188)) - -## [0.12.0](https://github.com/ehmpathy/domain-objects/compare/v0.11.3...v0.12.0) (2023-08-06) - - -### Features - -* **manipulation:** add method to getUpdatableProperties ([517ee23](https://github.com/ehmpathy/domain-objects/commit/517ee23a53fd5b0f53da0ce7cb25651385c452fe)) - -## [0.11.3](https://github.com/ehmpathy/domain-objects/compare/v0.11.2...v0.11.3) (2023-08-05) - - -### Bug Fixes - -* **relationships:** ensure that plural for of names is considered explicit reference ([21c2f80](https://github.com/ehmpathy/domain-objects/commit/21c2f80eb9cae8e002ad8079ad595f8a47ae3598)) - -## [0.11.2](https://github.com/ehmpathy/domain-objects/compare/v0.11.1...v0.11.2) (2023-08-05) - - -### Bug Fixes - -* **deps:** ensure joi and yup usage imports only type references ([c8b3ed5](https://github.com/ehmpathy/domain-objects/commit/c8b3ed518f843907c9bc373c10d52e37d6e0854e)) - -## [0.11.1](https://github.com/ehmpathy/domain-objects/compare/v0.11.0...v0.11.1) (2023-08-05) - - -### Bug Fixes - -* **practs:** use latest best practices and resolve audit ([29d9be1](https://github.com/ehmpathy/domain-objects/commit/29d9be1336105c48bdabe2722a828dca2b6b17d6)) - -## [0.11.0](https://www.github.com/ehmpathy/domain-objects/compare/v0.10.4...v0.11.0) (2023-08-05) - - -### Features - -* **relationships:** expose isPropertyNameAReference methods ([1f20166](https://www.github.com/ehmpathy/domain-objects/commit/1f20166e50afa9107f62b45aa1c9b0958c989048)) - -### [0.10.4](https://www.github.com/ehmpathy/domain-objects/compare/v0.10.3...v0.10.4) (2023-05-13) - - -### Bug Fixes - -* **serialization:** preserve array order by default ([#25](https://www.github.com/ehmpathy/domain-objects/issues/25)) ([40a379f](https://www.github.com/ehmpathy/domain-objects/commit/40a379f11fd3ab5702f555cf8d492d3e2a9ddff8)) - -### [0.10.3](https://www.github.com/ehmpathy/domain-objects/compare/v0.10.2...v0.10.3) (2022-12-29) - - -### Bug Fixes - -* **deps:** upgrade deps with npm audit fix ([255c4b0](https://www.github.com/ehmpathy/domain-objects/commit/255c4b0d177de0a63d8b16c0f4311fe8a362a595)) - -### [0.10.2](https://www.github.com/ehmpathy/domain-objects/compare/v0.10.1...v0.10.2) (2022-12-29) - - -### Bug Fixes - -* **constraints:** assert that domain object which has all nested objects already instantiated as safe ([741794b](https://www.github.com/ehmpathy/domain-objects/commit/741794b24c2ad6b5f89cf634edba61fd6f5f98b9)) - -### [0.10.1](https://www.github.com/ehmpathy/domain-objects/compare/v0.10.0...v0.10.1) (2022-12-15) - - -### Bug Fixes - -* **docs:** improve the helpfulness of omitMetadataValues jsdoc ([dedc363](https://www.github.com/ehmpathy/domain-objects/commit/dedc363c306f322e3b8b7ef79cb4d0ec820d2e31)) - -## [0.10.0](https://www.github.com/ehmpathy/domain-objects/compare/v0.9.3...v0.10.0) (2022-12-07) - - -### Features - -* **entity:** support entities being unique on more than one set of keys ([e39da1e](https://www.github.com/ehmpathy/domain-objects/commit/e39da1e6c55eb805af1c0b92577f426c5c90014b)) -* **metadata:** add DomainObject.metadata prop, expose getMetadataKeys and omitMetadataValues methods ([34b38f5](https://www.github.com/ehmpathy/domain-objects/commit/34b38f597eb2f592d14ea638620b1963672a317e)) - -### [0.9.3](https://www.github.com/ehmpathy/domain-objects/compare/v0.9.2...v0.9.3) (2022-12-06) - - -### Bug Fixes - -* **identity:** enable specifying custom metadata keys for value objects ([8d06f2a](https://www.github.com/ehmpathy/domain-objects/commit/8d06f2a88e7686bf1c2676f86abfb12fc088fc50)) - -### [0.9.2](https://www.github.com/ehmpathy/domain-objects/compare/v0.9.1...v0.9.2) (2022-12-02) - - -### Bug Fixes - -* **hydration:** drop over-cautious assertion after valid usecase found ([3f1c2d7](https://www.github.com/ehmpathy/domain-objects/commit/3f1c2d70faf171b426a6112313f134d21d73a44c)) - -### [0.9.1](https://www.github.com/ehmpathy/domain-objects/compare/v0.9.0...v0.9.1) (2022-11-26) - - -### Bug Fixes - -* **errors:** add potential solutions to the nested hydration error messages ([e5fc797](https://www.github.com/ehmpathy/domain-objects/commit/e5fc7978899ae121e8fe99af69ef06071957d8c9)) -* **errors:** make errors on nested domain object hydration easier on the eyes ([d9230f1](https://www.github.com/ehmpathy/domain-objects/commit/d9230f140ed953383522455473be072643cabc7d)) - -## [0.9.0](https://www.github.com/ehmpathy/domain-objects/compare/v0.8.0...v0.9.0) (2022-11-26) - - -### Features - -* **nested:** support nested domain objects being hydrated from an array of declared class options ([2424145](https://www.github.com/ehmpathy/domain-objects/commit/2424145f74d491c2150e5766a52dcd9b63c58e80)) - -## [0.8.0](https://www.github.com/ehmpathy/domain-objects/compare/v0.7.6...v0.8.0) (2022-11-26) - - -### Features - -* **manipulation:** support lossless and hydrated serialization and deserialization of domain objects ([7e146a7](https://www.github.com/ehmpathy/domain-objects/commit/7e146a77ee0191a25facc6b60c16c46b7757fa91)) - - -### Bug Fixes - -* **cicd:** update cicd marginally ([e4a4556](https://www.github.com/ehmpathy/domain-objects/commit/e4a4556ba2212607a78ccdd3112d23cf94b8d1d8)) -* **repo:** transfer ownership from uladkasach to ehmpathy org ([a1ded4b](https://www.github.com/ehmpathy/domain-objects/commit/a1ded4bbdd9bcd2a0c5df91a7d77673eb4616797)) - -### [0.7.6](https://www.github.com/ehmpathy/domain-objects/compare/v0.7.5...v0.7.6) (2021-12-16) - - -### Bug Fixes - -* **manipulation:** assert domain objects with nested well-known-type objects or basic-type-arrays are safe to manipulate ([944ed81](https://www.github.com/ehmpathy/domain-objects/commit/944ed81060b76c1e01442123fa05d58ca5c0d838)) diff --git a/commitlint.config.js b/commitlint.config.js index a83bca1..77dd41d 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,4 +1,21 @@ module.exports = { extends: ['@commitlint/config-conventional'], - rules: { 'header-max-length': [1, 'always', 140] }, + rules: { + 'header-max-length': [1, 'always', 140], + 'type-enum': [ + 2, + 'always', + [ + 'break', // use break: instead of feat!: or BREAKING CHANGE footer + 'feat', + 'fix', + // 'docs', // prefer fix(docs): instead of docs + 'chore', + 'revert', + 'cont', // continue progress within a p + ], + ], + // forbid ! prefix (use break: instead) + 'subject-exclamation-mark': [2, 'never'], + }, }; diff --git a/jest.acceptance.config.ts b/jest.acceptance.config.ts index 358c48b..1fea877 100644 --- a/jest.acceptance.config.ts +++ b/jest.acceptance.config.ts @@ -12,8 +12,12 @@ process.env.FORCE_COLOR = 'true'; // https://jestjs.io/docs/configuration const config: Config = { verbose: true, + reporters: [['default', { summaryThreshold: 0 }]], // ensure we always get a failure summary at the bottom, to avoid the hunt testEnvironment: 'node', moduleFileExtensions: ['js', 'ts'], + moduleNameMapper: { + '^@src/(.*)$': '/src/$1', + }, transform: { '^.+\\.(t|j)sx?$': '@swc/jest', }, diff --git a/jest.acceptance.env.ts b/jest.acceptance.env.ts index 90a6257..93cf3d3 100644 --- a/jest.acceptance.env.ts +++ b/jest.acceptance.env.ts @@ -32,3 +32,38 @@ if ( throw new Error( 'no aws credentials present. please authenticate with aws to run acceptance tests', ); + +/** + * .what = verify that required api keys are present; otherwise, fail fast + * .why = + * - prevent time wasted waiting on tests to fail due to missing api keys + * - prevent agents from giving up when they have access to credentials + */ +const apikeysConfigPath = join( + process.cwd(), + '.agent/repo=.this/role=any/skills/use.apikeys.json', +); +if (existsSync(apikeysConfigPath)) { + // direct import via require (json resolves automatically) + const config = require(apikeysConfigPath); + const requiredKeys: string[] = config?.apikeys?.required ?? []; + const keysAbsent = requiredKeys.filter((key) => !process.env[key]); + + if (keysAbsent.length > 0) { + throw new Error(` +⛈️ apikeys required to run these acceptance tests were not supplied. + + absent keys: ${keysAbsent.join(', ')} + + you have access to these keys - you just forgot to source them. + + run: + source .agent/repo=.this/role=any/skills/use.apikeys.sh && npm run test:acceptance + + you must run these tests with these api keys. + you're forbidden to give up. + if you don't have privs to run use.apikeys.sh, ask a human for support. + chances are, you already have privs to do so though. +`); + } +} diff --git a/jest.integration.config.ts b/jest.integration.config.ts index a010141..ff8148e 100644 --- a/jest.integration.config.ts +++ b/jest.integration.config.ts @@ -12,8 +12,12 @@ process.env.FORCE_COLOR = 'true'; // https://jestjs.io/docs/configuration const config: Config = { verbose: true, + reporters: [['default', { summaryThreshold: 0 }]], // ensure we always get a failure summary at the bottom, to avoid the hunt testEnvironment: 'node', moduleFileExtensions: ['js', 'ts'], + moduleNameMapper: { + '^@src/(.*)$': '/src/$1', + }, transform: { '^.+\\.(t|j)sx?$': '@swc/jest', }, diff --git a/jest.integration.env.ts b/jest.integration.env.ts index 2b8ad16..fe2150e 100644 --- a/jest.integration.env.ts +++ b/jest.integration.env.ts @@ -82,3 +82,38 @@ if (requiresTestDb) { ); } } + +/** + * .what = verify that required api keys are present; otherwise, fail fast + * .why = + * - prevent time wasted waiting on tests to fail due to missing api keys + * - prevent agents from giving up when they have access to credentials + */ +const apikeysConfigPath = join( + process.cwd(), + '.agent/repo=.this/role=any/skills/use.apikeys.json', +); +if (existsSync(apikeysConfigPath)) { + // direct import via require (json resolves automatically) + const config = require(apikeysConfigPath); + const requiredKeys: string[] = config?.apikeys?.required ?? []; + const keysAbsent = requiredKeys.filter((key) => !process.env[key]); + + if (keysAbsent.length > 0) { + throw new Error(` +⛈️ apikeys required to run these integration tests were not supplied. + + absent keys: ${keysAbsent.join(', ')} + + you have access to these keys - you just forgot to source them. + + run: + source .agent/repo=.this/role=any/skills/use.apikeys.sh && npm run test:integration + + you must run these tests with these api keys. + you're forbidden to give up. + if you don't have privs to run use.apikeys.sh, ask a human for support. + chances are, you already have privs to do so though. +`); + } +} diff --git a/jest.unit.config.ts b/jest.unit.config.ts index b2286b2..a5c1884 100644 --- a/jest.unit.config.ts +++ b/jest.unit.config.ts @@ -12,8 +12,12 @@ process.env.FORCE_COLOR = 'true'; // https://jestjs.io/docs/configuration const config: Config = { verbose: true, + reporters: [['default', { summaryThreshold: 0 }]], // ensure we always get a failure summary at the bottom, to avoid the hunt testEnvironment: 'node', moduleFileExtensions: ['js', 'ts'], + moduleNameMapper: { + '^@src/(.*)$': '/src/$1', + }, transform: { '^.+\\.(t|j)sx?$': '@swc/jest', }, diff --git a/package.json b/package.json index 032ad74..61a3977 100644 --- a/package.json +++ b/package.json @@ -28,32 +28,33 @@ "scripts": { "build:ts": "tsc -p ./tsconfig.build.json", "commit:with-cli": "npx cz", - "fix:format:biome": "biome check --write src", + "fix:format:biome": "biome check --write", "fix:format": "npm run fix:format:biome", - "fix:lint": "biome check --write src", + "fix:lint": "biome check --write", "fix": "npm run fix:format && npm run fix:lint", - "build:clean": "rm dist/ -rf", - "build:compile": "tsc -p ./tsconfig.build.json", - "build": "npm run build:clean && npm run build:compile", + "build:clean": "chmod -R u+w dist 2>/dev/null; rm -rf dist/", + "build:compile": "tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json", + "build": "npm run build:clean && npm run build:compile && npm run build:complete --if-present", "test:commits": "LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose", "test:types": "tsc -p ./tsconfig.json --noEmit", + "test:format:biome": "biome format", "test:format": "npm run test:format:biome", "test:lint:deps": "npx depcheck -c ./.depcheckrc.yml", - "test:format:biome": "biome format src", - "test:lint:biome": "biome check src --diagnostic-level=error", - "test:lint:biome:all": "biome check src", + "test:lint:biome": "biome check --diagnostic-level=error", + "test:lint:biome:all": "biome check", "test:lint": "npm run test:lint:biome && npm run test:lint:deps", - "test:unit": "jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')", - "test:integration": "jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main')", - "test:acceptance:locally": "npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests", + "test:unit": "jest -c ./jest.unit.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main') $([ -n $RESNAP ] && echo '--updateSnapshot')", + "test:integration": "jest -c ./jest.integration.config.ts --forceExit --verbose --passWithNoTests $([ -z $THOROUGH ] && echo '--changedSince=main') $([ -n $RESNAP ] && echo '--updateSnapshot')", + "test:acceptance:locally": "npm run build && LOCALLY=true jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n $RESNAP ] && echo '--updateSnapshot')", "test": "npm run test:commits && npm run test:types && npm run test:format && npm run test:lint && npm run test:unit && npm run test:integration && npm run test:acceptance:locally", - "test:acceptance": "npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests", + "test:acceptance": "npm run build && jest -c ./jest.acceptance.config.ts --forceExit --verbose --runInBand --passWithNoTests $([ -n $RESNAP ] && echo '--updateSnapshot')", "prepush": "npm run test && npm run build", "prepublish": "npm run build", "preversion": "npm run prepush", "postversion": "git push origin HEAD --tags --no-verify", - "prepare:husky": "npx husky install && chmod ug+x .husky/*", - "prepare": "[ -e .git ] && npm run prepare:husky || exit 0" + "prepare:husky": "husky install && chmod ug+x .husky/*", + "prepare:rhachet": "rhachet init && rhachet roles link --repo ehmpathy --role mechanic && rhachet roles link --repo bhuild --role behaver && rhachet roles init --role mechanic && rhachet roles init --role behaver", + "prepare": "if [ -e .git ] && [ -z $CI ]; then npm run prepare:husky && npm run prepare:rhachet; fi" }, "dependencies": { "change-case": "^4.1.2", @@ -75,21 +76,24 @@ "@types/node": "22.15.21", "@types/yup": "^0.29.6", "cz-conventional-changelog": "3.3.0", - "declapract": "^0.13.0", - "declapract-typescript-ehmpathy": "^0.43.12", - "declastruct": "1.5.1", - "declastruct-github": "1.0.7", + "declapract": "^0.13.11", + "declapract-typescript-ehmpathy": "^0.47.10", + "declastruct": "1.7.3", + "declastruct-github": "1.3.0", "depcheck": "1.4.3", "domain-objects": "^0.31.7", "esbuild-register": "3.6.0", "husky": "8.0.3", "jest": "30.2.0", "joi": "^17.2.1", - "rhachet": "^1.19.12", - "rhachet-roles-ehmpathy": "^1.17.9", + "rhachet": "1.19.1", + "rhachet-roles-bhuild": "0.5.0", + "rhachet-roles-ehmpathy": "1.15.25", "test-fns": "1.4.2", + "tsc-alias": "1.8.10", "tsx": "4.20.6", "typescript": "5.4.5", + "yalc": "1.0.0-pre.53", "yup": "^0.29.3", "zod": "^3.23.8" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6884d29..7beaaec 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,23 +61,23 @@ importers: specifier: 3.3.0 version: 3.3.0(@types/node@22.15.21)(typescript@5.4.5) declapract: - specifier: ^0.13.0 - version: 0.13.0(typescript@5.4.5) + specifier: ^0.13.11 + version: 0.13.11(@types/node@22.15.21)(zod@3.25.76) declapract-typescript-ehmpathy: - specifier: ^0.43.12 - version: 0.43.12(declapract@0.13.0(typescript@5.4.5)) + specifier: ^0.47.10 + version: 0.47.10(declapract@0.13.11(@types/node@22.15.21)(zod@3.25.76))(esbuild@0.25.12) declastruct: - specifier: 1.5.1 - version: 1.5.1(domain-objects@0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76)) + specifier: 1.7.3 + version: 1.7.3(domain-objects@0.31.7) declastruct-github: - specifier: 1.0.7 - version: 1.0.7 + specifier: 1.3.0 + version: 1.3.0 depcheck: specifier: 1.4.3 version: 1.4.3 domain-objects: specifier: ^0.31.7 - version: 0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + version: 0.31.7(@types/node@22.15.21)(zod@3.25.76) esbuild-register: specifier: 3.6.0 version: 3.6.0(esbuild@0.25.12) @@ -91,20 +91,29 @@ importers: specifier: ^17.2.1 version: 17.4.0 rhachet: - specifier: ^1.19.12 - version: 1.19.12(@types/node@22.15.21)(hono@4.11.3) + specifier: 1.19.1 + version: 1.19.1(@types/node@22.15.21) + rhachet-roles-bhuild: + specifier: 0.5.0 + version: 0.5.0(@types/node@22.15.21)(zod@3.25.76) rhachet-roles-ehmpathy: - specifier: ^1.17.9 - version: 1.17.9(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + specifier: 1.15.25 + version: 1.15.25(@types/node@22.15.21)(zod@3.25.76) test-fns: specifier: 1.4.2 version: 1.4.2 + tsc-alias: + specifier: 1.8.10 + version: 1.8.10 tsx: specifier: 4.20.6 version: 4.20.6 typescript: specifier: 5.4.5 version: 5.4.5 + yalc: + specifier: 1.0.0-pre.53 + version: 1.0.0-pre.53 yup: specifier: ^0.29.3 version: 0.29.3 @@ -114,22 +123,6 @@ importers: packages: - '@ai-sdk/gateway@2.0.24': - resolution: {integrity: sha512-mflk80YF8hj8vrF9e1IHhovGKC1ubX+sY88pesSk3pUiXfH5VPO8dgzNnxjwsqsCZrnkHcztxS5cSl4TzSiEuA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - - '@ai-sdk/provider-utils@3.0.20': - resolution: {integrity: sha512-iXHVe0apM2zUEzauqJwqmpC37A5rihrStAih5Ks+JE32iTe4LZ58y17UGBjpQQTCRw9YxMeo2UFLxLpBluyvLQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - - '@ai-sdk/provider@2.0.1': - resolution: {integrity: sha512-KCUwswvsC5VsW2PWFqF8eJgSCu5Ysj7m1TxiHTVA6g7k360bk0RNQENT8KTMAYEs+8fWPD3Uu4dEmzGHc+jGng==} - engines: {node: '>=18'} - '@anthropic-ai/claude-agent-sdk@0.1.76': resolution: {integrity: sha512-s7RvpXoFaLXLG7A1cJBAPD8ilwOhhc/12fb5mJXRuD561o4FmPtQ+WRfuy9akMmrFRfLsKv8Ornw3ClGAPL2fw==} engines: {node: '>=18.0.0'} @@ -829,22 +822,12 @@ packages: cpu: [x64] os: [win32] - '@google/generative-ai@0.21.0': - resolution: {integrity: sha512-7XhUbtnlkSEZK15kN3t+tzIMxsbKm/dSkKBFalj+20NvPKe1kBY7mR2P7vuijEn+f06z5+A8bVGKO0v39cr6Wg==} - engines: {node: '>=18.0.0'} - '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - '@hono/node-server@1.19.7': - resolution: {integrity: sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==} - engines: {node: '>=18.14.1'} - peerDependencies: - hono: ^4 - '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1062,14 +1045,6 @@ packages: '@types/node': optional: true - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1207,41 +1182,6 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@modelcontextprotocol/sdk@1.25.1': - resolution: {integrity: sha512-yO28oVFFC7EBoiKdAn+VqRm+plcfv4v0xp6osG/VsCB0NlPZWi87ajbCZZ8f/RvOFLEu7//rSRmuZZ7lMoe3gQ==} - engines: {node: '>=18'} - peerDependencies: - '@cfworker/json-schema': ^4.1.1 - zod: ^3.25 || ^4.0 - peerDependenciesMeta: - '@cfworker/json-schema': - optional: true - - '@morphllm/morphmcp@0.8.60': - resolution: {integrity: sha512-eTTrzlFXloqLy14Elz9pIpIg7IFBiaoyAGNoepb68k7GvqxIJemtrDb2BVx6tnIubyWVR2/bf2PqWhZFcW+WDw==} - hasBin: true - - '@morphllm/morphsdk@0.2.87': - resolution: {integrity: sha512-PzfoM8UDT4RgpcLRXtq8/N01fGtN1SRqCadcySNzNxdROXazLXu65ATAiOqgP0wfq3kw130H1/ZQ1TVtzhHdFw==} - engines: {node: '>=18'} - peerDependencies: - '@anthropic-ai/sdk': '>=0.25.0' - '@google/generative-ai': '>=0.21.0' - ai: '>=5.0.0' - openai: '>=4.0.0' - zod: '>=3.23.0' - peerDependenciesMeta: - '@anthropic-ai/sdk': - optional: true - '@google/generative-ai': - optional: true - ai: - optional: true - openai: - optional: true - zod: - optional: true - '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} @@ -1319,10 +1259,6 @@ packages: resolution: {integrity: sha512-bvJQ4dASnZ7jgfxmseViQwdRupHxs0TwHSZFeYB0gpdOAXnWwDWdGJRCMyphLSHwExRp27JNOk7EBFVmZRBanQ==} engines: {node: '>=18'} - '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} - engines: {node: '>=8.0.0'} - '@parcel/watcher-android-arm64@2.5.1': resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} @@ -1650,9 +1586,6 @@ packages: resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} engines: {node: '>=18.0.0'} - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@swc/core-darwin-arm64@1.15.3': resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} engines: {node: '>=10'} @@ -1905,13 +1838,6 @@ packages: cpu: [x64] os: [win32] - '@vercel/oidc@3.0.5': - resolution: {integrity: sha512-fnYhv671l+eTTp48gB4zEsTW/YtRgRPnkI2nT7x6qw5rkI1Lq2hTmQIpHPgyThI0znLK+vX2n9XxKdXZ7BUbbw==} - engines: {node: '>= 20'} - - '@vscode/ripgrep@1.17.0': - resolution: {integrity: sha512-mBRKm+ASPkUcw4o9aAgfbusIu6H4Sdhw09bjeP1YOBFTJEZAnrnk6WZwzv8NEjgC82f7ILvhmb1WIElSugea6g==} - '@vue/compiler-core@3.5.25': resolution: {integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==} @@ -1931,14 +1857,6 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} - acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} @@ -1948,24 +1866,6 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - - ai@5.0.117: - resolution: {integrity: sha512-uE6HNkdSwxbeHGKP/YbvapwD8fMOpj87wyfT9Z00pbzOh2fpnw5acak/4kzU00SX2vtI9K0uuy+9Tf9ytw5RwA==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 - - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -2029,10 +1929,6 @@ packages: resolution: {integrity: sha512-Vh4eQ8szqN3WFZOVx1F+qmN2cijgKIVIYl5b2N9qvAy+ES8n42TCQKpn4tLAdPn9GPEpkyM4frabG70ZbPvjiA==} engines: {node: '>=8.0.0'} - as-procedure@1.1.10: - resolution: {integrity: sha512-DS5kqZTZw7blxhJyKAIy7hU8nWOtftIB+vRtzivkdxKSyQABQeRqtlfLw5HkYbpXZpUOV+znI9xUpFgxoxNctQ==} - engines: {node: '>=8.0.0'} - as-procedure@1.1.6: resolution: {integrity: sha512-z1pWF1MGzP2t8tb+5A3FOBCWfPiQh+Ipas6knpfwQiLZJMSMJaDEEwxYrsVY0PBHTo4ZpF2Z/FstN5/76eZBpA==} engines: {node: '>=8.0.0'} @@ -2041,23 +1937,10 @@ packages: resolution: {integrity: sha512-NovxtaDLUcwI8rANiXnpfLE4oo9xKf65qka0jBkStckRMgJcGZL4+Vm9+peAJ6+VE6X3n8/fIXhionfCTGas7g==} engines: {node: '>=8.0.0'} - async-lock@1.4.1: - resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axios@1.13.2: - resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} - babel-jest@30.2.0: resolution: {integrity: sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} @@ -2096,13 +1979,13 @@ packages: before-after-hook@3.0.2: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@2.2.1: - resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} - engines: {node: '>=18'} - bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} @@ -2127,38 +2010,16 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - cachedir@2.3.0: resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} engines: {node: '>=6'} - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2209,6 +2070,10 @@ packages: chardet@2.1.1: resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -2224,9 +2089,6 @@ packages: cjs-module-lexer@2.1.1: resolution: {integrity: sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==} - clean-git-ref@2.0.1: - resolution: {integrity: sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==} - cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -2274,10 +2136,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -2290,6 +2148,10 @@ packages: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + commitizen@4.3.1: resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} engines: {node: '>= 12'} @@ -2304,14 +2166,6 @@ packages: constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - content-disposition@1.0.1: - resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} - engines: {node: '>=18'} - - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} - conventional-changelog-angular@7.0.0: resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} engines: {node: '>=16'} @@ -2331,18 +2185,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} - - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - cosmiconfig-typescript-loader@6.2.0: resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} engines: {node: '>=v18'} @@ -2364,11 +2206,6 @@ packages: typescript: optional: true - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -2403,31 +2240,27 @@ packages: supports-color: optional: true - declapract-typescript-ehmpathy@0.43.12: - resolution: {integrity: sha512-j5aPKurrIVtI5N+iiMFcly+V76F63rTpGODCG42HeCDtfwsqKaDpeUfXtp3UPZ23dtS0oEvx3WPEWzCtjG922Q==} + declapract-typescript-ehmpathy@0.47.10: + resolution: {integrity: sha512-HqnGsU3W/JSkZvD50S+Z2zCbrazSFmoxX95V2yrXdPH43tfVqN4MHfkWJ//scsOTBFI/wpifF+d1ddnLYnFXAg==} peerDependencies: - declapract: '>=0.12.1' + declapract: '>=0.13.3' - declapract@0.13.0: - resolution: {integrity: sha512-ybd53eFXwRAuZW058Bu9vRSvN/jO2rutBV+sJkOxz1EOorlhFh64ZJ+0rE3m3/lxh1pcKGp4JU92s2Yk/38I1A==} - engines: {node: '>=12.0.0'} + declapract@0.13.11: + resolution: {integrity: sha512-s/nCi6d7yCCtjhTunIJYkjJmFNGAm9JXPoBu0vtXS1WyKXTzanQDBs164a/7pK4XHy3/WZcrb/VCPoFJ6qlQJw==} + engines: {node: '>=18.19.0'} hasBin: true - declastruct-github@1.0.7: - resolution: {integrity: sha512-BWR7QNjXD/ilmpnIv33JSmGs/cItr7YAbtrydihfv2CNG8I4zYHKaI3sVCU0lSGKxdr9R6heC1sxtuU+hUDzoA==} + declastruct-github@1.3.0: + resolution: {integrity: sha512-3eXKnQFyDvYtfAaDLLFSN8KWgqA1JoZ0Nu4OcT4ZebCSPq8G+SZTOl234yMv0xAAXk8jMyvfEy4O9AUq4uLZ9w==} engines: {node: '>=8.0.0'} - declastruct@1.5.1: - resolution: {integrity: sha512-fndvTmyTk/htdXvZvXyZUp68MD6IjpkdBCZN8m07rJMygkgOvF5C0hJL2rwG13wm6xZZXL7gXGiX0IE5Cu8tsw==} + declastruct@1.7.3: + resolution: {integrity: sha512-Yb7HqnBCRCeNopgd/6RNWCzxtogwiPKn/GIvMay1oksuIjDKAabO6dla0MqoZPFK5zqblCbZFyE3JH7OhvWpIA==} engines: {node: '>=8.0.0'} hasBin: true peerDependencies: domain-objects: '>=0.31.3' - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} @@ -2446,23 +2279,11 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - depcheck@1.4.3: resolution: {integrity: sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ==} engines: {node: '>=10'} hasBin: true - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - deps-regex@0.1.4: resolution: {integrity: sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA==} @@ -2487,20 +2308,13 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - diff3@0.0.3: - resolution: {integrity: sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==} - diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} domain-glossaries@1.0.0: resolution: {integrity: sha512-veAWouAHm93KQtR3v0lt0Ulnfm5GHmeY9H9A3wN4uY6GkKgRMIYYAjKMErPp0oetifsPXFbkr+KVFPgE7HrvnQ==} @@ -2533,16 +2347,9 @@ packages: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.263: resolution: {integrity: sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==} @@ -2556,10 +2363,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -2571,22 +2374,6 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - esbuild-register@3.6.0: resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} peerDependencies: @@ -2601,9 +2388,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -2620,26 +2404,6 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - eventsource-parser@3.0.6: - resolution: {integrity: sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==} - engines: {node: '>=18.0.0'} - - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2664,16 +2428,6 @@ packages: resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - express-rate-limit@7.5.1: - resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==} - engines: {node: '>= 16'} - peerDependencies: - express: '>= 4.11' - - express@5.2.1: - resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} - engines: {node: '>= 18'} - external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -2708,9 +2462,6 @@ packages: fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -2719,10 +2470,6 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@2.1.1: - resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} - engines: {node: '>= 18.0.0'} - find-nearest-package-json@2.0.1: resolution: {integrity: sha512-tKybJ3JqUtuUoHwoe86yEIsday9w23uOF6JQPa9bWKnBrZS4n7f4Me8nSEynMAiL8c11dQerzgexY+hgmH+OXg==} @@ -2760,34 +2507,13 @@ packages: resolution: {integrity: sha512-eNMNr5exLoavuAMhIUVsOKF79SWd/zG104ef6sxBTSw+cZc6BXdQXDvYcGvp0VbxVVSp1XDUNoz7mg1xMtSznA==} engines: {node: '>=8'} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} - engines: {node: '>= 6'} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} @@ -2812,18 +2538,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -2860,9 +2578,9 @@ packages: resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} engines: {node: '>=0.10.0'} - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2875,17 +2593,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - hash-fns@1.1.0: resolution: {integrity: sha512-U5qEFLH3QMR70vAmNkODMv0dff41bek64IM+8eUXvWHMAF55pX0jLWZOFZn7pvyOMibAKN+gjCAqdNtBn4N5qw==} engines: {node: '>=8.0.0'} @@ -2909,21 +2616,9 @@ packages: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} - hono@4.11.3: - resolution: {integrity: sha512-PmQi306+M/ct/m5s66Hrg+adPnkD5jiO6IjA7WhWw0gSBSo1EcRegwuI1deZ+wd5pzCGynCcn2DprnE4/yEV4w==} - engines: {node: '>=16.9.0'} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2944,6 +2639,9 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore-walk@3.0.4: + resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2981,6 +2679,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + ini@4.1.1: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -3005,16 +2707,12 @@ packages: invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} @@ -3048,9 +2746,6 @@ packages: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3059,10 +2754,6 @@ packages: resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} engines: {node: '>=8'} - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -3074,17 +2765,9 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isomorphic-git@1.36.1: - resolution: {integrity: sha512-fC8SRT8MwoaXDK8G4z5biPEbqf2WyEJUb2MJ2ftSd39/UIlsnoZxLGux+lae0poLZO4AEcx6aUVOh5bV+P8zFA==} - engines: {node: '>=14.17'} - hasBin: true - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -3271,9 +2954,6 @@ packages: joi@17.4.0: resolution: {integrity: sha512-F4WiW2xaV6wc1jxete70Rw4V/VuMd6IN+a5ilZsxG4uYtUXWu2kq9W5P2dz30e7Gmw8RCbY/u/uk+dMPma9tAg==} - jose@6.1.3: - resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -3300,12 +2980,6 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-schema-typed@8.0.2: - resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} - - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -3314,6 +2988,9 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} @@ -3325,6 +3002,12 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} + libsodium-wrappers@0.7.16: + resolution: {integrity: sha512-Gtr/WBx4dKjvRL1pvfwZqu7gO6AfrQ0u9vFL+kXihtHf6NfkROR8pjYWn98MFDI3jN19Ii1ZUfPR9afGiPyfHg==} + + libsodium@0.7.16: + resolution: {integrity: sha512-3HrzSPuzm6Yt9aTYCDxYEG8x8/6C0+ag655Y7rhhWZM9PT4NpdnbqlzXhGZlDnkgR6MeSTnOt/VIyHLs9aSf+Q==} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3413,22 +3096,10 @@ packages: makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} - merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3443,34 +3114,10 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3484,9 +3131,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minimisted@2.0.1: - resolution: {integrity: sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -3505,6 +3149,10 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + mylas@2.1.14: + resolution: {integrity: sha512-BzQguy9W9NJgoVn2mRWzbFrFWWztGCcng2QI9+41frfk+Athwgx3qhqhvStz7ExeUUu7Kzw427sNzHpEZNINog==} + engines: {node: '>=16.0.0'} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3518,10 +3166,6 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} - no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -3538,21 +3182,20 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} + npm-packlist@2.2.2: + resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} + engines: {node: '>=10'} + hasBin: true - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3581,10 +3224,6 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - p-defer@4.0.1: - resolution: {integrity: sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==} - engines: {node: '>=12'} - p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3616,9 +3255,6 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -3634,10 +3270,6 @@ packages: resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} engines: {node: '>=0.10.0'} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - pascal-case@3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -3667,16 +3299,10 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@8.3.0: - resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3688,18 +3314,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - pirates@4.0.7: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} - pkce-challenge@5.0.1: - resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} - engines: {node: '>=16.20.0'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -3707,9 +3325,9 @@ packages: please-upgrade-node@3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} + plimit-lit@1.6.1: + resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} + engines: {node: '>=12'} postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} @@ -3731,41 +3349,22 @@ packages: resolution: {integrity: sha512-c/N7xkOHXGBx5gpQ775Ygk3QTp2J/esCYRBgE8TTgCfPPCtirqnuMej+p4b6Pqp/oKnKFbEbkaujAqEe/oJMKA==} engines: {node: '>=8.0.0'} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - property-expr@2.0.6: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} - qs@6.14.1: - resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} - engines: {node: '>=0.6'} - query-ast@1.0.5: resolution: {integrity: sha512-JK+1ma4YDuLjvKKcz9JZ70G+CM9qEOs/l1cZzstMMfwKUabTJ9sud5jvDGrUNuv03yKUgs82bLkHXJkDyhRmBw==} + queue-lit@1.5.2: + resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} + engines: {node: '>=12'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@3.0.2: - resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} - engines: {node: '>= 0.10'} - react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -3773,10 +3372,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.7.0: - resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3848,32 +3443,36 @@ packages: resolution: {integrity: sha512-BCD7rwyArOn9k3AwDocv0UrgkNDmJ/goPAROCLyMx06n72Xhq8nO9RAVVqhdggIjyX8lI0Qriul8tgUJ+3zoIA==} engines: {node: '>=8.0.0'} - rhachet-roles-ehmpathy@1.13.3: - resolution: {integrity: sha512-p0xLdXVHCjT2lYAthR4ARZZcAgy2RvarBzNyMgXMg3V0GcUAsZhpy37JrLk8dAu2y2YDWR/sbLIUl4CTgCazwg==} + rhachet-roles-bhrain@0.3.0: + resolution: {integrity: sha512-+Nk2bNKKuvXEx/ryq3zNTzw9Ay+2wGRs3JGg7mzHiVMDNseN/C5LM6BvruDE4tFjSgLMS3oHybJvl79lVC9mbQ==} engines: {node: '>=8.0.0'} - rhachet-roles-ehmpathy@1.17.9: - resolution: {integrity: sha512-YfIdgso4MOXmEmoY0x2ZhIwqvNDqchIUnDHN+L97SQOkdVLjQe/GhZ4DGBmFWctyc4YJRGN5GmHeLB1tfnmSuQ==} + rhachet-roles-bhuild@0.1.3: + resolution: {integrity: sha512-wVJrFafD/JEmufaMl/tRbmKyQ7RFhXyixV+HopXiMn1MUq83egfnaMVPd98vrbx9Q9xRhJVwKUOfcjJlul8j0g==} engines: {node: '>=8.0.0'} - rhachet@1.13.1: - resolution: {integrity: sha512-PHAnGFdbC+NTsmGh7j3ARbg0upp3gRVl3B+rwMLljo4PB5k29ZOXmxQm/0kBMLvCglptwixkM7VuN5ulODhKpg==} + rhachet-roles-bhuild@0.5.0: + resolution: {integrity: sha512-WupzVSDmbqJ2zDzZKK5d2I7rnakVZtfq9OjyUF50fw5gxnbN/xJDPExEAjlgoGu1a85OLmyGrN1a2HLC/5rorw==} + engines: {node: '>=8.0.0'} + + rhachet-roles-ehmpathy@1.15.25: + resolution: {integrity: sha512-hntrZTKtGPnoyEbXU6jbpEUVpCK1dsZi2AX1iU0JE0bxvjbHcur1S8TMNo2/8rTw/uMuBafdcypYI27RAouFkA==} engines: {node: '>=8.0.0'} - hasBin: true - rhachet@1.19.10: - resolution: {integrity: sha512-MotZt496t4oTtIjMqK86xuAN6wKjup2YE9H3ATHIHap0BGuYblLw9dr1U4nQvzaFb7An1+5PyjaCd8n2qcRIRw==} + rhachet@1.15.2: + resolution: {integrity: sha512-XuW46wL8FDT70TPJOnKLWR+TVsAGP0pWPcCf7ee+K9nKUehoCNDObEH+jDruVvj9f1Id65VTEmhc4csmXQlygA==} engines: {node: '>=22.0.0'} hasBin: true - rhachet@1.19.12: - resolution: {integrity: sha512-bNu/aZsbuhkCTlzsLOjvOTpUd/bW2J6eY25bAK81yZvmbQRWB38V6MojB9AOzRVfkPg5vCrD60D1SslG60Mm3w==} + rhachet@1.16.0: + resolution: {integrity: sha512-3SsLKhax0VoiDtRevq51IyQnrYFjZTgNvCPsKD4q9olE/OBwHFWc/fC/eIQcKM0c0NplFjU2lVHwNwiUvCGLrA==} engines: {node: '>=22.0.0'} hasBin: true - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} + rhachet@1.19.1: + resolution: {integrity: sha512-1WrnwKXfOSgUBzKACvH06KyZVD95GimwnK1/DqQ/HyggyNUWLbHIKjaBV5Y6PbTvpnh2O/4bj1sM848DFknSCg==} + engines: {node: '>=22.0.0'} + hasBin: true run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} @@ -3916,10 +3515,6 @@ packages: engines: {node: '>=10'} hasBin: true - send@1.2.1: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} - sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -3939,22 +3534,6 @@ packages: resolution: {integrity: sha512-9utpMQqdOokSv+odAU5qeOZGPmAK/SerwBnwK8S54Dyt+BNEBh00RtHWB6TirKRmPF6nDhP4TZkNAtY1PxgIJA==} engines: {node: '>=8.0.0'} - serve-static@2.2.1: - resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} - engines: {node: '>= 18'} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - sha.js@2.4.12: - resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} - engines: {node: '>= 0.10'} - hasBin: true - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -3968,22 +3547,6 @@ packages: engines: {node: '>=4'} hasBin: true - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -3991,12 +3554,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - simple-in-memory-cache@0.4.0: resolution: {integrity: sha512-FizjX3DqiWquodrMGgdpo7GBk9x745e/haifLJper3k1sC4Y9pibn8ysKgcfCtQNtga7V/HDsKNYnP6qyFW8rw==} engines: {node: '>=8.0.0'} @@ -4005,10 +3562,6 @@ packages: resolution: {integrity: sha512-syMjMLMvEyqpqciencsN54OFaFZr6g6vnaerIhGxIIDeaTdF9cL/XQZtQ+Dwg42ao35TCMUT5U9JLVYQhaqCEg==} engines: {node: '>=8.0.0'} - simple-log-methods@0.5.0: - resolution: {integrity: sha512-sZTJQUbmcrb8pqkLCexcdUVYxZUx40HGjxsEyWElBBz/+TH9wat25ztqrlOMW0Jqx0caDeo+s/WJp4PYTQNXWQ==} - engines: {node: '>=8.0.0'} - simple-log-methods@0.6.1: resolution: {integrity: sha512-POHiGnZqnQSivzgSDJfVE3/GAVPUEG0zc5vRLKIPpTnIQ6IY0QhOJOO3Ur0rKgXzwU/hlYpqabkELR62CauMhA==} engines: {node: '>=8.0.0'} @@ -4017,14 +3570,6 @@ packages: resolution: {integrity: sha512-wzlQbbT7Emv3N3+iCeukKtQHMM6mPndg9CqzOppQnm4jEPNiaSJUkYz2wM3oOu7Q1RlLwt3qO02oPGBrZ4JLnw==} engines: {node: '>=8.0.0'} - simple-log-methods@0.6.3: - resolution: {integrity: sha512-fOptqXmZnJIIhDM7xuLCgRm6PNeBgyLNSASIkh8Ea9SRxMMCdt1EdWlRZVjPlSMNxt878GNb+VFdHtoJDfeKrA==} - engines: {node: '>=8.0.0'} - - simple-log-methods@0.6.5: - resolution: {integrity: sha512-0SevGkW2AXWkxsNa12VAlFxeIbnSDz08JGjpVZ/YS5Exir35HE90vGepn7PlGYv3aJH2pM3s2m4KL9qVT5lC2A==} - engines: {node: '>=8.0.0'} - simple-on-disk-cache@1.7.2: resolution: {integrity: sha512-Jd3RuUcS4/n+AEb3CyuNfuGf6mq0ODgc6gnaJyMsmMYUTG4sOESXkDc4FMM1vIeMmjWLN4koUiqx4AKIvGU+Ag==} engines: {node: '>=8.0.0'} @@ -4043,9 +3588,6 @@ packages: source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -4061,14 +3603,6 @@ packages: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} - - string-argv@0.3.2: - resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} - engines: {node: '>=0.6.19'} - string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -4142,6 +3676,10 @@ packages: resolution: {integrity: sha512-esvhi+y5tQaD5iuGlFqS82YcrmKPqoJEq7m6YFjewIFGOJTOd4GCYFo/uq50oQP5kxmHSMvmJq1GHyu3BGW5oA==} engines: {node: '>=8.0.0'} + test-fns@1.7.2: + resolution: {integrity: sha512-wuUX9xcgHuDN8BhnBtb+k27GNI/T9P159rzAonIQtYTc/Nt2vL/PUC9tCF5+0Bdv0tU1ObsPL5Dc1gx6+8/bog==} + engines: {node: '>=8.0.0'} + text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} @@ -4163,18 +3701,10 @@ packages: tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - to-buffer@1.2.2: - resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} - engines: {node: '>= 0.4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} @@ -4195,21 +3725,13 @@ packages: '@swc/wasm': optional: true - ts-node@8.6.2: - resolution: {integrity: sha512-4mZEbofxGqLL2RImpe3zMJukvEvcO1XP8bj8ozBPySdCUXEcU5cIRwR0aM3R+VoZq7iXc8N86NC0FspGRqP4gg==} - engines: {node: '>=6.0.0'} + tsc-alias@1.8.10: + resolution: {integrity: sha512-Ibv4KAWfFkFdKJxnWfVtdOmB0Zi1RJVxcbPGiCDsFpCQSsmpWyuzHG3rQyI5YkobWwxFPEyQfu1hdo4qLG2zPw==} hasBin: true - peerDependencies: - typescript: '>=2.7' tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.20.5: - resolution: {integrity: sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==} - engines: {node: '>=18.0.0'} - hasBin: true - tsx@4.20.6: resolution: {integrity: sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==} engines: {node: '>=18.0.0'} @@ -4251,14 +3773,6 @@ packages: resolution: {integrity: sha512-LT5QCbGx2/ANPggKQ2NkibnJ7qNpufUpaoHjGfAwEYrkJSO32MGezWHPsXdHQp9u6fKZEVYNPAHvMXRLSDMDcg==} engines: {node: '>=8.0.0'} - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -4274,14 +3788,14 @@ packages: universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - unrs-resolver@1.11.1: resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} @@ -4331,10 +3845,6 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - visualogic@1.3.2: resolution: {integrity: sha512-lq7tL9lg4X0EJCuEcvLtPC57D/g1B6US108dlhrPl+4WBfnzM+lU57lePgQL4T9JdgybtOAvw/q/qVn9wDy7vg==} engines: {node: '>=8.0.0'} @@ -4349,10 +3859,6 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -4390,10 +3896,6 @@ packages: resolution: {integrity: sha512-5W3qAvFIeHviyH/XyOp38cbboBDagJblLahE+b6/WueqpiJmyfL96ayJuaPuuIsJH6tL+CxL+hFGz1mOHVMnQg==} engines: {node: '>=8.0.0'} - wrapper-fns@1.1.1: - resolution: {integrity: sha512-WeFCTXXxcW/lSfSbl6tvPDOfJvnw9hC/bZvcbHJIK9+0nEwaVLvG9KSVt7MRGdGRZ+qn56dmykAJ+sxk1QXCNw==} - engines: {node: '>=8.0.0'} - wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -4405,6 +3907,10 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yalc@1.0.0-pre.53: + resolution: {integrity: sha512-tpNqBCpTXplnduzw5XC+FF8zNJ9L/UXmvQyyQj7NKrDNavbJtHvzmZplL5ES/RCnjX7JR7W9wz5GVDXVP3dHUQ==} + hasBin: true + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -4416,6 +3922,11 @@ packages: resolution: {integrity: sha512-iZfse3lwrJRoSlfs/9KQ9iIXxs9++RvBFVzAqbbBiFT+giYtyanevreF9r61ZTbGMgWQBxAua3FzJiniiJXWWw==} engines: {node: '>= 6'} + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} @@ -4432,9 +3943,6 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -4465,24 +3973,6 @@ packages: snapshots: - '@ai-sdk/gateway@2.0.24(zod@3.25.76)': - dependencies: - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.20(zod@3.25.76) - '@vercel/oidc': 3.0.5 - zod: 3.25.76 - - '@ai-sdk/provider-utils@3.0.20(zod@3.25.76)': - dependencies: - '@ai-sdk/provider': 2.0.1 - '@standard-schema/spec': 1.1.0 - eventsource-parser: 3.0.6 - zod: 3.25.76 - - '@ai-sdk/provider@2.0.1': - dependencies: - json-schema: 0.4.0 - '@anthropic-ai/claude-agent-sdk@0.1.76(zod@3.25.76)': dependencies: zod: 3.25.76 @@ -5522,18 +5012,12 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@google/generative-ai@0.21.0': {} - '@hapi/hoek@9.3.0': {} '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 - '@hono/node-server@1.19.7(hono@4.11.3)': - dependencies: - hono: 4.11.3 - '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 @@ -5718,12 +5202,6 @@ snapshots: optionalDependencies: '@types/node': 22.15.21 - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -5974,67 +5452,6 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 optional: true - '@modelcontextprotocol/sdk@1.25.1(hono@4.11.3)(zod@3.25.76)': - dependencies: - '@hono/node-server': 1.19.7(hono@4.11.3) - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - content-type: 1.0.5 - cors: 2.8.5 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - eventsource-parser: 3.0.6 - express: 5.2.1 - express-rate-limit: 7.5.1(express@5.2.1) - jose: 6.1.3 - json-schema-typed: 8.0.2 - pkce-challenge: 5.0.1 - raw-body: 3.0.2 - zod: 3.25.76 - zod-to-json-schema: 3.25.1(zod@3.25.76) - transitivePeerDependencies: - - hono - - supports-color - - '@morphllm/morphmcp@0.8.60(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(ai@5.0.117(zod@3.25.76))(hono@4.11.3)(openai@5.8.2(zod@3.25.76))': - dependencies: - '@google/generative-ai': 0.21.0 - '@modelcontextprotocol/sdk': 1.25.1(hono@4.11.3)(zod@3.25.76) - '@morphllm/morphsdk': 0.2.87(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@google/generative-ai@0.21.0)(ai@5.0.117(zod@3.25.76))(openai@5.8.2(zod@3.25.76))(zod@3.25.76) - '@vscode/ripgrep': 1.17.0 - axios: 1.13.2 - chalk: 5.6.2 - diff: 5.2.0 - glob: 10.5.0 - minimatch: 10.1.1 - p-defer: 4.0.1 - semver: 7.7.3 - string-argv: 0.3.2 - zod: 3.25.76 - zod-to-json-schema: 3.25.1(zod@3.25.76) - transitivePeerDependencies: - - '@anthropic-ai/sdk' - - '@cfworker/json-schema' - - ai - - debug - - hono - - openai - - supports-color - - '@morphllm/morphsdk@0.2.87(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@google/generative-ai@0.21.0)(ai@5.0.117(zod@3.25.76))(openai@5.8.2(zod@3.25.76))(zod@3.25.76)': - dependencies: - '@vscode/ripgrep': 1.17.0 - diff: 7.0.0 - isomorphic-git: 1.36.1 - optionalDependencies: - '@anthropic-ai/sdk': 0.71.2(zod@3.25.76) - '@google/generative-ai': 0.21.0 - ai: 5.0.117(zod@3.25.76) - openai: 5.8.2(zod@3.25.76) - zod: 3.25.76 - transitivePeerDependencies: - - supports-color - '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.7.1 @@ -6124,8 +5541,6 @@ snapshots: '@openai/codex-sdk@0.77.0': {} - '@opentelemetry/api@1.9.0': {} - '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -6550,8 +5965,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@standard-schema/spec@1.1.0': {} - '@swc/core-darwin-arm64@1.15.3': optional: true @@ -6755,16 +6168,6 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/oidc@3.0.5': {} - - '@vscode/ripgrep@1.17.0': - dependencies: - https-proxy-agent: 7.0.6 - proxy-from-env: 1.1.0 - yauzl: 2.10.0 - transitivePeerDependencies: - - supports-color - '@vue/compiler-core@3.5.25': dependencies: '@babel/parser': 7.28.5 @@ -6802,15 +6205,6 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - accepts@2.0.0: - dependencies: - mime-types: 3.0.2 - negotiator: 1.0.0 - acorn-walk@8.3.4: dependencies: acorn: 8.15.0 @@ -6819,20 +6213,6 @@ snapshots: acorn@8.15.0: optional: true - agent-base@7.1.4: {} - - ai@5.0.117(zod@3.25.76): - dependencies: - '@ai-sdk/gateway': 2.0.24(zod@3.25.76) - '@ai-sdk/provider': 2.0.1 - '@ai-sdk/provider-utils': 3.0.20(zod@3.25.76) - '@opentelemetry/api': 1.9.0 - zod: 3.25.76 - - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -6865,7 +6245,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - arg@4.1.3: {} + arg@4.1.3: + optional: true argparse@1.0.10: dependencies: @@ -6890,23 +6271,6 @@ snapshots: type-fns: 1.17.0 visualogic: 1.3.3 - as-procedure@1.1.10(@types/node@22.15.21)(zod@3.25.76): - dependencies: - domain-glossary-procedure: 1.0.0 - domain-objects: 0.31.3 - helpful-errors: 1.5.3 - rhachet: 1.13.1(zod@3.25.76) - rhachet-roles-ehmpathy: 1.13.3(@types/node@22.15.21)(zod@3.25.76) - serde-fns: 1.0.0 - simple-log-methods: 0.6.3 - test-fns: 1.4.2 - type-fns: 1.21.0 - transitivePeerDependencies: - - '@types/node' - - aws-crt - - ws - - zod - as-procedure@1.1.6: dependencies: '@ehmpathy/error-fns': 1.3.2 @@ -6925,24 +6289,8 @@ snapshots: test-fns: 1.4.2 type-fns: 1.17.0 - async-lock@1.4.1: {} - - asynckit@0.4.0: {} - at-least-node@1.0.0: {} - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - axios@1.13.2: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.5 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - babel-jest@30.2.0(@babel/core@7.28.5): dependencies: '@babel/core': 7.28.5 @@ -7003,26 +6351,14 @@ snapshots: before-after-hook@3.0.2: {} + binary-extensions@2.3.0: {} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@2.2.1: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 4.4.3 - http-errors: 2.0.1 - iconv-lite: 0.7.0 - on-finished: 2.4.1 - qs: 6.14.1 - raw-body: 3.0.2 - type-is: 2.0.1 - transitivePeerDependencies: - - supports-color - bottleneck@2.19.5: {} bowser@2.13.1: {} @@ -7052,8 +6388,6 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} buffer@5.7.1: @@ -7061,32 +6395,8 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - bytes@3.1.2: {} - cachedir@2.3.0: {} - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - callsites@3.1.0: {} camel-case@4.1.2: @@ -7142,6 +6452,18 @@ snapshots: chardet@2.1.1: {} + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -7152,8 +6474,6 @@ snapshots: cjs-module-lexer@2.1.1: {} - clean-git-ref@2.0.1: {} - cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -7194,16 +6514,14 @@ snapshots: color-name@1.1.4: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - commander@12.1.0: {} commander@14.0.0: {} commander@14.0.2: {} + commander@9.5.0: {} + commitizen@4.3.1(@types/node@22.15.21)(typescript@5.4.5): dependencies: cachedir: 2.3.0 @@ -7237,10 +6555,6 @@ snapshots: tslib: 2.8.1 upper-case: 2.0.2 - content-disposition@1.0.1: {} - - content-type@1.0.5: {} - conventional-changelog-angular@7.0.0: dependencies: compare-func: 2.0.0 @@ -7260,15 +6574,6 @@ snapshots: convert-source-map@2.0.0: {} - cookie-signature@1.2.2: {} - - cookie@0.7.2: {} - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - cosmiconfig-typescript-loader@6.2.0(@types/node@22.15.21)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5): dependencies: '@types/node': 22.15.21 @@ -7293,8 +6598,6 @@ snapshots: optionalDependencies: typescript: 5.4.5 - crc-32@1.2.2: {} - create-require@1.1.1: optional: true @@ -7332,23 +6635,26 @@ snapshots: dependencies: ms: 2.1.3 - declapract-typescript-ehmpathy@0.43.12(declapract@0.13.0(typescript@5.4.5)): + declapract-typescript-ehmpathy@0.47.10(declapract@0.13.11(@types/node@22.15.21)(zod@3.25.76))(esbuild@0.25.12): dependencies: - chalk: 4.1.2 - declapract: 0.13.0(typescript@5.4.5) - domain-objects: 0.31.3 + declapract: 0.13.11(@types/node@22.15.21)(zod@3.25.76) + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) + esbuild-register: 3.6.0(esbuild@0.25.12) expect: 29.4.2 flat: 5.0.2 helpful-errors: 1.5.3 - simple-log-methods: 0.5.0 - yaml: 1.10.2 + yaml: 2.8.2 + transitivePeerDependencies: + - esbuild + - supports-color + - ws - declapract@0.13.0(typescript@5.4.5): + declapract@0.13.11(@types/node@22.15.21)(zod@3.25.76): dependencies: chalk: 2.4.2 commander: 12.1.0 cross-path-sort: 1.0.0 - domain-objects: 0.31.3 + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) expect: 29.4.3 fast-glob: 3.2.2 find-nearest-package-json: 2.0.1 @@ -7361,44 +6667,46 @@ snapshots: lodash.uniqby: 4.7.0 shelljs: 0.8.5 simple-leveled-log-methods: 0.1.4 - ts-node: 8.6.2(typescript@5.4.5) + tsx: 4.20.6 type-fns: 1.21.0 uuid: 9.0.0 yaml: 1.6.0 transitivePeerDependencies: - - typescript + - '@types/node' + - aws-crt + - ws + - zod - declastruct-github@1.0.7: + declastruct-github@1.3.0: dependencies: '@ehmpathy/uni-time': 1.7.4 '@octokit/rest': 21.1.1 as-procedure: 1.1.1 - domain-objects: 0.31.3 + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) helpful-errors: 1.5.3 + libsodium-wrappers: 0.7.16 simple-in-memory-cache: 0.4.0 type-fns: 1.21.0 visualogic: 1.3.2 with-simple-cache: 0.15.1 transitivePeerDependencies: - aws-crt + - ws - declastruct@1.5.1(domain-objects@0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76)): + declastruct@1.7.3(domain-objects@0.31.7): dependencies: bottleneck: 2.19.5 chalk: 5.4.1 commander: 14.0.2 - domain-objects: 0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) helpful-errors: 1.5.3 jest-diff: 30.0.2 + rhachet-artifact-git: 1.1.3 simple-log-methods: 0.6.2 tsx: 4.20.6 type-fns: 1.21.0 uuid-fns: 1.0.2 - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - dedent@0.7.0: {} dedent@1.7.0: {} @@ -7409,14 +6717,6 @@ snapshots: dependencies: clone: 1.0.4 - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - delayed-stream@1.0.0: {} - depcheck@1.4.3: dependencies: '@babel/parser': 7.16.4 @@ -7445,8 +6745,6 @@ snapshots: transitivePeerDependencies: - supports-color - depd@2.0.0: {} - deps-regex@0.1.4: {} detect-file@1.0.0: {} @@ -7460,13 +6758,12 @@ snapshots: diff-sequences@29.6.3: {} - diff3@0.0.3: {} - - diff@4.0.2: {} - - diff@5.2.0: {} + diff@4.0.2: + optional: true - diff@7.0.0: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 domain-glossaries@1.0.0: {} @@ -7499,24 +6796,19 @@ snapshots: type-fns: 1.21.0 uuid-fns: 1.1.3 - domain-objects@0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76): + domain-objects@0.31.7(@types/node@22.15.21)(zod@3.25.76): dependencies: change-case: 4.1.2 domain-objects: 0.31.3 helpful-errors: 1.5.3 joi: 17.4.0 - rhachet: 1.19.12(@types/node@22.15.21)(hono@4.11.3) - rhachet-roles-ehmpathy: 1.17.9(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + rhachet: 1.19.1(@types/node@22.15.21) + rhachet-roles-ehmpathy: 1.15.25(@types/node@22.15.21)(zod@3.25.76) type-fns: 1.21.0 uuid-fns: 1.1.3 transitivePeerDependencies: - - '@anthropic-ai/sdk' - - '@cfworker/json-schema' - '@types/node' - aws-crt - - debug - - hono - - supports-color - ws - zod @@ -7529,16 +6821,8 @@ snapshots: dependencies: is-obj: 2.0.0 - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} - electron-to-chromium@1.5.263: {} emittery@0.13.1: {} @@ -7547,8 +6831,6 @@ snapshots: emoji-regex@9.2.2: {} - encodeurl@2.0.0: {} - entities@4.5.0: {} env-paths@2.2.1: {} @@ -7557,21 +6839,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - esbuild-register@3.6.0(esbuild@0.25.12): dependencies: debug: 4.4.3 @@ -7610,8 +6877,6 @@ snapshots: escalade@3.2.0: {} - escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} escape-string-regexp@2.0.0: {} @@ -7620,18 +6885,6 @@ snapshots: estree-walker@2.0.2: {} - etag@1.8.1: {} - - event-target-shim@5.0.1: {} - - events@3.3.0: {} - - eventsource-parser@3.0.6: {} - - eventsource@3.0.7: - dependencies: - eventsource-parser: 3.0.6 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -7675,43 +6928,6 @@ snapshots: jest-mock: 30.2.0 jest-util: 30.2.0 - express-rate-limit@7.5.1(express@5.2.1): - dependencies: - express: 5.2.1 - - express@5.2.1: - dependencies: - accepts: 2.0.0 - body-parser: 2.2.1 - content-disposition: 1.0.1 - content-type: 1.0.5 - cookie: 0.7.2 - cookie-signature: 1.2.2 - debug: 4.4.3 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.1.1 - fresh: 2.0.0 - http-errors: 2.0.1 - merge-descriptors: 2.0.0 - mime-types: 3.0.2 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.14.1 - range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 - serve-static: 2.2.1 - statuses: 2.0.2 - type-is: 2.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -7755,10 +6971,6 @@ snapshots: dependencies: bser: 2.1.1 - fd-slicer@1.1.0: - dependencies: - pend: 1.2.0 - figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -7767,17 +6979,6 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@2.1.1: - dependencies: - debug: 4.4.3 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color - find-nearest-package-json@2.0.1: {} find-node-modules@2.1.3: @@ -7816,28 +7017,16 @@ snapshots: fn-name@3.0.0: {} - follow-redirects@1.15.11: {} - - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.5: + fs-extra@8.1.0: dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - - forwarded@0.2.0: {} - - fresh@2.0.0: {} + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 fs-extra@9.1.0: dependencies: @@ -7857,26 +7046,8 @@ snapshots: get-caller-file@2.0.5: {} - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - get-package-type@0.1.0: {} - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - get-stream@6.0.1: {} get-tsconfig@4.13.0: @@ -7929,7 +7100,14 @@ snapshots: is-windows: 1.0.2 which: 1.3.1 - gopd@1.2.0: {} + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 graceful-fs@4.2.11: {} @@ -7937,16 +7115,6 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - hash-fns@1.1.0: dependencies: domain-glossaries: 1.0.0 @@ -7973,25 +7141,8 @@ snapshots: dependencies: parse-passwd: 1.0.0 - hono@4.11.3: {} - html-escaper@2.0.2: {} - http-errors@2.0.1: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.2 - toidentifier: 1.0.1 - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - human-signals@2.1.0: {} husky@8.0.3: {} @@ -8006,6 +7157,10 @@ snapshots: ieee754@1.2.1: {} + ignore-walk@3.0.4: + dependencies: + minimatch: 3.1.2 + ignore@5.3.2: {} immutable@5.1.4: {} @@ -8035,6 +7190,8 @@ snapshots: ini@1.3.8: {} + ini@2.0.0: {} + ini@4.1.1: {} inquirer@12.7.0(@types/node@22.15.21): @@ -8073,11 +7230,11 @@ snapshots: dependencies: loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} - is-arrayish@0.2.1: {} - is-callable@1.2.7: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 is-core-module@2.16.1: dependencies: @@ -8099,42 +7256,20 @@ snapshots: is-obj@2.0.0: {} - is-promise@4.0.0: {} - is-stream@2.0.1: {} is-text-path@2.0.0: dependencies: text-extensions: 2.4.0 - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.19 - is-unicode-supported@0.1.0: {} is-utf8@0.2.1: {} is-windows@1.0.2: {} - isarray@2.0.5: {} - isexe@2.0.0: {} - isomorphic-git@1.36.1: - dependencies: - async-lock: 1.4.1 - clean-git-ref: 2.0.1 - crc-32: 1.2.2 - diff3: 0.0.3 - ignore: 5.3.2 - minimisted: 2.0.1 - pako: 1.0.11 - pify: 4.0.1 - readable-stream: 4.7.0 - sha.js: 2.4.12 - simple-get: 4.0.1 - istanbul-lib-coverage@3.2.2: {} istanbul-lib-instrument@6.0.3: @@ -8546,8 +7681,6 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - jose@6.1.3: {} - js-tokens@4.0.0: {} js-yaml@3.14.2: @@ -8570,14 +7703,14 @@ snapshots: json-schema-traverse@1.0.0: {} - json-schema-typed@8.0.2: {} - - json-schema@0.4.0: {} - json5@2.2.3: {} jsonc-parser@3.3.1: {} + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + jsonfile@6.2.0: dependencies: universalify: 2.0.1 @@ -8588,6 +7721,12 @@ snapshots: leven@3.1.0: {} + libsodium-wrappers@0.7.16: + dependencies: + libsodium: 0.7.16 + + libsodium@0.7.16: {} + lines-and-columns@1.2.4: {} locate-path@5.0.0: @@ -8657,20 +7796,15 @@ snapshots: dependencies: semver: 7.7.3 - make-error@1.3.6: {} + make-error@1.3.6: + optional: true makeerror@1.0.12: dependencies: tmpl: 1.0.5 - math-intrinsics@1.1.0: {} - - media-typer@1.1.0: {} - meow@12.1.1: {} - merge-descriptors@2.0.0: {} - merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -8682,26 +7816,8 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - - mime-db@1.54.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime-types@3.0.2: - dependencies: - mime-db: 1.54.0 - mimic-fn@2.1.0: {} - mimic-response@3.1.0: {} - - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -8714,10 +7830,6 @@ snapshots: minimist@1.2.8: {} - minimisted@2.0.1: - dependencies: - minimist: 1.2.8 - minipass@7.1.2: {} ms@2.1.3: {} @@ -8734,14 +7846,14 @@ snapshots: mute-stream@2.0.0: {} + mylas@2.1.14: {} + nanoid@3.3.11: {} napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} - negotiator@1.0.0: {} - no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -8756,17 +7868,22 @@ snapshots: normalize-path@3.0.0: {} - npm-run-path@4.0.1: + npm-bundled@1.1.2: dependencies: - path-key: 3.1.1 + npm-normalize-package-bin: 1.0.1 - object-assign@4.1.1: {} + npm-normalize-package-bin@1.0.1: {} - object-inspect@1.13.4: {} + npm-packlist@2.2.2: + dependencies: + glob: 7.2.3 + ignore-walk: 3.0.4 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 - on-finished@2.4.1: + npm-run-path@4.0.1: dependencies: - ee-first: 1.1.1 + path-key: 3.1.1 once@1.4.0: dependencies: @@ -8794,8 +7911,6 @@ snapshots: os-tmpdir@1.0.2: {} - p-defer@4.0.1: {} - p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -8824,8 +7939,6 @@ snapshots: package-json-from-dist@1.0.1: {} - pako@1.0.11: {} - param-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -8844,8 +7957,6 @@ snapshots: parse-passwd@1.0.0: {} - parseurl@1.3.3: {} - pascal-case@3.1.2: dependencies: no-case: 3.0.4 @@ -8871,24 +7982,16 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-to-regexp@8.3.0: {} - path-type@4.0.0: {} - pend@1.2.0: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} - pify@4.0.1: {} - pirates@4.0.7: {} - pkce-challenge@5.0.1: {} - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -8897,7 +8000,9 @@ snapshots: dependencies: semver-compare: 1.0.0 - possible-typed-array-names@1.1.0: {} + plimit-lit@1.6.1: + dependencies: + queue-lit: 1.5.2 postcss@8.5.6: dependencies: @@ -8930,38 +8035,18 @@ snapshots: test-fns: 1.4.2 type-fns: 1.17.0 - process@0.11.10: {} - property-expr@2.0.6: {} - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-from-env@1.1.0: {} - pure-rand@7.0.1: {} - qs@6.14.1: - dependencies: - side-channel: 1.1.0 - query-ast@1.0.5: dependencies: invariant: 2.2.4 lodash: 4.17.21 - queue-microtask@1.2.3: {} - - range-parser@1.2.1: {} + queue-lit@1.5.2: {} - raw-body@3.0.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.1 - iconv-lite: 0.7.0 - unpipe: 1.0.0 + queue-microtask@1.2.3: {} react-is@18.3.1: {} @@ -8971,14 +8056,6 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.7.0: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -9058,19 +8135,19 @@ snapshots: domain-objects: 0.31.3 helpful-errors: 1.5.3 - rhachet-roles-ehmpathy@1.13.3(@types/node@22.15.21)(zod@3.25.76): + rhachet-roles-bhrain@0.3.0(@types/node@22.15.21)(zod@3.25.76): dependencies: '@ehmpathy/as-command': 1.0.3 '@ehmpathy/uni-time': 1.8.1 as-procedure: 1.1.7 - domain-objects: 0.31.3 + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) fast-glob: 3.3.3 helpful-errors: 1.5.3 inquirer: 12.7.0(@types/node@22.15.21) openai: 5.8.2(zod@3.25.76) - rhachet: 1.13.1(zod@3.25.76) rhachet-artifact: 1.0.0 rhachet-artifact-git: 1.1.0 + rhachet-roles-bhuild: 0.1.3(zod@3.25.76) serde-fns: 1.2.0 simple-in-memory-cache: 0.4.0 type-fns: 1.21.0 @@ -9082,19 +8159,39 @@ snapshots: - ws - zod - rhachet-roles-ehmpathy@1.17.9(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76): + rhachet-roles-bhuild@0.1.3(zod@3.25.76): + dependencies: + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) + helpful-errors: 1.5.3 + rhachet: 1.15.2(zod@3.25.76) + transitivePeerDependencies: + - ws + - zod + + rhachet-roles-bhuild@0.5.0(@types/node@22.15.21)(zod@3.25.76): + dependencies: + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) + helpful-errors: 1.5.3 + rhachet: 1.15.2(zod@3.25.76) + rhachet-roles-bhrain: 0.3.0(@types/node@22.15.21)(zod@3.25.76) + test-fns: 1.7.2 + transitivePeerDependencies: + - '@types/node' + - aws-crt + - ws + - zod + + rhachet-roles-ehmpathy@1.15.25(@types/node@22.15.21)(zod@3.25.76): dependencies: '@ehmpathy/as-command': 1.0.3 '@ehmpathy/uni-time': 1.8.1 - '@morphllm/morphmcp': 0.8.60(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(ai@5.0.117(zod@3.25.76))(hono@4.11.3)(openai@5.8.2(zod@3.25.76)) - ai: 5.0.117(zod@3.25.76) as-procedure: 1.1.7 - domain-objects: 0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) fast-glob: 3.3.3 helpful-errors: 1.5.3 inquirer: 12.7.0(@types/node@22.15.21) openai: 5.8.2(zod@3.25.76) - rhachet: 1.19.10 + rhachet: 1.16.0(zod@3.25.76) rhachet-artifact: 1.0.0 rhachet-artifact-git: 1.1.0 serde-fns: 1.2.0 @@ -9103,24 +8200,19 @@ snapshots: with-simple-caching: 0.14.2 wrapper-fns: 1.1.0 transitivePeerDependencies: - - '@anthropic-ai/sdk' - - '@cfworker/json-schema' - '@types/node' - aws-crt - - debug - - hono - - supports-color - ws - zod - rhachet@1.13.1(zod@3.25.76): + rhachet@1.15.2(zod@3.25.76): dependencies: '@ehmpathy/uni-time': 1.9.0 as-procedure: 1.1.6 bottleneck: 2.19.5 chalk: 4.1.2 commander: 14.0.0 - domain-objects: 0.31.3 + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) fast-glob: 3.3.3 flattie: 1.1.1 helpful-errors: 1.5.3 @@ -9128,24 +8220,20 @@ snapshots: rhachet-artifact: 1.0.1 rhachet-artifact-git: 1.1.3 serde-fns: 1.3.1 - tsx: 4.20.5 type-fns: 1.21.0 uuid-fns: 1.0.1 transitivePeerDependencies: - ws - zod - rhachet@1.19.10: + rhachet@1.16.0(zod@3.25.76): dependencies: - '@anthropic-ai/claude-agent-sdk': 0.1.76(zod@3.25.76) - '@anthropic-ai/sdk': 0.71.2(zod@3.25.76) '@ehmpathy/uni-time': 1.9.0 - '@openai/codex-sdk': 0.77.0 as-procedure: 1.1.6 bottleneck: 2.19.5 chalk: 4.1.2 commander: 14.0.0 - domain-objects: 0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) fast-glob: 3.3.3 flattie: 1.1.1 helpful-errors: 1.5.3 @@ -9155,13 +8243,11 @@ snapshots: serde-fns: 1.3.1 type-fns: 1.21.0 uuid-fns: 1.0.1 - wrapper-fns: 1.1.0 - zod: 3.25.76 - zod-to-json-schema: 3.25.1(zod@3.25.76) transitivePeerDependencies: - ws + - zod - rhachet@1.19.12(@types/node@22.15.21)(hono@4.11.3): + rhachet@1.19.1(@types/node@22.15.21): dependencies: '@anthropic-ai/claude-agent-sdk': 0.1.76(zod@3.25.76) '@anthropic-ai/sdk': 0.71.2(zod@3.25.76) @@ -9171,7 +8257,7 @@ snapshots: bottleneck: 2.19.5 chalk: 4.1.2 commander: 14.0.0 - domain-objects: 0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) + domain-objects: 0.31.7(@types/node@22.15.21)(zod@3.25.76) fast-glob: 3.3.3 flattie: 1.1.1 helpful-errors: 1.5.3 @@ -9181,28 +8267,13 @@ snapshots: serde-fns: 1.3.1 type-fns: 1.21.0 uuid-fns: 1.0.1 - wrapper-fns: 1.1.1(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) zod: 3.25.76 zod-to-json-schema: 3.25.1(zod@3.25.76) transitivePeerDependencies: - - '@cfworker/json-schema' - '@types/node' - aws-crt - - debug - - hono - - supports-color - ws - router@2.2.0: - dependencies: - debug: 4.4.3 - depd: 2.0.0 - is-promise: 4.0.0 - parseurl: 1.3.3 - path-to-regexp: 8.3.0 - transitivePeerDependencies: - - supports-color - run-async@2.4.1: {} run-async@4.0.6: {} @@ -9238,22 +8309,6 @@ snapshots: semver@7.7.3: {} - send@1.2.1: - dependencies: - debug: 4.4.3 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 2.0.0 - http-errors: 2.0.1 - mime-types: 3.0.2 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.2 - transitivePeerDependencies: - - supports-color - sentence-case@3.0.4: dependencies: no-case: 3.0.4 @@ -9276,32 +8331,6 @@ snapshots: dependencies: type-fns: 1.17.0 - serve-static@2.2.1: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 1.2.1 - transitivePeerDependencies: - - supports-color - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - setprototypeof@1.2.0: {} - - sha.js@2.4.12: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - to-buffer: 1.2.2 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -9314,56 +8343,16 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - signal-exit@3.0.7: {} signal-exit@4.1.0: {} - simple-concat@1.0.1: {} - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - simple-in-memory-cache@0.4.0: dependencies: '@ehmpathy/uni-time': 1.9.1 simple-leveled-log-methods@0.1.4: {} - simple-log-methods@0.5.0: - dependencies: - type-fns: 1.21.0 - simple-log-methods@0.6.1: dependencies: '@ehmpathy/error-fns': 1.3.7 @@ -9378,22 +8367,6 @@ snapshots: domain-glossary-procedure: 1.0.0 type-fns: 1.21.0 - simple-log-methods@0.6.3: - dependencies: - '@ehmpathy/error-fns': 1.3.7 - '@ehmpathy/uni-time': 1.9.1 - domain-glossary-procedure: 1.0.0 - type-fns: 1.21.0 - - simple-log-methods@0.6.5: - dependencies: - '@ehmpathy/error-fns': 1.3.7 - '@ehmpathy/uni-time': 1.9.1 - domain-glossary-procedure: 1.0.0 - domain-objects: 0.31.3 - helpful-errors: 1.5.3 - type-fns: 1.21.0 - simple-on-disk-cache@1.7.2: dependencies: '@aws-sdk/client-s3': 3.940.0 @@ -9421,11 +8394,6 @@ snapshots: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map@0.6.1: {} split2@4.2.0: {} @@ -9436,10 +8404,6 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - statuses@2.0.2: {} - - string-argv@0.3.2: {} - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -9512,6 +8476,11 @@ snapshots: '@ehmpathy/error-fns': 1.3.1 uuid: 10.0.0 + test-fns@1.7.2: + dependencies: + helpful-errors: 1.3.8 + uuid: 10.0.0 + text-extensions@2.4.0: {} through@2.3.8: {} @@ -9526,18 +8495,10 @@ snapshots: tmpl@1.0.5: {} - to-buffer@1.2.2: - dependencies: - isarray: 2.0.5 - safe-buffer: 5.2.1 - typed-array-buffer: 1.0.3 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - toidentifier@1.0.1: {} - toposort@2.0.2: {} ts-algebra@2.0.0: {} @@ -9563,24 +8524,17 @@ snapshots: '@swc/core': 1.15.3 optional: true - ts-node@8.6.2(typescript@5.4.5): + tsc-alias@1.8.10: dependencies: - arg: 4.1.3 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 5.4.5 - yn: 3.1.1 + chokidar: 3.6.0 + commander: 9.5.0 + globby: 11.1.0 + mylas: 2.1.14 + normalize-path: 3.0.0 + plimit-lit: 1.6.1 tslib@2.8.1: {} - tsx@4.20.5: - dependencies: - esbuild: 0.25.12 - get-tsconfig: 4.13.0 - optionalDependencies: - fsevents: 2.3.3 - tsx@4.20.6: dependencies: esbuild: 0.25.12 @@ -9622,18 +8576,6 @@ snapshots: dependencies: helpful-errors: 1.5.3 - type-is@2.0.1: - dependencies: - content-type: 1.0.5 - media-typer: 1.1.0 - mime-types: 3.0.2 - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - typescript@5.4.5: {} undici-types@6.21.0: {} @@ -9642,9 +8584,9 @@ snapshots: universal-user-agent@7.0.3: {} - universalify@2.0.1: {} + universalify@0.1.2: {} - unpipe@1.0.0: {} + universalify@2.0.1: {} unrs-resolver@1.11.1: dependencies: @@ -9716,8 +8658,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - vary@1.1.2: {} - visualogic@1.3.2: dependencies: '@ehmpathy/error-fns': 1.0.2 @@ -9739,16 +8679,6 @@ snapshots: dependencies: defaults: 1.0.4 - which-typed-array@1.1.19: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - which@1.3.1: dependencies: isexe: 2.0.0 @@ -9806,26 +8736,6 @@ snapshots: domain-glossary-procedure: 1.0.0 visualogic: 1.3.2 - wrapper-fns@1.1.1(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76): - dependencies: - '@ehmpathy/uni-time': 1.7.4 - as-procedure: 1.1.10(@types/node@22.15.21)(zod@3.25.76) - bottleneck: 2.19.5 - domain-glossary-procedure: 1.0.0 - domain-objects: 0.31.7(@anthropic-ai/sdk@0.71.2(zod@3.25.76))(@types/node@22.15.21)(hono@4.11.3)(zod@3.25.76) - helpful-errors: 1.5.3 - simple-log-methods: 0.6.5 - transitivePeerDependencies: - - '@anthropic-ai/sdk' - - '@cfworker/json-schema' - - '@types/node' - - aws-crt - - debug - - hono - - supports-color - - ws - - zod - wrappy@1.0.2: {} write-file-atomic@5.0.1: @@ -9835,6 +8745,17 @@ snapshots: y18n@5.0.8: {} + yalc@1.0.0-pre.53: + dependencies: + chalk: 4.1.2 + detect-indent: 6.1.0 + fs-extra: 8.1.0 + glob: 7.2.3 + ignore: 5.3.2 + ini: 2.0.0 + npm-packlist: 2.2.2 + yargs: 16.2.0 + yallist@3.1.1: {} yaml@1.10.2: {} @@ -9843,6 +8764,8 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 + yaml@2.8.2: {} + yargs-parser@20.2.9: {} yargs-parser@21.1.1: {} @@ -9867,12 +8790,8 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@2.10.0: - dependencies: - buffer-crc32: 0.2.13 - fd-slicer: 1.1.0 - - yn@3.1.1: {} + yn@3.1.1: + optional: true yocto-queue@0.1.0: {} diff --git a/provision/github/declastruct.resources.ts b/provision/github.repo/resources.ts similarity index 95% rename from provision/github/declastruct.resources.ts rename to provision/github.repo/resources.ts index 214c582..d2bd1ed 100644 --- a/provision/github/declastruct.resources.ts +++ b/provision/github.repo/resources.ts @@ -1,12 +1,12 @@ -import { DeclastructProvider } from 'declastruct'; +import type { DeclastructProvider } from 'declastruct'; import { - DeclaredGithubBranch, + type DeclaredGithubBranch, DeclaredGithubBranchProtection, DeclaredGithubRepo, DeclaredGithubRepoConfig, getDeclastructGithubProvider, } from 'declastruct-github'; -import { DomainEntity, RefByUnique } from 'domain-objects'; +import { type DomainEntity, RefByUnique } from 'domain-objects'; import { UnexpectedCodePathError } from 'helpful-errors'; import pkg from '../../package.json'; @@ -62,7 +62,6 @@ export const getResources = async (): Promise[]> => { hasIssues: true, hasProjects: false, hasWiki: false, - hasDownloads: false, isTemplate: false, // only squash merges are allowed diff --git a/rhachet.use.ts b/rhachet.use.ts index 9738f4d..5b0032c 100644 --- a/rhachet.use.ts +++ b/rhachet.use.ts @@ -1,6 +1,7 @@ -import { InvokeHooks, RoleRegistry } from 'rhachet'; +import type { InvokeHooks, RoleRegistry } from 'rhachet'; +import { getRoleRegistry as getRoleRegistryBhuild, getInvokeHooks as getInvokeHooksBhuild } from 'rhachet-roles-bhuild'; import { getRoleRegistry as getRoleRegistryEhmpathy, getInvokeHooks as getInvokeHooksEhmpathy } from 'rhachet-roles-ehmpathy'; -export const getRoleRegistries = (): RoleRegistry[] => [getRoleRegistryEhmpathy()]; -export const getInvokeHooks = (): InvokeHooks[] => [getInvokeHooksEhmpathy()]; +export const getRoleRegistries = (): RoleRegistry[] => [getRoleRegistryBhuild(), getRoleRegistryEhmpathy()]; +export const getInvokeHooks = (): InvokeHooks[] => [getInvokeHooksBhuild(), getInvokeHooksEhmpathy()]; diff --git a/src/constraints/assertDomainObjectIsSafeToManipulate.test.ts b/src/constraints/assertDomainObjectIsSafeToManipulate.test.ts index 1e2af2e..acd0779 100644 --- a/src/constraints/assertDomainObjectIsSafeToManipulate.test.ts +++ b/src/constraints/assertDomainObjectIsSafeToManipulate.test.ts @@ -1,6 +1,7 @@ import { getUuid as uuid } from 'uuid-fns'; -import { DomainObject } from '../instantiation/DomainObject'; +import { DomainObject } from '@src/instantiation/DomainObject'; + import { assertDomainObjectIsSafeToManipulate } from './assertDomainObjectIsSafeToManipulate'; describe('assertDomainObjectIsSafeToManipulate', () => { diff --git a/src/constraints/assertDomainObjectIsSafeToManipulate.ts b/src/constraints/assertDomainObjectIsSafeToManipulate.ts index 6e7a3e0..9d1c25b 100644 --- a/src/constraints/assertDomainObjectIsSafeToManipulate.ts +++ b/src/constraints/assertDomainObjectIsSafeToManipulate.ts @@ -1,5 +1,5 @@ -import type { DomainObject } from '../instantiation/DomainObject'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; export class DomainObjectNotSafeToManipulateError extends Error { constructor({ diff --git a/src/domain/constants.ts b/src/domain.objects/constants.ts similarity index 100% rename from src/domain/constants.ts rename to src/domain.objects/constants.ts diff --git a/src/instantiation/DomainObject.ts b/src/instantiation/DomainObject.ts index 11c95df..6d0c8b6 100644 --- a/src/instantiation/DomainObject.ts +++ b/src/instantiation/DomainObject.ts @@ -1,5 +1,9 @@ -import { type WithImmute, withImmute } from '../manipulation/immute/withImmute'; -import type { DomainObjectShape } from '../reference/Refable'; +import { + type WithImmute, + withImmute, +} from '@src/manipulation/immute/withImmute'; +import type { DomainObjectShape } from '@src/reference/Refable'; + import { hydrateNestedDomainObjects } from './hydrate/hydrateNestedDomainObjects'; import { type SchemaOptions, validate } from './validate/validate'; import { VERSION } from './version'; diff --git a/src/instantiation/Ref.test.ts b/src/instantiation/Ref.test.ts index 1fecdec..91d17b3 100644 --- a/src/instantiation/Ref.test.ts +++ b/src/instantiation/Ref.test.ts @@ -1,6 +1,7 @@ -import { omitReadonly } from '../manipulation/omitReadonly'; -import { isRefByPrimary } from '../reference/isRefByPrimary'; -import { isRefByUnique } from '../reference/isRefByUnique'; +import { omitReadonly } from '@src/manipulation/omitReadonly'; +import { isRefByPrimary } from '@src/reference/isRefByPrimary'; +import { isRefByUnique } from '@src/reference/isRefByUnique'; + import { DomainEntity } from './DomainEntity'; import { DomainLiteral } from './DomainLiteral'; import { Ref } from './Ref'; diff --git a/src/instantiation/Ref.ts b/src/instantiation/Ref.ts index a68541a..1f8fed7 100644 --- a/src/instantiation/Ref.ts +++ b/src/instantiation/Ref.ts @@ -1,8 +1,9 @@ /** biome-ignore-all lint/suspicious/noExplicitAny: in this file, we depend on `any` to make it generic enough to reuse */ -import type { Ref as RefType } from '../reference/Ref.type'; -import type { DomainObjectShape, Refable } from '../reference/Refable'; -import { refByUnique } from '../reference/refByUnique'; +import type { Ref as RefType } from '@src/reference/Ref.type'; +import type { DomainObjectShape, Refable } from '@src/reference/Refable'; +import { refByUnique } from '@src/reference/refByUnique'; + import { DomainLiteral } from './DomainLiteral'; import { isOfDomainEntity } from './inherit/isOfDomainEntity'; import { isOfDomainEvent } from './inherit/isOfDomainEvent'; diff --git a/src/instantiation/RefByPrimary.test.ts b/src/instantiation/RefByPrimary.test.ts index a5f0e1c..19642c8 100644 --- a/src/instantiation/RefByPrimary.test.ts +++ b/src/instantiation/RefByPrimary.test.ts @@ -1,6 +1,7 @@ import type { HasMetadata, OmitMetadata } from 'type-fns'; -import { omitReadonly } from '../manipulation/omitReadonly'; +import { omitReadonly } from '@src/manipulation/omitReadonly'; + import { DomainEntity } from './DomainEntity'; import { DomainLiteral } from './DomainLiteral'; import { RefByPrimary } from './RefByPrimary'; diff --git a/src/instantiation/RefByPrimary.ts b/src/instantiation/RefByPrimary.ts index 572f148..af32d17 100644 --- a/src/instantiation/RefByPrimary.ts +++ b/src/instantiation/RefByPrimary.ts @@ -1,8 +1,10 @@ /* eslint-disable @typescript-eslint/no-redeclare */ import { BadRequestError } from 'helpful-errors'; -import type { DomainObjectShape, Refable } from '../reference/Refable'; -import type { RefKeysPrimary } from '../reference/RefKeysPrimary'; -import { refByPrimary } from '../reference/refByPrimary'; + +import type { DomainObjectShape, Refable } from '@src/reference/Refable'; +import type { RefKeysPrimary } from '@src/reference/RefKeysPrimary'; +import { refByPrimary } from '@src/reference/refByPrimary'; + import { DomainLiteral } from './DomainLiteral'; import { isOfDomainEntity } from './inherit/isOfDomainEntity'; import { isOfDomainEvent } from './inherit/isOfDomainEvent'; diff --git a/src/instantiation/RefByUnique.test.ts b/src/instantiation/RefByUnique.test.ts index 6de912d..d58183c 100644 --- a/src/instantiation/RefByUnique.test.ts +++ b/src/instantiation/RefByUnique.test.ts @@ -1,4 +1,5 @@ -import { omitReadonly } from '../manipulation/omitReadonly'; +import { omitReadonly } from '@src/manipulation/omitReadonly'; + import { DomainEntity } from './DomainEntity'; import { DomainLiteral } from './DomainLiteral'; import { Ref } from './Ref'; diff --git a/src/instantiation/RefByUnique.ts b/src/instantiation/RefByUnique.ts index 8a8d364..ef4eae4 100644 --- a/src/instantiation/RefByUnique.ts +++ b/src/instantiation/RefByUnique.ts @@ -1,8 +1,9 @@ /* eslint-disable @typescript-eslint/no-redeclare */ -import type { DomainObjectShape, Refable } from '../reference/Refable'; -import type { RefKeysUnique } from '../reference/RefKeysUnique'; -import { refByUnique } from '../reference/refByUnique'; +import type { DomainObjectShape, Refable } from '@src/reference/Refable'; +import type { RefKeysUnique } from '@src/reference/RefKeysUnique'; +import { refByUnique } from '@src/reference/refByUnique'; + import { DomainLiteral } from './DomainLiteral'; import { isOfDomainEntity } from './inherit/isOfDomainEntity'; import { isOfDomainEvent } from './inherit/isOfDomainEvent'; diff --git a/src/instantiation/hydrate/hydrateNestedDomainObjects.ts b/src/instantiation/hydrate/hydrateNestedDomainObjects.ts index 21a4af9..bedf79d 100644 --- a/src/instantiation/hydrate/hydrateNestedDomainObjects.ts +++ b/src/instantiation/hydrate/hydrateNestedDomainObjects.ts @@ -1,5 +1,5 @@ -import { DomainObject } from '../DomainObject'; -import { isOfDomainObject } from '../inherit/isOfDomainObject'; +import { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; const isArray = (val: T | Array): val is Array => Array.isArray(val); diff --git a/src/instantiation/inherit/isOfDomainEntity.test.ts b/src/instantiation/inherit/isOfDomainEntity.test.ts index 4bf57ec..8b1a2c0 100644 --- a/src/instantiation/inherit/isOfDomainEntity.test.ts +++ b/src/instantiation/inherit/isOfDomainEntity.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../DomainEntity'; -import { DomainLiteral } from '../DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { isOfDomainEntity } from './isOfDomainEntity'; describe('isOfDomainEntity', () => { diff --git a/src/instantiation/inherit/isOfDomainEntity.ts b/src/instantiation/inherit/isOfDomainEntity.ts index d55ba00..6f5a918 100644 --- a/src/instantiation/inherit/isOfDomainEntity.ts +++ b/src/instantiation/inherit/isOfDomainEntity.ts @@ -1,4 +1,7 @@ -import { DomainEntity, MARK_AS_DOMAIN_ENTITY } from '../DomainEntity'; +import { + DomainEntity, + MARK_AS_DOMAIN_ENTITY, +} from '@src/instantiation/DomainEntity'; /** * .what = checks if an object is an instance of DomainEntity diff --git a/src/instantiation/inherit/isOfDomainEvent.test.ts b/src/instantiation/inherit/isOfDomainEvent.test.ts index d865882..24c19f7 100644 --- a/src/instantiation/inherit/isOfDomainEvent.test.ts +++ b/src/instantiation/inherit/isOfDomainEvent.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../DomainEntity'; -import { DomainEvent } from '../DomainEvent'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainEvent } from '@src/instantiation/DomainEvent'; + import { isOfDomainEvent } from './isOfDomainEvent'; describe('isOfDomainEvent', () => { diff --git a/src/instantiation/inherit/isOfDomainEvent.ts b/src/instantiation/inherit/isOfDomainEvent.ts index bac8202..1e0f76c 100644 --- a/src/instantiation/inherit/isOfDomainEvent.ts +++ b/src/instantiation/inherit/isOfDomainEvent.ts @@ -1,4 +1,7 @@ -import { DomainEvent, MARK_AS_DOMAIN_EVENT } from '../DomainEvent'; +import { + DomainEvent, + MARK_AS_DOMAIN_EVENT, +} from '@src/instantiation/DomainEvent'; /** * .what = checks if an object is an instance of DomainEvent diff --git a/src/instantiation/inherit/isOfDomainLiteral.test.ts b/src/instantiation/inherit/isOfDomainLiteral.test.ts index 31cfb19..f82c608 100644 --- a/src/instantiation/inherit/isOfDomainLiteral.test.ts +++ b/src/instantiation/inherit/isOfDomainLiteral.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../DomainEntity'; -import { DomainLiteral } from '../DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { isOfDomainLiteral } from './isOfDomainLiteral'; describe('isOfDomainLiteral', () => { diff --git a/src/instantiation/inherit/isOfDomainLiteral.ts b/src/instantiation/inherit/isOfDomainLiteral.ts index b8b1849..68d1a70 100644 --- a/src/instantiation/inherit/isOfDomainLiteral.ts +++ b/src/instantiation/inherit/isOfDomainLiteral.ts @@ -1,4 +1,7 @@ -import { DomainLiteral, MARK_AS_DOMAIN_LITERAL } from '../DomainLiteral'; +import { + DomainLiteral, + MARK_AS_DOMAIN_LITERAL, +} from '@src/instantiation/DomainLiteral'; /** * .what = checks if an object is an instance of DomainLiteral diff --git a/src/instantiation/inherit/isOfDomainObject.test.ts b/src/instantiation/inherit/isOfDomainObject.test.ts index 6510958..127d49a 100644 --- a/src/instantiation/inherit/isOfDomainObject.test.ts +++ b/src/instantiation/inherit/isOfDomainObject.test.ts @@ -1,7 +1,8 @@ -import { DomainEntity } from '../DomainEntity'; -import { DomainEvent } from '../DomainEvent'; -import { DomainLiteral } from '../DomainLiteral'; -import { DomainObject } from '../DomainObject'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainEvent } from '@src/instantiation/DomainEvent'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; +import { DomainObject } from '@src/instantiation/DomainObject'; + import { isOfDomainObject } from './isOfDomainObject'; describe('isOfDomainObject', () => { diff --git a/src/instantiation/inherit/isOfDomainObject.ts b/src/instantiation/inherit/isOfDomainObject.ts index d8ae015..2f24b31 100644 --- a/src/instantiation/inherit/isOfDomainObject.ts +++ b/src/instantiation/inherit/isOfDomainObject.ts @@ -1,4 +1,7 @@ -import { DomainObject, MARK_AS_DOMAIN_OBJECT } from '../DomainObject'; +import { + DomainObject, + MARK_AS_DOMAIN_OBJECT, +} from '@src/instantiation/DomainObject'; /** * .what = checks if an object is an instance of DomainObject diff --git a/src/manipulation/HasReadonly.type.test.ts b/src/manipulation/HasReadonly.type.test.ts index 2e0a842..0973178 100644 --- a/src/manipulation/HasReadonly.type.test.ts +++ b/src/manipulation/HasReadonly.type.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import type { HasReadonly } from './HasReadonly.type'; describe('HasReadonly', () => { diff --git a/src/manipulation/clone/clone.test.ts b/src/manipulation/clone/clone.test.ts index ef0fb62..fdb54fd 100644 --- a/src/manipulation/clone/clone.test.ts +++ b/src/manipulation/clone/clone.test.ts @@ -1,6 +1,7 @@ import { given, then } from 'test-fns'; -import { DomainObject } from '../../instantiation/DomainObject'; +import { DomainObject } from '@src/instantiation/DomainObject'; + import { clone } from './clone'; describe('clone', () => { diff --git a/src/manipulation/clone/clone.ts b/src/manipulation/clone/clone.ts index 7c66377..8a2c404 100644 --- a/src/manipulation/clone/clone.ts +++ b/src/manipulation/clone/clone.ts @@ -1,4 +1,4 @@ -import type { DomainObject } from '../../instantiation/DomainObject'; +import type { DomainObject } from '@src/instantiation/DomainObject'; // todo: expose via type-fns type DeepPartial = { diff --git a/src/manipulation/getMetadataKeys.test.ts b/src/manipulation/getMetadataKeys.test.ts index 7b680f2..4059536 100644 --- a/src/manipulation/getMetadataKeys.test.ts +++ b/src/manipulation/getMetadataKeys.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainObject } from '../instantiation/DomainObject'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainObject } from '@src/instantiation/DomainObject'; + import { getMetadataKeys } from './getMetadataKeys'; describe('getMetadataKeys', () => { diff --git a/src/manipulation/getMetadataKeys.ts b/src/manipulation/getMetadataKeys.ts index d57d33e..f85068b 100644 --- a/src/manipulation/getMetadataKeys.ts +++ b/src/manipulation/getMetadataKeys.ts @@ -1,8 +1,9 @@ -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainObject } from '../instantiation/DomainObject'; -import { isOfDomainEntity } from '../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainEvent } from '../instantiation/inherit/isOfDomainEvent'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainEvent } from '@src/instantiation/inherit/isOfDomainEvent'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { DomainEntityUniqueKeysMustBeDefinedError } from './DomainEntityUniqueKeysMustBeDefinedError'; const DEFAULT_METADATA_KEYS = [ diff --git a/src/manipulation/getPrimaryIdentifier.test.ts b/src/manipulation/getPrimaryIdentifier.test.ts index b2212d0..e56c3eb 100644 --- a/src/manipulation/getPrimaryIdentifier.test.ts +++ b/src/manipulation/getPrimaryIdentifier.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { DomainEntityPrimaryKeysMustBeDefinedError } from './DomainEntityPrimaryKeysMustBeDefinedError'; import { getPrimaryIdentifier } from './getPrimaryIdentifier'; diff --git a/src/manipulation/getPrimaryIdentifier.ts b/src/manipulation/getPrimaryIdentifier.ts index 1bcf9a9..c21aa01 100644 --- a/src/manipulation/getPrimaryIdentifier.ts +++ b/src/manipulation/getPrimaryIdentifier.ts @@ -1,14 +1,15 @@ import { BadRequestError, UnexpectedCodePathError } from 'helpful-errors'; import { pick } from 'type-fns'; -import { assertDomainObjectIsSafeToManipulate } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainEvent } from '../instantiation/DomainEvent'; -import type { DomainLiteral } from '../instantiation/DomainLiteral'; -import { isOfDomainEntity } from '../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainEvent } from '../instantiation/inherit/isOfDomainEvent'; -import { isOfDomainLiteral } from '../instantiation/inherit/isOfDomainLiteral'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import { assertDomainObjectIsSafeToManipulate } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainEvent } from '@src/instantiation/DomainEvent'; +import type { DomainLiteral } from '@src/instantiation/DomainLiteral'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainEvent } from '@src/instantiation/inherit/isOfDomainEvent'; +import { isOfDomainLiteral } from '@src/instantiation/inherit/isOfDomainLiteral'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { DomainEntityPrimaryKeysMustBeDefinedError } from './DomainEntityPrimaryKeysMustBeDefinedError'; /** diff --git a/src/manipulation/getReadonlyKeys.test.ts b/src/manipulation/getReadonlyKeys.test.ts index 4751aed..37ad737 100644 --- a/src/manipulation/getReadonlyKeys.test.ts +++ b/src/manipulation/getReadonlyKeys.test.ts @@ -1,7 +1,8 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainEvent } from '../instantiation/DomainEvent'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; -import { DomainObject } from '../instantiation/DomainObject'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainEvent } from '@src/instantiation/DomainEvent'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; +import { DomainObject } from '@src/instantiation/DomainObject'; + import { getReadonlyKeys } from './getReadonlyKeys'; // Note: DomainEvent does not support explicit readonly keys because events are immutable by nature. diff --git a/src/manipulation/getReadonlyKeys.ts b/src/manipulation/getReadonlyKeys.ts index 5f8a783..7183aaa 100644 --- a/src/manipulation/getReadonlyKeys.ts +++ b/src/manipulation/getReadonlyKeys.ts @@ -1,7 +1,8 @@ -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainObject } from '../instantiation/DomainObject'; -import { isOfDomainEntity } from '../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { getMetadataKeys } from './getMetadataKeys'; /** diff --git a/src/manipulation/getUniqueIdentifier.test.ts b/src/manipulation/getUniqueIdentifier.test.ts index f5d6695..1403d2e 100644 --- a/src/manipulation/getUniqueIdentifier.test.ts +++ b/src/manipulation/getUniqueIdentifier.test.ts @@ -1,8 +1,9 @@ import { getUuid as uuid } from 'uuid-fns'; -import { DomainObjectNotSafeToManipulateError } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainObjectNotSafeToManipulateError } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { DomainEntityUniqueKeysMustBeDefinedError } from './DomainEntityUniqueKeysMustBeDefinedError'; import { getUniqueIdentifier } from './getUniqueIdentifier'; diff --git a/src/manipulation/getUniqueIdentifier.ts b/src/manipulation/getUniqueIdentifier.ts index b606c08..bf16566 100644 --- a/src/manipulation/getUniqueIdentifier.ts +++ b/src/manipulation/getUniqueIdentifier.ts @@ -1,15 +1,16 @@ import { BadRequestError, UnexpectedCodePathError } from 'helpful-errors'; import { pick } from 'type-fns'; -import { assertDomainObjectIsSafeToManipulate } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainEvent } from '../instantiation/DomainEvent'; -import type { DomainLiteral } from '../instantiation/DomainLiteral'; -import { isOfDomainEntity } from '../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainEvent } from '../instantiation/inherit/isOfDomainEvent'; -import { isOfDomainLiteral } from '../instantiation/inherit/isOfDomainLiteral'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; -import { refByUnique } from '../reference/refByUnique'; +import { assertDomainObjectIsSafeToManipulate } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainEvent } from '@src/instantiation/DomainEvent'; +import type { DomainLiteral } from '@src/instantiation/DomainLiteral'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainEvent } from '@src/instantiation/inherit/isOfDomainEvent'; +import { isOfDomainLiteral } from '@src/instantiation/inherit/isOfDomainLiteral'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; +import { refByUnique } from '@src/reference/refByUnique'; + import { DomainEntityUniqueKeysMustBeDefinedError } from './DomainEntityUniqueKeysMustBeDefinedError'; /** diff --git a/src/manipulation/getUniqueIdentifierSlug.test.ts b/src/manipulation/getUniqueIdentifierSlug.test.ts index f2ca0f9..134d8aa 100644 --- a/src/manipulation/getUniqueIdentifierSlug.test.ts +++ b/src/manipulation/getUniqueIdentifierSlug.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { getUniqueIdentifierSlug } from './getUniqueIdentifierSlug'; describe('getUniqueIdentifierSlug', () => { diff --git a/src/manipulation/getUniqueIdentifierSlug.ts b/src/manipulation/getUniqueIdentifierSlug.ts index bb3f7b1..7e1a0a0 100644 --- a/src/manipulation/getUniqueIdentifierSlug.ts +++ b/src/manipulation/getUniqueIdentifierSlug.ts @@ -1,7 +1,8 @@ import { getHash } from 'uuid-fns'; -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainLiteral } from '../instantiation/DomainLiteral'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { getUniqueIdentifier } from './getUniqueIdentifier'; /** diff --git a/src/manipulation/getUpdatableProperties.test.ts b/src/manipulation/getUpdatableProperties.test.ts index 58c3a16..fc282dd 100644 --- a/src/manipulation/getUpdatableProperties.test.ts +++ b/src/manipulation/getUpdatableProperties.test.ts @@ -1,7 +1,8 @@ import { getUuid as uuid } from 'uuid-fns'; -import { DomainObjectNotSafeToManipulateError } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import { DomainEntity } from '../instantiation/DomainEntity'; +import { DomainObjectNotSafeToManipulateError } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; + import { DomainEntityUpdatablePropertiesMustBeDefinedError } from './DomainEntityUpdatablePropertiesMustBeDefinedError'; import { getUpdatableProperties } from './getUpdatableProperties'; diff --git a/src/manipulation/getUpdatableProperties.ts b/src/manipulation/getUpdatableProperties.ts index d28c149..6267d1e 100644 --- a/src/manipulation/getUpdatableProperties.ts +++ b/src/manipulation/getUpdatableProperties.ts @@ -1,10 +1,11 @@ import { UnexpectedCodePathError } from 'helpful-errors'; import { pick } from 'type-fns'; -import { assertDomainObjectIsSafeToManipulate } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import type { DomainEntity } from '../instantiation/DomainEntity'; -import { isOfDomainEntity } from '../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import { assertDomainObjectIsSafeToManipulate } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { DomainEntityUpdatablePropertiesMustBeDefinedError } from './DomainEntityUpdatablePropertiesMustBeDefinedError'; /** diff --git a/src/manipulation/hasReadonly.test.ts b/src/manipulation/hasReadonly.test.ts index 4a1b61a..c1c92ac 100644 --- a/src/manipulation/hasReadonly.test.ts +++ b/src/manipulation/hasReadonly.test.ts @@ -1,7 +1,8 @@ import { AssureIsOfTypeRejectionError } from 'type-fns'; -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { DomainObjectMetadataMustBeDefinedError } from './DomainObjectMetadataMustBeDefinedError'; import { hasReadonly } from './hasReadonly'; diff --git a/src/manipulation/hasReadonly.ts b/src/manipulation/hasReadonly.ts index 13525eb..0041479 100644 --- a/src/manipulation/hasReadonly.ts +++ b/src/manipulation/hasReadonly.ts @@ -4,10 +4,11 @@ import { withAssure, } from 'type-fns'; -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainObject } from '../instantiation/DomainObject'; -import { isOfDomainEntity } from '../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { DomainObjectMetadataMustBeDefinedError } from './DomainObjectMetadataMustBeDefinedError'; import type { ConstructorOf, HasReadonly } from './HasReadonly.type'; diff --git a/src/manipulation/immute/withImmute.ts b/src/manipulation/immute/withImmute.ts index 19b0f42..9ab08dc 100644 --- a/src/manipulation/immute/withImmute.ts +++ b/src/manipulation/immute/withImmute.ts @@ -1,4 +1,4 @@ -import { clone } from '../clone/clone'; +import { clone } from '@src/manipulation/clone/clone'; /** * .what = wrappers which add immutability mechs on dobj instances diff --git a/src/manipulation/omitMetadata.test.ts b/src/manipulation/omitMetadata.test.ts index 08e3dcc..c9e7343 100644 --- a/src/manipulation/omitMetadata.test.ts +++ b/src/manipulation/omitMetadata.test.ts @@ -1,7 +1,8 @@ import Joi from 'joi'; -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { DomainEntityUniqueKeysMustBeDefinedError } from './DomainEntityUniqueKeysMustBeDefinedError'; import { omitMetadata } from './omitMetadata'; diff --git a/src/manipulation/omitMetadata.ts b/src/manipulation/omitMetadata.ts index 7ae6483..54ba3f7 100644 --- a/src/manipulation/omitMetadata.ts +++ b/src/manipulation/omitMetadata.ts @@ -1,9 +1,10 @@ import { UnexpectedCodePathError } from 'helpful-errors'; import { omit } from 'type-fns'; -import { assertDomainObjectIsSafeToManipulate } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import type { DomainObject } from '../instantiation/DomainObject'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import { assertDomainObjectIsSafeToManipulate } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { getMetadataKeys } from './getMetadataKeys'; /** diff --git a/src/manipulation/omitReadonly.test.ts b/src/manipulation/omitReadonly.test.ts index 73970eb..180a66b 100644 --- a/src/manipulation/omitReadonly.test.ts +++ b/src/manipulation/omitReadonly.test.ts @@ -1,8 +1,9 @@ import Joi from 'joi'; -import { DomainEntity } from '../instantiation/DomainEntity'; -import { DomainEvent } from '../instantiation/DomainEvent'; -import { DomainLiteral } from '../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainEvent } from '@src/instantiation/DomainEvent'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { omitReadonly } from './omitReadonly'; describe('omitReadonly', () => { diff --git a/src/manipulation/omitReadonly.ts b/src/manipulation/omitReadonly.ts index 0117408..db0fa47 100644 --- a/src/manipulation/omitReadonly.ts +++ b/src/manipulation/omitReadonly.ts @@ -1,9 +1,10 @@ import { UnexpectedCodePathError } from 'helpful-errors'; import { omit } from 'type-fns'; -import { assertDomainObjectIsSafeToManipulate } from '../constraints/assertDomainObjectIsSafeToManipulate'; -import type { DomainObject } from '../instantiation/DomainObject'; -import { isOfDomainObject } from '../instantiation/inherit/isOfDomainObject'; +import { assertDomainObjectIsSafeToManipulate } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; + import { getReadonlyKeys } from './getReadonlyKeys'; /** diff --git a/src/manipulation/relate/dedupe.test.ts b/src/manipulation/relate/dedupe.test.ts index a06795b..d2ba200 100644 --- a/src/manipulation/relate/dedupe.test.ts +++ b/src/manipulation/relate/dedupe.test.ts @@ -1,7 +1,8 @@ import { getError } from 'test-fns'; -import { DomainEntity } from '../../instantiation/DomainEntity'; -import { DomainLiteral } from '../../instantiation/DomainLiteral'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; + import { dedupe } from './dedupe'; describe('dedupe', () => { diff --git a/src/manipulation/relate/dedupe.ts b/src/manipulation/relate/dedupe.ts index 5551507..5a38513 100644 --- a/src/manipulation/relate/dedupe.ts +++ b/src/manipulation/relate/dedupe.ts @@ -1,12 +1,12 @@ import { BadRequestError, UnexpectedCodePathError } from 'helpful-errors'; -import type { DomainEntity } from '../../instantiation/DomainEntity'; -import type { DomainObject } from '../../instantiation/DomainObject'; -import { isOfDomainEntity } from '../../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainObject } from '../../instantiation/inherit/isOfDomainObject'; -import { getUniqueIdentifier } from '../getUniqueIdentifier'; -import { omitMetadata } from '../omitMetadata'; -import { serialize } from '../serde/serialize'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainObject } from '@src/instantiation/DomainObject'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; +import { getUniqueIdentifier } from '@src/manipulation/getUniqueIdentifier'; +import { omitMetadata } from '@src/manipulation/omitMetadata'; +import { serialize } from '@src/manipulation/serde/serialize'; // define how to get the dedupe identity key for any object const toDedupeIdentity = (obj: T) => diff --git a/src/manipulation/serde/deserialize.test.ts b/src/manipulation/serde/deserialize.test.ts index 4ad2931..5c91b07 100644 --- a/src/manipulation/serde/deserialize.test.ts +++ b/src/manipulation/serde/deserialize.test.ts @@ -1,10 +1,10 @@ import { startDurationStopwatch } from '@ehmpathy/uni-time'; import Joi from 'joi'; -import { DomainEntity } from '../../instantiation/DomainEntity'; -import { DomainLiteral } from '../../instantiation/DomainLiteral'; -import { deserialize } from './deserialize'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; +import { deserialize } from './deserialize'; /* eslint-disable no-useless-escape */ import { serialize } from './serialize'; diff --git a/src/manipulation/serde/deserialize.ts b/src/manipulation/serde/deserialize.ts index cc8a54a..3fb63ed 100644 --- a/src/manipulation/serde/deserialize.ts +++ b/src/manipulation/serde/deserialize.ts @@ -1,5 +1,5 @@ -import type { DomainObject } from '../..'; -import type { DomainObjectInstantiationOptions } from '../../instantiation/DomainObject'; +import type { DomainObjectInstantiationOptions } from '@src/instantiation/DomainObject'; +import type { DomainObject } from '@src/manipulation/..'; export class DeserializationMissingDomainObjectClassError extends Error { constructor({ className }: { className: string }) { diff --git a/src/manipulation/serde/serialize.test.ts b/src/manipulation/serde/serialize.test.ts index e432637..c3ac252 100644 --- a/src/manipulation/serde/serialize.test.ts +++ b/src/manipulation/serde/serialize.test.ts @@ -1,9 +1,9 @@ import { getUuid as uuid } from 'uuid-fns'; -import { DomainObjectNotSafeToManipulateError } from '../../constraints/assertDomainObjectIsSafeToManipulate'; -import { DomainObject } from '../../index'; -import { DomainEntity } from '../../instantiation/DomainEntity'; -import { DomainLiteral } from '../../instantiation/DomainLiteral'; +import { DomainObjectNotSafeToManipulateError } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import { DomainObject } from '@src/index'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import { DomainLiteral } from '@src/instantiation/DomainLiteral'; /* eslint-disable no-useless-escape */ import { serialize } from './serialize'; diff --git a/src/manipulation/serde/serialize.ts b/src/manipulation/serde/serialize.ts index 6b25a4a..5459995 100644 --- a/src/manipulation/serde/serialize.ts +++ b/src/manipulation/serde/serialize.ts @@ -1,11 +1,11 @@ /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable no-underscore-dangle */ -import { assertDomainObjectIsSafeToManipulate } from '../../constraints/assertDomainObjectIsSafeToManipulate'; -import { isOfDomainEntity } from '../../instantiation/inherit/isOfDomainEntity'; -import { isOfDomainLiteral } from '../../instantiation/inherit/isOfDomainLiteral'; -import { isOfDomainObject } from '../../instantiation/inherit/isOfDomainObject'; -import { getUniqueIdentifier } from '../getUniqueIdentifier'; +import { assertDomainObjectIsSafeToManipulate } from '@src/constraints/assertDomainObjectIsSafeToManipulate'; +import { isOfDomainEntity } from '@src/instantiation/inherit/isOfDomainEntity'; +import { isOfDomainLiteral } from '@src/instantiation/inherit/isOfDomainLiteral'; +import { isOfDomainObject } from '@src/instantiation/inherit/isOfDomainObject'; +import { getUniqueIdentifier } from '@src/manipulation/getUniqueIdentifier'; interface SerializeOptions { /** diff --git a/src/reference/Ref.type.test.ts b/src/reference/Ref.type.test.ts index 3e7c66e..cb4dab6 100644 --- a/src/reference/Ref.type.test.ts +++ b/src/reference/Ref.type.test.ts @@ -1,6 +1,7 @@ import { given, then } from 'test-fns'; -import { DomainEntity } from '../instantiation/DomainEntity'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; + import type { Ref } from './Ref.type'; describe('DomainReference', () => { diff --git a/src/reference/Ref.type.ts b/src/reference/Ref.type.ts index 778c619..8d2bf54 100644 --- a/src/reference/Ref.type.ts +++ b/src/reference/Ref.type.ts @@ -1,5 +1,6 @@ -import type { RefByPrimary } from '../instantiation/RefByPrimary'; -import type { RefByUnique } from '../instantiation/RefByUnique'; +import type { RefByPrimary } from '@src/instantiation/RefByPrimary'; +import type { RefByUnique } from '@src/instantiation/RefByUnique'; + import type { DomainObjectShape, Refable } from './Refable'; /** diff --git a/src/reference/RefKeysUnique.test.ts b/src/reference/RefKeysUnique.test.ts index ac5e073..8f52123 100644 --- a/src/reference/RefKeysUnique.test.ts +++ b/src/reference/RefKeysUnique.test.ts @@ -1,4 +1,5 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; + import type { RefKeysUnique } from './RefKeysUnique'; describe('RefKeysUnique', () => { diff --git a/src/reference/Refable.ts b/src/reference/Refable.ts index 67670ad..cc141f1 100644 --- a/src/reference/Refable.ts +++ b/src/reference/Refable.ts @@ -1,5 +1,5 @@ -import type { DomainEntity } from '../instantiation/DomainEntity'; -import type { DomainEvent } from '../instantiation/DomainEvent'; +import type { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { DomainEvent } from '@src/instantiation/DomainEvent'; export type DomainObjectShape = Record; diff --git a/src/reference/isRefByPrimary.test.ts b/src/reference/isRefByPrimary.test.ts index 4ad4813..faa1920 100644 --- a/src/reference/isRefByPrimary.test.ts +++ b/src/reference/isRefByPrimary.test.ts @@ -1,6 +1,7 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import type { RefByPrimary } from '../instantiation/RefByPrimary'; -import type { RefByUnique } from '../instantiation/RefByUnique'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { RefByPrimary } from '@src/instantiation/RefByPrimary'; +import type { RefByUnique } from '@src/instantiation/RefByUnique'; + import { isRefByPrimary } from './isRefByPrimary'; describe('isRefByPrimary', () => { diff --git a/src/reference/isRefByPrimary.ts b/src/reference/isRefByPrimary.ts index 5f7b147..6cd8c69 100644 --- a/src/reference/isRefByPrimary.ts +++ b/src/reference/isRefByPrimary.ts @@ -1,7 +1,8 @@ import { UnexpectedCodePathError } from 'helpful-errors'; import { isPresent } from 'type-fns'; -import type { RefByPrimary } from '../instantiation/RefByPrimary'; +import type { RefByPrimary } from '@src/instantiation/RefByPrimary'; + import type { Ref } from './Ref.type'; import type { DomainObjectShape, Refable } from './Refable'; diff --git a/src/reference/isRefByUnique.test.ts b/src/reference/isRefByUnique.test.ts index d41f54a..b912d11 100644 --- a/src/reference/isRefByUnique.test.ts +++ b/src/reference/isRefByUnique.test.ts @@ -1,6 +1,7 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import type { RefByPrimary } from '../instantiation/RefByPrimary'; -import type { RefByUnique } from '../instantiation/RefByUnique'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { RefByPrimary } from '@src/instantiation/RefByPrimary'; +import type { RefByUnique } from '@src/instantiation/RefByUnique'; + import { isRefByUnique } from './isRefByUnique'; describe('isRefByUnique', () => { diff --git a/src/reference/isRefByUnique.ts b/src/reference/isRefByUnique.ts index b71599c..cd3393a 100644 --- a/src/reference/isRefByUnique.ts +++ b/src/reference/isRefByUnique.ts @@ -1,7 +1,8 @@ import { UnexpectedCodePathError } from 'helpful-errors'; import { isPresent } from 'type-fns'; -import type { RefByUnique } from '../instantiation/RefByUnique'; +import type { RefByUnique } from '@src/instantiation/RefByUnique'; + import type { Ref } from './Ref.type'; import type { DomainObjectShape, Refable } from './Refable'; diff --git a/src/reference/refByPrimary.test.ts b/src/reference/refByPrimary.test.ts index 1e8017a..2eb4396 100644 --- a/src/reference/refByPrimary.test.ts +++ b/src/reference/refByPrimary.test.ts @@ -1,7 +1,8 @@ import type { HasMetadata } from 'type-fns'; -import { DomainEntity } from '../instantiation/DomainEntity'; -import type { RefByPrimary } from '../instantiation/RefByPrimary'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { RefByPrimary } from '@src/instantiation/RefByPrimary'; + import { refByPrimary } from './refByPrimary'; describe('refByPrimary', () => { diff --git a/src/reference/refByPrimary.ts b/src/reference/refByPrimary.ts index c552071..0b6da70 100644 --- a/src/reference/refByPrimary.ts +++ b/src/reference/refByPrimary.ts @@ -1,6 +1,7 @@ import { BadRequestError, UnexpectedCodePathError } from 'helpful-errors'; -import type { RefByPrimary } from '../instantiation/RefByPrimary'; +import type { RefByPrimary } from '@src/instantiation/RefByPrimary'; + import type { DomainObjectShape, Refable } from './Refable'; /** diff --git a/src/reference/refByUnique.test.ts b/src/reference/refByUnique.test.ts index fa0d00b..5e2d99e 100644 --- a/src/reference/refByUnique.test.ts +++ b/src/reference/refByUnique.test.ts @@ -1,5 +1,6 @@ -import { DomainEntity } from '../instantiation/DomainEntity'; -import type { RefByUnique } from '../instantiation/RefByUnique'; +import { DomainEntity } from '@src/instantiation/DomainEntity'; +import type { RefByUnique } from '@src/instantiation/RefByUnique'; + import { refByUnique } from './refByUnique'; describe('refByUnique', () => { diff --git a/src/reference/refByUnique.ts b/src/reference/refByUnique.ts index 1c7fea2..511307c 100644 --- a/src/reference/refByUnique.ts +++ b/src/reference/refByUnique.ts @@ -1,6 +1,7 @@ import { UnexpectedCodePathError } from 'helpful-errors'; -import type { RefByUnique } from '../instantiation/RefByUnique'; +import type { RefByUnique } from '@src/instantiation/RefByUnique'; + import type { DomainObjectShape, Refable } from './Refable'; /** diff --git a/tsconfig.json b/tsconfig.json index 65b6d74..19fef51 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,7 +13,16 @@ "target": "es2020", "incremental": true, "module": "commonjs", - "moduleResolution": "node" + "moduleResolution": "node", + "baseUrl": ".", + "paths": { + "@/*": [ + "*" + ], + "@src/*": [ + "src/*" + ] + } }, "extends": [ "@tsconfig/strictest/tsconfig.json",