diff --git a/.commitlintrc.yaml b/.commitlintrc.yaml deleted file mode 100644 index b7349cf..0000000 --- a/.commitlintrc.yaml +++ /dev/null @@ -1,75 +0,0 @@ -extends: - - '@commitlint/config-conventional' -rules: - type-enum: - - 2 - - always - - - - feat - - perf - - fix - - refactor - - docs - - build - - types - - chore - - examples - - test - - style - - ci - - init -prompt: - messages: - type: '选择你要提交的类型 :' - scope: '选择一个提交范围 (可选) :' - customScope: '请输入自定义的提交范围 :' - subject: "填写简短精炼的变更描述 :\n" - body: "填写更加详细的变更描述 (可选) 。使用 \"|\" 换行 :\n" - breaking: "列举非兼容性重大的变更 (可选) 。使用 \"|\" 换行 :\n" - footerPrefixesSelect: '设置关联issue前缀 (可选) :' - customFooterPrefix: '输入自定义issue前缀 :' - footer: "列举关联issue (可选) 例如: #1 :\n" - confirmCommit: 是否提交或修改commit ? - types: - - value: feat - name: '🚀 Features: 新功能' - emoji: 🚀 - - value: perf - name: '🔥 Performance: 性能优化' - emoji: 🔥 - - value: fix - name: '🩹 Fixes: 缺陷修复' - emoji: 🩹 - - value: refactor - name: '💅 Refactors: 代码重构' - emoji: 💅 - - value: docs - name: '📖 Documentation: 文档' - emoji: 📖 - - value: build - name: '📦 Build: 构建工具' - emoji: 📦 - - value: types - name: '🌊 Types: 类型定义' - emoji: 🌊 - - value: chore - name: '🏡 Chore: 简修处理' - emoji: 🏡 - - value: examples - name: '🏀 Examples: 例子展示' - emoji: 🏀 - - value: test - name: '✅ Tests: 测试用例' - emoji: ✅ - - value: style - name: '🎨 Styles: 代码风格' - emoji: 🎨 - - value: ci - name: '🤖 CI: 持续集成' - emoji: 🤖 - - value: init - name: '🎉 Init: 项目初始化' - emoji: 🎉 - useEmoji: true - scopes: [] - maxHeaderLength: 72 diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 94f480d..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -* text=auto eol=lf \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 8c4106a..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,139 +0,0 @@ -name: Release - -permissions: - contents: write - -on: - push: - tags: - - 'v*' - -jobs: - build: - name: 构建并发版 - runs-on: ubuntu-latest - - steps: - - name: 检出代码 - uses: actions/checkout@v4 - - - name: 获取当前和上一个标签 - id: get_tags - run: | - git fetch --prune --unshallow - tags=($(git tag -l --sort=-version:refname)) - current_tag=${tags[0]} - previous_tag=${tags[1]} - echo "previous_tag=$previous_tag" >> $GITHUB_OUTPUT - echo "current_tag=$current_tag" >> $GITHUB_OUTPUT - - - name: 提取并分类提交消息 - id: extract_commit_messages - run: | - set -e - current_tag="${{ steps.get_tags.outputs.current_tag }}" - previous_tag="${{ steps.get_tags.outputs.previous_tag }}" - if [ -z "$previous_tag" ]; then - commit_messages=$(git log --pretty=format:"%s - by @%an (%h)" "$current_tag" | grep -E 'feat|fix|docs|perf' || true) - else - commit_messages=$(git log --pretty=format:"%s - by @%an (%h)" "$previous_tag".."$current_tag" | grep -E 'feat|fix|docs|perf' || true) - fi - - # 转义 ` 字符 - commit_messages=$(echo "$commit_messages" | sed 's/`/\\\`/g') - - # feat_messages=$(echo "$commit_messages" | grep 'feat' || true) - # fix_messages=$(echo "$commit_messages" | grep 'fix' || true) - # docs_messages=$(echo "$commit_messages" | grep 'docs' || true) - # perf_messages=$(echo "$commit_messages" | grep 'perf' || true) - - # feat_messages=("${feat_messages[@]//\`/\\\`}") - # fix_messages=("${fix_messages[@]//\`/\\\`}") - # docs_messages=("${docs_messages[@]//\`/\\\`}") - # perf_messages=("${perf_messages[@]//\`/\\\`}") - - # echo "feat_messages=(${feat_messages[@]})" >> $GITHUB_OUTPUT - # echo "fix_messages=(${fix_messages[@]})" >> $GITHUB_OUTPUT - # echo "docs_messages=(${docs_messages[@]})" >> $GITHUB_OUTPUT - # echo "perf_messages=(${perf_messages[@]})" >> $GITHUB_OUTPUT - - { - echo 'feat_messages<> $GITHUB_OUTPUT - { - echo 'fix_messages<> $GITHUB_OUTPUT - { - echo 'docs_messages<> $GITHUB_OUTPUT - { - echo 'perf_messages<> $GITHUB_OUTPUT - - - name: 获取当前分支名 - id: get_branch_name - run: | - branch_name=$(git rev-parse --abbrev-ref HEAD) - echo "branch_name=$branch_name" >> $GITHUB_OUTPUT - - - name: 发版详情 - id: generate_release_notes - run: | - # 提取提交消息分类 - feat_messages=("${{ steps.extract_commit_messages.outputs.feat_messages }}") - fix_messages=("${{ steps.extract_commit_messages.outputs.fix_messages }}") - docs_messages=("${{ steps.extract_commit_messages.outputs.docs_messages }}") - perf_messages=("${{ steps.extract_commit_messages.outputs.perf_messages }}") - - release_notes="" - - if [[ -n "$feat_messages" ]]; then - release_notes="$release_notes\n### 🚀 Features 新功能: \n" - while IFS= read -r message; do - release_notes="$release_notes\n- $message" - done <<< "$feat_messages" - fi - - if [[ -n "$fix_messages" ]]; then - release_notes="$release_notes\n### 🩹 Fixes 缺陷修复: \n" - while IFS= read -r message; do - release_notes="$release_notes\n- $message" - done <<< "$fix_messages" - fi - - if [[ -n "$docs_messages" ]]; then - release_notes="$release_notes\n### 📖 Documentation 文档: \n" - while IFS= read -r message; do - release_notes="$release_notes\n- $message" - done <<< "$docs_messages" - fi - - if [[ -n "$perf_messages" ]]; then - release_notes="$release_notes\n### 🔥 Performance 性能优化: \n" - while IFS= read -r message; do - release_notes="$release_notes\n- $message" - done <<< "$perf_messages" - fi - - # 转义 ` 字符 - release_notes=$(echo "$release_notes" | sed 's/`/\\\`/g') - echo "release_notes=$release_notes" >> $GITHUB_OUTPUT - - - name: 写入生成的发布说明到 changelog.md - run: | - echo -e "${{ steps.generate_release_notes.outputs.release_notes }}" > changelog.md - cat changelog.md - - - name: 引用 changelog.md 创建发版 - id: release_tag - uses: ncipollo/release-action@v1.14.0 - with: - bodyFile: changelog.md diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 9df2a89..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Deploy Test Coverage to GitHub Pages - -permissions: - contents: write # 允许 GitHub Actions 写入仓库,其中包括创建分支、提交代码等 - -on: - workflow_dispatch: # 允许手动触发 - push: - branches: - - main # 监听 main 分支 - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - # region: 前端项目构建前置步骤:检出代码、依赖安装、构建(pnpm、nodejs) - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup pnpm - uses: pnpm/action-setup@v4 - with: - version: 9 # pnpm 版本,一些pnpm项目带有lockfile的时候,需要版本的匹配,否则可能会报错(pnpm版本不匹配时,会忽略锁文件) - run_install: false - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 # Node.js 版本 - # node-version-file: ".nvmrc" # 从 .nvmrc 文件中读取 Node.js 版本,与 node-version 二选一 - cache: pnpm # 缓存 pnpm - # endregion - - # region: 前端项目构建,根据具体项目情况修改,此处以 为例 - - name: Install dependencies for monorepo - run: pnpm install --recursive --frozen-lockfile - - - name: Build all projects - run: pnpm run build - - - name: Run Test - run: pnpm run test:coverage - # endregion - - # region: 部署到 GitHub Pages,此处采用 peaceiris/actions-gh-pages@v4 - # 该插件可以基于之前的构建流程,通过配置 publish_dir 来指定将要发布的目录 - # 之后会将 publish_dir 目录下的文件推送到 gh-pages 分支,当然分支名称也是可以配置的 - # 最后需要在 GitHub 仓库的 Settings -> Pages 中设置 gh-pages 分支作为 GitHub Pages 的源 - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./coverage # 构建输出目录 - publish_branch: coverage # 发布分支,可选,默认为 gh-pages - # endregion diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f153a1e..0000000 --- a/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Dependencies -node_modules - -# Build Outputs -build -dist -coverage -test-cache \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 220004a..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "typescript.tsdk": "node_modules/typescript/lib", - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports": "never" - }, - - "editor.quickSuggestions": { - "strings": "on" - }, - "editor.formatOnSave": false, - "eslint.useFlatConfig": true, - - "yaml.schemas": { - "schema/commitlint-with-cz.json": ".commitlintrc.yaml" - }, - - "explorer.fileNesting.enabled": true, - "explorer.fileNesting.patterns": { - "vite.config.*": "pages.config.*, manifest.config.*, uno.config.*, volar.config.*, *.env, .env.*", - "env.d.*": "shims.d.*, uni-pages.d.*, components.d.*, auto-imports.d*, manifest.json, pages.json, theme.json", - "package.json": "pnpm-*.yaml, .gitignore, .gitattributes, .npmrc, .nvmrc", - "lefthook.*": "eslint.config.*, .commitlintrc.*" - } -} diff --git a/base.css b/base.css new file mode 100644 index 0000000..f418035 --- /dev/null +++ b/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/block-navigation.js b/block-navigation.js new file mode 100644 index 0000000..cc12130 --- /dev/null +++ b/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selecter that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/clover.xml b/clover.xml new file mode 100644 index 0000000..56ce1e7 --- /dev/null +++ b/clover.xml @@ -0,0 +1,6193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coverage-final.json b/coverage-final.json new file mode 100644 index 0000000..b30b2b8 --- /dev/null +++ b/coverage-final.json @@ -0,0 +1,108 @@ +{"/home/runner/work/https-enable/https-enable/examples/express/index.js": {"path":"/home/runner/work/https-enable/https-enable/examples/express/index.js","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":67}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":49}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":17}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":28}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":34}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":34}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":40}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":53}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":2}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":37}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":65}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":2}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":30}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":28}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":37}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}}},"s":{"0":0,"1":0,"2":0,"3":0,"5":0,"6":0,"8":0,"10":0,"11":0,"12":0,"13":0,"15":0,"16":0,"17":0,"18":0,"19":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":32},"end":{"line":32,"column":-284}},"locations":[{"start":{"line":1,"column":32},"end":{"line":32,"column":-284}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":32},"end":{"line":32,"column":-284}},"loc":{"start":{"line":1,"column":32},"end":{"line":32,"column":-284}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/examples/fastify/index.js": {"path":"/home/runner/work/https-enable/https-enable/examples/fastify/index.js","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":67}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":15}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":2}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":44}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":2}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":48}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":10}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":38}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":67}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":2}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":37}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":65}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":30}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":28}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":2}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":37}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":35}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":2}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"6":0,"7":0,"8":0,"10":0,"11":0,"13":0,"14":0,"15":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"24":0,"25":0,"26":0,"28":0,"29":0,"30":0,"32":0,"33":0,"34":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":83},"end":{"line":35,"column":-294}},"locations":[{"start":{"line":1,"column":83},"end":{"line":35,"column":-294}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":83},"end":{"line":35,"column":-294}},"loc":{"start":{"line":1,"column":83},"end":{"line":35,"column":-294}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/examples/koa/index.js": {"path":"/home/runner/work/https-enable/https-enable/examples/koa/index.js","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":31}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":59}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":49}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":21}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":24}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":2}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":40}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":34}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":10}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":67}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":2}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":37}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":65}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":2}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":30}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":28}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":37}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}}},"s":{"0":0,"1":0,"2":0,"3":0,"5":0,"7":0,"8":0,"10":0,"11":0,"12":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":32},"end":{"line":32,"column":-298}},"locations":[{"start":{"line":1,"column":32},"end":{"line":32,"column":-298}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":32},"end":{"line":32,"column":-298}},"loc":{"start":{"line":1,"column":32},"end":{"line":32,"column":-298}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/examples/nestjs/src/app.controller.ts": {"path":"/home/runner/work/https-enable/https-enable/examples/nestjs/src/app.controller.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":43}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":13}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":57}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":8}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":22}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":38}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}}},"s":{"0":0,"1":0,"3":0,"4":0,"5":0,"7":0,"8":0,"9":0,"10":0,"11":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":273},"end":{"line":12,"column":1}},"locations":[{"start":{"line":1,"column":273},"end":{"line":12,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":273},"end":{"line":12,"column":1}},"loc":{"start":{"line":1,"column":273},"end":{"line":12,"column":1}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/examples/nestjs/src/app.module.ts": {"path":"/home/runner/work/https-enable/https-enable/examples/nestjs/src/app.module.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":9}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":31}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":26}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":2}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":25}}},"s":{"0":0,"1":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":248},"end":{"line":10,"column":25}},"locations":[{"start":{"line":1,"column":248},"end":{"line":10,"column":25}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":248},"end":{"line":10,"column":25}},"loc":{"start":{"line":1,"column":248},"end":{"line":10,"column":25}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/examples/nestjs/src/app.service.ts": {"path":"/home/runner/work/https-enable/https-enable/examples/nestjs/src/app.service.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":44}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":13}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":1}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":141},"end":{"line":8,"column":1}},"locations":[{"start":{"line":1,"column":141},"end":{"line":8,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":141},"end":{"line":8,"column":1}},"loc":{"start":{"line":1,"column":141},"end":{"line":8,"column":1}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/examples/nestjs/src/main.ts": {"path":"/home/runner/work/https-enable/https-enable/examples/nestjs/src/main.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":8}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":63}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":14}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":53}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":36}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":12}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":67}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":76}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":68}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":5}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":1}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":17}}},"s":{"1":0,"2":0,"3":0,"5":0,"9":0,"14":0,"16":0,"17":0,"18":0,"19":0,"21":0,"23":0,"24":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"33":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1069},"end":{"line":34,"column":17}},"locations":[{"start":{"line":1,"column":1069},"end":{"line":34,"column":17}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1069},"end":{"line":34,"column":17}},"loc":{"start":{"line":1,"column":1069},"end":{"line":34,"column":17}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/express/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/express/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":15}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":3}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":35}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":14}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":63}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":7}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":6}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":4}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":7}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":50}}},"s":{"0":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"21":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":441},"end":{"line":22,"column":50}},"locations":[{"start":{"line":1,"column":441},"end":{"line":22,"column":50}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":441},"end":{"line":22,"column":50}},"loc":{"start":{"line":1,"column":441},"end":{"line":22,"column":50}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/express/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/express/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":489},"end":{"line":12,"column":31}},"locations":[{"start":{"line":1,"column":489},"end":{"line":12,"column":31}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":489},"end":{"line":12,"column":31}},"loc":{"start":{"line":1,"column":489},"end":{"line":12,"column":31}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/express/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/express/dist/index.mjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":3}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":35}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":23}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":63}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":7}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":6}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":4}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":7}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":20,"column":-100}},"locations":[{"start":{"line":1,"column":0},"end":{"line":20,"column":-100}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":20,"column":-100}},"loc":{"start":{"line":1,"column":0},"end":{"line":20,"column":-100}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/express/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/express/src/index.ts","all":true,"statementMap":{"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":49}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":84}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":33}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":14}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":62}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":20}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":34}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":16}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":9}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":14}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":64}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":9}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":7}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":35}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":51}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":1}}},"s":{"4":0,"6":0,"7":0,"8":0,"9":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"23":0,"24":0,"25":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":778},"end":{"line":26,"column":1}},"locations":[{"start":{"line":1,"column":778},"end":{"line":26,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":778},"end":{"line":26,"column":1}},"loc":{"start":{"line":1,"column":778},"end":{"line":26,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":53}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":43}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":39}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":16}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":50}}},"s":{"0":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"17":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":407},"end":{"line":18,"column":50}},"locations":[{"start":{"line":1,"column":407},"end":{"line":18,"column":50}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":407},"end":{"line":18,"column":50}},"loc":{"start":{"line":1,"column":407},"end":{"line":18,"column":50}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":679},"end":{"line":15,"column":31}},"locations":[{"start":{"line":1,"column":679},"end":{"line":15,"column":31}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":679},"end":{"line":15,"column":31}},"loc":{"start":{"line":1,"column":679},"end":{"line":15,"column":31}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/dist/index.mjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":32}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":43}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":40}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":19}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":16,"column":-96}},"locations":[{"start":{"line":1,"column":0},"end":{"line":16,"column":-96}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":16,"column":-96}},"loc":{"start":{"line":1,"column":0},"end":{"line":16,"column":-96}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/fastify/src/index.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":67}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":56}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":11}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":22}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":38}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":39}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":66}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":65}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}}},"s":{"3":0,"7":0,"8":0,"9":0,"10":0,"12":0,"13":0,"14":0,"15":0,"17":0,"18":0,"19":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":639},"end":{"line":20,"column":1}},"locations":[{"start":{"line":1,"column":639},"end":{"line":20,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":639},"end":{"line":20,"column":1}},"loc":{"start":{"line":1,"column":639},"end":{"line":20,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/koa/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/koa/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":49}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":7}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":19}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":16}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":42}}},"s":{"0":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"14":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":269},"end":{"line":15,"column":42}},"locations":[{"start":{"line":1,"column":269},"end":{"line":15,"column":42}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":269},"end":{"line":15,"column":42}},"loc":{"start":{"line":1,"column":269},"end":{"line":15,"column":42}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/koa/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/koa/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":517},"end":{"line":14,"column":27}},"locations":[{"start":{"line":1,"column":517},"end":{"line":14,"column":27}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":517},"end":{"line":14,"column":27}},"loc":{"start":{"line":1,"column":517},"end":{"line":14,"column":27}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/koa/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/koa/dist/index.mjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":44}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":30}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":7}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":16}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":13,"column":-104}},"locations":[{"start":{"line":1,"column":0},"end":{"line":13,"column":-104}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":13,"column":-104}},"loc":{"start":{"line":1,"column":0},"end":{"line":13,"column":-104}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/koa/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/koa/src/index.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":61}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":11}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":29}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":32}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":52}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":51}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":1}}},"s":{"3":0,"8":0,"9":0,"10":0,"11":0,"12":0,"14":0,"15":0,"16":0,"17":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":571},"end":{"line":18,"column":1}},"locations":[{"start":{"line":1,"column":571},"end":{"line":18,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":571},"end":{"line":18,"column":1}},"loc":{"start":{"line":1,"column":571},"end":{"line":18,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":59}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":24}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":27}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":3}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":22}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":55}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":16}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":59}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":24}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":12}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":27}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":22}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":30}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":67}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":29}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":30}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":62}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":62}}},"s":{"0":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"31":0,"32":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":827},"end":{"line":33,"column":62}},"locations":[{"start":{"line":1,"column":827},"end":{"line":33,"column":62}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":827},"end":{"line":33,"column":62}},"loc":{"start":{"line":1,"column":827},"end":{"line":33,"column":62}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1188},"end":{"line":24,"column":64}},"locations":[{"start":{"line":1,"column":1188},"end":{"line":24,"column":64}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1188},"end":{"line":24,"column":64}},"loc":{"start":{"line":1,"column":1188},"end":{"line":24,"column":64}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/dist/index.mjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":54}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":12}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":27}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":3}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":30}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":55}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":19}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":16}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":54}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":24}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":22}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":67}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":29}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":30}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":4}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":19}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":16}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":30,"column":-66}},"locations":[{"start":{"line":1,"column":0},"end":{"line":30,"column":-66}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":30,"column":-66}},"loc":{"start":{"line":1,"column":0},"end":{"line":30,"column":-66}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/adapters/nestjs/src/index.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":49}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":73}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":55}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":11}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":22}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":54}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":52}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":78}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":55}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":11}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":29}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":66}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":28}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":29}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":52}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":21}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":1}}},"s":{"3":0,"6":0,"7":0,"8":0,"9":0,"11":0,"12":0,"13":0,"14":0,"16":0,"17":0,"18":0,"21":0,"22":0,"23":0,"24":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"33":0,"34":0,"35":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1206},"end":{"line":36,"column":1}},"locations":[{"start":{"line":1,"column":1206},"end":{"line":36,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1206},"end":{"line":36,"column":1}},"loc":{"start":{"line":1,"column":1206},"end":{"line":36,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/colors/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":21}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":21}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":16}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":10}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":30}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":4}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":8}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":4}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":10}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":31}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":31}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":4}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":11}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":31}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":31}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":9}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":31}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":31}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":4}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":12}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":31}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":31}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":4}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":9}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":31}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":31}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":4}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":10}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":31}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":31}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":4}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":9}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":31}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":4}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":9}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":31}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":2}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":39}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":10}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":26}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":31}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":4}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":29}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":67}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":27}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":73}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":64}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":31}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":47}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":66}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":5}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":37}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":60}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":31}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":51}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":68}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":5}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":15}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":9}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":1}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":16}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":9}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":27}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":27}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":26}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":29}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":32}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":28}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":42}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":30}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":36}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":39}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":30}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":33}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":13}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":23}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":2}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":212}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":48}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":58}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":1}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":26}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":28}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":35}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":75}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":3}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":35}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":34}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":60}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":109}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":1}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":32}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":30}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":30}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":30}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":24}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"86":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"99":0,"100":0,"101":0,"102":0,"104":0,"105":0,"106":0,"107":0,"108":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":109,"column":23}},"locations":[{"start":{"line":1,"column":0},"end":{"line":109,"column":23}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":109,"column":23}},"loc":{"start":{"line":1,"column":0},"end":{"line":109,"column":23}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/colors/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2383},"end":{"line":83,"column":182}},"locations":[{"start":{"line":1,"column":2383},"end":{"line":83,"column":182}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2383},"end":{"line":83,"column":182}},"loc":{"start":{"line":1,"column":2383},"end":{"line":83,"column":182}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/colors/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/dist/index.mjs","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":21}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":21}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":16}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":10}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":4}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":31}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":31}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":4}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":10}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":31}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":31}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":4}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":11}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":31}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":31}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":4}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":9}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":31}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":31}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":4}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":12}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":31}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":4}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":9}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":31}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":31}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":4}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":10}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":31}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":31}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":4}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":9}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":31}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":4}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":9}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":31}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":2}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":39}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":10}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":26}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":31}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":4}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":29}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":67}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":27}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":73}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":64}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":31}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":47}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":66}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":37}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":60}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":31}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":51}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":68}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":9}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":1}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":16}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":9}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":27}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":27}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":26}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":29}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":32}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":28}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":42}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":30}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":29}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":36}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":39}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":30}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":33}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":13}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":23}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":2}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":212}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":48}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":58}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":26}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":28}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":35}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":75}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":3}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":35}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":1}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":34}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":60}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":109}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":92,"42":92,"43":92,"44":92,"45":92,"46":92,"47":2,"48":2,"49":20,"50":20,"51":20,"52":20,"53":14,"54":14,"55":14,"56":20,"57":20,"58":20,"59":14,"60":14,"61":14,"62":20,"63":2,"64":2,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"84":1,"86":2,"87":2,"88":2,"89":1,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"97":38,"98":38,"99":38,"100":38},"branchMap":{"0":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":0},"end":{"line":47,"column":1}},"locations":[{"start":{"line":42,"column":0},"end":{"line":47,"column":1}}]},"1":{"type":"branch","line":48,"loc":{"start":{"line":48,"column":0},"end":{"line":65,"column":1}},"locations":[{"start":{"line":48,"column":0},"end":{"line":65,"column":1}}]},"2":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":39},"end":{"line":64,"column":3}},"locations":[{"start":{"line":49,"column":39},"end":{"line":64,"column":3}}]},"3":{"type":"branch","line":53,"loc":{"start":{"line":53,"column":30},"end":{"line":56,"column":5}},"locations":[{"start":{"line":53,"column":30},"end":{"line":56,"column":5}}]},"4":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":30},"end":{"line":62,"column":5}},"locations":[{"start":{"line":59,"column":30},"end":{"line":62,"column":5}}]},"5":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":0},"end":{"line":89,"column":1}},"locations":[{"start":{"line":87,"column":0},"end":{"line":89,"column":1}}]},"6":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":42},"end":{"line":88,"column":50}},"locations":[{"start":{"line":88,"column":42},"end":{"line":88,"column":50}}]},"7":{"type":"branch","line":98,"loc":{"start":{"line":98,"column":0},"end":{"line":101,"column":1}},"locations":[{"start":{"line":98,"column":0},"end":{"line":101,"column":1}}]},"8":{"type":"branch","line":99,"loc":{"start":{"line":99,"column":49},"end":{"line":99,"column":59}},"locations":[{"start":{"line":99,"column":49},"end":{"line":99,"column":59}}]},"9":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":34},"end":{"line":100,"column":101}},"locations":[{"start":{"line":100,"column":34},"end":{"line":100,"column":101}}]}},"b":{"0":[92],"1":[2],"2":[20],"3":[14],"4":[14],"5":[2],"6":[0],"7":[38],"8":[0],"9":[38]},"fnMap":{"0":{"name":"createEntry","decl":{"start":{"line":42,"column":0},"end":{"line":47,"column":1}},"loc":{"start":{"line":42,"column":0},"end":{"line":47,"column":1}},"line":42},"1":{"name":"buildColorStyles","decl":{"start":{"line":48,"column":0},"end":{"line":65,"column":1}},"loc":{"start":{"line":48,"column":0},"end":{"line":65,"column":1}},"line":48},"2":{"name":"ansiRegex","decl":{"start":{"line":87,"column":0},"end":{"line":89,"column":1}},"loc":{"start":{"line":87,"column":0},"end":{"line":89,"column":1}},"line":87},"3":{"name":"stripAnsi","decl":{"start":{"line":91,"column":0},"end":{"line":96,"column":1}},"loc":{"start":{"line":91,"column":0},"end":{"line":96,"column":1}},"line":91},"4":{"name":"styleText","decl":{"start":{"line":98,"column":0},"end":{"line":101,"column":1}},"loc":{"start":{"line":98,"column":0},"end":{"line":101,"column":1}},"line":98}},"f":{"0":92,"1":2,"2":2,"3":0,"4":38}} +,"/home/runner/work/https-enable/https-enable/packages/colors/src/common.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/src/common.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":55}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":60}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":1}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":43}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":35}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":74}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}}},"s":{"0":0,"2":0,"3":0,"4":0,"8":0,"9":0,"10":0,"11":0,"12":0,"17":0,"18":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":749},"end":{"line":19,"column":1}},"locations":[{"start":{"line":1,"column":749},"end":{"line":19,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":749},"end":{"line":19,"column":1}},"loc":{"start":{"line":1,"column":749},"end":{"line":19,"column":1}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/colors/src/constants.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/src/constants.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":56}}},"s":{"1":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":341},"end":{"line":7,"column":32}},"locations":[{"start":{"line":1,"column":341},"end":{"line":7,"column":32}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":341},"end":{"line":7,"column":32}},"loc":{"start":{"line":1,"column":341},"end":{"line":7,"column":32}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/colors/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/src/index.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":33}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":76}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":54}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":15}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":61}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":64}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":50}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":84}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":59}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":26}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":27}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":64}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":24}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":27}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":24}}},"s":{"1":0,"11":0,"13":0,"14":0,"17":0,"20":0,"21":0,"22":0,"23":0,"26":0,"29":0,"30":0,"38":0,"39":0,"47":0,"48":0,"49":0,"50":0,"52":0,"53":0,"54":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1404},"end":{"line":56,"column":27}},"locations":[{"start":{"line":1,"column":1404},"end":{"line":56,"column":27}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1404},"end":{"line":56,"column":27}},"loc":{"start":{"line":1,"column":1404},"end":{"line":56,"column":27}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/colors/src/styles.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/colors/src/styles.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":20}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":10}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":4}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":8}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":31}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":32}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":4}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":10}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":31}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":32}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":4}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":11}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":31}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":32}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":4}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":9}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":32}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":12}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":31}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":32}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":4}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":9}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":31}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":32}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":4}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":10}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":31}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":32}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":4}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":9}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":32}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":9}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":32}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":4}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":1}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":55}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":10}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":34}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":40}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":67}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":39}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":72}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":63}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":31}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":62}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":65}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":5}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":52}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":59}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":31}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":66}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":67}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":14}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":31}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":56}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":27}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":27}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":26}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":29}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":32}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":28}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":30}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":29}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":36}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":39}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":30}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":33}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":24}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":1}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":21}}},"s":{"3":0,"4":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"56":0,"57":0,"58":0,"59":0,"62":0,"63":0,"64":0,"65":0,"66":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"76":0,"77":0,"78":0,"83":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"100":0,"101":0,"103":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2770},"end":{"line":104,"column":21}},"locations":[{"start":{"line":1,"column":2770},"end":{"line":104,"column":21}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2770},"end":{"line":104,"column":21}},"loc":{"start":{"line":1,"column":2770},"end":{"line":104,"column":21}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/core/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/core/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":32}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":32}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":47}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":107}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":63}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":61}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":69}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":61}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":67}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":12}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":14}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":2}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":59}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":10}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":14}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":24}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":12}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":40}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":34}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":22}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":15}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":8}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":12}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":45}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":66}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":22}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":21}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":15}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":8}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":5}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":47}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":19}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":27}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":45}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":59}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":60}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":28}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":21}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":26}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":18}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":87}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":13}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":29}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":27}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":45}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":28}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":53}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":5}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":34}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":95}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":55}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":28}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":9}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":52}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":36}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":47}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":28}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":36}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":48}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":56}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":174}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":31}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":42}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":35}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":21}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":27}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":88}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":40}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":29}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":14}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":50}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":34}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":7}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":55}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":7}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":5}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":24}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":19}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":7}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":22}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":60}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":7}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":12}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":45}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":34}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":43}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":41}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":49}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":33}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":22}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":18}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":22}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":11}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":11}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":9}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":7}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":32}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":47}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":42}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":40}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":7}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":31}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":137}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":87}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":26}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":17}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":48}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":65}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":7}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":5}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":3}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":98}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":1}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":20}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":20}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":19}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":3}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":24}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":5}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":32}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":5}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":36}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":34}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":55}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":34}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":5}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":32}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":43}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":5}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":74}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":31}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":1}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":44}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":68}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":1}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":36}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":28}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":15}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":35}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":35}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":6}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":3}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":53}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":10}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":10}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":21}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":14}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":23}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":12}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":34}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":24}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":53}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":5}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":146}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":51}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":5}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":34}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":56}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":71}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":60}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":41}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":58}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":44}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":7}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":3}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":16}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":80}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":3}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":5}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":15}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":5}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":16}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":57}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":3}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":20}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":37}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":13}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":56}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":3}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":10}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":37}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":13}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":46}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":3}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":5}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":16}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":5}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":26}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":45}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":90}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":75}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":52}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":21}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":12}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":103}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":5}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":3}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":1}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":48}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":36}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":36}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":34}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"10":0,"12":0,"13":0,"14":0,"15":0,"16":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"234":0,"235":0,"236":0,"237":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":238,"column":33}},"locations":[{"start":{"line":1,"column":0},"end":{"line":238,"column":33}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":238,"column":33}},"loc":{"start":{"line":1,"column":0},"end":{"line":238,"column":33}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/core/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":5666},"end":{"line":163,"column":287}},"locations":[{"start":{"line":1,"column":5666},"end":{"line":163,"column":287}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":5666},"end":{"line":163,"column":287}},"loc":{"start":{"line":1,"column":5666},"end":{"line":163,"column":287}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/core/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/core/dist/index.mjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":43}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":93}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":27}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":27}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":58}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":19}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":12}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":14}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":47}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":10}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":14}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":14}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":24}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":12}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":28}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":40}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":34}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":22}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":15}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":8}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":12}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":45}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":66}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":22}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":21}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":8}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":47}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":19}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":27}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":45}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":59}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":60}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":28}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":21}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":26}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":18}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":80}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":5}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":13}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":29}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":27}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":45}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":28}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":53}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":34}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":88}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":55}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":28}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":3}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":9}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":22}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":45}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":1}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":36}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":47}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":28}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":36}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":39}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":47}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":165}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":31}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":42}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":35}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":21}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":27}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":79}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":40}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":29}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":14}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":50}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":34}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":7}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":46}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":7}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":5}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":24}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":19}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":22}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":60}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":12}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":45}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":34}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":43}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":41}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":49}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":33}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":22}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":18}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":22}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":11}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":11}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":9}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":5}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":7}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":32}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":47}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":42}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":40}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":7}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":31}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":137}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":80}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":26}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":17}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":48}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":56}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":7}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":5}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":3}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":98}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":1}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":20}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":20}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":19}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":3}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":24}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":5}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":32}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":5}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":36}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":34}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":55}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":34}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":5}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":32}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":43}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":5}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":74}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":31}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":3}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":1}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":44}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":59}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":1}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":27}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":28}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":15}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":28}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":35}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":6}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":3}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":41}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":10}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":10}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":21}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":14}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":23}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":12}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":34}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":24}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":53}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":5}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":146}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":51}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":5}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":34}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":56}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":71}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":60}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":41}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":58}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":44}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":7}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":16}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":80}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":3}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":5}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":15}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":5}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":16}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":57}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":3}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":20}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":37}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":13}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":56}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":3}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":10}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":37}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":13}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":46}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":3}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":5}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":16}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":5}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":26}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":45}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":90}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":75}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":52}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":21}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":12}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":103}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":5}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":3}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":225,"column":-813}},"locations":[{"start":{"line":1,"column":0},"end":{"line":225,"column":-813}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":225,"column":-813}},"loc":{"start":{"line":1,"column":0},"end":{"line":225,"column":-813}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/certificate-manager.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/certificate-manager.ts","all":true,"statementMap":{"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":92}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":19}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":19}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":18}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":12}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":15}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":73}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":66}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":40}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":51}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":11}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":28}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":39}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":33}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":22}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":7}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":5}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":10}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":44}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":65}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":22}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":16}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":7}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":5}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":46}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":37}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":44}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":59}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":59}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":27}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":21}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":26}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":17}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":79}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":27}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":44}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":28}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":52}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":5}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":52}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":87}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":54}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":27}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":30}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":44}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":1}}},"s":{"4":0,"5":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"15":0,"16":0,"17":0,"18":0,"20":0,"21":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"45":0,"46":0,"48":0,"49":0,"51":0,"52":0,"54":0,"55":0,"56":0,"58":0,"59":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"72":0,"73":0,"76":0,"77":0,"78":0,"81":0,"82":0,"83":0,"84":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2201},"end":{"line":85,"column":1}},"locations":[{"start":{"line":1,"column":2201},"end":{"line":85,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2201},"end":{"line":85,"column":1}},"loc":{"start":{"line":1,"column":2201},"end":{"line":85,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/emitter.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/emitter.ts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":200},"end":{"line":9,"column":21}},"locations":[{"start":{"line":1,"column":200},"end":{"line":9,"column":21}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":200},"end":{"line":9,"column":21}},"loc":{"start":{"line":1,"column":200},"end":{"line":9,"column":21}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/https-adapter.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/https-adapter.ts","all":true,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":45}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":86}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":53}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":41}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":59}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":33}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":55}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":33}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":32}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":42}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":5}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":76}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}}},"s":{"2":0,"4":0,"5":0,"7":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1074},"end":{"line":37,"column":1}},"locations":[{"start":{"line":1,"column":1074},"end":{"line":37,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1074},"end":{"line":37,"column":1}},"loc":{"start":{"line":1,"column":1074},"end":{"line":37,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/https-enabler.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/https-enabler.ts","all":true,"statementMap":{"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":42}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":58}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":47}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":45}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":57}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":43}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":23}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":6}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":11}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":33}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":24}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":52}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":8}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":92}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":56}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":7}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":50}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":5}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":55}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":70}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":60}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":40}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":57}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":43}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":6}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":23}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":77}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":56}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":40}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":37}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":12}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":55}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":17}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":37}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":12}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":45}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":39}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":44}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":90}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":74}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":51}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":20}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":5}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":10}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":102}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":1}}},"s":{"5":0,"6":0,"7":0,"9":0,"12":0,"13":0,"14":0,"22":0,"24":0,"26":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"43":0,"44":0,"46":0,"49":0,"50":0,"52":0,"53":0,"54":0,"55":0,"57":0,"59":0,"60":0,"65":0,"66":0,"67":0,"69":0,"70":0,"71":0,"73":0,"74":0,"76":0,"77":0,"78":0,"80":0,"81":0,"86":0,"88":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2868},"end":{"line":100,"column":1}},"locations":[{"start":{"line":1,"column":2868},"end":{"line":100,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2868},"end":{"line":100,"column":1}},"loc":{"start":{"line":1,"column":2868},"end":{"line":100,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":37}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":31}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}}},"s":{"0":0,"1":0,"2":0,"3":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":-65}},"locations":[{"start":{"line":1,"column":0},"end":{"line":5,"column":-65}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":5,"column":-65}},"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":-65}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/logger.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/logger.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":57}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":44}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":58}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":1}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":7}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":21}}},"s":{"0":0,"2":0,"3":0,"4":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"15":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":16,"column":-85}},"locations":[{"start":{"line":1,"column":0},"end":{"line":16,"column":-85}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":16,"column":-85}},"loc":{"start":{"line":1,"column":0},"end":{"line":16,"column":-85}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/core/src/same-port-ssl.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/core/src/same-port-ssl.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":26}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":26}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":56}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":69}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":46}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":38}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":46}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":22}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":109}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":12}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":42}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":35}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":20}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":27}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":78}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":39}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":28}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":12}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":49}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":45}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":6}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":4}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":24}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":27}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":12}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":51}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":34}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":43}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":40}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":48}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":32}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":21}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":11}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":16}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":21}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":11}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":10}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":8}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":62}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":137}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":79}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":26}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":16}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":47}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":55}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":7}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":5}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":111}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":1}}},"s":{"3":0,"4":0,"5":0,"6":0,"7":0,"15":0,"16":0,"17":0,"18":0,"21":0,"26":0,"28":0,"29":0,"30":0,"31":0,"34":0,"37":0,"39":0,"41":0,"43":0,"46":0,"48":0,"50":0,"51":0,"52":0,"55":0,"57":0,"58":0,"60":0,"61":0,"62":0,"64":0,"65":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"93":0,"94":0,"95":0,"96":0,"97":0,"100":0,"103":0,"104":0,"105":0,"106":0,"108":0,"109":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":3893},"end":{"line":112,"column":78}},"locations":[{"start":{"line":1,"column":3893},"end":{"line":112,"column":78}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":3893},"end":{"line":112,"column":78}},"loc":{"start":{"line":1,"column":3893},"end":{"line":112,"column":78}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":62}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":55}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":27}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":34}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":30}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":107}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":81}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":61}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":63}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":65}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":59}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":40}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":56}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":25}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":82}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":54}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":35}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":28}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":43}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":16}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":12}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":31}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":29}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":25}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":35}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":28}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":35}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":26}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":2}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":11}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":13}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":12}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":12}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":12}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":12}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":13}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":14}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":15}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":13}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":12}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":13}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":11}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":13}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":12}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":12}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":12}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":15}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":13}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":12}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":4}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":11}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":17}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":19}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":18}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":18}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":20}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":18}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":20}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":2}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":35}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":34}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":38}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":34}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":17}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":24}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":10}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":26}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":22}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":34}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":5}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":24}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":3}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":16}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":5}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":28}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":78}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":71}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":17}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":11}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":68}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":31}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":5}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":15}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":21}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":39}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":3}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":5}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":16}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":5}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":36}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":41}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":22}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":5}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":50}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":21}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":29}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":5}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":48}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":3}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":5}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":16}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":5}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":31}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":49}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":47}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":59}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":73}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":5}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":59}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":55}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":5}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":41}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":71}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":5}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":16}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":4}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":1}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":52}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":28}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":37}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":16}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":2}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":32}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":36}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":14}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":3}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":14}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":11}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":10}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":54}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":92}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":24}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":5}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":73}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":72}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":57}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":5}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":34}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":66}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":29}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":68}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":70}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":49}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":54}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":49}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":44}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":5}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":52}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":51}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":54}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":53}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":39}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":3}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":5}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":70}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":34}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":62}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":54}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":50}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":5}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":49}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":53}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":55}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":68}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":17}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":11}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":3}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":5}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":68}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":72}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":42}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":4}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":87}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":4}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":36}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":55}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":43}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":5}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":59}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":36}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":30}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":55}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":48}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":24}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":52}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":5}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":16}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":4}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":1}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":45}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":17}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":12}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":9}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":10}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":26}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":23}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":39}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":5}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":41}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":35}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":24}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":3}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":4}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":36}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":22}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":25}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":39}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":64}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":5}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":31}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":70}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":52}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":16}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":4}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":1}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":42}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":27}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":38}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":11}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":3}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":20}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":19}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":46}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":33}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":59}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":17}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":5}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":15}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":4}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":1}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":29}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":44}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":25}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":81}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":43}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":36}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":18}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":3}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":14}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":1}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":30}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":50}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":36}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":45}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":32}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":5}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":18}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":1}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":57}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":31}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":18}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":15}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":25}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":43}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":29}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":48}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":6}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":40}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":40}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":16}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":3}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":40}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":17}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":28}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":28}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":30}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":31}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":37}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":37}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":15}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":3}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":31}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":34}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":28}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":3}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":15}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":1}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":42}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":63}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":77}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":14}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":3}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":43}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":21}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":53}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":16}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":3}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":26}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":14}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":3}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":35}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":22}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":21}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":40}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":24}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":3}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":23}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":44}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":26}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":3}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":29}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":51}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":14}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":3}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":56}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":57}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":25}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":21}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":15}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":9}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":59}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":25}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":21}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":15}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":9}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":34}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":27}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":5}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":14}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":1}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":52}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":57}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":25}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":21}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":15}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":9}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":14}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":1}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":46}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":45}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":26}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":43}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":33}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":35}},"374":{"start":{"line":375,"column":0},"end":{"line":375,"column":3}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":24}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":37}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":3}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":34}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":57}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":3}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":22}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":54}},"383":{"start":{"line":384,"column":0},"end":{"line":384,"column":3}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":14}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":3}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":13}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":29}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":43}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":41}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":18}},"392":{"start":{"line":393,"column":0},"end":{"line":393,"column":36}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":14}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":3}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":49}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":31}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":25}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":27}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":25}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":83}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":14}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":3}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":14}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":11}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":27}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":31}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":3}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":25}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":40}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":16}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":4}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":1}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":54}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":33}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":50}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":12}},"420":{"start":{"line":421,"column":0},"end":{"line":421,"column":18}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":20}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":17}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":5}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":65}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":52}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":82}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":10}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":63}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":3}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":14}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":3}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":37}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":29}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":16}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":17}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":3}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":5}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":69}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":4}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":30}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":29}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":22}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":13}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":5}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":24}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":35}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":50}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":47}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":51}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":50}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":52}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":82}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":33}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":18}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":41}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":38}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":7}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":5}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":55}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":16}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":3}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":5}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":54}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":27}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":4}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":30}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":22}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":5}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":25}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":35}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":44}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":34}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":18}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":5}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":43}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":45}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":63}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":35}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":20}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":43}},"482":{"start":{"line":483,"column":0},"end":{"line":483,"column":40}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":9}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":7}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":18}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":5}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":17}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":39}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":5}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":16}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":4}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":1}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":35}},"495":{"start":{"line":496,"column":0},"end":{"line":496,"column":47}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":20}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":136}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":3}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":24}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":64}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":3}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":19}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":38}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":3}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":14}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":3}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":27}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":45}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":1}},"511":{"start":{"line":512,"column":0},"end":{"line":512,"column":48}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":29}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":41}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":3}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":31}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":53}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":3}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":44}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":55}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":3}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":14}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":3}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":44}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":39}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":11}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":29}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":6}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":22}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":5}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":1}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":35}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":31}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":41}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":39}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":37}},"537":{"start":{"line":538,"column":0},"end":{"line":538,"column":33}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":35}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":41}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":41}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":29}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":43}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":47}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":37}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":37}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":35}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":43}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":45}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":17}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":8}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":6}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":7}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":9}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":10}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":24}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":27}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":29}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":31}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":63}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":79}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":3}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":17}},"564":{"start":{"line":565,"column":0},"end":{"line":565,"column":35}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":51}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":55}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":84}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":3}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":15}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":23}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":41}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":52}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":5}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":3}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":1}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":42}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":29}},"579":{"start":{"line":580,"column":0},"end":{"line":580,"column":19}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":42}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":3}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":45}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":44}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":29}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":46}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":26}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":36}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":17}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":4}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":1}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":41}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":9}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":15}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":29}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":19}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":61}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":53}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":5}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":42}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":33}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":75}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":42}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":3}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":45}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":46}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":26}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":39}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":16}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":33}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":19}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":6}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":9}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":46}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":18}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":28}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":30}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":10}},"619":{"start":{"line":620,"column":0},"end":{"line":620,"column":48}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":62}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":40}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":9}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":22}},"624":{"start":{"line":625,"column":0},"end":{"line":625,"column":58}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":7}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":21}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":80}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":5}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":4}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":1}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":20}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":28}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":25}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":2}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":14}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":8}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":9}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":9}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":18}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":5}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":13}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":29}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":19}},"646":{"start":{"line":647,"column":0},"end":{"line":647,"column":5}},"647":{"start":{"line":648,"column":0},"end":{"line":648,"column":13}},"648":{"start":{"line":649,"column":0},"end":{"line":649,"column":9}},"649":{"start":{"line":650,"column":0},"end":{"line":650,"column":29}},"650":{"start":{"line":651,"column":0},"end":{"line":651,"column":41}},"651":{"start":{"line":652,"column":0},"end":{"line":652,"column":63}},"652":{"start":{"line":653,"column":0},"end":{"line":653,"column":42}},"653":{"start":{"line":654,"column":0},"end":{"line":654,"column":50}},"654":{"start":{"line":655,"column":0},"end":{"line":655,"column":66}},"655":{"start":{"line":656,"column":0},"end":{"line":656,"column":29}},"656":{"start":{"line":657,"column":0},"end":{"line":657,"column":102}},"657":{"start":{"line":658,"column":0},"end":{"line":658,"column":5}},"658":{"start":{"line":659,"column":0},"end":{"line":659,"column":3}},"659":{"start":{"line":660,"column":0},"end":{"line":660,"column":51}},"660":{"start":{"line":661,"column":0},"end":{"line":661,"column":40}},"661":{"start":{"line":662,"column":0},"end":{"line":662,"column":71}},"662":{"start":{"line":663,"column":0},"end":{"line":663,"column":78}},"663":{"start":{"line":664,"column":0},"end":{"line":664,"column":47}},"664":{"start":{"line":665,"column":0},"end":{"line":665,"column":76}},"665":{"start":{"line":666,"column":0},"end":{"line":666,"column":61}},"666":{"start":{"line":667,"column":0},"end":{"line":667,"column":132}},"667":{"start":{"line":668,"column":0},"end":{"line":668,"column":7}},"668":{"start":{"line":669,"column":0},"end":{"line":669,"column":240}},"669":{"start":{"line":670,"column":0},"end":{"line":670,"column":3}},"670":{"start":{"line":671,"column":0},"end":{"line":671,"column":43}},"671":{"start":{"line":672,"column":0},"end":{"line":672,"column":51}},"672":{"start":{"line":673,"column":0},"end":{"line":673,"column":4}},"673":{"start":{"line":674,"column":0},"end":{"line":674,"column":47}},"674":{"start":{"line":675,"column":0},"end":{"line":675,"column":49}},"675":{"start":{"line":676,"column":0},"end":{"line":676,"column":63}},"676":{"start":{"line":677,"column":0},"end":{"line":677,"column":53}},"677":{"start":{"line":678,"column":0},"end":{"line":678,"column":54}},"678":{"start":{"line":679,"column":0},"end":{"line":679,"column":28}},"679":{"start":{"line":680,"column":0},"end":{"line":680,"column":46}},"680":{"start":{"line":681,"column":0},"end":{"line":681,"column":72}},"681":{"start":{"line":682,"column":0},"end":{"line":682,"column":36}},"682":{"start":{"line":683,"column":0},"end":{"line":683,"column":53}},"683":{"start":{"line":684,"column":0},"end":{"line":684,"column":9}},"684":{"start":{"line":685,"column":0},"end":{"line":685,"column":56}},"685":{"start":{"line":686,"column":0},"end":{"line":686,"column":69}},"686":{"start":{"line":687,"column":0},"end":{"line":687,"column":61}},"687":{"start":{"line":688,"column":0},"end":{"line":688,"column":9}},"688":{"start":{"line":689,"column":0},"end":{"line":689,"column":112}},"689":{"start":{"line":690,"column":0},"end":{"line":690,"column":24}},"690":{"start":{"line":691,"column":0},"end":{"line":691,"column":102}},"691":{"start":{"line":692,"column":0},"end":{"line":692,"column":25}},"692":{"start":{"line":693,"column":0},"end":{"line":693,"column":12}},"693":{"start":{"line":694,"column":0},"end":{"line":694,"column":9}},"694":{"start":{"line":695,"column":0},"end":{"line":695,"column":13}},"695":{"start":{"line":696,"column":0},"end":{"line":696,"column":50}},"696":{"start":{"line":697,"column":0},"end":{"line":697,"column":63}},"697":{"start":{"line":698,"column":0},"end":{"line":698,"column":86}},"698":{"start":{"line":699,"column":0},"end":{"line":699,"column":13}},"699":{"start":{"line":700,"column":0},"end":{"line":700,"column":19}},"700":{"start":{"line":701,"column":0},"end":{"line":701,"column":23}},"701":{"start":{"line":702,"column":0},"end":{"line":702,"column":9}},"702":{"start":{"line":703,"column":0},"end":{"line":703,"column":15}},"703":{"start":{"line":704,"column":0},"end":{"line":704,"column":7}},"704":{"start":{"line":705,"column":0},"end":{"line":705,"column":26}},"705":{"start":{"line":706,"column":0},"end":{"line":706,"column":5}},"706":{"start":{"line":707,"column":0},"end":{"line":707,"column":3}},"707":{"start":{"line":708,"column":0},"end":{"line":708,"column":20}},"708":{"start":{"line":709,"column":0},"end":{"line":709,"column":55}},"709":{"start":{"line":710,"column":0},"end":{"line":710,"column":65}},"710":{"start":{"line":711,"column":0},"end":{"line":711,"column":3}},"711":{"start":{"line":712,"column":0},"end":{"line":712,"column":37}},"712":{"start":{"line":713,"column":0},"end":{"line":713,"column":40}},"713":{"start":{"line":714,"column":0},"end":{"line":714,"column":3}},"714":{"start":{"line":715,"column":0},"end":{"line":715,"column":36}},"715":{"start":{"line":716,"column":0},"end":{"line":716,"column":39}},"716":{"start":{"line":717,"column":0},"end":{"line":717,"column":3}},"717":{"start":{"line":718,"column":0},"end":{"line":718,"column":36}},"718":{"start":{"line":719,"column":0},"end":{"line":719,"column":39}},"719":{"start":{"line":720,"column":0},"end":{"line":720,"column":3}},"720":{"start":{"line":721,"column":0},"end":{"line":721,"column":37}},"721":{"start":{"line":722,"column":0},"end":{"line":722,"column":40}},"722":{"start":{"line":723,"column":0},"end":{"line":723,"column":3}},"723":{"start":{"line":724,"column":0},"end":{"line":724,"column":1}},"725":{"start":{"line":726,"column":0},"end":{"line":726,"column":24}},"726":{"start":{"line":727,"column":0},"end":{"line":727,"column":32}},"727":{"start":{"line":728,"column":0},"end":{"line":728,"column":25}},"728":{"start":{"line":729,"column":0},"end":{"line":729,"column":24}}},"s":{"0":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"12":0,"14":0,"15":0,"16":0,"17":0,"18":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"82":0,"83":0,"84":0,"85":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"146":0,"147":0,"148":0,"149":0,"151":0,"152":0,"153":0,"154":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"329":0,"330":0,"331":0,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":0,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":0,"374":0,"375":0,"376":0,"377":0,"378":0,"379":0,"380":0,"381":0,"382":0,"383":0,"384":0,"385":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":0,"394":0,"396":0,"397":0,"398":0,"399":0,"400":0,"401":0,"402":0,"403":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":0,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"493":0,"495":0,"496":0,"497":0,"498":0,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"508":0,"509":0,"510":0,"511":0,"512":0,"513":0,"514":0,"515":0,"516":0,"517":0,"518":0,"519":0,"520":0,"521":0,"522":0,"524":0,"525":0,"526":0,"527":0,"528":0,"529":0,"530":0,"531":0,"532":0,"533":0,"534":0,"535":0,"536":0,"537":0,"538":0,"539":0,"540":0,"541":0,"542":0,"543":0,"544":0,"545":0,"546":0,"547":0,"548":0,"550":0,"551":0,"552":0,"553":0,"554":0,"555":0,"556":0,"557":0,"558":0,"559":0,"560":0,"561":0,"562":0,"563":0,"564":0,"565":0,"566":0,"567":0,"568":0,"569":0,"570":0,"571":0,"572":0,"573":0,"574":0,"575":0,"577":0,"578":0,"579":0,"580":0,"581":0,"582":0,"583":0,"584":0,"585":0,"586":0,"587":0,"588":0,"589":0,"590":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"609":0,"610":0,"611":0,"612":0,"613":0,"614":0,"615":0,"616":0,"617":0,"618":0,"619":0,"620":0,"621":0,"622":0,"623":0,"624":0,"625":0,"626":0,"627":0,"628":0,"629":0,"630":0,"632":0,"633":0,"634":0,"635":0,"637":0,"638":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":0,"645":0,"646":0,"647":0,"648":0,"649":0,"650":0,"651":0,"652":0,"653":0,"654":0,"655":0,"656":0,"657":0,"658":0,"659":0,"660":0,"661":0,"662":0,"663":0,"664":0,"665":0,"666":0,"667":0,"668":0,"669":0,"670":0,"671":0,"672":0,"673":0,"674":0,"675":0,"676":0,"677":0,"678":0,"679":0,"680":0,"681":0,"682":0,"683":0,"684":0,"685":0,"686":0,"687":0,"688":0,"689":0,"690":0,"691":0,"692":0,"693":0,"694":0,"695":0,"696":0,"697":0,"698":0,"699":0,"700":0,"701":0,"702":0,"703":0,"704":0,"705":0,"706":0,"707":0,"708":0,"709":0,"710":0,"711":0,"712":0,"713":0,"714":0,"715":0,"716":0,"717":0,"718":0,"719":0,"720":0,"721":0,"722":0,"723":0,"725":0,"726":0,"727":0,"728":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":729,"column":-11}},"locations":[{"start":{"line":1,"column":0},"end":{"line":729,"column":-11}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":729,"column":-11}},"loc":{"start":{"line":1,"column":0},"end":{"line":729,"column":-11}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":13948},"end":{"line":460,"column":83}},"locations":[{"start":{"line":1,"column":13948},"end":{"line":460,"column":83}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":13948},"end":{"line":460,"column":83}},"loc":{"start":{"line":1,"column":13948},"end":{"line":460,"column":83}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/dist/index.mjs","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":62}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":49}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":50}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":22}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":40}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":56}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":25}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":82}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":3}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":54}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":35}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":28}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":43}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":16}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":12}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":31}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":29}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":5}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":35}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":28}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":26}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":2}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":15}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":11}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":12}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":12}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":12}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":12}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":13}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":14}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":13}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":12}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":13}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":11}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":13}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":12}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":12}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":12}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":15}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":13}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":12}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":4}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":11}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":17}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":19}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":18}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":18}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":20}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":18}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":20}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":2}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":35}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":34}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":38}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":34}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":17}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":24}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":10}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":26}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":22}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":34}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":24}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":5}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":16}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":28}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":78}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":71}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":17}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":11}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":68}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":31}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":5}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":15}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":21}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":39}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":3}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":5}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":16}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":36}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":41}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":22}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":5}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":50}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":21}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":29}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":41}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":3}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":5}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":16}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":5}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":31}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":49}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":47}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":59}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":73}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":5}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":59}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":55}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":5}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":41}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":71}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":5}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":16}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":4}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":1}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":52}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":28}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":37}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":16}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":2}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":32}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":36}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":14}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":3}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":14}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":11}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":10}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":54}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":92}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":24}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":3}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":5}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":73}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":72}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":57}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":5}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":34}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":66}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":29}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":3}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":5}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":68}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":70}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":49}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":54}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":49}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":44}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":5}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":52}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":51}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":54}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":53}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":39}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":5}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":70}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":34}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":62}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":54}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":50}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":5}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":49}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":53}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":55}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":68}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":17}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":11}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":3}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":5}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":68}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":72}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":42}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":4}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":87}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":4}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":36}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":55}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":43}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":5}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":59}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":36}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":30}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":55}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":48}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":24}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":52}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":5}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":16}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":4}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":1}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":45}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":17}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":12}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":9}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":10}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":26}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":23}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":39}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":5}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":41}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":35}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":24}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":3}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":4}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":36}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":22}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":25}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":39}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":64}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":5}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":31}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":70}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":52}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":16}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":4}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":1}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":42}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":27}},"240":{"start":{"line":241,"column":0},"end":{"line":241,"column":38}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":11}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":3}},"243":{"start":{"line":244,"column":0},"end":{"line":244,"column":20}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":19}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":46}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":33}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":59}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":17}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":5}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":15}},"251":{"start":{"line":252,"column":0},"end":{"line":252,"column":4}},"252":{"start":{"line":253,"column":0},"end":{"line":253,"column":1}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":29}},"254":{"start":{"line":255,"column":0},"end":{"line":255,"column":44}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":25}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":81}},"257":{"start":{"line":258,"column":0},"end":{"line":258,"column":43}},"258":{"start":{"line":259,"column":0},"end":{"line":259,"column":36}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":18}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":3}},"261":{"start":{"line":262,"column":0},"end":{"line":262,"column":14}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":1}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":30}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":50}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":36}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":45}},"267":{"start":{"line":268,"column":0},"end":{"line":268,"column":32}},"268":{"start":{"line":269,"column":0},"end":{"line":269,"column":5}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":18}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":1}},"272":{"start":{"line":273,"column":0},"end":{"line":273,"column":57}},"273":{"start":{"line":274,"column":0},"end":{"line":274,"column":31}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":18}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":15}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":25}},"277":{"start":{"line":278,"column":0},"end":{"line":278,"column":43}},"278":{"start":{"line":279,"column":0},"end":{"line":279,"column":29}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":48}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":6}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":40}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":40}},"283":{"start":{"line":284,"column":0},"end":{"line":284,"column":16}},"284":{"start":{"line":285,"column":0},"end":{"line":285,"column":3}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":40}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":17}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":28}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":28}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":30}},"290":{"start":{"line":291,"column":0},"end":{"line":291,"column":31}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":37}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":37}},"293":{"start":{"line":294,"column":0},"end":{"line":294,"column":15}},"294":{"start":{"line":295,"column":0},"end":{"line":295,"column":3}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":31}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":34}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":28}},"299":{"start":{"line":300,"column":0},"end":{"line":300,"column":3}},"300":{"start":{"line":301,"column":0},"end":{"line":301,"column":15}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":1}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":42}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":56}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":79}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":14}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":3}},"308":{"start":{"line":309,"column":0},"end":{"line":309,"column":43}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":21}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":53}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":16}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":3}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":26}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":14}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":3}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":35}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":22}},"319":{"start":{"line":320,"column":0},"end":{"line":320,"column":21}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":40}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":24}},"322":{"start":{"line":323,"column":0},"end":{"line":323,"column":3}},"323":{"start":{"line":324,"column":0},"end":{"line":324,"column":23}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":44}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":26}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":3}},"327":{"start":{"line":328,"column":0},"end":{"line":328,"column":29}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":42}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":14}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":3}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":56}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":57}},"334":{"start":{"line":335,"column":0},"end":{"line":335,"column":25}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":21}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":15}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":9}},"338":{"start":{"line":339,"column":0},"end":{"line":339,"column":59}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":25}},"340":{"start":{"line":341,"column":0},"end":{"line":341,"column":21}},"341":{"start":{"line":342,"column":0},"end":{"line":342,"column":15}},"342":{"start":{"line":343,"column":0},"end":{"line":343,"column":9}},"343":{"start":{"line":344,"column":0},"end":{"line":344,"column":34}},"344":{"start":{"line":345,"column":0},"end":{"line":345,"column":27}},"345":{"start":{"line":346,"column":0},"end":{"line":346,"column":5}},"346":{"start":{"line":347,"column":0},"end":{"line":347,"column":14}},"347":{"start":{"line":348,"column":0},"end":{"line":348,"column":1}},"348":{"start":{"line":349,"column":0},"end":{"line":349,"column":52}},"349":{"start":{"line":350,"column":0},"end":{"line":350,"column":57}},"350":{"start":{"line":351,"column":0},"end":{"line":351,"column":25}},"351":{"start":{"line":352,"column":0},"end":{"line":352,"column":21}},"352":{"start":{"line":353,"column":0},"end":{"line":353,"column":15}},"353":{"start":{"line":354,"column":0},"end":{"line":354,"column":9}},"354":{"start":{"line":355,"column":0},"end":{"line":355,"column":14}},"355":{"start":{"line":356,"column":0},"end":{"line":356,"column":1}},"356":{"start":{"line":357,"column":0},"end":{"line":357,"column":46}},"357":{"start":{"line":358,"column":0},"end":{"line":358,"column":45}},"358":{"start":{"line":359,"column":0},"end":{"line":359,"column":26}},"359":{"start":{"line":360,"column":0},"end":{"line":360,"column":43}},"360":{"start":{"line":361,"column":0},"end":{"line":361,"column":33}},"361":{"start":{"line":362,"column":0},"end":{"line":362,"column":35}},"362":{"start":{"line":363,"column":0},"end":{"line":363,"column":3}},"363":{"start":{"line":364,"column":0},"end":{"line":364,"column":24}},"364":{"start":{"line":365,"column":0},"end":{"line":365,"column":37}},"365":{"start":{"line":366,"column":0},"end":{"line":366,"column":3}},"366":{"start":{"line":367,"column":0},"end":{"line":367,"column":34}},"367":{"start":{"line":368,"column":0},"end":{"line":368,"column":57}},"368":{"start":{"line":369,"column":0},"end":{"line":369,"column":3}},"369":{"start":{"line":370,"column":0},"end":{"line":370,"column":22}},"370":{"start":{"line":371,"column":0},"end":{"line":371,"column":54}},"371":{"start":{"line":372,"column":0},"end":{"line":372,"column":3}},"372":{"start":{"line":373,"column":0},"end":{"line":373,"column":14}},"373":{"start":{"line":374,"column":0},"end":{"line":374,"column":3}},"375":{"start":{"line":376,"column":0},"end":{"line":376,"column":13}},"376":{"start":{"line":377,"column":0},"end":{"line":377,"column":29}},"377":{"start":{"line":378,"column":0},"end":{"line":378,"column":43}},"378":{"start":{"line":379,"column":0},"end":{"line":379,"column":41}},"379":{"start":{"line":380,"column":0},"end":{"line":380,"column":18}},"380":{"start":{"line":381,"column":0},"end":{"line":381,"column":29}},"381":{"start":{"line":382,"column":0},"end":{"line":382,"column":14}},"382":{"start":{"line":383,"column":0},"end":{"line":383,"column":3}},"384":{"start":{"line":385,"column":0},"end":{"line":385,"column":49}},"385":{"start":{"line":386,"column":0},"end":{"line":386,"column":31}},"386":{"start":{"line":387,"column":0},"end":{"line":387,"column":25}},"387":{"start":{"line":388,"column":0},"end":{"line":388,"column":27}},"388":{"start":{"line":389,"column":0},"end":{"line":389,"column":25}},"389":{"start":{"line":390,"column":0},"end":{"line":390,"column":78}},"390":{"start":{"line":391,"column":0},"end":{"line":391,"column":14}},"391":{"start":{"line":392,"column":0},"end":{"line":392,"column":3}},"393":{"start":{"line":394,"column":0},"end":{"line":394,"column":14}},"394":{"start":{"line":395,"column":0},"end":{"line":395,"column":11}},"395":{"start":{"line":396,"column":0},"end":{"line":396,"column":27}},"396":{"start":{"line":397,"column":0},"end":{"line":397,"column":31}},"397":{"start":{"line":398,"column":0},"end":{"line":398,"column":3}},"398":{"start":{"line":399,"column":0},"end":{"line":399,"column":25}},"399":{"start":{"line":400,"column":0},"end":{"line":400,"column":40}},"400":{"start":{"line":401,"column":0},"end":{"line":401,"column":16}},"401":{"start":{"line":402,"column":0},"end":{"line":402,"column":4}},"402":{"start":{"line":403,"column":0},"end":{"line":403,"column":1}},"403":{"start":{"line":404,"column":0},"end":{"line":404,"column":54}},"405":{"start":{"line":406,"column":0},"end":{"line":406,"column":33}},"406":{"start":{"line":407,"column":0},"end":{"line":407,"column":41}},"407":{"start":{"line":408,"column":0},"end":{"line":408,"column":12}},"408":{"start":{"line":409,"column":0},"end":{"line":409,"column":18}},"409":{"start":{"line":410,"column":0},"end":{"line":410,"column":20}},"410":{"start":{"line":411,"column":0},"end":{"line":411,"column":17}},"411":{"start":{"line":412,"column":0},"end":{"line":412,"column":5}},"412":{"start":{"line":413,"column":0},"end":{"line":413,"column":65}},"413":{"start":{"line":414,"column":0},"end":{"line":414,"column":52}},"414":{"start":{"line":415,"column":0},"end":{"line":415,"column":82}},"415":{"start":{"line":416,"column":0},"end":{"line":416,"column":10}},"416":{"start":{"line":417,"column":0},"end":{"line":417,"column":63}},"417":{"start":{"line":418,"column":0},"end":{"line":418,"column":3}},"418":{"start":{"line":419,"column":0},"end":{"line":419,"column":14}},"419":{"start":{"line":420,"column":0},"end":{"line":420,"column":3}},"421":{"start":{"line":422,"column":0},"end":{"line":422,"column":37}},"422":{"start":{"line":423,"column":0},"end":{"line":423,"column":29}},"423":{"start":{"line":424,"column":0},"end":{"line":424,"column":16}},"424":{"start":{"line":425,"column":0},"end":{"line":425,"column":17}},"425":{"start":{"line":426,"column":0},"end":{"line":426,"column":3}},"426":{"start":{"line":427,"column":0},"end":{"line":427,"column":5}},"427":{"start":{"line":428,"column":0},"end":{"line":428,"column":69}},"428":{"start":{"line":429,"column":0},"end":{"line":429,"column":4}},"429":{"start":{"line":430,"column":0},"end":{"line":430,"column":30}},"430":{"start":{"line":431,"column":0},"end":{"line":431,"column":29}},"431":{"start":{"line":432,"column":0},"end":{"line":432,"column":22}},"432":{"start":{"line":433,"column":0},"end":{"line":433,"column":13}},"433":{"start":{"line":434,"column":0},"end":{"line":434,"column":5}},"434":{"start":{"line":435,"column":0},"end":{"line":435,"column":24}},"435":{"start":{"line":436,"column":0},"end":{"line":436,"column":35}},"436":{"start":{"line":437,"column":0},"end":{"line":437,"column":50}},"437":{"start":{"line":438,"column":0},"end":{"line":438,"column":47}},"438":{"start":{"line":439,"column":0},"end":{"line":439,"column":51}},"439":{"start":{"line":440,"column":0},"end":{"line":440,"column":50}},"440":{"start":{"line":441,"column":0},"end":{"line":441,"column":52}},"441":{"start":{"line":442,"column":0},"end":{"line":442,"column":82}},"442":{"start":{"line":443,"column":0},"end":{"line":443,"column":33}},"443":{"start":{"line":444,"column":0},"end":{"line":444,"column":18}},"444":{"start":{"line":445,"column":0},"end":{"line":445,"column":41}},"445":{"start":{"line":446,"column":0},"end":{"line":446,"column":38}},"446":{"start":{"line":447,"column":0},"end":{"line":447,"column":7}},"447":{"start":{"line":448,"column":0},"end":{"line":448,"column":5}},"448":{"start":{"line":449,"column":0},"end":{"line":449,"column":46}},"449":{"start":{"line":450,"column":0},"end":{"line":450,"column":16}},"450":{"start":{"line":451,"column":0},"end":{"line":451,"column":3}},"451":{"start":{"line":452,"column":0},"end":{"line":452,"column":5}},"452":{"start":{"line":453,"column":0},"end":{"line":453,"column":54}},"453":{"start":{"line":454,"column":0},"end":{"line":454,"column":27}},"454":{"start":{"line":455,"column":0},"end":{"line":455,"column":4}},"455":{"start":{"line":456,"column":0},"end":{"line":456,"column":30}},"456":{"start":{"line":457,"column":0},"end":{"line":457,"column":22}},"457":{"start":{"line":458,"column":0},"end":{"line":458,"column":5}},"458":{"start":{"line":459,"column":0},"end":{"line":459,"column":25}},"459":{"start":{"line":460,"column":0},"end":{"line":460,"column":35}},"460":{"start":{"line":461,"column":0},"end":{"line":461,"column":44}},"461":{"start":{"line":462,"column":0},"end":{"line":462,"column":34}},"462":{"start":{"line":463,"column":0},"end":{"line":463,"column":18}},"463":{"start":{"line":464,"column":0},"end":{"line":464,"column":5}},"464":{"start":{"line":465,"column":0},"end":{"line":465,"column":43}},"465":{"start":{"line":466,"column":0},"end":{"line":466,"column":45}},"466":{"start":{"line":467,"column":0},"end":{"line":467,"column":63}},"467":{"start":{"line":468,"column":0},"end":{"line":468,"column":35}},"468":{"start":{"line":469,"column":0},"end":{"line":469,"column":20}},"469":{"start":{"line":470,"column":0},"end":{"line":470,"column":43}},"470":{"start":{"line":471,"column":0},"end":{"line":471,"column":40}},"471":{"start":{"line":472,"column":0},"end":{"line":472,"column":9}},"472":{"start":{"line":473,"column":0},"end":{"line":473,"column":7}},"473":{"start":{"line":474,"column":0},"end":{"line":474,"column":18}},"474":{"start":{"line":475,"column":0},"end":{"line":475,"column":5}},"475":{"start":{"line":476,"column":0},"end":{"line":476,"column":17}},"476":{"start":{"line":477,"column":0},"end":{"line":477,"column":39}},"477":{"start":{"line":478,"column":0},"end":{"line":478,"column":5}},"478":{"start":{"line":479,"column":0},"end":{"line":479,"column":16}},"479":{"start":{"line":480,"column":0},"end":{"line":480,"column":4}},"480":{"start":{"line":481,"column":0},"end":{"line":481,"column":1}},"481":{"start":{"line":482,"column":0},"end":{"line":482,"column":35}},"483":{"start":{"line":484,"column":0},"end":{"line":484,"column":47}},"484":{"start":{"line":485,"column":0},"end":{"line":485,"column":20}},"485":{"start":{"line":486,"column":0},"end":{"line":486,"column":127}},"486":{"start":{"line":487,"column":0},"end":{"line":487,"column":3}},"487":{"start":{"line":488,"column":0},"end":{"line":488,"column":24}},"488":{"start":{"line":489,"column":0},"end":{"line":489,"column":64}},"489":{"start":{"line":490,"column":0},"end":{"line":490,"column":3}},"490":{"start":{"line":491,"column":0},"end":{"line":491,"column":19}},"491":{"start":{"line":492,"column":0},"end":{"line":492,"column":38}},"492":{"start":{"line":493,"column":0},"end":{"line":493,"column":3}},"493":{"start":{"line":494,"column":0},"end":{"line":494,"column":14}},"494":{"start":{"line":495,"column":0},"end":{"line":495,"column":3}},"496":{"start":{"line":497,"column":0},"end":{"line":497,"column":27}},"497":{"start":{"line":498,"column":0},"end":{"line":498,"column":45}},"498":{"start":{"line":499,"column":0},"end":{"line":499,"column":1}},"499":{"start":{"line":500,"column":0},"end":{"line":500,"column":48}},"500":{"start":{"line":501,"column":0},"end":{"line":501,"column":29}},"501":{"start":{"line":502,"column":0},"end":{"line":502,"column":41}},"502":{"start":{"line":503,"column":0},"end":{"line":503,"column":3}},"503":{"start":{"line":504,"column":0},"end":{"line":504,"column":31}},"504":{"start":{"line":505,"column":0},"end":{"line":505,"column":53}},"505":{"start":{"line":506,"column":0},"end":{"line":506,"column":3}},"506":{"start":{"line":507,"column":0},"end":{"line":507,"column":44}},"507":{"start":{"line":508,"column":0},"end":{"line":508,"column":55}},"508":{"start":{"line":509,"column":0},"end":{"line":509,"column":3}},"509":{"start":{"line":510,"column":0},"end":{"line":510,"column":14}},"510":{"start":{"line":511,"column":0},"end":{"line":511,"column":3}},"512":{"start":{"line":513,"column":0},"end":{"line":513,"column":44}},"513":{"start":{"line":514,"column":0},"end":{"line":514,"column":39}},"514":{"start":{"line":515,"column":0},"end":{"line":515,"column":11}},"515":{"start":{"line":516,"column":0},"end":{"line":516,"column":29}},"516":{"start":{"line":517,"column":0},"end":{"line":517,"column":6}},"517":{"start":{"line":518,"column":0},"end":{"line":518,"column":22}},"518":{"start":{"line":519,"column":0},"end":{"line":519,"column":5}},"519":{"start":{"line":520,"column":0},"end":{"line":520,"column":1}},"520":{"start":{"line":521,"column":0},"end":{"line":521,"column":35}},"521":{"start":{"line":522,"column":0},"end":{"line":522,"column":31}},"522":{"start":{"line":523,"column":0},"end":{"line":523,"column":41}},"523":{"start":{"line":524,"column":0},"end":{"line":524,"column":39}},"524":{"start":{"line":525,"column":0},"end":{"line":525,"column":37}},"525":{"start":{"line":526,"column":0},"end":{"line":526,"column":33}},"526":{"start":{"line":527,"column":0},"end":{"line":527,"column":35}},"527":{"start":{"line":528,"column":0},"end":{"line":528,"column":41}},"528":{"start":{"line":529,"column":0},"end":{"line":529,"column":41}},"529":{"start":{"line":530,"column":0},"end":{"line":530,"column":29}},"530":{"start":{"line":531,"column":0},"end":{"line":531,"column":43}},"531":{"start":{"line":532,"column":0},"end":{"line":532,"column":47}},"532":{"start":{"line":533,"column":0},"end":{"line":533,"column":37}},"533":{"start":{"line":534,"column":0},"end":{"line":534,"column":37}},"534":{"start":{"line":535,"column":0},"end":{"line":535,"column":35}},"535":{"start":{"line":536,"column":0},"end":{"line":536,"column":43}},"536":{"start":{"line":537,"column":0},"end":{"line":537,"column":45}},"538":{"start":{"line":539,"column":0},"end":{"line":539,"column":17}},"539":{"start":{"line":540,"column":0},"end":{"line":540,"column":8}},"540":{"start":{"line":541,"column":0},"end":{"line":541,"column":6}},"541":{"start":{"line":542,"column":0},"end":{"line":542,"column":7}},"542":{"start":{"line":543,"column":0},"end":{"line":543,"column":9}},"543":{"start":{"line":544,"column":0},"end":{"line":544,"column":10}},"544":{"start":{"line":545,"column":0},"end":{"line":545,"column":24}},"545":{"start":{"line":546,"column":0},"end":{"line":546,"column":27}},"546":{"start":{"line":547,"column":0},"end":{"line":547,"column":29}},"547":{"start":{"line":548,"column":0},"end":{"line":548,"column":31}},"548":{"start":{"line":549,"column":0},"end":{"line":549,"column":63}},"549":{"start":{"line":550,"column":0},"end":{"line":550,"column":70}},"550":{"start":{"line":551,"column":0},"end":{"line":551,"column":3}},"551":{"start":{"line":552,"column":0},"end":{"line":552,"column":17}},"552":{"start":{"line":553,"column":0},"end":{"line":553,"column":35}},"553":{"start":{"line":554,"column":0},"end":{"line":554,"column":45}},"554":{"start":{"line":555,"column":0},"end":{"line":555,"column":55}},"555":{"start":{"line":556,"column":0},"end":{"line":556,"column":84}},"556":{"start":{"line":557,"column":0},"end":{"line":557,"column":3}},"557":{"start":{"line":558,"column":0},"end":{"line":558,"column":15}},"558":{"start":{"line":559,"column":0},"end":{"line":559,"column":23}},"559":{"start":{"line":560,"column":0},"end":{"line":560,"column":41}},"560":{"start":{"line":561,"column":0},"end":{"line":561,"column":52}},"561":{"start":{"line":562,"column":0},"end":{"line":562,"column":5}},"562":{"start":{"line":563,"column":0},"end":{"line":563,"column":3}},"563":{"start":{"line":564,"column":0},"end":{"line":564,"column":1}},"565":{"start":{"line":566,"column":0},"end":{"line":566,"column":42}},"566":{"start":{"line":567,"column":0},"end":{"line":567,"column":29}},"567":{"start":{"line":568,"column":0},"end":{"line":568,"column":19}},"568":{"start":{"line":569,"column":0},"end":{"line":569,"column":42}},"569":{"start":{"line":570,"column":0},"end":{"line":570,"column":3}},"570":{"start":{"line":571,"column":0},"end":{"line":571,"column":45}},"571":{"start":{"line":572,"column":0},"end":{"line":572,"column":44}},"572":{"start":{"line":573,"column":0},"end":{"line":573,"column":29}},"573":{"start":{"line":574,"column":0},"end":{"line":574,"column":46}},"574":{"start":{"line":575,"column":0},"end":{"line":575,"column":26}},"575":{"start":{"line":576,"column":0},"end":{"line":576,"column":36}},"576":{"start":{"line":577,"column":0},"end":{"line":577,"column":17}},"577":{"start":{"line":578,"column":0},"end":{"line":578,"column":4}},"578":{"start":{"line":579,"column":0},"end":{"line":579,"column":1}},"580":{"start":{"line":581,"column":0},"end":{"line":581,"column":41}},"581":{"start":{"line":582,"column":0},"end":{"line":582,"column":9}},"582":{"start":{"line":583,"column":0},"end":{"line":583,"column":15}},"583":{"start":{"line":584,"column":0},"end":{"line":584,"column":29}},"584":{"start":{"line":585,"column":0},"end":{"line":585,"column":19}},"585":{"start":{"line":586,"column":0},"end":{"line":586,"column":55}},"586":{"start":{"line":587,"column":0},"end":{"line":587,"column":53}},"587":{"start":{"line":588,"column":0},"end":{"line":588,"column":5}},"588":{"start":{"line":589,"column":0},"end":{"line":589,"column":42}},"589":{"start":{"line":590,"column":0},"end":{"line":590,"column":33}},"590":{"start":{"line":591,"column":0},"end":{"line":591,"column":75}},"591":{"start":{"line":592,"column":0},"end":{"line":592,"column":42}},"592":{"start":{"line":593,"column":0},"end":{"line":593,"column":3}},"593":{"start":{"line":594,"column":0},"end":{"line":594,"column":45}},"594":{"start":{"line":595,"column":0},"end":{"line":595,"column":46}},"595":{"start":{"line":596,"column":0},"end":{"line":596,"column":26}},"596":{"start":{"line":597,"column":0},"end":{"line":597,"column":39}},"597":{"start":{"line":598,"column":0},"end":{"line":598,"column":16}},"598":{"start":{"line":599,"column":0},"end":{"line":599,"column":33}},"599":{"start":{"line":600,"column":0},"end":{"line":600,"column":19}},"600":{"start":{"line":601,"column":0},"end":{"line":601,"column":6}},"601":{"start":{"line":602,"column":0},"end":{"line":602,"column":9}},"602":{"start":{"line":603,"column":0},"end":{"line":603,"column":46}},"603":{"start":{"line":604,"column":0},"end":{"line":604,"column":18}},"604":{"start":{"line":605,"column":0},"end":{"line":605,"column":28}},"605":{"start":{"line":606,"column":0},"end":{"line":606,"column":30}},"606":{"start":{"line":607,"column":0},"end":{"line":607,"column":10}},"607":{"start":{"line":608,"column":0},"end":{"line":608,"column":48}},"608":{"start":{"line":609,"column":0},"end":{"line":609,"column":62}},"609":{"start":{"line":610,"column":0},"end":{"line":610,"column":40}},"610":{"start":{"line":611,"column":0},"end":{"line":611,"column":9}},"611":{"start":{"line":612,"column":0},"end":{"line":612,"column":22}},"612":{"start":{"line":613,"column":0},"end":{"line":613,"column":58}},"613":{"start":{"line":614,"column":0},"end":{"line":614,"column":7}},"614":{"start":{"line":615,"column":0},"end":{"line":615,"column":21}},"615":{"start":{"line":616,"column":0},"end":{"line":616,"column":80}},"616":{"start":{"line":617,"column":0},"end":{"line":617,"column":5}},"617":{"start":{"line":618,"column":0},"end":{"line":618,"column":4}},"618":{"start":{"line":619,"column":0},"end":{"line":619,"column":1}},"620":{"start":{"line":621,"column":0},"end":{"line":621,"column":20}},"621":{"start":{"line":622,"column":0},"end":{"line":622,"column":28}},"622":{"start":{"line":623,"column":0},"end":{"line":623,"column":25}},"623":{"start":{"line":624,"column":0},"end":{"line":624,"column":2}},"625":{"start":{"line":626,"column":0},"end":{"line":626,"column":14}},"626":{"start":{"line":627,"column":0},"end":{"line":627,"column":8}},"627":{"start":{"line":628,"column":0},"end":{"line":628,"column":9}},"628":{"start":{"line":629,"column":0},"end":{"line":629,"column":9}},"629":{"start":{"line":630,"column":0},"end":{"line":630,"column":18}},"630":{"start":{"line":631,"column":0},"end":{"line":631,"column":5}},"631":{"start":{"line":632,"column":0},"end":{"line":632,"column":13}},"632":{"start":{"line":633,"column":0},"end":{"line":633,"column":29}},"633":{"start":{"line":634,"column":0},"end":{"line":634,"column":19}},"634":{"start":{"line":635,"column":0},"end":{"line":635,"column":5}},"635":{"start":{"line":636,"column":0},"end":{"line":636,"column":13}},"636":{"start":{"line":637,"column":0},"end":{"line":637,"column":9}},"637":{"start":{"line":638,"column":0},"end":{"line":638,"column":29}},"638":{"start":{"line":639,"column":0},"end":{"line":639,"column":41}},"639":{"start":{"line":640,"column":0},"end":{"line":640,"column":63}},"640":{"start":{"line":641,"column":0},"end":{"line":641,"column":42}},"641":{"start":{"line":642,"column":0},"end":{"line":642,"column":50}},"642":{"start":{"line":643,"column":0},"end":{"line":643,"column":66}},"643":{"start":{"line":644,"column":0},"end":{"line":644,"column":29}},"644":{"start":{"line":645,"column":0},"end":{"line":645,"column":102}},"645":{"start":{"line":646,"column":0},"end":{"line":646,"column":5}},"646":{"start":{"line":647,"column":0},"end":{"line":647,"column":3}},"647":{"start":{"line":648,"column":0},"end":{"line":648,"column":51}},"648":{"start":{"line":649,"column":0},"end":{"line":649,"column":40}},"649":{"start":{"line":650,"column":0},"end":{"line":650,"column":71}},"650":{"start":{"line":651,"column":0},"end":{"line":651,"column":78}},"651":{"start":{"line":652,"column":0},"end":{"line":652,"column":47}},"652":{"start":{"line":653,"column":0},"end":{"line":653,"column":70}},"653":{"start":{"line":654,"column":0},"end":{"line":654,"column":61}},"654":{"start":{"line":655,"column":0},"end":{"line":655,"column":132}},"655":{"start":{"line":656,"column":0},"end":{"line":656,"column":7}},"656":{"start":{"line":657,"column":0},"end":{"line":657,"column":240}},"657":{"start":{"line":658,"column":0},"end":{"line":658,"column":3}},"658":{"start":{"line":659,"column":0},"end":{"line":659,"column":43}},"659":{"start":{"line":660,"column":0},"end":{"line":660,"column":51}},"660":{"start":{"line":661,"column":0},"end":{"line":661,"column":4}},"661":{"start":{"line":662,"column":0},"end":{"line":662,"column":47}},"662":{"start":{"line":663,"column":0},"end":{"line":663,"column":49}},"663":{"start":{"line":664,"column":0},"end":{"line":664,"column":63}},"664":{"start":{"line":665,"column":0},"end":{"line":665,"column":53}},"665":{"start":{"line":666,"column":0},"end":{"line":666,"column":54}},"666":{"start":{"line":667,"column":0},"end":{"line":667,"column":28}},"667":{"start":{"line":668,"column":0},"end":{"line":668,"column":46}},"668":{"start":{"line":669,"column":0},"end":{"line":669,"column":72}},"669":{"start":{"line":670,"column":0},"end":{"line":670,"column":36}},"670":{"start":{"line":671,"column":0},"end":{"line":671,"column":53}},"671":{"start":{"line":672,"column":0},"end":{"line":672,"column":9}},"672":{"start":{"line":673,"column":0},"end":{"line":673,"column":56}},"673":{"start":{"line":674,"column":0},"end":{"line":674,"column":69}},"674":{"start":{"line":675,"column":0},"end":{"line":675,"column":61}},"675":{"start":{"line":676,"column":0},"end":{"line":676,"column":9}},"676":{"start":{"line":677,"column":0},"end":{"line":677,"column":112}},"677":{"start":{"line":678,"column":0},"end":{"line":678,"column":24}},"678":{"start":{"line":679,"column":0},"end":{"line":679,"column":102}},"679":{"start":{"line":680,"column":0},"end":{"line":680,"column":25}},"680":{"start":{"line":681,"column":0},"end":{"line":681,"column":12}},"681":{"start":{"line":682,"column":0},"end":{"line":682,"column":9}},"682":{"start":{"line":683,"column":0},"end":{"line":683,"column":13}},"683":{"start":{"line":684,"column":0},"end":{"line":684,"column":50}},"684":{"start":{"line":685,"column":0},"end":{"line":685,"column":63}},"685":{"start":{"line":686,"column":0},"end":{"line":686,"column":86}},"686":{"start":{"line":687,"column":0},"end":{"line":687,"column":13}},"687":{"start":{"line":688,"column":0},"end":{"line":688,"column":19}},"688":{"start":{"line":689,"column":0},"end":{"line":689,"column":23}},"689":{"start":{"line":690,"column":0},"end":{"line":690,"column":9}},"690":{"start":{"line":691,"column":0},"end":{"line":691,"column":15}},"691":{"start":{"line":692,"column":0},"end":{"line":692,"column":7}},"692":{"start":{"line":693,"column":0},"end":{"line":693,"column":26}},"693":{"start":{"line":694,"column":0},"end":{"line":694,"column":5}},"694":{"start":{"line":695,"column":0},"end":{"line":695,"column":3}},"695":{"start":{"line":696,"column":0},"end":{"line":696,"column":20}},"696":{"start":{"line":697,"column":0},"end":{"line":697,"column":55}},"697":{"start":{"line":698,"column":0},"end":{"line":698,"column":65}},"698":{"start":{"line":699,"column":0},"end":{"line":699,"column":3}},"699":{"start":{"line":700,"column":0},"end":{"line":700,"column":37}},"700":{"start":{"line":701,"column":0},"end":{"line":701,"column":40}},"701":{"start":{"line":702,"column":0},"end":{"line":702,"column":3}},"702":{"start":{"line":703,"column":0},"end":{"line":703,"column":36}},"703":{"start":{"line":704,"column":0},"end":{"line":704,"column":39}},"704":{"start":{"line":705,"column":0},"end":{"line":705,"column":3}},"705":{"start":{"line":706,"column":0},"end":{"line":706,"column":36}},"706":{"start":{"line":707,"column":0},"end":{"line":707,"column":39}},"707":{"start":{"line":708,"column":0},"end":{"line":708,"column":3}},"708":{"start":{"line":709,"column":0},"end":{"line":709,"column":37}},"709":{"start":{"line":710,"column":0},"end":{"line":710,"column":40}},"710":{"start":{"line":711,"column":0},"end":{"line":711,"column":3}},"711":{"start":{"line":712,"column":0},"end":{"line":712,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"8":1,"9":1,"10":1,"11":0,"12":0,"13":0,"14":0,"15":0,"16":1,"17":1,"18":26,"19":0,"20":0,"21":26,"22":12,"23":12,"24":12,"25":12,"26":12,"27":12,"28":26,"29":12,"30":12,"31":26,"32":26,"33":26,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"70":1,"71":1,"72":1,"73":1,"75":4,"76":4,"77":4,"78":4,"79":4,"80":0,"81":0,"82":4,"83":4,"84":4,"85":4,"86":4,"87":4,"88":4,"89":28,"90":28,"91":4,"92":4,"93":4,"94":4,"95":4,"96":4,"97":4,"98":4,"99":0,"100":0,"101":4,"102":4,"103":4,"104":4,"105":38,"106":38,"107":38,"108":38,"109":38,"110":0,"111":0,"112":38,"113":38,"114":4,"115":4,"116":4,"117":4,"118":38,"119":38,"120":38,"121":0,"122":0,"123":38,"124":38,"125":38,"126":38,"127":0,"128":0,"129":38,"130":4,"131":4,"132":1,"134":1,"135":4,"136":4,"137":4,"139":1,"140":0,"141":0,"142":1,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":1,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":1,"239":4,"240":4,"241":0,"242":0,"243":4,"244":76,"245":76,"246":266,"247":266,"248":266,"249":266,"250":76,"251":4,"252":4,"253":14,"254":14,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":14,"262":14,"263":4,"264":4,"265":4,"266":4,"267":4,"268":4,"269":4,"270":4,"272":1,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":1,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":1,"303":0,"304":0,"305":0,"306":1,"308":1,"309":76,"310":76,"311":76,"312":76,"313":0,"314":0,"315":1,"317":1,"318":0,"319":0,"320":0,"321":0,"322":0,"323":0,"324":0,"325":0,"326":0,"327":0,"328":0,"329":0,"330":1,"332":0,"333":0,"334":0,"335":0,"336":0,"337":0,"338":0,"339":0,"340":0,"341":0,"342":0,"343":0,"344":0,"345":0,"346":0,"347":0,"348":0,"349":0,"350":0,"351":0,"352":0,"353":0,"354":0,"355":0,"356":1,"357":0,"358":0,"359":0,"360":0,"361":0,"362":0,"363":0,"364":0,"365":0,"366":0,"367":0,"368":0,"369":0,"370":0,"371":0,"372":0,"373":1,"375":1,"376":1,"377":0,"378":0,"379":0,"380":0,"381":0,"382":1,"384":1,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":1,"393":4,"394":4,"395":4,"396":4,"397":4,"398":4,"399":76,"400":76,"401":4,"402":4,"403":1,"405":1,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"413":0,"414":0,"415":0,"416":0,"417":0,"418":0,"419":1,"421":1,"422":1,"423":0,"424":0,"425":0,"426":0,"427":0,"428":0,"429":0,"430":0,"431":0,"432":0,"433":0,"434":0,"435":0,"436":0,"437":0,"438":0,"439":0,"440":0,"441":0,"442":0,"443":0,"444":0,"445":0,"446":0,"447":0,"448":0,"449":0,"450":0,"451":0,"452":0,"453":0,"454":0,"455":0,"456":0,"457":0,"458":0,"459":0,"460":0,"461":0,"462":0,"463":0,"464":0,"465":0,"466":0,"467":0,"468":0,"469":0,"470":0,"471":0,"472":0,"473":0,"474":0,"475":0,"476":0,"477":0,"478":0,"479":0,"480":0,"481":1,"483":1,"484":76,"485":76,"486":76,"487":76,"488":0,"489":0,"490":76,"491":0,"492":0,"493":76,"494":1,"496":0,"497":0,"498":0,"499":1,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":1,"512":34,"513":34,"514":34,"515":20,"516":34,"517":34,"518":34,"519":34,"520":1,"521":1,"522":1,"523":1,"524":1,"525":1,"526":1,"527":1,"528":1,"529":1,"530":1,"531":1,"532":1,"533":1,"534":1,"535":1,"536":1,"538":2,"539":2,"540":2,"541":2,"542":2,"543":2,"544":2,"545":2,"546":2,"547":2,"548":2,"549":2,"550":2,"551":2,"552":2,"553":38,"554":38,"555":38,"556":38,"557":2,"558":2,"559":38,"560":38,"561":38,"562":38,"563":2,"565":2,"566":2,"567":2,"568":2,"569":2,"570":2,"571":38,"572":38,"573":38,"574":38,"575":38,"576":38,"577":2,"578":2,"580":0,"581":0,"582":0,"583":0,"584":0,"585":0,"586":0,"587":0,"588":0,"589":0,"590":0,"591":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"609":0,"610":0,"611":0,"612":0,"613":0,"614":0,"615":0,"616":0,"617":0,"618":0,"620":1,"621":1,"622":1,"623":1,"625":2,"626":2,"627":2,"628":2,"629":2,"630":2,"631":2,"632":2,"633":2,"634":2,"635":2,"636":2,"637":2,"638":2,"639":2,"640":2,"641":2,"642":2,"643":2,"644":2,"645":2,"646":2,"647":2,"648":4,"649":4,"650":4,"651":4,"652":76,"653":76,"654":76,"655":4,"656":4,"657":4,"658":2,"659":0,"660":2,"661":2,"662":38,"663":38,"664":38,"665":38,"666":0,"667":38,"668":38,"669":38,"670":38,"671":38,"672":38,"673":0,"674":0,"675":0,"676":38,"677":0,"678":0,"679":0,"680":0,"681":0,"682":38,"683":38,"684":38,"685":38,"686":38,"687":38,"688":38,"689":38,"690":38,"691":38,"692":38,"693":38,"694":38,"695":2,"696":38,"697":38,"698":38,"699":2,"700":0,"701":0,"702":2,"703":16,"704":16,"705":2,"706":14,"707":14,"708":2,"709":8,"710":8,"711":2},"branchMap":{"0":{"type":"branch","line":18,"loc":{"start":{"line":18,"column":15},"end":{"line":34,"column":2}},"locations":[{"start":{"line":18,"column":15},"end":{"line":34,"column":2}}]},"1":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":27},"end":{"line":21,"column":3}},"locations":[{"start":{"line":19,"column":27},"end":{"line":21,"column":3}}]},"2":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":28,"column":3}},"locations":[{"start":{"line":22,"column":2},"end":{"line":28,"column":3}}]},"3":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"locations":[{"start":{"line":24,"column":4},"end":{"line":26,"column":5}}]},"4":{"type":"branch","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"locations":[{"start":{"line":29,"column":2},"end":{"line":31,"column":3}}]},"5":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":0},"end":{"line":132,"column":1}},"locations":[{"start":{"line":76,"column":0},"end":{"line":132,"column":1}}]},"6":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":77,"column":23}},"locations":[{"start":{"line":77,"column":2},"end":{"line":77,"column":23}}]},"7":{"type":"branch","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":84,"column":3}},"locations":[{"start":{"line":79,"column":2},"end":{"line":84,"column":3}}]},"8":{"type":"branch","line":80,"loc":{"start":{"line":80,"column":21},"end":{"line":82,"column":5}},"locations":[{"start":{"line":80,"column":21},"end":{"line":82,"column":5}}]},"9":{"type":"branch","line":88,"loc":{"start":{"line":88,"column":9},"end":{"line":95,"column":3}},"locations":[{"start":{"line":88,"column":9},"end":{"line":95,"column":3}}]},"10":{"type":"branch","line":89,"loc":{"start":{"line":89,"column":53},"end":{"line":92,"column":5}},"locations":[{"start":{"line":89,"column":53},"end":{"line":92,"column":5}}]},"11":{"type":"branch","line":90,"loc":{"start":{"line":90,"column":64},"end":{"line":90,"column":70}},"locations":[{"start":{"line":90,"column":64},"end":{"line":90,"column":70}}]},"12":{"type":"branch","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":114,"column":3}},"locations":[{"start":{"line":105,"column":2},"end":{"line":114,"column":3}}]},"13":{"type":"branch","line":110,"loc":{"start":{"line":110,"column":20},"end":{"line":112,"column":5}},"locations":[{"start":{"line":110,"column":20},"end":{"line":112,"column":5}}]},"14":{"type":"branch","line":118,"loc":{"start":{"line":118,"column":14},"end":{"line":131,"column":3}},"locations":[{"start":{"line":118,"column":14},"end":{"line":131,"column":3}}]},"15":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":20},"end":{"line":121,"column":56}},"locations":[{"start":{"line":121,"column":20},"end":{"line":121,"column":56}}]},"16":{"type":"branch","line":121,"loc":{"start":{"line":121,"column":58},"end":{"line":123,"column":5}},"locations":[{"start":{"line":121,"column":58},"end":{"line":123,"column":5}}]},"17":{"type":"branch","line":127,"loc":{"start":{"line":127,"column":40},"end":{"line":129,"column":5}},"locations":[{"start":{"line":127,"column":40},"end":{"line":129,"column":5}}]},"18":{"type":"branch","line":133,"loc":{"start":{"line":133,"column":17},"end":{"line":133,"column":51}},"locations":[{"start":{"line":133,"column":17},"end":{"line":133,"column":51}}]},"19":{"type":"branch","line":135,"loc":{"start":{"line":135,"column":15},"end":{"line":138,"column":2}},"locations":[{"start":{"line":135,"column":15},"end":{"line":138,"column":2}}]},"20":{"type":"branch","line":240,"loc":{"start":{"line":240,"column":0},"end":{"line":253,"column":1}},"locations":[{"start":{"line":240,"column":0},"end":{"line":253,"column":1}}]},"21":{"type":"branch","line":241,"loc":{"start":{"line":241,"column":37},"end":{"line":243,"column":3}},"locations":[{"start":{"line":241,"column":37},"end":{"line":243,"column":3}}]},"22":{"type":"branch","line":244,"loc":{"start":{"line":244,"column":9},"end":{"line":252,"column":3}},"locations":[{"start":{"line":244,"column":9},"end":{"line":252,"column":3}}]},"23":{"type":"branch","line":246,"loc":{"start":{"line":246,"column":45},"end":{"line":250,"column":5}},"locations":[{"start":{"line":246,"column":45},"end":{"line":250,"column":5}}]},"24":{"type":"branch","line":254,"loc":{"start":{"line":254,"column":0},"end":{"line":263,"column":1}},"locations":[{"start":{"line":254,"column":0},"end":{"line":263,"column":1}}]},"25":{"type":"branch","line":255,"loc":{"start":{"line":255,"column":43},"end":{"line":261,"column":3}},"locations":[{"start":{"line":255,"column":43},"end":{"line":261,"column":3}}]},"26":{"type":"branch","line":264,"loc":{"start":{"line":264,"column":0},"end":{"line":271,"column":1}},"locations":[{"start":{"line":264,"column":0},"end":{"line":271,"column":1}}]},"27":{"type":"branch","line":309,"loc":{"start":{"line":309,"column":21},"end":{"line":316,"column":2}},"locations":[{"start":{"line":309,"column":21},"end":{"line":316,"column":2}}]},"28":{"type":"branch","line":313,"loc":{"start":{"line":313,"column":2},"end":{"line":316,"column":2}},"locations":[{"start":{"line":313,"column":2},"end":{"line":316,"column":2}}]},"29":{"type":"branch","line":394,"loc":{"start":{"line":394,"column":0},"end":{"line":403,"column":1}},"locations":[{"start":{"line":394,"column":0},"end":{"line":403,"column":1}}]},"30":{"type":"branch","line":396,"loc":{"start":{"line":396,"column":2},"end":{"line":398,"column":3}},"locations":[{"start":{"line":396,"column":2},"end":{"line":398,"column":3}}]},"31":{"type":"branch","line":399,"loc":{"start":{"line":399,"column":14},"end":{"line":402,"column":3}},"locations":[{"start":{"line":399,"column":14},"end":{"line":402,"column":3}}]},"32":{"type":"branch","line":404,"loc":{"start":{"line":404,"column":15},"end":{"line":404,"column":53}},"locations":[{"start":{"line":404,"column":15},"end":{"line":404,"column":53}}]},"33":{"type":"branch","line":484,"loc":{"start":{"line":484,"column":25},"end":{"line":495,"column":2}},"locations":[{"start":{"line":484,"column":25},"end":{"line":495,"column":2}}]},"34":{"type":"branch","line":486,"loc":{"start":{"line":486,"column":55},"end":{"line":486,"column":70}},"locations":[{"start":{"line":486,"column":55},"end":{"line":486,"column":70}}]},"35":{"type":"branch","line":488,"loc":{"start":{"line":488,"column":23},"end":{"line":490,"column":3}},"locations":[{"start":{"line":488,"column":23},"end":{"line":490,"column":3}}]},"36":{"type":"branch","line":491,"loc":{"start":{"line":491,"column":18},"end":{"line":493,"column":3}},"locations":[{"start":{"line":491,"column":18},"end":{"line":493,"column":3}}]},"37":{"type":"branch","line":513,"loc":{"start":{"line":513,"column":0},"end":{"line":520,"column":1}},"locations":[{"start":{"line":513,"column":0},"end":{"line":520,"column":1}}]},"38":{"type":"branch","line":515,"loc":{"start":{"line":515,"column":4},"end":{"line":517,"column":5}},"locations":[{"start":{"line":515,"column":4},"end":{"line":517,"column":5}}]},"39":{"type":"branch","line":523,"loc":{"start":{"line":523,"column":25},"end":{"line":523,"column":39}},"locations":[{"start":{"line":523,"column":25},"end":{"line":523,"column":39}}]},"40":{"type":"branch","line":524,"loc":{"start":{"line":524,"column":24},"end":{"line":524,"column":37}},"locations":[{"start":{"line":524,"column":24},"end":{"line":524,"column":37}}]},"41":{"type":"branch","line":527,"loc":{"start":{"line":527,"column":22},"end":{"line":527,"column":33}},"locations":[{"start":{"line":527,"column":22},"end":{"line":527,"column":33}}]},"42":{"type":"branch","line":533,"loc":{"start":{"line":533,"column":23},"end":{"line":533,"column":35}},"locations":[{"start":{"line":533,"column":23},"end":{"line":533,"column":35}}]},"43":{"type":"branch","line":536,"loc":{"start":{"line":536,"column":26},"end":{"line":536,"column":41}},"locations":[{"start":{"line":536,"column":26},"end":{"line":536,"column":41}}]},"44":{"type":"branch","line":539,"loc":{"start":{"line":539,"column":0},"end":{"line":564,"column":1}},"locations":[{"start":{"line":539,"column":0},"end":{"line":564,"column":1}}]},"45":{"type":"branch","line":545,"loc":{"start":{"line":545,"column":2},"end":{"line":551,"column":3}},"locations":[{"start":{"line":545,"column":2},"end":{"line":551,"column":3}}]},"46":{"type":"branch","line":550,"loc":{"start":{"line":550,"column":47},"end":{"line":550,"column":60}},"locations":[{"start":{"line":550,"column":47},"end":{"line":550,"column":60}}]},"47":{"type":"branch","line":553,"loc":{"start":{"line":553,"column":2},"end":{"line":557,"column":3}},"locations":[{"start":{"line":553,"column":2},"end":{"line":557,"column":3}}]},"48":{"type":"branch","line":556,"loc":{"start":{"line":556,"column":73},"end":{"line":556,"column":82}},"locations":[{"start":{"line":556,"column":73},"end":{"line":556,"column":82}}]},"49":{"type":"branch","line":559,"loc":{"start":{"line":559,"column":2},"end":{"line":563,"column":3}},"locations":[{"start":{"line":559,"column":2},"end":{"line":563,"column":3}}]},"50":{"type":"branch","line":566,"loc":{"start":{"line":566,"column":0},"end":{"line":579,"column":1}},"locations":[{"start":{"line":566,"column":0},"end":{"line":579,"column":1}}]},"51":{"type":"branch","line":567,"loc":{"start":{"line":567,"column":2},"end":{"line":570,"column":3}},"locations":[{"start":{"line":567,"column":2},"end":{"line":570,"column":3}}]},"52":{"type":"branch","line":571,"loc":{"start":{"line":571,"column":8},"end":{"line":578,"column":3}},"locations":[{"start":{"line":571,"column":8},"end":{"line":578,"column":3}}]},"53":{"type":"branch","line":572,"loc":{"start":{"line":572,"column":36},"end":{"line":572,"column":43}},"locations":[{"start":{"line":572,"column":36},"end":{"line":572,"column":43}}]},"54":{"type":"branch","line":575,"loc":{"start":{"line":575,"column":6},"end":{"line":575,"column":26}},"locations":[{"start":{"line":575,"column":6},"end":{"line":575,"column":26}}]},"55":{"type":"branch","line":577,"loc":{"start":{"line":577,"column":12},"end":{"line":577,"column":16}},"locations":[{"start":{"line":577,"column":12},"end":{"line":577,"column":16}}]},"56":{"type":"branch","line":626,"loc":{"start":{"line":626,"column":0},"end":{"line":712,"column":1}},"locations":[{"start":{"line":626,"column":0},"end":{"line":712,"column":1}}]},"57":{"type":"branch","line":638,"loc":{"start":{"line":638,"column":2},"end":{"line":647,"column":3}},"locations":[{"start":{"line":638,"column":2},"end":{"line":647,"column":3}}]},"58":{"type":"branch","line":643,"loc":{"start":{"line":643,"column":33},"end":{"line":643,"column":65}},"locations":[{"start":{"line":643,"column":33},"end":{"line":643,"column":65}}]},"59":{"type":"branch","line":645,"loc":{"start":{"line":645,"column":79},"end":{"line":645,"column":101}},"locations":[{"start":{"line":645,"column":79},"end":{"line":645,"column":101}}]},"60":{"type":"branch","line":648,"loc":{"start":{"line":648,"column":9},"end":{"line":658,"column":3}},"locations":[{"start":{"line":648,"column":9},"end":{"line":658,"column":3}}]},"61":{"type":"branch","line":657,"loc":{"start":{"line":657,"column":20},"end":{"line":657,"column":140}},"locations":[{"start":{"line":657,"column":20},"end":{"line":657,"column":140}}]},"62":{"type":"branch","line":657,"loc":{"start":{"line":657,"column":91},"end":{"line":657,"column":140}},"locations":[{"start":{"line":657,"column":91},"end":{"line":657,"column":140}}]},"63":{"type":"branch","line":657,"loc":{"start":{"line":657,"column":141},"end":{"line":657,"column":239}},"locations":[{"start":{"line":657,"column":141},"end":{"line":657,"column":239}}]},"64":{"type":"branch","line":657,"loc":{"start":{"line":657,"column":201},"end":{"line":657,"column":239}},"locations":[{"start":{"line":657,"column":201},"end":{"line":657,"column":239}}]},"65":{"type":"branch","line":652,"loc":{"start":{"line":652,"column":36},"end":{"line":656,"column":5}},"locations":[{"start":{"line":652,"column":36},"end":{"line":656,"column":5}}]},"66":{"type":"branch","line":655,"loc":{"start":{"line":655,"column":82},"end":{"line":655,"column":86}},"locations":[{"start":{"line":655,"column":82},"end":{"line":655,"column":86}}]},"67":{"type":"branch","line":655,"loc":{"start":{"line":655,"column":124},"end":{"line":655,"column":129}},"locations":[{"start":{"line":655,"column":124},"end":{"line":655,"column":129}}]},"68":{"type":"branch","line":662,"loc":{"start":{"line":662,"column":2},"end":{"line":695,"column":3}},"locations":[{"start":{"line":662,"column":2},"end":{"line":695,"column":3}}]},"69":{"type":"branch","line":666,"loc":{"start":{"line":666,"column":39},"end":{"line":666,"column":51}},"locations":[{"start":{"line":666,"column":39},"end":{"line":666,"column":51}}]},"70":{"type":"branch","line":666,"loc":{"start":{"line":666,"column":53},"end":{"line":668,"column":7}},"locations":[{"start":{"line":666,"column":53},"end":{"line":668,"column":7}}]},"71":{"type":"branch","line":673,"loc":{"start":{"line":673,"column":55},"end":{"line":676,"column":9}},"locations":[{"start":{"line":673,"column":55},"end":{"line":676,"column":9}}]},"72":{"type":"branch","line":677,"loc":{"start":{"line":677,"column":90},"end":{"line":677,"column":108}},"locations":[{"start":{"line":677,"column":90},"end":{"line":677,"column":108}}]},"73":{"type":"branch","line":677,"loc":{"start":{"line":677,"column":111},"end":{"line":682,"column":9}},"locations":[{"start":{"line":677,"column":111},"end":{"line":682,"column":9}}]},"74":{"type":"branch","line":689,"loc":{"start":{"line":689,"column":18},"end":{"line":689,"column":22}},"locations":[{"start":{"line":689,"column":18},"end":{"line":689,"column":22}}]},"75":{"type":"branch","line":692,"loc":{"start":{"line":692,"column":6},"end":{"line":693,"column":25}},"locations":[{"start":{"line":692,"column":6},"end":{"line":693,"column":25}}]},"76":{"type":"branch","line":684,"loc":{"start":{"line":684,"column":34},"end":{"line":687,"column":11}},"locations":[{"start":{"line":684,"column":34},"end":{"line":687,"column":11}}]},"77":{"type":"branch","line":685,"loc":{"start":{"line":685,"column":29},"end":{"line":685,"column":62}},"locations":[{"start":{"line":685,"column":29},"end":{"line":685,"column":62}}]},"78":{"type":"branch","line":696,"loc":{"start":{"line":696,"column":2},"end":{"line":699,"column":3}},"locations":[{"start":{"line":696,"column":2},"end":{"line":699,"column":3}}]},"79":{"type":"branch","line":703,"loc":{"start":{"line":703,"column":2},"end":{"line":705,"column":3}},"locations":[{"start":{"line":703,"column":2},"end":{"line":705,"column":3}}]},"80":{"type":"branch","line":706,"loc":{"start":{"line":706,"column":2},"end":{"line":708,"column":3}},"locations":[{"start":{"line":706,"column":2},"end":{"line":708,"column":3}}]},"81":{"type":"branch","line":709,"loc":{"start":{"line":709,"column":2},"end":{"line":711,"column":3}},"locations":[{"start":{"line":709,"column":2},"end":{"line":711,"column":3}}]}},"b":{"0":[26],"1":[0],"2":[12],"3":[12],"4":[12],"5":[4],"6":[2],"7":[4],"8":[0],"9":[4],"10":[28],"11":[0],"12":[38],"13":[0],"14":[38],"15":[0],"16":[0],"17":[0],"18":[4],"19":[4],"20":[4],"21":[0],"22":[76],"23":[266],"24":[14],"25":[0],"26":[4],"27":[76],"28":[0],"29":[4],"30":[4],"31":[76],"32":[4],"33":[76],"34":[0],"35":[0],"36":[0],"37":[34],"38":[20],"39":[4],"40":[4],"41":[4],"42":[4],"43":[4],"44":[2],"45":[2],"46":[0],"47":[38],"48":[0],"49":[38],"50":[2],"51":[2],"52":[38],"53":[0],"54":[0],"55":[0],"56":[2],"57":[2],"58":[0],"59":[0],"60":[4],"61":[2],"62":[0],"63":[2],"64":[0],"65":[76],"66":[0],"67":[0],"68":[38],"69":[0],"70":[0],"71":[0],"72":[0],"73":[0],"74":[0],"75":[0],"76":[38],"77":[2],"78":[38],"79":[16],"80":[14],"81":[8]},"fnMap":{"0":{"name":"InvalidFormatError","decl":{"start":{"line":11,"column":2},"end":{"line":16,"column":3}},"loc":{"start":{"line":11,"column":2},"end":{"line":16,"column":3}},"line":11},"1":{"name":"format","decl":{"start":{"line":18,"column":15},"end":{"line":34,"column":2}},"loc":{"start":{"line":18,"column":15},"end":{"line":34,"column":2}},"line":18},"2":{"name":"","decl":{"start":{"line":22,"column":2},"end":{"line":28,"column":3}},"loc":{"start":{"line":22,"column":2},"end":{"line":28,"column":3}},"line":22},"3":{"name":"Format","decl":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":24,"column":4},"end":{"line":26,"column":5}},"line":24},"4":{"name":"createFormatWrap","decl":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":3}},"line":29},"5":{"name":"","decl":{"start":{"line":76,"column":0},"end":{"line":132,"column":1}},"loc":{"start":{"line":76,"column":0},"end":{"line":132,"column":1}},"line":76},"6":{"name":"","decl":{"start":{"line":77,"column":2},"end":{"line":77,"column":23}},"loc":{"start":{"line":77,"column":2},"end":{"line":77,"column":23}},"line":77},"7":{"name":"Colorizer","decl":{"start":{"line":79,"column":2},"end":{"line":84,"column":3}},"loc":{"start":{"line":79,"column":2},"end":{"line":84,"column":3}},"line":79},"8":{"name":"addColors","decl":{"start":{"line":88,"column":9},"end":{"line":95,"column":3}},"loc":{"start":{"line":88,"column":9},"end":{"line":95,"column":3}},"line":88},"9":{"name":"addColors","decl":{"start":{"line":99,"column":2},"end":{"line":101,"column":3}},"loc":{"start":{"line":99,"column":2},"end":{"line":101,"column":3}},"line":99},"10":{"name":"colorize","decl":{"start":{"line":105,"column":2},"end":{"line":114,"column":3}},"loc":{"start":{"line":105,"column":2},"end":{"line":114,"column":3}},"line":105},"11":{"name":"transform","decl":{"start":{"line":118,"column":14},"end":{"line":131,"column":3}},"loc":{"start":{"line":118,"column":14},"end":{"line":131,"column":3}},"line":118},"12":{"name":"colorize","decl":{"start":{"line":133,"column":17},"end":{"line":133,"column":51}},"loc":{"start":{"line":133,"column":17},"end":{"line":133,"column":51}},"line":133},"13":{"name":"levels","decl":{"start":{"line":135,"column":15},"end":{"line":138,"column":2}},"loc":{"start":{"line":135,"column":15},"end":{"line":138,"column":2}},"line":135},"14":{"name":"","decl":{"start":{"line":145,"column":0},"end":{"line":210,"column":1}},"loc":{"start":{"line":145,"column":0},"end":{"line":210,"column":1}},"line":145},"15":{"name":"padLevels","decl":{"start":{"line":211,"column":18},"end":{"line":211,"column":44}},"loc":{"start":{"line":211,"column":18},"end":{"line":211,"column":44}},"line":211},"16":{"name":"","decl":{"start":{"line":213,"column":0},"end":{"line":237,"column":1}},"loc":{"start":{"line":213,"column":0},"end":{"line":237,"column":1}},"line":213},"17":{"name":"cli","decl":{"start":{"line":238,"column":12},"end":{"line":238,"column":41}},"loc":{"start":{"line":238,"column":12},"end":{"line":238,"column":41}},"line":238},"18":{"name":"cascade","decl":{"start":{"line":240,"column":0},"end":{"line":253,"column":1}},"loc":{"start":{"line":240,"column":0},"end":{"line":253,"column":1}},"line":240},"19":{"name":"isValidFormat","decl":{"start":{"line":254,"column":0},"end":{"line":263,"column":1}},"loc":{"start":{"line":254,"column":0},"end":{"line":263,"column":1}},"line":254},"20":{"name":"combine","decl":{"start":{"line":264,"column":0},"end":{"line":271,"column":1}},"loc":{"start":{"line":264,"column":0},"end":{"line":271,"column":1}},"line":264},"21":{"name":"replacer","decl":{"start":{"line":297,"column":0},"end":{"line":302,"column":1}},"loc":{"start":{"line":297,"column":0},"end":{"line":302,"column":1}},"line":297},"22":{"name":"fillExcept","decl":{"start":{"line":333,"column":0},"end":{"line":348,"column":1}},"loc":{"start":{"line":333,"column":0},"end":{"line":348,"column":1}},"line":333},"23":{"name":"fillWith","decl":{"start":{"line":349,"column":0},"end":{"line":356,"column":1}},"loc":{"start":{"line":349,"column":0},"end":{"line":356,"column":1}},"line":349},"24":{"name":"","decl":{"start":{"line":394,"column":0},"end":{"line":403,"column":1}},"loc":{"start":{"line":394,"column":0},"end":{"line":403,"column":1}},"line":394},"25":{"name":"Printf","decl":{"start":{"line":396,"column":2},"end":{"line":398,"column":3}},"loc":{"start":{"line":396,"column":2},"end":{"line":398,"column":3}},"line":396},"26":{"name":"transform","decl":{"start":{"line":399,"column":14},"end":{"line":402,"column":3}},"loc":{"start":{"line":399,"column":14},"end":{"line":402,"column":3}},"line":399},"27":{"name":"printf","decl":{"start":{"line":404,"column":15},"end":{"line":404,"column":53}},"loc":{"start":{"line":404,"column":15},"end":{"line":404,"column":53}},"line":404},"28":{"name":"","decl":{"start":{"line":424,"column":0},"end":{"line":481,"column":1}},"loc":{"start":{"line":424,"column":0},"end":{"line":481,"column":1}},"line":424},"29":{"name":"splat","decl":{"start":{"line":482,"column":14},"end":{"line":482,"column":34}},"loc":{"start":{"line":482,"column":14},"end":{"line":482,"column":34}},"line":482},"30":{"name":"stripColors","decl":{"start":{"line":497,"column":0},"end":{"line":499,"column":1}},"loc":{"start":{"line":497,"column":0},"end":{"line":499,"column":1}},"line":497},"31":{"name":"exposeFormat","decl":{"start":{"line":513,"column":0},"end":{"line":520,"column":1}},"loc":{"start":{"line":513,"column":0},"end":{"line":520,"column":1}},"line":513},"32":{"name":"get","decl":{"start":{"line":515,"column":4},"end":{"line":517,"column":5}},"loc":{"start":{"line":515,"column":4},"end":{"line":517,"column":5}},"line":515},"33":{"name":"","decl":{"start":{"line":539,"column":0},"end":{"line":564,"column":1}},"loc":{"start":{"line":539,"column":0},"end":{"line":564,"column":1}},"line":539},"34":{"name":"Transport","decl":{"start":{"line":545,"column":2},"end":{"line":551,"column":3}},"loc":{"start":{"line":545,"column":2},"end":{"line":551,"column":3}},"line":545},"35":{"name":"shouldLog","decl":{"start":{"line":553,"column":2},"end":{"line":557,"column":3}},"loc":{"start":{"line":553,"column":2},"end":{"line":557,"column":3}},"line":553},"36":{"name":"selfFormat","decl":{"start":{"line":559,"column":2},"end":{"line":563,"column":3}},"loc":{"start":{"line":559,"column":2},"end":{"line":563,"column":3}},"line":559},"37":{"name":"","decl":{"start":{"line":566,"column":0},"end":{"line":579,"column":1}},"loc":{"start":{"line":566,"column":0},"end":{"line":579,"column":1}},"line":566},"38":{"name":"ConsoleTransport","decl":{"start":{"line":567,"column":2},"end":{"line":570,"column":3}},"loc":{"start":{"line":567,"column":2},"end":{"line":570,"column":3}},"line":567},"39":{"name":"log","decl":{"start":{"line":571,"column":8},"end":{"line":578,"column":3}},"loc":{"start":{"line":571,"column":8},"end":{"line":578,"column":3}},"line":571},"40":{"name":"","decl":{"start":{"line":581,"column":0},"end":{"line":619,"column":1}},"loc":{"start":{"line":581,"column":0},"end":{"line":619,"column":1}},"line":581},"41":{"name":"","decl":{"start":{"line":626,"column":0},"end":{"line":712,"column":1}},"loc":{"start":{"line":626,"column":0},"end":{"line":712,"column":1}},"line":626},"42":{"name":"Logger","decl":{"start":{"line":638,"column":2},"end":{"line":647,"column":3}},"loc":{"start":{"line":638,"column":2},"end":{"line":647,"column":3}},"line":638},"43":{"name":"createLogFormat","decl":{"start":{"line":648,"column":9},"end":{"line":658,"column":3}},"loc":{"start":{"line":648,"column":9},"end":{"line":658,"column":3}},"line":648},"44":{"name":"updateLogFormat","decl":{"start":{"line":659,"column":20},"end":{"line":661,"column":3}},"loc":{"start":{"line":659,"column":20},"end":{"line":661,"column":3}},"line":659},"45":{"name":"log","decl":{"start":{"line":662,"column":2},"end":{"line":695,"column":3}},"loc":{"start":{"line":662,"column":2},"end":{"line":695,"column":3}},"line":662},"46":{"name":"shouldLog","decl":{"start":{"line":696,"column":2},"end":{"line":699,"column":3}},"loc":{"start":{"line":696,"column":2},"end":{"line":699,"column":3}},"line":696},"47":{"name":"debug","decl":{"start":{"line":700,"column":2},"end":{"line":702,"column":3}},"loc":{"start":{"line":700,"column":2},"end":{"line":702,"column":3}},"line":700},"48":{"name":"info","decl":{"start":{"line":703,"column":2},"end":{"line":705,"column":3}},"loc":{"start":{"line":703,"column":2},"end":{"line":705,"column":3}},"line":703},"49":{"name":"warn","decl":{"start":{"line":706,"column":2},"end":{"line":708,"column":3}},"loc":{"start":{"line":706,"column":2},"end":{"line":708,"column":3}},"line":706},"50":{"name":"error","decl":{"start":{"line":709,"column":2},"end":{"line":711,"column":3}},"loc":{"start":{"line":709,"column":2},"end":{"line":711,"column":3}},"line":709}},"f":{"0":0,"1":26,"2":12,"3":12,"4":12,"5":4,"6":2,"7":4,"8":4,"9":0,"10":38,"11":38,"12":4,"13":4,"14":0,"15":0,"16":0,"17":0,"18":4,"19":14,"20":4,"21":0,"22":0,"23":0,"24":4,"25":4,"26":76,"27":4,"28":0,"29":0,"30":0,"31":34,"32":20,"33":2,"34":2,"35":38,"36":38,"37":2,"38":2,"39":38,"40":0,"41":2,"42":2,"43":4,"44":0,"45":38,"46":38,"47":0,"48":16,"49":14,"50":8}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/index.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":51}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":55}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":46}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":29}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":51}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":46}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":29}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":51}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":54}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":40}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":41}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":49}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":65}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":29}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":101}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":5}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":60}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":39}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":70}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":77}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":47}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":69}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":60}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":131}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":6}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":19}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":126}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":104}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":43}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":50}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":124}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":49}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":62}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":52}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":54}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":27}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":7}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":44}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":71}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":36}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":52}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":9}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":56}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":68}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":60}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":9}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":112}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":24}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":102}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":26}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":11}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":9}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":13}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":50}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":62}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":85}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":12}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":9}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":17}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":22}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":9}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":14}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":7}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":25}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":5}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":3}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":36}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":53}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":62}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":3}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":67}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":39}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":3}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":66}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":38}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":3}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":66}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":38}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":67}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":39}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":3}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":1}}},"s":{"3":0,"4":0,"5":0,"6":0,"8":0,"9":0,"10":0,"11":0,"12":0,"18":0,"19":0,"21":0,"22":0,"23":0,"25":0,"26":0,"28":0,"31":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"43":0,"45":0,"46":0,"48":0,"49":0,"50":0,"51":0,"53":0,"54":0,"55":0,"57":0,"58":0,"59":0,"60":0,"62":0,"65":0,"66":0,"67":0,"68":0,"77":0,"78":0,"79":0,"84":0,"85":0,"86":0,"87":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"116":0,"117":0,"118":0,"119":0,"121":0,"122":0,"123":0,"125":0,"126":0,"127":0,"129":0,"130":0,"131":0,"133":0,"134":0,"135":0,"136":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":5304},"end":{"line":139,"column":37}},"locations":[{"start":{"line":1,"column":5304},"end":{"line":139,"column":37}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":5304},"end":{"line":139,"column":37}},"loc":{"start":{"line":1,"column":5304},"end":{"line":139,"column":37}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/format.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/format.ts","all":true,"statementMap":{"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":35}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":82}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":48}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":53}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":3}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":85}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":28}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":42}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":16}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":39}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":28}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":24}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":34}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":25}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":46}}},"s":{"6":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"19":0,"20":0,"21":0,"22":0,"29":0,"30":0,"32":0,"33":0,"34":0,"36":0,"37":0,"45":0,"46":0,"47":0,"53":0,"55":0,"56":0,"58":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1411},"end":{"line":59,"column":46}},"locations":[{"start":{"line":1,"column":1411},"end":{"line":59,"column":46}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1411},"end":{"line":59,"column":46}},"loc":{"start":{"line":1,"column":1411},"end":{"line":59,"column":46}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":59}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":29}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":41}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":35}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":41}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":41}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":44}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":48}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":37}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":37}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":43}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":45}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":63}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":39}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":11}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":28}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":6}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":4}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":34}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":40}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":38}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":36}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":32}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":34}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":40}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":40}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":28}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":42}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":46}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":36}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":36}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":34}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":42}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":37}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":59}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":22}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":4}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":58}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":36}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":72}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":15}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":48}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":5}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":4}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":15}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":1}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":21}}},"s":{"0":0,"1":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"72":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":76,"column":-1556}},"locations":[{"start":{"line":1,"column":0},"end":{"line":76,"column":-1556}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":76,"column":-1556}},"loc":{"start":{"line":1,"column":0},"end":{"line":76,"column":-1556}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/levels.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/levels.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":46}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":36}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":15}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}}},"s":{"1":0,"7":0,"8":0,"9":0,"10":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":298},"end":{"line":11,"column":1}},"locations":[{"start":{"line":1,"column":298},"end":{"line":11,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":298},"end":{"line":11,"column":1}},"loc":{"start":{"line":1,"column":298},"end":{"line":11,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/align.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/align.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":2}}},"s":{"0":0,"8":0,"9":0,"10":0,"11":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":343},"end":{"line":12,"column":2}},"locations":[{"start":{"line":1,"column":343},"end":{"line":12,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":343},"end":{"line":12,"column":2}},"loc":{"start":{"line":1,"column":343},"end":{"line":12,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/cli.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/cli.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":38}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":37}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":16}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":44}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":23}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":38}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":40}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":34}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":23}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":68}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":69}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":51}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":15}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":62}}},"s":{"3":0,"4":0,"5":0,"13":0,"14":0,"15":0,"16":0,"18":0,"19":0,"20":0,"21":0,"23":0,"24":0,"25":0,"26":0,"35":0,"36":0,"38":0,"39":0,"40":0,"41":0,"49":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1515},"end":{"line":55,"column":30}},"locations":[{"start":{"line":1,"column":1515},"end":{"line":55,"column":30}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1515},"end":{"line":55,"column":30}},"loc":{"start":{"line":1,"column":1515},"end":{"line":55,"column":30}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/colorize.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/colorize.ts","all":true,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":50}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":24}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":64}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":26}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":22}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":33}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":5}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":38}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":78}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":70}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":38}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":98}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":30}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":31}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":38}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":77}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":41}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":21}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":5}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":49}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":21}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":28}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":40}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":67}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":48}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":46}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":59}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":72}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":59}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":54}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":41}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":70}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":15}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":1}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":66}}},"s":{"2":0,"3":0,"28":0,"29":0,"30":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"42":0,"43":0,"44":0,"45":0,"46":0,"48":0,"49":0,"50":0,"55":0,"56":0,"57":0,"62":0,"63":0,"64":0,"65":0,"67":0,"68":0,"69":0,"70":0,"72":0,"73":0,"78":0,"79":0,"80":0,"83":0,"84":0,"85":0,"88":0,"89":0,"90":0,"93":0,"94":0,"95":0,"97":0,"98":0,"99":0,"101":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2609},"end":{"line":104,"column":30}},"locations":[{"start":{"line":1,"column":2609},"end":{"line":104,"column":30}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2609},"end":{"line":104,"column":30}},"loc":{"start":{"line":1,"column":2609},"end":{"line":104,"column":30}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/combine.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/combine.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":30}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":99}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":38}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":10}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":39}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":18}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":46}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":56}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":16}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":5}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":14}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":46}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":44}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":25}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":81}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":43}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":37}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":17}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":3}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":13}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":40}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":50}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":35}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":45}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":33}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":4}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":17}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":1}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":22}}},"s":{"1":0,"12":0,"13":0,"14":0,"15":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"43":0,"44":0,"53":0,"54":0,"55":0,"57":0,"58":0,"59":0,"60":0,"61":0,"70":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2065},"end":{"line":71,"column":22}},"locations":[{"start":{"line":1,"column":2065},"end":{"line":71,"column":22}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2065},"end":{"line":71,"column":22}},"loc":{"start":{"line":1,"column":2065},"end":{"line":71,"column":22}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/errors.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/errors.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":50}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":72}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":31}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":15}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":25}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":43}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":29}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":49}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":5}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":39}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":39}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":15}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":40}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":16}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":27}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":27}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":30}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":36}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":36}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":14}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":2}}},"s":{"0":0,"1":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"31":0,"32":0,"33":0,"34":0,"38":0,"39":0,"43":0,"44":0,"45":0,"46":0,"49":0,"50":0,"52":0,"53":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1513},"end":{"line":54,"column":2}},"locations":[{"start":{"line":1,"column":1513},"end":{"line":54,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1513},"end":{"line":54,"column":2}},"loc":{"start":{"line":1,"column":1513},"end":{"line":54,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/json.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/json.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":49}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":34}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":27}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":14}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":49}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":76}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":13}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":2}}},"s":{"0":0,"1":0,"2":0,"55":0,"59":0,"60":0,"61":0,"62":0,"63":0,"71":0,"72":0,"73":0,"74":0,"75":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2678},"end":{"line":76,"column":2}},"locations":[{"start":{"line":1,"column":2678},"end":{"line":76,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2678},"end":{"line":76,"column":2}},"loc":{"start":{"line":1,"column":2678},"end":{"line":76,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/label.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/label.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":30}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":21}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":52}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":15}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":25}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":13}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":2}}},"s":{"0":0,"20":0,"21":0,"22":0,"23":0,"24":0,"26":0,"27":0,"28":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":734},"end":{"line":29,"column":2}},"locations":[{"start":{"line":1,"column":734},"end":{"line":29,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":734},"end":{"line":29,"column":2}},"loc":{"start":{"line":1,"column":734},"end":{"line":29,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/logstash.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/logstash.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":49}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":33}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":42}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":21}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":39}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":23}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":43}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":28}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":41}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":13}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":2}}},"s":{"0":0,"1":0,"2":0,"11":0,"12":0,"14":0,"15":0,"16":0,"17":0,"19":0,"20":0,"21":0,"22":0,"24":0,"25":0,"26":0,"27":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":28,"column":-24}},"locations":[{"start":{"line":1,"column":0},"end":{"line":28,"column":-24}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":28,"column":-24}},"loc":{"start":{"line":1,"column":0},"end":{"line":28,"column":-24}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/metadata.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/metadata.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":93}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":57}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":24}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":20}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":14}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":29}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":59}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":24}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":20}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":29}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":34}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":28}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":4}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":13}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":89}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":57}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":24}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":20}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":14}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":29}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":13}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":61}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":44}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":35}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":43}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":32}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":34}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":24}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":36}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":34}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":56}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":22}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":53}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":13}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":2}}},"s":{"1":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0,"28":0,"29":0,"31":0,"32":0,"33":0,"35":0,"36":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"45":0,"46":0,"52":0,"53":0,"55":0,"56":0,"57":0,"58":0,"59":0,"61":0,"62":0,"63":0,"65":0,"66":0,"67":0,"69":0,"70":0,"71":0,"73":0,"74":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1811},"end":{"line":75,"column":2}},"locations":[{"start":{"line":1,"column":1811},"end":{"line":75,"column":2}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1811},"end":{"line":75,"column":2}},"loc":{"start":{"line":1,"column":1811},"end":{"line":75,"column":2}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/ms.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/ms.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":19}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":30}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":33}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":26}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":40}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":26}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":13}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":2}}},"s":{"0":0,"1":0,"8":0,"10":0,"11":0,"12":0,"13":0,"14":0,"16":0,"17":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":18,"column":-47}},"locations":[{"start":{"line":1,"column":0},"end":{"line":18,"column":-47}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":18,"column":-47}},"loc":{"start":{"line":1,"column":0},"end":{"line":18,"column":-47}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/pad-levels.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/pad-levels.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":59}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":14}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":34}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":72}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":91}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":55}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":63}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":76}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":50}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":53}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":52}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":38}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":3}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":78}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":52}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":55}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":67}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":16}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":36}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":73}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":29}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":54}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":47}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":24}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":51}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":15}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":1}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":59}}},"s":{"1":0,"12":0,"13":0,"14":0,"16":0,"17":0,"18":0,"19":0,"26":0,"27":0,"28":0,"29":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"81":0,"82":0,"83":0,"91":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":3318},"end":{"line":94,"column":17}},"locations":[{"start":{"line":1,"column":3318},"end":{"line":94,"column":17}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":3318},"end":{"line":94,"column":17}},"loc":{"start":{"line":1,"column":3318},"end":{"line":94,"column":17}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/pretty-print.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/pretty-print.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":57}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":64}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":30}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":24}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":26}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":24}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":77}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":2}}},"s":{"0":0,"1":0,"2":0,"22":0,"28":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1170},"end":{"line":39,"column":2}},"locations":[{"start":{"line":1,"column":1170},"end":{"line":39,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1170},"end":{"line":39,"column":2}},"loc":{"start":{"line":1,"column":1170},"end":{"line":39,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/printf.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/printf.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":14}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":30}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":3}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":44}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":39}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":1}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":65}}},"s":{"1":0,"5":0,"6":0,"8":0,"9":0,"10":0,"12":0,"13":0,"14":0,"15":0,"16":0,"24":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":658},"end":{"line":27,"column":17}},"locations":[{"start":{"line":1,"column":658},"end":{"line":27,"column":17}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":658},"end":{"line":27,"column":17}},"loc":{"start":{"line":1,"column":658},"end":{"line":27,"column":17}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/simple.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/simple.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":49}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":33}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":41}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":21}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":21}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":4}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":66}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":52}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":81}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":8}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":62}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":13}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":2}}},"s":{"0":0,"1":0,"2":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"30":0,"31":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":32,"column":-1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":32,"column":-1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":32,"column":-1}},"loc":{"start":{"line":1,"column":0},"end":{"line":32,"column":-1}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/splat.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/splat.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":28}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":36}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":18}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":61}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":34}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":49}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":46}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":50}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":49}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":51}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":81}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":32}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":18}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":41}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":37}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":5}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":45}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":44}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":34}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":43}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":34}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":17}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":5}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":42}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":45}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":62}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":34}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":20}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":43}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":39}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":9}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":7}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":17}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":17}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":38}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":5}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":15}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":3}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":1}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":35}}},"s":{"1":0,"2":0,"9":0,"14":0,"16":0,"17":0,"27":0,"28":0,"29":0,"30":0,"31":0,"46":0,"47":0,"48":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"61":0,"62":0,"63":0,"72":0,"73":0,"74":0,"77":0,"78":0,"79":0,"83":0,"87":0,"88":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"101":0,"102":0,"104":0,"105":0,"106":0,"108":0,"109":0,"110":0,"118":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":3104},"end":{"line":119,"column":35}},"locations":[{"start":{"line":1,"column":3104},"end":{"line":119,"column":35}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":3104},"end":{"line":119,"column":35}},"loc":{"start":{"line":1,"column":3104},"end":{"line":119,"column":35}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/timestamp.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/timestamp.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":30}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":20}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":54}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":21}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":45}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":24}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":45}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":19}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":37}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":13}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":2}}},"s":{"0":0,"1":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"31":0,"32":0,"33":0,"35":0,"36":0,"37":0,"39":0,"40":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1176},"end":{"line":41,"column":2}},"locations":[{"start":{"line":1,"column":1176},"end":{"line":41,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1176},"end":{"line":41,"column":2}},"loc":{"start":{"line":1,"column":1176},"end":{"line":41,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/uncolorize.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/format/plugins/uncolorize.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":43}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":46}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":63}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":29}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":40}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":31}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":52}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":44}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":54}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":13}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":2}}},"s":{"0":0,"1":0,"18":0,"20":0,"21":0,"29":0,"30":0,"31":0,"32":0,"34":0,"35":0,"36":0,"38":0,"39":0,"40":0,"42":0,"43":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1134},"end":{"line":44,"column":2}},"locations":[{"start":{"line":1,"column":1134},"end":{"line":44,"column":2}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1134},"end":{"line":44,"column":2}},"loc":{"start":{"line":1,"column":1134},"end":{"line":44,"column":2}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/base.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/base.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":51}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":65}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":25}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":42}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":27}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":26}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":28}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":30}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":62}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":69}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":53}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":44}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":53}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":81}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":81}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":41}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":51}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}}},"s":{"3":0,"4":0,"5":0,"6":0,"8":0,"9":0,"10":0,"11":0,"12":0,"14":0,"16":0,"17":0,"19":0,"20":0,"21":0,"22":0,"23":0,"26":0,"27":0,"29":0,"30":0,"31":0,"34":0,"35":0,"36":0,"37":0,"38":0,"42":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1433},"end":{"line":43,"column":1}},"locations":[{"start":{"line":1,"column":1433},"end":{"line":43,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1433},"end":{"line":43,"column":1}},"loc":{"start":{"line":1,"column":1433},"end":{"line":43,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/console.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/console.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":40}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":74}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":54}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":18}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":41}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":3}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":67}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":43}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":28}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":46}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":35}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}}},"s":{"1":0,"2":0,"4":0,"5":0,"6":0,"8":0,"9":0,"11":0,"12":0,"14":0,"15":0,"16":0,"19":0,"20":0,"21":0,"22":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":76},"end":{"line":23,"column":-41}},"locations":[{"start":{"line":1,"column":76},"end":{"line":23,"column":-41}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":76},"end":{"line":23,"column":-41}},"loc":{"start":{"line":1,"column":76},"end":{"line":23,"column":-41}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":44}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":42}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":20}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":26}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":1}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":25}}},"s":{"0":0,"1":0,"3":0,"4":0,"5":0,"6":0,"8":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":11,"column":-109}},"locations":[{"start":{"line":1,"column":0},"end":{"line":11,"column":-109}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":11,"column":-109}},"loc":{"start":{"line":1,"column":0},"end":{"line":11,"column":-109}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/stream.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/transports/stream.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":46}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":72}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":31}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":53}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":18}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":55}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":52}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":5}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":32}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":74}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":41}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":67}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":46}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":25}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":54}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":16}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":32}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":18}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":9}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":45}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":22}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":28}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":29}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":47}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":62}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":42}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":8}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":22}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":57}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":7}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":19}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":79}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":1}}},"s":{"1":0,"2":0,"3":0,"5":0,"6":0,"7":0,"9":0,"10":0,"12":0,"13":0,"14":0,"16":0,"20":0,"21":0,"24":0,"25":0,"27":0,"28":0,"29":0,"31":0,"32":0,"33":0,"35":0,"36":0,"38":0,"39":0,"41":0,"42":0,"43":0,"45":0,"48":0,"49":0,"50":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1676},"end":{"line":61,"column":1}},"locations":[{"start":{"line":1,"column":1676},"end":{"line":61,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1676},"end":{"line":61,"column":1}},"loc":{"start":{"line":1,"column":1676},"end":{"line":61,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":43}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":40}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":40}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":75}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":127}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":100}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":114}}},"s":{"0":0,"2":0,"4":0,"5":0,"6":0,"12":0,"13":0,"14":0,"15":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":677},"end":{"line":16,"column":114}},"locations":[{"start":{"line":1,"column":677},"end":{"line":16,"column":114}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":677},"end":{"line":16,"column":114}},"loc":{"start":{"line":1,"column":677},"end":{"line":16,"column":114}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/cli.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/cli.ts","all":true,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":13}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":12}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":12}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":14}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":15}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":13}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":13}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":4}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":11}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":17}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":19}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":17}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":17}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":18}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":19}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":20}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":18}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":4}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":18}}},"s":{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"29":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":469},"end":{"line":30,"column":18}},"locations":[{"start":{"line":1,"column":469},"end":{"line":30,"column":18}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":469},"end":{"line":30,"column":18}},"loc":{"start":{"line":1,"column":469},"end":{"line":30,"column":18}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":21}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":21}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}}},"s":{"0":0,"1":0,"2":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":-23}},"locations":[{"start":{"line":1,"column":0},"end":{"line":3,"column":-23}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":3,"column":-23}},"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":-23}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/npm.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/npm.ts","all":true,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":13}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":12}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":12}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":13}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":4}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":11}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":19}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":18}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":18}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":20}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":18}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":21}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":18}}},"s":{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"23":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":371},"end":{"line":24,"column":18}},"locations":[{"start":{"line":1,"column":371},"end":{"line":24,"column":18}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":371},"end":{"line":24,"column":18}},"loc":{"start":{"line":1,"column":371},"end":{"line":24,"column":18}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/syslog.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/logger/src/triple-beam/config/syslog.ts","all":true,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":46}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":13}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":13}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":12}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":13}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":14}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":12}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":13}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":11}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":17}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":20}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":16}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":17}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":19}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":21}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":18}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":4}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}}},"s":{"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"25":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":412},"end":{"line":26,"column":21}},"locations":[{"start":{"line":1,"column":412},"end":{"line":26,"column":21}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":412},"end":{"line":26,"column":21}},"loc":{"start":{"line":1,"column":412},"end":{"line":26,"column":21}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":45}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":40}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":47}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":38}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":36}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":107}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":59}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":63}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":69}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":67}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":67}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":61}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":65}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":65}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":61}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":1}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":36}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":15}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":35}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":6}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":86}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":75}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":81}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":12}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":28}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":29}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":6}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":3}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":85}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":10}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":53}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":54}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":4}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":59}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":12}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":68}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":69}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":6}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":19}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":29}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":3}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":1}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":46}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":57}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":52}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":43}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":58}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":3}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":65}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":67}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":73}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":31}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":1}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":73}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":41}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":43}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":43}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":25}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":43}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":109}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":34}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":25}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":69}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":22}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":23}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":21}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":5}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":1}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":42}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":99}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":22}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":23}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":31}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":18}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":50}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":4}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":57}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":44}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":17}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":5}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":31}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":33}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":1}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":50}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":22}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":23}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":31}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":50}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":4}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":57}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":45}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":58}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":54}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":27}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":41}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":46}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":8}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":88}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":17}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":5}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":31}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":27}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":5}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":1}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":51}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":62}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":66}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":35}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":47}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":47}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":93}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":91}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":20}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":22}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":41}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":22}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":64}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":10}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":23}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":70}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":3}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":41}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":44}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":41}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":41}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":22}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":18}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":197}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":6}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":10}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":23}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":18}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":203}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":6}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":3}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":39}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":38}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":28}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":1}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":57}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":43}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":39}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":65}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":27}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":51}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":156}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":74}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":78}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":27}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":5}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":48}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":15}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":3}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":238}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":69}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":74}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":22}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":1}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":56}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":9}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":22}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":21}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":15}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":18}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":17}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":24}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":17}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":20}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":45}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":61}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":3}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":44}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":68}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":3}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":121}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":1}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":46}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":64}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":46}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":48}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":42}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":42}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":42}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":46}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":56}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":72}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"13":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":210,"column":71}},"locations":[{"start":{"line":1,"column":0},"end":{"line":210,"column":71}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":210,"column":71}},"loc":{"start":{"line":1,"column":0},"end":{"line":210,"column":71}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/dist/index.d.mts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":47}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":53}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":0}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":0}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":43}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":76}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":0}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":24}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":17}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":0}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":25}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":14}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":23}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":30}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":0}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":107}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":0}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":49}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":72}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":20}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":2}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":62}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":16}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":17}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":9}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":39}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":3}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":89}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":20}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":21}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":2}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":132}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":0}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":94}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":88}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":78}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":19}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":20}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":3}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":0}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":101}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":16}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":17}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":162}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":16}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":17}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":0}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":321}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":57,"column":321}},"locations":[{"start":{"line":1,"column":0},"end":{"line":57,"column":321}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":57,"column":321}},"loc":{"start":{"line":1,"column":0},"end":{"line":57,"column":321}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/dist/index.mjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":44}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":46}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":58}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":33}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":27}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":31}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":44}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":52}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":28}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":15}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":28}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":35}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":6}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":3}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":68}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":75}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":81}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":12}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":29}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":6}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":85}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":10}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":44}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":45}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":4}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":35}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":7}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":59}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":12}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":59}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":60}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":6}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":19}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":16}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":46}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":57}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":43}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":34}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":49}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":56}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":58}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":64}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":31}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":73}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":41}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":43}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":36}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":18}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":43}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":109}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":34}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":25}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":69}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":22}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":23}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":21}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":5}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":1}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":42}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":90}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":23}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":31}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":18}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":50}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":4}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":48}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":44}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":17}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":5}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":31}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":33}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":1}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":50}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":22}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":23}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":31}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":50}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":4}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":48}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":45}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":58}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":54}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":27}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":41}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":46}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":8}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":88}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":17}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":5}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":31}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":27}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":1}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":51}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":53}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":57}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":35}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":47}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":47}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":84}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":82}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":20}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":22}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":41}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":22}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":64}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":10}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":23}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":70}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":3}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":41}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":44}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":41}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":41}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":22}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":18}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":179}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":6}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":10}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":23}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":18}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":185}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":6}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":3}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":39}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":38}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":28}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":1}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":57}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":43}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":39}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":65}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":27}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":51}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":156}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":74}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":78}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":27}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":5}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":48}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":15}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":238}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":69}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":74}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":22}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":1}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":56}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":9}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":22}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":21}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":15}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":18}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":17}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":24}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":17}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":20}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":39}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":61}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":38}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":68}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":3}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":121}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":188,"column":-1204}},"locations":[{"start":{"line":1,"column":0},"end":{"line":188,"column":-1204}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":188,"column":-1204}},"loc":{"start":{"line":1,"column":0},"end":{"line":188,"column":-1204}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/src/common.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/src/common.ts","all":false,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":34}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":29}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":74}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":108}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":81}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":12}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":28}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":30}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":5}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":3}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":86}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":10}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":44}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":46}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":3}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":60}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":7}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":58}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":12}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":59}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":61}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":5}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":17}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":28}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":15}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":1}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":87}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":56}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":42}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":34}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":48}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":55}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":57}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":63}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":30}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":135}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":40}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":43}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":21}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":21}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":20}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":45}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":111}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":37}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":10}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":27}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":72}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":25}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":12}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":24}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":8}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":20}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":4}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":1}}},"s":{"1":1,"2":1,"3":1,"4":1,"6":1,"8":1,"10":1,"11":19,"12":8,"13":8,"14":8,"15":8,"16":8,"18":19,"19":19,"20":19,"21":19,"22":19,"23":19,"25":1,"26":7,"27":7,"28":7,"29":7,"30":7,"31":7,"32":7,"33":4,"34":4,"35":4,"36":4,"37":7,"42":1,"43":6,"44":6,"46":6,"47":2,"48":2,"50":6,"51":6,"53":6,"55":6,"56":6,"58":6,"59":6,"60":6,"61":6,"62":6,"63":6,"64":6,"65":6,"66":6,"67":6,"68":6,"69":6,"70":6,"71":6,"72":6,"73":6,"74":6,"75":6,"76":6},"branchMap":{"0":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":7},"end":{"line":24,"column":1}},"locations":[{"start":{"line":11,"column":7},"end":{"line":24,"column":1}}]},"1":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":16},"end":{"line":12,"column":49}},"locations":[{"start":{"line":12,"column":16},"end":{"line":12,"column":49}}]},"2":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":37},"end":{"line":12,"column":66}},"locations":[{"start":{"line":12,"column":37},"end":{"line":12,"column":66}}]},"3":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":58},"end":{"line":12,"column":80}},"locations":[{"start":{"line":12,"column":58},"end":{"line":12,"column":80}}]},"4":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":80},"end":{"line":19,"column":60}},"locations":[{"start":{"line":12,"column":80},"end":{"line":19,"column":60}}]},"5":{"type":"branch","line":12,"loc":{"start":{"line":12,"column":80},"end":{"line":17,"column":3}},"locations":[{"start":{"line":12,"column":80},"end":{"line":17,"column":3}}]},"6":{"type":"branch","line":19,"loc":{"start":{"line":19,"column":51},"end":{"line":19,"column":86}},"locations":[{"start":{"line":19,"column":51},"end":{"line":19,"column":86}}]},"7":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":7},"end":{"line":38,"column":1}},"locations":[{"start":{"line":26,"column":7},"end":{"line":38,"column":1}}]},"8":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":37,"column":3}},"locations":[{"start":{"line":33,"column":2},"end":{"line":37,"column":3}}]},"9":{"type":"branch","line":43,"loc":{"start":{"line":43,"column":7},"end":{"line":57,"column":1}},"locations":[{"start":{"line":43,"column":7},"end":{"line":57,"column":1}}]},"10":{"type":"branch","line":47,"loc":{"start":{"line":47,"column":33},"end":{"line":49,"column":3}},"locations":[{"start":{"line":47,"column":33},"end":{"line":49,"column":3}}]},"11":{"type":"branch","line":59,"loc":{"start":{"line":59,"column":0},"end":{"line":77,"column":1}},"locations":[{"start":{"line":59,"column":0},"end":{"line":77,"column":1}}]},"12":{"type":"branch","line":61,"loc":{"start":{"line":61,"column":21},"end":{"line":76,"column":3}},"locations":[{"start":{"line":61,"column":21},"end":{"line":76,"column":3}}]},"13":{"type":"branch","line":63,"loc":{"start":{"line":63,"column":12},"end":{"line":74,"column":7}},"locations":[{"start":{"line":63,"column":12},"end":{"line":74,"column":7}}]},"14":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":48},"end":{"line":66,"column":70}},"locations":[{"start":{"line":66,"column":48},"end":{"line":66,"column":70}}]},"15":{"type":"branch","line":66,"loc":{"start":{"line":66,"column":104},"end":{"line":66,"column":111}},"locations":[{"start":{"line":66,"column":104},"end":{"line":66,"column":111}}]},"16":{"type":"branch","line":69,"loc":{"start":{"line":69,"column":16},"end":{"line":72,"column":11}},"locations":[{"start":{"line":69,"column":16},"end":{"line":72,"column":11}}]}},"b":{"0":[19],"1":[8],"2":[8],"3":[8],"4":[11],"5":[8],"6":[0],"7":[7],"8":[4],"9":[6],"10":[2],"11":[6],"12":[6],"13":[6],"14":[0],"15":[0],"16":[6]},"fnMap":{"0":{"name":"processCertPath","decl":{"start":{"line":11,"column":7},"end":{"line":24,"column":1}},"loc":{"start":{"line":11,"column":7},"end":{"line":24,"column":1}},"line":11},"1":{"name":"readCertificate","decl":{"start":{"line":26,"column":7},"end":{"line":38,"column":1}},"loc":{"start":{"line":26,"column":7},"end":{"line":38,"column":1}},"line":26},"2":{"name":"saveCertificate","decl":{"start":{"line":43,"column":7},"end":{"line":57,"column":1}},"loc":{"start":{"line":43,"column":7},"end":{"line":57,"column":1}},"line":43},"3":{"name":"createCertificate","decl":{"start":{"line":59,"column":0},"end":{"line":77,"column":1}},"loc":{"start":{"line":59,"column":0},"end":{"line":77,"column":1}},"line":59}},"f":{"0":19,"1":7,"2":6,"3":6}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/src/index.ts","all":false,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":61}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":44}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":97}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":64}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":27}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":45}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":72}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":32}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":25}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":5}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":42}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":14}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":77}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":68}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":21}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":158}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":9}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":22}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":21}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":15}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":18}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":17}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":24}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":18}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":19}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":39}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":62}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":38}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":71}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":120}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":24}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":24}}},"s":{"2":1,"3":1,"4":1,"5":1,"7":7,"8":7,"9":7,"10":3,"12":3,"13":2,"14":2,"15":2,"16":2,"18":2,"19":2,"21":1,"22":1,"23":1,"25":7,"26":7,"27":4,"29":4,"30":4,"32":7,"33":7,"34":7,"35":7,"36":7,"37":7,"38":7,"39":7,"40":7,"41":7,"45":7,"47":1,"48":1,"51":7,"52":6,"53":6,"55":7,"56":7,"58":1,"60":1},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":0},"end":{"line":31,"column":1}},"locations":[{"start":{"line":8,"column":0},"end":{"line":31,"column":1}}]},"1":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":14},"end":{"line":10,"column":38}},"locations":[{"start":{"line":10,"column":14},"end":{"line":10,"column":38}}]},"2":{"type":"branch","line":10,"loc":{"start":{"line":10,"column":38},"end":{"line":24,"column":3}},"locations":[{"start":{"line":10,"column":38},"end":{"line":24,"column":3}}]},"3":{"type":"branch","line":13,"loc":{"start":{"line":13,"column":26},"end":{"line":20,"column":5}},"locations":[{"start":{"line":13,"column":26},"end":{"line":20,"column":5}}]},"4":{"type":"branch","line":20,"loc":{"start":{"line":20,"column":4},"end":{"line":24,"column":3}},"locations":[{"start":{"line":20,"column":4},"end":{"line":24,"column":3}}]},"5":{"type":"branch","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":26,"column":36}},"locations":[{"start":{"line":24,"column":2},"end":{"line":26,"column":36}}]},"6":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":28},"end":{"line":26,"column":52}},"locations":[{"start":{"line":26,"column":28},"end":{"line":26,"column":52}}]},"7":{"type":"branch","line":26,"loc":{"start":{"line":26,"column":36},"end":{"line":26,"column":74}},"locations":[{"start":{"line":26,"column":36},"end":{"line":26,"column":74}}]},"8":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":67},"end":{"line":31,"column":1}},"locations":[{"start":{"line":27,"column":67},"end":{"line":31,"column":1}}]},"9":{"type":"branch","line":33,"loc":{"start":{"line":33,"column":0},"end":{"line":57,"column":1}},"locations":[{"start":{"line":33,"column":0},"end":{"line":57,"column":1}}]},"10":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":6},"end":{"line":42,"column":19}},"locations":[{"start":{"line":42,"column":6},"end":{"line":42,"column":19}}]},"11":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":31}},"locations":[{"start":{"line":46,"column":12},"end":{"line":46,"column":31}}]},"12":{"type":"branch","line":46,"loc":{"start":{"line":46,"column":38},"end":{"line":49,"column":3}},"locations":[{"start":{"line":46,"column":38},"end":{"line":49,"column":3}}]},"13":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":12},"end":{"line":52,"column":30}},"locations":[{"start":{"line":52,"column":12},"end":{"line":52,"column":30}}]},"14":{"type":"branch","line":52,"loc":{"start":{"line":52,"column":37},"end":{"line":54,"column":3}},"locations":[{"start":{"line":52,"column":37},"end":{"line":54,"column":3}}]}},"b":{"0":[7],"1":[3],"2":[3],"3":[2],"4":[1],"5":[4],"6":[3],"7":[1],"8":[4],"9":[7],"10":[1],"11":[6],"12":[1],"13":[6],"14":[6]},"fnMap":{"0":{"name":"initSSLCertificate","decl":{"start":{"line":8,"column":0},"end":{"line":31,"column":1}},"loc":{"start":{"line":8,"column":0},"end":{"line":31,"column":1}},"line":8},"1":{"name":"defineCertificate","decl":{"start":{"line":33,"column":0},"end":{"line":57,"column":1}},"loc":{"start":{"line":33,"column":0},"end":{"line":57,"column":1}},"line":33}},"f":{"0":7,"1":7}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/src/logger.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/src/logger.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":57}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":44}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":51}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":1}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":28}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":15}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":28}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":36}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":7}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":4}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":2}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":21}}},"s":{"0":1,"2":4,"3":4,"4":4,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"15":1},"branchMap":{"0":{"type":"branch","line":3,"loc":{"start":{"line":3,"column":0},"end":{"line":5,"column":1}},"locations":[{"start":{"line":3,"column":0},"end":{"line":5,"column":1}}]}},"b":{"0":[4]},"fnMap":{"0":{"name":"createLogFormat","decl":{"start":{"line":3,"column":0},"end":{"line":5,"column":1}},"loc":{"start":{"line":3,"column":0},"end":{"line":5,"column":1}},"line":3}},"f":{"0":4}} +,"/home/runner/work/https-enable/https-enable/packages/mkcert/src/verify.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/mkcert/src/verify.ts","all":false,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":32}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":26}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":88}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":89}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":45}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":31}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":18}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":51}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":3}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":48}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":23}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":16}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":31}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":32}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":4}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":82}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":45}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":23}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":31}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":51}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":3}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":48}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":44}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":57}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":53}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":26}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":41}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":32}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":4}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":31}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":26}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":4}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":74}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":52}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":56}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":61}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":46}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":46}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":31}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":22}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":24}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":18}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":30}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":22}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":23}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":18}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":30}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":31}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":41}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":21}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":28}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":8}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":29}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":24}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":43}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":40}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":41}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":21}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":18}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":120}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":5}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":3}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":8}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":22}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":18}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":121}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":36}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":37}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":27}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":1}}},"s":{"1":1,"2":1,"3":1,"4":1,"5":1,"7":1,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"16":2,"17":1,"18":1,"19":2,"21":2,"22":1,"23":2,"24":2,"26":1,"27":2,"28":2,"29":2,"30":2,"31":2,"33":2,"34":1,"36":1,"37":1,"38":1,"40":1,"41":1,"43":1,"45":1,"46":2,"48":2,"49":1,"50":2,"51":2,"53":3,"54":3,"55":3,"56":3,"58":3,"59":3,"61":3,"62":3,"63":3,"64":3,"65":3,"66":3,"67":3,"68":3,"70":3,"71":3,"73":3,"74":2,"75":2,"76":2,"77":1,"78":1,"79":1,"80":1,"82":3,"83":3,"84":3,"86":3,"87":1,"88":1,"89":1,"90":1,"91":1,"92":2,"93":2,"94":2,"95":2,"96":2,"97":2,"99":3,"100":3,"101":3,"102":3},"branchMap":{"0":{"type":"branch","line":8,"loc":{"start":{"line":8,"column":7},"end":{"line":25,"column":1}},"locations":[{"start":{"line":8,"column":7},"end":{"line":25,"column":1}}]},"1":{"type":"branch","line":17,"loc":{"start":{"line":17,"column":41},"end":{"line":20,"column":3}},"locations":[{"start":{"line":17,"column":41},"end":{"line":20,"column":3}}]},"2":{"type":"branch","line":22,"loc":{"start":{"line":22,"column":21},"end":{"line":24,"column":3}},"locations":[{"start":{"line":22,"column":21},"end":{"line":24,"column":3}}]},"3":{"type":"branch","line":27,"loc":{"start":{"line":27,"column":7},"end":{"line":52,"column":1}},"locations":[{"start":{"line":27,"column":7},"end":{"line":52,"column":1}}]},"4":{"type":"branch","line":34,"loc":{"start":{"line":34,"column":41},"end":{"line":47,"column":3}},"locations":[{"start":{"line":34,"column":41},"end":{"line":47,"column":3}}]},"5":{"type":"branch","line":42,"loc":{"start":{"line":42,"column":6},"end":{"line":42,"column":25}},"locations":[{"start":{"line":42,"column":6},"end":{"line":42,"column":25}}]},"6":{"type":"branch","line":49,"loc":{"start":{"line":49,"column":21},"end":{"line":51,"column":3}},"locations":[{"start":{"line":49,"column":21},"end":{"line":51,"column":3}}]},"7":{"type":"branch","line":54,"loc":{"start":{"line":54,"column":0},"end":{"line":103,"column":1}},"locations":[{"start":{"line":54,"column":0},"end":{"line":103,"column":1}}]},"8":{"type":"branch","line":74,"loc":{"start":{"line":74,"column":40},"end":{"line":77,"column":3}},"locations":[{"start":{"line":74,"column":40},"end":{"line":77,"column":3}}]},"9":{"type":"branch","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":81,"column":3}},"locations":[{"start":{"line":77,"column":2},"end":{"line":81,"column":3}}]},"10":{"type":"branch","line":87,"loc":{"start":{"line":87,"column":40},"end":{"line":92,"column":3}},"locations":[{"start":{"line":87,"column":40},"end":{"line":92,"column":3}}]},"11":{"type":"branch","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":98,"column":3}},"locations":[{"start":{"line":92,"column":2},"end":{"line":98,"column":3}}]},"12":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":29},"end":{"line":100,"column":35}},"locations":[{"start":{"line":100,"column":29},"end":{"line":100,"column":35}}]}},"b":{"0":[2],"1":[1],"2":[1],"3":[2],"4":[1],"5":[0],"6":[1],"7":[3],"8":[2],"9":[1],"10":[1],"11":[2],"12":[5]},"fnMap":{"0":{"name":"verifyCertificateByTLS","decl":{"start":{"line":8,"column":7},"end":{"line":25,"column":1}},"loc":{"start":{"line":8,"column":7},"end":{"line":25,"column":1}},"line":8},"1":{"name":"verifyCertificateValidityByTLS","decl":{"start":{"line":27,"column":7},"end":{"line":52,"column":1}},"loc":{"start":{"line":27,"column":7},"end":{"line":52,"column":1}},"line":27},"2":{"name":"verifyCertificate","decl":{"start":{"line":54,"column":0},"end":{"line":103,"column":1}},"loc":{"start":{"line":54,"column":0},"end":{"line":103,"column":1}},"line":54}},"f":{"0":2,"1":2,"2":3}} +,"/home/runner/work/https-enable/https-enable/packages/utils/dist/index.cjs": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/dist/index.cjs","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":13}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":30}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":41}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":51}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":107}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":69}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":59}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":63}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":73}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":99}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":26}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":59}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":1}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":29}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":45}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":50}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":19}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":40}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":28}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":67}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":1}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":39}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":73}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":49}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":57}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":47}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":16}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":5}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":20}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":16}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":26}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":35}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":41}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":53}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":58}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":33}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":15}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":22}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":25}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":24}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":1}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":33}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":15}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":19}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":27}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":116}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":35}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":45}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":35}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":75}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":80}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":28}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":64}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":61}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":38}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":1}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":38}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":70}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":53}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":9}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":18}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":23}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":10}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":7}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":23}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":21}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":44}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":31}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":20}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":20}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":18}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":40}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":3}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":29}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":31}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":40}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":64}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":79}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":51}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":70}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":55}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":19}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":8}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":20}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":29}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":52}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":43}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":34}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":15}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":23}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":24}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":61}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":10}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":7}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":65}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":60}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":5}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":55}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":30}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":37}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":17}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":21}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":28}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":12}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":52}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":30}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":34}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":5}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":36}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":4}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":21}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":29}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":37}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":40}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":77}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":71}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":9}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":18}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":68}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":78}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":14}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":37}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":70}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":71}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":10}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":7}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":21}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":46}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":61}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":64}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":14}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":20}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":7}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":5}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":3}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":17}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":2}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":56}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":30}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":102}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":61}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":3}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":93}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":33}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":31}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":31}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":38}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":59}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":5}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":3}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":34}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":1}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":47}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":18}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":29}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":17}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":25}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":3}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":14}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":52}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":40}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":58}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":3}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":30}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":25}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":3}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":82}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":29}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":66}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":37}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":69}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":38}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":60}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":10}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":60}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":1}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":30}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":53}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":1}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":54}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":208}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":1}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":21}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":33}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":19}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":15}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":42}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":1}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":23}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":42}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":21}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":15}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":9}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":1}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":49}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":39}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":34}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":20}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":3}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":35}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":1}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":38}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":38}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":40}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":30}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":38}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":38}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":36}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":32}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":22}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":28}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":30}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":38}},"230":{"start":{"line":231,"column":0},"end":{"line":231,"column":26}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":38}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":22}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":26}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":40}}},"s":{"0":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"9":0,"11":0,"12":0,"13":0,"14":0,"16":0,"17":0,"18":0,"19":0,"21":0,"22":0,"23":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":235,"column":7}},"locations":[{"start":{"line":1,"column":0},"end":{"line":235,"column":7}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":235,"column":7}},"loc":{"start":{"line":1,"column":0},"end":{"line":235,"column":7}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/utils/dist/index.d.mts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/dist/index.d.mts","all":true,"statementMap":{},"s":{},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":3504},"end":{"line":112,"column":244}},"locations":[{"start":{"line":1,"column":3504},"end":{"line":112,"column":244}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":3504},"end":{"line":112,"column":244}},"loc":{"start":{"line":1,"column":3504},"end":{"line":112,"column":244}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/utils/dist/index.mjs": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/dist/index.mjs","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":46}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":51}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":81}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":26}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":59}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":29}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":50}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":19}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":40}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":1}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":28}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":1}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":39}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":73}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":40}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":48}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":38}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":16}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":5}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":20}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":16}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":26}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":35}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":41}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":53}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":58}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":33}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":15}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":22}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":25}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":24}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":33}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":19}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":27}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":116}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":35}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":45}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":30}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":75}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":80}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":28}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":64}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":61}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":38}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":38}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":70}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":53}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":9}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":18}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":23}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":10}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":7}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":23}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":21}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":35}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":31}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":20}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":20}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":18}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":40}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":29}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":31}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":31}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":64}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":79}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":51}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":70}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":44}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":19}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":8}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":20}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":29}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":52}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":43}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":34}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":15}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":23}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":24}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":61}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":10}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":56}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":60}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":5}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":46}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":30}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":37}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":17}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":21}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":28}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":12}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":43}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":30}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":34}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":5}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":36}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":4}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":21}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":29}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":37}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":40}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":77}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":71}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":9}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":18}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":68}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":78}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":14}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":37}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":70}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":71}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":10}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":7}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":21}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":37}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":61}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":55}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":14}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":20}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":7}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":5}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":3}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":17}},"140":{"start":{"line":141,"column":0},"end":{"line":141,"column":2}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":56}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":30}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":84}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":52}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":3}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":93}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":33}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":31}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":31}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":38}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":50}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":5}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":3}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":34}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":1}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":47}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":18}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":29}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":17}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":25}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":3}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":14}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":52}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":31}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":58}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":3}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":30}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":25}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":3}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":73}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":29}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":57}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":37}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":60}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":38}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":51}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":10}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":51}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":1}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":30}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":42}},"184":{"start":{"line":185,"column":0},"end":{"line":185,"column":1}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":54}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":208}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":1}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":21}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":33}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":19}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":15}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":42}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":1}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":23}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":42}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":21}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":15}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":9}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":1}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":49}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":39}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":34}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":20}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":3}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":35}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"7":1,"8":0,"9":0,"10":0,"12":1,"13":1,"14":1,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":1,"61":1,"62":1,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":14,"202":14,"203":14,"204":0,"205":0,"206":14,"207":14},"branchMap":{"0":{"type":"branch","line":202,"loc":{"start":{"line":202,"column":0},"end":{"line":208,"column":1}},"locations":[{"start":{"line":202,"column":0},"end":{"line":208,"column":1}}]},"1":{"type":"branch","line":204,"loc":{"start":{"line":204,"column":33},"end":{"line":206,"column":3}},"locations":[{"start":{"line":204,"column":33},"end":{"line":206,"column":3}}]}},"b":{"0":[14],"1":[0]},"fnMap":{"0":{"name":"camelCase","decl":{"start":{"line":9,"column":0},"end":{"line":11,"column":1}},"loc":{"start":{"line":9,"column":0},"end":{"line":11,"column":1}},"line":9},"1":{"name":"slash","decl":{"start":{"line":17,"column":0},"end":{"line":19,"column":1}},"loc":{"start":{"line":17,"column":0},"end":{"line":19,"column":1}},"line":17},"2":{"name":"normalizePath","decl":{"start":{"line":20,"column":0},"end":{"line":22,"column":1}},"loc":{"start":{"line":20,"column":0},"end":{"line":22,"column":1}},"line":20},"3":{"name":"getCommonBase","decl":{"start":{"line":23,"column":0},"end":{"line":43,"column":1}},"loc":{"start":{"line":23,"column":0},"end":{"line":43,"column":1}},"line":23},"4":{"name":"parseAbsolute","decl":{"start":{"line":44,"column":0},"end":{"line":49,"column":1}},"loc":{"start":{"line":44,"column":0},"end":{"line":49,"column":1}},"line":44},"5":{"name":"getCallerPath","decl":{"start":{"line":50,"column":0},"end":{"line":59,"column":1}},"loc":{"start":{"line":50,"column":0},"end":{"line":59,"column":1}},"line":50},"6":{"name":"importGlob","decl":{"start":{"line":63,"column":19},"end":{"line":141,"column":2}},"loc":{"start":{"line":63,"column":19},"end":{"line":141,"column":2}},"line":63},"7":{"name":"dynamicImport","decl":{"start":{"line":142,"column":0},"end":{"line":156,"column":1}},"loc":{"start":{"line":142,"column":0},"end":{"line":156,"column":1}},"line":142},"8":{"name":"toAbsoluteGlob","decl":{"start":{"line":157,"column":0},"end":{"line":182,"column":1}},"loc":{"start":{"line":157,"column":0},"end":{"line":182,"column":1}},"line":157},"9":{"name":"globSafePath","decl":{"start":{"line":183,"column":0},"end":{"line":185,"column":1}},"loc":{"start":{"line":183,"column":0},"end":{"line":185,"column":1}},"line":183},"10":{"name":"isStream","decl":{"start":{"line":187,"column":0},"end":{"line":189,"column":1}},"loc":{"start":{"line":187,"column":0},"end":{"line":189,"column":1}},"line":187},"11":{"name":"strEnum","decl":{"start":{"line":190,"column":0},"end":{"line":195,"column":1}},"loc":{"start":{"line":190,"column":0},"end":{"line":195,"column":1}},"line":190},"12":{"name":"numEnum","decl":{"start":{"line":196,"column":0},"end":{"line":201,"column":1}},"loc":{"start":{"line":196,"column":0},"end":{"line":201,"column":1}},"line":196},"13":{"name":"isNil","decl":{"start":{"line":202,"column":0},"end":{"line":208,"column":1}},"loc":{"start":{"line":202,"column":0},"end":{"line":208,"column":1}},"line":202}},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":14}} +,"/home/runner/work/https-enable/https-enable/packages/utils/src/common.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/src/common.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":66}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":41}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":58}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}}},"s":{"0":0,"2":0,"3":0,"6":0,"7":0,"8":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":241},"end":{"line":9,"column":1}},"locations":[{"start":{"line":1,"column":241},"end":{"line":9,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":241},"end":{"line":9,"column":1}},"loc":{"start":{"line":1,"column":241},"end":{"line":9,"column":1}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/utils/src/constant.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/src/constant.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":35}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":56}}},"s":{"0":0,"7":0,"10":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":324},"end":{"line":11,"column":56}},"locations":[{"start":{"line":1,"column":324},"end":{"line":11,"column":56}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":324},"end":{"line":11,"column":56}},"loc":{"start":{"line":1,"column":324},"end":{"line":11,"column":56}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/utils/src/glob.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/src/glob.ts","all":true,"statementMap":{"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":55}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":75}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":37}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":69}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":41}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":88}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":9}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":18}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":10}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":7}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":35}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":31}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":21}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":19}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":18}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":39}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":28}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":30}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":30}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":63}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":76}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":50}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":67}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":46}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":19}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":8}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":20}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":29}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":53}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":40}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":42}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":15}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":23}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":24}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":64}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":9}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":7}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":54}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":47}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":5}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":45}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":30}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":36}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":24}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":21}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":27}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":5}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":10}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":42}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":30}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":33}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":5}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":35}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":65}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":43}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":29}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":36}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":39}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":19}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":40}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":20}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":19}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":73}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":9}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":18}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":67}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":48}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":29}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":18}},"112":{"start":{"line":113,"column":0},"end":{"line":113,"column":7}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":12}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":37}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":69}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":41}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":31}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":20}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":9}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":7}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":5}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":19}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":36}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":61}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":70}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":7}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":12}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":19}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":7}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":5}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":3}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":16}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":1}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":95}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":29}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":84}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":51}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":3}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":95}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":33}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":31}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":30}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":5}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":36}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":49}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":5}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":3}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":33}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":1}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":31}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":15}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":15}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":31}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":11}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":17}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":29}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":16}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":24}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":3}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":14}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":51}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":3}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":31}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":57}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":30}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":42}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":72}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":29}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":56}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":3}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":35}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":59}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":3}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":36}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":50}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":3}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":8}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":50}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":3}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":1}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":44}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":40}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":1}}},"s":{"2":0,"3":0,"4":0,"5":0,"6":0,"8":0,"9":0,"11":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"23":0,"24":0,"25":0,"26":0,"28":0,"29":0,"30":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0,"40":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"63":0,"65":0,"66":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"78":0,"79":0,"82":0,"84":0,"86":0,"87":0,"88":0,"99":0,"100":0,"101":0,"102":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"133":0,"134":0,"143":0,"144":0,"145":0,"146":0,"147":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"168":0,"169":0,"170":0,"171":0,"172":0,"174":0,"175":0,"176":0,"177":0,"178":0,"181":0,"182":0,"183":0,"186":0,"187":0,"188":0,"191":0,"192":0,"193":0,"196":0,"199":0,"201":0,"202":0,"203":0,"205":0,"206":0,"207":0,"209":0,"210":0,"211":0,"213":0,"214":0,"215":0,"217":0,"219":0,"220":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":5942},"end":{"line":221,"column":1}},"locations":[{"start":{"line":1,"column":5942},"end":{"line":221,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":5942},"end":{"line":221,"column":1}},"loc":{"start":{"line":1,"column":5942},"end":{"line":221,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/packages/utils/src/index.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/src/index.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":26}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":22}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":-74}},"locations":[{"start":{"line":1,"column":0},"end":{"line":5,"column":-74}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":5,"column":-74}},"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":-74}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/utils/src/path.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/src/path.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":64}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":58}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":42}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":1}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":51}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":57}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":1}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":71}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":30}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":20}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":41}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":50}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":39}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":17}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":6}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":20}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":25}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":35}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":41}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":52}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":56}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":32}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":14}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":3}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":22}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":24}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":56}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":18}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":26}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":86}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":22}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":13}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":42}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":44}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":34}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":72}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":79}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":27}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":63}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":60}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":37}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":1}}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"6":0,"7":0,"8":0,"10":0,"11":0,"12":0,"14":0,"15":0,"16":0,"17":0,"18":0,"20":0,"21":0,"23":0,"24":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"40":0,"41":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"58":0,"59":0,"60":0,"61":0,"70":0,"73":0,"74":0,"76":0,"78":0,"95":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":96,"column":-570}},"locations":[{"start":{"line":1,"column":0},"end":{"line":96,"column":-570}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":96,"column":-570}},"loc":{"start":{"line":1,"column":0},"end":{"line":96,"column":-570}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/packages/utils/src/type.ts": {"path":"/home/runner/work/https-enable/https-enable/packages/utils/src/type.ts","all":true,"statementMap":{"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":83}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":24}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":33}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":127}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":40}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":1}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":73}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":33}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":18}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":14}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":25}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":1}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":42}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":20}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":14}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":8}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":1}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":62}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":34}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":19}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":34}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}}},"s":{"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"33":0,"34":0,"35":0,"36":0,"37":0,"39":0,"40":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1224},"end":{"line":41,"column":1}},"locations":[{"start":{"line":1,"column":1224},"end":{"line":41,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1224},"end":{"line":41,"column":1}},"loc":{"start":{"line":1,"column":1224},"end":{"line":41,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/cli.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/cli.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":28}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":31}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":28}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":47}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":48}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":46}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":43}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":50}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":50}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":46}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":49}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":41}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":35}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":44}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":23}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":59}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":41}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":18}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":57}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":26}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":3}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":50}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":57}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":52}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":77}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":20}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":25}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":11}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":38}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":4}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":30}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":56}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":58}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":31}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":66}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":56}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":29}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":37}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":28}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":34}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":41}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":90}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":80}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":59}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":105}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":56}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":70}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":5}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":3}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":24}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":45}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":3}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":1}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":27}}},"s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"26":0,"27":0,"28":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"41":0,"42":0,"43":0,"44":0,"45":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"77":0,"79":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":48},"end":{"line":80,"column":-1257}},"locations":[{"start":{"line":1,"column":48},"end":{"line":80,"column":-1257}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":48},"end":{"line":80,"column":-1257}},"loc":{"start":{"line":1,"column":48},"end":{"line":80,"column":-1257}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/changelog/cli.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/changelog/cli.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":34}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":8}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":39}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":4}}},"s":{"0":0,"2":0,"3":0,"4":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":-54}},"locations":[{"start":{"line":1,"column":0},"end":{"line":5,"column":-54}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":5,"column":-54}},"loc":{"start":{"line":1,"column":0},"end":{"line":5,"column":-54}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/scripts/changelog/index.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/changelog/index.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":28}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":47}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":48}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":51}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":51}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":42}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":59}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":63}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":56}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":65}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":63}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":58}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":58}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":58}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":64}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":55}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":59}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":52}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":57}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":1}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":89}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":99}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":45}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":58}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":81}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":37}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":39}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":43}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":60}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":54}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":73}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":63}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":56}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":8}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":5}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":4}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":71}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":29}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":1}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":38}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":45}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":16}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":45}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":13}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":1}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":40}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":35}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":26}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":59}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":41}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":18}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":57}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":26}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":3}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":50}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":57}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":34}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":48}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":68}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":18}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":52}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":63}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":37}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":57}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":39}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":39}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":85}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":63}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":7}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":125}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":56}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":136}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":49}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":5}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":3}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":1}}},"s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"29":0,"31":0,"33":0,"36":0,"37":0,"39":0,"40":0,"41":0,"42":0,"43":0,"45":0,"46":0,"48":0,"49":0,"50":0,"51":0,"53":0,"55":0,"56":0,"58":0,"59":0,"61":0,"62":0,"63":0,"64":0,"65":0,"70":0,"71":0,"72":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"81":0,"82":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":59},"end":{"line":106,"column":-622}},"locations":[{"start":{"line":1,"column":59},"end":{"line":106,"column":-622}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":59},"end":{"line":106,"column":-622}},"loc":{"start":{"line":1,"column":59},"end":{"line":106,"column":-622}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/git-utils/commit.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/git-utils/commit.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":74}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":7}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":27}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":37}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":52}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":5}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":10}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":12}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":5}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":56}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":60}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":37}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":48}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}}},"s":{"0":0,"2":0,"5":0,"6":0,"8":0,"9":0,"10":0,"11":0,"12":0,"15":0,"16":0,"19":0,"20":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":704},"end":{"line":28,"column":1}},"locations":[{"start":{"line":1,"column":704},"end":{"line":28,"column":1}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":704},"end":{"line":28,"column":1}},"loc":{"start":{"line":1,"column":704},"end":{"line":28,"column":1}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/scripts/git-utils/index.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/git-utils/index.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":24}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":28}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":34}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":28}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":42}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":78}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":22}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":52}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":86}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":63}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":55}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":98}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":23}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":61}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":23}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":1}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":41}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":38}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":80}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":1}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":52}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":7}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":71}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":3}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":17}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":22}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":43}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":1}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":41}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":7}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":108}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":36}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":12}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":60}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":18}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":20}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":26}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":22}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":61}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":7}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":5}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":101}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":52}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":3}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":17}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":33}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":17}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":5}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":46}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":3}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":1}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":36}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":20}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":20}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":16}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":11}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":47}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":37}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":20}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":74}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":5}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":3}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":15}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":1}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":97}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":48}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":16}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":3}},"107":{"start":{"line":108,"column":0},"end":{"line":108,"column":7}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":88}},"111":{"start":{"line":112,"column":0},"end":{"line":112,"column":69}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":79}},"116":{"start":{"line":117,"column":0},"end":{"line":117,"column":77}},"117":{"start":{"line":118,"column":0},"end":{"line":118,"column":39}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":3}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":17}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":87}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":3}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":1}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":140}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":48}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":13}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":3}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":22}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":10}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":53}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":16}},"133":{"start":{"line":134,"column":0},"end":{"line":134,"column":3}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":40}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":47}},"138":{"start":{"line":139,"column":0},"end":{"line":139,"column":12}},"139":{"start":{"line":140,"column":0},"end":{"line":140,"column":1}},"141":{"start":{"line":142,"column":0},"end":{"line":142,"column":54}},"142":{"start":{"line":143,"column":0},"end":{"line":143,"column":42}},"143":{"start":{"line":144,"column":0},"end":{"line":144,"column":25}},"144":{"start":{"line":145,"column":0},"end":{"line":145,"column":1}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":50}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":73}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":46}},"150":{"start":{"line":151,"column":0},"end":{"line":151,"column":30}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":9}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":29}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":5}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":13}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":4}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":17}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":1}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":66}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":91}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":55}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":1}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":96}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":53}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":68}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":82}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":89}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":144}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":78}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":33}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":78}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":61}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":76}},"187":{"start":{"line":188,"column":0},"end":{"line":188,"column":41}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":3}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":23}},"191":{"start":{"line":192,"column":0},"end":{"line":192,"column":1}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":132}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":22}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":10}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":33}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":45}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":29}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":29}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":11}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":81}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":65}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":7}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":21}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":81}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":7}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":5}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":3}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":1}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":46}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":27}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":40}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":51}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":3}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":1}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":60}},"223":{"start":{"line":224,"column":0},"end":{"line":224,"column":7}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":72}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":3}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":9}},"227":{"start":{"line":228,"column":0},"end":{"line":228,"column":69}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":3}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":1}},"231":{"start":{"line":232,"column":0},"end":{"line":232,"column":50}},"232":{"start":{"line":233,"column":0},"end":{"line":233,"column":7}},"233":{"start":{"line":234,"column":0},"end":{"line":234,"column":79}},"234":{"start":{"line":235,"column":0},"end":{"line":235,"column":52}},"235":{"start":{"line":236,"column":0},"end":{"line":236,"column":3}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":9}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":46}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":3}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":1}}},"s":{"1":0,"2":0,"3":0,"4":0,"5":0,"7":0,"22":0,"23":0,"24":0,"26":0,"27":0,"30":0,"31":0,"33":0,"35":0,"37":0,"38":0,"40":0,"41":0,"44":0,"45":0,"46":0,"47":0,"48":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"69":0,"70":0,"71":0,"73":0,"74":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"97":0,"98":0,"99":0,"100":0,"102":0,"103":0,"104":0,"105":0,"107":0,"108":0,"111":0,"114":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"124":0,"125":0,"126":0,"127":0,"129":0,"130":0,"131":0,"132":0,"133":0,"135":0,"136":0,"138":0,"139":0,"141":0,"142":0,"143":0,"144":0,"146":0,"147":0,"148":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"160":0,"161":0,"162":0,"163":0,"166":0,"167":0,"170":0,"171":0,"174":0,"175":0,"178":0,"181":0,"182":0,"183":0,"186":0,"187":0,"188":0,"190":0,"191":0,"194":0,"195":0,"196":0,"198":0,"199":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":51},"end":{"line":240,"column":-31}},"locations":[{"start":{"line":1,"column":51},"end":{"line":240,"column":-31}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":51},"end":{"line":240,"column":-31}},"loc":{"start":{"line":1,"column":51},"end":{"line":240,"column":-31}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/git-utils/tags.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/git-utils/tags.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":61}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":12}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":15}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":289}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":48}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":35}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":90}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":15}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":10}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":34}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":40}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":37}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":37}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":39}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":21}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":3}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":1}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":63}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":49}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":31}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":32}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":3}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":95}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":48}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":63}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":17}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":22}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":24}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":66}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":30}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":3}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":32}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":45}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":29}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":37}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":3}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":8}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":12}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":15}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":20}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":23}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":19}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":5}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":3}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":1}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":27}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":29}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":18}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":13}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":20}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":3}},"108":{"start":{"line":109,"column":0},"end":{"line":109,"column":18}},"109":{"start":{"line":110,"column":0},"end":{"line":110,"column":27}},"110":{"start":{"line":111,"column":0},"end":{"line":111,"column":3}},"113":{"start":{"line":114,"column":0},"end":{"line":114,"column":17}},"114":{"start":{"line":115,"column":0},"end":{"line":115,"column":26}},"115":{"start":{"line":116,"column":0},"end":{"line":116,"column":3}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":63}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":23}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":63}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":43}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":61}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":23}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":25}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":20}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":75}},"128":{"start":{"line":129,"column":0},"end":{"line":129,"column":39}},"129":{"start":{"line":130,"column":0},"end":{"line":130,"column":25}},"130":{"start":{"line":131,"column":0},"end":{"line":131,"column":22}},"131":{"start":{"line":132,"column":0},"end":{"line":132,"column":35}},"132":{"start":{"line":133,"column":0},"end":{"line":133,"column":29}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":41}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":20}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":3}},"146":{"start":{"line":147,"column":0},"end":{"line":147,"column":115}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":28}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":68}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":5}},"151":{"start":{"line":152,"column":0},"end":{"line":152,"column":45}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":78}},"154":{"start":{"line":155,"column":0},"end":{"line":155,"column":71}},"155":{"start":{"line":156,"column":0},"end":{"line":156,"column":74}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":5}},"158":{"start":{"line":159,"column":0},"end":{"line":159,"column":64}},"159":{"start":{"line":160,"column":0},"end":{"line":160,"column":42}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":12}},"161":{"start":{"line":162,"column":0},"end":{"line":162,"column":18}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":68}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":12}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":19}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":43}},"166":{"start":{"line":167,"column":0},"end":{"line":167,"column":18}},"167":{"start":{"line":168,"column":0},"end":{"line":168,"column":31}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":31}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":70}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":73}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":59}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":32}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":52}},"179":{"start":{"line":180,"column":0},"end":{"line":180,"column":38}},"180":{"start":{"line":181,"column":0},"end":{"line":181,"column":37}},"181":{"start":{"line":182,"column":0},"end":{"line":182,"column":7}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":40}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":6}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":23}},"186":{"start":{"line":187,"column":0},"end":{"line":187,"column":3}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":50}},"190":{"start":{"line":191,"column":0},"end":{"line":191,"column":32}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":83}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":3}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":48}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":82}},"198":{"start":{"line":199,"column":0},"end":{"line":199,"column":41}},"199":{"start":{"line":200,"column":0},"end":{"line":200,"column":3}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":90}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":50}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":35}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":24}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":61}},"206":{"start":{"line":207,"column":0},"end":{"line":207,"column":58}},"207":{"start":{"line":208,"column":0},"end":{"line":208,"column":77}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":37}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":48}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":47}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":78}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":42}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":96}},"214":{"start":{"line":215,"column":0},"end":{"line":215,"column":29}},"215":{"start":{"line":216,"column":0},"end":{"line":216,"column":17}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":11}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":9}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":7}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":5}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":10}},"221":{"start":{"line":222,"column":0},"end":{"line":222,"column":46}},"222":{"start":{"line":223,"column":0},"end":{"line":223,"column":5}},"224":{"start":{"line":225,"column":0},"end":{"line":225,"column":18}},"225":{"start":{"line":226,"column":0},"end":{"line":226,"column":48}},"226":{"start":{"line":227,"column":0},"end":{"line":227,"column":5}},"228":{"start":{"line":229,"column":0},"end":{"line":229,"column":20}},"229":{"start":{"line":230,"column":0},"end":{"line":230,"column":3}},"236":{"start":{"line":237,"column":0},"end":{"line":237,"column":74}},"237":{"start":{"line":238,"column":0},"end":{"line":238,"column":123}},"238":{"start":{"line":239,"column":0},"end":{"line":239,"column":37}},"239":{"start":{"line":240,"column":0},"end":{"line":240,"column":80}},"241":{"start":{"line":242,"column":0},"end":{"line":242,"column":50}},"242":{"start":{"line":243,"column":0},"end":{"line":243,"column":62}},"244":{"start":{"line":245,"column":0},"end":{"line":245,"column":28}},"245":{"start":{"line":246,"column":0},"end":{"line":246,"column":10}},"246":{"start":{"line":247,"column":0},"end":{"line":247,"column":27}},"247":{"start":{"line":248,"column":0},"end":{"line":248,"column":35}},"248":{"start":{"line":249,"column":0},"end":{"line":249,"column":62}},"249":{"start":{"line":250,"column":0},"end":{"line":250,"column":29}},"250":{"start":{"line":251,"column":0},"end":{"line":251,"column":5}},"253":{"start":{"line":254,"column":0},"end":{"line":254,"column":70}},"255":{"start":{"line":256,"column":0},"end":{"line":256,"column":20}},"256":{"start":{"line":257,"column":0},"end":{"line":257,"column":3}},"259":{"start":{"line":260,"column":0},"end":{"line":260,"column":100}},"260":{"start":{"line":261,"column":0},"end":{"line":261,"column":80}},"262":{"start":{"line":263,"column":0},"end":{"line":263,"column":32}},"263":{"start":{"line":264,"column":0},"end":{"line":264,"column":106}},"264":{"start":{"line":265,"column":0},"end":{"line":265,"column":71}},"265":{"start":{"line":266,"column":0},"end":{"line":266,"column":30}},"266":{"start":{"line":267,"column":0},"end":{"line":267,"column":43}},"269":{"start":{"line":270,"column":0},"end":{"line":270,"column":32}},"270":{"start":{"line":271,"column":0},"end":{"line":271,"column":31}},"271":{"start":{"line":272,"column":0},"end":{"line":272,"column":7}},"274":{"start":{"line":275,"column":0},"end":{"line":275,"column":41}},"275":{"start":{"line":276,"column":0},"end":{"line":276,"column":40}},"276":{"start":{"line":277,"column":0},"end":{"line":277,"column":7}},"279":{"start":{"line":280,"column":0},"end":{"line":280,"column":59}},"280":{"start":{"line":281,"column":0},"end":{"line":281,"column":49}},"281":{"start":{"line":282,"column":0},"end":{"line":282,"column":7}},"282":{"start":{"line":283,"column":0},"end":{"line":283,"column":6}},"285":{"start":{"line":286,"column":0},"end":{"line":286,"column":49}},"286":{"start":{"line":287,"column":0},"end":{"line":287,"column":61}},"287":{"start":{"line":288,"column":0},"end":{"line":288,"column":80}},"288":{"start":{"line":289,"column":0},"end":{"line":289,"column":8}},"289":{"start":{"line":290,"column":0},"end":{"line":290,"column":6}},"291":{"start":{"line":292,"column":0},"end":{"line":292,"column":22}},"292":{"start":{"line":293,"column":0},"end":{"line":293,"column":3}},"295":{"start":{"line":296,"column":0},"end":{"line":296,"column":96}},"296":{"start":{"line":297,"column":0},"end":{"line":297,"column":18}},"297":{"start":{"line":298,"column":0},"end":{"line":298,"column":20}},"298":{"start":{"line":299,"column":0},"end":{"line":299,"column":20}},"301":{"start":{"line":302,"column":0},"end":{"line":302,"column":55}},"302":{"start":{"line":303,"column":0},"end":{"line":303,"column":16}},"303":{"start":{"line":304,"column":0},"end":{"line":304,"column":31}},"304":{"start":{"line":305,"column":0},"end":{"line":305,"column":34}},"305":{"start":{"line":306,"column":0},"end":{"line":306,"column":34}},"306":{"start":{"line":307,"column":0},"end":{"line":307,"column":5}},"307":{"start":{"line":308,"column":0},"end":{"line":308,"column":10}},"309":{"start":{"line":310,"column":0},"end":{"line":310,"column":66}},"310":{"start":{"line":311,"column":0},"end":{"line":311,"column":31}},"311":{"start":{"line":312,"column":0},"end":{"line":312,"column":40}},"312":{"start":{"line":313,"column":0},"end":{"line":313,"column":37}},"313":{"start":{"line":314,"column":0},"end":{"line":314,"column":41}},"314":{"start":{"line":315,"column":0},"end":{"line":315,"column":7}},"315":{"start":{"line":316,"column":0},"end":{"line":316,"column":12}},"316":{"start":{"line":317,"column":0},"end":{"line":317,"column":53}},"317":{"start":{"line":318,"column":0},"end":{"line":318,"column":7}},"318":{"start":{"line":319,"column":0},"end":{"line":319,"column":5}},"320":{"start":{"line":321,"column":0},"end":{"line":321,"column":38}},"321":{"start":{"line":322,"column":0},"end":{"line":322,"column":3}},"324":{"start":{"line":325,"column":0},"end":{"line":325,"column":71}},"325":{"start":{"line":326,"column":0},"end":{"line":326,"column":71}},"326":{"start":{"line":327,"column":0},"end":{"line":327,"column":71}},"328":{"start":{"line":329,"column":0},"end":{"line":329,"column":70}},"329":{"start":{"line":330,"column":0},"end":{"line":330,"column":30}},"330":{"start":{"line":331,"column":0},"end":{"line":331,"column":30}},"331":{"start":{"line":332,"column":0},"end":{"line":332,"column":18}},"332":{"start":{"line":333,"column":0},"end":{"line":333,"column":20}},"333":{"start":{"line":334,"column":0},"end":{"line":334,"column":5}},"335":{"start":{"line":336,"column":0},"end":{"line":336,"column":12}},"336":{"start":{"line":337,"column":0},"end":{"line":337,"column":3}},"337":{"start":{"line":338,"column":0},"end":{"line":338,"column":1}},"339":{"start":{"line":340,"column":0},"end":{"line":340,"column":27}}},"s":{"0":0,"2":0,"42":0,"43":0,"44":0,"46":0,"48":0,"49":0,"51":0,"52":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"64":0,"66":0,"67":0,"68":0,"69":0,"72":0,"74":0,"75":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"100":0,"101":0,"102":0,"104":0,"105":0,"106":0,"108":0,"109":0,"110":0,"113":0,"114":0,"115":0,"118":0,"119":0,"120":0,"121":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"134":0,"135":0,"136":0,"146":0,"147":0,"148":0,"149":0,"151":0,"152":0,"154":0,"155":0,"156":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"170":0,"171":0,"174":0,"175":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"185":0,"186":0,"189":0,"190":0,"192":0,"193":0,"196":0,"197":0,"198":0,"199":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"224":0,"225":0,"226":0,"228":0,"229":0,"236":0,"237":0,"238":0,"239":0,"241":0,"242":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"253":0,"255":0,"256":0,"259":0,"260":0,"262":0,"263":0,"264":0,"265":0,"266":0,"269":0,"270":0,"271":0,"274":0,"275":0,"276":0,"279":0,"280":0,"281":0,"282":0,"285":0,"286":0,"287":0,"288":0,"289":0,"291":0,"292":0,"295":0,"296":0,"297":0,"298":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"309":0,"310":0,"311":0,"312":0,"313":0,"314":0,"315":0,"316":0,"317":0,"318":0,"320":0,"321":0,"324":0,"325":0,"326":0,"328":0,"329":0,"330":0,"331":0,"332":0,"333":0,"335":0,"336":0,"337":0,"339":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":9581},"end":{"line":340,"column":27}},"locations":[{"start":{"line":1,"column":9581},"end":{"line":340,"column":27}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":9581},"end":{"line":340,"column":27}},"loc":{"start":{"line":1,"column":9581},"end":{"line":340,"column":27}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/scripts/monorepo/detect.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/monorepo/detect.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":33}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":32}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":70}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":59}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":21}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":15}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":7}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":60}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":50}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":12}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":40}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":64}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":5}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":3}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":17}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":58}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":3}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":1}}},"s":{"1":0,"2":0,"3":0,"4":0,"11":0,"12":0,"13":0,"14":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":51},"end":{"line":28,"column":-198}},"locations":[{"start":{"line":1,"column":51},"end":{"line":28,"column":-198}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":51},"end":{"line":28,"column":-198}},"loc":{"start":{"line":1,"column":51},"end":{"line":28,"column":-198}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/monorepo/packages.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/monorepo/packages.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":43}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":84}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":45}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":63}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":42}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":19}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":23}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":29}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":35}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":4}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":21}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":36}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":54}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":42}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":14}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":36}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":28}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":34}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":36}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":17}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":7}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":7}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":1}}},"s":{"1":0,"2":0,"3":0,"4":0,"14":0,"15":0,"16":0,"17":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":45},"end":{"line":40,"column":-157}},"locations":[{"start":{"line":1,"column":45},"end":{"line":40,"column":-157}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":45},"end":{"line":40,"column":-157}},"loc":{"start":{"line":1,"column":45},"end":{"line":40,"column":-157}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/publish/cli.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/publish/cli.ts","all":true,"statementMap":{"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":24}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":28}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":34}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":25}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":35}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":28}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":51}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":51}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":80}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":42}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":29}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":7}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":54}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":23}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":54}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":53}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":30}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":38}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":5}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":4}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":7}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":24}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":53}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":23}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":40}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":41}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":4}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":27}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":30}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":59}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":41}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":18}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":57}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":26}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":3}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":50}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":57}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":20}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":49}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":44}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":64}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":40}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":74}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":10}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":3}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":75}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":28}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":69}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":10}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":3}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":37}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":81}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":54}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":39}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":97}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":10}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":3}},"118":{"start":{"line":119,"column":0},"end":{"line":119,"column":7}},"119":{"start":{"line":120,"column":0},"end":{"line":120,"column":57}},"120":{"start":{"line":121,"column":0},"end":{"line":121,"column":154}},"121":{"start":{"line":122,"column":0},"end":{"line":122,"column":77}},"122":{"start":{"line":123,"column":0},"end":{"line":123,"column":3}},"123":{"start":{"line":124,"column":0},"end":{"line":124,"column":17}},"124":{"start":{"line":125,"column":0},"end":{"line":125,"column":72}},"125":{"start":{"line":126,"column":0},"end":{"line":126,"column":15}},"126":{"start":{"line":127,"column":0},"end":{"line":127,"column":3}},"127":{"start":{"line":128,"column":0},"end":{"line":128,"column":1}},"134":{"start":{"line":135,"column":0},"end":{"line":135,"column":71}},"135":{"start":{"line":136,"column":0},"end":{"line":136,"column":78}},"136":{"start":{"line":137,"column":0},"end":{"line":137,"column":29}},"137":{"start":{"line":138,"column":0},"end":{"line":138,"column":1}},"145":{"start":{"line":146,"column":0},"end":{"line":146,"column":112}},"147":{"start":{"line":148,"column":0},"end":{"line":148,"column":34}},"148":{"start":{"line":149,"column":0},"end":{"line":149,"column":33}},"149":{"start":{"line":150,"column":0},"end":{"line":150,"column":52}},"152":{"start":{"line":153,"column":0},"end":{"line":153,"column":36}},"153":{"start":{"line":154,"column":0},"end":{"line":154,"column":89}},"156":{"start":{"line":157,"column":0},"end":{"line":157,"column":47}},"157":{"start":{"line":158,"column":0},"end":{"line":158,"column":42}},"160":{"start":{"line":161,"column":0},"end":{"line":161,"column":94}},"162":{"start":{"line":163,"column":0},"end":{"line":163,"column":79}},"163":{"start":{"line":164,"column":0},"end":{"line":164,"column":5}},"164":{"start":{"line":165,"column":0},"end":{"line":165,"column":3}},"165":{"start":{"line":166,"column":0},"end":{"line":166,"column":1}},"168":{"start":{"line":169,"column":0},"end":{"line":169,"column":72}},"169":{"start":{"line":170,"column":0},"end":{"line":170,"column":7}},"170":{"start":{"line":171,"column":0},"end":{"line":171,"column":79}},"171":{"start":{"line":172,"column":0},"end":{"line":172,"column":49}},"172":{"start":{"line":173,"column":0},"end":{"line":173,"column":37}},"173":{"start":{"line":174,"column":0},"end":{"line":174,"column":3}},"174":{"start":{"line":175,"column":0},"end":{"line":175,"column":17}},"175":{"start":{"line":176,"column":0},"end":{"line":176,"column":92}},"176":{"start":{"line":177,"column":0},"end":{"line":177,"column":13}},"177":{"start":{"line":178,"column":0},"end":{"line":178,"column":3}},"178":{"start":{"line":179,"column":0},"end":{"line":179,"column":1}},"182":{"start":{"line":183,"column":0},"end":{"line":183,"column":53}},"183":{"start":{"line":184,"column":0},"end":{"line":184,"column":46}},"185":{"start":{"line":186,"column":0},"end":{"line":186,"column":61}},"188":{"start":{"line":189,"column":0},"end":{"line":189,"column":29}},"189":{"start":{"line":190,"column":0},"end":{"line":190,"column":85}},"192":{"start":{"line":193,"column":0},"end":{"line":193,"column":50}},"193":{"start":{"line":194,"column":0},"end":{"line":194,"column":79}},"194":{"start":{"line":195,"column":0},"end":{"line":195,"column":37}},"195":{"start":{"line":196,"column":0},"end":{"line":196,"column":46}},"196":{"start":{"line":197,"column":0},"end":{"line":197,"column":8}},"197":{"start":{"line":198,"column":0},"end":{"line":198,"column":5}},"200":{"start":{"line":201,"column":0},"end":{"line":201,"column":56}},"201":{"start":{"line":202,"column":0},"end":{"line":202,"column":84}},"202":{"start":{"line":203,"column":0},"end":{"line":203,"column":40}},"203":{"start":{"line":204,"column":0},"end":{"line":204,"column":47}},"204":{"start":{"line":205,"column":0},"end":{"line":205,"column":8}},"205":{"start":{"line":206,"column":0},"end":{"line":206,"column":5}},"208":{"start":{"line":209,"column":0},"end":{"line":209,"column":58}},"209":{"start":{"line":210,"column":0},"end":{"line":210,"column":75}},"210":{"start":{"line":211,"column":0},"end":{"line":211,"column":41}},"211":{"start":{"line":212,"column":0},"end":{"line":212,"column":45}},"212":{"start":{"line":213,"column":0},"end":{"line":213,"column":8}},"213":{"start":{"line":214,"column":0},"end":{"line":214,"column":5}},"216":{"start":{"line":217,"column":0},"end":{"line":217,"column":104}},"217":{"start":{"line":218,"column":0},"end":{"line":218,"column":71}},"218":{"start":{"line":219,"column":0},"end":{"line":219,"column":5}},"219":{"start":{"line":220,"column":0},"end":{"line":220,"column":4}},"220":{"start":{"line":221,"column":0},"end":{"line":221,"column":1}}},"s":{"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"13":0,"15":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"24":0,"25":0,"26":0,"27":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"37":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"48":0,"49":0,"51":0,"52":0,"55":0,"56":0,"57":0,"60":0,"61":0,"62":0,"63":0,"66":0,"69":0,"70":0,"71":0,"72":0,"74":0,"75":0,"78":0,"80":0,"81":0,"82":0,"83":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"134":0,"135":0,"136":0,"137":0,"145":0,"147":0,"148":0,"149":0,"152":0,"153":0,"156":0,"157":0,"160":0,"162":0,"163":0,"164":0,"165":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"182":0,"183":0,"185":0,"188":0,"189":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"216":0,"217":0,"218":0,"219":0,"220":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":7159},"end":{"line":221,"column":1}},"locations":[{"start":{"line":1,"column":7159},"end":{"line":221,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":7159},"end":{"line":221,"column":1}},"loc":{"start":{"line":1,"column":7159},"end":{"line":221,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/publish/dependencies.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/publish/dependencies.ts","all":true,"statementMap":{"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":44}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":35}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":38}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":34}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":61}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":52}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":45}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":30}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":7}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":6}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":3}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":37}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":64}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":55}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":45}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":7}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":6}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":3}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":38}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":65}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":56}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":45}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":34}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":7}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":6}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":3}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":60}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":63}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":25}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":29}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":35}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":4}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":14}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":1}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":65}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":35}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":33}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":55}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":35}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":29}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":12}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":24}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":30}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":36}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":39}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":57}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":29}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":33}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":21}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":5}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":4}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":24}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":1}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":58}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":46}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":41}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":1}}},"s":{"4":0,"5":0,"6":0,"7":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"39":0,"40":0,"43":0,"44":0,"46":0,"48":0,"49":0,"51":0,"52":0,"55":0,"56":0,"57":0,"59":0,"61":0,"62":0,"63":0,"64":0,"67":0,"68":0,"71":0,"74":0,"75":0,"78":0,"79":0,"80":0,"81":0,"82":0,"84":0,"85":0,"88":0,"89":0,"90":0,"91":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2301},"end":{"line":92,"column":1}},"locations":[{"start":{"line":1,"column":2301},"end":{"line":92,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2301},"end":{"line":92,"column":1}},"loc":{"start":{"line":1,"column":2301},"end":{"line":92,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/publish/npm.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/publish/npm.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":29}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":56}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":79}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":18}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":21}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":4}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":23}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":1}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":40}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":22}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":15}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":18}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":54}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":52}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":19}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":81}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":51}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":1}}},"s":{"1":0,"2":0,"3":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"22":0,"23":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":56},"end":{"line":24,"column":-243}},"locations":[{"start":{"line":1,"column":56},"end":{"line":24,"column":-243}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":56},"end":{"line":24,"column":-243}},"loc":{"start":{"line":1,"column":56},"end":{"line":24,"column":-243}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/utils/cli-utilities.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/utils/cli-utilities.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":34}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":40}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":41}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":31}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":27}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":51}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":23}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":29}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":23}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":1}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":45}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":12}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":19}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":4}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":62}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":18}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":13}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":55}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":3}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":43}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":52}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":25}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":9}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":12}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":11}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":19}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":12}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":11}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":10}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":25}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":14}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":34}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":31}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":6}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":43}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":77}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":6}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":26}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":39}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":30}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":16}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":6}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":1}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":34}}},"s":{"1":0,"2":0,"3":0,"4":0,"5":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"47":0,"48":0,"49":0,"50":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"83":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":2201},"end":{"line":84,"column":34}},"locations":[{"start":{"line":1,"column":2201},"end":{"line":84,"column":34}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":2201},"end":{"line":84,"column":34}},"loc":{"start":{"line":1,"column":2201},"end":{"line":84,"column":34}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/utils/enquirer.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/utils/enquirer.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":25}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":95}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":41}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":27}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":52}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":29}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":59}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":68}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":49}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":40}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":48}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":12}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":29}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":16}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":18}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":72}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":11}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":34}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":21}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":7}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":14}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":3}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":52}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":1}}},"s":{"1":0,"2":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"18":0,"19":0,"20":0,"21":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":1251},"end":{"line":37,"column":1}},"locations":[{"start":{"line":1,"column":1251},"end":{"line":37,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":1251},"end":{"line":37,"column":1}},"loc":{"start":{"line":1,"column":1251},"end":{"line":37,"column":1}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/utils/file.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/utils/file.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":24}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":28}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":27}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":18}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":34}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":11}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":9}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":18}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":20}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":25}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":25}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":82}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":3}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":43}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":44}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":34}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":48}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":3}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":40}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":27}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":20}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":14}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":53}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":3}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":21}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":57}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":3}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":8}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":56}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":3}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":19}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":1}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":77}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":47}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":1}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":80}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":51}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":65}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":1}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":81}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":28}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":63}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":74}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":3}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":8}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":38}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":3}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":1}}},"s":{"0":0,"1":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"27":0,"28":0,"29":0,"32":0,"33":0,"36":0,"37":0,"38":0,"41":0,"42":0,"43":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"56":0,"57":0,"61":0,"62":0,"63":0,"65":0,"66":0,"67":0,"68":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":79,"column":-74}},"locations":[{"start":{"line":1,"column":0},"end":{"line":79,"column":-74}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":79,"column":-74}},"loc":{"start":{"line":1,"column":0},"end":{"line":79,"column":-74}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/scripts/utils/logger.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/utils/logger.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":38}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":33}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":1}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":41}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":34}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":39}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":32}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":39}}},"s":{"0":0,"4":0,"5":0,"6":0,"8":0,"9":0,"10":0,"12":0,"13":0,"14":0,"16":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":17,"column":-104}},"locations":[{"start":{"line":1,"column":0},"end":{"line":17,"column":-104}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":17,"column":-104}},"loc":{"start":{"line":1,"column":0},"end":{"line":17,"column":-104}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/scripts/utils/path.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/utils/path.ts","all":true,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":34}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":35}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":22}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":66}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":42}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":39}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":51}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":57}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":1}}},"s":{"0":0,"1":0,"3":0,"5":0,"6":0,"8":0,"9":0,"10":0,"12":0,"13":0,"14":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":15,"column":-253}},"locations":[{"start":{"line":1,"column":0},"end":{"line":15,"column":-253}}]}},"b":{"0":[0]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":0},"end":{"line":15,"column":-253}},"loc":{"start":{"line":1,"column":0},"end":{"line":15,"column":-253}},"line":1}},"f":{"0":0}} +,"/home/runner/work/https-enable/https-enable/scripts/utils/symbols.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/utils/symbols.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":34}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":86}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":80}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":78}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":23}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":22}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":17}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":14}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":19}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":17}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":13}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":19}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":12}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":12}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":14}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":13}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":22}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":14}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":23}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":19}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":21}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":15}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":16}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":15}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":17}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":16}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":15}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":16}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":15}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":19}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":1}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":50}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":13}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":13}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":23}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":18}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":12}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":21}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":15}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":20}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":18}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":17}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":15}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":2}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":48}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":19}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":13}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":13}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":21}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":16}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":12}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":20}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":21}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":31}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":36}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":16}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":15}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":15}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":2}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":56}}},"s":{"1":0,"3":0,"4":0,"5":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"66":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":63},"end":{"line":67,"column":-301}},"locations":[{"start":{"line":1,"column":63},"end":{"line":67,"column":-301}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":63},"end":{"line":67,"column":-301}},"loc":{"start":{"line":1,"column":63},"end":{"line":67,"column":-301}},"line":1}},"f":{"0":1}} +,"/home/runner/work/https-enable/https-enable/scripts/version/bump.ts": {"path":"/home/runner/work/https-enable/https-enable/scripts/version/bump.ts","all":true,"statementMap":{"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":28}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":84}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":16}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":8}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":55}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":81}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":4}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":1}}},"s":{"1":0,"2":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":56},"end":{"line":11,"column":-91}},"locations":[{"start":{"line":1,"column":56},"end":{"line":11,"column":-91}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"(empty-report)","decl":{"start":{"line":1,"column":56},"end":{"line":11,"column":-91}},"loc":{"start":{"line":1,"column":56},"end":{"line":11,"column":-91}},"line":1}},"f":{"0":1}} +} diff --git a/eslint.config.ts b/eslint.config.ts deleted file mode 100644 index 6206a9e..0000000 --- a/eslint.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import antfu from '@antfu/eslint-config' - -export default antfu({ - ignores: [ - 'examples/nestjs', - ], -}) diff --git a/examples/express/.gitignore b/examples/express/.gitignore deleted file mode 100644 index 8c22b35..0000000 --- a/examples/express/.gitignore +++ /dev/null @@ -1 +0,0 @@ -cert \ No newline at end of file diff --git a/examples/express/index.html b/examples/express/index.html new file mode 100644 index 0000000..2a49418 --- /dev/null +++ b/examples/express/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for examples/express + + + + + + + + + +
+
+

All files examples/express

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js +
+
0%0/250%0/10%0/10%0/25
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/express/index.js b/examples/express/index.js deleted file mode 100644 index cbbdc93..0000000 --- a/examples/express/index.js +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint-disable no-console */ -import { ExpressHttpsAdapter } from '@https-enable/adapter-express' -import { HttpsEnabler } from '@https-enable/core' -import express from 'express' - -const HOST = '127.0.0.1' -const PORT = 2333 - -const app = express() - -app.get('/', (req, res) => { - res.send({ msg: 'hello world' }) - res.end() -}) - -const enabler = new HttpsEnabler({ - adapter: new ExpressHttpsAdapter(app), - options: { host: HOST, port: PORT }, - certificateOptions: { validity: 1, domains: HOST }, -}) - -enabler.startServer().then((res) => { - console.log(`Server running in http://${res.host}:${res.port}`) -}) - -enabler.on('error', (err) => { - console.log('error:', err) -}) - -enabler.on('cert-renewed', (res) => { - console.log('cert-renewed:', res) -}) diff --git a/examples/express/index.js.html b/examples/express/index.js.html new file mode 100644 index 0000000..1696b1f --- /dev/null +++ b/examples/express/index.js.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for examples/express/index.js + + + + + + + + + +
+
+

All files / examples/express index.js

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable no-console */
+import { ExpressHttpsAdapter } from '@https-enable/adapter-express'
+import { HttpsEnabler } from '@https-enable/core'
+import express from 'express'
+ 
+const HOST = '127.0.0.1'
+const PORT = 2333
+ 
+const app = express()
+ 
+app.get('/', (req, res) => {
+  res.send({ msg: 'hello world' })
+  res.end()
+})
+ 
+const enabler = new HttpsEnabler({
+  adapter: new ExpressHttpsAdapter(app),
+  options: { host: HOST, port: PORT },
+  certificateOptions: { validity: 1, domains: HOST },
+})
+ 
+enabler.startServer().then((res) => {
+  console.log(`Server running in http://${res.host}:${res.port}`)
+})
+ 
+enabler.on('error', (err) => {
+  console.log('error:', err)
+})
+ 
+enabler.on('cert-renewed', (res) => {
+  console.log('cert-renewed:', res)
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/express/package.json b/examples/express/package.json deleted file mode 100644 index cdcc2d9..0000000 --- a/examples/express/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "express-demo", - "type": "module", - "private": true, - "main": "index.js", - "scripts": { - "test": "node index.js" - }, - "dependencies": { - "@https-enable/adapter-express": "workspace:*", - "@https-enable/core": "workspace:*", - "express": "^4.21.2" - } -} diff --git a/examples/fastify/.gitignore b/examples/fastify/.gitignore deleted file mode 100644 index 8c22b35..0000000 --- a/examples/fastify/.gitignore +++ /dev/null @@ -1 +0,0 @@ -cert \ No newline at end of file diff --git a/examples/fastify/index.html b/examples/fastify/index.html new file mode 100644 index 0000000..b677746 --- /dev/null +++ b/examples/fastify/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for examples/fastify + + + + + + + + + +
+
+

All files examples/fastify

+
+ +
+ 0% + Statements + 0/28 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js +
+
0%0/280%0/10%0/10%0/28
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/fastify/index.js b/examples/fastify/index.js deleted file mode 100644 index 3dd22f5..0000000 --- a/examples/fastify/index.js +++ /dev/null @@ -1,35 +0,0 @@ -/* eslint-disable unused-imports/no-unused-vars */ -/* eslint-disable no-console */ -import { FastifyHttpsAdapter } from '@https-enable/adapter-fastify' -import { HttpsEnabler } from '@https-enable/core' -import Fastify from 'fastify' - -const fastify = Fastify({ - logger: true, -}) - -const HOST = '127.0.0.1' -const PORT = 2333 - -fastify.get('/', async (request, reply) => { - return { hello: 'world' } -}) - -const adapter = new FastifyHttpsAdapter(fastify) -const enabler = new HttpsEnabler({ - adapter, - options: { host: HOST, port: PORT }, - certificateOptions: { validity: 1, domains: HOST, base: 'cert' }, -}) - -enabler.startServer().then((res) => { - console.log(`Server running in http://${res.host}:${res.port}`) -}) - -enabler.on('error', (err) => { - console.log('error:', err) -}) - -enabler.on('cert-renewed', (res) => { - console.log('cert-renewed:', res) -}) diff --git a/examples/fastify/index.js.html b/examples/fastify/index.js.html new file mode 100644 index 0000000..76e1b3f --- /dev/null +++ b/examples/fastify/index.js.html @@ -0,0 +1,190 @@ + + + + + + Code coverage report for examples/fastify/index.js + + + + + + + + + +
+
+

All files / examples/fastify index.js

+
+ +
+ 0% + Statements + 0/28 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable unused-imports/no-unused-vars */
+/* eslint-disable no-console */
+import { FastifyHttpsAdapter } from '@https-enable/adapter-fastify'
+import { HttpsEnabler } from '@https-enable/core'
+import Fastify from 'fastify'
+ 
+const fastify = Fastify({
+  logger: true,
+})
+ 
+const HOST = '127.0.0.1'
+const PORT = 2333
+ 
+fastify.get('/', async (request, reply) => {
+  return { hello: 'world' }
+})
+ 
+const adapter = new FastifyHttpsAdapter(fastify)
+const enabler = new HttpsEnabler({
+  adapter,
+  options: { host: HOST, port: PORT },
+  certificateOptions: { validity: 1, domains: HOST, base: 'cert' },
+})
+ 
+enabler.startServer().then((res) => {
+  console.log(`Server running in http://${res.host}:${res.port}`)
+})
+ 
+enabler.on('error', (err) => {
+  console.log('error:', err)
+})
+ 
+enabler.on('cert-renewed', (res) => {
+  console.log('cert-renewed:', res)
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/fastify/package.json b/examples/fastify/package.json deleted file mode 100644 index 1583e2d..0000000 --- a/examples/fastify/package.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "fastify-demo", - "type": "module", - "private": true, - "main": "index.js", - "scripts": { - "test": "node index.js" - }, - "dependencies": { - "@https-enable/adapter-fastify": "workspace:*", - "@https-enable/core": "workspace:*", - "fastify": "^5.2.1" - } -} diff --git a/examples/koa/.gitignore b/examples/koa/.gitignore deleted file mode 100644 index 8c22b35..0000000 --- a/examples/koa/.gitignore +++ /dev/null @@ -1 +0,0 @@ -cert \ No newline at end of file diff --git a/examples/koa/index.html b/examples/koa/index.html new file mode 100644 index 0000000..07c7d8a --- /dev/null +++ b/examples/koa/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for examples/koa + + + + + + + + + +
+
+

All files examples/koa

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js +
+
0%0/250%0/10%0/10%0/25
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/koa/index.js b/examples/koa/index.js deleted file mode 100644 index 2049c18..0000000 --- a/examples/koa/index.js +++ /dev/null @@ -1,32 +0,0 @@ -/* eslint-disable no-console */ -import { KoaHttpsAdapter } from '@https-enable/adapter-koa' -import { HttpsEnabler } from '@https-enable/core' -import Koa from 'koa' - -const app = new Koa() - -const HOST = '127.0.0.1' -const PORT = 2333 - -app.use(async (ctx) => { - ctx.body = 'Hello World' -}) - -const adapter = new KoaHttpsAdapter(app) -const enabler = new HttpsEnabler({ - adapter, - options: { host: HOST, port: PORT }, - certificateOptions: { validity: 1, domains: HOST, base: 'cert' }, -}) - -enabler.startServer().then((res) => { - console.log(`Server running in http://${res.host}:${res.port}`) -}) - -enabler.on('error', (err) => { - console.log('error:', err) -}) - -enabler.on('cert-renewed', (res) => { - console.log('cert-renewed:', res) -}) diff --git a/examples/koa/index.js.html b/examples/koa/index.js.html new file mode 100644 index 0000000..1b9abf5 --- /dev/null +++ b/examples/koa/index.js.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for examples/koa/index.js + + + + + + + + + +
+
+

All files / examples/koa index.js

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable no-console */
+import { KoaHttpsAdapter } from '@https-enable/adapter-koa'
+import { HttpsEnabler } from '@https-enable/core'
+import Koa from 'koa'
+ 
+const app = new Koa()
+ 
+const HOST = '127.0.0.1'
+const PORT = 2333
+ 
+app.use(async (ctx) => {
+  ctx.body = 'Hello World'
+})
+ 
+const adapter = new KoaHttpsAdapter(app)
+const enabler = new HttpsEnabler({
+  adapter,
+  options: { host: HOST, port: PORT },
+  certificateOptions: { validity: 1, domains: HOST, base: 'cert' },
+})
+ 
+enabler.startServer().then((res) => {
+  console.log(`Server running in http://${res.host}:${res.port}`)
+})
+ 
+enabler.on('error', (err) => {
+  console.log('error:', err)
+})
+ 
+enabler.on('cert-renewed', (res) => {
+  console.log('cert-renewed:', res)
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/koa/package.json b/examples/koa/package.json deleted file mode 100644 index bd90901..0000000 --- a/examples/koa/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "koa-demo", - "type": "module", - "private": true, - "main": "index.js", - "scripts": { - "test": "node index.js" - }, - "dependencies": { - "@https-enable/adapter-koa": "workspace:*", - "@https-enable/core": "workspace:*", - "koa": "^2.16.0" - }, - "devDependencies": { - "@types/koa": "^2.15.0" - } -} diff --git a/examples/nestjs/.gitignore b/examples/nestjs/.gitignore deleted file mode 100644 index 9b9f6e2..0000000 --- a/examples/nestjs/.gitignore +++ /dev/null @@ -1,57 +0,0 @@ -# compiled output -/dist -/node_modules -/build -/cert - -# Logs -logs -*.log -npm-debug.log* -pnpm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# OS -.DS_Store - -# Tests -/coverage -/.nyc_output - -# IDEs and editors -/.idea -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# IDE - VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# temp directory -.temp -.tmp - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json diff --git a/examples/nestjs/.prettierrc b/examples/nestjs/.prettierrc deleted file mode 100644 index dcb7279..0000000 --- a/examples/nestjs/.prettierrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "all" -} \ No newline at end of file diff --git a/examples/nestjs/README.md b/examples/nestjs/README.md deleted file mode 100644 index fe16425..0000000 --- a/examples/nestjs/README.md +++ /dev/null @@ -1,99 +0,0 @@ -

- Nest Logo -

- -[circleci-image]: https://img.shields.io/circleci/build/github/nestjs/nest/master?token=abc123def456 -[circleci-url]: https://circleci.com/gh/nestjs/nest - -

A progressive Node.js framework for building efficient and scalable server-side applications.

-

-NPM Version -Package License -NPM Downloads -CircleCI -Coverage -Discord -Backers on Open Collective -Sponsors on Open Collective - Donate us - Support us - Follow us on Twitter -

- - -## Description - -[Nest](https://github.com/nestjs/nest) framework TypeScript starter repository. - -## Project setup - -```bash -$ pnpm install -``` - -## Compile and run the project - -```bash -# development -$ pnpm run start - -# watch mode -$ pnpm run start:dev - -# production mode -$ pnpm run start:prod -``` - -## Run tests - -```bash -# unit tests -$ pnpm run test - -# e2e tests -$ pnpm run test:e2e - -# test coverage -$ pnpm run test:cov -``` - -## Deployment - -When you're ready to deploy your NestJS application to production, there are some key steps you can take to ensure it runs as efficiently as possible. Check out the [deployment documentation](https://docs.nestjs.com/deployment) for more information. - -If you are looking for a cloud-based platform to deploy your NestJS application, check out [Mau](https://mau.nestjs.com), our official platform for deploying NestJS applications on AWS. Mau makes deployment straightforward and fast, requiring just a few simple steps: - -```bash -$ pnpm install -g mau -$ mau deploy -``` - -With Mau, you can deploy your application in just a few clicks, allowing you to focus on building features rather than managing infrastructure. - -## Resources - -Check out a few resources that may come in handy when working with NestJS: - -- Visit the [NestJS Documentation](https://docs.nestjs.com) to learn more about the framework. -- For questions and support, please visit our [Discord channel](https://discord.gg/G7Qnnhy). -- To dive deeper and get more hands-on experience, check out our official video [courses](https://courses.nestjs.com/). -- Deploy your application to AWS with the help of [NestJS Mau](https://mau.nestjs.com) in just a few clicks. -- Visualize your application graph and interact with the NestJS application in real-time using [NestJS Devtools](https://devtools.nestjs.com). -- Need help with your project (part-time to full-time)? Check out our official [enterprise support](https://enterprise.nestjs.com). -- To stay in the loop and get updates, follow us on [X](https://x.com/nestframework) and [LinkedIn](https://linkedin.com/company/nestjs). -- Looking for a job, or have a job to offer? Check out our official [Jobs board](https://jobs.nestjs.com). - -## Support - -Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please [read more here](https://docs.nestjs.com/support). - -## Stay in touch - -- Author - [Kamil Myśliwiec](https://twitter.com/kammysliwiec) -- Website - [https://nestjs.com](https://nestjs.com/) -- Twitter - [@nestframework](https://twitter.com/nestframework) - -## License - -Nest is [MIT licensed](https://github.com/nestjs/nest/blob/master/LICENSE). diff --git a/examples/nestjs/eslint.config.mjs b/examples/nestjs/eslint.config.mjs deleted file mode 100644 index 128c8d5..0000000 --- a/examples/nestjs/eslint.config.mjs +++ /dev/null @@ -1,35 +0,0 @@ -// @ts-check -import eslint from '@eslint/js' -import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended' -import globals from 'globals' -import tseslint from 'typescript-eslint' - -export default tseslint.config( - { - ignores: ['eslint.config.mjs'], - }, - eslint.configs.recommended, - ...tseslint.configs.recommendedTypeChecked, - eslintPluginPrettierRecommended, - { - languageOptions: { - globals: { - ...globals.node, - ...globals.jest, - }, - ecmaVersion: 5, - sourceType: 'module', - parserOptions: { - projectService: true, - tsconfigRootDir: import.meta.dirname, - }, - }, - }, - { - rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-floating-promises': 'warn', - '@typescript-eslint/no-unsafe-argument': 'warn', - }, - }, -) diff --git a/examples/nestjs/nest-cli.json b/examples/nestjs/nest-cli.json deleted file mode 100644 index f9aa683..0000000 --- a/examples/nestjs/nest-cli.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/nest-cli", - "collection": "@nestjs/schematics", - "sourceRoot": "src", - "compilerOptions": { - "deleteOutDir": true - } -} diff --git a/examples/nestjs/package.json b/examples/nestjs/package.json deleted file mode 100644 index 54e60a1..0000000 --- a/examples/nestjs/package.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "name": "nestjs-demo", - "private": true, - "description": "", - "author": "", - "license": "UNLICENSED", - "scripts": { - "build": "nest build", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", - "start": "nest start", - "start:dev": "nest start --watch", - "start:debug": "nest start --debug --watch", - "start:prod": "node dist/main", - "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", - "test": "jest", - "test:watch": "jest --watch", - "test:cov": "jest --coverage", - "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json" - }, - "dependencies": { - "@https-enable/adapter-nestjs": "workspace:*", - "@https-enable/core": "workspace:*", - "@nestjs/common": "11.0.1", - "@nestjs/core": "11.0.1", - "@nestjs/platform-express": "11.0.1", - "@nestjs/platform-fastify": "11.0.1", - "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1" - }, - "devDependencies": { - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.18.0", - "@nestjs/cli": "^11.0.1", - "@nestjs/schematics": "^11.0.1", - "@nestjs/testing": "^11.0.1", - "@swc/cli": "^0.6.0", - "@swc/core": "^1.10.7", - "@types/express": "^5.0.0", - "@types/jest": "^29.5.14", - "@types/node": "^22.10.7", - "@types/supertest": "^6.0.2", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.2", - "globals": "^15.14.0", - "jest": "^29.7.0", - "prettier": "^3.4.2", - "source-map-support": "^0.5.21", - "supertest": "^7.0.0", - "ts-jest": "^29.2.5", - "ts-loader": "^9.5.2", - "ts-node": "^10.9.2", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.20.0" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "ts" - ], - "rootDir": "src", - "testRegex": ".*\\.spec\\.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - }, - "collectCoverageFrom": [ - "**/*.(t|j)s" - ], - "coverageDirectory": "../coverage", - "testEnvironment": "node" - } -} diff --git a/examples/nestjs/src/app.controller.spec.ts b/examples/nestjs/src/app.controller.spec.ts deleted file mode 100644 index ad12d7d..0000000 --- a/examples/nestjs/src/app.controller.spec.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { TestingModule } from '@nestjs/testing'; -import { Test } from '@nestjs/testing'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; - -describe('appController', () => { - let appController: AppController; - - beforeEach(async () => { - const app: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }).compile(); - - appController = app.get(AppController); - }); - - describe('root', () => { - it('should return "Hello World!"', () => { - expect(appController.getHello()).toBe('Hello World!'); - }); - }); -}); diff --git a/examples/nestjs/src/app.controller.ts b/examples/nestjs/src/app.controller.ts deleted file mode 100644 index fcfae70..0000000 --- a/examples/nestjs/src/app.controller.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { AppService } from './app.service'; -import { Controller, Get } from '@nestjs/common'; - -@Controller() -export class AppController { - constructor(private readonly appService: AppService) {} - - @Get() - getHello(): string { - return this.appService.getHello(); - } -} diff --git a/examples/nestjs/src/app.controller.ts.html b/examples/nestjs/src/app.controller.ts.html new file mode 100644 index 0000000..a0300bb --- /dev/null +++ b/examples/nestjs/src/app.controller.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for examples/nestjs/src/app.controller.ts + + + + + + + + + +
+
+

All files / examples/nestjs/src app.controller.ts

+
+ +
+ 0% + Statements + 0/10 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +  +  +  +  +  +  +  +  +  +  +  + 
import { AppService } from './app.service';
+import { Controller, Get } from '@nestjs/common';
+ 
+@Controller()
+export class AppController {
+  constructor(private readonly appService: AppService) {}
+ 
+  @Get()
+  getHello(): string {
+    return this.appService.getHello();
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/nestjs/src/app.module.ts b/examples/nestjs/src/app.module.ts deleted file mode 100644 index 8662803..0000000 --- a/examples/nestjs/src/app.module.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; - -@Module({ - imports: [], - controllers: [AppController], - providers: [AppService], -}) -export class AppModule {} diff --git a/examples/nestjs/src/app.module.ts.html b/examples/nestjs/src/app.module.ts.html new file mode 100644 index 0000000..487f435 --- /dev/null +++ b/examples/nestjs/src/app.module.ts.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for examples/nestjs/src/app.module.ts + + + + + + + + + +
+
+

All files / examples/nestjs/src app.module.ts

+
+ +
+ 0% + Statements + 0/9 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11  +  +  +  +  +  +  +  +  +  + 
import { Module } from '@nestjs/common';
+import { AppController } from './app.controller';
+import { AppService } from './app.service';
+ 
+@Module({
+  imports: [],
+  controllers: [AppController],
+  providers: [AppService],
+})
+export class AppModule {}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/nestjs/src/app.service.ts b/examples/nestjs/src/app.service.ts deleted file mode 100644 index 927d7cc..0000000 --- a/examples/nestjs/src/app.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -@Injectable() -export class AppService { - getHello(): string { - return 'Hello World!'; - } -} diff --git a/examples/nestjs/src/app.service.ts.html b/examples/nestjs/src/app.service.ts.html new file mode 100644 index 0000000..6ec3e86 --- /dev/null +++ b/examples/nestjs/src/app.service.ts.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for examples/nestjs/src/app.service.ts + + + + + + + + + +
+
+

All files / examples/nestjs/src app.service.ts

+
+ +
+ 0% + Statements + 0/7 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9  +  +  +  +  +  +  +  + 
import { Injectable } from '@nestjs/common';
+ 
+@Injectable()
+export class AppService {
+  getHello(): string {
+    return 'Hello World!';
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/nestjs/src/index.html b/examples/nestjs/src/index.html new file mode 100644 index 0000000..44ab61d --- /dev/null +++ b/examples/nestjs/src/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for examples/nestjs/src + + + + + + + + + +
+
+

All files examples/nestjs/src

+
+ +
+ 0% + Statements + 0/47 +
+ + +
+ 25% + Branches + 1/4 +
+ + +
+ 25% + Functions + 1/4 +
+ + +
+ 0% + Lines + 0/47 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
app.controller.ts +
+
0%0/100%0/10%0/10%0/10
app.module.ts +
+
0%0/90%0/10%0/10%0/9
app.service.ts +
+
0%0/70%0/10%0/10%0/7
main.ts +
+
0%0/21100%1/1100%1/10%0/21
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/nestjs/src/main.ts b/examples/nestjs/src/main.ts deleted file mode 100644 index 3d972a4..0000000 --- a/examples/nestjs/src/main.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { NestFactory } from '@nestjs/core'; -import { AppModule } from './app.module'; -import { HttpsEnabler } from '@https-enable/core'; -import { NestExpressApplication } from '@nestjs/platform-express'; -import { - FastifyAdapter, - NestFastifyApplication, -} from '@nestjs/platform-fastify'; -import { - NestJsFastifyHttpsAdapter, - NestJsExpressHttpsAdapter, -} from '@https-enable/adapter-nestjs'; - -async function bootstrap() { - // const app = await NestFactory.create(AppModule); - const app = await NestFactory.create( - AppModule, - new FastifyAdapter(), - ); - - const adapter = new NestJsFastifyHttpsAdapter(app); - - const enabler = new HttpsEnabler({ - adapter, - options: { host: '127.0.0.1', port: process.env.PORT ?? 3000 }, - certificateOptions: { validity: 1, domains: '127.0.0.1', base: 'cert' }, - }); - - await enabler.startServer().then((res) => { - console.log(`Server running in http://${res.host}:${res.port}`); - }); -} -void bootstrap(); diff --git a/examples/nestjs/src/main.ts.html b/examples/nestjs/src/main.ts.html new file mode 100644 index 0000000..048a3a6 --- /dev/null +++ b/examples/nestjs/src/main.ts.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for examples/nestjs/src/main.ts + + + + + + + + + +
+
+

All files / examples/nestjs/src main.ts

+
+ +
+ 0% + Statements + 0/21 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable @typescript-eslint/no-unused-vars */
+import { NestFactory } from '@nestjs/core';
+import { AppModule } from './app.module';
+import { HttpsEnabler } from '@https-enable/core';
+import { NestExpressApplication } from '@nestjs/platform-express';
+import {
+  FastifyAdapter,
+  NestFastifyApplication,
+} from '@nestjs/platform-fastify';
+import {
+  NestJsFastifyHttpsAdapter,
+  NestJsExpressHttpsAdapter,
+} from '@https-enable/adapter-nestjs';
+ 
+async function bootstrap() {
+  // const app = await NestFactory.create<NestExpressApplication>(AppModule);
+  const app = await NestFactory.create<NestFastifyApplication>(
+    AppModule,
+    new FastifyAdapter(),
+  );
+ 
+  const adapter = new NestJsFastifyHttpsAdapter(app);
+ 
+  const enabler = new HttpsEnabler({
+    adapter,
+    options: { host: '127.0.0.1', port: process.env.PORT ?? 3000 },
+    certificateOptions: { validity: 1, domains: '127.0.0.1', base: 'cert' },
+  });
+ 
+  await enabler.startServer().then((res) => {
+    console.log(`Server running in http://${res.host}:${res.port}`);
+  });
+}
+void bootstrap();
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/examples/nestjs/test/app.e2e-spec.ts b/examples/nestjs/test/app.e2e-spec.ts deleted file mode 100644 index 9e09fae..0000000 --- a/examples/nestjs/test/app.e2e-spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { INestApplication } from '@nestjs/common'; -import { TestingModule } from '@nestjs/testing'; -import { App } from 'supertest/types'; -import { Test } from '@nestjs/testing'; -import * as request from 'supertest'; -import { AppModule } from './../src/app.module'; - -describe('AppController (e2e)', () => { - let app: INestApplication; - - beforeEach(async () => { - const moduleFixture: TestingModule = await Test.createTestingModule({ - imports: [AppModule], - }).compile(); - - app = moduleFixture.createNestApplication(); - await app.init(); - }); - - it('/ (GET)', () => { - return request(app.getHttpServer()) - .get('/') - .expect(200) - .expect('Hello World!'); - }); -}); diff --git a/examples/nestjs/test/jest-e2e.json b/examples/nestjs/test/jest-e2e.json deleted file mode 100644 index e9d912f..0000000 --- a/examples/nestjs/test/jest-e2e.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "moduleFileExtensions": ["js", "json", "ts"], - "rootDir": ".", - "testEnvironment": "node", - "testRegex": ".e2e-spec.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - } -} diff --git a/examples/nestjs/tsconfig.build.json b/examples/nestjs/tsconfig.build.json deleted file mode 100644 index 64f86c6..0000000 --- a/examples/nestjs/tsconfig.build.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] -} diff --git a/examples/nestjs/tsconfig.json b/examples/nestjs/tsconfig.json deleted file mode 100644 index c2d27ee..0000000 --- a/examples/nestjs/tsconfig.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "compilerOptions": { - "incremental": true, - "target": "ES2023", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "baseUrl": "./", - "module": "commonjs", - "strictBindCallApply": false, - "strictNullChecks": true, - "noFallthroughCasesInSwitch": false, - "noImplicitAny": false, - "declaration": true, - "outDir": "./dist", - "removeComments": true, - "sourceMap": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "skipLibCheck": true - } -} diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..c1525b8 Binary files /dev/null and b/favicon.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..d6e8e0c --- /dev/null +++ b/index.html @@ -0,0 +1,611 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 11.17% + Statements + 644/5764 +
+ + +
+ 63.75% + Branches + 153/240 +
+ + +
+ 56.66% + Functions + 102/180 +
+ + +
+ 11.17% + Lines + 644/5764 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
examples/express +
+
0%0/250%0/10%0/10%0/25
examples/fastify +
+
0%0/280%0/10%0/10%0/28
examples/koa +
+
0%0/250%0/10%0/10%0/25
examples/nestjs/src +
+
0%0/4725%1/425%1/40%0/47
packages/adapters/express/dist +
+
0%0/3633.33%1/333.33%1/30%0/36
packages/adapters/express/src +
+
0%0/19100%1/1100%1/10%0/19
packages/adapters/fastify/dist +
+
0%0/2833.33%1/333.33%1/30%0/28
packages/adapters/fastify/src +
+
0%0/12100%1/1100%1/10%0/12
packages/adapters/koa/dist +
+
0%0/2233.33%1/333.33%1/30%0/22
packages/adapters/koa/src +
+
0%0/10100%1/1100%1/10%0/10
packages/adapters/nestjs/dist +
+
0%0/5733.33%1/333.33%1/30%0/57
packages/adapters/nestjs/src +
+
0%0/25100%1/1100%1/10%0/25
packages/colors/dist +
+
45.54%92/20275%9/1271.42%5/745.54%92/202
packages/colors/src +
+
0%0/11475%3/475%3/40%0/114
packages/core/dist +
+
0%0/44733.33%1/333.33%1/30%0/447
packages/core/src +
+
0%0/21171.42%5/771.42%5/70%0/211
packages/logger/dist +
+
24.05%332/138061.9%52/8469.81%37/5324.05%332/1380
packages/logger/src +
+
0%0/90100%1/1100%1/10%0/90
packages/logger/src/format +
+
0%0/9066.66%2/366.66%2/30%0/90
packages/logger/src/format/plugins +
+
0%0/38541.17%7/1741.17%7/170%0/385
packages/logger/src/transports +
+
0%0/9375%3/475%3/40%0/93
packages/logger/src/triple-beam +
+
0%0/90%0/10%0/10%0/9
packages/logger/src/triple-beam/config +
+
0%0/7475%3/475%3/40%0/74
packages/mkcert/dist +
+
0%0/4410%0/30%0/30%0/441
packages/mkcert/src +
+
100%202/20291.3%42/46100%10/10100%202/202
packages/utils/dist +
+
4.19%18/42950%2/412.5%2/164.19%18/429
packages/utils/src +
+
0%0/24133.33%2/633.33%2/60%0/241
scripts +
+
0%0/58100%1/1100%1/10%0/58
scripts/changelog +
+
0%0/8550%1/250%1/20%0/85
scripts/git-utils +
+
0%0/41033.33%1/333.33%1/30%0/410
scripts/monorepo +
+
0%0/48100%2/2100%2/20%0/48
scripts/publish +
+
0%0/206100%3/3100%3/30%0/206
scripts/utils +
+
0%0/20650%3/650%3/60%0/206
scripts/version +
+
0%0/9100%1/1100%1/10%0/9
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/lefthook.yaml b/lefthook.yaml deleted file mode 100644 index 84fdc9f..0000000 --- a/lefthook.yaml +++ /dev/null @@ -1,14 +0,0 @@ -# https://biomejs.dev/zh-cn/recipes/git-hooks/#lefthook - -# Use this to validate commit messages -commit-msg: - commands: - lint-commit-message: - run: npx commitlint --edit {1} - -pre-commit: - parallel: true - commands: - frontend-linter: - glob: '*.{js,jsx,ts,tsx,vue,md}' - run: npx eslint {staged_files} diff --git a/package.json b/package.json deleted file mode 100644 index 1ff11bc..0000000 --- a/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "https-enable", - "type": "module", - "private": true, - "sideEffects": false, - "scripts": { - "preinstall": "npx only-allow pnpm", - "prepare": "npx lefthook install", - "commit": "git-cz", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "clean:deps": "pnpm recursive exec -- rimraf node_modules && rimraf node_modules", - "dev": "pnpm run -r --parallel dev", - "build": "pnpm run -r build", - "test": "vitest", - "test:mkcert": "npm run test -- --project @https-enable/mkcert", - "test:coverage": "npm run test -- --coverage", - "ci:bumpp": "bumpp -r", - "ci:release": "tsx scripts/cli.ts", - "ci:publish": "tsx scripts/publish/cli.ts publish", - "ci:changelog": "tsx scripts/changelog/cli.ts" - }, - "devDependencies": { - "@antfu/eslint-config": "^4.1.1", - "@commitlint/cli": "^19.7.1", - "@commitlint/config-conventional": "^19.7.1", - "@https-enable/tsconfig": "workspace:*", - "@vitest/coverage-v8": "^3.0.6", - "axios": "^1.7.9", - "bumpp": "^10.0.3", - "commitizen": "^4.3.1", - "cz-git": "^1.11.0", - "eslint": "^9.20.0", - "jiti": "^2.4.2", - "lefthook": "^1.10.10", - "rimraf": "^6.0.1", - "tsx": "^4.19.3", - "typescript": "5.7.3", - "vitest": "^3.0.6" - }, - "config": { - "commitizen": { - "path": "node_modules/cz-git" - } - } -} diff --git a/packages/adapters/express/build.config.ts b/packages/adapters/express/build.config.ts deleted file mode 100644 index deabc07..0000000 --- a/packages/adapters/express/build.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - // inlineDependencies: false, - }, - failOnWarn: false, - externals: [], -}) diff --git a/packages/adapters/express/changelog.md b/packages/adapters/express/changelog.md deleted file mode 100644 index 6716e95..0000000 --- a/packages/adapters/express/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/adapter-express@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/adapter-express@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/adapter-express@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/adapter-express@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/adapter-express@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/adapter-express@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/adapter-express@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/adapter-express@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/adapters/express/dist/index.cjs.html b/packages/adapters/express/dist/index.cjs.html new file mode 100644 index 0000000..12d8533 --- /dev/null +++ b/packages/adapters/express/dist/index.cjs.html @@ -0,0 +1,151 @@ + + + + + + Code coverage report for packages/adapters/express/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/adapters/express/dist index.cjs

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const core = require('@https-enable/core');
+ 
+class ExpressHttpsAdapter extends core.HttpsAdapter {
+  constructor(app) {
+    super(app);
+  }
+  createMiddleware = (options) => {
+    return (req, res, next) => {
+      if (req.secure) {
+        next();
+      } else {
+        res.redirect(`https://${req.headers.host || req.url}`);
+      }
+    };
+  };
+  init;
+  onCertRenewed;
+}
+ 
+exports.ExpressHttpsAdapter = ExpressHttpsAdapter;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/express/dist/index.d.mts.html b/packages/adapters/express/dist/index.d.mts.html new file mode 100644 index 0000000..1b73ac0 --- /dev/null +++ b/packages/adapters/express/dist/index.d.mts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for packages/adapters/express/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/adapters/express/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpsAdapter, ServerOptions } from '@https-enable/core';
+import { Certificate } from '@https-enable/mkcert';
+import { Application, RequestHandler } from 'express';
+ 
+declare class ExpressHttpsAdapter extends HttpsAdapter<Application, RequestHandler> {
+    constructor(app: Application);
+    createMiddleware: (options: ServerOptions) => RequestHandler;
+    init?: () => Promise<Application>;
+    onCertRenewed?: (certificate: Certificate) => any;
+}
+ 
+export { ExpressHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/express/dist/index.html b/packages/adapters/express/dist/index.html new file mode 100644 index 0000000..ed51562 --- /dev/null +++ b/packages/adapters/express/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/adapters/express/dist + + + + + + + + + +
+
+

All files packages/adapters/express/dist

+
+ +
+ 0% + Statements + 0/36 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 0% + Lines + 0/36 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/190%0/10%0/10%0/19
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
0%0/170%0/10%0/10%0/17
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/express/dist/index.mjs.html b/packages/adapters/express/dist/index.mjs.html new file mode 100644 index 0000000..de2527b --- /dev/null +++ b/packages/adapters/express/dist/index.mjs.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for packages/adapters/express/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/adapters/express/dist index.mjs

+
+ +
+ 0% + Statements + 0/17 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpsAdapter } from '@https-enable/core';
+ 
+class ExpressHttpsAdapter extends HttpsAdapter {
+  constructor(app) {
+    super(app);
+  }
+  createMiddleware = (options) => {
+    return (req, res, next) => {
+      if (req.secure) {
+        next();
+      } else {
+        res.redirect(`https://${req.headers.host || req.url}`);
+      }
+    };
+  };
+  init;
+  onCertRenewed;
+}
+ 
+export { ExpressHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/express/package.json b/packages/adapters/express/package.json deleted file mode 100644 index f31cc40..0000000 --- a/packages/adapters/express/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@https-enable/adapter-express", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "peerDependencies": { - "@https-enable/core": "workspace:*", - "express": "*" - }, - "dependencies": { - "@https-enable/mkcert": "workspace:*" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/express": "^5.0.0", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/adapters/express/src/index.html b/packages/adapters/express/src/index.html new file mode 100644 index 0000000..3800fc7 --- /dev/null +++ b/packages/adapters/express/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for packages/adapters/express/src + + + + + + + + + +
+
+

All files packages/adapters/express/src

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/19100%1/1100%1/10%0/19
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/express/src/index.ts b/packages/adapters/express/src/index.ts deleted file mode 100644 index 7554855..0000000 --- a/packages/adapters/express/src/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* eslint-disable unused-imports/no-unused-vars */ -import type { ServerOptions } from '@https-enable/core' -import type { Certificate } from '@https-enable/mkcert' -import type { Application, RequestHandler } from 'express' -import { HttpsAdapter } from '@https-enable/core' - -export class ExpressHttpsAdapter extends HttpsAdapter { - constructor(app: Application) { - super(app) - } - - createMiddleware: (options: ServerOptions) => RequestHandler - = (options) => { - return (req, res, next) => { - if (req.secure) { - next() - } - else { - res.redirect(`https://${req.headers.host || req.url}`) - } - } - } - - init?: () => Promise - onCertRenewed?: (certificate: Certificate) => any -} diff --git a/packages/adapters/express/src/index.ts.html b/packages/adapters/express/src/index.ts.html new file mode 100644 index 0000000..15d5019 --- /dev/null +++ b/packages/adapters/express/src/index.ts.html @@ -0,0 +1,163 @@ + + + + + + Code coverage report for packages/adapters/express/src/index.ts + + + + + + + + + +
+
+

All files / packages/adapters/express/src index.ts

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable unused-imports/no-unused-vars */
+import type { ServerOptions } from '@https-enable/core'
+import type { Certificate } from '@https-enable/mkcert'
+import type { Application, RequestHandler } from 'express'
+import { HttpsAdapter } from '@https-enable/core'
+ 
+export class ExpressHttpsAdapter extends HttpsAdapter<Application, RequestHandler> {
+  constructor(app: Application) {
+    super(app)
+  }
+ 
+  createMiddleware: (options: ServerOptions) => RequestHandler
+    = (options) => {
+      return (req, res, next) => {
+        if (req.secure) {
+          next()
+        }
+        else {
+          res.redirect(`https://${req.headers.host || req.url}`)
+        }
+      }
+    }
+ 
+  init?: () => Promise<Application>
+  onCertRenewed?: (certificate: Certificate) => any
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/express/tsconfig.json b/packages/adapters/express/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/adapters/express/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/adapters/fastify/build.config.ts b/packages/adapters/fastify/build.config.ts deleted file mode 100644 index f5bbb78..0000000 --- a/packages/adapters/fastify/build.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - }, - failOnWarn: false, - externals: [], -}) diff --git a/packages/adapters/fastify/dist/index.cjs.html b/packages/adapters/fastify/dist/index.cjs.html new file mode 100644 index 0000000..3b0fb1b --- /dev/null +++ b/packages/adapters/fastify/dist/index.cjs.html @@ -0,0 +1,139 @@ + + + + + + Code coverage report for packages/adapters/fastify/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/adapters/fastify/dist index.cjs

+
+ +
+ 0% + Statements + 0/15 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const core = require('@https-enable/core');
+ 
+class FastifyHttpsAdapter extends core.HttpsAdapter {
+  constructor(fastifyInstance) {
+    super();
+    this.fastifyInstance = fastifyInstance;
+  }
+  init = async () => {
+    await this.fastifyInstance.ready();
+    return this.fastifyInstance.routing;
+  };
+  createMiddleware;
+  onCertRenewed;
+}
+ 
+exports.FastifyHttpsAdapter = FastifyHttpsAdapter;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/fastify/dist/index.d.mts.html b/packages/adapters/fastify/dist/index.d.mts.html new file mode 100644 index 0000000..eb7df7b --- /dev/null +++ b/packages/adapters/fastify/dist/index.d.mts.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for packages/adapters/fastify/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/adapters/fastify/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as http from 'http';
+import { HttpsAdapter, ServerOptions } from '@https-enable/core';
+import { Certificate } from '@https-enable/mkcert';
+import { FastifyInstance } from 'fastify';
+ 
+type FastifyApp = FastifyInstance['routing'];
+declare class FastifyHttpsAdapter extends HttpsAdapter<FastifyApp> {
+    fastifyInstance: FastifyInstance;
+    constructor(fastifyInstance: FastifyInstance);
+    init: () => Promise<(req: http.IncomingMessage, res: http.ServerResponse<http.IncomingMessage>) => void>;
+    createMiddleware?: ((options: ServerOptions) => any) | undefined;
+    onCertRenewed?: ((certificate: Certificate) => any) | undefined;
+}
+ 
+export { FastifyHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/fastify/dist/index.html b/packages/adapters/fastify/dist/index.html new file mode 100644 index 0000000..0d69775 --- /dev/null +++ b/packages/adapters/fastify/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/adapters/fastify/dist + + + + + + + + + +
+
+

All files packages/adapters/fastify/dist

+
+ +
+ 0% + Statements + 0/28 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 0% + Lines + 0/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/150%0/10%0/10%0/15
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
0%0/130%0/10%0/10%0/13
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/fastify/dist/index.mjs.html b/packages/adapters/fastify/dist/index.mjs.html new file mode 100644 index 0000000..5fd0a5b --- /dev/null +++ b/packages/adapters/fastify/dist/index.mjs.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for packages/adapters/fastify/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/adapters/fastify/dist index.mjs

+
+ +
+ 0% + Statements + 0/13 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpsAdapter } from '@https-enable/core';
+ 
+class FastifyHttpsAdapter extends HttpsAdapter {
+  constructor(fastifyInstance) {
+    super();
+    this.fastifyInstance = fastifyInstance;
+  }
+  init = async () => {
+    await this.fastifyInstance.ready();
+    return this.fastifyInstance.routing;
+  };
+  createMiddleware;
+  onCertRenewed;
+}
+ 
+export { FastifyHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/fastify/package.json b/packages/adapters/fastify/package.json deleted file mode 100644 index 525414b..0000000 --- a/packages/adapters/fastify/package.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "@https-enable/adapter-fastify", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "peerDependencies": { - "@https-enable/core": "workspace:*", - "fastify": "*" - }, - "dependencies": { - "@https-enable/mkcert": "workspace:*" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/adapters/fastify/src/index.html b/packages/adapters/fastify/src/index.html new file mode 100644 index 0000000..6ff6eae --- /dev/null +++ b/packages/adapters/fastify/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for packages/adapters/fastify/src + + + + + + + + + +
+
+

All files packages/adapters/fastify/src

+
+ +
+ 0% + Statements + 0/12 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/12100%1/1100%1/10%0/12
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/fastify/src/index.ts b/packages/adapters/fastify/src/index.ts deleted file mode 100644 index 660f11c..0000000 --- a/packages/adapters/fastify/src/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { ServerOptions } from '@https-enable/core' -import type { Certificate } from '@https-enable/mkcert' -import type { FastifyInstance } from 'fastify' -import { HttpsAdapter } from '@https-enable/core' - -type FastifyApp = FastifyInstance['routing'] - -export class FastifyHttpsAdapter extends HttpsAdapter { - constructor(public fastifyInstance: FastifyInstance) { - super() - } - - init = async () => { - await this.fastifyInstance.ready() - return this.fastifyInstance.routing - } - - createMiddleware?: ((options: ServerOptions) => any) | undefined - onCertRenewed?: ((certificate: Certificate) => any) | undefined -} diff --git a/packages/adapters/fastify/src/index.ts.html b/packages/adapters/fastify/src/index.ts.html new file mode 100644 index 0000000..8c96dd0 --- /dev/null +++ b/packages/adapters/fastify/src/index.ts.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for packages/adapters/fastify/src/index.ts + + + + + + + + + +
+
+

All files / packages/adapters/fastify/src index.ts

+
+ +
+ 0% + Statements + 0/12 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ServerOptions } from '@https-enable/core'
+import type { Certificate } from '@https-enable/mkcert'
+import type { FastifyInstance } from 'fastify'
+import { HttpsAdapter } from '@https-enable/core'
+ 
+type FastifyApp = FastifyInstance['routing']
+ 
+export class FastifyHttpsAdapter extends HttpsAdapter<FastifyApp> {
+  constructor(public fastifyInstance: FastifyInstance) {
+    super()
+  }
+ 
+  init = async () => {
+    await this.fastifyInstance.ready()
+    return this.fastifyInstance.routing
+  }
+ 
+  createMiddleware?: ((options: ServerOptions) => any) | undefined
+  onCertRenewed?: ((certificate: Certificate) => any) | undefined
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/fastify/tsconfig.json b/packages/adapters/fastify/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/adapters/fastify/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/adapters/koa/build.config.ts b/packages/adapters/koa/build.config.ts deleted file mode 100644 index f5bbb78..0000000 --- a/packages/adapters/koa/build.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - }, - failOnWarn: false, - externals: [], -}) diff --git a/packages/adapters/koa/dist/index.cjs.html b/packages/adapters/koa/dist/index.cjs.html new file mode 100644 index 0000000..325f6fc --- /dev/null +++ b/packages/adapters/koa/dist/index.cjs.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for packages/adapters/koa/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/adapters/koa/dist index.cjs

+
+ +
+ 0% + Statements + 0/12 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const core = require('@https-enable/core');
+ 
+class KoaHttpsAdapter extends core.HttpsAdapter {
+  constructor(app) {
+    super();
+    this.app = app.callback();
+  }
+  init;
+  createMiddleware;
+  onCertRenewed;
+}
+ 
+exports.KoaHttpsAdapter = KoaHttpsAdapter;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/koa/dist/index.d.mts.html b/packages/adapters/koa/dist/index.d.mts.html new file mode 100644 index 0000000..e8c39dc --- /dev/null +++ b/packages/adapters/koa/dist/index.d.mts.html @@ -0,0 +1,127 @@ + + + + + + Code coverage report for packages/adapters/koa/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/adapters/koa/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpsAdapter, ServerOptions } from '@https-enable/core';
+import { Certificate } from '@https-enable/mkcert';
+import Koa from 'koa';
+ 
+type KoaApp = Koa<Koa.DefaultState, Koa.DefaultContext>;
+type Callback = ReturnType<KoaApp['callback']>;
+declare class KoaHttpsAdapter extends HttpsAdapter<Callback> {
+    constructor(app: KoaApp);
+    init?: () => Promise<Callback>;
+    createMiddleware?: (options: ServerOptions) => any;
+    onCertRenewed?: (certificate: Certificate) => any;
+}
+ 
+export { KoaHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/koa/dist/index.html b/packages/adapters/koa/dist/index.html new file mode 100644 index 0000000..c9662c4 --- /dev/null +++ b/packages/adapters/koa/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/adapters/koa/dist + + + + + + + + + +
+
+

All files packages/adapters/koa/dist

+
+ +
+ 0% + Statements + 0/22 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 0% + Lines + 0/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/120%0/10%0/10%0/12
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
0%0/100%0/10%0/10%0/10
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/koa/dist/index.mjs.html b/packages/adapters/koa/dist/index.mjs.html new file mode 100644 index 0000000..fb99f96 --- /dev/null +++ b/packages/adapters/koa/dist/index.mjs.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for packages/adapters/koa/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/adapters/koa/dist index.mjs

+
+ +
+ 0% + Statements + 0/10 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpsAdapter } from '@https-enable/core';
+ 
+class KoaHttpsAdapter extends HttpsAdapter {
+  constructor(app) {
+    super();
+    this.app = app.callback();
+  }
+  init;
+  createMiddleware;
+  onCertRenewed;
+}
+ 
+export { KoaHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/koa/package.json b/packages/adapters/koa/package.json deleted file mode 100644 index 3bf71f7..0000000 --- a/packages/adapters/koa/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@https-enable/adapter-koa", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "peerDependencies": { - "@https-enable/core": "workspace:*", - "koa": "*" - }, - "dependencies": { - "@https-enable/mkcert": "workspace:*" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/koa": "^2.15.0", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/adapters/koa/src/index.html b/packages/adapters/koa/src/index.html new file mode 100644 index 0000000..3acbb44 --- /dev/null +++ b/packages/adapters/koa/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for packages/adapters/koa/src + + + + + + + + + +
+
+

All files packages/adapters/koa/src

+
+ +
+ 0% + Statements + 0/10 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/10100%1/1100%1/10%0/10
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/koa/src/index.ts b/packages/adapters/koa/src/index.ts deleted file mode 100644 index cacd465..0000000 --- a/packages/adapters/koa/src/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { ServerOptions } from '@https-enable/core' -import type { Certificate } from '@https-enable/mkcert' -import type Koa from 'koa' -import { HttpsAdapter } from '@https-enable/core' - -type KoaApp = Koa -type Callback = ReturnType - -export class KoaHttpsAdapter extends HttpsAdapter { - constructor(app: KoaApp) { - super() - this.app = app.callback() - } - - init?: () => Promise - createMiddleware?: (options: ServerOptions) => any - onCertRenewed?: (certificate: Certificate) => any -} diff --git a/packages/adapters/koa/src/index.ts.html b/packages/adapters/koa/src/index.ts.html new file mode 100644 index 0000000..ecf8cc4 --- /dev/null +++ b/packages/adapters/koa/src/index.ts.html @@ -0,0 +1,139 @@ + + + + + + Code coverage report for packages/adapters/koa/src/index.ts + + + + + + + + + +
+
+

All files / packages/adapters/koa/src index.ts

+
+ +
+ 0% + Statements + 0/10 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ServerOptions } from '@https-enable/core'
+import type { Certificate } from '@https-enable/mkcert'
+import type Koa from 'koa'
+import { HttpsAdapter } from '@https-enable/core'
+ 
+type KoaApp = Koa<Koa.DefaultState, Koa.DefaultContext>
+type Callback = ReturnType<KoaApp['callback']>
+ 
+export class KoaHttpsAdapter extends HttpsAdapter<Callback> {
+  constructor(app: KoaApp) {
+    super()
+    this.app = app.callback()
+  }
+ 
+  init?: () => Promise<Callback>
+  createMiddleware?: (options: ServerOptions) => any
+  onCertRenewed?: (certificate: Certificate) => any
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/koa/tsconfig.json b/packages/adapters/koa/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/adapters/koa/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/adapters/nestjs/build.config.ts b/packages/adapters/nestjs/build.config.ts deleted file mode 100644 index 75f10c9..0000000 --- a/packages/adapters/nestjs/build.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - // inlineDependencies: false, - }, - failOnWarn: false, - externals: [ - 'express', - ], -}) diff --git a/packages/adapters/nestjs/dist/index.cjs.html b/packages/adapters/nestjs/dist/index.cjs.html new file mode 100644 index 0000000..6a08228 --- /dev/null +++ b/packages/adapters/nestjs/dist/index.cjs.html @@ -0,0 +1,184 @@ + + + + + + Code coverage report for packages/adapters/nestjs/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/adapters/nestjs/dist index.cjs

+
+ +
+ 0% + Statements + 0/30 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/30 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const core = require('@https-enable/core');
+ 
+class NestJsExpressHttpsAdapter extends core.HttpsAdapter {
+  constructor(nestApp) {
+    super();
+    this.nestApp = nestApp;
+  }
+  init = async () => {
+    await this.nestApp.init();
+    return this.nestApp.getHttpAdapter().getInstance();
+  };
+  createMiddleware;
+  onCertRenewed;
+}
+class NestJsFastifyHttpsAdapter extends core.HttpsAdapter {
+  constructor(nestApp) {
+    super();
+    this.nestApp = nestApp;
+  }
+  init = async () => {
+    await this.nestApp.init();
+    const fastifyApp = this.nestApp.getHttpAdapter().getInstance();
+    await fastifyApp.ready();
+    return fastifyApp.routing;
+  };
+  createMiddleware;
+  onCertRenewed;
+}
+ 
+exports.NestJsExpressHttpsAdapter = NestJsExpressHttpsAdapter;
+exports.NestJsFastifyHttpsAdapter = NestJsFastifyHttpsAdapter;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/nestjs/dist/index.d.mts.html b/packages/adapters/nestjs/dist/index.d.mts.html new file mode 100644 index 0000000..effb226 --- /dev/null +++ b/packages/adapters/nestjs/dist/index.d.mts.html @@ -0,0 +1,157 @@ + + + + + + Code coverage report for packages/adapters/nestjs/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/adapters/nestjs/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as http from 'http';
+import * as express from 'express';
+import { HttpsAdapter, ServerOptions } from '@https-enable/core';
+import { NestExpressApplication } from '@nestjs/platform-express';
+import { NestFastifyApplication } from '@nestjs/platform-fastify';
+ 
+type ExpressApp = ReturnType<ReturnType<NestExpressApplication['getHttpAdapter']>['getInstance']>;
+declare class NestJsExpressHttpsAdapter extends HttpsAdapter<ExpressApp> {
+    nestApp: NestExpressApplication;
+    constructor(nestApp: NestExpressApplication);
+    init: () => Promise<express.Express>;
+    createMiddleware?: (options: ServerOptions) => any;
+    onCertRenewed?: any;
+}
+type FastifyApp = ReturnType<ReturnType<NestFastifyApplication['getHttpAdapter']>['getInstance']>['routing'];
+declare class NestJsFastifyHttpsAdapter extends HttpsAdapter<FastifyApp, any> {
+    nestApp: NestFastifyApplication;
+    constructor(nestApp: NestFastifyApplication);
+    init: () => Promise<(req: http.IncomingMessage, res: http.ServerResponse<http.IncomingMessage>) => void>;
+    createMiddleware?: (options: ServerOptions) => any;
+    onCertRenewed?: any;
+}
+ 
+export { NestJsExpressHttpsAdapter, NestJsFastifyHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/nestjs/dist/index.html b/packages/adapters/nestjs/dist/index.html new file mode 100644 index 0000000..2bfe7e7 --- /dev/null +++ b/packages/adapters/nestjs/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/adapters/nestjs/dist + + + + + + + + + +
+
+

All files packages/adapters/nestjs/dist

+
+ +
+ 0% + Statements + 0/57 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 0% + Lines + 0/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/300%0/10%0/10%0/30
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
0%0/270%0/10%0/10%0/27
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/nestjs/dist/index.mjs.html b/packages/adapters/nestjs/dist/index.mjs.html new file mode 100644 index 0000000..29b5336 --- /dev/null +++ b/packages/adapters/nestjs/dist/index.mjs.html @@ -0,0 +1,175 @@ + + + + + + Code coverage report for packages/adapters/nestjs/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/adapters/nestjs/dist index.mjs

+
+ +
+ 0% + Statements + 0/27 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { HttpsAdapter } from '@https-enable/core';
+ 
+class NestJsExpressHttpsAdapter extends HttpsAdapter {
+  constructor(nestApp) {
+    super();
+    this.nestApp = nestApp;
+  }
+  init = async () => {
+    await this.nestApp.init();
+    return this.nestApp.getHttpAdapter().getInstance();
+  };
+  createMiddleware;
+  onCertRenewed;
+}
+class NestJsFastifyHttpsAdapter extends HttpsAdapter {
+  constructor(nestApp) {
+    super();
+    this.nestApp = nestApp;
+  }
+  init = async () => {
+    await this.nestApp.init();
+    const fastifyApp = this.nestApp.getHttpAdapter().getInstance();
+    await fastifyApp.ready();
+    return fastifyApp.routing;
+  };
+  createMiddleware;
+  onCertRenewed;
+}
+ 
+export { NestJsExpressHttpsAdapter, NestJsFastifyHttpsAdapter };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/nestjs/package.json b/packages/adapters/nestjs/package.json deleted file mode 100644 index e4f1743..0000000 --- a/packages/adapters/nestjs/package.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "@https-enable/adapter-nestjs", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "peerDependencies": { - "@https-enable/core": "workspace:*", - "@nestjs/common": "*", - "@nestjs/core": "*", - "@nestjs/platform-express": "*", - "@nestjs/platform-fastify": "*", - "@types/express": "*" - }, - "dependencies": { - "@https-enable/mkcert": "workspace:*" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/express": "^5.0.0", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/adapters/nestjs/src/index.html b/packages/adapters/nestjs/src/index.html new file mode 100644 index 0000000..b1c5f95 --- /dev/null +++ b/packages/adapters/nestjs/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for packages/adapters/nestjs/src + + + + + + + + + +
+
+

All files packages/adapters/nestjs/src

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/25100%1/1100%1/10%0/25
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/nestjs/src/index.ts b/packages/adapters/nestjs/src/index.ts deleted file mode 100644 index ef9effa..0000000 --- a/packages/adapters/nestjs/src/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { ServerOptions } from '@https-enable/core' -import type { NestExpressApplication } from '@nestjs/platform-express' -import type { NestFastifyApplication } from '@nestjs/platform-fastify' -import { HttpsAdapter } from '@https-enable/core' - -type ExpressApp = ReturnType['getInstance']> -export class NestJsExpressHttpsAdapter extends HttpsAdapter { - constructor(public nestApp: NestExpressApplication) { - super() - } - - init = async () => { - await this.nestApp.init() - return this.nestApp.getHttpAdapter().getInstance() - } - - createMiddleware?: (options: ServerOptions) => any - onCertRenewed?: any -} - -type FastifyApp = ReturnType['getInstance']>['routing'] -export class NestJsFastifyHttpsAdapter extends HttpsAdapter { - constructor(public nestApp: NestFastifyApplication) { - super() - } - - init = async () => { - await this.nestApp.init() - const fastifyApp = this.nestApp.getHttpAdapter().getInstance() - await fastifyApp.ready() - return fastifyApp.routing - } - - createMiddleware?: (options: ServerOptions) => any - onCertRenewed?: any -} diff --git a/packages/adapters/nestjs/src/index.ts.html b/packages/adapters/nestjs/src/index.ts.html new file mode 100644 index 0000000..0c130d4 --- /dev/null +++ b/packages/adapters/nestjs/src/index.ts.html @@ -0,0 +1,193 @@ + + + + + + Code coverage report for packages/adapters/nestjs/src/index.ts + + + + + + + + + +
+
+

All files / packages/adapters/nestjs/src index.ts

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ServerOptions } from '@https-enable/core'
+import type { NestExpressApplication } from '@nestjs/platform-express'
+import type { NestFastifyApplication } from '@nestjs/platform-fastify'
+import { HttpsAdapter } from '@https-enable/core'
+ 
+type ExpressApp = ReturnType<ReturnType<NestExpressApplication['getHttpAdapter']>['getInstance']>
+export class NestJsExpressHttpsAdapter extends HttpsAdapter<ExpressApp> {
+  constructor(public nestApp: NestExpressApplication) {
+    super()
+  }
+ 
+  init = async () => {
+    await this.nestApp.init()
+    return this.nestApp.getHttpAdapter().getInstance()
+  }
+ 
+  createMiddleware?: (options: ServerOptions) => any
+  onCertRenewed?: any
+}
+ 
+type FastifyApp = ReturnType<ReturnType<NestFastifyApplication['getHttpAdapter']>['getInstance']>['routing']
+export class NestJsFastifyHttpsAdapter extends HttpsAdapter<FastifyApp, any> {
+  constructor(public nestApp: NestFastifyApplication) {
+    super()
+  }
+ 
+  init = async () => {
+    await this.nestApp.init()
+    const fastifyApp = this.nestApp.getHttpAdapter().getInstance()
+    await fastifyApp.ready()
+    return fastifyApp.routing
+  }
+ 
+  createMiddleware?: (options: ServerOptions) => any
+  onCertRenewed?: any
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/adapters/nestjs/tsconfig.json b/packages/adapters/nestjs/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/adapters/nestjs/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/colors/build.config.ts b/packages/colors/build.config.ts deleted file mode 100644 index 2d7b2f7..0000000 --- a/packages/colors/build.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: false, - }, - failOnWarn: false, - // 声明隐式外部依赖(消除构建时警告) - externals: [ - '@https-enable/types', - ], -}) diff --git a/packages/colors/changelog.md b/packages/colors/changelog.md deleted file mode 100644 index 945d831..0000000 --- a/packages/colors/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/colors@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/colors@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/colors@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/colors@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/colors@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/colors@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/colors@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/colors@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/colors/dist/index.cjs.html b/packages/colors/dist/index.cjs.html new file mode 100644 index 0000000..5bc0f63 --- /dev/null +++ b/packages/colors/dist/index.cjs.html @@ -0,0 +1,412 @@ + + + + + + Code coverage report for packages/colors/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/colors/dist index.cjs

+
+ +
+ 0% + Statements + 0/104 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/104 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const defaultFG = 39;
+const defaultBG = 49;
+const colors = {
+  black: {
+    normal: { fg: 30, bg: 40 }
+  },
+  red: {
+    normal: { fg: 31, bg: 41 },
+    bright: { fg: 91, bg: 101 }
+  },
+  green: {
+    normal: { fg: 32, bg: 42 },
+    bright: { fg: 92, bg: 102 }
+  },
+  yellow: {
+    normal: { fg: 33, bg: 43 },
+    bright: { fg: 93, bg: 103 }
+  },
+  blue: {
+    normal: { fg: 34, bg: 44 },
+    bright: { fg: 94, bg: 104 }
+  },
+  magenta: {
+    normal: { fg: 35, bg: 45 },
+    bright: { fg: 95, bg: 105 }
+  },
+  cyan: {
+    normal: { fg: 36, bg: 46 },
+    bright: { fg: 96, bg: 106 }
+  },
+  white: {
+    normal: { fg: 37, bg: 47 },
+    bright: { fg: 97, bg: 107 }
+  },
+  gray: {
+    normal: { fg: 90, bg: 100 }
+  },
+  grey: {
+    normal: { fg: 90, bg: 100 }
+  }
+};
+function createEntry(code, resetCode) {
+  return {
+    open: `\x1B[${code}m`,
+    close: `\x1B[${resetCode}m`
+  };
+}
+function buildColorStyles() {
+  return Object.entries(colors).reduce((acc, [name, variants]) => {
+    const colorName = name;
+    const capitalized = colorName[0]?.toUpperCase() + colorName.slice(1);
+    acc[colorName] = createEntry(variants.normal.fg, defaultFG);
+    if ("bright" in variants) {
+      const brightKey = `bright${capitalized}`;
+      acc[brightKey] = createEntry(variants.bright.fg, defaultFG);
+    }
+    const bgKey = `bg${capitalized}`;
+    acc[bgKey] = createEntry(variants.normal.bg, defaultBG);
+    if ("bright" in variants) {
+      const bgBrightKey = `bgBright${capitalized}`;
+      acc[bgBrightKey] = createEntry(variants.bright.bg, defaultBG);
+    }
+    return acc;
+  }, {});
+}
+const styles = {
+  // 基础样式
+  reset: createEntry(0, 0),
+  bold: createEntry(1, 22),
+  dim: createEntry(2, 22),
+  italic: createEntry(3, 23),
+  underline: createEntry(4, 24),
+  blink: createEntry(5, 25),
+  // Swap foreground and background colors
+  inverse: createEntry(7, 27),
+  hidden: createEntry(8, 28),
+  strikethrough: createEntry(9, 29),
+  doubleunderline: createEntry(21, 24),
+  framed: createEntry(51, 54),
+  overlined: createEntry(53, 55),
+  // 动态生成颜色样式
+  ...buildColorStyles()
+};
+ 
+const ansiRegStr = "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-\\w/#&.:=?%@~]+)+|[a-zA-Z\\d]+(?:;[-\\w/#&.:=?%@~]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))";
+ 
+function ansiRegex({ onlyFirst = false } = {}) {
+  return new RegExp(ansiRegStr, onlyFirst ? void 0 : "g");
+}
+const regex = ansiRegex();
+function stripAnsi(string) {
+  if (typeof string !== "string") {
+    throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
+  }
+  return string.replace(regex, "");
+}
+ 
+function styleText(format, text) {
+  const formats = Array.isArray(format) ? format : [format];
+  return formats.reverse().reduce((str, style) => `${styles[style].open}${str}${styles[style].close}`, text);
+}
+ 
+exports.ansiRegStr = ansiRegStr;
+exports.ansiRegex = ansiRegex;
+exports.stripAnsi = stripAnsi;
+exports.styleText = styleText;
+exports.styles = styles;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/dist/index.d.mts.html b/packages/colors/dist/index.d.mts.html new file mode 100644 index 0000000..f85770b --- /dev/null +++ b/packages/colors/dist/index.d.mts.html @@ -0,0 +1,334 @@ + + + + + + Code coverage report for packages/colors/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/colors/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Prettify } from '@https-enable/types';
+ 
+// ================= 类型定义层 =================
+interface StyleEntry { open: string, close: string }
+ 
+// 基础颜色类型(支持是否包含亮色)
+type ColorDefinition<HasBright extends boolean = true> = {
+  normal: { fg: number, bg: number }
+} & (HasBright extends true ? { bright: { fg: number, bg: number } } : unknown)
+ 
+// 颜色配置模板
+interface ColorScheme {
+  black: ColorDefinition<false> // 示例:黑色没有亮色
+  red: Prettify<ColorDefinition>
+  green: Prettify<ColorDefinition>
+  yellow: Prettify<ColorDefinition>
+  blue: Prettify<ColorDefinition>
+  magenta: Prettify<ColorDefinition>
+  cyan: Prettify<ColorDefinition>
+  white: Prettify<ColorDefinition>
+  gray: ColorDefinition<false>
+  grey: ColorDefinition<false>
+}
+ 
+// ================= 生成工具类型 =================
+type ColorName = Prettify<keyof ColorScheme>
+// 判断颜色是否包含亮色版本
+type HasBright<T extends ColorName> = 'bright' extends keyof ColorScheme[T] ? true : false
+ 
+// 生成颜色键名(自动处理亮色)
+type ColorKeys<T extends ColorName> =
+  T | (HasBright<T> extends true ? `bright${Capitalize<T>}` : never)
+ 
+// 生成背景色键名(自动处理亮色)
+type BackgroundKeys<T extends ColorName> =
+  `bg${Capitalize<T>}` | (HasBright<T> extends true ? `bgBright${Capitalize<T>}` : never)
+ 
+// 联合所有可能的键名
+type AllColorKeys = Prettify<{
+  [K in ColorName]: ColorKeys<K> | BackgroundKeys<K>;
+}[ColorName]>
+ 
+interface StyleType {
+  reset: StyleEntry
+  // 基础样式
+  bold: StyleEntry
+  dim: StyleEntry
+  italic: StyleEntry
+  underline: StyleEntry
+  blink: StyleEntry
+  inverse: StyleEntry
+  hidden: StyleEntry
+  strikethrough: StyleEntry
+  doubleunderline: StyleEntry
+  framed: StyleEntry
+  overlined: StyleEntry
+}
+ 
+type ColorType = {
+  // 动态颜色类型
+  [K in AllColorKeys]: StyleEntry;
+}
+ 
+type FormatKeys = Prettify<keyof StyleType | AllColorKeys>
+ 
+declare function ansiRegex({ onlyFirst }?: {
+    onlyFirst?: boolean | undefined;
+}): RegExp;
+declare function stripAnsi(string: string): string;
+ 
+declare const ansiRegStr: string;
+ 
+declare const styles: Prettify<StyleType & ColorType>;
+ 
+/**
+ * 给文本添加 ANSI 转义序列样式(递归版本)
+ * @param format - 单个样式或样式数组
+ * @param text - 需要格式化的文本
+ * @returns 带有 ANSI 转义序列的格式化文本
+ */
+declare function styleText(format: FormatKeys | FormatKeys[], text: string): string;
+ 
+export { type AllColorKeys, type ColorName, type ColorScheme, type ColorType, type FormatKeys, type StyleEntry, type StyleType, ansiRegStr, ansiRegex, stripAnsi, styleText, styles };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/dist/index.html b/packages/colors/dist/index.html new file mode 100644 index 0000000..54e04bf --- /dev/null +++ b/packages/colors/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/colors/dist + + + + + + + + + +
+
+

All files packages/colors/dist

+
+ +
+ 45.54% + Statements + 92/202 +
+ + +
+ 75% + Branches + 9/12 +
+ + +
+ 71.42% + Functions + 5/7 +
+ + +
+ 45.54% + Lines + 92/202 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/1040%0/10%0/10%0/104
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
93.87%92/9880%8/1080%4/593.87%92/98
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/dist/index.mjs.html b/packages/colors/dist/index.mjs.html new file mode 100644 index 0000000..18c2194 --- /dev/null +++ b/packages/colors/dist/index.mjs.html @@ -0,0 +1,394 @@ + + + + + + Code coverage report for packages/colors/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/colors/dist index.mjs

+
+ +
+ 93.87% + Statements + 92/98 +
+ + +
+ 80% + Branches + 8/10 +
+ + +
+ 80% + Functions + 4/5 +
+ + +
+ 93.87% + Lines + 92/98 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +1041x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +92x +92x +92x +92x +92x +92x +2x +2x +20x +20x +20x +20x +14x +14x +14x +20x +20x +20x +14x +14x +14x +20x +2x +2x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +1x +  +2x +2x +2x +1x +  +  +  +  +  +  +  +38x +38x +38x +38x +  +  + 
const defaultFG = 39;
+const defaultBG = 49;
+const colors = {
+  black: {
+    normal: { fg: 30, bg: 40 }
+  },
+  red: {
+    normal: { fg: 31, bg: 41 },
+    bright: { fg: 91, bg: 101 }
+  },
+  green: {
+    normal: { fg: 32, bg: 42 },
+    bright: { fg: 92, bg: 102 }
+  },
+  yellow: {
+    normal: { fg: 33, bg: 43 },
+    bright: { fg: 93, bg: 103 }
+  },
+  blue: {
+    normal: { fg: 34, bg: 44 },
+    bright: { fg: 94, bg: 104 }
+  },
+  magenta: {
+    normal: { fg: 35, bg: 45 },
+    bright: { fg: 95, bg: 105 }
+  },
+  cyan: {
+    normal: { fg: 36, bg: 46 },
+    bright: { fg: 96, bg: 106 }
+  },
+  white: {
+    normal: { fg: 37, bg: 47 },
+    bright: { fg: 97, bg: 107 }
+  },
+  gray: {
+    normal: { fg: 90, bg: 100 }
+  },
+  grey: {
+    normal: { fg: 90, bg: 100 }
+  }
+};
+function createEntry(code, resetCode) {
+  return {
+    open: `\x1B[${code}m`,
+    close: `\x1B[${resetCode}m`
+  };
+}
+function buildColorStyles() {
+  return Object.entries(colors).reduce((acc, [name, variants]) => {
+    const colorName = name;
+    const capitalized = colorName[0]?.toUpperCase() + colorName.slice(1);
+    acc[colorName] = createEntry(variants.normal.fg, defaultFG);
+    if ("bright" in variants) {
+      const brightKey = `bright${capitalized}`;
+      acc[brightKey] = createEntry(variants.bright.fg, defaultFG);
+    }
+    const bgKey = `bg${capitalized}`;
+    acc[bgKey] = createEntry(variants.normal.bg, defaultBG);
+    if ("bright" in variants) {
+      const bgBrightKey = `bgBright${capitalized}`;
+      acc[bgBrightKey] = createEntry(variants.bright.bg, defaultBG);
+    }
+    return acc;
+  }, {});
+}
+const styles = {
+  // 基础样式
+  reset: createEntry(0, 0),
+  bold: createEntry(1, 22),
+  dim: createEntry(2, 22),
+  italic: createEntry(3, 23),
+  underline: createEntry(4, 24),
+  blink: createEntry(5, 25),
+  // Swap foreground and background colors
+  inverse: createEntry(7, 27),
+  hidden: createEntry(8, 28),
+  strikethrough: createEntry(9, 29),
+  doubleunderline: createEntry(21, 24),
+  framed: createEntry(51, 54),
+  overlined: createEntry(53, 55),
+  // 动态生成颜色样式
+  ...buildColorStyles()
+};
+ 
+const ansiRegStr = "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-\\w/#&.:=?%@~]+)+|[a-zA-Z\\d]+(?:;[-\\w/#&.:=?%@~]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))";
+ 
+function ansiRegex({ onlyFirst = false } = {}) {
+  return new RegExp(ansiRegStr, onlyFirst ? void 0 : "g");
+}
+const regex = ansiRegex();
+function stripAnsi(string) {
+  if (typeof string !== "string") {
+    throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
+  }
+  return string.replace(regex, "");
+}
+ 
+function styleText(format, text) {
+  const formats = Array.isArray(format) ? format : [format];
+  return formats.reverse().reduce((str, style) => `${styles[style].open}${str}${styles[style].close}`, text);
+}
+ 
+export { ansiRegStr, ansiRegex, stripAnsi, styleText, styles };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/package.json b/packages/colors/package.json deleted file mode 100644 index af54f46..0000000 --- a/packages/colors/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@https-enable/colors", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/colors/readme.md b/packages/colors/readme.md deleted file mode 100644 index c01baa1..0000000 --- a/packages/colors/readme.md +++ /dev/null @@ -1 +0,0 @@ -# @https-enable/colors diff --git a/packages/colors/src/common.ts b/packages/colors/src/common.ts deleted file mode 100644 index 0335545..0000000 --- a/packages/colors/src/common.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ansiRegStr } from './constants' - -export function ansiRegex({ onlyFirst = false } = {}) { - return new RegExp(ansiRegStr, onlyFirst ? undefined : 'g') -} - -// See: https://github.com/chalk/strip-ansi/blob/main/index.js -// See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js#L2471~L2478 -const regex = ansiRegex() -export function stripAnsi(string: string) { - if (typeof string !== 'string') { - throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``) - } - - // Even though the regex is global, we don't need to reset the `.lastIndex` - // because unlike `.exec()` and `.test()`, `.replace()` does it automatically - // and doing it manually has a performance penalty. - return string.replace(regex, '') -} diff --git a/packages/colors/src/common.ts.html b/packages/colors/src/common.ts.html new file mode 100644 index 0000000..d11b86a --- /dev/null +++ b/packages/colors/src/common.ts.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for packages/colors/src/common.ts + + + + + + + + + +
+
+

All files / packages/colors/src common.ts

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { ansiRegStr } from './constants'
+ 
+export function ansiRegex({ onlyFirst = false } = {}) {
+  return new RegExp(ansiRegStr, onlyFirst ? undefined : 'g')
+}
+ 
+// See: https://github.com/chalk/strip-ansi/blob/main/index.js
+// See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js#L2471~L2478
+const regex = ansiRegex()
+export function stripAnsi(string: string) {
+  if (typeof string !== 'string') {
+    throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``)
+  }
+ 
+  // Even though the regex is global, we don't need to reset the `.lastIndex`
+  // because unlike `.exec()` and `.test()`, `.replace()` does it automatically
+  // and doing it manually has a performance penalty.
+  return string.replace(regex, '')
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/src/constants.ts b/packages/colors/src/constants.ts deleted file mode 100644 index ebf1b42..0000000 --- a/packages/colors/src/constants.ts +++ /dev/null @@ -1,7 +0,0 @@ -// See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js#L262~L273 -export const ansiRegStr = '[\\u001B\\u009B][[\\]()#;?]*' - + '(?:(?:(?:(?:;[-\\w/#&.:=?%@~]+)+' - + '|[a-zA-Z\\d]+(?:;[-\\w/#&.:=?%@~]*)*)?' - + '(?:\\u0007|\\u001B\\u005C|\\u009C))' - + '|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?' - + '[\\dA-PR-TZcf-nq-uy=><~]))' diff --git a/packages/colors/src/constants.ts.html b/packages/colors/src/constants.ts.html new file mode 100644 index 0000000..f35abb9 --- /dev/null +++ b/packages/colors/src/constants.ts.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for packages/colors/src/constants.ts + + + + + + + + + +
+
+

All files / packages/colors/src constants.ts

+
+ +
+ 0% + Statements + 0/1 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8  +  +  +  +  +  +  + 
// See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js#L262~L273
+export const ansiRegStr = '[\\u001B\\u009B][[\\]()#;?]*'
+  + '(?:(?:(?:(?:;[-\\w/#&.:=?%@~]+)+'
+  + '|[a-zA-Z\\d]+(?:;[-\\w/#&.:=?%@~]*)*)?'
+  + '(?:\\u0007|\\u001B\\u005C|\\u009C))'
+  + '|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?'
+  + '[\\dA-PR-TZcf-nq-uy=><~]))'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/src/index.html b/packages/colors/src/index.html new file mode 100644 index 0000000..f37cd6c --- /dev/null +++ b/packages/colors/src/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for packages/colors/src + + + + + + + + + +
+
+

All files packages/colors/src

+
+ +
+ 0% + Statements + 0/114 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 0% + Lines + 0/114 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
common.ts +
+
0%0/110%0/10%0/10%0/11
constants.ts +
+
0%0/1100%1/1100%1/10%0/1
index.ts +
+
0%0/21100%1/1100%1/10%0/21
styles.ts +
+
0%0/81100%1/1100%1/10%0/81
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/src/index.ts b/packages/colors/src/index.ts deleted file mode 100644 index b1f8ac4..0000000 --- a/packages/colors/src/index.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { FormatKeys } from './type' -import { styles } from './styles' - -/** - * 递归应用 ANSI 转义序列的核心函数 - * @param formats - 待应用的样式数组 - * @param text - 当前层级的文本 - * @returns 嵌套应用样式的字符串 - * @deprecated 使用数组的 reduce 更简洁 - */ -// eslint-disable-next-line unused-imports/no-unused-vars -function applyStylesRecursive(formats: FormatKeys[], text: string): string { - // 终止条件:所有样式应用完成 - if (formats.length === 0) - return text - - // 取出当前层级的样式(保持应用顺序) - const [currentFormat, ...remainingFormats] = formats - - // 类型安全校验 - const style = currentFormat && styles[currentFormat] - if (!style) { - throw new Error(`Invalid style format: ${currentFormat}`) - } - - // 递归应用后续样式 - const innerText = applyStylesRecursive(remainingFormats, text) - - // 包裹当前层级的样式 - return `${style.open}${innerText}${style.close}` -} - -/** - * 给文本添加 ANSI 转义序列样式(递归版本) - * @param format - 单个样式或样式数组 - * @param text - 需要格式化的文本 - * @returns 带有 ANSI 转义序列的格式化文本 - */ -export function styleText(format: FormatKeys | FormatKeys[], text: string): string { - const formats = Array.isArray(format) ? format : [format] - - /** - * 颜色样式的表现结果是就近原则的, - * 所以这里需要对数组逆序一下, - * 以保证后续的样式设置的权重更高 - * 但是如果是使用递归的做法,由于递归本身存在反向的特点,所以不用逆向数组 - */ - return formats.reverse() - .reduce((str, style) => - `${styles[style].open}${str}${styles[style].close}`, text) -} - -export * from './common' -export * from './constants' -export * from './styles' -export type * from './type' diff --git a/packages/colors/src/index.ts.html b/packages/colors/src/index.ts.html new file mode 100644 index 0000000..ab9a0b7 --- /dev/null +++ b/packages/colors/src/index.ts.html @@ -0,0 +1,253 @@ + + + + + + Code coverage report for packages/colors/src/index.ts + + + + + + + + + +
+
+

All files / packages/colors/src index.ts

+
+ +
+ 0% + Statements + 0/21 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { FormatKeys } from './type'
+import { styles } from './styles'
+ 
+/**
+ * 递归应用 ANSI 转义序列的核心函数
+ * @param formats - 待应用的样式数组
+ * @param text - 当前层级的文本
+ * @returns 嵌套应用样式的字符串
+ * @deprecated 使用数组的 reduce 更简洁
+ */
+// eslint-disable-next-line unused-imports/no-unused-vars
+function applyStylesRecursive(formats: FormatKeys[], text: string): string {
+  // 终止条件:所有样式应用完成
+  if (formats.length === 0)
+    return text
+ 
+  // 取出当前层级的样式(保持应用顺序)
+  const [currentFormat, ...remainingFormats] = formats
+ 
+  // 类型安全校验
+  const style = currentFormat && styles[currentFormat]
+  if (!style) {
+    throw new Error(`Invalid style format: ${currentFormat}`)
+  }
+ 
+  // 递归应用后续样式
+  const innerText = applyStylesRecursive(remainingFormats, text)
+ 
+  // 包裹当前层级的样式
+  return `${style.open}${innerText}${style.close}`
+}
+ 
+/**
+ * 给文本添加 ANSI 转义序列样式(递归版本)
+ * @param format - 单个样式或样式数组
+ * @param text - 需要格式化的文本
+ * @returns 带有 ANSI 转义序列的格式化文本
+ */
+export function styleText(format: FormatKeys | FormatKeys[], text: string): string {
+  const formats = Array.isArray(format) ? format : [format]
+ 
+  /**
+   * 颜色样式的表现结果是就近原则的,
+   * 所以这里需要对数组逆序一下,
+   * 以保证后续的样式设置的权重更高
+   * 但是如果是使用递归的做法,由于递归本身存在反向的特点,所以不用逆向数组
+   */
+  return formats.reverse()
+    .reduce((str, style) =>
+      `${styles[style].open}${str}${styles[style].close}`, text)
+}
+ 
+export * from './common'
+export * from './constants'
+export * from './styles'
+export type * from './type'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/src/styles.ts b/packages/colors/src/styles.ts deleted file mode 100644 index 25b821f..0000000 --- a/packages/colors/src/styles.ts +++ /dev/null @@ -1,104 +0,0 @@ -import type { Prettify } from '@https-enable/types' -import type { AllColorKeys, ColorName, ColorScheme, ColorType, StyleType } from './type' - -const defaultFG = 39 -const defaultBG = 49 - -// ================= 颜色代码配置 ================= -const colors: ColorScheme = { - black: { - normal: { fg: 30, bg: 40 }, - }, - red: { - normal: { fg: 31, bg: 41 }, - bright: { fg: 91, bg: 101 }, - }, - green: { - normal: { fg: 32, bg: 42 }, - bright: { fg: 92, bg: 102 }, - }, - yellow: { - normal: { fg: 33, bg: 43 }, - bright: { fg: 93, bg: 103 }, - }, - blue: { - normal: { fg: 34, bg: 44 }, - bright: { fg: 94, bg: 104 }, - }, - magenta: { - normal: { fg: 35, bg: 45 }, - bright: { fg: 95, bg: 105 }, - }, - cyan: { - normal: { fg: 36, bg: 46 }, - bright: { fg: 96, bg: 106 }, - }, - white: { - normal: { fg: 37, bg: 47 }, - bright: { fg: 97, bg: 107 }, - }, - gray: { - normal: { fg: 90, bg: 100 }, - }, - grey: { - normal: { fg: 90, bg: 100 }, - }, -} - -// ================= 样式生成器 ================= -function createEntry(code: number, resetCode: number) { - return { - open: `\u001B[${code}m`, - close: `\u001B[${resetCode}m`, - } -} - -// 类型安全的颜色生成器 -function buildColorStyles(): ColorType { - return Object.entries(colors).reduce((acc, [name, variants]) => { - const colorName = name as ColorName - const capitalized = colorName[0]?.toUpperCase() + colorName.slice(1) - - // 前景色 - acc[colorName] = createEntry(variants.normal.fg, defaultFG) - if ('bright' in variants) { - const brightKey = `bright${capitalized}` as AllColorKeys - acc[brightKey] = createEntry(variants.bright.fg, defaultFG) - } - - // 背景色 - const bgKey = `bg${capitalized}` as AllColorKeys - acc[bgKey] = createEntry(variants.normal.bg, defaultBG) - if ('bright' in variants) { - const bgBrightKey = `bgBright${capitalized}` as AllColorKeys - acc[bgBrightKey] = createEntry(variants.bright.bg, defaultBG) - } - - return acc - }, {} as ColorType) // 关键类型断言 -} - -// See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js#L407~L454 -// See: https://en.wikipedia.org/wiki/ANSI_escape_code#graphics -// See: https://github.com/mintty/mintty/wiki/Tips#text-attributes-and-rendering -export const styles: Prettify = { - // 基础样式 - reset: createEntry(0, 0), - bold: createEntry(1, 22), - dim: createEntry(2, 22), - italic: createEntry(3, 23), - underline: createEntry(4, 24), - blink: createEntry(5, 25), - // Swap foreground and background colors - inverse: createEntry(7, 27), - hidden: createEntry(8, 28), - strikethrough: createEntry(9, 29), - doubleunderline: createEntry(21, 24), - framed: createEntry(51, 54), - overlined: createEntry(53, 55), - - // 动态生成颜色样式 - ...buildColorStyles(), -} - -export default styles diff --git a/packages/colors/src/styles.ts.html b/packages/colors/src/styles.ts.html new file mode 100644 index 0000000..9c868d9 --- /dev/null +++ b/packages/colors/src/styles.ts.html @@ -0,0 +1,397 @@ + + + + + + Code coverage report for packages/colors/src/styles.ts + + + + + + + + + +
+
+

All files / packages/colors/src styles.ts

+
+ +
+ 0% + Statements + 0/81 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/81 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Prettify } from '@https-enable/types'
+import type { AllColorKeys, ColorName, ColorScheme, ColorType, StyleType } from './type'
+ 
+const defaultFG = 39
+const defaultBG = 49
+ 
+// ================= 颜色代码配置 =================
+const colors: ColorScheme = {
+  black: {
+    normal: { fg: 30, bg: 40 },
+  },
+  red: {
+    normal: { fg: 31, bg: 41 },
+    bright: { fg: 91, bg: 101 },
+  },
+  green: {
+    normal: { fg: 32, bg: 42 },
+    bright: { fg: 92, bg: 102 },
+  },
+  yellow: {
+    normal: { fg: 33, bg: 43 },
+    bright: { fg: 93, bg: 103 },
+  },
+  blue: {
+    normal: { fg: 34, bg: 44 },
+    bright: { fg: 94, bg: 104 },
+  },
+  magenta: {
+    normal: { fg: 35, bg: 45 },
+    bright: { fg: 95, bg: 105 },
+  },
+  cyan: {
+    normal: { fg: 36, bg: 46 },
+    bright: { fg: 96, bg: 106 },
+  },
+  white: {
+    normal: { fg: 37, bg: 47 },
+    bright: { fg: 97, bg: 107 },
+  },
+  gray: {
+    normal: { fg: 90, bg: 100 },
+  },
+  grey: {
+    normal: { fg: 90, bg: 100 },
+  },
+}
+ 
+// ================= 样式生成器 =================
+function createEntry(code: number, resetCode: number) {
+  return {
+    open: `\u001B[${code}m`,
+    close: `\u001B[${resetCode}m`,
+  }
+}
+ 
+// 类型安全的颜色生成器
+function buildColorStyles(): ColorType {
+  return Object.entries(colors).reduce((acc, [name, variants]) => {
+    const colorName = name as ColorName
+    const capitalized = colorName[0]?.toUpperCase() + colorName.slice(1)
+ 
+    // 前景色
+    acc[colorName] = createEntry(variants.normal.fg, defaultFG)
+    if ('bright' in variants) {
+      const brightKey = `bright${capitalized}` as AllColorKeys
+      acc[brightKey] = createEntry(variants.bright.fg, defaultFG)
+    }
+ 
+    // 背景色
+    const bgKey = `bg${capitalized}` as AllColorKeys
+    acc[bgKey] = createEntry(variants.normal.bg, defaultBG)
+    if ('bright' in variants) {
+      const bgBrightKey = `bgBright${capitalized}` as AllColorKeys
+      acc[bgBrightKey] = createEntry(variants.bright.bg, defaultBG)
+    }
+ 
+    return acc
+  }, {} as ColorType) // 关键类型断言
+}
+ 
+// See: https://github.com/nodejs/node/blob/main/lib/internal/util/inspect.js#L407~L454
+// See: https://en.wikipedia.org/wiki/ANSI_escape_code#graphics
+// See: https://github.com/mintty/mintty/wiki/Tips#text-attributes-and-rendering
+export const styles: Prettify<StyleType & ColorType> = {
+  // 基础样式
+  reset: createEntry(0, 0),
+  bold: createEntry(1, 22),
+  dim: createEntry(2, 22),
+  italic: createEntry(3, 23),
+  underline: createEntry(4, 24),
+  blink: createEntry(5, 25),
+  // Swap foreground and background colors
+  inverse: createEntry(7, 27),
+  hidden: createEntry(8, 28),
+  strikethrough: createEntry(9, 29),
+  doubleunderline: createEntry(21, 24),
+  framed: createEntry(51, 54),
+  overlined: createEntry(53, 55),
+ 
+  // 动态生成颜色样式
+  ...buildColorStyles(),
+}
+ 
+export default styles
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/colors/src/type.d.ts b/packages/colors/src/type.d.ts deleted file mode 100644 index a174b17..0000000 --- a/packages/colors/src/type.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -import type { Prettify } from '@https-enable/types' - -// ================= 类型定义层 ================= -export interface StyleEntry { open: string, close: string } - -// 基础颜色类型(支持是否包含亮色) -type ColorDefinition = { - normal: { fg: number, bg: number } -} & (HasBright extends true ? { bright: { fg: number, bg: number } } : unknown) - -// 颜色配置模板 -export interface ColorScheme { - black: ColorDefinition // 示例:黑色没有亮色 - red: Prettify - green: Prettify - yellow: Prettify - blue: Prettify - magenta: Prettify - cyan: Prettify - white: Prettify - gray: ColorDefinition - grey: ColorDefinition -} - -// ================= 生成工具类型 ================= -export type ColorName = Prettify -// 判断颜色是否包含亮色版本 -type HasBright = 'bright' extends keyof ColorScheme[T] ? true : false - -// 生成颜色键名(自动处理亮色) -type ColorKeys = - T | (HasBright extends true ? `bright${Capitalize}` : never) - -// 生成背景色键名(自动处理亮色) -type BackgroundKeys = - `bg${Capitalize}` | (HasBright extends true ? `bgBright${Capitalize}` : never) - -// 联合所有可能的键名 -export type AllColorKeys = Prettify<{ - [K in ColorName]: ColorKeys | BackgroundKeys; -}[ColorName]> - -export interface StyleType { - reset: StyleEntry - // 基础样式 - bold: StyleEntry - dim: StyleEntry - italic: StyleEntry - underline: StyleEntry - blink: StyleEntry - inverse: StyleEntry - hidden: StyleEntry - strikethrough: StyleEntry - doubleunderline: StyleEntry - framed: StyleEntry - overlined: StyleEntry -} - -export type ColorType = { - // 动态颜色类型 - [K in AllColorKeys]: StyleEntry; -} - -export type FormatKeys = Prettify diff --git a/packages/colors/tsconfig.json b/packages/colors/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/colors/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/core/build.config.ts b/packages/core/build.config.ts deleted file mode 100644 index c2d9816..0000000 --- a/packages/core/build.config.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: false, - }, - failOnWarn: false, - externals: ['@https-enable/types'], -}) diff --git a/packages/core/changelog.md b/packages/core/changelog.md deleted file mode 100644 index 5979671..0000000 --- a/packages/core/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/core@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/core@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/core@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/core@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/core@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/core@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/core@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/core@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/core/dist/index.cjs.html b/packages/core/dist/index.cjs.html new file mode 100644 index 0000000..a741824 --- /dev/null +++ b/packages/core/dist/index.cjs.html @@ -0,0 +1,799 @@ + + + + + + Code coverage report for packages/core/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/core/dist index.cjs

+
+ +
+ 0% + Statements + 0/229 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/229 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const node_events = require('node:events');
+const mkcert = require('@https-enable/mkcert');
+const http = require('node:http');
+const net = require('node:net');
+const process = require('node:process');
+const tls = require('node:tls');
+const Logger = require('@https-enable/logger');
+ 
+function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
+ 
+const http__default = /*#__PURE__*/_interopDefaultCompat(http);
+const net__default = /*#__PURE__*/_interopDefaultCompat(net);
+const process__default = /*#__PURE__*/_interopDefaultCompat(process);
+const tls__default = /*#__PURE__*/_interopDefaultCompat(tls);
+const Logger__default = /*#__PURE__*/_interopDefaultCompat(Logger);
+ 
+const defaultCA = {
+  organization: "",
+  countryCode: "",
+  state: "",
+  locality: "",
+  force: false
+};
+class CertificateManager extends node_events.EventEmitter {
+  options;
+  pathOptions;
+  currentCert;
+  constructor(options) {
+    super();
+    if ("base" in options) {
+      const { base, ...rest } = options;
+      this.pathOptions = { base };
+      this.options = {
+        ...defaultCA,
+        ...rest
+      };
+    } else {
+      const { cert, key, ...rest } = options;
+      this.pathOptions = { cert: options.cert, key: options.key };
+      this.options = {
+        ...defaultCA,
+        ...rest
+      };
+    }
+    this.currentCert = this.loadExistingCert();
+  }
+  /**
+   * 初始化证书(生成或加载现有)
+   */
+  async initialize(force) {
+    const verifyRes = await this.validCert();
+    if ((force ?? this.options.force) || !verifyRes?.match)
+      return await this.generateNewCert(this.options.cache);
+    return this.currentCert;
+  }
+  async validCert() {
+    if (!this.currentCert)
+      return null;
+    return await mkcert.verifyCertificate(this.currentCert.key, this.currentCert.cert);
+  }
+  /**
+   * 确保当前证书有效
+   * @description 无效证书则自动重新创建
+   */
+  async ensureValidCert() {
+    const verifyRes = await this.validCert();
+    if (!verifyRes?.match) {
+      await this.generateNewCert(this.options.cache);
+    }
+  }
+  async generateNewCert(isCache) {
+    this.currentCert = await mkcert.createCertificate(this.options, this.pathOptions, isCache);
+    this.emit("cert-renewed", { ...this.currentCert });
+    return this.currentCert;
+  }
+  // 加载证书
+  loadExistingCert() {
+    return mkcert.readCertificate(this.pathOptions);
+  }
+}
+ 
+function samePortSSL(app, options) {
+  const isRedirect = options.redirect ?? false;
+  const host = options.host;
+  const port = Number(options.port);
+  const tcpserver = net__default.createServer();
+  let server = http__default.createServer(options, app);
+  const redirectServer = http__default.createServer(isRedirect ? (req, res) => (res.writeHead(302, { location: `https://${req.headers.host || req.url}` }), res.end()) : app);
+  tcpserver.listen(port, host);
+  tcpserver.on("connection", (socket) => {
+    socket.once("data", (data) => {
+      socket.pause();
+      if (data[0] === 22) {
+        const sock = new tls__default.TLSSocket(socket, { isServer: true, ...options });
+        server.emit("connection", sock);
+        socket.unshift(data);
+      } else {
+        redirectServer.emit("connection", socket);
+        socket.emit("data", data);
+      }
+      process__default.nextTick(() => socket.resume());
+    });
+  });
+  class ServerInstance {
+    isAlive = true;
+    /**
+     * Kill the server
+     * @returns A promise that resolves when the server ends
+     */
+    kill() {
+      return new Promise((resolve, fail) => {
+        tcpserver.close((err) => {
+          if (typeof err === "undefined") {
+            server.closeAllConnections();
+            redirectServer.closeAllConnections();
+            this.isAlive = false;
+            resolve();
+          } else {
+            fail(err);
+          }
+        });
+      });
+    }
+    /**
+     * Change the server options
+     * @param newOptions The new server options
+     * @param newOptions.cert cert content
+     * @param newOptions.key key content
+     */
+    async refresh(newOptions) {
+      if (newOptions && newOptions.cert && newOptions.key && typeof newOptions.cert === "string" && typeof newOptions.key === "string") {
+        const verify = await mkcert.verifyCertificate(newOptions.key, newOptions.cert);
+        if (!verify.match)
+          return;
+        options = { ...options, ...newOptions };
+        return server = http__default.createServer(options, app);
+      }
+    }
+  }
+  return new Promise((resolve) => tcpserver.on("listening", () => resolve(new ServerInstance())));
+}
+ 
+class HttpsAdapter {
+  constructor(app) {
+    this.app = app;
+  }
+  serverInstance = null;
+  /**
+   * 启动 HTTPS 服务(可选,部分框架需要自定义逻辑)
+   */
+  async createServer(options, app) {
+    let tempApp = app ?? this.app;
+    if (this.init && typeof this.init === "function") {
+      tempApp = await this.init();
+    }
+    if (!tempApp && !this.app) {
+      throw new Error("`app` is no found");
+    }
+    this.serverInstance = await samePortSSL(tempApp ?? this.app, options);
+    return this.serverInstance;
+  }
+}
+ 
+function createLogFormat(colorize = false) {
+  return Logger__default.createLogFormat(colorize, "https-enabler");
+}
+const logger = new Logger__default({
+  format: createLogFormat(),
+  transports: [
+    new Logger.Transports.Console({
+      format: createLogFormat(true)
+    })
+  ]
+});
+ 
+class HttpsEnabler extends node_events.EventEmitter {
+  adapter;
+  options;
+  certificateOptions;
+  certManager;
+  constructor(config) {
+    super();
+    this.adapter = config.adapter;
+    if (!this.adapter) {
+      throw logger.error("Must provide the adapter");
+    }
+    if (!this.adapter.app && (!this.adapter.init || typeof this.adapter.init !== "function") || typeof this.adapter.createServer !== "function") {
+      throw logger.error("The adapter is invalid");
+    }
+    this.options = config.options;
+    this.certificateOptions = config.certificateOptions;
+    this.certManager = new CertificateManager(this.certificateOptions);
+    this.certManager.on("cert-renewed", async (newCert) => {
+      this.emit("cert-renewed", newCert);
+      await this.adapter.serverInstance?.refresh(newCert);
+      this.adapter.onCertRenewed?.(newCert);
+    });
+  }
+  async init() {
+    await this.certManager.initialize().catch((err) => this.emit("error", err));
+  }
+  /**
+   * 生成框架特定的中间件
+   */
+  middleware() {
+    return this.adapter.createMiddleware?.(this.options);
+  }
+  refresh(options) {
+    if (!this.adapter.serverInstance)
+      return;
+    return this.adapter.serverInstance.refresh(options);
+  }
+  kill() {
+    if (!this.adapter.serverInstance)
+      return;
+    return this.adapter.serverInstance.kill();
+  }
+  /**
+   * 启动 HTTPS 服务
+   */
+  async startServer(app) {
+    await this.certManager.ensureValidCert();
+    if (typeof this.adapter.createServer === "function" && this.certManager.currentCert) {
+      const options = { ...this.options, ...this.certManager.currentCert };
+      await this.adapter.createServer(options, app);
+      return options;
+    } else {
+      throw new TypeError("Unsupported framework: default server logic requires an app with listen()");
+    }
+  }
+}
+ 
+exports.CertificateManager = CertificateManager;
+exports.HttpsAdapter = HttpsAdapter;
+exports.HttpsEnabler = HttpsEnabler;
+exports.samePortSSL = samePortSSL;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/dist/index.d.mts.html b/packages/core/dist/index.d.mts.html new file mode 100644 index 0000000..83ef6ef --- /dev/null +++ b/packages/core/dist/index.d.mts.html @@ -0,0 +1,574 @@ + + + + + + Code coverage report for packages/core/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/core/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Certificate, Prettify as Prettify$1, CreateOptions, CertificatePath, VerifyOptions } from '@https-enable/mkcert';
+import { Prettify, MakeOnlyRequired } from '@https-enable/types';
+import http$1 from 'node:http';
+import http2 from 'node:http2';
+import https from 'node:https';
+import { EventEmitter } from 'node:events';
+import * as http from 'http';
+ 
+interface CertificateEvents {
+    'cert-renewed': [Certificate];
+}
+type HttpsEnablerEvents = {
+    error: [any];
+} & CertificateEvents;
+ 
+/**
+ *
+ * @param app
+ * @param options
+ * @link https://gist.github.com/Coolchickenguy/a424ab0f4d32f024b39cd8cdd2b912ae
+ */
+declare function samePortSSL(app: AppType, options: SamePortOptions): Promise<{
+    isAlive: boolean;
+    /**
+     * Kill the server
+     * @returns A promise that resolves when the server ends
+     */
+    kill(): Promise<void>;
+    /**
+     * Change the server options
+     * @param newOptions The new server options
+     * @param newOptions.cert cert content
+     * @param newOptions.key key content
+     */
+    refresh(newOptions: {
+        cert: string;
+        key: string;
+    }): Promise<http$1.Server<typeof http$1.IncomingMessage, typeof http$1.ServerResponse> | undefined>;
+}>;
+type ServerInstance = Prettify<Awaited<ReturnType<typeof samePortSSL>>>;
+ 
+type CertificateManagerOptions = Prettify$1<MakeOnlyRequired<CreateOptions, 'validity' | 'domains'> & CertificatePath & { cache?: boolean }>
+ 
+type ServerOptions = Prettify$1<VerifyOptions>
+type SamePortOptions = Prettify$1<ServerOptions & Certificate &
+  {
+  /**
+   * http 301 重定向至 https
+   * @default false
+   */
+    redirect?: boolean
+  }>
+ 
+type RawServerBase = http$1.Server | https.Server | http2.Http2Server | http2.Http2SecureServer
+ 
+/**
+ * The default request type based on the server type. Utilizes generic constraining.
+ */
+type RawRequestDefaultExpression<
+  RawServer extends RawServerBase = RawServerDefault,
+> = RawServer extends http$1.Server | https.Server ? http$1.IncomingMessage
+  : RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerRequest
+    : never
+ 
+/**
+ * The default reply type based on the server type. Utilizes generic constraining.
+ */
+type RawReplyDefaultExpression<
+  RawServer extends RawServerBase = RawServerDefault,
+> = RawServer extends http$1.Server | https.Server ? http$1.ServerResponse
+  : RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerResponse
+    : never
+ 
+type AppType = http$1.RequestListener<typeof http$1.IncomingMessage, typeof http$1.ServerResponse> | ((req: RawRequestDefaultExpression<RawServerBase>, res: RawReplyDefaultExpression<RawServerBase>) => any)
+type MiddlewareType = any
+ 
+declare class CertificateManager extends EventEmitter<CertificateEvents> {
+    protected options: Prettify<CreateOptions & {
+        cache?: boolean;
+    }>;
+    protected pathOptions: CertificatePath;
+    currentCert: Certificate | null;
+    constructor(options: CertificateManagerOptions);
+    /**
+     * 初始化证书(生成或加载现有)
+     */
+    initialize(force?: boolean): Promise<Certificate | null>;
+    validCert(): Promise<{
+        match: boolean;
+        message: string;
+    } | null>;
+    /**
+     * 确保当前证书有效
+     * @description 无效证书则自动重新创建
+     */
+    ensureValidCert(): Promise<void>;
+    private generateNewCert;
+    private loadExistingCert;
+}
+ 
+declare abstract class HttpsAdapter<App extends AppType, Middleware = MiddlewareType> {
+    app?: (App | null) | undefined;
+    serverInstance: ServerInstance | null;
+    constructor(app?: (App | null) | undefined);
+    /**
+     * 创建框架特定的中间件
+     */
+    abstract createMiddleware?: (options: ServerOptions) => Middleware;
+    /**
+     * 重置证书时通知
+     */
+    abstract onCertRenewed?: (certificate: Certificate) => any;
+    /** 特殊后端框架可以使用这个自定义返回 app */
+    abstract init?: () => Promise<App>;
+    /**
+     * 启动 HTTPS 服务(可选,部分框架需要自定义逻辑)
+     */
+    createServer(options: SamePortOptions, app?: App): Promise<{
+        isAlive: boolean;
+        kill: () => Promise<void>;
+        refresh: (newOptions: {
+            cert: string;
+            key: string;
+        }) => Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse> | undefined>;
+    }>;
+}
+ 
+declare class HttpsEnabler<App extends AppType, Middleware = MiddlewareType> extends EventEmitter<HttpsEnablerEvents> {
+    adapter: HttpsAdapter<App, Middleware>;
+    protected options: Prettify<ServerOptions & {
+        /**
+         * http 301 重定向至 https
+         */
+        redirect?: boolean;
+    }>;
+    protected certificateOptions: CertificateManagerOptions;
+    protected certManager: CertificateManager;
+    constructor(config: {
+        adapter: typeof HttpsEnabler.prototype.adapter;
+        options: typeof HttpsEnabler.prototype.options;
+        certificateOptions: typeof HttpsEnabler.prototype.certificateOptions;
+    });
+    init(): Promise<void>;
+    /**
+     * 生成框架特定的中间件
+     */
+    middleware(): Middleware | undefined;
+    refresh(options: Certificate): Promise<http.Server<typeof http.IncomingMessage, typeof http.ServerResponse> | undefined> | undefined;
+    kill(): Promise<void> | undefined;
+    /**
+     * 启动 HTTPS 服务
+     */
+    startServer(app?: App): Promise<{
+        key: string;
+        cert: string;
+        host: string;
+        port: number | string;
+        rejectUnauthorized?: boolean | undefined;
+        redirect?: boolean | undefined;
+    }>;
+}
+ 
+export { type AppType, CertificateManager, type CertificateManagerOptions, HttpsAdapter, HttpsEnabler, type MiddlewareType, type RawReplyDefaultExpression, type RawRequestDefaultExpression, type RawServerBase, type SamePortOptions, type ServerInstance, type ServerOptions, samePortSSL };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/dist/index.html b/packages/core/dist/index.html new file mode 100644 index 0000000..ded9a93 --- /dev/null +++ b/packages/core/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/core/dist + + + + + + + + + +
+
+

All files packages/core/dist

+
+ +
+ 0% + Statements + 0/447 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 0% + Lines + 0/447 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/2290%0/10%0/10%0/229
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
0%0/2180%0/10%0/10%0/218
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/dist/index.mjs.html b/packages/core/dist/index.mjs.html new file mode 100644 index 0000000..af68f73 --- /dev/null +++ b/packages/core/dist/index.mjs.html @@ -0,0 +1,760 @@ + + + + + + Code coverage report for packages/core/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/core/dist index.mjs

+
+ +
+ 0% + Statements + 0/218 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/218 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { EventEmitter } from 'node:events';
+import { verifyCertificate, createCertificate, readCertificate } from '@https-enable/mkcert';
+import http from 'node:http';
+import net from 'node:net';
+import process from 'node:process';
+import tls from 'node:tls';
+import Logger, { Transports } from '@https-enable/logger';
+ 
+const defaultCA = {
+  organization: "",
+  countryCode: "",
+  state: "",
+  locality: "",
+  force: false
+};
+class CertificateManager extends EventEmitter {
+  options;
+  pathOptions;
+  currentCert;
+  constructor(options) {
+    super();
+    if ("base" in options) {
+      const { base, ...rest } = options;
+      this.pathOptions = { base };
+      this.options = {
+        ...defaultCA,
+        ...rest
+      };
+    } else {
+      const { cert, key, ...rest } = options;
+      this.pathOptions = { cert: options.cert, key: options.key };
+      this.options = {
+        ...defaultCA,
+        ...rest
+      };
+    }
+    this.currentCert = this.loadExistingCert();
+  }
+  /**
+   * 初始化证书(生成或加载现有)
+   */
+  async initialize(force) {
+    const verifyRes = await this.validCert();
+    if ((force ?? this.options.force) || !verifyRes?.match)
+      return await this.generateNewCert(this.options.cache);
+    return this.currentCert;
+  }
+  async validCert() {
+    if (!this.currentCert)
+      return null;
+    return await verifyCertificate(this.currentCert.key, this.currentCert.cert);
+  }
+  /**
+   * 确保当前证书有效
+   * @description 无效证书则自动重新创建
+   */
+  async ensureValidCert() {
+    const verifyRes = await this.validCert();
+    if (!verifyRes?.match) {
+      await this.generateNewCert(this.options.cache);
+    }
+  }
+  async generateNewCert(isCache) {
+    this.currentCert = await createCertificate(this.options, this.pathOptions, isCache);
+    this.emit("cert-renewed", { ...this.currentCert });
+    return this.currentCert;
+  }
+  // 加载证书
+  loadExistingCert() {
+    return readCertificate(this.pathOptions);
+  }
+}
+ 
+function samePortSSL(app, options) {
+  const isRedirect = options.redirect ?? false;
+  const host = options.host;
+  const port = Number(options.port);
+  const tcpserver = net.createServer();
+  let server = http.createServer(options, app);
+  const redirectServer = http.createServer(isRedirect ? (req, res) => (res.writeHead(302, { location: `https://${req.headers.host || req.url}` }), res.end()) : app);
+  tcpserver.listen(port, host);
+  tcpserver.on("connection", (socket) => {
+    socket.once("data", (data) => {
+      socket.pause();
+      if (data[0] === 22) {
+        const sock = new tls.TLSSocket(socket, { isServer: true, ...options });
+        server.emit("connection", sock);
+        socket.unshift(data);
+      } else {
+        redirectServer.emit("connection", socket);
+        socket.emit("data", data);
+      }
+      process.nextTick(() => socket.resume());
+    });
+  });
+  class ServerInstance {
+    isAlive = true;
+    /**
+     * Kill the server
+     * @returns A promise that resolves when the server ends
+     */
+    kill() {
+      return new Promise((resolve, fail) => {
+        tcpserver.close((err) => {
+          if (typeof err === "undefined") {
+            server.closeAllConnections();
+            redirectServer.closeAllConnections();
+            this.isAlive = false;
+            resolve();
+          } else {
+            fail(err);
+          }
+        });
+      });
+    }
+    /**
+     * Change the server options
+     * @param newOptions The new server options
+     * @param newOptions.cert cert content
+     * @param newOptions.key key content
+     */
+    async refresh(newOptions) {
+      if (newOptions && newOptions.cert && newOptions.key && typeof newOptions.cert === "string" && typeof newOptions.key === "string") {
+        const verify = await verifyCertificate(newOptions.key, newOptions.cert);
+        if (!verify.match)
+          return;
+        options = { ...options, ...newOptions };
+        return server = http.createServer(options, app);
+      }
+    }
+  }
+  return new Promise((resolve) => tcpserver.on("listening", () => resolve(new ServerInstance())));
+}
+ 
+class HttpsAdapter {
+  constructor(app) {
+    this.app = app;
+  }
+  serverInstance = null;
+  /**
+   * 启动 HTTPS 服务(可选,部分框架需要自定义逻辑)
+   */
+  async createServer(options, app) {
+    let tempApp = app ?? this.app;
+    if (this.init && typeof this.init === "function") {
+      tempApp = await this.init();
+    }
+    if (!tempApp && !this.app) {
+      throw new Error("`app` is no found");
+    }
+    this.serverInstance = await samePortSSL(tempApp ?? this.app, options);
+    return this.serverInstance;
+  }
+}
+ 
+function createLogFormat(colorize = false) {
+  return Logger.createLogFormat(colorize, "https-enabler");
+}
+const logger = new Logger({
+  format: createLogFormat(),
+  transports: [
+    new Transports.Console({
+      format: createLogFormat(true)
+    })
+  ]
+});
+ 
+class HttpsEnabler extends EventEmitter {
+  adapter;
+  options;
+  certificateOptions;
+  certManager;
+  constructor(config) {
+    super();
+    this.adapter = config.adapter;
+    if (!this.adapter) {
+      throw logger.error("Must provide the adapter");
+    }
+    if (!this.adapter.app && (!this.adapter.init || typeof this.adapter.init !== "function") || typeof this.adapter.createServer !== "function") {
+      throw logger.error("The adapter is invalid");
+    }
+    this.options = config.options;
+    this.certificateOptions = config.certificateOptions;
+    this.certManager = new CertificateManager(this.certificateOptions);
+    this.certManager.on("cert-renewed", async (newCert) => {
+      this.emit("cert-renewed", newCert);
+      await this.adapter.serverInstance?.refresh(newCert);
+      this.adapter.onCertRenewed?.(newCert);
+    });
+  }
+  async init() {
+    await this.certManager.initialize().catch((err) => this.emit("error", err));
+  }
+  /**
+   * 生成框架特定的中间件
+   */
+  middleware() {
+    return this.adapter.createMiddleware?.(this.options);
+  }
+  refresh(options) {
+    if (!this.adapter.serverInstance)
+      return;
+    return this.adapter.serverInstance.refresh(options);
+  }
+  kill() {
+    if (!this.adapter.serverInstance)
+      return;
+    return this.adapter.serverInstance.kill();
+  }
+  /**
+   * 启动 HTTPS 服务
+   */
+  async startServer(app) {
+    await this.certManager.ensureValidCert();
+    if (typeof this.adapter.createServer === "function" && this.certManager.currentCert) {
+      const options = { ...this.options, ...this.certManager.currentCert };
+      await this.adapter.createServer(options, app);
+      return options;
+    } else {
+      throw new TypeError("Unsupported framework: default server logic requires an app with listen()");
+    }
+  }
+}
+ 
+export { CertificateManager, HttpsAdapter, HttpsEnabler, samePortSSL };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/package.json b/packages/core/package.json deleted file mode 100644 index 49776dd..0000000 --- a/packages/core/package.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "@https-enable/core", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "dependencies": { - "@https-enable/logger": "workspace:*", - "@https-enable/mkcert": "workspace:*" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/core/src/certificate-manager.ts b/packages/core/src/certificate-manager.ts deleted file mode 100644 index 689d649..0000000 --- a/packages/core/src/certificate-manager.ts +++ /dev/null @@ -1,85 +0,0 @@ -import type { Certificate, CertificatePath, CreateOptions } from '@https-enable/mkcert' -import type { Prettify } from '@https-enable/types' -import type { CertificateEvents } from './emitter' -import type { CertificateManagerOptions } from './type' -import { EventEmitter } from 'node:events' -import { createCertificate, readCertificate, verifyCertificate } from '@https-enable/mkcert' - -const defaultCA = { - organization: '', - countryCode: '', - state: '', - locality: '', - force: false, -} - -export class CertificateManager extends EventEmitter { - protected options: Prettify - protected pathOptions: CertificatePath - public currentCert: Certificate | null - - constructor(options: CertificateManagerOptions) { - super() - - if ('base' in options) { - const { base, ...rest } = options - this.pathOptions = { base } - this.options = { - ...defaultCA, - ...rest, - } - } - else { - const { cert, key, ...rest } = options - this.pathOptions = { cert: options.cert, key: options.key } - this.options = { - ...defaultCA, - ...rest, - } - } - this.currentCert = this.loadExistingCert() - } - - /** - * 初始化证书(生成或加载现有) - */ - async initialize(force?: boolean) { - const verifyRes = await this.validCert() - - if ((force ?? this.options.force) || !verifyRes?.match) - return await this.generateNewCert(this.options.cache) - - return this.currentCert - } - - async validCert() { - if (!this.currentCert) - return null - - return await verifyCertificate(this.currentCert.key, this.currentCert.cert) - } - - /** - * 确保当前证书有效 - * @description 无效证书则自动重新创建 - */ - async ensureValidCert() { - const verifyRes = await this.validCert() - if (!verifyRes?.match) { - await this.generateNewCert(this.options.cache) - } - } - - private async generateNewCert(isCache?: boolean) { - this.currentCert = await createCertificate(this.options, this.pathOptions, isCache) - - // 触发 cert-renewed 事件 - this.emit('cert-renewed', { ...this.currentCert }) - return this.currentCert - } - - // 加载证书 - private loadExistingCert() { - return readCertificate(this.pathOptions) - } -} diff --git a/packages/core/src/certificate-manager.ts.html b/packages/core/src/certificate-manager.ts.html new file mode 100644 index 0000000..321b23e --- /dev/null +++ b/packages/core/src/certificate-manager.ts.html @@ -0,0 +1,340 @@ + + + + + + Code coverage report for packages/core/src/certificate-manager.ts + + + + + + + + + +
+
+

All files / packages/core/src certificate-manager.ts

+
+ +
+ 0% + Statements + 0/59 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/59 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Certificate, CertificatePath, CreateOptions } from '@https-enable/mkcert'
+import type { Prettify } from '@https-enable/types'
+import type { CertificateEvents } from './emitter'
+import type { CertificateManagerOptions } from './type'
+import { EventEmitter } from 'node:events'
+import { createCertificate, readCertificate, verifyCertificate } from '@https-enable/mkcert'
+ 
+const defaultCA = {
+  organization: '',
+  countryCode: '',
+  state: '',
+  locality: '',
+  force: false,
+}
+ 
+export class CertificateManager extends EventEmitter<CertificateEvents> {
+  protected options: Prettify<CreateOptions & { cache?: boolean }>
+  protected pathOptions: CertificatePath
+  public currentCert: Certificate | null
+ 
+  constructor(options: CertificateManagerOptions) {
+    super()
+ 
+    if ('base' in options) {
+      const { base, ...rest } = options
+      this.pathOptions = { base }
+      this.options = {
+        ...defaultCA,
+        ...rest,
+      }
+    }
+    else {
+      const { cert, key, ...rest } = options
+      this.pathOptions = { cert: options.cert, key: options.key }
+      this.options = {
+        ...defaultCA,
+        ...rest,
+      }
+    }
+    this.currentCert = this.loadExistingCert()
+  }
+ 
+  /**
+   * 初始化证书(生成或加载现有)
+   */
+  async initialize(force?: boolean) {
+    const verifyRes = await this.validCert()
+ 
+    if ((force ?? this.options.force) || !verifyRes?.match)
+      return await this.generateNewCert(this.options.cache)
+ 
+    return this.currentCert
+  }
+ 
+  async validCert() {
+    if (!this.currentCert)
+      return null
+ 
+    return await verifyCertificate(this.currentCert.key, this.currentCert.cert)
+  }
+ 
+  /**
+   * 确保当前证书有效
+   * @description 无效证书则自动重新创建
+   */
+  async ensureValidCert() {
+    const verifyRes = await this.validCert()
+    if (!verifyRes?.match) {
+      await this.generateNewCert(this.options.cache)
+    }
+  }
+ 
+  private async generateNewCert(isCache?: boolean) {
+    this.currentCert = await createCertificate(this.options, this.pathOptions, isCache)
+ 
+    // 触发 cert-renewed 事件
+    this.emit('cert-renewed', { ...this.currentCert })
+    return this.currentCert
+  }
+ 
+  // 加载证书
+  private loadExistingCert() {
+    return readCertificate(this.pathOptions)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/emitter.ts b/packages/core/src/emitter.ts deleted file mode 100644 index 34514ec..0000000 --- a/packages/core/src/emitter.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Certificate } from '@https-enable/mkcert' - -export interface CertificateEvents { - 'cert-renewed': [Certificate] -} - -export type HttpsEnablerEvents = { - error: [any] -} & CertificateEvents diff --git a/packages/core/src/emitter.ts.html b/packages/core/src/emitter.ts.html new file mode 100644 index 0000000..14dce53 --- /dev/null +++ b/packages/core/src/emitter.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for packages/core/src/emitter.ts + + + + + + + + + +
+
+

All files / packages/core/src emitter.ts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10  +  +  +  +  +  +  +  +  + 
import type { Certificate } from '@https-enable/mkcert'
+ 
+export interface CertificateEvents {
+  'cert-renewed': [Certificate]
+}
+ 
+export type HttpsEnablerEvents = {
+  error: [any]
+} & CertificateEvents
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/https-adapter.ts b/packages/core/src/https-adapter.ts deleted file mode 100644 index 2446bf5..0000000 --- a/packages/core/src/https-adapter.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { Certificate } from '@https-enable/mkcert' -import type { AppType, MiddlewareType, SamePortOptions, ServerInstance, ServerOptions } from './type' -import { samePortSSL } from './same-port-ssl' - -export abstract class HttpsAdapter { - public serverInstance: ServerInstance | null = null - - constructor(public app?: App | null) {} - - /** - * 创建框架特定的中间件 - */ - abstract createMiddleware?: (options: ServerOptions) => Middleware - - /** - * 重置证书时通知 - */ - abstract onCertRenewed?: (certificate: Certificate) => any - - /** 特殊后端框架可以使用这个自定义返回 app */ - abstract init?: () => Promise - - /** - * 启动 HTTPS 服务(可选,部分框架需要自定义逻辑) - */ - async createServer(options: SamePortOptions, app?: App) { - let tempApp = app ?? this.app - if (this.init && typeof this.init === 'function') { - tempApp = await this.init() - } - if (!tempApp && !this.app) { - throw new Error('`app` is no found') - } - this.serverInstance = await samePortSSL((tempApp ?? this.app)!, options) - return this.serverInstance - } -} diff --git a/packages/core/src/https-adapter.ts.html b/packages/core/src/https-adapter.ts.html new file mode 100644 index 0000000..3da9b2b --- /dev/null +++ b/packages/core/src/https-adapter.ts.html @@ -0,0 +1,196 @@ + + + + + + Code coverage report for packages/core/src/https-adapter.ts + + + + + + + + + +
+
+

All files / packages/core/src https-adapter.ts

+
+ +
+ 0% + Statements + 0/16 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Certificate } from '@https-enable/mkcert'
+import type { AppType, MiddlewareType, SamePortOptions, ServerInstance, ServerOptions } from './type'
+import { samePortSSL } from './same-port-ssl'
+ 
+export abstract class HttpsAdapter<App extends AppType, Middleware = MiddlewareType> {
+  public serverInstance: ServerInstance | null = null
+ 
+  constructor(public app?: App | null) {}
+ 
+  /**
+   * 创建框架特定的中间件
+   */
+  abstract createMiddleware?: (options: ServerOptions) => Middleware
+ 
+  /**
+   * 重置证书时通知
+   */
+  abstract onCertRenewed?: (certificate: Certificate) => any
+ 
+  /** 特殊后端框架可以使用这个自定义返回 app */
+  abstract init?: () => Promise<App>
+ 
+  /**
+   * 启动 HTTPS 服务(可选,部分框架需要自定义逻辑)
+   */
+  async createServer(options: SamePortOptions, app?: App) {
+    let tempApp = app ?? this.app
+    if (this.init && typeof this.init === 'function') {
+      tempApp = await this.init()
+    }
+    if (!tempApp && !this.app) {
+      throw new Error('`app` is no found')
+    }
+    this.serverInstance = await samePortSSL((tempApp ?? this.app)!, options)
+    return this.serverInstance
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/https-enabler.ts b/packages/core/src/https-enabler.ts deleted file mode 100644 index 0f1b49a..0000000 --- a/packages/core/src/https-enabler.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { Certificate } from '@https-enable/mkcert' -import type { Prettify } from '@https-enable/types' -import type { HttpsEnablerEvents } from './emitter' -import type { HttpsAdapter } from './https-adapter' -import type { AppType, CertificateManagerOptions, MiddlewareType, ServerOptions } from './type' -import { EventEmitter } from 'node:events' -import { CertificateManager } from './certificate-manager' -import logger from './logger' - -export class HttpsEnabler< - App extends AppType, - Middleware = MiddlewareType, -> extends EventEmitter { - public adapter: HttpsAdapter - protected options: Prettify - - protected certificateOptions: CertificateManagerOptions - - protected certManager: CertificateManager - - constructor(config: { - adapter: typeof HttpsEnabler.prototype.adapter - options: typeof HttpsEnabler.prototype.options - certificateOptions: typeof HttpsEnabler.prototype.certificateOptions - }) { - super() - this.adapter = config.adapter - if (!this.adapter) { - throw logger.error('Must provide the adapter') - } - if ( - (!this.adapter.app && (!this.adapter.init || typeof this.adapter.init !== 'function')) - || typeof this.adapter.createServer !== 'function' - ) { - throw logger.error('The adapter is invalid') - } - - this.options = config.options - this.certificateOptions = config.certificateOptions - - this.certManager = new CertificateManager(this.certificateOptions) - - // 证书更新监听 - this.certManager.on('cert-renewed', async (newCert) => { - this.emit('cert-renewed', newCert) - // 通知适配器证书更新(如热重载) - await this.adapter.serverInstance?.refresh(newCert) - this.adapter.onCertRenewed?.(newCert) - }) - } - - public async init() { - // 初始化证书 - await this.certManager.initialize().catch(err => this.emit('error', err)) - } - - /** - * 生成框架特定的中间件 - */ - public middleware() { - return this.adapter.createMiddleware?.(this.options) - } - - public refresh(options: Certificate) { - if (!this.adapter.serverInstance) - return - - return this.adapter.serverInstance.refresh(options) - } - - public kill() { - if (!this.adapter.serverInstance) - return - - return this.adapter.serverInstance.kill() - } - - /** - * 启动 HTTPS 服务 - */ - public async startServer(app?: App) { - // 确保证书已就绪 - await this.certManager.ensureValidCert() - // 如果适配器有自定义服务启动逻辑,优先使用 - if (typeof this.adapter.createServer === 'function' && this.certManager.currentCert) { - const options = { ...this.options, ...this.certManager.currentCert } - await this.adapter.createServer(options, app) - return options - } - else { - throw new TypeError('Unsupported framework: default server logic requires an app with listen()') - } - } -} diff --git a/packages/core/src/https-enabler.ts.html b/packages/core/src/https-enabler.ts.html new file mode 100644 index 0000000..f62a782 --- /dev/null +++ b/packages/core/src/https-enabler.ts.html @@ -0,0 +1,385 @@ + + + + + + Code coverage report for packages/core/src/https-enabler.ts + + + + + + + + + +
+
+

All files / packages/core/src https-enabler.ts

+
+ +
+ 0% + Statements + 0/59 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/59 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Certificate } from '@https-enable/mkcert'
+import type { Prettify } from '@https-enable/types'
+import type { HttpsEnablerEvents } from './emitter'
+import type { HttpsAdapter } from './https-adapter'
+import type { AppType, CertificateManagerOptions, MiddlewareType, ServerOptions } from './type'
+import { EventEmitter } from 'node:events'
+import { CertificateManager } from './certificate-manager'
+import logger from './logger'
+ 
+export class HttpsEnabler<
+  App extends AppType,
+  Middleware = MiddlewareType,
+> extends EventEmitter<HttpsEnablerEvents> {
+  public adapter: HttpsAdapter<App, Middleware>
+  protected options: Prettify<ServerOptions &
+    {
+      /**
+       * http 301 重定向至 https
+       */
+      redirect?: boolean
+    }>
+ 
+  protected certificateOptions: CertificateManagerOptions
+ 
+  protected certManager: CertificateManager
+ 
+  constructor(config: {
+    adapter: typeof HttpsEnabler.prototype.adapter
+    options: typeof HttpsEnabler.prototype.options
+    certificateOptions: typeof HttpsEnabler.prototype.certificateOptions
+  }) {
+    super()
+    this.adapter = config.adapter
+    if (!this.adapter) {
+      throw logger.error('Must provide the adapter')
+    }
+    if (
+      (!this.adapter.app && (!this.adapter.init || typeof this.adapter.init !== 'function'))
+      || typeof this.adapter.createServer !== 'function'
+    ) {
+      throw logger.error('The adapter is invalid')
+    }
+ 
+    this.options = config.options
+    this.certificateOptions = config.certificateOptions
+ 
+    this.certManager = new CertificateManager(this.certificateOptions)
+ 
+    // 证书更新监听
+    this.certManager.on('cert-renewed', async (newCert) => {
+      this.emit('cert-renewed', newCert)
+      // 通知适配器证书更新(如热重载)
+      await this.adapter.serverInstance?.refresh(newCert)
+      this.adapter.onCertRenewed?.(newCert)
+    })
+  }
+ 
+  public async init() {
+    // 初始化证书
+    await this.certManager.initialize().catch(err => this.emit('error', err))
+  }
+ 
+  /**
+   * 生成框架特定的中间件
+   */
+  public middleware() {
+    return this.adapter.createMiddleware?.(this.options)
+  }
+ 
+  public refresh(options: Certificate) {
+    if (!this.adapter.serverInstance)
+      return
+ 
+    return this.adapter.serverInstance.refresh(options)
+  }
+ 
+  public kill() {
+    if (!this.adapter.serverInstance)
+      return
+ 
+    return this.adapter.serverInstance.kill()
+  }
+ 
+  /**
+   * 启动 HTTPS 服务
+   */
+  public async startServer(app?: App) {
+    // 确保证书已就绪
+    await this.certManager.ensureValidCert()
+    // 如果适配器有自定义服务启动逻辑,优先使用
+    if (typeof this.adapter.createServer === 'function' && this.certManager.currentCert) {
+      const options = { ...this.options, ...this.certManager.currentCert }
+      await this.adapter.createServer(options, app)
+      return options
+    }
+    else {
+      throw new TypeError('Unsupported framework: default server logic requires an app with listen()')
+    }
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/index.html b/packages/core/src/index.html new file mode 100644 index 0000000..191cc91 --- /dev/null +++ b/packages/core/src/index.html @@ -0,0 +1,206 @@ + + + + + + Code coverage report for packages/core/src + + + + + + + + + +
+
+

All files packages/core/src

+
+ +
+ 0% + Statements + 0/211 +
+ + +
+ 71.42% + Branches + 5/7 +
+ + +
+ 71.42% + Functions + 5/7 +
+ + +
+ 0% + Lines + 0/211 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
certificate-manager.ts +
+
0%0/59100%1/1100%1/10%0/59
emitter.ts +
+
0%0/00%1/10%1/10%0/0
https-adapter.ts +
+
0%0/16100%1/1100%1/10%0/16
https-enabler.ts +
+
0%0/59100%1/1100%1/10%0/59
index.ts +
+
0%0/40%0/10%0/10%0/4
logger.ts +
+
0%0/130%0/10%0/10%0/13
same-port-ssl.ts +
+
0%0/60100%1/1100%1/10%0/60
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts deleted file mode 100644 index 2a60ff6..0000000 --- a/packages/core/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './certificate-manager' -export * from './https-adapter' -export * from './https-enabler' -export * from './same-port-ssl' -export type * from './type' diff --git a/packages/core/src/index.ts.html b/packages/core/src/index.ts.html new file mode 100644 index 0000000..ce81936 --- /dev/null +++ b/packages/core/src/index.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for packages/core/src/index.ts + + + + + + + + + +
+
+

All files / packages/core/src index.ts

+
+ +
+ 0% + Statements + 0/4 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6  +  +  +  +  + 
export * from './certificate-manager'
+export * from './https-adapter'
+export * from './https-enabler'
+export * from './same-port-ssl'
+export type * from './type'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/logger.ts b/packages/core/src/logger.ts deleted file mode 100644 index 5745f17..0000000 --- a/packages/core/src/logger.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Logger, { Transports } from '@https-enable/logger' - -function createLogFormat(colorize = false) { - return Logger.createLogFormat(colorize, 'https-enabler') -} - -export const logger = new Logger({ - format: createLogFormat(), - transports: [ - new Transports.Console({ - format: createLogFormat(true), - }), - ], -}) - -export default logger diff --git a/packages/core/src/logger.ts.html b/packages/core/src/logger.ts.html new file mode 100644 index 0000000..2156280 --- /dev/null +++ b/packages/core/src/logger.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for packages/core/src/logger.ts + + + + + + + + + +
+
+

All files / packages/core/src logger.ts

+
+ +
+ 0% + Statements + 0/13 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Logger, { Transports } from '@https-enable/logger'
+ 
+function createLogFormat(colorize = false) {
+  return Logger.createLogFormat(colorize, 'https-enabler')
+}
+ 
+export const logger = new Logger({
+  format: createLogFormat(),
+  transports: [
+    new Transports.Console({
+      format: createLogFormat(true),
+    }),
+  ],
+})
+ 
+export default logger
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/same-port-ssl.ts b/packages/core/src/same-port-ssl.ts deleted file mode 100644 index 8bb138a..0000000 --- a/packages/core/src/same-port-ssl.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* eslint-disable no-sequences */ -import type { Prettify } from '@https-enable/types' -import type { AppType, SamePortOptions } from './type' -import http from 'node:http' -import net from 'node:net' -import process from 'node:process' -import tls from 'node:tls' -import { verifyCertificate } from '@https-enable/mkcert' - -/** - * - * @param app - * @param options - * @link https://gist.github.com/Coolchickenguy/a424ab0f4d32f024b39cd8cdd2b912ae - */ -export function samePortSSL(app: AppType, options: SamePortOptions) { - const isRedirect = options.redirect ?? false - const host = options.host - const port = Number(options.port) - - // The tcp server that receves all the requests - const tcpserver = net.createServer() - // The normal server ( MUST be http or else it will try sorting the encription out itself and will fail in this configuration) - // This is just as secure as the normal nodejs https server - // eslint-disable-next-line ts/ban-ts-comment - // @ts-expect-error - let server = http.createServer(options, app) - // A server that redirect all the requests to https, you could have this be the normal server too. - const redirectServer - = http.createServer(isRedirect - ? (req, res) => (res.writeHead(302, { location: `https://${req.headers.host || req.url}` }), res.end()) - : app) - - // Make the proxy server listen - tcpserver.listen(port, host) - - // Handle request - tcpserver.on('connection', (socket) => { - // Detect http or https/tls handskake - socket.once('data', (data) => { - // Buffer incomeing requests - socket.pause() - // Detect if the provided handshake data is TLS by checking if it starts with 22, which TLS always dose - if (data[0] === 22) { - // Https - // You may use this socket as a TLS socket, meaning you can attach this to the same http server - const sock = new tls.TLSSocket(socket, { isServer: true, ...options }) - // Add the TLS socket as a connection to the main http server - server.emit('connection', sock) - // Append data to start of data buffer - socket.unshift(data) - } - else { - // Http - // Emit the socket to the redirect server - redirectServer.emit('connection', socket) - // Http views the events, meaning I can just refire the eventEmiter - socket.emit('data', data) - } - // Resume socket - process.nextTick(() => socket.resume()) - }) - }) - - class ServerInstance { - isAlive: boolean = true - - /** - * Kill the server - * @returns A promise that resolves when the server ends - */ - kill() { - return new Promise((resolve, fail) => { - tcpserver.close((err) => { - if (typeof err === 'undefined') { - server.closeAllConnections() - redirectServer.closeAllConnections() - this.isAlive = false - resolve() - } - else { - fail(err) - } - }) - }) - } - - /** - * Change the server options - * @param newOptions The new server options - * @param newOptions.cert cert content - * @param newOptions.key key content - */ - async refresh(newOptions: { cert: string, key: string }) { - if (newOptions && newOptions.cert && newOptions.key && typeof newOptions.cert === 'string' && typeof newOptions.key === 'string') { - const verify = await verifyCertificate(newOptions.key, newOptions.cert) - if (!verify.match) - return - - // 证书校验有效再更新 server - options = { ...options, ...newOptions } - // eslint-disable-next-line ts/ban-ts-comment - // @ts-expect-error - return server = http.createServer(options, app) - } - } - } - - return new Promise(resolve => tcpserver.on('listening', () => resolve(new ServerInstance()))) -} - -export type ServerInstance = Prettify>> diff --git a/packages/core/src/same-port-ssl.ts.html b/packages/core/src/same-port-ssl.ts.html new file mode 100644 index 0000000..fcc8f3a --- /dev/null +++ b/packages/core/src/same-port-ssl.ts.html @@ -0,0 +1,421 @@ + + + + + + Code coverage report for packages/core/src/same-port-ssl.ts + + + + + + + + + +
+
+

All files / packages/core/src same-port-ssl.ts

+
+ +
+ 0% + Statements + 0/60 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/60 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable no-sequences */
+import type { Prettify } from '@https-enable/types'
+import type { AppType, SamePortOptions } from './type'
+import http from 'node:http'
+import net from 'node:net'
+import process from 'node:process'
+import tls from 'node:tls'
+import { verifyCertificate } from '@https-enable/mkcert'
+ 
+/**
+ *
+ * @param app
+ * @param options
+ * @link https://gist.github.com/Coolchickenguy/a424ab0f4d32f024b39cd8cdd2b912ae
+ */
+export function samePortSSL(app: AppType, options: SamePortOptions) {
+  const isRedirect = options.redirect ?? false
+  const host = options.host
+  const port = Number(options.port)
+ 
+  // The tcp server that receves all the requests
+  const tcpserver = net.createServer()
+  // The normal server ( MUST be http or else it will try sorting the encription out itself and will fail in this configuration)
+  // This is just as secure as the normal nodejs https server
+  // eslint-disable-next-line ts/ban-ts-comment
+  // @ts-expect-error
+  let server = http.createServer(options, app)
+  // A server that redirect all the requests to https, you could have this be the normal server too.
+  const redirectServer
+    = http.createServer(isRedirect
+      ? (req, res) => (res.writeHead(302, { location: `https://${req.headers.host || req.url}` }), res.end())
+      : app)
+ 
+  // Make the proxy server listen
+  tcpserver.listen(port, host)
+ 
+  // Handle request
+  tcpserver.on('connection', (socket) => {
+    // Detect http or https/tls handskake
+    socket.once('data', (data) => {
+      // Buffer incomeing requests
+      socket.pause()
+      // Detect if the provided handshake data is TLS by checking if it starts with 22, which TLS always dose
+      if (data[0] === 22) {
+        // Https
+        // You may use this socket as a TLS socket, meaning you can attach this to the same http server
+        const sock = new tls.TLSSocket(socket, { isServer: true, ...options })
+        // Add the TLS socket as a connection to the main http server
+        server.emit('connection', sock)
+        // Append data to start of data buffer
+        socket.unshift(data)
+      }
+      else {
+        // Http
+        // Emit the socket to the redirect server
+        redirectServer.emit('connection', socket)
+        // Http views the events, meaning I can just refire the eventEmiter
+        socket.emit('data', data)
+      }
+      // Resume socket
+      process.nextTick(() => socket.resume())
+    })
+  })
+ 
+  class ServerInstance {
+    isAlive: boolean = true
+ 
+    /**
+     * Kill the server
+     * @returns A promise that resolves when the server ends
+     */
+    kill() {
+      return new Promise<void>((resolve, fail) => {
+        tcpserver.close((err) => {
+          if (typeof err === 'undefined') {
+            server.closeAllConnections()
+            redirectServer.closeAllConnections()
+            this.isAlive = false
+            resolve()
+          }
+          else {
+            fail(err)
+          }
+        })
+      })
+    }
+ 
+    /**
+     * Change the server options
+     * @param newOptions The new server options
+     * @param newOptions.cert cert content
+     * @param newOptions.key key content
+     */
+    async refresh(newOptions: { cert: string, key: string }) {
+      if (newOptions && newOptions.cert && newOptions.key && typeof newOptions.cert === 'string' && typeof newOptions.key === 'string') {
+        const verify = await verifyCertificate(newOptions.key, newOptions.cert)
+        if (!verify.match)
+          return
+ 
+        // 证书校验有效再更新 server
+        options = { ...options, ...newOptions }
+        // eslint-disable-next-line ts/ban-ts-comment
+        // @ts-expect-error
+        return server = http.createServer(options, app)
+      }
+    }
+  }
+ 
+  return new Promise<ServerInstance>(resolve => tcpserver.on('listening', () => resolve(new ServerInstance())))
+}
+ 
+export type ServerInstance = Prettify<Awaited<ReturnType<typeof samePortSSL>>>
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/core/src/type.d.ts b/packages/core/src/type.d.ts deleted file mode 100644 index 0291dec..0000000 --- a/packages/core/src/type.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { Certificate, CertificatePath, CreateOptions, Prettify, VerifyOptions } from '@https-enable/mkcert' -import type { MakeOnlyRequired } from '@https-enable/types' -import type http from 'node:http' -import type http2 from 'node:http2' -import type https from 'node:https' -import type { ServerInstance } from './same-port-ssl' - -export type CertificateManagerOptions = Prettify & CertificatePath & { cache?: boolean }> - -export type ServerOptions = Prettify -export type SamePortOptions = Prettify - -export type RawServerBase = http.Server | https.Server | http2.Http2Server | http2.Http2SecureServer - -/** - * The default request type based on the server type. Utilizes generic constraining. - */ -export type RawRequestDefaultExpression< - RawServer extends RawServerBase = RawServerDefault, -> = RawServer extends http.Server | https.Server ? http.IncomingMessage - : RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerRequest - : never - -/** - * The default reply type based on the server type. Utilizes generic constraining. - */ -export type RawReplyDefaultExpression< - RawServer extends RawServerBase = RawServerDefault, -> = RawServer extends http.Server | https.Server ? http.ServerResponse - : RawServer extends http2.Http2Server | http2.Http2SecureServer ? http2.Http2ServerResponse - : never - -export type AppType = http.RequestListener | ((req: RawRequestDefaultExpression, res: RawReplyDefaultExpression) => any) -export type MiddlewareType = any - -export type { ServerInstance } diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/core/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/logger/build.config.ts b/packages/logger/build.config.ts deleted file mode 100644 index 98d6874..0000000 --- a/packages/logger/build.config.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: false, - output: { - exports: 'named', - }, - }, - failOnWarn: false, - // 声明隐式外部依赖(消除构建时警告) - externals: [ - '@https-enable/types', - ], -}) diff --git a/packages/logger/changelog.md b/packages/logger/changelog.md deleted file mode 100644 index f5222d2..0000000 --- a/packages/logger/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/logger@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/logger@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/logger@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/logger@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/logger@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/logger@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/logger@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/logger@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/logger/dist/index.cjs.html b/packages/logger/dist/index.cjs.html new file mode 100644 index 0000000..d7613d7 --- /dev/null +++ b/packages/logger/dist/index.cjs.html @@ -0,0 +1,2272 @@ + + + + + + Code coverage report for packages/logger/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/logger/dist index.cjs

+
+ +
+ 0% + Statements + 0/696 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/696 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+Object.defineProperty(exports, '__esModule', { value: true });
+ 
+const utils = require('@https-enable/utils');
+const colors = require('@https-enable/colors');
+const jsonStringify = require('safe-stable-stringify');
+const ms$1 = require('ms');
+const util = require('node:util');
+const fecha = require('fecha');
+const os = require('node:os');
+ 
+function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
+ 
+const jsonStringify__default = /*#__PURE__*/_interopDefaultCompat(jsonStringify);
+const ms__default = /*#__PURE__*/_interopDefaultCompat(ms$1);
+const util__default = /*#__PURE__*/_interopDefaultCompat(util);
+const fecha__default = /*#__PURE__*/_interopDefaultCompat(fecha);
+const os__default = /*#__PURE__*/_interopDefaultCompat(os);
+ 
+class InvalidFormatError extends Error {
+  // eslint-disable-next-line ts/no-unsafe-function-type
+  constructor(formatFn) {
+    super(`Format functions must be synchronous taking two arguments: (info, opts)
+Found: ${formatFn.toString().split("\n")[0]}
+`);
+    Error.captureStackTrace(this, InvalidFormatError);
+  }
+}
+const format = function(formatFn) {
+  if (formatFn.length > 2) {
+    throw new InvalidFormatError(formatFn);
+  }
+  class Format {
+    options;
+    constructor(options = {}) {
+      this.options = options;
+    }
+    transform = formatFn;
+  }
+  function createFormatWrap(opts) {
+    return new Format(opts);
+  }
+  createFormatWrap.Format = Format;
+  return createFormatWrap;
+};
+ 
+const cli$1 = {
+  levels: {
+    ERROR: 0,
+    WARN: 1,
+    HELP: 2,
+    DATA: 3,
+    INFO: 4,
+    DEBUG: 5,
+    PROMPT: 6,
+    VERBOSE: 7,
+    INPUT: 8,
+    SILLY: 9
+  }};
+ 
+const npm = {
+  levels: {
+    ERROR: 0,
+    WARN: 1,
+    INFO: 2,
+    HTTP: 3,
+    VERBOSE: 4,
+    DEBUG: 5,
+    SILLY: 6
+  },
+  colors: {
+    ERROR: "red",
+    WARN: "yellow",
+    INFO: "green",
+    HTTP: "green",
+    VERBOSE: "cyan",
+    DEBUG: "blue",
+    SILLY: "magenta"
+  }
+};
+ 
+const configs = { cli: cli$1, npm};
+const LEVEL = Symbol.for("level");
+const MESSAGE = Symbol.for("message");
+const SPLAT = Symbol.for("splat");
+ 
+class Colorizer {
+  static allColors = {};
+  options;
+  constructor(opts = {}) {
+    if (opts.colors) {
+      this.addColors(opts.colors);
+    }
+    this.options = opts;
+  }
+  /**
+   * 添加颜色配置到静态属性
+   */
+  static addColors(colors) {
+    const nextColors = Object.entries(colors).reduce((acc, [level, spec]) => {
+      acc[level] = typeof spec === "string" ? spec.split(/\s+/) : spec;
+      return acc;
+    }, {});
+    Colorizer.allColors = { ...Colorizer.allColors, ...nextColors };
+    return Colorizer.allColors;
+  }
+  /**
+   * 实例方法添加颜色配置
+   */
+  addColors(colors) {
+    return Colorizer.addColors(colors);
+  }
+  /**
+   * 执行颜色处理的核心方法
+   */
+  colorize(lookup, level, message) {
+    if (typeof message === "undefined") {
+      message = level;
+    }
+    const colorSpec = Colorizer.allColors[lookup];
+    if (!colorSpec) {
+      return String(message);
+    }
+    return colors.styleText(colorSpec, message);
+  }
+  /**
+   * 转换日志信息的入口方法
+   */
+  transform = (info, opts) => {
+    const options = { ...this.options, ...opts };
+    const levelKey = info[LEVEL] || info.level;
+    if (options.all && typeof info[MESSAGE] === "string") {
+      info[MESSAGE] = this.colorize(levelKey, info.level, info[MESSAGE]);
+    }
+    if (options.level || options.all || !options.message) {
+      info.level = this.colorize(levelKey, info.level);
+    }
+    if (options.all || options.message) {
+      info.message = this.colorize(levelKey, info.level, info.message);
+    }
+    return info;
+  };
+}
+const colorize = (opts = {}) => new Colorizer(opts);
+ 
+const levels = (config) => {
+  Colorizer.addColors(config.colors);
+  return config;
+};
+ 
+const align = format((info) => {
+  info.message = `	${info.message}`;
+  return info;
+});
+ 
+class Padder {
+  paddings;
+  options;
+  constructor(opts = { levels: configs.npm.levels }) {
+    this.paddings = Padder.paddingForLevels(opts.levels || configs.npm.levels, opts.filler);
+    this.options = opts;
+  }
+  /**
+   * Returns the maximum length of keys in the specified `levels` Object.
+   * @param levels Set of all levels to calculate longest level against.
+   * @returns Maximum length of the longest level string.
+   */
+  static getLongestLevel(levels) {
+    const lvls = Object.keys(levels).map((level) => level.length);
+    return Math.max(...lvls);
+  }
+  /**
+   * Returns the padding for the specified `level` assuming that the
+   * maximum length of all levels it's associated with is `maxLength`.
+   * @param level Level to calculate padding for.
+   * @param filler Repeatable text to use for padding.
+   * @param maxLength Length of the longest level
+   * @returns Padding string for the `level`
+   */
+  static paddingForLevel(level, filler, maxLength) {
+    const targetLen = maxLength + 1 - level.length;
+    const rep = Math.floor(targetLen / filler.length);
+    const padding = `${filler}${filler.repeat(rep)}`;
+    return padding.slice(0, targetLen);
+  }
+  /**
+   * Returns an object with the string paddings for the given `levels`
+   * using the specified `filler`.
+   * @param levels Set of all levels to calculate padding for.
+   * @param filler Repeatable text to use for padding.
+   * @returns Mapping of level to desired padding.
+   */
+  static paddingForLevels(levels, filler = " ") {
+    const maxLength = Padder.getLongestLevel(levels);
+    return Object.keys(levels).reduce((acc, level) => {
+      acc[level] = Padder.paddingForLevel(level, filler, maxLength);
+      return acc;
+    }, {});
+  }
+  /**
+   * Prepends the padding onto the `message` based on the `LEVEL` of
+   * the `info`. This is based on the behavior of `winston@2` which also
+   * prepended the level onto the message.
+   *
+   * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201
+   *
+   * @param info Logform info object
+   * @param opts Options passed along to this instance.
+   * @returns Modified logform info object.
+   */
+  // eslint-disable-next-line unused-imports/no-unused-vars
+  transform = (info, opts = {}) => {
+    const level = info[LEVEL];
+    const paddings = level ? this.paddings[level] : "";
+    info.message = `${paddings}${info.message}`;
+    if (info[MESSAGE]) {
+      info[MESSAGE] = `${paddings}${info[MESSAGE]}`;
+    }
+    return info;
+  };
+}
+const padLevels = (opts) => new Padder(opts);
+ 
+class CliFormat {
+  colorizer;
+  padder;
+  options;
+  constructor(opts = {}) {
+    if (!opts.levels) {
+      opts.levels = configs.cli.levels;
+    }
+    this.colorizer = new Colorizer(opts);
+    this.padder = new Padder(opts);
+    this.options = opts;
+  }
+  /*
+   * function transform (info, opts)
+   * Attempts to both:
+   * 1. Pad the { level }
+   * 2. Colorize the { level, message }
+   * of the given `logform` info object depending on the `opts`.
+   */
+  transform = (info, opts) => {
+    this.colorizer.transform(this.padder.transform(info, opts), opts);
+    info[MESSAGE] = `${info.level}:${info.message}`;
+    return info;
+  };
+}
+const cli = (opts) => new CliFormat(opts);
+ 
+function cascade(formats) {
+  if (!formats.every(isValidFormat)) {
+    return;
+  }
+  return (info) => {
+    let obj = info;
+    for (let i = 0; i < formats.length; i++) {
+      const format2 = formats[i];
+      const temp = format2.transform(obj, format2.options);
+      obj = temp;
+    }
+    return obj;
+  };
+}
+function isValidFormat(fmt) {
+  if (typeof fmt.transform !== "function") {
+    throw new TypeError([
+      "No transform function found on format. Did you create a format instance?",
+      "const myFormat = format(formatFn);",
+      "const instance = myFormat();"
+    ].join("\n"));
+  }
+  return true;
+}
+function combine(...formats) {
+  const combinedFormat = format(cascade(formats));
+  const instance = combinedFormat();
+  Object.defineProperty(instance, "Format", {
+    value: combinedFormat.Format
+  });
+  return instance;
+}
+ 
+const errors = format((einfo, { stack, cause } = {}) => {
+  if (einfo instanceof Error) {
+    const info = {
+      ...einfo,
+      level: einfo.level,
+      [LEVEL]: einfo[LEVEL] || einfo.level,
+      message: einfo.message,
+      [MESSAGE]: einfo[MESSAGE] || einfo.message
+    };
+    stack && (info.stack = einfo.stack);
+    cause && (info.cause = einfo.cause);
+    return info;
+  }
+  if (!(einfo.message instanceof Error))
+    return einfo;
+  const err = einfo.message;
+  Object.assign(einfo, err);
+  einfo.message = err.message;
+  einfo[MESSAGE] = err.message;
+  stack && (einfo.stack = err.stack);
+  cause && (einfo.cause = err.cause);
+  return einfo;
+});
+ 
+function replacer(key, value) {
+  if (typeof value === "bigint") {
+    return value.toString();
+  }
+  return value;
+}
+const json = format((info, opts = {}) => {
+  const jsonStringify = jsonStringify__default.configure(opts);
+  info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);
+  return info;
+});
+ 
+const label = format((info, opts = {}) => {
+  if (opts.message) {
+    info.message = `[${opts.label}] ${info.message}`;
+    return info;
+  }
+  info.label = opts.label;
+  return info;
+});
+ 
+const logstash = format((info) => {
+  const logstash = {};
+  if (info.message) {
+    logstash["@message"] = info.message;
+    delete info.message;
+  }
+  if (info.timestamp) {
+    logstash["@timestamp"] = info.timestamp;
+    delete info.timestamp;
+  }
+  logstash["@fields"] = info;
+  info[MESSAGE] = jsonStringify__default(logstash);
+  return info;
+});
+ 
+function fillExcept(info, fillExceptKeys, metadataKey) {
+  const savedKeys = fillExceptKeys.reduce((acc, key) => {
+    acc[key] = info[key];
+    delete info[key];
+    return acc;
+  }, {});
+  const metadata = Object.keys(info).reduce((acc, key) => {
+    acc[key] = info[key];
+    delete info[key];
+    return acc;
+  }, {});
+  Object.assign(info, savedKeys, {
+    [metadataKey]: metadata
+  });
+  return info;
+}
+function fillWith(info, fillWithKeys, metadataKey) {
+  info[metadataKey] = fillWithKeys.reduce((acc, key) => {
+    acc[key] = info[key];
+    delete info[key];
+    return acc;
+  }, {});
+  return info;
+}
+const metadata = format((info, opts = {}) => {
+  const metadataKey = opts.key || "metadata";
+  let fillExceptKeys = [];
+  if (!opts.fillExcept && !opts.fillWith) {
+    fillExceptKeys.push("level");
+    fillExceptKeys.push("message");
+  }
+  if (opts.fillExcept) {
+    fillExceptKeys = opts.fillExcept;
+  }
+  if (fillExceptKeys.length > 0) {
+    return fillExcept(info, fillExceptKeys, metadataKey);
+  }
+  if (opts.fillWith) {
+    return fillWith(info, opts.fillWith, metadataKey);
+  }
+  return info;
+});
+ 
+let prevTime;
+const ms = format((info) => {
+  const curr = +/* @__PURE__ */ new Date();
+  const diff = curr - (prevTime || curr);
+  prevTime = curr;
+  info.ms = `+${ms__default(diff)}`;
+  return info;
+});
+ 
+const prettyPrint = format((info, opts = {}) => {
+  const stripped = { ...info };
+  delete stripped[LEVEL];
+  delete stripped[MESSAGE];
+  delete stripped[SPLAT];
+  info[MESSAGE] = util.inspect(stripped, false, opts.depth || null, opts.colorize);
+  return info;
+});
+ 
+class Printf {
+  template;
+  constructor(templateFn) {
+    this.template = templateFn;
+  }
+  transform = (info) => {
+    info[MESSAGE] = this.template(info);
+    return info;
+  };
+}
+const printf = (templateFn) => new Printf(templateFn);
+ 
+const simple = format((info) => {
+  const stringifiedRest = jsonStringify__default({
+    ...info,
+    level: void 0,
+    message: void 0,
+    splat: void 0
+  });
+  const padding = info.padding && info.padding[info.level] || "";
+  if (stringifiedRest && stringifiedRest !== "{}") {
+    info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;
+  } else {
+    info[MESSAGE] = `${info.level}:${padding} ${info.message}`;
+  }
+  return info;
+});
+ 
+const formatRegExp = /%[scdjifoO%]/g;
+const escapedPercent = /%%/g;
+class Splatter {
+  constructor() {
+  }
+  /**
+   * 检查 tokens <= splat.length,将 { splat, meta } 分配到 `info` 中,并写入此实例。
+   *
+   * @param info Logform 信息消息。
+   * @param tokens 一组字符串插值标记。
+   * @returns 修改后的信息消息
+   * @private
+   */
+  _splat(info, tokens) {
+    const msg = info.message || "";
+    const splat = info[SPLAT] || info.splat || [];
+    const percents = msg.match(escapedPercent);
+    const escapes = percents ? percents.length : 0;
+    const expectedSplat = tokens.length - escapes;
+    const extraSplat = expectedSplat - splat.length;
+    const metas = extraSplat < 0 ? splat.splice(extraSplat, -1 * extraSplat) : [];
+    const metalen = metas.length;
+    if (metalen) {
+      for (let i = 0; i < metalen; i++) {
+        Object.assign(info, metas[i]);
+      }
+    }
+    info.message = util__default.format(msg, ...splat);
+    return info;
+  }
+  /**
+   * 使用 `util.format` 完成 `info.message` 提供的 `info` 消息。
+   * 如果没有标记,则 `info` 是不可变的。
+   *
+   * @param info Logform 信息消息。
+   * @returns 修改后的信息消息
+   */
+  transform = (info) => {
+    const msg = info.message || "";
+    const splat = info[SPLAT] || info.splat;
+    if (!splat || !splat.length) {
+      return info;
+    }
+    const tokens = msg.match(formatRegExp);
+    if (!tokens && (splat || splat.length)) {
+      const metas = splat.length > 1 ? splat.splice(0) : splat;
+      const metalen = metas.length;
+      if (metalen) {
+        for (let i = 0; i < metalen; i++) {
+          Object.assign(info, metas[i]);
+        }
+      }
+      return info;
+    }
+    if (tokens) {
+      return this._splat(info, tokens);
+    }
+    return info;
+  };
+}
+const splat = () => new Splatter();
+ 
+const timestamp = format((info, opts = {}) => {
+  if (opts.format) {
+    info.timestamp = typeof opts.format === "function" ? opts.format() : fecha__default.format(/* @__PURE__ */ new Date(), opts.format);
+  }
+  if (!info.timestamp) {
+    info.timestamp = (/* @__PURE__ */ new Date()).toISOString();
+  }
+  if (opts.alias) {
+    info[opts.alias] = info.timestamp;
+  }
+  return info;
+});
+ 
+function stripColors(str) {
+  return `${str}`.replace(/\x1B\[\d+m/g, "");
+}
+const uncolorize = format((info, opts = {}) => {
+  if (opts.level !== false) {
+    info.level = stripColors(info.level);
+  }
+  if (opts.message !== false) {
+    info.message = stripColors(String(info.message));
+  }
+  if (opts.raw !== false && info[MESSAGE]) {
+    info[MESSAGE] = stripColors(String(info[MESSAGE]));
+  }
+  return info;
+});
+ 
+function exposeFormat(name, requireFormat) {
+  Object.defineProperty(format, name, {
+    get() {
+      return requireFormat();
+    },
+    configurable: true
+  });
+}
+exposeFormat("align", () => align);
+exposeFormat("cli", () => cli);
+exposeFormat("colorize", () => colorize);
+exposeFormat("combine", () => combine);
+exposeFormat("errors", () => errors);
+exposeFormat("json", () => json);
+exposeFormat("label", () => label);
+exposeFormat("logstash", () => logstash);
+exposeFormat("metadata", () => metadata);
+exposeFormat("ms", () => ms);
+exposeFormat("padLevels", () => padLevels);
+exposeFormat("prettyPrint", () => prettyPrint);
+exposeFormat("printf", () => printf);
+exposeFormat("simple", () => simple);
+exposeFormat("splat", () => splat);
+exposeFormat("timestamp", () => timestamp);
+exposeFormat("uncolorize", () => uncolorize);
+ 
+class Transport {
+  level;
+  eol;
+  name;
+  levels;
+  options;
+  constructor(options) {
+    this.options = options;
+    this.name = options.name;
+    this.level = options.level;
+    this.levels = options.levels || levels(configs.npm).levels;
+    this.eol = typeof options.eol === "string" ? options.eol : os__default.EOL;
+  }
+  // 判断是否满足日志级别要求
+  shouldLog(level, force = false) {
+    level = level.replace(utils.ColorStringRE, "");
+    const levels2 = Object.keys(this.levels).reverse();
+    return force || levels2.indexOf(level) >= levels2.indexOf(this.level || "INFO");
+  }
+  // 使用局部format
+  selfFormat(options) {
+    if (this.options.format && options) {
+      return this.options.format.transform(options);
+    }
+  }
+}
+ 
+class ConsoleTransport extends Transport {
+  constructor(options = {}) {
+    super(options);
+    this.name = options.name || "console";
+  }
+  log = (info, callback, options, force) => {
+    info = this.selfFormat(options) || info;
+    const data = { ...info };
+    if (!force && !this.shouldLog(data.level))
+      return callback?.();
+    console.log(`${data[MESSAGE]}`);
+    callback?.();
+  };
+}
+ 
+class StreamTransport extends Transport {
+  stream;
+  isObjectMode;
+  constructor(options = {}) {
+    super(options);
+    if (!options.stream || !utils.isStream(options.stream)) {
+      throw new Error("options.stream is required.");
+    }
+    this.name = options.name || "console";
+    this.stream = options.stream;
+    this.isObjectMode = options.stream._writableState?.objectMode || false;
+    this.stream.setMaxListeners(Infinity);
+  }
+  log = (info, callback, options, force) => {
+    if (!force && !this.shouldLog(info.level))
+      return callback?.();
+    const handleComplete = (error) => {
+      if (error)
+        return callback?.(error);
+      callback?.();
+    };
+    try {
+      info = this.selfFormat(options) || info;
+      let payload;
+      if (this.isObjectMode)
+        payload = { ...info };
+      else
+        payload = `${info[MESSAGE]}${this.eol}`;
+      const canWrite = this.stream.write(payload, (error) => {
+        handleComplete(error || void 0);
+      });
+      if (!canWrite) {
+        this.stream.once("drain", () => handleComplete());
+      }
+    } catch (error) {
+      handleComplete(error instanceof Error ? error : new Error(String(error)));
+    }
+  };
+}
+ 
+const transports = {
+  Console: ConsoleTransport,
+  Stream: StreamTransport
+};
+ 
+class Logger {
+  level;
+  levels;
+  silent;
+  transports = [];
+  /**
+   * 是否是隐式log
+   * @description 隐式 log 全局兜底
+   * @default false
+   */
+  isImplicit;
+  format;
+  constructor(options = {}) {
+    this.level = options.level || "INFO";
+    this.levels = options.levels || levels(configs.npm).levels;
+    this.silent = options.silent || false;
+    this.isImplicit = options.isImplicit || false;
+    this.format = options.format || Logger.createLogFormat(false);
+    if (options.transports) {
+      this.transports = Array.isArray(options.transports) ? options.transports : [options.transports];
+    }
+  }
+  static createLogFormat(colorize = false, label) {
+    const colorizer = format.colorize();
+    const appLabel = !!label && format.label({ label, message: true });
+    const timestamp = format.timestamp({ format: "YYYY-MM-DD HH:mm:ss.SSS" });
+    const logFormat = format.printf((info) => {
+      const levelWithoutColor = info.level.replace(utils.ColorStringRE, "");
+      const space = " ".repeat(6 - levelWithoutColor.length);
+      return `${info.timestamp ? info.timestamp.padEnd(info.timestamp.length + 1) : ""}${info.level}${space} ${info.message || ""}`;
+    });
+    return colorize ? appLabel ? format.combine(colorizer, appLabel, timestamp, logFormat) : format.combine(colorizer, timestamp, logFormat) : appLabel ? format.combine(appLabel, timestamp, logFormat) : format.combine(timestamp, logFormat);
+  }
+  updateLogFormat = (colorize = false) => {
+    this.format = Logger.createLogFormat(colorize);
+  };
+  log(level, message, options = {}, callback) {
+    if (options.force || this.shouldLog(level)) {
+      const isImplicit = options.isImplicit ?? this.isImplicit;
+      const isSilent = options.silent ?? this.silent;
+      if (!options.force && isImplicit && !isSilent) {
+        return callback?.();
+      } else if (options.force || !isSilent) {
+        const transformInfo = this.format.transform({ level, message });
+        if (!transformInfo[LEVEL]) {
+          transformInfo[LEVEL] = transformInfo.level;
+        }
+        if (!Object.keys(this.levels).includes(level)) {
+          console.error("[winston] Unknown logger level: %s", level);
+          console.error("[winston] levels: %j", this.levels);
+        }
+        if (!this.transports || (Array.isArray(this.transports) ? !this.transports.length : !this.transports)) {
+          console.error(
+            "[winston] Attempt to write logs with no transports, which can increase memory usage: %j",
+            transformInfo
+          );
+        }
+        try {
+          this.transports.forEach((transport) => {
+            !transport.level && (transport.level = this.level);
+            transport.log(transformInfo, callback, { level, message }, options.force);
+          });
+        } finally {
+          callback?.();
+        }
+        return;
+      }
+      return callback?.();
+    }
+  }
+  shouldLog(level) {
+    const levels2 = Object.keys(this.levels).reverse();
+    return levels2.indexOf(level) >= levels2.indexOf(this.level);
+  }
+  debug(message = "", options = {}) {
+    this.log("DEBUG", message, options);
+  }
+  info(message = "", options = {}) {
+    this.log("INFO", message, options);
+  }
+  warn(message = "", options = {}) {
+    this.log("WARN", message, options);
+  }
+  error(message = "", options = {}) {
+    this.log("ERROR", message, options);
+  }
+}
+ 
+exports.Logger = Logger;
+exports.Transports = transports;
+exports.default = Logger;
+exports.format = format;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/dist/index.d.mts.html b/packages/logger/dist/index.d.mts.html new file mode 100644 index 0000000..43b2def --- /dev/null +++ b/packages/logger/dist/index.d.mts.html @@ -0,0 +1,1465 @@ + + + + + + Code coverage report for packages/logger/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/logger/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { FormatKeys } from '@https-enable/colors';
+import { MapTuple, Prettify } from '@https-enable/types';
+import stream from 'node:stream';
+ 
+interface UncolorizeOptions {
+    /**
+     * Disables the uncolorize format for `info.level` if set to `false`.
+     */
+    level?: boolean;
+    /**
+     * Disables the uncolorize format for `info.message` if set to `false`.
+     */
+    message?: boolean;
+    /**
+     * Disables the uncolorize format for `info[MESSAGE]` if set to `false`.
+     */
+    raw?: boolean;
+}
+declare const _default$g: FormatWrap<UncolorizeOptions>;
+ 
+interface TimestampOptions {
+    /**
+     * Either the format as a string accepted by the [fecha](https://github.com/taylorhakes/fecha)
+     * module or a function that returns a formatted date. If no format is provided `new
+     * Date().toISOString()` will be used.
+     */
+    format?: string | (() => string);
+    /**
+     * The name of an alias for the timestamp property, that will be added to the `info` object.
+     */
+    alias?: string;
+}
+declare const _default$f: FormatWrap<TimestampOptions>;
+ 
+declare class Splatter {
+    constructor();
+    /**
+     * 检查 tokens <= splat.length,将 { splat, meta } 分配到 `info` 中,并写入此实例。
+     *
+     * @param info Logform 信息消息。
+     * @param tokens 一组字符串插值标记。
+     * @returns 修改后的信息消息
+     * @private
+     */
+    private _splat;
+    /**
+     * 使用 `util.format` 完成 `info.message` 提供的 `info` 消息。
+     * 如果没有标记,则 `info` 是不可变的。
+     *
+     * @param info Logform 信息消息。
+     * @returns 修改后的信息消息
+     */
+    transform: TransformFunction;
+}
+declare const _default$e: () => Splatter;
+ 
+declare const _default$d: FormatWrap<Record<any, any>>;
+ 
+type TemplateFn = (info: TransformableInfo) => any;
+declare class Printf {
+    template: TemplateFn;
+    constructor(templateFn: TemplateFn);
+    transform: TransformFunction;
+}
+declare const _default$c: (templateFn: TemplateFn) => Printf;
+ 
+interface PrettyPrintOptions {
+    /**
+     * A `number` that specifies the maximum depth of the `info` object being stringified by
+     * `util.inspect`. Defaults to `2`.
+     */
+    depth?: number;
+    /**
+     * Colorizes the message if set to `true`. Defaults to `false`.
+     */
+    colorize?: boolean;
+}
+declare const _default$b: FormatWrap<PrettyPrintOptions>;
+ 
+interface PadLevelsOptions {
+    /**
+     * Log levels. Defaults to `configs.npm.levels` from [triple-beam](https://github.com/winstonjs/triple-beam)
+     * module.
+     */
+    levels?: Record<string, number>;
+    filler?: string;
+}
+declare class Padder {
+    paddings: Record<string, string>;
+    options: PadLevelsOptions;
+    constructor(opts?: PadLevelsOptions);
+    /**
+     * Returns the maximum length of keys in the specified `levels` Object.
+     * @param levels Set of all levels to calculate longest level against.
+     * @returns Maximum length of the longest level string.
+     */
+    static getLongestLevel(levels: Record<string, any>): number;
+    /**
+     * Returns the padding for the specified `level` assuming that the
+     * maximum length of all levels it's associated with is `maxLength`.
+     * @param level Level to calculate padding for.
+     * @param filler Repeatable text to use for padding.
+     * @param maxLength Length of the longest level
+     * @returns Padding string for the `level`
+     */
+    static paddingForLevel(level: string, filler: string, maxLength: number): string;
+    /**
+     * Returns an object with the string paddings for the given `levels`
+     * using the specified `filler`.
+     * @param levels Set of all levels to calculate padding for.
+     * @param filler Repeatable text to use for padding.
+     * @returns Mapping of level to desired padding.
+     */
+    static paddingForLevels(levels: Record<string, any>, filler?: string): Record<string, string>;
+    /**
+     * Prepends the padding onto the `message` based on the `LEVEL` of
+     * the `info`. This is based on the behavior of `winston@2` which also
+     * prepended the level onto the message.
+     *
+     * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201
+     *
+     * @param info Logform info object
+     * @param opts Options passed along to this instance.
+     * @returns Modified logform info object.
+     */
+    transform: TransformFunction<PadLevelsOptions>;
+}
+declare const _default$a: (opts: PadLevelsOptions) => Padder;
+ 
+declare const _default$9: FormatWrap<Record<any, any>>;
+ 
+interface MetadataOptions {
+    /**
+     * The name of the key used for the metadata object. Defaults to `metadata`.
+     */
+    key?: string;
+    /**
+     * An array of keys that should not be added to the metadata object.
+     */
+    fillExcept?: string[];
+    /**
+     * An array of keys that will be added to the metadata object.
+     */
+    fillWith?: string[];
+}
+/**
+ * Adds in a "metadata" object to collect extraneous data, similar to the metadata
+ * object in winston 2.x.
+ */
+declare const _default$8: FormatWrap<MetadataOptions>;
+ 
+declare const _default$7: FormatWrap<Record<any, any>>;
+ 
+interface LabelOptions {
+    /**
+     * A label to be added before the message.
+     */
+    label?: string;
+    /**
+     * If set to `true` the `label` will be added to `info.message`. If set to `false` the `label`
+     * will be added as `info.label`.
+     */
+    message?: boolean;
+}
+declare const _default$6: FormatWrap<LabelOptions>;
+ 
+interface JsonOptions {
+    /**
+     * A function that influences how the `info` is stringified.
+     */
+    replacer?: (this: any, key: string, value: any) => any;
+    /**
+     * The number of white space used to format the json.
+     */
+    space?: number;
+    /**
+     * If `true`, bigint values are converted to a number. Otherwise, they are ignored.
+     * This option is ignored by default as Logform stringifies BigInt in the default replacer.
+     * @default true
+     */
+    bigint?: boolean;
+    /**
+     * Defines the value for circular references.
+     * Set to `undefined`, circular properties are not serialized (array entries are replaced with null).
+     * Set to `Error`, to throw on circular references.
+     * @default "[Circular]"
+     */
+    circularValue?: string | null | TypeErrorConstructor | ErrorConstructor;
+    /**
+     * If `true`, guarantee a deterministic key order instead of relying on the insertion order.
+     * @default true
+     */
+    deterministic?: boolean;
+    /**
+     * Maximum number of entries to serialize per object (at least one).
+     * The serialized output contains information about how many entries have not been serialized.
+     * Ignored properties are counted as well (e.g., properties with symbol values).
+     * Using the array replacer overrules this option.
+     * @default Infinity
+     */
+    maximumBreadth?: number;
+    /**
+     * Maximum number of object nesting levels (at least 1) that will be serialized.
+     * Objects at the maximum level are serialized as `"[Object]"` and arrays as `"[Array]"`.
+     * @default Infinity
+     */
+    maximumDepth?: number;
+}
+declare const _default$5: FormatWrap<JsonOptions>;
+ 
+interface ErrorsOptions {
+    /**
+     * If `true`, the `Error` object's `stack` property will be appended to the `info` object.
+     */
+    stack?: boolean;
+    /**
+     * If `true`, the `Error` object's `cause` property will be appended to the `info` object.
+     */
+    cause?: boolean;
+}
+declare const _default$4: FormatWrap<ErrorsOptions>;
+ 
+declare const LEVEL: unique symbol;
+declare const MESSAGE: unique symbol;
+declare const SPLAT: unique symbol;
+/**
+ * 简易日志级别
+ * @description 供外部使用
+ */
+declare const SimpleLevelTuple: readonly ["ERROR", "WARN", "INFO", "DEBUG"];
+ 
+type ColorMap = Record<string, string | string[]>;
+interface ColorizeOptions {
+    /**
+     * If set to `true` the color will be applied to the `level`.
+     */
+    level?: boolean;
+    /**
+     * If set to `true` the color will be applied to the `message` and `level`.
+     */
+    all?: boolean;
+    /**
+     * If set to `true` the color will be applied to the `message`.
+     */
+    message?: boolean;
+    /**
+     * An object containing the colors for the log levels. For example: `{ info: 'blue', error: 'red' }`.
+     */
+    colors?: Record<string, FormatKeys>;
+}
+/**
+ * 颜色处理器类
+ */
+declare class Colorizer {
+    static allColors: Record<string, FormatKeys[] | FormatKeys>;
+    options: ColorizeOptions;
+    constructor(opts?: ColorizeOptions);
+    /**
+     * 添加颜色配置到静态属性
+     */
+    static addColors(colors: ColorMap): Record<string, FormatKeys | FormatKeys[]>;
+    /**
+     * 实例方法添加颜色配置
+     */
+    addColors(colors: ColorMap): Record<string, FormatKeys | FormatKeys[]>;
+    /**
+     * 执行颜色处理的核心方法
+     */
+    private colorize;
+    /**
+     * 转换日志信息的入口方法
+     */
+    transform: TransformFunction<ColorizeOptions>;
+}
+declare const _default$3: (opts?: ColorizeOptions) => Colorizer;
+ 
+type Format = InstanceType<format['Format']>;
+declare function combine(...formats: Format[]): FormatClass<Record<any, any>>;
+ 
+type CliFormatOptions = ColorizeOptions & PadLevelsOptions;
+/**
+ * Cli format class that handles initial state for a separate
+ * Colorizer and Padder instance.
+ */
+declare class CliFormat {
+    colorizer: Colorizer;
+    padder: Padder;
+    options: CliFormatOptions;
+    constructor(opts?: CliFormatOptions);
+    transform: TransformFunction<CliFormatOptions>;
+}
+declare const _default$2: (opts: CliFormatOptions) => CliFormat;
+ 
+declare const _default$1: FormatWrap<Record<any, any>>;
+ 
+interface TransformableInfo {
+  level: string
+  message?: string
+  [LEVEL]?: string
+  [MESSAGE]?: any
+  [SPLAT]?: any
+  [key: string | symbol]: any
+}
+ 
+type TransformFunction<T extends Record<any, any> = Record<any, any>> = (info: TransformableInfo, opts?: T) => TransformableInfo
+ 
+declare class FormatClass<T extends Record<any, any> = Record<any, any>> {
+  constructor(options: T = {} as T)
+  options?: T
+  transform: TransformFunction<T>
+}
+ 
+interface FormatWrap<T extends Record<any, any>> {
+  (opts?: T): FormatClass<T>
+  Format: typeof FormatClass<T>
+}
+ 
+interface format<T extends Record<any, any> = Record<any, any>> {
+  <P extends T>(transform: TransformFunction<P>): FormatWrap<P>
+  Format: typeof FormatClass<T>
+  align: typeof _default$1
+  cli: typeof _default$2
+  combine: typeof combine
+  colorize: typeof _default$3
+  errors: typeof _default$4
+  json: typeof _default$5
+  label: typeof _default$6
+  logstash: typeof _default$7
+  metadata: typeof _default$8
+  ms: typeof _default$9
+  padLevels: typeof _default$a
+  prettyPrint: typeof _default$b
+  printf: typeof _default$c
+  simple: typeof _default$d
+  splat: typeof _default$e
+  timestamp: typeof _default$f
+  uncolorize: typeof _default$g
+}
+ 
+declare const _default: format;
+ 
+declare abstract class Transport<T extends TransportBaseOptions> {
+    level?: LogEntry['level'];
+    protected eol?: string;
+    protected name?: string;
+    protected levels: Record<string, number>;
+    protected options: T;
+    constructor(options: T);
+    protected shouldLog(level: string, force?: boolean): boolean;
+    protected selfFormat(options?: {
+        level: LogEntry['level'];
+        message: string;
+    }): TransformableInfo | undefined;
+    abstract log(info: TransformableInfo, callback?: TransportErrorCallback, options?: {
+        level: LogEntry['level'];
+        message: string;
+    }, force?: boolean): void;
+}
+ 
+interface TransportErrorCallback {
+  (error?: Error): void
+}
+ 
+type TransportInstance<T extends TransportBaseOptions = object> = InstanceType<typeof Transport<T>>
+ 
+type TransportInstanceLog<T extends TransportBaseOptions = object> = TransportInstance<T>['log']
+ 
+interface TransportBaseOptions {
+  name?: string
+  level?: LogEntry['level']
+  levels?: Record<keyof LogLevel, number>
+  format?: FormatClass
+  eol?: string
+}
+ 
+interface ConsoleTransportOptions extends TransportBaseOptions {
+}
+ 
+interface WritableStream extends stream.Writable {
+  _writableState?: stream.StreamOptions<WritableStream>
+}
+ 
+interface StreamTransportOptions extends TransportBaseOptions {
+  stream?: WritableStream
+}
+ 
+type LogLevel = MapTuple<typeof SimpleLevelTuple>
+ 
+type LogLevelKey = keyof LogLevel
+ 
+interface LoggerOptions {
+  level?: LogLevelKey
+  levels?: Record<LogLevelKey, number>
+  /** 静音 */
+  silent?: boolean
+  /** 是否是隐式log */
+  isImplicit?: boolean
+  format?: FormatClass
+  transports?: TransportInstance[] | TransportInstance
+}
+ 
+interface LogEntry {
+  level: LogLevelKey
+  message: string
+  [optionName: string]: any
+}
+ 
+interface LogOptions {
+  /** 是否强制输出 | 无视 level 和 isImplicit 和 silent */
+  force?: boolean
+  /**
+   * 是否是隐式log
+   * @description 优先级最高,只有为undefined时才会遵从父级配置
+   */
+  isImplicit?: boolean
+  /** 静音 */
+  silent?: boolean
+}
+ 
+declare class ConsoleTransport extends Transport<ConsoleTransportOptions> {
+    constructor(options?: ConsoleTransportOptions);
+    log: TransportInstanceLog;
+}
+ 
+declare class StreamTransport extends Transport<StreamTransportOptions> {
+    stream: NodeJS.WritableStream;
+    isObjectMode: boolean;
+    constructor(options?: StreamTransportOptions);
+    log: TransportInstanceLog;
+}
+ 
+declare const transports: {
+    Console: typeof ConsoleTransport;
+    Stream: typeof StreamTransport;
+};
+ 
+declare class Logger {
+    private level;
+    private levels;
+    private silent;
+    private transports;
+    /**
+     * 是否是隐式log
+     * @description 隐式 log 全局兜底
+     * @default false
+     */
+    private isImplicit;
+    format: ReturnType<typeof Logger.createLogFormat>;
+    constructor(options?: Prettify<LoggerOptions>);
+    static createLogFormat(colorize?: boolean, label?: string): FormatClass<Record<any, any>>;
+    updateLogFormat: (colorize?: boolean) => void;
+    private log;
+    private shouldLog;
+    debug(message?: string, options?: Prettify<LogOptions>): void;
+    info(message?: string, options?: Prettify<LogOptions>): void;
+    warn(message?: string, options?: Prettify<LogOptions>): void;
+    error(message?: string, options?: Prettify<LogOptions>): void;
+}
+ 
+export { Logger, transports as Transports, Logger as default, _default as format };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/dist/index.html b/packages/logger/dist/index.html new file mode 100644 index 0000000..f823f7d --- /dev/null +++ b/packages/logger/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/logger/dist + + + + + + + + + +
+
+

All files packages/logger/dist

+
+ +
+ 24.05% + Statements + 332/1380 +
+ + +
+ 61.9% + Branches + 52/84 +
+ + +
+ 69.81% + Functions + 37/53 +
+ + +
+ 24.05% + Lines + 332/1380 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/6960%0/10%0/10%0/696
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
48.53%332/68462.19%51/8270.58%36/5148.53%332/684
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/dist/index.mjs.html b/packages/logger/dist/index.mjs.html new file mode 100644 index 0000000..a0ab8e9 --- /dev/null +++ b/packages/logger/dist/index.mjs.html @@ -0,0 +1,2227 @@ + + + + + + Code coverage report for packages/logger/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/logger/dist index.mjs

+
+ +
+ 48.53% + Statements + 332/684 +
+ + +
+ 62.19% + Branches + 51/82 +
+ + +
+ 70.58% + Functions + 36/51 +
+ + +
+ 48.53% + Lines + 332/684 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +7151x +1x +1x +1x +1x +1x +1x +  +1x +1x +1x +  +  +  +  +  +1x +1x +26x +  +  +26x +12x +12x +12x +12x +12x +12x +26x +12x +12x +26x +26x +26x +  +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +1x +1x +1x +1x +  +4x +4x +4x +4x +4x +  +  +4x +4x +4x +4x +4x +4x +4x +28x +28x +4x +4x +4x +4x +4x +4x +4x +4x +  +  +4x +4x +4x +4x +38x +38x +38x +38x +38x +  +  +38x +38x +4x +4x +4x +4x +38x +38x +38x +  +  +38x +38x +38x +38x +  +  +38x +4x +4x +1x +  +1x +4x +4x +4x +  +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +4x +4x +  +  +4x +76x +76x +266x +266x +266x +266x +76x +4x +4x +14x +14x +  +  +  +  +  +  +14x +14x +4x +4x +4x +4x +4x +4x +4x +4x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +1x +  +1x +76x +76x +76x +76x +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +1x +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +1x +  +4x +4x +4x +4x +4x +4x +76x +76x +4x +4x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +76x +76x +76x +76x +  +  +76x +  +  +76x +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +1x +  +34x +34x +34x +20x +34x +34x +34x +34x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +38x +38x +38x +38x +2x +2x +38x +38x +38x +38x +2x +  +2x +2x +2x +2x +2x +2x +38x +38x +38x +38x +38x +38x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +1x +  +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +2x +4x +4x +4x +4x +76x +76x +76x +4x +4x +4x +2x +  +2x +2x +38x +38x +38x +38x +  +38x +38x +38x +38x +38x +38x +  +  +  +38x +  +  +  +  +  +38x +38x +38x +38x +38x +38x +38x +38x +38x +38x +38x +38x +38x +2x +38x +38x +38x +2x +  +  +2x +16x +16x +2x +14x +14x +2x +8x +8x +2x +  +  + 
import { ColorStringRE, isStream } from '@https-enable/utils';
+import { styleText } from '@https-enable/colors';
+import jsonStringify from 'safe-stable-stringify';
+import ms$1 from 'ms';
+import util, { inspect } from 'node:util';
+import fecha from 'fecha';
+import os from 'node:os';
+ 
+class InvalidFormatError extends Error {
+  // eslint-disable-next-line ts/no-unsafe-function-type
+  constructor(formatFn) {
+    super(`Format functions must be synchronous taking two arguments: (info, opts)
+Found: ${formatFn.toString().split("\n")[0]}
+`);
+    Error.captureStackTrace(this, InvalidFormatError);
+  }
+}
+const format = function(formatFn) {
+  if (formatFn.length > 2) {
+    throw new InvalidFormatError(formatFn);
+  }
+  class Format {
+    options;
+    constructor(options = {}) {
+      this.options = options;
+    }
+    transform = formatFn;
+  }
+  function createFormatWrap(opts) {
+    return new Format(opts);
+  }
+  createFormatWrap.Format = Format;
+  return createFormatWrap;
+};
+ 
+const cli$1 = {
+  levels: {
+    ERROR: 0,
+    WARN: 1,
+    HELP: 2,
+    DATA: 3,
+    INFO: 4,
+    DEBUG: 5,
+    PROMPT: 6,
+    VERBOSE: 7,
+    INPUT: 8,
+    SILLY: 9
+  }};
+ 
+const npm = {
+  levels: {
+    ERROR: 0,
+    WARN: 1,
+    INFO: 2,
+    HTTP: 3,
+    VERBOSE: 4,
+    DEBUG: 5,
+    SILLY: 6
+  },
+  colors: {
+    ERROR: "red",
+    WARN: "yellow",
+    INFO: "green",
+    HTTP: "green",
+    VERBOSE: "cyan",
+    DEBUG: "blue",
+    SILLY: "magenta"
+  }
+};
+ 
+const configs = { cli: cli$1, npm};
+const LEVEL = Symbol.for("level");
+const MESSAGE = Symbol.for("message");
+const SPLAT = Symbol.for("splat");
+ 
+class Colorizer {
+  static allColors = {};
+  options;
+  constructor(opts = {}) {
+    if (opts.colors) {
+      this.addColors(opts.colors);
+    }
+    this.options = opts;
+  }
+  /**
+   * 添加颜色配置到静态属性
+   */
+  static addColors(colors) {
+    const nextColors = Object.entries(colors).reduce((acc, [level, spec]) => {
+      acc[level] = typeof spec === "string" ? spec.split(/\s+/) : spec;
+      return acc;
+    }, {});
+    Colorizer.allColors = { ...Colorizer.allColors, ...nextColors };
+    return Colorizer.allColors;
+  }
+  /**
+   * 实例方法添加颜色配置
+   */
+  addColors(colors) {
+    return Colorizer.addColors(colors);
+  }
+  /**
+   * 执行颜色处理的核心方法
+   */
+  colorize(lookup, level, message) {
+    if (typeof message === "undefined") {
+      message = level;
+    }
+    const colorSpec = Colorizer.allColors[lookup];
+    if (!colorSpec) {
+      return String(message);
+    }
+    return styleText(colorSpec, message);
+  }
+  /**
+   * 转换日志信息的入口方法
+   */
+  transform = (info, opts) => {
+    const options = { ...this.options, ...opts };
+    const levelKey = info[LEVEL] || info.level;
+    if (options.all && typeof info[MESSAGE] === "string") {
+      info[MESSAGE] = this.colorize(levelKey, info.level, info[MESSAGE]);
+    }
+    if (options.level || options.all || !options.message) {
+      info.level = this.colorize(levelKey, info.level);
+    }
+    if (options.all || options.message) {
+      info.message = this.colorize(levelKey, info.level, info.message);
+    }
+    return info;
+  };
+}
+const colorize = (opts = {}) => new Colorizer(opts);
+ 
+const levels = (config) => {
+  Colorizer.addColors(config.colors);
+  return config;
+};
+ 
+const align = format((info) => {
+  info.message = `	${info.message}`;
+  return info;
+});
+ 
+class Padder {
+  paddings;
+  options;
+  constructor(opts = { levels: configs.npm.levels }) {
+    this.paddings = Padder.paddingForLevels(opts.levels || configs.npm.levels, opts.filler);
+    this.options = opts;
+  }
+  /**
+   * Returns the maximum length of keys in the specified `levels` Object.
+   * @param levels Set of all levels to calculate longest level against.
+   * @returns Maximum length of the longest level string.
+   */
+  static getLongestLevel(levels) {
+    const lvls = Object.keys(levels).map((level) => level.length);
+    return Math.max(...lvls);
+  }
+  /**
+   * Returns the padding for the specified `level` assuming that the
+   * maximum length of all levels it's associated with is `maxLength`.
+   * @param level Level to calculate padding for.
+   * @param filler Repeatable text to use for padding.
+   * @param maxLength Length of the longest level
+   * @returns Padding string for the `level`
+   */
+  static paddingForLevel(level, filler, maxLength) {
+    const targetLen = maxLength + 1 - level.length;
+    const rep = Math.floor(targetLen / filler.length);
+    const padding = `${filler}${filler.repeat(rep)}`;
+    return padding.slice(0, targetLen);
+  }
+  /**
+   * Returns an object with the string paddings for the given `levels`
+   * using the specified `filler`.
+   * @param levels Set of all levels to calculate padding for.
+   * @param filler Repeatable text to use for padding.
+   * @returns Mapping of level to desired padding.
+   */
+  static paddingForLevels(levels, filler = " ") {
+    const maxLength = Padder.getLongestLevel(levels);
+    return Object.keys(levels).reduce((acc, level) => {
+      acc[level] = Padder.paddingForLevel(level, filler, maxLength);
+      return acc;
+    }, {});
+  }
+  /**
+   * Prepends the padding onto the `message` based on the `LEVEL` of
+   * the `info`. This is based on the behavior of `winston@2` which also
+   * prepended the level onto the message.
+   *
+   * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201
+   *
+   * @param info Logform info object
+   * @param opts Options passed along to this instance.
+   * @returns Modified logform info object.
+   */
+  // eslint-disable-next-line unused-imports/no-unused-vars
+  transform = (info, opts = {}) => {
+    const level = info[LEVEL];
+    const paddings = level ? this.paddings[level] : "";
+    info.message = `${paddings}${info.message}`;
+    if (info[MESSAGE]) {
+      info[MESSAGE] = `${paddings}${info[MESSAGE]}`;
+    }
+    return info;
+  };
+}
+const padLevels = (opts) => new Padder(opts);
+ 
+class CliFormat {
+  colorizer;
+  padder;
+  options;
+  constructor(opts = {}) {
+    if (!opts.levels) {
+      opts.levels = configs.cli.levels;
+    }
+    this.colorizer = new Colorizer(opts);
+    this.padder = new Padder(opts);
+    this.options = opts;
+  }
+  /*
+   * function transform (info, opts)
+   * Attempts to both:
+   * 1. Pad the { level }
+   * 2. Colorize the { level, message }
+   * of the given `logform` info object depending on the `opts`.
+   */
+  transform = (info, opts) => {
+    this.colorizer.transform(this.padder.transform(info, opts), opts);
+    info[MESSAGE] = `${info.level}:${info.message}`;
+    return info;
+  };
+}
+const cli = (opts) => new CliFormat(opts);
+ 
+function cascade(formats) {
+  if (!formats.every(isValidFormat)) {
+    return;
+  }
+  return (info) => {
+    let obj = info;
+    for (let i = 0; i < formats.length; i++) {
+      const format2 = formats[i];
+      const temp = format2.transform(obj, format2.options);
+      obj = temp;
+    }
+    return obj;
+  };
+}
+function isValidFormat(fmt) {
+  if (typeof fmt.transform !== "function") {
+    throw new TypeError([
+      "No transform function found on format. Did you create a format instance?",
+      "const myFormat = format(formatFn);",
+      "const instance = myFormat();"
+    ].join("\n"));
+  }
+  return true;
+}
+function combine(...formats) {
+  const combinedFormat = format(cascade(formats));
+  const instance = combinedFormat();
+  Object.defineProperty(instance, "Format", {
+    value: combinedFormat.Format
+  });
+  return instance;
+}
+ 
+const errors = format((einfo, { stack, cause } = {}) => {
+  if (einfo instanceof Error) {
+    const info = {
+      ...einfo,
+      level: einfo.level,
+      [LEVEL]: einfo[LEVEL] || einfo.level,
+      message: einfo.message,
+      [MESSAGE]: einfo[MESSAGE] || einfo.message
+    };
+    stack && (info.stack = einfo.stack);
+    cause && (info.cause = einfo.cause);
+    return info;
+  }
+  if (!(einfo.message instanceof Error))
+    return einfo;
+  const err = einfo.message;
+  Object.assign(einfo, err);
+  einfo.message = err.message;
+  einfo[MESSAGE] = err.message;
+  stack && (einfo.stack = err.stack);
+  cause && (einfo.cause = err.cause);
+  return einfo;
+});
+ 
+function replacer(key, value) {
+  if (typeof value === "bigint") {
+    return value.toString();
+  }
+  return value;
+}
+const json = format((info, opts = {}) => {
+  const jsonStringify$1 = jsonStringify.configure(opts);
+  info[MESSAGE] = jsonStringify$1(info, opts.replacer || replacer, opts.space);
+  return info;
+});
+ 
+const label = format((info, opts = {}) => {
+  if (opts.message) {
+    info.message = `[${opts.label}] ${info.message}`;
+    return info;
+  }
+  info.label = opts.label;
+  return info;
+});
+ 
+const logstash = format((info) => {
+  const logstash = {};
+  if (info.message) {
+    logstash["@message"] = info.message;
+    delete info.message;
+  }
+  if (info.timestamp) {
+    logstash["@timestamp"] = info.timestamp;
+    delete info.timestamp;
+  }
+  logstash["@fields"] = info;
+  info[MESSAGE] = jsonStringify(logstash);
+  return info;
+});
+ 
+function fillExcept(info, fillExceptKeys, metadataKey) {
+  const savedKeys = fillExceptKeys.reduce((acc, key) => {
+    acc[key] = info[key];
+    delete info[key];
+    return acc;
+  }, {});
+  const metadata = Object.keys(info).reduce((acc, key) => {
+    acc[key] = info[key];
+    delete info[key];
+    return acc;
+  }, {});
+  Object.assign(info, savedKeys, {
+    [metadataKey]: metadata
+  });
+  return info;
+}
+function fillWith(info, fillWithKeys, metadataKey) {
+  info[metadataKey] = fillWithKeys.reduce((acc, key) => {
+    acc[key] = info[key];
+    delete info[key];
+    return acc;
+  }, {});
+  return info;
+}
+const metadata = format((info, opts = {}) => {
+  const metadataKey = opts.key || "metadata";
+  let fillExceptKeys = [];
+  if (!opts.fillExcept && !opts.fillWith) {
+    fillExceptKeys.push("level");
+    fillExceptKeys.push("message");
+  }
+  if (opts.fillExcept) {
+    fillExceptKeys = opts.fillExcept;
+  }
+  if (fillExceptKeys.length > 0) {
+    return fillExcept(info, fillExceptKeys, metadataKey);
+  }
+  if (opts.fillWith) {
+    return fillWith(info, opts.fillWith, metadataKey);
+  }
+  return info;
+});
+ 
+let prevTime;
+const ms = format((info) => {
+  const curr = +/* @__PURE__ */ new Date();
+  const diff = curr - (prevTime || curr);
+  prevTime = curr;
+  info.ms = `+${ms$1(diff)}`;
+  return info;
+});
+ 
+const prettyPrint = format((info, opts = {}) => {
+  const stripped = { ...info };
+  delete stripped[LEVEL];
+  delete stripped[MESSAGE];
+  delete stripped[SPLAT];
+  info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize);
+  return info;
+});
+ 
+class Printf {
+  template;
+  constructor(templateFn) {
+    this.template = templateFn;
+  }
+  transform = (info) => {
+    info[MESSAGE] = this.template(info);
+    return info;
+  };
+}
+const printf = (templateFn) => new Printf(templateFn);
+ 
+const simple = format((info) => {
+  const stringifiedRest = jsonStringify({
+    ...info,
+    level: void 0,
+    message: void 0,
+    splat: void 0
+  });
+  const padding = info.padding && info.padding[info.level] || "";
+  if (stringifiedRest && stringifiedRest !== "{}") {
+    info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;
+  } else {
+    info[MESSAGE] = `${info.level}:${padding} ${info.message}`;
+  }
+  return info;
+});
+ 
+const formatRegExp = /%[scdjifoO%]/g;
+const escapedPercent = /%%/g;
+class Splatter {
+  constructor() {
+  }
+  /**
+   * 检查 tokens <= splat.length,将 { splat, meta } 分配到 `info` 中,并写入此实例。
+   *
+   * @param info Logform 信息消息。
+   * @param tokens 一组字符串插值标记。
+   * @returns 修改后的信息消息
+   * @private
+   */
+  _splat(info, tokens) {
+    const msg = info.message || "";
+    const splat = info[SPLAT] || info.splat || [];
+    const percents = msg.match(escapedPercent);
+    const escapes = percents ? percents.length : 0;
+    const expectedSplat = tokens.length - escapes;
+    const extraSplat = expectedSplat - splat.length;
+    const metas = extraSplat < 0 ? splat.splice(extraSplat, -1 * extraSplat) : [];
+    const metalen = metas.length;
+    if (metalen) {
+      for (let i = 0; i < metalen; i++) {
+        Object.assign(info, metas[i]);
+      }
+    }
+    info.message = util.format(msg, ...splat);
+    return info;
+  }
+  /**
+   * 使用 `util.format` 完成 `info.message` 提供的 `info` 消息。
+   * 如果没有标记,则 `info` 是不可变的。
+   *
+   * @param info Logform 信息消息。
+   * @returns 修改后的信息消息
+   */
+  transform = (info) => {
+    const msg = info.message || "";
+    const splat = info[SPLAT] || info.splat;
+    if (!splat || !splat.length) {
+      return info;
+    }
+    const tokens = msg.match(formatRegExp);
+    if (!tokens && (splat || splat.length)) {
+      const metas = splat.length > 1 ? splat.splice(0) : splat;
+      const metalen = metas.length;
+      if (metalen) {
+        for (let i = 0; i < metalen; i++) {
+          Object.assign(info, metas[i]);
+        }
+      }
+      return info;
+    }
+    if (tokens) {
+      return this._splat(info, tokens);
+    }
+    return info;
+  };
+}
+const splat = () => new Splatter();
+ 
+const timestamp = format((info, opts = {}) => {
+  if (opts.format) {
+    info.timestamp = typeof opts.format === "function" ? opts.format() : fecha.format(/* @__PURE__ */ new Date(), opts.format);
+  }
+  if (!info.timestamp) {
+    info.timestamp = (/* @__PURE__ */ new Date()).toISOString();
+  }
+  if (opts.alias) {
+    info[opts.alias] = info.timestamp;
+  }
+  return info;
+});
+ 
+function stripColors(str) {
+  return `${str}`.replace(/\x1B\[\d+m/g, "");
+}
+const uncolorize = format((info, opts = {}) => {
+  if (opts.level !== false) {
+    info.level = stripColors(info.level);
+  }
+  if (opts.message !== false) {
+    info.message = stripColors(String(info.message));
+  }
+  if (opts.raw !== false && info[MESSAGE]) {
+    info[MESSAGE] = stripColors(String(info[MESSAGE]));
+  }
+  return info;
+});
+ 
+function exposeFormat(name, requireFormat) {
+  Object.defineProperty(format, name, {
+    get() {
+      return requireFormat();
+    },
+    configurable: true
+  });
+}
+exposeFormat("align", () => align);
+exposeFormat("cli", () => cli);
+exposeFormat("colorize", () => colorize);
+exposeFormat("combine", () => combine);
+exposeFormat("errors", () => errors);
+exposeFormat("json", () => json);
+exposeFormat("label", () => label);
+exposeFormat("logstash", () => logstash);
+exposeFormat("metadata", () => metadata);
+exposeFormat("ms", () => ms);
+exposeFormat("padLevels", () => padLevels);
+exposeFormat("prettyPrint", () => prettyPrint);
+exposeFormat("printf", () => printf);
+exposeFormat("simple", () => simple);
+exposeFormat("splat", () => splat);
+exposeFormat("timestamp", () => timestamp);
+exposeFormat("uncolorize", () => uncolorize);
+ 
+class Transport {
+  level;
+  eol;
+  name;
+  levels;
+  options;
+  constructor(options) {
+    this.options = options;
+    this.name = options.name;
+    this.level = options.level;
+    this.levels = options.levels || levels(configs.npm).levels;
+    this.eol = typeof options.eol === "string" ? options.eol : os.EOL;
+  }
+  // 判断是否满足日志级别要求
+  shouldLog(level, force = false) {
+    level = level.replace(ColorStringRE, "");
+    const levels2 = Object.keys(this.levels).reverse();
+    return force || levels2.indexOf(level) >= levels2.indexOf(this.level || "INFO");
+  }
+  // 使用局部format
+  selfFormat(options) {
+    if (this.options.format && options) {
+      return this.options.format.transform(options);
+    }
+  }
+}
+ 
+class ConsoleTransport extends Transport {
+  constructor(options = {}) {
+    super(options);
+    this.name = options.name || "console";
+  }
+  log = (info, callback, options, force) => {
+    info = this.selfFormat(options) || info;
+    const data = { ...info };
+    if (!force && !this.shouldLog(data.level))
+      return callback?.();
+    console.log(`${data[MESSAGE]}`);
+    callback?.();
+  };
+}
+ 
+class StreamTransport extends Transport {
+  stream;
+  isObjectMode;
+  constructor(options = {}) {
+    super(options);
+    if (!options.stream || !isStream(options.stream)) {
+      throw new Error("options.stream is required.");
+    }
+    this.name = options.name || "console";
+    this.stream = options.stream;
+    this.isObjectMode = options.stream._writableState?.objectMode || false;
+    this.stream.setMaxListeners(Infinity);
+  }
+  log = (info, callback, options, force) => {
+    if (!force && !this.shouldLog(info.level))
+      return callback?.();
+    const handleComplete = (error) => {
+      if (error)
+        return callback?.(error);
+      callback?.();
+    };
+    try {
+      info = this.selfFormat(options) || info;
+      let payload;
+      if (this.isObjectMode)
+        payload = { ...info };
+      else
+        payload = `${info[MESSAGE]}${this.eol}`;
+      const canWrite = this.stream.write(payload, (error) => {
+        handleComplete(error || void 0);
+      });
+      if (!canWrite) {
+        this.stream.once("drain", () => handleComplete());
+      }
+    } catch (error) {
+      handleComplete(error instanceof Error ? error : new Error(String(error)));
+    }
+  };
+}
+ 
+const transports = {
+  Console: ConsoleTransport,
+  Stream: StreamTransport
+};
+ 
+class Logger {
+  level;
+  levels;
+  silent;
+  transports = [];
+  /**
+   * 是否是隐式log
+   * @description 隐式 log 全局兜底
+   * @default false
+   */
+  isImplicit;
+  format;
+  constructor(options = {}) {
+    this.level = options.level || "INFO";
+    this.levels = options.levels || levels(configs.npm).levels;
+    this.silent = options.silent || false;
+    this.isImplicit = options.isImplicit || false;
+    this.format = options.format || Logger.createLogFormat(false);
+    if (options.transports) {
+      this.transports = Array.isArray(options.transports) ? options.transports : [options.transports];
+    }
+  }
+  static createLogFormat(colorize = false, label) {
+    const colorizer = format.colorize();
+    const appLabel = !!label && format.label({ label, message: true });
+    const timestamp = format.timestamp({ format: "YYYY-MM-DD HH:mm:ss.SSS" });
+    const logFormat = format.printf((info) => {
+      const levelWithoutColor = info.level.replace(ColorStringRE, "");
+      const space = " ".repeat(6 - levelWithoutColor.length);
+      return `${info.timestamp ? info.timestamp.padEnd(info.timestamp.length + 1) : ""}${info.level}${space} ${info.message || ""}`;
+    });
+    return colorize ? appLabel ? format.combine(colorizer, appLabel, timestamp, logFormat) : format.combine(colorizer, timestamp, logFormat) : appLabel ? format.combine(appLabel, timestamp, logFormat) : format.combine(timestamp, logFormat);
+  }
+  updateLogFormat = (colorize = false) => {
+    this.format = Logger.createLogFormat(colorize);
+  };
+  log(level, message, options = {}, callback) {
+    if (options.force || this.shouldLog(level)) {
+      const isImplicit = options.isImplicit ?? this.isImplicit;
+      const isSilent = options.silent ?? this.silent;
+      if (!options.force && isImplicit && !isSilent) {
+        return callback?.();
+      } else if (options.force || !isSilent) {
+        const transformInfo = this.format.transform({ level, message });
+        if (!transformInfo[LEVEL]) {
+          transformInfo[LEVEL] = transformInfo.level;
+        }
+        if (!Object.keys(this.levels).includes(level)) {
+          console.error("[winston] Unknown logger level: %s", level);
+          console.error("[winston] levels: %j", this.levels);
+        }
+        if (!this.transports || (Array.isArray(this.transports) ? !this.transports.length : !this.transports)) {
+          console.error(
+            "[winston] Attempt to write logs with no transports, which can increase memory usage: %j",
+            transformInfo
+          );
+        }
+        try {
+          this.transports.forEach((transport) => {
+            !transport.level && (transport.level = this.level);
+            transport.log(transformInfo, callback, { level, message }, options.force);
+          });
+        } finally {
+          callback?.();
+        }
+        return;
+      }
+      return callback?.();
+    }
+  }
+  shouldLog(level) {
+    const levels2 = Object.keys(this.levels).reverse();
+    return levels2.indexOf(level) >= levels2.indexOf(this.level);
+  }
+  debug(message = "", options = {}) {
+    this.log("DEBUG", message, options);
+  }
+  info(message = "", options = {}) {
+    this.log("INFO", message, options);
+  }
+  warn(message = "", options = {}) {
+    this.log("WARN", message, options);
+  }
+  error(message = "", options = {}) {
+    this.log("ERROR", message, options);
+  }
+}
+ 
+export { Logger, transports as Transports, Logger as default, format };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/package.json b/packages/logger/package.json deleted file mode 100644 index b6c1880..0000000 --- a/packages/logger/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@https-enable/logger", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "dependencies": { - "@https-enable/colors": "workspace:*", - "@https-enable/utils": "workspace:*", - "fecha": "^4.2.3", - "ms": "^2.1.3", - "safe-stable-stringify": "^2.5.0" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/ms": "^2.1.0", - "@types/node": "^22.13.1", - "unbuild": "^3.3.1" - } -} diff --git a/packages/logger/readme.md b/packages/logger/readme.md deleted file mode 100644 index 32ed735..0000000 --- a/packages/logger/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# @https-enable/logger - -> 基本迁移自 diff --git a/packages/logger/src/format/format.ts b/packages/logger/src/format/format.ts deleted file mode 100644 index 77f965e..0000000 --- a/packages/logger/src/format/format.ts +++ /dev/null @@ -1,59 +0,0 @@ -import type { format as FormatFunc, TransformFunction } from './type' - -/* - * Displays a helpful message and the source of - * the format when it is invalid. - */ -class InvalidFormatError extends Error { - // eslint-disable-next-line ts/no-unsafe-function-type - constructor(formatFn: Function) { - super(`Format functions must be synchronous taking two arguments: (info, opts) -Found: ${formatFn.toString().split('\n')[0]}\n`) - Error.captureStackTrace(this, InvalidFormatError) - } -} - -/* - * function format (formatFn) - * Returns a create function for the `formatFn`. - */ -const format = function>(formatFn: TransformFunction) { - if (formatFn.length > 2) { - throw new InvalidFormatError(formatFn) - } - - /* - * function Format (options) - * Base prototype which calls a `_format` - * function and pushes the result. - */ - class Format { - options?: T - - constructor(options: T = {} as T) { - this.options = options - } - - transform = formatFn - } - - // - // Create a function which returns new instances of - // Format for simple syntax like: - // - // require('winston').formats.json(); - // - function createFormatWrap(opts?: T) { - return new Format(opts) - } - - // - // Expose the Format through the create function - // for testability. - // - createFormatWrap.Format = Format - - return createFormatWrap -} - -export default format as unknown as FormatFunc diff --git a/packages/logger/src/format/format.ts.html b/packages/logger/src/format/format.ts.html new file mode 100644 index 0000000..4abbd1c --- /dev/null +++ b/packages/logger/src/format/format.ts.html @@ -0,0 +1,262 @@ + + + + + + Code coverage report for packages/logger/src/format/format.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format format.ts

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { format as FormatFunc, TransformFunction } from './type'
+ 
+/*
+ * Displays a helpful message and the source of
+ * the format when it is invalid.
+ */
+class InvalidFormatError extends Error {
+  // eslint-disable-next-line ts/no-unsafe-function-type
+  constructor(formatFn: Function) {
+    super(`Format functions must be synchronous taking two arguments: (info, opts)
+Found: ${formatFn.toString().split('\n')[0]}\n`)
+    Error.captureStackTrace(this, InvalidFormatError)
+  }
+}
+ 
+/*
+ * function format (formatFn)
+ * Returns a create function for the `formatFn`.
+ */
+const format = function<T extends Record<any, any>>(formatFn: TransformFunction<T>) {
+  if (formatFn.length > 2) {
+    throw new InvalidFormatError(formatFn)
+  }
+ 
+  /*
+   * function Format (options)
+   * Base prototype which calls a `_format`
+   * function and pushes the result.
+   */
+  class Format {
+    options?: T
+ 
+    constructor(options: T = {} as T) {
+      this.options = options
+    }
+ 
+    transform = formatFn
+  }
+ 
+  //
+  // Create a function which returns new instances of
+  // Format for simple syntax like:
+  //
+  // require('winston').formats.json();
+  //
+  function createFormatWrap(opts?: T) {
+    return new Format(opts)
+  }
+ 
+  //
+  // Expose the Format through the create function
+  // for testability.
+  //
+  createFormatWrap.Format = Format
+ 
+  return createFormatWrap
+}
+ 
+export default format as unknown as FormatFunc
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/index.html b/packages/logger/src/format/index.html new file mode 100644 index 0000000..8fbc251 --- /dev/null +++ b/packages/logger/src/format/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/logger/src/format + + + + + + + + + +
+
+

All files packages/logger/src/format

+
+ +
+ 0% + Statements + 0/90 +
+ + +
+ 66.66% + Branches + 2/3 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 0% + Lines + 0/90 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
format.ts +
+
0%0/25100%1/1100%1/10%0/25
index.ts +
+
0%0/600%0/10%0/10%0/60
levels.ts +
+
0%0/5100%1/1100%1/10%0/5
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/index.ts b/packages/logger/src/format/index.ts deleted file mode 100644 index 6e71bbf..0000000 --- a/packages/logger/src/format/index.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { camelCase, importGlob } from '@https-enable/utils' -import format from './format' -import levels from './levels' - -import align from './plugins/align' -import cli from './plugins/cli' -import colorize from './plugins/colorize' -import combine from './plugins/combine' -import errors from './plugins/errors' -import json from './plugins/json' -import label from './plugins/label' -import logstash from './plugins/logstash' -import metadata from './plugins/metadata' -import ms from './plugins/ms' -import padLevels from './plugins/pad-levels' -import prettyPrint from './plugins/pretty-print' -import printf from './plugins/printf' -import simple from './plugins/simple' -import splat from './plugins/splat' -import timestamp from './plugins/timestamp' -import uncolorize from './plugins/uncolorize' - -/* - * @api private - * method {function} exposeFormat - * 以惰性加载的 getter 方式在主格式对象上暴露子格式。 - */ -function exposeFormat(name: string, requireFormat: () => any) { - Object.defineProperty(format, name, { - get() { - return requireFormat() - }, - configurable: true, - }) -} - -exposeFormat('align', () => align) -exposeFormat('cli', () => cli) -exposeFormat('colorize', () => colorize) -exposeFormat('combine', () => combine) -exposeFormat('errors', () => errors) -exposeFormat('json', () => json) -exposeFormat('label', () => label) -exposeFormat('logstash', () => logstash) -exposeFormat('metadata', () => metadata) -exposeFormat('ms', () => ms) -exposeFormat('padLevels', () => padLevels) -exposeFormat('prettyPrint', () => prettyPrint) -exposeFormat('printf', () => printf) -exposeFormat('simple', () => simple) -exposeFormat('splat', () => splat) -exposeFormat('timestamp', () => timestamp) -exposeFormat('uncolorize', () => uncolorize) - -/** - * @deprecated 动态批量引用是异步的,开发使用体验不好,暂时弃用 - */ -export async function initFormats() { - const routeModules = await importGlob('./plugins/*.ts', { - eager: true, - import: 'default', - }) - Object.entries(routeModules).forEach(([key, value]) => { - const ext = key.split('.').pop() - const name = key.split('/').pop()?.replace(ext ? `.${ext}` : '', '') - if (name) { - exposeFormat(camelCase(name), () => value) - } - }) - return format -} - -export default format -export { format, levels } - -export type * from './type' diff --git a/packages/logger/src/format/index.ts.html b/packages/logger/src/format/index.ts.html new file mode 100644 index 0000000..7887b2e --- /dev/null +++ b/packages/logger/src/format/index.ts.html @@ -0,0 +1,313 @@ + + + + + + Code coverage report for packages/logger/src/format/index.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format index.ts

+
+ +
+ 0% + Statements + 0/60 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/60 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { camelCase, importGlob } from '@https-enable/utils'
+import format from './format'
+import levels from './levels'
+ 
+import align from './plugins/align'
+import cli from './plugins/cli'
+import colorize from './plugins/colorize'
+import combine from './plugins/combine'
+import errors from './plugins/errors'
+import json from './plugins/json'
+import label from './plugins/label'
+import logstash from './plugins/logstash'
+import metadata from './plugins/metadata'
+import ms from './plugins/ms'
+import padLevels from './plugins/pad-levels'
+import prettyPrint from './plugins/pretty-print'
+import printf from './plugins/printf'
+import simple from './plugins/simple'
+import splat from './plugins/splat'
+import timestamp from './plugins/timestamp'
+import uncolorize from './plugins/uncolorize'
+ 
+/*
+ * @api private
+ * method {function} exposeFormat
+ * 以惰性加载的 getter 方式在主格式对象上暴露子格式。
+ */
+function exposeFormat(name: string, requireFormat: () => any) {
+  Object.defineProperty(format, name, {
+    get() {
+      return requireFormat()
+    },
+    configurable: true,
+  })
+}
+ 
+exposeFormat('align', () => align)
+exposeFormat('cli', () => cli)
+exposeFormat('colorize', () => colorize)
+exposeFormat('combine', () => combine)
+exposeFormat('errors', () => errors)
+exposeFormat('json', () => json)
+exposeFormat('label', () => label)
+exposeFormat('logstash', () => logstash)
+exposeFormat('metadata', () => metadata)
+exposeFormat('ms', () => ms)
+exposeFormat('padLevels', () => padLevels)
+exposeFormat('prettyPrint', () => prettyPrint)
+exposeFormat('printf', () => printf)
+exposeFormat('simple', () => simple)
+exposeFormat('splat', () => splat)
+exposeFormat('timestamp', () => timestamp)
+exposeFormat('uncolorize', () => uncolorize)
+ 
+/**
+ * @deprecated 动态批量引用是异步的,开发使用体验不好,暂时弃用
+ */
+export async function initFormats() {
+  const routeModules = await importGlob('./plugins/*.ts', {
+    eager: true,
+    import: 'default',
+  })
+  Object.entries(routeModules).forEach(([key, value]) => {
+    const ext = key.split('.').pop()
+    const name = key.split('/').pop()?.replace(ext ? `.${ext}` : '', '')
+    if (name) {
+      exposeFormat(camelCase(name), () => value)
+    }
+  })
+  return format
+}
+ 
+export default format
+export { format, levels }
+ 
+export type * from './type'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/levels.ts b/packages/logger/src/format/levels.ts deleted file mode 100644 index e92df40..0000000 --- a/packages/logger/src/format/levels.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { Configs } from '../triple-beam/type' -import { Colorizer } from './plugins/colorize' - -/* - * Simple method to register colors with a simpler require - * path within the module. - */ -export default (config: typeof Configs['npm']) => { - Colorizer.addColors(config.colors) - return config -} diff --git a/packages/logger/src/format/levels.ts.html b/packages/logger/src/format/levels.ts.html new file mode 100644 index 0000000..f90ab16 --- /dev/null +++ b/packages/logger/src/format/levels.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for packages/logger/src/format/levels.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format levels.ts

+
+ +
+ 0% + Statements + 0/5 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12  +  +  +  +  +  +  +  +  +  +  + 
import type { Configs } from '../triple-beam/type'
+import { Colorizer } from './plugins/colorize'
+ 
+/*
+ * Simple method to register colors with a simpler require
+ * path within the module.
+ */
+export default (config: typeof Configs['npm']) => {
+  Colorizer.addColors(config.colors)
+  return config
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/align.ts b/packages/logger/src/format/plugins/align.ts deleted file mode 100644 index aa0d08a..0000000 --- a/packages/logger/src/format/plugins/align.ts +++ /dev/null @@ -1,12 +0,0 @@ -import format from '../format' - -/* - * function align (info) - * Returns a new instance of the align Format which adds a `\t` - * delimiter before the message to properly align it in the same place. - * It was previously { align: true } in winston < 3.0.0 - */ -export default format((info) => { - info.message = `\t${info.message}` - return info -}) diff --git a/packages/logger/src/format/plugins/align.ts.html b/packages/logger/src/format/plugins/align.ts.html new file mode 100644 index 0000000..30c97df --- /dev/null +++ b/packages/logger/src/format/plugins/align.ts.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/align.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins align.ts

+
+ +
+ 0% + Statements + 0/5 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13  +  +  +  +  +  +  +  +  +  +  +  + 
import format from '../format'
+ 
+/*
+ * function align (info)
+ * Returns a new instance of the align Format which adds a `\t`
+ * delimiter before the message to properly align it in the same place.
+ * It was previously { align: true } in winston < 3.0.0
+ */
+export default format((info) => {
+  info.message = `\t${info.message}`
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/cli.ts b/packages/logger/src/format/plugins/cli.ts deleted file mode 100644 index 0c7e1fb..0000000 --- a/packages/logger/src/format/plugins/cli.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { TransformFunction } from '../type' -import type { ColorizeOptions } from './colorize' -import type { PadLevelsOptions } from './pad-levels' -import { configs, MESSAGE } from '../../triple-beam' -import { Colorizer } from './colorize' -import { Padder } from './pad-levels' - -type CliFormatOptions = ColorizeOptions & PadLevelsOptions - -/** - * Cli format class that handles initial state for a separate - * Colorizer and Padder instance. - */ -class CliFormat { - colorizer: Colorizer - padder: Padder - options: CliFormatOptions - - constructor(opts: CliFormatOptions = {}) { - if (!opts.levels) { - opts.levels = configs.cli.levels - } - - this.colorizer = new Colorizer(opts) - this.padder = new Padder(opts) - this.options = opts - } - - /* - * function transform (info, opts) - * Attempts to both: - * 1. Pad the { level } - * 2. Colorize the { level, message } - * of the given `logform` info object depending on the `opts`. - */ - transform: TransformFunction = (info, opts) => { - this.colorizer.transform(this.padder.transform(info, opts), opts) - - info[MESSAGE] = `${info.level}:${info.message}` - return info - } -} - -/* - * function cli (opts) - * Returns a new instance of the CLI format that turns a log - * `info` object into the same format previously available - * in `winston.cli()` in `winston < 3.0.0`. - */ -export default (opts: CliFormatOptions) => new CliFormat(opts) - -// -// Attach the CliFormat for registration purposes -// -export { CliFormat as Format } diff --git a/packages/logger/src/format/plugins/cli.ts.html b/packages/logger/src/format/plugins/cli.ts.html new file mode 100644 index 0000000..2ddf718 --- /dev/null +++ b/packages/logger/src/format/plugins/cli.ts.html @@ -0,0 +1,250 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/cli.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins cli.ts

+
+ +
+ 0% + Statements + 0/22 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { TransformFunction } from '../type'
+import type { ColorizeOptions } from './colorize'
+import type { PadLevelsOptions } from './pad-levels'
+import { configs, MESSAGE } from '../../triple-beam'
+import { Colorizer } from './colorize'
+import { Padder } from './pad-levels'
+ 
+type CliFormatOptions = ColorizeOptions & PadLevelsOptions
+ 
+/**
+ * Cli format class that handles initial state for a separate
+ * Colorizer and Padder instance.
+ */
+class CliFormat {
+  colorizer: Colorizer
+  padder: Padder
+  options: CliFormatOptions
+ 
+  constructor(opts: CliFormatOptions = {}) {
+    if (!opts.levels) {
+      opts.levels = configs.cli.levels
+    }
+ 
+    this.colorizer = new Colorizer(opts)
+    this.padder = new Padder(opts)
+    this.options = opts
+  }
+ 
+  /*
+   * function transform (info, opts)
+   * Attempts to both:
+   * 1. Pad the { level }
+   * 2. Colorize the { level, message }
+   * of the given `logform` info object depending on the `opts`.
+   */
+  transform: TransformFunction<CliFormatOptions> = (info, opts) => {
+    this.colorizer.transform(this.padder.transform(info, opts), opts)
+ 
+    info[MESSAGE] = `${info.level}:${info.message}`
+    return info
+  }
+}
+ 
+/*
+ * function cli (opts)
+ * Returns a new instance of the CLI format that turns a log
+ * `info` object into the same format previously available
+ * in `winston.cli()` in `winston < 3.0.0`.
+ */
+export default (opts: CliFormatOptions) => new CliFormat(opts)
+ 
+//
+// Attach the CliFormat for registration purposes
+//
+export { CliFormat as Format }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/colorize.ts b/packages/logger/src/format/plugins/colorize.ts deleted file mode 100644 index b6cfc15..0000000 --- a/packages/logger/src/format/plugins/colorize.ts +++ /dev/null @@ -1,104 +0,0 @@ -import type { ColorKeys } from '../../triple-beam/type' -import type { TransformFunction } from '../type' -import { styleText } from '@https-enable/colors' -import { LEVEL, MESSAGE } from '../../triple-beam' - -export type ColorMap = Record -export interface ColorizeOptions { - /** - * If set to `true` the color will be applied to the `level`. - */ - level?: boolean - /** - * If set to `true` the color will be applied to the `message` and `level`. - */ - all?: boolean - /** - * If set to `true` the color will be applied to the `message`. - */ - message?: boolean - /** - * An object containing the colors for the log levels. For example: `{ info: 'blue', error: 'red' }`. - */ - colors?: Record -} - -/** - * 颜色处理器类 - */ -export class Colorizer { - static allColors: Record = {} - options: ColorizeOptions - - constructor(opts: ColorizeOptions = {}) { - if (opts.colors) { - this.addColors(opts.colors) - } - this.options = opts - } - - /** - * 添加颜色配置到静态属性 - */ - static addColors(colors: ColorMap) { - const nextColors = Object.entries(colors).reduce((acc, [level, spec]) => { - acc[level] = typeof spec === 'string' ? spec.split(/\s+/) : spec - return acc - }, {} as Record) - - Colorizer.allColors = { ...Colorizer.allColors, ...nextColors as Record } - return Colorizer.allColors - } - - /** - * 实例方法添加颜色配置 - */ - addColors(colors: ColorMap) { - return Colorizer.addColors(colors) - } - - /** - * 执行颜色处理的核心方法 - */ - private colorize(lookup: string, level: string, message?: string): string { - if (typeof message === 'undefined') { - message = level - } - - const colorSpec = Colorizer.allColors[lookup] - if (!colorSpec) { - return String(message) - } - - return styleText(colorSpec, message) - } - - /** - * 转换日志信息的入口方法 - */ - transform: TransformFunction = (info, opts) => { - const options = { ...this.options, ...opts } - const levelKey = info[LEVEL] || info.level - - // 处理完整消息 - if (options.all && typeof info[MESSAGE] === 'string') { - info[MESSAGE] = this.colorize(levelKey, info.level, info[MESSAGE]) - } - - // 处理级别字段 - if (options.level || options.all || !options.message) { - info.level = this.colorize(levelKey, info.level) - } - - // 处理消息字段 - if (options.all || options.message) { - info.message = this.colorize(levelKey, info.level, info.message) - } - - return info - } -} - -export default (opts: ColorizeOptions = {}) => new Colorizer(opts) - -export { Colorizer as Format } diff --git a/packages/logger/src/format/plugins/colorize.ts.html b/packages/logger/src/format/plugins/colorize.ts.html new file mode 100644 index 0000000..f8134d9 --- /dev/null +++ b/packages/logger/src/format/plugins/colorize.ts.html @@ -0,0 +1,397 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/colorize.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins colorize.ts

+
+ +
+ 0% + Statements + 0/48 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/48 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ColorKeys } from '../../triple-beam/type'
+import type { TransformFunction } from '../type'
+import { styleText } from '@https-enable/colors'
+import { LEVEL, MESSAGE } from '../../triple-beam'
+ 
+export type ColorMap = Record<string, string | string[]>
+export interface ColorizeOptions {
+  /**
+   * If set to `true` the color will be applied to the `level`.
+   */
+  level?: boolean
+  /**
+   * If set to `true` the color will be applied to the `message` and `level`.
+   */
+  all?: boolean
+  /**
+   * If set to `true` the color will be applied to the `message`.
+   */
+  message?: boolean
+  /**
+   * An object containing the colors for the log levels. For example: `{ info: 'blue', error: 'red' }`.
+   */
+  colors?: Record<string, ColorKeys>
+}
+ 
+/**
+ * 颜色处理器类
+ */
+export class Colorizer {
+  static allColors: Record<string, ColorKeys[] | ColorKeys> = {}
+  options: ColorizeOptions
+ 
+  constructor(opts: ColorizeOptions = {}) {
+    if (opts.colors) {
+      this.addColors(opts.colors)
+    }
+    this.options = opts
+  }
+ 
+  /**
+   * 添加颜色配置到静态属性
+   */
+  static addColors(colors: ColorMap) {
+    const nextColors = Object.entries(colors).reduce((acc, [level, spec]) => {
+      acc[level] = typeof spec === 'string' ? spec.split(/\s+/) : spec
+      return acc
+    }, {} as Record<string, string[]>)
+ 
+    Colorizer.allColors = { ...Colorizer.allColors, ...nextColors as Record<string, ColorKeys[]> }
+    return Colorizer.allColors
+  }
+ 
+  /**
+   * 实例方法添加颜色配置
+   */
+  addColors(colors: ColorMap) {
+    return Colorizer.addColors(colors)
+  }
+ 
+  /**
+   * 执行颜色处理的核心方法
+   */
+  private colorize(lookup: string, level: string, message?: string): string {
+    if (typeof message === 'undefined') {
+      message = level
+    }
+ 
+    const colorSpec = Colorizer.allColors[lookup]
+    if (!colorSpec) {
+      return String(message)
+    }
+ 
+    return styleText(colorSpec, message)
+  }
+ 
+  /**
+   * 转换日志信息的入口方法
+   */
+  transform: TransformFunction<ColorizeOptions> = (info, opts) => {
+    const options = { ...this.options, ...opts }
+    const levelKey = info[LEVEL] || info.level
+ 
+    // 处理完整消息
+    if (options.all && typeof info[MESSAGE] === 'string') {
+      info[MESSAGE] = this.colorize(levelKey, info.level, info[MESSAGE])
+    }
+ 
+    // 处理级别字段
+    if (options.level || options.all || !options.message) {
+      info.level = this.colorize(levelKey, info.level)
+    }
+ 
+    // 处理消息字段
+    if (options.all || options.message) {
+      info.message = this.colorize(levelKey, info.level, info.message)
+    }
+ 
+    return info
+  }
+}
+ 
+export default (opts: ColorizeOptions = {}) => new Colorizer(opts)
+ 
+export { Colorizer as Format }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/combine.ts b/packages/logger/src/format/plugins/combine.ts deleted file mode 100644 index 2b11639..0000000 --- a/packages/logger/src/format/plugins/combine.ts +++ /dev/null @@ -1,71 +0,0 @@ -import type { format as FormatFunc, TransformableInfo } from '../type' -import format from '../format' - -type Format = InstanceType - -/* - * function cascade(formats) - * Returns a function that invokes the `._format` function in-order - * for the specified set of `formats`. In this manner we say that Formats - * are "pipe-like", but not a pure pumpify implementation. Since there is no back - * pressure we can remove all of the "readable" plumbing in Node streams. - */ -function cascade(formats: Format[]): ((info: TransformableInfo) => TransformableInfo) | undefined { - if (!formats.every(isValidFormat)) { - return - } - - return (info: TransformableInfo) => { - let obj = info - for (let i = 0; i < formats.length; i++) { - const format = formats[i]! - const temp = format.transform(obj, format.options) - obj = temp - } - - return obj - } -} - -/* - * function isValidFormat(format) - * If the format does not define a `transform` function throw an error - * with more detailed usage. - */ -function isValidFormat(fmt: Format): boolean { - if (typeof fmt.transform !== 'function') { - throw new TypeError([ - 'No transform function found on format. Did you create a format instance?', - 'const myFormat = format(formatFn);', - 'const instance = myFormat();', - ].join('\n')) - } - - return true -} - -/* - * function combine (info) - * Returns a new instance of the combine Format which combines the specified - * formats into a new format. This is similar to a pipe-chain in transform streams. - * We choose to combine the prototypes this way because there is no back pressure in - * an in-memory transform chain. - */ -function combine(...formats: Format[]) { - const combinedFormat = format(cascade(formats)!) - const instance = combinedFormat() - - Object.defineProperty(instance, 'Format', { - value: combinedFormat.Format, - }) - return instance -} - -// -// Export the cascade method for use in cli and other -// combined formats that should not be assumed to be -// singletons. -// -export { cascade } - -export default combine diff --git a/packages/logger/src/format/plugins/combine.ts.html b/packages/logger/src/format/plugins/combine.ts.html new file mode 100644 index 0000000..ed3bbe4 --- /dev/null +++ b/packages/logger/src/format/plugins/combine.ts.html @@ -0,0 +1,298 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/combine.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins combine.ts

+
+ +
+ 0% + Statements + 0/34 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/34 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { format as FormatFunc, TransformableInfo } from '../type'
+import format from '../format'
+ 
+type Format = InstanceType<FormatFunc['Format']>
+ 
+/*
+ * function cascade(formats)
+ * Returns a function that invokes the `._format` function in-order
+ * for the specified set of `formats`. In this manner we say that Formats
+ * are "pipe-like", but not a pure pumpify implementation. Since there is no back
+ * pressure we can remove all of the "readable" plumbing in Node streams.
+ */
+function cascade(formats: Format[]): ((info: TransformableInfo) => TransformableInfo) | undefined {
+  if (!formats.every(isValidFormat)) {
+    return
+  }
+ 
+  return (info: TransformableInfo) => {
+    let obj = info
+    for (let i = 0; i < formats.length; i++) {
+      const format = formats[i]!
+      const temp = format.transform(obj, format.options)
+      obj = temp
+    }
+ 
+    return obj
+  }
+}
+ 
+/*
+ * function isValidFormat(format)
+ * If the format does not define a `transform` function throw an error
+ * with more detailed usage.
+ */
+function isValidFormat(fmt: Format): boolean {
+  if (typeof fmt.transform !== 'function') {
+    throw new TypeError([
+      'No transform function found on format. Did you create a format instance?',
+      'const myFormat = format(formatFn);',
+      'const instance = myFormat();',
+    ].join('\n'))
+  }
+ 
+  return true
+}
+ 
+/*
+ * function combine (info)
+ * Returns a new instance of the combine Format which combines the specified
+ * formats into a new format. This is similar to a pipe-chain in transform streams.
+ * We choose to combine the prototypes this way because there is no back pressure in
+ * an in-memory transform chain.
+ */
+function combine(...formats: Format[]) {
+  const combinedFormat = format(cascade(formats)!)
+  const instance = combinedFormat()
+ 
+  Object.defineProperty(instance, 'Format', {
+    value: combinedFormat.Format,
+  })
+  return instance
+}
+ 
+//
+// Export the cascade method for use in cli and other
+// combined formats that should not be assumed to be
+// singletons.
+//
+export { cascade }
+ 
+export default combine
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/errors.ts b/packages/logger/src/format/plugins/errors.ts deleted file mode 100644 index 9e629bd..0000000 --- a/packages/logger/src/format/plugins/errors.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { LEVEL, MESSAGE } from '../../triple-beam' -import format from '../format' - -export interface ErrorsOptions { - /** - * If `true`, the `Error` object's `stack` property will be appended to the `info` object. - */ - stack?: boolean - /** - * If `true`, the `Error` object's `cause` property will be appended to the `info` object. - */ - cause?: boolean -} - -/* - * function errors (info) - * If the `message` property of the `info` object is an instance of `Error`, - * replace the `Error` object its own `message` property. - * - * Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object. - */ -export default format((einfo, { stack, cause } = {}) => { - if (einfo instanceof Error) { - const info = { - ...einfo, - level: einfo.level, - [LEVEL]: einfo[LEVEL] || einfo.level, - message: einfo.message, - [MESSAGE]: einfo[MESSAGE] || einfo.message, - } - - stack && (info.stack = einfo.stack) - cause && (info.cause = einfo.cause) - return info - } - - // eslint-disable-next-line ts/ban-ts-comment - // @ts-ignore - if (!(einfo.message instanceof Error)) - return einfo - - // Assign all enumerable properties and the - // message property from the error provided. - const err = einfo.message - Object.assign(einfo, err) - einfo.message = err.message - einfo[MESSAGE] = err.message - - // Assign the stack and/or cause if requested. - stack && (einfo.stack = err.stack) - cause && (einfo.cause = err.cause) - - return einfo -}) diff --git a/packages/logger/src/format/plugins/errors.ts.html b/packages/logger/src/format/plugins/errors.ts.html new file mode 100644 index 0000000..52f8e76 --- /dev/null +++ b/packages/logger/src/format/plugins/errors.ts.html @@ -0,0 +1,247 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/errors.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins errors.ts

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { LEVEL, MESSAGE } from '../../triple-beam'
+import format from '../format'
+ 
+export interface ErrorsOptions {
+  /**
+   * If `true`, the `Error` object's `stack` property will be appended to the `info` object.
+   */
+  stack?: boolean
+  /**
+   * If `true`, the `Error` object's `cause` property will be appended to the `info` object.
+   */
+  cause?: boolean
+}
+ 
+/*
+ * function errors (info)
+ * If the `message` property of the `info` object is an instance of `Error`,
+ * replace the `Error` object its own `message` property.
+ *
+ * Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.
+ */
+export default format<ErrorsOptions>((einfo, { stack, cause } = {}) => {
+  if (einfo instanceof Error) {
+    const info = {
+      ...einfo,
+      level: einfo.level,
+      [LEVEL]: einfo[LEVEL] || einfo.level,
+      message: einfo.message,
+      [MESSAGE]: einfo[MESSAGE] || einfo.message,
+    }
+ 
+    stack && (info.stack = einfo.stack)
+    cause && (info.cause = einfo.cause)
+    return info
+  }
+ 
+  // eslint-disable-next-line ts/ban-ts-comment
+  // @ts-ignore
+  if (!(einfo.message instanceof Error))
+    return einfo
+ 
+  // Assign all enumerable properties and the
+  // message property from the error provided.
+  const err = einfo.message
+  Object.assign(einfo, err)
+  einfo.message = err.message
+  einfo[MESSAGE] = err.message
+ 
+  // Assign the stack and/or cause if requested.
+  stack && (einfo.stack = err.stack)
+  cause && (einfo.cause = err.cause)
+ 
+  return einfo
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/index.html b/packages/logger/src/format/plugins/index.html new file mode 100644 index 0000000..5b9c095 --- /dev/null +++ b/packages/logger/src/format/plugins/index.html @@ -0,0 +1,356 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins + + + + + + + + + +
+
+

All files packages/logger/src/format/plugins

+
+ +
+ 0% + Statements + 0/385 +
+ + +
+ 41.17% + Branches + 7/17 +
+ + +
+ 41.17% + Functions + 7/17 +
+ + +
+ 0% + Lines + 0/385 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
align.ts +
+
0%0/50%0/10%0/10%0/5
cli.ts +
+
0%0/22100%1/1100%1/10%0/22
colorize.ts +
+
0%0/48100%1/1100%1/10%0/48
combine.ts +
+
0%0/34100%1/1100%1/10%0/34
errors.ts +
+
0%0/250%0/10%0/10%0/25
json.ts +
+
0%0/140%0/10%0/10%0/14
label.ts +
+
0%0/90%0/10%0/10%0/9
logstash.ts +
+
0%0/170%0/10%0/10%0/17
metadata.ts +
+
0%0/43100%1/1100%1/10%0/43
ms.ts +
+
0%0/100%0/10%0/10%0/10
pad-levels.ts +
+
0%0/36100%1/1100%1/10%0/36
pretty-print.ts +
+
0%0/110%0/10%0/10%0/11
printf.ts +
+
0%0/12100%1/1100%1/10%0/12
simple.ts +
+
0%0/190%0/10%0/10%0/19
splat.ts +
+
0%0/47100%1/1100%1/10%0/47
timestamp.ts +
+
0%0/160%0/10%0/10%0/16
uncolorize.ts +
+
0%0/170%0/10%0/10%0/17
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/json.ts b/packages/logger/src/format/plugins/json.ts deleted file mode 100644 index 948c58a..0000000 --- a/packages/logger/src/format/plugins/json.ts +++ /dev/null @@ -1,76 +0,0 @@ -import stringify from 'safe-stable-stringify' -import { MESSAGE } from '../../triple-beam' -import format from '../format' - -export interface JsonOptions { - /** - * A function that influences how the `info` is stringified. - */ - replacer?: (this: any, key: string, value: any) => any - /** - * The number of white space used to format the json. - */ - space?: number - - // The following options come from safe-stable-stringify - // https://github.com/BridgeAR/safe-stable-stringify/blob/main/index.d.ts - - /** - * If `true`, bigint values are converted to a number. Otherwise, they are ignored. - * This option is ignored by default as Logform stringifies BigInt in the default replacer. - * @default true - */ - bigint?: boolean - /** - * Defines the value for circular references. - * Set to `undefined`, circular properties are not serialized (array entries are replaced with null). - * Set to `Error`, to throw on circular references. - * @default "[Circular]" - */ - circularValue?: string | null | TypeErrorConstructor | ErrorConstructor - /** - * If `true`, guarantee a deterministic key order instead of relying on the insertion order. - * @default true - */ - deterministic?: boolean - /** - * Maximum number of entries to serialize per object (at least one). - * The serialized output contains information about how many entries have not been serialized. - * Ignored properties are counted as well (e.g., properties with symbol values). - * Using the array replacer overrules this option. - * @default Infinity - */ - maximumBreadth?: number - /** - * Maximum number of object nesting levels (at least 1) that will be serialized. - * Objects at the maximum level are serialized as `"[Object]"` and arrays as `"[Array]"`. - * @default Infinity - */ - maximumDepth?: number -} - -/* - * function replacer (key, value) - * Handles proper stringification of Buffer and bigint output. - */ -function replacer(key: string, value: any): any { - // safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes. - // Leading to a loss in fidelity if the resulting string is parsed. - // It would also be a breaking change for logform. - if (typeof value === 'bigint') { - return value.toString() - } - return value -} - -/* - * function json (info) - * Returns a new instance of the JSON format that turns a log `info` - * object into pure JSON. This was previously exposed as { json: true } - * to transports in `winston < 3.0.0`. - */ -export default format((info, opts = {}) => { - const jsonStringify = stringify.configure(opts) - info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space) - return info -}) diff --git a/packages/logger/src/format/plugins/json.ts.html b/packages/logger/src/format/plugins/json.ts.html new file mode 100644 index 0000000..6d33c77 --- /dev/null +++ b/packages/logger/src/format/plugins/json.ts.html @@ -0,0 +1,313 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/json.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins json.ts

+
+ +
+ 0% + Statements + 0/14 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import stringify from 'safe-stable-stringify'
+import { MESSAGE } from '../../triple-beam'
+import format from '../format'
+ 
+export interface JsonOptions {
+  /**
+   * A function that influences how the `info` is stringified.
+   */
+  replacer?: (this: any, key: string, value: any) => any
+  /**
+   * The number of white space used to format the json.
+   */
+  space?: number
+ 
+  // The following options come from safe-stable-stringify
+  // https://github.com/BridgeAR/safe-stable-stringify/blob/main/index.d.ts
+ 
+  /**
+   * If `true`, bigint values are converted to a number. Otherwise, they are ignored.
+   * This option is ignored by default as Logform stringifies BigInt in the default replacer.
+   * @default true
+   */
+  bigint?: boolean
+  /**
+   * Defines the value for circular references.
+   * Set to `undefined`, circular properties are not serialized (array entries are replaced with null).
+   * Set to `Error`, to throw on circular references.
+   * @default "[Circular]"
+   */
+  circularValue?: string | null | TypeErrorConstructor | ErrorConstructor
+  /**
+   * If `true`, guarantee a deterministic key order instead of relying on the insertion order.
+   * @default true
+   */
+  deterministic?: boolean
+  /**
+   * Maximum number of entries to serialize per object (at least one).
+   * The serialized output contains information about how many entries have not been serialized.
+   * Ignored properties are counted as well (e.g., properties with symbol values).
+   * Using the array replacer overrules this option.
+   * @default Infinity
+   */
+  maximumBreadth?: number
+  /**
+   * Maximum number of object nesting levels (at least 1) that will be serialized.
+   * Objects at the maximum level are serialized as `"[Object]"` and arrays as `"[Array]"`.
+   * @default Infinity
+   */
+  maximumDepth?: number
+}
+ 
+/*
+ * function replacer (key, value)
+ * Handles proper stringification of Buffer and bigint output.
+ */
+function replacer(key: string, value: any): any {
+  // safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.
+  // Leading to a loss in fidelity if the resulting string is parsed.
+  // It would also be a breaking change for logform.
+  if (typeof value === 'bigint') {
+    return value.toString()
+  }
+  return value
+}
+ 
+/*
+ * function json (info)
+ * Returns a new instance of the JSON format that turns a log `info`
+ * object into pure JSON. This was previously exposed as { json: true }
+ * to transports in `winston < 3.0.0`.
+ */
+export default format<JsonOptions>((info, opts = {}) => {
+  const jsonStringify = stringify.configure(opts)
+  info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space)
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/label.ts b/packages/logger/src/format/plugins/label.ts deleted file mode 100644 index bc4e0a3..0000000 --- a/packages/logger/src/format/plugins/label.ts +++ /dev/null @@ -1,29 +0,0 @@ -import format from '../format' - -export interface LabelOptions { - /** - * A label to be added before the message. - */ - label?: string - /** - * If set to `true` the `label` will be added to `info.message`. If set to `false` the `label` - * will be added as `info.label`. - */ - message?: boolean -} - -/* - * function label (info) - * Returns a new instance of the label Format which adds the specified - * `opts.label` before the message. This was previously exposed as - * { label: 'my label' } to transports in `winston < 3.0.0`. - */ -export default format((info, opts = {}) => { - if (opts.message) { - info.message = `[${opts.label}] ${info.message}` - return info - } - - info.label = opts.label - return info -}) diff --git a/packages/logger/src/format/plugins/label.ts.html b/packages/logger/src/format/plugins/label.ts.html new file mode 100644 index 0000000..1970e32 --- /dev/null +++ b/packages/logger/src/format/plugins/label.ts.html @@ -0,0 +1,172 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/label.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins label.ts

+
+ +
+ 0% + Statements + 0/9 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import format from '../format'
+ 
+export interface LabelOptions {
+  /**
+   * A label to be added before the message.
+   */
+  label?: string
+  /**
+   * If set to `true` the `label` will be added to `info.message`. If set to `false` the `label`
+   * will be added as `info.label`.
+   */
+  message?: boolean
+}
+ 
+/*
+ * function label (info)
+ * Returns a new instance of the label Format which adds the specified
+ * `opts.label` before the message. This was previously exposed as
+ * { label: 'my label' } to transports in `winston < 3.0.0`.
+ */
+export default format<LabelOptions>((info, opts = {}) => {
+  if (opts.message) {
+    info.message = `[${opts.label}] ${info.message}`
+    return info
+  }
+ 
+  info.label = opts.label
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/logstash.ts b/packages/logger/src/format/plugins/logstash.ts deleted file mode 100644 index 038c882..0000000 --- a/packages/logger/src/format/plugins/logstash.ts +++ /dev/null @@ -1,28 +0,0 @@ -import jsonStringify from 'safe-stable-stringify' -import { MESSAGE } from '../../triple-beam' -import format from '../format' - -/* - * function logstash (info) - * Returns a new instance of the LogStash Format that turns a - * log `info` object into pure JSON with the appropriate logstash - * options. This was previously exposed as { logstash: true } - * to transports in `winston < 3.0.0`. - */ -export default format((info) => { - const logstash: Record = {} - - if (info.message) { - logstash['@message'] = info.message - delete info.message - } - - if (info.timestamp) { - logstash['@timestamp'] = info.timestamp - delete info.timestamp - } - - logstash['@fields'] = info - info[MESSAGE] = jsonStringify(logstash) - return info -}) diff --git a/packages/logger/src/format/plugins/logstash.ts.html b/packages/logger/src/format/plugins/logstash.ts.html new file mode 100644 index 0000000..2d8e487 --- /dev/null +++ b/packages/logger/src/format/plugins/logstash.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/logstash.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins logstash.ts

+
+ +
+ 0% + Statements + 0/17 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import jsonStringify from 'safe-stable-stringify'
+import { MESSAGE } from '../../triple-beam'
+import format from '../format'
+ 
+/*
+ * function logstash (info)
+ * Returns a new instance of the LogStash Format that turns a
+ * log `info` object into pure JSON with the appropriate logstash
+ * options. This was previously exposed as { logstash: true }
+ * to transports in `winston < 3.0.0`.
+ */
+export default format((info) => {
+  const logstash: Record<string, any> = {}
+ 
+  if (info.message) {
+    logstash['@message'] = info.message
+    delete info.message
+  }
+ 
+  if (info.timestamp) {
+    logstash['@timestamp'] = info.timestamp
+    delete info.timestamp
+  }
+ 
+  logstash['@fields'] = info
+  info[MESSAGE] = jsonStringify(logstash)
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/metadata.ts b/packages/logger/src/format/plugins/metadata.ts deleted file mode 100644 index 4c55dfe..0000000 --- a/packages/logger/src/format/plugins/metadata.ts +++ /dev/null @@ -1,75 +0,0 @@ -import type { TransformableInfo } from '../type' -import format from '../format' - -export interface MetadataOptions { - /** - * The name of the key used for the metadata object. Defaults to `metadata`. - */ - key?: string - /** - * An array of keys that should not be added to the metadata object. - */ - fillExcept?: string[] - /** - * An array of keys that will be added to the metadata object. - */ - fillWith?: string[] -} - -function fillExcept(info: TransformableInfo, fillExceptKeys: string[], metadataKey: string) { - const savedKeys = fillExceptKeys.reduce((acc, key) => { - acc[key] = info[key] - delete info[key] - return acc - }, {} as TransformableInfo) - - const metadata = Object.keys(info).reduce((acc, key) => { - acc[key] = info[key] - delete info[key] - return acc - }, {} as TransformableInfo) - - Object.assign(info, savedKeys, { - [metadataKey]: metadata, - }) - - return info -} - -function fillWith(info: TransformableInfo, fillWithKeys: string[], metadataKey: string) { - info[metadataKey] = fillWithKeys.reduce((acc, key) => { - acc[key] = info[key] - delete info[key] - return acc - }, {} as TransformableInfo) - - return info -} - -/** - * Adds in a "metadata" object to collect extraneous data, similar to the metadata - * object in winston 2.x. - */ -export default format((info, opts = {}) => { - const metadataKey = opts.key || 'metadata' - - let fillExceptKeys: string[] = [] - if (!opts.fillExcept && !opts.fillWith) { - fillExceptKeys.push('level') - fillExceptKeys.push('message') - } - - if (opts.fillExcept) { - fillExceptKeys = opts.fillExcept - } - - if (fillExceptKeys.length > 0) { - return fillExcept(info, fillExceptKeys, metadataKey) - } - - if (opts.fillWith) { - return fillWith(info, opts.fillWith, metadataKey) - } - - return info -}) diff --git a/packages/logger/src/format/plugins/metadata.ts.html b/packages/logger/src/format/plugins/metadata.ts.html new file mode 100644 index 0000000..908a91e --- /dev/null +++ b/packages/logger/src/format/plugins/metadata.ts.html @@ -0,0 +1,310 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/metadata.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins metadata.ts

+
+ +
+ 0% + Statements + 0/43 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/43 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { TransformableInfo } from '../type'
+import format from '../format'
+ 
+export interface MetadataOptions {
+  /**
+   * The name of the key used for the metadata object. Defaults to `metadata`.
+   */
+  key?: string
+  /**
+   * An array of keys that should not be added to the metadata object.
+   */
+  fillExcept?: string[]
+  /**
+   * An array of keys that will be added to the metadata object.
+   */
+  fillWith?: string[]
+}
+ 
+function fillExcept(info: TransformableInfo, fillExceptKeys: string[], metadataKey: string) {
+  const savedKeys = fillExceptKeys.reduce((acc, key) => {
+    acc[key] = info[key]
+    delete info[key]
+    return acc
+  }, {} as TransformableInfo)
+ 
+  const metadata = Object.keys(info).reduce((acc, key) => {
+    acc[key] = info[key]
+    delete info[key]
+    return acc
+  }, {} as TransformableInfo)
+ 
+  Object.assign(info, savedKeys, {
+    [metadataKey]: metadata,
+  })
+ 
+  return info
+}
+ 
+function fillWith(info: TransformableInfo, fillWithKeys: string[], metadataKey: string) {
+  info[metadataKey] = fillWithKeys.reduce((acc, key) => {
+    acc[key] = info[key]
+    delete info[key]
+    return acc
+  }, {} as TransformableInfo)
+ 
+  return info
+}
+ 
+/**
+ * Adds in a "metadata" object to collect extraneous data, similar to the metadata
+ * object in winston 2.x.
+ */
+export default format<MetadataOptions>((info, opts = {}) => {
+  const metadataKey = opts.key || 'metadata'
+ 
+  let fillExceptKeys: string[] = []
+  if (!opts.fillExcept && !opts.fillWith) {
+    fillExceptKeys.push('level')
+    fillExceptKeys.push('message')
+  }
+ 
+  if (opts.fillExcept) {
+    fillExceptKeys = opts.fillExcept
+  }
+ 
+  if (fillExceptKeys.length > 0) {
+    return fillExcept(info, fillExceptKeys, metadataKey)
+  }
+ 
+  if (opts.fillWith) {
+    return fillWith(info, opts.fillWith, metadataKey)
+  }
+ 
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/ms.ts b/packages/logger/src/format/plugins/ms.ts deleted file mode 100644 index 947e202..0000000 --- a/packages/logger/src/format/plugins/ms.ts +++ /dev/null @@ -1,18 +0,0 @@ -import ms from 'ms' -import format from '../format' - -/* - * function ms (info) - * Returns an `info` with a `ms` property. The `ms` property holds the value - * of the time difference between two calls in milliseconds. - */ -let prevTime: number - -export default format((info) => { - const curr = +new Date() - const diff = curr - (prevTime || curr) - prevTime = curr - info.ms = `+${ms(diff)}` - - return info -}) diff --git a/packages/logger/src/format/plugins/ms.ts.html b/packages/logger/src/format/plugins/ms.ts.html new file mode 100644 index 0000000..3d57296 --- /dev/null +++ b/packages/logger/src/format/plugins/ms.ts.html @@ -0,0 +1,139 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/ms.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins ms.ts

+
+ +
+ 0% + Statements + 0/10 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import ms from 'ms'
+import format from '../format'
+ 
+/*
+ * function ms (info)
+ * Returns an `info` with a `ms` property. The `ms` property holds the value
+ * of the time difference between two calls in milliseconds.
+ */
+let prevTime: number
+ 
+export default format((info) => {
+  const curr = +new Date()
+  const diff = curr - (prevTime || curr)
+  prevTime = curr
+  info.ms = `+${ms(diff)}`
+ 
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/pad-levels.ts b/packages/logger/src/format/plugins/pad-levels.ts deleted file mode 100644 index d8dbb02..0000000 --- a/packages/logger/src/format/plugins/pad-levels.ts +++ /dev/null @@ -1,94 +0,0 @@ -import type { TransformFunction } from '../type' -import { configs, LEVEL, MESSAGE } from '../../triple-beam' - -export interface PadLevelsOptions { - /** - * Log levels. Defaults to `configs.npm.levels` from [triple-beam](https://github.com/winstonjs/triple-beam) - * module. - */ - levels?: Record - filler?: string -} - -class Padder { - paddings: Record - options: PadLevelsOptions - - constructor(opts: PadLevelsOptions = { levels: configs.npm.levels }) { - this.paddings = Padder.paddingForLevels(opts.levels || configs.npm.levels, opts.filler) - this.options = opts - } - - /** - * Returns the maximum length of keys in the specified `levels` Object. - * @param levels Set of all levels to calculate longest level against. - * @returns Maximum length of the longest level string. - */ - static getLongestLevel(levels: Record) { - const lvls = Object.keys(levels).map(level => level.length) - return Math.max(...lvls) - } - - /** - * Returns the padding for the specified `level` assuming that the - * maximum length of all levels it's associated with is `maxLength`. - * @param level Level to calculate padding for. - * @param filler Repeatable text to use for padding. - * @param maxLength Length of the longest level - * @returns Padding string for the `level` - */ - static paddingForLevel(level: string, filler: string, maxLength: number) { - const targetLen = maxLength + 1 - level.length - const rep = Math.floor(targetLen / filler.length) - const padding = `${filler}${filler.repeat(rep)}` - return padding.slice(0, targetLen) - } - - /** - * Returns an object with the string paddings for the given `levels` - * using the specified `filler`. - * @param levels Set of all levels to calculate padding for. - * @param filler Repeatable text to use for padding. - * @returns Mapping of level to desired padding. - */ - static paddingForLevels(levels: Record, filler: string = ' ') { - const maxLength = Padder.getLongestLevel(levels) - return Object.keys(levels).reduce((acc, level) => { - acc[level] = Padder.paddingForLevel(level, filler, maxLength) - return acc - }, {} as Record) - } - - /** - * Prepends the padding onto the `message` based on the `LEVEL` of - * the `info`. This is based on the behavior of `winston@2` which also - * prepended the level onto the message. - * - * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201 - * - * @param info Logform info object - * @param opts Options passed along to this instance. - * @returns Modified logform info object. - */ - // eslint-disable-next-line unused-imports/no-unused-vars - transform: TransformFunction = (info, opts = {}) => { - const level = info[LEVEL] - const paddings = level ? this.paddings[level] : '' - info.message = `${paddings}${info.message}` - if (info[MESSAGE]) { - info[MESSAGE] = `${paddings}${info[MESSAGE]}` - } - - return info - } -} - -/* - * function padLevels (info) - * Returns a new instance of the padLevels Format which pads - * levels to be the same length. This was previously exposed as - * { padLevels: true } to transports in `winston < 3.0.0`. - */ -export default (opts: PadLevelsOptions) => new Padder(opts) - -export { Padder } diff --git a/packages/logger/src/format/plugins/pad-levels.ts.html b/packages/logger/src/format/plugins/pad-levels.ts.html new file mode 100644 index 0000000..e558508 --- /dev/null +++ b/packages/logger/src/format/plugins/pad-levels.ts.html @@ -0,0 +1,367 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/pad-levels.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins pad-levels.ts

+
+ +
+ 0% + Statements + 0/36 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/36 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { TransformFunction } from '../type'
+import { configs, LEVEL, MESSAGE } from '../../triple-beam'
+ 
+export interface PadLevelsOptions {
+  /**
+   * Log levels. Defaults to `configs.npm.levels` from [triple-beam](https://github.com/winstonjs/triple-beam)
+   * module.
+   */
+  levels?: Record<string, number>
+  filler?: string
+}
+ 
+class Padder {
+  paddings: Record<string, string>
+  options: PadLevelsOptions
+ 
+  constructor(opts: PadLevelsOptions = { levels: configs.npm.levels }) {
+    this.paddings = Padder.paddingForLevels(opts.levels || configs.npm.levels, opts.filler)
+    this.options = opts
+  }
+ 
+  /**
+   * Returns the maximum length of keys in the specified `levels` Object.
+   * @param levels Set of all levels to calculate longest level against.
+   * @returns Maximum length of the longest level string.
+   */
+  static getLongestLevel(levels: Record<string, any>) {
+    const lvls = Object.keys(levels).map(level => level.length)
+    return Math.max(...lvls)
+  }
+ 
+  /**
+   * Returns the padding for the specified `level` assuming that the
+   * maximum length of all levels it's associated with is `maxLength`.
+   * @param level Level to calculate padding for.
+   * @param filler Repeatable text to use for padding.
+   * @param maxLength Length of the longest level
+   * @returns Padding string for the `level`
+   */
+  static paddingForLevel(level: string, filler: string, maxLength: number) {
+    const targetLen = maxLength + 1 - level.length
+    const rep = Math.floor(targetLen / filler.length)
+    const padding = `${filler}${filler.repeat(rep)}`
+    return padding.slice(0, targetLen)
+  }
+ 
+  /**
+   * Returns an object with the string paddings for the given `levels`
+   * using the specified `filler`.
+   * @param levels Set of all levels to calculate padding for.
+   * @param filler Repeatable text to use for padding.
+   * @returns Mapping of level to desired padding.
+   */
+  static paddingForLevels(levels: Record<string, any>, filler: string = ' ') {
+    const maxLength = Padder.getLongestLevel(levels)
+    return Object.keys(levels).reduce((acc, level) => {
+      acc[level] = Padder.paddingForLevel(level, filler, maxLength)
+      return acc
+    }, {} as Record<string, string>)
+  }
+ 
+  /**
+   * Prepends the padding onto the `message` based on the `LEVEL` of
+   * the `info`. This is based on the behavior of `winston@2` which also
+   * prepended the level onto the message.
+   *
+   * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201
+   *
+   * @param info Logform info object
+   * @param opts Options passed along to this instance.
+   * @returns Modified logform info object.
+   */
+  // eslint-disable-next-line unused-imports/no-unused-vars
+  transform: TransformFunction<PadLevelsOptions> = (info, opts = {}) => {
+    const level = info[LEVEL]
+    const paddings = level ? this.paddings[level] : ''
+    info.message = `${paddings}${info.message}`
+    if (info[MESSAGE]) {
+      info[MESSAGE] = `${paddings}${info[MESSAGE]}`
+    }
+ 
+    return info
+  }
+}
+ 
+/*
+ * function padLevels (info)
+ * Returns a new instance of the padLevels Format which pads
+ * levels to be the same length. This was previously exposed as
+ * { padLevels: true } to transports in `winston < 3.0.0`.
+ */
+export default (opts: PadLevelsOptions) => new Padder(opts)
+ 
+export { Padder }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/pretty-print.ts b/packages/logger/src/format/plugins/pretty-print.ts deleted file mode 100644 index 72b930f..0000000 --- a/packages/logger/src/format/plugins/pretty-print.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { inspect } from 'node:util' -import { LEVEL, MESSAGE, SPLAT } from '../../triple-beam' -import format from '../format' - -export interface PrettyPrintOptions { - /** - * A `number` that specifies the maximum depth of the `info` object being stringified by - * `util.inspect`. Defaults to `2`. - */ - depth?: number - /** - * Colorizes the message if set to `true`. Defaults to `false`. - */ - colorize?: boolean -} - -/* - * function prettyPrint (info) - * Returns a new instance of the prettyPrint Format that "prettyPrint" - * serializes `info` objects. This was previously exposed as - * { prettyPrint: true } to transports in `winston < 3.0.0`. - */ -export default format((info, opts = {}) => { - // - // info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they - // are internal, we remove them before util.inspect so they - // are not printed. - // - const stripped = { ...info } - - // Remark (indexzero): update this technique in April 2019 - // when node@6 is EOL - delete stripped[LEVEL] - delete stripped[MESSAGE] - delete stripped[SPLAT] - - info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize) - return info -}) diff --git a/packages/logger/src/format/plugins/pretty-print.ts.html b/packages/logger/src/format/plugins/pretty-print.ts.html new file mode 100644 index 0000000..1c34eef --- /dev/null +++ b/packages/logger/src/format/plugins/pretty-print.ts.html @@ -0,0 +1,202 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/pretty-print.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins pretty-print.ts

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { inspect } from 'node:util'
+import { LEVEL, MESSAGE, SPLAT } from '../../triple-beam'
+import format from '../format'
+ 
+export interface PrettyPrintOptions {
+  /**
+   * A `number` that specifies the maximum depth of the `info` object being stringified by
+   * `util.inspect`. Defaults to `2`.
+   */
+  depth?: number
+  /**
+   * Colorizes the message if set to `true`. Defaults to `false`.
+   */
+  colorize?: boolean
+}
+ 
+/*
+ * function prettyPrint (info)
+ * Returns a new instance of the prettyPrint Format that "prettyPrint"
+ * serializes `info` objects. This was previously exposed as
+ * { prettyPrint: true } to transports in `winston < 3.0.0`.
+ */
+export default format<PrettyPrintOptions>((info, opts = {}) => {
+  //
+  // info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they
+  // are internal, we remove them before util.inspect so they
+  // are not printed.
+  //
+  const stripped = { ...info }
+ 
+  // Remark (indexzero): update this technique in April 2019
+  // when node@6 is EOL
+  delete stripped[LEVEL]
+  delete stripped[MESSAGE]
+  delete stripped[SPLAT]
+ 
+  info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize)
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/printf.ts b/packages/logger/src/format/plugins/printf.ts deleted file mode 100644 index 64e3d47..0000000 --- a/packages/logger/src/format/plugins/printf.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { TransformableInfo, TransformFunction } from '../type' -import { MESSAGE } from '../../triple-beam' - -type TemplateFn = (info: TransformableInfo) => any - -class Printf { - template: TemplateFn - - constructor(templateFn: TemplateFn) { - this.template = templateFn - } - - transform: TransformFunction = (info) => { - info[MESSAGE] = this.template(info) - return info - } -} - -/* - * function printf (templateFn) - * Returns a new instance of the printf Format that creates an - * intermediate prototype to store the template string-based formatter - * function. - */ -export default (templateFn: TemplateFn) => new Printf(templateFn) - -export { Printf } diff --git a/packages/logger/src/format/plugins/printf.ts.html b/packages/logger/src/format/plugins/printf.ts.html new file mode 100644 index 0000000..a5e1547 --- /dev/null +++ b/packages/logger/src/format/plugins/printf.ts.html @@ -0,0 +1,166 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/printf.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins printf.ts

+
+ +
+ 0% + Statements + 0/12 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { TransformableInfo, TransformFunction } from '../type'
+import { MESSAGE } from '../../triple-beam'
+ 
+type TemplateFn = (info: TransformableInfo) => any
+ 
+class Printf {
+  template: TemplateFn
+ 
+  constructor(templateFn: TemplateFn) {
+    this.template = templateFn
+  }
+ 
+  transform: TransformFunction = (info) => {
+    info[MESSAGE] = this.template(info)
+    return info
+  }
+}
+ 
+/*
+ * function printf (templateFn)
+ * Returns a new instance of the printf Format that creates an
+ * intermediate prototype to store the template string-based formatter
+ * function.
+ */
+export default (templateFn: TemplateFn) => new Printf(templateFn)
+ 
+export { Printf }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/simple.ts b/packages/logger/src/format/plugins/simple.ts deleted file mode 100644 index d7b22d2..0000000 --- a/packages/logger/src/format/plugins/simple.ts +++ /dev/null @@ -1,32 +0,0 @@ -import jsonStringify from 'safe-stable-stringify' -import { MESSAGE } from '../../triple-beam' -import format from '../format' - -/* - * function simple (info) - * Returns a new instance of the simple format TransformStream - * which writes a simple representation of logs. - * - * const { level, message, splat, ...rest } = info; - * - * ${level}: ${message} if rest is empty - * ${level}: ${message} ${JSON.stringify(rest)} otherwise - */ -export default format((info) => { - const stringifiedRest = jsonStringify({ - ...info, - level: undefined, - message: undefined, - splat: undefined, - }) - - const padding = (info.padding && info.padding[info.level]) || '' - if (stringifiedRest && stringifiedRest !== '{}') { - info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}` - } - else { - info[MESSAGE] = `${info.level}:${padding} ${info.message}` - } - - return info -}) diff --git a/packages/logger/src/format/plugins/simple.ts.html b/packages/logger/src/format/plugins/simple.ts.html new file mode 100644 index 0000000..cd82b3b --- /dev/null +++ b/packages/logger/src/format/plugins/simple.ts.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/simple.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins simple.ts

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import jsonStringify from 'safe-stable-stringify'
+import { MESSAGE } from '../../triple-beam'
+import format from '../format'
+ 
+/*
+ * function simple (info)
+ * Returns a new instance of the simple format TransformStream
+ * which writes a simple representation of logs.
+ *
+ *    const { level, message, splat, ...rest } = info;
+ *
+ *    ${level}: ${message}                            if rest is empty
+ *    ${level}: ${message} ${JSON.stringify(rest)}    otherwise
+ */
+export default format((info) => {
+  const stringifiedRest = jsonStringify({
+    ...info,
+    level: undefined,
+    message: undefined,
+    splat: undefined,
+  })
+ 
+  const padding = (info.padding && info.padding[info.level]) || ''
+  if (stringifiedRest && stringifiedRest !== '{}') {
+    info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`
+  }
+  else {
+    info[MESSAGE] = `${info.level}:${padding} ${info.message}`
+  }
+ 
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/splat.ts b/packages/logger/src/format/plugins/splat.ts deleted file mode 100644 index f0b9210..0000000 --- a/packages/logger/src/format/plugins/splat.ts +++ /dev/null @@ -1,119 +0,0 @@ -import type { TransformableInfo, TransformFunction } from '../type' -import util from 'node:util' -import { SPLAT } from '../../triple-beam' - -/** - * 捕获给定字符串中的格式(即 %s 字符串)的数量。 - * 基于 `util.format`,参见 Node.js 源代码: - * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230 - */ -const formatRegExp = /%[scdjifoO%]/g - -/** - * 捕获格式字符串中转义的 % 符号的数量(即 %s 字符串)。 - */ -const escapedPercent = /%%/g - -class Splatter { - constructor() {} - - /** - * 检查 tokens <= splat.length,将 { splat, meta } 分配到 `info` 中,并写入此实例。 - * - * @param info Logform 信息消息。 - * @param tokens 一组字符串插值标记。 - * @returns 修改后的信息消息 - * @private - */ - private _splat(info: TransformableInfo, tokens: string[]) { - const msg = info.message || '' - const splat = info[SPLAT] || info.splat || [] - const percents = msg.match(escapedPercent) - const escapes = percents ? percents.length : 0 - - // 预期的 splat 是标记的数量减去转义的数量 - // 例如: - // - { expectedSplat: 3 } '%d %s %j' - // - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j' - // - // 任何 "meta" 都将是预期 splat 大小之外的参数,无论类型如何。例如: - // - // logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true }); - // 将导致 splat 为四(4),但预期只有三(3)。因此: - // - // extraSplat = 3 - 4 = -1 - // metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1); - // splat = [100, 'wow', { such: 'js' }] - const expectedSplat = tokens.length - escapes - const extraSplat = expectedSplat - splat.length - const metas = extraSplat < 0 ? splat.splice(extraSplat, -1 * extraSplat) : [] - - // 现在 { splat } 已经与任何潜在的 { meta } 分开。我们 - // 可以将其分配给 `info` 对象并将其写入我们的格式流。 - // 如果额外的 metas 不是对象或缺少可枚举属性 - // 你将会遇到麻烦。 - const metalen = metas.length - if (metalen) { - for (let i = 0; i < metalen; i++) { - Object.assign(info, metas[i]) - } - } - - info.message = util.format(msg, ...splat) - return info - } - - /** - * 使用 `util.format` 完成 `info.message` 提供的 `info` 消息。 - * 如果没有标记,则 `info` 是不可变的。 - * - * @param info Logform 信息消息。 - * @returns 修改后的信息消息 - */ - transform: TransformFunction = (info) => { - const msg = info.message || '' - const splat = info[SPLAT] || info.splat - - // 如果 splat 未定义,则无需处理任何内容 - if (!splat || !splat.length) { - return info - } - - // 提取标记,如果没有可用的标记,则默认为空数组以 - // 确保预期结果的一致性 - const tokens = msg.match(formatRegExp) - - // 此条件将处理具有 info[SPLAT] - // 但没有标记存在的输入 - if (!tokens && (splat || splat.length)) { - const metas = splat.length > 1 ? splat.splice(0) : splat - - // 现在 { splat } 已经与任何潜在的 { meta } 分开。我们 - // 可以将其分配给 `info` 对象并将其写入我们的格式流。 - // 如果额外的 metas 不是对象或缺少可枚举属性 - // 你将会遇到麻烦。 - const metalen = metas.length - if (metalen) { - for (let i = 0; i < metalen; i++) { - Object.assign(info, metas[i]) - } - } - - return info - } - - if (tokens) { - return this._splat(info, tokens) - } - - return info - } -} - -/* - * function splat (info) - * 返回一个新的 splat 格式 TransformStream 实例 - * 它从 `info` 对象执行字符串插值。这之前 - * 在 `winston < 3.0.0` 中隐式暴露。 - */ -export default () => new Splatter() diff --git a/packages/logger/src/format/plugins/splat.ts.html b/packages/logger/src/format/plugins/splat.ts.html new file mode 100644 index 0000000..d1a30f8 --- /dev/null +++ b/packages/logger/src/format/plugins/splat.ts.html @@ -0,0 +1,442 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/splat.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins splat.ts

+
+ +
+ 0% + Statements + 0/47 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/47 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { TransformableInfo, TransformFunction } from '../type'
+import util from 'node:util'
+import { SPLAT } from '../../triple-beam'
+ 
+/**
+ * 捕获给定字符串中的格式(即 %s 字符串)的数量。
+ * 基于 `util.format`,参见 Node.js 源代码:
+ * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230
+ */
+const formatRegExp = /%[scdjifoO%]/g
+ 
+/**
+ * 捕获格式字符串中转义的 % 符号的数量(即 %s 字符串)。
+ */
+const escapedPercent = /%%/g
+ 
+class Splatter {
+  constructor() {}
+ 
+  /**
+   * 检查 tokens <= splat.length,将 { splat, meta } 分配到 `info` 中,并写入此实例。
+   *
+   * @param info Logform 信息消息。
+   * @param tokens 一组字符串插值标记。
+   * @returns 修改后的信息消息
+   * @private
+   */
+  private _splat(info: TransformableInfo, tokens: string[]) {
+    const msg = info.message || ''
+    const splat = info[SPLAT] || info.splat || []
+    const percents = msg.match(escapedPercent)
+    const escapes = percents ? percents.length : 0
+ 
+    // 预期的 splat 是标记的数量减去转义的数量
+    // 例如:
+    // - { expectedSplat: 3 } '%d %s %j'
+    // - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j'
+    //
+    // 任何 "meta" 都将是预期 splat 大小之外的参数,无论类型如何。例如:
+    //
+    // logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true });
+    // 将导致 splat 为四(4),但预期只有三(3)。因此:
+    //
+    // extraSplat = 3 - 4 = -1
+    // metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1);
+    // splat = [100, 'wow', { such: 'js' }]
+    const expectedSplat = tokens.length - escapes
+    const extraSplat = expectedSplat - splat.length
+    const metas = extraSplat < 0 ? splat.splice(extraSplat, -1 * extraSplat) : []
+ 
+    // 现在 { splat } 已经与任何潜在的 { meta } 分开。我们
+    // 可以将其分配给 `info` 对象并将其写入我们的格式流。
+    // 如果额外的 metas 不是对象或缺少可枚举属性
+    // 你将会遇到麻烦。
+    const metalen = metas.length
+    if (metalen) {
+      for (let i = 0; i < metalen; i++) {
+        Object.assign(info, metas[i])
+      }
+    }
+ 
+    info.message = util.format(msg, ...splat)
+    return info
+  }
+ 
+  /**
+   * 使用 `util.format` 完成 `info.message` 提供的 `info` 消息。
+   * 如果没有标记,则 `info` 是不可变的。
+   *
+   * @param info Logform 信息消息。
+   * @returns 修改后的信息消息
+   */
+  transform: TransformFunction = (info) => {
+    const msg = info.message || ''
+    const splat = info[SPLAT] || info.splat
+ 
+    // 如果 splat 未定义,则无需处理任何内容
+    if (!splat || !splat.length) {
+      return info
+    }
+ 
+    // 提取标记,如果没有可用的标记,则默认为空数组以
+    // 确保预期结果的一致性
+    const tokens = msg.match(formatRegExp)
+ 
+    // 此条件将处理具有 info[SPLAT]
+    // 但没有标记存在的输入
+    if (!tokens && (splat || splat.length)) {
+      const metas = splat.length > 1 ? splat.splice(0) : splat
+ 
+      // 现在 { splat } 已经与任何潜在的 { meta } 分开。我们
+      // 可以将其分配给 `info` 对象并将其写入我们的格式流。
+      // 如果额外的 metas 不是对象或缺少可枚举属性
+      // 你将会遇到麻烦。
+      const metalen = metas.length
+      if (metalen) {
+        for (let i = 0; i < metalen; i++) {
+          Object.assign(info, metas[i])
+        }
+      }
+ 
+      return info
+    }
+ 
+    if (tokens) {
+      return this._splat(info, tokens)
+    }
+ 
+    return info
+  }
+}
+ 
+/*
+ * function splat (info)
+ * 返回一个新的 splat 格式 TransformStream 实例
+ * 它从 `info` 对象执行字符串插值。这之前
+ * 在 `winston < 3.0.0` 中隐式暴露。
+ */
+export default () => new Splatter()
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/timestamp.ts b/packages/logger/src/format/plugins/timestamp.ts deleted file mode 100644 index 5f74d88..0000000 --- a/packages/logger/src/format/plugins/timestamp.ts +++ /dev/null @@ -1,41 +0,0 @@ -import fecha from 'fecha' -import format from '../format' - -export interface TimestampOptions { - /** - * Either the format as a string accepted by the [fecha](https://github.com/taylorhakes/fecha) - * module or a function that returns a formatted date. If no format is provided `new - * Date().toISOString()` will be used. - */ - format?: string | (() => string) - /** - * The name of an alias for the timestamp property, that will be added to the `info` object. - */ - alias?: string -} - -/* - * function timestamp (info) - * Returns a new instance of the timestamp Format which adds a timestamp - * to the info. It was previously available in winston < 3.0.0 as: - * - * - { timestamp: true } // `new Date.toISOString()` - * - { timestamp: function:String } // Value returned by `timestamp()` - */ -export default format((info, opts = {}) => { - if (opts.format) { - info.timestamp = typeof opts.format === 'function' - ? opts.format() - : fecha.format(new Date(), opts.format) - } - - if (!info.timestamp) { - info.timestamp = new Date().toISOString() - } - - if (opts.alias) { - info[opts.alias] = info.timestamp - } - - return info -}) diff --git a/packages/logger/src/format/plugins/timestamp.ts.html b/packages/logger/src/format/plugins/timestamp.ts.html new file mode 100644 index 0000000..1e3a07f --- /dev/null +++ b/packages/logger/src/format/plugins/timestamp.ts.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/timestamp.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins timestamp.ts

+
+ +
+ 0% + Statements + 0/16 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import fecha from 'fecha'
+import format from '../format'
+ 
+export interface TimestampOptions {
+  /**
+   * Either the format as a string accepted by the [fecha](https://github.com/taylorhakes/fecha)
+   * module or a function that returns a formatted date. If no format is provided `new
+   * Date().toISOString()` will be used.
+   */
+  format?: string | (() => string)
+  /**
+   * The name of an alias for the timestamp property, that will be added to the `info` object.
+   */
+  alias?: string
+}
+ 
+/*
+ * function timestamp (info)
+ * Returns a new instance of the timestamp Format which adds a timestamp
+ * to the info. It was previously available in winston < 3.0.0 as:
+ *
+ * - { timestamp: true }             // `new Date.toISOString()`
+ * - { timestamp: function:String }  // Value returned by `timestamp()`
+ */
+export default format<TimestampOptions>((info, opts = {}) => {
+  if (opts.format) {
+    info.timestamp = typeof opts.format === 'function'
+      ? opts.format()
+      : fecha.format(new Date(), opts.format)
+  }
+ 
+  if (!info.timestamp) {
+    info.timestamp = new Date().toISOString()
+  }
+ 
+  if (opts.alias) {
+    info[opts.alias] = info.timestamp
+  }
+ 
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/plugins/uncolorize.ts b/packages/logger/src/format/plugins/uncolorize.ts deleted file mode 100644 index 94def39..0000000 --- a/packages/logger/src/format/plugins/uncolorize.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { MESSAGE } from '../../triple-beam' -import format from '../format' - -export interface UncolorizeOptions { - /** - * Disables the uncolorize format for `info.level` if set to `false`. - */ - level?: boolean - /** - * Disables the uncolorize format for `info.message` if set to `false`. - */ - message?: boolean - /** - * Disables the uncolorize format for `info[MESSAGE]` if set to `false`. - */ - raw?: boolean -} - -function stripColors(str: string) { - // eslint-disable-next-line no-control-regex - return (`${str}`).replace(/\x1B\[\d+m/g, '') -} - -/* - * function uncolorize (info) - * Returns a new instance of the uncolorize Format that strips colors - * from `info` objects. This was previously exposed as { stripColors: true } - * to transports in `winston < 3.0.0`. - */ -export default format((info, opts = {}) => { - if (opts.level !== false) { - info.level = stripColors(info.level) - } - - if (opts.message !== false) { - info.message = stripColors(String(info.message)) - } - - if (opts.raw !== false && info[MESSAGE]) { - info[MESSAGE] = stripColors(String(info[MESSAGE])) - } - - return info -}) diff --git a/packages/logger/src/format/plugins/uncolorize.ts.html b/packages/logger/src/format/plugins/uncolorize.ts.html new file mode 100644 index 0000000..30a761c --- /dev/null +++ b/packages/logger/src/format/plugins/uncolorize.ts.html @@ -0,0 +1,217 @@ + + + + + + Code coverage report for packages/logger/src/format/plugins/uncolorize.ts + + + + + + + + + +
+
+

All files / packages/logger/src/format/plugins uncolorize.ts

+
+ +
+ 0% + Statements + 0/17 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { MESSAGE } from '../../triple-beam'
+import format from '../format'
+ 
+export interface UncolorizeOptions {
+  /**
+   * Disables the uncolorize format for `info.level` if set to `false`.
+   */
+  level?: boolean
+  /**
+   * Disables the uncolorize format for `info.message` if set to `false`.
+   */
+  message?: boolean
+  /**
+   * Disables the uncolorize format for `info[MESSAGE]` if set to `false`.
+   */
+  raw?: boolean
+}
+ 
+function stripColors(str: string) {
+  // eslint-disable-next-line no-control-regex
+  return (`${str}`).replace(/\x1B\[\d+m/g, '')
+}
+ 
+/*
+ * function uncolorize (info)
+ * Returns a new instance of the uncolorize Format that strips colors
+ * from `info` objects. This was previously exposed as { stripColors: true }
+ * to transports in `winston < 3.0.0`.
+ */
+export default format<UncolorizeOptions>((info, opts = {}) => {
+  if (opts.level !== false) {
+    info.level = stripColors(info.level)
+  }
+ 
+  if (opts.message !== false) {
+    info.message = stripColors(String(info.message))
+  }
+ 
+  if (opts.raw !== false && info[MESSAGE]) {
+    info[MESSAGE] = stripColors(String(info[MESSAGE]))
+  }
+ 
+  return info
+})
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/format/readme b/packages/logger/src/format/readme deleted file mode 100644 index 0bd4e76..0000000 --- a/packages/logger/src/format/readme +++ /dev/null @@ -1 +0,0 @@ -Converted from \ No newline at end of file diff --git a/packages/logger/src/format/type.d.ts b/packages/logger/src/format/type.d.ts deleted file mode 100644 index 0874aa8..0000000 --- a/packages/logger/src/format/type.d.ts +++ /dev/null @@ -1,47 +0,0 @@ -import type { LEVEL, MESSAGE, SPLAT } from '../triple-beam' - -export interface TransformableInfo { - level: string - message?: string - [LEVEL]?: string - [MESSAGE]?: any - [SPLAT]?: any - [key: string | symbol]: any -} - -export type TransformFunction = Record> = (info: TransformableInfo, opts?: T) => TransformableInfo - -export class FormatClass = Record> { - constructor(options: T = {} as T) - options?: T - transform: TransformFunction -} - -export interface FormatWrap> { - (opts?: T): FormatClass - Format: typeof FormatClass -}; - -export interface format = Record> { -

(transform: TransformFunction

): FormatWrap

- Format: typeof FormatClass - align: typeof import('./plugins/align').default - cli: typeof import('./plugins/cli').default - combine: typeof import('./plugins/combine').default - colorize: typeof import('./plugins/colorize').default - errors: typeof import('./plugins/errors').default - json: typeof import('./plugins/json').default - label: typeof import('./plugins/label').default - logstash: typeof import('./plugins/logstash').default - metadata: typeof import('./plugins/metadata').default - ms: typeof import('./plugins/ms').default - padLevels: typeof import('./plugins/pad-levels').default - prettyPrint: typeof import('./plugins/pretty-print').default - printf: typeof import('./plugins/printf').default - simple: typeof import('./plugins/simple').default - splat: typeof import('./plugins/splat').default - timestamp: typeof import('./plugins/timestamp').default - uncolorize: typeof import('./plugins/uncolorize').default -}; - -export type { ColorizeOptions, ColorMap } from './plugins/colorize' diff --git a/packages/logger/src/index.html b/packages/logger/src/index.html new file mode 100644 index 0000000..c2bbf6c --- /dev/null +++ b/packages/logger/src/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for packages/logger/src + + + + + + + + + +

+
+

All files packages/logger/src

+
+ +
+ 0% + Statements + 0/90 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/90 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/90100%1/1100%1/10%0/90
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts deleted file mode 100644 index 572d849..0000000 --- a/packages/logger/src/index.ts +++ /dev/null @@ -1,139 +0,0 @@ -import type { Prettify } from '@https-enable/types' -import type { TransportInstance } from './transports/type' -import type { LoggerOptions, LogLevel, LogLevelKey, LogOptions } from './type' -import { ColorStringRE } from '@https-enable/utils' -import format, { levels } from './format' -import { transports as Transports } from './transports' -import { configs, LEVEL } from './triple-beam' - -export default class Logger { - private level: LogLevelKey - private levels: LogLevel | Record - private silent: boolean - private transports: TransportInstance[] = [] - /** - * 是否是隐式log - * @description 隐式 log 全局兜底 - * @default false - */ - private isImplicit: boolean - format: ReturnType - - constructor(options: Prettify = {}) { - this.level = options.level || 'INFO' - this.levels = options.levels || levels(configs.npm).levels - - this.silent = options.silent || false - this.isImplicit = options.isImplicit || false - - this.format = options.format || Logger.createLogFormat(false) - - // Add all transports we have been provided. - if (options.transports) { - this.transports = Array.isArray(options.transports) ? options.transports : [options.transports] - } - } - - static createLogFormat(colorize = false, label?: string) { - const colorizer = format.colorize() - const appLabel = !!label && format.label({ label, message: true }) - const timestamp = format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }) - const logFormat = format.printf((info) => { - const levelWithoutColor = info.level.replace(ColorStringRE, '') - - const space = ' '.repeat(6 - levelWithoutColor.length) - - return `${info.timestamp ? info.timestamp.padEnd(info.timestamp.length + 1) : ''}${info.level}${space} ${info.message || ''}` - }) - - return colorize - ? appLabel ? format.combine(colorizer, appLabel, timestamp, logFormat) : format.combine(colorizer, timestamp, logFormat) - : appLabel ? format.combine(appLabel, timestamp, logFormat) : format.combine(timestamp, logFormat) - } - - updateLogFormat = (colorize = false) => { - this.format = Logger.createLogFormat(colorize) - } - - private log(level: LogLevelKey, message: string, options: Prettify = {}, callback?: (error?: Error) => void) { - if (options.force || this.shouldLog(level)) { - const isImplicit = options.isImplicit ?? this.isImplicit - const isSilent = options.silent ?? this.silent - - if (!options.force && isImplicit && !isSilent) { - // TODO: 相关的隐式log,需要通过外部环境变量启用 - // 此处暂时不显示 - return callback?.() - } - else if (options.force || !isSilent) { - const transformInfo = this.format.transform({ level, message }) - - // [LEVEL] is only soft guaranteed to be set here since we are a proper - // stream. It is likely that `info` came in through `.log(info)` or - // `.info(info)`. If it is not defined, however, define it. - // This LEVEL symbol is provided by `triple-beam` and also used in: - // - logform - // - winston-transport - // - abstract-winston-transport - if (!transformInfo[LEVEL]) { - transformInfo[LEVEL] = transformInfo.level - } - - // Remark: really not sure what to do here, but this has been reported as - // very confusing by pre winston@2.0.0 users as quite confusing when using - // custom levels. - if (!Object.keys(this.levels).includes(level)) { - console.error('[winston] Unknown logger level: %s', level) - console.error('[winston] levels: %j', this.levels) - } - - // Remark: not sure if we should simply error here. - if (!this.transports || (Array.isArray(this.transports) ? !this.transports.length : !this.transports)) { - console.error( - '[winston] Attempt to write logs with no transports, which can increase memory usage: %j', - transformInfo, - ) - } - - // Here we write to the `format` pipe-chain, which on `readable` above will - // push the formatted `info` Object onto the buffer for this instance. We trap - // (and re-throw) any errors generated by the user-provided format, but also - // guarantee that the streams callback is invoked so that we can continue flowing. - try { - this.transports.forEach((transport) => { - !transport.level && (transport.level = this.level) - transport.log(transformInfo, callback, { level, message }, options.force) - }) - } - finally { - callback?.() - } - return - } - return callback?.() - } - } - - private shouldLog(level: string) { - const levels = Object.keys(this.levels).reverse() - return levels.indexOf(level) >= levels.indexOf(this.level) - } - - debug(message: string = '', options: Prettify = {}) { - this.log('DEBUG', message, options) - } - - info(message: string = '', options: Prettify = {}) { - this.log('INFO', message, options) - } - - warn(message: string = '', options: Prettify = {}) { - this.log('WARN', message, options) - } - - error(message: string = '', options: Prettify = {}) { - this.log('ERROR', message, options) - } -} - -export { format, Logger, Transports } diff --git a/packages/logger/src/index.ts.html b/packages/logger/src/index.ts.html new file mode 100644 index 0000000..e45ed16 --- /dev/null +++ b/packages/logger/src/index.ts.html @@ -0,0 +1,502 @@ + + + + + + Code coverage report for packages/logger/src/index.ts + + + + + + + + + +
+
+

All files / packages/logger/src index.ts

+
+ +
+ 0% + Statements + 0/90 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/90 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Prettify } from '@https-enable/types'
+import type { TransportInstance } from './transports/type'
+import type { LoggerOptions, LogLevel, LogLevelKey, LogOptions } from './type'
+import { ColorStringRE } from '@https-enable/utils'
+import format, { levels } from './format'
+import { transports as Transports } from './transports'
+import { configs, LEVEL } from './triple-beam'
+ 
+export default class Logger {
+  private level: LogLevelKey
+  private levels: LogLevel | Record<string, number>
+  private silent: boolean
+  private transports: TransportInstance[] = []
+  /**
+   * 是否是隐式log
+   * @description 隐式 log 全局兜底
+   * @default false
+   */
+  private isImplicit: boolean
+  format: ReturnType<typeof Logger.createLogFormat>
+ 
+  constructor(options: Prettify<LoggerOptions> = {}) {
+    this.level = options.level || 'INFO'
+    this.levels = options.levels || levels(configs.npm).levels
+ 
+    this.silent = options.silent || false
+    this.isImplicit = options.isImplicit || false
+ 
+    this.format = options.format || Logger.createLogFormat(false)
+ 
+    // Add all transports we have been provided.
+    if (options.transports) {
+      this.transports = Array.isArray(options.transports) ? options.transports : [options.transports]
+    }
+  }
+ 
+  static createLogFormat(colorize = false, label?: string) {
+    const colorizer = format.colorize()
+    const appLabel = !!label && format.label({ label, message: true })
+    const timestamp = format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' })
+    const logFormat = format.printf((info) => {
+      const levelWithoutColor = info.level.replace(ColorStringRE, '')
+ 
+      const space = ' '.repeat(6 - levelWithoutColor.length)
+ 
+      return `${info.timestamp ? info.timestamp.padEnd(info.timestamp.length + 1) : ''}${info.level}${space} ${info.message || ''}`
+    })
+ 
+    return colorize
+      ? appLabel ? format.combine(colorizer, appLabel, timestamp, logFormat) : format.combine(colorizer, timestamp, logFormat)
+      : appLabel ? format.combine(appLabel, timestamp, logFormat) : format.combine(timestamp, logFormat)
+  }
+ 
+  updateLogFormat = (colorize = false) => {
+    this.format = Logger.createLogFormat(colorize)
+  }
+ 
+  private log(level: LogLevelKey, message: string, options: Prettify<LogOptions> = {}, callback?: (error?: Error) => void) {
+    if (options.force || this.shouldLog(level)) {
+      const isImplicit = options.isImplicit ?? this.isImplicit
+      const isSilent = options.silent ?? this.silent
+ 
+      if (!options.force && isImplicit && !isSilent) {
+        // TODO: 相关的隐式log,需要通过外部环境变量启用
+        // 此处暂时不显示
+        return callback?.()
+      }
+      else if (options.force || !isSilent) {
+        const transformInfo = this.format.transform({ level, message })
+ 
+        // [LEVEL] is only soft guaranteed to be set here since we are a proper
+        // stream. It is likely that `info` came in through `.log(info)` or
+        // `.info(info)`. If it is not defined, however, define it.
+        // This LEVEL symbol is provided by `triple-beam` and also used in:
+        // - logform
+        // - winston-transport
+        // - abstract-winston-transport
+        if (!transformInfo[LEVEL]) {
+          transformInfo[LEVEL] = transformInfo.level
+        }
+ 
+        // Remark: really not sure what to do here, but this has been reported as
+        // very confusing by pre winston@2.0.0 users as quite confusing when using
+        // custom levels.
+        if (!Object.keys(this.levels).includes(level)) {
+          console.error('[winston] Unknown logger level: %s', level)
+          console.error('[winston] levels: %j', this.levels)
+        }
+ 
+        // Remark: not sure if we should simply error here.
+        if (!this.transports || (Array.isArray(this.transports) ? !this.transports.length : !this.transports)) {
+          console.error(
+            '[winston] Attempt to write logs with no transports, which can increase memory usage: %j',
+            transformInfo,
+          )
+        }
+ 
+        // Here we write to the `format` pipe-chain, which on `readable` above will
+        // push the formatted `info` Object onto the buffer for this instance. We trap
+        // (and re-throw) any errors generated by the user-provided format, but also
+        // guarantee that the streams callback is invoked so that we can continue flowing.
+        try {
+          this.transports.forEach((transport) => {
+            !transport.level && (transport.level = this.level)
+            transport.log(transformInfo, callback, { level, message }, options.force)
+          })
+        }
+        finally {
+          callback?.()
+        }
+        return
+      }
+      return callback?.()
+    }
+  }
+ 
+  private shouldLog(level: string) {
+    const levels = Object.keys(this.levels).reverse()
+    return levels.indexOf(level) >= levels.indexOf(this.level)
+  }
+ 
+  debug(message: string = '', options: Prettify<LogOptions> = {}) {
+    this.log('DEBUG', message, options)
+  }
+ 
+  info(message: string = '', options: Prettify<LogOptions> = {}) {
+    this.log('INFO', message, options)
+  }
+ 
+  warn(message: string = '', options: Prettify<LogOptions> = {}) {
+    this.log('WARN', message, options)
+  }
+ 
+  error(message: string = '', options: Prettify<LogOptions> = {}) {
+    this.log('ERROR', message, options)
+  }
+}
+ 
+export { format, Logger, Transports }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/transports/base.ts b/packages/logger/src/transports/base.ts deleted file mode 100644 index 3698d49..0000000 --- a/packages/logger/src/transports/base.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { TransformableInfo } from '../format' -import type { LogEntry } from '../type' -import type { TransportBaseOptions, TransportErrorCallback } from './type' -import os from 'node:os' -import { ColorStringRE } from '@https-enable/utils' -import { levels } from '../format' -import { configs } from '../triple-beam' - -export abstract class Transport { - public level?: LogEntry['level'] - protected eol?: string - protected name?: string - protected levels: Record - - protected options: T - - constructor(options: T) { - this.options = options - - this.name = options.name - this.level = options.level - this.levels = options.levels || levels(configs.npm).levels - this.eol = typeof options.eol === 'string' ? options.eol : os.EOL - } - - // 判断是否满足日志级别要求 - protected shouldLog(level: string, force = false) { - level = level.replace(ColorStringRE, '') - - const levels = Object.keys(this.levels).reverse() - return force || levels.indexOf(level) >= levels.indexOf(this.level || 'INFO') - } - - // 使用局部format - protected selfFormat(options?: { level: LogEntry['level'], message: string }) { - if (this.options.format && options) { - return this.options.format.transform(options) - } - } - - // 日志输出抽象定义 - public abstract log(info: TransformableInfo, callback?: TransportErrorCallback, options?: { level: LogEntry['level'], message: string }, force?: boolean): void -} diff --git a/packages/logger/src/transports/base.ts.html b/packages/logger/src/transports/base.ts.html new file mode 100644 index 0000000..ed20e04 --- /dev/null +++ b/packages/logger/src/transports/base.ts.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for packages/logger/src/transports/base.ts + + + + + + + + + +
+
+

All files / packages/logger/src/transports base.ts

+
+ +
+ 0% + Statements + 0/28 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { TransformableInfo } from '../format'
+import type { LogEntry } from '../type'
+import type { TransportBaseOptions, TransportErrorCallback } from './type'
+import os from 'node:os'
+import { ColorStringRE } from '@https-enable/utils'
+import { levels } from '../format'
+import { configs } from '../triple-beam'
+ 
+export abstract class Transport<T extends TransportBaseOptions> {
+  public level?: LogEntry['level']
+  protected eol?: string
+  protected name?: string
+  protected levels: Record<string, number>
+ 
+  protected options: T
+ 
+  constructor(options: T) {
+    this.options = options
+ 
+    this.name = options.name
+    this.level = options.level
+    this.levels = options.levels || levels(configs.npm).levels
+    this.eol = typeof options.eol === 'string' ? options.eol : os.EOL
+  }
+ 
+  // 判断是否满足日志级别要求
+  protected shouldLog(level: string, force = false) {
+    level = level.replace(ColorStringRE, '')
+ 
+    const levels = Object.keys(this.levels).reverse()
+    return force || levels.indexOf(level) >= levels.indexOf(this.level || 'INFO')
+  }
+ 
+  // 使用局部format
+  protected selfFormat(options?: { level: LogEntry['level'], message: string }) {
+    if (this.options.format && options) {
+      return this.options.format.transform(options)
+    }
+  }
+ 
+  // 日志输出抽象定义
+  public abstract log(info: TransformableInfo, callback?: TransportErrorCallback, options?: { level: LogEntry['level'], message: string }, force?: boolean): void
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/transports/console.ts b/packages/logger/src/transports/console.ts deleted file mode 100644 index e4fea11..0000000 --- a/packages/logger/src/transports/console.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { ConsoleTransportOptions, TransportInstanceLog } from './type' -import { MESSAGE } from '../triple-beam' -import { Transport } from './base' - -export class ConsoleTransport extends Transport { - constructor(options: ConsoleTransportOptions = {}) { - super(options) - - this.name = options.name || 'console' - } - - log: TransportInstanceLog = (info, callback, options, force) => { - info = this.selfFormat(options) || info - - const data = { ...info } - if (!force && !this.shouldLog(data.level)) - return callback?.() - - // eslint-disable-next-line no-console - console.log(`${data[MESSAGE]}`) - callback?.() - } -} diff --git a/packages/logger/src/transports/console.ts.html b/packages/logger/src/transports/console.ts.html new file mode 100644 index 0000000..11a39a4 --- /dev/null +++ b/packages/logger/src/transports/console.ts.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for packages/logger/src/transports/console.ts + + + + + + + + + +
+
+

All files / packages/logger/src/transports console.ts

+
+ +
+ 0% + Statements + 0/16 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ConsoleTransportOptions, TransportInstanceLog } from './type'
+import { MESSAGE } from '../triple-beam'
+import { Transport } from './base'
+ 
+export class ConsoleTransport extends Transport<ConsoleTransportOptions> {
+  constructor(options: ConsoleTransportOptions = {}) {
+    super(options)
+ 
+    this.name = options.name || 'console'
+  }
+ 
+  log: TransportInstanceLog = (info, callback, options, force) => {
+    info = this.selfFormat(options) || info
+ 
+    const data = { ...info }
+    if (!force && !this.shouldLog(data.level))
+      return callback?.()
+ 
+    // eslint-disable-next-line no-console
+    console.log(`${data[MESSAGE]}`)
+    callback?.()
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/transports/index.html b/packages/logger/src/transports/index.html new file mode 100644 index 0000000..a606550 --- /dev/null +++ b/packages/logger/src/transports/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for packages/logger/src/transports + + + + + + + + + +
+
+

All files packages/logger/src/transports

+
+ +
+ 0% + Statements + 0/93 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 0% + Lines + 0/93 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
base.ts +
+
0%0/28100%1/1100%1/10%0/28
console.ts +
+
0%0/16100%1/1100%1/10%0/16
index.ts +
+
0%0/70%0/10%0/10%0/7
stream.ts +
+
0%0/42100%1/1100%1/10%0/42
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/transports/index.ts b/packages/logger/src/transports/index.ts deleted file mode 100644 index e4a0c4a..0000000 --- a/packages/logger/src/transports/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ConsoleTransport } from './console' -import { StreamTransport } from './stream' - -const transports = { - Console: ConsoleTransport, - Stream: StreamTransport, -} - -export default transports - -export { transports } diff --git a/packages/logger/src/transports/index.ts.html b/packages/logger/src/transports/index.ts.html new file mode 100644 index 0000000..05ac385 --- /dev/null +++ b/packages/logger/src/transports/index.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for packages/logger/src/transports/index.ts + + + + + + + + + +
+
+

All files / packages/logger/src/transports index.ts

+
+ +
+ 0% + Statements + 0/7 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12  +  +  +  +  +  +  +  +  +  +  + 
import { ConsoleTransport } from './console'
+import { StreamTransport } from './stream'
+ 
+const transports = {
+  Console: ConsoleTransport,
+  Stream: StreamTransport,
+}
+ 
+export default transports
+ 
+export { transports }
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/transports/stream.ts b/packages/logger/src/transports/stream.ts deleted file mode 100644 index 359cb56..0000000 --- a/packages/logger/src/transports/stream.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { StreamTransportOptions, TransportInstanceLog } from './type' -import { isStream } from '@https-enable/utils' -import { MESSAGE } from '../triple-beam' -import { Transport } from './base' - -export class StreamTransport extends Transport { - stream: NodeJS.WritableStream - isObjectMode: boolean - - constructor(options: StreamTransportOptions = {}) { - super(options) - - if (!options.stream || !isStream(options.stream)) { - throw new Error('options.stream is required.') - } - - this.name = options.name || 'console' - - // We need to listen for drain events when write() returns false. This can - // make node mad at times. - this.stream = options.stream - this.isObjectMode = options.stream._writableState?.objectMode || false - - // 确保不会触发 EventEmitter 内存泄漏警告 - this.stream.setMaxListeners(Infinity) - } - - log: TransportInstanceLog = (info, callback, options, force) => { - if (!force && !this.shouldLog(info.level)) - return callback?.() - - const handleComplete = (error?: Error | null) => { - if (error) - return callback?.(error) - - callback?.() - } - - try { - info = this.selfFormat(options) || info - - let payload: any - if (this.isObjectMode) - payload = { ...info } - else - payload = `${info[MESSAGE]}${this.eol}` - - // 处理背压和异步写入 - const canWrite = this.stream.write(payload, (error) => { - handleComplete(error || undefined) - }) - - if (!canWrite) { - this.stream.once('drain', () => handleComplete()) - } - } - catch (error) { - handleComplete(error instanceof Error ? error : new Error(String(error))) - } - } -} diff --git a/packages/logger/src/transports/stream.ts.html b/packages/logger/src/transports/stream.ts.html new file mode 100644 index 0000000..1e8cb5b --- /dev/null +++ b/packages/logger/src/transports/stream.ts.html @@ -0,0 +1,268 @@ + + + + + + Code coverage report for packages/logger/src/transports/stream.ts + + + + + + + + + +
+
+

All files / packages/logger/src/transports stream.ts

+
+ +
+ 0% + Statements + 0/42 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/42 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { StreamTransportOptions, TransportInstanceLog } from './type'
+import { isStream } from '@https-enable/utils'
+import { MESSAGE } from '../triple-beam'
+import { Transport } from './base'
+ 
+export class StreamTransport extends Transport<StreamTransportOptions> {
+  stream: NodeJS.WritableStream
+  isObjectMode: boolean
+ 
+  constructor(options: StreamTransportOptions = {}) {
+    super(options)
+ 
+    if (!options.stream || !isStream(options.stream)) {
+      throw new Error('options.stream is required.')
+    }
+ 
+    this.name = options.name || 'console'
+ 
+    // We need to listen for drain events when write() returns false. This can
+    // make node mad at times.
+    this.stream = options.stream
+    this.isObjectMode = options.stream._writableState?.objectMode || false
+ 
+    // 确保不会触发 EventEmitter 内存泄漏警告
+    this.stream.setMaxListeners(Infinity)
+  }
+ 
+  log: TransportInstanceLog = (info, callback, options, force) => {
+    if (!force && !this.shouldLog(info.level))
+      return callback?.()
+ 
+    const handleComplete = (error?: Error | null) => {
+      if (error)
+        return callback?.(error)
+ 
+      callback?.()
+    }
+ 
+    try {
+      info = this.selfFormat(options) || info
+ 
+      let payload: any
+      if (this.isObjectMode)
+        payload = { ...info }
+      else
+        payload = `${info[MESSAGE]}${this.eol}`
+ 
+      // 处理背压和异步写入
+      const canWrite = this.stream.write(payload, (error) => {
+        handleComplete(error || undefined)
+      })
+ 
+      if (!canWrite) {
+        this.stream.once('drain', () => handleComplete())
+      }
+    }
+    catch (error) {
+      handleComplete(error instanceof Error ? error : new Error(String(error)))
+    }
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/transports/type.d.ts b/packages/logger/src/transports/type.d.ts deleted file mode 100644 index d7836dd..0000000 --- a/packages/logger/src/transports/type.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type stream from 'node:stream' -import type { FormatClass } from '../format' -import type { LogEntry, LogLevel } from '../type' -import type { Transport } from './base' - -export interface TransportErrorCallback { - (error?: Error): void -} - -export type TransportInstance = InstanceType> - -export type TransportInstanceLog = TransportInstance['log'] - -export interface TransportBaseOptions { - name?: string - level?: LogEntry['level'] - levels?: Record - format?: FormatClass - eol?: string -} - -export interface ConsoleTransportOptions extends TransportBaseOptions { -} - -export interface WritableStream extends stream.Writable { - _writableState?: stream.StreamOptions -} - -export interface StreamTransportOptions extends TransportBaseOptions { - stream?: WritableStream -} diff --git a/packages/logger/src/triple-beam/config/cli.ts b/packages/logger/src/triple-beam/config/cli.ts deleted file mode 100644 index 84f2602..0000000 --- a/packages/logger/src/triple-beam/config/cli.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type { Configs } from '../type' - -export const cli: typeof Configs.cli = { - levels: { - ERROR: 0, - WARN: 1, - HELP: 2, - DATA: 3, - INFO: 4, - DEBUG: 5, - PROMPT: 6, - VERBOSE: 7, - INPUT: 8, - SILLY: 9, - }, - colors: { - ERROR: 'red', - WARN: 'yellow', - HELP: 'cyan', - DATA: 'grey', - INFO: 'green', - DEBUG: 'blue', - PROMPT: 'grey', - VERBOSE: 'cyan', - INPUT: 'grey', - SILLY: 'magenta', - }, -} - -export default cli diff --git a/packages/logger/src/triple-beam/config/cli.ts.html b/packages/logger/src/triple-beam/config/cli.ts.html new file mode 100644 index 0000000..a42fbee --- /dev/null +++ b/packages/logger/src/triple-beam/config/cli.ts.html @@ -0,0 +1,175 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam/config/cli.ts + + + + + + + + + +
+
+

All files / packages/logger/src/triple-beam/config cli.ts

+
+ +
+ 0% + Statements + 0/27 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Configs } from '../type'
+ 
+export const cli: typeof Configs.cli = {
+  levels: {
+    ERROR: 0,
+    WARN: 1,
+    HELP: 2,
+    DATA: 3,
+    INFO: 4,
+    DEBUG: 5,
+    PROMPT: 6,
+    VERBOSE: 7,
+    INPUT: 8,
+    SILLY: 9,
+  },
+  colors: {
+    ERROR: 'red',
+    WARN: 'yellow',
+    HELP: 'cyan',
+    DATA: 'grey',
+    INFO: 'green',
+    DEBUG: 'blue',
+    PROMPT: 'grey',
+    VERBOSE: 'cyan',
+    INPUT: 'grey',
+    SILLY: 'magenta',
+  },
+}
+ 
+export default cli
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/config/index.html b/packages/logger/src/triple-beam/config/index.html new file mode 100644 index 0000000..bd5979b --- /dev/null +++ b/packages/logger/src/triple-beam/config/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam/config + + + + + + + + + +
+
+

All files packages/logger/src/triple-beam/config

+
+ +
+ 0% + Statements + 0/74 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 0% + Lines + 0/74 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
cli.ts +
+
0%0/27100%1/1100%1/10%0/27
index.ts +
+
0%0/30%0/10%0/10%0/3
npm.ts +
+
0%0/21100%1/1100%1/10%0/21
syslog.ts +
+
0%0/23100%1/1100%1/10%0/23
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/config/index.ts b/packages/logger/src/triple-beam/config/index.ts deleted file mode 100644 index de96eb7..0000000 --- a/packages/logger/src/triple-beam/config/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './cli' -export * from './npm' -export * from './syslog' diff --git a/packages/logger/src/triple-beam/config/index.ts.html b/packages/logger/src/triple-beam/config/index.ts.html new file mode 100644 index 0000000..bd5cde4 --- /dev/null +++ b/packages/logger/src/triple-beam/config/index.ts.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam/config/index.ts + + + + + + + + + +
+
+

All files / packages/logger/src/triple-beam/config index.ts

+
+ +
+ 0% + Statements + 0/3 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4  +  +  + 
export * from './cli'
+export * from './npm'
+export * from './syslog'
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/config/npm.ts b/packages/logger/src/triple-beam/config/npm.ts deleted file mode 100644 index 15fd372..0000000 --- a/packages/logger/src/triple-beam/config/npm.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { Configs } from '../type' - -export const npm: typeof Configs.npm = { - levels: { - ERROR: 0, - WARN: 1, - INFO: 2, - HTTP: 3, - VERBOSE: 4, - DEBUG: 5, - SILLY: 6, - }, - colors: { - ERROR: 'red', - WARN: 'yellow', - INFO: 'green', - HTTP: 'green', - VERBOSE: 'cyan', - DEBUG: 'blue', - SILLY: 'magenta', - }, -} - -export default npm diff --git a/packages/logger/src/triple-beam/config/npm.ts.html b/packages/logger/src/triple-beam/config/npm.ts.html new file mode 100644 index 0000000..a8d5e6e --- /dev/null +++ b/packages/logger/src/triple-beam/config/npm.ts.html @@ -0,0 +1,157 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam/config/npm.ts + + + + + + + + + +
+
+

All files / packages/logger/src/triple-beam/config npm.ts

+
+ +
+ 0% + Statements + 0/21 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Configs } from '../type'
+ 
+export const npm: typeof Configs.npm = {
+  levels: {
+    ERROR: 0,
+    WARN: 1,
+    INFO: 2,
+    HTTP: 3,
+    VERBOSE: 4,
+    DEBUG: 5,
+    SILLY: 6,
+  },
+  colors: {
+    ERROR: 'red',
+    WARN: 'yellow',
+    INFO: 'green',
+    HTTP: 'green',
+    VERBOSE: 'cyan',
+    DEBUG: 'blue',
+    SILLY: 'magenta',
+  },
+}
+ 
+export default npm
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/config/syslog.ts b/packages/logger/src/triple-beam/config/syslog.ts deleted file mode 100644 index 944b57c..0000000 --- a/packages/logger/src/triple-beam/config/syslog.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { Configs } from '../type' - -export const syslog: typeof Configs.syslog = { - levels: { - EMERG: 0, - ALERT: 1, - CRIT: 2, - ERROR: 3, - WARNING: 4, - NOTICE: 5, - INFO: 6, - DEBUG: 7, - }, - colors: { - EMERG: 'red', - ALERT: 'yellow', - CRIT: 'red', - ERROR: 'red', - WARNING: 'red', - NOTICE: 'yellow', - INFO: 'green', - DEBUG: 'blue', - }, -} - -export default syslog diff --git a/packages/logger/src/triple-beam/config/syslog.ts.html b/packages/logger/src/triple-beam/config/syslog.ts.html new file mode 100644 index 0000000..fb834b6 --- /dev/null +++ b/packages/logger/src/triple-beam/config/syslog.ts.html @@ -0,0 +1,163 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam/config/syslog.ts + + + + + + + + + +
+
+

All files / packages/logger/src/triple-beam/config syslog.ts

+
+ +
+ 0% + Statements + 0/23 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { Configs } from '../type'
+ 
+export const syslog: typeof Configs.syslog = {
+  levels: {
+    EMERG: 0,
+    ALERT: 1,
+    CRIT: 2,
+    ERROR: 3,
+    WARNING: 4,
+    NOTICE: 5,
+    INFO: 6,
+    DEBUG: 7,
+  },
+  colors: {
+    EMERG: 'red',
+    ALERT: 'yellow',
+    CRIT: 'red',
+    ERROR: 'red',
+    WARNING: 'red',
+    NOTICE: 'yellow',
+    INFO: 'green',
+    DEBUG: 'blue',
+  },
+}
+ 
+export default syslog
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/index.html b/packages/logger/src/triple-beam/index.html new file mode 100644 index 0000000..c256158 --- /dev/null +++ b/packages/logger/src/triple-beam/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam + + + + + + + + + +
+
+

All files packages/logger/src/triple-beam

+
+ +
+ 0% + Statements + 0/9 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.ts +
+
0%0/90%0/10%0/10%0/9
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/index.ts b/packages/logger/src/triple-beam/index.ts deleted file mode 100644 index b32fb60..0000000 --- a/packages/logger/src/triple-beam/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { cli, npm, syslog } from './config' - -export const configs = { cli, npm, syslog } - -export const LEVEL = Symbol.for('level') -export const MESSAGE = Symbol.for('message') -export const SPLAT = Symbol.for('splat') - -/** - * 简易日志级别 - * @description 供外部使用 - */ -export const SimpleLevelTuple = ['ERROR', 'WARN', 'INFO', 'DEBUG'] as const -export const CliLevelTuple = ['ERROR', 'WARN', 'HELP', 'DATA', 'INFO', 'DEBUG', 'PROMPT', 'VERBOSE', 'INPUT', 'SILLY'] as const -export const NpmLevelTuple = ['ERROR', 'WARN', 'INFO', 'HTTP', 'VERBOSE', 'DEBUG', 'SILLY'] as const -export const SyslogLevelTuple = ['EMERG', 'ALERT', 'CRIT', 'ERROR', 'WARNING', 'NOTICE', 'INFO', 'DEBUG'] as const diff --git a/packages/logger/src/triple-beam/index.ts.html b/packages/logger/src/triple-beam/index.ts.html new file mode 100644 index 0000000..e197100 --- /dev/null +++ b/packages/logger/src/triple-beam/index.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for packages/logger/src/triple-beam/index.ts + + + + + + + + + +
+
+

All files / packages/logger/src/triple-beam index.ts

+
+ +
+ 0% + Statements + 0/9 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { cli, npm, syslog } from './config'
+ 
+export const configs = { cli, npm, syslog }
+ 
+export const LEVEL = Symbol.for('level')
+export const MESSAGE = Symbol.for('message')
+export const SPLAT = Symbol.for('splat')
+ 
+/**
+ * 简易日志级别
+ * @description 供外部使用
+ */
+export const SimpleLevelTuple = ['ERROR', 'WARN', 'INFO', 'DEBUG'] as const
+export const CliLevelTuple = ['ERROR', 'WARN', 'HELP', 'DATA', 'INFO', 'DEBUG', 'PROMPT', 'VERBOSE', 'INPUT', 'SILLY'] as const
+export const NpmLevelTuple = ['ERROR', 'WARN', 'INFO', 'HTTP', 'VERBOSE', 'DEBUG', 'SILLY'] as const
+export const SyslogLevelTuple = ['EMERG', 'ALERT', 'CRIT', 'ERROR', 'WARNING', 'NOTICE', 'INFO', 'DEBUG'] as const
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/logger/src/triple-beam/type.d.ts b/packages/logger/src/triple-beam/type.d.ts deleted file mode 100644 index 23cc15a..0000000 --- a/packages/logger/src/triple-beam/type.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { FormatKeys as ColorKeys } from '@https-enable/colors' -import type { MapTuple, Prettify, Zip } from '@https-enable/types' -import type { CliLevelTuple, NpmLevelTuple, SyslogLevelTuple } from '.' - -export type SimpleLevelColor = Zip - -export type LevelKeys> = T[number] -export type LevelKeysa = LevelKeys - -export type { ColorKeys } - -interface BaseConfig> { - levels: Prettify> - colors: Prettify> -} - -export declare namespace Configs { - const cli: Prettify> - const npm: Prettify> - const syslog: Prettify> -} diff --git a/packages/logger/src/type.d.ts b/packages/logger/src/type.d.ts deleted file mode 100644 index 293e998..0000000 --- a/packages/logger/src/type.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { MapTuple } from '@https-enable/types' -import type { FormatClass } from './format' -import type { TransportInstance } from './transports/type' -import type { SimpleLevelTuple } from './triple-beam' -import type { SimpleLevelColor } from './triple-beam/type' - -export type LogLevel = MapTuple - -export type LogLevelColor = SimpleLevelColor - -export type LogLevelKey = keyof LogLevel - -export interface LoggerOptions { - level?: LogLevelKey - levels?: Record - /** 静音 */ - silent?: boolean - /** 是否是隐式log */ - isImplicit?: boolean - format?: FormatClass - transports?: TransportInstance[] | TransportInstance -} - -export interface LogEntry { - level: LogLevelKey - message: string - [optionName: string]: any -} - -export interface LogOptions { - /** 是否强制输出 | 无视 level 和 isImplicit 和 silent */ - force?: boolean - /** - * 是否是隐式log - * @description 优先级最高,只有为undefined时才会遵从父级配置 - */ - isImplicit?: boolean - /** 静音 */ - silent?: boolean -} diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json deleted file mode 100644 index 7b46f8c..0000000 --- a/packages/logger/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "src/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/mkcert/build.config.ts b/packages/mkcert/build.config.ts deleted file mode 100644 index afaba4f..0000000 --- a/packages/mkcert/build.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: false, - }, - failOnWarn: false, - externals: [ - '@https-enable/types', - ], -}) diff --git a/packages/mkcert/changelog.md b/packages/mkcert/changelog.md deleted file mode 100644 index 48b7254..0000000 --- a/packages/mkcert/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/mkcert@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/mkcert@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/mkcert@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/mkcert@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/mkcert@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/mkcert@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/mkcert@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/mkcert@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/mkcert/dist/index.cjs.html b/packages/mkcert/dist/index.cjs.html new file mode 100644 index 0000000..123e230 --- /dev/null +++ b/packages/mkcert/dist/index.cjs.html @@ -0,0 +1,715 @@ + + + + + + Code coverage report for packages/mkcert/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/mkcert/dist index.cjs

+
+ +
+ 0% + Statements + 0/202 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/202 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const utils = require('@https-enable/utils');
+const fs = require('node:fs');
+const path = require('node:path');
+const process = require('node:process');
+const mkcert = require('mkcert');
+const Logger = require('@https-enable/logger');
+const crypto = require('node:crypto');
+const tls = require('node:tls');
+const dayjs = require('dayjs');
+const forge = require('node-forge');
+ 
+function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
+ 
+const fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
+const path__default = /*#__PURE__*/_interopDefaultCompat(path);
+const process__default = /*#__PURE__*/_interopDefaultCompat(process);
+const Logger__default = /*#__PURE__*/_interopDefaultCompat(Logger);
+const crypto__default = /*#__PURE__*/_interopDefaultCompat(crypto);
+const tls__default = /*#__PURE__*/_interopDefaultCompat(tls);
+const dayjs__default = /*#__PURE__*/_interopDefaultCompat(dayjs);
+const forge__default = /*#__PURE__*/_interopDefaultCompat(forge);
+ 
+function createLogFormat(colorize = false) {
+  return Logger__default.createLogFormat(colorize, "mkcert");
+}
+const logger = new Logger__default({
+  format: createLogFormat(),
+  transports: [
+    new Logger.Transports.Console({
+      format: createLogFormat(true)
+    })
+  ]
+});
+ 
+const defaultCertificateBasePath = path__default.join(process__default.cwd(), "cert");
+function processCertPath(certPath = { base: defaultCertificateBasePath }) {
+  if ("cert" in certPath && "key" in certPath && certPath.cert && certPath.key) {
+    return {
+      keyPath: certPath.key,
+      certPath: certPath.cert
+    };
+  }
+  const basePath = "base" in certPath && certPath.base || defaultCertificateBasePath;
+  return {
+    keyPath: path__default.join(basePath, "key.pem"),
+    certPath: path__default.join(basePath, "cert.pem")
+  };
+}
+function readCertificate(options) {
+  try {
+    const { keyPath, certPath } = processCertPath(options);
+    return {
+      key: fs__default.readFileSync(keyPath, { encoding: "utf-8" }),
+      cert: fs__default.readFileSync(certPath, { encoding: "utf-8" })
+    };
+  } catch (error) {
+    logger.error(`${error}`);
+    return null;
+  }
+}
+function saveCertificate(cert, key, options) {
+  const { keyPath, certPath } = processCertPath(options);
+  const CERTS_DIR = path__default.dirname(certPath);
+  if (!fs__default.existsSync(CERTS_DIR)) {
+    fs__default.mkdirSync(CERTS_DIR, { recursive: true });
+  }
+  fs__default.writeFileSync(keyPath, key, { encoding: "utf-8" });
+  fs__default.writeFileSync(certPath, cert, { encoding: "utf-8" });
+  logger.info(`Certificate saved to ${path__default.resolve(certPath)}`);
+  return { keyPath, certPath };
+}
+async function createCertificate(_options, pathOptions, isCache = true) {
+  const { force, ...options } = _options;
+  return new Promise((resolve, reject) => {
+    mkcert.createCA(options).then((ca) => {
+      mkcert.createCert({
+        ca: { key: ca.key, cert: ca.cert },
+        domains: Array.isArray(options.domains) ? options.domains : options.domains ? [options.domains] : [],
+        validity: options.validity
+      }).then((cert) => {
+        isCache && saveCertificate(cert.cert, cert.key, pathOptions);
+        resolve(cert);
+      }).catch(reject);
+    }).catch(reject);
+  });
+}
+ 
+function verifyCertificateByTLS(options) {
+  const secureContext = tls__default.createSecureContext({ key: options.key, cert: options.cert });
+  const tlsOptions = {
+    host: options.host,
+    port: Number(options.port),
+    secureContext,
+    rejectUnauthorized: options.rejectUnauthorized
+  };
+  const socket = tls__default.connect(tlsOptions, () => {
+    logger.info("\u8BC1\u4E66\u6709\u6548");
+    socket.end();
+  });
+  socket.on("error", (err) => {
+    logger.error(err.toString());
+  });
+}
+function verifyCertificateValidityByTLS(options) {
+  const tlsOptions = {
+    host: options.host,
+    port: Number(options.port),
+    rejectUnauthorized: options.rejectUnauthorized
+  };
+  const socket = tls__default.connect(tlsOptions, () => {
+    const cert = socket.getPeerCertificate();
+    const validFrom = new Date(cert.valid_from).getTime();
+    const validTo = new Date(cert.valid_to).getTime();
+    const now = Date.now();
+    if (now > validFrom && now < validTo)
+      logger.info("\u8BC1\u4E66\u6709\u6548");
+    else
+      logger.warn("\u8BC1\u4E66\u65E0\u6548\uFF1A\u4E0D\u5728\u6709\u6548\u671F\u5185");
+    socket.end();
+  });
+  socket.on("error", (err) => {
+    logger.error(`${err}`);
+  });
+}
+async function verifyCertificate(keyPem, certPem) {
+  const cert = forge__default.pki.certificateFromPem(certPem);
+  const privateKey = forge__default.pki.privateKeyFromPem(keyPem);
+  const publicKey = cert.publicKey;
+  const certModulus = publicKey.n.toString(16);
+  const keyModulus = privateKey.n.toString(16);
+  const certModulusMd5 = crypto__default.createHash("md5").update(certModulus).digest("hex");
+  const keyModulusMd5 = crypto__default.createHash("md5").update(keyModulus).digest("hex");
+  const matchs = [];
+  const messages = [];
+  if (certModulusMd5 === keyModulusMd5) {
+    matchs.push(true);
+    messages.push("\u8BC1\u4E66\u548C\u79C1\u94A5\u5339\u914D");
+  } else {
+    matchs.push(false);
+    messages.push("\u8BC1\u4E66\u548C\u79C1\u94A5\u4E0D\u5339\u914D");
+  }
+  const now = /* @__PURE__ */ new Date();
+  const validFrom = cert.validity.notBefore;
+  const validTo = cert.validity.notAfter;
+  if (now > validFrom && now < validTo) {
+    matchs.push(true);
+    messages.push(
+      `\u8BC1\u4E66\u5728\u6709\u6548\u671F\u5185\uFF0C\u6709\u6548\u671F\uFF1A${dayjs__default(validFrom).format("YYYY-MM-DD HH:mm:ss")} ~ ${dayjs__default(validTo).format("YYYY-MM-DD HH:mm:ss")}`
+    );
+  } else {
+    matchs.push(false);
+    messages.push(
+      `\u8BC1\u4E66\u4E0D\u5728\u6709\u6548\u671F\u5185\uFF0C\u6709\u6548\u671F\uFF1A${dayjs__default(validFrom).format("YYYY-MM-DD HH:mm:ss")} - ${dayjs__default(validTo).format("YYYY-MM-DD HH:mm:ss")}`
+    );
+  }
+  const match = matchs.every((m) => m);
+  const message = messages.join(", ");
+  return { match, message };
+}
+ 
+async function initSSLCertificate(options, pathOptions) {
+  const pem = readCertificate(pathOptions);
+  if (pem !== null && !options.force) {
+    const verifyRes = await verifyCertificate(pem.key, pem.cert);
+    if (!verifyRes.match) {
+      logger.error(`\u279C  ${verifyRes.message}`);
+      logger.warn("\u279C  \u8BC1\u4E66\u548C\u5BC6\u94A5\u5931\u6548\uFF0C\u6B63\u5728\u91CD\u65B0\u751F\u6210\u8BC1\u4E66\u548C\u5BC6\u94A5\u2026\u2026");
+      const httpsOptions2 = await createCertificate(options, pathOptions);
+      logger.info("\u279C  \u8BC1\u4E66\u548C\u5BC6\u94A5\u5DF2\u66F4\u65B0");
+      return httpsOptions2;
+    }
+    logger.info(`\u279C  ${verifyRes.message}`);
+    return pem;
+  }
+  logger.warn(`\u279C  ${options.force ? "\u5F3A\u5236\u751F\u6210\u8BC1\u4E66\u548C\u5BC6\u94A5\u2026\u2026" : "\u8BC1\u4E66\u548C\u5BC6\u94A5\u4E0D\u5B58\u5728\uFF0C\u6B63\u5728\u751F\u6210\u8BC1\u4E66\u548C\u5BC6\u94A5\u2026\u2026"}`);
+  const httpsOptions = await createCertificate(options, pathOptions);
+  logger.info("\u279C  \u8BC1\u4E66\u548C\u5BC6\u94A5\u5DF2\u751F\u6210");
+  return httpsOptions;
+}
+async function defineCertificate(options, pathOptions) {
+  const {
+    organization = "",
+    countryCode = "",
+    state = "",
+    locality = "",
+    validity = 0,
+    domains = "0.0.0.0",
+    force = false
+  } = options ?? {};
+  if (utils.isNil(options?.validity, true)) {
+    logger.warn("'validity' is undefined; defaulting to 0.");
+  }
+  if (utils.isNil(options?.domains, true)) {
+    logger.warn("'domains' is undefined; defaulting to '0.0.0.0'.");
+  }
+  return await initSSLCertificate({ organization, countryCode, state, locality, validity, domains, force }, pathOptions);
+}
+ 
+exports.createCertificate = createCertificate;
+exports.defaultCertificateBasePath = defaultCertificateBasePath;
+exports.defineCertificate = defineCertificate;
+exports.initSSLCertificate = initSSLCertificate;
+exports.processCertPath = processCertPath;
+exports.readCertificate = readCertificate;
+exports.saveCertificate = saveCertificate;
+exports.verifyCertificate = verifyCertificate;
+exports.verifyCertificateByTLS = verifyCertificateByTLS;
+exports.verifyCertificateValidityByTLS = verifyCertificateValidityByTLS;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/dist/index.d.mts.html b/packages/mkcert/dist/index.d.mts.html new file mode 100644 index 0000000..b2e423d --- /dev/null +++ b/packages/mkcert/dist/index.d.mts.html @@ -0,0 +1,256 @@ + + + + + + Code coverage report for packages/mkcert/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/mkcert/dist index.d.mts

+
+ +
+ 0% + Statements + 0/57 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Prettify } from '@https-enable/types';
+export { Prettify } from '@https-enable/types';
+import { CertificateAuthorityOptions } from 'mkcert';
+
+type CertFile = 'key' | 'cert'
+
+type Certificate = Record<CertFile, string>
+type CertificatePath = Prettify<Record<CertFile, string>> | { base: string }
+
+interface VerifyResult {
+  match: boolean
+  message: string
+}
+
+interface VerifyOptions {
+  host: string
+  port: number | string
+  rejectUnauthorized?: boolean
+}
+
+type CreateOptions = Prettify<CertificateAuthorityOptions & { domains: string[] | string, force: boolean }>
+
+declare const defaultCertificateBasePath: string;
+declare function processCertPath(certPath?: Partial<CertificatePath>): {
+    keyPath: string;
+    certPath: string;
+};
+declare function readCertificate(options?: CertificatePath): {
+    key: string;
+    cert: string;
+} | null;
+/**
+ * 在项目根目录下创建一个 mkcert 目录,用于存放生成的证书和密钥文件
+ */
+declare function saveCertificate(cert: string, key: string, options?: CertificatePath): {
+    keyPath: string;
+    certPath: string;
+};
+declare function createCertificate(_options: CreateOptions, pathOptions?: CertificatePath, isCache?: boolean): Promise<Certificate>;
+
+declare function verifyCertificateByTLS(options: Prettify<VerifyOptions & Certificate>): void;
+declare function verifyCertificateValidityByTLS(options: Prettify<VerifyOptions>): void;
+declare function verifyCertificate(keyPem: string, certPem: string): Promise<{
+    match: boolean;
+    message: string;
+}>;
+
+declare function initSSLCertificate(options: CreateOptions, pathOptions?: CertificatePath): Promise<{
+    key: string;
+    cert: string;
+}>;
+declare function defineCertificate(options?: Pick<CreateOptions, 'validity'> & Partial<Omit<CreateOptions, 'validity'>>, pathOptions?: CertificatePath): Promise<{
+    key: string;
+    cert: string;
+}>;
+
+export { type Certificate, type CertificatePath, type CreateOptions, type VerifyOptions, type VerifyResult, createCertificate, defaultCertificateBasePath, defineCertificate, initSSLCertificate, processCertPath, readCertificate, saveCertificate, verifyCertificate, verifyCertificateByTLS, verifyCertificateValidityByTLS };
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/dist/index.html b/packages/mkcert/dist/index.html new file mode 100644 index 0000000..a80ebcf --- /dev/null +++ b/packages/mkcert/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/mkcert/dist + + + + + + + + + +
+
+

All files packages/mkcert/dist

+
+ +
+ 0% + Statements + 0/441 +
+ + +
+ 0% + Branches + 0/3 +
+ + +
+ 0% + Functions + 0/3 +
+ + +
+ 0% + Lines + 0/441 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/2020%0/10%0/10%0/202
index.d.mts +
+
0%0/570%0/10%0/10%0/57
index.mjs +
+
0%0/1820%0/10%0/10%0/182
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/dist/index.mjs.html b/packages/mkcert/dist/index.mjs.html new file mode 100644 index 0000000..bd5f2df --- /dev/null +++ b/packages/mkcert/dist/index.mjs.html @@ -0,0 +1,649 @@ + + + + + + Code coverage report for packages/mkcert/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/mkcert/dist index.mjs

+
+ +
+ 0% + Statements + 0/182 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/182 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { isNil } from '@https-enable/utils';
+import fs from 'node:fs';
+import path from 'node:path';
+import process from 'node:process';
+import { createCA, createCert } from 'mkcert';
+import Logger, { Transports } from '@https-enable/logger';
+import crypto from 'node:crypto';
+import tls from 'node:tls';
+import dayjs from 'dayjs';
+import forge from 'node-forge';
+ 
+function createLogFormat(colorize = false) {
+  return Logger.createLogFormat(colorize, "mkcert");
+}
+const logger = new Logger({
+  format: createLogFormat(),
+  transports: [
+    new Transports.Console({
+      format: createLogFormat(true)
+    })
+  ]
+});
+ 
+const defaultCertificateBasePath = path.join(process.cwd(), "cert");
+function processCertPath(certPath = { base: defaultCertificateBasePath }) {
+  if ("cert" in certPath && "key" in certPath && certPath.cert && certPath.key) {
+    return {
+      keyPath: certPath.key,
+      certPath: certPath.cert
+    };
+  }
+  const basePath = "base" in certPath && certPath.base || defaultCertificateBasePath;
+  return {
+    keyPath: path.join(basePath, "key.pem"),
+    certPath: path.join(basePath, "cert.pem")
+  };
+}
+function readCertificate(options) {
+  try {
+    const { keyPath, certPath } = processCertPath(options);
+    return {
+      key: fs.readFileSync(keyPath, { encoding: "utf-8" }),
+      cert: fs.readFileSync(certPath, { encoding: "utf-8" })
+    };
+  } catch (error) {
+    logger.error(`${error}`);
+    return null;
+  }
+}
+function saveCertificate(cert, key, options) {
+  const { keyPath, certPath } = processCertPath(options);
+  const CERTS_DIR = path.dirname(certPath);
+  if (!fs.existsSync(CERTS_DIR)) {
+    fs.mkdirSync(CERTS_DIR, { recursive: true });
+  }
+  fs.writeFileSync(keyPath, key, { encoding: "utf-8" });
+  fs.writeFileSync(certPath, cert, { encoding: "utf-8" });
+  logger.info(`Certificate saved to ${path.resolve(certPath)}`);
+  return { keyPath, certPath };
+}
+async function createCertificate(_options, pathOptions, isCache = true) {
+  const { force, ...options } = _options;
+  return new Promise((resolve, reject) => {
+    createCA(options).then((ca) => {
+      createCert({
+        ca: { key: ca.key, cert: ca.cert },
+        domains: Array.isArray(options.domains) ? options.domains : options.domains ? [options.domains] : [],
+        validity: options.validity
+      }).then((cert) => {
+        isCache && saveCertificate(cert.cert, cert.key, pathOptions);
+        resolve(cert);
+      }).catch(reject);
+    }).catch(reject);
+  });
+}
+ 
+function verifyCertificateByTLS(options) {
+  const secureContext = tls.createSecureContext({ key: options.key, cert: options.cert });
+  const tlsOptions = {
+    host: options.host,
+    port: Number(options.port),
+    secureContext,
+    rejectUnauthorized: options.rejectUnauthorized
+  };
+  const socket = tls.connect(tlsOptions, () => {
+    logger.info("\u8BC1\u4E66\u6709\u6548");
+    socket.end();
+  });
+  socket.on("error", (err) => {
+    logger.error(err.toString());
+  });
+}
+function verifyCertificateValidityByTLS(options) {
+  const tlsOptions = {
+    host: options.host,
+    port: Number(options.port),
+    rejectUnauthorized: options.rejectUnauthorized
+  };
+  const socket = tls.connect(tlsOptions, () => {
+    const cert = socket.getPeerCertificate();
+    const validFrom = new Date(cert.valid_from).getTime();
+    const validTo = new Date(cert.valid_to).getTime();
+    const now = Date.now();
+    if (now > validFrom && now < validTo)
+      logger.info("\u8BC1\u4E66\u6709\u6548");
+    else
+      logger.warn("\u8BC1\u4E66\u65E0\u6548\uFF1A\u4E0D\u5728\u6709\u6548\u671F\u5185");
+    socket.end();
+  });
+  socket.on("error", (err) => {
+    logger.error(`${err}`);
+  });
+}
+async function verifyCertificate(keyPem, certPem) {
+  const cert = forge.pki.certificateFromPem(certPem);
+  const privateKey = forge.pki.privateKeyFromPem(keyPem);
+  const publicKey = cert.publicKey;
+  const certModulus = publicKey.n.toString(16);
+  const keyModulus = privateKey.n.toString(16);
+  const certModulusMd5 = crypto.createHash("md5").update(certModulus).digest("hex");
+  const keyModulusMd5 = crypto.createHash("md5").update(keyModulus).digest("hex");
+  const matchs = [];
+  const messages = [];
+  if (certModulusMd5 === keyModulusMd5) {
+    matchs.push(true);
+    messages.push("\u8BC1\u4E66\u548C\u79C1\u94A5\u5339\u914D");
+  } else {
+    matchs.push(false);
+    messages.push("\u8BC1\u4E66\u548C\u79C1\u94A5\u4E0D\u5339\u914D");
+  }
+  const now = /* @__PURE__ */ new Date();
+  const validFrom = cert.validity.notBefore;
+  const validTo = cert.validity.notAfter;
+  if (now > validFrom && now < validTo) {
+    matchs.push(true);
+    messages.push(
+      `\u8BC1\u4E66\u5728\u6709\u6548\u671F\u5185\uFF0C\u6709\u6548\u671F\uFF1A${dayjs(validFrom).format("YYYY-MM-DD HH:mm:ss")} ~ ${dayjs(validTo).format("YYYY-MM-DD HH:mm:ss")}`
+    );
+  } else {
+    matchs.push(false);
+    messages.push(
+      `\u8BC1\u4E66\u4E0D\u5728\u6709\u6548\u671F\u5185\uFF0C\u6709\u6548\u671F\uFF1A${dayjs(validFrom).format("YYYY-MM-DD HH:mm:ss")} - ${dayjs(validTo).format("YYYY-MM-DD HH:mm:ss")}`
+    );
+  }
+  const match = matchs.every((m) => m);
+  const message = messages.join(", ");
+  return { match, message };
+}
+ 
+async function initSSLCertificate(options, pathOptions) {
+  const pem = readCertificate(pathOptions);
+  if (pem !== null && !options.force) {
+    const verifyRes = await verifyCertificate(pem.key, pem.cert);
+    if (!verifyRes.match) {
+      logger.error(`\u279C  ${verifyRes.message}`);
+      logger.warn("\u279C  \u8BC1\u4E66\u548C\u5BC6\u94A5\u5931\u6548\uFF0C\u6B63\u5728\u91CD\u65B0\u751F\u6210\u8BC1\u4E66\u548C\u5BC6\u94A5\u2026\u2026");
+      const httpsOptions2 = await createCertificate(options, pathOptions);
+      logger.info("\u279C  \u8BC1\u4E66\u548C\u5BC6\u94A5\u5DF2\u66F4\u65B0");
+      return httpsOptions2;
+    }
+    logger.info(`\u279C  ${verifyRes.message}`);
+    return pem;
+  }
+  logger.warn(`\u279C  ${options.force ? "\u5F3A\u5236\u751F\u6210\u8BC1\u4E66\u548C\u5BC6\u94A5\u2026\u2026" : "\u8BC1\u4E66\u548C\u5BC6\u94A5\u4E0D\u5B58\u5728\uFF0C\u6B63\u5728\u751F\u6210\u8BC1\u4E66\u548C\u5BC6\u94A5\u2026\u2026"}`);
+  const httpsOptions = await createCertificate(options, pathOptions);
+  logger.info("\u279C  \u8BC1\u4E66\u548C\u5BC6\u94A5\u5DF2\u751F\u6210");
+  return httpsOptions;
+}
+async function defineCertificate(options, pathOptions) {
+  const {
+    organization = "",
+    countryCode = "",
+    state = "",
+    locality = "",
+    validity = 0,
+    domains = "0.0.0.0",
+    force = false
+  } = options ?? {};
+  if (isNil(options?.validity, true)) {
+    logger.warn("'validity' is undefined; defaulting to 0.");
+  }
+  if (isNil(options?.domains, true)) {
+    logger.warn("'domains' is undefined; defaulting to '0.0.0.0'.");
+  }
+  return await initSSLCertificate({ organization, countryCode, state, locality, validity, domains, force }, pathOptions);
+}
+ 
+export { createCertificate, defaultCertificateBasePath, defineCertificate, initSSLCertificate, processCertPath, readCertificate, saveCertificate, verifyCertificate, verifyCertificateByTLS, verifyCertificateValidityByTLS };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/package.json b/packages/mkcert/package.json deleted file mode 100644 index c6e0610..0000000 --- a/packages/mkcert/package.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "@https-enable/mkcert", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "release": "npm run build && bumpp", - "prepublishOnly": "npm run build" - }, - "dependencies": { - "@https-enable/logger": "workspace:*", - "@https-enable/utils": "workspace:*", - "dayjs": "^1.11.13", - "mkcert": "^3.2.0", - "node-forge": "^1.3.1" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/node": "^22.13.1", - "@types/node-forge": "^1.3.11", - "unbuild": "^3.3.1" - } -} diff --git a/packages/mkcert/readme.md b/packages/mkcert/readme.md deleted file mode 100644 index d2ccda5..0000000 --- a/packages/mkcert/readme.md +++ /dev/null @@ -1 +0,0 @@ -# @https-enable/mkcert diff --git a/packages/mkcert/src/common.ts b/packages/mkcert/src/common.ts deleted file mode 100644 index 740ec14..0000000 --- a/packages/mkcert/src/common.ts +++ /dev/null @@ -1,77 +0,0 @@ -import type { Certificate, CertificatePath, CreateOptions } from './type' -import fs from 'node:fs' -import path from 'node:path' -import process from 'node:process' -import { createCA, createCert } from 'mkcert' - -import logger from './logger' - -export const defaultCertificateBasePath = path.join(process.cwd(), 'cert') - -export function processCertPath(certPath: Partial = { base: defaultCertificateBasePath }) { - if ('cert' in certPath && 'key' in certPath && certPath.cert && certPath.key) { - return { - keyPath: certPath.key, - certPath: certPath.cert, - } - } - - const basePath = ('base' in certPath && certPath.base) || defaultCertificateBasePath - return { - keyPath: path.join(basePath, 'key.pem'), - certPath: path.join(basePath, 'cert.pem'), - } -} - -export function readCertificate(options?: CertificatePath) { - try { - const { keyPath, certPath } = processCertPath(options) - return { - key: fs.readFileSync(keyPath, { encoding: 'utf-8' }), - cert: fs.readFileSync(certPath, { encoding: 'utf-8' }), - } - } - catch (error) { - logger.error(`${error}`) - return null - } -} - -/** - * 在项目根目录下创建一个 mkcert 目录,用于存放生成的证书和密钥文件 - */ -export function saveCertificate(cert: string, key: string, options?: CertificatePath) { - const { keyPath, certPath } = processCertPath(options) - const CERTS_DIR = path.dirname(certPath) - - if (!fs.existsSync(CERTS_DIR)) { - fs.mkdirSync(CERTS_DIR, { recursive: true }) - } - - fs.writeFileSync(keyPath, key, { encoding: 'utf-8' }) - fs.writeFileSync(certPath, cert, { encoding: 'utf-8' }) - - logger.info(`Certificate saved to ${path.resolve(certPath)}`) - - return { keyPath, certPath } -} - -export async function createCertificate(_options: CreateOptions, pathOptions?: CertificatePath, isCache = true): Promise { - const { force, ...options } = _options - return new Promise((resolve, reject) => { - createCA(options) - .then((ca) => { - createCert({ - ca: { key: ca.key, cert: ca.cert }, - domains: Array.isArray(options.domains) ? options.domains : options.domains ? [options.domains] : [], - validity: options.validity, - }) - .then((cert) => { - isCache && saveCertificate(cert.cert, cert.key, pathOptions) - resolve(cert) - }) - .catch(reject) - }) - .catch(reject) - }) -} diff --git a/packages/mkcert/src/common.ts.html b/packages/mkcert/src/common.ts.html new file mode 100644 index 0000000..d6e55af --- /dev/null +++ b/packages/mkcert/src/common.ts.html @@ -0,0 +1,316 @@ + + + + + + Code coverage report for packages/mkcert/src/common.ts + + + + + + + + + +
+
+

All files / packages/mkcert/src common.ts

+
+ +
+ 100% + Statements + 62/62 +
+ + +
+ 82.35% + Branches + 14/17 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 62/62 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78  +1x +1x +1x +1x +  +1x +  +1x +  +1x +19x +8x +8x +8x +8x +8x +  +19x +19x +19x +19x +19x +19x +  +1x +7x +7x +7x +7x +7x +7x +7x +4x +4x +4x +4x +7x +  +  +  +  +1x +6x +6x +  +6x +2x +2x +  +6x +6x +  +6x +  +6x +6x +  +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x +6x + 
import type { Certificate, CertificatePath, CreateOptions } from './type'
+import fs from 'node:fs'
+import path from 'node:path'
+import process from 'node:process'
+import { createCA, createCert } from 'mkcert'
+ 
+import logger from './logger'
+ 
+export const defaultCertificateBasePath = path.join(process.cwd(), 'cert')
+ 
+export function processCertPath(certPath: Partial<CertificatePath> = { base: defaultCertificateBasePath }) {
+  if ('cert' in certPath && 'key' in certPath && certPath.cert && certPath.key) {
+    return {
+      keyPath: certPath.key,
+      certPath: certPath.cert,
+    }
+  }
+ 
+  const basePath = ('base' in certPath && certPath.base) || defaultCertificateBasePath
+  return {
+    keyPath: path.join(basePath, 'key.pem'),
+    certPath: path.join(basePath, 'cert.pem'),
+  }
+}
+ 
+export function readCertificate(options?: CertificatePath) {
+  try {
+    const { keyPath, certPath } = processCertPath(options)
+    return {
+      key: fs.readFileSync(keyPath, { encoding: 'utf-8' }),
+      cert: fs.readFileSync(certPath, { encoding: 'utf-8' }),
+    }
+  }
+  catch (error) {
+    logger.error(`${error}`)
+    return null
+  }
+}
+ 
+/**
+ * 在项目根目录下创建一个 mkcert 目录,用于存放生成的证书和密钥文件
+ */
+export function saveCertificate(cert: string, key: string, options?: CertificatePath) {
+  const { keyPath, certPath } = processCertPath(options)
+  const CERTS_DIR = path.dirname(certPath)
+ 
+  if (!fs.existsSync(CERTS_DIR)) {
+    fs.mkdirSync(CERTS_DIR, { recursive: true })
+  }
+ 
+  fs.writeFileSync(keyPath, key, { encoding: 'utf-8' })
+  fs.writeFileSync(certPath, cert, { encoding: 'utf-8' })
+ 
+  logger.info(`Certificate saved to ${path.resolve(certPath)}`)
+ 
+  return { keyPath, certPath }
+}
+ 
+export async function createCertificate(_options: CreateOptions, pathOptions?: CertificatePath, isCache = true): Promise<Certificate> {
+  const { force, ...options } = _options
+  return new Promise((resolve, reject) => {
+    createCA(options)
+      .then((ca) => {
+        createCert({
+          ca: { key: ca.key, cert: ca.cert },
+          domains: Array.isArray(options.domains) ? options.domains : options.domains ? [options.domains] : [],
+          validity: options.validity,
+        })
+          .then((cert) => {
+            isCache && saveCertificate(cert.cert, cert.key, pathOptions)
+            resolve(cert)
+          })
+          .catch(reject)
+      })
+      .catch(reject)
+  })
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/src/index.html b/packages/mkcert/src/index.html new file mode 100644 index 0000000..24f7113 --- /dev/null +++ b/packages/mkcert/src/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for packages/mkcert/src + + + + + + + + + +
+
+

All files packages/mkcert/src

+
+ +
+ 100% + Statements + 202/202 +
+ + +
+ 91.3% + Branches + 42/46 +
+ + +
+ 100% + Functions + 10/10 +
+ + +
+ 100% + Lines + 202/202 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
common.ts +
+
100%62/6282.35%14/17100%4/4100%62/62
index.ts +
+
100%43/43100%15/15100%2/2100%43/43
logger.ts +
+
100%13/13100%1/1100%1/1100%13/13
verify.ts +
+
100%84/8492.3%12/13100%3/3100%84/84
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/src/index.ts b/packages/mkcert/src/index.ts deleted file mode 100644 index e7ae894..0000000 --- a/packages/mkcert/src/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { CertificatePath, CreateOptions } from './type' - -import { isNil } from '@https-enable/utils' -import { createCertificate, readCertificate } from './common' -import logger from './logger' -import { verifyCertificate } from './verify' - -export async function initSSLCertificate(options: CreateOptions, pathOptions?: CertificatePath) { - const pem = readCertificate(pathOptions) - if (pem !== null && !options.force) { - const verifyRes = await verifyCertificate(pem.key, pem.cert) - - if (!verifyRes.match) { - logger.error(`➜ ${verifyRes.message}`) - logger.warn('➜ 证书和密钥失效,正在重新生成证书和密钥……') - const httpsOptions = await createCertificate(options, pathOptions) - logger.info('➜ 证书和密钥已更新') - - return httpsOptions - } - - logger.info(`➜ ${verifyRes.message}`) - return pem - } - - logger.warn(`➜ ${options.force ? '强制生成证书和密钥……' : '证书和密钥不存在,正在生成证书和密钥……'}`) - const httpsOptions = await createCertificate(options, pathOptions) - logger.info('➜ 证书和密钥已生成') - - return httpsOptions -} - -export async function defineCertificate(options?: Pick & Partial>, pathOptions?: CertificatePath) { - const { - organization = '', - countryCode = '', - state = '', - locality = '', - validity = 0, - domains = '0.0.0.0', - force = false, - } = options ?? {} - - // eslint-disable-next-line ts/ban-ts-comment - // @ts-ignore - if (isNil(options?.validity, true)) { - // "validity" is not defined and will be set to 0. - logger.warn('\'validity\' is undefined; defaulting to 0.') - } - // eslint-disable-next-line ts/ban-ts-comment - // @ts-ignore - if (isNil(options?.domains, true)) { - logger.warn('\'domains\' is undefined; defaulting to \'0.0.0.0\'.') - } - - return await initSSLCertificate({ organization, countryCode, state, locality, validity, domains, force }, pathOptions) -} - -export * from './common' -export type * from './type' -export * from './verify' diff --git a/packages/mkcert/src/index.ts.html b/packages/mkcert/src/index.ts.html new file mode 100644 index 0000000..31b47ab --- /dev/null +++ b/packages/mkcert/src/index.ts.html @@ -0,0 +1,268 @@ + + + + + + Code coverage report for packages/mkcert/src/index.ts + + + + + + + + + +
+
+

All files / packages/mkcert/src index.ts

+
+ +
+ 100% + Statements + 43/43 +
+ + +
+ 100% + Branches + 15/15 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 43/43 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62  +  +1x +1x +1x +1x +  +7x +7x +7x +3x +  +3x +2x +2x +2x +2x +  +2x +2x +  +1x +1x +1x +  +7x +7x +4x +  +4x +4x +  +7x +7x +7x +7x +7x +7x +7x +7x +7x +7x +  +  +  +7x +  +1x +1x +  +  +7x +6x +6x +  +7x +7x +  +1x +  +1x + 
import type { CertificatePath, CreateOptions } from './type'
+ 
+import { isNil } from '@https-enable/utils'
+import { createCertificate, readCertificate } from './common'
+import logger from './logger'
+import { verifyCertificate } from './verify'
+ 
+export async function initSSLCertificate(options: CreateOptions, pathOptions?: CertificatePath) {
+  const pem = readCertificate(pathOptions)
+  if (pem !== null && !options.force) {
+    const verifyRes = await verifyCertificate(pem.key, pem.cert)
+ 
+    if (!verifyRes.match) {
+      logger.error(`➜  ${verifyRes.message}`)
+      logger.warn('➜  证书和密钥失效,正在重新生成证书和密钥……')
+      const httpsOptions = await createCertificate(options, pathOptions)
+      logger.info('➜  证书和密钥已更新')
+ 
+      return httpsOptions
+    }
+ 
+    logger.info(`➜  ${verifyRes.message}`)
+    return pem
+  }
+ 
+  logger.warn(`➜  ${options.force ? '强制生成证书和密钥……' : '证书和密钥不存在,正在生成证书和密钥……'}`)
+  const httpsOptions = await createCertificate(options, pathOptions)
+  logger.info('➜  证书和密钥已生成')
+ 
+  return httpsOptions
+}
+ 
+export async function defineCertificate(options?: Pick<CreateOptions, 'validity'> & Partial<Omit<CreateOptions, 'validity'>>, pathOptions?: CertificatePath) {
+  const {
+    organization = '',
+    countryCode = '',
+    state = '',
+    locality = '',
+    validity = 0,
+    domains = '0.0.0.0',
+    force = false,
+  } = options ?? {}
+ 
+  // eslint-disable-next-line ts/ban-ts-comment
+  // @ts-ignore
+  if (isNil(options?.validity, true)) {
+    // "validity" is not defined and will be set to 0.
+    logger.warn('\'validity\' is undefined; defaulting to 0.')
+  }
+  // eslint-disable-next-line ts/ban-ts-comment
+  // @ts-ignore
+  if (isNil(options?.domains, true)) {
+    logger.warn('\'domains\' is undefined; defaulting to \'0.0.0.0\'.')
+  }
+ 
+  return await initSSLCertificate({ organization, countryCode, state, locality, validity, domains, force }, pathOptions)
+}
+ 
+export * from './common'
+export type * from './type'
+export * from './verify'
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/src/logger.ts b/packages/mkcert/src/logger.ts deleted file mode 100644 index 156599c..0000000 --- a/packages/mkcert/src/logger.ts +++ /dev/null @@ -1,16 +0,0 @@ -import Logger, { Transports } from '@https-enable/logger' - -function createLogFormat(colorize = false) { - return Logger.createLogFormat(colorize, 'mkcert') -} - -export const logger = new Logger({ - format: createLogFormat(), - transports: [ - new Transports.Console({ - format: createLogFormat(true), - }), - ], -}) - -export default logger diff --git a/packages/mkcert/src/logger.ts.html b/packages/mkcert/src/logger.ts.html new file mode 100644 index 0000000..6e51db4 --- /dev/null +++ b/packages/mkcert/src/logger.ts.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for packages/mkcert/src/logger.ts + + + + + + + + + +
+
+

All files / packages/mkcert/src logger.ts

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +  +4x +4x +4x +  +1x +1x +1x +1x +1x +1x +1x +1x +  +1x + 
import Logger, { Transports } from '@https-enable/logger'
+ 
+function createLogFormat(colorize = false) {
+  return Logger.createLogFormat(colorize, 'mkcert')
+}
+ 
+export const logger = new Logger({
+  format: createLogFormat(),
+  transports: [
+    new Transports.Console({
+      format: createLogFormat(true),
+    }),
+  ],
+})
+ 
+export default logger
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/src/type.d.ts b/packages/mkcert/src/type.d.ts deleted file mode 100644 index 0671555..0000000 --- a/packages/mkcert/src/type.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { Prettify } from '@https-enable/types' -import type { CertificateAuthorityOptions } from 'mkcert' - -export { Prettify } - -type CertFile = 'key' | 'cert' - -export type Certificate = Record -export type CertificatePath = Prettify> | { base: string } - -export interface VerifyResult { - match: boolean - message: string -} - -export interface VerifyOptions { - host: string - port: number | string - rejectUnauthorized?: boolean -} - -export type CreateOptions = Prettify diff --git a/packages/mkcert/src/verify.ts b/packages/mkcert/src/verify.ts deleted file mode 100644 index 62ec7fa..0000000 --- a/packages/mkcert/src/verify.ts +++ /dev/null @@ -1,103 +0,0 @@ -import type { Certificate, Prettify, VerifyOptions } from './type' -import crypto from 'node:crypto' -import tls from 'node:tls' -import dayjs from 'dayjs' -import forge from 'node-forge' -import logger from './logger' - -export function verifyCertificateByTLS(options: Prettify) { - const secureContext = tls.createSecureContext({ key: options.key, cert: options.cert }) - const tlsOptions: tls.ConnectionOptions = { - host: options.host, - port: Number(options.port), - secureContext, - rejectUnauthorized: options.rejectUnauthorized, - } - - const socket = tls.connect(tlsOptions, () => { - logger.info('证书有效') - socket.end() - }) - - socket.on('error', (err) => { - logger.error(err.toString()) - }) -} - -export function verifyCertificateValidityByTLS(options: Prettify) { - const tlsOptions: tls.ConnectionOptions = { - host: options.host, - port: Number(options.port), - rejectUnauthorized: options.rejectUnauthorized, - } - - const socket = tls.connect(tlsOptions, () => { - const cert = socket.getPeerCertificate() - - const validFrom = new Date(cert.valid_from).getTime() - const validTo = new Date(cert.valid_to).getTime() - const now = Date.now() - - if (now > validFrom && now < validTo) - logger.info('证书有效') - else - logger.warn('证书无效:不在有效期内') - - socket.end() - }) - - socket.on('error', (err) => { - logger.error(`${err}`) - }) -} - -export async function verifyCertificate(keyPem: string, certPem: string) { - const cert = forge.pki.certificateFromPem(certPem) - const privateKey = forge.pki.privateKeyFromPem(keyPem) - const publicKey = cert.publicKey as forge.pki.rsa.PublicKey - - const certModulus = publicKey.n.toString(16) - const keyModulus = privateKey.n.toString(16) - - const certModulusMd5 = crypto - .createHash('md5') - .update(certModulus) - .digest('hex') - const keyModulusMd5 = crypto - .createHash('md5') - .update(keyModulus) - .digest('hex') - - const matchs: boolean[] = [] - const messages: string[] = [] - - if (certModulusMd5 === keyModulusMd5) { - matchs.push(true) - messages.push('证书和私钥匹配') - } - else { - matchs.push(false) - messages.push('证书和私钥不匹配') - } - - const now = new Date() - const validFrom = cert.validity.notBefore - const validTo = cert.validity.notAfter - - if (now > validFrom && now < validTo) { - matchs.push(true) - messages.push( - `证书在有效期内,有效期:${dayjs(validFrom).format('YYYY-MM-DD HH:mm:ss')} ~ ${dayjs(validTo).format('YYYY-MM-DD HH:mm:ss')}`, - ) - } - else { - matchs.push(false) - messages.push( - `证书不在有效期内,有效期:${dayjs(validFrom).format('YYYY-MM-DD HH:mm:ss')} - ${dayjs(validTo).format('YYYY-MM-DD HH:mm:ss')}`, - ) - } - - const match = matchs.every(m => m) - const message = messages.join(', ') - return { match, message } -} diff --git a/packages/mkcert/src/verify.ts.html b/packages/mkcert/src/verify.ts.html new file mode 100644 index 0000000..41bfa56 --- /dev/null +++ b/packages/mkcert/src/verify.ts.html @@ -0,0 +1,394 @@ + + + + + + Code coverage report for packages/mkcert/src/verify.ts + + + + + + + + + +
+
+

All files / packages/mkcert/src verify.ts

+
+ +
+ 100% + Statements + 84/84 +
+ + +
+ 92.3% + Branches + 12/13 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 84/84 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104  +1x +1x +1x +1x +1x +  +1x +2x +2x +2x +2x +2x +2x +2x +  +2x +1x +1x +2x +  +2x +1x +2x +2x +  +1x +2x +2x +2x +2x +2x +  +2x +1x +  +1x +1x +1x +  +1x +1x +  +1x +  +1x +2x +  +2x +1x +2x +2x +  +3x +3x +3x +3x +  +3x +3x +  +3x +3x +3x +3x +3x +3x +3x +3x +  +3x +3x +  +3x +2x +2x +2x +1x +1x +1x +1x +  +3x +3x +3x +  +3x +1x +1x +1x +1x +1x +2x +2x +2x +2x +2x +2x +  +3x +3x +3x +3x + 
import type { Certificate, Prettify, VerifyOptions } from './type'
+import crypto from 'node:crypto'
+import tls from 'node:tls'
+import dayjs from 'dayjs'
+import forge from 'node-forge'
+import logger from './logger'
+ 
+export function verifyCertificateByTLS(options: Prettify<VerifyOptions & Certificate>) {
+  const secureContext = tls.createSecureContext({ key: options.key, cert: options.cert })
+  const tlsOptions: tls.ConnectionOptions = {
+    host: options.host,
+    port: Number(options.port),
+    secureContext,
+    rejectUnauthorized: options.rejectUnauthorized,
+  }
+ 
+  const socket = tls.connect(tlsOptions, () => {
+    logger.info('证书有效')
+    socket.end()
+  })
+ 
+  socket.on('error', (err) => {
+    logger.error(err.toString())
+  })
+}
+ 
+export function verifyCertificateValidityByTLS(options: Prettify<VerifyOptions>) {
+  const tlsOptions: tls.ConnectionOptions = {
+    host: options.host,
+    port: Number(options.port),
+    rejectUnauthorized: options.rejectUnauthorized,
+  }
+ 
+  const socket = tls.connect(tlsOptions, () => {
+    const cert = socket.getPeerCertificate()
+ 
+    const validFrom = new Date(cert.valid_from).getTime()
+    const validTo = new Date(cert.valid_to).getTime()
+    const now = Date.now()
+ 
+    if (now > validFrom && now < validTo)
+      logger.info('证书有效')
+    else
+      logger.warn('证书无效:不在有效期内')
+ 
+    socket.end()
+  })
+ 
+  socket.on('error', (err) => {
+    logger.error(`${err}`)
+  })
+}
+ 
+export async function verifyCertificate(keyPem: string, certPem: string) {
+  const cert = forge.pki.certificateFromPem(certPem)
+  const privateKey = forge.pki.privateKeyFromPem(keyPem)
+  const publicKey = cert.publicKey as forge.pki.rsa.PublicKey
+ 
+  const certModulus = publicKey.n.toString(16)
+  const keyModulus = privateKey.n.toString(16)
+ 
+  const certModulusMd5 = crypto
+    .createHash('md5')
+    .update(certModulus)
+    .digest('hex')
+  const keyModulusMd5 = crypto
+    .createHash('md5')
+    .update(keyModulus)
+    .digest('hex')
+ 
+  const matchs: boolean[] = []
+  const messages: string[] = []
+ 
+  if (certModulusMd5 === keyModulusMd5) {
+    matchs.push(true)
+    messages.push('证书和私钥匹配')
+  }
+  else {
+    matchs.push(false)
+    messages.push('证书和私钥不匹配')
+  }
+ 
+  const now = new Date()
+  const validFrom = cert.validity.notBefore
+  const validTo = cert.validity.notAfter
+ 
+  if (now > validFrom && now < validTo) {
+    matchs.push(true)
+    messages.push(
+      `证书在有效期内,有效期:${dayjs(validFrom).format('YYYY-MM-DD HH:mm:ss')} ~ ${dayjs(validTo).format('YYYY-MM-DD HH:mm:ss')}`,
+    )
+  }
+  else {
+    matchs.push(false)
+    messages.push(
+      `证书不在有效期内,有效期:${dayjs(validFrom).format('YYYY-MM-DD HH:mm:ss')} - ${dayjs(validTo).format('YYYY-MM-DD HH:mm:ss')}`,
+    )
+  }
+ 
+  const match = matchs.every(m => m)
+  const message = messages.join(', ')
+  return { match, message }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/mkcert/tests/common.ts b/packages/mkcert/tests/common.ts deleted file mode 100644 index b87c737..0000000 --- a/packages/mkcert/tests/common.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { existsSync, readFileSync } from 'node:fs' -import { resolve } from 'node:path' -import { expect, vi } from 'vitest' -import { defaultCertificateBasePath, defineCertificate, processCertPath, verifyCertificateByTLS } from '../src' -import logger from '../src/logger' - -export const CACHE_PATH = 'test-cache/mkcert' - -export async function mkcertCheck(...args: Parameters) { - const [_, pathOptions] = args - - const { keyPath, certPath } = processCertPath(pathOptions ?? { base: defaultCertificateBasePath }) - const files = [keyPath, certPath] - // 执行证书生成 - const { cert, key } = await defineCertificate(...args) - - // 验证文件存在性 - files.forEach((file) => { - const filePath = resolve(file) - expect(existsSync(filePath), `${filePath} 文件未生成`).toBe(true) - }) - - // 验证证书基础格式 - const certContent = readFileSync(resolve(certPath), 'utf-8') - expect(certContent).toMatch(/-----BEGIN CERTIFICATE-----/) - expect(certContent).toMatch(/-----END CERTIFICATE-----/) - expect(certContent).toBe(cert) - - // 验证密钥基础格式 - const keyContent = readFileSync(resolve(keyPath), 'utf-8') - expect(keyContent).toMatch(/-----BEGIN RSA PRIVATE KEY-----/) - expect(keyContent).toMatch(/-----END RSA PRIVATE KEY-----/) - expect(keyContent).toBe(key) - - return { cert, key } -} - -export async function certificateByTLSCheck(...args: Parameters) { - vi.spyOn(logger, 'info') - vi.spyOn(logger, 'error') - // 调用被测函数 - verifyCertificateByTLS(...args) - const rejectUnauthorized = args[0].rejectUnauthorized - const host = args[0].host - const port = args[0].port - - // 等待异步操作完成,验证日志 - await vi.waitFor(() => { - try { - expect(logger.info).toHaveBeenCalledWith('证书有效') - } - catch { - try { - expect(logger.error).toHaveBeenCalledWith('Error: certificate has expired') - expect(rejectUnauthorized).toBeOneOf([undefined, true]) - } - catch { - expect(logger.error).toHaveBeenCalledWith(`Error: connect ECONNREFUSED ${host}:${port}`) - } - } - }) -} diff --git a/packages/mkcert/tests/unit/index.test.ts b/packages/mkcert/tests/unit/index.test.ts deleted file mode 100644 index faf65d5..0000000 --- a/packages/mkcert/tests/unit/index.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { createHash } from 'node:crypto' -import { readFileSync, rmSync } from 'node:fs' -import { resolve } from 'node:path' -import { afterEach, describe, expect, it } from 'vitest' -import { defineCertificate } from '../../src' -import { CACHE_PATH, mkcertCheck } from '../common' - -describe('证书生成校验', () => { - // 每次测试后清理生成的文件 - afterEach(() => { - rmSync(CACHE_PATH, { recursive: true, force: true }) - }) - - it('应生成完整的证书文件', async () => { - // 测试没有任何传参 - await mkcertCheck(undefined, { base: CACHE_PATH }) - - // 接上次测试,测试证书过期的表现 - await mkcertCheck({ validity: 0 }, { base: CACHE_PATH }) - - // 自定义路径 - const certPath = resolve(process.cwd(), 'a') - const keyPath = resolve(process.cwd(), 'b') - await mkcertCheck({ validity: 1, force: true }, { cert: certPath, key: keyPath }) // INFO: 第一次测试强制生成以及生成一个有效期为一天的证书 - await mkcertCheck({ validity: 0 }, { cert: certPath, key: keyPath }) // INFO: 接上次测试,有效证书则不再生成 - const newCertPath = resolve(CACHE_PATH, 'cert.pem') - await mkcertCheck({ validity: 0 }, { cert: newCertPath, key: keyPath }) // INFO: 接上次测试,选用不匹配的证书文件 - - rmSync(certPath, { recursive: true, force: true }) - rmSync(keyPath, { recursive: true, force: true }) - }) - - it('应生成有效 SHA256 指纹', async () => { - await defineCertificate( - { validity: 0, force: true }, - { base: CACHE_PATH }, - ) - - // 计算证书指纹 - const certBuffer = readFileSync(resolve(CACHE_PATH, 'cert.pem')) - const fingerprint = createHash('sha256') - .update(certBuffer) - .digest('hex') - .toUpperCase() - - // 验证指纹格式(示例正则) - expect(fingerprint).toMatch(/^[0-9A-F]{64}$/) - }) -}) diff --git a/packages/mkcert/tests/unit/verify.test.ts b/packages/mkcert/tests/unit/verify.test.ts deleted file mode 100644 index f3bc07e..0000000 --- a/packages/mkcert/tests/unit/verify.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import https from 'node:https' -import tls from 'node:tls' -import axios from 'axios' -import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from 'vitest' -import { verifyCertificateValidityByTLS } from '../../src' -import logger from '../../src/logger' -import { CACHE_PATH, certificateByTLSCheck, mkcertCheck } from '../common' - -describe('tLS 证书集成测试', async () => { - let server: https.Server | undefined - const serverOptions = { host: '127.0.0.1', port: 2333 } - const certOps = await mkcertCheck({ domains: serverOptions.host, validity: 0, force: true }, { base: CACHE_PATH }) - /** false 则时允许无效证书 */ - let rejectUnauthorized: boolean | undefined - - beforeAll(async () => { - // 启动 HTTPS 服务器 - server = https.createServer(certOps, (req, res) => { - res.writeHead(200) - res.write('hello, ') - res.end('world!') - }) - - // 使用 0 端口让系统自动分配可用端口 - serverOptions.port = await new Promise((resolve) => { - server?.listen(0, () => { - resolve((server?.address() as any).port) - }) - }) - const url = `https://${serverOptions.host}:${serverOptions.port}` - logger.info(`server running in: ${url}`) - - // 判断 server 是否启动 - const agent = new https.Agent({ - rejectUnauthorized, - }) - - await axios.get(url, { httpsAgent: agent }) - .then((res) => { - expect(res.data).toBe('hello, world!') - }) - .catch((error) => { - expect(rejectUnauthorized).toBeOneOf([undefined, true]) - expect(error.toString()).toBe('Error: certificate has expired') - }) - }) - - afterEach(async () => { - vi.restoreAllMocks() - }) - - afterAll((_done) => { - // 清理资源 - server?.close((_args) => { - logger.info(`server is over: https://${serverOptions.host}:${serverOptions.port}`) - }) - }) - - it('附带证书验证有效性', async () => { - const mockTlsConnect = vi.spyOn(tls, 'connect') - const mockCreateSecureContext = vi.spyOn(tls, 'createSecureContext') - - await certificateByTLSCheck({ ...serverOptions, ...certOps, rejectUnauthorized }) - - // 验证 TLS 配置 - expect(mockCreateSecureContext).toHaveBeenCalledWith(certOps) - // 验证连接参数 - expect(mockTlsConnect).toHaveBeenCalledWith({ - ...serverOptions, - rejectUnauthorized, - secureContext: mockCreateSecureContext.mock.results.at(-1)?.value, - }, expect.any(Function)) - }) - - it('绕过证书的情况', async () => { - rejectUnauthorized = false - await certificateByTLSCheck({ ...serverOptions, ...certOps, rejectUnauthorized }) - }) - - it('不带证书验证', async () => { - vi.spyOn(logger, 'info') - vi.spyOn(logger, 'warn') - vi.spyOn(logger, 'error') - rejectUnauthorized = false - verifyCertificateValidityByTLS({ ...serverOptions, rejectUnauthorized }) - await vi.waitFor(() => { - expect(logger.warn).toHaveBeenCalledWith('证书无效:不在有效期内') - }) - - rejectUnauthorized = true - verifyCertificateValidityByTLS({ ...serverOptions, rejectUnauthorized }) - await vi.waitFor(() => { - expect(logger.error).toHaveBeenCalledWith('Error: certificate has expired') - }) - }) -}) diff --git a/packages/mkcert/tsconfig.json b/packages/mkcert/tsconfig.json deleted file mode 100644 index b41a1d3..0000000 --- a/packages/mkcert/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/tsconfig/changelog.md b/packages/tsconfig/changelog.md deleted file mode 100644 index e40eae9..0000000 --- a/packages/tsconfig/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/tsconfig@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/tsconfig@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/tsconfig@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/tsconfig@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/tsconfig@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/tsconfig@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/tsconfig@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/tsconfig@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/tsconfig/package.json b/packages/tsconfig/package.json deleted file mode 100644 index e66432b..0000000 --- a/packages/tsconfig/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "@https-enable/tsconfig", - "version": "0.1.1", - "license": "MIT" -} diff --git a/packages/tsconfig/tsconfig.base.json b/packages/tsconfig/tsconfig.base.json deleted file mode 100644 index 43e70e0..0000000 --- a/packages/tsconfig/tsconfig.base.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "Default", - "compilerOptions": { - "target": "ESNext", - "baseUrl": ".", - "module": "ESNext", - "moduleResolution": "node", - "resolveJsonModule": true, - "strict": true, - "strictNullChecks": true, - "noImplicitAny": true, - "noUncheckedIndexedAccess": true, - "noEmit": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "skipDefaultLibCheck": true, - "skipLibCheck": true - }, - "exclude": ["node_modules"] -} diff --git a/packages/tsconfig/tsconfig.node.json b/packages/tsconfig/tsconfig.node.json deleted file mode 100644 index 0f07bf8..0000000 --- a/packages/tsconfig/tsconfig.node.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "NodeJS", - "extends": "./tsconfig.base.json", - "compilerOptions": { - "incremental": true, - "composite": true, - "lib": ["ESNext"], - "module": "CommonJS", - "declaration": true, - "declarationMap": true - } -} diff --git a/packages/tsconfig/tsconfig.web.json b/packages/tsconfig/tsconfig.web.json deleted file mode 100644 index 9523ae7..0000000 --- a/packages/tsconfig/tsconfig.web.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "display": "Web", - "extends": "./tsconfig.base.json", - "compilerOptions": { - "jsx": "preserve", - "lib": ["DOM", "DOM.Iterable", "ESNext"], - "allowJs": true - } -} diff --git a/packages/types/changelog.md b/packages/types/changelog.md deleted file mode 100644 index 35eca38..0000000 --- a/packages/types/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/types@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/types@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/types@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/types@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/types@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/types@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/types@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/types@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts deleted file mode 100644 index dd5cf31..0000000 --- a/packages/types/index.d.ts +++ /dev/null @@ -1,77 +0,0 @@ -export type Prettify = { - [K in keyof T]: T[K] -} & {} - -export type AsyncifyFunction any> = - T extends (...args: infer Args) => infer Return - ? (...args: Args) => Promise - : never - -// 处理重载函数(三重) -export type AsyncFunction = T extends { - (...args: infer A1): infer R1 - (...args: infer A2): infer R2 - (...args: infer A3): infer R3 -} - ? { - (...args: A1): Promise - (...args: A2): Promise - (...args: A3): Promise - } - : T extends (...args: any[]) => any - ? AsyncifyFunction - : never - -export type EnumToRecord = { - [K in keyof EnumType]: EnumType[K]; -} - -export type IsTuple = T extends readonly [any, ...any[]] ? true : false - -export type MapTuple> = { - [K in keyof T & `${number}` as T[K]]: K extends `${infer N extends number}` ? N : never; -} - -export type MapArray = { - [K in T]: number; -} - -export type PickElements< - T extends ReadonlyArray, - K extends string, -> = T extends readonly [infer First extends string, ...infer Rest extends ReadonlyArray] - ? First extends K - ? [First, ...PickElements] - : PickElements - : [] - -export type OmitElements< - T extends ReadonlyArray, - K extends string, -> = T extends readonly [infer First, ...infer Rest extends ReadonlyArray] - ? First extends K - ? OmitElements - : [First, ...OmitElements] - : [] - -export type Zip< - T extends ReadonlyArray, - V extends { [K in keyof T]: any }, -> = { - [K in keyof T & `${number}` as T[K]]: V[K] -} - -/** - * 将元组中的字面量转为大写 - */ -export type UppercaseUnion> = Uppercase - -/** - * 将指定 Key 变为可选 - */ -export type MakeOptional = Prettify & Partial>> - -/** - * 只将将指定 Key 变为必选 - */ -export type MakeOnlyRequired = Prettify & Partial>> diff --git a/packages/types/package.json b/packages/types/package.json deleted file mode 100644 index a21262e..0000000 --- a/packages/types/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "@https-enable/types", - "version": "0.1.1", - "license": "MIT" -} diff --git a/packages/utils/build.config.ts b/packages/utils/build.config.ts deleted file mode 100644 index 2d7b2f7..0000000 --- a/packages/utils/build.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: ['src/index'], - declaration: true, - clean: true, - rollup: { - emitCJS: true, - inlineDependencies: false, - }, - failOnWarn: false, - // 声明隐式外部依赖(消除构建时警告) - externals: [ - '@https-enable/types', - ], -}) diff --git a/packages/utils/changelog.md b/packages/utils/changelog.md deleted file mode 100644 index bbb4984..0000000 --- a/packages/utils/changelog.md +++ /dev/null @@ -1,175 +0,0 @@ -## @https-enable/utils@0.0.1-beta.9 - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 publish 使用 pnpm,并跳过 git 检查 - by @Vanisper (25bae47) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.9 - by @Vanisper (5537fe3) - -## @https-enable/utils@0.0.1-beta.8 - -### 🏡 Chore: 简修处理 - -- chore: release v0.0.1-beta.8 - by @Vanisper (d07a5db) - -## @https-enable/utils@0.0.1-beta.7 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 新增实现 publish 脚本 - by @Vanisper (4e3b1ac) -- feat: 🚀 添加 Changesets 配置文件和相应脚本 - by @Vanisper (9ff6fb0) -- feat(scripts): 🚀 新增 `resetChangelog` 工具函数的实现 - by @Vanisper (98c11a0) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.7 - by @Vanisper (7965195) -- chore(changelog): @https-enable/adapter-express@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (a542435) -- chore(changelog): @https-enable/utils@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (dded152) -- chore(changelog): @https-enable/types@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (465c7d4) -- chore(changelog): @https-enable/tsconfig@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (793b72d) -- chore(changelog): @https-enable/mkcert@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (f8bc8ea) -- chore(changelog): @https-enable/logger@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (c6e3ec8) -- chore(changelog): @https-enable/colors@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (88c5e79) -- chore(changelog): @https-enable/core@{0.0.1-beta.2..0.0.1-beta.6} - by @Vanisper (e2aa24b) - -## @https-enable/utils@0.0.1-beta.6 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 实现自动化更新日志生成 - by @Vanisper (1f744d1) - -### 🏡 Chore: 简修处理 - -- chore(changelog): @https-enable/adapter-express@0.0.1-beta.6 - by @Vanisper (ded906f) -- chore: 🏡 移除 Changesets 配置文件和相关脚本 - by @Vanisper (180bb02) - -### 🤖 CI: 持续集成 - -- ci: 🤖 新增一个测试工作流 - by @Vanisper (613b270) - -## @https-enable/utils@0.0.1-beta.5 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持新的标签格式 - by @Vanisper (9793afc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.5 - by @Vanisper (678ac0c) - -## @https-enable/utils@0.0.1-beta.4 - -### 🩹 Fixes: 缺陷修复 - -- fix(workflow): 🩹 更新 GitHub Actions 触发条件,以支持更精确的标签格式 - by @Vanisper (f814ac9) -- fix(workflow): 🩹 修正 GitHub Actions 触发条件,以支持带有斜杠的标签格式 - by @Vanisper (9856edc) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.4 - by @Vanisper (896961a) - -## @https-enable/utils@0.0.1-beta.3 - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.3 - by @Vanisper (71bd511) - -## @https-enable/utils@0.0.1-beta.2 - -### 🚀 Features: 新功能 - -- feat(scripts): 🚀 添加合并 commit 时自动合并相应 tags 的功能 - by @Vanisper (55e589e) -- feat(scripts): 🚀 添加 scripts 包及相关功能 - by @Vanisper (bf7b2d8) -- feat(adapter-express): 🚀 新增 Express 适配器 - by @Vanisper (7fc56e3) -- feat(core): 🚀 核心包新增证书管理器和 HTTPS 适配器抽象类,支持同端口 SSL 服务 - by @Vanisper (6a1c27e) -- feat(mkcert): 🚀 在 createCertificate 函数中新增缓存选项,优化证书保存逻辑 - by @Vanisper (1b0052f) -- feat(types): 🚀 新增类型工具,支持将指定 Key 变为可选或必选 - by @Vanisper (9714aff) -- feat(core): 🚀 新增 `@https-enable/core` 包的创建 - by @Vanisper (209d230) -- feat(mkcert): 🚀 在创建证书时支持强制生成选项 - by @Vanisper (ba08820) -- feat(utils): 🚀 更新 isNil 函数,支持检查空字符串 - by @Vanisper (e7ccd3b) -- feat(utils): 🚀 新增 isNil 函数,用于检查值是否为 undefined 或 null - by @Vanisper (987047e) -- feat(mkcert): 🚀 新增定义证书的函数,支持可选参数并添加警告日志 - by @Vanisper (d445ccc) -- feat(colors): 🚀 在 `index.ts` 中新增导出全量类型 - by @Vanisper (b32d00c) -- feat(colors): 🚀 新增 `@https-enable/colors`,实现 `ansi-color` 的基本功能 - by @Vanisper (4d4ee95) -- feat(mkcert): 🚀 新增 mkcert 包的构建配置和证书处理功能 - by @Vanisper (8087783) -- feat(logger): 🚀 在 `createLogFormat` 方法中新增可选标签参数 - by @Vanisper (ac429c8) -- feat(logger): 🚀 新增实现 `@https-enable/logger` 日志库 - by @Vanisper (d932c98) -- feat(types): 🚀 新增 `Zip` 和 `UppercaseUnion` 类型,增强元组和数组处理功能 - by @Vanisper (c9c3600) -- feat(types): 🚀 新增 `PickElements` 和 `OmitElements` 类型,增强数组元素选择/剔除功能 - by @Vanisper (3a97432) -- feat(utils): 🚀 新增 `strEnum` 和 `numEnum` 函数,增强枚举类型处理功能 - by @Vanisper (bd25d2e) -- feat(types): 🚀 新增类型定义 `EnumToRecord`、`IsTuple`、`MapTuple` 和 `MapArray`,增强类型系统 - by @Vanisper (25f97e2) -- feat(utils): 🚀 新增 `ColorStringRE` 正则表达式,用于匹配颜色字符串 - by @Vanisper (9974a50) -- feat(utils): 🚀 新增 `isStream` 工具函数及其选项接口,增强流对象检测功能 - by @Vanisper (b461577) -- feat(utils): 🚀 新增 `camelCase` 函数,实现串烧命名转小驼峰 - by @Vanisper (d1590a4) -- feat(utils): 🚀 拓展 `importGlob`,新增 as 参数的实现 - by @Vanisper (dfad88b) -- feat: 🚀 实现子包`@https-enable/types`;重构子包包名,更新相关导包路径 - by @Vanisper (3e85cd1) -- feat: 🚀 添加 utils 包,实现 importGlob 工具函数 - by @Vanisper (4dc1a8c) -- feat: 🚀 添加 mkcert 包,包含基本配置和 tsconfig 继承 - by @Vanisper (080768f) -- feat: 🚀 创建 `tsconfig` 项目,统一管理配置 tsconfig 基础配置 - by @Vanisper (c4e53f0) - -### 🩹 Fixes: 缺陷修复 - -- fix(scripts): 🩹 修复合并提交时标签添加逻辑,确保正确使用最后合并提交的哈希 - by @Vanisper (ebb6321) -- fix(scripts): 🩹 添加删除旧标签的功能,以保证合并提交 tags 时不留存旧的 tags - by @Vanisper (ca6b36a) -- fix(mkcert): 🩹 优化健全证书路径解析函数 - by @Vanisper (f8c395f) -- fix(core): 🩹 修改各class的私有属性为protected,以便于构建时生成类型标注 - by @Vanisper (a017029) -- fix(mkcert): 🩹 优化证书验证中的错误处理,简化逻辑 - by @Vanisper (544c3da) -- fix(mkcert): 🩹 修复证书保存路径日志输出,确保输出绝对路径 - by @Vanisper (f251287) -- fix(mkcert): 🩹 修复自定义证书缓存路径未正确读取的问题 - by @Vanisper (df484cc) -- fix(logger): 🩹 修复将常量变量在类型文件中定义的问题 - by @Vanisper (17b85e5) -- fix(logger): 🩹 修复类型导入,调整 `SimpleLevelTuple` 的导入方式 - by @Vanisper (d138658) -- fix(types): 🩹 更新 `MapTuple` 类型定义,使用 `ReadonlyArray` 替代 `readonly string[]` - by @Vanisper (edc41f0) -- fix(utils): 🩹 修复 `getCallerPath` 函数,确保在目标堆栈层级不存在时返回最后一行 - by @Vanisper (8c57dab) -- fix(utils): 🩹 更新 `callerId` 注释,明确调用方绝对路径的说明 - by @Vanisper (b090b76) -- fix(utils): 🩹 优化 `getCallerPath` 功能函数 - by @Vanisper (1d98177) - -### 📖 Documentation: 文档 - -- docs: 📖 更新readme - by @Vanisper (1e52023) -- docs: 📖 更新 README,更新待办任务状态 - by @Vanisper (f2031ef) -- docs(readme): 📖 更新功能实现列表 - by @Vanisper (03b6772) - -### 🏡 Chore: 简修处理 - -- chore: release @https-enable/adapter-express@0.0.1-beta.2 - by @Vanisper (2286304) -- chore: release v0.0.1-beta.1 - by @Vanisper (ffbd333) -- chore: 🏡 更新 utils 包的发布配置 - by @Vanisper (e238363) -- chore: 🏡 配置各包 private 的状态 - by @Vanisper (0fd3108) -- chore: 🏡 changesets 配置文件的 access 字段更新为 public - by @Vanisper (e13c7ef) -- chore: 🏡 提交 Changesets 配置文件 - by @Vanisper (9e18001) -- chore: 🏡 集成 `@changesets/cli` - by @Vanisper (d058f5e) -- chore(core): 🏡 移除对@https-enable/utils的依赖 - by @Vanisper (9af4649) -- chore: 🏡 新增npm包发布配置和文件字段;使用`bumpp`进行包版本号管理 - by @Vanisper (21f262b) -- chore(mkcert): 🏡 显式导出 mkcert/logger - by @Vanisper (e23006e) -- chore(mkcert): 🏡 提取默认证书基础路径为常量,简化证书路径处理 - by @Vanisper (7f5985d) -- chore(mkcert): 🏡 使用 isNil 函数简化有效性和域名检查逻辑 - by @Vanisper (ee228fd) -- chore(package): 🏡 在 `package.json` 中新增 `dev` 和 `build` 脚本指令 - by @Vanisper (690ba47) -- chore(logger): 🏡 将颜色依赖库从 `@colors/colors` 更新为 `@https-enable/colors`,完全自主实现 - by @Vanisper (366d884) -- chore(mkcert): 🏡 在构建配置中新增外部依赖 `@https-enable/types` - by @Vanisper (a6b9390) -- chore(workspace): 🏡 格式化文件,修复 `pnpm-workspace.yaml` 文件末尾缺少换行符 - by @Vanisper (0355171) -- chore(utils): 🏡 更新构建配置,新增外部依赖 `@https-enable/types` - by @Vanisper (3215a0e) -- chore(utils): 🏡 去除冗余代码 - by @Vanisper (022b1e1) -- chore: 🏡 修改 VSCode 设置,`organizeImports` 设置为 never - by @Vanisper (3a81a3e) -- chore: 🏡 更新 mkcert 包版本至 0.0.0 - by @Vanisper (dd665a7) -- chore: 🏡 添加清理依赖的脚本至 package.json - by @Vanisper (e1423d7) -- chore: 🏡 添加 tsconfig 依赖至根项目并更新根项目 tsconfig 配置,简化项目结构 - by @Vanisper (e888bad) -- chore: 🏡 添加基本的 pnpm 工作区配置 - by @Vanisper (746ba3e) -- chore: 🏡 重命名项目为 https-enable,并更新 README 以反映项目的功能实现与计划任务 - by @Vanisper (ab61721) - -### 🏀 Examples: 例子展示 - -- examples(express-demo): 🏀 新增 Express 示例 - by @Vanisper (74b8230) - -### ✅ Tests: 测试用例 - -- test(mkcert): ✅ 公用测试代码模块化整理,添加证书有效性校验测试用例 - by @Vanisper (c1a2f7e) -- test(mkcert): ✅ 重构证书生成测试,增强测试用例 - by @Vanisper (141e8b4) -- test: ✅ 集成 vitest,实现项目测试的能力;添加 `mkcert` 证书生成测试用例 - by @Vanisper (464495a) - -### 🤖 CI: 持续集成 - -- ci: 🤖 在测试工作流中添加构建所有项目的步骤 - by @Vanisper (735eb56) -- ci: 🤖 单元测试工作流更新依赖安装方式 - by @Vanisper (3402182) -- ci: 🤖 添加 GitHub Actions 工作流以部署测试覆盖率到 GitHub Pages - by @Vanisper (b7f63b1) diff --git a/packages/utils/dist/index.cjs.html b/packages/utils/dist/index.cjs.html new file mode 100644 index 0000000..53c255d --- /dev/null +++ b/packages/utils/dist/index.cjs.html @@ -0,0 +1,790 @@ + + + + + + Code coverage report for packages/utils/dist/index.cjs + + + + + + + + + +
+
+

All files / packages/utils/dist index.cjs

+
+ +
+ 0% + Statements + 0/226 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/226 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
'use strict';
+ 
+const process = require('node:process');
+const fs = require('node:fs');
+const path = require('node:path');
+const tinyglobby = require('tinyglobby');
+const lite = require('error-stack-parser-es/lite');
+const picomatch = require('picomatch');
+ 
+function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e.default : e; }
+ 
+const process__default = /*#__PURE__*/_interopDefaultCompat(process);
+const fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
+const path__default = /*#__PURE__*/_interopDefaultCompat(path);
+const picomatch__default = /*#__PURE__*/_interopDefaultCompat(picomatch);
+ 
+const isWindows = typeof process__default !== "undefined" && process__default.platform === "win32";
+function camelCase(name) {
+  return name.replace(/-(\w)/g, (_, c) => c.toUpperCase());
+}
+ 
+const WindowsSlashRE = /\\/g;
+const WindowsDiskRE = /^[a-z]?:(?:\/|\\\\)/i;
+const ColorStringRE = /\x1B[[(?);]{0,2}(;?\d)*./g;
+ 
+function slash(p) {
+  return p.replace(WindowsSlashRE, "/");
+}
+function normalizePath(id) {
+  return path__default.posix.normalize(isWindows ? slash(id) : id);
+}
+function getCommonBase(globsResolved) {
+  const bases = globsResolved.filter((g) => g[0] !== "!").map((glob) => {
+    let { base } = picomatch__default.scan(glob);
+    if (path__default.posix.basename(base).includes("."))
+      base = path__default.posix.dirname(base);
+    return base;
+  });
+  if (!bases.length)
+    return null;
+  let commonAncestor = "";
+  const dirS = bases[0].split("/");
+  for (let i = 0; i < dirS.length; i++) {
+    const candidate = dirS.slice(0, i + 1).join("/");
+    if (bases.every((base) => base.startsWith(candidate)))
+      commonAncestor = candidate;
+    else break;
+  }
+  if (!commonAncestor)
+    commonAncestor = "/";
+  return commonAncestor;
+}
+function parseAbsolute(pathStr) {
+  if (!pathStr)
+    return pathStr;
+  pathStr = slash(pathStr);
+  return isWindows && pathStr.startsWith("/") && pathStr.slice(1).match(WindowsDiskRE) ? pathStr.slice(1) : pathStr;
+}
+function getCallerPath(depth = 2) {
+  const error = new Error("get-caller-path");
+  const stacks = lite.parse(error);
+  const filesList = Array.from(new Set(stacks.map((i) => i.file || null)));
+  const linePattern = /^((?:file|https?):\/\/)?(?<file>.*?)(?::\d+)?(?::\d+)?$/;
+  const targetIndex = depth;
+  const targetLine = filesList[targetIndex] || filesList.at(-1);
+  const match = targetLine?.match(linePattern)?.groups?.file;
+  return parseAbsolute(match) || null;
+}
+ 
+const forceDefaultAs = ["raw", "url"];
+const allowImportExt = [".js", ".ts", ".mjs", ".mts", ".cjs", ".cts"];
+const importGlob = async function(pattern, options) {
+  const {
+    eager = false,
+    import: importName,
+    query,
+    as,
+    exhaustive = false,
+    // ProjectOptions
+    root: rootPath = process__default.cwd(),
+    callerId = getCallerPath(),
+    fallback = false
+  } = options || {};
+  if (!callerId) {
+    throw new Error("CallerId is null");
+  }
+  const id = slash(callerId);
+  const root = slash(rootPath);
+  const dir = path__default.dirname(id);
+  const patterns = Array.isArray(pattern) ? pattern : [pattern];
+  const globsResolved = patterns.map((glob) => toAbsoluteGlob(glob, root, id));
+  const cwd = getCommonBase(globsResolved) ?? root;
+  const isRelative = patterns.every((i) => ".!".includes(i[0] || ""));
+  const files = (await tinyglobby.glob(globsResolved, {
+    absolute: true,
+    cwd,
+    dot: exhaustive,
+    expandDirectories: false,
+    ignore: exhaustive ? [] : ["**/node_modules/**"]
+  })).filter((file) => file !== id).sort();
+  const resolvePaths = (file) => {
+    if (!dir) {
+      if (isRelative) {
+        throw new Error(
+          "In virtual modules, all globs must start with '/'"
+        );
+      }
+      const filePath2 = `/${path__default.relative(root, file)}`;
+      return { filePath: filePath2, importPath: filePath2 };
+    }
+    let importPath = path__default.relative(dir, file);
+    if (importPath[0] !== ".")
+      importPath = `./${importPath}`;
+    let filePath;
+    if (isRelative) {
+      filePath = importPath;
+    } else {
+      filePath = path__default.relative(root, file);
+      if (filePath[0] !== ".")
+        filePath = `/${filePath}`;
+    }
+    return { filePath, importPath };
+  };
+  const imports = {};
+  for (const file of files) {
+    const paths = resolvePaths(file);
+    const importPath = paths.importPath;
+    const importKey = importName && importName !== "*" ? importName : void 0;
+    const targetType = as && forceDefaultAs.includes(as) ? as : void 0;
+    try {
+      if (eager) {
+        const module = await dynamicImport(importPath, { dir, as });
+        imports[file] = importKey && !targetType ? module[importKey] : module;
+      } else {
+        imports[file] = async () => {
+          const module = await dynamicImport(importPath, { dir, as });
+          return importKey && !targetType ? module[importKey] : module;
+        };
+      }
+    } catch (error) {
+      const ext = path__default.extname(file);
+      if (fallback && ext && !allowImportExt.includes(ext)) {
+        imports[file] = fs__default.readFileSync(file, "utf-8");
+      } else {
+        throw error;
+      }
+    }
+  }
+  return imports;
+};
+async function dynamicImport(modulePath, options = {}) {
+  let targetPath = modulePath;
+  if (options.dir && !path__default.isAbsolute(modulePath) && path__default.isAbsolute(options.dir)) {
+    targetPath = path__default.join(options.dir, targetPath);
+  }
+  const targetType = options.as && forceDefaultAs.includes(options.as) ? options.as : void 0;
+  if (options.as && targetType) {
+    if (targetType === "url") {
+      return slash(targetPath);
+    } else if (targetType === "raw") {
+      return fs__default.readFileSync(targetPath, "utf-8");
+    }
+  }
+  return await import(targetPath);
+}
+function toAbsoluteGlob(glob, root, importer) {
+  let prefix = "";
+  if (glob.startsWith("!")) {
+    prefix = "!";
+    glob = glob.slice(1);
+  }
+  if (!glob) {
+    throw new Error("Glob pattern cannot be empty");
+  }
+  if (!path__default.isAbsolute(root)) {
+    throw new Error("Root path must be an absolute path");
+  }
+  if (glob.startsWith("**")) {
+    return prefix + glob;
+  }
+  const baseDir = importer ? globSafePath(path__default.dirname(importer)) : root;
+  if (glob.startsWith("/")) {
+    return prefix + path__default.posix.join(root, glob.slice(1));
+  } else if (glob.startsWith("./")) {
+    return prefix + path__default.posix.join(baseDir, glob.slice(2));
+  } else if (glob.startsWith("../")) {
+    return prefix + path__default.posix.join(baseDir, glob);
+  } else {
+    return prefix + path__default.posix.join(baseDir, glob);
+  }
+}
+function globSafePath(path2) {
+  return tinyglobby.escapePath(normalizePath(path2));
+}
+ 
+function isStream(stream, { checkOpen = true } = {}) {
+  return stream !== null && typeof stream === "object" && !!(stream.writable || stream.readable || !checkOpen || stream.writable === void 0 && stream.readable === void 0) && typeof stream.pipe === "function";
+}
+function strEnum(o) {
+  return o.reduce((res, key) => {
+    res[key] = key;
+    return res;
+  }, /* @__PURE__ */ Object.create(null));
+}
+function numEnum(arr) {
+  return arr.reduce((acc, key, index) => {
+    acc[key] = index;
+    return acc;
+  }, {});
+}
+function isNil(value, emptyStringCheck = false) {
+  const checkList = [void 0, null, ""];
+  if (emptyStringCheck !== true) {
+    checkList.pop();
+  }
+  return checkList.includes(value);
+}
+ 
+exports.ColorStringRE = ColorStringRE;
+exports.WindowsDiskRE = WindowsDiskRE;
+exports.WindowsSlashRE = WindowsSlashRE;
+exports.camelCase = camelCase;
+exports.getCallerPath = getCallerPath;
+exports.getCommonBase = getCommonBase;
+exports.globSafePath = globSafePath;
+exports.importGlob = importGlob;
+exports.isNil = isNil;
+exports.isStream = isStream;
+exports.isWindows = isWindows;
+exports.normalizePath = normalizePath;
+exports.numEnum = numEnum;
+exports.parseAbsolute = parseAbsolute;
+exports.slash = slash;
+exports.strEnum = strEnum;
+exports.toAbsoluteGlob = toAbsoluteGlob;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/dist/index.d.mts.html b/packages/utils/dist/index.d.mts.html new file mode 100644 index 0000000..47bab2c --- /dev/null +++ b/packages/utils/dist/index.d.mts.html @@ -0,0 +1,421 @@ + + + + + + Code coverage report for packages/utils/dist/index.d.mts + + + + + + + + + +
+
+

All files / packages/utils/dist index.d.mts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 1/1 +
+ + +
+ 0% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { MapArray, MapTuple } from '@https-enable/types';
+ 
+declare const isWindows: boolean;
+declare function camelCase(name: string): string;
+ 
+declare const WindowsSlashRE: RegExp;
+/**
+ * windows 盘符
+ * @description 匹配 `x:/` 或 `x:\\` 开头的文本
+ * @description 最好先将 windows下的路径转换为 posix 风格,否则由于字符串斜杠转义问题,可能会导致正则匹配失败
+ */
+declare const WindowsDiskRE: RegExp;
+declare const ColorStringRE: RegExp;
+ 
+interface ProjectOptions {
+  /**
+   * Project root directory. Can be an absolute path, or a path relative from
+   * the location of the config file itself.
+   * @default process.cwd()
+   */
+  root?: string
+  /**
+   * 由哪个文件导入,调用方的绝对路径
+   * @description 可选,如果不传则会自动获取
+   * @description 如要手动传递,则必须传入 `import.meta.url`
+   * @default undefined
+   */
+  callerId?: string
+  /**
+   * 兜底未知文件作为 raw 处理
+   */
+  fallback?: boolean
+}
+ 
+interface ImportGlobOptions<
+  Eager extends boolean,
+  AsType extends string,
+> {
+  /**
+   * Import type for the import url.
+   *
+   * @deprecated Use `query` instead, e.g. `as: 'url'` -> `query: '?url', import: 'default'`
+   */
+  as?: AsType
+  /**
+   * Import as static or dynamic
+   *
+   * @default false
+   */
+  eager?: Eager
+  /**
+   * Import only the specific named export. Set to `default` to import the default export.
+   */
+  import?: string
+  /**
+   * Custom queries
+   * @deprecated 暂时没有使用场景
+   */
+  query?: string | Record<string, string | number | boolean>
+  /**
+   * Search files also inside `node_modules/` and hidden directories (e.g. `.git/`). This might have impact on performance.
+   *
+   * @default false
+   */
+  exhaustive?: boolean
+}
+ 
+interface KnownAsTypeMap {
+  raw: string
+  url: string
+  worker: Worker
+}
+ 
+declare const importGlob: <Eager extends boolean, As extends keyof KnownAsTypeMap | string, T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown>(pattern: string | string[], options?: ImportGlobOptions<Eager, As> & ProjectOptions) => Promise<(Eager extends true ? true : false) extends true ? Record<string, T> : Record<string, () => Promise<T>>>;
+/**
+ * 将相对路径的 glob 模式转换为绝对路径的 glob 模式
+ * @param glob - glob 模式(可能包含相对路径或绝对路径)
+ * @param root - 根目录
+ * @param importer - 导入文件路径(可选)
+ * @returns 转换后的绝对路径 glob 模式
+ */
+declare function toAbsoluteGlob(glob: string, root: string, importer: string | undefined): string;
+declare function globSafePath(path: string): string;
+ 
+declare function slash(p: string): string;
+declare function normalizePath(id: string): string;
+declare function getCommonBase(globsResolved: string[]): null | string;
+/**
+ * 处理绝对路径
+ */
+declare function parseAbsolute(pathStr?: string | null): string | null | undefined;
+/**
+ * 获取调用方文件路径
+ */
+declare function getCallerPath(depth?: number): string | null;
+ 
+interface IsStreamOptions {
+    /**
+     * When this option is `true`, the method returns `false` if the stream has already been closed.
+     * @default true
+     */
+    checkOpen?: boolean;
+}
+declare function isStream(stream: any, { checkOpen }?: IsStreamOptions): boolean;
+declare function strEnum<T extends string>(o: Array<T>): {
+    [K in T]: K;
+};
+declare function numEnum<T extends string>(arr: Array<T>): MapArray<T>;
+declare function numEnum<const T extends readonly string[]>(arr: T): MapTuple<T>;
+declare function isNil(value?: any, emptyStringCheck?: boolean): boolean;
+ 
+export { ColorStringRE, type IsStreamOptions, WindowsDiskRE, WindowsSlashRE, camelCase, getCallerPath, getCommonBase, globSafePath, importGlob, isNil, isStream, isWindows, normalizePath, numEnum, parseAbsolute, slash, strEnum, toAbsoluteGlob };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/dist/index.html b/packages/utils/dist/index.html new file mode 100644 index 0000000..c2982a7 --- /dev/null +++ b/packages/utils/dist/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for packages/utils/dist + + + + + + + + + +
+
+

All files packages/utils/dist

+
+ +
+ 4.19% + Statements + 18/429 +
+ + +
+ 50% + Branches + 2/4 +
+ + +
+ 12.5% + Functions + 2/16 +
+ + +
+ 4.19% + Lines + 18/429 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.cjs +
+
0%0/2260%0/10%0/10%0/226
index.d.mts +
+
0%0/00%1/10%1/10%0/0
index.mjs +
+
8.86%18/20350%1/27.14%1/148.86%18/203
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/dist/index.mjs.html b/packages/utils/dist/index.mjs.html new file mode 100644 index 0000000..e04247c --- /dev/null +++ b/packages/utils/dist/index.mjs.html @@ -0,0 +1,715 @@ + + + + + + Code coverage report for packages/utils/dist/index.mjs + + + + + + + + + +
+
+

All files / packages/utils/dist index.mjs

+
+ +
+ 8.86% + Statements + 18/203 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 7.14% + Functions + 1/14 +
+ + +
+ 8.86% + Lines + 18/203 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +2111x +1x +1x +1x +1x +1x +  +1x +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +14x +14x +14x +  +  +14x +14x +  +  + 
import process from 'node:process';
+import fs from 'node:fs';
+import path from 'node:path';
+import { glob, escapePath } from 'tinyglobby';
+import { parse } from 'error-stack-parser-es/lite';
+import picomatch from 'picomatch';
+ 
+const isWindows = typeof process !== "undefined" && process.platform === "win32";
+function camelCase(name) {
+  return name.replace(/-(\w)/g, (_, c) => c.toUpperCase());
+}
+ 
+const WindowsSlashRE = /\\/g;
+const WindowsDiskRE = /^[a-z]?:(?:\/|\\\\)/i;
+const ColorStringRE = /\x1B[[(?);]{0,2}(;?\d)*./g;
+ 
+function slash(p) {
+  return p.replace(WindowsSlashRE, "/");
+}
+function normalizePath(id) {
+  return path.posix.normalize(isWindows ? slash(id) : id);
+}
+function getCommonBase(globsResolved) {
+  const bases = globsResolved.filter((g) => g[0] !== "!").map((glob) => {
+    let { base } = picomatch.scan(glob);
+    if (path.posix.basename(base).includes("."))
+      base = path.posix.dirname(base);
+    return base;
+  });
+  if (!bases.length)
+    return null;
+  let commonAncestor = "";
+  const dirS = bases[0].split("/");
+  for (let i = 0; i < dirS.length; i++) {
+    const candidate = dirS.slice(0, i + 1).join("/");
+    if (bases.every((base) => base.startsWith(candidate)))
+      commonAncestor = candidate;
+    else break;
+  }
+  if (!commonAncestor)
+    commonAncestor = "/";
+  return commonAncestor;
+}
+function parseAbsolute(pathStr) {
+  if (!pathStr)
+    return pathStr;
+  pathStr = slash(pathStr);
+  return isWindows && pathStr.startsWith("/") && pathStr.slice(1).match(WindowsDiskRE) ? pathStr.slice(1) : pathStr;
+}
+function getCallerPath(depth = 2) {
+  const error = new Error("get-caller-path");
+  const stacks = parse(error);
+  const filesList = Array.from(new Set(stacks.map((i) => i.file || null)));
+  const linePattern = /^((?:file|https?):\/\/)?(?<file>.*?)(?::\d+)?(?::\d+)?$/;
+  const targetIndex = depth;
+  const targetLine = filesList[targetIndex] || filesList.at(-1);
+  const match = targetLine?.match(linePattern)?.groups?.file;
+  return parseAbsolute(match) || null;
+}
+ 
+const forceDefaultAs = ["raw", "url"];
+const allowImportExt = [".js", ".ts", ".mjs", ".mts", ".cjs", ".cts"];
+const importGlob = async function(pattern, options) {
+  const {
+    eager = false,
+    import: importName,
+    query,
+    as,
+    exhaustive = false,
+    // ProjectOptions
+    root: rootPath = process.cwd(),
+    callerId = getCallerPath(),
+    fallback = false
+  } = options || {};
+  if (!callerId) {
+    throw new Error("CallerId is null");
+  }
+  const id = slash(callerId);
+  const root = slash(rootPath);
+  const dir = path.dirname(id);
+  const patterns = Array.isArray(pattern) ? pattern : [pattern];
+  const globsResolved = patterns.map((glob) => toAbsoluteGlob(glob, root, id));
+  const cwd = getCommonBase(globsResolved) ?? root;
+  const isRelative = patterns.every((i) => ".!".includes(i[0] || ""));
+  const files = (await glob(globsResolved, {
+    absolute: true,
+    cwd,
+    dot: exhaustive,
+    expandDirectories: false,
+    ignore: exhaustive ? [] : ["**/node_modules/**"]
+  })).filter((file) => file !== id).sort();
+  const resolvePaths = (file) => {
+    if (!dir) {
+      if (isRelative) {
+        throw new Error(
+          "In virtual modules, all globs must start with '/'"
+        );
+      }
+      const filePath2 = `/${path.relative(root, file)}`;
+      return { filePath: filePath2, importPath: filePath2 };
+    }
+    let importPath = path.relative(dir, file);
+    if (importPath[0] !== ".")
+      importPath = `./${importPath}`;
+    let filePath;
+    if (isRelative) {
+      filePath = importPath;
+    } else {
+      filePath = path.relative(root, file);
+      if (filePath[0] !== ".")
+        filePath = `/${filePath}`;
+    }
+    return { filePath, importPath };
+  };
+  const imports = {};
+  for (const file of files) {
+    const paths = resolvePaths(file);
+    const importPath = paths.importPath;
+    const importKey = importName && importName !== "*" ? importName : void 0;
+    const targetType = as && forceDefaultAs.includes(as) ? as : void 0;
+    try {
+      if (eager) {
+        const module = await dynamicImport(importPath, { dir, as });
+        imports[file] = importKey && !targetType ? module[importKey] : module;
+      } else {
+        imports[file] = async () => {
+          const module = await dynamicImport(importPath, { dir, as });
+          return importKey && !targetType ? module[importKey] : module;
+        };
+      }
+    } catch (error) {
+      const ext = path.extname(file);
+      if (fallback && ext && !allowImportExt.includes(ext)) {
+        imports[file] = fs.readFileSync(file, "utf-8");
+      } else {
+        throw error;
+      }
+    }
+  }
+  return imports;
+};
+async function dynamicImport(modulePath, options = {}) {
+  let targetPath = modulePath;
+  if (options.dir && !path.isAbsolute(modulePath) && path.isAbsolute(options.dir)) {
+    targetPath = path.join(options.dir, targetPath);
+  }
+  const targetType = options.as && forceDefaultAs.includes(options.as) ? options.as : void 0;
+  if (options.as && targetType) {
+    if (targetType === "url") {
+      return slash(targetPath);
+    } else if (targetType === "raw") {
+      return fs.readFileSync(targetPath, "utf-8");
+    }
+  }
+  return await import(targetPath);
+}
+function toAbsoluteGlob(glob, root, importer) {
+  let prefix = "";
+  if (glob.startsWith("!")) {
+    prefix = "!";
+    glob = glob.slice(1);
+  }
+  if (!glob) {
+    throw new Error("Glob pattern cannot be empty");
+  }
+  if (!path.isAbsolute(root)) {
+    throw new Error("Root path must be an absolute path");
+  }
+  if (glob.startsWith("**")) {
+    return prefix + glob;
+  }
+  const baseDir = importer ? globSafePath(path.dirname(importer)) : root;
+  if (glob.startsWith("/")) {
+    return prefix + path.posix.join(root, glob.slice(1));
+  } else if (glob.startsWith("./")) {
+    return prefix + path.posix.join(baseDir, glob.slice(2));
+  } else if (glob.startsWith("../")) {
+    return prefix + path.posix.join(baseDir, glob);
+  } else {
+    return prefix + path.posix.join(baseDir, glob);
+  }
+}
+function globSafePath(path2) {
+  return escapePath(normalizePath(path2));
+}
+ 
+function isStream(stream, { checkOpen = true } = {}) {
+  return stream !== null && typeof stream === "object" && !!(stream.writable || stream.readable || !checkOpen || stream.writable === void 0 && stream.readable === void 0) && typeof stream.pipe === "function";
+}
+function strEnum(o) {
+  return o.reduce((res, key) => {
+    res[key] = key;
+    return res;
+  }, /* @__PURE__ */ Object.create(null));
+}
+function numEnum(arr) {
+  return arr.reduce((acc, key, index) => {
+    acc[key] = index;
+    return acc;
+  }, {});
+}
+function isNil(value, emptyStringCheck = false) {
+  const checkList = [void 0, null, ""];
+  if (emptyStringCheck !== true) {
+    checkList.pop();
+  }
+  return checkList.includes(value);
+}
+ 
+export { ColorStringRE, WindowsDiskRE, WindowsSlashRE, camelCase, getCallerPath, getCommonBase, globSafePath, importGlob, isNil, isStream, isWindows, normalizePath, numEnum, parseAbsolute, slash, strEnum, toAbsoluteGlob };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/package.json b/packages/utils/package.json deleted file mode 100644 index e4823af..0000000 --- a/packages/utils/package.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "@https-enable/utils", - "version": "0.1.1", - "license": "MIT", - "exports": { - ".": { - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" - } - }, - "main": "dist/index.cjs", - "module": "dist/index.mjs", - "types": "dist/index.d.ts", - "files": [ - "dist" - ], - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "unbuild", - "dev": "unbuild --stub", - "prepublishOnly": "npm run build" - }, - "dependencies": { - "error-stack-parser-es": "^1.0.5", - "picomatch": "^4.0.2", - "tinyglobby": "^0.2.10" - }, - "devDependencies": { - "@https-enable/tsconfig": "workspace:*", - "@https-enable/types": "workspace:*", - "@types/node": "^22.13.1", - "@types/picomatch": "^3.0.2", - "unbuild": "^3.3.1" - } -} diff --git a/packages/utils/src/common.ts b/packages/utils/src/common.ts deleted file mode 100644 index 340e665..0000000 --- a/packages/utils/src/common.ts +++ /dev/null @@ -1,9 +0,0 @@ -import process from 'node:process' - -export const isWindows - = typeof process !== 'undefined' && process.platform === 'win32' - -// 串烧命名转小驼峰 -export function camelCase(name: string) { - return name.replace(/-(\w)/g, (_, c) => c.toUpperCase()) -} diff --git a/packages/utils/src/common.ts.html b/packages/utils/src/common.ts.html new file mode 100644 index 0000000..36f52f0 --- /dev/null +++ b/packages/utils/src/common.ts.html @@ -0,0 +1,112 @@ + + + + + + Code coverage report for packages/utils/src/common.ts + + + + + + + + + +
+
+

All files / packages/utils/src common.ts

+
+ +
+ 0% + Statements + 0/6 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10  +  +  +  +  +  +  +  +  + 
import process from 'node:process'
+ 
+export const isWindows
+  = typeof process !== 'undefined' && process.platform === 'win32'
+ 
+// 串烧命名转小驼峰
+export function camelCase(name: string) {
+  return name.replace(/-(\w)/g, (_, c) => c.toUpperCase())
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/src/constant.ts b/packages/utils/src/constant.ts deleted file mode 100644 index 5bb6189..0000000 --- a/packages/utils/src/constant.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const WindowsSlashRE = /\\/g - -/** - * windows 盘符 - * @description 匹配 `x:/` 或 `x:\\` 开头的文本 - * @description 最好先将 windows下的路径转换为 posix 风格,否则由于字符串斜杠转义问题,可能会导致正则匹配失败 - */ -export const WindowsDiskRE = /^[a-z]?:(?:\/|\\\\)/i - -// eslint-disable-next-line no-control-regex -export const ColorStringRE = /\x1B[[(?);]{0,2}(;?\d)*./g diff --git a/packages/utils/src/constant.ts.html b/packages/utils/src/constant.ts.html new file mode 100644 index 0000000..77739ef --- /dev/null +++ b/packages/utils/src/constant.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for packages/utils/src/constant.ts + + + + + + + + + +
+
+

All files / packages/utils/src constant.ts

+
+ +
+ 0% + Statements + 0/3 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12  +  +  +  +  +  +  +  +  +  +  + 
export const WindowsSlashRE = /\\/g
+ 
+/**
+ * windows 盘符
+ * @description 匹配 `x:/` 或 `x:\\` 开头的文本
+ * @description 最好先将 windows下的路径转换为 posix 风格,否则由于字符串斜杠转义问题,可能会导致正则匹配失败
+ */
+export const WindowsDiskRE = /^[a-z]?:(?:\/|\\\\)/i
+ 
+// eslint-disable-next-line no-control-regex
+export const ColorStringRE = /\x1B[[(?);]{0,2}(;?\d)*./g
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/src/glob.ts b/packages/utils/src/glob.ts deleted file mode 100644 index cb10fd7..0000000 --- a/packages/utils/src/glob.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* eslint-disable unused-imports/no-unused-vars */ -import type { ImportGlobOptions, KnownAsTypeMap, ProjectOptions } from '../types/importGlob' -import fs from 'node:fs' -import path from 'node:path' -import process from 'node:process' -import { escapePath, glob as globby } from 'tinyglobby' -import { getCallerPath, getCommonBase, normalizePath, slash } from './path' - -const forceDefaultAs = ['raw', 'url'] -const allowImportExt = ['.js', '.ts', '.mjs', '.mts', '.cjs', '.cts'] - -export const importGlob = async function< - Eager extends boolean, - As extends keyof KnownAsTypeMap | string, - T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown, ->(pattern: string | string[], options?: ImportGlobOptions & ProjectOptions) { - const { - eager = false, - import: importName, - query, - as, - exhaustive = false, - // ProjectOptions - root: rootPath = process.cwd(), - callerId = getCallerPath(), - fallback = false, - } = options || {} - - if (!callerId) { - throw new Error('CallerId is null') - } - - const id = slash(callerId) - const root = slash(rootPath) - const dir = path.dirname(id) - - const patterns = Array.isArray(pattern) ? pattern : [pattern] - const globsResolved = patterns.map(glob => toAbsoluteGlob(glob, root, id)) - const cwd = getCommonBase(globsResolved) ?? root - - const isRelative = patterns.every(i => '.!'.includes(i[0] || '')) - - // 1. 文件匹配 - const files = (await globby(globsResolved, { - absolute: true, - cwd, - dot: exhaustive, - expandDirectories: false, - ignore: exhaustive ? [] : ['**/node_modules/**'], - })).filter(file => file !== id).sort() - - // 2. 路径处理 - const resolvePaths = (file: string) => { - if (!dir) { - if (isRelative) { - throw new Error( - 'In virtual modules, all globs must start with \'/\'', - ) - } - const filePath = `/${path.relative(root, file)}` - return { filePath, importPath: filePath } - } - - let importPath = path.relative(dir, file) - - if (importPath[0] !== '.') - importPath = `./${importPath}` - - let filePath: string - if (isRelative) { - filePath = importPath - } - else { - filePath = path.relative(root, file) - if (filePath[0] !== '.') - filePath = `/${filePath}` - } - - return { filePath, importPath } - } - - // 3. 构建导入映射 - const imports: (Eager extends true ? true : false) extends true - ? Record - : Record Promise> = {} - - for (const file of files) { - const paths = resolvePaths(file) - const importPath = paths.importPath - - // TODO: 处理查询参数,暂时没有此场景 - // if (query && query !== '?raw') { - // const queryString = typeof query === 'string' - // ? query - // : new URLSearchParams(query as Record).toString() - - // importPath += `?${queryString}` - // } - - const importKey - = importName && importName !== '*' - ? importName - : undefined - - // 4. 处理不同导入模式 - const targetType = as && forceDefaultAs.includes(as) ? as : undefined - try { - if (eager) { - const module = await dynamicImport(importPath, { dir, as }) - imports[file] = importKey && !targetType - ? module[importKey] - : module - } - else { - imports[file] = async () => { - const module = await dynamicImport(importPath, { dir, as }) - return importKey && !targetType - ? module[importKey] - : module - } - } - } - catch (error) { - const ext = path.extname(file) - if (fallback && ext && !allowImportExt.includes(ext)) { - imports[file] = fs.readFileSync(file, 'utf-8') as unknown as T - } - else { - throw error - } - } - } - - return imports -} - -/** - * 动态导入函数 - * @param modulePath 函数导入路径 - * @param options - * @param options.dir 如果指定此参数,则将会与第一个参数拼接 - * @param options.as - */ -async function dynamicImport(modulePath: string, options: { dir?: string, as?: string } = {}) { - let targetPath = modulePath - if (options.dir && !path.isAbsolute(modulePath) && path.isAbsolute(options.dir)) { - targetPath = path.join(options.dir, targetPath) - } - - const targetType = options.as && forceDefaultAs.includes(options.as) ? options.as : undefined - if (options.as && targetType) { - if (targetType === 'url') { - return slash(targetPath) - } - else if (targetType === 'raw') { - return fs.readFileSync(targetPath, 'utf-8') - } - } - return await import(targetPath) -} - -/** - * 将相对路径的 glob 模式转换为绝对路径的 glob 模式 - * @param glob - glob 模式(可能包含相对路径或绝对路径) - * @param root - 根目录 - * @param importer - 导入文件路径(可选) - * @returns 转换后的绝对路径 glob 模式 - */ -export function toAbsoluteGlob( - glob: string, - root: string, - importer: string | undefined, -): string { - // 处理 glob 的前缀(如 '!') - let prefix = '' - if (glob.startsWith('!')) { - prefix = '!' - glob = glob.slice(1) - } - - // 检查 glob 是否为空 - if (!glob) { - throw new Error('Glob pattern cannot be empty') - } - - // 确保 root 是有效的绝对路径 - if (!path.isAbsolute(root)) { - throw new Error('Root path must be an absolute path') - } - - // 处理 glob 的特殊模式 - if (glob.startsWith('**')) { - return prefix + glob // 直接返回 glob,保留前缀 - } - - // 获取基准目录 - const baseDir = importer ? globSafePath(path.dirname(importer)) : root - - // 根据 glob 的开头字符决定如何解析路径 - if (glob.startsWith('/')) { - // 如果 glob 以 '/' 开头,基于 root 解析 - return prefix + path.posix.join(root, glob.slice(1)) - } - else if (glob.startsWith('./')) { - // 如果 glob 以 './' 开头,基于基准目录解析 - return prefix + path.posix.join(baseDir, glob.slice(2)) - } - else if (glob.startsWith('../')) { - // 如果 glob 以 '../' 开头,基于基准目录解析 - return prefix + path.posix.join(baseDir, glob) - } - else { - // 其他情况(如直接是文件名),基于基准目录解析 - return prefix + path.posix.join(baseDir, glob) - } -} - -export function globSafePath(path: string) { - // slash path to ensure \ is converted to / as \ could lead to a double escape scenario - return escapePath(normalizePath(path)) -} diff --git a/packages/utils/src/glob.ts.html b/packages/utils/src/glob.ts.html new file mode 100644 index 0000000..b98da8d --- /dev/null +++ b/packages/utils/src/glob.ts.html @@ -0,0 +1,748 @@ + + + + + + Code coverage report for packages/utils/src/glob.ts + + + + + + + + + +
+
+

All files / packages/utils/src glob.ts

+
+ +
+ 0% + Statements + 0/150 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/150 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable unused-imports/no-unused-vars */
+import type { ImportGlobOptions, KnownAsTypeMap, ProjectOptions } from '../types/importGlob'
+import fs from 'node:fs'
+import path from 'node:path'
+import process from 'node:process'
+import { escapePath, glob as globby } from 'tinyglobby'
+import { getCallerPath, getCommonBase, normalizePath, slash } from './path'
+ 
+const forceDefaultAs = ['raw', 'url']
+const allowImportExt = ['.js', '.ts', '.mjs', '.mts', '.cjs', '.cts']
+ 
+export const importGlob = async function<
+  Eager extends boolean,
+  As extends keyof KnownAsTypeMap | string,
+  T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown,
+>(pattern: string | string[], options?: ImportGlobOptions<Eager, As> & ProjectOptions) {
+  const {
+    eager = false,
+    import: importName,
+    query,
+    as,
+    exhaustive = false,
+    // ProjectOptions
+    root: rootPath = process.cwd(),
+    callerId = getCallerPath(),
+    fallback = false,
+  } = options || {}
+ 
+  if (!callerId) {
+    throw new Error('CallerId is null')
+  }
+ 
+  const id = slash(callerId)
+  const root = slash(rootPath)
+  const dir = path.dirname(id)
+ 
+  const patterns = Array.isArray(pattern) ? pattern : [pattern]
+  const globsResolved = patterns.map(glob => toAbsoluteGlob(glob, root, id))
+  const cwd = getCommonBase(globsResolved) ?? root
+ 
+  const isRelative = patterns.every(i => '.!'.includes(i[0] || ''))
+ 
+  // 1. 文件匹配
+  const files = (await globby(globsResolved, {
+    absolute: true,
+    cwd,
+    dot: exhaustive,
+    expandDirectories: false,
+    ignore: exhaustive ? [] : ['**/node_modules/**'],
+  })).filter(file => file !== id).sort()
+ 
+  // 2. 路径处理
+  const resolvePaths = (file: string) => {
+    if (!dir) {
+      if (isRelative) {
+        throw new Error(
+          'In virtual modules, all globs must start with \'/\'',
+        )
+      }
+      const filePath = `/${path.relative(root, file)}`
+      return { filePath, importPath: filePath }
+    }
+ 
+    let importPath = path.relative(dir, file)
+ 
+    if (importPath[0] !== '.')
+      importPath = `./${importPath}`
+ 
+    let filePath: string
+    if (isRelative) {
+      filePath = importPath
+    }
+    else {
+      filePath = path.relative(root, file)
+      if (filePath[0] !== '.')
+        filePath = `/${filePath}`
+    }
+ 
+    return { filePath, importPath }
+  }
+ 
+  // 3. 构建导入映射
+  const imports: (Eager extends true ? true : false) extends true
+    ? Record<string, T>
+    : Record<string, () => Promise<T>> = {}
+ 
+  for (const file of files) {
+    const paths = resolvePaths(file)
+    const importPath = paths.importPath
+ 
+    // TODO: 处理查询参数,暂时没有此场景
+    // if (query && query !== '?raw') {
+    //   const queryString = typeof query === 'string'
+    //     ? query
+    //     : new URLSearchParams(query as Record<string, string>).toString()
+ 
+    //   importPath += `?${queryString}`
+    // }
+ 
+    const importKey
+      = importName && importName !== '*'
+        ? importName
+        : undefined
+ 
+    // 4. 处理不同导入模式
+    const targetType = as && forceDefaultAs.includes(as) ? as : undefined
+    try {
+      if (eager) {
+        const module = await dynamicImport(importPath, { dir, as })
+        imports[file] = importKey && !targetType
+          ? module[importKey]
+          : module
+      }
+      else {
+        imports[file] = async () => {
+          const module = await dynamicImport(importPath, { dir, as })
+          return importKey && !targetType
+            ? module[importKey]
+            : module
+        }
+      }
+    }
+    catch (error) {
+      const ext = path.extname(file)
+      if (fallback && ext && !allowImportExt.includes(ext)) {
+        imports[file] = fs.readFileSync(file, 'utf-8') as unknown as T
+      }
+      else {
+        throw error
+      }
+    }
+  }
+ 
+  return imports
+}
+ 
+/**
+ * 动态导入函数
+ * @param modulePath 函数导入路径
+ * @param options
+ * @param options.dir 如果指定此参数,则将会与第一个参数拼接
+ * @param options.as
+ */
+async function dynamicImport(modulePath: string, options: { dir?: string, as?: string } = {}) {
+  let targetPath = modulePath
+  if (options.dir && !path.isAbsolute(modulePath) && path.isAbsolute(options.dir)) {
+    targetPath = path.join(options.dir, targetPath)
+  }
+ 
+  const targetType = options.as && forceDefaultAs.includes(options.as) ? options.as : undefined
+  if (options.as && targetType) {
+    if (targetType === 'url') {
+      return slash(targetPath)
+    }
+    else if (targetType === 'raw') {
+      return fs.readFileSync(targetPath, 'utf-8')
+    }
+  }
+  return await import(targetPath)
+}
+ 
+/**
+ * 将相对路径的 glob 模式转换为绝对路径的 glob 模式
+ * @param glob - glob 模式(可能包含相对路径或绝对路径)
+ * @param root - 根目录
+ * @param importer - 导入文件路径(可选)
+ * @returns 转换后的绝对路径 glob 模式
+ */
+export function toAbsoluteGlob(
+  glob: string,
+  root: string,
+  importer: string | undefined,
+): string {
+  // 处理 glob 的前缀(如 '!')
+  let prefix = ''
+  if (glob.startsWith('!')) {
+    prefix = '!'
+    glob = glob.slice(1)
+  }
+ 
+  // 检查 glob 是否为空
+  if (!glob) {
+    throw new Error('Glob pattern cannot be empty')
+  }
+ 
+  // 确保 root 是有效的绝对路径
+  if (!path.isAbsolute(root)) {
+    throw new Error('Root path must be an absolute path')
+  }
+ 
+  // 处理 glob 的特殊模式
+  if (glob.startsWith('**')) {
+    return prefix + glob // 直接返回 glob,保留前缀
+  }
+ 
+  // 获取基准目录
+  const baseDir = importer ? globSafePath(path.dirname(importer)) : root
+ 
+  // 根据 glob 的开头字符决定如何解析路径
+  if (glob.startsWith('/')) {
+    // 如果 glob 以 '/' 开头,基于 root 解析
+    return prefix + path.posix.join(root, glob.slice(1))
+  }
+  else if (glob.startsWith('./')) {
+    // 如果 glob 以 './' 开头,基于基准目录解析
+    return prefix + path.posix.join(baseDir, glob.slice(2))
+  }
+  else if (glob.startsWith('../')) {
+    // 如果 glob 以 '../' 开头,基于基准目录解析
+    return prefix + path.posix.join(baseDir, glob)
+  }
+  else {
+    // 其他情况(如直接是文件名),基于基准目录解析
+    return prefix + path.posix.join(baseDir, glob)
+  }
+}
+ 
+export function globSafePath(path: string) {
+  // slash path to ensure \ is converted to / as \ could lead to a double escape scenario
+  return escapePath(normalizePath(path))
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/src/index.html b/packages/utils/src/index.html new file mode 100644 index 0000000..a575867 --- /dev/null +++ b/packages/utils/src/index.html @@ -0,0 +1,191 @@ + + + + + + Code coverage report for packages/utils/src + + + + + + + + + +
+
+

All files packages/utils/src

+
+ +
+ 0% + Statements + 0/241 +
+ + +
+ 33.33% + Branches + 2/6 +
+ + +
+ 33.33% + Functions + 2/6 +
+ + +
+ 0% + Lines + 0/241 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
common.ts +
+
0%0/60%0/10%0/10%0/6
constant.ts +
+
0%0/30%0/10%0/10%0/3
glob.ts +
+
0%0/150100%1/1100%1/10%0/150
index.ts +
+
0%0/50%0/10%0/10%0/5
path.ts +
+
0%0/520%0/10%0/10%0/52
type.ts +
+
0%0/25100%1/1100%1/10%0/25
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts deleted file mode 100644 index 7488028..0000000 --- a/packages/utils/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './common' -export * from './constant' -export * from './glob' -export * from './path' -export * from './type' diff --git a/packages/utils/src/index.ts.html b/packages/utils/src/index.ts.html new file mode 100644 index 0000000..17721fa --- /dev/null +++ b/packages/utils/src/index.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for packages/utils/src/index.ts + + + + + + + + + +
+
+

All files / packages/utils/src index.ts

+
+ +
+ 0% + Statements + 0/5 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6  +  +  +  +  + 
export * from './common'
+export * from './constant'
+export * from './glob'
+export * from './path'
+export * from './type'
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/src/path.ts b/packages/utils/src/path.ts deleted file mode 100644 index 84ba6a0..0000000 --- a/packages/utils/src/path.ts +++ /dev/null @@ -1,96 +0,0 @@ -import path from 'node:path' -import { parse as errorParse } from 'error-stack-parser-es/lite' -import picomatch from 'picomatch' -import { isWindows } from './common' -import { WindowsDiskRE, WindowsSlashRE } from './constant' - -export function slash(p: string): string { - return p.replace(WindowsSlashRE, '/') -} - -export function normalizePath(id: string): string { - return path.posix.normalize(isWindows ? slash(id) : id) -} - -export function getCommonBase(globsResolved: string[]): null | string { - const bases = globsResolved - .filter(g => g[0] !== '!') - .map((glob) => { - let { base } = picomatch.scan(glob) - // `scan('a/foo.js')` returns `base: 'a/foo.js'` - if (path.posix.basename(base).includes('.')) - base = path.posix.dirname(base) - - return base - }) - - if (!bases.length) - return null - - let commonAncestor = '' - const dirS = bases[0]!.split('/') - for (let i = 0; i < dirS.length; i++) { - const candidate = dirS.slice(0, i + 1).join('/') - if (bases.every(base => base.startsWith(candidate))) - commonAncestor = candidate - else break - } - if (!commonAncestor) - commonAncestor = '/' - - return commonAncestor -} - -/** - * 处理绝对路径 - */ -export function parseAbsolute(pathStr?: string | null) { - if (!pathStr) - return pathStr - pathStr = slash(pathStr) - return isWindows && pathStr.startsWith('/') && pathStr.slice(1).match(WindowsDiskRE) - ? pathStr.slice(1) - : pathStr -} - -/** - * 获取调用方文件路径 - */ -export function getCallerPath(depth = 2) { - const error = new Error('get-caller-path') - const stacks = errorParse(error) - const filesList = Array.from(new Set(stacks.map(i => i.file || null))) - - /** - * 匹配 https,http,file 协议的路径,提取文件名,允许带行、列号 - * @description `^((?:file|https?):\/\/)?` 匹配协议 - * @description `(.*?)` 非贪婪匹配任意字符,直到遇到可选的冒号和数字(行号、列号) - * @description `(?.*?)` 可通过 `match.groups.file` 获取该分组的值 - * @description `(?::\d+)?(?::\d+)?` 匹配可选的 `:行号和:列号` 部分,最多两个 - */ - const linePattern = /^((?:file|https?):\/\/)?(?.*?)(?::\d+)?(?::\d+)?$/ - - // 目标堆栈层级 - const targetIndex = depth - const targetLine = filesList[targetIndex] || filesList.at(-1) - - const match = targetLine?.match(linePattern)?.groups?.file - - return parseAbsolute(match) || null - - // const stack = error.stack?.split('\n') || [] - - // // 根据环境选择解析策略 - // const isNode = typeof process !== 'undefined' && process.versions?.node - // const linePattern = isNode - // ? /\((?.*?):\d+:\d+\)/ - // // eslint-disable-next-line regexp/no-super-linear-backtracking - // : /(http|https|file):\/\/.*?\/(?[^:]+):\d+:\d+/ - - // // 动态计算目标堆栈层级(基础深度 + 调用层级) - // const targetIndex = 2 + depth - // const targetLine = stack[targetIndex] || '' - - // const match = targetLine.match(linePattern) - // return match?.groups?.file || null -} diff --git a/packages/utils/src/path.ts.html b/packages/utils/src/path.ts.html new file mode 100644 index 0000000..d4de8b6 --- /dev/null +++ b/packages/utils/src/path.ts.html @@ -0,0 +1,373 @@ + + + + + + Code coverage report for packages/utils/src/path.ts + + + + + + + + + +
+
+

All files / packages/utils/src path.ts

+
+ +
+ 0% + Statements + 0/52 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/52 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import path from 'node:path'
+import { parse as errorParse } from 'error-stack-parser-es/lite'
+import picomatch from 'picomatch'
+import { isWindows } from './common'
+import { WindowsDiskRE, WindowsSlashRE } from './constant'
+ 
+export function slash(p: string): string {
+  return p.replace(WindowsSlashRE, '/')
+}
+ 
+export function normalizePath(id: string): string {
+  return path.posix.normalize(isWindows ? slash(id) : id)
+}
+ 
+export function getCommonBase(globsResolved: string[]): null | string {
+  const bases = globsResolved
+    .filter(g => g[0] !== '!')
+    .map((glob) => {
+      let { base } = picomatch.scan(glob)
+      // `scan('a/foo.js')` returns `base: 'a/foo.js'`
+      if (path.posix.basename(base).includes('.'))
+        base = path.posix.dirname(base)
+ 
+      return base
+    })
+ 
+  if (!bases.length)
+    return null
+ 
+  let commonAncestor = ''
+  const dirS = bases[0]!.split('/')
+  for (let i = 0; i < dirS.length; i++) {
+    const candidate = dirS.slice(0, i + 1).join('/')
+    if (bases.every(base => base.startsWith(candidate)))
+      commonAncestor = candidate
+    else break
+  }
+  if (!commonAncestor)
+    commonAncestor = '/'
+ 
+  return commonAncestor
+}
+ 
+/**
+ * 处理绝对路径
+ */
+export function parseAbsolute(pathStr?: string | null) {
+  if (!pathStr)
+    return pathStr
+  pathStr = slash(pathStr)
+  return isWindows && pathStr.startsWith('/') && pathStr.slice(1).match(WindowsDiskRE)
+    ? pathStr.slice(1)
+    : pathStr
+}
+ 
+/**
+ * 获取调用方文件路径
+ */
+export function getCallerPath(depth = 2) {
+  const error = new Error('get-caller-path')
+  const stacks = errorParse(error)
+  const filesList = Array.from(new Set(stacks.map(i => i.file || null)))
+ 
+  /**
+   * 匹配 https,http,file 协议的路径,提取文件名,允许带行、列号
+   * @description `^((?:file|https?):\/\/)?` 匹配协议
+   * @description `(.*?)` 非贪婪匹配任意字符,直到遇到可选的冒号和数字(行号、列号)
+   * @description `(?<file>.*?)` 可通过 `match.groups.file` 获取该分组的值
+   * @description `(?::\d+)?(?::\d+)?` 匹配可选的 `:行号和:列号` 部分,最多两个
+   */
+  const linePattern = /^((?:file|https?):\/\/)?(?<file>.*?)(?::\d+)?(?::\d+)?$/
+ 
+  // 目标堆栈层级
+  const targetIndex = depth
+  const targetLine = filesList[targetIndex] || filesList.at(-1)
+ 
+  const match = targetLine?.match(linePattern)?.groups?.file
+ 
+  return parseAbsolute(match) || null
+ 
+  // const stack = error.stack?.split('\n') || []
+ 
+  // // 根据环境选择解析策略
+  // const isNode = typeof process !== 'undefined' && process.versions?.node
+  // const linePattern = isNode
+  //   ? /\((?<file>.*?):\d+:\d+\)/
+  //   // eslint-disable-next-line regexp/no-super-linear-backtracking
+  //   : /(http|https|file):\/\/.*?\/(?<file>[^:]+):\d+:\d+/
+ 
+  // // 动态计算目标堆栈层级(基础深度 + 调用层级)
+  // const targetIndex = 2 + depth
+  // const targetLine = stack[targetIndex] || ''
+ 
+  // const match = targetLine.match(linePattern)
+  // return match?.groups?.file || null
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/src/type.ts b/packages/utils/src/type.ts deleted file mode 100644 index 2bfc9ae..0000000 --- a/packages/utils/src/type.ts +++ /dev/null @@ -1,41 +0,0 @@ -import type { MapArray, MapTuple } from '@https-enable/types' - -export interface IsStreamOptions { - /** - * When this option is `true`, the method returns `false` if the stream has already been closed. - * @default true - */ - checkOpen?: boolean -} - -export function isStream(stream: any, { checkOpen = true }: IsStreamOptions = {}) { - return stream !== null - && typeof stream === 'object' - && !!(stream.writable || stream.readable || !checkOpen || (stream.writable === undefined && stream.readable === undefined)) - && typeof stream.pipe === 'function' -} - -export function strEnum(o: Array): { [K in T]: K } { - return o.reduce((res, key) => { - res[key] = key - return res - }, Object.create(null)) -} - -export function numEnum(arr: Array): MapArray -export function numEnum(arr: T): MapTuple -export function numEnum(arr: any[]): any { - return arr.reduce((acc, key, index) => { - acc[key] = index - return acc - }, {}) -} - -export function isNil(value?: any, emptyStringCheck = false) { - const checkList = [undefined, null, ''] - if (emptyStringCheck !== true) { - checkList.pop() - } - - return checkList.includes(value) -} diff --git a/packages/utils/src/type.ts.html b/packages/utils/src/type.ts.html new file mode 100644 index 0000000..27176c8 --- /dev/null +++ b/packages/utils/src/type.ts.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for packages/utils/src/type.ts + + + + + + + + + +
+
+

All files / packages/utils/src type.ts

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { MapArray, MapTuple } from '@https-enable/types'
+ 
+export interface IsStreamOptions {
+  /**
+   * When this option is `true`, the method returns `false` if the stream has already been closed.
+   * @default true
+   */
+  checkOpen?: boolean
+}
+ 
+export function isStream(stream: any, { checkOpen = true }: IsStreamOptions = {}) {
+  return stream !== null
+    && typeof stream === 'object'
+    && !!(stream.writable || stream.readable || !checkOpen || (stream.writable === undefined && stream.readable === undefined))
+    && typeof stream.pipe === 'function'
+}
+ 
+export function strEnum<T extends string>(o: Array<T>): { [K in T]: K } {
+  return o.reduce((res, key) => {
+    res[key] = key
+    return res
+  }, Object.create(null))
+}
+ 
+export function numEnum<T extends string>(arr: Array<T>): MapArray<T>
+export function numEnum<const T extends readonly string[]>(arr: T): MapTuple<T>
+export function numEnum(arr: any[]): any {
+  return arr.reduce((acc, key, index) => {
+    acc[key] = index
+    return acc
+  }, {})
+}
+ 
+export function isNil(value?: any, emptyStringCheck = false) {
+  const checkList = [undefined, null, '']
+  if (emptyStringCheck !== true) {
+    checkList.pop()
+  }
+ 
+  return checkList.includes(value)
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json deleted file mode 100644 index 75f1d72..0000000 --- a/packages/utils/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.node.json", - "compilerOptions": { - "incremental": false, - "composite": false, - "module": "ESNext", - "moduleResolution": "Bundler" - }, - "include": ["src/**/*.ts", "types/**/*.d.ts"], - "exclude": ["dist", "build", "node_modules"] -} diff --git a/packages/utils/types/importGlob.d.ts b/packages/utils/types/importGlob.d.ts deleted file mode 100644 index 26f9ea7..0000000 --- a/packages/utils/types/importGlob.d.ts +++ /dev/null @@ -1,98 +0,0 @@ -export interface ProjectOptions { - /** - * Project root directory. Can be an absolute path, or a path relative from - * the location of the config file itself. - * @default process.cwd() - */ - root?: string - /** - * 由哪个文件导入,调用方的绝对路径 - * @description 可选,如果不传则会自动获取 - * @description 如要手动传递,则必须传入 `import.meta.url` - * @default undefined - */ - callerId?: string - /** - * 兜底未知文件作为 raw 处理 - */ - fallback?: boolean -} - -export interface ImportGlobOptions< - Eager extends boolean, - AsType extends string, -> { - /** - * Import type for the import url. - * - * @deprecated Use `query` instead, e.g. `as: 'url'` -> `query: '?url', import: 'default'` - */ - as?: AsType - /** - * Import as static or dynamic - * - * @default false - */ - eager?: Eager - /** - * Import only the specific named export. Set to `default` to import the default export. - */ - import?: string - /** - * Custom queries - * @deprecated 暂时没有使用场景 - */ - query?: string | Record - /** - * Search files also inside `node_modules/` and hidden directories (e.g. `.git/`). This might have impact on performance. - * - * @default false - */ - exhaustive?: boolean -} - -type Eager = boolean -type AsType = string -export type GeneralImportGlobOptions = ImportGlobOptions - -export interface KnownAsTypeMap { - raw: string - url: string - worker: Worker -} - -export interface ImportGlobFunction { - /** - * Import a list of files with a glob pattern. - * - * Overload 1: No generic provided, infer the type from `eager` and `as` - */ - < - Eager extends boolean, - As extends string, - T = As extends keyof KnownAsTypeMap ? KnownAsTypeMap[As] : unknown, - >( - glob: string | string[], - options?: ImportGlobOptions & ProjectOptions, - ): (Eager extends true ? true : false) extends true - ? Record - : Record Promise> - /** - * Import a list of files with a glob pattern. - * - * Overload 2: Module generic provided, infer the type from `eager: false` - */ - ( - glob: string | string[], - options?: ImportGlobOptions & ProjectOptions, - ): Record Promise> - /** - * Import a list of files with a glob pattern. - * - * Overload 3: Module generic provided, infer the type from `eager: true` - */ - ( - glob: string | string[], - options: ImportGlobOptions & ProjectOptions, - ): Record -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 58d3b58..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,12937 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@antfu/eslint-config': - specifier: ^4.1.1 - version: 4.3.0(@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(@vue/compiler-sfc@3.5.13)(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) - '@commitlint/cli': - specifier: ^19.7.1 - version: 19.7.1(@types/node@22.13.8)(typescript@5.7.3) - '@commitlint/config-conventional': - specifier: ^19.7.1 - version: 19.7.1 - '@https-enable/tsconfig': - specifier: workspace:* - version: link:packages/tsconfig - '@vitest/coverage-v8': - specifier: ^3.0.6 - version: 3.0.7(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) - axios: - specifier: ^1.7.9 - version: 1.8.1 - bumpp: - specifier: ^10.0.3 - version: 10.0.3(magicast@0.3.5) - commitizen: - specifier: ^4.3.1 - version: 4.3.1(@types/node@22.13.8)(typescript@5.7.3) - cz-git: - specifier: ^1.11.0 - version: 1.11.0 - eslint: - specifier: ^9.20.0 - version: 9.21.0(jiti@2.4.2) - jiti: - specifier: ^2.4.2 - version: 2.4.2 - lefthook: - specifier: ^1.10.10 - version: 1.11.2 - rimraf: - specifier: ^6.0.1 - version: 6.0.1 - tsx: - specifier: ^4.19.3 - version: 4.19.3 - typescript: - specifier: 5.7.3 - version: 5.7.3 - vitest: - specifier: ^3.0.6 - version: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - - examples/express: - dependencies: - '@https-enable/adapter-express': - specifier: workspace:* - version: link:../../packages/adapters/express - '@https-enable/core': - specifier: workspace:* - version: link:../../packages/core - express: - specifier: ^4.21.2 - version: 4.21.2 - - examples/fastify: - dependencies: - '@https-enable/adapter-fastify': - specifier: workspace:* - version: link:../../packages/adapters/fastify - '@https-enable/core': - specifier: workspace:* - version: link:../../packages/core - fastify: - specifier: ^5.2.1 - version: 5.2.1 - - examples/koa: - dependencies: - '@https-enable/adapter-koa': - specifier: workspace:* - version: link:../../packages/adapters/koa - '@https-enable/core': - specifier: workspace:* - version: link:../../packages/core - koa: - specifier: ^2.16.0 - version: 2.16.0 - devDependencies: - '@types/koa': - specifier: ^2.15.0 - version: 2.15.0 - - examples/nestjs: - dependencies: - '@https-enable/adapter-nestjs': - specifier: workspace:* - version: link:../../packages/adapters/nestjs - '@https-enable/core': - specifier: workspace:* - version: link:../../packages/core - '@nestjs/common': - specifier: 11.0.1 - version: 11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': - specifier: 11.0.1 - version: 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/platform-express': - specifier: 11.0.1 - version: 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1) - '@nestjs/platform-fastify': - specifier: 11.0.1 - version: 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1) - reflect-metadata: - specifier: ^0.2.2 - version: 0.2.2 - rxjs: - specifier: ^7.8.1 - version: 7.8.2 - devDependencies: - '@eslint/eslintrc': - specifier: ^3.2.0 - version: 3.3.0 - '@eslint/js': - specifier: ^9.18.0 - version: 9.21.0 - '@nestjs/cli': - specifier: ^11.0.1 - version: 11.0.5(@swc/cli@0.6.0(@swc/core@1.11.5)(chokidar@4.0.3))(@swc/core@1.11.5)(@types/node@22.13.8) - '@nestjs/schematics': - specifier: ^11.0.1 - version: 11.0.1(chokidar@4.0.3)(typescript@5.7.3) - '@nestjs/testing': - specifier: ^11.0.1 - version: 11.0.11(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1)(@nestjs/platform-express@11.0.1) - '@swc/cli': - specifier: ^0.6.0 - version: 0.6.0(@swc/core@1.11.5)(chokidar@4.0.3) - '@swc/core': - specifier: ^1.10.7 - version: 1.11.5 - '@types/express': - specifier: ^5.0.0 - version: 5.0.0 - '@types/jest': - specifier: ^29.5.14 - version: 29.5.14 - '@types/node': - specifier: ^22.10.7 - version: 22.13.8 - '@types/supertest': - specifier: ^6.0.2 - version: 6.0.2 - eslint: - specifier: ^9.18.0 - version: 9.21.0(jiti@2.4.2) - eslint-config-prettier: - specifier: ^10.0.1 - version: 10.0.2(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-prettier: - specifier: ^5.2.2 - version: 5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(prettier@3.5.2) - globals: - specifier: ^15.14.0 - version: 15.15.0 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - prettier: - specifier: ^3.4.2 - version: 3.5.2 - source-map-support: - specifier: ^0.5.21 - version: 0.5.21 - supertest: - specifier: ^7.0.0 - version: 7.0.0 - ts-jest: - specifier: ^29.2.5 - version: 29.2.6(@babel/core@7.26.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.9))(jest@29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)))(typescript@5.7.3) - ts-loader: - specifier: ^9.5.2 - version: 9.5.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.11.5)) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3) - tsconfig-paths: - specifier: ^4.2.0 - version: 4.2.0 - typescript: - specifier: ^5.7.3 - version: 5.7.3 - typescript-eslint: - specifier: ^8.20.0 - version: 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - - packages/adapters/express: - dependencies: - '@https-enable/core': - specifier: workspace:* - version: link:../../core - '@https-enable/mkcert': - specifier: workspace:* - version: link:../../mkcert - express: - specifier: '*' - version: 4.21.2 - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../../types - '@types/express': - specifier: ^5.0.0 - version: 5.0.0 - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/adapters/fastify: - dependencies: - '@https-enable/core': - specifier: workspace:* - version: link:../../core - '@https-enable/mkcert': - specifier: workspace:* - version: link:../../mkcert - fastify: - specifier: '*' - version: 5.2.1 - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../../types - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/adapters/koa: - dependencies: - '@https-enable/core': - specifier: workspace:* - version: link:../../core - '@https-enable/mkcert': - specifier: workspace:* - version: link:../../mkcert - koa: - specifier: '*' - version: 2.16.0 - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../../types - '@types/koa': - specifier: ^2.15.0 - version: 2.15.0 - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/adapters/nestjs: - dependencies: - '@https-enable/core': - specifier: workspace:* - version: link:../../core - '@https-enable/mkcert': - specifier: workspace:* - version: link:../../mkcert - '@nestjs/common': - specifier: '*' - version: 11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': - specifier: '*' - version: 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/platform-express': - specifier: '*' - version: 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1) - '@nestjs/platform-fastify': - specifier: '*' - version: 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1) - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../../types - '@types/express': - specifier: ^5.0.0 - version: 5.0.0 - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/colors: - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../types - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/core: - dependencies: - '@https-enable/logger': - specifier: workspace:* - version: link:../logger - '@https-enable/mkcert': - specifier: workspace:* - version: link:../mkcert - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../types - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/logger: - dependencies: - '@https-enable/colors': - specifier: workspace:* - version: link:../colors - '@https-enable/utils': - specifier: workspace:* - version: link:../utils - fecha: - specifier: ^4.2.3 - version: 4.2.3 - ms: - specifier: ^2.1.3 - version: 2.1.3 - safe-stable-stringify: - specifier: ^2.5.0 - version: 2.5.0 - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../types - '@types/ms': - specifier: ^2.1.0 - version: 2.1.0 - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/mkcert: - dependencies: - '@https-enable/logger': - specifier: workspace:* - version: link:../logger - '@https-enable/utils': - specifier: workspace:* - version: link:../utils - dayjs: - specifier: ^1.11.13 - version: 1.11.13 - mkcert: - specifier: ^3.2.0 - version: 3.2.0 - node-forge: - specifier: ^1.3.1 - version: 1.3.1 - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../types - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - '@types/node-forge': - specifier: ^1.3.11 - version: 1.3.11 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - - packages/tsconfig: {} - - packages/types: {} - - packages/utils: - dependencies: - error-stack-parser-es: - specifier: ^1.0.5 - version: 1.0.5 - picomatch: - specifier: ^4.0.2 - version: 4.0.2 - tinyglobby: - specifier: ^0.2.10 - version: 0.2.12 - devDependencies: - '@https-enable/tsconfig': - specifier: workspace:* - version: link:../tsconfig - '@https-enable/types': - specifier: workspace:* - version: link:../types - '@types/node': - specifier: ^22.13.1 - version: 22.13.8 - '@types/picomatch': - specifier: ^3.0.2 - version: 3.0.2 - unbuild: - specifier: ^3.3.1 - version: 3.5.0(typescript@5.7.3) - -packages: - - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - - '@angular-devkit/core@19.1.7': - resolution: {integrity: sha512-q0I6L9KTqyQ7D5M8H+fWLT+yjapvMNb7SRdfU6GzmexO66Dpo83q4HDzuDKIPDF29Yl0ELs9ICJqe9yUXh6yDQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^4.0.0 - peerDependenciesMeta: - chokidar: - optional: true - - '@angular-devkit/core@19.1.8': - resolution: {integrity: sha512-j1zHKvOsGwu5YwAZGuzi835R9vcW7PkfxmSRIJeVl+vawgk31K3zFb4UPH8AY/NPWYqXIAnwpka3HC1+JrWLWA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^4.0.0 - peerDependenciesMeta: - chokidar: - optional: true - - '@angular-devkit/schematics-cli@19.1.8': - resolution: {integrity: sha512-sHblN9EuiJgKwJVYc+nhpU+GlVkAJHJc7lBR8YSoaugNGcCMkWn4f7rJnJDywL/CEOHBICnyWZKfTCMsMyg1Cw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - hasBin: true - - '@angular-devkit/schematics@19.1.7': - resolution: {integrity: sha512-AP6FvhMybCYs3gs+vzEAzSU1K//AFT3SVTRFv+C3WMO5dLeAHeGzM8I2dxD5EHQQtqIE/8apP6CxGrnpA5YlFg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - - '@angular-devkit/schematics@19.1.8': - resolution: {integrity: sha512-2JGUMD3zjfY8G4RYpypm2/1YEO+O4DtFycUvptIpsBYyULgnEbJ3tlp2oRiXI2vp9tC8IyWqa/swlA8DTI6ZYQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - - '@antfu/eslint-config@4.3.0': - resolution: {integrity: sha512-x6jcUSkscXb63xEM8JekZlDALtsVETxSc19pu+DuEZjx4iv0J8gThRDMPsIolceTeSnyh9bfW4dlAGcfu2NLzg==} - hasBin: true - peerDependencies: - '@eslint-react/eslint-plugin': ^1.19.0 - '@prettier/plugin-xml': ^3.4.1 - '@unocss/eslint-plugin': '>=0.50.0' - astro-eslint-parser: ^1.0.2 - eslint: ^9.10.0 - eslint-plugin-astro: ^1.2.0 - eslint-plugin-format: '>=0.1.0' - eslint-plugin-react-hooks: ^5.0.0 - eslint-plugin-react-refresh: ^0.4.4 - eslint-plugin-solid: ^0.14.3 - eslint-plugin-svelte: '>=2.35.1' - prettier-plugin-astro: ^0.14.0 - prettier-plugin-slidev: ^1.0.5 - svelte-eslint-parser: '>=0.37.0' - peerDependenciesMeta: - '@eslint-react/eslint-plugin': - optional: true - '@prettier/plugin-xml': - optional: true - '@unocss/eslint-plugin': - optional: true - astro-eslint-parser: - optional: true - eslint-plugin-astro: - optional: true - eslint-plugin-format: - optional: true - eslint-plugin-react-hooks: - optional: true - eslint-plugin-react-refresh: - optional: true - eslint-plugin-solid: - optional: true - eslint-plugin-svelte: - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-slidev: - optional: true - svelte-eslint-parser: - optional: true - - '@antfu/install-pkg@1.0.0': - resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} - - '@babel/code-frame@7.26.2': - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.9': - resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.26.9': - resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.26.5': - resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.9': - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.9': - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.26.9': - resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.26.9': - resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.26.9': - resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.26.9': - resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.26.9': - resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} - engines: {node: '>=6.9.0'} - - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - - '@bcoe/v8-coverage@1.0.2': - resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} - engines: {node: '>=18'} - - '@clack/core@0.4.1': - resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} - - '@clack/prompts@0.10.0': - resolution: {integrity: sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==} - - '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - - '@commitlint/cli@19.7.1': - resolution: {integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==} - engines: {node: '>=v18'} - hasBin: true - - '@commitlint/config-conventional@19.7.1': - resolution: {integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==} - engines: {node: '>=v18'} - - '@commitlint/config-validator@19.5.0': - resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} - engines: {node: '>=v18'} - - '@commitlint/ensure@19.5.0': - resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} - engines: {node: '>=v18'} - - '@commitlint/execute-rule@19.5.0': - resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} - engines: {node: '>=v18'} - - '@commitlint/format@19.5.0': - resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} - engines: {node: '>=v18'} - - '@commitlint/is-ignored@19.7.1': - resolution: {integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==} - engines: {node: '>=v18'} - - '@commitlint/lint@19.7.1': - resolution: {integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==} - engines: {node: '>=v18'} - - '@commitlint/load@19.6.1': - resolution: {integrity: sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==} - engines: {node: '>=v18'} - - '@commitlint/message@19.5.0': - resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} - engines: {node: '>=v18'} - - '@commitlint/parse@19.5.0': - resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} - engines: {node: '>=v18'} - - '@commitlint/read@19.5.0': - resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} - engines: {node: '>=v18'} - - '@commitlint/resolve-extends@19.5.0': - resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} - engines: {node: '>=v18'} - - '@commitlint/rules@19.6.0': - resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==} - engines: {node: '>=v18'} - - '@commitlint/to-lines@19.5.0': - resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} - engines: {node: '>=v18'} - - '@commitlint/top-level@19.5.0': - resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} - engines: {node: '>=v18'} - - '@commitlint/types@19.5.0': - resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} - engines: {node: '>=v18'} - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@es-joy/jsdoccomment@0.49.0': - resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} - engines: {node: '>=16'} - - '@es-joy/jsdoccomment@0.50.0': - resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} - engines: {node: '>=18'} - - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.25.0': - resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.25.0': - resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.25.0': - resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.25.0': - resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.25.0': - resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.0': - resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.25.0': - resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.0': - resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.25.0': - resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.25.0': - resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.25.0': - resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.25.0': - resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.25.0': - resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.25.0': - resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.0': - resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.25.0': - resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.25.0': - resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-arm64@0.25.0': - resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.0': - resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.25.0': - resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.0': - resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.25.0': - resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.25.0': - resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.25.0': - resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.25.0': - resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-plugin-eslint-comments@4.4.1': - resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/compat@1.2.7': - resolution: {integrity: sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.10.0 - peerDependenciesMeta: - eslint: - optional: true - - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.10.0': - resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.0': - resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.21.0': - resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/markdown@6.2.2': - resolution: {integrity: sha512-U0/KgzI9BVUuHDQ9M2fuVgB0QZ1fSyzwm8jKmHr1dlsLHGHYzoeIA9yqLMdTbV3ivZfp6rTdt6zqre3TfNExUQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.7': - resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@fastify/ajv-compiler@4.0.2': - resolution: {integrity: sha512-Rkiu/8wIjpsf46Rr+Fitd3HRP+VsxUFDDeag0hs9L0ksfnwx2g7SPQQTFL0E8Qv+rfXzQOxBJnjUB9ITUDjfWQ==} - - '@fastify/cors@10.0.2': - resolution: {integrity: sha512-DGdxOG36sS/tZv1NFiCJGi7wGuXOSPL2CmNX5PbOVKx0C6LuIALRMrqLByHTCcX1Rbl8NJ9IWlJex32bzydvlw==} - - '@fastify/error@4.0.0': - resolution: {integrity: sha512-OO/SA8As24JtT1usTUTKgGH7uLvhfwZPwlptRi2Dp5P4KKmJI3gvsZ8MIHnNwDs4sLf/aai5LzTyl66xr7qMxA==} - - '@fastify/fast-json-stringify-compiler@5.0.2': - resolution: {integrity: sha512-YdR7gqlLg1xZAQa+SX4sMNzQHY5pC54fu9oC5aYSUqBhyn6fkLkrdtKlpVdCNPlwuUuXA1PjFTEmvMF6ZVXVGw==} - - '@fastify/formbody@8.0.2': - resolution: {integrity: sha512-84v5J2KrkXzjgBpYnaNRPqwgMsmY7ZDjuj0YVuMR3NXCJRCgKEZy/taSP1wUYGn0onfxJpLyRGDLa+NMaDJtnA==} - - '@fastify/forwarded@3.0.0': - resolution: {integrity: sha512-kJExsp4JCms7ipzg7SJ3y8DwmePaELHxKYtg+tZow+k0znUTf3cb+npgyqm8+ATZOdmfgfydIebPDWM172wfyA==} - - '@fastify/merge-json-schemas@0.2.1': - resolution: {integrity: sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==} - - '@fastify/middie@9.0.3': - resolution: {integrity: sha512-7OYovKXp9UKYeVMcjcFLMcSpoMkmcZmfnG+eAvtdiatN35W7c+r9y1dRfpA+pfFVNuHGGqI3W+vDTmjvcfLcMA==} - - '@fastify/proxy-addr@5.0.0': - resolution: {integrity: sha512-37qVVA1qZ5sgH7KpHkkC4z9SK6StIsIcOmpjvMPXNb3vx2GQxhZocogVYbr2PbbeLCQxYIPDok307xEvRZOzGA==} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} - engines: {node: '>=18.18'} - - '@inquirer/checkbox@4.1.2': - resolution: {integrity: sha512-PL9ixC5YsPXzXhAZFUPmkXGxfgjkdfZdPEPPmt4kFwQ4LBMDG9n/nHXYRGGZSKZJs+d1sGKWgS2GiPzVRKUdtQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/confirm@5.1.6': - resolution: {integrity: sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/core@10.1.7': - resolution: {integrity: sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/editor@4.2.7': - resolution: {integrity: sha512-gktCSQtnSZHaBytkJKMKEuswSk2cDBuXX5rxGFv306mwHfBPjg5UAldw9zWGoEyvA9KpRDkeM4jfrx0rXn0GyA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/expand@4.0.9': - resolution: {integrity: sha512-Xxt6nhomWTAmuSX61kVgglLjMEFGa+7+F6UUtdEUeg7fg4r9vaFttUUKrtkViYYrQBA5Ia1tkOJj2koP9BuLig==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/figures@1.0.10': - resolution: {integrity: sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==} - engines: {node: '>=18'} - - '@inquirer/input@4.1.6': - resolution: {integrity: sha512-1f5AIsZuVjPT4ecA8AwaxDFNHny/tSershP/cTvTDxLdiIGTeILNcKozB0LaYt6mojJLUbOYhpIxicaYf7UKIQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/number@3.0.9': - resolution: {integrity: sha512-iN2xZvH3tyIYXLXBvlVh0npk1q/aVuKXZo5hj+K3W3D4ngAEq/DkLpofRzx6oebTUhBvOgryZ+rMV0yImKnG3w==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/password@4.0.9': - resolution: {integrity: sha512-xBEoOw1XKb0rIN208YU7wM7oJEHhIYkfG7LpTJAEW913GZeaoQerzf5U/LSHI45EVvjAdgNXmXgH51cUXKZcJQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/prompts@7.2.1': - resolution: {integrity: sha512-v2JSGri6/HXSfoGIwuKEn8sNCQK6nsB2BNpy2lSX6QH9bsECrMv93QHnj5+f+1ZWpF/VNioIV2B/PDox8EvGuQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - - '@inquirer/prompts@7.3.2': - resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/rawlist@4.0.9': - resolution: {integrity: sha512-+5t6ebehKqgoxV8fXwE49HkSF2Rc9ijNiVGEQZwvbMI61/Q5RcD+jWD6Gs1tKdz5lkI8GRBL31iO0HjGK1bv+A==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/search@3.0.9': - resolution: {integrity: sha512-DWmKztkYo9CvldGBaRMr0ETUHgR86zE6sPDVOHsqz4ISe9o1LuiWfgJk+2r75acFclA93J/lqzhT0dTjCzHuoA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/select@4.0.9': - resolution: {integrity: sha512-BpJyJe7Dkhv2kz7yG7bPSbJLQuu/rqyNlF1CfiiFeFwouegfH+zh13KDyt6+d9DwucKo7hqM3wKLLyJxZMO+Xg==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@inquirer/type@3.0.4': - resolution: {integrity: sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@lukeed/csprng@1.1.0': - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} - - '@napi-rs/nice-android-arm-eabi@1.0.1': - resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - - '@napi-rs/nice-android-arm64@1.0.1': - resolution: {integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@napi-rs/nice-darwin-arm64@1.0.1': - resolution: {integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@napi-rs/nice-darwin-x64@1.0.1': - resolution: {integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@napi-rs/nice-freebsd-x64@1.0.1': - resolution: {integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@napi-rs/nice-linux-arm-gnueabihf@1.0.1': - resolution: {integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@napi-rs/nice-linux-arm64-gnu@1.0.1': - resolution: {integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@napi-rs/nice-linux-arm64-musl@1.0.1': - resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@napi-rs/nice-linux-ppc64-gnu@1.0.1': - resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==} - engines: {node: '>= 10'} - cpu: [ppc64] - os: [linux] - - '@napi-rs/nice-linux-riscv64-gnu@1.0.1': - resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - - '@napi-rs/nice-linux-s390x-gnu@1.0.1': - resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==} - engines: {node: '>= 10'} - cpu: [s390x] - os: [linux] - - '@napi-rs/nice-linux-x64-gnu@1.0.1': - resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@napi-rs/nice-linux-x64-musl@1.0.1': - resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@napi-rs/nice-win32-arm64-msvc@1.0.1': - resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@napi-rs/nice-win32-ia32-msvc@1.0.1': - resolution: {integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@napi-rs/nice-win32-x64-msvc@1.0.1': - resolution: {integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@napi-rs/nice@1.0.1': - resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} - engines: {node: '>= 10'} - - '@nestjs/cli@11.0.5': - resolution: {integrity: sha512-ab/d8Ple+dMSQ4pC7RSNjhntpT8gFQQE8y/F/ilaplp7zPGpuxbayRtYbsA/wc1UkJHORDckrqFc8Jh8mrTq2A==} - engines: {node: '>= 20.11'} - hasBin: true - peerDependencies: - '@swc/cli': ^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 - '@swc/core': ^1.3.62 - peerDependenciesMeta: - '@swc/cli': - optional: true - '@swc/core': - optional: true - - '@nestjs/common@11.0.1': - resolution: {integrity: sha512-GbPKvDz/sYjhR86ebZu+0F5jAvYDZDXY5WcHek9gkEkMI9eIo3xeH/F/tNIPhdyeWp3eG+kNWqR9VPtC18G+TA==} - peerDependencies: - class-transformer: '*' - class-validator: '*' - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - class-transformer: - optional: true - class-validator: - optional: true - - '@nestjs/core@11.0.1': - resolution: {integrity: sha512-Yn7X2aInjmX7yxpH8TjJmgC0JPvs+tcreETkquSRmKbuK5J28dZDi8loiaw3eRTLLvzzUovv5mlqFxmVhDESOw==} - engines: {node: '>= 20'} - peerDependencies: - '@nestjs/common': ^11.0.0 - '@nestjs/microservices': ^11.0.0 - '@nestjs/platform-express': ^11.0.0 - '@nestjs/websockets': ^11.0.0 - reflect-metadata: ^0.1.12 || ^0.2.0 - rxjs: ^7.1.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - '@nestjs/websockets': - optional: true - - '@nestjs/platform-express@11.0.1': - resolution: {integrity: sha512-vkAcm4Lm/aAvvpYtRcRKuwzsliy4SqoSp0saHOIx6VdphIb1k7ziRkjDbLFDczDZmkiyX1pJ9kI5SHjoQzVDPw==} - peerDependencies: - '@nestjs/common': ^11.0.0 - '@nestjs/core': ^11.0.0 - - '@nestjs/platform-fastify@11.0.1': - resolution: {integrity: sha512-ifw8prhq7U97CjiQES6eEQShQ6kDIM2wsS6rY3yR3PaeHE5qLUWemIAN7XI5AdQkpe/j9dle8CZLm3jsDyfJTQ==} - peerDependencies: - '@fastify/static': ^8.0.0 - '@fastify/view': ^10.0.0 - '@nestjs/common': ^10.0.0 - '@nestjs/core': ^10.0.0 - peerDependenciesMeta: - '@fastify/static': - optional: true - '@fastify/view': - optional: true - - '@nestjs/schematics@11.0.1': - resolution: {integrity: sha512-PHPAUk4sXkfCxiMacD1JFC+vEyzXjZJRCu1KT2MmG2hrTiMDMk5KtMprro148JUefNuWbVyN0uLTJVSmWVzhoA==} - peerDependencies: - typescript: '>=4.8.2' - - '@nestjs/testing@11.0.11': - resolution: {integrity: sha512-SoMIrhRpElV53btmGnEwpIQmXn2Xcztb9ae3lv+eVVnPHQuyB2zlgDIQVNjicbj7+3jdycX52KctOoj2eXEo1Q==} - peerDependencies: - '@nestjs/common': ^11.0.0 - '@nestjs/core': ^11.0.0 - '@nestjs/microservices': ^11.0.0 - '@nestjs/platform-express': ^11.0.0 - peerDependenciesMeta: - '@nestjs/microservices': - optional: true - '@nestjs/platform-express': - optional: true - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@nuxt/opencollective@0.4.1': - resolution: {integrity: sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==} - engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} - hasBin: true - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-commonjs@28.0.2': - resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.0': - resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.34.9': - resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.34.9': - resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.34.9': - resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.34.9': - resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.34.9': - resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.34.9': - resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.34.9': - resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.34.9': - resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.34.9': - resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.34.9': - resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.34.9': - resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': - resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.34.9': - resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.34.9': - resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.34.9': - resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.34.9': - resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.34.9': - resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.34.9': - resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.34.9': - resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} - cpu: [x64] - os: [win32] - - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} - - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - - '@stylistic/eslint-plugin@4.1.0': - resolution: {integrity: sha512-bytbL7qiici7yPyEiId0fGPK9kjQbzcPMj2aftPfzTCyJ/CRSKdtI+iVjM0LSGzGxfunflI+MDDU9vyIIeIpoQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=9.0.0' - - '@swc/cli@0.6.0': - resolution: {integrity: sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==} - engines: {node: '>= 16.14.0'} - hasBin: true - peerDependencies: - '@swc/core': ^1.2.66 - chokidar: ^4.0.1 - peerDependenciesMeta: - chokidar: - optional: true - - '@swc/core-darwin-arm64@1.11.5': - resolution: {integrity: sha512-GEd1hzEx0mSGkJYMFMGLnrGgjL2rOsOsuYWyjyiA3WLmhD7o+n/EWBDo6mzD/9aeF8dzSPC0TnW216gJbvrNzA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.11.5': - resolution: {integrity: sha512-toz04z9wAClVvQSEY3xzrgyyeWBAfMWcKG4K0ugNvO56h/wczi2ZHRlnAXZW1tghKBk3z6MXqa/srfXgNhffKw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.11.5': - resolution: {integrity: sha512-5SjmKxXdwbBpsYGTpgeXOXMIjS563/ntRGn8Zc12H/c4VfPrRLGhgbJ/48z2XVFyBLcw7BCHZyFuVX1+ZI3W0Q==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.11.5': - resolution: {integrity: sha512-pydIlInHRzRIwB0NHblz3Dx58H/bsi0I5F2deLf9iOmwPNuOGcEEZF1Qatc7YIjP5DFbXK+Dcz+pMUZb2cc2MQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.11.5': - resolution: {integrity: sha512-LhBHKjkZq5tJF1Lh0NJFpx7ROnCWLckrlIAIdSt9XfOV+zuEXJQOj+NFcM1eNk17GFfFyUMOZyGZxzYq5dveEQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.11.5': - resolution: {integrity: sha512-dCi4xkxXlsk5sQYb3i413Cfh7+wMJeBYTvBZTD5xh+/DgRtIcIJLYJ2tNjWC4/C2i5fj+Ze9bKNSdd8weRWZ3A==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.11.5': - resolution: {integrity: sha512-K0AC4TreM5Oo/tXNXnE/Gf5+5y/HwUdd7xvUjOpZddcX/RlsbYOKWLgOtA3fdFIuta7XC+vrGKmIhm5l70DSVQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.11.5': - resolution: {integrity: sha512-wzum8sYUsvPY7kgUfuqVYTgIPYmBC8KPksoNM1fz5UfhudU0ciQuYvUBD47GIGOevaoxhLkjPH4CB95vh1mJ9w==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.11.5': - resolution: {integrity: sha512-lco7mw0TPRTpVPR6NwggJpjdUkAboGRkLrDHjIsUaR+Y5+0m5FMMkHOMxWXAbrBS5c4ph7QErp4Lma4r9Mn5og==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.11.5': - resolution: {integrity: sha512-E+DApLSC6JRK8VkDa4bNsBdD7Qoomx1HvKVZpOXl9v94hUZI5GMExl4vU5isvb+hPWL7rZ0NeI7ITnVLgLJRbA==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.11.5': - resolution: {integrity: sha512-EVY7zfpehxhTZXOfy508gb3D78ihoGGmvyiTWtlBPjgIaidP1Xw0naHMD78CWiFlZmeDjKXJufGtsEGOnZdmNA==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/types@0.1.19': - resolution: {integrity: sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==} - - '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} - engines: {node: '>=14.16'} - - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@types/accepts@1.3.7': - resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} - - '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - - '@types/content-disposition@0.5.8': - resolution: {integrity: sha512-QVSSvno3dE0MgO76pJhmv4Qyi/j0Yk9pBp0Y7TJ2Tlj+KCgJWY6qX7nnxCOLkZ3VYRSIk1WTxCvwUSdx6CCLdg==} - - '@types/conventional-commits-parser@5.0.1': - resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} - - '@types/cookiejar@2.1.5': - resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} - - '@types/cookies@0.9.0': - resolution: {integrity: sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} - - '@types/doctrine@0.0.9': - resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/express-serve-static-core@5.0.6': - resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - - '@types/express@5.0.0': - resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} - - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - - '@types/http-assert@1.5.6': - resolution: {integrity: sha512-TTEwmtjgVbYAzZYWyeHPrrtWnfVkm8tQkP8P21uQifPgMRgjrow3XDEYqucuC8SKZJT7pUnhU/JymvjggxO9vw==} - - '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - - '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} - - '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - - '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - - '@types/jest@29.5.14': - resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/keygrip@1.0.6': - resolution: {integrity: sha512-lZuNAY9xeJt7Bx4t4dx0rYCDqGPW8RXhQZK1td7d4H6E9zYbLoOtjBvfwdTKpsyxQI/2jv+armjX/RW+ZNpXOQ==} - - '@types/koa-compose@3.2.8': - resolution: {integrity: sha512-4Olc63RY+MKvxMwVknCUDhRQX1pFQoBZ/lXcRLP69PQkEpze/0cr8LNqJQe5NFb/b19DWi2a5bTi2VAlQzhJuA==} - - '@types/koa@2.15.0': - resolution: {integrity: sha512-7QFsywoE5URbuVnG3loe03QXuGajrnotr3gQkXcEBShORai23MePfFYdhz90FEtBBpkyIYQbVD+evKtloCgX3g==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/methods@1.1.4': - resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} - - '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node-forge@1.3.11': - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - - '@types/node@22.13.8': - resolution: {integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/picomatch@3.0.2': - resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==} - - '@types/qs@6.9.18': - resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} - - '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} - - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} - - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/superagent@8.1.9': - resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==} - - '@types/supertest@6.0.2': - resolution: {integrity: sha512-137ypx2lk/wTQbW6An6safu9hXmajAifU/s7szAHLN/FeIm5w7yR0Wkl9fdJMRSHwOn4HLAI0DaB2TOORuhPDg==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - - '@types/yargs@17.0.33': - resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - - '@typescript-eslint/eslint-plugin@8.25.0': - resolution: {integrity: sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/parser@8.25.0': - resolution: {integrity: sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/scope-manager@8.25.0': - resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.25.0': - resolution: {integrity: sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/types@8.25.0': - resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.25.0': - resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/utils@8.25.0': - resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/visitor-keys@8.25.0': - resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@vitest/coverage-v8@3.0.7': - resolution: {integrity: sha512-Av8WgBJLTrfLOer0uy3CxjlVuWK4CzcLBndW1Nm2vI+3hZ2ozHututkfc7Blu1u6waeQ7J8gzPK/AsBRnWA5mQ==} - peerDependencies: - '@vitest/browser': 3.0.7 - vitest: 3.0.7 - peerDependenciesMeta: - '@vitest/browser': - optional: true - - '@vitest/eslint-plugin@1.1.36': - resolution: {integrity: sha512-IjBV/fcL9NJRxGw221ieaDsqKqj8qUo7rvSupDxMjTXyhsCusHC6M+jFUNqBp4PCkYFcf5bjrKxeZoCEWoPxig==} - peerDependencies: - '@typescript-eslint/utils': ^8.24.0 - eslint: '>= 8.57.0' - typescript: '>= 5.0.0' - vitest: '*' - peerDependenciesMeta: - typescript: - optional: true - vitest: - optional: true - - '@vitest/expect@3.0.7': - resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==} - - '@vitest/mocker@3.0.7': - resolution: {integrity: sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@3.0.7': - resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==} - - '@vitest/runner@3.0.7': - resolution: {integrity: sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==} - - '@vitest/snapshot@3.0.7': - resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==} - - '@vitest/spy@3.0.7': - resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==} - - '@vitest/utils@3.0.7': - resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==} - - '@vue/compiler-core@3.5.13': - resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - - '@vue/compiler-dom@3.5.13': - resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - - '@vue/compiler-sfc@3.5.13': - resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - - '@vue/compiler-ssr@3.5.13': - resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} - - '@vue/shared@3.5.13': - resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xhmikosr/archive-type@7.0.0': - resolution: {integrity: sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==} - engines: {node: ^14.14.0 || >=16.0.0} - - '@xhmikosr/bin-check@7.0.3': - resolution: {integrity: sha512-4UnCLCs8DB+itHJVkqFp9Zjg+w/205/J2j2wNBsCEAm/BuBmtua2hhUOdAMQE47b1c7P9Xmddj0p+X1XVsfHsA==} - engines: {node: '>=18'} - - '@xhmikosr/bin-wrapper@13.0.5': - resolution: {integrity: sha512-DT2SAuHDeOw0G5bs7wZbQTbf4hd8pJ14tO0i4cWhRkIJfgRdKmMfkDilpaJ8uZyPA0NVRwasCNAmMJcWA67osw==} - engines: {node: '>=18'} - - '@xhmikosr/decompress-tar@8.0.1': - resolution: {integrity: sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==} - engines: {node: '>=18'} - - '@xhmikosr/decompress-tarbz2@8.0.2': - resolution: {integrity: sha512-p5A2r/AVynTQSsF34Pig6olt9CvRj6J5ikIhzUd3b57pUXyFDGtmBstcw+xXza0QFUh93zJsmY3zGeNDlR2AQQ==} - engines: {node: '>=18'} - - '@xhmikosr/decompress-targz@8.0.1': - resolution: {integrity: sha512-mvy5AIDIZjQ2IagMI/wvauEiSNHhu/g65qpdM4EVoYHUJBAmkQWqcPJa8Xzi1aKVTmOA5xLJeDk7dqSjlHq8Mg==} - engines: {node: '>=18'} - - '@xhmikosr/decompress-unzip@7.0.0': - resolution: {integrity: sha512-GQMpzIpWTsNr6UZbISawsGI0hJ4KA/mz5nFq+cEoPs12UybAqZWKbyIaZZyLbJebKl5FkLpsGBkrplJdjvUoSQ==} - engines: {node: '>=18'} - - '@xhmikosr/decompress@10.0.1': - resolution: {integrity: sha512-6uHnEEt5jv9ro0CDzqWlFgPycdE+H+kbJnwyxgZregIMLQ7unQSCNVsYG255FoqU8cP46DyggI7F7LohzEl8Ag==} - engines: {node: '>=18'} - - '@xhmikosr/downloader@15.0.1': - resolution: {integrity: sha512-fiuFHf3Dt6pkX8HQrVBsK0uXtkgkVlhrZEh8b7VgoDqFf+zrgFBPyrwCqE/3nDwn3hLeNz+BsrS7q3mu13Lp1g==} - engines: {node: '>=18'} - - '@xhmikosr/os-filter-obj@3.0.0': - resolution: {integrity: sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==} - engines: {node: ^14.14.0 || >=16.0.0} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - abstract-logging@2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - ansis@3.16.0: - resolution: {integrity: sha512-sU7d/tfZiYrsIAXbdL/CNZld5bCkruzwT5KmqmadCJYxuLxHAOBjidxD5+iLmN/6xEfjcQq1l7OpsiCBlc4LzA==} - engines: {node: '>=14'} - - ansis@3.17.0: - resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} - engines: {node: '>=14'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - append-field@1.0.0: - resolution: {integrity: sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==} - - arch@3.0.0: - resolution: {integrity: sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==} - - are-docs-informative@0.0.2: - resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} - engines: {node: '>=14'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - args-tokenizer@0.3.0: - resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} - - array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - array-timsort@1.0.3: - resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - - 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'} - - atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - avvio@9.1.0: - resolution: {integrity: sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==} - - axios@1.8.1: - resolution: {integrity: sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==} - - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - bare-events@2.5.4: - resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - bin-version-check@5.1.0: - resolution: {integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==} - engines: {node: '>=12'} - - bin-version@6.0.0: - resolution: {integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==} - engines: {node: '>=12'} - - 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@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - body-parser@2.1.0: - resolution: {integrity: sha512-/hPxh61E+ll0Ujp24Ilm64cykicul1ypfwjVttduAiEdtnJFvLePSrIPk+HMImtNv5270wOGCb1Tns2rybMkoQ==} - engines: {node: '>=18'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - - 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==} - - builtin-modules@4.0.0: - resolution: {integrity: sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==} - engines: {node: '>=18.20'} - - bumpp@10.0.3: - resolution: {integrity: sha512-5ONBZenNf9yfTIl2vFvDEfeeioidt0fG10SzjHQw50BRxOmXzsdY+lab1+SDMfiW6UyJ1xQqzFymcy5wa8YhTA==} - engines: {node: '>=18'} - hasBin: true - - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} - - c12@2.0.4: - resolution: {integrity: sha512-3DbbhnFt0fKJHxU4tEUPmD1ahWE4PWPMomqfYsTJdrhpmEnRKJi3qSC4rO5U6E6zN1+pjBY7+z8fUmNRMaVKLw==} - peerDependencies: - magicast: ^0.3.5 - peerDependenciesMeta: - magicast: - optional: true - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - cache-content-type@1.0.1: - resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} - engines: {node: '>= 6.0.0'} - - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} - - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} - - 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-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001701: - resolution: {integrity: sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - 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'} - - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - - ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} - engines: {node: '>=8'} - - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - - clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - - cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} - - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} - engines: {node: '>= 12'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - - comment-json@4.2.5: - resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} - engines: {node: '>= 6'} - - comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} - engines: {node: '>= 12.0.0'} - - commitizen@4.3.1: - resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} - engines: {node: '>= 12'} - hasBin: true - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - - component-emitter@1.3.1: - resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - - consola@3.4.0: - resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} - engines: {node: ^14.18.0 || >=16.10.0} - - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} - - content-disposition@1.0.0: - resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} - engines: {node: '>= 0.6'} - - 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'} - - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} - - conventional-commit-types@3.0.0: - resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} - - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} - hasBin: true - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} - - cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} - engines: {node: '>= 0.6'} - - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} - engines: {node: '>=18'} - - cookiejar@2.1.4: - resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} - - cookies@0.9.1: - resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} - engines: {node: '>= 0.8'} - - core-js-compat@3.41.0: - resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} - - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - - cosmiconfig-typescript-loader@6.1.0: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} - engines: {node: '>=v18'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=9' - typescript: '>=5' - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@7.0.6: - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@5.0.0: - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@7.0.6: - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - cz-conventional-changelog@3.3.0: - resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} - engines: {node: '>= 10'} - - cz-git@1.11.0: - resolution: {integrity: sha512-FCNkpyVmNPX0P8kHtX8uoFcXsJ4bjivMXVS5vc/qCyM8jj+Tuqo6CXQjGQKwKl0Lk9VNz7o6JfPoU/mM/XhxqA==} - engines: {node: '>=v12.20.0'} - - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - - dayjs@1.11.13: - resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - - 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==} - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - - defaults@3.0.0: - resolution: {integrity: sha512-RsqXDEAALjfRTro+IFNKpcPCt0/Cy2FqHSIlnomiJp9YGadpQnrtbRpSgN2+np21qHcIKiva4fiOQGjS9/qR/A==} - engines: {node: '>=18'} - - defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - - destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - detect-file@1.0.0: - resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} - engines: {node: '>=0.10.0'} - - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - dezalgo@1.0.4: - resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - - dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} - engines: {node: '>=12'} - - 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==} - - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - - electron-to-chromium@1.5.109: - resolution: {integrity: sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==} - - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} - - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} - engines: {node: '>=10.13.0'} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - error-stack-parser-es@1.0.5: - resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - - 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-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - - 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@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.25.0: - resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - 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'} - - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-compat-utils@0.5.1: - resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-compat-utils@0.6.4: - resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=6.0.0' - - eslint-config-flat-gitignore@2.1.0: - resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} - peerDependencies: - eslint: ^9.5.0 - - eslint-config-prettier@10.0.2: - resolution: {integrity: sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-flat-config-utils@2.0.1: - resolution: {integrity: sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==} - - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - - eslint-json-compat-utils@0.2.1: - resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} - engines: {node: '>=12'} - peerDependencies: - '@eslint/json': '*' - eslint: '*' - jsonc-eslint-parser: ^2.4.0 - peerDependenciesMeta: - '@eslint/json': - optional: true - - eslint-merge-processors@2.0.0: - resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} - peerDependencies: - eslint: '*' - - eslint-plugin-antfu@3.1.0: - resolution: {integrity: sha512-BKlJcpIG8OGyU5JwQCdyTGaLuRgItheEYinhNroCx3bcuz2bCSYK0eNzJvPy2TY8yyz0uSSRxr5KHuQ1WOdOKg==} - peerDependencies: - eslint: '*' - - eslint-plugin-command@3.1.0: - resolution: {integrity: sha512-KLgxB8NMQ0iL7iwehyeqWVE7MaqRPwLTGW4d2CXYOj5tt4j6yU/hiNxQ/35FLq4SnMhv+tpE6FCvYbV4VS+BLw==} - peerDependencies: - eslint: '*' - - eslint-plugin-es-x@7.8.0: - resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '>=8' - - eslint-plugin-import-x@4.6.1: - resolution: {integrity: sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - eslint-plugin-jsdoc@50.6.3: - resolution: {integrity: sha512-NxbJyt1M5zffPcYZ8Nb53/8nnbIScmiLAMdoe0/FAszwb7lcSiX3iYBTsuF7RV84dZZJC8r3NghomrUXsmWvxQ==} - engines: {node: '>=18'} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-plugin-jsonc@2.19.1: - resolution: {integrity: sha512-MmlAOaZK1+Lg7YoCZPGRjb88ZjT+ct/KTsvcsbZdBm+w8WMzGx+XEmexk0m40P1WV9G2rFV7X3klyRGRpFXEjA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - eslint-plugin-n@17.16.1: - resolution: {integrity: sha512-/7FVAwjUrix9P5lycnsYRIQRwFo/DZROD+ZXWLpE+/EZWLyuLvyFaRdAPYJSz+nlAdZIZp+LAzlBerQSVYUNFg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: '>=8.23.0' - - eslint-plugin-no-only-tests@3.3.0: - resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} - engines: {node: '>=5.0.0'} - - eslint-plugin-perfectionist@4.9.0: - resolution: {integrity: sha512-76lDfJnonOcXGW3bEXuqhEGId0LrOlvIE1yLHvK/eKMMPOc0b43KchAIR2Bdbqlg+LPXU5/Q+UzuzkO+cWHT6w==} - engines: {node: ^18.0.0 || >=20.0.0} - peerDependencies: - eslint: '>=8.0.0' - - eslint-plugin-prettier@5.2.3: - resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-regexp@2.7.0: - resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} - engines: {node: ^18 || >=20} - peerDependencies: - eslint: '>=8.44.0' - - eslint-plugin-toml@0.12.0: - resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - eslint-plugin-unicorn@57.0.0: - resolution: {integrity: sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==} - engines: {node: '>=18.18'} - peerDependencies: - eslint: '>=9.20.0' - - eslint-plugin-unused-imports@4.1.4: - resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 - eslint: ^9.0.0 || ^8.0.0 - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - - eslint-plugin-vue@9.32.0: - resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - - eslint-plugin-yml@1.17.0: - resolution: {integrity: sha512-Q3LXFRnNpGYAK/PM0BY1Xs0IY1xTLfM0kC986nNQkx1l8tOGz+YS50N6wXkAJkrBpeUN9OxEMB7QJ+9MTDAqIQ==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - eslint-processor-vue-blocks@2.0.0: - resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} - peerDependencies: - '@vue/compiler-sfc': ^3.3.0 - eslint: '>=9.0.0' - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.21.0: - resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - - expect-type@1.2.0: - resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} - engines: {node: '>=12.0.0'} - - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} - engines: {node: '>= 0.10.0'} - - express@5.0.1: - resolution: {integrity: sha512-ORF7g6qGnD+YtUG9yx4DFoqCShNMmUKiXuT5oWMHiOvt/4WFbHC6yCwQMTSBMno7AqntNCAzzcnnjowRkTL9eQ==} - engines: {node: '>= 18'} - - exsolve@1.0.1: - resolution: {integrity: sha512-Smf0iQtkQVJLaph8r/qS8C8SWfQkaq9Q/dFcD44MLbJj6DNhlWefVuaS21SjfqOsBbjVlKtbCj6L9ekXK6EZUg==} - - ext-list@2.2.2: - resolution: {integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==} - engines: {node: '>=0.10.0'} - - ext-name@5.0.0: - resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} - engines: {node: '>=4'} - - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-json-stringify@6.0.1: - resolution: {integrity: sha512-s7SJE83QKBZwg54dIbD5rCtzOBVD43V1ReWXXYqBgwCwHLYAAT0RQc/FmrQglXqWPpz6omtryJQOau5jI4Nrvg==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - - fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - - fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - - fastify-plugin@5.0.1: - resolution: {integrity: sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ==} - - fastify@5.2.1: - resolution: {integrity: sha512-rslrNBF67eg8/Gyn7P2URV8/6pz8kSAscFL4EThZJ8JBMaXacVdVE4hmUcnPNKERl5o/xTiBSLfdowBRhVF1WA==} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fdir@6.4.3: - resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fecha@4.2.3: - resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - file-type@19.6.0: - resolution: {integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==} - engines: {node: '>=18'} - - filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - - filename-reserved-regex@3.0.0: - resolution: {integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - filenamify@6.0.0: - resolution: {integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==} - engines: {node: '>=16'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} - engines: {node: '>= 0.8'} - - finalhandler@2.0.0: - resolution: {integrity: sha512-MX6Zo2adDViYh+GcxxB1dpO43eypOGUOL12rLCOTMQv/DfIbpSJUy4oQIIZhVZkH9e+bZWKMon0XHFEju16tkQ==} - engines: {node: '>= 0.8'} - - find-my-way@9.2.0: - resolution: {integrity: sha512-d3uCir8Hmg7W1Ywp8nKf2lJJYU9Nwinvo+1D39Dn09nz65UKXIxUh7j7K8zeWhxqe1WrkS7FJyON/Q/3lPoc6w==} - engines: {node: '>=14'} - - find-node-modules@2.1.3: - resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} - engines: {node: '>=18'} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - - find-versions@5.1.0: - resolution: {integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==} - engines: {node: '>=12'} - - findup-sync@4.0.0: - resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} - engines: {node: '>= 8'} - - fix-dts-default-cjs-exports@1.0.0: - resolution: {integrity: sha512-i9Vd++WOWo6JilNgZvNvmy1T0r+/j7vikghQSEhKIuDwz4GjUrYj+Z18zlL7MleYNxE+xE6t3aG7LiAwA1P+dg==} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - - fork-ts-checker-webpack-plugin@9.0.2: - resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} - engines: {node: '>=12.13.0', yarn: '>=1.0.0'} - peerDependencies: - typescript: '>3.6.0' - webpack: ^5.11.0 - - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} - - form-data@4.0.2: - resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} - engines: {node: '>= 6'} - - formidable@3.5.2: - resolution: {integrity: sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg==} - - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - - fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} - engines: {node: '>= 0.8'} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - - fs-monkey@1.0.6: - resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} - - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-caller-file@2.0.5: - 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'} - - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} - - get-tsconfig@4.10.0: - resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} - - giget@1.2.5: - resolution: {integrity: sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==} - hasBin: true - - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} - hasBin: true - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true - - glob@11.0.1: - resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} - engines: {node: 20 || >=22} - hasBin: true - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - - global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - - global-modules@1.0.0: - resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} - engines: {node: '>=0.10.0'} - - global-prefix@1.0.2: - resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} - engines: {node: '>=0.10.0'} - - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} - engines: {node: '>=18'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - got@13.0.0: - resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} - engines: {node: '>=16'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-own-prop@2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - - 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'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hexoid@2.0.0: - resolution: {integrity: sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw==} - engines: {node: '>=8'} - - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} - - hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} - engines: {node: ^16.14.0 || >=18.0.0} - - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - - http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} - - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - - http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} - - http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} - engines: {node: '>=10.19.0'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.5.2: - resolution: {integrity: sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true - - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} - engines: {node: '>=18'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} - engines: {node: '>=12.0.0'} - - inspect-with-kind@1.0.5: - resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==} - - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-builtin-module@4.0.0: - resolution: {integrity: sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==} - engines: {node: '>=18.20'} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - - is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - - is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - iterare@1.2.1: - resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} - engines: {node: '>=6'} - - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - - jackspeak@4.1.0: - resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} - engines: {node: 20 || >=22} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - jsdoc-type-pratt-parser@4.1.0: - resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} - engines: {node: '>=12.0.0'} - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-ref-resolver@2.0.1: - resolution: {integrity: sha512-HG0SIB9X4J8bwbxCbnd5FfPEbcXAJYTi1pBJeP/QPON+w8ovSME8iRG+ElHNxZNX2Qh6eYn1GdzJFS4cDFfx0Q==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - - knitwork@1.2.0: - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} - - koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - - koa-convert@2.0.0: - resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} - engines: {node: '>= 10'} - - koa@2.16.0: - resolution: {integrity: sha512-Afhqq0Vq3W7C+/rW6IqHVBDLzqObwZ07JaUNUEF8yCQ6afiyFE3RAy+i7V0E46XOWlH7vPWn/x0vsZwNy6PWxw==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - - lefthook-darwin-arm64@1.11.2: - resolution: {integrity: sha512-8DpvrybtWdt6UmfZk+hA8daYXr6zkpJVogZ8M49BQx6ISSKUaC03xzO1m4MrAsoKok77ka4JAidYhOa2gCu15A==} - cpu: [arm64] - os: [darwin] - - lefthook-darwin-x64@1.11.2: - resolution: {integrity: sha512-DrL1SOT8lJksjudRu6fTZTp3M0EbpCP2RQ22MDT71clS8BMrFL8x3h9Ziw+uNH76j9zA241tW5zMxWMSv+foAA==} - cpu: [x64] - os: [darwin] - - lefthook-freebsd-arm64@1.11.2: - resolution: {integrity: sha512-AliG4Wi8BNC27hCSnuFBeUXh/eA3fppnUbQQPISy/G94yfwRkzyml9MZzvb7HKmUpw1LT0sq9RQ6FQPxBZ2DYA==} - cpu: [arm64] - os: [freebsd] - - lefthook-freebsd-x64@1.11.2: - resolution: {integrity: sha512-V6cgRCoi5+jcq6XBIdRYraeEOK1UhBrtL/XZlNypAIkhPoBtfTP9u2wSprGMDzZvJCRriLXZxV/d0v94laKXzA==} - cpu: [x64] - os: [freebsd] - - lefthook-linux-arm64@1.11.2: - resolution: {integrity: sha512-VKcK7sjIK8UpXX/qK6Fxa0Lnwr4gzRtlXDS17jzxThcyFk8iGBpQ+9ZnPLv2yAaEIzmGhJUG9sDgOb9IQ5kpBQ==} - cpu: [arm64] - os: [linux] - - lefthook-linux-x64@1.11.2: - resolution: {integrity: sha512-aGa2Krph14YwSW7KF0PrlCBK9P7V/Z4oFklonmz3r2Fjm8EdhA750y7OQvA9KerXRleIb5SaUH/cz1azG/izeQ==} - cpu: [x64] - os: [linux] - - lefthook-openbsd-arm64@1.11.2: - resolution: {integrity: sha512-f7owNQ9Ki6Y07KBgdXdH28EYO0eBdZuGTpIggMeHNhYFVDavxuINP2BjmbXtzpUu8K5BX6exGx0umtWhRhXbvQ==} - cpu: [arm64] - os: [openbsd] - - lefthook-openbsd-x64@1.11.2: - resolution: {integrity: sha512-HKv6PV64vOjqPrlxAqo07N9+Z34jdPDBfeExqi0ldR7vACFaBJFIdhWCLLP+3uQUrNKc8GXlikqplZn8MgRSQw==} - cpu: [x64] - os: [openbsd] - - lefthook-windows-arm64@1.11.2: - resolution: {integrity: sha512-042jCKZ/H+lS6XYoMIf2FWMP2hxXqfAT52UW6lYObIOvQ5xu/epUXFjtmXRyYxCv57No3JYYMg1Yr06xdzTKkQ==} - cpu: [arm64] - os: [win32] - - lefthook-windows-x64@1.11.2: - resolution: {integrity: sha512-1Map6Ck2AyfY6ptN9T19N41HFKFqRTzmILtGaRGJABEzHiE4+gSWcq5YT1R6cCtkVlewD3Lx+J/80D/Kb/cVtw==} - cpu: [x64] - os: [win32] - - lefthook@1.11.2: - resolution: {integrity: sha512-/5royc/WbL2KTfFJ54wEdvxUZOBXwc54v/fW2Bz4LMOkAA3LWIxnoUiybSiauu+nhdTG98qERxH1YHwF2wZlAA==} - hasBin: true - - leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - light-my-request@6.5.1: - resolution: {integrity: sha512-0q82RyxIextuDtkA0UDofhPHIiQ2kmpa7fwElCSlm/8nQl36cDU1Cw+CAO90Es0lReH2HChClKL84I86Nc52hg==} - - light-my-request@6.6.0: - resolution: {integrity: sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - - local-pkg@1.1.0: - resolution: {integrity: sha512-xbZBuX6gYIWrlLmZG43aAVer4ocntYO09vPy9lxd6Ns8DnR4U7N+IIeDkubinqFOHHzoMlPxTxwo0jhE7oYjAw==} - engines: {node: '>=14'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.map@4.6.0: - resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - longest@2.0.1: - resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} - engines: {node: '>=0.10.0'} - - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - - lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - - lru-cache@11.0.2: - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} - engines: {node: 20 || >=22} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} - - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} - - merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} - - 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==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - merge@2.1.1: - resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} - - methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - - micromatch@4.0.8: - 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.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - 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.0: - resolution: {integrity: sha512-XqoSHeCGjVClAmoGFG3lVFqQFRIrTVw2OH3axRqAcfaw+gHWIfnASS92AV+Rl/mk0MupgZTRHQOjxY6YVnzK5w==} - engines: {node: '>= 0.6'} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - - 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'} - - mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - - mkcert@3.2.0: - resolution: {integrity: sha512-026Eivq9RoOjOuLJGzbhGwXUAjBxRX11Z7Jbm4/7lqT/Av+XNy9SPrJte6+UpEt7i+W3e/HZYxQqlQcqXZWSzg==} - engines: {node: '>=16'} - hasBin: true - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - - mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - - mkdist@2.2.0: - resolution: {integrity: sha512-GfKwu4A2grXfhj2TZm4ydfzP515NaALqKaPq4WqaZ6NhEnD47BiIQPySoCTTvVqHxYcuqVkNdCXjYf9Bz1Y04Q==} - hasBin: true - peerDependencies: - sass: ^1.83.0 - typescript: '>=5.7.2' - vue: ^3.5.13 - vue-tsc: ^1.8.27 || ^2.0.21 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - vue: - optional: true - vue-tsc: - optional: true - - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - - mnemonist@0.39.8: - resolution: {integrity: sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - multer@1.4.5-lts.1: - resolution: {integrity: sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==} - engines: {node: '>= 6.0.0'} - - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} - - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - natural-orderby@5.0.0: - resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} - engines: {node: '>=18'} - - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - - node-emoji@1.11.0: - resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} - - node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} - - node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} - engines: {node: ^16.14.0 || >=18.0.0} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} - - normalize-url@8.0.1: - resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} - engines: {node: '>=14.16'} - - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - nypm@0.5.4: - resolution: {integrity: sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - obliterator@2.0.5: - resolution: {integrity: sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==} - - ohash@2.0.9: - resolution: {integrity: sha512-ljz2sybhXrRpBW9LleuJPP9uxbMKW8qxFz9lLOHW2QEel78rJ1sUgaX2cBNDt49w+JleNSkhYkVOCx6RgkKn0Q==} - - on-exit-leak-free@2.1.2: - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} - engines: {node: '>=14.0.0'} - - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} - - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - - only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - - p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} - engines: {node: '>=12.20'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - - package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-gitignore@2.0.0: - resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} - engines: {node: '>=14'} - - parse-imports@2.2.1: - resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} - engines: {node: '>= 18'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} - engines: {node: '>=18'} - - parse-passwd@1.0.0: - 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'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - - path-to-regexp@8.2.0: - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} - engines: {node: '>=16'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - peek-readable@5.4.2: - resolution: {integrity: sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==} - engines: {node: '>=14.16'} - - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - - perfect-debounce@1.0.0: - resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - pino-abstract-transport@2.0.0: - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - - pino-std-serializers@7.0.0: - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} - - pino@9.6.0: - resolution: {integrity: sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==} - hasBin: true - - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - - piscina@4.8.0: - resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - - pkg-types@2.0.1: - resolution: {integrity: sha512-LdDk/hlFeVBoEZqlkJ2bsxwq5fjKQg7i422zu78IC16CSR2XBe7kYxxBx0mkU8kLX6nh50Zp80lZHveKnsHTpQ==} - - pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - postcss-calc@10.1.1: - resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} - engines: {node: ^18.12 || ^20.9 || >=22.0} - peerDependencies: - postcss: ^8.4.38 - - postcss-colormin@7.0.2: - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@7.0.4: - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-comments@7.0.3: - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@7.0.1: - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@7.0.0: - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@7.0.0: - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-longhand@7.0.4: - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@7.0.4: - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@7.0.0: - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@7.0.0: - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@7.0.2: - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@7.0.4: - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-nested@7.0.2: - resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-normalize-charset@7.0.0: - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@7.0.0: - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@7.0.0: - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@7.0.0: - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@7.0.0: - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@7.0.0: - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@7.0.2: - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@7.0.0: - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@7.0.0: - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-ordered-values@7.0.1: - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@7.0.2: - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@7.0.0: - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - - postcss-svgo@7.0.1: - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@7.0.3: - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@3.5.2: - resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} - engines: {node: '>=14'} - hasBin: true - - pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} - - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - - process-warning@4.0.1: - resolution: {integrity: sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - - 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==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - - qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} - engines: {node: '>=0.6'} - - qs@6.14.0: - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} - engines: {node: '>=0.6'} - - quansync@0.2.7: - resolution: {integrity: sha512-KZDFlN9/Si3CgKHZsIfLBsrjWKFjqu9KA0zDGJEQoQzPm5HWNDEFc2mkLeYUBBOwEJtxNBSMaNLE/GlvArIEfQ==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - - quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - - raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} - - raw-body@3.0.0: - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} - engines: {node: '>= 0.8'} - - rc9@2.1.2: - resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - read-package-up@11.0.0: - resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} - engines: {node: '>=18'} - - read-pkg@9.0.1: - resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} - engines: {node: '>=18'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - real-require@0.2.0: - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} - engines: {node: '>= 12.13.0'} - - refa@0.12.1: - resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - - regexp-ast-analysis@0.7.1: - resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true - - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} - hasBin: true - - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - - resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - - resolve-dir@1.0.1: - resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} - - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - - ret@0.5.0: - resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} - engines: {node: '>=10'} - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - - rollup-plugin-dts@6.1.1: - resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 - - rollup@4.34.9: - resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - router@2.1.0: - resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==} - engines: {node: '>= 18'} - - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safe-regex2@4.0.1: - resolution: {integrity: sha512-goqsB+bSlOmVX+CiFX2PFc1OV88j5jvBqIM+DgqrucHnUguAUNtiNOs+aTadq2NqsLQ+TQ3UEVG3gtSFcdlkCg==} - - safe-stable-stringify@2.5.0: - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} - engines: {node: '>=10'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - - schema-utils@4.3.0: - resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} - engines: {node: '>= 10.13.0'} - - scslre@0.3.0: - resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} - engines: {node: ^14.0.0 || >=16.0.0} - - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - - secure-json-parse@3.0.2: - resolution: {integrity: sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==} - - seek-bzip@2.0.0: - resolution: {integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==} - hasBin: true - - semver-regex@4.0.5: - resolution: {integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==} - engines: {node: '>=12'} - - semver-truncate@3.0.0: - resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} - engines: {node: '>=12'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} - engines: {node: '>= 0.8.0'} - - send@1.1.0: - resolution: {integrity: sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==} - engines: {node: '>= 18'} - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} - engines: {node: '>= 0.8.0'} - - serve-static@2.1.0: - resolution: {integrity: sha512-A3We5UfEjG8Z7VkDv6uItWw6HY2bBSBJT1KtVESn6EOoOr2jAxNhxWCLY3jDE2WcuHXByWju74ck3ZgLwL8xmA==} - engines: {node: '>= 18'} - - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - 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'} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - slashes@3.0.12: - resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} - - sonic-boom@4.2.0: - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - - sort-keys-length@1.0.1: - resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} - engines: {node: '>=0.10.0'} - - sort-keys@1.1.2: - resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} - engines: {node: '>=0.10.0'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - 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'} - - source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - - spdx-license-ids@3.0.21: - resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - stable-hash@0.0.4: - resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} - - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - - statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - - streamx@2.22.0: - resolution: {integrity: sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==} - - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - - strip-dirs@3.0.0: - resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==} - - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - - strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - strtok3@9.1.1: - resolution: {integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==} - engines: {node: '>=16'} - - stylehacks@7.0.4: - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - superagent@9.0.2: - resolution: {integrity: sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==} - engines: {node: '>=14.18.0'} - - supertest@7.0.0: - resolution: {integrity: sha512-qlsr7fIC0lSddmA3tzojvzubYxvlGtzumcdHgPwbFWMISQwL22MhM2Y3LNt+6w9Yyx7559VW5ab70dgphm8qQA==} - engines: {node: '>=14.18.0'} - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - - symbol-observable@4.0.0: - resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} - engines: {node: '>=0.10'} - - synckit@0.6.2: - resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} - engines: {node: '>=12.20'} - - synckit@0.9.2: - resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} - engines: {node: ^14.18.0 || >=16.0.0} - - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} - - terser-webpack-plugin@5.3.12: - resolution: {integrity: sha512-jDLYqo7oF8tJIttjXO6jBY5Hk8p3A8W4ttih7cCEq64fQFWmgJ4VqAQjKr7WwIDlmXKEc6QeoRb5ecjZ+2afcg==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} - engines: {node: '>=10'} - hasBin: true - - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - - test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} - engines: {node: '>=18'} - - text-decoder@1.2.3: - resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} - - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - - thread-stream@3.1.0: - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} - - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - toad-cache@3.7.0: - resolution: {integrity: sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==} - engines: {node: '>=12'} - - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - - token-types@6.0.0: - resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==} - engines: {node: '>=14.16'} - - toml-eslint-parser@0.10.0: - resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-declaration-location@1.0.5: - resolution: {integrity: sha512-WqmlO9IoeYwCqJ2E9kHMcY9GZhhfLYItC3VnHDlPOrg6nNdUWS4wn4hhDZUPt60m1EvtjPIZyprTjpI992Bgzw==} - peerDependencies: - typescript: '>=4.0.0' - - ts-jest@29.2.6: - resolution: {integrity: sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - - ts-loader@9.5.2: - resolution: {integrity: sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==} - engines: {node: '>=12.0.0'} - peerDependencies: - typescript: '*' - webpack: ^5.0.0 - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig-paths-webpack-plugin@4.2.0: - resolution: {integrity: sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==} - engines: {node: '>=10.13.0'} - - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - - tsx@4.19.3: - resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} - engines: {node: '>=18.0.0'} - hasBin: true - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - type-fest@4.36.0: - resolution: {integrity: sha512-3T/PUdKTCnkUmhQU6FFJEHsLwadsRegktX3TNHk+2JJB9HlA8gp1/VXblXVDI93kSnXF2rdPx0GMbHtJIV2LPg==} - engines: {node: '>=16'} - - type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - - type-is@2.0.0: - resolution: {integrity: sha512-gd0sGezQYCbWSbkZr75mln4YBidWUN60+devscpLF5mtRDUpiaTvKpBNrdaCvel1NdR2k6vclXybU5fBd2i+nw==} - engines: {node: '>= 0.6'} - - typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - - typescript-eslint@8.25.0: - resolution: {integrity: sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} - engines: {node: '>=14.17'} - hasBin: true - - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - - uid@2.0.2: - resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} - engines: {node: '>=8'} - - uint8array-extras@1.4.0: - resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} - engines: {node: '>=18'} - - unbuild@3.5.0: - resolution: {integrity: sha512-DPFttsiADnHRb/K+yJ9r9jdn6JyXlsmdT0S12VFC14DFSJD+cxBnHq+v0INmqqPVPxOoUjvJFYUVIb02rWnVeA==} - hasBin: true - peerDependencies: - typescript: ^5.7.3 - peerDependenciesMeta: - typescript: - optional: true - - unbzip2-stream@1.4.3: - resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - - undici-types@6.20.0: - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - - 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'} - - untyped@2.0.0: - resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} - hasBin: true - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - - vite-node@3.0.7: - resolution: {integrity: sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite@6.2.0: - resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vitest@3.0.7: - resolution: {integrity: sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.7 - '@vitest/ui': 3.0.7 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/debug': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - vue-eslint-parser@9.4.3: - resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} - engines: {node: ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '>=6.0.0' - - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} - engines: {node: '>=10.13.0'} - - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - - webpack-node-externals@3.0.0: - resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} - engines: {node: '>=6'} - - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - - webpack@5.98.0: - resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yaml-eslint-parser@1.3.0: - resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} - engines: {node: ^14.17.0 || >=16.0.0} - - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yauzl@3.2.0: - resolution: {integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==} - engines: {node: '>=12'} - - ylru@1.4.0: - resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} - engines: {node: '>= 4.0.0'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} - engines: {node: '>=12.20'} - - yoctocolors-cjs@2.1.2: - resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} - engines: {node: '>=18'} - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@angular-devkit/core@19.1.7(chokidar@4.0.3)': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.2 - rxjs: 7.8.1 - source-map: 0.7.4 - optionalDependencies: - chokidar: 4.0.3 - - '@angular-devkit/core@19.1.8(chokidar@4.0.3)': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.2 - rxjs: 7.8.1 - source-map: 0.7.4 - optionalDependencies: - chokidar: 4.0.3 - - '@angular-devkit/schematics-cli@19.1.8(@types/node@22.13.8)(chokidar@4.0.3)': - dependencies: - '@angular-devkit/core': 19.1.8(chokidar@4.0.3) - '@angular-devkit/schematics': 19.1.8(chokidar@4.0.3) - '@inquirer/prompts': 7.2.1(@types/node@22.13.8) - ansi-colors: 4.1.3 - symbol-observable: 4.0.0 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - '@types/node' - - chokidar - - '@angular-devkit/schematics@19.1.7(chokidar@4.0.3)': - dependencies: - '@angular-devkit/core': 19.1.7(chokidar@4.0.3) - jsonc-parser: 3.3.1 - magic-string: 0.30.17 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - - '@angular-devkit/schematics@19.1.8(chokidar@4.0.3)': - dependencies: - '@angular-devkit/core': 19.1.8(chokidar@4.0.3) - jsonc-parser: 3.3.1 - magic-string: 0.30.17 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - - '@antfu/eslint-config@4.3.0(@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(@vue/compiler-sfc@3.5.13)(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': - dependencies: - '@antfu/install-pkg': 1.0.0 - '@clack/prompts': 0.10.0 - '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@eslint/markdown': 6.2.2 - '@stylistic/eslint-plugin': 4.1.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@vitest/eslint-plugin': 1.1.36(@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) - ansis: 3.17.0 - cac: 6.7.14 - eslint: 9.21.0(jiti@2.4.2) - eslint-config-flat-gitignore: 2.1.0(eslint@9.21.0(jiti@2.4.2)) - eslint-flat-config-utils: 2.0.1 - eslint-merge-processors: 2.0.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-antfu: 3.1.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-command: 3.1.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-import-x: 4.6.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-jsdoc: 50.6.3(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-jsonc: 2.19.1(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-n: 17.16.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 4.9.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint-plugin-regexp: 2.7.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-toml: 0.12.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-unicorn: 57.0.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-vue: 9.32.0(eslint@9.21.0(jiti@2.4.2)) - eslint-plugin-yml: 1.17.0(eslint@9.21.0(jiti@2.4.2)) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.21.0(jiti@2.4.2)) - globals: 15.15.0 - jsonc-eslint-parser: 2.4.0 - local-pkg: 1.1.0 - parse-gitignore: 2.0.0 - toml-eslint-parser: 0.10.0 - vue-eslint-parser: 9.4.3(eslint@9.21.0(jiti@2.4.2)) - yaml-eslint-parser: 1.3.0 - transitivePeerDependencies: - - '@eslint/json' - - '@typescript-eslint/utils' - - '@vue/compiler-sfc' - - supports-color - - typescript - - vitest - - '@antfu/install-pkg@1.0.0': - dependencies: - package-manager-detector: 0.2.11 - tinyexec: 0.3.2 - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.26.8': {} - - '@babel/core@7.26.9': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.9 - '@babel/helper-compilation-targets': 7.26.5 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) - '@babel/helpers': 7.26.9 - '@babel/parser': 7.26.9 - '@babel/template': 7.26.9 - '@babel/traverse': 7.26.9 - '@babel/types': 7.26.9 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.26.9': - dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.26.5': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.26.9 - '@babel/types': 7.26.9 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.26.9 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.26.5': {} - - '@babel/helper-string-parser@7.25.9': {} - - '@babel/helper-validator-identifier@7.25.9': {} - - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helpers@7.26.9': - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.9 - - '@babel/parser@7.26.9': - dependencies: - '@babel/types': 7.26.9 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/template@7.26.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - - '@babel/traverse@7.26.9': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.9 - '@babel/parser': 7.26.9 - '@babel/template': 7.26.9 - '@babel/types': 7.26.9 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.26.9': - dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} - - '@bcoe/v8-coverage@1.0.2': {} - - '@clack/core@0.4.1': - dependencies: - picocolors: 1.1.1 - sisteransi: 1.0.5 - - '@clack/prompts@0.10.0': - dependencies: - '@clack/core': 0.4.1 - picocolors: 1.1.1 - sisteransi: 1.0.5 - - '@colors/colors@1.5.0': - optional: true - - '@commitlint/cli@19.7.1(@types/node@22.13.8)(typescript@5.7.3)': - dependencies: - '@commitlint/format': 19.5.0 - '@commitlint/lint': 19.7.1 - '@commitlint/load': 19.6.1(@types/node@22.13.8)(typescript@5.7.3) - '@commitlint/read': 19.5.0 - '@commitlint/types': 19.5.0 - tinyexec: 0.3.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/config-conventional@19.7.1': - dependencies: - '@commitlint/types': 19.5.0 - conventional-changelog-conventionalcommits: 7.0.2 - - '@commitlint/config-validator@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - ajv: 8.17.1 - - '@commitlint/ensure@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - - '@commitlint/execute-rule@19.5.0': {} - - '@commitlint/format@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - chalk: 5.4.1 - - '@commitlint/is-ignored@19.7.1': - dependencies: - '@commitlint/types': 19.5.0 - semver: 7.7.1 - - '@commitlint/lint@19.7.1': - dependencies: - '@commitlint/is-ignored': 19.7.1 - '@commitlint/parse': 19.5.0 - '@commitlint/rules': 19.6.0 - '@commitlint/types': 19.5.0 - - '@commitlint/load@19.6.1(@types/node@22.13.8)(typescript@5.7.3)': - dependencies: - '@commitlint/config-validator': 19.5.0 - '@commitlint/execute-rule': 19.5.0 - '@commitlint/resolve-extends': 19.5.0 - '@commitlint/types': 19.5.0 - chalk: 5.4.1 - cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.13.8)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/message@19.5.0': {} - - '@commitlint/parse@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 - - '@commitlint/read@19.5.0': - dependencies: - '@commitlint/top-level': 19.5.0 - '@commitlint/types': 19.5.0 - git-raw-commits: 4.0.0 - minimist: 1.2.8 - tinyexec: 0.3.2 - - '@commitlint/resolve-extends@19.5.0': - dependencies: - '@commitlint/config-validator': 19.5.0 - '@commitlint/types': 19.5.0 - global-directory: 4.0.1 - import-meta-resolve: 4.1.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - - '@commitlint/rules@19.6.0': - dependencies: - '@commitlint/ensure': 19.5.0 - '@commitlint/message': 19.5.0 - '@commitlint/to-lines': 19.5.0 - '@commitlint/types': 19.5.0 - - '@commitlint/to-lines@19.5.0': {} - - '@commitlint/top-level@19.5.0': - dependencies: - find-up: 7.0.0 - - '@commitlint/types@19.5.0': - dependencies: - '@types/conventional-commits-parser': 5.0.1 - chalk: 5.4.1 - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@es-joy/jsdoccomment@0.49.0': - dependencies: - comment-parser: 1.4.1 - esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.1.0 - - '@es-joy/jsdoccomment@0.50.0': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.6 - '@typescript-eslint/types': 8.25.0 - comment-parser: 1.4.1 - esquery: 1.6.0 - jsdoc-type-pratt-parser: 4.1.0 - - '@esbuild/aix-ppc64@0.24.2': - optional: true - - '@esbuild/aix-ppc64@0.25.0': - optional: true - - '@esbuild/android-arm64@0.24.2': - optional: true - - '@esbuild/android-arm64@0.25.0': - optional: true - - '@esbuild/android-arm@0.24.2': - optional: true - - '@esbuild/android-arm@0.25.0': - optional: true - - '@esbuild/android-x64@0.24.2': - optional: true - - '@esbuild/android-x64@0.25.0': - optional: true - - '@esbuild/darwin-arm64@0.24.2': - optional: true - - '@esbuild/darwin-arm64@0.25.0': - optional: true - - '@esbuild/darwin-x64@0.24.2': - optional: true - - '@esbuild/darwin-x64@0.25.0': - optional: true - - '@esbuild/freebsd-arm64@0.24.2': - optional: true - - '@esbuild/freebsd-arm64@0.25.0': - optional: true - - '@esbuild/freebsd-x64@0.24.2': - optional: true - - '@esbuild/freebsd-x64@0.25.0': - optional: true - - '@esbuild/linux-arm64@0.24.2': - optional: true - - '@esbuild/linux-arm64@0.25.0': - optional: true - - '@esbuild/linux-arm@0.24.2': - optional: true - - '@esbuild/linux-arm@0.25.0': - optional: true - - '@esbuild/linux-ia32@0.24.2': - optional: true - - '@esbuild/linux-ia32@0.25.0': - optional: true - - '@esbuild/linux-loong64@0.24.2': - optional: true - - '@esbuild/linux-loong64@0.25.0': - optional: true - - '@esbuild/linux-mips64el@0.24.2': - optional: true - - '@esbuild/linux-mips64el@0.25.0': - optional: true - - '@esbuild/linux-ppc64@0.24.2': - optional: true - - '@esbuild/linux-ppc64@0.25.0': - optional: true - - '@esbuild/linux-riscv64@0.24.2': - optional: true - - '@esbuild/linux-riscv64@0.25.0': - optional: true - - '@esbuild/linux-s390x@0.24.2': - optional: true - - '@esbuild/linux-s390x@0.25.0': - optional: true - - '@esbuild/linux-x64@0.24.2': - optional: true - - '@esbuild/linux-x64@0.25.0': - optional: true - - '@esbuild/netbsd-arm64@0.24.2': - optional: true - - '@esbuild/netbsd-arm64@0.25.0': - optional: true - - '@esbuild/netbsd-x64@0.24.2': - optional: true - - '@esbuild/netbsd-x64@0.25.0': - optional: true - - '@esbuild/openbsd-arm64@0.24.2': - optional: true - - '@esbuild/openbsd-arm64@0.25.0': - optional: true - - '@esbuild/openbsd-x64@0.24.2': - optional: true - - '@esbuild/openbsd-x64@0.25.0': - optional: true - - '@esbuild/sunos-x64@0.24.2': - optional: true - - '@esbuild/sunos-x64@0.25.0': - optional: true - - '@esbuild/win32-arm64@0.24.2': - optional: true - - '@esbuild/win32-arm64@0.25.0': - optional: true - - '@esbuild/win32-ia32@0.24.2': - optional: true - - '@esbuild/win32-ia32@0.25.0': - optional: true - - '@esbuild/win32-x64@0.24.2': - optional: true - - '@esbuild/win32-x64@0.25.0': - optional: true - - '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.21.0(jiti@2.4.2))': - dependencies: - escape-string-regexp: 4.0.0 - eslint: 9.21.0(jiti@2.4.2) - ignore: 5.3.2 - - '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@2.4.2))': - dependencies: - eslint: 9.21.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/compat@1.2.7(eslint@9.21.0(jiti@2.4.2))': - optionalDependencies: - eslint: 9.21.0(jiti@2.4.2) - - '@eslint/config-array@0.19.2': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.10.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/core@0.12.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.21.0': {} - - '@eslint/markdown@6.2.2': - dependencies: - '@eslint/core': 0.10.0 - '@eslint/plugin-kit': 0.2.7 - mdast-util-from-markdown: 2.0.2 - mdast-util-gfm: 3.1.0 - micromark-extension-gfm: 3.0.0 - transitivePeerDependencies: - - supports-color - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.2.7': - dependencies: - '@eslint/core': 0.12.0 - levn: 0.4.1 - - '@fastify/ajv-compiler@4.0.2': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - fast-uri: 3.0.6 - - '@fastify/cors@10.0.2': - dependencies: - fastify-plugin: 5.0.1 - mnemonist: 0.39.8 - - '@fastify/error@4.0.0': {} - - '@fastify/fast-json-stringify-compiler@5.0.2': - dependencies: - fast-json-stringify: 6.0.1 - - '@fastify/formbody@8.0.2': - dependencies: - fast-querystring: 1.1.2 - fastify-plugin: 5.0.1 - - '@fastify/forwarded@3.0.0': {} - - '@fastify/merge-json-schemas@0.2.1': - dependencies: - dequal: 2.0.3 - - '@fastify/middie@9.0.3': - dependencies: - '@fastify/error': 4.0.0 - fastify-plugin: 5.0.1 - path-to-regexp: 8.2.0 - reusify: 1.1.0 - - '@fastify/proxy-addr@5.0.0': - dependencies: - '@fastify/forwarded': 3.0.0 - ipaddr.js: 2.2.0 - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} - - '@inquirer/checkbox@4.1.2(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@22.13.8) - ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/confirm@5.1.6(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/core@10.1.7(@types/node@22.13.8)': - dependencies: - '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@22.13.8) - ansi-escapes: 4.3.2 - cli-width: 4.1.0 - mute-stream: 2.0.0 - signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/editor@4.2.7(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - external-editor: 3.1.0 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/expand@4.0.9(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/figures@1.0.10': {} - - '@inquirer/input@4.1.6(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/number@3.0.9(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/password@4.0.9(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - ansi-escapes: 4.3.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/prompts@7.2.1(@types/node@22.13.8)': - dependencies: - '@inquirer/checkbox': 4.1.2(@types/node@22.13.8) - '@inquirer/confirm': 5.1.6(@types/node@22.13.8) - '@inquirer/editor': 4.2.7(@types/node@22.13.8) - '@inquirer/expand': 4.0.9(@types/node@22.13.8) - '@inquirer/input': 4.1.6(@types/node@22.13.8) - '@inquirer/number': 3.0.9(@types/node@22.13.8) - '@inquirer/password': 4.0.9(@types/node@22.13.8) - '@inquirer/rawlist': 4.0.9(@types/node@22.13.8) - '@inquirer/search': 3.0.9(@types/node@22.13.8) - '@inquirer/select': 4.0.9(@types/node@22.13.8) - '@types/node': 22.13.8 - - '@inquirer/prompts@7.3.2(@types/node@22.13.8)': - dependencies: - '@inquirer/checkbox': 4.1.2(@types/node@22.13.8) - '@inquirer/confirm': 5.1.6(@types/node@22.13.8) - '@inquirer/editor': 4.2.7(@types/node@22.13.8) - '@inquirer/expand': 4.0.9(@types/node@22.13.8) - '@inquirer/input': 4.1.6(@types/node@22.13.8) - '@inquirer/number': 3.0.9(@types/node@22.13.8) - '@inquirer/password': 4.0.9(@types/node@22.13.8) - '@inquirer/rawlist': 4.0.9(@types/node@22.13.8) - '@inquirer/search': 3.0.9(@types/node@22.13.8) - '@inquirer/select': 4.0.9(@types/node@22.13.8) - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/rawlist@4.0.9(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/type': 3.0.4(@types/node@22.13.8) - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/search@3.0.9(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@22.13.8) - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/select@4.0.9(@types/node@22.13.8)': - dependencies: - '@inquirer/core': 10.1.7(@types/node@22.13.8) - '@inquirer/figures': 1.0.10 - '@inquirer/type': 3.0.4(@types/node@22.13.8) - ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 - optionalDependencies: - '@types/node': 22.13.8 - - '@inquirer/type@3.0.4(@types/node@22.13.8)': - optionalDependencies: - '@types/node': 22.13.8 - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3))': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.13.8 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.13.8 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - - '@jest/schemas@29.6.3': - dependencies: - '@sinclair/typebox': 0.27.8 - - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.26.9 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - - '@jest/types@29.6.3': - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.8 - '@types/yargs': 17.0.33 - chalk: 4.1.2 - - '@jridgewell/gen-mapping@0.3.8': - dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': - dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@lukeed/csprng@1.1.0': {} - - '@napi-rs/nice-android-arm-eabi@1.0.1': - optional: true - - '@napi-rs/nice-android-arm64@1.0.1': - optional: true - - '@napi-rs/nice-darwin-arm64@1.0.1': - optional: true - - '@napi-rs/nice-darwin-x64@1.0.1': - optional: true - - '@napi-rs/nice-freebsd-x64@1.0.1': - optional: true - - '@napi-rs/nice-linux-arm-gnueabihf@1.0.1': - optional: true - - '@napi-rs/nice-linux-arm64-gnu@1.0.1': - optional: true - - '@napi-rs/nice-linux-arm64-musl@1.0.1': - optional: true - - '@napi-rs/nice-linux-ppc64-gnu@1.0.1': - optional: true - - '@napi-rs/nice-linux-riscv64-gnu@1.0.1': - optional: true - - '@napi-rs/nice-linux-s390x-gnu@1.0.1': - optional: true - - '@napi-rs/nice-linux-x64-gnu@1.0.1': - optional: true - - '@napi-rs/nice-linux-x64-musl@1.0.1': - optional: true - - '@napi-rs/nice-win32-arm64-msvc@1.0.1': - optional: true - - '@napi-rs/nice-win32-ia32-msvc@1.0.1': - optional: true - - '@napi-rs/nice-win32-x64-msvc@1.0.1': - optional: true - - '@napi-rs/nice@1.0.1': - optionalDependencies: - '@napi-rs/nice-android-arm-eabi': 1.0.1 - '@napi-rs/nice-android-arm64': 1.0.1 - '@napi-rs/nice-darwin-arm64': 1.0.1 - '@napi-rs/nice-darwin-x64': 1.0.1 - '@napi-rs/nice-freebsd-x64': 1.0.1 - '@napi-rs/nice-linux-arm-gnueabihf': 1.0.1 - '@napi-rs/nice-linux-arm64-gnu': 1.0.1 - '@napi-rs/nice-linux-arm64-musl': 1.0.1 - '@napi-rs/nice-linux-ppc64-gnu': 1.0.1 - '@napi-rs/nice-linux-riscv64-gnu': 1.0.1 - '@napi-rs/nice-linux-s390x-gnu': 1.0.1 - '@napi-rs/nice-linux-x64-gnu': 1.0.1 - '@napi-rs/nice-linux-x64-musl': 1.0.1 - '@napi-rs/nice-win32-arm64-msvc': 1.0.1 - '@napi-rs/nice-win32-ia32-msvc': 1.0.1 - '@napi-rs/nice-win32-x64-msvc': 1.0.1 - optional: true - - '@nestjs/cli@11.0.5(@swc/cli@0.6.0(@swc/core@1.11.5)(chokidar@4.0.3))(@swc/core@1.11.5)(@types/node@22.13.8)': - dependencies: - '@angular-devkit/core': 19.1.8(chokidar@4.0.3) - '@angular-devkit/schematics': 19.1.8(chokidar@4.0.3) - '@angular-devkit/schematics-cli': 19.1.8(@types/node@22.13.8)(chokidar@4.0.3) - '@inquirer/prompts': 7.3.2(@types/node@22.13.8) - '@nestjs/schematics': 11.0.1(chokidar@4.0.3)(typescript@5.7.3) - ansis: 3.16.0 - chokidar: 4.0.3 - cli-table3: 0.6.5 - commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.11.5)) - glob: 11.0.1 - node-emoji: 1.11.0 - ora: 5.4.1 - tree-kill: 1.2.2 - tsconfig-paths: 4.2.0 - tsconfig-paths-webpack-plugin: 4.2.0 - typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.11.5) - webpack-node-externals: 3.0.0 - optionalDependencies: - '@swc/cli': 0.6.0(@swc/core@1.11.5)(chokidar@4.0.3) - '@swc/core': 1.11.5 - transitivePeerDependencies: - - '@types/node' - - esbuild - - uglify-js - - webpack-cli - - '@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2)': - dependencies: - iterare: 1.2.1 - reflect-metadata: 0.2.2 - rxjs: 7.8.2 - tslib: 2.8.1 - uid: 2.0.2 - - '@nestjs/core@11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2)': - dependencies: - '@nestjs/common': 11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nuxt/opencollective': 0.4.1 - fast-safe-stringify: 2.1.1 - iterare: 1.2.1 - path-to-regexp: 8.2.0 - reflect-metadata: 0.2.2 - rxjs: 7.8.2 - tslib: 2.8.1 - uid: 2.0.2 - optionalDependencies: - '@nestjs/platform-express': 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1) - - '@nestjs/platform-express@11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1)': - dependencies: - '@nestjs/common': 11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2) - body-parser: 1.20.3 - cors: 2.8.5 - express: 5.0.1 - multer: 1.4.5-lts.1 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@nestjs/platform-fastify@11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1)': - dependencies: - '@fastify/cors': 10.0.2 - '@fastify/formbody': 8.0.2 - '@fastify/middie': 9.0.3 - '@nestjs/common': 11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2) - fastify: 5.2.1 - light-my-request: 6.5.1 - path-to-regexp: 8.2.0 - tslib: 2.8.1 - - '@nestjs/schematics@11.0.1(chokidar@4.0.3)(typescript@5.7.3)': - dependencies: - '@angular-devkit/core': 19.1.7(chokidar@4.0.3) - '@angular-devkit/schematics': 19.1.7(chokidar@4.0.3) - comment-json: 4.2.5 - jsonc-parser: 3.3.1 - pluralize: 8.0.0 - typescript: 5.7.3 - transitivePeerDependencies: - - chokidar - - '@nestjs/testing@11.0.11(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1)(@nestjs/platform-express@11.0.1)': - dependencies: - '@nestjs/common': 11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.0.1)(reflect-metadata@0.2.2)(rxjs@7.8.2) - tslib: 2.8.1 - optionalDependencies: - '@nestjs/platform-express': 11.0.1(@nestjs/common@11.0.1(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.0.1) - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@nuxt/opencollective@0.4.1': - dependencies: - consola: 3.4.0 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@rollup/plugin-alias@5.1.1(rollup@4.34.9)': - optionalDependencies: - rollup: 4.34.9 - - '@rollup/plugin-commonjs@28.0.2(rollup@4.34.9)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.9) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.4.3(picomatch@4.0.2) - is-reference: 1.2.1 - magic-string: 0.30.17 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.34.9 - - '@rollup/plugin-json@6.1.0(rollup@4.34.9)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.9) - optionalDependencies: - rollup: 4.34.9 - - '@rollup/plugin-node-resolve@16.0.0(rollup@4.34.9)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.9) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.34.9 - - '@rollup/plugin-replace@6.0.2(rollup@4.34.9)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.34.9) - magic-string: 0.30.17 - optionalDependencies: - rollup: 4.34.9 - - '@rollup/pluginutils@5.1.4(rollup@4.34.9)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - rollup: 4.34.9 - - '@rollup/rollup-android-arm-eabi@4.34.9': - optional: true - - '@rollup/rollup-android-arm64@4.34.9': - optional: true - - '@rollup/rollup-darwin-arm64@4.34.9': - optional: true - - '@rollup/rollup-darwin-x64@4.34.9': - optional: true - - '@rollup/rollup-freebsd-arm64@4.34.9': - optional: true - - '@rollup/rollup-freebsd-x64@4.34.9': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.34.9': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.34.9': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.34.9': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.34.9': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.34.9': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.34.9': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.34.9': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.34.9': - optional: true - - '@rollup/rollup-linux-x64-musl@4.34.9': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.34.9': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.34.9': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.34.9': - optional: true - - '@sec-ant/readable-stream@0.4.1': {} - - '@sinclair/typebox@0.27.8': {} - - '@sindresorhus/is@5.6.0': {} - - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 - - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 - - '@stylistic/eslint-plugin@4.1.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - estraverse: 5.3.0 - picomatch: 4.0.2 - transitivePeerDependencies: - - supports-color - - typescript - - '@swc/cli@0.6.0(@swc/core@1.11.5)(chokidar@4.0.3)': - dependencies: - '@swc/core': 1.11.5 - '@swc/counter': 0.1.3 - '@xhmikosr/bin-wrapper': 13.0.5 - commander: 8.3.0 - fast-glob: 3.3.3 - minimatch: 9.0.5 - piscina: 4.8.0 - semver: 7.7.1 - slash: 3.0.0 - source-map: 0.7.4 - optionalDependencies: - chokidar: 4.0.3 - - '@swc/core-darwin-arm64@1.11.5': - optional: true - - '@swc/core-darwin-x64@1.11.5': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.11.5': - optional: true - - '@swc/core-linux-arm64-gnu@1.11.5': - optional: true - - '@swc/core-linux-arm64-musl@1.11.5': - optional: true - - '@swc/core-linux-x64-gnu@1.11.5': - optional: true - - '@swc/core-linux-x64-musl@1.11.5': - optional: true - - '@swc/core-win32-arm64-msvc@1.11.5': - optional: true - - '@swc/core-win32-ia32-msvc@1.11.5': - optional: true - - '@swc/core-win32-x64-msvc@1.11.5': - optional: true - - '@swc/core@1.11.5': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.19 - optionalDependencies: - '@swc/core-darwin-arm64': 1.11.5 - '@swc/core-darwin-x64': 1.11.5 - '@swc/core-linux-arm-gnueabihf': 1.11.5 - '@swc/core-linux-arm64-gnu': 1.11.5 - '@swc/core-linux-arm64-musl': 1.11.5 - '@swc/core-linux-x64-gnu': 1.11.5 - '@swc/core-linux-x64-musl': 1.11.5 - '@swc/core-win32-arm64-msvc': 1.11.5 - '@swc/core-win32-ia32-msvc': 1.11.5 - '@swc/core-win32-x64-msvc': 1.11.5 - - '@swc/counter@0.1.3': {} - - '@swc/types@0.1.19': - dependencies: - '@swc/counter': 0.1.3 - - '@szmarczak/http-timer@5.0.1': - dependencies: - defer-to-connect: 2.0.1 - - '@tokenizer/token@0.3.0': {} - - '@trysound/sax@0.2.0': {} - - '@tsconfig/node10@1.0.11': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@types/accepts@1.3.7': - dependencies: - '@types/node': 22.13.8 - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.26.9 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.26.9 - - '@types/body-parser@1.19.5': - dependencies: - '@types/connect': 3.4.38 - '@types/node': 22.13.8 - - '@types/connect@3.4.38': - dependencies: - '@types/node': 22.13.8 - - '@types/content-disposition@0.5.8': {} - - '@types/conventional-commits-parser@5.0.1': - dependencies: - '@types/node': 22.13.8 - - '@types/cookiejar@2.1.5': {} - - '@types/cookies@0.9.0': - dependencies: - '@types/connect': 3.4.38 - '@types/express': 5.0.0 - '@types/keygrip': 1.0.6 - '@types/node': 22.13.8 - - '@types/debug@4.1.12': - dependencies: - '@types/ms': 2.1.0 - - '@types/doctrine@0.0.9': {} - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.6 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.6': {} - - '@types/express-serve-static-core@5.0.6': - dependencies: - '@types/node': 22.13.8 - '@types/qs': 6.9.18 - '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 - - '@types/express@5.0.0': - dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 5.0.6 - '@types/qs': 6.9.18 - '@types/serve-static': 1.15.7 - - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 22.13.8 - - '@types/http-assert@1.5.6': {} - - '@types/http-cache-semantics@4.0.4': {} - - '@types/http-errors@2.0.4': {} - - '@types/istanbul-lib-coverage@2.0.6': {} - - '@types/istanbul-lib-report@3.0.3': - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 - - '@types/istanbul-reports@3.0.4': - dependencies: - '@types/istanbul-lib-report': 3.0.3 - - '@types/jest@29.5.14': - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - - '@types/json-schema@7.0.15': {} - - '@types/keygrip@1.0.6': {} - - '@types/koa-compose@3.2.8': - dependencies: - '@types/koa': 2.15.0 - - '@types/koa@2.15.0': - dependencies: - '@types/accepts': 1.3.7 - '@types/content-disposition': 0.5.8 - '@types/cookies': 0.9.0 - '@types/http-assert': 1.5.6 - '@types/http-errors': 2.0.4 - '@types/keygrip': 1.0.6 - '@types/koa-compose': 3.2.8 - '@types/node': 22.13.8 - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/methods@1.1.4': {} - - '@types/mime@1.3.5': {} - - '@types/ms@2.1.0': {} - - '@types/node-forge@1.3.11': - dependencies: - '@types/node': 22.13.8 - - '@types/node@22.13.8': - dependencies: - undici-types: 6.20.0 - - '@types/normalize-package-data@2.4.4': {} - - '@types/picomatch@3.0.2': {} - - '@types/qs@6.9.18': {} - - '@types/range-parser@1.2.7': {} - - '@types/resolve@1.20.2': {} - - '@types/send@0.17.4': - dependencies: - '@types/mime': 1.3.5 - '@types/node': 22.13.8 - - '@types/serve-static@1.15.7': - dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.13.8 - '@types/send': 0.17.4 - - '@types/stack-utils@2.0.3': {} - - '@types/superagent@8.1.9': - dependencies: - '@types/cookiejar': 2.1.5 - '@types/methods': 1.1.4 - '@types/node': 22.13.8 - form-data: 4.0.2 - - '@types/supertest@6.0.2': - dependencies: - '@types/methods': 1.1.4 - '@types/superagent': 8.1.9 - - '@types/unist@3.0.3': {} - - '@types/yargs-parser@21.0.3': {} - - '@types/yargs@17.0.33': - dependencies: - '@types/yargs-parser': 21.0.3 - - '@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.25.0 - '@typescript-eslint/type-utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.25.0 - eslint: 9.21.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.25.0 - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.25.0 - debug: 4.4.0 - eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.25.0': - dependencies: - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/visitor-keys': 8.25.0 - - '@typescript-eslint/type-utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0 - eslint: 9.21.0(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.25.0': {} - - '@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/visitor-keys': 8.25.0 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.25.0 - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.25.0': - dependencies: - '@typescript-eslint/types': 8.25.0 - eslint-visitor-keys: 4.2.0 - - '@vitest/coverage-v8@3.0.7(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 1.0.2 - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.17 - magicast: 0.3.5 - std-env: 3.8.0 - test-exclude: 7.0.1 - tinyrainbow: 2.0.0 - vitest: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color - - '@vitest/eslint-plugin@1.1.36(@typescript-eslint/utils@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)(vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': - dependencies: - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - optionalDependencies: - typescript: 5.7.3 - vitest: 3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - - '@vitest/expect@3.0.7': - dependencies: - '@vitest/spy': 3.0.7 - '@vitest/utils': 3.0.7 - chai: 5.2.0 - tinyrainbow: 2.0.0 - - '@vitest/mocker@3.0.7(vite@6.2.0(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))': - dependencies: - '@vitest/spy': 3.0.7 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 6.2.0(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - - '@vitest/pretty-format@3.0.7': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/runner@3.0.7': - dependencies: - '@vitest/utils': 3.0.7 - pathe: 2.0.3 - - '@vitest/snapshot@3.0.7': - dependencies: - '@vitest/pretty-format': 3.0.7 - magic-string: 0.30.17 - pathe: 2.0.3 - - '@vitest/spy@3.0.7': - dependencies: - tinyspy: 3.0.2 - - '@vitest/utils@3.0.7': - dependencies: - '@vitest/pretty-format': 3.0.7 - loupe: 3.1.3 - tinyrainbow: 2.0.0 - - '@vue/compiler-core@3.5.13': - dependencies: - '@babel/parser': 7.26.9 - '@vue/shared': 3.5.13 - entities: 4.5.0 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.13': - dependencies: - '@vue/compiler-core': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/compiler-sfc@3.5.13': - dependencies: - '@babel/parser': 7.26.9 - '@vue/compiler-core': 3.5.13 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-ssr': 3.5.13 - '@vue/shared': 3.5.13 - estree-walker: 2.0.2 - magic-string: 0.30.17 - postcss: 8.5.3 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.13': - dependencies: - '@vue/compiler-dom': 3.5.13 - '@vue/shared': 3.5.13 - - '@vue/shared@3.5.13': {} - - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xhmikosr/archive-type@7.0.0': - dependencies: - file-type: 19.6.0 - - '@xhmikosr/bin-check@7.0.3': - dependencies: - execa: 5.1.1 - isexe: 2.0.0 - - '@xhmikosr/bin-wrapper@13.0.5': - dependencies: - '@xhmikosr/bin-check': 7.0.3 - '@xhmikosr/downloader': 15.0.1 - '@xhmikosr/os-filter-obj': 3.0.0 - bin-version-check: 5.1.0 - - '@xhmikosr/decompress-tar@8.0.1': - dependencies: - file-type: 19.6.0 - is-stream: 2.0.1 - tar-stream: 3.1.7 - - '@xhmikosr/decompress-tarbz2@8.0.2': - dependencies: - '@xhmikosr/decompress-tar': 8.0.1 - file-type: 19.6.0 - is-stream: 2.0.1 - seek-bzip: 2.0.0 - unbzip2-stream: 1.4.3 - - '@xhmikosr/decompress-targz@8.0.1': - dependencies: - '@xhmikosr/decompress-tar': 8.0.1 - file-type: 19.6.0 - is-stream: 2.0.1 - - '@xhmikosr/decompress-unzip@7.0.0': - dependencies: - file-type: 19.6.0 - get-stream: 6.0.1 - yauzl: 3.2.0 - - '@xhmikosr/decompress@10.0.1': - dependencies: - '@xhmikosr/decompress-tar': 8.0.1 - '@xhmikosr/decompress-tarbz2': 8.0.2 - '@xhmikosr/decompress-targz': 8.0.1 - '@xhmikosr/decompress-unzip': 7.0.0 - graceful-fs: 4.2.11 - make-dir: 4.0.0 - strip-dirs: 3.0.0 - - '@xhmikosr/downloader@15.0.1': - dependencies: - '@xhmikosr/archive-type': 7.0.0 - '@xhmikosr/decompress': 10.0.1 - content-disposition: 0.5.4 - defaults: 3.0.0 - ext-name: 5.0.0 - file-type: 19.6.0 - filenamify: 6.0.0 - get-stream: 6.0.1 - got: 13.0.0 - - '@xhmikosr/os-filter-obj@3.0.0': - dependencies: - arch: 3.0.0 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - abstract-logging@2.0.1: {} - - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - - accepts@2.0.0: - dependencies: - mime-types: 3.0.0 - negotiator: 1.0.0 - - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.0 - - acorn@8.14.0: {} - - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-formats@3.0.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - ansi-colors@4.1.3: {} - - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - - ansi-regex@5.0.1: {} - - ansi-regex@6.1.0: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - ansi-styles@6.2.1: {} - - ansis@3.16.0: {} - - ansis@3.17.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - append-field@1.0.0: {} - - arch@3.0.0: {} - - are-docs-informative@0.0.2: {} - - arg@4.1.3: {} - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - - argparse@2.0.1: {} - - args-tokenizer@0.3.0: {} - - array-flatten@1.1.1: {} - - array-ify@1.0.0: {} - - array-timsort@1.0.3: {} - - asap@2.0.6: {} - - assertion-error@2.0.1: {} - - async@3.2.6: {} - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - atomic-sleep@1.0.0: {} - - autoprefixer@10.4.20(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001701 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - avvio@9.1.0: - dependencies: - '@fastify/error': 4.0.0 - fastq: 1.19.1 - - axios@1.8.1: - dependencies: - follow-redirects: 1.15.9 - form-data: 4.0.2 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - - b4a@1.6.7: {} - - babel-jest@29.7.0(@babel/core@7.26.9): - dependencies: - '@babel/core': 7.26.9 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.9) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.26.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.26.9 - '@babel/types': 7.26.9 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.9): - dependencies: - '@babel/core': 7.26.9 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.9) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.9) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.9) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.9) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.9) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.9) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.9) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.9) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.9) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.9) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.9) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.9) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.9) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.9) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.9) - - babel-preset-jest@29.6.3(@babel/core@7.26.9): - dependencies: - '@babel/core': 7.26.9 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.9) - - balanced-match@1.0.2: {} - - bare-events@2.5.4: - optional: true - - base64-js@1.5.1: {} - - bin-version-check@5.1.0: - dependencies: - bin-version: 6.0.0 - semver: 7.7.1 - semver-truncate: 3.0.0 - - bin-version@6.0.0: - dependencies: - execa: 5.1.1 - find-versions: 5.1.0 - - 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@1.20.3: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.13.0 - raw-body: 2.5.2 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - body-parser@2.1.0: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 4.4.0 - http-errors: 2.0.0 - iconv-lite: 0.5.2 - on-finished: 2.4.1 - qs: 6.14.0 - raw-body: 3.0.0 - type-is: 2.0.0 - transitivePeerDependencies: - - supports-color - - boolbase@1.0.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001701 - electron-to-chromium: 1.5.109 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.24.4) - - bs-logger@0.2.6: - dependencies: - fast-json-stable-stringify: 2.1.0 - - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - - buffer-crc32@0.2.13: {} - - buffer-from@1.1.2: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - builtin-modules@4.0.0: {} - - bumpp@10.0.3(magicast@0.3.5): - dependencies: - args-tokenizer: 0.3.0 - c12: 2.0.4(magicast@0.3.5) - cac: 6.7.14 - escalade: 3.2.0 - js-yaml: 4.1.0 - jsonc-parser: 3.3.1 - package-manager-detector: 0.2.11 - prompts: 2.4.2 - semver: 7.7.1 - tinyexec: 0.3.2 - tinyglobby: 0.2.12 - transitivePeerDependencies: - - magicast - - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - - bytes@3.1.2: {} - - c12@2.0.4(magicast@0.3.5): - dependencies: - chokidar: 4.0.3 - confbox: 0.1.8 - defu: 6.1.4 - dotenv: 16.4.7 - giget: 1.2.5 - jiti: 2.4.2 - mlly: 1.7.4 - ohash: 2.0.9 - pathe: 2.0.3 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - rc9: 2.1.2 - optionalDependencies: - magicast: 0.3.5 - - cac@6.7.14: {} - - cache-content-type@1.0.1: - dependencies: - mime-types: 2.1.35 - ylru: 1.4.0 - - cacheable-lookup@7.0.0: {} - - cacheable-request@10.2.14: - dependencies: - '@types/http-cache-semantics': 4.0.4 - get-stream: 6.0.1 - http-cache-semantics: 4.1.1 - keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.1 - responselike: 3.0.0 - - cachedir@2.3.0: {} - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - callsites@3.1.0: {} - - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001701 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001701: {} - - ccount@2.0.1: {} - - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.4.1: {} - - char-regex@1.0.2: {} - - character-entities@2.0.2: {} - - chardet@0.7.0: {} - - check-error@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 - - chownr@2.0.0: {} - - chrome-trace-event@1.0.4: {} - - ci-info@3.9.0: {} - - ci-info@4.1.0: {} - - citty@0.1.6: - dependencies: - consola: 3.4.0 - - cjs-module-lexer@1.4.3: {} - - clean-regexp@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.9.2: {} - - cli-table3@0.6.5: - dependencies: - string-width: 4.2.3 - optionalDependencies: - '@colors/colors': 1.5.0 - - cli-width@3.0.0: {} - - cli-width@4.1.0: {} - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - clone@1.0.4: {} - - co@4.6.0: {} - - collect-v8-coverage@1.0.2: {} - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - colord@2.9.3: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - commander@11.1.0: {} - - commander@2.20.3: {} - - commander@4.1.1: {} - - commander@6.2.1: {} - - commander@7.2.0: {} - - commander@8.3.0: {} - - comment-json@4.2.5: - dependencies: - array-timsort: 1.0.3 - core-util-is: 1.0.3 - esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 - - comment-parser@1.4.1: {} - - commitizen@4.3.1(@types/node@22.13.8)(typescript@5.7.3): - dependencies: - cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@types/node@22.13.8)(typescript@5.7.3) - dedent: 0.7.0 - detect-indent: 6.1.0 - find-node-modules: 2.1.3 - find-root: 1.1.0 - fs-extra: 9.1.0 - glob: 7.2.3 - inquirer: 8.2.5 - is-utf8: 0.2.1 - lodash: 4.17.21 - minimist: 1.2.7 - strip-bom: 4.0.0 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@types/node' - - typescript - - commondir@1.0.1: {} - - compare-func@2.0.0: - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - - component-emitter@1.3.1: {} - - concat-map@0.0.1: {} - - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - - confbox@0.1.8: {} - - consola@3.4.0: {} - - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 - - content-disposition@1.0.0: - dependencies: - safe-buffer: 5.2.1 - - content-type@1.0.5: {} - - conventional-changelog-angular@7.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-conventionalcommits@7.0.2: - dependencies: - compare-func: 2.0.0 - - conventional-commit-types@3.0.0: {} - - conventional-commits-parser@5.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 - - convert-source-map@2.0.0: {} - - cookie-signature@1.0.6: {} - - cookie-signature@1.2.2: {} - - cookie@0.7.1: {} - - cookie@1.0.2: {} - - cookiejar@2.1.4: {} - - cookies@0.9.1: - dependencies: - depd: 2.0.0 - keygrip: 1.1.0 - - core-js-compat@3.41.0: - dependencies: - browserslist: 4.24.4 - - core-util-is@1.0.3: {} - - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.8)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): - dependencies: - '@types/node': 22.13.8 - cosmiconfig: 9.0.0(typescript@5.7.3) - jiti: 2.4.2 - typescript: 5.7.3 - - cosmiconfig@8.3.6(typescript@5.7.3): - dependencies: - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.7.3 - - cosmiconfig@9.0.0(typescript@5.7.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.7.3 - - create-jest@29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - create-require@1.1.1: {} - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-declaration-sorter@7.2.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - - css-what@6.1.0: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@7.0.6(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 10.1.1(postcss@8.5.3) - postcss-colormin: 7.0.2(postcss@8.5.3) - postcss-convert-values: 7.0.4(postcss@8.5.3) - postcss-discard-comments: 7.0.3(postcss@8.5.3) - postcss-discard-duplicates: 7.0.1(postcss@8.5.3) - postcss-discard-empty: 7.0.0(postcss@8.5.3) - postcss-discard-overridden: 7.0.0(postcss@8.5.3) - postcss-merge-longhand: 7.0.4(postcss@8.5.3) - postcss-merge-rules: 7.0.4(postcss@8.5.3) - postcss-minify-font-values: 7.0.0(postcss@8.5.3) - postcss-minify-gradients: 7.0.0(postcss@8.5.3) - postcss-minify-params: 7.0.2(postcss@8.5.3) - postcss-minify-selectors: 7.0.4(postcss@8.5.3) - postcss-normalize-charset: 7.0.0(postcss@8.5.3) - postcss-normalize-display-values: 7.0.0(postcss@8.5.3) - postcss-normalize-positions: 7.0.0(postcss@8.5.3) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) - postcss-normalize-string: 7.0.0(postcss@8.5.3) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) - postcss-normalize-unicode: 7.0.2(postcss@8.5.3) - postcss-normalize-url: 7.0.0(postcss@8.5.3) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) - postcss-ordered-values: 7.0.1(postcss@8.5.3) - postcss-reduce-initial: 7.0.2(postcss@8.5.3) - postcss-reduce-transforms: 7.0.0(postcss@8.5.3) - postcss-svgo: 7.0.1(postcss@8.5.3) - postcss-unique-selectors: 7.0.3(postcss@8.5.3) - - cssnano-utils@5.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - cssnano@7.0.6(postcss@8.5.3): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.3) - lilconfig: 3.1.3 - postcss: 8.5.3 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - cz-conventional-changelog@3.3.0(@types/node@22.13.8)(typescript@5.7.3): - dependencies: - chalk: 2.4.2 - commitizen: 4.3.1(@types/node@22.13.8)(typescript@5.7.3) - conventional-commit-types: 3.0.0 - lodash.map: 4.6.0 - longest: 2.0.1 - word-wrap: 1.2.5 - optionalDependencies: - '@commitlint/load': 19.6.1(@types/node@22.13.8)(typescript@5.7.3) - transitivePeerDependencies: - - '@types/node' - - typescript - - cz-git@1.11.0: {} - - dargs@8.1.0: {} - - dayjs@1.11.13: {} - - debug@2.6.9: - dependencies: - ms: 2.0.0 - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.3.6: - dependencies: - ms: 2.1.2 - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decode-named-character-reference@1.0.2: - dependencies: - character-entities: 2.0.2 - - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - - dedent@0.7.0: {} - - dedent@1.5.3: {} - - deep-eql@5.0.2: {} - - deep-equal@1.0.1: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - defaults@1.0.4: - dependencies: - clone: 1.0.4 - - defaults@3.0.0: {} - - defer-to-connect@2.0.1: {} - - defu@6.1.4: {} - - delayed-stream@1.0.0: {} - - delegates@1.0.0: {} - - depd@1.1.2: {} - - depd@2.0.0: {} - - dequal@2.0.3: {} - - destr@2.0.3: {} - - destroy@1.2.0: {} - - detect-file@1.0.0: {} - - detect-indent@6.1.0: {} - - detect-newline@3.1.0: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - dezalgo@1.0.4: - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 - - diff-sequences@29.6.3: {} - - diff@4.0.2: {} - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - - dotenv@16.4.7: {} - - 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: {} - - ejs@3.1.10: - dependencies: - jake: 10.9.2 - - electron-to-chromium@1.5.109: {} - - emittery@0.13.1: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - encodeurl@1.0.2: {} - - encodeurl@2.0.0: {} - - enhanced-resolve@5.18.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - entities@4.5.0: {} - - env-paths@2.2.1: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - error-stack-parser-es@1.0.5: {} - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-module-lexer@1.6.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@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - - esbuild@0.25.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.0 - '@esbuild/android-arm': 0.25.0 - '@esbuild/android-arm64': 0.25.0 - '@esbuild/android-x64': 0.25.0 - '@esbuild/darwin-arm64': 0.25.0 - '@esbuild/darwin-x64': 0.25.0 - '@esbuild/freebsd-arm64': 0.25.0 - '@esbuild/freebsd-x64': 0.25.0 - '@esbuild/linux-arm': 0.25.0 - '@esbuild/linux-arm64': 0.25.0 - '@esbuild/linux-ia32': 0.25.0 - '@esbuild/linux-loong64': 0.25.0 - '@esbuild/linux-mips64el': 0.25.0 - '@esbuild/linux-ppc64': 0.25.0 - '@esbuild/linux-riscv64': 0.25.0 - '@esbuild/linux-s390x': 0.25.0 - '@esbuild/linux-x64': 0.25.0 - '@esbuild/netbsd-arm64': 0.25.0 - '@esbuild/netbsd-x64': 0.25.0 - '@esbuild/openbsd-arm64': 0.25.0 - '@esbuild/openbsd-x64': 0.25.0 - '@esbuild/sunos-x64': 0.25.0 - '@esbuild/win32-arm64': 0.25.0 - '@esbuild/win32-ia32': 0.25.0 - '@esbuild/win32-x64': 0.25.0 - - escalade@3.2.0: {} - - escape-html@1.0.3: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@2.0.0: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - eslint-compat-utils@0.5.1(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - semver: 7.7.1 - - eslint-compat-utils@0.6.4(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - semver: 7.7.1 - - eslint-config-flat-gitignore@2.1.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@eslint/compat': 1.2.7(eslint@9.21.0(jiti@2.4.2)) - eslint: 9.21.0(jiti@2.4.2) - - eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - - eslint-flat-config-utils@2.0.1: - dependencies: - pathe: 2.0.3 - - eslint-import-resolver-node@0.3.9: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.1 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - - eslint-json-compat-utils@0.2.1(eslint@9.21.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - esquery: 1.6.0 - jsonc-eslint-parser: 2.4.0 - - eslint-merge-processors@2.0.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - - eslint-plugin-antfu@3.1.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - - eslint-plugin-command@3.1.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@es-joy/jsdoccomment': 0.50.0 - eslint: 9.21.0(jiti@2.4.2) - - eslint-plugin-es-x@7.8.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - eslint: 9.21.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.21.0(jiti@2.4.2)) - - eslint-plugin-import-x@4.6.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@types/doctrine': 0.0.9 - '@typescript-eslint/scope-manager': 8.25.0 - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0 - doctrine: 3.0.0 - enhanced-resolve: 5.18.1 - eslint: 9.21.0(jiti@2.4.2) - eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.10.0 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.1 - stable-hash: 0.0.4 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-jsdoc@50.6.3(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@es-joy/jsdoccomment': 0.49.0 - are-docs-informative: 0.0.2 - comment-parser: 1.4.1 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint: 9.21.0(jiti@2.4.2) - espree: 10.3.0 - esquery: 1.6.0 - parse-imports: 2.2.1 - semver: 7.7.1 - spdx-expression-parse: 4.0.0 - synckit: 0.9.2 - transitivePeerDependencies: - - supports-color - - eslint-plugin-jsonc@2.19.1(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - eslint: 9.21.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.21.0(jiti@2.4.2)) - eslint-json-compat-utils: 0.2.1(eslint@9.21.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) - espree: 9.6.1 - graphemer: 1.4.0 - jsonc-eslint-parser: 2.4.0 - natural-compare: 1.4.0 - synckit: 0.6.2 - transitivePeerDependencies: - - '@eslint/json' - - eslint-plugin-n@17.16.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - enhanced-resolve: 5.18.1 - eslint: 9.21.0(jiti@2.4.2) - eslint-plugin-es-x: 7.8.0(eslint@9.21.0(jiti@2.4.2)) - get-tsconfig: 4.10.0 - globals: 15.15.0 - ignore: 5.3.2 - minimatch: 9.0.5 - semver: 7.7.1 - ts-declaration-location: 1.0.5(typescript@5.7.3) - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-no-only-tests@3.3.0: {} - - eslint-plugin-perfectionist@4.9.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - natural-orderby: 5.0.0 - transitivePeerDependencies: - - supports-color - - typescript - - eslint-plugin-prettier@5.2.3(@types/eslint@9.6.1)(eslint-config-prettier@10.0.2(eslint@9.21.0(jiti@2.4.2)))(eslint@9.21.0(jiti@2.4.2))(prettier@3.5.2): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - prettier: 3.5.2 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.2 - optionalDependencies: - '@types/eslint': 9.6.1 - eslint-config-prettier: 10.0.2(eslint@9.21.0(jiti@2.4.2)) - - eslint-plugin-regexp@2.7.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - comment-parser: 1.4.1 - eslint: 9.21.0(jiti@2.4.2) - jsdoc-type-pratt-parser: 4.1.0 - refa: 0.12.1 - regexp-ast-analysis: 0.7.1 - scslre: 0.3.0 - - eslint-plugin-toml@0.12.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - debug: 4.4.0 - eslint: 9.21.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.21.0(jiti@2.4.2)) - lodash: 4.17.21 - toml-eslint-parser: 0.10.0 - transitivePeerDependencies: - - supports-color - - eslint-plugin-unicorn@57.0.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - ci-info: 4.1.0 - clean-regexp: 1.0.0 - core-js-compat: 3.41.0 - eslint: 9.21.0(jiti@2.4.2) - esquery: 1.6.0 - globals: 15.15.0 - indent-string: 5.0.0 - is-builtin-module: 4.0.0 - jsesc: 3.1.0 - pluralize: 8.0.0 - read-package-up: 11.0.0 - regexp-tree: 0.1.27 - regjsparser: 0.12.0 - semver: 7.7.1 - strip-indent: 4.0.0 - - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - - eslint-plugin-vue@9.32.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - eslint: 9.21.0(jiti@2.4.2) - globals: 13.24.0 - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 6.1.2 - semver: 7.7.1 - vue-eslint-parser: 9.4.3(eslint@9.21.0(jiti@2.4.2)) - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - supports-color - - eslint-plugin-yml@1.17.0(eslint@9.21.0(jiti@2.4.2)): - dependencies: - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint: 9.21.0(jiti@2.4.2) - eslint-compat-utils: 0.6.4(eslint@9.21.0(jiti@2.4.2)) - natural-compare: 1.4.0 - yaml-eslint-parser: 1.3.0 - transitivePeerDependencies: - - supports-color - - eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.21.0(jiti@2.4.2)): - dependencies: - '@vue/compiler-sfc': 3.5.13 - eslint: 9.21.0(jiti@2.4.2) - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@9.21.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.0 - '@eslint/js': 9.21.0 - '@eslint/plugin-kit': 0.2.7 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - - espree@9.6.1: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 3.4.3 - - esprima@4.0.1: {} - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.6 - - esutils@2.0.3: {} - - etag@1.8.1: {} - - events@3.3.0: {} - - execa@5.1.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - exit@0.1.2: {} - - expand-tilde@2.0.2: - dependencies: - homedir-polyfill: 1.0.3 - - expect-type@1.2.0: {} - - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - - express@4.21.2: - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.20.3 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.3.1 - fresh: 0.5.2 - http-errors: 2.0.0 - merge-descriptors: 1.0.3 - methods: 1.1.2 - on-finished: 2.4.1 - parseurl: 1.3.3 - path-to-regexp: 0.1.12 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - safe-buffer: 5.2.1 - send: 0.19.0 - serve-static: 1.16.2 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - express@5.0.1: - dependencies: - accepts: 2.0.0 - body-parser: 2.1.0 - content-disposition: 1.0.0 - content-type: 1.0.5 - cookie: 0.7.1 - cookie-signature: 1.2.2 - debug: 4.3.6 - depd: 2.0.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 2.0.0 - fresh: 2.0.0 - http-errors: 2.0.0 - merge-descriptors: 2.0.0 - methods: 1.1.2 - mime-types: 3.0.0 - on-finished: 2.4.1 - once: 1.4.0 - parseurl: 1.3.3 - proxy-addr: 2.0.7 - qs: 6.13.0 - range-parser: 1.2.1 - router: 2.1.0 - safe-buffer: 5.2.1 - send: 1.1.0 - serve-static: 2.1.0 - setprototypeof: 1.2.0 - statuses: 2.0.1 - type-is: 2.0.0 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - exsolve@1.0.1: {} - - ext-list@2.2.2: - dependencies: - mime-db: 1.53.0 - - ext-name@5.0.0: - dependencies: - ext-list: 2.2.2 - sort-keys-length: 1.0.1 - - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - - fast-decode-uri-component@1.0.1: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-fifo@1.3.2: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-json-stringify@6.0.1: - dependencies: - '@fastify/merge-json-schemas': 0.2.1 - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - fast-uri: 3.0.6 - json-schema-ref-resolver: 2.0.1 - rfdc: 1.4.1 - - fast-levenshtein@2.0.6: {} - - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 - - fast-redact@3.5.0: {} - - fast-safe-stringify@2.1.1: {} - - fast-uri@3.0.6: {} - - fastify-plugin@5.0.1: {} - - fastify@5.2.1: - dependencies: - '@fastify/ajv-compiler': 4.0.2 - '@fastify/error': 4.0.0 - '@fastify/fast-json-stringify-compiler': 5.0.2 - '@fastify/proxy-addr': 5.0.0 - abstract-logging: 2.0.1 - avvio: 9.1.0 - fast-json-stringify: 6.0.1 - find-my-way: 9.2.0 - light-my-request: 6.6.0 - pino: 9.6.0 - process-warning: 4.0.1 - rfdc: 1.4.1 - secure-json-parse: 3.0.2 - semver: 7.7.1 - toad-cache: 3.7.0 - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fdir@6.4.3(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - fecha@4.2.3: {} - - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - file-type@19.6.0: - dependencies: - get-stream: 9.0.1 - strtok3: 9.1.1 - token-types: 6.0.0 - uint8array-extras: 1.4.0 - - filelist@1.0.4: - dependencies: - minimatch: 5.1.6 - - filename-reserved-regex@3.0.0: {} - - filenamify@6.0.0: - dependencies: - filename-reserved-regex: 3.0.0 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - finalhandler@1.3.1: - dependencies: - debug: 2.6.9 - encodeurl: 2.0.0 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - finalhandler@2.0.0: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.4.1 - parseurl: 1.3.3 - statuses: 2.0.1 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - find-my-way@9.2.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-querystring: 1.1.2 - safe-regex2: 4.0.1 - - find-node-modules@2.1.3: - dependencies: - findup-sync: 4.0.0 - merge: 2.1.1 - - find-root@1.1.0: {} - - find-up-simple@1.0.1: {} - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - - find-versions@5.1.0: - dependencies: - semver-regex: 4.0.5 - - findup-sync@4.0.0: - dependencies: - detect-file: 1.0.0 - is-glob: 4.0.3 - micromatch: 4.0.8 - resolve-dir: 1.0.1 - - fix-dts-default-cjs-exports@1.0.0: - dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.34.9 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flatted@3.3.3: {} - - follow-redirects@1.15.9: {} - - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fork-ts-checker-webpack-plugin@9.0.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.11.5)): - dependencies: - '@babel/code-frame': 7.26.2 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 8.3.6(typescript@5.7.3) - deepmerge: 4.3.1 - fs-extra: 10.1.0 - memfs: 3.5.3 - minimatch: 3.1.2 - node-abort-controller: 3.1.1 - schema-utils: 3.3.0 - semver: 7.7.1 - tapable: 2.2.1 - typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.11.5) - - form-data-encoder@2.1.4: {} - - form-data@4.0.2: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - mime-types: 2.1.35 - - formidable@3.5.2: - dependencies: - dezalgo: 1.0.4 - hexoid: 2.0.0 - once: 1.4.0 - - forwarded@0.2.0: {} - - fraction.js@4.3.7: {} - - fresh@0.5.2: {} - - fresh@2.0.0: {} - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - - fs-monkey@1.0.6: {} - - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - gensync@1.0.0-beta.2: {} - - 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-stream@9.0.1: - dependencies: - '@sec-ant/readable-stream': 0.4.1 - is-stream: 4.0.1 - - get-tsconfig@4.10.0: - dependencies: - resolve-pkg-maps: 1.0.0 - - giget@1.2.5: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - defu: 6.1.4 - node-fetch-native: 1.6.6 - nypm: 0.5.4 - pathe: 2.0.3 - tar: 6.2.1 - - git-raw-commits@4.0.0: - dependencies: - dargs: 8.1.0 - meow: 12.1.1 - split2: 4.2.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-to-regexp@0.4.1: {} - - glob@10.4.5: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - - glob@11.0.1: - dependencies: - foreground-child: 3.3.1 - jackspeak: 4.1.0 - minimatch: 10.0.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 2.0.0 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - - global-directory@4.0.1: - dependencies: - ini: 4.1.1 - - global-modules@1.0.0: - dependencies: - global-prefix: 1.0.2 - is-windows: 1.0.2 - resolve-dir: 1.0.1 - - global-prefix@1.0.2: - dependencies: - expand-tilde: 2.0.2 - homedir-polyfill: 1.0.3 - ini: 1.3.8 - is-windows: 1.0.2 - which: 1.3.1 - - globals@11.12.0: {} - - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - - globals@14.0.0: {} - - globals@15.15.0: {} - - gopd@1.2.0: {} - - got@13.0.0: - dependencies: - '@sindresorhus/is': 5.6.0 - '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.14 - decompress-response: 6.0.0 - form-data-encoder: 2.1.4 - get-stream: 6.0.1 - http2-wrapper: 2.2.1 - lowercase-keys: 3.0.0 - p-cancelable: 3.0.0 - responselike: 3.0.0 - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-own-prop@2.0.0: {} - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hexoid@2.0.0: {} - - homedir-polyfill@1.0.3: - dependencies: - parse-passwd: 1.0.0 - - hookable@5.5.3: {} - - hosted-git-info@7.0.2: - dependencies: - lru-cache: 10.4.3 - - html-escaper@2.0.2: {} - - http-assert@1.5.0: - dependencies: - deep-equal: 1.0.1 - http-errors: 1.8.1 - - http-cache-semantics@4.1.1: {} - - http-errors@1.8.1: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 1.5.0 - toidentifier: 1.0.1 - - http-errors@2.0.0: - dependencies: - depd: 2.0.0 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 2.0.1 - toidentifier: 1.0.1 - - http2-wrapper@2.2.1: - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - - human-signals@2.1.0: {} - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.5.2: - dependencies: - safer-buffer: 2.1.2 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - ieee754@1.2.1: {} - - ignore@5.3.2: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-local@3.2.0: - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - - import-meta-resolve@4.1.0: {} - - imurmurhash@0.1.4: {} - - indent-string@5.0.0: {} - - index-to-position@0.1.2: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - inherits@2.0.4: {} - - ini@1.3.8: {} - - ini@4.1.1: {} - - inquirer@8.2.5: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.21 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 7.0.0 - - inspect-with-kind@1.0.5: - dependencies: - kind-of: 6.0.3 - - ipaddr.js@1.9.1: {} - - ipaddr.js@2.2.0: {} - - is-arrayish@0.2.1: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-builtin-module@4.0.0: - dependencies: - builtin-modules: 4.0.0 - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-fn@2.1.0: {} - - is-generator-function@1.1.0: - dependencies: - call-bound: 1.0.3 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-interactive@1.0.0: {} - - is-module@1.0.0: {} - - is-number@7.0.0: {} - - is-obj@2.0.0: {} - - is-plain-obj@1.1.0: {} - - is-promise@4.0.0: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.6 - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.3 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-stream@2.0.1: {} - - is-stream@4.0.1: {} - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - - is-unicode-supported@0.1.0: {} - - is-utf8@0.2.1: {} - - is-windows@1.0.2: {} - - isarray@1.0.0: {} - - isexe@2.0.0: {} - - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.26.9 - '@babel/parser': 7.26.9 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.26.9 - '@babel/parser': 7.26.9 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.4.0 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - iterare@1.2.1: {} - - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jackspeak@4.1.0: - dependencies: - '@isaacs/cliui': 8.0.2 - - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)): - dependencies: - '@babel/core': 7.26.9 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.9) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.13.8 - ts-node: 10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 - - jest-each@29.7.0: - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 - - jest-environment-node@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - jest-get-type@29.6.3: {} - - jest-haste-map@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.13.8 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 - - jest-leak-detector@29.7.0: - dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-matcher-utils@29.7.0: - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - - jest-message-util@29.7.0: - dependencies: - '@babel/code-frame': 7.26.2 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 - - jest-mock@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - jest-util: 29.7.0 - - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 - - jest-regex-util@29.6.3: {} - - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.10 - resolve.exports: 2.0.3 - slash: 3.0.0 - - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - - jest-runtime@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - chalk: 4.1.2 - cjs-module-lexer: 1.4.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - - jest-snapshot@29.7.0: - dependencies: - '@babel/core': 7.26.9 - '@babel/generator': 7.26.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.9) - '@babel/types': 7.26.9 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.9) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - jest-util@29.7.0: - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 - - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.13.8 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - - jest-worker@27.5.1: - dependencies: - '@types/node': 22.13.8 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest-worker@29.7.0: - dependencies: - '@types/node': 22.13.8 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jest@29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)): - dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jiti@1.21.7: {} - - jiti@2.4.2: {} - - js-tokens@4.0.0: {} - - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - jsdoc-type-pratt-parser@4.1.0: {} - - jsesc@3.0.2: {} - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-ref-resolver@2.0.1: - dependencies: - dequal: 2.0.3 - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - jsonc-eslint-parser@2.4.0: - dependencies: - acorn: 8.14.0 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - semver: 7.7.1 - - jsonc-parser@3.3.1: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonparse@1.3.1: {} - - keygrip@1.1.0: - dependencies: - tsscmp: 1.0.6 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kind-of@6.0.3: {} - - kleur@3.0.3: {} - - knitwork@1.2.0: {} - - koa-compose@4.1.0: {} - - koa-convert@2.0.0: - dependencies: - co: 4.6.0 - koa-compose: 4.1.0 - - koa@2.16.0: - dependencies: - accepts: 1.3.8 - cache-content-type: 1.0.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookies: 0.9.1 - debug: 4.4.0 - delegates: 1.0.0 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - fresh: 0.5.2 - http-assert: 1.5.0 - http-errors: 1.8.1 - is-generator-function: 1.1.0 - koa-compose: 4.1.0 - koa-convert: 2.0.0 - on-finished: 2.4.1 - only: 0.0.2 - parseurl: 1.3.3 - statuses: 1.5.0 - type-is: 1.6.18 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - - lefthook-darwin-arm64@1.11.2: - optional: true - - lefthook-darwin-x64@1.11.2: - optional: true - - lefthook-freebsd-arm64@1.11.2: - optional: true - - lefthook-freebsd-x64@1.11.2: - optional: true - - lefthook-linux-arm64@1.11.2: - optional: true - - lefthook-linux-x64@1.11.2: - optional: true - - lefthook-openbsd-arm64@1.11.2: - optional: true - - lefthook-openbsd-x64@1.11.2: - optional: true - - lefthook-windows-arm64@1.11.2: - optional: true - - lefthook-windows-x64@1.11.2: - optional: true - - lefthook@1.11.2: - optionalDependencies: - lefthook-darwin-arm64: 1.11.2 - lefthook-darwin-x64: 1.11.2 - lefthook-freebsd-arm64: 1.11.2 - lefthook-freebsd-x64: 1.11.2 - lefthook-linux-arm64: 1.11.2 - lefthook-linux-x64: 1.11.2 - lefthook-openbsd-arm64: 1.11.2 - lefthook-openbsd-x64: 1.11.2 - lefthook-windows-arm64: 1.11.2 - lefthook-windows-x64: 1.11.2 - - leven@3.1.0: {} - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - light-my-request@6.5.1: - dependencies: - cookie: 1.0.2 - process-warning: 4.0.1 - set-cookie-parser: 2.7.1 - - light-my-request@6.6.0: - dependencies: - cookie: 1.0.2 - process-warning: 4.0.1 - set-cookie-parser: 2.7.1 - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - loader-runner@4.3.0: {} - - local-pkg@1.1.0: - dependencies: - mlly: 1.7.4 - pkg-types: 1.3.1 - quansync: 0.2.7 - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.kebabcase@4.1.1: {} - - lodash.map@4.6.0: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.mergewith@4.6.2: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - - lodash.uniq@4.5.0: {} - - lodash.upperfirst@4.3.1: {} - - lodash@4.17.21: {} - - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - - longest-streak@3.1.0: {} - - longest@2.0.1: {} - - loupe@3.1.3: {} - - lowercase-keys@3.0.0: {} - - lru-cache@10.4.3: {} - - lru-cache@11.0.2: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - magicast@0.3.5: - dependencies: - '@babel/parser': 7.26.9 - '@babel/types': 7.26.9 - source-map-js: 1.2.1 - - make-dir@4.0.0: - dependencies: - semver: 7.7.1 - - make-error@1.3.6: {} - - makeerror@1.0.12: - dependencies: - tmpl: 1.0.5 - - markdown-table@3.0.4: {} - - math-intrinsics@1.1.0: {} - - mdast-util-find-and-replace@3.0.2: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - mdast-util-from-markdown@2.0.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 - - mdast-util-gfm-footnote@2.1.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.1.0: - dependencies: - mdast-util-from-markdown: 2.0.2 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.0 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - - media-typer@0.3.0: {} - - media-typer@1.1.0: {} - - memfs@3.5.3: - dependencies: - fs-monkey: 1.0.6 - - meow@12.1.1: {} - - merge-descriptors@1.0.3: {} - - merge-descriptors@2.0.0: {} - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - merge@2.1.1: {} - - methods@1.1.2: {} - - micromark-core-commonmark@2.0.3: - dependencies: - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-table@2.1.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.0.2 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.2 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.2: {} - - micromark@4.0.2: - dependencies: - '@types/debug': 4.1.12 - debug: 4.4.0 - decode-named-character-reference: 1.0.2 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-db@1.53.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - mime-types@3.0.0: - dependencies: - mime-db: 1.53.0 - - mime@1.6.0: {} - - mime@2.6.0: {} - - mimic-fn@2.1.0: {} - - mimic-response@3.1.0: {} - - mimic-response@4.0.0: {} - - min-indent@1.0.1: {} - - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.7: {} - - minimist@1.2.8: {} - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - - minipass@7.1.2: {} - - minizlib@2.1.2: - dependencies: - minipass: 3.3.6 - yallist: 4.0.0 - - mkcert@3.2.0: - dependencies: - commander: 11.1.0 - node-forge: 1.3.1 - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - - mkdirp@1.0.4: {} - - mkdist@2.2.0(typescript@5.7.3): - dependencies: - autoprefixer: 10.4.20(postcss@8.5.3) - citty: 0.1.6 - cssnano: 7.0.6(postcss@8.5.3) - defu: 6.1.4 - esbuild: 0.24.2 - jiti: 1.21.7 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.1 - postcss: 8.5.3 - postcss-nested: 7.0.2(postcss@8.5.3) - semver: 7.7.1 - tinyglobby: 0.2.12 - optionalDependencies: - typescript: 5.7.3 - - mlly@1.7.4: - dependencies: - acorn: 8.14.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - ufo: 1.5.4 - - mnemonist@0.39.8: - dependencies: - obliterator: 2.0.5 - - ms@2.0.0: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - multer@1.4.5-lts.1: - dependencies: - append-field: 1.0.0 - busboy: 1.6.0 - concat-stream: 1.6.2 - mkdirp: 0.5.6 - object-assign: 4.1.1 - type-is: 1.6.18 - xtend: 4.0.2 - - mute-stream@0.0.8: {} - - mute-stream@2.0.0: {} - - nanoid@3.3.8: {} - - natural-compare@1.4.0: {} - - natural-orderby@5.0.0: {} - - negotiator@0.6.3: {} - - negotiator@1.0.0: {} - - neo-async@2.6.2: {} - - node-abort-controller@3.1.1: {} - - node-emoji@1.11.0: - dependencies: - lodash: 4.17.21 - - node-fetch-native@1.6.6: {} - - node-forge@1.3.1: {} - - node-int64@0.4.0: {} - - node-releases@2.0.19: {} - - normalize-package-data@6.0.2: - dependencies: - hosted-git-info: 7.0.2 - semver: 7.7.1 - validate-npm-package-license: 3.0.4 - - normalize-path@3.0.0: {} - - normalize-range@0.1.2: {} - - normalize-url@8.0.1: {} - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - nypm@0.5.4: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - pathe: 2.0.3 - pkg-types: 1.3.1 - tinyexec: 0.3.2 - ufo: 1.5.4 - - object-assign@4.1.1: {} - - object-inspect@1.13.4: {} - - obliterator@2.0.5: {} - - ohash@2.0.9: {} - - on-exit-leak-free@2.1.2: {} - - on-finished@2.4.1: - dependencies: - ee-first: 1.1.1 - - once@1.4.0: - dependencies: - wrappy: 1.0.2 - - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - - only@0.0.2: {} - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - os-tmpdir@1.0.2: {} - - p-cancelable@3.0.0: {} - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.1.1 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-try@2.2.0: {} - - package-json-from-dist@1.0.1: {} - - package-manager-detector@0.2.11: - dependencies: - quansync: 0.2.7 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-gitignore@2.0.0: {} - - parse-imports@2.2.1: - dependencies: - es-module-lexer: 1.6.0 - slashes: 3.0.12 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.26.2 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-json@8.1.0: - dependencies: - '@babel/code-frame': 7.26.2 - index-to-position: 0.1.2 - type-fest: 4.36.0 - - parse-passwd@1.0.0: {} - - parseurl@1.3.3: {} - - path-exists@4.0.0: {} - - path-exists@5.0.0: {} - - path-is-absolute@1.0.1: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.2 - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.0.2 - minipass: 7.1.2 - - path-to-regexp@0.1.12: {} - - path-to-regexp@8.2.0: {} - - path-type@4.0.0: {} - - pathe@1.1.2: {} - - pathe@2.0.3: {} - - pathval@2.0.0: {} - - peek-readable@5.4.2: {} - - pend@1.2.0: {} - - perfect-debounce@1.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.2: {} - - pino-abstract-transport@2.0.0: - dependencies: - split2: 4.2.0 - - pino-std-serializers@7.0.0: {} - - pino@9.6.0: - dependencies: - atomic-sleep: 1.0.0 - fast-redact: 3.5.0 - on-exit-leak-free: 2.1.2 - pino-abstract-transport: 2.0.0 - pino-std-serializers: 7.0.0 - process-warning: 4.0.1 - quick-format-unescaped: 4.0.4 - real-require: 0.2.0 - safe-stable-stringify: 2.5.0 - sonic-boom: 4.2.0 - thread-stream: 3.1.0 - - pirates@4.0.6: {} - - piscina@4.8.0: - optionalDependencies: - '@napi-rs/nice': 1.0.1 - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - pkg-types@1.3.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.4 - pathe: 2.0.3 - - pkg-types@2.0.1: - dependencies: - confbox: 0.1.8 - exsolve: 1.0.1 - pathe: 2.0.3 - - pluralize@8.0.0: {} - - postcss-calc@10.1.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - - postcss-colormin@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.4(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@7.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-discard-duplicates@7.0.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-discard-empty@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-discard-overridden@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-merge-longhand@7.0.4(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.3) - - postcss-merge-rules@7.0.4(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.0(postcss@8.5.3): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@7.0.4(postcss@8.5.3): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-nested@7.0.2(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 7.1.0 - - postcss-normalize-charset@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - postcss-normalize-display-values@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@7.0.1(postcss@8.5.3): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@7.0.2(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - postcss: 8.5.3 - - postcss-reduce-transforms@7.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@7.0.1(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@7.0.3(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.3: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@3.5.2: {} - - pretty-bytes@6.1.1: {} - - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - process-nextick-args@2.0.1: {} - - process-warning@4.0.1: {} - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - - proxy-addr@2.0.7: - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - - proxy-from-env@1.1.0: {} - - punycode@2.3.1: {} - - pure-rand@6.1.0: {} - - qs@6.13.0: - dependencies: - side-channel: 1.1.0 - - qs@6.14.0: - dependencies: - side-channel: 1.1.0 - - quansync@0.2.7: {} - - queue-microtask@1.2.3: {} - - quick-format-unescaped@4.0.4: {} - - quick-lru@5.1.1: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - range-parser@1.2.1: {} - - raw-body@2.5.2: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - - raw-body@3.0.0: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.6.3 - unpipe: 1.0.0 - - rc9@2.1.2: - dependencies: - defu: 6.1.4 - destr: 2.0.3 - - react-is@18.3.1: {} - - read-package-up@11.0.0: - dependencies: - find-up-simple: 1.0.1 - read-pkg: 9.0.1 - type-fest: 4.36.0 - - read-pkg@9.0.1: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.2 - parse-json: 8.1.0 - type-fest: 4.36.0 - unicorn-magic: 0.1.0 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.1.2: {} - - real-require@0.2.0: {} - - refa@0.12.1: - dependencies: - '@eslint-community/regexpp': 4.12.1 - - reflect-metadata@0.2.2: {} - - regexp-ast-analysis@0.7.1: - dependencies: - '@eslint-community/regexpp': 4.12.1 - refa: 0.12.1 - - regexp-tree@0.1.27: {} - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - repeat-string@1.6.1: {} - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - resolve-alpn@1.2.1: {} - - resolve-cwd@3.0.0: - dependencies: - resolve-from: 5.0.0 - - resolve-dir@1.0.1: - dependencies: - expand-tilde: 2.0.2 - global-modules: 1.0.0 - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve.exports@2.0.3: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - responselike@3.0.0: - dependencies: - lowercase-keys: 3.0.0 - - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - - ret@0.5.0: {} - - reusify@1.1.0: {} - - rfdc@1.4.1: {} - - rimraf@6.0.1: - dependencies: - glob: 11.0.1 - package-json-from-dist: 1.0.1 - - rollup-plugin-dts@6.1.1(rollup@4.34.9)(typescript@5.7.3): - dependencies: - magic-string: 0.30.17 - rollup: 4.34.9 - typescript: 5.7.3 - optionalDependencies: - '@babel/code-frame': 7.26.2 - - rollup@4.34.9: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.9 - '@rollup/rollup-android-arm64': 4.34.9 - '@rollup/rollup-darwin-arm64': 4.34.9 - '@rollup/rollup-darwin-x64': 4.34.9 - '@rollup/rollup-freebsd-arm64': 4.34.9 - '@rollup/rollup-freebsd-x64': 4.34.9 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.9 - '@rollup/rollup-linux-arm-musleabihf': 4.34.9 - '@rollup/rollup-linux-arm64-gnu': 4.34.9 - '@rollup/rollup-linux-arm64-musl': 4.34.9 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.9 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9 - '@rollup/rollup-linux-riscv64-gnu': 4.34.9 - '@rollup/rollup-linux-s390x-gnu': 4.34.9 - '@rollup/rollup-linux-x64-gnu': 4.34.9 - '@rollup/rollup-linux-x64-musl': 4.34.9 - '@rollup/rollup-win32-arm64-msvc': 4.34.9 - '@rollup/rollup-win32-ia32-msvc': 4.34.9 - '@rollup/rollup-win32-x64-msvc': 4.34.9 - fsevents: 2.3.3 - - router@2.1.0: - dependencies: - is-promise: 4.0.0 - parseurl: 1.3.3 - path-to-regexp: 8.2.0 - - run-async@2.4.1: {} - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - rxjs@7.8.1: - dependencies: - tslib: 2.8.1 - - rxjs@7.8.2: - dependencies: - tslib: 2.8.1 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.3 - es-errors: 1.3.0 - is-regex: 1.2.1 - - safe-regex2@4.0.1: - dependencies: - ret: 0.5.0 - - safe-stable-stringify@2.5.0: {} - - safer-buffer@2.1.2: {} - - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - - schema-utils@4.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - - scslre@0.3.0: - dependencies: - '@eslint-community/regexpp': 4.12.1 - refa: 0.12.1 - regexp-ast-analysis: 0.7.1 - - scule@1.3.0: {} - - secure-json-parse@3.0.2: {} - - seek-bzip@2.0.0: - dependencies: - commander: 6.2.1 - - semver-regex@4.0.5: {} - - semver-truncate@3.0.0: - dependencies: - semver: 7.7.1 - - semver@6.3.1: {} - - semver@7.7.1: {} - - send@0.19.0: - dependencies: - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime: 1.6.0 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - send@1.1.0: - dependencies: - debug: 4.3.6 - destroy: 1.2.0 - encodeurl: 2.0.0 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 2.0.0 - mime-types: 2.1.35 - ms: 2.1.3 - on-finished: 2.4.1 - range-parser: 1.2.1 - statuses: 2.0.1 - transitivePeerDependencies: - - supports-color - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - serve-static@1.16.2: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.19.0 - transitivePeerDependencies: - - supports-color - - serve-static@2.1.0: - dependencies: - encodeurl: 2.0.0 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 1.1.0 - transitivePeerDependencies: - - supports-color - - set-cookie-parser@2.7.1: {} - - setprototypeof@1.2.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - 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.3 - 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.3 - 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 - - siginfo@2.0.0: {} - - signal-exit@3.0.7: {} - - signal-exit@4.1.0: {} - - sisteransi@1.0.5: {} - - slash@3.0.0: {} - - slashes@3.0.12: {} - - sonic-boom@4.2.0: - dependencies: - atomic-sleep: 1.0.0 - - sort-keys-length@1.0.1: - dependencies: - sort-keys: 1.1.2 - - sort-keys@1.1.2: - dependencies: - is-plain-obj: 1.1.0 - - source-map-js@1.2.1: {} - - source-map-support@0.5.13: - dependencies: - 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: {} - - source-map@0.7.4: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.21 - - spdx-exceptions@2.5.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - - spdx-expression-parse@4.0.0: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.21 - - spdx-license-ids@3.0.21: {} - - split2@4.2.0: {} - - sprintf-js@1.0.3: {} - - stable-hash@0.0.4: {} - - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - - stackback@0.0.2: {} - - statuses@1.5.0: {} - - statuses@2.0.1: {} - - std-env@3.8.0: {} - - streamsearch@1.1.0: {} - - streamx@2.22.0: - dependencies: - fast-fifo: 1.3.2 - text-decoder: 1.2.3 - optionalDependencies: - bare-events: 2.5.4 - - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.1.0 - - strip-bom@3.0.0: {} - - strip-bom@4.0.0: {} - - strip-dirs@3.0.0: - dependencies: - inspect-with-kind: 1.0.5 - is-plain-obj: 1.1.0 - - strip-final-newline@2.0.0: {} - - strip-indent@4.0.0: - dependencies: - min-indent: 1.0.1 - - strip-json-comments@3.1.1: {} - - strtok3@9.1.1: - dependencies: - '@tokenizer/token': 0.3.0 - peek-readable: 5.4.2 - - stylehacks@7.0.4(postcss@8.5.3): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 - - superagent@9.0.2: - dependencies: - component-emitter: 1.3.1 - cookiejar: 2.1.4 - debug: 4.4.0 - fast-safe-stringify: 2.1.1 - form-data: 4.0.2 - formidable: 3.5.2 - methods: 1.1.2 - mime: 2.6.0 - qs: 6.14.0 - transitivePeerDependencies: - - supports-color - - supertest@7.0.0: - dependencies: - methods: 1.1.2 - superagent: 9.0.2 - transitivePeerDependencies: - - supports-color - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svgo@3.3.2: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.1.1 - - symbol-observable@4.0.0: {} - - synckit@0.6.2: - dependencies: - tslib: 2.8.1 - - synckit@0.9.2: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.8.1 - - tapable@2.2.1: {} - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.7 - fast-fifo: 1.3.2 - streamx: 2.22.0 - - tar@6.2.1: - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - - terser-webpack-plugin@5.3.12(@swc/core@1.11.5)(webpack@5.98.0(@swc/core@1.11.5)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 4.3.0 - serialize-javascript: 6.0.2 - terser: 5.39.0 - webpack: 5.98.0(@swc/core@1.11.5) - optionalDependencies: - '@swc/core': 1.11.5 - - terser@5.39.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.14.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - - test-exclude@7.0.1: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.4.5 - minimatch: 9.0.5 - - text-decoder@1.2.3: - dependencies: - b4a: 1.6.7 - - text-extensions@2.4.0: {} - - thread-stream@3.1.0: - dependencies: - real-require: 0.2.0 - - through@2.3.8: {} - - tinybench@2.9.0: {} - - tinyexec@0.3.2: {} - - tinyglobby@0.2.12: - dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 - - tinypool@1.0.2: {} - - tinyrainbow@2.0.0: {} - - tinyspy@3.0.2: {} - - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - - tmpl@1.0.5: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - toad-cache@3.7.0: {} - - toidentifier@1.0.1: {} - - token-types@6.0.0: - dependencies: - '@tokenizer/token': 0.3.0 - ieee754: 1.2.1 - - toml-eslint-parser@0.10.0: - dependencies: - eslint-visitor-keys: 3.4.3 - - tree-kill@1.2.2: {} - - ts-api-utils@2.0.1(typescript@5.7.3): - dependencies: - typescript: 5.7.3 - - ts-declaration-location@1.0.5(typescript@5.7.3): - dependencies: - minimatch: 10.0.1 - typescript: 5.7.3 - - ts-jest@29.2.6(@babel/core@7.26.9)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.9))(jest@29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)))(typescript@5.7.3): - dependencies: - bs-logger: 0.2.6 - ejs: 3.1.10 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.13.8)(ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3)) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.7.1 - typescript: 5.7.3 - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.26.9 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.9) - - ts-loader@9.5.2(typescript@5.7.3)(webpack@5.98.0(@swc/core@1.11.5)): - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.18.1 - micromatch: 4.0.8 - semver: 7.7.1 - source-map: 0.7.4 - typescript: 5.7.3 - webpack: 5.98.0(@swc/core@1.11.5) - - ts-node@10.9.2(@swc/core@1.11.5)(@types/node@22.13.8)(typescript@5.7.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.8 - acorn: 8.14.0 - acorn-walk: 8.3.4 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.7.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.11.5 - - tsconfig-paths-webpack-plugin@4.2.0: - dependencies: - chalk: 4.1.2 - enhanced-resolve: 5.18.1 - tapable: 2.2.1 - tsconfig-paths: 4.2.0 - - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@2.8.1: {} - - tsscmp@1.0.6: {} - - tsx@4.19.3: - dependencies: - esbuild: 0.25.0 - get-tsconfig: 4.10.0 - optionalDependencies: - fsevents: 2.3.3 - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-detect@4.0.8: {} - - type-fest@0.20.2: {} - - type-fest@0.21.3: {} - - type-fest@4.36.0: {} - - type-is@1.6.18: - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - - type-is@2.0.0: - dependencies: - content-type: 1.0.5 - media-typer: 1.1.0 - mime-types: 3.0.0 - - typedarray@0.0.6: {} - - typescript-eslint@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.25.0(@typescript-eslint/parser@8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.25.0(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - typescript@5.7.3: {} - - ufo@1.5.4: {} - - uid@2.0.2: - dependencies: - '@lukeed/csprng': 1.1.0 - - uint8array-extras@1.4.0: {} - - unbuild@3.5.0(typescript@5.7.3): - dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.34.9) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.34.9) - '@rollup/plugin-json': 6.1.0(rollup@4.34.9) - '@rollup/plugin-node-resolve': 16.0.0(rollup@4.34.9) - '@rollup/plugin-replace': 6.0.2(rollup@4.34.9) - '@rollup/pluginutils': 5.1.4(rollup@4.34.9) - citty: 0.1.6 - consola: 3.4.0 - defu: 6.1.4 - esbuild: 0.25.0 - fix-dts-default-cjs-exports: 1.0.0 - hookable: 5.5.3 - jiti: 2.4.2 - magic-string: 0.30.17 - mkdist: 2.2.0(typescript@5.7.3) - mlly: 1.7.4 - pathe: 2.0.3 - pkg-types: 2.0.1 - pretty-bytes: 6.1.1 - rollup: 4.34.9 - rollup-plugin-dts: 6.1.1(rollup@4.34.9)(typescript@5.7.3) - scule: 1.3.0 - tinyglobby: 0.2.12 - untyped: 2.0.0 - optionalDependencies: - typescript: 5.7.3 - transitivePeerDependencies: - - sass - - vue - - vue-tsc - - unbzip2-stream@1.4.3: - dependencies: - buffer: 5.7.1 - through: 2.3.8 - - undici-types@6.20.0: {} - - unicorn-magic@0.1.0: {} - - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - - universalify@2.0.1: {} - - unpipe@1.0.0: {} - - untyped@2.0.0: - dependencies: - citty: 0.1.6 - defu: 6.1.4 - jiti: 2.4.2 - knitwork: 1.2.0 - scule: 1.3.0 - - update-browserslist-db@1.1.3(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - util-deprecate@1.0.2: {} - - utils-merge@1.0.1: {} - - v8-compile-cache-lib@3.0.1: {} - - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - vary@1.1.2: {} - - vite-node@3.0.7(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0 - es-module-lexer: 1.6.0 - pathe: 2.0.3 - vite: 6.2.0(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite@6.2.0(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): - dependencies: - esbuild: 0.25.0 - postcss: 8.5.3 - rollup: 4.34.9 - optionalDependencies: - '@types/node': 22.13.8 - fsevents: 2.3.3 - jiti: 2.4.2 - terser: 5.39.0 - tsx: 4.19.3 - yaml: 2.7.0 - - vitest@3.0.7(@types/debug@4.1.12)(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0): - dependencies: - '@vitest/expect': 3.0.7 - '@vitest/mocker': 3.0.7(vite@6.2.0(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)) - '@vitest/pretty-format': 3.0.7 - '@vitest/runner': 3.0.7 - '@vitest/snapshot': 3.0.7 - '@vitest/spy': 3.0.7 - '@vitest/utils': 3.0.7 - chai: 5.2.0 - debug: 4.4.0 - expect-type: 1.2.0 - magic-string: 0.30.17 - pathe: 2.0.3 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 2.0.0 - vite: 6.2.0(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - vite-node: 3.0.7(@types/node@22.13.8)(jiti@2.4.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/debug': 4.1.12 - '@types/node': 22.13.8 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vue-eslint-parser@9.4.3(eslint@9.21.0(jiti@2.4.2)): - dependencies: - debug: 4.4.0 - eslint: 9.21.0(jiti@2.4.2) - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - lodash: 4.17.21 - semver: 7.7.1 - transitivePeerDependencies: - - supports-color - - walker@1.0.8: - dependencies: - makeerror: 1.0.12 - - watchpack@2.4.2: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - - webpack-node-externals@3.0.0: {} - - webpack-sources@3.2.3: {} - - webpack@5.98.0(@swc/core@1.11.5): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.0 - browserslist: 4.24.4 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 - es-module-lexer: 1.6.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.12(@swc/core@1.11.5)(webpack@5.98.0(@swc/core@1.11.5)) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - word-wrap@1.2.5: {} - - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - - wrappy@1.0.2: {} - - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - - xml-name-validator@4.0.0: {} - - xtend@4.0.2: {} - - y18n@5.0.8: {} - - yallist@3.1.1: {} - - yallist@4.0.0: {} - - yaml-eslint-parser@1.3.0: - dependencies: - eslint-visitor-keys: 3.4.3 - yaml: 2.7.0 - - yaml@2.7.0: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yauzl@3.2.0: - dependencies: - buffer-crc32: 0.2.13 - pend: 1.2.0 - - ylru@1.4.0: {} - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - - yocto-queue@1.1.1: {} - - yoctocolors-cjs@2.1.2: {} - - zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml deleted file mode 100644 index dd4fb6a..0000000 --- a/pnpm-workspace.yaml +++ /dev/null @@ -1,4 +0,0 @@ -packages: - - 'examples/*' - - 'packages/*' - - 'packages/adapters/*' diff --git a/prettify.css b/prettify.css new file mode 100644 index 0000000..b317a7c --- /dev/null +++ b/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/prettify.js b/prettify.js new file mode 100644 index 0000000..b322523 --- /dev/null +++ b/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/readme.md b/readme.md deleted file mode 100644 index 42020d6..0000000 --- a/readme.md +++ /dev/null @@ -1,16 +0,0 @@ -# https-enable - -让你的 nodejs 后端项目支持 https - -## 功能实现 - -- [x] 自动生成本地 ssl 证书,基于 [mkcert](https://github.com/Subash/mkcert) 实现 - - [ ] 接入 [`let's encrypt`](https://letsencrypt.org),为对生产环境的支持提供可能 -- [x] 证书文件的本地缓存以及自动更新 -- [x] 证书的有效性校验 -- [x] http 与 https 同端口 -- [ ] nodejs 后端框架 app 的 https 支持 - - [x] adapter-express - - [x] adapter-fastify - - [x] adapter-koa - - [x] adapter-nestjs (Express、Fastify) diff --git a/schema/commitlint-with-cz.json b/schema/commitlint-with-cz.json deleted file mode 100644 index a22b7a7..0000000 --- a/schema/commitlint-with-cz.json +++ /dev/null @@ -1,573 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "type": "object", - "definitions": { - "rule": { - "description": "A rule", - "type": "array", - "items": [ - { - "description": "Level: 0 disables the rule. For 1 it will be considered a warning, for 2 an error", - "type": "number", - "enum": [0, 1, 2] - }, - { - "description": "Applicable: always|never: never inverts the rule", - "type": "string", - "enum": ["always", "never"] - }, - { - "description": "Value: the value for this rule", - "items": { - "description": "The allowed commit types (can be any string)." - } - } - ], - "minItems": 1, - "maxItems": 3, - "additionalItems": false - }, - "CommitizenGitOptions": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "project: \"node_modules/cz-git\" root: \"cz-git\"", - "default": "node_modules/cz-git" - }, - "$schema": { - "type": "string" - }, - "prompt": { - "$ref": "#/definitions/CommitizenGitOptions" - }, - "alias": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "define commonly used commit message alias", - "default": { - "fd": "docs: fix typos" - } - }, - "messages": { - "$ref": "#/definitions/Answers", - "description": "Customize prompt questions" - }, - "themeColorCode": { - "type": "string", - "description": "the prompt inquirer primary color", - "examples": [ - "38;5;043" - ], - "default": "" - }, - "types": { - "type": "array", - "items": { - "$ref": "#/definitions/TypesOption" - }, - "description": "Customize prompt type" - }, - "typesAppend": { - "type": "array", - "items": { - "$ref": "#/definitions/TypesOption" - }, - "description": "Add extra types to default types", - "default": [] - }, - "typesSearchValue": { - "type": "boolean", - "description": "Default types list fuzzy search types `value` key of list. If choose `false` will search `name` key of list.", - "default": true - }, - "useAI": { - "type": "boolean", - "description": "Use OpenAI to auto generate short description for commit message", - "default": false - }, - "aiNumber": { - "type": "number", - "description": "If >1 will turn on select mode, select generate options like returned by OpenAI", - "default": 1 - }, - "aiModel": { - "type": "string", - "description": "Choose the AI model you want to use", - "default": "gpt-4o-mini" - }, - "aiDiffIgnore": { - "type": "array", - "items": { - "type": "string" - }, - "description": "To ignore selection codes when sending AI API requests", - "examples": [ - [ - "pnpm-lock.yaml", - "docs/public" - ] - ], - "default": [ - "package-lock.json", - "yarn.lock", - "pnpm-lock.yaml" - ] - }, - "useEmoji": { - "type": "boolean", - "description": "Use emoji ?It will be use typesOption.emoji code", - "default": false - }, - "emojiAlign": { - "type": "string", - "enum": [ - "left", - "center", - "right" - ], - "description": "Set the location of emoji in header", - "default": "center" - }, - "scopes": { - "$ref": "#/definitions/ScopesType", - "description": "Provides a select of prompt to select module scopes" - }, - "scopesSearchValue": { - "type": "boolean", - "description": "Default scope list fuzzy search types `name` key of list. If choose `true` will search `value` key of list.", - "default": false - }, - "scopeOverrides": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/ScopesType" - }, - "description": "Provides an overriding select of prompt to select module scopes under specific type", - "examples": [ - { - "test": [ - "e2eTest", - "unitTest" - ] - } - ] - }, - "scopeFilters": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Filter select of prompt to select module scopes by the scope.value", - "default": [ - ".DS_Store" - ] - }, - "enableMultipleScopes": { - "type": "boolean", - "description": "Whether to enable scope multiple mode", - "default": false - }, - "scopeEnumSeparator": { - "type": "string", - "description": "Multiple choice scope separator", - "default": "," - }, - "allowCustomScopes": { - "type": "boolean", - "description": "Whether to show \"custom\" when selecting scopes", - "default": true - }, - "allowEmptyScopes": { - "type": "boolean", - "description": "Whether to show \"empty\" when selecting scopes", - "default": true - }, - "customScopesAlign": { - "type": "string", - "enum": [ - "top", - "bottom", - "top-bottom", - "bottom-top" - ], - "description": "Set the location of empty option (empty) and custom option (custom) in selection range", - "default": "bottom" - }, - "customScopesAlias": { - "type": "string", - "default": "custom" - }, - "emptyScopesAlias": { - "type": "string", - "default": "empty" - }, - "upperCaseSubject": { - "type": "boolean", - "description": "Subject is need upper case first.", - "default": false - }, - "markBreakingChangeMode": { - "type": "boolean", - "description": "Whether to add extra prompt BREAKCHANGE ask. to add an extra \"!\" to the header", - "default": false - }, - "allowBreakingChanges": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allow breaking changes in the included types output box", - "default": [ - "feat", - "fix" - ] - }, - "breaklineNumber": { - "type": "number", - "description": "set body and BREAKING CHANGE max length to break-line", - "default": 100 - }, - "breaklineChar": { - "type": "string", - "description": "body and BREAKINGCHANGES new line char", - "default": "|" - }, - "issuePrefixes": { - "type": "array", - "items": { - "$ref": "#/definitions/Option" - }, - "description": "Provides a select issue prefix box in footer", - "default": "issuePrefixes: [{ value: \"closed\", name: \"ISSUES has been processed\" }]" - }, - "customIssuePrefixAlign": { - "type": "string", - "enum": [ - "top", - "bottom", - "top-bottom", - "bottom-top" - ], - "default": "top" - }, - "emptyIssuePrefixAlias": { - "type": "string", - "default": "skip" - }, - "customIssuePrefixAlias": { - "type": "string", - "default": "custom" - }, - "allowCustomIssuePrefix": { - "type": "boolean", - "description": "Whether to show \"custom\" selecting issue prefixes", - "default": true - }, - "allowEmptyIssuePrefix": { - "type": "boolean", - "description": "Whether to show \"skip(empty)\" when selecting issue prefixes", - "default": true - }, - "confirmColorize": { - "type": "boolean", - "description": "Prompt final determination whether to display the color", - "default": true - }, - "skipQuestions": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "scope", - "body", - "breaking", - "footerPrefix", - "footer", - "confirmCommit" - ] - }, - "description": "List of questions you want to skip", - "examples": [ - [ - "body" - ] - ], - "default": [] - }, - "maxHeaderLength": { - "type": "number", - "description": "Force set max header length | Equivalent setting maxSubjectLength." - }, - "maxSubjectLength": { - "type": "number", - "description": "Force set max subject length." - }, - "isIgnoreCheckMaxSubjectLength": { - "type": "boolean", - "description": "Is not strict subject rule. Just provide prompt word length warning. Effected maxHeader and maxSubject commitlint.", - "default": false - }, - "minSubjectLength": { - "type": "number", - "description": "Force set header width." - }, - "defaultType": { - "type": "string", - "description": "pin type item the top of the types list (match item value)" - }, - "defaultScope": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "description": "Whether to use display default value in custom scope" - }, - "defaultSubject": { - "type": "string", - "description": "default value show subject template prompt" - }, - "defaultBody": { - "type": "string", - "description": "default value show body and BREAKINGCHANGES template prompt" - }, - "defaultFooterPrefix": { - "type": "string", - "description": "default value show issuePrefixes custom template prompt" - }, - "defaultIssues": { - "type": "string", - "description": "default value show issue foot template prompt" - }, - "useCommitSignGPG": { - "type": "boolean", - "description": "Whether to use GPG sign commit message (git commit -S -m)", - "default": false - } - }, - "additionalProperties": false - }, - "Answers": { - "type": "object", - "properties": { - "type": { - "type": "string", - "default": "Select the type of change that you're committing:" - }, - "scope": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "default": "Denote the SCOPE of this change (optional):" - }, - "customScope": { - "type": "string", - "default": "Denote the SCOPE of this change:" - }, - "subject": { - "type": "string", - "default": "Write a SHORT, IMPERATIVE tense description of the change:\n" - }, - "body": { - "type": "string", - "default": "a LONGER description of the change (optional). Use \"|\" to break new line:\n" - }, - "markBreaking": { - "type": [ - "string", - "boolean" - ], - "default": "Is any BREAKING CHANGE (add \"!\" in header) (optional) ?" - }, - "breaking": { - "type": "string", - "default": "List any BREAKING CHANGES (optional). Use \"|\" to break new line:\n" - }, - "footerPrefixesSelect": { - "type": "string", - "default": "Select the ISSUES type of change (optional):" - }, - "customFooterPrefix": { - "type": "string", - "default": "Input ISSUES prefix:" - }, - "footer": { - "type": "string", - "default": "List any ISSUES AFFECTED by this change. E.g.: #31, #34:" - }, - "confirmCommit": { - "type": "string", - "default": "Are you sure you want to proceed with the commit above?" - }, - "generatingByAI": { - "type": "string", - "default": "Generating your AI commit subject..." - }, - "generatedSelectByAI": { - "type": "string", - "default": "Select suitable subject by AI generated:" - } - }, - "additionalProperties": false - }, - "TypesOption": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": ": show prompt name" - }, - "value": { - "type": "string", - "description": ": output real value" - }, - "emoji": { - "type": "string", - "description": ": Submit emoji commit string" - } - }, - "additionalProperties": false, - "required": [ - "name", - "value" - ] - }, - "ScopesType": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - ] - }, - "Option": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": ": show prompt name" - }, - "value": { - "type": "string", - "description": ": output real value" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false - } - }, - "properties": { - "extends": { - "description": "Resolveable ids to commitlint configurations to extend", - "oneOf": [ - { - "type": "array", - "items": { "type": "string" } - }, - { "type": "string" } - ] - }, - "parserPreset": { - "description": "Resolveable id to conventional-changelog parser preset to import and use", - "oneOf": [ - { "type": "string" }, - { - "type": "object", - "properties": { - "name": { "type": "string" }, - "path": { "type": "string" }, - "parserOpts": {} - }, - "additionalProperties": true - }, - { "typeof": "function" } - ] - }, - "helpUrl": { - "description": "Custom URL to show upon failure", - "type": "string" - }, - "formatter": { - "description": "Resolveable id to package, from node_modules, which formats the output", - "type": "string" - }, - "rules": { - "description": "Rules to check against", - "type": "object", - "propertyNames": { "type": "string" }, - "additionalProperties": { "$ref": "#/definitions/rule" } - }, - "plugins": { - "description": "Resolveable ids of commitlint plugins from node_modules", - "type": "array", - "items": { - "anyOf": [ - { "type": "string" }, - { - "type": "object", - "required": ["rules"], - "properties": { - "rules": { - "type": "object" - } - } - } - ] - } - }, - "ignores": { - "type": "array", - "items": { "typeof": "function" }, - "description": "Additional commits to ignore, defined by ignore matchers" - }, - "defaultIgnores": { - "description": "Whether commitlint uses the default ignore rules", - "type": "boolean" - }, - // git-cz - "prompt": { - "description": "Prompt settings (git-cz)", - "$ref": "#/definitions/CommitizenGitOptions" - } - } -} diff --git a/schema/cz-git@1.11.0.json b/schema/cz-git@1.11.0.json deleted file mode 100644 index 24d0476..0000000 --- a/schema/cz-git@1.11.0.json +++ /dev/null @@ -1,474 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$ref": "#/definitions/CommitizenGitOptions", - "definitions": { - "CommitizenGitOptions": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "project: \"node_modules/cz-git\" root: \"cz-git\"", - "default": "node_modules/cz-git" - }, - "$schema": { - "type": "string" - }, - "prompt": { - "$ref": "#/definitions/CommitizenGitOptions" - }, - "alias": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "define commonly used commit message alias", - "default": { - "fd": "docs: fix typos" - } - }, - "messages": { - "$ref": "#/definitions/Answers", - "description": "Customize prompt questions" - }, - "themeColorCode": { - "type": "string", - "description": "the prompt inquirer primary color", - "examples": [ - "38;5;043" - ], - "default": "" - }, - "types": { - "type": "array", - "items": { - "$ref": "#/definitions/TypesOption" - }, - "description": "Customize prompt type" - }, - "typesAppend": { - "type": "array", - "items": { - "$ref": "#/definitions/TypesOption" - }, - "description": "Add extra types to default types", - "default": [] - }, - "typesSearchValue": { - "type": "boolean", - "description": "Default types list fuzzy search types `value` key of list. If choose `false` will search `name` key of list.", - "default": true - }, - "useAI": { - "type": "boolean", - "description": "Use OpenAI to auto generate short description for commit message", - "default": false - }, - "aiNumber": { - "type": "number", - "description": "If >1 will turn on select mode, select generate options like returned by OpenAI", - "default": 1 - }, - "aiModel": { - "type": "string", - "description": "Choose the AI model you want to use", - "default": "gpt-4o-mini" - }, - "aiDiffIgnore": { - "type": "array", - "items": { - "type": "string" - }, - "description": "To ignore selection codes when sending AI API requests", - "examples": [ - [ - "pnpm-lock.yaml", - "docs/public" - ] - ], - "default": [ - "package-lock.json", - "yarn.lock", - "pnpm-lock.yaml" - ] - }, - "useEmoji": { - "type": "boolean", - "description": "Use emoji ?It will be use typesOption.emoji code", - "default": false - }, - "emojiAlign": { - "type": "string", - "enum": [ - "left", - "center", - "right" - ], - "description": "Set the location of emoji in header", - "default": "center" - }, - "scopes": { - "$ref": "#/definitions/ScopesType", - "description": "Provides a select of prompt to select module scopes" - }, - "scopesSearchValue": { - "type": "boolean", - "description": "Default scope list fuzzy search types `name` key of list. If choose `true` will search `value` key of list.", - "default": false - }, - "scopeOverrides": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/ScopesType" - }, - "description": "Provides an overriding select of prompt to select module scopes under specific type", - "examples": [ - { - "test": [ - "e2eTest", - "unitTest" - ] - } - ] - }, - "scopeFilters": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Filter select of prompt to select module scopes by the scope.value", - "default": [ - ".DS_Store" - ] - }, - "enableMultipleScopes": { - "type": "boolean", - "description": "Whether to enable scope multiple mode", - "default": false - }, - "scopeEnumSeparator": { - "type": "string", - "description": "Multiple choice scope separator", - "default": "," - }, - "allowCustomScopes": { - "type": "boolean", - "description": "Whether to show \"custom\" when selecting scopes", - "default": true - }, - "allowEmptyScopes": { - "type": "boolean", - "description": "Whether to show \"empty\" when selecting scopes", - "default": true - }, - "customScopesAlign": { - "type": "string", - "enum": [ - "top", - "bottom", - "top-bottom", - "bottom-top" - ], - "description": "Set the location of empty option (empty) and custom option (custom) in selection range", - "default": "bottom" - }, - "customScopesAlias": { - "type": "string", - "default": "custom" - }, - "emptyScopesAlias": { - "type": "string", - "default": "empty" - }, - "upperCaseSubject": { - "type": "boolean", - "description": "Subject is need upper case first.", - "default": false - }, - "markBreakingChangeMode": { - "type": "boolean", - "description": "Whether to add extra prompt BREAKCHANGE ask. to add an extra \"!\" to the header", - "default": false - }, - "allowBreakingChanges": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Allow breaking changes in the included types output box", - "default": [ - "feat", - "fix" - ] - }, - "breaklineNumber": { - "type": "number", - "description": "set body and BREAKING CHANGE max length to break-line", - "default": 100 - }, - "breaklineChar": { - "type": "string", - "description": "body and BREAKINGCHANGES new line char", - "default": "|" - }, - "issuePrefixes": { - "type": "array", - "items": { - "$ref": "#/definitions/Option" - }, - "description": "Provides a select issue prefix box in footer", - "default": "issuePrefixes: [{ value: \"closed\", name: \"ISSUES has been processed\" }]" - }, - "customIssuePrefixAlign": { - "type": "string", - "enum": [ - "top", - "bottom", - "top-bottom", - "bottom-top" - ], - "default": "top" - }, - "emptyIssuePrefixAlias": { - "type": "string", - "default": "skip" - }, - "customIssuePrefixAlias": { - "type": "string", - "default": "custom" - }, - "allowCustomIssuePrefix": { - "type": "boolean", - "description": "Whether to show \"custom\" selecting issue prefixes", - "default": true - }, - "allowEmptyIssuePrefix": { - "type": "boolean", - "description": "Whether to show \"skip(empty)\" when selecting issue prefixes", - "default": true - }, - "confirmColorize": { - "type": "boolean", - "description": "Prompt final determination whether to display the color", - "default": true - }, - "skipQuestions": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "scope", - "body", - "breaking", - "footerPrefix", - "footer", - "confirmCommit" - ] - }, - "description": "List of questions you want to skip", - "examples": [ - [ - "body" - ] - ], - "default": [] - }, - "maxHeaderLength": { - "type": "number", - "description": "Force set max header length | Equivalent setting maxSubjectLength." - }, - "maxSubjectLength": { - "type": "number", - "description": "Force set max subject length." - }, - "isIgnoreCheckMaxSubjectLength": { - "type": "boolean", - "description": "Is not strict subject rule. Just provide prompt word length warning. Effected maxHeader and maxSubject commitlint.", - "default": false - }, - "minSubjectLength": { - "type": "number", - "description": "Force set header width." - }, - "defaultType": { - "type": "string", - "description": "pin type item the top of the types list (match item value)" - }, - "defaultScope": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "description": "Whether to use display default value in custom scope" - }, - "defaultSubject": { - "type": "string", - "description": "default value show subject template prompt" - }, - "defaultBody": { - "type": "string", - "description": "default value show body and BREAKINGCHANGES template prompt" - }, - "defaultFooterPrefix": { - "type": "string", - "description": "default value show issuePrefixes custom template prompt" - }, - "defaultIssues": { - "type": "string", - "description": "default value show issue foot template prompt" - }, - "useCommitSignGPG": { - "type": "boolean", - "description": "Whether to use GPG sign commit message (git commit -S -m)", - "default": false - } - }, - "additionalProperties": false - }, - "Answers": { - "type": "object", - "properties": { - "type": { - "type": "string", - "default": "Select the type of change that you're committing:" - }, - "scope": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ], - "default": "Denote the SCOPE of this change (optional):" - }, - "customScope": { - "type": "string", - "default": "Denote the SCOPE of this change:" - }, - "subject": { - "type": "string", - "default": "Write a SHORT, IMPERATIVE tense description of the change:\n" - }, - "body": { - "type": "string", - "default": "a LONGER description of the change (optional). Use \"|\" to break new line:\n" - }, - "markBreaking": { - "type": [ - "string", - "boolean" - ], - "default": "Is any BREAKING CHANGE (add \"!\" in header) (optional) ?" - }, - "breaking": { - "type": "string", - "default": "List any BREAKING CHANGES (optional). Use \"|\" to break new line:\n" - }, - "footerPrefixesSelect": { - "type": "string", - "default": "Select the ISSUES type of change (optional):" - }, - "customFooterPrefix": { - "type": "string", - "default": "Input ISSUES prefix:" - }, - "footer": { - "type": "string", - "default": "List any ISSUES AFFECTED by this change. E.g.: #31, #34:" - }, - "confirmCommit": { - "type": "string", - "default": "Are you sure you want to proceed with the commit above?" - }, - "generatingByAI": { - "type": "string", - "default": "Generating your AI commit subject..." - }, - "generatedSelectByAI": { - "type": "string", - "default": "Select suitable subject by AI generated:" - } - }, - "additionalProperties": false - }, - "TypesOption": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": ": show prompt name" - }, - "value": { - "type": "string", - "description": ": output real value" - }, - "emoji": { - "type": "string", - "description": ": Submit emoji commit string" - } - }, - "additionalProperties": false, - "required": [ - "name", - "value" - ] - }, - "ScopesType": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "name" - ], - "additionalProperties": false - } - } - ] - }, - "Option": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": ": show prompt name" - }, - "value": { - "type": "string", - "description": ": output real value" - } - }, - "required": [ - "name", - "value" - ], - "additionalProperties": false - } - } -} diff --git a/scripts/changelog/cli.ts b/scripts/changelog/cli.ts deleted file mode 100644 index 288b449..0000000 --- a/scripts/changelog/cli.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { resetChangelog } from '.' - -(() => { - resetChangelog().catch(console.error) -})() diff --git a/scripts/changelog/cli.ts.html b/scripts/changelog/cli.ts.html new file mode 100644 index 0000000..f803d51 --- /dev/null +++ b/scripts/changelog/cli.ts.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for scripts/changelog/cli.ts + + + + + + + + + +
+
+

All files / scripts/changelog cli.ts

+
+ +
+ 0% + Statements + 0/4 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6  +  +  +  +  + 
import { resetChangelog } from '.'
+ 
+(() => {
+  resetChangelog().catch(console.error)
+})()
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/changelog/index.html b/scripts/changelog/index.html new file mode 100644 index 0000000..40f1616 --- /dev/null +++ b/scripts/changelog/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for scripts/changelog + + + + + + + + + +
+
+

All files scripts/changelog

+
+ +
+ 0% + Statements + 0/85 +
+ + +
+ 50% + Branches + 1/2 +
+ + +
+ 50% + Functions + 1/2 +
+ + +
+ 0% + Lines + 0/85 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
cli.ts +
+
0%0/40%0/10%0/10%0/4
index.ts +
+
0%0/81100%1/1100%1/10%0/81
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/changelog/index.ts b/scripts/changelog/index.ts deleted file mode 100644 index 3a7c84c..0000000 --- a/scripts/changelog/index.ts +++ /dev/null @@ -1,106 +0,0 @@ -import type { ParsedCommit, Tag } from '../git-utils/tags' -import path from 'node:path' -import process from 'node:process' -import chalk from 'chalk' -import { x } from 'tinyexec' -import { gitCommit } from '../git-utils/commit' -import { GitTagParser } from '../git-utils/tags' -import { detectMonorepo } from '../monorepo/detect' -import { findPackages } from '../monorepo/packages' -import { createFile } from '../utils/file' - -/* eslint-disable unused-imports/no-unused-vars */ -const commitTypes = [ - { value: 'feat', name: '🚀 Features: 新功能', emoji: '🚀' }, - { value: 'perf', name: '🔥 Performance: 性能优化', emoji: '🔥' }, - { value: 'fix', name: '🩹 Fixes: 缺陷修复', emoji: '🩹' }, - { value: 'refactor', name: '💅 Refactors: 代码重构', emoji: '💅' }, - { value: 'docs', name: '📖 Documentation: 文档', emoji: '📖' }, - { value: 'build', name: '📦 Build: 构建工具', emoji: '📦' }, - { value: 'types', name: '🌊 Types: 类型定义', emoji: '🌊' }, - { value: 'chore', name: '🏡 Chore: 简修处理', emoji: '🏡' }, - { value: 'examples', name: '🏀 Examples: 例子展示', emoji: '🏀' }, - { value: 'test', name: '✅ Tests: 测试用例', emoji: '✅' }, - { value: 'style', name: '🎨 Styles: 代码风格', emoji: '🎨' }, - { value: 'ci', name: '🤖 CI: 持续集成', emoji: '🤖' }, - { value: 'init', name: '🎉 Init: 项目初始化', emoji: '🎉' }, -] - -// 根据提交类型生成 changelog -export function generateChangelog(commits: ParsedCommit[], title = 'Changelog'): string { - // 按时间排序 - const sortedCommits = commits.sort((a, b) => (b.date?.getTime() ?? 0) - (a.date?.getTime() ?? 0)) - - const changelog: string[] = [`## ${title}`] - - // 根据类型分类 - commitTypes.forEach(({ value, name, emoji }, index) => { - const filteredCommits = sortedCommits.filter(commit => commit.type === value) - - if (filteredCommits.length > 0) { - changelog.push(`\n### ${name}\n`) - filteredCommits.forEach((commit) => { - let sha = commit.sha ? `(${commit.sha})` : undefined - sha = sha?.padStart(sha.length + 1, ' ') || '' - - let author = commit.author ? `- by @${commit.author}` : undefined - author = author?.padStart(author.length + 1, ' ') || '' - - changelog.push(`- ${commit.raw}${author}${sha}`) - }) - } - }) - - changelog.length && changelog.push(`${changelog.pop()}\n`) // 在最后添加换行 - - return changelog.join('\n') -} - -function getAllTags(tag: Tag): Tag[] { - const tags: Tag[] = [tag] // 初始化一个包含当前标签的数组 - // 如果有 `pre` 标签,递归调用 - if (tag.pre) { - tags.push(...getAllTags(tag.pre)) // 合并结果 - } - return tags -} - -/** - * 重建整个项目的 changelog - */ -export async function resetChangelog() { - const parser = new GitTagParser() - await parser.fetchTags() - - console.log(chalk.blue('Checking monorepo structure...')) - const monorepo = await detectMonorepo() - if (!monorepo) { - console.log(chalk.red('Not a pnpm monorepo project')) - return process.exit(1) - } - - const allPackages = await findPackages(monorepo) - const publishable = allPackages.filter(p => !p.private) - - for (const pkg of publishable) { - const currTag = `${pkg.name}@${pkg.version}` - const prevTag = await parser.getPreviousTag(currTag, true, true) - if (prevTag) { - const tagsInfo = getAllTags(prevTag).reverse() - const tags = [...tagsInfo.map(item => item.tag), currTag] - - const changelogs: string[] = [] - for (let index = 0; index < tags.length; index++) { - const currentTag = tags[index]! - const prevTag = tags[index - 1] - const commits = await parser.getCommitsBetweenTags(currentTag, prevTag, true) - changelogs.push(generateChangelog(commits, currentTag)) - } - // TODO: 可以选择拆分更新日志至细分文件 - const changelogPath = createFile(path.join(pkg.path, 'changelog.md'), changelogs.reverse().join('\n'), { cover: true }) - await x('npx', ['eslint', '--fix', changelogPath]) - const commitMsg = `chore(changelog): ${pkg.name}@{${parser.extractScopeProjectVersion(tagsInfo[0]!.tag).version}..${pkg.version}}` - await gitCommit([changelogPath], commitMsg) - } - } -} diff --git a/scripts/changelog/index.ts.html b/scripts/changelog/index.ts.html new file mode 100644 index 0000000..e3f4d13 --- /dev/null +++ b/scripts/changelog/index.ts.html @@ -0,0 +1,403 @@ + + + + + + Code coverage report for scripts/changelog/index.ts + + + + + + + + + +
+
+

All files / scripts/changelog index.ts

+
+ +
+ 0% + Statements + 0/81 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/81 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ParsedCommit, Tag } from '../git-utils/tags'
+import path from 'node:path'
+import process from 'node:process'
+import chalk from 'chalk'
+import { x } from 'tinyexec'
+import { gitCommit } from '../git-utils/commit'
+import { GitTagParser } from '../git-utils/tags'
+import { detectMonorepo } from '../monorepo/detect'
+import { findPackages } from '../monorepo/packages'
+import { createFile } from '../utils/file'
+ 
+/* eslint-disable unused-imports/no-unused-vars */
+const commitTypes = [
+  { value: 'feat', name: '🚀 Features: 新功能', emoji: '🚀' },
+  { value: 'perf', name: '🔥 Performance: 性能优化', emoji: '🔥' },
+  { value: 'fix', name: '🩹 Fixes: 缺陷修复', emoji: '🩹' },
+  { value: 'refactor', name: '💅 Refactors: 代码重构', emoji: '💅' },
+  { value: 'docs', name: '📖 Documentation: 文档', emoji: '📖' },
+  { value: 'build', name: '📦 Build: 构建工具', emoji: '📦' },
+  { value: 'types', name: '🌊 Types: 类型定义', emoji: '🌊' },
+  { value: 'chore', name: '🏡 Chore: 简修处理', emoji: '🏡' },
+  { value: 'examples', name: '🏀 Examples: 例子展示', emoji: '🏀' },
+  { value: 'test', name: '✅ Tests: 测试用例', emoji: '✅' },
+  { value: 'style', name: '🎨 Styles: 代码风格', emoji: '🎨' },
+  { value: 'ci', name: '🤖 CI: 持续集成', emoji: '🤖' },
+  { value: 'init', name: '🎉 Init: 项目初始化', emoji: '🎉' },
+]
+ 
+// 根据提交类型生成 changelog
+export function generateChangelog(commits: ParsedCommit[], title = 'Changelog'): string {
+  // 按时间排序
+  const sortedCommits = commits.sort((a, b) => (b.date?.getTime() ?? 0) - (a.date?.getTime() ?? 0))
+ 
+  const changelog: string[] = [`## ${title}`]
+ 
+  // 根据类型分类
+  commitTypes.forEach(({ value, name, emoji }, index) => {
+    const filteredCommits = sortedCommits.filter(commit => commit.type === value)
+ 
+    if (filteredCommits.length > 0) {
+      changelog.push(`\n### ${name}\n`)
+      filteredCommits.forEach((commit) => {
+        let sha = commit.sha ? `(${commit.sha})` : undefined
+        sha = sha?.padStart(sha.length + 1, ' ') || ''
+ 
+        let author = commit.author ? `- by @${commit.author}` : undefined
+        author = author?.padStart(author.length + 1, ' ') || ''
+ 
+        changelog.push(`- ${commit.raw}${author}${sha}`)
+      })
+    }
+  })
+ 
+  changelog.length && changelog.push(`${changelog.pop()}\n`) // 在最后添加换行
+ 
+  return changelog.join('\n')
+}
+ 
+function getAllTags(tag: Tag): Tag[] {
+  const tags: Tag[] = [tag] // 初始化一个包含当前标签的数组
+  // 如果有 `pre` 标签,递归调用
+  if (tag.pre) {
+    tags.push(...getAllTags(tag.pre)) // 合并结果
+  }
+  return tags
+}
+ 
+/**
+ * 重建整个项目的 changelog
+ */
+export async function resetChangelog() {
+  const parser = new GitTagParser()
+  await parser.fetchTags()
+ 
+  console.log(chalk.blue('Checking monorepo structure...'))
+  const monorepo = await detectMonorepo()
+  if (!monorepo) {
+    console.log(chalk.red('Not a pnpm monorepo project'))
+    return process.exit(1)
+  }
+ 
+  const allPackages = await findPackages(monorepo)
+  const publishable = allPackages.filter(p => !p.private)
+ 
+  for (const pkg of publishable) {
+    const currTag = `${pkg.name}@${pkg.version}`
+    const prevTag = await parser.getPreviousTag(currTag, true, true)
+    if (prevTag) {
+      const tagsInfo = getAllTags(prevTag).reverse()
+      const tags = [...tagsInfo.map(item => item.tag), currTag]
+ 
+      const changelogs: string[] = []
+      for (let index = 0; index < tags.length; index++) {
+        const currentTag = tags[index]!
+        const prevTag = tags[index - 1]
+        const commits = await parser.getCommitsBetweenTags(currentTag, prevTag, true)
+        changelogs.push(generateChangelog(commits, currentTag))
+      }
+      // TODO: 可以选择拆分更新日志至细分文件
+      const changelogPath = createFile(path.join(pkg.path, 'changelog.md'), changelogs.reverse().join('\n'), { cover: true })
+      await x('npx', ['eslint', '--fix', changelogPath])
+      const commitMsg = `chore(changelog): ${pkg.name}@{${parser.extractScopeProjectVersion(tagsInfo[0]!.tag).version}..${pkg.version}}`
+      await gitCommit([changelogPath], commitMsg)
+    }
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/cli.ts b/scripts/cli.ts deleted file mode 100644 index dda83bb..0000000 --- a/scripts/cli.ts +++ /dev/null @@ -1,80 +0,0 @@ -import type { VersionBumpResults } from 'bumpp' -import path from 'node:path' -import process from 'node:process' -import chalk from 'chalk' -import enquirer from 'enquirer' -import { x } from 'tinyexec' -import { generateChangelog } from './changelog' -import { squashLastNCommits } from './git-utils' -import { gitCommit } from './git-utils/commit' -import GitTagParser from './git-utils/tags' -import { detectMonorepo } from './monorepo/detect' -import { findPackages } from './monorepo/packages' -import { prefix } from './utils/cli-utilities' -import { selectPackages } from './utils/enquirer' -import { createFile } from './utils/file' -import logger from './utils/logger' -import { bumpVersion } from './version/bump' - -async function main() { - console.log(chalk.blue('Checking monorepo structure...')) - const monorepo = await detectMonorepo() - if (!monorepo) { - console.log(chalk.red('Not a pnpm monorepo project')) - return process.exit(1) - } - - const allPackages = await findPackages(monorepo) - const publishable = allPackages.filter(p => !p.private) - const selected = await selectPackages(publishable) - - // Bump versions - const { confirm_dump } = await enquirer.prompt<{ confirm_dump: boolean }>({ - type: 'confirm', - name: 'confirm_dump', - prefix, - message: 'Ready to dump version?', - }) - if (confirm_dump !== true) { - return logger.info(`You have canceled dump version`) - } - - const bumpCache: Record = {} - for (const pkg of selected) { - logger.info(`Bumping version for ${chalk.bold(pkg.name)} ...`) - const res = await bumpVersion(pkg, `${pkg.name}@%s`) - bumpCache[pkg.name] = res - // 创建当前更新日志 - const parser = new GitTagParser() - await parser.fetchTags() - const lastTag = parser.lastTag - if (lastTag && lastTag === res.tag) { - const prevTag = (await parser.getPreviousTag(lastTag, true))?.tag ?? parser.firstTag - const commits = await parser.getCommitsBetweenTags(lastTag, prevTag, true) - const changelog = generateChangelog(commits, lastTag) - const changelogPath = createFile(path.join(pkg.path, 'changelog.md'), changelog, { prepend: true }) - await x('npx', ['eslint', '--fix', changelogPath]) - await gitCommit([changelogPath], `chore(changelog): ${lastTag}`) - await squashLastNCommits(2) - } - } - if (selected.length) { - await squashLastNCommits(selected.length) - } - - // Publish - // const { confirm } = await enquirer.prompt({ - // type: 'confirm', - // name: 'confirm', - // message: 'Ready to publish packages?', - // }) - - // if (confirm) { - // for (const pkg of selected) { - // console.log(chalk.blue(`Publishing ${pkg.name}...`)) - // await publishPackage(pkg) - // } - // } -} - -main().catch(console.error) diff --git a/scripts/cli.ts.html b/scripts/cli.ts.html new file mode 100644 index 0000000..90622b0 --- /dev/null +++ b/scripts/cli.ts.html @@ -0,0 +1,325 @@ + + + + + + Code coverage report for scripts/cli.ts + + + + + + + + + +
+
+

All files / scripts cli.ts

+
+ +
+ 0% + Statements + 0/58 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/58 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { VersionBumpResults } from 'bumpp'
+import path from 'node:path'
+import process from 'node:process'
+import chalk from 'chalk'
+import enquirer from 'enquirer'
+import { x } from 'tinyexec'
+import { generateChangelog } from './changelog'
+import { squashLastNCommits } from './git-utils'
+import { gitCommit } from './git-utils/commit'
+import GitTagParser from './git-utils/tags'
+import { detectMonorepo } from './monorepo/detect'
+import { findPackages } from './monorepo/packages'
+import { prefix } from './utils/cli-utilities'
+import { selectPackages } from './utils/enquirer'
+import { createFile } from './utils/file'
+import logger from './utils/logger'
+import { bumpVersion } from './version/bump'
+ 
+async function main() {
+  console.log(chalk.blue('Checking monorepo structure...'))
+  const monorepo = await detectMonorepo()
+  if (!monorepo) {
+    console.log(chalk.red('Not a pnpm monorepo project'))
+    return process.exit(1)
+  }
+ 
+  const allPackages = await findPackages(monorepo)
+  const publishable = allPackages.filter(p => !p.private)
+  const selected = await selectPackages(publishable)
+ 
+  // Bump versions
+  const { confirm_dump } = await enquirer.prompt<{ confirm_dump: boolean }>({
+    type: 'confirm',
+    name: 'confirm_dump',
+    prefix,
+    message: 'Ready to dump version?',
+  })
+  if (confirm_dump !== true) {
+    return logger.info(`You have canceled dump version`)
+  }
+ 
+  const bumpCache: Record<string, VersionBumpResults> = {}
+  for (const pkg of selected) {
+    logger.info(`Bumping version for ${chalk.bold(pkg.name)} ...`)
+    const res = await bumpVersion(pkg, `${pkg.name}@%s`)
+    bumpCache[pkg.name] = res
+    // 创建当前更新日志
+    const parser = new GitTagParser()
+    await parser.fetchTags()
+    const lastTag = parser.lastTag
+    if (lastTag && lastTag === res.tag) {
+      const prevTag = (await parser.getPreviousTag(lastTag, true))?.tag ?? parser.firstTag
+      const commits = await parser.getCommitsBetweenTags(lastTag, prevTag, true)
+      const changelog = generateChangelog(commits, lastTag)
+      const changelogPath = createFile(path.join(pkg.path, 'changelog.md'), changelog, { prepend: true })
+      await x('npx', ['eslint', '--fix', changelogPath])
+      await gitCommit([changelogPath], `chore(changelog): ${lastTag}`)
+      await squashLastNCommits(2)
+    }
+  }
+  if (selected.length) {
+    await squashLastNCommits(selected.length)
+  }
+ 
+  // Publish
+  // const { confirm } = await enquirer.prompt({
+  //   type: 'confirm',
+  //   name: 'confirm',
+  //   message: 'Ready to publish packages?',
+  // })
+ 
+  // if (confirm) {
+  //   for (const pkg of selected) {
+  //     console.log(chalk.blue(`Publishing ${pkg.name}...`))
+  //     await publishPackage(pkg)
+  //   }
+  // }
+}
+ 
+main().catch(console.error)
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/git-utils/commit.ts b/scripts/git-utils/commit.ts deleted file mode 100644 index 29f87f6..0000000 --- a/scripts/git-utils/commit.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { x } from 'tinyexec' - -const execOptions = { throwOnError: true } - -// 提交函数 -export async function gitCommit(files: string[] = [], commitMsg: string) { - try { - // 1. 添加文件到暂存区 - if (files.length > 0) { - console.log('Staging files...') - await x('git', ['add', ...files], execOptions) - } - else { - // console.log('No files specified. Staging all changes...') - // await x('git', ['add', '.'], execOptions) - return - } - - // 2. 提交 - console.log(`Committing with message: ${commitMsg}`) - await x('git', ['commit', '-m', commitMsg], execOptions) - - console.log('Commit successful!') - } - catch (error) { - console.error(`Error during commit:`, error) - } -} diff --git a/scripts/git-utils/commit.ts.html b/scripts/git-utils/commit.ts.html new file mode 100644 index 0000000..68323e4 --- /dev/null +++ b/scripts/git-utils/commit.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for scripts/git-utils/commit.ts + + + + + + + + + +
+
+

All files / scripts/git-utils commit.ts

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { x } from 'tinyexec'
+ 
+const execOptions = { throwOnError: true }
+ 
+// 提交函数
+export async function gitCommit(files: string[] = [], commitMsg: string) {
+  try {
+    // 1. 添加文件到暂存区
+    if (files.length > 0) {
+      console.log('Staging files...')
+      await x('git', ['add', ...files], execOptions)
+    }
+    else {
+    //   console.log('No files specified. Staging all changes...')
+    //   await x('git', ['add', '.'], execOptions)
+      return
+    }
+ 
+    // 2. 提交
+    console.log(`Committing with message: ${commitMsg}`)
+    await x('git', ['commit', '-m', commitMsg], execOptions)
+ 
+    console.log('Commit successful!')
+  }
+  catch (error) {
+    console.error(`Error during commit:`, error)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/git-utils/index.html b/scripts/git-utils/index.html new file mode 100644 index 0000000..4201075 --- /dev/null +++ b/scripts/git-utils/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for scripts/git-utils + + + + + + + + + +
+
+

All files scripts/git-utils

+
+ +
+ 0% + Statements + 0/410 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 0% + Lines + 0/410 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
commit.ts +
+
0%0/190%0/10%0/10%0/19
index.ts +
+
0%0/171100%1/1100%1/10%0/171
tags.ts +
+
0%0/2200%0/10%0/10%0/220
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/git-utils/index.ts b/scripts/git-utils/index.ts deleted file mode 100644 index b0c2428..0000000 --- a/scripts/git-utils/index.ts +++ /dev/null @@ -1,240 +0,0 @@ -/* eslint-disable unused-imports/no-unused-vars */ -import fs from 'node:fs' -import os from 'node:os' -import path from 'node:path' -import process from 'node:process' -import { x } from 'tinyexec' - -const execOptions = { throwOnError: true } - -interface SquashOptions { - message?: string - force?: boolean - filter?: (line: string) => unknown -} - -/** - * 合并本地最新的 N 个 Git 提交 - * @param n 需要合并的提交数量 - * @param options 配置选项 - * @param options.message 合并后的提交信息(默认自动生成) - * @param options.force 当本地提交数不足时强制合并全部(默认 false) - */ -export async function squashLastNCommits(n: number, options?: SquashOptions) { - validateInput(n) - checkGitRepository() - - const commitCount = await getUnpushedCommitCount() - const actualSquashCount = calculateActualSquashCount(n, commitCount, options?.force) - - // 获取需要合并的提交的标签 - const commitHashes = await getCommitHashes(actualSquashCount) - const tags = await getLocalUnpushedTags(commitHashes) - - const lastCommitHash = await performSquash(actualSquashCount, options?.message, options?.filter) - - if (lastCommitHash) { - // 为合并后的提交打上标签 - await addTagsToCommit(lastCommitHash, commitHashes, tags) - } - - return lastCommitHash -} - -// 以下为内部工具函数 -function validateInput(n: number): void { - if (!Number.isInteger(n) || n < 1) { - throw new Error(`Invalid input: n must be positive integer (received ${n})`) - } -} - -async function checkGitRepository(): Promise { - try { - await x('git', ['rev-parse', '--is-inside-work-tree'], execOptions) - } - catch (error) { - console.log(error) - throw new Error('Not a git repository') - } -} - -async function getUnpushedCommitCount() { - try { - const currentBranch = (await x('git', ['rev-parse', '--abbrev-ref', 'HEAD'], execOptions)).stdout.trim() - const upstreamExists = (await x( - 'git', - ['rev-parse', '--abbrev-ref', `${currentBranch}@{u}`], - execOptions, - )).stdout.trim() - - if (!upstreamExists) { - throw new Error( - `Current branch '${currentBranch}' has no upstream. ` - + 'Use --set-upstream-to to track remote branch.', - ) - } - - const result = await x('git', ['rev-list', '--count', `${currentBranch}@{u}..HEAD`], execOptions) - return Number.parseInt(result.stdout.trim(), 10) - } - catch (error) { - if (error instanceof Error) { - throw error - } - throw new Error(`Unknown error: ${error}`) - } -} - -function calculateActualSquashCount( - requested: number, - available: number, - force = false, -): number { - const actual = Math.min(requested, available) - if (!force && actual < requested) { - throw new Error( - `Cannot squash ${requested} commits (only ${available} available). ` - + 'Use force option to proceed with available commits.', - ) - } - return actual -} - -async function performSquash(count: number, message?: string, filter?: SquashOptions['filter']) { - if (typeof count !== 'number' || count <= 0) { - return false - } - - try { - const commitMessage = message || `${await getOriginalCommitMessages(count, filter)}` - - // 回退 HEAD 但保留工作目录 - await x('git', ['reset', '--soft', `HEAD~${count}`], execOptions) - - // 创建新提交 - await x('git', ['commit', ...buildMessageArgs(commitMessage)], execOptions) - // 获取最后的合并提交哈希 - const lastCommitHash = await x('git', ['rev-parse', 'HEAD'], execOptions) - return lastCommitHash.stdout.trim() - } - catch (error) { - throw new Error(`Squash failed: ${error instanceof Error ? error.message : error}`) - } -} - -async function getOriginalCommitMessages(count: number, filter = (line: string) => (typeof line === 'string') as unknown): Promise { - if (typeof count !== 'number' || count <= 0) { - return '' - } - - const res = await x( - 'git', - ['log', '--format=%B', '-n', `${count}`, 'HEAD'], - execOptions, - ) - - const msgList = res.stdout.split('\n') - const msg = msgList.filter(filter).join('\n') - - return msg -} - -function buildMessageArgs(message: string): string[] { - const tempFile = createTempFile(message) - return ['-F', tempFile] -} - -function createTempFile(content: string): string { - const tempPath = path.join(os.tmpdir(), `git-commit-${Date.now()}.txt`) - fs.writeFileSync(tempPath, content, 'utf-8') - - process.once('exit', () => { - try { - fs.unlinkSync(tempPath) - } - catch { } - }) - return tempPath -} - -// 获取需要合并的提交的 Hash 值 -async function getCommitHashes(count: number): Promise { - const result = await x('git', ['log', '--format=%H', `-n ${count}`, 'HEAD'], execOptions) - return result.stdout.split('\n').filter(hash => hash) -} - -// 获取本地未推送到远程的标签 -async function getLocalUnpushedTags(commits: string[] = []): Promise> { - const tagsForCommits: Record = {} - - // 获取本地所有标签 - const localTagsResult = await x('git', ['tag', '-l'], execOptions) - const localTags = new Set(localTagsResult.stdout.split('\n').filter(tag => tag)) - - // 获取远程所有标签 - const remoteTagsResult = await x('git', ['ls-remote', '--tags', '--refs'], execOptions) - const remoteTags = new Set(remoteTagsResult.stdout.split('\n').map(line => line.split('\t')[1]?.replace('refs/tags/', '')).filter(tag => tag)) - - // 找出那些存在于本地但没有推送到远程的标签 - const unpushedLocalTags = [...localTags].filter(tag => !remoteTags.has(tag)) - - // 为每个提交检查它是否有未推送的标签 - for (const commit of commits) { - const result = await x('git', ['tag', '--points-at', commit], execOptions) - const tags = result.stdout.split('\n').filter(tag => tag) - - // 过滤出那些本地未推送的标签 - const unpushedTags = tags.filter(tag => unpushedLocalTags.includes(tag)) - tagsForCommits[commit] = unpushedTags - } - - return tagsForCommits -} - -// 为合并后的提交添加标签 -async function addTagsToCommit(lastCommitHash: string, commits: string[], tagsForCommits: Record): Promise { - if (!lastCommitHash) - return - - for (const commit of commits) { - const tags = tagsForCommits[commit] || [] - // 删除旧的标签 - await deleteOldTags(tags) - for (const tag of tags) { - try { - console.log(`Adding tag '${tag}' to the merged commit ${lastCommitHash}`) - await x('git', ['tag', tag, lastCommitHash], execOptions) - } - catch (error) { - console.error(`Failed to tag commit ${commit} with tag ${tag}: ${error}`) - } - } - } -} - -// 删除旧的标签 -async function deleteOldTags(tags: string[]) { - for (const tag of tags) { - console.log(`Deleting tag '${tag}'`) - await x('git', ['tag', '-d', tag], execOptions) - } -} - -async function checkWorkingDirectoryClean(): Promise { - try { - await x('git', ['diff-index', '--quiet', 'HEAD', '--'], execOptions) - } - catch { - throw new Error('Working directory contains uncommitted changes') - } -} - -async function getCommitCount(): Promise { - try { - const result = await x('git', ['rev-list', '--count', 'HEAD'], execOptions) - return Number.parseInt(result.stdout.trim(), 10) - } - catch { - throw new Error('Failed to count commits') - } -} diff --git a/scripts/git-utils/index.ts.html b/scripts/git-utils/index.ts.html new file mode 100644 index 0000000..5a84c7a --- /dev/null +++ b/scripts/git-utils/index.ts.html @@ -0,0 +1,805 @@ + + + + + + Code coverage report for scripts/git-utils/index.ts + + + + + + + + + +
+
+

All files / scripts/git-utils index.ts

+
+ +
+ 0% + Statements + 0/171 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/171 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable unused-imports/no-unused-vars */
+import fs from 'node:fs'
+import os from 'node:os'
+import path from 'node:path'
+import process from 'node:process'
+import { x } from 'tinyexec'
+ 
+const execOptions = { throwOnError: true }
+ 
+interface SquashOptions {
+  message?: string
+  force?: boolean
+  filter?: (line: string) => unknown
+}
+ 
+/**
+ * 合并本地最新的 N 个 Git 提交
+ * @param n 需要合并的提交数量
+ * @param options 配置选项
+ * @param options.message 合并后的提交信息(默认自动生成)
+ * @param options.force 当本地提交数不足时强制合并全部(默认 false)
+ */
+export async function squashLastNCommits(n: number, options?: SquashOptions) {
+  validateInput(n)
+  checkGitRepository()
+ 
+  const commitCount = await getUnpushedCommitCount()
+  const actualSquashCount = calculateActualSquashCount(n, commitCount, options?.force)
+ 
+  // 获取需要合并的提交的标签
+  const commitHashes = await getCommitHashes(actualSquashCount)
+  const tags = await getLocalUnpushedTags(commitHashes)
+ 
+  const lastCommitHash = await performSquash(actualSquashCount, options?.message, options?.filter)
+ 
+  if (lastCommitHash) {
+    // 为合并后的提交打上标签
+    await addTagsToCommit(lastCommitHash, commitHashes, tags)
+  }
+ 
+  return lastCommitHash
+}
+ 
+// 以下为内部工具函数
+function validateInput(n: number): void {
+  if (!Number.isInteger(n) || n < 1) {
+    throw new Error(`Invalid input: n must be positive integer (received ${n})`)
+  }
+}
+ 
+async function checkGitRepository(): Promise<void> {
+  try {
+    await x('git', ['rev-parse', '--is-inside-work-tree'], execOptions)
+  }
+  catch (error) {
+    console.log(error)
+    throw new Error('Not a git repository')
+  }
+}
+ 
+async function getUnpushedCommitCount() {
+  try {
+    const currentBranch = (await x('git', ['rev-parse', '--abbrev-ref', 'HEAD'], execOptions)).stdout.trim()
+    const upstreamExists = (await x(
+      'git',
+      ['rev-parse', '--abbrev-ref', `${currentBranch}@{u}`],
+      execOptions,
+    )).stdout.trim()
+ 
+    if (!upstreamExists) {
+      throw new Error(
+        `Current branch '${currentBranch}' has no upstream. `
+        + 'Use --set-upstream-to to track remote branch.',
+      )
+    }
+ 
+    const result = await x('git', ['rev-list', '--count', `${currentBranch}@{u}..HEAD`], execOptions)
+    return Number.parseInt(result.stdout.trim(), 10)
+  }
+  catch (error) {
+    if (error instanceof Error) {
+      throw error
+    }
+    throw new Error(`Unknown error: ${error}`)
+  }
+}
+ 
+function calculateActualSquashCount(
+  requested: number,
+  available: number,
+  force = false,
+): number {
+  const actual = Math.min(requested, available)
+  if (!force && actual < requested) {
+    throw new Error(
+      `Cannot squash ${requested} commits (only ${available} available). `
+      + 'Use force option to proceed with available commits.',
+    )
+  }
+  return actual
+}
+ 
+async function performSquash(count: number, message?: string, filter?: SquashOptions['filter']) {
+  if (typeof count !== 'number' || count <= 0) {
+    return false
+  }
+ 
+  try {
+    const commitMessage = message || `${await getOriginalCommitMessages(count, filter)}`
+ 
+    // 回退 HEAD 但保留工作目录
+    await x('git', ['reset', '--soft', `HEAD~${count}`], execOptions)
+ 
+    // 创建新提交
+    await x('git', ['commit', ...buildMessageArgs(commitMessage)], execOptions)
+    // 获取最后的合并提交哈希
+    const lastCommitHash = await x('git', ['rev-parse', 'HEAD'], execOptions)
+    return lastCommitHash.stdout.trim()
+  }
+  catch (error) {
+    throw new Error(`Squash failed: ${error instanceof Error ? error.message : error}`)
+  }
+}
+ 
+async function getOriginalCommitMessages(count: number, filter = (line: string) => (typeof line === 'string') as unknown): Promise<string> {
+  if (typeof count !== 'number' || count <= 0) {
+    return ''
+  }
+ 
+  const res = await x(
+    'git',
+    ['log', '--format=%B', '-n', `${count}`, 'HEAD'],
+    execOptions,
+  )
+ 
+  const msgList = res.stdout.split('\n')
+  const msg = msgList.filter(filter).join('\n')
+ 
+  return msg
+}
+ 
+function buildMessageArgs(message: string): string[] {
+  const tempFile = createTempFile(message)
+  return ['-F', tempFile]
+}
+ 
+function createTempFile(content: string): string {
+  const tempPath = path.join(os.tmpdir(), `git-commit-${Date.now()}.txt`)
+  fs.writeFileSync(tempPath, content, 'utf-8')
+ 
+  process.once('exit', () => {
+    try {
+      fs.unlinkSync(tempPath)
+    }
+    catch { }
+  })
+  return tempPath
+}
+ 
+// 获取需要合并的提交的 Hash 值
+async function getCommitHashes(count: number): Promise<string[]> {
+  const result = await x('git', ['log', '--format=%H', `-n ${count}`, 'HEAD'], execOptions)
+  return result.stdout.split('\n').filter(hash => hash)
+}
+ 
+// 获取本地未推送到远程的标签
+async function getLocalUnpushedTags(commits: string[] = []): Promise<Record<string, string[]>> {
+  const tagsForCommits: Record<string, string[]> = {}
+ 
+  // 获取本地所有标签
+  const localTagsResult = await x('git', ['tag', '-l'], execOptions)
+  const localTags = new Set(localTagsResult.stdout.split('\n').filter(tag => tag))
+ 
+  // 获取远程所有标签
+  const remoteTagsResult = await x('git', ['ls-remote', '--tags', '--refs'], execOptions)
+  const remoteTags = new Set(remoteTagsResult.stdout.split('\n').map(line => line.split('\t')[1]?.replace('refs/tags/', '')).filter(tag => tag))
+ 
+  // 找出那些存在于本地但没有推送到远程的标签
+  const unpushedLocalTags = [...localTags].filter(tag => !remoteTags.has(tag))
+ 
+  // 为每个提交检查它是否有未推送的标签
+  for (const commit of commits) {
+    const result = await x('git', ['tag', '--points-at', commit], execOptions)
+    const tags = result.stdout.split('\n').filter(tag => tag)
+ 
+    // 过滤出那些本地未推送的标签
+    const unpushedTags = tags.filter(tag => unpushedLocalTags.includes(tag))
+    tagsForCommits[commit] = unpushedTags
+  }
+ 
+  return tagsForCommits
+}
+ 
+// 为合并后的提交添加标签
+async function addTagsToCommit(lastCommitHash: string, commits: string[], tagsForCommits: Record<string, string[]>): Promise<void> {
+  if (!lastCommitHash)
+    return
+ 
+  for (const commit of commits) {
+    const tags = tagsForCommits[commit] || []
+    // 删除旧的标签
+    await deleteOldTags(tags)
+    for (const tag of tags) {
+      try {
+        console.log(`Adding tag '${tag}' to the merged commit ${lastCommitHash}`)
+        await x('git', ['tag', tag, lastCommitHash], execOptions)
+      }
+      catch (error) {
+        console.error(`Failed to tag commit ${commit} with tag ${tag}: ${error}`)
+      }
+    }
+  }
+}
+ 
+// 删除旧的标签
+async function deleteOldTags(tags: string[]) {
+  for (const tag of tags) {
+    console.log(`Deleting tag '${tag}'`)
+    await x('git', ['tag', '-d', tag], execOptions)
+  }
+}
+ 
+async function checkWorkingDirectoryClean(): Promise<void> {
+  try {
+    await x('git', ['diff-index', '--quiet', 'HEAD', '--'], execOptions)
+  }
+  catch {
+    throw new Error('Working directory contains uncommitted changes')
+  }
+}
+ 
+async function getCommitCount(): Promise<number> {
+  try {
+    const result = await x('git', ['rev-list', '--count', 'HEAD'], execOptions)
+    return Number.parseInt(result.stdout.trim(), 10)
+  }
+  catch {
+    throw new Error('Failed to count commits')
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/git-utils/tags.ts b/scripts/git-utils/tags.ts deleted file mode 100644 index 5e99ac8..0000000 --- a/scripts/git-utils/tags.ts +++ /dev/null @@ -1,340 +0,0 @@ -import { x } from 'tinyexec' - -const execOptions = { throwOnError: true } - -export interface Tag { - /* 标签 */ - tag: string - /* 提交id */ - id: string - /* 作者 */ - author: string - /* 日期 */ - date?: Date - /* sha值 */ - sha: string - /* 上一个tag */ - pre?: Tag -} - -export type ParsedCommit = { - id?: string - sha?: string // 提交的哈希值,例如 "a1b2c3d" - date?: Date - author?: string -} & CommitInfo - -interface CommitInfo { - /* commit类型,例如 "feat" 或 "fix" */ - type?: string - /* commit作用域 | 文件或者模块 */ - scope?: string - /* git-emoji */ - emoji?: string - /* commit主要内容 */ - subject?: string - /* 任务单号 */ - ticket?: string - /** 提交的完整消息 */ - raw?: string -} - -// 解析commit信息 -function getCommitMsgInfo(data?: string): CommitInfo | null { - if (!data) - return null - - const headerPattern = /^(?\w*)(?:\((?.*)\))?!?:\s(?:(?:\w*:|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F\uDE80-\uDEFF]|\uD83E[\uDD00-\uDDFF\uDE00-\uDEFF]|[\u2600-\u2B55])\s)?(?(?:(?!#).)*(?!\s).)(?:\s\(?(?#\d*)\)?)?$/ // chore(scope): :emoji: test #123 - - const match = data.trim().match(headerPattern) - const matchGroups = match?.groups - - if (!matchGroups || matchGroups.subject === undefined || matchGroups.type === undefined) - return null - - return { - type: matchGroups.type.trim(), - subject: matchGroups.subject.trim(), - scope: matchGroups.scope?.trim(), - emoji: matchGroups.emoji?.trim(), - ticket: matchGroups.ticket?.trim(), - raw: data.trim(), - } -} - -export function parseCommit(commitLine: string): ParsedCommit { - // 找到第一个% - const firstSpaceIndex = commitLine.indexOf('%') - if (firstSpaceIndex === -1) { - throw new Error('无效的提交记录格式') - } - - // 提取哈希值和消息 - const temp = commitLine.slice(commitLine.indexOf('%') + 1, commitLine.lastIndexOf('%')) || '' - - const searchParams = new URLSearchParams(temp) - const commitInfo = Object.fromEntries(searchParams.entries()) - - const infos = { - id: commitInfo.id, - sha: commitInfo.sha, - date: commitInfo.data ? new Date(commitInfo.data) : undefined, - author: commitInfo.author, - } - - const message = commitInfo.raw - const commitRes = getCommitMsgInfo(message) - if (message && commitRes) { - return { ...infos, ...commitRes } - } - else { - // 如果消息不符合格式,将整个消息作为 subject,type 设为 "other" - return { - ...infos, - type: 'other', - subject: message, - raw: message, - } - } -} - -export class GitTagParser { - private tags: string[] = [] - constructor() {} - - getTags() { - return this.tags - } - - get firstTag() { - return this.tags.at(-1) - } - - /** 当前最新的 tag */ - get lastTag() { - return this.tags.at(0) - } - - // 获取所有标签并按提交日期排序 - async fetchTags(remote: boolean = false): Promise { - const cmds = remote - ? ['ls-remote', '--tags', '--refs', '--sort=creatordate'] - : ['tag', '-l', '--sort=creatordate'] - - const tagsResult = await x('git', [...cmds], execOptions) - const tags = remote - ? tagsResult.stdout - .split('\n') - .map(line => line.split('\t')[1]?.replace('refs/tags/', '').trim()) - .filter(tag => tag) as string[] - : tagsResult.stdout - .split('\n') - .map(line => line.trim()) - .filter(tag => tag) - - this.tags = tags.reverse() // 按日期倒序排列 - return this.tags - } - - /** - * 获取两个标签之间的提交 - * @param tag1 新的 tag - * @param tag2 旧的 tag - */ - async getCommitsBetweenTags(tag1: string, tag2?: string): Promise - async getCommitsBetweenTags(tag1: string, tag2?: string, isParse?: false): Promise - async getCommitsBetweenTags(tag1: string, tag2?: string, isParse?: true): Promise - async getCommitsBetweenTags(tag1: string, tag2?: string, isParse?: boolean): Promise { - if (!this.tags.length) { - throw new Error('No tags available. Please fetch tags first.') - } - - const tag1Index = this.tags.indexOf(tag1) - const tag2Index = tag2 === undefined ? undefined : this.tags.indexOf(tag2) - - if (tag1Index === -1 || (tag2 !== undefined && tag2Index === -1)) { - throw new Error(`One or both tags ${tag1} or ${tag2} do not exist.`) - } - - const range = tag2 === undefined ? tag1 : `${tag2}..${tag1}` - const commitsResult = await x('git', [ - 'log', - '--oneline', - '--pretty=format:"%id=%H&author=%an&raw=%s&date=%ad&sha=%h%"', - range, - ], execOptions) - const commitList = commitsResult.stdout - .split('\n') - .map(line => line.trim()) - .filter(commit => commit) - - return isParse === true ? commitList.map(parseCommit) : commitList - } - - // 分析并按标签的 "文件夹" 结构进行分组 - groupTagsByFolderStructure(): { [folder: string | 'root']: string[] } { - const folderGroups: { [folder: string]: string[] } = {} - - this.tags.forEach((tag) => { - const folderName = this.extractFolderName(tag) - if (!folderGroups[folderName]) { - folderGroups[folderName] = [] - } - folderGroups[folderName].push(tag) - }) - - return folderGroups - } - - // 提取标签名称的“文件夹”部分 - private extractFolderName(tag: string): string { - const parts = tag.split('/') - // 返回“文件夹”部分 - return parts.length > 1 ? parts[0]! : 'root' // 如果标签有斜杠,认为是文件夹,取斜杠前的部分;否则归类为根目录 - } - - // 获取标签的创建时间 - async getTagDate(tag: string): Promise { - const result = await x('git', ['log', '-1', '--format=%cd', tag], execOptions) - return new Date(result.stdout.trim()) - } - - async getPreviousTag(tag: string, same = false, pre = false): Promise { - const currentTagIndex = this.tags.indexOf(tag) - let prevTag: string | undefined - if (same === true) { - const tagList = this.groupTagsByScopeWithVersions(true) - const tagInfo = this.extractScopeProjectVersion(tag) - const scope = tag.startsWith('@') ? `@${tagInfo.scope}` : tagInfo.scope - const project = tagInfo.project - const sameList = tagList[scope]?.[project] - if (sameList && sameList.includes(tag)) { - for (let index = currentTagIndex; index < this.tags.length; index++) { - const element = this.tags[index] - if (element && element !== this.tags[currentTagIndex] && sameList.includes(element)) { - prevTag = element - break - } - } - } - } - else { - prevTag = this.tags[currentTagIndex + 1] - } - - if (prevTag) { - return this.getTagInfo(prevTag, pre, same) - } - - return undefined - } - - /** - * 获取标签的信息 - * @param tag - * @param pre 默认 false,避免递归 - */ - async getTagInfo(tag: string, pre = false, same = false): Promise { - const result = await x('git', ['show', tag, '-q', '--pretty=format:"%id=%H&author=%an&date=%ad&sha=%h%"'], execOptions) - const data = result.stdout.trim() - const temp = data?.slice(data.indexOf('%') + 1, data.lastIndexOf('%')) || '' - - const searchParams = new URLSearchParams(temp) - const tagInfo = Object.fromEntries(searchParams.entries()) - - const tagResult: Tag = { - tag, - id: tagInfo.id || '', - author: tagInfo.author || '', - date: tagInfo.date ? new Date(tagInfo.date) : undefined, - sha: tagInfo.sha || '', - } - - // 获取上一个标签 - pre && (tagResult.pre = await this.getPreviousTag(tag, same, pre)) - - return tagResult - } - - // 按照组名(@)分组并归纳版本号 - groupTagsByScopeWithVersions(full = false): { [scope: string]: { [project: string]: string[] } } { - const scopeGroups: { [scope: string]: { [project: string]: string[] } } = {} - - this.tags.forEach((tag) => { - const { scope: _scope, project: _project, version: _version } = this.extractScopeProjectVersion(tag) - const scope = full && tag.startsWith('@') ? `@${_scope}` : _scope - const project = _project - const version = full ? tag : _version - - // 确保组名存在 - if (!scopeGroups[scope]) { - scopeGroups[scope] = {} - } - - // 确保项目存在 - if (!scopeGroups[scope][project]) { - scopeGroups[scope][project] = [] - } - - // 将版本号加入到项目下 - if (!scopeGroups[scope][project].includes(version)) { - scopeGroups[scope][project].push(version) - } - }) - - // 按版本号排序 - Object.keys(scopeGroups).forEach((scope) => { - Object.keys(scopeGroups[scope]!).forEach((project) => { - scopeGroups[scope]![project]!.sort((a, b) => this.compareVersions(a, b)) - }) - }) - - return scopeGroups - } - - // 提取标签中的 scope、project 和 version - extractScopeProjectVersion(tag: string): { scope: string, project: string, version: string } { - let scope = '' - let project = '' - let version = '' - - // 检查标签是否是 @scope/project@version 格式 - const match = tag.match(/^@([^/]+)\/([^@]+)@(.+)$/) - if (match) { - scope = match[1]! // 组名部分 - project = match[2]! // 项目名部分 - version = match[3]! // 版本号部分 - } - else { - // 如果没有 @scope/project@version 格式,假设是版本标签 - const simpleVersionMatch = tag.match(/^v?(\d+\.\d+\.\d.*)$/) - if (simpleVersionMatch) { - version = simpleVersionMatch[1]! - project = tag // 使用 tag 作为项目名 - scope = 'root' // 默认 scope 为 root - } - else { - throw new Error(`Invalid tag format: ${tag}`) - } - } - - return { scope, project, version } - } - - // 比较版本号,返回排序顺序 - private compareVersions(versionA: string, versionB: string): number { - const aParts = versionA.split('.').map(v => Number.parseInt(v, 10)) - const bParts = versionB.split('.').map(v => Number.parseInt(v, 10)) - - for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) { - const a = aParts[i] || 0 - const b = bParts[i] || 0 - if (a !== b) - return a - b - } - - return 0 - } -} - -export default GitTagParser diff --git a/scripts/git-utils/tags.ts.html b/scripts/git-utils/tags.ts.html new file mode 100644 index 0000000..3dfd8f1 --- /dev/null +++ b/scripts/git-utils/tags.ts.html @@ -0,0 +1,1105 @@ + + + + + + Code coverage report for scripts/git-utils/tags.ts + + + + + + + + + +
+
+

All files / scripts/git-utils tags.ts

+
+ +
+ 0% + Statements + 0/220 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/220 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { x } from 'tinyexec'
+ 
+const execOptions = { throwOnError: true }
+ 
+export interface Tag {
+  /* 标签 */
+  tag: string
+  /* 提交id */
+  id: string
+  /* 作者 */
+  author: string
+  /* 日期 */
+  date?: Date
+  /* sha值 */
+  sha: string
+  /* 上一个tag */
+  pre?: Tag
+}
+ 
+export type ParsedCommit = {
+  id?: string
+  sha?: string // 提交的哈希值,例如 "a1b2c3d"
+  date?: Date
+  author?: string
+} & CommitInfo
+ 
+interface CommitInfo {
+  /* commit类型,例如 "feat" 或 "fix" */
+  type?: string
+  /* commit作用域 | 文件或者模块 */
+  scope?: string
+  /* git-emoji */
+  emoji?: string
+  /* commit主要内容 */
+  subject?: string
+  /* 任务单号 */
+  ticket?: string
+  /** 提交的完整消息 */
+  raw?: string
+}
+ 
+// 解析commit信息
+function getCommitMsgInfo(data?: string): CommitInfo | null {
+  if (!data)
+    return null
+ 
+  const headerPattern = /^(?<type>\w*)(?:\((?<scope>.*)\))?!?:\s(?:(?<emoji>:\w*:|\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F\uDE80-\uDEFF]|\uD83E[\uDD00-\uDDFF\uDE00-\uDEFF]|[\u2600-\u2B55])\s)?(?<subject>(?:(?!#).)*(?!\s).)(?:\s\(?(?<ticket>#\d*)\)?)?$/ // chore(scope): :emoji: test #123
+ 
+  const match = data.trim().match(headerPattern)
+  const matchGroups = match?.groups
+ 
+  if (!matchGroups || matchGroups.subject === undefined || matchGroups.type === undefined)
+    return null
+ 
+  return {
+    type: matchGroups.type.trim(),
+    subject: matchGroups.subject.trim(),
+    scope: matchGroups.scope?.trim(),
+    emoji: matchGroups.emoji?.trim(),
+    ticket: matchGroups.ticket?.trim(),
+    raw: data.trim(),
+  }
+}
+ 
+export function parseCommit(commitLine: string): ParsedCommit {
+  // 找到第一个%
+  const firstSpaceIndex = commitLine.indexOf('%')
+  if (firstSpaceIndex === -1) {
+    throw new Error('无效的提交记录格式')
+  }
+ 
+  // 提取哈希值和消息
+  const temp = commitLine.slice(commitLine.indexOf('%') + 1, commitLine.lastIndexOf('%')) || ''
+ 
+  const searchParams = new URLSearchParams(temp)
+  const commitInfo = Object.fromEntries(searchParams.entries())
+ 
+  const infos = {
+    id: commitInfo.id,
+    sha: commitInfo.sha,
+    date: commitInfo.data ? new Date(commitInfo.data) : undefined,
+    author: commitInfo.author,
+  }
+ 
+  const message = commitInfo.raw
+  const commitRes = getCommitMsgInfo(message)
+  if (message && commitRes) {
+    return { ...infos, ...commitRes }
+  }
+  else {
+    // 如果消息不符合格式,将整个消息作为 subject,type 设为 "other"
+    return {
+      ...infos,
+      type: 'other',
+      subject: message,
+      raw: message,
+    }
+  }
+}
+ 
+export class GitTagParser {
+  private tags: string[] = []
+  constructor() {}
+ 
+  getTags() {
+    return this.tags
+  }
+ 
+  get firstTag() {
+    return this.tags.at(-1)
+  }
+ 
+  /** 当前最新的 tag */
+  get lastTag() {
+    return this.tags.at(0)
+  }
+ 
+  // 获取所有标签并按提交日期排序
+  async fetchTags(remote: boolean = false): Promise<string[]> {
+    const cmds = remote
+      ? ['ls-remote', '--tags', '--refs', '--sort=creatordate']
+      : ['tag', '-l', '--sort=creatordate']
+ 
+    const tagsResult = await x('git', [...cmds], execOptions)
+    const tags = remote
+      ? tagsResult.stdout
+        .split('\n')
+        .map(line => line.split('\t')[1]?.replace('refs/tags/', '').trim())
+        .filter(tag => tag) as string[]
+      : tagsResult.stdout
+          .split('\n')
+          .map(line => line.trim())
+          .filter(tag => tag)
+ 
+    this.tags = tags.reverse() // 按日期倒序排列
+    return this.tags
+  }
+ 
+  /**
+   * 获取两个标签之间的提交
+   * @param tag1 新的 tag
+   * @param tag2 旧的 tag
+   */
+  async getCommitsBetweenTags(tag1: string, tag2?: string): Promise<string[]>
+  async getCommitsBetweenTags(tag1: string, tag2?: string, isParse?: false): Promise<string[]>
+  async getCommitsBetweenTags(tag1: string, tag2?: string, isParse?: true): Promise<ParsedCommit[]>
+  async getCommitsBetweenTags(tag1: string, tag2?: string, isParse?: boolean): Promise<string[] | ParsedCommit[]> {
+    if (!this.tags.length) {
+      throw new Error('No tags available. Please fetch tags first.')
+    }
+ 
+    const tag1Index = this.tags.indexOf(tag1)
+    const tag2Index = tag2 === undefined ? undefined : this.tags.indexOf(tag2)
+ 
+    if (tag1Index === -1 || (tag2 !== undefined && tag2Index === -1)) {
+      throw new Error(`One or both tags ${tag1} or ${tag2} do not exist.`)
+    }
+ 
+    const range = tag2 === undefined ? tag1 : `${tag2}..${tag1}`
+    const commitsResult = await x('git', [
+      'log',
+      '--oneline',
+      '--pretty=format:"%id=%H&author=%an&raw=%s&date=%ad&sha=%h%"',
+      range,
+    ], execOptions)
+    const commitList = commitsResult.stdout
+      .split('\n')
+      .map(line => line.trim())
+      .filter(commit => commit)
+ 
+    return isParse === true ? commitList.map(parseCommit) : commitList
+  }
+ 
+  // 分析并按标签的 "文件夹" 结构进行分组
+  groupTagsByFolderStructure(): { [folder: string | 'root']: string[] } {
+    const folderGroups: { [folder: string]: string[] } = {}
+ 
+    this.tags.forEach((tag) => {
+      const folderName = this.extractFolderName(tag)
+      if (!folderGroups[folderName]) {
+        folderGroups[folderName] = []
+      }
+      folderGroups[folderName].push(tag)
+    })
+ 
+    return folderGroups
+  }
+ 
+  // 提取标签名称的“文件夹”部分
+  private extractFolderName(tag: string): string {
+    const parts = tag.split('/')
+    // 返回“文件夹”部分
+    return parts.length > 1 ? parts[0]! : 'root' // 如果标签有斜杠,认为是文件夹,取斜杠前的部分;否则归类为根目录
+  }
+ 
+  // 获取标签的创建时间
+  async getTagDate(tag: string): Promise<Date> {
+    const result = await x('git', ['log', '-1', '--format=%cd', tag], execOptions)
+    return new Date(result.stdout.trim())
+  }
+ 
+  async getPreviousTag(tag: string, same = false, pre = false): Promise<Tag | undefined> {
+    const currentTagIndex = this.tags.indexOf(tag)
+    let prevTag: string | undefined
+    if (same === true) {
+      const tagList = this.groupTagsByScopeWithVersions(true)
+      const tagInfo = this.extractScopeProjectVersion(tag)
+      const scope = tag.startsWith('@') ? `@${tagInfo.scope}` : tagInfo.scope
+      const project = tagInfo.project
+      const sameList = tagList[scope]?.[project]
+      if (sameList && sameList.includes(tag)) {
+        for (let index = currentTagIndex; index < this.tags.length; index++) {
+          const element = this.tags[index]
+          if (element && element !== this.tags[currentTagIndex] && sameList.includes(element)) {
+            prevTag = element
+            break
+          }
+        }
+      }
+    }
+    else {
+      prevTag = this.tags[currentTagIndex + 1]
+    }
+ 
+    if (prevTag) {
+      return this.getTagInfo(prevTag, pre, same)
+    }
+ 
+    return undefined
+  }
+ 
+  /**
+   * 获取标签的信息
+   * @param tag
+   * @param pre 默认 false,避免递归
+   */
+  async getTagInfo(tag: string, pre = false, same = false): Promise<Tag> {
+    const result = await x('git', ['show', tag, '-q', '--pretty=format:"%id=%H&author=%an&date=%ad&sha=%h%"'], execOptions)
+    const data = result.stdout.trim()
+    const temp = data?.slice(data.indexOf('%') + 1, data.lastIndexOf('%')) || ''
+ 
+    const searchParams = new URLSearchParams(temp)
+    const tagInfo = Object.fromEntries(searchParams.entries())
+ 
+    const tagResult: Tag = {
+      tag,
+      id: tagInfo.id || '',
+      author: tagInfo.author || '',
+      date: tagInfo.date ? new Date(tagInfo.date) : undefined,
+      sha: tagInfo.sha || '',
+    }
+ 
+    // 获取上一个标签
+    pre && (tagResult.pre = await this.getPreviousTag(tag, same, pre))
+ 
+    return tagResult
+  }
+ 
+  // 按照组名(@)分组并归纳版本号
+  groupTagsByScopeWithVersions(full = false): { [scope: string]: { [project: string]: string[] } } {
+    const scopeGroups: { [scope: string]: { [project: string]: string[] } } = {}
+ 
+    this.tags.forEach((tag) => {
+      const { scope: _scope, project: _project, version: _version } = this.extractScopeProjectVersion(tag)
+      const scope = full && tag.startsWith('@') ? `@${_scope}` : _scope
+      const project = _project
+      const version = full ? tag : _version
+ 
+      // 确保组名存在
+      if (!scopeGroups[scope]) {
+        scopeGroups[scope] = {}
+      }
+ 
+      // 确保项目存在
+      if (!scopeGroups[scope][project]) {
+        scopeGroups[scope][project] = []
+      }
+ 
+      // 将版本号加入到项目下
+      if (!scopeGroups[scope][project].includes(version)) {
+        scopeGroups[scope][project].push(version)
+      }
+    })
+ 
+    // 按版本号排序
+    Object.keys(scopeGroups).forEach((scope) => {
+      Object.keys(scopeGroups[scope]!).forEach((project) => {
+        scopeGroups[scope]![project]!.sort((a, b) => this.compareVersions(a, b))
+      })
+    })
+ 
+    return scopeGroups
+  }
+ 
+  // 提取标签中的 scope、project 和 version
+  extractScopeProjectVersion(tag: string): { scope: string, project: string, version: string } {
+    let scope = ''
+    let project = ''
+    let version = ''
+ 
+    // 检查标签是否是 @scope/project@version 格式
+    const match = tag.match(/^@([^/]+)\/([^@]+)@(.+)$/)
+    if (match) {
+      scope = match[1]! // 组名部分
+      project = match[2]! // 项目名部分
+      version = match[3]! // 版本号部分
+    }
+    else {
+      // 如果没有 @scope/project@version 格式,假设是版本标签
+      const simpleVersionMatch = tag.match(/^v?(\d+\.\d+\.\d.*)$/)
+      if (simpleVersionMatch) {
+        version = simpleVersionMatch[1]!
+        project = tag // 使用 tag 作为项目名
+        scope = 'root' // 默认 scope 为 root
+      }
+      else {
+        throw new Error(`Invalid tag format: ${tag}`)
+      }
+    }
+ 
+    return { scope, project, version }
+  }
+ 
+  // 比较版本号,返回排序顺序
+  private compareVersions(versionA: string, versionB: string): number {
+    const aParts = versionA.split('.').map(v => Number.parseInt(v, 10))
+    const bParts = versionB.split('.').map(v => Number.parseInt(v, 10))
+ 
+    for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
+      const a = aParts[i] || 0
+      const b = bParts[i] || 0
+      if (a !== b)
+        return a - b
+    }
+ 
+    return 0
+  }
+}
+ 
+export default GitTagParser
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/index.html b/scripts/index.html new file mode 100644 index 0000000..ccaf1e0 --- /dev/null +++ b/scripts/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for scripts + + + + + + + + + +
+
+

All files scripts

+
+ +
+ 0% + Statements + 0/58 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/58 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
cli.ts +
+
0%0/58100%1/1100%1/10%0/58
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/monorepo/detect.ts b/scripts/monorepo/detect.ts deleted file mode 100644 index 32426a0..0000000 --- a/scripts/monorepo/detect.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-disable unused-imports/no-unused-vars */ -import fs from 'node:fs/promises' -import path from 'node:path' -import { findUp } from 'find-up' -import { parse } from 'yaml' - -export interface MonorepoInfo { - root: string - packages: string[] -} - -export async function detectMonorepo(): Promise { - const workspaceFile = await findUp('pnpm-workspace.yaml') - if (!workspaceFile) - return null - - try { - const content = await fs.readFile(workspaceFile, 'utf8') - const { packages = [] } = await parse(content) - return { - root: path.dirname(workspaceFile), - packages: Array.isArray(packages) ? packages : [packages], - } - } - catch (error) { - throw new Error('Failed to parse pnpm-workspace.yaml') - } -} diff --git a/scripts/monorepo/detect.ts.html b/scripts/monorepo/detect.ts.html new file mode 100644 index 0000000..effab34 --- /dev/null +++ b/scripts/monorepo/detect.ts.html @@ -0,0 +1,169 @@ + + + + + + Code coverage report for scripts/monorepo/detect.ts + + + + + + + + + +
+
+

All files / scripts/monorepo detect.ts

+
+ +
+ 0% + Statements + 0/20 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable unused-imports/no-unused-vars */
+import fs from 'node:fs/promises'
+import path from 'node:path'
+import { findUp } from 'find-up'
+import { parse } from 'yaml'
+ 
+export interface MonorepoInfo {
+  root: string
+  packages: string[]
+}
+ 
+export async function detectMonorepo(): Promise<MonorepoInfo | null> {
+  const workspaceFile = await findUp('pnpm-workspace.yaml')
+  if (!workspaceFile)
+    return null
+ 
+  try {
+    const content = await fs.readFile(workspaceFile, 'utf8')
+    const { packages = [] } = await parse(content)
+    return {
+      root: path.dirname(workspaceFile),
+      packages: Array.isArray(packages) ? packages : [packages],
+    }
+  }
+  catch (error) {
+    throw new Error('Failed to parse pnpm-workspace.yaml')
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/monorepo/index.html b/scripts/monorepo/index.html new file mode 100644 index 0000000..265b25c --- /dev/null +++ b/scripts/monorepo/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for scripts/monorepo + + + + + + + + + +
+
+

All files scripts/monorepo

+
+ +
+ 0% + Statements + 0/48 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 0% + Lines + 0/48 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
detect.ts +
+
0%0/20100%1/1100%1/10%0/20
packages.ts +
+
0%0/28100%1/1100%1/10%0/28
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/monorepo/packages.ts b/scripts/monorepo/packages.ts deleted file mode 100644 index b970a1e..0000000 --- a/scripts/monorepo/packages.ts +++ /dev/null @@ -1,40 +0,0 @@ -import type { MonorepoInfo } from './detect' -import fs from 'node:fs' -import path from 'node:path' -import { glob as globby } from 'tinyglobby' -import { normalizePath } from '../utils/path' - -export interface PackageInfo { - path: string - name: string - version?: string - private: boolean - manifest: Record -} - -export async function findPackages(monorepo: MonorepoInfo): Promise { - const patterns = monorepo.packages.map(p => - normalizePath(path.join(monorepo.root, p, 'package.json')), - ) - - const results = await globby(patterns, { - absolute: true, - cwd: monorepo.root, - expandDirectories: false, - ignore: ['**/node_modules/**'], - }) - - return Promise.all( - results.map(async (pkgPath) => { - const content = fs.readFileSync(pkgPath, 'utf8') - const manifest = JSON.parse(content) - return { - path: path.dirname(pkgPath), - name: manifest.name, - version: manifest.version, - private: !!manifest.private, - manifest, - } - }), - ) -} diff --git a/scripts/monorepo/packages.ts.html b/scripts/monorepo/packages.ts.html new file mode 100644 index 0000000..1e512d6 --- /dev/null +++ b/scripts/monorepo/packages.ts.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for scripts/monorepo/packages.ts + + + + + + + + + +
+
+

All files / scripts/monorepo packages.ts

+
+ +
+ 0% + Statements + 0/28 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { MonorepoInfo } from './detect'
+import fs from 'node:fs'
+import path from 'node:path'
+import { glob as globby } from 'tinyglobby'
+import { normalizePath } from '../utils/path'
+ 
+export interface PackageInfo {
+  path: string
+  name: string
+  version?: string
+  private: boolean
+  manifest: Record<string, any>
+}
+ 
+export async function findPackages(monorepo: MonorepoInfo): Promise<PackageInfo[]> {
+  const patterns = monorepo.packages.map(p =>
+    normalizePath(path.join(monorepo.root, p, 'package.json')),
+  )
+ 
+  const results = await globby(patterns, {
+    absolute: true,
+    cwd: monorepo.root,
+    expandDirectories: false,
+    ignore: ['**/node_modules/**'],
+  })
+ 
+  return Promise.all(
+    results.map(async (pkgPath) => {
+      const content = fs.readFileSync(pkgPath, 'utf8')
+      const manifest = JSON.parse(content)
+      return {
+        path: path.dirname(pkgPath),
+        name: manifest.name,
+        version: manifest.version,
+        private: !!manifest.private,
+        manifest,
+      }
+    }),
+  )
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/package.json b/scripts/package.json deleted file mode 100644 index f39dc4c..0000000 --- a/scripts/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "scripts", - "type": "module", - "dependencies": { - "bumpp": "^10.0.3", - "chalk": "^5.4.1", - "commander": "^13.1.0", - "detect-indent": "^7.0.1", - "enquirer": "^2.4.1", - "execa": "^9.5.2", - "find-up": "^7.0.0", - "terminal-size": "^4.0.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.10", - "yaml": "^2.7.0" - }, - "devDependencies": { - "@types/node": "^22.13.1" - } -} diff --git a/scripts/publish/cli.ts b/scripts/publish/cli.ts deleted file mode 100644 index 33fad0c..0000000 --- a/scripts/publish/cli.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* eslint-disable unused-imports/no-unused-imports */ -/* eslint-disable unused-imports/no-unused-vars */ -import type { PackageInfo } from '../monorepo/packages' -import fs from 'node:fs' -import path from 'node:path' -import process from 'node:process' -import chalk from 'chalk' -import { Command } from 'commander' -import { x } from 'tinyexec' -import { detectMonorepo } from '../monorepo/detect' -import { findPackages } from '../monorepo/packages' -import { buildDependencyGraph, getPublishOrder, parsePkg } from './dependencies' - -const execOptions = { throwOnError: true } - -const program = new Command() - -program - .command('publish') - .description('Publish packages in dependency order') - .action(async () => { - const packages = await getPackages() // 获取所有包的依赖关系 - const order = getPublishOrder(packages) // 计算发布顺序 - - for (const pkg of order) { - await publishPackage(pkg) // 发布包 - } - }) - -program - .command('check-deps') - .description('Check dependencies between packages') - .action(async () => { - const packages = await getPackages() - checkDependencies(packages) // 检查依赖关系 - }) - -program.parse(process.argv) - -// 获取所有包的信息并构建依赖图 -async function getPackages() { - console.log(chalk.blue('Checking monorepo structure...')) - const monorepo = await detectMonorepo() - if (!monorepo) { - console.log(chalk.red('Not a pnpm monorepo project')) - return process.exit(1) - } - - const allPackages = await findPackages(monorepo) - const publishable = allPackages.filter(p => !p.private) - - return publishable -} - -// 发布包到 NPM -async function publishPackage(pkg: PackageInfo) { - const packagePath = path.resolve(pkg.path) - const packageJsonPath = path.join(packagePath, 'package.json') - - // 确保包的 manifest 存在 - if (!fs.existsSync(packageJsonPath)) { - console.log(chalk.red(`No package.json found in package ${pkg.name}`)) - return - } - - // 使用 fs.readFileSync 来读取 package.json - const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) - - // 检查版本号,确保包未发布过或者是一个新的版本 - if (packageJson.private) { - console.log(chalk.yellow(`Skipping private package ${pkg.name}`)) - return - } - - const version = packageJson.version - console.log(chalk.blue(`Publishing package ${pkg.name} (version: ${version})`)) - - // 在发布前进行版本检查 - const existingTags = await getExistingTags(pkg.name) - - if (existingTags.includes(version)) { - console.log(chalk.yellow(`Version ${version} of ${pkg.name} already published. Skipping...`)) - return - } - - // const pkgDeps = parsePkg(pkg) - // for (let index = 0; index < pkgDeps.dependencies.length; index++) { - // const element = pkgDeps.dependencies[index] - // if (element) { - // const version = pkg.manifest?.dependencies?.[element] as string | undefined - // if (version && version.startsWith('workspace:')) { - // const latestVersion = await getLatestVersion(element) - // pkg.manifest.dependencies[element] = latestVersion - // } - // } - // } - // for (let index = 0; index < pkgDeps.devDependencies.length; index++) { - // const element = pkgDeps.devDependencies[index] - // if (element) { - // const version = pkg.manifest?.devDependencies?.[element] as string | undefined - // if (version && version.startsWith('workspace:')) { - // const latestVersion = await getLatestVersion(element) - // pkg.manifest.devDependencies[element] = latestVersion - // } - // } - // } - // for (let index = 0; index < pkgDeps.peerDependencies.length; index++) { - // const element = pkgDeps.peerDependencies[index] - // if (element) { - // const version = pkg.manifest?.peerDependencies?.[element] as string | undefined - // if (version && version.startsWith('workspace:')) { - // const latestVersion = await getLatestVersion(element) - // pkg.manifest.peerDependencies[element] = latestVersion - // } - // } - // } - - // 执行 npm publish 命令 - try { - console.log(chalk.green(`Publishing ${pkg.name}...`)) - await x(`pnpm`, ['publish', '--json', '--access', 'public', '--tag', 'latest', '--no-git-checks'], { ...execOptions, nodeOptions: { cwd: pkg.path } }) - console.log(chalk.green(`Successfully published ${pkg.name}@${version}`)) - } - catch (error) { - console.error(chalk.red(`Failed to publish ${pkg.name}@${version}`)) - throw error - } -} - -/** - * 获取包的最新版本号 - * @param packageName - 包名 - * @returns 最新版本号 - */ -async function getLatestVersion(packageName: string): Promise { - const result = await x('npm', ['view', packageName, 'version'], execOptions) - return result.stdout.trim() -} - -/** - * 更新依赖包的版本号,确保它们指向最新的版本 - * @param packageName - 被依赖的包名 - * @param latestVersion - 最新版本 - * @param allPackages - 所有包的列表 - */ -async function updateDependentPackages(packageName: string, latestVersion: string, allPackages: PackageInfo[]) { - // 遍历所有包,检查它们是否依赖于该包 - for (const pkg of allPackages) { - const manifest = pkg.manifest - const dependencies = manifest.dependencies || {} - - // 如果当前包依赖于 target package,更新其版本号 - if (dependencies[packageName]) { - console.log(`Updating ${pkg.name} to depend on ${packageName}@${latestVersion}...`) - - // 更新 package.json 中的版本号 - dependencies[packageName] = latestVersion - manifest.dependencies = dependencies - - // 写入 package.json 文件 - fs.writeFileSync(path.join(pkg.path, 'package.json'), JSON.stringify(manifest, null, 2)) - - console.log(`${pkg.name} now depends on ${packageName}@${latestVersion}`) - } - } -} - -// 获取已发布的标签(版本)信息 -async function getExistingTags(packageName: string): Promise { - try { - const result = await x('npm', ['show', packageName, '--json'], execOptions) - const packageInfo = JSON.parse(result.stdout) - return packageInfo.versions || [] - } - catch (error) { - console.error(chalk.red(`Failed to fetch existing versions for ${packageName}:`), error) - return [] - } -} - -// 检查依赖关系 -// 检查包之间的依赖关系,区分开发时依赖和运行时依赖 -function checkDependencies(packages: PackageInfo[]) { - const graph = buildDependencyGraph(packages) - - console.log(chalk.blue('Checking package dependencies...')) - - // 遍历每个包,打印其依赖的包和开发时依赖的包 - packages.forEach((pkg) => { - const { dependencies, devDependencies, peerDependencies } = graph[pkg.name] ?? {} - - // 检查运行时依赖 - if (dependencies && dependencies.length > 0) { - console.log(chalk.green(`Package ${pkg.name} has runtime dependencies:`)) - dependencies.forEach((dep) => { - console.log(chalk.green(` - ${dep}`)) - }) - } - - // 检查开发时依赖 - if (devDependencies && devDependencies.length > 0) { - console.log(chalk.yellow(`Package ${pkg.name} has development dependencies:`)) - devDependencies.forEach((dep) => { - console.log(chalk.yellow(` - ${dep}`)) - }) - } - - // 检查开发时依赖 - if (peerDependencies && peerDependencies.length > 0) { - console.log(chalk.blue(`Package ${pkg.name} has peer dependencies:`)) - peerDependencies.forEach((dep) => { - console.log(chalk.blue(` - ${dep}`)) - }) - } - - // 如果没有任何依赖 - if (dependencies?.length === 0 && devDependencies?.length === 0 && peerDependencies?.length === 0) { - console.log(chalk.red(`Package ${pkg.name} has no dependencies`)) - } - }) -} diff --git a/scripts/publish/cli.ts.html b/scripts/publish/cli.ts.html new file mode 100644 index 0000000..d408490 --- /dev/null +++ b/scripts/publish/cli.ts.html @@ -0,0 +1,748 @@ + + + + + + Code coverage report for scripts/publish/cli.ts + + + + + + + + + +
+
+

All files / scripts/publish cli.ts

+
+ +
+ 0% + Statements + 0/125 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/125 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable unused-imports/no-unused-imports */
+/* eslint-disable unused-imports/no-unused-vars */
+import type { PackageInfo } from '../monorepo/packages'
+import fs from 'node:fs'
+import path from 'node:path'
+import process from 'node:process'
+import chalk from 'chalk'
+import { Command } from 'commander'
+import { x } from 'tinyexec'
+import { detectMonorepo } from '../monorepo/detect'
+import { findPackages } from '../monorepo/packages'
+import { buildDependencyGraph, getPublishOrder, parsePkg } from './dependencies'
+ 
+const execOptions = { throwOnError: true }
+ 
+const program = new Command()
+ 
+program
+  .command('publish')
+  .description('Publish packages in dependency order')
+  .action(async () => {
+    const packages = await getPackages() // 获取所有包的依赖关系
+    const order = getPublishOrder(packages) // 计算发布顺序
+ 
+    for (const pkg of order) {
+      await publishPackage(pkg) // 发布包
+    }
+  })
+ 
+program
+  .command('check-deps')
+  .description('Check dependencies between packages')
+  .action(async () => {
+    const packages = await getPackages()
+    checkDependencies(packages) // 检查依赖关系
+  })
+ 
+program.parse(process.argv)
+ 
+// 获取所有包的信息并构建依赖图
+async function getPackages() {
+  console.log(chalk.blue('Checking monorepo structure...'))
+  const monorepo = await detectMonorepo()
+  if (!monorepo) {
+    console.log(chalk.red('Not a pnpm monorepo project'))
+    return process.exit(1)
+  }
+ 
+  const allPackages = await findPackages(monorepo)
+  const publishable = allPackages.filter(p => !p.private)
+ 
+  return publishable
+}
+ 
+// 发布包到 NPM
+async function publishPackage(pkg: PackageInfo) {
+  const packagePath = path.resolve(pkg.path)
+  const packageJsonPath = path.join(packagePath, 'package.json')
+ 
+  // 确保包的 manifest 存在
+  if (!fs.existsSync(packageJsonPath)) {
+    console.log(chalk.red(`No package.json found in package ${pkg.name}`))
+    return
+  }
+ 
+  // 使用 fs.readFileSync 来读取 package.json
+  const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'))
+ 
+  // 检查版本号,确保包未发布过或者是一个新的版本
+  if (packageJson.private) {
+    console.log(chalk.yellow(`Skipping private package ${pkg.name}`))
+    return
+  }
+ 
+  const version = packageJson.version
+  console.log(chalk.blue(`Publishing package ${pkg.name} (version: ${version})`))
+ 
+  // 在发布前进行版本检查
+  const existingTags = await getExistingTags(pkg.name)
+ 
+  if (existingTags.includes(version)) {
+    console.log(chalk.yellow(`Version ${version} of ${pkg.name} already published. Skipping...`))
+    return
+  }
+ 
+  // const pkgDeps = parsePkg(pkg)
+  // for (let index = 0; index < pkgDeps.dependencies.length; index++) {
+  //   const element = pkgDeps.dependencies[index]
+  //   if (element) {
+  //     const version = pkg.manifest?.dependencies?.[element] as string | undefined
+  //     if (version && version.startsWith('workspace:')) {
+  //       const latestVersion = await getLatestVersion(element)
+  //       pkg.manifest.dependencies[element] = latestVersion
+  //     }
+  //   }
+  // }
+  // for (let index = 0; index < pkgDeps.devDependencies.length; index++) {
+  //   const element = pkgDeps.devDependencies[index]
+  //   if (element) {
+  //     const version = pkg.manifest?.devDependencies?.[element] as string | undefined
+  //     if (version && version.startsWith('workspace:')) {
+  //       const latestVersion = await getLatestVersion(element)
+  //       pkg.manifest.devDependencies[element] = latestVersion
+  //     }
+  //   }
+  // }
+  // for (let index = 0; index < pkgDeps.peerDependencies.length; index++) {
+  //   const element = pkgDeps.peerDependencies[index]
+  //   if (element) {
+  //     const version = pkg.manifest?.peerDependencies?.[element] as string | undefined
+  //     if (version && version.startsWith('workspace:')) {
+  //       const latestVersion = await getLatestVersion(element)
+  //       pkg.manifest.peerDependencies[element] = latestVersion
+  //     }
+  //   }
+  // }
+ 
+  // 执行 npm publish 命令
+  try {
+    console.log(chalk.green(`Publishing ${pkg.name}...`))
+    await x(`pnpm`, ['publish', '--json', '--access', 'public', '--tag', 'latest', '--no-git-checks'], { ...execOptions, nodeOptions: { cwd: pkg.path } })
+    console.log(chalk.green(`Successfully published ${pkg.name}@${version}`))
+  }
+  catch (error) {
+    console.error(chalk.red(`Failed to publish ${pkg.name}@${version}`))
+    throw error
+  }
+}
+ 
+/**
+ * 获取包的最新版本号
+ * @param packageName - 包名
+ * @returns 最新版本号
+ */
+async function getLatestVersion(packageName: string): Promise<string> {
+  const result = await x('npm', ['view', packageName, 'version'], execOptions)
+  return result.stdout.trim()
+}
+ 
+/**
+ * 更新依赖包的版本号,确保它们指向最新的版本
+ * @param packageName - 被依赖的包名
+ * @param latestVersion - 最新版本
+ * @param allPackages - 所有包的列表
+ */
+async function updateDependentPackages(packageName: string, latestVersion: string, allPackages: PackageInfo[]) {
+  // 遍历所有包,检查它们是否依赖于该包
+  for (const pkg of allPackages) {
+    const manifest = pkg.manifest
+    const dependencies = manifest.dependencies || {}
+ 
+    // 如果当前包依赖于 target package,更新其版本号
+    if (dependencies[packageName]) {
+      console.log(`Updating ${pkg.name} to depend on ${packageName}@${latestVersion}...`)
+ 
+      // 更新 package.json 中的版本号
+      dependencies[packageName] = latestVersion
+      manifest.dependencies = dependencies
+ 
+      // 写入 package.json 文件
+      fs.writeFileSync(path.join(pkg.path, 'package.json'), JSON.stringify(manifest, null, 2))
+ 
+      console.log(`${pkg.name} now depends on ${packageName}@${latestVersion}`)
+    }
+  }
+}
+ 
+// 获取已发布的标签(版本)信息
+async function getExistingTags(packageName: string): Promise<string[]> {
+  try {
+    const result = await x('npm', ['show', packageName, '--json'], execOptions)
+    const packageInfo = JSON.parse(result.stdout)
+    return packageInfo.versions || []
+  }
+  catch (error) {
+    console.error(chalk.red(`Failed to fetch existing versions for ${packageName}:`), error)
+    return []
+  }
+}
+ 
+// 检查依赖关系
+// 检查包之间的依赖关系,区分开发时依赖和运行时依赖
+function checkDependencies(packages: PackageInfo[]) {
+  const graph = buildDependencyGraph(packages)
+ 
+  console.log(chalk.blue('Checking package dependencies...'))
+ 
+  // 遍历每个包,打印其依赖的包和开发时依赖的包
+  packages.forEach((pkg) => {
+    const { dependencies, devDependencies, peerDependencies } = graph[pkg.name] ?? {}
+ 
+    // 检查运行时依赖
+    if (dependencies && dependencies.length > 0) {
+      console.log(chalk.green(`Package ${pkg.name} has runtime dependencies:`))
+      dependencies.forEach((dep) => {
+        console.log(chalk.green(`  - ${dep}`))
+      })
+    }
+ 
+    // 检查开发时依赖
+    if (devDependencies && devDependencies.length > 0) {
+      console.log(chalk.yellow(`Package ${pkg.name} has development dependencies:`))
+      devDependencies.forEach((dep) => {
+        console.log(chalk.yellow(`  - ${dep}`))
+      })
+    }
+ 
+    // 检查开发时依赖
+    if (peerDependencies && peerDependencies.length > 0) {
+      console.log(chalk.blue(`Package ${pkg.name} has peer dependencies:`))
+      peerDependencies.forEach((dep) => {
+        console.log(chalk.blue(`  - ${dep}`))
+      })
+    }
+ 
+    // 如果没有任何依赖
+    if (dependencies?.length === 0 && devDependencies?.length === 0 && peerDependencies?.length === 0) {
+      console.log(chalk.red(`Package ${pkg.name} has no dependencies`))
+    }
+  })
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/publish/dependencies.ts b/scripts/publish/dependencies.ts deleted file mode 100644 index c4a1d5e..0000000 --- a/scripts/publish/dependencies.ts +++ /dev/null @@ -1,92 +0,0 @@ -import type { PackageInfo } from '../monorepo/packages' - -type Graph = Record> - -export function parsePkg(pkg: PackageInfo) { - const dependencies: string[] = [] - const devDependencies: string[] = [] - const peerDependencies: string[] = [] - - // 获取运行时依赖(dependencies) - if (pkg.manifest.dependencies) { - Object.keys(pkg.manifest.dependencies).forEach((dep) => { - const version = pkg.manifest.dependencies[dep] - if (version.startsWith('workspace:')) { - dependencies.push(dep) - } - }) - } - - // 获取开发时依赖(devDependencies) - if (pkg.manifest.devDependencies) { - Object.keys(pkg.manifest.devDependencies).forEach((dep) => { - const version = pkg.manifest.devDependencies[dep] - if (version.startsWith('workspace:')) { - devDependencies.push(dep) - } - }) - } - - // peerDependencies - if (pkg.manifest.peerDependencies) { - Object.keys(pkg.manifest.peerDependencies).forEach((dep) => { - const version = pkg.manifest.peerDependencies[dep] - if (version.startsWith('workspace:')) { - peerDependencies.push(dep) - } - }) - } - - return { dependencies, devDependencies, peerDependencies } -} - -// 获取包的依赖图,区分开发时依赖和运行时依赖 -export function buildDependencyGraph(packages: PackageInfo[]) { - const graph: Graph = {} - - packages.forEach((pkg) => { - // 添加到图中 - graph[pkg.name] = parsePkg(pkg) - }) - - return graph -} - -// 拓扑排序算法 -function topologicalSort(packages: PackageInfo[], graph: Graph) { - const visited = new Set() - const order: PackageInfo[] = [] - - const packagesNames = packages.map(item => item.name) - // 先发布没有依赖的包 - function visit(pkgName: string) { - if (visited.has(pkgName)) - return - visited.add(pkgName) - - // 先发布运行时依赖(因为它们是生产环境的依赖) - const pkg = graph[pkgName] - pkg?.dependencies.forEach(visit) - - // 然后发布开发时依赖(它们不会影响生产环境,但需要优先处理开发环境) - pkg?.devDependencies.forEach(visit) - - // 最后将当前包添加到发布顺序中 - order.push(packages[packagesNames.indexOf(pkgName)]!) - } - - // 从所有包开始遍历 - packages.forEach((pkg) => { - if (!visited.has(pkg.name)) { - visit(pkg.name) - } - }) - - return order // 返回发布顺序 -} - -// 根据依赖关系计算发布顺序 -export function getPublishOrder(packages: PackageInfo[]) { - const graph = buildDependencyGraph(packages) - return topologicalSort(packages, graph) -} diff --git a/scripts/publish/dependencies.ts.html b/scripts/publish/dependencies.ts.html new file mode 100644 index 0000000..1ab9172 --- /dev/null +++ b/scripts/publish/dependencies.ts.html @@ -0,0 +1,361 @@ + + + + + + Code coverage report for scripts/publish/dependencies.ts + + + + + + + + + +
+
+

All files / scripts/publish dependencies.ts

+
+ +
+ 0% + Statements + 0/61 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/61 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { PackageInfo } from '../monorepo/packages'
+ 
+type Graph = Record<string, ReturnType<typeof parsePkg>>
+ 
+export function parsePkg(pkg: PackageInfo) {
+  const dependencies: string[] = []
+  const devDependencies: string[] = []
+  const peerDependencies: string[] = []
+ 
+  // 获取运行时依赖(dependencies)
+  if (pkg.manifest.dependencies) {
+    Object.keys(pkg.manifest.dependencies).forEach((dep) => {
+      const version = pkg.manifest.dependencies[dep]
+      if (version.startsWith('workspace:')) {
+        dependencies.push(dep)
+      }
+    })
+  }
+ 
+  // 获取开发时依赖(devDependencies)
+  if (pkg.manifest.devDependencies) {
+    Object.keys(pkg.manifest.devDependencies).forEach((dep) => {
+      const version = pkg.manifest.devDependencies[dep]
+      if (version.startsWith('workspace:')) {
+        devDependencies.push(dep)
+      }
+    })
+  }
+ 
+  // peerDependencies
+  if (pkg.manifest.peerDependencies) {
+    Object.keys(pkg.manifest.peerDependencies).forEach((dep) => {
+      const version = pkg.manifest.peerDependencies[dep]
+      if (version.startsWith('workspace:')) {
+        peerDependencies.push(dep)
+      }
+    })
+  }
+ 
+  return { dependencies, devDependencies, peerDependencies }
+}
+ 
+// 获取包的依赖图,区分开发时依赖和运行时依赖
+export function buildDependencyGraph(packages: PackageInfo[]) {
+  const graph: Graph = {}
+ 
+  packages.forEach((pkg) => {
+    // 添加到图中
+    graph[pkg.name] = parsePkg(pkg)
+  })
+ 
+  return graph
+}
+ 
+// 拓扑排序算法
+function topologicalSort(packages: PackageInfo[], graph: Graph) {
+  const visited = new Set<string>()
+  const order: PackageInfo[] = []
+ 
+  const packagesNames = packages.map(item => item.name)
+  // 先发布没有依赖的包
+  function visit(pkgName: string) {
+    if (visited.has(pkgName))
+      return
+    visited.add(pkgName)
+ 
+    // 先发布运行时依赖(因为它们是生产环境的依赖)
+    const pkg = graph[pkgName]
+    pkg?.dependencies.forEach(visit)
+ 
+    // 然后发布开发时依赖(它们不会影响生产环境,但需要优先处理开发环境)
+    pkg?.devDependencies.forEach(visit)
+ 
+    // 最后将当前包添加到发布顺序中
+    order.push(packages[packagesNames.indexOf(pkgName)]!)
+  }
+ 
+  // 从所有包开始遍历
+  packages.forEach((pkg) => {
+    if (!visited.has(pkg.name)) {
+      visit(pkg.name)
+    }
+  })
+ 
+  return order // 返回发布顺序
+}
+ 
+// 根据依赖关系计算发布顺序
+export function getPublishOrder(packages: PackageInfo[]) {
+  const graph = buildDependencyGraph(packages)
+  return topologicalSort(packages, graph)
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/publish/index.html b/scripts/publish/index.html new file mode 100644 index 0000000..3e374f6 --- /dev/null +++ b/scripts/publish/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for scripts/publish + + + + + + + + + +
+
+

All files scripts/publish

+
+ +
+ 0% + Statements + 0/206 +
+ + +
+ 100% + Branches + 3/3 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 0% + Lines + 0/206 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
cli.ts +
+
0%0/125100%1/1100%1/10%0/125
dependencies.ts +
+
0%0/61100%1/1100%1/10%0/61
npm.ts +
+
0%0/20100%1/1100%1/10%0/20
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/publish/npm.ts b/scripts/publish/npm.ts deleted file mode 100644 index 2310143..0000000 --- a/scripts/publish/npm.ts +++ /dev/null @@ -1,24 +0,0 @@ -import type { PackageInfo } from '../monorepo/packages' -import fs from 'node:fs' -import detectIndent from 'detect-indent' -import { execa } from 'execa' - -export async function publishPackage(pkg: PackageInfo) { - const { exitCode } = await execa('pnpm', ['publish', '--access', 'public'], { - cwd: pkg.path, - stdio: 'inherit', - }) - return exitCode === 0 -} - -export async function updatePackageJson( - pkgJsonPath: string, - pkgJson: any, -): Promise { - const pkgRaw = fs.readFileSync(pkgJsonPath, 'utf-8') - const indent = detectIndent(pkgRaw).indent || ' ' - const stringified - = JSON.stringify(pkgJson, null, indent) + (pkgRaw.endsWith('\n') ? '\n' : '') - - return fs.writeFileSync(pkgJsonPath, stringified) -} diff --git a/scripts/publish/npm.ts.html b/scripts/publish/npm.ts.html new file mode 100644 index 0000000..6d64b34 --- /dev/null +++ b/scripts/publish/npm.ts.html @@ -0,0 +1,157 @@ + + + + + + Code coverage report for scripts/publish/npm.ts + + + + + + + + + +
+
+

All files / scripts/publish npm.ts

+
+ +
+ 0% + Statements + 0/20 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { PackageInfo } from '../monorepo/packages'
+import fs from 'node:fs'
+import detectIndent from 'detect-indent'
+import { execa } from 'execa'
+ 
+export async function publishPackage(pkg: PackageInfo) {
+  const { exitCode } = await execa('pnpm', ['publish', '--access', 'public'], {
+    cwd: pkg.path,
+    stdio: 'inherit',
+  })
+  return exitCode === 0
+}
+ 
+export async function updatePackageJson(
+  pkgJsonPath: string,
+  pkgJson: any,
+): Promise<void> {
+  const pkgRaw = fs.readFileSync(pkgJsonPath, 'utf-8')
+  const indent = detectIndent(pkgRaw).indent || '  '
+  const stringified
+    = JSON.stringify(pkgJson, null, indent) + (pkgRaw.endsWith('\n') ? '\n' : '')
+ 
+  return fs.writeFileSync(pkgJsonPath, stringified)
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json deleted file mode 100644 index 623b17c..0000000 --- a/scripts/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.base.json", - "include": ["./*/**.ts", "./*.ts"], - "exclude": ["node_modules"] -} diff --git a/scripts/utils/cli-utilities.ts b/scripts/utils/cli-utilities.ts deleted file mode 100644 index 38a7e8c..0000000 --- a/scripts/utils/cli-utilities.ts +++ /dev/null @@ -1,84 +0,0 @@ -// https://github.com/changesets/changesets/blob/main/packages/cli/src/utils/cli-utilities.ts -import process from 'node:process' -import enquirer from 'enquirer' -import terminalSize from 'terminal-size' -import { error, success } from './logger' -import symbols from './symbols' - -// those types are not exported from `enquirer` so we extract them here -// so we can make type assertions using them because `enquirer` types do no support `prefix` right now -type PromptOptions = Extract[0], { type: string }> -type ArrayPromptOptions = Extract< - PromptOptions, - { - type: - | 'autocomplete' - | 'editable' - | 'form' - | 'multiselect' - | 'select' - | 'survey' - | 'list' - | 'scale' - } -> - -interface Choice { - name: string - message?: string - value?: unknown - hint?: string - role?: string - enabled?: boolean - disabled?: boolean | string -} - -export const prefix = '🍒 ' -const limit = Math.max(terminalSize().rows - 5, 10) -function cancelFlow() { - success('Cancelled... 👋 ') - return process.exit() -} - -/* Notes on using inquirer: - * Each question needs a key, as inquirer is assembling an object behind-the-scenes. - * At each call, the entire responses object is returned, so we need a unique - * identifier for the name every time. This is why we are using serial IDs - */ -const serialId: () => number = (function () { - let id = 0 - return () => id++ -})() - -async function askCheckboxPlus( - message: string, - choices: C, - format?: (value: string) => string | Promise, -) { - const name = `CheckboxPlus-${serialId()}` - - return enquirer.prompt>({ - type: 'autocomplete', - name, - message, - prefix, - multiple: true, - choices, - format, - limit, - onCancel: cancelFlow, - symbols: { - indicator: symbols.radioOff, - checked: symbols.radioOn, - }, - indicator(state: any, choice: Choice) { - return choice.enabled ? state.symbols.checked : state.symbols.indicator - }, - } as ArrayPromptOptions) - .then(responses => responses[name]) - .catch((err: unknown) => { - error(err) - }) -} - -export default { askCheckboxPlus } diff --git a/scripts/utils/cli-utilities.ts.html b/scripts/utils/cli-utilities.ts.html new file mode 100644 index 0000000..d0cc385 --- /dev/null +++ b/scripts/utils/cli-utilities.ts.html @@ -0,0 +1,337 @@ + + + + + + Code coverage report for scripts/utils/cli-utilities.ts + + + + + + + + + +
+
+

All files / scripts/utils cli-utilities.ts

+
+ +
+ 0% + Statements + 0/45 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/45 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// https://github.com/changesets/changesets/blob/main/packages/cli/src/utils/cli-utilities.ts
+import process from 'node:process'
+import enquirer from 'enquirer'
+import terminalSize from 'terminal-size'
+import { error, success } from './logger'
+import symbols from './symbols'
+ 
+// those types are not exported from `enquirer` so we extract them here
+// so we can make type assertions using them because `enquirer` types do no support `prefix` right now
+type PromptOptions = Extract<Parameters<typeof enquirer.prompt>[0], { type: string }>
+type ArrayPromptOptions = Extract<
+  PromptOptions,
+  {
+    type:
+      | 'autocomplete'
+      | 'editable'
+      | 'form'
+      | 'multiselect'
+      | 'select'
+      | 'survey'
+      | 'list'
+      | 'scale'
+  }
+>
+ 
+interface Choice {
+  name: string
+  message?: string
+  value?: unknown
+  hint?: string
+  role?: string
+  enabled?: boolean
+  disabled?: boolean | string
+}
+ 
+export const prefix = '🍒 '
+const limit = Math.max(terminalSize().rows - 5, 10)
+function cancelFlow() {
+  success('Cancelled... 👋 ')
+  return process.exit()
+}
+ 
+/* Notes on using inquirer:
+ * Each question needs a key, as inquirer is assembling an object behind-the-scenes.
+ * At each call, the entire responses object is returned, so we need a unique
+ * identifier for the name every time. This is why we are using serial IDs
+ */
+const serialId: () => number = (function () {
+  let id = 0
+  return () => id++
+})()
+ 
+async function askCheckboxPlus<C extends (string | Choice)[]>(
+  message: string,
+  choices: C,
+  format?: (value: string) => string | Promise<string>,
+) {
+  const name = `CheckboxPlus-${serialId()}`
+ 
+  return enquirer.prompt<Record<string, string[]>>({
+    type: 'autocomplete',
+    name,
+    message,
+    prefix,
+    multiple: true,
+    choices,
+    format,
+    limit,
+    onCancel: cancelFlow,
+    symbols: {
+      indicator: symbols.radioOff,
+      checked: symbols.radioOn,
+    },
+    indicator(state: any, choice: Choice) {
+      return choice.enabled ? state.symbols.checked : state.symbols.indicator
+    },
+  } as ArrayPromptOptions)
+    .then(responses => responses[name])
+    .catch((err: unknown) => {
+      error(err)
+    })
+}
+ 
+export default { askCheckboxPlus }
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/utils/enquirer.ts b/scripts/utils/enquirer.ts deleted file mode 100644 index 2876b71..0000000 --- a/scripts/utils/enquirer.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { PackageInfo } from '../monorepo/packages' -import chalk from 'chalk' -import cli from './cli-utilities' - -/** - * - * @param packages - * @param changedPackages TODO: 此处是从git中检测已经修改过的包 - */ -export async function selectPackages(packages: PackageInfo[], changedPackages: string[] = []) { - const unchangedPackagesNames = packages - .map(item => item.name) - .filter(name => !changedPackages.includes(name)) - const defaultChoiceList = [ - { name: 'changed packages', choices: changedPackages }, - { name: 'unchanged packages', choices: unchangedPackagesNames }, - ].filter(({ choices }) => choices.length !== 0) - - const res = await cli.askCheckboxPlus( - `Which packages would you like to include?`, - defaultChoiceList, - (x) => { - // this removes changed packages and unchanged packages from the list - // of packages shown after selection - if (Array.isArray(x)) { - return x - .filter( - x => x !== 'changed packages' && x !== 'unchanged packages', - ) - .map(x => chalk.cyan(x)) - .join(', ') - } - return x - }, - ) - return packages.filter(p => res?.includes(p.name)) -} diff --git a/scripts/utils/enquirer.ts.html b/scripts/utils/enquirer.ts.html new file mode 100644 index 0000000..f753f2d --- /dev/null +++ b/scripts/utils/enquirer.ts.html @@ -0,0 +1,196 @@ + + + + + + Code coverage report for scripts/utils/enquirer.ts + + + + + + + + + +
+
+

All files / scripts/utils enquirer.ts

+
+ +
+ 0% + Statements + 0/27 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { PackageInfo } from '../monorepo/packages'
+import chalk from 'chalk'
+import cli from './cli-utilities'
+ 
+/**
+ *
+ * @param packages
+ * @param changedPackages TODO: 此处是从git中检测已经修改过的包 <https://github.com/changesets/changesets/blob/main/packages/git/src/index.ts#L258>
+ */
+export async function selectPackages(packages: PackageInfo[], changedPackages: string[] = []) {
+  const unchangedPackagesNames = packages
+    .map(item => item.name)
+    .filter(name => !changedPackages.includes(name))
+  const defaultChoiceList = [
+    { name: 'changed packages', choices: changedPackages },
+    { name: 'unchanged packages', choices: unchangedPackagesNames },
+  ].filter(({ choices }) => choices.length !== 0)
+ 
+  const res = await cli.askCheckboxPlus(
+    `Which packages would you like to include?`,
+    defaultChoiceList,
+    (x) => {
+      // this removes changed packages and unchanged packages from the list
+      // of packages shown after selection
+      if (Array.isArray(x)) {
+        return x
+          .filter(
+            x => x !== 'changed packages' && x !== 'unchanged packages',
+          )
+          .map(x => chalk.cyan(x))
+          .join(', ')
+      }
+      return x
+    },
+  )
+  return packages.filter(p => res?.includes(p.name))
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/utils/file.ts b/scripts/utils/file.ts deleted file mode 100644 index b7f976b..0000000 --- a/scripts/utils/file.ts +++ /dev/null @@ -1,79 +0,0 @@ -import fs from 'node:fs' -import path from 'node:path' - -export interface CreateFileOptions { - /** 是否覆盖现有文件 */ - cover?: boolean - /** 是否将内容添加到文件开头 */ - prepend?: boolean - /** 文本编码格式 */ - encoding?: BufferEncoding - /** 是否自动在内容末尾添加换行 */ - appendNewline?: boolean -} - -export function createFile( - filePath: string, - content: string, - options: CreateFileOptions = {}, -): string { - const { - cover = false, - prepend = false, - encoding = 'utf-8', - appendNewline = true, - } = options - - // 参数校验 - if (cover && prepend) { - throw new Error('Options "cover" and "prepend" cannot be used simultaneously') - } - - // 统一处理路径格式 - const targetPath = path.resolve(filePath) - const targetDir = path.dirname(targetPath) - - // 创建目录(递归创建) - if (!fs.existsSync(targetDir)) { - fs.mkdirSync(targetDir, { recursive: true }) - } - - // 处理内容格式 - const processedContent = appendNewline - ? `${content.trim()}\n` - : content.trim() - - // 核心操作逻辑 - if (cover) { - writeFile(targetPath, processedContent, encoding) - } - else if (prepend) { - prependToFile(targetPath, processedContent, encoding) - } - else { - appendToFile(targetPath, processedContent, encoding) - } - - return targetPath -} - -/* ======== 内部工具函数 ======== */ - -function writeFile(path: string, content: string, encoding: BufferEncoding) { - fs.writeFileSync(path, content, { encoding }) -} - -function appendToFile(path: string, content: string, encoding: BufferEncoding) { - const separator = fs.existsSync(path) ? '\n' : '' - fs.appendFileSync(path, `${separator}${content}`, { encoding }) -} - -function prependToFile(path: string, content: string, encoding: BufferEncoding) { - if (fs.existsSync(path)) { - const originalContent = fs.readFileSync(path, { encoding }) - fs.writeFileSync(path, `${content}\n${originalContent}`, { encoding }) - } - else { - writeFile(path, content, encoding) - } -} diff --git a/scripts/utils/file.ts.html b/scripts/utils/file.ts.html new file mode 100644 index 0000000..917b07e --- /dev/null +++ b/scripts/utils/file.ts.html @@ -0,0 +1,322 @@ + + + + + + Code coverage report for scripts/utils/file.ts + + + + + + + + + +
+
+

All files / scripts/utils file.ts

+
+ +
+ 0% + Statements + 0/51 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/51 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import fs from 'node:fs'
+import path from 'node:path'
+ 
+export interface CreateFileOptions {
+  /** 是否覆盖现有文件 */
+  cover?: boolean
+  /** 是否将内容添加到文件开头 */
+  prepend?: boolean
+  /** 文本编码格式 */
+  encoding?: BufferEncoding
+  /** 是否自动在内容末尾添加换行 */
+  appendNewline?: boolean
+}
+ 
+export function createFile(
+  filePath: string,
+  content: string,
+  options: CreateFileOptions = {},
+): string {
+  const {
+    cover = false,
+    prepend = false,
+    encoding = 'utf-8',
+    appendNewline = true,
+  } = options
+ 
+  // 参数校验
+  if (cover && prepend) {
+    throw new Error('Options "cover" and "prepend" cannot be used simultaneously')
+  }
+ 
+  // 统一处理路径格式
+  const targetPath = path.resolve(filePath)
+  const targetDir = path.dirname(targetPath)
+ 
+  // 创建目录(递归创建)
+  if (!fs.existsSync(targetDir)) {
+    fs.mkdirSync(targetDir, { recursive: true })
+  }
+ 
+  // 处理内容格式
+  const processedContent = appendNewline
+    ? `${content.trim()}\n`
+    : content.trim()
+ 
+  // 核心操作逻辑
+  if (cover) {
+    writeFile(targetPath, processedContent, encoding)
+  }
+  else if (prepend) {
+    prependToFile(targetPath, processedContent, encoding)
+  }
+  else {
+    appendToFile(targetPath, processedContent, encoding)
+  }
+ 
+  return targetPath
+}
+ 
+/* ======== 内部工具函数 ======== */
+ 
+function writeFile(path: string, content: string, encoding: BufferEncoding) {
+  fs.writeFileSync(path, content, { encoding })
+}
+ 
+function appendToFile(path: string, content: string, encoding: BufferEncoding) {
+  const separator = fs.existsSync(path) ? '\n' : ''
+  fs.appendFileSync(path, `${separator}${content}`, { encoding })
+}
+ 
+function prependToFile(path: string, content: string, encoding: BufferEncoding) {
+  if (fs.existsSync(path)) {
+    const originalContent = fs.readFileSync(path, { encoding })
+    fs.writeFileSync(path, `${content}\n${originalContent}`, { encoding })
+  }
+  else {
+    writeFile(path, content, encoding)
+  }
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/utils/index.html b/scripts/utils/index.html new file mode 100644 index 0000000..623b4ef --- /dev/null +++ b/scripts/utils/index.html @@ -0,0 +1,191 @@ + + + + + + Code coverage report for scripts/utils + + + + + + + + + +
+
+

All files scripts/utils

+
+ +
+ 0% + Statements + 0/206 +
+ + +
+ 50% + Branches + 3/6 +
+ + +
+ 50% + Functions + 3/6 +
+ + +
+ 0% + Lines + 0/206 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
cli-utilities.ts +
+
0%0/45100%1/1100%1/10%0/45
enquirer.ts +
+
0%0/27100%1/1100%1/10%0/27
file.ts +
+
0%0/510%0/10%0/10%0/51
logger.ts +
+
0%0/110%0/10%0/10%0/11
path.ts +
+
0%0/110%0/10%0/10%0/11
symbols.ts +
+
0%0/61100%1/1100%1/10%0/61
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/utils/logger.ts b/scripts/utils/logger.ts deleted file mode 100644 index e99ab1b..0000000 --- a/scripts/utils/logger.ts +++ /dev/null @@ -1,17 +0,0 @@ -import chalk from 'chalk' - -type text = string | unknown - -export function info(...msg: text[]) { - console.log(chalk.blue(...msg)) -} - -export function success(...msg: text[]) { - console.log(chalk.green(...msg)) -} - -export function error(...msg: text[]) { - console.log(chalk.red(...msg)) -} - -export default { info, success, error } diff --git a/scripts/utils/logger.ts.html b/scripts/utils/logger.ts.html new file mode 100644 index 0000000..06a6a3a --- /dev/null +++ b/scripts/utils/logger.ts.html @@ -0,0 +1,136 @@ + + + + + + Code coverage report for scripts/utils/logger.ts + + + + + + + + + +
+
+

All files / scripts/utils logger.ts

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import chalk from 'chalk'
+ 
+type text = string | unknown
+ 
+export function info(...msg: text[]) {
+  console.log(chalk.blue(...msg))
+}
+ 
+export function success(...msg: text[]) {
+  console.log(chalk.green(...msg))
+}
+ 
+export function error(...msg: text[]) {
+  console.log(chalk.red(...msg))
+}
+ 
+export default { info, success, error }
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/utils/path.ts b/scripts/utils/path.ts deleted file mode 100644 index 8a33909..0000000 --- a/scripts/utils/path.ts +++ /dev/null @@ -1,15 +0,0 @@ -import path from 'node:path' -import process from 'node:process' - -export const WindowsSlashRE = /\\/g - -export const isWindows - = typeof process !== 'undefined' && process.platform === 'win32' - -export function slash(p: string): string { - return p.replace(WindowsSlashRE, '/') -} - -export function normalizePath(id: string): string { - return path.posix.normalize(isWindows ? slash(id) : id) -} diff --git a/scripts/utils/path.ts.html b/scripts/utils/path.ts.html new file mode 100644 index 0000000..68cea26 --- /dev/null +++ b/scripts/utils/path.ts.html @@ -0,0 +1,130 @@ + + + + + + Code coverage report for scripts/utils/path.ts + + + + + + + + + +
+
+

All files / scripts/utils path.ts

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import path from 'node:path'
+import process from 'node:process'
+ 
+export const WindowsSlashRE = /\\/g
+ 
+export const isWindows
+  = typeof process !== 'undefined' && process.platform === 'win32'
+ 
+export function slash(p: string): string {
+  return p.replace(WindowsSlashRE, '/')
+}
+ 
+export function normalizePath(id: string): string {
+  return path.posix.normalize(isWindows ? slash(id) : id)
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/utils/symbols.ts b/scripts/utils/symbols.ts deleted file mode 100644 index 124f673..0000000 --- a/scripts/utils/symbols.ts +++ /dev/null @@ -1,67 +0,0 @@ -// https://github.com/doowb/ansi-colors/blob/master/symbols.js -import process from 'node:process' - -const isHyper = typeof process !== 'undefined' && process.env.TERM_PROGRAM === 'Hyper' -const isWindows = typeof process !== 'undefined' && process.platform === 'win32' -const isLinux = typeof process !== 'undefined' && process.platform === 'linux' - -export const common = { - ballotDisabled: '☒', - ballotOff: '☐', - ballotOn: '☑', - bullet: '•', - bulletWhite: '◦', - fullBlock: '█', - heart: '❤', - identicalTo: '≡', - line: '─', - mark: '※', - middot: '·', - minus: '-', - multiplication: '×', - obelus: '÷', - pencilDownRight: '✎', - pencilRight: '✏', - pencilUpRight: '✐', - percent: '%', - pilcrow2: '❡', - pilcrow: '¶', - plusMinus: '±', - question: '?', - section: '§', - starsOff: '☆', - starsOn: '★', - upDownArrow: '↕', -} - -export const windows = Object.assign({}, common, { - check: '√', - cross: '×', - ellipsisLarge: '...', - ellipsis: '...', - info: 'i', - questionSmall: '?', - pointer: '>', - pointerSmall: '»', - radioOff: '( )', - radioOn: '(*)', - warning: '‼', -}) - -export const other = Object.assign({}, common, { - ballotCross: '✘', - check: '✔', - cross: '✖', - ellipsisLarge: '⋯', - ellipsis: '…', - info: 'ℹ', - questionFull: '?', - questionSmall: '﹖', - pointer: isLinux ? '▸' : '❯', - pointerSmall: isLinux ? '‣' : '›', - radioOff: '◯', - radioOn: '◉', - warning: '⚠', -}) - -export default (isWindows && !isHyper) ? windows : other diff --git a/scripts/utils/symbols.ts.html b/scripts/utils/symbols.ts.html new file mode 100644 index 0000000..8b45c0f --- /dev/null +++ b/scripts/utils/symbols.ts.html @@ -0,0 +1,286 @@ + + + + + + Code coverage report for scripts/utils/symbols.ts + + + + + + + + + +
+
+

All files / scripts/utils symbols.ts

+
+ +
+ 0% + Statements + 0/61 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/61 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// https://github.com/doowb/ansi-colors/blob/master/symbols.js
+import process from 'node:process'
+ 
+const isHyper = typeof process !== 'undefined' && process.env.TERM_PROGRAM === 'Hyper'
+const isWindows = typeof process !== 'undefined' && process.platform === 'win32'
+const isLinux = typeof process !== 'undefined' && process.platform === 'linux'
+ 
+export const common = {
+  ballotDisabled: '☒',
+  ballotOff: '☐',
+  ballotOn: '☑',
+  bullet: '•',
+  bulletWhite: '◦',
+  fullBlock: '█',
+  heart: '❤',
+  identicalTo: '≡',
+  line: '─',
+  mark: '※',
+  middot: '·',
+  minus: '-',
+  multiplication: '×',
+  obelus: '÷',
+  pencilDownRight: '✎',
+  pencilRight: '✏',
+  pencilUpRight: '✐',
+  percent: '%',
+  pilcrow2: '❡',
+  pilcrow: '¶',
+  plusMinus: '±',
+  question: '?',
+  section: '§',
+  starsOff: '☆',
+  starsOn: '★',
+  upDownArrow: '↕',
+}
+ 
+export const windows = Object.assign({}, common, {
+  check: '√',
+  cross: '×',
+  ellipsisLarge: '...',
+  ellipsis: '...',
+  info: 'i',
+  questionSmall: '?',
+  pointer: '>',
+  pointerSmall: '»',
+  radioOff: '( )',
+  radioOn: '(*)',
+  warning: '‼',
+})
+ 
+export const other = Object.assign({}, common, {
+  ballotCross: '✘',
+  check: '✔',
+  cross: '✖',
+  ellipsisLarge: '⋯',
+  ellipsis: '…',
+  info: 'ℹ',
+  questionFull: '?',
+  questionSmall: '﹖',
+  pointer: isLinux ? '▸' : '❯',
+  pointerSmall: isLinux ? '‣' : '›',
+  radioOff: '◯',
+  radioOn: '◉',
+  warning: '⚠',
+})
+ 
+export default (isWindows && !isHyper) ? windows : other
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/version/bump.ts b/scripts/version/bump.ts deleted file mode 100644 index 1a41fe1..0000000 --- a/scripts/version/bump.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { PackageInfo } from '../monorepo/packages' -import path from 'node:path' -import bumpp from 'bumpp' - -export async function bumpVersion(pkg: PackageInfo, tag: string | boolean = false) { - return bumpp({ - tag, - files: [path.posix.join(pkg.path, 'package.json')], - commit: tag && typeof tag === 'string' ? `chore: release ${tag}` : undefined, - }) -} diff --git a/scripts/version/bump.ts.html b/scripts/version/bump.ts.html new file mode 100644 index 0000000..4d0f13e --- /dev/null +++ b/scripts/version/bump.ts.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for scripts/version/bump.ts + + + + + + + + + +
+
+

All files / scripts/version bump.ts

+
+ +
+ 0% + Statements + 0/9 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12  +  +  +  +  +  +  +  +  +  +  + 
import type { PackageInfo } from '../monorepo/packages'
+import path from 'node:path'
+import bumpp from 'bumpp'
+ 
+export async function bumpVersion(pkg: PackageInfo, tag: string | boolean = false) {
+  return bumpp({
+    tag,
+    files: [path.posix.join(pkg.path, 'package.json')],
+    commit: tag && typeof tag === 'string' ? `chore: release ${tag}` : undefined,
+  })
+}
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/scripts/version/index.html b/scripts/version/index.html new file mode 100644 index 0000000..e988d0d --- /dev/null +++ b/scripts/version/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for scripts/version + + + + + + + + + +
+
+

All files scripts/version

+
+ +
+ 0% + Statements + 0/9 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 0% + Lines + 0/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
bump.ts +
+
0%0/9100%1/1100%1/10%0/9
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sort-arrow-sprite.png b/sort-arrow-sprite.png new file mode 100644 index 0000000..6ed6831 Binary files /dev/null and b/sort-arrow-sprite.png differ diff --git a/sorter.js b/sorter.js new file mode 100644 index 0000000..2bb296a --- /dev/null +++ b/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 6ce8720..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "@https-enable/tsconfig/tsconfig.base.json", - "include": ["./*.ts"], - "exclude": ["node_modules"] -} diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index 20faa2c..0000000 --- a/vitest.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { defineConfig } from 'vitest/config' - -export default defineConfig({ - test: { - workspace: ['packages/*'], - }, -})